Mercurial > projects > ldc
annotate gen/classes.h @ 209:c4c9b4ac021b trunk
[svn r225] Fixed: delete expressions no longer use llvm's free instruction, which crashes on a GC provided pointer.
author | lindquist |
---|---|
date | Wed, 14 May 2008 01:22:40 +0200 |
parents | 44a95ac7368a |
children | 1d6cfdbc97f0 |
rev | line source |
---|---|
100 | 1 #ifndef LLVMDC_GEN_CLASSES_H |
2 #define LLVMDC_GEN_CLASSES_H | |
3 | |
4 /** | |
102
027b8d8b71ec
[svn r106] Turns out the last commit wasn't enough, now the D->LLVM process is even more split up.
lindquist
parents:
100
diff
changeset
|
5 * Resolves the llvm type for a class declaration |
027b8d8b71ec
[svn r106] Turns out the last commit wasn't enough, now the D->LLVM process is even more split up.
lindquist
parents:
100
diff
changeset
|
6 */ |
027b8d8b71ec
[svn r106] Turns out the last commit wasn't enough, now the D->LLVM process is even more split up.
lindquist
parents:
100
diff
changeset
|
7 void DtoResolveClass(ClassDeclaration* cd); |
027b8d8b71ec
[svn r106] Turns out the last commit wasn't enough, now the D->LLVM process is even more split up.
lindquist
parents:
100
diff
changeset
|
8 |
027b8d8b71ec
[svn r106] Turns out the last commit wasn't enough, now the D->LLVM process is even more split up.
lindquist
parents:
100
diff
changeset
|
9 /** |
100 | 10 * Provides the llvm declaration for a class declaration |
11 */ | |
12 void DtoDeclareClass(ClassDeclaration* cd); | |
13 | |
14 /** | |
15 * Constructs the constant initializer for a class declaration | |
16 */ | |
17 void DtoConstInitClass(ClassDeclaration* cd); | |
18 | |
19 /** | |
20 * Provides the llvm definition for a class declaration | |
21 */ | |
22 void DtoDefineClass(ClassDeclaration* cd); | |
23 | |
24 void DtoDeclareClassInfo(ClassDeclaration* cd); | |
25 void DtoDefineClassInfo(ClassDeclaration* cd); | |
26 | |
133
44a95ac7368a
[svn r137] Many fixes towards tango.io.Console working, but not quite there yet...
lindquist
parents:
132
diff
changeset
|
27 DValue* DtoNewClass(TypeClass* type, NewExp* newexp); |
44a95ac7368a
[svn r137] Many fixes towards tango.io.Console working, but not quite there yet...
lindquist
parents:
132
diff
changeset
|
28 void DtoInitClass(TypeClass* tc, llvm::Value* dst); |
44a95ac7368a
[svn r137] Many fixes towards tango.io.Console working, but not quite there yet...
lindquist
parents:
132
diff
changeset
|
29 DValue* DtoCallClassCtor(TypeClass* type, CtorDeclaration* ctor, Array* arguments, llvm::Value* mem); |
100 | 30 void DtoCallClassDtors(TypeClass* tc, llvm::Value* instance); |
209
c4c9b4ac021b
[svn r225] Fixed: delete expressions no longer use llvm's free instruction, which crashes on a GC provided pointer.
lindquist
parents:
133
diff
changeset
|
31 void DtoFinalizeClass(llvm::Value* inst); |
100 | 32 |
114 | 33 DValue* DtoCastClass(DValue* val, Type* to); |
34 DValue* DtoDynamicCastObject(DValue* val, Type* to); | |
133
44a95ac7368a
[svn r137] Many fixes towards tango.io.Console working, but not quite there yet...
lindquist
parents:
132
diff
changeset
|
35 |
114 | 36 DValue* DtoCastInterfaceToObject(DValue* val, Type* to); |
133
44a95ac7368a
[svn r137] Many fixes towards tango.io.Console working, but not quite there yet...
lindquist
parents:
132
diff
changeset
|
37 DValue* DtoDynamicCastInterface(DValue* val, Type* to); |
113
27b9f749d9fe
[svn r117] Initial working implementation of interfaces.
lindquist
parents:
102
diff
changeset
|
38 |
132 | 39 llvm::Value* DtoIndexClass(llvm::Value* ptr, ClassDeclaration* cd, Type* t, unsigned os, std::vector<unsigned>& idxs); |
40 | |
133
44a95ac7368a
[svn r137] Many fixes towards tango.io.Console working, but not quite there yet...
lindquist
parents:
132
diff
changeset
|
41 llvm::Value* DtoVirtualFunctionPointer(DValue* inst, FuncDeclaration* fdecl); |
44a95ac7368a
[svn r137] Many fixes towards tango.io.Console working, but not quite there yet...
lindquist
parents:
132
diff
changeset
|
42 |
100 | 43 #endif |