Mercurial > projects > ldc
annotate ir/irtype.cpp @ 314:8d98e42ece93 trunk
[svn r335] The basics of exception handling are in place.
Still need to make sure calls are turned into invokes everywhere. (NewExpression for instance)
Still some rough edges and corner cases to figure out.
Needs testing!
author | ChristianK |
---|---|
date | Wed, 02 Jul 2008 22:20:18 +0200 |
parents | aca17e55b7a5 |
children | 340acf1535d0 |
rev | line source |
---|---|
173
db9890b3fb64
[svn r189] moving IR data back into DMD frontend nodes
ChristianK
parents:
diff
changeset
|
1 #include "gen/llvm.h" |
db9890b3fb64
[svn r189] moving IR data back into DMD frontend nodes
ChristianK
parents:
diff
changeset
|
2 #include "ir/ir.h" |
db9890b3fb64
[svn r189] moving IR data back into DMD frontend nodes
ChristianK
parents:
diff
changeset
|
3 #include "ir/irtype.h" |
db9890b3fb64
[svn r189] moving IR data back into DMD frontend nodes
ChristianK
parents:
diff
changeset
|
4 |
db9890b3fb64
[svn r189] moving IR data back into DMD frontend nodes
ChristianK
parents:
diff
changeset
|
5 std::set<IrType*> IrType::list; |
db9890b3fb64
[svn r189] moving IR data back into DMD frontend nodes
ChristianK
parents:
diff
changeset
|
6 |
db9890b3fb64
[svn r189] moving IR data back into DMD frontend nodes
ChristianK
parents:
diff
changeset
|
7 void IrType::resetAll() |
db9890b3fb64
[svn r189] moving IR data back into DMD frontend nodes
ChristianK
parents:
diff
changeset
|
8 { |
db9890b3fb64
[svn r189] moving IR data back into DMD frontend nodes
ChristianK
parents:
diff
changeset
|
9 std::set<IrType*>::iterator it; |
db9890b3fb64
[svn r189] moving IR data back into DMD frontend nodes
ChristianK
parents:
diff
changeset
|
10 for(it = list.begin(); it != list.end(); ++it) |
db9890b3fb64
[svn r189] moving IR data back into DMD frontend nodes
ChristianK
parents:
diff
changeset
|
11 (*it)->reset(); |
db9890b3fb64
[svn r189] moving IR data back into DMD frontend nodes
ChristianK
parents:
diff
changeset
|
12 } |
db9890b3fb64
[svn r189] moving IR data back into DMD frontend nodes
ChristianK
parents:
diff
changeset
|
13 |
db9890b3fb64
[svn r189] moving IR data back into DMD frontend nodes
ChristianK
parents:
diff
changeset
|
14 IrType::IrType() |
db9890b3fb64
[svn r189] moving IR data back into DMD frontend nodes
ChristianK
parents:
diff
changeset
|
15 { |
174
16e676ae5ab4
[svn r190] Fixed array concatenation for some broken cases.
lindquist
parents:
173
diff
changeset
|
16 assert(list.insert(this).second); |
173
db9890b3fb64
[svn r189] moving IR data back into DMD frontend nodes
ChristianK
parents:
diff
changeset
|
17 reset(); |
db9890b3fb64
[svn r189] moving IR data back into DMD frontend nodes
ChristianK
parents:
diff
changeset
|
18 } |
db9890b3fb64
[svn r189] moving IR data back into DMD frontend nodes
ChristianK
parents:
diff
changeset
|
19 |
db9890b3fb64
[svn r189] moving IR data back into DMD frontend nodes
ChristianK
parents:
diff
changeset
|
20 IrType::IrType(const IrType& s) |
db9890b3fb64
[svn r189] moving IR data back into DMD frontend nodes
ChristianK
parents:
diff
changeset
|
21 { |
174
16e676ae5ab4
[svn r190] Fixed array concatenation for some broken cases.
lindquist
parents:
173
diff
changeset
|
22 assert(list.insert(this).second); |
173
db9890b3fb64
[svn r189] moving IR data back into DMD frontend nodes
ChristianK
parents:
diff
changeset
|
23 type = s.type; |
193
aca17e55b7a5
[svn r209] Fixed: exotic array to pointer casts were broken.
lindquist
parents:
174
diff
changeset
|
24 #if OPAQUE_VTBLS |
173
db9890b3fb64
[svn r189] moving IR data back into DMD frontend nodes
ChristianK
parents:
diff
changeset
|
25 vtblType = s.type; |
193
aca17e55b7a5
[svn r209] Fixed: exotic array to pointer casts were broken.
lindquist
parents:
174
diff
changeset
|
26 #endif |
173
db9890b3fb64
[svn r189] moving IR data back into DMD frontend nodes
ChristianK
parents:
diff
changeset
|
27 } |
db9890b3fb64
[svn r189] moving IR data back into DMD frontend nodes
ChristianK
parents:
diff
changeset
|
28 |
db9890b3fb64
[svn r189] moving IR data back into DMD frontend nodes
ChristianK
parents:
diff
changeset
|
29 IrType::~IrType() |
db9890b3fb64
[svn r189] moving IR data back into DMD frontend nodes
ChristianK
parents:
diff
changeset
|
30 { |
db9890b3fb64
[svn r189] moving IR data back into DMD frontend nodes
ChristianK
parents:
diff
changeset
|
31 list.erase(this); |
db9890b3fb64
[svn r189] moving IR data back into DMD frontend nodes
ChristianK
parents:
diff
changeset
|
32 } |
db9890b3fb64
[svn r189] moving IR data back into DMD frontend nodes
ChristianK
parents:
diff
changeset
|
33 |
db9890b3fb64
[svn r189] moving IR data back into DMD frontend nodes
ChristianK
parents:
diff
changeset
|
34 void IrType::reset() |
db9890b3fb64
[svn r189] moving IR data back into DMD frontend nodes
ChristianK
parents:
diff
changeset
|
35 { |
db9890b3fb64
[svn r189] moving IR data back into DMD frontend nodes
ChristianK
parents:
diff
changeset
|
36 type = NULL; |
193
aca17e55b7a5
[svn r209] Fixed: exotic array to pointer casts were broken.
lindquist
parents:
174
diff
changeset
|
37 #if OPAQUE_VTBLS |
173
db9890b3fb64
[svn r189] moving IR data back into DMD frontend nodes
ChristianK
parents:
diff
changeset
|
38 vtblType = NULL; |
193
aca17e55b7a5
[svn r209] Fixed: exotic array to pointer casts were broken.
lindquist
parents:
174
diff
changeset
|
39 #endif |
173
db9890b3fb64
[svn r189] moving IR data back into DMD frontend nodes
ChristianK
parents:
diff
changeset
|
40 } |