author | Jan Vrany <jan.vrany@fit.cvut.cz> |
Thu, 30 Oct 2014 21:43:54 +0000 | |
changeset 41 | f3898a3b378d |
parent 37 | be8c2dd09dff |
child 42 | acdc3ec6d152 |
permissions | -rw-r--r-- |
41
f3898a3b378d
Package renamed from cvut:stx/goodies/newcompiler to ctu:ircompiler
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
37
diff
changeset
|
1 |
"{ Package: 'ctu:ircompiler' }" |
1
0dd36941955f
Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2 |
|
0dd36941955f
Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3 |
IRInterpreter subclass:#IRTranslator |
9
04518c7fb91c
Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
6
diff
changeset
|
4 |
instanceVariableNames:'pending gen currentInstr' |
1
0dd36941955f
Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
5 |
classVariableNames:'' |
0dd36941955f
Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
6 |
poolDictionaries:'' |
0dd36941955f
Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
7 |
category:'NewCompiler-IR' |
0dd36941955f
Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
8 |
! |
0dd36941955f
Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
9 |
|
0dd36941955f
Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
10 |
IRTranslator comment:'I interpret IRMethod instructions, sending the appropriate bytecode messages to my BytecodeGenerator (gen). I hold some messages back in pending awaiting certain sequences of them that can be consolidated into single bytecode instructions, otherwise the pending messages are executed in order as if they were executed when they first appeared.' |
0dd36941955f
Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
11 |
! |
0dd36941955f
Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
12 |
|
0dd36941955f
Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
13 |
|
0dd36941955f
Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
14 |
!IRTranslator class methodsFor:'instance creation'! |
0dd36941955f
Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
15 |
|
0dd36941955f
Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
16 |
new |
0dd36941955f
Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
17 |
^ self basicNew initialize. |
0dd36941955f
Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
18 |
|
0dd36941955f
Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
19 |
"Created: / 11-06-2008 / 09:24:01 / Jan Vrany <vranyj1@fel.cvut.cz>" |
0dd36941955f
Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
20 |
! ! |
0dd36941955f
Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
21 |
|
10
0fd549e0c784
First simple block works. See IRBuilderTest>>testBlock_blockTempArg.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
9
diff
changeset
|
22 |
!IRTranslator methodsFor:'accessing'! |
0fd549e0c784
First simple block works. See IRBuilderTest>>testBlock_blockTempArg.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
9
diff
changeset
|
23 |
|
0fd549e0c784
First simple block works. See IRBuilderTest>>testBlock_blockTempArg.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
9
diff
changeset
|
24 |
getCode |
0fd549e0c784
First simple block works. See IRBuilderTest>>testBlock_blockTempArg.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
9
diff
changeset
|
25 |
|
0fd549e0c784
First simple block works. See IRBuilderTest>>testBlock_blockTempArg.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
9
diff
changeset
|
26 |
^gen getCode |
0fd549e0c784
First simple block works. See IRBuilderTest>>testBlock_blockTempArg.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
9
diff
changeset
|
27 |
|
0fd549e0c784
First simple block works. See IRBuilderTest>>testBlock_blockTempArg.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
9
diff
changeset
|
28 |
"Created: / 30-03-2009 / 19:08:21 / Jan Vrany <vranyj1@fel.cvut.cz>" |
11
0a50d475c1ff
Blocks seems to work. No support for nested block. No support for
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
10
diff
changeset
|
29 |
! |
0a50d475c1ff
Blocks seems to work. No support for nested block. No support for
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
10
diff
changeset
|
30 |
|
0a50d475c1ff
Blocks seems to work. No support for nested block. No support for
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
10
diff
changeset
|
31 |
getGenerator |
0a50d475c1ff
Blocks seems to work. No support for nested block. No support for
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
10
diff
changeset
|
32 |
|
0a50d475c1ff
Blocks seems to work. No support for nested block. No support for
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
10
diff
changeset
|
33 |
^gen |
0a50d475c1ff
Blocks seems to work. No support for nested block. No support for
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
10
diff
changeset
|
34 |
|
0a50d475c1ff
Blocks seems to work. No support for nested block. No support for
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
10
diff
changeset
|
35 |
"Created: / 30-03-2009 / 23:08:34 / Jan Vrany <vranyj1@fel.cvut.cz>" |
10
0fd549e0c784
First simple block works. See IRBuilderTest>>testBlock_blockTempArg.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
9
diff
changeset
|
36 |
! ! |
0fd549e0c784
First simple block works. See IRBuilderTest>>testBlock_blockTempArg.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
9
diff
changeset
|
37 |
|
2
6e1de7f85d59
Minor fixes. All tests passes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1
diff
changeset
|
38 |
!IRTranslator methodsFor:'initialize'! |
1
0dd36941955f
Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
39 |
|
0dd36941955f
Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
40 |
initialize |
2
6e1de7f85d59
Minor fixes. All tests passes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1
diff
changeset
|
41 |
|
6e1de7f85d59
Minor fixes. All tests passes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1
diff
changeset
|
42 |
gen := IRBytecodeGenerator new |
6e1de7f85d59
Minor fixes. All tests passes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1
diff
changeset
|
43 |
|
6e1de7f85d59
Minor fixes. All tests passes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1
diff
changeset
|
44 |
"Modified: / 17-09-2008 / 12:19:10 / Jan Vrany <vranyj1@fel.cvut.cz>" |
1
0dd36941955f
Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
45 |
! ! |
0dd36941955f
Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
46 |
|
0dd36941955f
Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
47 |
!IRTranslator methodsFor:'instructions'! |
0dd36941955f
Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
48 |
|
0dd36941955f
Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
49 |
addLiteral: literal |
0dd36941955f
Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
50 |
gen addLiteral: literal. |
0dd36941955f
Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
51 |
! |
0dd36941955f
Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
52 |
|
0dd36941955f
Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
53 |
blockReturnTop |
0dd36941955f
Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
54 |
|
0dd36941955f
Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
55 |
self doPending. |
0dd36941955f
Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
56 |
gen blockReturnTop. |
0dd36941955f
Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
57 |
! |
0dd36941955f
Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
58 |
|
0dd36941955f
Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
59 |
goto: seqNum |
0dd36941955f
Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
60 |
|
0dd36941955f
Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
61 |
self doPending. |
0dd36941955f
Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
62 |
gen goto: seqNum. |
0dd36941955f
Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
63 |
! |
0dd36941955f
Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
64 |
|
0dd36941955f
Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
65 |
if: bool goto: seqNum1 otherwise: seqNum2 |
0dd36941955f
Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
66 |
|
0dd36941955f
Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
67 |
self doPending. |
0dd36941955f
Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
68 |
gen if: bool goto: seqNum1 otherwise: seqNum2. |
0dd36941955f
Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
69 |
! |
0dd36941955f
Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
70 |
|
0dd36941955f
Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
71 |
jumpOverBlock: blockNum to: seqNum |
0dd36941955f
Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
72 |
|
0dd36941955f
Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
73 |
self doPending. |
0dd36941955f
Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
74 |
gen jumpOverBlock: seqNum. |
0dd36941955f
Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
75 |
! |
0dd36941955f
Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
76 |
|
0dd36941955f
Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
77 |
label: seqNum |
0dd36941955f
Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
78 |
|
0dd36941955f
Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
79 |
pending := OrderedCollection new. |
0dd36941955f
Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
80 |
gen label: seqNum. |
0dd36941955f
Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
81 |
|
0dd36941955f
Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
82 |
"Modified: / 11-06-2008 / 10:13:28 / Jan Vrany <vranyj1@fel.cvut.cz>" |
0dd36941955f
Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
83 |
! |
0dd36941955f
Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
84 |
|
6
49a61123c743
A new IRLine pseudoinstruction added to include debugging info into the bytecode.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
5
diff
changeset
|
85 |
line: line |
49a61123c743
A new IRLine pseudoinstruction added to include debugging info into the bytecode.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
5
diff
changeset
|
86 |
|
49a61123c743
A new IRLine pseudoinstruction added to include debugging info into the bytecode.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
5
diff
changeset
|
87 |
self doPending. |
49a61123c743
A new IRLine pseudoinstruction added to include debugging info into the bytecode.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
5
diff
changeset
|
88 |
gen line: line |
49a61123c743
A new IRLine pseudoinstruction added to include debugging info into the bytecode.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
5
diff
changeset
|
89 |
|
49a61123c743
A new IRLine pseudoinstruction added to include debugging info into the bytecode.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
5
diff
changeset
|
90 |
"Created: / 02-12-2008 / 09:01:47 / Jan Vrany <vranyj1@fel.cvut.cz>" |
49a61123c743
A new IRLine pseudoinstruction added to include debugging info into the bytecode.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
5
diff
changeset
|
91 |
! |
49a61123c743
A new IRLine pseudoinstruction added to include debugging info into the bytecode.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
5
diff
changeset
|
92 |
|
1
0dd36941955f
Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
93 |
popTop |
0dd36941955f
Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
94 |
|
0dd36941955f
Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
95 |
"if last was storeTemp, storeInstVar storeIntoLiteralVariable then convert to storePopTemp, storePopInstVar storePopIntoLiteralVariable" |
0dd36941955f
Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
96 |
#storeTemp: == self pendingSelector ifTrue: [ |
0dd36941955f
Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
97 |
^ self pendingSelector: #storePopTemp:]. |
0dd36941955f
Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
98 |
#storeInstVar: == self pendingSelector ifTrue: [ |
0dd36941955f
Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
99 |
^ self pendingSelector: #storePopInstVar:]. |
0dd36941955f
Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
100 |
#storeIntoLiteralVariable: == self pendingSelector ifTrue:[ |
0dd36941955f
Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
101 |
^self pendingSelector: #storePopIntoLiteralVariable:]. |
0dd36941955f
Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
102 |
"otherwise do normal pop" |
0dd36941955f
Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
103 |
self doPending. |
0dd36941955f
Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
104 |
gen popTop. |
0dd36941955f
Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
105 |
! |
0dd36941955f
Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
106 |
|
10
0fd549e0c784
First simple block works. See IRBuilderTest>>testBlock_blockTempArg.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
9
diff
changeset
|
107 |
pushBlock: irClosure |
1
0dd36941955f
Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
108 |
|
16
f325defc9c7e
Invalid intruction ordering bug fixed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
11
diff
changeset
|
109 |
self doPending. |
10
0fd549e0c784
First simple block works. See IRBuilderTest>>testBlock_blockTempArg.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
9
diff
changeset
|
110 |
gen makeBlock: irClosure |
9
04518c7fb91c
Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
6
diff
changeset
|
111 |
|
04518c7fb91c
Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
6
diff
changeset
|
112 |
" |
2
6e1de7f85d59
Minor fixes. All tests passes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1
diff
changeset
|
113 |
| meth block | |
6e1de7f85d59
Minor fixes. All tests passes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1
diff
changeset
|
114 |
meth := irMethod compiledMethodWith: trailerBytes. |
6e1de7f85d59
Minor fixes. All tests passes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1
diff
changeset
|
115 |
meth isBlockMethod: true. |
6e1de7f85d59
Minor fixes. All tests passes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1
diff
changeset
|
116 |
block := meth createBlock: nil. |
6e1de7f85d59
Minor fixes. All tests passes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1
diff
changeset
|
117 |
self addPending: (Message selector: #pushLiteral: argument: block) |
9
04518c7fb91c
Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
6
diff
changeset
|
118 |
" |
2
6e1de7f85d59
Minor fixes. All tests passes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1
diff
changeset
|
119 |
|
16
f325defc9c7e
Invalid intruction ordering bug fixed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
11
diff
changeset
|
120 |
"Modified: / 11-05-2009 / 22:13:39 / Jan Vrany <vranyj1@fel.cvut.cz>" |
1
0dd36941955f
Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
121 |
! |
0dd36941955f
Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
122 |
|
0dd36941955f
Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
123 |
pushDup |
0dd36941955f
Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
124 |
|
0dd36941955f
Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
125 |
self doPending. |
0dd36941955f
Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
126 |
gen pushDup. |
0dd36941955f
Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
127 |
! |
0dd36941955f
Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
128 |
|
0dd36941955f
Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
129 |
pushInstVar: index |
0dd36941955f
Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
130 |
|
0dd36941955f
Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
131 |
"self doPending. |
0dd36941955f
Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
132 |
gen pushInstVar: index." |
0dd36941955f
Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
133 |
self addPending: (Message selector: #pushInstVar: argument: index) |
0dd36941955f
Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
134 |
! |
0dd36941955f
Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
135 |
|
0dd36941955f
Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
136 |
pushLiteral: object |
0dd36941955f
Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
137 |
|
0dd36941955f
Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
138 |
self addPending: (Message selector: #pushLiteral: argument: object) |
0dd36941955f
Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
139 |
! |
0dd36941955f
Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
140 |
|
0dd36941955f
Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
141 |
pushLiteralVariable: object |
0dd36941955f
Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
142 |
|
0dd36941955f
Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
143 |
self addPending: (Message selector: #pushLiteralVariable: argument: object) |
0dd36941955f
Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
144 |
! |
0dd36941955f
Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
145 |
|
9
04518c7fb91c
Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
6
diff
changeset
|
146 |
pushTemp: index kind: kind level: level |
1
0dd36941955f
Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
147 |
|
9
04518c7fb91c
Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
6
diff
changeset
|
148 |
index = 0 ifTrue: [^ self addPending: (Message selector: #pushReceiver)]. |
1
0dd36941955f
Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
149 |
|
9
04518c7fb91c
Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
6
diff
changeset
|
150 |
(self pendingMatches: (Array with: |
04518c7fb91c
Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
6
diff
changeset
|
151 |
[:m | m selector == #storePopTemp: and: [m argument = index]]) |
04518c7fb91c
Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
6
diff
changeset
|
152 |
) ifTrue: [^ self pendingSelector: #storeTemp:]. |
04518c7fb91c
Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
6
diff
changeset
|
153 |
|
04518c7fb91c
Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
6
diff
changeset
|
154 |
self doPending. |
1
0dd36941955f
Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
155 |
|
9
04518c7fb91c
Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
6
diff
changeset
|
156 |
index = -2 ifTrue: [^ gen pushThisContext]. |
04518c7fb91c
Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
6
diff
changeset
|
157 |
index = -1 ifTrue: [ |
04518c7fb91c
Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
6
diff
changeset
|
158 |
self halt:'Not supported' |
04518c7fb91c
Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
6
diff
changeset
|
159 |
" |
04518c7fb91c
Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
6
diff
changeset
|
160 |
^ gen pushThisContext; |
04518c7fb91c
Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
6
diff
changeset
|
161 |
pushLiteral: MethodContext myEnvFieldIndex; |
04518c7fb91c
Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
6
diff
changeset
|
162 |
send: #privGetInstVar:"]. |
1
0dd36941955f
Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
163 |
|
9
04518c7fb91c
Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
6
diff
changeset
|
164 |
"Bad bad bad!! Type switch" |
04518c7fb91c
Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
6
diff
changeset
|
165 |
kind == #MArg ifTrue:[^gen pushMethodArg: index]. |
04518c7fb91c
Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
6
diff
changeset
|
166 |
kind == #MVar ifTrue:[^gen pushMethodVar: index]. |
10
0fd549e0c784
First simple block works. See IRBuilderTest>>testBlock_blockTempArg.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
9
diff
changeset
|
167 |
kind == #BArg ifTrue:[^gen pushBlockArg: index]. |
0fd549e0c784
First simple block works. See IRBuilderTest>>testBlock_blockTempArg.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
9
diff
changeset
|
168 |
kind == #BVar ifTrue:[^gen pushBlockVar: index]. |
1
0dd36941955f
Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
169 |
|
37 | 170 |
self halt:'Should never be reached'. |
9
04518c7fb91c
Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
6
diff
changeset
|
171 |
|
04518c7fb91c
Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
6
diff
changeset
|
172 |
"Created: / 30-03-2009 / 14:06:28 / Jan Vrany <vranyj1@fel.cvut.cz>" |
10
0fd549e0c784
First simple block works. See IRBuilderTest>>testBlock_blockTempArg.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
9
diff
changeset
|
173 |
"Modified: / 30-03-2009 / 19:02:32 / Jan Vrany <vranyj1@fel.cvut.cz>" |
1
0dd36941955f
Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
174 |
! |
0dd36941955f
Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
175 |
|
0dd36941955f
Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
176 |
remoteReturn |
0dd36941955f
Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
177 |
|
0dd36941955f
Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
178 |
self doPending. |
0dd36941955f
Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
179 |
gen remoteReturn. |
0dd36941955f
Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
180 |
! |
0dd36941955f
Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
181 |
|
0dd36941955f
Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
182 |
returnTop |
0dd36941955f
Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
183 |
|
0dd36941955f
Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
184 |
#pushReceiver == self pendingSelector ifTrue: [ |
0dd36941955f
Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
185 |
self pendingSelector: #returnReceiver. |
0dd36941955f
Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
186 |
^ self doPending |
0dd36941955f
Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
187 |
]. |
0dd36941955f
Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
188 |
#pushLiteral: == self pendingSelector ifTrue: [ |
0dd36941955f
Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
189 |
self pendingSelector: #returnConstant:. |
0dd36941955f
Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
190 |
^ self doPending |
0dd36941955f
Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
191 |
]. |
0dd36941955f
Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
192 |
#pushInstVar: == self pendingSelector ifTrue: [ |
0dd36941955f
Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
193 |
self pendingSelector: #returnInstVar:. |
0dd36941955f
Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
194 |
^ self doPending |
0dd36941955f
Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
195 |
]. |
0dd36941955f
Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
196 |
self doPending. |
0dd36941955f
Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
197 |
gen returnTop. |
0dd36941955f
Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
198 |
! |
0dd36941955f
Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
199 |
|
5
b94aea1d3710
Added method IRBuilder>>#send:numArgs and IRBuilder>>#send:numArgs:toSuperOf:.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3
diff
changeset
|
200 |
send: selector numArgs: numArgs |
1
0dd36941955f
Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
201 |
|
5
b94aea1d3710
Added method IRBuilder>>#send:numArgs and IRBuilder>>#send:numArgs:toSuperOf:.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3
diff
changeset
|
202 |
"If get/set inst var, access it directly" |
b94aea1d3710
Added method IRBuilder>>#send:numArgs and IRBuilder>>#send:numArgs:toSuperOf:.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3
diff
changeset
|
203 |
| index | |
b94aea1d3710
Added method IRBuilder>>#send:numArgs and IRBuilder>>#send:numArgs:toSuperOf:.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3
diff
changeset
|
204 |
|
b94aea1d3710
Added method IRBuilder>>#send:numArgs and IRBuilder>>#send:numArgs:toSuperOf:.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3
diff
changeset
|
205 |
((#(privGetInstVar: #privStoreIn:instVar:) identityIncludes: selector) and: |
b94aea1d3710
Added method IRBuilder>>#send:numArgs and IRBuilder>>#send:numArgs:toSuperOf:.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3
diff
changeset
|
206 |
[self pendingMatches: (Array |
b94aea1d3710
Added method IRBuilder>>#send:numArgs and IRBuilder>>#send:numArgs:toSuperOf:.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3
diff
changeset
|
207 |
with:[:m | m selector == #pushReceiver] |
b94aea1d3710
Added method IRBuilder>>#send:numArgs and IRBuilder>>#send:numArgs:toSuperOf:.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3
diff
changeset
|
208 |
with:[:m | m selector == #pushLiteral: and: [m argument isInteger]])] |
b94aea1d3710
Added method IRBuilder>>#send:numArgs and IRBuilder>>#send:numArgs:toSuperOf:.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3
diff
changeset
|
209 |
) ifTrue: [ |
b94aea1d3710
Added method IRBuilder>>#send:numArgs and IRBuilder>>#send:numArgs:toSuperOf:.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3
diff
changeset
|
210 |
index := self popPending argument. |
b94aea1d3710
Added method IRBuilder>>#send:numArgs and IRBuilder>>#send:numArgs:toSuperOf:.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3
diff
changeset
|
211 |
self popPending. "pop pushReceiver" |
b94aea1d3710
Added method IRBuilder>>#send:numArgs and IRBuilder>>#send:numArgs:toSuperOf:.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3
diff
changeset
|
212 |
self addPending: (Message |
b94aea1d3710
Added method IRBuilder>>#send:numArgs and IRBuilder>>#send:numArgs:toSuperOf:.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3
diff
changeset
|
213 |
selector: (selector == #privGetInstVar: |
b94aea1d3710
Added method IRBuilder>>#send:numArgs and IRBuilder>>#send:numArgs:toSuperOf:.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3
diff
changeset
|
214 |
ifTrue: [#pushInstVar:] ifFalse: [#storeInstVar:]) |
b94aea1d3710
Added method IRBuilder>>#send:numArgs and IRBuilder>>#send:numArgs:toSuperOf:.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3
diff
changeset
|
215 |
argument: index). |
b94aea1d3710
Added method IRBuilder>>#send:numArgs and IRBuilder>>#send:numArgs:toSuperOf:.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3
diff
changeset
|
216 |
(self pendingMatches: (Array |
b94aea1d3710
Added method IRBuilder>>#send:numArgs and IRBuilder>>#send:numArgs:toSuperOf:.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3
diff
changeset
|
217 |
with:[:m | m selector == #storePopInstVar: and: [m argument = index]] |
b94aea1d3710
Added method IRBuilder>>#send:numArgs and IRBuilder>>#send:numArgs:toSuperOf:.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3
diff
changeset
|
218 |
with:[:m | m selector == #pushInstVar: and: [m argument = index]]) |
b94aea1d3710
Added method IRBuilder>>#send:numArgs and IRBuilder>>#send:numArgs:toSuperOf:.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3
diff
changeset
|
219 |
) ifTrue: [ |
b94aea1d3710
Added method IRBuilder>>#send:numArgs and IRBuilder>>#send:numArgs:toSuperOf:.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3
diff
changeset
|
220 |
self popPending. |
b94aea1d3710
Added method IRBuilder>>#send:numArgs and IRBuilder>>#send:numArgs:toSuperOf:.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3
diff
changeset
|
221 |
self pendingSelector: #storeInstVar:. |
b94aea1d3710
Added method IRBuilder>>#send:numArgs and IRBuilder>>#send:numArgs:toSuperOf:.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3
diff
changeset
|
222 |
]. |
b94aea1d3710
Added method IRBuilder>>#send:numArgs and IRBuilder>>#send:numArgs:toSuperOf:.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3
diff
changeset
|
223 |
^ self |
b94aea1d3710
Added method IRBuilder>>#send:numArgs and IRBuilder>>#send:numArgs:toSuperOf:.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3
diff
changeset
|
224 |
]. |
b94aea1d3710
Added method IRBuilder>>#send:numArgs and IRBuilder>>#send:numArgs:toSuperOf:.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3
diff
changeset
|
225 |
"otherwise do normal send" |
b94aea1d3710
Added method IRBuilder>>#send:numArgs and IRBuilder>>#send:numArgs:toSuperOf:.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3
diff
changeset
|
226 |
self doPending. |
b94aea1d3710
Added method IRBuilder>>#send:numArgs and IRBuilder>>#send:numArgs:toSuperOf:.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3
diff
changeset
|
227 |
gen send: selector numArgs: numArgs |
b94aea1d3710
Added method IRBuilder>>#send:numArgs and IRBuilder>>#send:numArgs:toSuperOf:.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3
diff
changeset
|
228 |
|
b94aea1d3710
Added method IRBuilder>>#send:numArgs and IRBuilder>>#send:numArgs:toSuperOf:.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3
diff
changeset
|
229 |
"Created: / 01-12-2008 / 19:44:32 / Jan Vrany <vranyj1@fel.cvut.cz>" |
1
0dd36941955f
Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
230 |
! |
0dd36941955f
Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
231 |
|
5
b94aea1d3710
Added method IRBuilder>>#send:numArgs and IRBuilder>>#send:numArgs:toSuperOf:.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3
diff
changeset
|
232 |
send: selector numArgs: numArgs toSuperOf: behavior |
1
0dd36941955f
Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
233 |
|
5
b94aea1d3710
Added method IRBuilder>>#send:numArgs and IRBuilder>>#send:numArgs:toSuperOf:.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3
diff
changeset
|
234 |
self doPending. |
b94aea1d3710
Added method IRBuilder>>#send:numArgs and IRBuilder>>#send:numArgs:toSuperOf:.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3
diff
changeset
|
235 |
gen send: selector numArgs: numArgs toSuperOf: behavior. |
b94aea1d3710
Added method IRBuilder>>#send:numArgs and IRBuilder>>#send:numArgs:toSuperOf:.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3
diff
changeset
|
236 |
|
b94aea1d3710
Added method IRBuilder>>#send:numArgs and IRBuilder>>#send:numArgs:toSuperOf:.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3
diff
changeset
|
237 |
"Created: / 01-12-2008 / 19:46:42 / Jan Vrany <vranyj1@fel.cvut.cz>" |
1
0dd36941955f
Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
238 |
! |
0dd36941955f
Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
239 |
|
0dd36941955f
Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
240 |
storeInstVar: index |
0dd36941955f
Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
241 |
"self doPending. |
0dd36941955f
Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
242 |
gen storeInstVar: index" |
0dd36941955f
Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
243 |
self addPending: (Message selector: #storeInstVar: argument: index) |
0dd36941955f
Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
244 |
! |
0dd36941955f
Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
245 |
|
0dd36941955f
Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
246 |
storeIntoLiteralVariable: assoc |
0dd36941955f
Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
247 |
|
0dd36941955f
Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
248 |
"self doPending. |
0dd36941955f
Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
249 |
gen storeIntoLiteralVariable: assoc." |
0dd36941955f
Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
250 |
|
0dd36941955f
Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
251 |
self addPending: (Message selector: #storeIntoLiteralVariable: argument: assoc) |
0dd36941955f
Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
252 |
! |
0dd36941955f
Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
253 |
|
9
04518c7fb91c
Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
6
diff
changeset
|
254 |
storeTemp: index kind: kind level: level |
1
0dd36941955f
Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
255 |
|
9
04518c7fb91c
Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
6
diff
changeset
|
256 |
index = -1 "thisEnv" ifTrue: [ |
04518c7fb91c
Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
6
diff
changeset
|
257 |
self halt:'Not supported' |
04518c7fb91c
Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
6
diff
changeset
|
258 |
" |
04518c7fb91c
Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
6
diff
changeset
|
259 |
self doPending. |
04518c7fb91c
Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
6
diff
changeset
|
260 |
^ gen pushThisContext; |
04518c7fb91c
Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
6
diff
changeset
|
261 |
pushLiteral: MethodContext myEnvFieldIndex; |
04518c7fb91c
Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
6
diff
changeset
|
262 |
send: #privStoreIn:instVar:"]. |
1
0dd36941955f
Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
263 |
|
9
04518c7fb91c
Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
6
diff
changeset
|
264 |
kind == #MArg ifTrue:[^self error:'Cannot store to method argument!!']. |
04518c7fb91c
Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
6
diff
changeset
|
265 |
kind == #MVar ifTrue:[^self addPending: (Message selector: #storeMethodVar: argument: index)]. |
10
0fd549e0c784
First simple block works. See IRBuilderTest>>testBlock_blockTempArg.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
9
diff
changeset
|
266 |
kind == #BArg ifTrue:[^self addPending: (Message selector: #storeBlockArg: argument: index)]. |
0fd549e0c784
First simple block works. See IRBuilderTest>>testBlock_blockTempArg.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
9
diff
changeset
|
267 |
kind == #BVar ifTrue:[^self addPending: (Message selector: #storeBlockVar: argument: index)]. |
9
04518c7fb91c
Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
6
diff
changeset
|
268 |
|
04518c7fb91c
Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
6
diff
changeset
|
269 |
"Created: / 30-03-2009 / 14:07:04 / Jan Vrany <vranyj1@fel.cvut.cz>" |
10
0fd549e0c784
First simple block works. See IRBuilderTest>>testBlock_blockTempArg.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
9
diff
changeset
|
270 |
"Modified: / 30-03-2009 / 19:03:21 / Jan Vrany <vranyj1@fel.cvut.cz>" |
1
0dd36941955f
Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
271 |
! ! |
0dd36941955f
Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
272 |
|
0dd36941955f
Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
273 |
!IRTranslator methodsFor:'interpret'! |
0dd36941955f
Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
274 |
|
0dd36941955f
Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
275 |
interpret: ir |
0dd36941955f
Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
276 |
|
2
6e1de7f85d59
Minor fixes. All tests passes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1
diff
changeset
|
277 |
ir optimize. |
6e1de7f85d59
Minor fixes. All tests passes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1
diff
changeset
|
278 |
gen primitiveNode: ir primitiveNode. |
6e1de7f85d59
Minor fixes. All tests passes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1
diff
changeset
|
279 |
gen numArgs: ir numArgs. |
6e1de7f85d59
Minor fixes. All tests passes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1
diff
changeset
|
280 |
gen properties: ir properties. |
6e1de7f85d59
Minor fixes. All tests passes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1
diff
changeset
|
281 |
ir additionalLiterals do: [:lit | gen addLiteral: lit]. |
6e1de7f85d59
Minor fixes. All tests passes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1
diff
changeset
|
282 |
super interpret: ir. |
1
0dd36941955f
Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
283 |
! |
0dd36941955f
Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
284 |
|
0dd36941955f
Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
285 |
interpretAll: irSequences |
0dd36941955f
Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
286 |
|
0dd36941955f
Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
287 |
irSequences withIndexDo: [:seq :i | seq orderNumber: i]. |
0dd36941955f
Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
288 |
super interpretAll: irSequences. |
0dd36941955f
Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
289 |
! |
0dd36941955f
Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
290 |
|
0dd36941955f
Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
291 |
interpretInstruction: irInstruction |
0dd36941955f
Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
292 |
|
0dd36941955f
Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
293 |
currentInstr := irInstruction. |
0dd36941955f
Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
294 |
super interpretInstruction: irInstruction. |
0dd36941955f
Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
295 |
|
0dd36941955f
Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
296 |
"Modified: / 11-06-2008 / 09:20:30 / Jan Vrany <vranyj1@fel.cvut.cz>" |
0dd36941955f
Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
297 |
! ! |
0dd36941955f
Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
298 |
|
0dd36941955f
Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
299 |
!IRTranslator methodsFor:'priv pending'! |
0dd36941955f
Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
300 |
|
0dd36941955f
Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
301 |
addPending: message |
0dd36941955f
Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
302 |
|
0dd36941955f
Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
303 |
pending addLast: currentInstr -> message |
0dd36941955f
Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
304 |
! |
0dd36941955f
Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
305 |
|
0dd36941955f
Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
306 |
doPending |
9
04518c7fb91c
Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
6
diff
changeset
|
307 |
"execute pending instructions" |
1
0dd36941955f
Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
308 |
|
9
04518c7fb91c
Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
6
diff
changeset
|
309 |
| assoc | |
04518c7fb91c
Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
6
diff
changeset
|
310 |
[pending isEmpty] whileFalse: [ |
04518c7fb91c
Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
6
diff
changeset
|
311 |
assoc := pending removeFirst. |
04518c7fb91c
Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
6
diff
changeset
|
312 |
gen mapBytesTo: assoc key "instr". |
04518c7fb91c
Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
6
diff
changeset
|
313 |
assoc value "message" sendTo: gen. |
04518c7fb91c
Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
6
diff
changeset
|
314 |
]. |
04518c7fb91c
Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
6
diff
changeset
|
315 |
gen mapBytesTo: currentInstr. |
04518c7fb91c
Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
6
diff
changeset
|
316 |
|
04518c7fb91c
Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
6
diff
changeset
|
317 |
"Modified: / 28-03-2009 / 20:33:26 / Jan Vrany <vranyj1@fel.cvut.cz>" |
1
0dd36941955f
Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
318 |
! |
0dd36941955f
Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
319 |
|
0dd36941955f
Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
320 |
pendingMatches: blocks |
0dd36941955f
Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
321 |
"Return true if each message at end of pending list satisfies its corresponding block. The number of elements tested equals the number of blocks. If not enough elements return false" |
0dd36941955f
Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
322 |
|
0dd36941955f
Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
323 |
| messages i | |
0dd36941955f
Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
324 |
messages _ pending collect: [:assoc | assoc value]. |
0dd36941955f
Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
325 |
blocks size > messages size ifTrue: [^ false]. |
0dd36941955f
Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
326 |
i _ messages size - blocks size. |
0dd36941955f
Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
327 |
blocks do: [:b | |
0dd36941955f
Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
328 |
(b value: (messages at: (i _ i + 1))) ifFalse: [^ false]. |
0dd36941955f
Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
329 |
]. |
0dd36941955f
Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
330 |
^ true |
0dd36941955f
Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
331 |
! |
0dd36941955f
Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
332 |
|
0dd36941955f
Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
333 |
pendingSelector |
0dd36941955f
Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
334 |
|
0dd36941955f
Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
335 |
pending isEmpty ifTrue: [^ nil]. |
0dd36941955f
Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
336 |
^ pending last value "message" selector |
0dd36941955f
Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
337 |
! |
0dd36941955f
Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
338 |
|
0dd36941955f
Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
339 |
pendingSelector: selector |
0dd36941955f
Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
340 |
|
0dd36941955f
Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
341 |
pending last value "message" setSelector: selector |
0dd36941955f
Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
342 |
! |
0dd36941955f
Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
343 |
|
0dd36941955f
Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
344 |
popPending |
0dd36941955f
Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
345 |
|
0dd36941955f
Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
346 |
^ pending removeLast value "message" |
0dd36941955f
Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
347 |
! ! |
0dd36941955f
Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
348 |
|
0dd36941955f
Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
349 |
!IRTranslator methodsFor:'results'! |
0dd36941955f
Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
350 |
|
3
c9845c180bd4
Fixes IRBytecodeGenerator >> #pushLiteral and IRBuilder >> #jumpAheadTo:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2
diff
changeset
|
351 |
bytecodes |
c9845c180bd4
Fixes IRBytecodeGenerator >> #pushLiteral and IRBuilder >> #jumpAheadTo:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2
diff
changeset
|
352 |
|
c9845c180bd4
Fixes IRBytecodeGenerator >> #pushLiteral and IRBuilder >> #jumpAheadTo:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2
diff
changeset
|
353 |
^gen bytecodes |
c9845c180bd4
Fixes IRBytecodeGenerator >> #pushLiteral and IRBuilder >> #jumpAheadTo:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2
diff
changeset
|
354 |
|
c9845c180bd4
Fixes IRBytecodeGenerator >> #pushLiteral and IRBuilder >> #jumpAheadTo:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2
diff
changeset
|
355 |
"Created: / 03-11-2008 / 09:23:01 / Jan Vrany <vranyj1@fel.cvut.cz>" |
c9845c180bd4
Fixes IRBytecodeGenerator >> #pushLiteral and IRBuilder >> #jumpAheadTo:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2
diff
changeset
|
356 |
! |
c9845c180bd4
Fixes IRBytecodeGenerator >> #pushLiteral and IRBuilder >> #jumpAheadTo:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2
diff
changeset
|
357 |
|
9
04518c7fb91c
Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
6
diff
changeset
|
358 |
compiledCodeUsing:aCompiledMethodClass |
04518c7fb91c
Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
6
diff
changeset
|
359 |
^ gen compiledCodeUsing:aCompiledMethodClass |
1
0dd36941955f
Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
360 |
|
9
04518c7fb91c
Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
6
diff
changeset
|
361 |
"Modified: / 17-09-2008 / 12:18:43 / Jan Vrany <vranyj1@fel.cvut.cz>" |
04518c7fb91c
Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
6
diff
changeset
|
362 |
! |
04518c7fb91c
Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
6
diff
changeset
|
363 |
|
3
c9845c180bd4
Fixes IRBytecodeGenerator >> #pushLiteral and IRBuilder >> #jumpAheadTo:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2
diff
changeset
|
364 |
literals |
2
6e1de7f85d59
Minor fixes. All tests passes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1
diff
changeset
|
365 |
|
3
c9845c180bd4
Fixes IRBytecodeGenerator >> #pushLiteral and IRBuilder >> #jumpAheadTo:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2
diff
changeset
|
366 |
^gen literals |
2
6e1de7f85d59
Minor fixes. All tests passes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1
diff
changeset
|
367 |
|
3
c9845c180bd4
Fixes IRBytecodeGenerator >> #pushLiteral and IRBuilder >> #jumpAheadTo:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2
diff
changeset
|
368 |
"Created: / 03-11-2008 / 09:23:08 / Jan Vrany <vranyj1@fel.cvut.cz>" |
1
0dd36941955f
Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
369 |
! ! |
0dd36941955f
Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
370 |
|
0dd36941955f
Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
371 |
!IRTranslator class methodsFor:'documentation'! |
0dd36941955f
Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
372 |
|
0dd36941955f
Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
373 |
version |
37 | 374 |
^ '$Id$' |
23
377bc46cad12
Moved to package cvut:stx/goodies/newcompiler to be in sync with eXept
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
16
diff
changeset
|
375 |
! |
377bc46cad12
Moved to package cvut:stx/goodies/newcompiler to be in sync with eXept
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
16
diff
changeset
|
376 |
|
377bc46cad12
Moved to package cvut:stx/goodies/newcompiler to be in sync with eXept
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
16
diff
changeset
|
377 |
version_CVS |
41
f3898a3b378d
Package renamed from cvut:stx/goodies/newcompiler to ctu:ircompiler
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
37
diff
changeset
|
378 |
^ 'Header: /cvs/stx/cvut/stx/goodies/newcompiler/IRTranslator.st,v 1.3 2009/10/08 12:04:47 fm Exp ' |
23
377bc46cad12
Moved to package cvut:stx/goodies/newcompiler to be in sync with eXept
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
16
diff
changeset
|
379 |
! |
377bc46cad12
Moved to package cvut:stx/goodies/newcompiler to be in sync with eXept
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
16
diff
changeset
|
380 |
|
377bc46cad12
Moved to package cvut:stx/goodies/newcompiler to be in sync with eXept
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
16
diff
changeset
|
381 |
version_SVN |
37 | 382 |
^ '$Id:: $' |
1
0dd36941955f
Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
383 |
! ! |