resin 0.3.1 → 0.4.0
Sign up to get free protection for your applications and to get access to all the features.
- data/amber/bin/amberc +10 -350
- data/amber/js/Benchfib.deploy.js +80 -89
- data/amber/js/Benchfib.js +80 -89
- data/amber/js/Canvas.deploy.js +558 -545
- data/amber/js/Canvas.js +563 -545
- data/amber/js/Compiler-AST.deploy.js +431 -243
- data/amber/js/Compiler-AST.js +487 -244
- data/amber/js/Compiler-Core.deploy.js +201 -1045
- data/amber/js/Compiler-Core.js +208 -1207
- data/amber/js/Compiler-Exceptions.deploy.js +37 -18
- data/amber/js/Compiler-Exceptions.js +42 -18
- data/amber/js/Compiler-IR.deploy.js +1071 -774
- data/amber/js/Compiler-IR.js +1194 -848
- data/amber/js/Compiler-Inlining.deploy.js +395 -373
- data/amber/js/Compiler-Inlining.js +395 -373
- data/amber/js/Compiler-Interpreter.deploy.js +1202 -0
- data/amber/js/Compiler-Interpreter.js +1631 -0
- data/amber/js/Compiler-Semantic.deploy.js +695 -600
- data/amber/js/Compiler-Semantic.js +721 -611
- data/amber/js/Compiler-Tests.deploy.js +699 -376
- data/amber/js/Compiler-Tests.js +834 -381
- data/amber/js/Compiler.deploy.js +8563 -1805
- data/amber/js/Compiler.js +11476 -2633
- data/amber/js/Examples.deploy.js +29 -29
- data/amber/js/Examples.js +29 -29
- data/amber/js/IDE.deploy.js +3292 -2649
- data/amber/js/IDE.js +3318 -2710
- data/amber/js/Importer-Exporter.deploy.js +393 -349
- data/amber/js/Importer-Exporter.js +398 -354
- data/amber/js/Kernel-Announcements.deploy.js +53 -44
- data/amber/js/Kernel-Announcements.js +55 -44
- data/amber/js/Kernel-Classes.deploy.js +566 -368
- data/amber/js/Kernel-Classes.js +660 -402
- data/amber/js/Kernel-Collections.deploy.js +1149 -1098
- data/amber/js/Kernel-Collections.js +1183 -1116
- data/amber/js/Kernel-Exceptions.deploy.js +173 -75
- data/amber/js/Kernel-Exceptions.js +215 -77
- data/amber/js/Kernel-Methods.deploy.js +530 -313
- data/amber/js/Kernel-Methods.js +632 -338
- data/amber/js/Kernel-Objects.deploy.js +1734 -1577
- data/amber/js/Kernel-Objects.js +1867 -1654
- data/amber/js/Kernel-Tests.deploy.js +1416 -973
- data/amber/js/Kernel-Tests.js +1495 -981
- data/amber/js/Kernel-Transcript.deploy.js +23 -24
- data/amber/js/Kernel-Transcript.js +25 -26
- data/amber/js/SUnit-Tests.deploy.js +402 -0
- data/amber/js/SUnit-Tests.js +518 -0
- data/amber/js/SUnit.deploy.js +535 -237
- data/amber/js/SUnit.js +634 -246
- data/amber/js/amber.js +90 -53
- data/amber/js/boot.js +441 -255
- data/amber/js/init.js +1 -3
- data/amber/js/lib/CodeMirror/codemirror.css +3 -0
- data/amber/js/lib/CodeMirror/codemirror.js +104 -55
- data/amber/js/lib/peg-0.7.0.min.js +9 -0
- data/amber/js/parser.js +1504 -802
- data/amber/js/parser.pegjs +170 -165
- data/amber/st/Canvas.st +6 -0
- data/amber/st/Compiler-AST.st +54 -3
- data/amber/st/Compiler-Core.st +6 -551
- data/amber/st/Compiler-Exceptions.st +4 -0
- data/amber/st/Compiler-IR.st +205 -87
- data/amber/st/Compiler-Interpreter.st +597 -0
- data/amber/st/Compiler-Semantic.st +46 -21
- data/amber/st/Compiler-Tests.st +254 -7
- data/amber/st/Compiler.st +3172 -1541
- data/amber/st/IDE.st +57 -93
- data/amber/st/Importer-Exporter.st +4 -7
- data/amber/st/Kernel-Announcements.st +8 -0
- data/amber/st/Kernel-Classes.st +149 -40
- data/amber/st/Kernel-Collections.st +43 -32
- data/amber/st/Kernel-Exceptions.st +70 -1
- data/amber/st/Kernel-Methods.st +165 -27
- data/amber/st/Kernel-Objects.st +215 -140
- data/amber/st/Kernel-Tests.st +195 -10
- data/amber/st/Kernel-Transcript.st +1 -3
- data/amber/st/SUnit-Tests.st +186 -0
- data/amber/st/SUnit.st +186 -14
- data/bin/resin +6 -0
- data/lib/resin/cli.rb +19 -0
- metadata +41 -25
- data/amber/js/lib/peg-0.6.2.min.js +0 -2
- data/bin/resin-compile +0 -6
- data/bin/runresin +0 -12
data/amber/js/Compiler-IR.js
CHANGED
@@ -8,32 +8,75 @@ selector: "alias:",
|
|
8
8
|
category: 'visiting',
|
9
9
|
fn: function (aNode){
|
10
10
|
var self=this;
|
11
|
-
var $1,$2,$3,$4,$5,$6;
|
12
11
|
var variable;
|
13
|
-
|
12
|
+
return smalltalk.withContext(function($ctx1) {
|
13
|
+
$1=_st(aNode)._isImmutable();
|
14
14
|
if(smalltalk.assert($1)){
|
15
|
-
$2=
|
15
|
+
$2=_st(self)._visit_(aNode);
|
16
16
|
return $2;
|
17
17
|
};
|
18
|
-
$3=
|
19
|
-
|
20
|
-
$4=
|
18
|
+
$3=_st((smalltalk.IRVariable || IRVariable))._new();
|
19
|
+
_st($3)._variable_(_st(_st((smalltalk.AliasVar || AliasVar))._new())._name_(_st("$").__comma(_st(self)._nextAlias())));
|
20
|
+
$4=_st($3)._yourself();
|
21
21
|
variable=$4;
|
22
|
-
$5=
|
23
|
-
|
24
|
-
|
25
|
-
$6=
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
22
|
+
$5=_st((smalltalk.IRAssignment || IRAssignment))._new();
|
23
|
+
_st($5)._add_(variable);
|
24
|
+
_st($5)._add_(_st(self)._visit_(aNode));
|
25
|
+
$6=_st($5)._yourself();
|
26
|
+
_st(_st(self)._sequence())._add_($6);
|
27
|
+
_st(_st(_st(self)._method())._internalVariables())._add_(variable);
|
28
|
+
$7=variable;
|
29
|
+
return $7;
|
30
|
+
}, function($ctx1) {$ctx1.fill(self,"alias:",{aNode:aNode,variable:variable}, smalltalk.IRASTTranslator)})},
|
30
31
|
args: ["aNode"],
|
31
|
-
source: "alias: aNode\x0a\x09| variable |\x0a\x0a\x09aNode
|
32
|
-
messageSends: ["ifTrue:", "visit:", "
|
32
|
+
source: "alias: aNode\x0a\x09| variable |\x0a\x0a\x09aNode isImmutable ifTrue: [ ^ self visit: aNode ].\x0a\x0a\x09variable := IRVariable new \x0a\x09\x09variable: (AliasVar new name: '$', self nextAlias); \x0a\x09\x09yourself.\x0a\x0a\x09self sequence add: (IRAssignment new\x0a\x09\x09add: variable;\x0a\x09\x09add: (self visit: aNode);\x0a\x09\x09yourself).\x0a\x0a\x09self method internalVariables add: variable.\x0a\x0a\x09^ variable",
|
33
|
+
messageSends: ["ifTrue:", "visit:", "isImmutable", "variable:", "name:", ",", "nextAlias", "new", "yourself", "add:", "sequence", "internalVariables", "method"],
|
33
34
|
referencedClasses: ["AliasVar", "IRVariable", "IRAssignment"]
|
34
35
|
}),
|
35
36
|
smalltalk.IRASTTranslator);
|
36
37
|
|
38
|
+
smalltalk.addMethod(
|
39
|
+
"_aliasTemporally_",
|
40
|
+
smalltalk.method({
|
41
|
+
selector: "aliasTemporally:",
|
42
|
+
category: 'visiting',
|
43
|
+
fn: function (aCollection){
|
44
|
+
var self=this;
|
45
|
+
var threshold,result;
|
46
|
+
return smalltalk.withContext(function($ctx1) {
|
47
|
+
threshold=(0);
|
48
|
+
$1=aCollection;
|
49
|
+
$2=(function(each,i){
|
50
|
+
return smalltalk.withContext(function($ctx2) {
|
51
|
+
if(smalltalk.assert($3)){
|
52
|
+
threshold=i;
|
53
|
+
return threshold;
|
54
|
+
};
|
55
|
+
}, function($ctx2) {$ctx2.fillBlock({each:each,i:i},$ctx1)})});
|
56
|
+
_st($1)._withIndexDo_($2);
|
57
|
+
result=_st((smalltalk.OrderedCollection || OrderedCollection))._new();
|
58
|
+
$4=aCollection;
|
59
|
+
$5=(function(each,i){
|
60
|
+
return smalltalk.withContext(function($ctx2) {
|
61
|
+
$8=_st(i).__lt_eq(threshold);
|
62
|
+
if(smalltalk.assert($8)){
|
63
|
+
$7=_st(self)._alias_(each);
|
64
|
+
} else {
|
65
|
+
$7=_st(self)._visit_(each);
|
66
|
+
};
|
67
|
+
return _st($6)._add_($7);
|
68
|
+
}, function($ctx2) {$ctx2.fillBlock({each:each,i:i},$ctx1)})});
|
69
|
+
_st($4)._withIndexDo_($5);
|
70
|
+
$9=result;
|
71
|
+
return $9;
|
72
|
+
}, function($ctx1) {$ctx1.fill(self,"aliasTemporally:",{aCollection:aCollection,threshold:threshold,result:result}, smalltalk.IRASTTranslator)})},
|
73
|
+
args: ["aCollection"],
|
74
|
+
source: "aliasTemporally: aCollection\x0a\x09\x22https://github.com/NicolasPetton/amber/issues/296\x0a \x0a If a node is aliased, all preceding ones are aliased as well.\x0a The tree is iterated twice. First we get the aliasing dependency, \x0a then the aliasing itself is done\x22\x0a\x0a\x09| threshold result |\x0a threshold := 0.\x0a \x0a aCollection withIndexDo: [ :each :i |\x0a each subtreeNeedsAliasing\x0a\x09\x09 ifTrue: [ threshold := i ]].\x0a\x0a\x09result := OrderedCollection new.\x0a\x09aCollection withIndexDo: [ :each :i | \x0a\x09\x09result add: (i <= threshold\x0a\x09\x09\x09ifTrue: [ self alias: each ]\x0a\x09\x09\x09ifFalse: [ self visit: each ])].\x0a\x0a ^result",
|
75
|
+
messageSends: ["withIndexDo:", "ifTrue:", "subtreeNeedsAliasing", "new", "add:", "ifTrue:ifFalse:", "alias:", "visit:", "<="],
|
76
|
+
referencedClasses: ["OrderedCollection"]
|
77
|
+
}),
|
78
|
+
smalltalk.IRASTTranslator);
|
79
|
+
|
37
80
|
smalltalk.addMethod(
|
38
81
|
"_method",
|
39
82
|
smalltalk.method({
|
@@ -41,8 +84,10 @@ selector: "method",
|
|
41
84
|
category: 'accessing',
|
42
85
|
fn: function (){
|
43
86
|
var self=this;
|
44
|
-
return
|
45
|
-
|
87
|
+
return smalltalk.withContext(function($ctx1) {
|
88
|
+
$1=self["@method"];
|
89
|
+
return $1;
|
90
|
+
}, function($ctx1) {$ctx1.fill(self,"method",{}, smalltalk.IRASTTranslator)})},
|
46
91
|
args: [],
|
47
92
|
source: "method\x0a\x09^ method",
|
48
93
|
messageSends: [],
|
@@ -57,8 +102,8 @@ selector: "method:",
|
|
57
102
|
category: 'accessing',
|
58
103
|
fn: function (anIRMethod){
|
59
104
|
var self=this;
|
60
|
-
|
61
|
-
return self},
|
105
|
+
return smalltalk.withContext(function($ctx1) {
|
106
|
+
return self}, function($ctx1) {$ctx1.fill(self,"method:",{anIRMethod:anIRMethod}, smalltalk.IRASTTranslator)})},
|
62
107
|
args: ["anIRMethod"],
|
63
108
|
source: "method: anIRMethod\x0a\x09method := anIRMethod",
|
64
109
|
messageSends: [],
|
@@ -73,17 +118,18 @@ selector: "nextAlias",
|
|
73
118
|
category: 'accessing',
|
74
119
|
fn: function (){
|
75
120
|
var self=this;
|
76
|
-
|
77
|
-
|
121
|
+
return smalltalk.withContext(function($ctx1) {
|
122
|
+
$1=self["@nextAlias"];
|
123
|
+
if(($receiver = $1) == nil || $receiver == undefined){
|
78
124
|
self["@nextAlias"]=(0);
|
79
125
|
self["@nextAlias"];
|
80
126
|
} else {
|
81
|
-
|
127
|
+
$1;
|
82
128
|
};
|
83
|
-
self["@nextAlias"]=
|
84
|
-
$
|
85
|
-
return $
|
86
|
-
},
|
129
|
+
self["@nextAlias"]=_st(self["@nextAlias"]).__plus((1));
|
130
|
+
$2=_st(self["@nextAlias"])._asString();
|
131
|
+
return $2;
|
132
|
+
}, function($ctx1) {$ctx1.fill(self,"nextAlias",{}, smalltalk.IRASTTranslator)})},
|
87
133
|
args: [],
|
88
134
|
source: "nextAlias\x0a\x09nextAlias ifNil: [ nextAlias := 0 ].\x0a\x09nextAlias := nextAlias + 1.\x0a\x09^ nextAlias asString",
|
89
135
|
messageSends: ["ifNil:", "+", "asString"],
|
@@ -98,8 +144,10 @@ selector: "sequence",
|
|
98
144
|
category: 'accessing',
|
99
145
|
fn: function (){
|
100
146
|
var self=this;
|
101
|
-
return
|
102
|
-
|
147
|
+
return smalltalk.withContext(function($ctx1) {
|
148
|
+
$1=self["@sequence"];
|
149
|
+
return $1;
|
150
|
+
}, function($ctx1) {$ctx1.fill(self,"sequence",{}, smalltalk.IRASTTranslator)})},
|
103
151
|
args: [],
|
104
152
|
source: "sequence\x0a\x09^ sequence",
|
105
153
|
messageSends: [],
|
@@ -114,8 +162,8 @@ selector: "sequence:",
|
|
114
162
|
category: 'accessing',
|
115
163
|
fn: function (anIRSequence){
|
116
164
|
var self=this;
|
117
|
-
|
118
|
-
return self},
|
165
|
+
return smalltalk.withContext(function($ctx1) {
|
166
|
+
return self}, function($ctx1) {$ctx1.fill(self,"sequence:",{anIRSequence:anIRSequence}, smalltalk.IRASTTranslator)})},
|
119
167
|
args: ["anIRSequence"],
|
120
168
|
source: "sequence: anIRSequence\x0a\x09sequence := anIRSequence",
|
121
169
|
messageSends: [],
|
@@ -130,8 +178,10 @@ selector: "source",
|
|
130
178
|
category: 'accessing',
|
131
179
|
fn: function (){
|
132
180
|
var self=this;
|
133
|
-
return
|
134
|
-
|
181
|
+
return smalltalk.withContext(function($ctx1) {
|
182
|
+
$1=self["@source"];
|
183
|
+
return $1;
|
184
|
+
}, function($ctx1) {$ctx1.fill(self,"source",{}, smalltalk.IRASTTranslator)})},
|
135
185
|
args: [],
|
136
186
|
source: "source\x0a\x09^ source",
|
137
187
|
messageSends: [],
|
@@ -146,8 +196,8 @@ selector: "source:",
|
|
146
196
|
category: 'accessing',
|
147
197
|
fn: function (aString){
|
148
198
|
var self=this;
|
149
|
-
|
150
|
-
return self},
|
199
|
+
return smalltalk.withContext(function($ctx1) {
|
200
|
+
return self}, function($ctx1) {$ctx1.fill(self,"source:",{aString:aString}, smalltalk.IRASTTranslator)})},
|
151
201
|
args: ["aString"],
|
152
202
|
source: "source: aString\x0a\x09source := aString",
|
153
203
|
messageSends: [],
|
@@ -162,8 +212,10 @@ selector: "theClass",
|
|
162
212
|
category: 'accessing',
|
163
213
|
fn: function (){
|
164
214
|
var self=this;
|
165
|
-
return
|
166
|
-
|
215
|
+
return smalltalk.withContext(function($ctx1) {
|
216
|
+
$1=self["@theClass"];
|
217
|
+
return $1;
|
218
|
+
}, function($ctx1) {$ctx1.fill(self,"theClass",{}, smalltalk.IRASTTranslator)})},
|
167
219
|
args: [],
|
168
220
|
source: "theClass\x0a\x09^ theClass",
|
169
221
|
messageSends: [],
|
@@ -178,8 +230,8 @@ selector: "theClass:",
|
|
178
230
|
category: 'accessing',
|
179
231
|
fn: function (aClass){
|
180
232
|
var self=this;
|
181
|
-
|
182
|
-
return self},
|
233
|
+
return smalltalk.withContext(function($ctx1) {
|
234
|
+
return self}, function($ctx1) {$ctx1.fill(self,"theClass:",{aClass:aClass}, smalltalk.IRASTTranslator)})},
|
183
235
|
args: ["aClass"],
|
184
236
|
source: "theClass: aClass\x0a\x09theClass := aClass",
|
185
237
|
messageSends: [],
|
@@ -194,19 +246,18 @@ selector: "visitAssignmentNode:",
|
|
194
246
|
category: 'visiting',
|
195
247
|
fn: function (aNode){
|
196
248
|
var self=this;
|
197
|
-
var
|
198
|
-
|
199
|
-
|
200
|
-
|
201
|
-
|
202
|
-
|
203
|
-
$1
|
204
|
-
|
205
|
-
|
206
|
-
$
|
207
|
-
|
208
|
-
|
209
|
-
},
|
249
|
+
var left,right,assignment;
|
250
|
+
return smalltalk.withContext(function($ctx1) {
|
251
|
+
right=_st(self)._visit_(_st(aNode)._right());
|
252
|
+
left=_st(self)._visit_(_st(aNode)._left());
|
253
|
+
$1=_st((smalltalk.IRAssignment || IRAssignment))._new();
|
254
|
+
_st($1)._add_(left);
|
255
|
+
_st($1)._add_(right);
|
256
|
+
$2=_st($1)._yourself();
|
257
|
+
_st(_st(self)._sequence())._add_($2);
|
258
|
+
$3=left;
|
259
|
+
return $3;
|
260
|
+
}, function($ctx1) {$ctx1.fill(self,"visitAssignmentNode:",{aNode:aNode,left:left,right:right,assignment:assignment}, smalltalk.IRASTTranslator)})},
|
210
261
|
args: ["aNode"],
|
211
262
|
source: "visitAssignmentNode: aNode\x0a\x09| left right assignment |\x0a\x09right := self visit: aNode right.\x0a\x09left := self visit: aNode left.\x0a\x09self sequence add: (IRAssignment new \x0a\x09\x09add: left;\x0a\x09\x09add: right;\x0a\x09\x09yourself).\x0a\x09^ left",
|
212
263
|
messageSends: ["visit:", "right", "left", "add:", "new", "yourself", "sequence"],
|
@@ -221,26 +272,28 @@ selector: "visitBlockNode:",
|
|
221
272
|
category: 'visiting',
|
222
273
|
fn: function (aNode){
|
223
274
|
var self=this;
|
224
|
-
var $1,$2,$3,$4;
|
225
275
|
var closure;
|
226
|
-
|
227
|
-
|
228
|
-
|
229
|
-
|
276
|
+
return smalltalk.withContext(function($ctx1) {
|
277
|
+
$1=_st((smalltalk.IRClosure || IRClosure))._new();
|
278
|
+
_st($1)._arguments_(_st(aNode)._parameters());
|
279
|
+
_st($1)._scope_(_st(aNode)._scope());
|
280
|
+
$2=_st($1)._yourself();
|
230
281
|
closure=$2;
|
231
|
-
|
232
|
-
|
233
|
-
|
234
|
-
|
235
|
-
|
236
|
-
|
237
|
-
|
238
|
-
|
239
|
-
|
240
|
-
|
241
|
-
|
282
|
+
_st(_st(_st(aNode)._scope())._temps())._do_((function(each){
|
283
|
+
return smalltalk.withContext(function($ctx2) {
|
284
|
+
_st($3)._name_(_st(each)._name());
|
285
|
+
_st($3)._scope_(_st(aNode)._scope());
|
286
|
+
$4=_st($3)._yourself();
|
287
|
+
return _st(closure)._add_($4);
|
288
|
+
}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1)})}));
|
289
|
+
_st(_st(aNode)._nodes())._do_((function(each){
|
290
|
+
return smalltalk.withContext(function($ctx2) {
|
291
|
+
}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1)})}));
|
292
|
+
$5=closure;
|
293
|
+
return $5;
|
294
|
+
}, function($ctx1) {$ctx1.fill(self,"visitBlockNode:",{aNode:aNode,closure:closure}, smalltalk.IRASTTranslator)})},
|
242
295
|
args: ["aNode"],
|
243
|
-
source: "visitBlockNode: aNode\x0a\x09| closure |\x0a\x09closure := IRClosure new\x0a\x09\x09arguments: aNode parameters;\x0a\x09\x09scope: aNode scope;\x0a\x09\x09yourself.\x0a\x09aNode scope temps do: [ :each |\x0a\x09\x09closure add: (IRTempDeclaration new \x0a\x09\x09\x09name: each name;\x0a\x09\x09\x09yourself) ].\x0a\x09aNode nodes do: [ :each | closure add: (self visit: each) ].\x0a\x09^ closure",
|
296
|
+
source: "visitBlockNode: aNode\x0a\x09| closure |\x0a\x09closure := IRClosure new\x0a\x09\x09arguments: aNode parameters;\x0a\x09\x09scope: aNode scope;\x0a\x09\x09yourself.\x0a\x09aNode scope temps do: [ :each |\x0a\x09\x09closure add: (IRTempDeclaration new \x0a\x09\x09\x09name: each name;\x0a scope: aNode scope;\x0a\x09\x09\x09yourself) ].\x0a\x09aNode nodes do: [ :each | closure add: (self visit: each) ].\x0a\x09^ closure",
|
244
297
|
messageSends: ["arguments:", "parameters", "new", "scope:", "scope", "yourself", "do:", "add:", "name:", "name", "temps", "visit:", "nodes"],
|
245
298
|
referencedClasses: ["IRClosure", "IRTempDeclaration"]
|
246
299
|
}),
|
@@ -253,25 +306,30 @@ selector: "visitBlockSequenceNode:",
|
|
253
306
|
category: 'visiting',
|
254
307
|
fn: function (aNode){
|
255
308
|
var self=this;
|
256
|
-
|
257
|
-
$
|
258
|
-
|
259
|
-
|
260
|
-
return smalltalk.
|
261
|
-
|
262
|
-
|
263
|
-
|
264
|
-
|
309
|
+
return smalltalk.withContext(function($ctx1) {
|
310
|
+
$2=self;
|
311
|
+
$3=_st((smalltalk.IRBlockSequence || IRBlockSequence))._new();
|
312
|
+
$4=(function(){
|
313
|
+
return smalltalk.withContext(function($ctx2) {
|
314
|
+
$6=(function(){
|
315
|
+
return smalltalk.withContext(function($ctx3) {
|
316
|
+
return smalltalk.withContext(function($ctx4) {
|
317
|
+
}, function($ctx4) {$ctx4.fillBlock({each:each},$ctx1)})}));
|
318
|
+
$7=_st(_st(_st(aNode)._nodes())._last())._isReturnNode();
|
319
|
+
if(smalltalk.assert($7)){
|
320
|
+
return _st(_st(self)._sequence())._add_(_st(self)._visit_(_st(_st(aNode)._nodes())._last()));
|
265
321
|
} else {
|
266
|
-
$
|
267
|
-
|
268
|
-
$
|
269
|
-
return
|
322
|
+
$8=_st((smalltalk.IRBlockReturn || IRBlockReturn))._new();
|
323
|
+
_st($8)._add_(_st(self)._visit_(_st(_st(aNode)._nodes())._last()));
|
324
|
+
$9=_st($8)._yourself();
|
325
|
+
return _st(_st(self)._sequence())._add_($9);
|
270
326
|
};
|
271
|
-
})
|
272
|
-
|
327
|
+
}, function($ctx3) {$ctx3.fillBlock({},$ctx1)})});
|
328
|
+
return _st($5)._ifNotEmpty_($6);
|
329
|
+
}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})});
|
330
|
+
$1=_st($2)._withSequence_do_($3,$4);
|
273
331
|
return $1;
|
274
|
-
},
|
332
|
+
}, function($ctx1) {$ctx1.fill(self,"visitBlockSequenceNode:",{aNode:aNode}, smalltalk.IRASTTranslator)})},
|
275
333
|
args: ["aNode"],
|
276
334
|
source: "visitBlockSequenceNode: aNode\x0a\x09^ self\x0a\x09\x09withSequence: IRBlockSequence new\x0a\x09\x09do: [ \x0a\x09\x09\x09aNode nodes ifNotEmpty: [\x0a\x09\x09\x09\x09aNode nodes allButLast do: [ :each | \x0a\x09\x09\x09\x09\x09self sequence add: (self visit: each) ].\x0a\x09\x09\x09\x09aNode nodes last isReturnNode \x0a\x09\x09\x09\x09\x09ifFalse: [ self sequence add: (IRBlockReturn new add: (self visit: aNode nodes last); yourself) ]\x0a\x09\x09\x09\x09\x09ifTrue: [ self sequence add: (self visit: aNode nodes last) ]]]",
|
277
335
|
messageSends: ["withSequence:do:", "new", "ifNotEmpty:", "do:", "add:", "visit:", "sequence", "allButLast", "nodes", "ifFalse:ifTrue:", "last", "yourself", "isReturnNode"],
|
@@ -286,25 +344,25 @@ selector: "visitCascadeNode:",
|
|
286
344
|
category: 'visiting',
|
287
345
|
fn: function (aNode){
|
288
346
|
var self=this;
|
289
|
-
var $1,$2;
|
290
347
|
var alias;
|
291
|
-
|
348
|
+
return smalltalk.withContext(function($ctx1) {
|
349
|
+
$1=_st(_st(aNode)._receiver())._isImmutable();
|
292
350
|
if(! smalltalk.assert($1)){
|
293
|
-
alias=
|
351
|
+
alias=_st(self)._alias_(_st(aNode)._receiver());
|
294
352
|
alias;
|
295
|
-
|
296
|
-
return smalltalk.
|
297
|
-
})
|
353
|
+
_st(_st(aNode)._nodes())._do_((function(each){
|
354
|
+
return smalltalk.withContext(function($ctx2) {
|
355
|
+
}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1)})}));
|
298
356
|
};
|
299
|
-
|
300
|
-
return smalltalk.
|
301
|
-
})
|
302
|
-
$2=
|
357
|
+
_st(_st(_st(aNode)._nodes())._allButLast())._do_((function(each){
|
358
|
+
return smalltalk.withContext(function($ctx2) {
|
359
|
+
}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1)})}));
|
360
|
+
$2=_st(self)._alias_(_st(_st(aNode)._nodes())._last());
|
303
361
|
return $2;
|
304
|
-
},
|
362
|
+
}, function($ctx1) {$ctx1.fill(self,"visitCascadeNode:",{aNode:aNode,alias:alias}, smalltalk.IRASTTranslator)})},
|
305
363
|
args: ["aNode"],
|
306
|
-
source: "visitCascadeNode: aNode\x0a\x09| alias |\x0a\x0a\x09aNode receiver
|
307
|
-
messageSends: ["ifFalse:", "alias:", "receiver", "do:", "receiver:", "binding:", "variable", "new", "nodes", "
|
364
|
+
source: "visitCascadeNode: aNode\x0a\x09| alias |\x0a\x0a\x09aNode receiver isImmutable ifFalse: [ \x0a\x09\x09alias := self alias: aNode receiver.\x0a\x09\x09aNode nodes do: [ :each |\x0a\x09\x09\x09each receiver: (VariableNode new binding: alias variable) ]].\x0a\x0a\x09aNode nodes allButLast do: [ :each |\x0a\x09\x09self sequence add: (self visit: each) ].\x0a\x0a\x09^ self alias: aNode nodes last",
|
365
|
+
messageSends: ["ifFalse:", "alias:", "receiver", "do:", "receiver:", "binding:", "variable", "new", "nodes", "isImmutable", "add:", "visit:", "sequence", "allButLast", "last"],
|
308
366
|
referencedClasses: ["VariableNode"]
|
309
367
|
}),
|
310
368
|
smalltalk.IRASTTranslator);
|
@@ -317,15 +375,17 @@ category: 'visiting',
|
|
317
375
|
fn: function (aNode){
|
318
376
|
var self=this;
|
319
377
|
var array;
|
320
|
-
|
321
|
-
|
322
|
-
|
323
|
-
|
324
|
-
|
325
|
-
|
378
|
+
return smalltalk.withContext(function($ctx1) {
|
379
|
+
array=_st((smalltalk.IRDynamicArray || IRDynamicArray))._new();
|
380
|
+
_st(_st(self)._aliasTemporally_(_st(aNode)._nodes()))._do_((function(each){
|
381
|
+
return smalltalk.withContext(function($ctx2) {
|
382
|
+
}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1)})}));
|
383
|
+
$1=array;
|
384
|
+
return $1;
|
385
|
+
}, function($ctx1) {$ctx1.fill(self,"visitDynamicArrayNode:",{aNode:aNode,array:array}, smalltalk.IRASTTranslator)})},
|
326
386
|
args: ["aNode"],
|
327
|
-
source: "visitDynamicArrayNode: aNode\x0a\x09| array |\x0a\x09array := IRDynamicArray new.\x0a\
|
328
|
-
messageSends: ["new", "do:", "add:", "
|
387
|
+
source: "visitDynamicArrayNode: aNode\x0a\x09| array |\x0a\x09array := IRDynamicArray new.\x0a\x09(self aliasTemporally: aNode nodes) do: [:each | array add: each].\x0a\x09^ array",
|
388
|
+
messageSends: ["new", "do:", "add:", "aliasTemporally:", "nodes"],
|
329
389
|
referencedClasses: ["IRDynamicArray"]
|
330
390
|
}),
|
331
391
|
smalltalk.IRASTTranslator);
|
@@ -338,15 +398,17 @@ category: 'visiting',
|
|
338
398
|
fn: function (aNode){
|
339
399
|
var self=this;
|
340
400
|
var dictionary;
|
341
|
-
|
342
|
-
|
343
|
-
|
344
|
-
|
345
|
-
|
346
|
-
|
401
|
+
return smalltalk.withContext(function($ctx1) {
|
402
|
+
dictionary=_st((smalltalk.IRDynamicDictionary || IRDynamicDictionary))._new();
|
403
|
+
_st(_st(self)._aliasTemporally_(_st(aNode)._nodes()))._do_((function(each){
|
404
|
+
return smalltalk.withContext(function($ctx2) {
|
405
|
+
}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1)})}));
|
406
|
+
$1=dictionary;
|
407
|
+
return $1;
|
408
|
+
}, function($ctx1) {$ctx1.fill(self,"visitDynamicDictionaryNode:",{aNode:aNode,dictionary:dictionary}, smalltalk.IRASTTranslator)})},
|
347
409
|
args: ["aNode"],
|
348
|
-
source: "visitDynamicDictionaryNode: aNode\x0a\x09| dictionary |\x0a\x09dictionary := IRDynamicDictionary new.\x0a
|
349
|
-
messageSends: ["new", "do:", "add:", "
|
410
|
+
source: "visitDynamicDictionaryNode: aNode\x0a\x09| dictionary |\x0a\x09dictionary := IRDynamicDictionary new.\x0a (self aliasTemporally: aNode nodes) do: [:each | dictionary add: each].\x0a\x09^ dictionary",
|
411
|
+
messageSends: ["new", "do:", "add:", "aliasTemporally:", "nodes"],
|
350
412
|
referencedClasses: ["IRDynamicDictionary"]
|
351
413
|
}),
|
352
414
|
smalltalk.IRASTTranslator);
|
@@ -358,13 +420,13 @@ selector: "visitJSStatementNode:",
|
|
358
420
|
category: 'visiting',
|
359
421
|
fn: function (aNode){
|
360
422
|
var self=this;
|
361
|
-
|
362
|
-
$2=
|
363
|
-
|
364
|
-
$3=
|
423
|
+
return smalltalk.withContext(function($ctx1) {
|
424
|
+
$2=_st((smalltalk.IRVerbatim || IRVerbatim))._new();
|
425
|
+
_st($2)._source_(_st(aNode)._source());
|
426
|
+
$3=_st($2)._yourself();
|
365
427
|
$1=$3;
|
366
428
|
return $1;
|
367
|
-
},
|
429
|
+
}, function($ctx1) {$ctx1.fill(self,"visitJSStatementNode:",{aNode:aNode}, smalltalk.IRASTTranslator)})},
|
368
430
|
args: ["aNode"],
|
369
431
|
source: "visitJSStatementNode: aNode\x0a\x09^ IRVerbatim new\x0a\x09\x09source: aNode source;\x0a\x09\x09yourself",
|
370
432
|
messageSends: ["source:", "source", "new", "yourself"],
|
@@ -379,38 +441,41 @@ selector: "visitMethodNode:",
|
|
379
441
|
category: 'visiting',
|
380
442
|
fn: function (aNode){
|
381
443
|
var self=this;
|
382
|
-
|
383
|
-
$1=
|
384
|
-
|
385
|
-
|
386
|
-
|
387
|
-
|
388
|
-
|
389
|
-
|
390
|
-
|
391
|
-
|
392
|
-
|
393
|
-
|
394
|
-
|
395
|
-
|
396
|
-
|
397
|
-
|
398
|
-
|
399
|
-
return
|
400
|
-
})
|
401
|
-
|
444
|
+
return smalltalk.withContext(function($ctx1) {
|
445
|
+
$1=_st((smalltalk.IRMethod || IRMethod))._new();
|
446
|
+
_st($1)._source_(_st(self)._source());
|
447
|
+
_st($1)._theClass_(_st(self)._theClass());
|
448
|
+
_st($1)._arguments_(_st(aNode)._arguments());
|
449
|
+
_st($1)._selector_(_st(aNode)._selector());
|
450
|
+
_st($1)._messageSends_(_st(aNode)._messageSends());
|
451
|
+
_st($1)._superSends_(_st(aNode)._superSends());
|
452
|
+
_st($1)._classReferences_(_st(aNode)._classReferences());
|
453
|
+
_st($1)._scope_(_st(aNode)._scope());
|
454
|
+
$2=_st($1)._yourself();
|
455
|
+
_st(self)._method_($2);
|
456
|
+
_st(_st(_st(aNode)._scope())._temps())._do_((function(each){
|
457
|
+
return smalltalk.withContext(function($ctx2) {
|
458
|
+
_st($3)._name_(_st(each)._name());
|
459
|
+
_st($3)._scope_(_st(aNode)._scope());
|
460
|
+
$4=_st($3)._yourself();
|
461
|
+
return _st(_st(self)._method())._add_($4);
|
462
|
+
}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1)})}));
|
463
|
+
_st(_st(aNode)._nodes())._do_((function(each){
|
464
|
+
return smalltalk.withContext(function($ctx2) {
|
465
|
+
}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1)})}));
|
466
|
+
$5=_st(_st(aNode)._scope())._hasLocalReturn();
|
402
467
|
if(! smalltalk.assert($5)){
|
403
|
-
$6=
|
404
|
-
|
405
|
-
$7=
|
406
|
-
|
468
|
+
$6=_st((smalltalk.IRVariable || IRVariable))._new();
|
469
|
+
_st($6)._variable_(_st(_st(_st(aNode)._scope())._pseudoVars())._at_("self"));
|
470
|
+
$7=_st($6)._yourself();
|
471
|
+
_st(_st(_st(self)._method())._add_(_st((smalltalk.IRReturn || IRReturn))._new()))._add_($7);
|
407
472
|
};
|
408
|
-
$8=
|
473
|
+
$8=_st(self)._method();
|
409
474
|
return $8;
|
410
|
-
},
|
475
|
+
}, function($ctx1) {$ctx1.fill(self,"visitMethodNode:",{aNode:aNode}, smalltalk.IRASTTranslator)})},
|
411
476
|
args: ["aNode"],
|
412
|
-
source: "visitMethodNode: aNode\x0a\x0a\x09self method: (IRMethod new\x0a\x09\x09source: self source;\x0a\x09\x09arguments: aNode arguments;\x0a\x09\x09selector: aNode selector;\x0a\x09\x09messageSends: aNode messageSends;\x0a\x09\x09classReferences: aNode classReferences;\x0a\x09\x09scope: aNode scope;\x0a\x09\x09yourself).\x0a\x0a\x09aNode scope temps do: [ :each |\x0a\x09\x09self method add: (IRTempDeclaration new\x0a\x09\x09\x09name: each name;\x0a\x09\x09\x09yourself) ].\x0a\x0a\x09aNode nodes do: [ :each | self method add: (self visit: each) ].\x0a\x0a\x09aNode scope hasLocalReturn ifFalse: [\x0a\x09\x09(self method add: IRReturn new) add: (IRVariable new\x0a\x09\x09\x09variable: (aNode scope pseudoVars at: 'self');\x0a\x09\x09\x09yourself) ].\x0a\x0a\x09^ self method",
|
413
|
-
messageSends: ["method:", "source:", "source", "new", "arguments:", "arguments", "selector:", "selector", "messageSends:", "messageSends", "classReferences:", "classReferences", "scope:", "scope", "yourself", "do:", "add:", "name:", "name", "method", "temps", "visit:", "nodes", "ifFalse:", "variable:", "at:", "pseudoVars", "hasLocalReturn"],
|
477
|
+
source: "visitMethodNode: aNode\x0a\x0a\x09self method: (IRMethod new\x0a\x09\x09source: self source;\x0a theClass: self theClass;\x0a\x09\x09arguments: aNode arguments;\x0a\x09\x09selector: aNode selector;\x0a\x09\x09messageSends: aNode messageSends;\x0a superSends: aNode superSends;\x0a\x09\x09classReferences: aNode classReferences;\x0a\x09\x09scope: aNode scope;\x0a\x09\x09yourself).\x0a\x0a\x09aNode scope temps do: [ :each |\x0a\x09\x09self method add: (IRTempDeclaration new\x0a\x09\x09\x09name: each name;\x0a scope: aNode scope;\x0a\x09\x09\x09yourself) ].\x0a\x0a\x09aNode nodes do: [ :each | self method add: (self visit: each) ].\x0a\x0a\x09aNode scope hasLocalReturn ifFalse: [\x0a\x09\x09(self method add: IRReturn new) add: (IRVariable new\x0a\x09\x09\x09variable: (aNode scope pseudoVars at: 'self');\x0a\x09\x09\x09yourself) ].\x0a\x0a\x09^ self method",
|
478
|
+
messageSends: ["method:", "source:", "source", "new", "theClass:", "theClass", "arguments:", "arguments", "selector:", "selector", "messageSends:", "messageSends", "superSends:", "superSends", "classReferences:", "classReferences", "scope:", "scope", "yourself", "do:", "add:", "name:", "name", "method", "temps", "visit:", "nodes", "ifFalse:", "variable:", "at:", "pseudoVars", "hasLocalReturn"],
|
414
479
|
referencedClasses: ["IRMethod", "IRTempDeclaration", "IRVariable", "IRReturn"]
|
415
480
|
}),
|
416
481
|
smalltalk.IRASTTranslator);
|
@@ -422,20 +487,21 @@ selector: "visitReturnNode:",
|
|
422
487
|
category: 'visiting',
|
423
488
|
fn: function (aNode){
|
424
489
|
var self=this;
|
425
|
-
var $1;
|
426
490
|
var return_;
|
427
|
-
|
491
|
+
return smalltalk.withContext(function($ctx1) {
|
492
|
+
$1=_st(aNode)._nonLocalReturn();
|
428
493
|
if(smalltalk.assert($1)){
|
429
|
-
return_=
|
494
|
+
return_=_st((smalltalk.IRNonLocalReturn || IRNonLocalReturn))._new();
|
430
495
|
} else {
|
431
|
-
return_=
|
496
|
+
return_=_st((smalltalk.IRReturn || IRReturn))._new();
|
432
497
|
};
|
433
|
-
|
434
|
-
|
435
|
-
return smalltalk.
|
436
|
-
})
|
437
|
-
|
438
|
-
|
498
|
+
_st(return_)._scope_(_st(aNode)._scope());
|
499
|
+
_st(_st(aNode)._nodes())._do_((function(each){
|
500
|
+
return smalltalk.withContext(function($ctx2) {
|
501
|
+
}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1)})}));
|
502
|
+
$2=return_;
|
503
|
+
return $2;
|
504
|
+
}, function($ctx1) {$ctx1.fill(self,"visitReturnNode:",{aNode:aNode,return_:return_}, smalltalk.IRASTTranslator)})},
|
439
505
|
args: ["aNode"],
|
440
506
|
source: "visitReturnNode: aNode\x0a\x09| return |\x0a\x09return := aNode nonLocalReturn \x0a\x09\x09ifTrue: [ IRNonLocalReturn new ]\x0a\x09\x09ifFalse: [ IRReturn new ].\x0a\x09return scope: aNode scope.\x0a\x09aNode nodes do: [ :each |\x0a\x09\x09return add: (self alias: each) ].\x0a\x09^ return",
|
441
507
|
messageSends: ["ifTrue:ifFalse:", "new", "nonLocalReturn", "scope:", "scope", "do:", "add:", "alias:", "nodes"],
|
@@ -450,42 +516,29 @@ selector: "visitSendNode:",
|
|
450
516
|
category: 'visiting',
|
451
517
|
fn: function (aNode){
|
452
518
|
var self=this;
|
453
|
-
var
|
454
|
-
|
455
|
-
|
456
|
-
|
457
|
-
|
458
|
-
|
459
|
-
$
|
460
|
-
$2=smalltalk.send(aNode,"_superSend",[]);
|
461
|
-
if(smalltalk.assert($2)){
|
462
|
-
smalltalk.send(send,"_classSend_",[smalltalk.send(smalltalk.send(self,"_theClass",[]),"_superclass",[])]);
|
463
|
-
};
|
464
|
-
$3=smalltalk.send(smalltalk.send(smalltalk.send(aNode,"_receiver",[]),"_shouldBeInlined",[]),"_or_",[(function(){
|
465
|
-
return smalltalk.send(smalltalk.send(aNode,"_receiver",[]),"_shouldBeAliased",[]);
|
466
|
-
})]);
|
519
|
+
var send,all,receiver,arguments;
|
520
|
+
return smalltalk.withContext(function($ctx1) {
|
521
|
+
send=_st((smalltalk.IRSend || IRSend))._new();
|
522
|
+
$1=send;
|
523
|
+
_st($1)._selector_(_st(aNode)._selector());
|
524
|
+
$2=_st($1)._index_(_st(aNode)._index());
|
525
|
+
$3=_st(aNode)._superSend();
|
467
526
|
if(smalltalk.assert($3)){
|
468
|
-
|
469
|
-
} else {
|
470
|
-
receiver=smalltalk.send(self,"_visit_",[smalltalk.send(aNode,"_receiver",[])]);
|
471
|
-
};
|
472
|
-
arguments=smalltalk.send(smalltalk.send(aNode,"_arguments",[]),"_collect_",[(function(each){
|
473
|
-
$4=smalltalk.send(each,"_shouldBeInlined",[]);
|
474
|
-
if(smalltalk.assert($4)){
|
475
|
-
return smalltalk.send(self,"_alias_",[each]);
|
476
|
-
} else {
|
477
|
-
return smalltalk.send(self,"_visit_",[each]);
|
527
|
+
_st(send)._classSend_(_st(_st(self)._theClass())._superclass());
|
478
528
|
};
|
479
|
-
|
480
|
-
|
481
|
-
|
482
|
-
|
483
|
-
|
484
|
-
return
|
485
|
-
},
|
529
|
+
all=_st(self)._aliasTemporally_(_st([_st(aNode)._receiver()]).__comma(_st(aNode)._arguments()));
|
530
|
+
receiver=_st(all)._first();
|
531
|
+
arguments=_st(all)._allButFirst();
|
532
|
+
_st(send)._add_(receiver);
|
533
|
+
_st(arguments)._do_((function(each){
|
534
|
+
return smalltalk.withContext(function($ctx2) {
|
535
|
+
}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1)})}));
|
536
|
+
$4=send;
|
537
|
+
return $4;
|
538
|
+
}, function($ctx1) {$ctx1.fill(self,"visitSendNode:",{aNode:aNode,send:send,all:all,receiver:receiver,arguments:arguments}, smalltalk.IRASTTranslator)})},
|
486
539
|
args: ["aNode"],
|
487
|
-
source: "visitSendNode: aNode\x0a\x09| send receiver arguments |\x0a\x09send := IRSend new.\x0a\x09send \x0a\x09\x09selector: aNode selector;\x0a\x09\x09index: aNode index.\x0a\x09aNode superSend ifTrue: [ send classSend: self theClass superclass ].\x0a\x0a
|
488
|
-
messageSends: ["new", "selector:", "selector", "index:", "index", "ifTrue:", "classSend:", "superclass", "theClass", "superSend", "
|
540
|
+
source: "visitSendNode: aNode\x0a\x09| send all receiver arguments |\x0a\x09send := IRSend new.\x0a\x09send \x0a\x09\x09selector: aNode selector;\x0a\x09\x09index: aNode index.\x0a\x09aNode superSend ifTrue: [ send classSend: self theClass superclass ].\x0a \x0a all := self aliasTemporally: { aNode receiver }, aNode arguments.\x0a\x09receiver := all first.\x0a\x09arguments := all allButFirst.\x0a\x0a\x09send add: receiver.\x0a\x09arguments do: [ :each | send add: each ].\x0a\x0a\x09^ send",
|
541
|
+
messageSends: ["new", "selector:", "selector", "index:", "index", "ifTrue:", "classSend:", "superclass", "theClass", "superSend", "aliasTemporally:", ",", "arguments", "receiver", "first", "allButFirst", "add:", "do:"],
|
489
542
|
referencedClasses: ["IRSend"]
|
490
543
|
}),
|
491
544
|
smalltalk.IRASTTranslator);
|
@@ -497,20 +550,25 @@ selector: "visitSequenceNode:",
|
|
497
550
|
category: 'visiting',
|
498
551
|
fn: function (aNode){
|
499
552
|
var self=this;
|
500
|
-
|
501
|
-
$
|
502
|
-
|
553
|
+
return smalltalk.withContext(function($ctx1) {
|
554
|
+
$2=self;
|
555
|
+
$3=_st((smalltalk.IRSequence || IRSequence))._new();
|
556
|
+
$4=(function(){
|
557
|
+
return smalltalk.withContext(function($ctx2) {
|
558
|
+
$6=(function(each){
|
503
559
|
var instruction;
|
504
|
-
|
560
|
+
return smalltalk.withContext(function($ctx3) {
|
505
561
|
instruction;
|
506
|
-
$
|
507
|
-
if(! smalltalk.assert($
|
508
|
-
return
|
562
|
+
$7=_st(instruction)._isVariable();
|
563
|
+
if(! smalltalk.assert($7)){
|
564
|
+
return _st(_st(self)._sequence())._add_(instruction);
|
509
565
|
};
|
510
|
-
})
|
511
|
-
|
566
|
+
}, function($ctx3) {$ctx3.fillBlock({each:each,instruction:instruction},$ctx1)})});
|
567
|
+
return _st($5)._do_($6);
|
568
|
+
}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})});
|
569
|
+
$1=_st($2)._withSequence_do_($3,$4);
|
512
570
|
return $1;
|
513
|
-
},
|
571
|
+
}, function($ctx1) {$ctx1.fill(self,"visitSequenceNode:",{aNode:aNode}, smalltalk.IRASTTranslator)})},
|
514
572
|
args: ["aNode"],
|
515
573
|
source: "visitSequenceNode: aNode\x0a\x09^ self \x0a\x09\x09withSequence: IRSequence new \x09\x0a\x09\x09do: [\x0a\x09\x09\x09aNode nodes do: [ :each | | instruction |\x0a\x09\x09\x09\x09instruction := self visit: each.\x0a\x09\x09\x09\x09instruction isVariable ifFalse: [\x0a\x09\x09\x09\x09\x09self sequence add: instruction ]]]",
|
516
574
|
messageSends: ["withSequence:do:", "new", "do:", "visit:", "ifFalse:", "add:", "sequence", "isVariable", "nodes"],
|
@@ -525,13 +583,13 @@ selector: "visitValueNode:",
|
|
525
583
|
category: 'visiting',
|
526
584
|
fn: function (aNode){
|
527
585
|
var self=this;
|
528
|
-
|
529
|
-
$2=
|
530
|
-
|
531
|
-
$3=
|
586
|
+
return smalltalk.withContext(function($ctx1) {
|
587
|
+
$2=_st((smalltalk.IRValue || IRValue))._new();
|
588
|
+
_st($2)._value_(_st(aNode)._value());
|
589
|
+
$3=_st($2)._yourself();
|
532
590
|
$1=$3;
|
533
591
|
return $1;
|
534
|
-
},
|
592
|
+
}, function($ctx1) {$ctx1.fill(self,"visitValueNode:",{aNode:aNode}, smalltalk.IRASTTranslator)})},
|
535
593
|
args: ["aNode"],
|
536
594
|
source: "visitValueNode: aNode\x0a\x09^ IRValue new \x0a\x09\x09value: aNode value; \x0a\x09\x09yourself",
|
537
595
|
messageSends: ["value:", "value", "new", "yourself"],
|
@@ -546,13 +604,13 @@ selector: "visitVariableNode:",
|
|
546
604
|
category: 'visiting',
|
547
605
|
fn: function (aNode){
|
548
606
|
var self=this;
|
549
|
-
|
550
|
-
$2=
|
551
|
-
|
552
|
-
$3=
|
607
|
+
return smalltalk.withContext(function($ctx1) {
|
608
|
+
$2=_st((smalltalk.IRVariable || IRVariable))._new();
|
609
|
+
_st($2)._variable_(_st(aNode)._binding());
|
610
|
+
$3=_st($2)._yourself();
|
553
611
|
$1=$3;
|
554
612
|
return $1;
|
555
|
-
},
|
613
|
+
}, function($ctx1) {$ctx1.fill(self,"visitVariableNode:",{aNode:aNode}, smalltalk.IRASTTranslator)})},
|
556
614
|
args: ["aNode"],
|
557
615
|
source: "visitVariableNode: aNode\x0a\x09^ IRVariable new \x0a\x09\x09variable: aNode binding; \x0a\x09\x09yourself",
|
558
616
|
messageSends: ["variable:", "binding", "new", "yourself"],
|
@@ -568,12 +626,14 @@ category: 'accessing',
|
|
568
626
|
fn: function (aSequence,aBlock){
|
569
627
|
var self=this;
|
570
628
|
var outerSequence;
|
571
|
-
|
572
|
-
|
573
|
-
|
574
|
-
|
575
|
-
|
576
|
-
|
629
|
+
return smalltalk.withContext(function($ctx1) {
|
630
|
+
outerSequence=_st(self)._sequence();
|
631
|
+
_st(self)._sequence_(aSequence);
|
632
|
+
_st(aBlock)._value();
|
633
|
+
_st(self)._sequence_(outerSequence);
|
634
|
+
$1=aSequence;
|
635
|
+
return $1;
|
636
|
+
}, function($ctx1) {$ctx1.fill(self,"withSequence:do:",{aSequence:aSequence,aBlock:aBlock,outerSequence:outerSequence}, smalltalk.IRASTTranslator)})},
|
577
637
|
args: ["aSequence", "aBlock"],
|
578
638
|
source: "withSequence: aSequence do: aBlock\x0a\x09| outerSequence |\x0a\x09outerSequence := self sequence.\x0a\x09self sequence: aSequence.\x0a\x09aBlock value.\x0a\x09self sequence: outerSequence.\x0a\x09^ aSequence",
|
579
639
|
messageSends: ["sequence", "sequence:", "value"],
|
@@ -584,7 +644,7 @@ smalltalk.IRASTTranslator);
|
|
584
644
|
|
585
645
|
|
586
646
|
smalltalk.addClass('IRInstruction', smalltalk.Object, ['parent', 'instructions'], 'Compiler-IR');
|
587
|
-
smalltalk.IRInstruction.comment="I am the abstract root class of the IR (intermediate representation) instructions class hierarchy.\x0aThe IR graph is used to emit JavaScript code using a JSStream.
|
647
|
+
smalltalk.IRInstruction.comment="I am the abstract root class of the IR (intermediate representation) instructions class hierarchy.\x0aThe IR graph is used to emit JavaScript code using a JSStream."
|
588
648
|
smalltalk.addMethod(
|
589
649
|
"_accept_",
|
590
650
|
smalltalk.method({
|
@@ -592,10 +652,10 @@ selector: "accept:",
|
|
592
652
|
category: 'visiting',
|
593
653
|
fn: function (aVisitor){
|
594
654
|
var self=this;
|
595
|
-
|
596
|
-
$1=
|
655
|
+
return smalltalk.withContext(function($ctx1) {
|
656
|
+
$1=_st(aVisitor)._visitIRInstruction_(self);
|
597
657
|
return $1;
|
598
|
-
},
|
658
|
+
}, function($ctx1) {$ctx1.fill(self,"accept:",{aVisitor:aVisitor}, smalltalk.IRInstruction)})},
|
599
659
|
args: ["aVisitor"],
|
600
660
|
source: "accept: aVisitor\x0a\x09^ aVisitor visitIRInstruction: self",
|
601
661
|
messageSends: ["visitIRInstruction:"],
|
@@ -610,11 +670,11 @@ selector: "add:",
|
|
610
670
|
category: 'building',
|
611
671
|
fn: function (anObject){
|
612
672
|
var self=this;
|
613
|
-
|
614
|
-
|
615
|
-
$1=
|
673
|
+
return smalltalk.withContext(function($ctx1) {
|
674
|
+
_st(anObject)._parent_(self);
|
675
|
+
$1=_st(_st(self)._instructions())._add_(anObject);
|
616
676
|
return $1;
|
617
|
-
},
|
677
|
+
}, function($ctx1) {$ctx1.fill(self,"add:",{anObject:anObject}, smalltalk.IRInstruction)})},
|
618
678
|
args: ["anObject"],
|
619
679
|
source: "add: anObject\x0a\x09anObject parent: self.\x0a\x09^ self instructions add: anObject",
|
620
680
|
messageSends: ["parent:", "add:", "instructions"],
|
@@ -629,8 +689,8 @@ selector: "canBeAssigned",
|
|
629
689
|
category: 'testing',
|
630
690
|
fn: function (){
|
631
691
|
var self=this;
|
632
|
-
return
|
633
|
-
},
|
692
|
+
return smalltalk.withContext(function($ctx1) {
|
693
|
+
}, function($ctx1) {$ctx1.fill(self,"canBeAssigned",{}, smalltalk.IRInstruction)})},
|
634
694
|
args: [],
|
635
695
|
source: "canBeAssigned\x0a\x09^ true",
|
636
696
|
messageSends: [],
|
@@ -645,15 +705,16 @@ selector: "instructions",
|
|
645
705
|
category: 'accessing',
|
646
706
|
fn: function (){
|
647
707
|
var self=this;
|
648
|
-
|
649
|
-
|
650
|
-
|
708
|
+
return smalltalk.withContext(function($ctx1) {
|
709
|
+
$2=self["@instructions"];
|
710
|
+
if(($receiver = $2) == nil || $receiver == undefined){
|
711
|
+
self["@instructions"]=_st((smalltalk.OrderedCollection || OrderedCollection))._new();
|
651
712
|
$1=self["@instructions"];
|
652
713
|
} else {
|
653
|
-
$1
|
714
|
+
$1=$2;
|
654
715
|
};
|
655
716
|
return $1;
|
656
|
-
},
|
717
|
+
}, function($ctx1) {$ctx1.fill(self,"instructions",{}, smalltalk.IRInstruction)})},
|
657
718
|
args: [],
|
658
719
|
source: "instructions\x0a\x09^ instructions ifNil: [ instructions := OrderedCollection new ]",
|
659
720
|
messageSends: ["ifNil:", "new"],
|
@@ -668,8 +729,8 @@ selector: "isClosure",
|
|
668
729
|
category: 'testing',
|
669
730
|
fn: function (){
|
670
731
|
var self=this;
|
671
|
-
return
|
672
|
-
},
|
732
|
+
return smalltalk.withContext(function($ctx1) {
|
733
|
+
}, function($ctx1) {$ctx1.fill(self,"isClosure",{}, smalltalk.IRInstruction)})},
|
673
734
|
args: [],
|
674
735
|
source: "isClosure\x0a\x09^ false",
|
675
736
|
messageSends: [],
|
@@ -684,8 +745,8 @@ selector: "isInlined",
|
|
684
745
|
category: 'testing',
|
685
746
|
fn: function (){
|
686
747
|
var self=this;
|
687
|
-
return
|
688
|
-
},
|
748
|
+
return smalltalk.withContext(function($ctx1) {
|
749
|
+
}, function($ctx1) {$ctx1.fill(self,"isInlined",{}, smalltalk.IRInstruction)})},
|
689
750
|
args: [],
|
690
751
|
source: "isInlined\x0a\x09^ false",
|
691
752
|
messageSends: [],
|
@@ -700,8 +761,8 @@ selector: "isLocalReturn",
|
|
700
761
|
category: 'testing',
|
701
762
|
fn: function (){
|
702
763
|
var self=this;
|
703
|
-
return
|
704
|
-
},
|
764
|
+
return smalltalk.withContext(function($ctx1) {
|
765
|
+
}, function($ctx1) {$ctx1.fill(self,"isLocalReturn",{}, smalltalk.IRInstruction)})},
|
705
766
|
args: [],
|
706
767
|
source: "isLocalReturn\x0a\x09^ false",
|
707
768
|
messageSends: [],
|
@@ -709,6 +770,22 @@ referencedClasses: []
|
|
709
770
|
}),
|
710
771
|
smalltalk.IRInstruction);
|
711
772
|
|
773
|
+
smalltalk.addMethod(
|
774
|
+
"_isMethod",
|
775
|
+
smalltalk.method({
|
776
|
+
selector: "isMethod",
|
777
|
+
category: 'testing',
|
778
|
+
fn: function (){
|
779
|
+
var self=this;
|
780
|
+
return smalltalk.withContext(function($ctx1) {
|
781
|
+
}, function($ctx1) {$ctx1.fill(self,"isMethod",{}, smalltalk.IRInstruction)})},
|
782
|
+
args: [],
|
783
|
+
source: "isMethod\x0a\x09^ false",
|
784
|
+
messageSends: [],
|
785
|
+
referencedClasses: []
|
786
|
+
}),
|
787
|
+
smalltalk.IRInstruction);
|
788
|
+
|
712
789
|
smalltalk.addMethod(
|
713
790
|
"_isReturn",
|
714
791
|
smalltalk.method({
|
@@ -716,8 +793,8 @@ selector: "isReturn",
|
|
716
793
|
category: 'testing',
|
717
794
|
fn: function (){
|
718
795
|
var self=this;
|
719
|
-
return
|
720
|
-
},
|
796
|
+
return smalltalk.withContext(function($ctx1) {
|
797
|
+
}, function($ctx1) {$ctx1.fill(self,"isReturn",{}, smalltalk.IRInstruction)})},
|
721
798
|
args: [],
|
722
799
|
source: "isReturn\x0a\x09^ false",
|
723
800
|
messageSends: [],
|
@@ -732,8 +809,8 @@ selector: "isSend",
|
|
732
809
|
category: 'testing',
|
733
810
|
fn: function (){
|
734
811
|
var self=this;
|
735
|
-
return
|
736
|
-
},
|
812
|
+
return smalltalk.withContext(function($ctx1) {
|
813
|
+
}, function($ctx1) {$ctx1.fill(self,"isSend",{}, smalltalk.IRInstruction)})},
|
737
814
|
args: [],
|
738
815
|
source: "isSend\x0a\x09^ false",
|
739
816
|
messageSends: [],
|
@@ -748,8 +825,8 @@ selector: "isSequence",
|
|
748
825
|
category: 'testing',
|
749
826
|
fn: function (){
|
750
827
|
var self=this;
|
751
|
-
return
|
752
|
-
},
|
828
|
+
return smalltalk.withContext(function($ctx1) {
|
829
|
+
}, function($ctx1) {$ctx1.fill(self,"isSequence",{}, smalltalk.IRInstruction)})},
|
753
830
|
args: [],
|
754
831
|
source: "isSequence\x0a\x09^ false",
|
755
832
|
messageSends: [],
|
@@ -764,8 +841,8 @@ selector: "isTempDeclaration",
|
|
764
841
|
category: 'testing',
|
765
842
|
fn: function (){
|
766
843
|
var self=this;
|
767
|
-
return
|
768
|
-
},
|
844
|
+
return smalltalk.withContext(function($ctx1) {
|
845
|
+
}, function($ctx1) {$ctx1.fill(self,"isTempDeclaration",{}, smalltalk.IRInstruction)})},
|
769
846
|
args: [],
|
770
847
|
source: "isTempDeclaration\x0a\x09^ false",
|
771
848
|
messageSends: [],
|
@@ -780,8 +857,8 @@ selector: "isVariable",
|
|
780
857
|
category: 'testing',
|
781
858
|
fn: function (){
|
782
859
|
var self=this;
|
783
|
-
return
|
784
|
-
},
|
860
|
+
return smalltalk.withContext(function($ctx1) {
|
861
|
+
}, function($ctx1) {$ctx1.fill(self,"isVariable",{}, smalltalk.IRInstruction)})},
|
785
862
|
args: [],
|
786
863
|
source: "isVariable\x0a\x09^ false",
|
787
864
|
messageSends: [],
|
@@ -789,6 +866,24 @@ referencedClasses: []
|
|
789
866
|
}),
|
790
867
|
smalltalk.IRInstruction);
|
791
868
|
|
869
|
+
smalltalk.addMethod(
|
870
|
+
"_method",
|
871
|
+
smalltalk.method({
|
872
|
+
selector: "method",
|
873
|
+
category: 'accessing',
|
874
|
+
fn: function (){
|
875
|
+
var self=this;
|
876
|
+
return smalltalk.withContext(function($ctx1) {
|
877
|
+
$1=_st(_st(self)._parent())._method();
|
878
|
+
return $1;
|
879
|
+
}, function($ctx1) {$ctx1.fill(self,"method",{}, smalltalk.IRInstruction)})},
|
880
|
+
args: [],
|
881
|
+
source: "method\x0a\x09^ self parent method",
|
882
|
+
messageSends: ["method", "parent"],
|
883
|
+
referencedClasses: []
|
884
|
+
}),
|
885
|
+
smalltalk.IRInstruction);
|
886
|
+
|
792
887
|
smalltalk.addMethod(
|
793
888
|
"_parent",
|
794
889
|
smalltalk.method({
|
@@ -796,8 +891,10 @@ selector: "parent",
|
|
796
891
|
category: 'accessing',
|
797
892
|
fn: function (){
|
798
893
|
var self=this;
|
799
|
-
return
|
800
|
-
|
894
|
+
return smalltalk.withContext(function($ctx1) {
|
895
|
+
$1=self["@parent"];
|
896
|
+
return $1;
|
897
|
+
}, function($ctx1) {$ctx1.fill(self,"parent",{}, smalltalk.IRInstruction)})},
|
801
898
|
args: [],
|
802
899
|
source: "parent\x0a\x09^ parent",
|
803
900
|
messageSends: [],
|
@@ -812,8 +909,8 @@ selector: "parent:",
|
|
812
909
|
category: 'accessing',
|
813
910
|
fn: function (anIRInstruction){
|
814
911
|
var self=this;
|
815
|
-
|
816
|
-
return self},
|
912
|
+
return smalltalk.withContext(function($ctx1) {
|
913
|
+
return self}, function($ctx1) {$ctx1.fill(self,"parent:",{anIRInstruction:anIRInstruction}, smalltalk.IRInstruction)})},
|
817
914
|
args: ["anIRInstruction"],
|
818
915
|
source: "parent: anIRInstruction\x0a\x09parent := anIRInstruction",
|
819
916
|
messageSends: [],
|
@@ -828,8 +925,8 @@ selector: "remove",
|
|
828
925
|
category: 'building',
|
829
926
|
fn: function (){
|
830
927
|
var self=this;
|
831
|
-
smalltalk.
|
832
|
-
return self},
|
928
|
+
return smalltalk.withContext(function($ctx1) {
|
929
|
+
return self}, function($ctx1) {$ctx1.fill(self,"remove",{}, smalltalk.IRInstruction)})},
|
833
930
|
args: [],
|
834
931
|
source: "remove\x0a\x09self parent remove: self",
|
835
932
|
messageSends: ["remove:", "parent"],
|
@@ -844,8 +941,8 @@ selector: "remove:",
|
|
844
941
|
category: 'building',
|
845
942
|
fn: function (anIRInstruction){
|
846
943
|
var self=this;
|
847
|
-
smalltalk.
|
848
|
-
return self},
|
944
|
+
return smalltalk.withContext(function($ctx1) {
|
945
|
+
return self}, function($ctx1) {$ctx1.fill(self,"remove:",{anIRInstruction:anIRInstruction}, smalltalk.IRInstruction)})},
|
849
946
|
args: ["anIRInstruction"],
|
850
947
|
source: "remove: anIRInstruction\x0a\x09self instructions remove: anIRInstruction",
|
851
948
|
messageSends: ["remove:", "instructions"],
|
@@ -860,9 +957,9 @@ selector: "replace:with:",
|
|
860
957
|
category: 'building',
|
861
958
|
fn: function (anIRInstruction,anotherIRInstruction){
|
862
959
|
var self=this;
|
863
|
-
smalltalk.
|
864
|
-
|
865
|
-
return self},
|
960
|
+
return smalltalk.withContext(function($ctx1) {
|
961
|
+
_st(_st(self)._instructions())._at_put_(_st(_st(self)._instructions())._indexOf_(anIRInstruction),anotherIRInstruction);
|
962
|
+
return self}, function($ctx1) {$ctx1.fill(self,"replace:with:",{anIRInstruction:anIRInstruction,anotherIRInstruction:anotherIRInstruction}, smalltalk.IRInstruction)})},
|
866
963
|
args: ["anIRInstruction", "anotherIRInstruction"],
|
867
964
|
source: "replace: anIRInstruction with: anotherIRInstruction\x0a\x09anotherIRInstruction parent: self.\x0a\x09self instructions \x0a\x09\x09at: (self instructions indexOf: anIRInstruction)\x0a\x09\x09put: anotherIRInstruction",
|
868
965
|
messageSends: ["parent:", "at:put:", "indexOf:", "instructions"],
|
@@ -877,8 +974,8 @@ selector: "replaceWith:",
|
|
877
974
|
category: 'building',
|
878
975
|
fn: function (anIRInstruction){
|
879
976
|
var self=this;
|
880
|
-
smalltalk.
|
881
|
-
return self},
|
977
|
+
return smalltalk.withContext(function($ctx1) {
|
978
|
+
return self}, function($ctx1) {$ctx1.fill(self,"replaceWith:",{anIRInstruction:anIRInstruction}, smalltalk.IRInstruction)})},
|
882
979
|
args: ["anIRInstruction"],
|
883
980
|
source: "replaceWith: anIRInstruction\x0a\x09self parent replace: self with: anIRInstruction",
|
884
981
|
messageSends: ["replace:with:", "parent"],
|
@@ -894,13 +991,13 @@ selector: "on:",
|
|
894
991
|
category: 'instance creation',
|
895
992
|
fn: function (aBuilder){
|
896
993
|
var self=this;
|
897
|
-
|
898
|
-
$2=
|
899
|
-
|
900
|
-
$3=
|
994
|
+
return smalltalk.withContext(function($ctx1) {
|
995
|
+
$2=_st(self)._new();
|
996
|
+
_st($2)._builder_(aBuilder);
|
997
|
+
$3=_st($2)._yourself();
|
901
998
|
$1=$3;
|
902
999
|
return $1;
|
903
|
-
},
|
1000
|
+
}, function($ctx1) {$ctx1.fill(self,"on:",{aBuilder:aBuilder}, smalltalk.IRInstruction.klass)})},
|
904
1001
|
args: ["aBuilder"],
|
905
1002
|
source: "on: aBuilder\x0a\x09^ self new\x0a\x09\x09builder: aBuilder;\x0a\x09\x09yourself",
|
906
1003
|
messageSends: ["builder:", "new", "yourself"],
|
@@ -917,10 +1014,10 @@ selector: "accept:",
|
|
917
1014
|
category: 'visiting',
|
918
1015
|
fn: function (aVisitor){
|
919
1016
|
var self=this;
|
920
|
-
|
921
|
-
$1=
|
1017
|
+
return smalltalk.withContext(function($ctx1) {
|
1018
|
+
$1=_st(aVisitor)._visitIRAssignment_(self);
|
922
1019
|
return $1;
|
923
|
-
},
|
1020
|
+
}, function($ctx1) {$ctx1.fill(self,"accept:",{aVisitor:aVisitor}, smalltalk.IRAssignment)})},
|
924
1021
|
args: ["aVisitor"],
|
925
1022
|
source: "accept: aVisitor\x0a\x09^ aVisitor visitIRAssignment: self",
|
926
1023
|
messageSends: ["visitIRAssignment:"],
|
@@ -938,10 +1035,10 @@ selector: "accept:",
|
|
938
1035
|
category: 'visiting',
|
939
1036
|
fn: function (aVisitor){
|
940
1037
|
var self=this;
|
941
|
-
|
942
|
-
$1=
|
1038
|
+
return smalltalk.withContext(function($ctx1) {
|
1039
|
+
$1=_st(aVisitor)._visitIRDynamicArray_(self);
|
943
1040
|
return $1;
|
944
|
-
},
|
1041
|
+
}, function($ctx1) {$ctx1.fill(self,"accept:",{aVisitor:aVisitor}, smalltalk.IRDynamicArray)})},
|
945
1042
|
args: ["aVisitor"],
|
946
1043
|
source: "accept: aVisitor\x0a\x09^ aVisitor visitIRDynamicArray: self",
|
947
1044
|
messageSends: ["visitIRDynamicArray:"],
|
@@ -959,10 +1056,10 @@ selector: "accept:",
|
|
959
1056
|
category: 'visiting',
|
960
1057
|
fn: function (aVisitor){
|
961
1058
|
var self=this;
|
962
|
-
|
963
|
-
$1=
|
1059
|
+
return smalltalk.withContext(function($ctx1) {
|
1060
|
+
$1=_st(aVisitor)._visitIRDynamicDictionary_(self);
|
964
1061
|
return $1;
|
965
|
-
},
|
1062
|
+
}, function($ctx1) {$ctx1.fill(self,"accept:",{aVisitor:aVisitor}, smalltalk.IRDynamicDictionary)})},
|
966
1063
|
args: ["aVisitor"],
|
967
1064
|
source: "accept: aVisitor\x0a\x09^ aVisitor visitIRDynamicDictionary: self",
|
968
1065
|
messageSends: ["visitIRDynamicDictionary:"],
|
@@ -980,8 +1077,10 @@ selector: "scope",
|
|
980
1077
|
category: 'accessing',
|
981
1078
|
fn: function (){
|
982
1079
|
var self=this;
|
983
|
-
return
|
984
|
-
|
1080
|
+
return smalltalk.withContext(function($ctx1) {
|
1081
|
+
$1=self["@scope"];
|
1082
|
+
return $1;
|
1083
|
+
}, function($ctx1) {$ctx1.fill(self,"scope",{}, smalltalk.IRScopedInstruction)})},
|
985
1084
|
args: [],
|
986
1085
|
source: "scope\x0a\x09^ scope",
|
987
1086
|
messageSends: [],
|
@@ -996,8 +1095,8 @@ selector: "scope:",
|
|
996
1095
|
category: 'accessing',
|
997
1096
|
fn: function (aScope){
|
998
1097
|
var self=this;
|
999
|
-
|
1000
|
-
return self},
|
1098
|
+
return smalltalk.withContext(function($ctx1) {
|
1099
|
+
return self}, function($ctx1) {$ctx1.fill(self,"scope:",{aScope:aScope}, smalltalk.IRScopedInstruction)})},
|
1001
1100
|
args: ["aScope"],
|
1002
1101
|
source: "scope: aScope\x0a\x09scope := aScope",
|
1003
1102
|
messageSends: [],
|
@@ -1007,25 +1106,7 @@ smalltalk.IRScopedInstruction);
|
|
1007
1106
|
|
1008
1107
|
|
1009
1108
|
|
1010
|
-
smalltalk.addClass('
|
1011
|
-
smalltalk.addMethod(
|
1012
|
-
"_accept_",
|
1013
|
-
smalltalk.method({
|
1014
|
-
selector: "accept:",
|
1015
|
-
category: 'visiting',
|
1016
|
-
fn: function (aVisitor){
|
1017
|
-
var self=this;
|
1018
|
-
var $1;
|
1019
|
-
$1=smalltalk.send(aVisitor,"_visitIRClosure_",[self]);
|
1020
|
-
return $1;
|
1021
|
-
},
|
1022
|
-
args: ["aVisitor"],
|
1023
|
-
source: "accept: aVisitor\x0a\x09^ aVisitor visitIRClosure: self",
|
1024
|
-
messageSends: ["visitIRClosure:"],
|
1025
|
-
referencedClasses: []
|
1026
|
-
}),
|
1027
|
-
smalltalk.IRClosure);
|
1028
|
-
|
1109
|
+
smalltalk.addClass('IRClosureInstruction', smalltalk.IRScopedInstruction, ['arguments'], 'Compiler-IR');
|
1029
1110
|
smalltalk.addMethod(
|
1030
1111
|
"_arguments",
|
1031
1112
|
smalltalk.method({
|
@@ -1033,20 +1114,21 @@ selector: "arguments",
|
|
1033
1114
|
category: 'accessing',
|
1034
1115
|
fn: function (){
|
1035
1116
|
var self=this;
|
1036
|
-
|
1037
|
-
|
1117
|
+
return smalltalk.withContext(function($ctx1) {
|
1118
|
+
$2=self["@arguments"];
|
1119
|
+
if(($receiver = $2) == nil || $receiver == undefined){
|
1038
1120
|
$1=[];
|
1039
1121
|
} else {
|
1040
|
-
$1
|
1122
|
+
$1=$2;
|
1041
1123
|
};
|
1042
1124
|
return $1;
|
1043
|
-
},
|
1125
|
+
}, function($ctx1) {$ctx1.fill(self,"arguments",{}, smalltalk.IRClosureInstruction)})},
|
1044
1126
|
args: [],
|
1045
1127
|
source: "arguments\x0a\x09^ arguments ifNil: [ #() ]",
|
1046
1128
|
messageSends: ["ifNil:"],
|
1047
1129
|
referencedClasses: []
|
1048
1130
|
}),
|
1049
|
-
smalltalk.
|
1131
|
+
smalltalk.IRClosureInstruction);
|
1050
1132
|
|
1051
1133
|
smalltalk.addMethod(
|
1052
1134
|
"_arguments_",
|
@@ -1055,30 +1137,37 @@ selector: "arguments:",
|
|
1055
1137
|
category: 'accessing',
|
1056
1138
|
fn: function (aCollection){
|
1057
1139
|
var self=this;
|
1058
|
-
|
1059
|
-
return self},
|
1140
|
+
return smalltalk.withContext(function($ctx1) {
|
1141
|
+
return self}, function($ctx1) {$ctx1.fill(self,"arguments:",{aCollection:aCollection}, smalltalk.IRClosureInstruction)})},
|
1060
1142
|
args: ["aCollection"],
|
1061
1143
|
source: "arguments: aCollection\x0a\x09arguments := aCollection",
|
1062
1144
|
messageSends: [],
|
1063
1145
|
referencedClasses: []
|
1064
1146
|
}),
|
1065
|
-
smalltalk.
|
1147
|
+
smalltalk.IRClosureInstruction);
|
1066
1148
|
|
1067
1149
|
smalltalk.addMethod(
|
1068
|
-
"
|
1150
|
+
"_locals",
|
1069
1151
|
smalltalk.method({
|
1070
|
-
selector: "
|
1071
|
-
category: '
|
1152
|
+
selector: "locals",
|
1153
|
+
category: 'accessing',
|
1072
1154
|
fn: function (){
|
1073
1155
|
var self=this;
|
1074
|
-
return
|
1075
|
-
|
1156
|
+
return smalltalk.withContext(function($ctx1) {
|
1157
|
+
$2=_st(_st(self)._arguments())._copy();
|
1158
|
+
_st($2)._addAll_(_st(_st(self)._tempDeclarations())._collect_((function(each){
|
1159
|
+
return smalltalk.withContext(function($ctx2) {
|
1160
|
+
}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1)})})));
|
1161
|
+
$3=_st($2)._yourself();
|
1162
|
+
$1=$3;
|
1163
|
+
return $1;
|
1164
|
+
}, function($ctx1) {$ctx1.fill(self,"locals",{}, smalltalk.IRClosureInstruction)})},
|
1076
1165
|
args: [],
|
1077
|
-
source: "
|
1078
|
-
messageSends: [],
|
1166
|
+
source: "locals\x0a\x09^ self arguments copy\x0a \x09addAll: (self tempDeclarations collect: [ :each | each name ]); \x0a yourself",
|
1167
|
+
messageSends: ["addAll:", "collect:", "name", "tempDeclarations", "copy", "arguments", "yourself"],
|
1079
1168
|
referencedClasses: []
|
1080
1169
|
}),
|
1081
|
-
smalltalk.
|
1170
|
+
smalltalk.IRClosureInstruction);
|
1082
1171
|
|
1083
1172
|
smalltalk.addMethod(
|
1084
1173
|
"_scope_",
|
@@ -1087,38 +1176,39 @@ selector: "scope:",
|
|
1087
1176
|
category: 'accessing',
|
1088
1177
|
fn: function (aScope){
|
1089
1178
|
var self=this;
|
1090
|
-
smalltalk.
|
1091
|
-
|
1092
|
-
return self},
|
1179
|
+
return smalltalk.withContext(function($ctx1) {
|
1180
|
+
_st(aScope)._instruction_(self);
|
1181
|
+
return self}, function($ctx1) {$ctx1.fill(self,"scope:",{aScope:aScope}, smalltalk.IRClosureInstruction)})},
|
1093
1182
|
args: ["aScope"],
|
1094
1183
|
source: "scope: aScope\x0a\x09super scope: aScope.\x0a\x09aScope instruction: self",
|
1095
1184
|
messageSends: ["scope:", "instruction:"],
|
1096
1185
|
referencedClasses: []
|
1097
1186
|
}),
|
1098
|
-
smalltalk.
|
1187
|
+
smalltalk.IRClosureInstruction);
|
1099
1188
|
|
1100
1189
|
smalltalk.addMethod(
|
1101
|
-
"
|
1190
|
+
"_tempDeclarations",
|
1102
1191
|
smalltalk.method({
|
1103
|
-
selector: "
|
1192
|
+
selector: "tempDeclarations",
|
1104
1193
|
category: 'accessing',
|
1105
1194
|
fn: function (){
|
1106
1195
|
var self=this;
|
1107
|
-
|
1108
|
-
$1=
|
1196
|
+
return smalltalk.withContext(function($ctx1) {
|
1197
|
+
$1=_st(_st(self)._instructions())._select_((function(each){
|
1198
|
+
return smalltalk.withContext(function($ctx2) {
|
1199
|
+
}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1)})}));
|
1109
1200
|
return $1;
|
1110
|
-
},
|
1201
|
+
}, function($ctx1) {$ctx1.fill(self,"tempDeclarations",{}, smalltalk.IRClosureInstruction)})},
|
1111
1202
|
args: [],
|
1112
|
-
source: "
|
1113
|
-
messageSends: ["
|
1203
|
+
source: "tempDeclarations\x0a\x09^ self instructions select: [ :each | \x0a \x09each isTempDeclaration ]",
|
1204
|
+
messageSends: ["select:", "isTempDeclaration", "instructions"],
|
1114
1205
|
referencedClasses: []
|
1115
1206
|
}),
|
1116
|
-
smalltalk.
|
1207
|
+
smalltalk.IRClosureInstruction);
|
1117
1208
|
|
1118
1209
|
|
1119
1210
|
|
1120
|
-
smalltalk.addClass('
|
1121
|
-
smalltalk.IRMethod.comment="I am a method instruction"
|
1211
|
+
smalltalk.addClass('IRClosure', smalltalk.IRClosureInstruction, [], 'Compiler-IR');
|
1122
1212
|
smalltalk.addMethod(
|
1123
1213
|
"_accept_",
|
1124
1214
|
smalltalk.method({
|
@@ -1126,45 +1216,69 @@ selector: "accept:",
|
|
1126
1216
|
category: 'visiting',
|
1127
1217
|
fn: function (aVisitor){
|
1128
1218
|
var self=this;
|
1129
|
-
|
1130
|
-
$1=
|
1219
|
+
return smalltalk.withContext(function($ctx1) {
|
1220
|
+
$1=_st(aVisitor)._visitIRClosure_(self);
|
1131
1221
|
return $1;
|
1132
|
-
},
|
1222
|
+
}, function($ctx1) {$ctx1.fill(self,"accept:",{aVisitor:aVisitor}, smalltalk.IRClosure)})},
|
1133
1223
|
args: ["aVisitor"],
|
1134
|
-
source: "accept: aVisitor\x0a\x09^ aVisitor
|
1135
|
-
messageSends: ["
|
1224
|
+
source: "accept: aVisitor\x0a\x09^ aVisitor visitIRClosure: self",
|
1225
|
+
messageSends: ["visitIRClosure:"],
|
1136
1226
|
referencedClasses: []
|
1137
1227
|
}),
|
1138
|
-
smalltalk.
|
1228
|
+
smalltalk.IRClosure);
|
1139
1229
|
|
1140
1230
|
smalltalk.addMethod(
|
1141
|
-
"
|
1231
|
+
"_isClosure",
|
1142
1232
|
smalltalk.method({
|
1143
|
-
selector: "
|
1144
|
-
category: '
|
1233
|
+
selector: "isClosure",
|
1234
|
+
category: 'testing',
|
1145
1235
|
fn: function (){
|
1146
1236
|
var self=this;
|
1147
|
-
return
|
1148
|
-
},
|
1237
|
+
return smalltalk.withContext(function($ctx1) {
|
1238
|
+
}, function($ctx1) {$ctx1.fill(self,"isClosure",{}, smalltalk.IRClosure)})},
|
1149
1239
|
args: [],
|
1150
|
-
source: "
|
1240
|
+
source: "isClosure\x0a\x09^ true",
|
1151
1241
|
messageSends: [],
|
1152
1242
|
referencedClasses: []
|
1153
1243
|
}),
|
1154
|
-
smalltalk.
|
1244
|
+
smalltalk.IRClosure);
|
1155
1245
|
|
1156
1246
|
smalltalk.addMethod(
|
1157
|
-
"
|
1247
|
+
"_sequence",
|
1158
1248
|
smalltalk.method({
|
1159
|
-
selector: "
|
1249
|
+
selector: "sequence",
|
1160
1250
|
category: 'accessing',
|
1161
|
-
fn: function (
|
1251
|
+
fn: function (){
|
1162
1252
|
var self=this;
|
1163
|
-
|
1164
|
-
|
1165
|
-
|
1166
|
-
|
1167
|
-
|
1253
|
+
return smalltalk.withContext(function($ctx1) {
|
1254
|
+
$1=_st(_st(self)._instructions())._last();
|
1255
|
+
return $1;
|
1256
|
+
}, function($ctx1) {$ctx1.fill(self,"sequence",{}, smalltalk.IRClosure)})},
|
1257
|
+
args: [],
|
1258
|
+
source: "sequence\x0a\x09^ self instructions last",
|
1259
|
+
messageSends: ["last", "instructions"],
|
1260
|
+
referencedClasses: []
|
1261
|
+
}),
|
1262
|
+
smalltalk.IRClosure);
|
1263
|
+
|
1264
|
+
|
1265
|
+
|
1266
|
+
smalltalk.addClass('IRMethod', smalltalk.IRClosureInstruction, ['theClass', 'source', 'selector', 'classReferences', 'messageSends', 'superSends', 'internalVariables'], 'Compiler-IR');
|
1267
|
+
smalltalk.IRMethod.comment="I am a method instruction"
|
1268
|
+
smalltalk.addMethod(
|
1269
|
+
"_accept_",
|
1270
|
+
smalltalk.method({
|
1271
|
+
selector: "accept:",
|
1272
|
+
category: 'visiting',
|
1273
|
+
fn: function (aVisitor){
|
1274
|
+
var self=this;
|
1275
|
+
return smalltalk.withContext(function($ctx1) {
|
1276
|
+
$1=_st(aVisitor)._visitIRMethod_(self);
|
1277
|
+
return $1;
|
1278
|
+
}, function($ctx1) {$ctx1.fill(self,"accept:",{aVisitor:aVisitor}, smalltalk.IRMethod)})},
|
1279
|
+
args: ["aVisitor"],
|
1280
|
+
source: "accept: aVisitor\x0a\x09^ aVisitor visitIRMethod: self",
|
1281
|
+
messageSends: ["visitIRMethod:"],
|
1168
1282
|
referencedClasses: []
|
1169
1283
|
}),
|
1170
1284
|
smalltalk.IRMethod);
|
@@ -1176,8 +1290,10 @@ selector: "classReferences",
|
|
1176
1290
|
category: 'accessing',
|
1177
1291
|
fn: function (){
|
1178
1292
|
var self=this;
|
1179
|
-
return
|
1180
|
-
|
1293
|
+
return smalltalk.withContext(function($ctx1) {
|
1294
|
+
$1=self["@classReferences"];
|
1295
|
+
return $1;
|
1296
|
+
}, function($ctx1) {$ctx1.fill(self,"classReferences",{}, smalltalk.IRMethod)})},
|
1181
1297
|
args: [],
|
1182
1298
|
source: "classReferences\x0a\x09^ classReferences",
|
1183
1299
|
messageSends: [],
|
@@ -1192,8 +1308,8 @@ selector: "classReferences:",
|
|
1192
1308
|
category: 'accessing',
|
1193
1309
|
fn: function (aCollection){
|
1194
1310
|
var self=this;
|
1195
|
-
|
1196
|
-
return self},
|
1311
|
+
return smalltalk.withContext(function($ctx1) {
|
1312
|
+
return self}, function($ctx1) {$ctx1.fill(self,"classReferences:",{aCollection:aCollection}, smalltalk.IRMethod)})},
|
1197
1313
|
args: ["aCollection"],
|
1198
1314
|
source: "classReferences: aCollection\x0a\x09classReferences := aCollection",
|
1199
1315
|
messageSends: [],
|
@@ -1208,15 +1324,16 @@ selector: "internalVariables",
|
|
1208
1324
|
category: 'accessing',
|
1209
1325
|
fn: function (){
|
1210
1326
|
var self=this;
|
1211
|
-
|
1212
|
-
|
1213
|
-
|
1327
|
+
return smalltalk.withContext(function($ctx1) {
|
1328
|
+
$2=self["@internalVariables"];
|
1329
|
+
if(($receiver = $2) == nil || $receiver == undefined){
|
1330
|
+
self["@internalVariables"]=_st((smalltalk.Set || Set))._new();
|
1214
1331
|
$1=self["@internalVariables"];
|
1215
1332
|
} else {
|
1216
|
-
$1
|
1333
|
+
$1=$2;
|
1217
1334
|
};
|
1218
1335
|
return $1;
|
1219
|
-
},
|
1336
|
+
}, function($ctx1) {$ctx1.fill(self,"internalVariables",{}, smalltalk.IRMethod)})},
|
1220
1337
|
args: [],
|
1221
1338
|
source: "internalVariables\x0a\x09^ internalVariables ifNil: [ internalVariables := Set new ]",
|
1222
1339
|
messageSends: ["ifNil:", "new"],
|
@@ -1224,6 +1341,22 @@ referencedClasses: ["Set"]
|
|
1224
1341
|
}),
|
1225
1342
|
smalltalk.IRMethod);
|
1226
1343
|
|
1344
|
+
smalltalk.addMethod(
|
1345
|
+
"_isMethod",
|
1346
|
+
smalltalk.method({
|
1347
|
+
selector: "isMethod",
|
1348
|
+
category: 'accessing',
|
1349
|
+
fn: function (){
|
1350
|
+
var self=this;
|
1351
|
+
return smalltalk.withContext(function($ctx1) {
|
1352
|
+
}, function($ctx1) {$ctx1.fill(self,"isMethod",{}, smalltalk.IRMethod)})},
|
1353
|
+
args: [],
|
1354
|
+
source: "isMethod\x0a\x09^ true",
|
1355
|
+
messageSends: [],
|
1356
|
+
referencedClasses: []
|
1357
|
+
}),
|
1358
|
+
smalltalk.IRMethod);
|
1359
|
+
|
1227
1360
|
smalltalk.addMethod(
|
1228
1361
|
"_messageSends",
|
1229
1362
|
smalltalk.method({
|
@@ -1231,8 +1364,10 @@ selector: "messageSends",
|
|
1231
1364
|
category: 'accessing',
|
1232
1365
|
fn: function (){
|
1233
1366
|
var self=this;
|
1234
|
-
return
|
1235
|
-
|
1367
|
+
return smalltalk.withContext(function($ctx1) {
|
1368
|
+
$1=self["@messageSends"];
|
1369
|
+
return $1;
|
1370
|
+
}, function($ctx1) {$ctx1.fill(self,"messageSends",{}, smalltalk.IRMethod)})},
|
1236
1371
|
args: [],
|
1237
1372
|
source: "messageSends\x0a\x09^ messageSends",
|
1238
1373
|
messageSends: [],
|
@@ -1247,8 +1382,8 @@ selector: "messageSends:",
|
|
1247
1382
|
category: 'accessing',
|
1248
1383
|
fn: function (aCollection){
|
1249
1384
|
var self=this;
|
1250
|
-
|
1251
|
-
return self},
|
1385
|
+
return smalltalk.withContext(function($ctx1) {
|
1386
|
+
return self}, function($ctx1) {$ctx1.fill(self,"messageSends:",{aCollection:aCollection}, smalltalk.IRMethod)})},
|
1252
1387
|
args: ["aCollection"],
|
1253
1388
|
source: "messageSends: aCollection\x0a\x09messageSends := aCollection",
|
1254
1389
|
messageSends: [],
|
@@ -1257,18 +1392,19 @@ referencedClasses: []
|
|
1257
1392
|
smalltalk.IRMethod);
|
1258
1393
|
|
1259
1394
|
smalltalk.addMethod(
|
1260
|
-
"
|
1395
|
+
"_method",
|
1261
1396
|
smalltalk.method({
|
1262
|
-
selector: "
|
1397
|
+
selector: "method",
|
1263
1398
|
category: 'accessing',
|
1264
|
-
fn: function (
|
1399
|
+
fn: function (){
|
1265
1400
|
var self=this;
|
1266
|
-
smalltalk.
|
1267
|
-
|
1268
|
-
return
|
1269
|
-
|
1270
|
-
|
1271
|
-
|
1401
|
+
return smalltalk.withContext(function($ctx1) {
|
1402
|
+
$1=self;
|
1403
|
+
return $1;
|
1404
|
+
}, function($ctx1) {$ctx1.fill(self,"method",{}, smalltalk.IRMethod)})},
|
1405
|
+
args: [],
|
1406
|
+
source: "method\x0a\x09^ self",
|
1407
|
+
messageSends: [],
|
1272
1408
|
referencedClasses: []
|
1273
1409
|
}),
|
1274
1410
|
smalltalk.IRMethod);
|
@@ -1280,8 +1416,10 @@ selector: "selector",
|
|
1280
1416
|
category: 'accessing',
|
1281
1417
|
fn: function (){
|
1282
1418
|
var self=this;
|
1283
|
-
return
|
1284
|
-
|
1419
|
+
return smalltalk.withContext(function($ctx1) {
|
1420
|
+
$1=self["@selector"];
|
1421
|
+
return $1;
|
1422
|
+
}, function($ctx1) {$ctx1.fill(self,"selector",{}, smalltalk.IRMethod)})},
|
1285
1423
|
args: [],
|
1286
1424
|
source: "selector\x0a\x09^ selector",
|
1287
1425
|
messageSends: [],
|
@@ -1296,8 +1434,8 @@ selector: "selector:",
|
|
1296
1434
|
category: 'accessing',
|
1297
1435
|
fn: function (aString){
|
1298
1436
|
var self=this;
|
1299
|
-
|
1300
|
-
return self},
|
1437
|
+
return smalltalk.withContext(function($ctx1) {
|
1438
|
+
return self}, function($ctx1) {$ctx1.fill(self,"selector:",{aString:aString}, smalltalk.IRMethod)})},
|
1301
1439
|
args: ["aString"],
|
1302
1440
|
source: "selector: aString\x0a\x09selector := aString",
|
1303
1441
|
messageSends: [],
|
@@ -1312,8 +1450,10 @@ selector: "source",
|
|
1312
1450
|
category: 'accessing',
|
1313
1451
|
fn: function (){
|
1314
1452
|
var self=this;
|
1315
|
-
return
|
1316
|
-
|
1453
|
+
return smalltalk.withContext(function($ctx1) {
|
1454
|
+
$1=self["@source"];
|
1455
|
+
return $1;
|
1456
|
+
}, function($ctx1) {$ctx1.fill(self,"source",{}, smalltalk.IRMethod)})},
|
1317
1457
|
args: [],
|
1318
1458
|
source: "source\x0a\x09^ source",
|
1319
1459
|
messageSends: [],
|
@@ -1328,8 +1468,8 @@ selector: "source:",
|
|
1328
1468
|
category: 'accessing',
|
1329
1469
|
fn: function (aString){
|
1330
1470
|
var self=this;
|
1331
|
-
|
1332
|
-
return self},
|
1471
|
+
return smalltalk.withContext(function($ctx1) {
|
1472
|
+
return self}, function($ctx1) {$ctx1.fill(self,"source:",{aString:aString}, smalltalk.IRMethod)})},
|
1333
1473
|
args: ["aString"],
|
1334
1474
|
source: "source: aString\x0a\x09source := aString",
|
1335
1475
|
messageSends: [],
|
@@ -1337,6 +1477,74 @@ referencedClasses: []
|
|
1337
1477
|
}),
|
1338
1478
|
smalltalk.IRMethod);
|
1339
1479
|
|
1480
|
+
smalltalk.addMethod(
|
1481
|
+
"_superSends",
|
1482
|
+
smalltalk.method({
|
1483
|
+
selector: "superSends",
|
1484
|
+
category: 'accessing',
|
1485
|
+
fn: function (){
|
1486
|
+
var self=this;
|
1487
|
+
return smalltalk.withContext(function($ctx1) {
|
1488
|
+
$1=self["@superSends"];
|
1489
|
+
return $1;
|
1490
|
+
}, function($ctx1) {$ctx1.fill(self,"superSends",{}, smalltalk.IRMethod)})},
|
1491
|
+
args: [],
|
1492
|
+
source: "superSends\x0a\x09^ superSends",
|
1493
|
+
messageSends: [],
|
1494
|
+
referencedClasses: []
|
1495
|
+
}),
|
1496
|
+
smalltalk.IRMethod);
|
1497
|
+
|
1498
|
+
smalltalk.addMethod(
|
1499
|
+
"_superSends_",
|
1500
|
+
smalltalk.method({
|
1501
|
+
selector: "superSends:",
|
1502
|
+
category: 'accessing',
|
1503
|
+
fn: function (aCollection){
|
1504
|
+
var self=this;
|
1505
|
+
return smalltalk.withContext(function($ctx1) {
|
1506
|
+
return self}, function($ctx1) {$ctx1.fill(self,"superSends:",{aCollection:aCollection}, smalltalk.IRMethod)})},
|
1507
|
+
args: ["aCollection"],
|
1508
|
+
source: "superSends: aCollection\x0a\x09superSends := aCollection",
|
1509
|
+
messageSends: [],
|
1510
|
+
referencedClasses: []
|
1511
|
+
}),
|
1512
|
+
smalltalk.IRMethod);
|
1513
|
+
|
1514
|
+
smalltalk.addMethod(
|
1515
|
+
"_theClass",
|
1516
|
+
smalltalk.method({
|
1517
|
+
selector: "theClass",
|
1518
|
+
category: 'accessing',
|
1519
|
+
fn: function (){
|
1520
|
+
var self=this;
|
1521
|
+
return smalltalk.withContext(function($ctx1) {
|
1522
|
+
$1=self["@theClass"];
|
1523
|
+
return $1;
|
1524
|
+
}, function($ctx1) {$ctx1.fill(self,"theClass",{}, smalltalk.IRMethod)})},
|
1525
|
+
args: [],
|
1526
|
+
source: "theClass\x0a\x09^ theClass",
|
1527
|
+
messageSends: [],
|
1528
|
+
referencedClasses: []
|
1529
|
+
}),
|
1530
|
+
smalltalk.IRMethod);
|
1531
|
+
|
1532
|
+
smalltalk.addMethod(
|
1533
|
+
"_theClass_",
|
1534
|
+
smalltalk.method({
|
1535
|
+
selector: "theClass:",
|
1536
|
+
category: 'accessing',
|
1537
|
+
fn: function (aClass){
|
1538
|
+
var self=this;
|
1539
|
+
return smalltalk.withContext(function($ctx1) {
|
1540
|
+
return self}, function($ctx1) {$ctx1.fill(self,"theClass:",{aClass:aClass}, smalltalk.IRMethod)})},
|
1541
|
+
args: ["aClass"],
|
1542
|
+
source: "theClass: aClass\x0a\x09theClass := aClass",
|
1543
|
+
messageSends: [],
|
1544
|
+
referencedClasses: []
|
1545
|
+
}),
|
1546
|
+
smalltalk.IRMethod);
|
1547
|
+
|
1340
1548
|
|
1341
1549
|
|
1342
1550
|
smalltalk.addClass('IRReturn', smalltalk.IRScopedInstruction, [], 'Compiler-IR');
|
@@ -1348,10 +1556,10 @@ selector: "accept:",
|
|
1348
1556
|
category: 'visiting',
|
1349
1557
|
fn: function (aVisitor){
|
1350
1558
|
var self=this;
|
1351
|
-
|
1352
|
-
$1=
|
1559
|
+
return smalltalk.withContext(function($ctx1) {
|
1560
|
+
$1=_st(aVisitor)._visitIRReturn_(self);
|
1353
1561
|
return $1;
|
1354
|
-
},
|
1562
|
+
}, function($ctx1) {$ctx1.fill(self,"accept:",{aVisitor:aVisitor}, smalltalk.IRReturn)})},
|
1355
1563
|
args: ["aVisitor"],
|
1356
1564
|
source: "accept: aVisitor\x0a\x09^ aVisitor visitIRReturn: self",
|
1357
1565
|
messageSends: ["visitIRReturn:"],
|
@@ -1366,8 +1574,8 @@ selector: "canBeAssigned",
|
|
1366
1574
|
category: 'testing',
|
1367
1575
|
fn: function (){
|
1368
1576
|
var self=this;
|
1369
|
-
return
|
1370
|
-
},
|
1577
|
+
return smalltalk.withContext(function($ctx1) {
|
1578
|
+
}, function($ctx1) {$ctx1.fill(self,"canBeAssigned",{}, smalltalk.IRReturn)})},
|
1371
1579
|
args: [],
|
1372
1580
|
source: "canBeAssigned\x0a\x09^ false",
|
1373
1581
|
messageSends: [],
|
@@ -1382,8 +1590,8 @@ selector: "isBlockReturn",
|
|
1382
1590
|
category: 'testing',
|
1383
1591
|
fn: function (){
|
1384
1592
|
var self=this;
|
1385
|
-
return
|
1386
|
-
},
|
1593
|
+
return smalltalk.withContext(function($ctx1) {
|
1594
|
+
}, function($ctx1) {$ctx1.fill(self,"isBlockReturn",{}, smalltalk.IRReturn)})},
|
1387
1595
|
args: [],
|
1388
1596
|
source: "isBlockReturn\x0a\x09^ false",
|
1389
1597
|
messageSends: [],
|
@@ -1398,8 +1606,8 @@ selector: "isLocalReturn",
|
|
1398
1606
|
category: 'testing',
|
1399
1607
|
fn: function (){
|
1400
1608
|
var self=this;
|
1401
|
-
return
|
1402
|
-
},
|
1609
|
+
return smalltalk.withContext(function($ctx1) {
|
1610
|
+
}, function($ctx1) {$ctx1.fill(self,"isLocalReturn",{}, smalltalk.IRReturn)})},
|
1403
1611
|
args: [],
|
1404
1612
|
source: "isLocalReturn\x0a\x09^ true",
|
1405
1613
|
messageSends: [],
|
@@ -1414,10 +1622,10 @@ selector: "isNonLocalReturn",
|
|
1414
1622
|
category: 'testing',
|
1415
1623
|
fn: function (){
|
1416
1624
|
var self=this;
|
1417
|
-
|
1418
|
-
$1=
|
1625
|
+
return smalltalk.withContext(function($ctx1) {
|
1626
|
+
$1=_st(_st(self)._isLocalReturn())._not();
|
1419
1627
|
return $1;
|
1420
|
-
},
|
1628
|
+
}, function($ctx1) {$ctx1.fill(self,"isNonLocalReturn",{}, smalltalk.IRReturn)})},
|
1421
1629
|
args: [],
|
1422
1630
|
source: "isNonLocalReturn\x0a\x09^ self isLocalReturn not",
|
1423
1631
|
messageSends: ["not", "isLocalReturn"],
|
@@ -1432,8 +1640,8 @@ selector: "isReturn",
|
|
1432
1640
|
category: 'testing',
|
1433
1641
|
fn: function (){
|
1434
1642
|
var self=this;
|
1435
|
-
return
|
1436
|
-
},
|
1643
|
+
return smalltalk.withContext(function($ctx1) {
|
1644
|
+
}, function($ctx1) {$ctx1.fill(self,"isReturn",{}, smalltalk.IRReturn)})},
|
1437
1645
|
args: [],
|
1438
1646
|
source: "isReturn\x0a\x09^ true",
|
1439
1647
|
messageSends: [],
|
@@ -1452,10 +1660,10 @@ selector: "accept:",
|
|
1452
1660
|
category: 'visiting',
|
1453
1661
|
fn: function (aVisitor){
|
1454
1662
|
var self=this;
|
1455
|
-
|
1456
|
-
$1=
|
1663
|
+
return smalltalk.withContext(function($ctx1) {
|
1664
|
+
$1=_st(aVisitor)._visitIRBlockReturn_(self);
|
1457
1665
|
return $1;
|
1458
|
-
},
|
1666
|
+
}, function($ctx1) {$ctx1.fill(self,"accept:",{aVisitor:aVisitor}, smalltalk.IRBlockReturn)})},
|
1459
1667
|
args: ["aVisitor"],
|
1460
1668
|
source: "accept: aVisitor\x0a\x09^ aVisitor visitIRBlockReturn: self",
|
1461
1669
|
messageSends: ["visitIRBlockReturn:"],
|
@@ -1470,8 +1678,8 @@ selector: "isBlockReturn",
|
|
1470
1678
|
category: 'testing',
|
1471
1679
|
fn: function (){
|
1472
1680
|
var self=this;
|
1473
|
-
return
|
1474
|
-
},
|
1681
|
+
return smalltalk.withContext(function($ctx1) {
|
1682
|
+
}, function($ctx1) {$ctx1.fill(self,"isBlockReturn",{}, smalltalk.IRBlockReturn)})},
|
1475
1683
|
args: [],
|
1476
1684
|
source: "isBlockReturn\x0a\x09^ true",
|
1477
1685
|
messageSends: [],
|
@@ -1490,10 +1698,10 @@ selector: "accept:",
|
|
1490
1698
|
category: 'visiting',
|
1491
1699
|
fn: function (aVisitor){
|
1492
1700
|
var self=this;
|
1493
|
-
|
1494
|
-
$1=
|
1701
|
+
return smalltalk.withContext(function($ctx1) {
|
1702
|
+
$1=_st(aVisitor)._visitIRNonLocalReturn_(self);
|
1495
1703
|
return $1;
|
1496
|
-
},
|
1704
|
+
}, function($ctx1) {$ctx1.fill(self,"accept:",{aVisitor:aVisitor}, smalltalk.IRNonLocalReturn)})},
|
1497
1705
|
args: ["aVisitor"],
|
1498
1706
|
source: "accept: aVisitor\x0a\x09^ aVisitor visitIRNonLocalReturn: self",
|
1499
1707
|
messageSends: ["visitIRNonLocalReturn:"],
|
@@ -1508,8 +1716,8 @@ selector: "isLocalReturn",
|
|
1508
1716
|
category: 'testing',
|
1509
1717
|
fn: function (){
|
1510
1718
|
var self=this;
|
1511
|
-
return
|
1512
|
-
},
|
1719
|
+
return smalltalk.withContext(function($ctx1) {
|
1720
|
+
}, function($ctx1) {$ctx1.fill(self,"isLocalReturn",{}, smalltalk.IRNonLocalReturn)})},
|
1513
1721
|
args: [],
|
1514
1722
|
source: "isLocalReturn\x0a\x09^ false",
|
1515
1723
|
messageSends: [],
|
@@ -1519,8 +1727,79 @@ smalltalk.IRNonLocalReturn);
|
|
1519
1727
|
|
1520
1728
|
|
1521
1729
|
|
1730
|
+
smalltalk.addClass('IRTempDeclaration', smalltalk.IRScopedInstruction, ['name'], 'Compiler-IR');
|
1731
|
+
smalltalk.addMethod(
|
1732
|
+
"_accept_",
|
1733
|
+
smalltalk.method({
|
1734
|
+
selector: "accept:",
|
1735
|
+
category: 'visiting',
|
1736
|
+
fn: function (aVisitor){
|
1737
|
+
var self=this;
|
1738
|
+
return smalltalk.withContext(function($ctx1) {
|
1739
|
+
$1=_st(aVisitor)._visitIRTempDeclaration_(self);
|
1740
|
+
return $1;
|
1741
|
+
}, function($ctx1) {$ctx1.fill(self,"accept:",{aVisitor:aVisitor}, smalltalk.IRTempDeclaration)})},
|
1742
|
+
args: ["aVisitor"],
|
1743
|
+
source: "accept: aVisitor\x0a\x09^ aVisitor visitIRTempDeclaration: self",
|
1744
|
+
messageSends: ["visitIRTempDeclaration:"],
|
1745
|
+
referencedClasses: []
|
1746
|
+
}),
|
1747
|
+
smalltalk.IRTempDeclaration);
|
1748
|
+
|
1749
|
+
smalltalk.addMethod(
|
1750
|
+
"_isTempDeclaration",
|
1751
|
+
smalltalk.method({
|
1752
|
+
selector: "isTempDeclaration",
|
1753
|
+
category: 'testing',
|
1754
|
+
fn: function (){
|
1755
|
+
var self=this;
|
1756
|
+
return smalltalk.withContext(function($ctx1) {
|
1757
|
+
}, function($ctx1) {$ctx1.fill(self,"isTempDeclaration",{}, smalltalk.IRTempDeclaration)})},
|
1758
|
+
args: [],
|
1759
|
+
source: "isTempDeclaration\x0a\x09^ true",
|
1760
|
+
messageSends: [],
|
1761
|
+
referencedClasses: []
|
1762
|
+
}),
|
1763
|
+
smalltalk.IRTempDeclaration);
|
1764
|
+
|
1765
|
+
smalltalk.addMethod(
|
1766
|
+
"_name",
|
1767
|
+
smalltalk.method({
|
1768
|
+
selector: "name",
|
1769
|
+
category: 'accessing',
|
1770
|
+
fn: function (){
|
1771
|
+
var self=this;
|
1772
|
+
return smalltalk.withContext(function($ctx1) {
|
1773
|
+
$1=self["@name"];
|
1774
|
+
return $1;
|
1775
|
+
}, function($ctx1) {$ctx1.fill(self,"name",{}, smalltalk.IRTempDeclaration)})},
|
1776
|
+
args: [],
|
1777
|
+
source: "name\x0a\x09^ name",
|
1778
|
+
messageSends: [],
|
1779
|
+
referencedClasses: []
|
1780
|
+
}),
|
1781
|
+
smalltalk.IRTempDeclaration);
|
1782
|
+
|
1783
|
+
smalltalk.addMethod(
|
1784
|
+
"_name_",
|
1785
|
+
smalltalk.method({
|
1786
|
+
selector: "name:",
|
1787
|
+
category: 'accessing',
|
1788
|
+
fn: function (aString){
|
1789
|
+
var self=this;
|
1790
|
+
return smalltalk.withContext(function($ctx1) {
|
1791
|
+
return self}, function($ctx1) {$ctx1.fill(self,"name:",{aString:aString}, smalltalk.IRTempDeclaration)})},
|
1792
|
+
args: ["aString"],
|
1793
|
+
source: "name: aString\x0a\x09name := aString",
|
1794
|
+
messageSends: [],
|
1795
|
+
referencedClasses: []
|
1796
|
+
}),
|
1797
|
+
smalltalk.IRTempDeclaration);
|
1798
|
+
|
1799
|
+
|
1800
|
+
|
1522
1801
|
smalltalk.addClass('IRSend', smalltalk.IRInstruction, ['selector', 'classSend', 'index'], 'Compiler-IR');
|
1523
|
-
smalltalk.IRSend.comment="I am a message send instruction.
|
1802
|
+
smalltalk.IRSend.comment="I am a message send instruction."
|
1524
1803
|
smalltalk.addMethod(
|
1525
1804
|
"_accept_",
|
1526
1805
|
smalltalk.method({
|
@@ -1528,10 +1807,10 @@ selector: "accept:",
|
|
1528
1807
|
category: 'visiting',
|
1529
1808
|
fn: function (aVisitor){
|
1530
1809
|
var self=this;
|
1531
|
-
|
1532
|
-
$1=
|
1810
|
+
return smalltalk.withContext(function($ctx1) {
|
1811
|
+
$1=_st(aVisitor)._visitIRSend_(self);
|
1533
1812
|
return $1;
|
1534
|
-
},
|
1813
|
+
}, function($ctx1) {$ctx1.fill(self,"accept:",{aVisitor:aVisitor}, smalltalk.IRSend)})},
|
1535
1814
|
args: ["aVisitor"],
|
1536
1815
|
source: "accept: aVisitor\x0a\x09^ aVisitor visitIRSend: self",
|
1537
1816
|
messageSends: ["visitIRSend:"],
|
@@ -1546,8 +1825,10 @@ selector: "classSend",
|
|
1546
1825
|
category: 'accessing',
|
1547
1826
|
fn: function (){
|
1548
1827
|
var self=this;
|
1549
|
-
return
|
1550
|
-
|
1828
|
+
return smalltalk.withContext(function($ctx1) {
|
1829
|
+
$1=self["@classSend"];
|
1830
|
+
return $1;
|
1831
|
+
}, function($ctx1) {$ctx1.fill(self,"classSend",{}, smalltalk.IRSend)})},
|
1551
1832
|
args: [],
|
1552
1833
|
source: "classSend\x0a\x09^ classSend",
|
1553
1834
|
messageSends: [],
|
@@ -1562,8 +1843,8 @@ selector: "classSend:",
|
|
1562
1843
|
category: 'accessing',
|
1563
1844
|
fn: function (aClass){
|
1564
1845
|
var self=this;
|
1565
|
-
|
1566
|
-
return self},
|
1846
|
+
return smalltalk.withContext(function($ctx1) {
|
1847
|
+
return self}, function($ctx1) {$ctx1.fill(self,"classSend:",{aClass:aClass}, smalltalk.IRSend)})},
|
1567
1848
|
args: ["aClass"],
|
1568
1849
|
source: "classSend: aClass\x0a\x09classSend := aClass",
|
1569
1850
|
messageSends: [],
|
@@ -1578,8 +1859,10 @@ selector: "index",
|
|
1578
1859
|
category: 'accessing',
|
1579
1860
|
fn: function (){
|
1580
1861
|
var self=this;
|
1581
|
-
return
|
1582
|
-
|
1862
|
+
return smalltalk.withContext(function($ctx1) {
|
1863
|
+
$1=self["@index"];
|
1864
|
+
return $1;
|
1865
|
+
}, function($ctx1) {$ctx1.fill(self,"index",{}, smalltalk.IRSend)})},
|
1583
1866
|
args: [],
|
1584
1867
|
source: "index\x0a\x09^ index",
|
1585
1868
|
messageSends: [],
|
@@ -1594,8 +1877,8 @@ selector: "index:",
|
|
1594
1877
|
category: 'accessing',
|
1595
1878
|
fn: function (anInteger){
|
1596
1879
|
var self=this;
|
1597
|
-
|
1598
|
-
return self},
|
1880
|
+
return smalltalk.withContext(function($ctx1) {
|
1881
|
+
return self}, function($ctx1) {$ctx1.fill(self,"index:",{anInteger:anInteger}, smalltalk.IRSend)})},
|
1599
1882
|
args: ["anInteger"],
|
1600
1883
|
source: "index: anInteger\x0a\x09index := anInteger",
|
1601
1884
|
messageSends: [],
|
@@ -1610,8 +1893,8 @@ selector: "isSend",
|
|
1610
1893
|
category: 'testing',
|
1611
1894
|
fn: function (){
|
1612
1895
|
var self=this;
|
1613
|
-
return
|
1614
|
-
},
|
1896
|
+
return smalltalk.withContext(function($ctx1) {
|
1897
|
+
}, function($ctx1) {$ctx1.fill(self,"isSend",{}, smalltalk.IRSend)})},
|
1615
1898
|
args: [],
|
1616
1899
|
source: "isSend\x0a\x09^ true",
|
1617
1900
|
messageSends: [],
|
@@ -1619,6 +1902,29 @@ referencedClasses: []
|
|
1619
1902
|
}),
|
1620
1903
|
smalltalk.IRSend);
|
1621
1904
|
|
1905
|
+
smalltalk.addMethod(
|
1906
|
+
"_javascriptSelector",
|
1907
|
+
smalltalk.method({
|
1908
|
+
selector: "javascriptSelector",
|
1909
|
+
category: 'accessing',
|
1910
|
+
fn: function (){
|
1911
|
+
var self=this;
|
1912
|
+
return smalltalk.withContext(function($ctx1) {
|
1913
|
+
$2=_st(self)._classSend();
|
1914
|
+
if(($receiver = $2) == nil || $receiver == undefined){
|
1915
|
+
$1=_st(_st(self)._selector())._asSelector();
|
1916
|
+
} else {
|
1917
|
+
$1=_st(_st(self)._selector())._asSuperSelector();
|
1918
|
+
};
|
1919
|
+
return $1;
|
1920
|
+
}, function($ctx1) {$ctx1.fill(self,"javascriptSelector",{}, smalltalk.IRSend)})},
|
1921
|
+
args: [],
|
1922
|
+
source: "javascriptSelector\x0a\x09^ self classSend \x0a \x09ifNil: [ self selector asSelector ]\x0a \x09ifNotNil: [ self selector asSuperSelector ]",
|
1923
|
+
messageSends: ["ifNil:ifNotNil:", "asSelector", "selector", "asSuperSelector", "classSend"],
|
1924
|
+
referencedClasses: []
|
1925
|
+
}),
|
1926
|
+
smalltalk.IRSend);
|
1927
|
+
|
1622
1928
|
smalltalk.addMethod(
|
1623
1929
|
"_selector",
|
1624
1930
|
smalltalk.method({
|
@@ -1626,8 +1932,10 @@ selector: "selector",
|
|
1626
1932
|
category: 'accessing',
|
1627
1933
|
fn: function (){
|
1628
1934
|
var self=this;
|
1629
|
-
return
|
1630
|
-
|
1935
|
+
return smalltalk.withContext(function($ctx1) {
|
1936
|
+
$1=self["@selector"];
|
1937
|
+
return $1;
|
1938
|
+
}, function($ctx1) {$ctx1.fill(self,"selector",{}, smalltalk.IRSend)})},
|
1631
1939
|
args: [],
|
1632
1940
|
source: "selector\x0a\x09^ selector",
|
1633
1941
|
messageSends: [],
|
@@ -1642,8 +1950,8 @@ selector: "selector:",
|
|
1642
1950
|
category: 'accessing',
|
1643
1951
|
fn: function (aString){
|
1644
1952
|
var self=this;
|
1645
|
-
|
1646
|
-
return self},
|
1953
|
+
return smalltalk.withContext(function($ctx1) {
|
1954
|
+
return self}, function($ctx1) {$ctx1.fill(self,"selector:",{aString:aString}, smalltalk.IRSend)})},
|
1647
1955
|
args: ["aString"],
|
1648
1956
|
source: "selector: aString\x0a\x09selector := aString",
|
1649
1957
|
messageSends: [],
|
@@ -1661,10 +1969,10 @@ selector: "accept:",
|
|
1661
1969
|
category: 'visiting',
|
1662
1970
|
fn: function (aVisitor){
|
1663
1971
|
var self=this;
|
1664
|
-
|
1665
|
-
$1=
|
1972
|
+
return smalltalk.withContext(function($ctx1) {
|
1973
|
+
$1=_st(aVisitor)._visitIRSequence_(self);
|
1666
1974
|
return $1;
|
1667
|
-
},
|
1975
|
+
}, function($ctx1) {$ctx1.fill(self,"accept:",{aVisitor:aVisitor}, smalltalk.IRSequence)})},
|
1668
1976
|
args: ["aVisitor"],
|
1669
1977
|
source: "accept: aVisitor\x0a\x09^ aVisitor visitIRSequence: self",
|
1670
1978
|
messageSends: ["visitIRSequence:"],
|
@@ -1679,8 +1987,8 @@ selector: "isSequence",
|
|
1679
1987
|
category: 'testing',
|
1680
1988
|
fn: function (){
|
1681
1989
|
var self=this;
|
1682
|
-
return
|
1683
|
-
},
|
1990
|
+
return smalltalk.withContext(function($ctx1) {
|
1991
|
+
}, function($ctx1) {$ctx1.fill(self,"isSequence",{}, smalltalk.IRSequence)})},
|
1684
1992
|
args: [],
|
1685
1993
|
source: "isSequence\x0a\x09^ true",
|
1686
1994
|
messageSends: [],
|
@@ -1698,10 +2006,10 @@ selector: "accept:",
|
|
1698
2006
|
category: 'visiting',
|
1699
2007
|
fn: function (aVisitor){
|
1700
2008
|
var self=this;
|
1701
|
-
|
1702
|
-
$1=
|
2009
|
+
return smalltalk.withContext(function($ctx1) {
|
2010
|
+
$1=_st(aVisitor)._visitIRBlockSequence_(self);
|
1703
2011
|
return $1;
|
1704
|
-
},
|
2012
|
+
}, function($ctx1) {$ctx1.fill(self,"accept:",{aVisitor:aVisitor}, smalltalk.IRBlockSequence)})},
|
1705
2013
|
args: ["aVisitor"],
|
1706
2014
|
source: "accept: aVisitor\x0a\x09^ aVisitor visitIRBlockSequence: self",
|
1707
2015
|
messageSends: ["visitIRBlockSequence:"],
|
@@ -1711,76 +2019,6 @@ smalltalk.IRBlockSequence);
|
|
1711
2019
|
|
1712
2020
|
|
1713
2021
|
|
1714
|
-
smalltalk.addClass('IRTempDeclaration', smalltalk.IRInstruction, ['name'], 'Compiler-IR');
|
1715
|
-
smalltalk.IRTempDeclaration.comment="I am a temporary variable declaration instruction"
|
1716
|
-
smalltalk.addMethod(
|
1717
|
-
"_accept_",
|
1718
|
-
smalltalk.method({
|
1719
|
-
selector: "accept:",
|
1720
|
-
category: 'visiting',
|
1721
|
-
fn: function (aVisitor){
|
1722
|
-
var self=this;
|
1723
|
-
var $1;
|
1724
|
-
$1=smalltalk.send(aVisitor,"_visitIRTempDeclaration_",[self]);
|
1725
|
-
return $1;
|
1726
|
-
},
|
1727
|
-
args: ["aVisitor"],
|
1728
|
-
source: "accept: aVisitor\x0a\x09^ aVisitor visitIRTempDeclaration: self",
|
1729
|
-
messageSends: ["visitIRTempDeclaration:"],
|
1730
|
-
referencedClasses: []
|
1731
|
-
}),
|
1732
|
-
smalltalk.IRTempDeclaration);
|
1733
|
-
|
1734
|
-
smalltalk.addMethod(
|
1735
|
-
"_isTempDeclaration",
|
1736
|
-
smalltalk.method({
|
1737
|
-
selector: "isTempDeclaration",
|
1738
|
-
category: 'visiting',
|
1739
|
-
fn: function (){
|
1740
|
-
var self=this;
|
1741
|
-
return true;
|
1742
|
-
},
|
1743
|
-
args: [],
|
1744
|
-
source: "isTempDeclaration\x0a\x09^ true",
|
1745
|
-
messageSends: [],
|
1746
|
-
referencedClasses: []
|
1747
|
-
}),
|
1748
|
-
smalltalk.IRTempDeclaration);
|
1749
|
-
|
1750
|
-
smalltalk.addMethod(
|
1751
|
-
"_name",
|
1752
|
-
smalltalk.method({
|
1753
|
-
selector: "name",
|
1754
|
-
category: 'accessing',
|
1755
|
-
fn: function (){
|
1756
|
-
var self=this;
|
1757
|
-
return self["@name"];
|
1758
|
-
},
|
1759
|
-
args: [],
|
1760
|
-
source: "name\x0a\x09^ name",
|
1761
|
-
messageSends: [],
|
1762
|
-
referencedClasses: []
|
1763
|
-
}),
|
1764
|
-
smalltalk.IRTempDeclaration);
|
1765
|
-
|
1766
|
-
smalltalk.addMethod(
|
1767
|
-
"_name_",
|
1768
|
-
smalltalk.method({
|
1769
|
-
selector: "name:",
|
1770
|
-
category: 'accessing',
|
1771
|
-
fn: function (aString){
|
1772
|
-
var self=this;
|
1773
|
-
self["@name"]=aString;
|
1774
|
-
return self},
|
1775
|
-
args: ["aString"],
|
1776
|
-
source: "name: aString\x0a\x09name := aString",
|
1777
|
-
messageSends: [],
|
1778
|
-
referencedClasses: []
|
1779
|
-
}),
|
1780
|
-
smalltalk.IRTempDeclaration);
|
1781
|
-
|
1782
|
-
|
1783
|
-
|
1784
2022
|
smalltalk.addClass('IRValue', smalltalk.IRInstruction, ['value'], 'Compiler-IR');
|
1785
2023
|
smalltalk.IRValue.comment="I am the simplest possible instruction. I represent a value."
|
1786
2024
|
smalltalk.addMethod(
|
@@ -1790,10 +2028,10 @@ selector: "accept:",
|
|
1790
2028
|
category: 'visiting',
|
1791
2029
|
fn: function (aVisitor){
|
1792
2030
|
var self=this;
|
1793
|
-
|
1794
|
-
$1=
|
2031
|
+
return smalltalk.withContext(function($ctx1) {
|
2032
|
+
$1=_st(aVisitor)._visitIRValue_(self);
|
1795
2033
|
return $1;
|
1796
|
-
},
|
2034
|
+
}, function($ctx1) {$ctx1.fill(self,"accept:",{aVisitor:aVisitor}, smalltalk.IRValue)})},
|
1797
2035
|
args: ["aVisitor"],
|
1798
2036
|
source: "accept: aVisitor\x0a\x09^ aVisitor visitIRValue: self",
|
1799
2037
|
messageSends: ["visitIRValue:"],
|
@@ -1808,8 +2046,10 @@ selector: "value",
|
|
1808
2046
|
category: 'accessing',
|
1809
2047
|
fn: function (){
|
1810
2048
|
var self=this;
|
1811
|
-
return
|
1812
|
-
|
2049
|
+
return smalltalk.withContext(function($ctx1) {
|
2050
|
+
$1=self["@value"];
|
2051
|
+
return $1;
|
2052
|
+
}, function($ctx1) {$ctx1.fill(self,"value",{}, smalltalk.IRValue)})},
|
1813
2053
|
args: [],
|
1814
2054
|
source: "value\x0a\x09^value",
|
1815
2055
|
messageSends: [],
|
@@ -1824,8 +2064,8 @@ selector: "value:",
|
|
1824
2064
|
category: 'accessing',
|
1825
2065
|
fn: function (aString){
|
1826
2066
|
var self=this;
|
1827
|
-
|
1828
|
-
return self},
|
2067
|
+
return smalltalk.withContext(function($ctx1) {
|
2068
|
+
return self}, function($ctx1) {$ctx1.fill(self,"value:",{aString:aString}, smalltalk.IRValue)})},
|
1829
2069
|
args: ["aString"],
|
1830
2070
|
source: "value: aString\x0a\x09value := aString",
|
1831
2071
|
messageSends: [],
|
@@ -1844,10 +2084,10 @@ selector: "accept:",
|
|
1844
2084
|
category: 'visiting',
|
1845
2085
|
fn: function (aVisitor){
|
1846
2086
|
var self=this;
|
1847
|
-
|
1848
|
-
$1=
|
2087
|
+
return smalltalk.withContext(function($ctx1) {
|
2088
|
+
$1=_st(aVisitor)._visitIRVariable_(self);
|
1849
2089
|
return $1;
|
1850
|
-
},
|
2090
|
+
}, function($ctx1) {$ctx1.fill(self,"accept:",{aVisitor:aVisitor}, smalltalk.IRVariable)})},
|
1851
2091
|
args: ["aVisitor"],
|
1852
2092
|
source: "accept: aVisitor\x0a\x09^ aVisitor visitIRVariable: self",
|
1853
2093
|
messageSends: ["visitIRVariable:"],
|
@@ -1862,8 +2102,8 @@ selector: "isVariable",
|
|
1862
2102
|
category: 'testing',
|
1863
2103
|
fn: function (){
|
1864
2104
|
var self=this;
|
1865
|
-
return
|
1866
|
-
},
|
2105
|
+
return smalltalk.withContext(function($ctx1) {
|
2106
|
+
}, function($ctx1) {$ctx1.fill(self,"isVariable",{}, smalltalk.IRVariable)})},
|
1867
2107
|
args: [],
|
1868
2108
|
source: "isVariable\x0a\x09^ true",
|
1869
2109
|
messageSends: [],
|
@@ -1878,8 +2118,10 @@ selector: "variable",
|
|
1878
2118
|
category: 'accessing',
|
1879
2119
|
fn: function (){
|
1880
2120
|
var self=this;
|
1881
|
-
return
|
1882
|
-
|
2121
|
+
return smalltalk.withContext(function($ctx1) {
|
2122
|
+
$1=self["@variable"];
|
2123
|
+
return $1;
|
2124
|
+
}, function($ctx1) {$ctx1.fill(self,"variable",{}, smalltalk.IRVariable)})},
|
1883
2125
|
args: [],
|
1884
2126
|
source: "variable\x0a\x09^ variable",
|
1885
2127
|
messageSends: [],
|
@@ -1894,8 +2136,8 @@ selector: "variable:",
|
|
1894
2136
|
category: 'accessing',
|
1895
2137
|
fn: function (aScopeVariable){
|
1896
2138
|
var self=this;
|
1897
|
-
|
1898
|
-
return self},
|
2139
|
+
return smalltalk.withContext(function($ctx1) {
|
2140
|
+
return self}, function($ctx1) {$ctx1.fill(self,"variable:",{aScopeVariable:aScopeVariable}, smalltalk.IRVariable)})},
|
1899
2141
|
args: ["aScopeVariable"],
|
1900
2142
|
source: "variable: aScopeVariable\x0a\x09variable := aScopeVariable",
|
1901
2143
|
messageSends: [],
|
@@ -1913,10 +2155,10 @@ selector: "accept:",
|
|
1913
2155
|
category: 'visiting',
|
1914
2156
|
fn: function (aVisitor){
|
1915
2157
|
var self=this;
|
1916
|
-
|
1917
|
-
$1=
|
2158
|
+
return smalltalk.withContext(function($ctx1) {
|
2159
|
+
$1=_st(aVisitor)._visitIRVerbatim_(self);
|
1918
2160
|
return $1;
|
1919
|
-
},
|
2161
|
+
}, function($ctx1) {$ctx1.fill(self,"accept:",{aVisitor:aVisitor}, smalltalk.IRVerbatim)})},
|
1920
2162
|
args: ["aVisitor"],
|
1921
2163
|
source: "accept: aVisitor\x0a\x09^ aVisitor visitIRVerbatim: self",
|
1922
2164
|
messageSends: ["visitIRVerbatim:"],
|
@@ -1931,8 +2173,10 @@ selector: "source",
|
|
1931
2173
|
category: 'accessing',
|
1932
2174
|
fn: function (){
|
1933
2175
|
var self=this;
|
1934
|
-
return
|
1935
|
-
|
2176
|
+
return smalltalk.withContext(function($ctx1) {
|
2177
|
+
$1=self["@source"];
|
2178
|
+
return $1;
|
2179
|
+
}, function($ctx1) {$ctx1.fill(self,"source",{}, smalltalk.IRVerbatim)})},
|
1936
2180
|
args: [],
|
1937
2181
|
source: "source\x0a\x09^ source",
|
1938
2182
|
messageSends: [],
|
@@ -1947,8 +2191,8 @@ selector: "source:",
|
|
1947
2191
|
category: 'accessing',
|
1948
2192
|
fn: function (aString){
|
1949
2193
|
var self=this;
|
1950
|
-
|
1951
|
-
return self},
|
2194
|
+
return smalltalk.withContext(function($ctx1) {
|
2195
|
+
return self}, function($ctx1) {$ctx1.fill(self,"source:",{aString:aString}, smalltalk.IRVerbatim)})},
|
1952
2196
|
args: ["aString"],
|
1953
2197
|
source: "source: aString\x0a\x09source := aString",
|
1954
2198
|
messageSends: [],
|
@@ -1966,10 +2210,10 @@ selector: "visit:",
|
|
1966
2210
|
category: 'visiting',
|
1967
2211
|
fn: function (anIRInstruction){
|
1968
2212
|
var self=this;
|
1969
|
-
|
1970
|
-
$1=
|
2213
|
+
return smalltalk.withContext(function($ctx1) {
|
2214
|
+
$1=_st(anIRInstruction)._accept_(self);
|
1971
2215
|
return $1;
|
1972
|
-
},
|
2216
|
+
}, function($ctx1) {$ctx1.fill(self,"visit:",{anIRInstruction:anIRInstruction}, smalltalk.IRVisitor)})},
|
1973
2217
|
args: ["anIRInstruction"],
|
1974
2218
|
source: "visit: anIRInstruction\x0a\x09^ anIRInstruction accept: self",
|
1975
2219
|
messageSends: ["accept:"],
|
@@ -1984,10 +2228,10 @@ selector: "visitIRAssignment:",
|
|
1984
2228
|
category: 'visiting',
|
1985
2229
|
fn: function (anIRAssignment){
|
1986
2230
|
var self=this;
|
1987
|
-
|
1988
|
-
$1=
|
2231
|
+
return smalltalk.withContext(function($ctx1) {
|
2232
|
+
$1=_st(self)._visitIRInstruction_(anIRAssignment);
|
1989
2233
|
return $1;
|
1990
|
-
},
|
2234
|
+
}, function($ctx1) {$ctx1.fill(self,"visitIRAssignment:",{anIRAssignment:anIRAssignment}, smalltalk.IRVisitor)})},
|
1991
2235
|
args: ["anIRAssignment"],
|
1992
2236
|
source: "visitIRAssignment: anIRAssignment\x0a\x09^ self visitIRInstruction: anIRAssignment",
|
1993
2237
|
messageSends: ["visitIRInstruction:"],
|
@@ -2002,10 +2246,10 @@ selector: "visitIRBlockReturn:",
|
|
2002
2246
|
category: 'visiting',
|
2003
2247
|
fn: function (anIRBlockReturn){
|
2004
2248
|
var self=this;
|
2005
|
-
|
2006
|
-
$1=
|
2249
|
+
return smalltalk.withContext(function($ctx1) {
|
2250
|
+
$1=_st(self)._visitIRReturn_(anIRBlockReturn);
|
2007
2251
|
return $1;
|
2008
|
-
},
|
2252
|
+
}, function($ctx1) {$ctx1.fill(self,"visitIRBlockReturn:",{anIRBlockReturn:anIRBlockReturn}, smalltalk.IRVisitor)})},
|
2009
2253
|
args: ["anIRBlockReturn"],
|
2010
2254
|
source: "visitIRBlockReturn: anIRBlockReturn\x0a\x09^ self visitIRReturn: anIRBlockReturn",
|
2011
2255
|
messageSends: ["visitIRReturn:"],
|
@@ -2020,10 +2264,10 @@ selector: "visitIRBlockSequence:",
|
|
2020
2264
|
category: 'visiting',
|
2021
2265
|
fn: function (anIRBlockSequence){
|
2022
2266
|
var self=this;
|
2023
|
-
|
2024
|
-
$1=
|
2267
|
+
return smalltalk.withContext(function($ctx1) {
|
2268
|
+
$1=_st(self)._visitIRSequence_(anIRBlockSequence);
|
2025
2269
|
return $1;
|
2026
|
-
},
|
2270
|
+
}, function($ctx1) {$ctx1.fill(self,"visitIRBlockSequence:",{anIRBlockSequence:anIRBlockSequence}, smalltalk.IRVisitor)})},
|
2027
2271
|
args: ["anIRBlockSequence"],
|
2028
2272
|
source: "visitIRBlockSequence: anIRBlockSequence\x0a\x09^ self visitIRSequence: anIRBlockSequence",
|
2029
2273
|
messageSends: ["visitIRSequence:"],
|
@@ -2038,10 +2282,10 @@ selector: "visitIRClosure:",
|
|
2038
2282
|
category: 'visiting',
|
2039
2283
|
fn: function (anIRClosure){
|
2040
2284
|
var self=this;
|
2041
|
-
|
2042
|
-
$1=
|
2285
|
+
return smalltalk.withContext(function($ctx1) {
|
2286
|
+
$1=_st(self)._visitIRInstruction_(anIRClosure);
|
2043
2287
|
return $1;
|
2044
|
-
},
|
2288
|
+
}, function($ctx1) {$ctx1.fill(self,"visitIRClosure:",{anIRClosure:anIRClosure}, smalltalk.IRVisitor)})},
|
2045
2289
|
args: ["anIRClosure"],
|
2046
2290
|
source: "visitIRClosure: anIRClosure\x0a\x09^ self visitIRInstruction: anIRClosure",
|
2047
2291
|
messageSends: ["visitIRInstruction:"],
|
@@ -2056,10 +2300,10 @@ selector: "visitIRDynamicArray:",
|
|
2056
2300
|
category: 'visiting',
|
2057
2301
|
fn: function (anIRDynamicArray){
|
2058
2302
|
var self=this;
|
2059
|
-
|
2060
|
-
$1=
|
2303
|
+
return smalltalk.withContext(function($ctx1) {
|
2304
|
+
$1=_st(self)._visitIRInstruction_(anIRDynamicArray);
|
2061
2305
|
return $1;
|
2062
|
-
},
|
2306
|
+
}, function($ctx1) {$ctx1.fill(self,"visitIRDynamicArray:",{anIRDynamicArray:anIRDynamicArray}, smalltalk.IRVisitor)})},
|
2063
2307
|
args: ["anIRDynamicArray"],
|
2064
2308
|
source: "visitIRDynamicArray: anIRDynamicArray\x0a\x09^ self visitIRInstruction: anIRDynamicArray",
|
2065
2309
|
messageSends: ["visitIRInstruction:"],
|
@@ -2074,10 +2318,10 @@ selector: "visitIRDynamicDictionary:",
|
|
2074
2318
|
category: 'visiting',
|
2075
2319
|
fn: function (anIRDynamicDictionary){
|
2076
2320
|
var self=this;
|
2077
|
-
|
2078
|
-
$1=
|
2321
|
+
return smalltalk.withContext(function($ctx1) {
|
2322
|
+
$1=_st(self)._visitIRInstruction_(anIRDynamicDictionary);
|
2079
2323
|
return $1;
|
2080
|
-
},
|
2324
|
+
}, function($ctx1) {$ctx1.fill(self,"visitIRDynamicDictionary:",{anIRDynamicDictionary:anIRDynamicDictionary}, smalltalk.IRVisitor)})},
|
2081
2325
|
args: ["anIRDynamicDictionary"],
|
2082
2326
|
source: "visitIRDynamicDictionary: anIRDynamicDictionary\x0a\x09^ self visitIRInstruction: anIRDynamicDictionary",
|
2083
2327
|
messageSends: ["visitIRInstruction:"],
|
@@ -2092,10 +2336,10 @@ selector: "visitIRInlinedClosure:",
|
|
2092
2336
|
category: 'visiting',
|
2093
2337
|
fn: function (anIRInlinedClosure){
|
2094
2338
|
var self=this;
|
2095
|
-
|
2096
|
-
$1=
|
2339
|
+
return smalltalk.withContext(function($ctx1) {
|
2340
|
+
$1=_st(self)._visitIRClosure_(anIRInlinedClosure);
|
2097
2341
|
return $1;
|
2098
|
-
},
|
2342
|
+
}, function($ctx1) {$ctx1.fill(self,"visitIRInlinedClosure:",{anIRInlinedClosure:anIRInlinedClosure}, smalltalk.IRVisitor)})},
|
2099
2343
|
args: ["anIRInlinedClosure"],
|
2100
2344
|
source: "visitIRInlinedClosure: anIRInlinedClosure\x0a\x09^ self visitIRClosure: anIRInlinedClosure",
|
2101
2345
|
messageSends: ["visitIRClosure:"],
|
@@ -2110,10 +2354,10 @@ selector: "visitIRInlinedSequence:",
|
|
2110
2354
|
category: 'visiting',
|
2111
2355
|
fn: function (anIRInlinedSequence){
|
2112
2356
|
var self=this;
|
2113
|
-
|
2114
|
-
$1=
|
2357
|
+
return smalltalk.withContext(function($ctx1) {
|
2358
|
+
$1=_st(self)._visitIRSequence_(anIRInlinedSequence);
|
2115
2359
|
return $1;
|
2116
|
-
},
|
2360
|
+
}, function($ctx1) {$ctx1.fill(self,"visitIRInlinedSequence:",{anIRInlinedSequence:anIRInlinedSequence}, smalltalk.IRVisitor)})},
|
2117
2361
|
args: ["anIRInlinedSequence"],
|
2118
2362
|
source: "visitIRInlinedSequence: anIRInlinedSequence\x0a\x09^ self visitIRSequence: anIRInlinedSequence",
|
2119
2363
|
messageSends: ["visitIRSequence:"],
|
@@ -2128,11 +2372,13 @@ selector: "visitIRInstruction:",
|
|
2128
2372
|
category: 'visiting',
|
2129
2373
|
fn: function (anIRInstruction){
|
2130
2374
|
var self=this;
|
2131
|
-
smalltalk.
|
2132
|
-
|
2133
|
-
|
2134
|
-
|
2135
|
-
|
2375
|
+
return smalltalk.withContext(function($ctx1) {
|
2376
|
+
_st(_st(anIRInstruction)._instructions())._do_((function(each){
|
2377
|
+
return smalltalk.withContext(function($ctx2) {
|
2378
|
+
}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1)})}));
|
2379
|
+
$1=anIRInstruction;
|
2380
|
+
return $1;
|
2381
|
+
}, function($ctx1) {$ctx1.fill(self,"visitIRInstruction:",{anIRInstruction:anIRInstruction}, smalltalk.IRVisitor)})},
|
2136
2382
|
args: ["anIRInstruction"],
|
2137
2383
|
source: "visitIRInstruction: anIRInstruction\x0a\x09anIRInstruction instructions do: [ :each | self visit: each ].\x0a\x09^ anIRInstruction",
|
2138
2384
|
messageSends: ["do:", "visit:", "instructions"],
|
@@ -2147,10 +2393,10 @@ selector: "visitIRMethod:",
|
|
2147
2393
|
category: 'visiting',
|
2148
2394
|
fn: function (anIRMethod){
|
2149
2395
|
var self=this;
|
2150
|
-
|
2151
|
-
$1=
|
2396
|
+
return smalltalk.withContext(function($ctx1) {
|
2397
|
+
$1=_st(self)._visitIRInstruction_(anIRMethod);
|
2152
2398
|
return $1;
|
2153
|
-
},
|
2399
|
+
}, function($ctx1) {$ctx1.fill(self,"visitIRMethod:",{anIRMethod:anIRMethod}, smalltalk.IRVisitor)})},
|
2154
2400
|
args: ["anIRMethod"],
|
2155
2401
|
source: "visitIRMethod: anIRMethod\x0a\x09^ self visitIRInstruction: anIRMethod",
|
2156
2402
|
messageSends: ["visitIRInstruction:"],
|
@@ -2165,10 +2411,10 @@ selector: "visitIRNonLocalReturn:",
|
|
2165
2411
|
category: 'visiting',
|
2166
2412
|
fn: function (anIRNonLocalReturn){
|
2167
2413
|
var self=this;
|
2168
|
-
|
2169
|
-
$1=
|
2414
|
+
return smalltalk.withContext(function($ctx1) {
|
2415
|
+
$1=_st(self)._visitIRInstruction_(anIRNonLocalReturn);
|
2170
2416
|
return $1;
|
2171
|
-
},
|
2417
|
+
}, function($ctx1) {$ctx1.fill(self,"visitIRNonLocalReturn:",{anIRNonLocalReturn:anIRNonLocalReturn}, smalltalk.IRVisitor)})},
|
2172
2418
|
args: ["anIRNonLocalReturn"],
|
2173
2419
|
source: "visitIRNonLocalReturn: anIRNonLocalReturn\x0a\x09^ self visitIRInstruction: anIRNonLocalReturn",
|
2174
2420
|
messageSends: ["visitIRInstruction:"],
|
@@ -2183,10 +2429,10 @@ selector: "visitIRNonLocalReturnHandling:",
|
|
2183
2429
|
category: 'visiting',
|
2184
2430
|
fn: function (anIRNonLocalReturnHandling){
|
2185
2431
|
var self=this;
|
2186
|
-
|
2187
|
-
$1=
|
2432
|
+
return smalltalk.withContext(function($ctx1) {
|
2433
|
+
$1=_st(self)._visitIRInstruction_(anIRNonLocalReturnHandling);
|
2188
2434
|
return $1;
|
2189
|
-
},
|
2435
|
+
}, function($ctx1) {$ctx1.fill(self,"visitIRNonLocalReturnHandling:",{anIRNonLocalReturnHandling:anIRNonLocalReturnHandling}, smalltalk.IRVisitor)})},
|
2190
2436
|
args: ["anIRNonLocalReturnHandling"],
|
2191
2437
|
source: "visitIRNonLocalReturnHandling: anIRNonLocalReturnHandling\x0a\x09^ self visitIRInstruction: anIRNonLocalReturnHandling",
|
2192
2438
|
messageSends: ["visitIRInstruction:"],
|
@@ -2201,10 +2447,10 @@ selector: "visitIRReturn:",
|
|
2201
2447
|
category: 'visiting',
|
2202
2448
|
fn: function (anIRReturn){
|
2203
2449
|
var self=this;
|
2204
|
-
|
2205
|
-
$1=
|
2450
|
+
return smalltalk.withContext(function($ctx1) {
|
2451
|
+
$1=_st(self)._visitIRInstruction_(anIRReturn);
|
2206
2452
|
return $1;
|
2207
|
-
},
|
2453
|
+
}, function($ctx1) {$ctx1.fill(self,"visitIRReturn:",{anIRReturn:anIRReturn}, smalltalk.IRVisitor)})},
|
2208
2454
|
args: ["anIRReturn"],
|
2209
2455
|
source: "visitIRReturn: anIRReturn\x0a\x09^ self visitIRInstruction: anIRReturn",
|
2210
2456
|
messageSends: ["visitIRInstruction:"],
|
@@ -2219,10 +2465,10 @@ selector: "visitIRSend:",
|
|
2219
2465
|
category: 'visiting',
|
2220
2466
|
fn: function (anIRSend){
|
2221
2467
|
var self=this;
|
2222
|
-
|
2223
|
-
$1=
|
2468
|
+
return smalltalk.withContext(function($ctx1) {
|
2469
|
+
$1=_st(self)._visitIRInstruction_(anIRSend);
|
2224
2470
|
return $1;
|
2225
|
-
},
|
2471
|
+
}, function($ctx1) {$ctx1.fill(self,"visitIRSend:",{anIRSend:anIRSend}, smalltalk.IRVisitor)})},
|
2226
2472
|
args: ["anIRSend"],
|
2227
2473
|
source: "visitIRSend: anIRSend\x0a\x09^ self visitIRInstruction: anIRSend",
|
2228
2474
|
messageSends: ["visitIRInstruction:"],
|
@@ -2237,10 +2483,10 @@ selector: "visitIRSequence:",
|
|
2237
2483
|
category: 'visiting',
|
2238
2484
|
fn: function (anIRSequence){
|
2239
2485
|
var self=this;
|
2240
|
-
|
2241
|
-
$1=
|
2486
|
+
return smalltalk.withContext(function($ctx1) {
|
2487
|
+
$1=_st(self)._visitIRInstruction_(anIRSequence);
|
2242
2488
|
return $1;
|
2243
|
-
},
|
2489
|
+
}, function($ctx1) {$ctx1.fill(self,"visitIRSequence:",{anIRSequence:anIRSequence}, smalltalk.IRVisitor)})},
|
2244
2490
|
args: ["anIRSequence"],
|
2245
2491
|
source: "visitIRSequence: anIRSequence\x0a\x09^ self visitIRInstruction: anIRSequence",
|
2246
2492
|
messageSends: ["visitIRInstruction:"],
|
@@ -2255,10 +2501,10 @@ selector: "visitIRTempDeclaration:",
|
|
2255
2501
|
category: 'visiting',
|
2256
2502
|
fn: function (anIRTempDeclaration){
|
2257
2503
|
var self=this;
|
2258
|
-
|
2259
|
-
$1=
|
2504
|
+
return smalltalk.withContext(function($ctx1) {
|
2505
|
+
$1=_st(self)._visitIRInstruction_(anIRTempDeclaration);
|
2260
2506
|
return $1;
|
2261
|
-
},
|
2507
|
+
}, function($ctx1) {$ctx1.fill(self,"visitIRTempDeclaration:",{anIRTempDeclaration:anIRTempDeclaration}, smalltalk.IRVisitor)})},
|
2262
2508
|
args: ["anIRTempDeclaration"],
|
2263
2509
|
source: "visitIRTempDeclaration: anIRTempDeclaration\x0a\x09^ self visitIRInstruction: anIRTempDeclaration",
|
2264
2510
|
messageSends: ["visitIRInstruction:"],
|
@@ -2273,10 +2519,10 @@ selector: "visitIRValue:",
|
|
2273
2519
|
category: 'visiting',
|
2274
2520
|
fn: function (anIRValue){
|
2275
2521
|
var self=this;
|
2276
|
-
|
2277
|
-
$1=
|
2522
|
+
return smalltalk.withContext(function($ctx1) {
|
2523
|
+
$1=_st(self)._visitIRInstruction_(anIRValue);
|
2278
2524
|
return $1;
|
2279
|
-
},
|
2525
|
+
}, function($ctx1) {$ctx1.fill(self,"visitIRValue:",{anIRValue:anIRValue}, smalltalk.IRVisitor)})},
|
2280
2526
|
args: ["anIRValue"],
|
2281
2527
|
source: "visitIRValue: anIRValue\x0a\x09^ self visitIRInstruction: anIRValue",
|
2282
2528
|
messageSends: ["visitIRInstruction:"],
|
@@ -2291,10 +2537,10 @@ selector: "visitIRVariable:",
|
|
2291
2537
|
category: 'visiting',
|
2292
2538
|
fn: function (anIRVariable){
|
2293
2539
|
var self=this;
|
2294
|
-
|
2295
|
-
$1=
|
2540
|
+
return smalltalk.withContext(function($ctx1) {
|
2541
|
+
$1=_st(self)._visitIRInstruction_(anIRVariable);
|
2296
2542
|
return $1;
|
2297
|
-
},
|
2543
|
+
}, function($ctx1) {$ctx1.fill(self,"visitIRVariable:",{anIRVariable:anIRVariable}, smalltalk.IRVisitor)})},
|
2298
2544
|
args: ["anIRVariable"],
|
2299
2545
|
source: "visitIRVariable: anIRVariable\x0a\x09^ self visitIRInstruction: anIRVariable",
|
2300
2546
|
messageSends: ["visitIRInstruction:"],
|
@@ -2309,10 +2555,10 @@ selector: "visitIRVerbatim:",
|
|
2309
2555
|
category: 'visiting',
|
2310
2556
|
fn: function (anIRVerbatim){
|
2311
2557
|
var self=this;
|
2312
|
-
|
2313
|
-
$1=
|
2558
|
+
return smalltalk.withContext(function($ctx1) {
|
2559
|
+
$1=_st(self)._visitIRInstruction_(anIRVerbatim);
|
2314
2560
|
return $1;
|
2315
|
-
},
|
2561
|
+
}, function($ctx1) {$ctx1.fill(self,"visitIRVerbatim:",{anIRVerbatim:anIRVerbatim}, smalltalk.IRVisitor)})},
|
2316
2562
|
args: ["anIRVerbatim"],
|
2317
2563
|
source: "visitIRVerbatim: anIRVerbatim\x0a\x09^ self visitIRInstruction: anIRVerbatim",
|
2318
2564
|
messageSends: ["visitIRInstruction:"],
|
@@ -2330,10 +2576,10 @@ selector: "contents",
|
|
2330
2576
|
category: 'accessing',
|
2331
2577
|
fn: function (){
|
2332
2578
|
var self=this;
|
2333
|
-
|
2334
|
-
$1=
|
2579
|
+
return smalltalk.withContext(function($ctx1) {
|
2580
|
+
$1=_st(_st(self)._stream())._contents();
|
2335
2581
|
return $1;
|
2336
|
-
},
|
2582
|
+
}, function($ctx1) {$ctx1.fill(self,"contents",{}, smalltalk.IRJSTranslator)})},
|
2337
2583
|
args: [],
|
2338
2584
|
source: "contents\x0a\x09^ self stream contents",
|
2339
2585
|
messageSends: ["contents", "stream"],
|
@@ -2348,9 +2594,9 @@ selector: "initialize",
|
|
2348
2594
|
category: 'initialization',
|
2349
2595
|
fn: function (){
|
2350
2596
|
var self=this;
|
2351
|
-
smalltalk.
|
2352
|
-
self["@stream"]=
|
2353
|
-
return self},
|
2597
|
+
return smalltalk.withContext(function($ctx1) {
|
2598
|
+
self["@stream"]=_st((smalltalk.JSStream || JSStream))._new();
|
2599
|
+
return self}, function($ctx1) {$ctx1.fill(self,"initialize",{}, smalltalk.IRJSTranslator)})},
|
2354
2600
|
args: [],
|
2355
2601
|
source: "initialize\x0a\x09super initialize.\x0a\x09stream := JSStream new.",
|
2356
2602
|
messageSends: ["initialize", "new"],
|
@@ -2365,8 +2611,10 @@ selector: "stream",
|
|
2365
2611
|
category: 'accessing',
|
2366
2612
|
fn: function (){
|
2367
2613
|
var self=this;
|
2368
|
-
return
|
2369
|
-
|
2614
|
+
return smalltalk.withContext(function($ctx1) {
|
2615
|
+
$1=self["@stream"];
|
2616
|
+
return $1;
|
2617
|
+
}, function($ctx1) {$ctx1.fill(self,"stream",{}, smalltalk.IRJSTranslator)})},
|
2370
2618
|
args: [],
|
2371
2619
|
source: "stream\x0a\x09^ stream",
|
2372
2620
|
messageSends: [],
|
@@ -2381,8 +2629,8 @@ selector: "stream:",
|
|
2381
2629
|
category: 'accessing',
|
2382
2630
|
fn: function (aStream){
|
2383
2631
|
var self=this;
|
2384
|
-
|
2385
|
-
return self},
|
2632
|
+
return smalltalk.withContext(function($ctx1) {
|
2633
|
+
return self}, function($ctx1) {$ctx1.fill(self,"stream:",{aStream:aStream}, smalltalk.IRJSTranslator)})},
|
2386
2634
|
args: ["aStream"],
|
2387
2635
|
source: "stream: aStream\x0a\x09stream := aStream",
|
2388
2636
|
messageSends: [],
|
@@ -2397,10 +2645,10 @@ selector: "visitIRAssignment:",
|
|
2397
2645
|
category: 'visiting',
|
2398
2646
|
fn: function (anIRAssignment){
|
2399
2647
|
var self=this;
|
2400
|
-
smalltalk.
|
2401
|
-
|
2402
|
-
|
2403
|
-
return self},
|
2648
|
+
return smalltalk.withContext(function($ctx1) {
|
2649
|
+
_st(_st(self)._stream())._nextPutAssignment();
|
2650
|
+
_st(self)._visit_(_st(_st(anIRAssignment)._instructions())._last());
|
2651
|
+
return self}, function($ctx1) {$ctx1.fill(self,"visitIRAssignment:",{anIRAssignment:anIRAssignment}, smalltalk.IRJSTranslator)})},
|
2404
2652
|
args: ["anIRAssignment"],
|
2405
2653
|
source: "visitIRAssignment: anIRAssignment\x0a\x09self visit: anIRAssignment instructions first.\x0a\x09self stream nextPutAssignment.\x0a\x09self visit: anIRAssignment instructions last.",
|
2406
2654
|
messageSends: ["visit:", "first", "instructions", "nextPutAssignment", "stream", "last"],
|
@@ -2415,13 +2663,18 @@ selector: "visitIRClosure:",
|
|
2415
2663
|
category: 'visiting',
|
2416
2664
|
fn: function (anIRClosure){
|
2417
2665
|
var self=this;
|
2418
|
-
smalltalk.
|
2419
|
-
return smalltalk.
|
2420
|
-
|
2421
|
-
|
2666
|
+
return smalltalk.withContext(function($ctx1) {
|
2667
|
+
return smalltalk.withContext(function($ctx2) {
|
2668
|
+
return smalltalk.withContext(function($ctx3) {
|
2669
|
+
}, function($ctx3) {$ctx3.fillBlock({each:each},$ctx1)})})));
|
2670
|
+
return _st(_st(self)._stream())._nextPutBlockContextFor_during_(anIRClosure,(function(){
|
2671
|
+
return smalltalk.withContext(function($ctx3) {
|
2672
|
+
}, function($ctx3) {$ctx3.fillBlock({},$ctx1)})}));
|
2673
|
+
}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}),_st(anIRClosure)._arguments());
|
2674
|
+
return self}, function($ctx1) {$ctx1.fill(self,"visitIRClosure:",{anIRClosure:anIRClosure}, smalltalk.IRJSTranslator)})},
|
2422
2675
|
args: ["anIRClosure"],
|
2423
|
-
source: "visitIRClosure: anIRClosure\x0a\x09self stream \x0a\x09\x09nextPutClosureWith: [ super visitIRClosure: anIRClosure ] \x0a\x09\x09arguments: anIRClosure arguments",
|
2424
|
-
messageSends: ["nextPutClosureWith:arguments:", "
|
2676
|
+
source: "visitIRClosure: anIRClosure\x0a\x09self stream \x0a\x09\x09nextPutClosureWith: [ \x0a \x09self stream nextPutVars: (anIRClosure tempDeclarations collect: [ :each |\x0a \x09\x09\x09\x09each name asVariableName ]).\x0a \x09self stream \x0a \x09nextPutBlockContextFor: anIRClosure\x0a during: [ super visitIRClosure: anIRClosure ] ]\x0a\x09\x09arguments: anIRClosure arguments",
|
2677
|
+
messageSends: ["nextPutClosureWith:arguments:", "nextPutVars:", "collect:", "asVariableName", "name", "tempDeclarations", "stream", "nextPutBlockContextFor:during:", "visitIRClosure:", "arguments"],
|
2425
2678
|
referencedClasses: []
|
2426
2679
|
}),
|
2427
2680
|
smalltalk.IRJSTranslator);
|
@@ -2433,14 +2686,14 @@ selector: "visitIRDynamicArray:",
|
|
2433
2686
|
category: 'visiting',
|
2434
2687
|
fn: function (anIRDynamicArray){
|
2435
2688
|
var self=this;
|
2436
|
-
smalltalk.
|
2437
|
-
|
2438
|
-
return smalltalk.
|
2439
|
-
}),(function(){
|
2440
|
-
return smalltalk.
|
2441
|
-
})
|
2442
|
-
|
2443
|
-
return self},
|
2689
|
+
return smalltalk.withContext(function($ctx1) {
|
2690
|
+
_st(_st(anIRDynamicArray)._instructions())._do_separatedBy_((function(each){
|
2691
|
+
return smalltalk.withContext(function($ctx2) {
|
2692
|
+
}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1)})}),(function(){
|
2693
|
+
return smalltalk.withContext(function($ctx2) {
|
2694
|
+
}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}));
|
2695
|
+
_st(self["@stream"])._nextPutAll_("]");
|
2696
|
+
return self}, function($ctx1) {$ctx1.fill(self,"visitIRDynamicArray:",{anIRDynamicArray:anIRDynamicArray}, smalltalk.IRJSTranslator)})},
|
2444
2697
|
args: ["anIRDynamicArray"],
|
2445
2698
|
source: "visitIRDynamicArray: anIRDynamicArray\x0a\x09self stream nextPutAll: '['.\x0a\x09anIRDynamicArray instructions\x0a\x09\x09do: [ :each | self visit: each ]\x0a\x09\x09separatedBy: [ self stream nextPutAll: ',' ].\x0a\x09stream nextPutAll: ']'",
|
2446
2699
|
messageSends: ["nextPutAll:", "stream", "do:separatedBy:", "visit:", "instructions"],
|
@@ -2455,14 +2708,14 @@ selector: "visitIRDynamicDictionary:",
|
|
2455
2708
|
category: 'visiting',
|
2456
2709
|
fn: function (anIRDynamicDictionary){
|
2457
2710
|
var self=this;
|
2458
|
-
smalltalk.
|
2459
|
-
|
2460
|
-
return smalltalk.
|
2461
|
-
}),(function(){
|
2462
|
-
return smalltalk.
|
2463
|
-
})
|
2464
|
-
|
2465
|
-
return self},
|
2711
|
+
return smalltalk.withContext(function($ctx1) {
|
2712
|
+
_st(_st(anIRDynamicDictionary)._instructions())._do_separatedBy_((function(each){
|
2713
|
+
return smalltalk.withContext(function($ctx2) {
|
2714
|
+
}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1)})}),(function(){
|
2715
|
+
return smalltalk.withContext(function($ctx2) {
|
2716
|
+
}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}));
|
2717
|
+
_st(_st(self)._stream())._nextPutAll_("])");
|
2718
|
+
return self}, function($ctx1) {$ctx1.fill(self,"visitIRDynamicDictionary:",{anIRDynamicDictionary:anIRDynamicDictionary}, smalltalk.IRJSTranslator)})},
|
2466
2719
|
args: ["anIRDynamicDictionary"],
|
2467
2720
|
source: "visitIRDynamicDictionary: anIRDynamicDictionary\x0a\x09self stream nextPutAll: 'smalltalk.HashedCollection._fromPairs_(['.\x0a\x09\x09anIRDynamicDictionary instructions \x0a\x09\x09\x09do: [ :each | self visit: each ]\x0a\x09\x09\x09separatedBy: [self stream nextPutAll: ',' ].\x0a\x09self stream nextPutAll: '])'",
|
2468
2721
|
messageSends: ["nextPutAll:", "stream", "do:separatedBy:", "visit:", "instructions"],
|
@@ -2477,29 +2730,42 @@ selector: "visitIRMethod:",
|
|
2477
2730
|
category: 'visiting',
|
2478
2731
|
fn: function (anIRMethod){
|
2479
2732
|
var self=this;
|
2480
|
-
|
2481
|
-
|
2482
|
-
|
2483
|
-
$
|
2484
|
-
|
2485
|
-
|
2486
|
-
return smalltalk.
|
2487
|
-
|
2733
|
+
return smalltalk.withContext(function($ctx1) {
|
2734
|
+
$1=_st(self)._stream();
|
2735
|
+
$2=anIRMethod;
|
2736
|
+
$3=(function(){
|
2737
|
+
return smalltalk.withContext(function($ctx2) {
|
2738
|
+
$5=(function(){
|
2739
|
+
return smalltalk.withContext(function($ctx3) {
|
2740
|
+
return smalltalk.withContext(function($ctx4) {
|
2741
|
+
}, function($ctx4) {$ctx4.fillBlock({each:each},$ctx1)})})));
|
2742
|
+
$6=_st(self)._stream();
|
2743
|
+
$7=anIRMethod;
|
2744
|
+
$8=(function(){
|
2745
|
+
return smalltalk.withContext(function($ctx4) {
|
2746
|
+
if(smalltalk.assert($9)){
|
2747
|
+
_st(_st(self)._stream())._nextPutVars_(_st(_st(_st(anIRMethod)._internalVariables())._asArray())._collect_((function(each){
|
2748
|
+
return smalltalk.withContext(function($ctx5) {
|
2749
|
+
}, function($ctx5) {$ctx5.fillBlock({each:each},$ctx1)})})));
|
2488
2750
|
};
|
2489
|
-
$
|
2490
|
-
if(smalltalk.assert($
|
2491
|
-
return
|
2492
|
-
return smalltalk.
|
2493
|
-
})
|
2751
|
+
$10=_st(_st(anIRMethod)._scope())._hasNonLocalReturn();
|
2752
|
+
if(smalltalk.assert($10)){
|
2753
|
+
return _st(_st(self)._stream())._nextPutNonLocalReturnHandlingWith_((function(){
|
2754
|
+
return smalltalk.withContext(function($ctx5) {
|
2755
|
+
}, function($ctx5) {$ctx5.fillBlock({},$ctx1)})}));
|
2494
2756
|
} else {
|
2495
|
-
return smalltalk.
|
2757
|
+
return smalltalk.IRVisitor.fn.prototype._visitIRMethod_.apply(_st(self), [anIRMethod]);
|
2496
2758
|
};
|
2497
|
-
})
|
2498
|
-
|
2499
|
-
|
2759
|
+
}, function($ctx4) {$ctx4.fillBlock({},$ctx1)})});
|
2760
|
+
return _st($6)._nextPutContextFor_during_($7,$8);
|
2761
|
+
}, function($ctx3) {$ctx3.fillBlock({},$ctx1)})});
|
2762
|
+
return _st($4)._nextPutFunctionWith_arguments_($5,_st(anIRMethod)._arguments());
|
2763
|
+
}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})});
|
2764
|
+
_st($1)._nextPutMethodDeclaration_with_($2,$3);
|
2765
|
+
return self}, function($ctx1) {$ctx1.fill(self,"visitIRMethod:",{anIRMethod:anIRMethod}, smalltalk.IRJSTranslator)})},
|
2500
2766
|
args: ["anIRMethod"],
|
2501
|
-
source: "visitIRMethod: anIRMethod\x0a\x09self stream\x0a\x09\x09nextPutMethodDeclaration: anIRMethod \x0a\x09\x09with: [ self stream \x0a\x09\x09\x09nextPutFunctionWith: [ \x0a\x09\x09\x09\x09anIRMethod internalVariables notEmpty ifTrue: [\x0a\x09\x09\x09\x09\x09self stream nextPutVars: (anIRMethod internalVariables asArray collect: [ :each |\x0a\x09\x09\x09\x09\x09\x09each variable alias ]) ].\x0a\x09\x09\x09\x09anIRMethod scope hasNonLocalReturn \x0a\x09\x09\x09\x09\x09ifTrue: [\x0a\x09\x09\x09\x09\x09\x09self stream nextPutNonLocalReturnHandlingWith: [\x0a\x09\x09\x09\x09\x09\x09\x09super visitIRMethod: anIRMethod ]]\x0a\x09\x09\x09\x09\x09ifFalse: [ super visitIRMethod: anIRMethod ]]\x0a\x09\x09\x09arguments: anIRMethod arguments ]",
|
2502
|
-
messageSends: ["nextPutMethodDeclaration:with:", "nextPutFunctionWith:arguments:", "
|
2767
|
+
source: "visitIRMethod: anIRMethod\x0a\x0a\x09self stream\x0a\x09\x09nextPutMethodDeclaration: anIRMethod \x0a\x09\x09with: [ self stream \x0a\x09\x09\x09nextPutFunctionWith: [ \x0a \x09self stream nextPutVars: (anIRMethod tempDeclarations collect: [ :each |\x0a \x09\x09\x09\x09each name asVariableName ]).\x0a \x09self stream nextPutContextFor: anIRMethod during: [\x0a\x09\x09\x09\x09anIRMethod internalVariables notEmpty ifTrue: [\x0a\x09\x09\x09\x09\x09self stream nextPutVars: (anIRMethod internalVariables asArray collect: [ :each |\x0a\x09\x09\x09\x09\x09\x09each variable alias ]) ].\x0a\x09\x09\x09\x09anIRMethod scope hasNonLocalReturn \x0a\x09\x09\x09\x09\x09ifTrue: [\x0a\x09\x09\x09\x09\x09\x09self stream nextPutNonLocalReturnHandlingWith: [\x0a\x09\x09\x09\x09\x09\x09\x09super visitIRMethod: anIRMethod ]]\x0a\x09\x09\x09\x09\x09ifFalse: [ super visitIRMethod: anIRMethod ]]]\x0a\x09\x09\x09arguments: anIRMethod arguments ]",
|
2768
|
+
messageSends: ["nextPutMethodDeclaration:with:", "nextPutFunctionWith:arguments:", "nextPutVars:", "collect:", "asVariableName", "name", "tempDeclarations", "stream", "nextPutContextFor:during:", "ifTrue:", "alias", "variable", "asArray", "internalVariables", "notEmpty", "ifTrue:ifFalse:", "nextPutNonLocalReturnHandlingWith:", "visitIRMethod:", "hasNonLocalReturn", "scope", "arguments"],
|
2503
2769
|
referencedClasses: []
|
2504
2770
|
}),
|
2505
2771
|
smalltalk.IRJSTranslator);
|
@@ -2511,10 +2777,10 @@ selector: "visitIRNonLocalReturn:",
|
|
2511
2777
|
category: 'visiting',
|
2512
2778
|
fn: function (anIRNonLocalReturn){
|
2513
2779
|
var self=this;
|
2514
|
-
smalltalk.
|
2515
|
-
return smalltalk.
|
2516
|
-
})
|
2517
|
-
return self},
|
2780
|
+
return smalltalk.withContext(function($ctx1) {
|
2781
|
+
return smalltalk.withContext(function($ctx2) {
|
2782
|
+
}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}));
|
2783
|
+
return self}, function($ctx1) {$ctx1.fill(self,"visitIRNonLocalReturn:",{anIRNonLocalReturn:anIRNonLocalReturn}, smalltalk.IRJSTranslator)})},
|
2518
2784
|
args: ["anIRNonLocalReturn"],
|
2519
2785
|
source: "visitIRNonLocalReturn: anIRNonLocalReturn\x0a\x09self stream nextPutNonLocalReturnWith: [\x0a\x09\x09super visitIRNonLocalReturn: anIRNonLocalReturn ]",
|
2520
2786
|
messageSends: ["nextPutNonLocalReturnWith:", "visitIRNonLocalReturn:", "stream"],
|
@@ -2529,10 +2795,10 @@ selector: "visitIRReturn:",
|
|
2529
2795
|
category: 'visiting',
|
2530
2796
|
fn: function (anIRReturn){
|
2531
2797
|
var self=this;
|
2532
|
-
smalltalk.
|
2533
|
-
return smalltalk.
|
2534
|
-
})
|
2535
|
-
return self},
|
2798
|
+
return smalltalk.withContext(function($ctx1) {
|
2799
|
+
return smalltalk.withContext(function($ctx2) {
|
2800
|
+
}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}));
|
2801
|
+
return self}, function($ctx1) {$ctx1.fill(self,"visitIRReturn:",{anIRReturn:anIRReturn}, smalltalk.IRJSTranslator)})},
|
2536
2802
|
args: ["anIRReturn"],
|
2537
2803
|
source: "visitIRReturn: anIRReturn\x0a\x09self stream nextPutReturnWith: [\x0a\x09\x09super visitIRReturn: anIRReturn ]",
|
2538
2804
|
messageSends: ["nextPutReturnWith:", "visitIRReturn:", "stream"],
|
@@ -2547,27 +2813,37 @@ selector: "visitIRSend:",
|
|
2547
2813
|
category: 'visiting',
|
2548
2814
|
fn: function (anIRSend){
|
2549
2815
|
var self=this;
|
2550
|
-
|
2551
|
-
|
2552
|
-
smalltalk.send(self,"_visit_",[smalltalk.send(smalltalk.send(anIRSend,"_instructions",[]),"_first",[])]);
|
2553
|
-
smalltalk.send(smalltalk.send(self,"_stream",[]),"_nextPutAll_",[smalltalk.send(smalltalk.send(",\x22","__comma",[smalltalk.send(smalltalk.send(anIRSend,"_selector",[]),"_asSelector",[])]),"__comma",["\x22,["])]);
|
2554
|
-
smalltalk.send(smalltalk.send(smalltalk.send(anIRSend,"_instructions",[]),"_allButFirst",[]),"_do_separatedBy_",[(function(each){
|
2555
|
-
return smalltalk.send(self,"_visit_",[each]);
|
2556
|
-
}),(function(){
|
2557
|
-
return smalltalk.send(smalltalk.send(self,"_stream",[]),"_nextPutAll_",[","]);
|
2558
|
-
})]);
|
2559
|
-
smalltalk.send(smalltalk.send(self,"_stream",[]),"_nextPutAll_",["]"]);
|
2560
|
-
$1=smalltalk.send(anIRSend,"_classSend",[]);
|
2816
|
+
return smalltalk.withContext(function($ctx1) {
|
2817
|
+
$1=_st(anIRSend)._classSend();
|
2561
2818
|
if(($receiver = $1) == nil || $receiver == undefined){
|
2562
|
-
|
2819
|
+
_st(_st(self)._stream())._nextPutAll_("_st(");
|
2820
|
+
_st(self)._visit_(_st(_st(anIRSend)._instructions())._first());
|
2821
|
+
_st(_st(self)._stream())._nextPutAll_(_st(_st(").").__comma(_st(_st(anIRSend)._selector())._asSelector())).__comma("("));
|
2822
|
+
_st(_st(_st(anIRSend)._instructions())._allButFirst())._do_separatedBy_((function(each){
|
2823
|
+
return smalltalk.withContext(function($ctx2) {
|
2824
|
+
}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1)})}),(function(){
|
2825
|
+
return smalltalk.withContext(function($ctx2) {
|
2826
|
+
}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}));
|
2827
|
+
_st(_st(self)._stream())._nextPutAll_(")");
|
2563
2828
|
} else {
|
2564
|
-
|
2829
|
+
$2=_st(self)._stream();
|
2830
|
+
_st($2)._nextPutAll_(_st(_st(_st(anIRSend)._classSend())._asJavascript()).__comma(".fn.prototype."));
|
2831
|
+
_st($2)._nextPutAll_(_st(_st(_st(anIRSend)._selector())._asSelector()).__comma(".apply("));
|
2832
|
+
$3=_st($2)._nextPutAll_("_st(");
|
2833
|
+
$3;
|
2834
|
+
_st(self)._visit_(_st(_st(anIRSend)._instructions())._first());
|
2835
|
+
_st(_st(self)._stream())._nextPutAll_("), [");
|
2836
|
+
_st(_st(_st(anIRSend)._instructions())._allButFirst())._do_separatedBy_((function(each){
|
2837
|
+
return smalltalk.withContext(function($ctx2) {
|
2838
|
+
}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1)})}),(function(){
|
2839
|
+
return smalltalk.withContext(function($ctx2) {
|
2840
|
+
}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}));
|
2841
|
+
_st(_st(self)._stream())._nextPutAll_("])");
|
2565
2842
|
};
|
2566
|
-
|
2567
|
-
return self},
|
2843
|
+
return self}, function($ctx1) {$ctx1.fill(self,"visitIRSend:",{anIRSend:anIRSend}, smalltalk.IRJSTranslator)})},
|
2568
2844
|
args: ["anIRSend"],
|
2569
|
-
source: "visitIRSend: anIRSend\x0a\x09self stream nextPutAll: '
|
2570
|
-
messageSends: ["nextPutAll:", "stream", "visit:", "first", "instructions", ",", "asSelector", "selector", "do:separatedBy:", "allButFirst", "
|
2845
|
+
source: "visitIRSend: anIRSend\x0a\x09anIRSend classSend \x0a \x09ifNil: [\x0a\x09\x09\x09self stream nextPutAll: '_st('.\x0a\x09\x09\x09self visit: anIRSend instructions first.\x0a \x09\x09 \x09self stream nextPutAll: ').', anIRSend selector asSelector, '('.\x0a\x09\x09\x09anIRSend instructions allButFirst\x0a\x09\x09\x09\x09do: [ :each | self visit: each ]\x0a\x09\x09\x09\x09separatedBy: [ self stream nextPutAll: ',' ].\x0a\x09\x09\x09self stream nextPutAll: ')' ]\x0a\x09\x09ifNotNil: [ \x0a\x09\x09\x09self stream \x0a \x09nextPutAll: anIRSend classSend asJavascript, '.fn.prototype.';\x0a\x09\x09\x09\x09nextPutAll: anIRSend selector asSelector, '.apply(';\x0a\x09\x09\x09\x09nextPutAll: '_st('.\x0a\x09\x09\x09self visit: anIRSend instructions first.\x0a\x09\x09\x09self stream nextPutAll: '), ['.\x0a\x09\x09\x09anIRSend instructions allButFirst\x0a\x09\x09\x09\x09do: [ :each | self visit: each ]\x0a\x09\x09\x09\x09separatedBy: [ self stream nextPutAll: ',' ].\x0a\x09\x09\x09self stream nextPutAll: '])' ]",
|
2846
|
+
messageSends: ["ifNil:ifNotNil:", "nextPutAll:", "stream", "visit:", "first", "instructions", ",", "asSelector", "selector", "do:separatedBy:", "allButFirst", "asJavascript", "classSend"],
|
2571
2847
|
referencedClasses: []
|
2572
2848
|
}),
|
2573
2849
|
smalltalk.IRJSTranslator);
|
@@ -2579,12 +2855,12 @@ selector: "visitIRSequence:",
|
|
2579
2855
|
category: 'visiting',
|
2580
2856
|
fn: function (anIRSequence){
|
2581
2857
|
var self=this;
|
2582
|
-
smalltalk.
|
2583
|
-
return smalltalk.
|
2584
|
-
return smalltalk.
|
2585
|
-
})
|
2586
|
-
})
|
2587
|
-
return self},
|
2858
|
+
return smalltalk.withContext(function($ctx1) {
|
2859
|
+
return smalltalk.withContext(function($ctx2) {
|
2860
|
+
return smalltalk.withContext(function($ctx3) {
|
2861
|
+
}, function($ctx3) {$ctx3.fillBlock({each:each},$ctx1)})}));
|
2862
|
+
}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}));
|
2863
|
+
return self}, function($ctx1) {$ctx1.fill(self,"visitIRSequence:",{anIRSequence:anIRSequence}, smalltalk.IRJSTranslator)})},
|
2588
2864
|
args: ["anIRSequence"],
|
2589
2865
|
source: "visitIRSequence: anIRSequence\x0a\x09self stream nextPutSequenceWith: [\x0a\x09\x09anIRSequence instructions do: [ :each |\x0a\x09\x09\x09self stream nextPutStatementWith: (self visit: each) ]]",
|
2590
2866
|
messageSends: ["nextPutSequenceWith:", "do:", "nextPutStatementWith:", "visit:", "stream", "instructions"],
|
@@ -2599,11 +2875,10 @@ selector: "visitIRTempDeclaration:",
|
|
2599
2875
|
category: 'visiting',
|
2600
2876
|
fn: function (anIRTempDeclaration){
|
2601
2877
|
var self=this;
|
2602
|
-
smalltalk.
|
2603
|
-
return self},
|
2878
|
+
return smalltalk.withContext(function($ctx1) {
|
2604
2879
|
args: ["anIRTempDeclaration"],
|
2605
|
-
source: "visitIRTempDeclaration: anIRTempDeclaration\x0a\
|
2606
|
-
messageSends: [
|
2880
|
+
source: "visitIRTempDeclaration: anIRTempDeclaration\x0a\x09\x22self stream \x0a \x09nextPutAll: 'var ', anIRTempDeclaration name asVariableName, ';'; \x0a lf\x22",
|
2881
|
+
messageSends: [],
|
2607
2882
|
referencedClasses: []
|
2608
2883
|
}),
|
2609
2884
|
smalltalk.IRJSTranslator);
|
@@ -2615,8 +2890,8 @@ selector: "visitIRValue:",
|
|
2615
2890
|
category: 'visiting',
|
2616
2891
|
fn: function (anIRValue){
|
2617
2892
|
var self=this;
|
2618
|
-
smalltalk.
|
2619
|
-
return self},
|
2893
|
+
return smalltalk.withContext(function($ctx1) {
|
2894
|
+
return self}, function($ctx1) {$ctx1.fill(self,"visitIRValue:",{anIRValue:anIRValue}, smalltalk.IRJSTranslator)})},
|
2620
2895
|
args: ["anIRValue"],
|
2621
2896
|
source: "visitIRValue: anIRValue\x0a\x09self stream nextPutAll: anIRValue value asJavascript",
|
2622
2897
|
messageSends: ["nextPutAll:", "asJavascript", "value", "stream"],
|
@@ -2631,14 +2906,14 @@ selector: "visitIRVariable:",
|
|
2631
2906
|
category: 'visiting',
|
2632
2907
|
fn: function (anIRVariable){
|
2633
2908
|
var self=this;
|
2634
|
-
|
2635
|
-
$1=
|
2909
|
+
return smalltalk.withContext(function($ctx1) {
|
2910
|
+
$1=_st(_st(_st(anIRVariable)._variable())._name()).__eq("thisContext");
|
2636
2911
|
if(smalltalk.assert($1)){
|
2637
|
-
|
2912
|
+
_st(_st(self)._stream())._nextPutAll_("smalltalk.getThisContext()");
|
2638
2913
|
} else {
|
2639
|
-
|
2914
|
+
_st(_st(self)._stream())._nextPutAll_(_st(_st(anIRVariable)._variable())._alias());
|
2640
2915
|
};
|
2641
|
-
return self},
|
2916
|
+
return self}, function($ctx1) {$ctx1.fill(self,"visitIRVariable:",{anIRVariable:anIRVariable}, smalltalk.IRJSTranslator)})},
|
2642
2917
|
args: ["anIRVariable"],
|
2643
2918
|
source: "visitIRVariable: anIRVariable\x0a\x09anIRVariable variable name = 'thisContext'\x0a \x09ifTrue: [ self stream nextPutAll: 'smalltalk.getThisContext()' ]\x0a \x09ifFalse: [ self stream nextPutAll: anIRVariable variable alias ]",
|
2644
2919
|
messageSends: ["ifTrue:ifFalse:", "nextPutAll:", "stream", "alias", "variable", "=", "name"],
|
@@ -2653,10 +2928,10 @@ selector: "visitIRVerbatim:",
|
|
2653
2928
|
category: 'visiting',
|
2654
2929
|
fn: function (anIRVerbatim){
|
2655
2930
|
var self=this;
|
2656
|
-
smalltalk.
|
2657
|
-
return smalltalk.
|
2658
|
-
})
|
2659
|
-
return self},
|
2931
|
+
return smalltalk.withContext(function($ctx1) {
|
2932
|
+
return smalltalk.withContext(function($ctx2) {
|
2933
|
+
}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}));
|
2934
|
+
return self}, function($ctx1) {$ctx1.fill(self,"visitIRVerbatim:",{anIRVerbatim:anIRVerbatim}, smalltalk.IRJSTranslator)})},
|
2660
2935
|
args: ["anIRVerbatim"],
|
2661
2936
|
source: "visitIRVerbatim: anIRVerbatim\x0a\x09self stream nextPutStatementWith: [\x0a\x09\x09self stream nextPutAll: anIRVerbatim source ]",
|
2662
2937
|
messageSends: ["nextPutStatementWith:", "nextPutAll:", "source", "stream"],
|
@@ -2674,10 +2949,10 @@ selector: "contents",
|
|
2674
2949
|
category: 'accessing',
|
2675
2950
|
fn: function (){
|
2676
2951
|
var self=this;
|
2677
|
-
|
2678
|
-
$1=
|
2952
|
+
return smalltalk.withContext(function($ctx1) {
|
2953
|
+
$1=_st(self["@stream"])._contents();
|
2679
2954
|
return $1;
|
2680
|
-
},
|
2955
|
+
}, function($ctx1) {$ctx1.fill(self,"contents",{}, smalltalk.JSStream)})},
|
2681
2956
|
args: [],
|
2682
2957
|
source: "contents\x0a\x09^ stream contents",
|
2683
2958
|
messageSends: ["contents"],
|
@@ -2692,9 +2967,9 @@ selector: "initialize",
|
|
2692
2967
|
category: 'initialization',
|
2693
2968
|
fn: function (){
|
2694
2969
|
var self=this;
|
2695
|
-
smalltalk.
|
2696
|
-
self["@stream"]=
|
2697
|
-
return self},
|
2970
|
+
return smalltalk.withContext(function($ctx1) {
|
2971
|
+
self["@stream"]=_st("")._writeStream();
|
2972
|
+
return self}, function($ctx1) {$ctx1.fill(self,"initialize",{}, smalltalk.JSStream)})},
|
2698
2973
|
args: [],
|
2699
2974
|
source: "initialize\x0a\x09super initialize.\x0a\x09stream := '' writeStream.",
|
2700
2975
|
messageSends: ["initialize", "writeStream"],
|
@@ -2709,8 +2984,8 @@ selector: "lf",
|
|
2709
2984
|
category: 'streaming',
|
2710
2985
|
fn: function (){
|
2711
2986
|
var self=this;
|
2712
|
-
smalltalk.
|
2713
|
-
return self},
|
2987
|
+
return smalltalk.withContext(function($ctx1) {
|
2988
|
+
return self}, function($ctx1) {$ctx1.fill(self,"lf",{}, smalltalk.JSStream)})},
|
2714
2989
|
args: [],
|
2715
2990
|
source: "lf\x0a\x09stream lf",
|
2716
2991
|
messageSends: ["lf"],
|
@@ -2725,8 +3000,8 @@ selector: "nextPut:",
|
|
2725
3000
|
category: 'streaming',
|
2726
3001
|
fn: function (aString){
|
2727
3002
|
var self=this;
|
2728
|
-
smalltalk.
|
2729
|
-
return self},
|
3003
|
+
return smalltalk.withContext(function($ctx1) {
|
3004
|
+
return self}, function($ctx1) {$ctx1.fill(self,"nextPut:",{aString:aString}, smalltalk.JSStream)})},
|
2730
3005
|
args: ["aString"],
|
2731
3006
|
source: "nextPut: aString\x0a\x09stream nextPut: aString",
|
2732
3007
|
messageSends: ["nextPut:"],
|
@@ -2741,8 +3016,8 @@ selector: "nextPutAll:",
|
|
2741
3016
|
category: 'streaming',
|
2742
3017
|
fn: function (aString){
|
2743
3018
|
var self=this;
|
2744
|
-
smalltalk.
|
2745
|
-
return self},
|
3019
|
+
return smalltalk.withContext(function($ctx1) {
|
3020
|
+
return self}, function($ctx1) {$ctx1.fill(self,"nextPutAll:",{aString:aString}, smalltalk.JSStream)})},
|
2746
3021
|
args: ["aString"],
|
2747
3022
|
source: "nextPutAll: aString\x0a\x09stream nextPutAll: aString",
|
2748
3023
|
messageSends: ["nextPutAll:"],
|
@@ -2757,8 +3032,8 @@ selector: "nextPutAssignment",
|
|
2757
3032
|
category: 'streaming',
|
2758
3033
|
fn: function (){
|
2759
3034
|
var self=this;
|
2760
|
-
smalltalk.
|
2761
|
-
return self},
|
3035
|
+
return smalltalk.withContext(function($ctx1) {
|
3036
|
+
return self}, function($ctx1) {$ctx1.fill(self,"nextPutAssignment",{}, smalltalk.JSStream)})},
|
2762
3037
|
args: [],
|
2763
3038
|
source: "nextPutAssignment\x0a\x09stream nextPutAll: '='",
|
2764
3039
|
messageSends: ["nextPutAll:"],
|
@@ -2766,6 +3041,41 @@ referencedClasses: []
|
|
2766
3041
|
}),
|
2767
3042
|
smalltalk.JSStream);
|
2768
3043
|
|
3044
|
+
smalltalk.addMethod(
|
3045
|
+
"_nextPutBlockContextFor_during_",
|
3046
|
+
smalltalk.method({
|
3047
|
+
selector: "nextPutBlockContextFor:during:",
|
3048
|
+
category: 'streaming',
|
3049
|
+
fn: function (anIRClosure,aBlock){
|
3050
|
+
var self=this;
|
3051
|
+
return smalltalk.withContext(function($ctx1) {
|
3052
|
+
$1=self;
|
3053
|
+
_st($1)._nextPutAll_(_st(_st("return smalltalk.withContext(function(").__comma(_st(_st(anIRClosure)._scope())._alias())).__comma(") {"));
|
3054
|
+
$2=_st($1)._nextPutAll_(_st((smalltalk.String || String))._cr());
|
3055
|
+
_st(aBlock)._value();
|
3056
|
+
$3=self;
|
3057
|
+
_st($3)._nextPutAll_(_st(_st("}, function(").__comma(_st(_st(anIRClosure)._scope())._alias())).__comma(") {"));
|
3058
|
+
$4=_st($3)._nextPutAll_(_st(_st(_st(anIRClosure)._scope())._alias()).__comma(".fillBlock({"));
|
3059
|
+
_st(_st(anIRClosure)._locals())._do_separatedBy_((function(each){
|
3060
|
+
return smalltalk.withContext(function($ctx2) {
|
3061
|
+
_st($5)._nextPutAll_(_st(each)._asVariableName());
|
3062
|
+
_st($5)._nextPutAll_(":");
|
3063
|
+
$6=_st($5)._nextPutAll_(_st(each)._asVariableName());
|
3064
|
+
return $6;
|
3065
|
+
}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1)})}),(function(){
|
3066
|
+
return smalltalk.withContext(function($ctx2) {
|
3067
|
+
}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}));
|
3068
|
+
$7=self;
|
3069
|
+
_st($7)._nextPutAll_("},");
|
3070
|
+
$8=_st($7)._nextPutAll_(_st(_st(_st(_st(anIRClosure)._method())._scope())._alias()).__comma(")})"));
|
3071
|
+
return self}, function($ctx1) {$ctx1.fill(self,"nextPutBlockContextFor:during:",{anIRClosure:anIRClosure,aBlock:aBlock}, smalltalk.JSStream)})},
|
3072
|
+
args: ["anIRClosure", "aBlock"],
|
3073
|
+
source: "nextPutBlockContextFor: anIRClosure during: aBlock\x0a\x09self \x0a \x09nextPutAll: 'return smalltalk.withContext(function(', anIRClosure scope alias, ') {'; \x0a nextPutAll: String cr.\x0a \x0a aBlock value.\x0a \x0a self \x0a \x09nextPutAll: '}, function(', anIRClosure scope alias, ') {';\x0a nextPutAll: anIRClosure scope alias, '.fillBlock({'.\x0a \x0a anIRClosure locals \x0a \x09do: [ :each |\x0a \x09\x09self \x0a \x09\x09nextPutAll: each asVariableName;\x0a \x09 \x09nextPutAll: ':';\x0a \x09\x09nextPutAll: each asVariableName]\x0a\x09\x09separatedBy: [ self nextPutAll: ',' ].\x0a \x0a self\x0a \x09nextPutAll: '},';\x0a nextPutAll: anIRClosure method scope alias, ')})'",
|
3074
|
+
messageSends: ["nextPutAll:", ",", "alias", "scope", "cr", "value", "do:separatedBy:", "asVariableName", "locals", "method"],
|
3075
|
+
referencedClasses: ["String"]
|
3076
|
+
}),
|
3077
|
+
smalltalk.JSStream);
|
3078
|
+
|
2769
3079
|
smalltalk.addMethod(
|
2770
3080
|
"_nextPutClosureWith_arguments_",
|
2771
3081
|
smalltalk.method({
|
@@ -2773,18 +3083,19 @@ selector: "nextPutClosureWith:arguments:",
|
|
2773
3083
|
category: 'streaming',
|
2774
3084
|
fn: function (aBlock,anArray){
|
2775
3085
|
var self=this;
|
2776
|
-
|
2777
|
-
|
2778
|
-
|
2779
|
-
return smalltalk.
|
2780
|
-
}),(function(){
|
2781
|
-
return smalltalk.
|
2782
|
-
})
|
2783
|
-
|
2784
|
-
$1
|
2785
|
-
|
2786
|
-
|
2787
|
-
|
3086
|
+
return smalltalk.withContext(function($ctx1) {
|
3087
|
+
_st(self["@stream"])._nextPutAll_("(function(");
|
3088
|
+
_st(anArray)._do_separatedBy_((function(each){
|
3089
|
+
return smalltalk.withContext(function($ctx2) {
|
3090
|
+
}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1)})}),(function(){
|
3091
|
+
return smalltalk.withContext(function($ctx2) {
|
3092
|
+
}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}));
|
3093
|
+
$1=self["@stream"];
|
3094
|
+
_st($1)._nextPutAll_("){");
|
3095
|
+
$2=_st($1)._lf();
|
3096
|
+
_st(aBlock)._value();
|
3097
|
+
_st(self["@stream"])._nextPutAll_("})");
|
3098
|
+
return self}, function($ctx1) {$ctx1.fill(self,"nextPutClosureWith:arguments:",{aBlock:aBlock,anArray:anArray}, smalltalk.JSStream)})},
|
2788
3099
|
args: ["aBlock", "anArray"],
|
2789
3100
|
source: "nextPutClosureWith: aBlock arguments: anArray\x0a\x09stream nextPutAll: '(function('.\x0a\x09anArray \x0a\x09\x09do: [ :each | stream nextPutAll: each asVariableName ]\x0a\x09\x09separatedBy: [ stream nextPut: ',' ].\x0a\x09stream nextPutAll: '){'; lf.\x0a\x09aBlock value.\x0a\x09stream nextPutAll: '})'",
|
2790
3101
|
messageSends: ["nextPutAll:", "do:separatedBy:", "asVariableName", "nextPut:", "lf", "value"],
|
@@ -2792,6 +3103,42 @@ referencedClasses: []
|
|
2792
3103
|
}),
|
2793
3104
|
smalltalk.JSStream);
|
2794
3105
|
|
3106
|
+
smalltalk.addMethod(
|
3107
|
+
"_nextPutContextFor_during_",
|
3108
|
+
smalltalk.method({
|
3109
|
+
selector: "nextPutContextFor:during:",
|
3110
|
+
category: 'streaming',
|
3111
|
+
fn: function (aMethod,aBlock){
|
3112
|
+
var self=this;
|
3113
|
+
return smalltalk.withContext(function($ctx1) {
|
3114
|
+
$1=self;
|
3115
|
+
_st($1)._nextPutAll_(_st(_st("return smalltalk.withContext(function(").__comma(_st(_st(aMethod)._scope())._alias())).__comma(") { "));
|
3116
|
+
$2=_st($1)._nextPutAll_(_st((smalltalk.String || String))._cr());
|
3117
|
+
_st(aBlock)._value();
|
3118
|
+
$3=self;
|
3119
|
+
_st($3)._nextPutAll_(_st(_st(_st("}, function(").__comma(_st(_st(aMethod)._scope())._alias())).__comma(") {")).__comma(_st(_st(aMethod)._scope())._alias()));
|
3120
|
+
$4=_st($3)._nextPutAll_(_st(_st(".fill(self,").__comma(_st(_st(aMethod)._selector())._asJavascript())).__comma(",{"));
|
3121
|
+
_st(_st(aMethod)._locals())._do_separatedBy_((function(each){
|
3122
|
+
return smalltalk.withContext(function($ctx2) {
|
3123
|
+
_st($5)._nextPutAll_(_st(each)._asVariableName());
|
3124
|
+
_st($5)._nextPutAll_(":");
|
3125
|
+
$6=_st($5)._nextPutAll_(_st(each)._asVariableName());
|
3126
|
+
return $6;
|
3127
|
+
}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1)})}),(function(){
|
3128
|
+
return smalltalk.withContext(function($ctx2) {
|
3129
|
+
}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}));
|
3130
|
+
$7=self;
|
3131
|
+
_st($7)._nextPutAll_("}, ");
|
3132
|
+
_st($7)._nextPutAll_(_st(_st(aMethod)._theClass())._asJavascript());
|
3133
|
+
$8=_st($7)._nextPutAll_(")})");
|
3134
|
+
return self}, function($ctx1) {$ctx1.fill(self,"nextPutContextFor:during:",{aMethod:aMethod,aBlock:aBlock}, smalltalk.JSStream)})},
|
3135
|
+
args: ["aMethod", "aBlock"],
|
3136
|
+
source: "nextPutContextFor: aMethod during: aBlock\x0a\x09self \x0a \x09nextPutAll: 'return smalltalk.withContext(function(', aMethod scope alias, ') { '; \x0a nextPutAll: String cr.\x0a aBlock value.\x0a \x0a self \x0a \x09nextPutAll: '}, function(', aMethod scope alias, ') {', aMethod scope alias; \x0a nextPutAll: '.fill(self,', aMethod selector asJavascript, ',{'.\x0a\x0a aMethod locals \x0a \x09do: [ :each |\x0a \x09\x09self \x0a \x09\x09nextPutAll: each asVariableName;\x0a \x09 \x09nextPutAll: ':';\x0a \x09\x09nextPutAll: each asVariableName]\x0a\x09\x09separatedBy: [ self nextPutAll: ',' ].\x0a \x0a self\x0a \x09nextPutAll: '}, ';\x0a nextPutAll: aMethod theClass asJavascript;\x0a nextPutAll: ')})'",
|
3137
|
+
messageSends: ["nextPutAll:", ",", "alias", "scope", "cr", "value", "asJavascript", "selector", "do:separatedBy:", "asVariableName", "locals", "theClass"],
|
3138
|
+
referencedClasses: ["String"]
|
3139
|
+
}),
|
3140
|
+
smalltalk.JSStream);
|
3141
|
+
|
2795
3142
|
smalltalk.addMethod(
|
2796
3143
|
"_nextPutFunctionWith_arguments_",
|
2797
3144
|
smalltalk.method({
|
@@ -2799,20 +3146,22 @@ selector: "nextPutFunctionWith:arguments:",
|
|
2799
3146
|
category: 'streaming',
|
2800
3147
|
fn: function (aBlock,anArray){
|
2801
3148
|
var self=this;
|
2802
|
-
|
2803
|
-
|
2804
|
-
|
2805
|
-
return smalltalk.
|
2806
|
-
}),(function(){
|
2807
|
-
return smalltalk.
|
2808
|
-
})
|
2809
|
-
|
2810
|
-
$1
|
2811
|
-
|
2812
|
-
$
|
2813
|
-
|
2814
|
-
|
2815
|
-
|
3149
|
+
return smalltalk.withContext(function($ctx1) {
|
3150
|
+
_st(self["@stream"])._nextPutAll_("fn: function(");
|
3151
|
+
_st(anArray)._do_separatedBy_((function(each){
|
3152
|
+
return smalltalk.withContext(function($ctx2) {
|
3153
|
+
}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1)})}),(function(){
|
3154
|
+
return smalltalk.withContext(function($ctx2) {
|
3155
|
+
}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}));
|
3156
|
+
$1=self["@stream"];
|
3157
|
+
_st($1)._nextPutAll_("){");
|
3158
|
+
$2=_st($1)._lf();
|
3159
|
+
$3=self["@stream"];
|
3160
|
+
_st($3)._nextPutAll_("var self=this;");
|
3161
|
+
$4=_st($3)._lf();
|
3162
|
+
_st(aBlock)._value();
|
3163
|
+
_st(self["@stream"])._nextPutAll_("}");
|
3164
|
+
return self}, function($ctx1) {$ctx1.fill(self,"nextPutFunctionWith:arguments:",{aBlock:aBlock,anArray:anArray}, smalltalk.JSStream)})},
|
2816
3165
|
args: ["aBlock", "anArray"],
|
2817
3166
|
source: "nextPutFunctionWith: aBlock arguments: anArray\x0a\x09stream nextPutAll: 'fn: function('.\x0a\x09anArray \x0a\x09\x09do: [ :each | stream nextPutAll: each asVariableName ]\x0a\x09\x09separatedBy: [ stream nextPut: ',' ].\x0a\x09stream nextPutAll: '){'; lf.\x0a\x09stream nextPutAll: 'var self=this;'; lf.\x0a\x09aBlock value.\x0a\x09stream nextPutAll: '}'",
|
2818
3167
|
messageSends: ["nextPutAll:", "do:separatedBy:", "asVariableName", "nextPut:", "lf", "value"],
|
@@ -2827,14 +3176,15 @@ selector: "nextPutIf:with:",
|
|
2827
3176
|
category: 'streaming',
|
2828
3177
|
fn: function (aBlock,anotherBlock){
|
2829
3178
|
var self=this;
|
2830
|
-
|
2831
|
-
|
2832
|
-
|
2833
|
-
|
2834
|
-
$1
|
2835
|
-
|
2836
|
-
|
2837
|
-
|
3179
|
+
return smalltalk.withContext(function($ctx1) {
|
3180
|
+
_st(self["@stream"])._nextPutAll_("if(");
|
3181
|
+
_st(aBlock)._value();
|
3182
|
+
$1=self["@stream"];
|
3183
|
+
_st($1)._nextPutAll_("){");
|
3184
|
+
$2=_st($1)._lf();
|
3185
|
+
_st(anotherBlock)._value();
|
3186
|
+
_st(self["@stream"])._nextPutAll_("}");
|
3187
|
+
return self}, function($ctx1) {$ctx1.fill(self,"nextPutIf:with:",{aBlock:aBlock,anotherBlock:anotherBlock}, smalltalk.JSStream)})},
|
2838
3188
|
args: ["aBlock", "anotherBlock"],
|
2839
3189
|
source: "nextPutIf: aBlock with: anotherBlock\x0a\x09stream nextPutAll: 'if('.\x0a\x09aBlock value.\x0a\x09stream nextPutAll: '){'; lf.\x0a\x09anotherBlock value.\x0a\x09stream nextPutAll: '}'",
|
2840
3190
|
messageSends: ["nextPutAll:", "value", "lf"],
|
@@ -2849,17 +3199,19 @@ selector: "nextPutIfElse:with:with:",
|
|
2849
3199
|
category: 'streaming',
|
2850
3200
|
fn: function (aBlock,ifBlock,elseBlock){
|
2851
3201
|
var self=this;
|
2852
|
-
|
2853
|
-
|
2854
|
-
|
2855
|
-
|
2856
|
-
$1
|
2857
|
-
|
2858
|
-
|
2859
|
-
$
|
2860
|
-
|
2861
|
-
|
2862
|
-
|
3202
|
+
return smalltalk.withContext(function($ctx1) {
|
3203
|
+
_st(self["@stream"])._nextPutAll_("if(");
|
3204
|
+
_st(aBlock)._value();
|
3205
|
+
$1=self["@stream"];
|
3206
|
+
_st($1)._nextPutAll_("){");
|
3207
|
+
$2=_st($1)._lf();
|
3208
|
+
_st(ifBlock)._value();
|
3209
|
+
$3=self["@stream"];
|
3210
|
+
_st($3)._nextPutAll_("} else {");
|
3211
|
+
$4=_st($3)._lf();
|
3212
|
+
_st(elseBlock)._value();
|
3213
|
+
_st(self["@stream"])._nextPutAll_("}");
|
3214
|
+
return self}, function($ctx1) {$ctx1.fill(self,"nextPutIfElse:with:with:",{aBlock:aBlock,ifBlock:ifBlock,elseBlock:elseBlock}, smalltalk.JSStream)})},
|
2863
3215
|
args: ["aBlock", "ifBlock", "elseBlock"],
|
2864
3216
|
source: "nextPutIfElse: aBlock with: ifBlock with: elseBlock\x0a\x09stream nextPutAll: 'if('.\x0a\x09aBlock value.\x0a\x09stream nextPutAll: '){'; lf.\x0a\x09ifBlock value.\x0a\x09stream nextPutAll: '} else {'; lf.\x0a\x09elseBlock value.\x0a\x09stream nextPutAll: '}'",
|
2865
3217
|
messageSends: ["nextPutAll:", "value", "lf"],
|
@@ -2874,32 +3226,35 @@ selector: "nextPutMethodDeclaration:with:",
|
|
2874
3226
|
category: 'streaming',
|
2875
3227
|
fn: function (aMethod,aBlock){
|
2876
3228
|
var self=this;
|
2877
|
-
|
2878
|
-
|
2879
|
-
smalltalk.
|
2880
|
-
|
2881
|
-
|
2882
|
-
|
2883
|
-
$1
|
2884
|
-
|
2885
|
-
|
2886
|
-
|
2887
|
-
|
2888
|
-
|
2889
|
-
|
2890
|
-
|
2891
|
-
smalltalk.
|
2892
|
-
$
|
2893
|
-
|
2894
|
-
|
2895
|
-
|
2896
|
-
return smalltalk.
|
2897
|
-
})
|
2898
|
-
smalltalk.
|
2899
|
-
$
|
2900
|
-
|
3229
|
+
return smalltalk.withContext(function($ctx1) {
|
3230
|
+
$1=self["@stream"];
|
3231
|
+
_st($1)._nextPutAll_("smalltalk.method({");
|
3232
|
+
_st($1)._lf();
|
3233
|
+
_st($1)._nextPutAll_(_st(_st("selector: \x22").__comma(_st(aMethod)._selector())).__comma("\x22,"));
|
3234
|
+
_st($1)._lf();
|
3235
|
+
_st($1)._nextPutAll_(_st(_st("source: ").__comma(_st(_st(aMethod)._source())._asJavascript())).__comma(","));
|
3236
|
+
$2=_st($1)._lf();
|
3237
|
+
_st(aBlock)._value();
|
3238
|
+
$3=self["@stream"];
|
3239
|
+
_st($3)._nextPutAll_(_st(_st(",").__comma(_st((smalltalk.String || String))._lf())).__comma("messageSends: "));
|
3240
|
+
_st($3)._nextPutAll_(_st(_st(_st(_st(aMethod)._messageSends())._asArray())._asJavascript()).__comma(","));
|
3241
|
+
_st($3)._lf();
|
3242
|
+
_st($3)._nextPutAll_(_st(_st("args: ").__comma(_st(_st(_st(_st(aMethod)._arguments())._collect_((function(each){
|
3243
|
+
return smalltalk.withContext(function($ctx2) {
|
3244
|
+
}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1)})})))._asArray())._asJavascript())).__comma(","));
|
3245
|
+
_st($3)._lf();
|
3246
|
+
$4=_st($3)._nextPutAll_("referencedClasses: [");
|
3247
|
+
_st(_st(aMethod)._classReferences())._do_separatedBy_((function(each){
|
3248
|
+
return smalltalk.withContext(function($ctx2) {
|
3249
|
+
}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1)})}),(function(){
|
3250
|
+
return smalltalk.withContext(function($ctx2) {
|
3251
|
+
}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}));
|
3252
|
+
$5=self["@stream"];
|
3253
|
+
_st($5)._nextPutAll_("]");
|
3254
|
+
$6=_st($5)._nextPutAll_("})");
|
3255
|
+
return self}, function($ctx1) {$ctx1.fill(self,"nextPutMethodDeclaration:with:",{aMethod:aMethod,aBlock:aBlock}, smalltalk.JSStream)})},
|
2901
3256
|
args: ["aMethod", "aBlock"],
|
2902
|
-
source: "nextPutMethodDeclaration: aMethod with: aBlock\x0a\x09stream \x0a\x09\x09nextPutAll: 'smalltalk.method({'; lf;\x0a\x09\x09nextPutAll: 'selector: \x22', aMethod selector, '\x22,'; lf;\x0a\x09\x09nextPutAll: 'source: ', aMethod source asJavascript, ',';lf
|
3257
|
+
source: "nextPutMethodDeclaration: aMethod with: aBlock\x0a\x09stream \x0a\x09\x09nextPutAll: 'smalltalk.method({'; lf;\x0a\x09\x09nextPutAll: 'selector: \x22', aMethod selector, '\x22,'; lf;\x0a\x09\x09nextPutAll: 'source: ', aMethod source asJavascript, ',';lf. \x0a\x09aBlock value.\x0a\x09stream \x0a\x09\x09nextPutAll: ',', String lf, 'messageSends: ';\x0a\x09\x09nextPutAll: aMethod messageSends asArray asJavascript, ','; lf;\x0a nextPutAll: 'args: ', (aMethod arguments collect: [ :each | each value ]) asArray asJavascript, ','; lf;\x0a\x09\x09nextPutAll: 'referencedClasses: ['.\x0a\x09aMethod classReferences \x0a\x09\x09do: [:each | stream nextPutAll: each asJavascript]\x0a\x09\x09separatedBy: [stream nextPutAll: ','].\x0a\x09stream \x0a\x09\x09nextPutAll: ']';\x0a\x09\x09nextPutAll: '})'",
|
2903
3258
|
messageSends: ["nextPutAll:", "lf", ",", "selector", "asJavascript", "source", "value", "asArray", "messageSends", "collect:", "arguments", "do:separatedBy:", "classReferences"],
|
2904
3259
|
referencedClasses: ["String"]
|
2905
3260
|
}),
|
@@ -2912,17 +3267,19 @@ selector: "nextPutNonLocalReturnHandlingWith:",
|
|
2912
3267
|
category: 'streaming',
|
2913
3268
|
fn: function (aBlock){
|
2914
3269
|
var self=this;
|
2915
|
-
|
2916
|
-
|
2917
|
-
|
2918
|
-
|
2919
|
-
$1
|
2920
|
-
|
2921
|
-
|
2922
|
-
|
2923
|
-
|
2924
|
-
$
|
2925
|
-
return
|
3270
|
+
return smalltalk.withContext(function($ctx1) {
|
3271
|
+
$1=self["@stream"];
|
3272
|
+
_st($1)._nextPutAll_("var $early={};");
|
3273
|
+
_st($1)._lf();
|
3274
|
+
_st($1)._nextPutAll_("try {");
|
3275
|
+
$2=_st($1)._lf();
|
3276
|
+
_st(aBlock)._value();
|
3277
|
+
$3=self["@stream"];
|
3278
|
+
_st($3)._nextPutAll_("}");
|
3279
|
+
_st($3)._lf();
|
3280
|
+
_st($3)._nextPutAll_("catch(e) {if(e===$early)return e[0]; throw e}");
|
3281
|
+
$4=_st($3)._lf();
|
3282
|
+
return self}, function($ctx1) {$ctx1.fill(self,"nextPutNonLocalReturnHandlingWith:",{aBlock:aBlock}, smalltalk.JSStream)})},
|
2926
3283
|
args: ["aBlock"],
|
2927
3284
|
source: "nextPutNonLocalReturnHandlingWith: aBlock\x0a\x09stream \x0a\x09\x09nextPutAll: 'var $early={};'; lf;\x0a\x09\x09nextPutAll: 'try {'; lf.\x0a\x09aBlock value.\x0a\x09stream \x0a\x09\x09nextPutAll: '}'; lf;\x0a\x09\x09nextPutAll: 'catch(e) {if(e===$early)return e[0]; throw e}'; lf",
|
2928
3285
|
messageSends: ["nextPutAll:", "lf", "value"],
|
@@ -2937,10 +3294,10 @@ selector: "nextPutNonLocalReturnWith:",
|
|
2937
3294
|
category: 'streaming',
|
2938
3295
|
fn: function (aBlock){
|
2939
3296
|
var self=this;
|
2940
|
-
smalltalk.
|
2941
|
-
|
2942
|
-
|
2943
|
-
return self},
|
3297
|
+
return smalltalk.withContext(function($ctx1) {
|
3298
|
+
_st(aBlock)._value();
|
3299
|
+
_st(self["@stream"])._nextPutAll_("]");
|
3300
|
+
return self}, function($ctx1) {$ctx1.fill(self,"nextPutNonLocalReturnWith:",{aBlock:aBlock}, smalltalk.JSStream)})},
|
2944
3301
|
args: ["aBlock"],
|
2945
3302
|
source: "nextPutNonLocalReturnWith: aBlock\x0a\x09stream nextPutAll: 'throw $early=['.\x0a\x09aBlock value.\x0a\x09stream nextPutAll: ']'",
|
2946
3303
|
messageSends: ["nextPutAll:", "value"],
|
@@ -2955,8 +3312,8 @@ selector: "nextPutReturn",
|
|
2955
3312
|
category: 'streaming',
|
2956
3313
|
fn: function (){
|
2957
3314
|
var self=this;
|
2958
|
-
smalltalk.
|
2959
|
-
return self},
|
3315
|
+
return smalltalk.withContext(function($ctx1) {
|
3316
|
+
return self}, function($ctx1) {$ctx1.fill(self,"nextPutReturn",{}, smalltalk.JSStream)})},
|
2960
3317
|
args: [],
|
2961
3318
|
source: "nextPutReturn\x0a\x09stream nextPutAll: 'return '",
|
2962
3319
|
messageSends: ["nextPutAll:"],
|
@@ -2971,9 +3328,9 @@ selector: "nextPutReturnWith:",
|
|
2971
3328
|
category: 'streaming',
|
2972
3329
|
fn: function (aBlock){
|
2973
3330
|
var self=this;
|
2974
|
-
smalltalk.
|
2975
|
-
|
2976
|
-
return self},
|
3331
|
+
return smalltalk.withContext(function($ctx1) {
|
3332
|
+
_st(aBlock)._value();
|
3333
|
+
return self}, function($ctx1) {$ctx1.fill(self,"nextPutReturnWith:",{aBlock:aBlock}, smalltalk.JSStream)})},
|
2977
3334
|
args: ["aBlock"],
|
2978
3335
|
source: "nextPutReturnWith: aBlock\x0a\x09self nextPutReturn.\x0a\x09aBlock value",
|
2979
3336
|
messageSends: ["nextPutReturn", "value"],
|
@@ -2981,30 +3338,6 @@ referencedClasses: []
|
|
2981
3338
|
}),
|
2982
3339
|
smalltalk.JSStream);
|
2983
3340
|
|
2984
|
-
smalltalk.addMethod(
|
2985
|
-
"_nextPutSendTo_selector_arguments_",
|
2986
|
-
smalltalk.method({
|
2987
|
-
selector: "nextPutSendTo:selector:arguments:",
|
2988
|
-
category: 'streaming',
|
2989
|
-
fn: function (receiver,selector,arguments){
|
2990
|
-
var self=this;
|
2991
|
-
smalltalk.send(self["@stream"],"_nextPutAll_",["smalltalk.send("]);
|
2992
|
-
smalltalk.send(receiver,"_emitOn_",[self]);
|
2993
|
-
smalltalk.send(self["@stream"],"_nextPutAll_",[smalltalk.send(smalltalk.send(",\x22","__comma",[smalltalk.send(selector,"_asSelector",[])]),"__comma",["\x22,["])]);
|
2994
|
-
smalltalk.send(arguments,"_do_separatedBy_",[(function(each){
|
2995
|
-
return smalltalk.send(each,"_emitOn_",[self]);
|
2996
|
-
}),(function(){
|
2997
|
-
return smalltalk.send(self["@stream"],"_nextPutAll_",[","]);
|
2998
|
-
})]);
|
2999
|
-
smalltalk.send(self["@stream"],"_nextPutAll_",["])"]);
|
3000
|
-
return self},
|
3001
|
-
args: ["receiver", "selector", "arguments"],
|
3002
|
-
source: "nextPutSendTo: receiver selector: selector arguments: arguments\x0a\x09stream nextPutAll: 'smalltalk.send('.\x0a\x09receiver emitOn: self. \x0a\x09stream nextPutAll: ',\x22', selector asSelector, '\x22,['.\x0a\x09arguments \x0a\x09\x09do: [ :each | each emitOn: self ]\x0a\x09\x09separatedBy: [ stream nextPutAll: ',' ].\x0a\x09stream nextPutAll: '])'",
|
3003
|
-
messageSends: ["nextPutAll:", "emitOn:", ",", "asSelector", "do:separatedBy:"],
|
3004
|
-
referencedClasses: []
|
3005
|
-
}),
|
3006
|
-
smalltalk.JSStream);
|
3007
|
-
|
3008
3341
|
smalltalk.addMethod(
|
3009
3342
|
"_nextPutSequenceWith_",
|
3010
3343
|
smalltalk.method({
|
@@ -3012,8 +3345,8 @@ selector: "nextPutSequenceWith:",
|
|
3012
3345
|
category: 'streaming',
|
3013
3346
|
fn: function (aBlock){
|
3014
3347
|
var self=this;
|
3015
|
-
smalltalk.
|
3016
|
-
return self},
|
3348
|
+
return smalltalk.withContext(function($ctx1) {
|
3349
|
+
return self}, function($ctx1) {$ctx1.fill(self,"nextPutSequenceWith:",{aBlock:aBlock}, smalltalk.JSStream)})},
|
3017
3350
|
args: ["aBlock"],
|
3018
3351
|
source: "nextPutSequenceWith: aBlock\x0a\x09\x22stream \x0a\x09\x09nextPutAll: 'switch(smalltalk.thisContext.pc){'; lf.\x22\x0a\x09aBlock value.\x0a\x09\x22stream \x0a\x09\x09nextPutAll: '};'; lf\x22",
|
3019
3352
|
messageSends: ["value"],
|
@@ -3028,13 +3361,15 @@ selector: "nextPutStatement:with:",
|
|
3028
3361
|
category: 'streaming',
|
3029
3362
|
fn: function (anInteger,aBlock){
|
3030
3363
|
var self=this;
|
3031
|
-
|
3032
|
-
|
3033
|
-
$1
|
3034
|
-
|
3035
|
-
|
3036
|
-
$
|
3037
|
-
|
3364
|
+
return smalltalk.withContext(function($ctx1) {
|
3365
|
+
$1=self["@stream"];
|
3366
|
+
_st($1)._nextPutAll_(_st(_st("case ").__comma(_st(anInteger)._asString())).__comma(":"));
|
3367
|
+
$2=_st($1)._lf();
|
3368
|
+
_st(self)._nextPutStatementWith_(aBlock);
|
3369
|
+
$3=self["@stream"];
|
3370
|
+
_st($3)._nextPutAll_(_st(_st("smalltalk.thisContext.pc=").__comma(_st(_st(anInteger).__plus((1)))._asString())).__comma(";"));
|
3371
|
+
$4=_st($3)._lf();
|
3372
|
+
return self}, function($ctx1) {$ctx1.fill(self,"nextPutStatement:with:",{anInteger:anInteger,aBlock:aBlock}, smalltalk.JSStream)})},
|
3038
3373
|
args: ["anInteger", "aBlock"],
|
3039
3374
|
source: "nextPutStatement: anInteger with: aBlock\x0a\x09stream nextPutAll: 'case ', anInteger asString, ':'; lf.\x0a\x09self nextPutStatementWith: aBlock.\x0a\x09stream nextPutAll: 'smalltalk.thisContext.pc=', (anInteger + 1) asString, ';'; lf",
|
3040
3375
|
messageSends: ["nextPutAll:", ",", "asString", "lf", "nextPutStatementWith:", "+"],
|
@@ -3049,11 +3384,12 @@ selector: "nextPutStatementWith:",
|
|
3049
3384
|
category: 'streaming',
|
3050
3385
|
fn: function (aBlock){
|
3051
3386
|
var self=this;
|
3052
|
-
|
3053
|
-
|
3054
|
-
|
3055
|
-
$1
|
3056
|
-
|
3387
|
+
return smalltalk.withContext(function($ctx1) {
|
3388
|
+
_st(aBlock)._value();
|
3389
|
+
$1=self["@stream"];
|
3390
|
+
_st($1)._nextPutAll_(";");
|
3391
|
+
$2=_st($1)._lf();
|
3392
|
+
return self}, function($ctx1) {$ctx1.fill(self,"nextPutStatementWith:",{aBlock:aBlock}, smalltalk.JSStream)})},
|
3057
3393
|
args: ["aBlock"],
|
3058
3394
|
source: "nextPutStatementWith: aBlock\x0a\x09aBlock value.\x0a\x09stream nextPutAll: ';'; lf",
|
3059
3395
|
messageSends: ["value", "nextPutAll:", "lf"],
|
@@ -3068,10 +3404,11 @@ selector: "nextPutVar:",
|
|
3068
3404
|
category: 'streaming',
|
3069
3405
|
fn: function (aString){
|
3070
3406
|
var self=this;
|
3071
|
-
|
3072
|
-
|
3073
|
-
$1
|
3074
|
-
|
3407
|
+
return smalltalk.withContext(function($ctx1) {
|
3408
|
+
$1=self["@stream"];
|
3409
|
+
_st($1)._nextPutAll_(_st(_st("var ").__comma(aString)).__comma(";"));
|
3410
|
+
$2=_st($1)._lf();
|
3411
|
+
return self}, function($ctx1) {$ctx1.fill(self,"nextPutVar:",{aString:aString}, smalltalk.JSStream)})},
|
3075
3412
|
args: ["aString"],
|
3076
3413
|
source: "nextPutVar: aString\x0a\x09stream nextPutAll: 'var ', aString, ';'; lf",
|
3077
3414
|
messageSends: ["nextPutAll:", ",", "lf"],
|
@@ -3086,19 +3423,28 @@ selector: "nextPutVars:",
|
|
3086
3423
|
category: 'streaming',
|
3087
3424
|
fn: function (aCollection){
|
3088
3425
|
var self=this;
|
3089
|
-
|
3090
|
-
|
3091
|
-
|
3092
|
-
|
3093
|
-
|
3094
|
-
|
3095
|
-
})
|
3096
|
-
|
3097
|
-
|
3098
|
-
return
|
3426
|
+
return smalltalk.withContext(function($ctx1) {
|
3427
|
+
var $early={};
|
3428
|
+
try {
|
3429
|
+
_st(aCollection)._ifEmpty_((function(){
|
3430
|
+
return smalltalk.withContext(function($ctx2) {
|
3431
|
+
throw $early=[$1];
|
3432
|
+
}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}));
|
3433
|
+
_st(self["@stream"])._nextPutAll_("var ");
|
3434
|
+
_st(aCollection)._do_separatedBy_((function(each){
|
3435
|
+
return smalltalk.withContext(function($ctx2) {
|
3436
|
+
}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1)})}),(function(){
|
3437
|
+
return smalltalk.withContext(function($ctx2) {
|
3438
|
+
}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}));
|
3439
|
+
$2=self["@stream"];
|
3440
|
+
_st($2)._nextPutAll_(";");
|
3441
|
+
$3=_st($2)._lf();
|
3442
|
+
return self}
|
3443
|
+
catch(e) {if(e===$early)return e[0]; throw e}
|
3444
|
+
}, function($ctx1) {$ctx1.fill(self,"nextPutVars:",{aCollection:aCollection}, smalltalk.JSStream)})},
|
3099
3445
|
args: ["aCollection"],
|
3100
|
-
source: "nextPutVars: aCollection\x0a\x09stream nextPutAll: 'var '.\x0a\x09aCollection \x0a\x09\x09do: [ :each | stream nextPutAll: each ]\x0a\x09\x09separatedBy: [ stream nextPutAll: ',' ].\x0a\x09stream nextPutAll: ';'; lf",
|
3101
|
-
messageSends: ["nextPutAll:", "do:separatedBy:", "lf"],
|
3446
|
+
source: "nextPutVars: aCollection\x0a\x09aCollection ifEmpty: [ ^self ].\x0a \x0a\x09stream nextPutAll: 'var '.\x0a\x09aCollection \x0a\x09\x09do: [ :each | stream nextPutAll: each ]\x0a\x09\x09separatedBy: [ stream nextPutAll: ',' ].\x0a\x09stream nextPutAll: ';'; lf",
|
3447
|
+
messageSends: ["ifEmpty:", "nextPutAll:", "do:separatedBy:", "lf"],
|
3102
3448
|
referencedClasses: []
|
3103
3449
|
}),
|
3104
3450
|
smalltalk.JSStream);
|
@@ -3112,8 +3458,8 @@ selector: "appendToInstruction:",
|
|
3112
3458
|
category: '*Compiler-IR',
|
3113
3459
|
fn: function (anIRInstruction){
|
3114
3460
|
var self=this;
|
3115
|
-
smalltalk.
|
3116
|
-
return self},
|
3461
|
+
return smalltalk.withContext(function($ctx1) {
|
3462
|
+
return self}, function($ctx1) {$ctx1.fill(self,"appendToInstruction:",{anIRInstruction:anIRInstruction}, smalltalk.BlockClosure)})},
|
3117
3463
|
args: ["anIRInstruction"],
|
3118
3464
|
source: "appendToInstruction: anIRInstruction\x0a anIRInstruction appendBlock: self",
|
3119
3465
|
messageSends: ["appendBlock:"],
|
@@ -3128,15 +3474,15 @@ selector: "asVariableName",
|
|
3128
3474
|
category: '*Compiler-IR',
|
3129
3475
|
fn: function (){
|
3130
3476
|
var self=this;
|
3131
|
-
|
3132
|
-
$2=
|
3477
|
+
return smalltalk.withContext(function($ctx1) {
|
3478
|
+
$2=_st(_st(_st((smalltalk.Smalltalk || Smalltalk))._current())._reservedWords())._includes_(self);
|
3133
3479
|
if(smalltalk.assert($2)){
|
3134
|
-
$1=
|
3480
|
+
$1=_st(self).__comma("_");
|
3135
3481
|
} else {
|
3136
3482
|
$1=self;
|
3137
3483
|
};
|
3138
3484
|
return $1;
|
3139
|
-
},
|
3485
|
+
}, function($ctx1) {$ctx1.fill(self,"asVariableName",{}, smalltalk.String)})},
|
3140
3486
|
args: [],
|
3141
3487
|
source: "asVariableName\x0a\x09^ (Smalltalk current reservedWords includes: self)\x0a\x09\x09ifTrue: [ self, '_' ]\x0a\x09\x09ifFalse: [ self ]",
|
3142
3488
|
messageSends: ["ifTrue:ifFalse:", ",", "includes:", "reservedWords", "current"],
|