resin 0.3.1 → 0.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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"],
|