author | Jan Vrany <jan.vrany@fit.cvut.cz> |
Fri, 17 Jun 2016 17:25:15 +0100 | |
changeset 26 | 8eb6716029aa |
parent 23 | c1/DragonFly__C1LLVMMTypes.st@d2d9a2d4d6bf |
parent 18 | c1/DragonFly__C1LLVMMTypes.st@81ed8ce0852f |
child 27 | 73e7acbd16ff |
permissions | -rw-r--r-- |
23
d2d9a2d4d6bf
Added README, licenses and copyright notices.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
17
diff
changeset
|
1 |
" |
d2d9a2d4d6bf
Added README, licenses and copyright notices.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
17
diff
changeset
|
2 |
Copyright (C) 2016-now Jan Vrany |
d2d9a2d4d6bf
Added README, licenses and copyright notices.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
17
diff
changeset
|
3 |
|
d2d9a2d4d6bf
Added README, licenses and copyright notices.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
17
diff
changeset
|
4 |
This code is not an open-source (yet). You may use this code |
d2d9a2d4d6bf
Added README, licenses and copyright notices.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
17
diff
changeset
|
5 |
for your own experiments and projects, given that: |
d2d9a2d4d6bf
Added README, licenses and copyright notices.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
17
diff
changeset
|
6 |
|
d2d9a2d4d6bf
Added README, licenses and copyright notices.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
17
diff
changeset
|
7 |
* all modification to the code will be sent to the |
d2d9a2d4d6bf
Added README, licenses and copyright notices.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
17
diff
changeset
|
8 |
original author for inclusion in future releases |
d2d9a2d4d6bf
Added README, licenses and copyright notices.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
17
diff
changeset
|
9 |
* this is not used in any commercial software |
d2d9a2d4d6bf
Added README, licenses and copyright notices.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
17
diff
changeset
|
10 |
|
d2d9a2d4d6bf
Added README, licenses and copyright notices.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
17
diff
changeset
|
11 |
This license is provisional and may (will) change in |
d2d9a2d4d6bf
Added README, licenses and copyright notices.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
17
diff
changeset
|
12 |
a future. |
d2d9a2d4d6bf
Added README, licenses and copyright notices.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
17
diff
changeset
|
13 |
" |
17
54798ae989cc
Initial work on LLVM-based C1 compiler
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
14 |
"{ Package: 'jv:dragonfly/c1' }" |
54798ae989cc
Initial work on LLVM-based C1 compiler
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
15 |
|
54798ae989cc
Initial work on LLVM-based C1 compiler
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
16 |
"{ NameSpace: DragonFly }" |
54798ae989cc
Initial work on LLVM-based C1 compiler
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
17 |
|
18
81ed8ce0852f
C1: Added context setup code.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
17
diff
changeset
|
18 |
SharedPool subclass:#C1LLVMTypes |
17
54798ae989cc
Initial work on LLVM-based C1 compiler
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
19 |
instanceVariableNames:'' |
18
81ed8ce0852f
C1: Added context setup code.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
17
diff
changeset
|
20 |
classVariableNames:'TyInstance TyInstanceFields TyInstanceFieldIndexClass |
81ed8ce0852f
C1: Added context setup code.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
17
diff
changeset
|
21 |
TyInstanceFieldIndexSize TyInstanceFieldIndexSpace |
81ed8ce0852f
C1: Added context setup code.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
17
diff
changeset
|
22 |
TyInstanceFieldIndexFlags TyInstanceFieldIndexAge |
81ed8ce0852f
C1: Added context setup code.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
17
diff
changeset
|
23 |
TyInstanceFieldIndexHashLow TyOBJ TyInlineCache |
81ed8ce0852f
C1: Added context setup code.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
17
diff
changeset
|
24 |
TyInlineCacheIndexFunc TyInlineCacheIndexClass |
81ed8ce0852f
C1: Added context setup code.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
17
diff
changeset
|
25 |
TyInlineCacheIndexLineNo TyInlineCachePtr TyOBJFUNC TyOBJFUNCs |
81ed8ce0852f
C1: Added context setup code.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
17
diff
changeset
|
26 |
TyContextFields TyContextFieldIndexStack TyContexts |
81ed8ce0852f
C1: Added context setup code.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
17
diff
changeset
|
27 |
TyContextFieldIndexFlags TyContextFieldIndexSenderS |
81ed8ce0852f
C1: Added context setup code.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
17
diff
changeset
|
28 |
TyContextFieldIndexHome TyContextFieldIndexReceiver |
81ed8ce0852f
C1: Added context setup code.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
17
diff
changeset
|
29 |
TyContextFieldIndexSelector TyContextFieldIndexSearchClass |
81ed8ce0852f
C1: Added context setup code.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
17
diff
changeset
|
30 |
TyContextFieldIndexMethod TyContextFieldIndexLineNr |
81ed8ce0852f
C1: Added context setup code.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
17
diff
changeset
|
31 |
TyContextFieldIndexRetvalTemp TyContextFieldIndexHandleS' |
17
54798ae989cc
Initial work on LLVM-based C1 compiler
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
32 |
poolDictionaries:'' |
54798ae989cc
Initial work on LLVM-based C1 compiler
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
33 |
category:'DragonFly-C1' |
54798ae989cc
Initial work on LLVM-based C1 compiler
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
34 |
! |
54798ae989cc
Initial work on LLVM-based C1 compiler
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
35 |
|
26 | 36 |
!C1LLVMTypes class methodsFor:'documentation'! |
23
d2d9a2d4d6bf
Added README, licenses and copyright notices.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
17
diff
changeset
|
37 |
|
d2d9a2d4d6bf
Added README, licenses and copyright notices.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
17
diff
changeset
|
38 |
copyright |
d2d9a2d4d6bf
Added README, licenses and copyright notices.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
17
diff
changeset
|
39 |
" |
d2d9a2d4d6bf
Added README, licenses and copyright notices.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
17
diff
changeset
|
40 |
Copyright (C) 2016-now Jan Vrany |
d2d9a2d4d6bf
Added README, licenses and copyright notices.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
17
diff
changeset
|
41 |
|
d2d9a2d4d6bf
Added README, licenses and copyright notices.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
17
diff
changeset
|
42 |
This code is not an open-source (yet). You may use this code |
d2d9a2d4d6bf
Added README, licenses and copyright notices.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
17
diff
changeset
|
43 |
for your own experiments and projects, given that: |
d2d9a2d4d6bf
Added README, licenses and copyright notices.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
17
diff
changeset
|
44 |
|
d2d9a2d4d6bf
Added README, licenses and copyright notices.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
17
diff
changeset
|
45 |
* all modification to the code will be sent to the |
d2d9a2d4d6bf
Added README, licenses and copyright notices.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
17
diff
changeset
|
46 |
original author for inclusion in future releases |
d2d9a2d4d6bf
Added README, licenses and copyright notices.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
17
diff
changeset
|
47 |
* this is not used in any commercial software |
d2d9a2d4d6bf
Added README, licenses and copyright notices.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
17
diff
changeset
|
48 |
|
d2d9a2d4d6bf
Added README, licenses and copyright notices.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
17
diff
changeset
|
49 |
This license is provisional and may (will) change in |
d2d9a2d4d6bf
Added README, licenses and copyright notices.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
17
diff
changeset
|
50 |
a future. |
d2d9a2d4d6bf
Added README, licenses and copyright notices.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
17
diff
changeset
|
51 |
|
d2d9a2d4d6bf
Added README, licenses and copyright notices.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
17
diff
changeset
|
52 |
" |
d2d9a2d4d6bf
Added README, licenses and copyright notices.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
17
diff
changeset
|
53 |
! ! |
17
54798ae989cc
Initial work on LLVM-based C1 compiler
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
54 |
|
18
81ed8ce0852f
C1: Added context setup code.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
17
diff
changeset
|
55 |
!C1LLVMTypes class methodsFor:'initialization'! |
17
54798ae989cc
Initial work on LLVM-based C1 compiler
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
56 |
|
54798ae989cc
Initial work on LLVM-based C1 compiler
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
57 |
initialize |
54798ae989cc
Initial work on LLVM-based C1 compiler
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
58 |
"Invoked at system start or when the class is dynamically loaded." |
54798ae989cc
Initial work on LLVM-based C1 compiler
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
59 |
|
54798ae989cc
Initial work on LLVM-based C1 compiler
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
60 |
"/ please change as required (and remove this comment) |
54798ae989cc
Initial work on LLVM-based C1 compiler
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
61 |
|
54798ae989cc
Initial work on LLVM-based C1 compiler
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
62 |
TyInstance := LLVMType named: '__instance'. |
54798ae989cc
Initial work on LLVM-based C1 compiler
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
63 |
TyOBJ := TyInstance pointer. |
18
81ed8ce0852f
C1: Added context setup code.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
17
diff
changeset
|
64 |
TyInstanceFields := { |
26 | 65 |
TyOBJ. "/ o_class |
66 |
LLVMType int32. "/ o_size |
|
67 |
LLVMType int8. "/ o_space |
|
68 |
LLVMType int8. "/ o_flags |
|
69 |
LLVMType int8. "/ o_age |
|
70 |
LLVMType int8. "/ o_hashLow |
|
17
54798ae989cc
Initial work on LLVM-based C1 compiler
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
71 |
}. |
18
81ed8ce0852f
C1: Added context setup code.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
17
diff
changeset
|
72 |
TyInstance elementTypes: TyInstanceFields. |
81ed8ce0852f
C1: Added context setup code.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
17
diff
changeset
|
73 |
|
17
54798ae989cc
Initial work on LLVM-based C1 compiler
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
74 |
TyInstanceFieldIndexClass := 0. |
54798ae989cc
Initial work on LLVM-based C1 compiler
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
75 |
TyInstanceFieldIndexSize := 1. |
54798ae989cc
Initial work on LLVM-based C1 compiler
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
76 |
TyInstanceFieldIndexSpace := 2. |
54798ae989cc
Initial work on LLVM-based C1 compiler
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
77 |
TyInstanceFieldIndexFlags := 3. |
54798ae989cc
Initial work on LLVM-based C1 compiler
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
78 |
TyInstanceFieldIndexAge := 4. |
54798ae989cc
Initial work on LLVM-based C1 compiler
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
79 |
TyInstanceFieldIndexHashLow := 5. |
54798ae989cc
Initial work on LLVM-based C1 compiler
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
80 |
|
18
81ed8ce0852f
C1: Added context setup code.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
17
diff
changeset
|
81 |
TyContextFields := TyInstanceFields , (Context instVarNames collect: [ :nm | nm last == $* ifTrue:[ LLVMType intptr pointer ] ifFalse:[ TyOBJ ] ]). |
81ed8ce0852f
C1: Added context setup code.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
17
diff
changeset
|
82 |
TyContextFieldIndexFlags := TyInstanceFields size - 1 + (Context instVarIndexFor: #flags). |
26 | 83 |
TyContextFieldIndexSenderS := TyInstanceFields size - 1 + (Context instVarIndexFor: #'sender*'). |
84 |
TyContextFieldIndexHome := TyInstanceFields size - 1 + (Context instVarIndexFor: #home). |
|
85 |
TyContextFieldIndexReceiver := TyInstanceFields size - 1 + (Context instVarIndexFor: #receiver). |
|
86 |
TyContextFieldIndexSelector := TyInstanceFields size - 1 + (Context instVarIndexFor: #selector). |
|
87 |
TyContextFieldIndexSearchClass := TyInstanceFields size - 1 + (Context instVarIndexFor: #searchClass). |
|
88 |
TyContextFieldIndexMethod := TyInstanceFields size - 1 + (Context instVarIndexFor: #method). |
|
89 |
TyContextFieldIndexLineNr := TyInstanceFields size - 1 + (Context instVarIndexFor: #lineNr). |
|
90 |
TyContextFieldIndexRetvalTemp := TyInstanceFields size - 1 + (Context instVarIndexFor: #retvalTemp). |
|
91 |
TyContextFieldIndexHandleS := TyInstanceFields size - 1 + (Context instVarIndexFor: #'handle*'). |
|
18
81ed8ce0852f
C1: Added context setup code.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
17
diff
changeset
|
92 |
TyContextFieldIndexStack := TyInstanceFields size + Context instSize. |
26 | 93 |
|
18
81ed8ce0852f
C1: Added context setup code.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
17
diff
changeset
|
94 |
TyContexts := #(). |
81ed8ce0852f
C1: Added context setup code.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
17
diff
changeset
|
95 |
|
17
54798ae989cc
Initial work on LLVM-based C1 compiler
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
96 |
TyInlineCache := LLVMType named: 'inlineCache'. |
54798ae989cc
Initial work on LLVM-based C1 compiler
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
97 |
TyInlineCachePtr := TyInlineCache pointer. |
54798ae989cc
Initial work on LLVM-based C1 compiler
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
98 |
TyOBJFUNC := LLVMType function: { |
26 | 99 |
TyOBJ. "/ self |
100 |
TyOBJ. "/ selector |
|
101 |
TyOBJ. "/ searchClass or nil |
|
102 |
TyInlineCachePtr . "/ pIlc |
|
17
54798ae989cc
Initial work on LLVM-based C1 compiler
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
103 |
} varargs: true returning: TyOBJ. |
54798ae989cc
Initial work on LLVM-based C1 compiler
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
104 |
|
54798ae989cc
Initial work on LLVM-based C1 compiler
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
105 |
TyInlineCache elementTypes: { |
26 | 106 |
TyOBJFUNC pointer . "/ ilc_func |
107 |
TyOBJ. "/ ilc_class |
|
108 |
TyInlineCachePtr . "/ ilc_link |
|
109 |
TyOBJ . "/ ilc_lineNo |
|
110 |
LLVMType char pointer . "/ ilc_poly |
|
17
54798ae989cc
Initial work on LLVM-based C1 compiler
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
111 |
}. |
54798ae989cc
Initial work on LLVM-based C1 compiler
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
112 |
TyInlineCacheIndexFunc := 0. |
54798ae989cc
Initial work on LLVM-based C1 compiler
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
113 |
TyInlineCacheIndexClass := 1. |
54798ae989cc
Initial work on LLVM-based C1 compiler
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
114 |
TyInlineCacheIndexLineNo := 3. |
54798ae989cc
Initial work on LLVM-based C1 compiler
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
115 |
|
54798ae989cc
Initial work on LLVM-based C1 compiler
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
116 |
TyOBJFUNCs := { |
26 | 117 |
"/ 0 args |
118 |
LLVMType function: { |
|
119 |
TyOBJ. "/ self |
|
120 |
TyOBJ. "/ selector |
|
121 |
TyOBJ. "/ searchClass or nil |
|
122 |
TyInlineCachePtr . "/ pIlc |
|
123 |
} returning: TyOBJ . |
|
124 |
"/ 1 args |
|
125 |
LLVMType function: { |
|
126 |
TyOBJ. "/ self |
|
127 |
TyOBJ. "/ selector |
|
128 |
TyOBJ. "/ searchClass or nil |
|
129 |
TyInlineCachePtr . "/ pIlc |
|
130 |
TyOBJ . |
|
131 |
} returning: TyOBJ . |
|
132 |
"/ 2 args |
|
133 |
LLVMType function: { |
|
134 |
TyOBJ. "/ self |
|
135 |
TyOBJ. "/ selector |
|
136 |
TyOBJ. "/ searchClass or nil |
|
137 |
TyInlineCachePtr . "/ pIlc |
|
138 |
TyOBJ . TyOBJ . |
|
139 |
} returning: TyOBJ . |
|
140 |
"/ 3 args |
|
141 |
LLVMType function: { |
|
142 |
TyOBJ. "/ self |
|
143 |
TyOBJ. "/ selector |
|
144 |
TyOBJ. "/ searchClass or nil |
|
145 |
TyInlineCachePtr . "/ pIlc |
|
146 |
TyOBJ . TyOBJ . TyOBJ . |
|
147 |
} returning: TyOBJ . |
|
148 |
"/ 4 args |
|
149 |
LLVMType function: { |
|
150 |
TyOBJ. "/ self |
|
151 |
TyOBJ. "/ selector |
|
152 |
TyOBJ. "/ searchClass or nil |
|
153 |
TyInlineCachePtr . "/ pIlc |
|
154 |
TyOBJ . TyOBJ . TyOBJ . TyOBJ . |
|
155 |
} returning: TyOBJ . |
|
156 |
"/ 5 args |
|
157 |
LLVMType function: { |
|
158 |
TyOBJ. "/ self |
|
159 |
TyOBJ. "/ selector |
|
160 |
TyOBJ. "/ searchClass or nil |
|
161 |
TyInlineCachePtr . "/ pIlc |
|
162 |
TyOBJ . TyOBJ . TyOBJ . TyOBJ . TyOBJ . |
|
163 |
} returning: TyOBJ . |
|
164 |
"/ 6 args |
|
165 |
LLVMType function: { |
|
166 |
TyOBJ. "/ self |
|
167 |
TyOBJ. "/ selector |
|
168 |
TyOBJ. "/ searchClass or nil |
|
169 |
TyInlineCachePtr . "/ pIlc |
|
170 |
TyOBJ . TyOBJ . TyOBJ . TyOBJ . TyOBJ . TyOBJ . |
|
171 |
} returning: TyOBJ . |
|
172 |
"/ 7 args |
|
173 |
LLVMType function: { |
|
174 |
TyOBJ. "/ self |
|
175 |
TyOBJ. "/ selector |
|
176 |
TyOBJ. "/ searchClass or nil |
|
177 |
TyInlineCachePtr . "/ pIlc |
|
178 |
TyOBJ . TyOBJ . TyOBJ . TyOBJ . TyOBJ . TyOBJ . TyOBJ . |
|
179 |
} returning: TyOBJ . |
|
180 |
"/ 8 args |
|
181 |
LLVMType function: { |
|
182 |
TyOBJ. "/ self |
|
183 |
TyOBJ. "/ selector |
|
184 |
TyOBJ. "/ searchClass or nil |
|
185 |
TyInlineCachePtr . "/ pIlc |
|
186 |
TyOBJ . TyOBJ . TyOBJ . TyOBJ . TyOBJ . TyOBJ . TyOBJ . TyOBJ . |
|
187 |
} returning: TyOBJ . |
|
188 |
"/ 9 args |
|
189 |
LLVMType function: { |
|
190 |
TyOBJ. "/ self |
|
191 |
TyOBJ. "/ selector |
|
192 |
TyOBJ. "/ searchClass or nil |
|
193 |
TyInlineCachePtr . "/ pIlc |
|
194 |
TyOBJ . TyOBJ . TyOBJ . TyOBJ . TyOBJ . TyOBJ . TyOBJ . TyOBJ . TyOBJ . |
|
195 |
} returning: TyOBJ . |
|
196 |
"/ 10 args |
|
197 |
LLVMType function: { |
|
198 |
TyOBJ. "/ self |
|
199 |
TyOBJ. "/ selector |
|
200 |
TyOBJ. "/ searchClass or nil |
|
201 |
TyInlineCachePtr . "/ pIlc |
|
202 |
TyOBJ . TyOBJ . TyOBJ . TyOBJ . TyOBJ . TyOBJ . TyOBJ . TyOBJ . TyOBJ . TyOBJ . |
|
203 |
} returning: TyOBJ . |
|
204 |
"/ 11 args |
|
205 |
LLVMType function: { |
|
206 |
TyOBJ. "/ self |
|
207 |
TyOBJ. "/ selector |
|
208 |
TyOBJ. "/ searchClass or nil |
|
209 |
TyInlineCachePtr . "/ pIlc |
|
210 |
TyOBJ . TyOBJ . TyOBJ . TyOBJ . TyOBJ . TyOBJ . TyOBJ . TyOBJ . TyOBJ . TyOBJ . TyOBJ . |
|
211 |
} returning: TyOBJ . |
|
212 |
"/ 12 args |
|
213 |
LLVMType function: { |
|
214 |
TyOBJ. "/ self |
|
215 |
TyOBJ. "/ selector |
|
216 |
TyOBJ. "/ searchClass or nil |
|
217 |
TyInlineCachePtr . "/ pIlc |
|
218 |
TyOBJ . TyOBJ . TyOBJ . TyOBJ . TyOBJ . TyOBJ . TyOBJ . TyOBJ . TyOBJ . TyOBJ . TyOBJ . TyOBJ . |
|
219 |
} returning: TyOBJ . |
|
220 |
"/ 13 args |
|
221 |
LLVMType function: { |
|
222 |
TyOBJ. "/ self |
|
223 |
TyOBJ. "/ selector |
|
224 |
TyOBJ. "/ searchClass or nil |
|
225 |
TyInlineCachePtr . "/ pIlc |
|
226 |
TyOBJ . TyOBJ . TyOBJ . TyOBJ . TyOBJ . TyOBJ . TyOBJ . TyOBJ . TyOBJ . TyOBJ . TyOBJ . TyOBJ . TyOBJ . |
|
227 |
} returning: TyOBJ . |
|
228 |
"/ 14 args |
|
229 |
LLVMType function: { |
|
230 |
TyOBJ. "/ self |
|
231 |
TyOBJ. "/ selector |
|
232 |
TyOBJ. "/ searchClass or nil |
|
233 |
TyInlineCachePtr . "/ pIlc |
|
234 |
TyOBJ . TyOBJ . TyOBJ . TyOBJ . TyOBJ . TyOBJ . TyOBJ . TyOBJ . TyOBJ . TyOBJ . TyOBJ . TyOBJ . TyOBJ . TyOBJ . |
|
235 |
} returning: TyOBJ . |
|
236 |
"/ 16 args |
|
237 |
LLVMType function: { |
|
238 |
TyOBJ. "/ self |
|
239 |
TyOBJ. "/ selector |
|
240 |
TyOBJ. "/ searchClass or nil |
|
241 |
TyInlineCachePtr . "/ pIlc |
|
242 |
TyOBJ . TyOBJ . TyOBJ . TyOBJ . TyOBJ . TyOBJ . TyOBJ . TyOBJ . TyOBJ . TyOBJ . TyOBJ . TyOBJ . TyOBJ . TyOBJ . TyOBJ . |
|
243 |
} returning: TyOBJ . |
|
17
54798ae989cc
Initial work on LLVM-based C1 compiler
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
244 |
} |
54798ae989cc
Initial work on LLVM-based C1 compiler
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
245 |
|
18
81ed8ce0852f
C1: Added context setup code.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
17
diff
changeset
|
246 |
"Modified: / 21-04-2016 / 08:34:02 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
17
54798ae989cc
Initial work on LLVM-based C1 compiler
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
247 |
! ! |
54798ae989cc
Initial work on LLVM-based C1 compiler
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
248 |
|
18
81ed8ce0852f
C1: Added context setup code.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
17
diff
changeset
|
249 |
!C1LLVMTypes class methodsFor:'accessing'! |
81ed8ce0852f
C1: Added context setup code.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
17
diff
changeset
|
250 |
|
81ed8ce0852f
C1: Added context setup code.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
17
diff
changeset
|
251 |
tyContext: size |
81ed8ce0852f
C1: Added context setup code.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
17
diff
changeset
|
252 |
"Return a type for context with given `size`. Size should |
81ed8ce0852f
C1: Added context setup code.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
17
diff
changeset
|
253 |
be numArgs + numVars + numTemps" |
81ed8ce0852f
C1: Added context setup code.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
17
diff
changeset
|
254 |
|
81ed8ce0852f
C1: Added context setup code.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
17
diff
changeset
|
255 |
| tyContext | |
81ed8ce0852f
C1: Added context setup code.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
17
diff
changeset
|
256 |
|
26 | 257 |
TyContexts size < (size + 1) ifTrue:[ |
258 |
| tmp | |
|
18
81ed8ce0852f
C1: Added context setup code.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
17
diff
changeset
|
259 |
|
26 | 260 |
tmp := Array new: size + 1. |
261 |
tmp replaceFrom: 1 to: TyContexts size with: TyContexts. |
|
262 |
TyContexts := tmp. |
|
18
81ed8ce0852f
C1: Added context setup code.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
17
diff
changeset
|
263 |
]. |
81ed8ce0852f
C1: Added context setup code.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
17
diff
changeset
|
264 |
tyContext := TyContexts at: size + 1. |
26 | 265 |
tyContext isNil ifTrue:[ |
266 |
tyContext := LLVMType named: '__context' , size printString. |
|
267 |
size == 0 ifTrue:[ |
|
268 |
tyContext elementTypes: TyContextFields |
|
269 |
] ifFalse:[ |
|
270 |
tyContext elementTypes: (TyContextFields copyWith: (LLVMType arrayOf: TyOBJ size: size)) |
|
271 |
]. |
|
272 |
TyContexts at: size + 1 put: tyContext. |
|
18
81ed8ce0852f
C1: Added context setup code.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
17
diff
changeset
|
273 |
]. |
81ed8ce0852f
C1: Added context setup code.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
17
diff
changeset
|
274 |
^ tyContext |
81ed8ce0852f
C1: Added context setup code.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
17
diff
changeset
|
275 |
|
81ed8ce0852f
C1: Added context setup code.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
17
diff
changeset
|
276 |
" |
81ed8ce0852f
C1: Added context setup code.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
17
diff
changeset
|
277 |
DragonFly::C1LLVMTypes tyContext: 3 |
81ed8ce0852f
C1: Added context setup code.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
17
diff
changeset
|
278 |
" |
81ed8ce0852f
C1: Added context setup code.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
17
diff
changeset
|
279 |
|
81ed8ce0852f
C1: Added context setup code.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
17
diff
changeset
|
280 |
"Created: / 20-04-2016 / 23:06:02 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
81ed8ce0852f
C1: Added context setup code.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
17
diff
changeset
|
281 |
"Modified (comment): / 21-04-2016 / 08:41:25 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
81ed8ce0852f
C1: Added context setup code.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
17
diff
changeset
|
282 |
! ! |
81ed8ce0852f
C1: Added context setup code.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
17
diff
changeset
|
283 |
|
81ed8ce0852f
C1: Added context setup code.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
17
diff
changeset
|
284 |
!C1LLVMTypes class methodsFor:'documentation'! |
17
54798ae989cc
Initial work on LLVM-based C1 compiler
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
285 |
version_HG |
54798ae989cc
Initial work on LLVM-based C1 compiler
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
286 |
^ '$Changeset: <not expanded> $' |
54798ae989cc
Initial work on LLVM-based C1 compiler
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
287 |
! ! |
54798ae989cc
Initial work on LLVM-based C1 compiler
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
288 |
|
54798ae989cc
Initial work on LLVM-based C1 compiler
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
289 |
|
18
81ed8ce0852f
C1: Added context setup code.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
17
diff
changeset
|
290 |
C1LLVMTypes initialize! |