Mercurial > projects > ldc
comparison ir/irstruct.h @ 307:7ade5e035beb trunk
[svn r328] Fixed an issue with interfaces where the vtable type of a interface implemented could be invalid. Fixes several tango modules like, FileStream, ServerSocket
and most tina cluster modules :)
author | lindquist |
---|---|
date | Sat, 28 Jun 2008 03:45:18 +0200 |
parents | e3355ce5444b |
children | 74101be2a553 |
comparison
equal
deleted
inserted
replaced
306:0baca2feb554 | 307:7ade5e035beb |
---|---|
9 struct IrInterface : IrBase | 9 struct IrInterface : IrBase |
10 { | 10 { |
11 BaseClass* base; | 11 BaseClass* base; |
12 ClassDeclaration* decl; | 12 ClassDeclaration* decl; |
13 | 13 |
14 #if OPAQUE_VTBLS | 14 llvm::PATypeHolder* vtblTy; |
15 const LLArrayType* vtblTy; | 15 LLConstant* vtblInit; |
16 LLConstantArray* vtblInit; | |
17 #else | |
18 const LLStructType* vtblTy; | |
19 LLConstantStruct* vtblInit; | |
20 #endif | |
21 LLGlobalVariable* vtbl; | 16 LLGlobalVariable* vtbl; |
22 | 17 |
23 const LLStructType* infoTy; | 18 const LLStructType* infoTy; |
24 LLConstantStruct* infoInit; | 19 LLConstantStruct* infoInit; |
25 LLConstant* info; | 20 LLConstant* info; |
26 | 21 |
27 int index; | 22 int index; |
28 | 23 |
29 #if OPAQUE_VTBLS | 24 IrInterface(BaseClass* b); |
30 IrInterface(BaseClass* b, const LLArrayType* vt); | |
31 #else | |
32 IrInterface(BaseClass* b, const LLStructType* vt); | |
33 #endif | |
34 ~IrInterface(); | 25 ~IrInterface(); |
35 }; | 26 }; |
36 | 27 |
37 ////////////////////////////////////////////////////////////////////////////// | 28 ////////////////////////////////////////////////////////////////////////////// |
38 ////////////////////////////////////////////////////////////////////////////// | 29 ////////////////////////////////////////////////////////////////////////////// |