Mercurial > projects > ldc
comparison gen/irstate.h @ 309:d59c363fccad trunk
[svn r330] Implemented synchronized statements.
Changed the tryfinally handlers to a more generalized EnclosingHandler.
Changed ClassInfoS to be mutable so they can be used as locks.
Added new BB after throw ala return/break etc.
author | lindquist |
---|---|
date | Sat, 28 Jun 2008 11:37:53 +0200 |
parents | 2b72433d5c8c |
children | 9967a3270837 |
comparison
equal
deleted
inserted
replaced
308:6b62e8cdf970 | 309:d59c363fccad |
---|---|
21 struct ClassDeclaration; | 21 struct ClassDeclaration; |
22 struct FuncDeclaration; | 22 struct FuncDeclaration; |
23 struct Module; | 23 struct Module; |
24 struct TypeStruct; | 24 struct TypeStruct; |
25 struct BaseClass; | 25 struct BaseClass; |
26 struct TryFinallyStatement; | 26 struct EnclosingHandler; |
27 | 27 |
28 struct IrModule; | 28 struct IrModule; |
29 | 29 |
30 // represents a scope | 30 // represents a scope |
31 struct IRScope | 31 struct IRScope |
42 struct IRLoopScope : IRScope | 42 struct IRLoopScope : IRScope |
43 { | 43 { |
44 // generating statement | 44 // generating statement |
45 Statement* s; | 45 Statement* s; |
46 // the try of a TryFinally that encloses the loop | 46 // the try of a TryFinally that encloses the loop |
47 TryFinallyStatement* enclosingtryfinally; | 47 EnclosingHandler* enclosinghandler; |
48 | 48 |
49 IRLoopScope(); | 49 IRLoopScope(); |
50 IRLoopScope(Statement* s, TryFinallyStatement* enclosingtryfinally, llvm::BasicBlock* b, llvm::BasicBlock* e); | 50 IRLoopScope(Statement* s, EnclosingHandler* enclosinghandler, llvm::BasicBlock* b, llvm::BasicBlock* e); |
51 }; | 51 }; |
52 | 52 |
53 struct IRBuilderHelper | 53 struct IRBuilderHelper |
54 { | 54 { |
55 IRState* state; | 55 IRState* state; |
94 // module | 94 // module |
95 Module* dmodule; | 95 Module* dmodule; |
96 llvm::Module* module; | 96 llvm::Module* module; |
97 | 97 |
98 // interface info type, used in DtoInterfaceInfoType | 98 // interface info type, used in DtoInterfaceInfoType |
99 llvm::StructType* interfaceInfoType; | 99 const LLStructType* interfaceInfoType; |
100 const LLStructType* mutexType; | |
100 | 101 |
101 // functions | 102 // functions |
102 typedef std::vector<IrFunction*> FunctionVector; | 103 typedef std::vector<IrFunction*> FunctionVector; |
103 FunctionVector functions; | 104 FunctionVector functions; |
104 IrFunction* func(); | 105 IrFunction* func(); |