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();