resin 0.3.1 → 0.4.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (84) hide show
  1. data/amber/bin/amberc +10 -350
  2. data/amber/js/Benchfib.deploy.js +80 -89
  3. data/amber/js/Benchfib.js +80 -89
  4. data/amber/js/Canvas.deploy.js +558 -545
  5. data/amber/js/Canvas.js +563 -545
  6. data/amber/js/Compiler-AST.deploy.js +431 -243
  7. data/amber/js/Compiler-AST.js +487 -244
  8. data/amber/js/Compiler-Core.deploy.js +201 -1045
  9. data/amber/js/Compiler-Core.js +208 -1207
  10. data/amber/js/Compiler-Exceptions.deploy.js +37 -18
  11. data/amber/js/Compiler-Exceptions.js +42 -18
  12. data/amber/js/Compiler-IR.deploy.js +1071 -774
  13. data/amber/js/Compiler-IR.js +1194 -848
  14. data/amber/js/Compiler-Inlining.deploy.js +395 -373
  15. data/amber/js/Compiler-Inlining.js +395 -373
  16. data/amber/js/Compiler-Interpreter.deploy.js +1202 -0
  17. data/amber/js/Compiler-Interpreter.js +1631 -0
  18. data/amber/js/Compiler-Semantic.deploy.js +695 -600
  19. data/amber/js/Compiler-Semantic.js +721 -611
  20. data/amber/js/Compiler-Tests.deploy.js +699 -376
  21. data/amber/js/Compiler-Tests.js +834 -381
  22. data/amber/js/Compiler.deploy.js +8563 -1805
  23. data/amber/js/Compiler.js +11476 -2633
  24. data/amber/js/Examples.deploy.js +29 -29
  25. data/amber/js/Examples.js +29 -29
  26. data/amber/js/IDE.deploy.js +3292 -2649
  27. data/amber/js/IDE.js +3318 -2710
  28. data/amber/js/Importer-Exporter.deploy.js +393 -349
  29. data/amber/js/Importer-Exporter.js +398 -354
  30. data/amber/js/Kernel-Announcements.deploy.js +53 -44
  31. data/amber/js/Kernel-Announcements.js +55 -44
  32. data/amber/js/Kernel-Classes.deploy.js +566 -368
  33. data/amber/js/Kernel-Classes.js +660 -402
  34. data/amber/js/Kernel-Collections.deploy.js +1149 -1098
  35. data/amber/js/Kernel-Collections.js +1183 -1116
  36. data/amber/js/Kernel-Exceptions.deploy.js +173 -75
  37. data/amber/js/Kernel-Exceptions.js +215 -77
  38. data/amber/js/Kernel-Methods.deploy.js +530 -313
  39. data/amber/js/Kernel-Methods.js +632 -338
  40. data/amber/js/Kernel-Objects.deploy.js +1734 -1577
  41. data/amber/js/Kernel-Objects.js +1867 -1654
  42. data/amber/js/Kernel-Tests.deploy.js +1416 -973
  43. data/amber/js/Kernel-Tests.js +1495 -981
  44. data/amber/js/Kernel-Transcript.deploy.js +23 -24
  45. data/amber/js/Kernel-Transcript.js +25 -26
  46. data/amber/js/SUnit-Tests.deploy.js +402 -0
  47. data/amber/js/SUnit-Tests.js +518 -0
  48. data/amber/js/SUnit.deploy.js +535 -237
  49. data/amber/js/SUnit.js +634 -246
  50. data/amber/js/amber.js +90 -53
  51. data/amber/js/boot.js +441 -255
  52. data/amber/js/init.js +1 -3
  53. data/amber/js/lib/CodeMirror/codemirror.css +3 -0
  54. data/amber/js/lib/CodeMirror/codemirror.js +104 -55
  55. data/amber/js/lib/peg-0.7.0.min.js +9 -0
  56. data/amber/js/parser.js +1504 -802
  57. data/amber/js/parser.pegjs +170 -165
  58. data/amber/st/Canvas.st +6 -0
  59. data/amber/st/Compiler-AST.st +54 -3
  60. data/amber/st/Compiler-Core.st +6 -551
  61. data/amber/st/Compiler-Exceptions.st +4 -0
  62. data/amber/st/Compiler-IR.st +205 -87
  63. data/amber/st/Compiler-Interpreter.st +597 -0
  64. data/amber/st/Compiler-Semantic.st +46 -21
  65. data/amber/st/Compiler-Tests.st +254 -7
  66. data/amber/st/Compiler.st +3172 -1541
  67. data/amber/st/IDE.st +57 -93
  68. data/amber/st/Importer-Exporter.st +4 -7
  69. data/amber/st/Kernel-Announcements.st +8 -0
  70. data/amber/st/Kernel-Classes.st +149 -40
  71. data/amber/st/Kernel-Collections.st +43 -32
  72. data/amber/st/Kernel-Exceptions.st +70 -1
  73. data/amber/st/Kernel-Methods.st +165 -27
  74. data/amber/st/Kernel-Objects.st +215 -140
  75. data/amber/st/Kernel-Tests.st +195 -10
  76. data/amber/st/Kernel-Transcript.st +1 -3
  77. data/amber/st/SUnit-Tests.st +186 -0
  78. data/amber/st/SUnit.st +186 -14
  79. data/bin/resin +6 -0
  80. data/lib/resin/cli.rb +19 -0
  81. metadata +41 -25
  82. data/amber/js/lib/peg-0.6.2.min.js +0 -2
  83. data/bin/resin-compile +0 -6
  84. data/bin/runresin +0 -12
@@ -8,10 +8,10 @@ selector: "accept:",
8
8
  category: 'visiting',
9
9
  fn: function (aVisitor){
10
10
  var self=this;
11
- var $1;
12
- $1=smalltalk.send(aVisitor,"_visitIRInlinedAssignment_",[self]);
11
+ return smalltalk.withContext(function($ctx1) {
12
+ $1=_st(aVisitor)._visitIRInlinedAssignment_(self);
13
13
  return $1;
14
- },
14
+ }, function($ctx1) {$ctx1.fill(self,"accept:",{aVisitor:aVisitor}, smalltalk.IRInlinedAssignment)})},
15
15
  args: ["aVisitor"],
16
16
  source: "accept: aVisitor\x0a\x09^ aVisitor visitIRInlinedAssignment: self",
17
17
  messageSends: ["visitIRInlinedAssignment:"],
@@ -26,8 +26,8 @@ selector: "isInlined",
26
26
  category: 'testing',
27
27
  fn: function (){
28
28
  var self=this;
29
- return true;
30
- },
29
+ return smalltalk.withContext(function($ctx1) {
30
+ }, function($ctx1) {$ctx1.fill(self,"isInlined",{}, smalltalk.IRInlinedAssignment)})},
31
31
  args: [],
32
32
  source: "isInlined\x0a\x09^ true",
33
33
  messageSends: [],
@@ -46,8 +46,8 @@ selector: "accept:",
46
46
  category: 'visiting',
47
47
  fn: function (aVisitor){
48
48
  var self=this;
49
- smalltalk.send(aVisitor,"_visitIRInlinedClosure_",[self]);
50
- return self},
49
+ return smalltalk.withContext(function($ctx1) {
50
+ return self}, function($ctx1) {$ctx1.fill(self,"accept:",{aVisitor:aVisitor}, smalltalk.IRInlinedClosure)})},
51
51
  args: ["aVisitor"],
52
52
  source: "accept: aVisitor\x0a\x09aVisitor visitIRInlinedClosure: self",
53
53
  messageSends: ["visitIRInlinedClosure:"],
@@ -62,8 +62,8 @@ selector: "isInlined",
62
62
  category: 'testing',
63
63
  fn: function (){
64
64
  var self=this;
65
- return true;
66
- },
65
+ return smalltalk.withContext(function($ctx1) {
66
+ }, function($ctx1) {$ctx1.fill(self,"isInlined",{}, smalltalk.IRInlinedClosure)})},
67
67
  args: [],
68
68
  source: "isInlined\x0a\x09^ true",
69
69
  messageSends: [],
@@ -82,10 +82,10 @@ selector: "accept:",
82
82
  category: 'visiting',
83
83
  fn: function (aVisitor){
84
84
  var self=this;
85
- var $1;
86
- $1=smalltalk.send(aVisitor,"_visitIRInlinedReturn_",[self]);
85
+ return smalltalk.withContext(function($ctx1) {
86
+ $1=_st(aVisitor)._visitIRInlinedReturn_(self);
87
87
  return $1;
88
- },
88
+ }, function($ctx1) {$ctx1.fill(self,"accept:",{aVisitor:aVisitor}, smalltalk.IRInlinedReturn)})},
89
89
  args: ["aVisitor"],
90
90
  source: "accept: aVisitor\x0a\x09^ aVisitor visitIRInlinedReturn: self",
91
91
  messageSends: ["visitIRInlinedReturn:"],
@@ -100,8 +100,8 @@ selector: "isInlined",
100
100
  category: 'testing',
101
101
  fn: function (){
102
102
  var self=this;
103
- return true;
104
- },
103
+ return smalltalk.withContext(function($ctx1) {
104
+ }, function($ctx1) {$ctx1.fill(self,"isInlined",{}, smalltalk.IRInlinedReturn)})},
105
105
  args: [],
106
106
  source: "isInlined\x0a\x09^ true",
107
107
  messageSends: [],
@@ -120,10 +120,10 @@ selector: "accept:",
120
120
  category: 'visiting',
121
121
  fn: function (aVisitor){
122
122
  var self=this;
123
- var $1;
124
- $1=smalltalk.send(aVisitor,"_visitIRInlinedNonLocalReturn_",[self]);
123
+ return smalltalk.withContext(function($ctx1) {
124
+ $1=_st(aVisitor)._visitIRInlinedNonLocalReturn_(self);
125
125
  return $1;
126
- },
126
+ }, function($ctx1) {$ctx1.fill(self,"accept:",{aVisitor:aVisitor}, smalltalk.IRInlinedNonLocalReturn)})},
127
127
  args: ["aVisitor"],
128
128
  source: "accept: aVisitor\x0a\x09^ aVisitor visitIRInlinedNonLocalReturn: self",
129
129
  messageSends: ["visitIRInlinedNonLocalReturn:"],
@@ -138,8 +138,8 @@ selector: "isInlined",
138
138
  category: 'testing',
139
139
  fn: function (){
140
140
  var self=this;
141
- return true;
142
- },
141
+ return smalltalk.withContext(function($ctx1) {
142
+ }, function($ctx1) {$ctx1.fill(self,"isInlined",{}, smalltalk.IRInlinedNonLocalReturn)})},
143
143
  args: [],
144
144
  source: "isInlined\x0a\x09^ true",
145
145
  messageSends: [],
@@ -158,8 +158,8 @@ selector: "accept:",
158
158
  category: 'visiting',
159
159
  fn: function (aVisitor){
160
160
  var self=this;
161
- smalltalk.send(aVisitor,"_visitInlinedSend_",[self]);
162
- return self},
161
+ return smalltalk.withContext(function($ctx1) {
162
+ return self}, function($ctx1) {$ctx1.fill(self,"accept:",{aVisitor:aVisitor}, smalltalk.IRInlinedSend)})},
163
163
  args: ["aVisitor"],
164
164
  source: "accept: aVisitor\x0a\x09aVisitor visitInlinedSend: self",
165
165
  messageSends: ["visitInlinedSend:"],
@@ -174,8 +174,8 @@ selector: "isInlined",
174
174
  category: 'testing',
175
175
  fn: function (){
176
176
  var self=this;
177
- return true;
178
- },
177
+ return smalltalk.withContext(function($ctx1) {
178
+ }, function($ctx1) {$ctx1.fill(self,"isInlined",{}, smalltalk.IRInlinedSend)})},
179
179
  args: [],
180
180
  source: "isInlined\x0a\x09^ true",
181
181
  messageSends: [],
@@ -193,8 +193,8 @@ selector: "accept:",
193
193
  category: 'visiting',
194
194
  fn: function (aVisitor){
195
195
  var self=this;
196
- smalltalk.send(aVisitor,"_visitIRInlinedIfFalse_",[self]);
197
- return self},
196
+ return smalltalk.withContext(function($ctx1) {
197
+ return self}, function($ctx1) {$ctx1.fill(self,"accept:",{aVisitor:aVisitor}, smalltalk.IRInlinedIfFalse)})},
198
198
  args: ["aVisitor"],
199
199
  source: "accept: aVisitor\x0a\x09aVisitor visitIRInlinedIfFalse: self",
200
200
  messageSends: ["visitIRInlinedIfFalse:"],
@@ -212,8 +212,8 @@ selector: "accept:",
212
212
  category: 'visiting',
213
213
  fn: function (aVisitor){
214
214
  var self=this;
215
- smalltalk.send(aVisitor,"_visitIRInlinedIfNilIfNotNil_",[self]);
216
- return self},
215
+ return smalltalk.withContext(function($ctx1) {
216
+ return self}, function($ctx1) {$ctx1.fill(self,"accept:",{aVisitor:aVisitor}, smalltalk.IRInlinedIfNilIfNotNil)})},
217
217
  args: ["aVisitor"],
218
218
  source: "accept: aVisitor\x0a\x09aVisitor visitIRInlinedIfNilIfNotNil: self",
219
219
  messageSends: ["visitIRInlinedIfNilIfNotNil:"],
@@ -231,8 +231,8 @@ selector: "accept:",
231
231
  category: 'visiting',
232
232
  fn: function (aVisitor){
233
233
  var self=this;
234
- smalltalk.send(aVisitor,"_visitIRInlinedIfTrue_",[self]);
235
- return self},
234
+ return smalltalk.withContext(function($ctx1) {
235
+ return self}, function($ctx1) {$ctx1.fill(self,"accept:",{aVisitor:aVisitor}, smalltalk.IRInlinedIfTrue)})},
236
236
  args: ["aVisitor"],
237
237
  source: "accept: aVisitor\x0a\x09aVisitor visitIRInlinedIfTrue: self",
238
238
  messageSends: ["visitIRInlinedIfTrue:"],
@@ -250,8 +250,8 @@ selector: "accept:",
250
250
  category: 'visiting',
251
251
  fn: function (aVisitor){
252
252
  var self=this;
253
- smalltalk.send(aVisitor,"_visitIRInlinedIfTrueIfFalse_",[self]);
254
- return self},
253
+ return smalltalk.withContext(function($ctx1) {
254
+ return self}, function($ctx1) {$ctx1.fill(self,"accept:",{aVisitor:aVisitor}, smalltalk.IRInlinedIfTrueIfFalse)})},
255
255
  args: ["aVisitor"],
256
256
  source: "accept: aVisitor\x0a\x09aVisitor visitIRInlinedIfTrueIfFalse: self",
257
257
  messageSends: ["visitIRInlinedIfTrueIfFalse:"],
@@ -270,8 +270,8 @@ selector: "accept:",
270
270
  category: 'visiting',
271
271
  fn: function (aVisitor){
272
272
  var self=this;
273
- smalltalk.send(aVisitor,"_visitIRInlinedSequence_",[self]);
274
- return self},
273
+ return smalltalk.withContext(function($ctx1) {
274
+ return self}, function($ctx1) {$ctx1.fill(self,"accept:",{aVisitor:aVisitor}, smalltalk.IRInlinedSequence)})},
275
275
  args: ["aVisitor"],
276
276
  source: "accept: aVisitor\x0a\x09aVisitor visitIRInlinedSequence: self",
277
277
  messageSends: ["visitIRInlinedSequence:"],
@@ -286,8 +286,8 @@ selector: "isInlined",
286
286
  category: 'testing',
287
287
  fn: function (){
288
288
  var self=this;
289
- return true;
290
- },
289
+ return smalltalk.withContext(function($ctx1) {
290
+ }, function($ctx1) {$ctx1.fill(self,"isInlined",{}, smalltalk.IRInlinedSequence)})},
291
291
  args: [],
292
292
  source: "isInlined\x0a\x09^ true",
293
293
  messageSends: [],
@@ -306,13 +306,13 @@ selector: "assignmentInliner",
306
306
  category: 'factory',
307
307
  fn: function (){
308
308
  var self=this;
309
- var $2,$3,$1;
310
- $2=smalltalk.send((smalltalk.IRAssignmentInliner || IRAssignmentInliner),"_new",[]);
311
- smalltalk.send($2,"_translator_",[self]);
312
- $3=smalltalk.send($2,"_yourself",[]);
309
+ return smalltalk.withContext(function($ctx1) {
310
+ $2=_st((smalltalk.IRAssignmentInliner || IRAssignmentInliner))._new();
311
+ _st($2)._translator_(self);
312
+ $3=_st($2)._yourself();
313
313
  $1=$3;
314
314
  return $1;
315
- },
315
+ }, function($ctx1) {$ctx1.fill(self,"assignmentInliner",{}, smalltalk.IRInliner)})},
316
316
  args: [],
317
317
  source: "assignmentInliner\x0a\x09^ IRAssignmentInliner new \x0a\x09\x09translator: self;\x0a\x09\x09yourself",
318
318
  messageSends: ["translator:", "new", "yourself"],
@@ -327,13 +327,13 @@ selector: "nonLocalReturnInliner",
327
327
  category: 'factory',
328
328
  fn: function (){
329
329
  var self=this;
330
- var $2,$3,$1;
331
- $2=smalltalk.send((smalltalk.IRNonLocalReturnInliner || IRNonLocalReturnInliner),"_new",[]);
332
- smalltalk.send($2,"_translator_",[self]);
333
- $3=smalltalk.send($2,"_yourself",[]);
330
+ return smalltalk.withContext(function($ctx1) {
331
+ $2=_st((smalltalk.IRNonLocalReturnInliner || IRNonLocalReturnInliner))._new();
332
+ _st($2)._translator_(self);
333
+ $3=_st($2)._yourself();
334
334
  $1=$3;
335
335
  return $1;
336
- },
336
+ }, function($ctx1) {$ctx1.fill(self,"nonLocalReturnInliner",{}, smalltalk.IRInliner)})},
337
337
  args: [],
338
338
  source: "nonLocalReturnInliner\x0a\x09^ IRNonLocalReturnInliner new \x0a\x09\x09translator: self;\x0a\x09\x09yourself",
339
339
  messageSends: ["translator:", "new", "yourself"],
@@ -348,13 +348,13 @@ selector: "returnInliner",
348
348
  category: 'factory',
349
349
  fn: function (){
350
350
  var self=this;
351
- var $2,$3,$1;
352
- $2=smalltalk.send((smalltalk.IRReturnInliner || IRReturnInliner),"_new",[]);
353
- smalltalk.send($2,"_translator_",[self]);
354
- $3=smalltalk.send($2,"_yourself",[]);
351
+ return smalltalk.withContext(function($ctx1) {
352
+ $2=_st((smalltalk.IRReturnInliner || IRReturnInliner))._new();
353
+ _st($2)._translator_(self);
354
+ $3=_st($2)._yourself();
355
355
  $1=$3;
356
356
  return $1;
357
- },
357
+ }, function($ctx1) {$ctx1.fill(self,"returnInliner",{}, smalltalk.IRInliner)})},
358
358
  args: [],
359
359
  source: "returnInliner\x0a\x09^ IRReturnInliner new \x0a\x09\x09translator: self;\x0a\x09\x09yourself",
360
360
  messageSends: ["translator:", "new", "yourself"],
@@ -369,13 +369,13 @@ selector: "sendInliner",
369
369
  category: 'factory',
370
370
  fn: function (){
371
371
  var self=this;
372
- var $2,$3,$1;
373
- $2=smalltalk.send((smalltalk.IRSendInliner || IRSendInliner),"_new",[]);
374
- smalltalk.send($2,"_translator_",[self]);
375
- $3=smalltalk.send($2,"_yourself",[]);
372
+ return smalltalk.withContext(function($ctx1) {
373
+ $2=_st((smalltalk.IRSendInliner || IRSendInliner))._new();
374
+ _st($2)._translator_(self);
375
+ $3=_st($2)._yourself();
376
376
  $1=$3;
377
377
  return $1;
378
- },
378
+ }, function($ctx1) {$ctx1.fill(self,"sendInliner",{}, smalltalk.IRInliner)})},
379
379
  args: [],
380
380
  source: "sendInliner\x0a\x09^ IRSendInliner new \x0a\x09\x09translator: self;\x0a\x09\x09yourself",
381
381
  messageSends: ["translator:", "new", "yourself"],
@@ -390,14 +390,14 @@ selector: "shouldInlineAssignment:",
390
390
  category: 'testing',
391
391
  fn: function (anIRAssignment){
392
392
  var self=this;
393
- var $1;
394
- $1=smalltalk.send(smalltalk.send(smalltalk.send(anIRAssignment,"_isInlined",[]),"_not",[]),"_and_",[(function(){
395
- return smalltalk.send(smalltalk.send(smalltalk.send(smalltalk.send(anIRAssignment,"_instructions",[]),"_last",[]),"_isSend",[]),"_and_",[(function(){
396
- return smalltalk.send(self,"_shouldInlineSend_",[smalltalk.send(smalltalk.send(anIRAssignment,"_instructions",[]),"_last",[])]);
397
- })]);
398
- })]);
393
+ return smalltalk.withContext(function($ctx1) {
394
+ $1=_st(_st(_st(anIRAssignment)._isInlined())._not())._and_((function(){
395
+ return smalltalk.withContext(function($ctx2) {
396
+ return smalltalk.withContext(function($ctx3) {
397
+ }, function($ctx3) {$ctx3.fillBlock({},$ctx1)})}));
398
+ }, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}));
399
399
  return $1;
400
- },
400
+ }, function($ctx1) {$ctx1.fill(self,"shouldInlineAssignment:",{anIRAssignment:anIRAssignment}, smalltalk.IRInliner)})},
401
401
  args: ["anIRAssignment"],
402
402
  source: "shouldInlineAssignment: anIRAssignment\x0a\x09^ anIRAssignment isInlined not and: [ \x0a\x09\x09anIRAssignment instructions last isSend and: [\x09\x0a\x09\x09\x09self shouldInlineSend: (anIRAssignment instructions last) ]]",
403
403
  messageSends: ["and:", "shouldInlineSend:", "last", "instructions", "isSend", "not", "isInlined"],
@@ -412,14 +412,14 @@ selector: "shouldInlineReturn:",
412
412
  category: 'testing',
413
413
  fn: function (anIRReturn){
414
414
  var self=this;
415
- var $1;
416
- $1=smalltalk.send(smalltalk.send(smalltalk.send(anIRReturn,"_isInlined",[]),"_not",[]),"_and_",[(function(){
417
- return smalltalk.send(smalltalk.send(smalltalk.send(smalltalk.send(anIRReturn,"_instructions",[]),"_first",[]),"_isSend",[]),"_and_",[(function(){
418
- return smalltalk.send(self,"_shouldInlineSend_",[smalltalk.send(smalltalk.send(anIRReturn,"_instructions",[]),"_first",[])]);
419
- })]);
420
- })]);
415
+ return smalltalk.withContext(function($ctx1) {
416
+ $1=_st(_st(_st(anIRReturn)._isInlined())._not())._and_((function(){
417
+ return smalltalk.withContext(function($ctx2) {
418
+ return smalltalk.withContext(function($ctx3) {
419
+ }, function($ctx3) {$ctx3.fillBlock({},$ctx1)})}));
420
+ }, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}));
421
421
  return $1;
422
- },
422
+ }, function($ctx1) {$ctx1.fill(self,"shouldInlineReturn:",{anIRReturn:anIRReturn}, smalltalk.IRInliner)})},
423
423
  args: ["anIRReturn"],
424
424
  source: "shouldInlineReturn: anIRReturn\x0a\x09^ anIRReturn isInlined not and: [ \x0a\x09\x09anIRReturn instructions first isSend and: [\x09\x0a\x09\x09\x09self shouldInlineSend: (anIRReturn instructions first) ]]",
425
425
  messageSends: ["and:", "shouldInlineSend:", "first", "instructions", "isSend", "not", "isInlined"],
@@ -434,12 +434,12 @@ selector: "shouldInlineSend:",
434
434
  category: 'testing',
435
435
  fn: function (anIRSend){
436
436
  var self=this;
437
- var $1;
438
- $1=smalltalk.send(smalltalk.send(smalltalk.send(anIRSend,"_isInlined",[]),"_not",[]),"_and_",[(function(){
439
- return smalltalk.send((smalltalk.IRSendInliner || IRSendInliner),"_shouldInline_",[anIRSend]);
440
- })]);
437
+ return smalltalk.withContext(function($ctx1) {
438
+ $1=_st(_st(_st(anIRSend)._isInlined())._not())._and_((function(){
439
+ return smalltalk.withContext(function($ctx2) {
440
+ }, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}));
441
441
  return $1;
442
- },
442
+ }, function($ctx1) {$ctx1.fill(self,"shouldInlineSend:",{anIRSend:anIRSend}, smalltalk.IRInliner)})},
443
443
  args: ["anIRSend"],
444
444
  source: "shouldInlineSend: anIRSend\x0a\x09^ anIRSend isInlined not and: [\x0a\x09\x09IRSendInliner shouldInline: anIRSend ]",
445
445
  messageSends: ["and:", "shouldInline:", "not", "isInlined"],
@@ -454,25 +454,26 @@ selector: "transformNonLocalReturn:",
454
454
  category: 'visiting',
455
455
  fn: function (anIRNonLocalReturn){
456
456
  var self=this;
457
- var $1,$2,$3,$4;
458
457
  var localReturn;
459
- $1=smalltalk.send(smalltalk.send(anIRNonLocalReturn,"_scope",[]),"_canInlineNonLocalReturns",[]);
458
+ return smalltalk.withContext(function($ctx1) {
459
+ $1=_st(_st(anIRNonLocalReturn)._scope())._canInlineNonLocalReturns();
460
460
  if(smalltalk.assert($1)){
461
- smalltalk.send(smalltalk.send(smalltalk.send(anIRNonLocalReturn,"_scope",[]),"_methodScope",[]),"_removeNonLocalReturn_",[smalltalk.send(anIRNonLocalReturn,"_scope",[])]);
462
- $2=smalltalk.send((smalltalk.IRReturn || IRReturn),"_new",[]);
463
- smalltalk.send($2,"_scope_",[smalltalk.send(anIRNonLocalReturn,"_scope",[])]);
464
- $3=smalltalk.send($2,"_yourself",[]);
461
+ _st(_st(_st(anIRNonLocalReturn)._scope())._methodScope())._removeNonLocalReturn_(_st(anIRNonLocalReturn)._scope());
462
+ $2=_st((smalltalk.IRReturn || IRReturn))._new();
463
+ _st($2)._scope_(_st(anIRNonLocalReturn)._scope());
464
+ $3=_st($2)._yourself();
465
465
  localReturn=$3;
466
466
  localReturn;
467
- smalltalk.send(smalltalk.send(anIRNonLocalReturn,"_instructions",[]),"_do_",[(function(each){
468
- return smalltalk.send(localReturn,"_add_",[each]);
469
- })]);
470
- smalltalk.send(anIRNonLocalReturn,"_replaceWith_",[localReturn]);
471
- return localReturn;
472
- };
473
- $4=smalltalk.send(self,"_visitIRNonLocalReturn_",[anIRNonLocalReturn],smalltalk.IRVisitor);
467
+ _st(_st(anIRNonLocalReturn)._instructions())._do_((function(each){
468
+ return smalltalk.withContext(function($ctx2) {
469
+ }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1)})}));
470
+ _st(anIRNonLocalReturn)._replaceWith_(localReturn);
471
+ $4=localReturn;
474
472
  return $4;
475
- },
473
+ };
474
+ $5=smalltalk.IRVisitor.fn.prototype._visitIRNonLocalReturn_.apply(_st(self), [anIRNonLocalReturn]);
475
+ return $5;
476
+ }, function($ctx1) {$ctx1.fill(self,"transformNonLocalReturn:",{anIRNonLocalReturn:anIRNonLocalReturn,localReturn:localReturn}, smalltalk.IRInliner)})},
476
477
  args: ["anIRNonLocalReturn"],
477
478
  source: "transformNonLocalReturn: anIRNonLocalReturn\x0a\x09\x22Replace a non local return into a local return\x22\x0a\x0a\x09| localReturn |\x0a\x09anIRNonLocalReturn scope canInlineNonLocalReturns ifTrue: [\x0a\x09\x09anIRNonLocalReturn scope methodScope removeNonLocalReturn: anIRNonLocalReturn scope.\x0a\x09\x09localReturn := IRReturn new\x0a\x09\x09\x09scope: anIRNonLocalReturn scope;\x0a\x09\x09\x09yourself.\x0a\x09\x09anIRNonLocalReturn instructions do: [ :each |\x0a\x09\x09\x09localReturn add: each ].\x0a\x09\x09anIRNonLocalReturn replaceWith: localReturn.\x0a\x09\x09^ localReturn ].\x0a\x09^ super visitIRNonLocalReturn: anIRNonLocalReturn",
478
479
  messageSends: ["ifTrue:", "removeNonLocalReturn:", "scope", "methodScope", "scope:", "new", "yourself", "do:", "add:", "instructions", "replaceWith:", "canInlineNonLocalReturns", "visitIRNonLocalReturn:"],
@@ -487,15 +488,15 @@ selector: "visitIRAssignment:",
487
488
  category: 'visiting',
488
489
  fn: function (anIRAssignment){
489
490
  var self=this;
490
- var $2,$1;
491
- $2=smalltalk.send(self,"_shouldInlineAssignment_",[anIRAssignment]);
491
+ return smalltalk.withContext(function($ctx1) {
492
+ $2=_st(self)._shouldInlineAssignment_(anIRAssignment);
492
493
  if(smalltalk.assert($2)){
493
- $1=smalltalk.send(smalltalk.send(self,"_assignmentInliner",[]),"_inlineAssignment_",[anIRAssignment]);
494
+ $1=_st(_st(self)._assignmentInliner())._inlineAssignment_(anIRAssignment);
494
495
  } else {
495
- $1=smalltalk.send(self,"_visitIRAssignment_",[anIRAssignment],smalltalk.IRVisitor);
496
+ $1=smalltalk.IRVisitor.fn.prototype._visitIRAssignment_.apply(_st(self), [anIRAssignment]);
496
497
  };
497
498
  return $1;
498
- },
499
+ }, function($ctx1) {$ctx1.fill(self,"visitIRAssignment:",{anIRAssignment:anIRAssignment}, smalltalk.IRInliner)})},
499
500
  args: ["anIRAssignment"],
500
501
  source: "visitIRAssignment: anIRAssignment\x0a\x09^ (self shouldInlineAssignment: anIRAssignment) \x0a\x09\x09ifTrue: [ self assignmentInliner inlineAssignment: anIRAssignment ]\x0a\x09\x09ifFalse: [ super visitIRAssignment: anIRAssignment ]",
501
502
  messageSends: ["ifTrue:ifFalse:", "inlineAssignment:", "assignmentInliner", "visitIRAssignment:", "shouldInlineAssignment:"],
@@ -510,15 +511,15 @@ selector: "visitIRNonLocalReturn:",
510
511
  category: 'visiting',
511
512
  fn: function (anIRNonLocalReturn){
512
513
  var self=this;
513
- var $2,$1;
514
- $2=smalltalk.send(self,"_shouldInlineReturn_",[anIRNonLocalReturn]);
514
+ return smalltalk.withContext(function($ctx1) {
515
+ $2=_st(self)._shouldInlineReturn_(anIRNonLocalReturn);
515
516
  if(smalltalk.assert($2)){
516
- $1=smalltalk.send(smalltalk.send(self,"_nonLocalReturnInliner",[]),"_inlineReturn_",[anIRNonLocalReturn]);
517
+ $1=_st(_st(self)._nonLocalReturnInliner())._inlineReturn_(anIRNonLocalReturn);
517
518
  } else {
518
- $1=smalltalk.send(self,"_transformNonLocalReturn_",[anIRNonLocalReturn]);
519
+ $1=_st(self)._transformNonLocalReturn_(anIRNonLocalReturn);
519
520
  };
520
521
  return $1;
521
- },
522
+ }, function($ctx1) {$ctx1.fill(self,"visitIRNonLocalReturn:",{anIRNonLocalReturn:anIRNonLocalReturn}, smalltalk.IRInliner)})},
522
523
  args: ["anIRNonLocalReturn"],
523
524
  source: "visitIRNonLocalReturn: anIRNonLocalReturn\x0a\x09^ (self shouldInlineReturn: anIRNonLocalReturn) \x0a\x09\x09ifTrue: [ self nonLocalReturnInliner inlineReturn: anIRNonLocalReturn ]\x0a\x09\x09ifFalse: [ self transformNonLocalReturn: anIRNonLocalReturn ]",
524
525
  messageSends: ["ifTrue:ifFalse:", "inlineReturn:", "nonLocalReturnInliner", "transformNonLocalReturn:", "shouldInlineReturn:"],
@@ -533,15 +534,15 @@ selector: "visitIRReturn:",
533
534
  category: 'visiting',
534
535
  fn: function (anIRReturn){
535
536
  var self=this;
536
- var $2,$1;
537
- $2=smalltalk.send(self,"_shouldInlineReturn_",[anIRReturn]);
537
+ return smalltalk.withContext(function($ctx1) {
538
+ $2=_st(self)._shouldInlineReturn_(anIRReturn);
538
539
  if(smalltalk.assert($2)){
539
- $1=smalltalk.send(smalltalk.send(self,"_returnInliner",[]),"_inlineReturn_",[anIRReturn]);
540
+ $1=_st(_st(self)._returnInliner())._inlineReturn_(anIRReturn);
540
541
  } else {
541
- $1=smalltalk.send(self,"_visitIRReturn_",[anIRReturn],smalltalk.IRVisitor);
542
+ $1=smalltalk.IRVisitor.fn.prototype._visitIRReturn_.apply(_st(self), [anIRReturn]);
542
543
  };
543
544
  return $1;
544
- },
545
+ }, function($ctx1) {$ctx1.fill(self,"visitIRReturn:",{anIRReturn:anIRReturn}, smalltalk.IRInliner)})},
545
546
  args: ["anIRReturn"],
546
547
  source: "visitIRReturn: anIRReturn\x0a\x09^ (self shouldInlineReturn: anIRReturn) \x0a\x09\x09ifTrue: [ self returnInliner inlineReturn: anIRReturn ]\x0a\x09\x09ifFalse: [ super visitIRReturn: anIRReturn ]",
547
548
  messageSends: ["ifTrue:ifFalse:", "inlineReturn:", "returnInliner", "visitIRReturn:", "shouldInlineReturn:"],
@@ -556,15 +557,15 @@ selector: "visitIRSend:",
556
557
  category: 'visiting',
557
558
  fn: function (anIRSend){
558
559
  var self=this;
559
- var $2,$1;
560
- $2=smalltalk.send(self,"_shouldInlineSend_",[anIRSend]);
560
+ return smalltalk.withContext(function($ctx1) {
561
+ $2=_st(self)._shouldInlineSend_(anIRSend);
561
562
  if(smalltalk.assert($2)){
562
- $1=smalltalk.send(smalltalk.send(self,"_sendInliner",[]),"_inlineSend_",[anIRSend]);
563
+ $1=_st(_st(self)._sendInliner())._inlineSend_(anIRSend);
563
564
  } else {
564
- $1=smalltalk.send(self,"_visitIRSend_",[anIRSend],smalltalk.IRVisitor);
565
+ $1=smalltalk.IRVisitor.fn.prototype._visitIRSend_.apply(_st(self), [anIRSend]);
565
566
  };
566
567
  return $1;
567
- },
568
+ }, function($ctx1) {$ctx1.fill(self,"visitIRSend:",{anIRSend:anIRSend}, smalltalk.IRInliner)})},
568
569
  args: ["anIRSend"],
569
570
  source: "visitIRSend: anIRSend\x0a\x09^ (self shouldInlineSend: anIRSend)\x0a\x09\x09ifTrue: [ self sendInliner inlineSend: anIRSend ]\x0a\x09\x09ifFalse: [ super visitIRSend: anIRSend ]",
570
571
  messageSends: ["ifTrue:ifFalse:", "inlineSend:", "sendInliner", "visitIRSend:", "shouldInlineSend:"],
@@ -583,8 +584,8 @@ selector: "visitIRInlinedAssignment:",
583
584
  category: 'visiting',
584
585
  fn: function (anIRInlinedAssignment){
585
586
  var self=this;
586
- smalltalk.send(self,"_visit_",[smalltalk.send(smalltalk.send(anIRInlinedAssignment,"_instructions",[]),"_last",[])]);
587
- return self},
587
+ return smalltalk.withContext(function($ctx1) {
588
+ return self}, function($ctx1) {$ctx1.fill(self,"visitIRInlinedAssignment:",{anIRInlinedAssignment:anIRInlinedAssignment}, smalltalk.IRInliningJSTranslator)})},
588
589
  args: ["anIRInlinedAssignment"],
589
590
  source: "visitIRInlinedAssignment: anIRInlinedAssignment\x0a\x09self visit: anIRInlinedAssignment instructions last",
590
591
  messageSends: ["visit:", "last", "instructions"],
@@ -599,10 +600,10 @@ selector: "visitIRInlinedClosure:",
599
600
  category: 'visiting',
600
601
  fn: function (anIRInlinedClosure){
601
602
  var self=this;
602
- smalltalk.send(smalltalk.send(anIRInlinedClosure,"_instructions",[]),"_do_",[(function(each){
603
- return smalltalk.send(self,"_visit_",[each]);
604
- })]);
605
- return self},
603
+ return smalltalk.withContext(function($ctx1) {
604
+ return smalltalk.withContext(function($ctx2) {
605
+ }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1)})}));
606
+ return self}, function($ctx1) {$ctx1.fill(self,"visitIRInlinedClosure:",{anIRInlinedClosure:anIRInlinedClosure}, smalltalk.IRInliningJSTranslator)})},
606
607
  args: ["anIRInlinedClosure"],
607
608
  source: "visitIRInlinedClosure: anIRInlinedClosure\x0a\x09anIRInlinedClosure instructions do: [ :each |\x0a\x09\x09self visit: each ]",
608
609
  messageSends: ["do:", "visit:", "instructions"],
@@ -617,14 +618,14 @@ selector: "visitIRInlinedIfFalse:",
617
618
  category: 'visiting',
618
619
  fn: function (anIRInlinedIfFalse){
619
620
  var self=this;
620
- smalltalk.send(smalltalk.send(self,"_stream",[]),"_nextPutIf_with_",[(function(){
621
- smalltalk.send(smalltalk.send(self,"_stream",[]),"_nextPutAll_",["! smalltalk.assert("]);
622
- smalltalk.send(self,"_visit_",[smalltalk.send(smalltalk.send(anIRInlinedIfFalse,"_instructions",[]),"_first",[])]);
623
- return smalltalk.send(smalltalk.send(self,"_stream",[]),"_nextPutAll_",[")"]);
624
- }),(function(){
625
- return smalltalk.send(self,"_visit_",[smalltalk.send(smalltalk.send(anIRInlinedIfFalse,"_instructions",[]),"_last",[])]);
626
- })]);
627
- return self},
621
+ return smalltalk.withContext(function($ctx1) {
622
+ return smalltalk.withContext(function($ctx2) {
623
+ _st(self)._visit_(_st(_st(anIRInlinedIfFalse)._instructions())._first());
624
+ return _st(_st(self)._stream())._nextPutAll_(")");
625
+ }, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}),(function(){
626
+ return smalltalk.withContext(function($ctx2) {
627
+ }, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}));
628
+ return self}, function($ctx1) {$ctx1.fill(self,"visitIRInlinedIfFalse:",{anIRInlinedIfFalse:anIRInlinedIfFalse}, smalltalk.IRInliningJSTranslator)})},
628
629
  args: ["anIRInlinedIfFalse"],
629
630
  source: "visitIRInlinedIfFalse: anIRInlinedIfFalse\x0a\x09self stream nextPutIf: [ \x0a\x09\x09self stream nextPutAll: '! smalltalk.assert('.\x0a\x09\x09self visit: anIRInlinedIfFalse instructions first.\x0a\x09\x09self stream nextPutAll: ')' ]\x0a\x09\x09with: [ self visit: anIRInlinedIfFalse instructions last ]",
630
631
  messageSends: ["nextPutIf:with:", "nextPutAll:", "stream", "visit:", "first", "instructions", "last"],
@@ -639,14 +640,14 @@ selector: "visitIRInlinedIfNil:",
639
640
  category: 'visiting',
640
641
  fn: function (anIRInlinedIfNil){
641
642
  var self=this;
642
- smalltalk.send(smalltalk.send(self,"_stream",[]),"_nextPutIf_with_",[(function(){
643
- smalltalk.send(smalltalk.send(self,"_stream",[]),"_nextPutAll_",["($receiver = "]);
644
- smalltalk.send(self,"_visit_",[smalltalk.send(smalltalk.send(anIRInlinedIfNil,"_instructions",[]),"_first",[])]);
645
- return smalltalk.send(smalltalk.send(self,"_stream",[]),"_nextPutAll_",[") == nil || $receiver == undefined"]);
646
- }),(function(){
647
- return smalltalk.send(self,"_visit_",[smalltalk.send(smalltalk.send(anIRInlinedIfNil,"_instructions",[]),"_last",[])]);
648
- })]);
649
- return self},
643
+ return smalltalk.withContext(function($ctx1) {
644
+ return smalltalk.withContext(function($ctx2) {
645
+ _st(self)._visit_(_st(_st(anIRInlinedIfNil)._instructions())._first());
646
+ return _st(_st(self)._stream())._nextPutAll_(") == nil || $receiver == undefined");
647
+ }, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}),(function(){
648
+ return smalltalk.withContext(function($ctx2) {
649
+ }, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}));
650
+ return self}, function($ctx1) {$ctx1.fill(self,"visitIRInlinedIfNil:",{anIRInlinedIfNil:anIRInlinedIfNil}, smalltalk.IRInliningJSTranslator)})},
650
651
  args: ["anIRInlinedIfNil"],
651
652
  source: "visitIRInlinedIfNil: anIRInlinedIfNil\x0a\x09self stream nextPutIf: [ \x0a\x09\x09self stream nextPutAll: '($receiver = '. \x0a\x09\x09self visit: anIRInlinedIfNil instructions first.\x0a\x09\x09self stream nextPutAll: ') == nil || $receiver == undefined' ]\x0a\x09\x09with: [ self visit: anIRInlinedIfNil instructions last ]",
652
653
  messageSends: ["nextPutIf:with:", "nextPutAll:", "stream", "visit:", "first", "instructions", "last"],
@@ -661,16 +662,16 @@ selector: "visitIRInlinedIfNilIfNotNil:",
661
662
  category: 'visiting',
662
663
  fn: function (anIRInlinedIfNilIfNotNil){
663
664
  var self=this;
664
- smalltalk.send(smalltalk.send(self,"_stream",[]),"_nextPutIfElse_with_with_",[(function(){
665
- smalltalk.send(smalltalk.send(self,"_stream",[]),"_nextPutAll_",["($receiver = "]);
666
- smalltalk.send(self,"_visit_",[smalltalk.send(smalltalk.send(anIRInlinedIfNilIfNotNil,"_instructions",[]),"_first",[])]);
667
- return smalltalk.send(smalltalk.send(self,"_stream",[]),"_nextPutAll_",[") == nil || $receiver == undefined"]);
668
- }),(function(){
669
- return smalltalk.send(self,"_visit_",[smalltalk.send(smalltalk.send(anIRInlinedIfNilIfNotNil,"_instructions",[]),"_second",[])]);
670
- }),(function(){
671
- return smalltalk.send(self,"_visit_",[smalltalk.send(smalltalk.send(anIRInlinedIfNilIfNotNil,"_instructions",[]),"_third",[])]);
672
- })]);
673
- return self},
665
+ return smalltalk.withContext(function($ctx1) {
666
+ return smalltalk.withContext(function($ctx2) {
667
+ _st(self)._visit_(_st(_st(anIRInlinedIfNilIfNotNil)._instructions())._first());
668
+ return _st(_st(self)._stream())._nextPutAll_(") == nil || $receiver == undefined");
669
+ }, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}),(function(){
670
+ return smalltalk.withContext(function($ctx2) {
671
+ }, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}),(function(){
672
+ return smalltalk.withContext(function($ctx2) {
673
+ }, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}));
674
+ return self}, function($ctx1) {$ctx1.fill(self,"visitIRInlinedIfNilIfNotNil:",{anIRInlinedIfNilIfNotNil:anIRInlinedIfNilIfNotNil}, smalltalk.IRInliningJSTranslator)})},
674
675
  args: ["anIRInlinedIfNilIfNotNil"],
675
676
  source: "visitIRInlinedIfNilIfNotNil: anIRInlinedIfNilIfNotNil\x0a\x09self stream \x0a\x09\x09nextPutIfElse: [ \x0a\x09\x09\x09self stream nextPutAll: '($receiver = '. \x0a\x09\x09\x09self visit: anIRInlinedIfNilIfNotNil instructions first.\x0a\x09\x09\x09self stream nextPutAll: ') == nil || $receiver == undefined' ]\x0a\x09\x09with: [ self visit: anIRInlinedIfNilIfNotNil instructions second ]\x0a\x09\x09with: [ self visit: anIRInlinedIfNilIfNotNil instructions third ]",
676
677
  messageSends: ["nextPutIfElse:with:with:", "nextPutAll:", "stream", "visit:", "first", "instructions", "second", "third"],
@@ -685,14 +686,14 @@ selector: "visitIRInlinedIfTrue:",
685
686
  category: 'visiting',
686
687
  fn: function (anIRInlinedIfTrue){
687
688
  var self=this;
688
- smalltalk.send(smalltalk.send(self,"_stream",[]),"_nextPutIf_with_",[(function(){
689
- smalltalk.send(smalltalk.send(self,"_stream",[]),"_nextPutAll_",["smalltalk.assert("]);
690
- smalltalk.send(self,"_visit_",[smalltalk.send(smalltalk.send(anIRInlinedIfTrue,"_instructions",[]),"_first",[])]);
691
- return smalltalk.send(smalltalk.send(self,"_stream",[]),"_nextPutAll_",[")"]);
692
- }),(function(){
693
- return smalltalk.send(self,"_visit_",[smalltalk.send(smalltalk.send(anIRInlinedIfTrue,"_instructions",[]),"_last",[])]);
694
- })]);
695
- return self},
689
+ return smalltalk.withContext(function($ctx1) {
690
+ return smalltalk.withContext(function($ctx2) {
691
+ _st(self)._visit_(_st(_st(anIRInlinedIfTrue)._instructions())._first());
692
+ return _st(_st(self)._stream())._nextPutAll_(")");
693
+ }, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}),(function(){
694
+ return smalltalk.withContext(function($ctx2) {
695
+ }, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}));
696
+ return self}, function($ctx1) {$ctx1.fill(self,"visitIRInlinedIfTrue:",{anIRInlinedIfTrue:anIRInlinedIfTrue}, smalltalk.IRInliningJSTranslator)})},
696
697
  args: ["anIRInlinedIfTrue"],
697
698
  source: "visitIRInlinedIfTrue: anIRInlinedIfTrue\x0a\x09self stream nextPutIf: [ \x0a\x09\x09self stream nextPutAll: 'smalltalk.assert('. \x0a\x09\x09self visit: anIRInlinedIfTrue instructions first.\x0a\x09\x09self stream nextPutAll: ')' ]\x0a\x09\x09with: [ self visit: anIRInlinedIfTrue instructions last ]",
698
699
  messageSends: ["nextPutIf:with:", "nextPutAll:", "stream", "visit:", "first", "instructions", "last"],
@@ -707,16 +708,16 @@ selector: "visitIRInlinedIfTrueIfFalse:",
707
708
  category: 'visiting',
708
709
  fn: function (anIRInlinedIfTrueIfFalse){
709
710
  var self=this;
710
- smalltalk.send(smalltalk.send(self,"_stream",[]),"_nextPutIfElse_with_with_",[(function(){
711
- smalltalk.send(smalltalk.send(self,"_stream",[]),"_nextPutAll_",["smalltalk.assert("]);
712
- smalltalk.send(self,"_visit_",[smalltalk.send(smalltalk.send(anIRInlinedIfTrueIfFalse,"_instructions",[]),"_first",[])]);
713
- return smalltalk.send(smalltalk.send(self,"_stream",[]),"_nextPutAll_",[")"]);
714
- }),(function(){
715
- return smalltalk.send(self,"_visit_",[smalltalk.send(smalltalk.send(anIRInlinedIfTrueIfFalse,"_instructions",[]),"_second",[])]);
716
- }),(function(){
717
- return smalltalk.send(self,"_visit_",[smalltalk.send(smalltalk.send(anIRInlinedIfTrueIfFalse,"_instructions",[]),"_third",[])]);
718
- })]);
719
- return self},
711
+ return smalltalk.withContext(function($ctx1) {
712
+ return smalltalk.withContext(function($ctx2) {
713
+ _st(self)._visit_(_st(_st(anIRInlinedIfTrueIfFalse)._instructions())._first());
714
+ return _st(_st(self)._stream())._nextPutAll_(")");
715
+ }, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}),(function(){
716
+ return smalltalk.withContext(function($ctx2) {
717
+ }, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}),(function(){
718
+ return smalltalk.withContext(function($ctx2) {
719
+ }, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}));
720
+ return self}, function($ctx1) {$ctx1.fill(self,"visitIRInlinedIfTrueIfFalse:",{anIRInlinedIfTrueIfFalse:anIRInlinedIfTrueIfFalse}, smalltalk.IRInliningJSTranslator)})},
720
721
  args: ["anIRInlinedIfTrueIfFalse"],
721
722
  source: "visitIRInlinedIfTrueIfFalse: anIRInlinedIfTrueIfFalse\x0a\x09self stream \x0a\x09\x09nextPutIfElse: [ \x0a\x09\x09\x09self stream nextPutAll: 'smalltalk.assert('. \x0a\x09\x09\x09self visit: anIRInlinedIfTrueIfFalse instructions first.\x0a\x09\x09\x09self stream nextPutAll: ')' ]\x0a\x09\x09with: [ self visit: anIRInlinedIfTrueIfFalse instructions second ]\x0a\x09\x09with: [ self visit: anIRInlinedIfTrueIfFalse instructions third ]",
722
723
  messageSends: ["nextPutIfElse:with:with:", "nextPutAll:", "stream", "visit:", "first", "instructions", "second", "third"],
@@ -731,12 +732,12 @@ selector: "visitIRInlinedNonLocalReturn:",
731
732
  category: 'visiting',
732
733
  fn: function (anIRInlinedReturn){
733
734
  var self=this;
734
- smalltalk.send(smalltalk.send(self,"_stream",[]),"_nextPutStatementWith_",[(function(){
735
- return smalltalk.send(self,"_visit_",[smalltalk.send(smalltalk.send(anIRInlinedReturn,"_instructions",[]),"_last",[])]);
736
- })]);
737
- smalltalk.send(smalltalk.send(self,"_stream",[]),"_nextPutNonLocalReturnWith_",[(function(){
738
- })]);
739
- return self},
735
+ return smalltalk.withContext(function($ctx1) {
736
+ return smalltalk.withContext(function($ctx2) {
737
+ }, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}));
738
+ _st(_st(self)._stream())._nextPutNonLocalReturnWith_((function(){
739
+ return smalltalk.withContext(function($ctx2) {
740
+ return self}, function($ctx1) {$ctx1.fill(self,"visitIRInlinedNonLocalReturn:",{anIRInlinedReturn:anIRInlinedReturn}, smalltalk.IRInliningJSTranslator)})},
740
741
  args: ["anIRInlinedReturn"],
741
742
  source: "visitIRInlinedNonLocalReturn: anIRInlinedReturn\x0a\x09self stream nextPutStatementWith: [\x0a\x09\x09self visit: anIRInlinedReturn instructions last ].\x0a\x09self stream nextPutNonLocalReturnWith: [ ]",
742
743
  messageSends: ["nextPutStatementWith:", "visit:", "last", "instructions", "stream", "nextPutNonLocalReturnWith:"],
@@ -751,8 +752,8 @@ selector: "visitIRInlinedReturn:",
751
752
  category: 'visiting',
752
753
  fn: function (anIRInlinedReturn){
753
754
  var self=this;
754
- smalltalk.send(self,"_visit_",[smalltalk.send(smalltalk.send(anIRInlinedReturn,"_instructions",[]),"_last",[])]);
755
- return self},
755
+ return smalltalk.withContext(function($ctx1) {
756
+ return self}, function($ctx1) {$ctx1.fill(self,"visitIRInlinedReturn:",{anIRInlinedReturn:anIRInlinedReturn}, smalltalk.IRInliningJSTranslator)})},
756
757
  args: ["anIRInlinedReturn"],
757
758
  source: "visitIRInlinedReturn: anIRInlinedReturn\x0a\x09self visit: anIRInlinedReturn instructions last",
758
759
  messageSends: ["visit:", "last", "instructions"],
@@ -767,12 +768,12 @@ selector: "visitIRInlinedSequence:",
767
768
  category: 'visiting',
768
769
  fn: function (anIRInlinedSequence){
769
770
  var self=this;
770
- smalltalk.send(smalltalk.send(anIRInlinedSequence,"_instructions",[]),"_do_",[(function(each){
771
- return smalltalk.send(smalltalk.send(self,"_stream",[]),"_nextPutStatementWith_",[(function(){
772
- return smalltalk.send(self,"_visit_",[each]);
773
- })]);
774
- })]);
775
- return self},
771
+ return smalltalk.withContext(function($ctx1) {
772
+ return smalltalk.withContext(function($ctx2) {
773
+ return smalltalk.withContext(function($ctx3) {
774
+ }, function($ctx3) {$ctx3.fillBlock({},$ctx1)})}));
775
+ }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1)})}));
776
+ return self}, function($ctx1) {$ctx1.fill(self,"visitIRInlinedSequence:",{anIRInlinedSequence:anIRInlinedSequence}, smalltalk.IRInliningJSTranslator)})},
776
777
  args: ["anIRInlinedSequence"],
777
778
  source: "visitIRInlinedSequence: anIRInlinedSequence\x0a\x09anIRInlinedSequence instructions do: [ :each | \x0a\x09\x09self stream nextPutStatementWith: [ self visit: each ]]",
778
779
  messageSends: ["do:", "nextPutStatementWith:", "visit:", "stream", "instructions"],
@@ -791,10 +792,10 @@ selector: "ifFalse:",
791
792
  category: 'inlining',
792
793
  fn: function (anIRInstruction){
793
794
  var self=this;
794
- var $1;
795
- $1=smalltalk.send(self,"_inlinedSend_with_",[smalltalk.send((smalltalk.IRInlinedIfFalse || IRInlinedIfFalse),"_new",[]),anIRInstruction]);
795
+ return smalltalk.withContext(function($ctx1) {
796
+ $1=_st(self)._inlinedSend_with_(_st((smalltalk.IRInlinedIfFalse || IRInlinedIfFalse))._new(),anIRInstruction);
796
797
  return $1;
797
- },
798
+ }, function($ctx1) {$ctx1.fill(self,"ifFalse:",{anIRInstruction:anIRInstruction}, smalltalk.IRSendInliner)})},
798
799
  args: ["anIRInstruction"],
799
800
  source: "ifFalse: anIRInstruction\x0a\x09^ self inlinedSend: IRInlinedIfFalse new with: anIRInstruction",
800
801
  messageSends: ["inlinedSend:with:", "new"],
@@ -809,10 +810,10 @@ selector: "ifFalse:ifTrue:",
809
810
  category: 'inlining',
810
811
  fn: function (anIRInstruction,anotherIRInstruction){
811
812
  var self=this;
812
- var $1;
813
- $1=smalltalk.send(self,"_perform_withArguments_",[smalltalk.symbolFor("ifTrue:ifFalse:"),[anotherIRInstruction,anIRInstruction]]);
813
+ return smalltalk.withContext(function($ctx1) {
814
+ $1=_st(self)._perform_withArguments_(smalltalk.symbolFor("ifTrue:ifFalse:"),[anotherIRInstruction,anIRInstruction]);
814
815
  return $1;
815
- },
816
+ }, function($ctx1) {$ctx1.fill(self,"ifFalse:ifTrue:",{anIRInstruction:anIRInstruction,anotherIRInstruction:anotherIRInstruction}, smalltalk.IRSendInliner)})},
816
817
  args: ["anIRInstruction", "anotherIRInstruction"],
817
818
  source: "ifFalse: anIRInstruction ifTrue: anotherIRInstruction\x0a\x09^ self perform: #ifTrue:ifFalse: withArguments: { anotherIRInstruction. anIRInstruction }",
818
819
  messageSends: ["perform:withArguments:"],
@@ -827,17 +828,17 @@ selector: "ifNil:",
827
828
  category: 'inlining',
828
829
  fn: function (anIRInstruction){
829
830
  var self=this;
830
- var $2,$3,$4,$5,$1;
831
- $2=smalltalk.send((smalltalk.IRClosure || IRClosure),"_new",[]);
832
- smalltalk.send($2,"_scope_",[smalltalk.send(smalltalk.send(anIRInstruction,"_scope",[]),"_copy",[])]);
833
- $3=smalltalk.send((smalltalk.IRBlockSequence || IRBlockSequence),"_new",[]);
834
- smalltalk.send($3,"_add_",[smalltalk.send(smalltalk.send(smalltalk.send(self,"_send",[]),"_instructions",[]),"_first",[])]);
835
- $4=smalltalk.send($3,"_yourself",[]);
836
- smalltalk.send($2,"_add_",[$4]);
837
- $5=smalltalk.send($2,"_yourself",[]);
838
- $1=smalltalk.send(self,"_inlinedSend_with_with_",[smalltalk.send((smalltalk.IRInlinedIfNilIfNotNil || IRInlinedIfNilIfNotNil),"_new",[]),anIRInstruction,$5]);
831
+ return smalltalk.withContext(function($ctx1) {
832
+ $2=_st((smalltalk.IRClosure || IRClosure))._new();
833
+ _st($2)._scope_(_st(_st(anIRInstruction)._scope())._copy());
834
+ $3=_st((smalltalk.IRBlockSequence || IRBlockSequence))._new();
835
+ _st($3)._add_(_st(_st(_st(self)._send())._instructions())._first());
836
+ $4=_st($3)._yourself();
837
+ _st($2)._add_($4);
838
+ $5=_st($2)._yourself();
839
+ $1=_st(self)._inlinedSend_with_with_(_st((smalltalk.IRInlinedIfNilIfNotNil || IRInlinedIfNilIfNotNil))._new(),anIRInstruction,$5);
839
840
  return $1;
840
- },
841
+ }, function($ctx1) {$ctx1.fill(self,"ifNil:",{anIRInstruction:anIRInstruction}, smalltalk.IRSendInliner)})},
841
842
  args: ["anIRInstruction"],
842
843
  source: "ifNil: anIRInstruction\x0a\x09^ self \x0a\x09\x09inlinedSend: IRInlinedIfNilIfNotNil new \x0a\x09\x09with: anIRInstruction\x0a\x09\x09with: (IRClosure new\x0a\x09\x09\x09scope: anIRInstruction scope copy;\x0a\x09\x09\x09add: (IRBlockSequence new\x0a\x09\x09\x09\x09add: self send instructions first;\x0a\x09\x09\x09\x09yourself);\x0a\x09\x09\x09yourself)",
843
844
  messageSends: ["inlinedSend:with:with:", "new", "scope:", "copy", "scope", "add:", "first", "instructions", "send", "yourself"],
@@ -852,10 +853,10 @@ selector: "ifNil:ifNotNil:",
852
853
  category: 'inlining',
853
854
  fn: function (anIRInstruction,anotherIRInstruction){
854
855
  var self=this;
855
- var $1;
856
- $1=smalltalk.send(self,"_inlinedSend_with_with_",[smalltalk.send((smalltalk.IRInlinedIfNilIfNotNil || IRInlinedIfNilIfNotNil),"_new",[]),anIRInstruction,anotherIRInstruction]);
856
+ return smalltalk.withContext(function($ctx1) {
857
+ $1=_st(self)._inlinedSend_with_with_(_st((smalltalk.IRInlinedIfNilIfNotNil || IRInlinedIfNilIfNotNil))._new(),anIRInstruction,anotherIRInstruction);
857
858
  return $1;
858
- },
859
+ }, function($ctx1) {$ctx1.fill(self,"ifNil:ifNotNil:",{anIRInstruction:anIRInstruction,anotherIRInstruction:anotherIRInstruction}, smalltalk.IRSendInliner)})},
859
860
  args: ["anIRInstruction", "anotherIRInstruction"],
860
861
  source: "ifNil: anIRInstruction ifNotNil: anotherIRInstruction\x0a\x09^ self inlinedSend: IRInlinedIfNilIfNotNil new with: anIRInstruction with: anotherIRInstruction",
861
862
  messageSends: ["inlinedSend:with:with:", "new"],
@@ -870,17 +871,17 @@ selector: "ifNotNil:",
870
871
  category: 'inlining',
871
872
  fn: function (anIRInstruction){
872
873
  var self=this;
873
- var $2,$3,$4,$5,$1;
874
- $2=smalltalk.send((smalltalk.IRClosure || IRClosure),"_new",[]);
875
- smalltalk.send($2,"_scope_",[smalltalk.send(smalltalk.send(anIRInstruction,"_scope",[]),"_copy",[])]);
876
- $3=smalltalk.send((smalltalk.IRBlockSequence || IRBlockSequence),"_new",[]);
877
- smalltalk.send($3,"_add_",[smalltalk.send(smalltalk.send(smalltalk.send(self,"_send",[]),"_instructions",[]),"_first",[])]);
878
- $4=smalltalk.send($3,"_yourself",[]);
879
- smalltalk.send($2,"_add_",[$4]);
880
- $5=smalltalk.send($2,"_yourself",[]);
881
- $1=smalltalk.send(self,"_inlinedSend_with_with_",[smalltalk.send((smalltalk.IRInlinedIfNilIfNotNil || IRInlinedIfNilIfNotNil),"_new",[]),$5,anIRInstruction]);
874
+ return smalltalk.withContext(function($ctx1) {
875
+ $2=_st((smalltalk.IRClosure || IRClosure))._new();
876
+ _st($2)._scope_(_st(_st(anIRInstruction)._scope())._copy());
877
+ $3=_st((smalltalk.IRBlockSequence || IRBlockSequence))._new();
878
+ _st($3)._add_(_st(_st(_st(self)._send())._instructions())._first());
879
+ $4=_st($3)._yourself();
880
+ _st($2)._add_($4);
881
+ $5=_st($2)._yourself();
882
+ $1=_st(self)._inlinedSend_with_with_(_st((smalltalk.IRInlinedIfNilIfNotNil || IRInlinedIfNilIfNotNil))._new(),$5,anIRInstruction);
882
883
  return $1;
883
- },
884
+ }, function($ctx1) {$ctx1.fill(self,"ifNotNil:",{anIRInstruction:anIRInstruction}, smalltalk.IRSendInliner)})},
884
885
  args: ["anIRInstruction"],
885
886
  source: "ifNotNil: anIRInstruction\x0a\x09^ self \x0a\x09\x09inlinedSend: IRInlinedIfNilIfNotNil new\x0a\x09\x09with: (IRClosure new\x0a\x09\x09\x09scope: anIRInstruction scope copy;\x0a\x09\x09\x09add: (IRBlockSequence new\x0a\x09\x09\x09\x09add: self send instructions first;\x0a\x09\x09\x09\x09yourself);\x0a\x09\x09\x09yourself)\x0a\x09\x09with: anIRInstruction",
886
887
  messageSends: ["inlinedSend:with:with:", "new", "scope:", "copy", "scope", "add:", "first", "instructions", "send", "yourself"],
@@ -895,10 +896,10 @@ selector: "ifNotNil:ifNil:",
895
896
  category: 'inlining',
896
897
  fn: function (anIRInstruction,anotherIRInstruction){
897
898
  var self=this;
898
- var $1;
899
- $1=smalltalk.send(self,"_inlinedSend_with_with_",[smalltalk.send((smalltalk.IRInlinedIfNilIfNotNil || IRInlinedIfNilIfNotNil),"_new",[]),anotherIRInstruction,anIRInstruction]);
899
+ return smalltalk.withContext(function($ctx1) {
900
+ $1=_st(self)._inlinedSend_with_with_(_st((smalltalk.IRInlinedIfNilIfNotNil || IRInlinedIfNilIfNotNil))._new(),anotherIRInstruction,anIRInstruction);
900
901
  return $1;
901
- },
902
+ }, function($ctx1) {$ctx1.fill(self,"ifNotNil:ifNil:",{anIRInstruction:anIRInstruction,anotherIRInstruction:anotherIRInstruction}, smalltalk.IRSendInliner)})},
902
903
  args: ["anIRInstruction", "anotherIRInstruction"],
903
904
  source: "ifNotNil: anIRInstruction ifNil: anotherIRInstruction\x0a\x09^ self inlinedSend: IRInlinedIfNilIfNotNil new with: anotherIRInstruction with: anIRInstruction",
904
905
  messageSends: ["inlinedSend:with:with:", "new"],
@@ -913,10 +914,10 @@ selector: "ifTrue:",
913
914
  category: 'inlining',
914
915
  fn: function (anIRInstruction){
915
916
  var self=this;
916
- var $1;
917
- $1=smalltalk.send(self,"_inlinedSend_with_",[smalltalk.send((smalltalk.IRInlinedIfTrue || IRInlinedIfTrue),"_new",[]),anIRInstruction]);
917
+ return smalltalk.withContext(function($ctx1) {
918
+ $1=_st(self)._inlinedSend_with_(_st((smalltalk.IRInlinedIfTrue || IRInlinedIfTrue))._new(),anIRInstruction);
918
919
  return $1;
919
- },
920
+ }, function($ctx1) {$ctx1.fill(self,"ifTrue:",{anIRInstruction:anIRInstruction}, smalltalk.IRSendInliner)})},
920
921
  args: ["anIRInstruction"],
921
922
  source: "ifTrue: anIRInstruction\x0a\x09^ self inlinedSend: IRInlinedIfTrue new with: anIRInstruction",
922
923
  messageSends: ["inlinedSend:with:", "new"],
@@ -931,10 +932,10 @@ selector: "ifTrue:ifFalse:",
931
932
  category: 'inlining',
932
933
  fn: function (anIRInstruction,anotherIRInstruction){
933
934
  var self=this;
934
- var $1;
935
- $1=smalltalk.send(self,"_inlinedSend_with_with_",[smalltalk.send((smalltalk.IRInlinedIfTrueIfFalse || IRInlinedIfTrueIfFalse),"_new",[]),anIRInstruction,anotherIRInstruction]);
935
+ return smalltalk.withContext(function($ctx1) {
936
+ $1=_st(self)._inlinedSend_with_with_(_st((smalltalk.IRInlinedIfTrueIfFalse || IRInlinedIfTrueIfFalse))._new(),anIRInstruction,anotherIRInstruction);
936
937
  return $1;
937
- },
938
+ }, function($ctx1) {$ctx1.fill(self,"ifTrue:ifFalse:",{anIRInstruction:anIRInstruction,anotherIRInstruction:anotherIRInstruction}, smalltalk.IRSendInliner)})},
938
939
  args: ["anIRInstruction", "anotherIRInstruction"],
939
940
  source: "ifTrue: anIRInstruction ifFalse: anotherIRInstruction\x0a\x09^ self inlinedSend: IRInlinedIfTrueIfFalse new with: anIRInstruction with: anotherIRInstruction",
940
941
  messageSends: ["inlinedSend:with:with:", "new"],
@@ -949,36 +950,39 @@ selector: "inlineClosure:",
949
950
  category: 'inlining',
950
951
  fn: function (anIRClosure){
951
952
  var self=this;
952
- var $1,$2;
953
- var inlinedClosure;
954
- var sequence;
955
- var statements;
956
- inlinedClosure=smalltalk.send(self,"_inlinedClosure",[]);
957
- smalltalk.send(inlinedClosure,"_scope_",[smalltalk.send(anIRClosure,"_scope",[])]);
958
- smalltalk.send(smalltalk.send(anIRClosure,"_instructions",[]),"_do_",[(function(each){
959
- $1=smalltalk.send(each,"_isSequence",[]);
960
- if(! smalltalk.assert($1)){
961
- return smalltalk.send(inlinedClosure,"_add_",[each]);
953
+ var inlinedClosure,sequence,statements;
954
+ return smalltalk.withContext(function($ctx1) {
955
+ inlinedClosure=_st(self)._inlinedClosure();
956
+ _st(inlinedClosure)._scope_(_st(anIRClosure)._scope());
957
+ $1=_st(anIRClosure)._instructions();
958
+ $2=(function(each){
959
+ return smalltalk.withContext(function($ctx2) {
960
+ if(! smalltalk.assert($3)){
961
+ return _st(inlinedClosure)._add_(each);
962
962
  };
963
- })]);
964
- sequence=smalltalk.send(self,"_inlinedSequence",[]);
965
- smalltalk.send(inlinedClosure,"_add_",[sequence]);
966
- statements=smalltalk.send(smalltalk.send(smalltalk.send(anIRClosure,"_instructions",[]),"_last",[]),"_instructions",[]);
967
- smalltalk.send(statements,"_ifNotEmpty_",[(function(){
968
- smalltalk.send(smalltalk.send(statements,"_allButLast",[]),"_do_",[(function(each){
969
- return smalltalk.send(sequence,"_add_",[each]);
970
- })]);
971
- $2=smalltalk.send(smalltalk.send(smalltalk.send(statements,"_last",[]),"_isReturn",[]),"_and_",[(function(){
972
- return smalltalk.send(smalltalk.send(statements,"_last",[]),"_isBlockReturn",[]);
973
- })]);
974
- if(smalltalk.assert($2)){
975
- return smalltalk.send(sequence,"_add_",[smalltalk.send(smalltalk.send(smalltalk.send(statements,"_last",[]),"_instructions",[]),"_first",[])]);
963
+ }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1)})});
964
+ _st($1)._do_($2);
965
+ sequence=_st(self)._inlinedSequence();
966
+ _st(inlinedClosure)._add_(sequence);
967
+ statements=_st(_st(_st(anIRClosure)._instructions())._last())._instructions();
968
+ $4=statements;
969
+ $5=(function(){
970
+ return smalltalk.withContext(function($ctx2) {
971
+ return smalltalk.withContext(function($ctx3) {
972
+ }, function($ctx3) {$ctx3.fillBlock({each:each},$ctx1)})}));
973
+ $6=_st(_st(_st(statements)._last())._isReturn())._and_((function(){
974
+ return smalltalk.withContext(function($ctx3) {
975
+ }, function($ctx3) {$ctx3.fillBlock({},$ctx1)})}));
976
+ if(smalltalk.assert($6)){
977
+ return _st(sequence)._add_(_st(_st(_st(statements)._last())._instructions())._first());
976
978
  } else {
977
- return smalltalk.send(sequence,"_add_",[smalltalk.send(statements,"_last",[])]);
979
+ return _st(sequence)._add_(_st(statements)._last());
978
980
  };
979
- })]);
980
- return inlinedClosure;
981
- },
981
+ }, function($ctx2) {$ctx2.fillBlock({},$ctx1)})});
982
+ _st($4)._ifNotEmpty_($5);
983
+ $7=inlinedClosure;
984
+ return $7;
985
+ }, function($ctx1) {$ctx1.fill(self,"inlineClosure:",{anIRClosure:anIRClosure,inlinedClosure:inlinedClosure,sequence:sequence,statements:statements}, smalltalk.IRSendInliner)})},
982
986
  args: ["anIRClosure"],
983
987
  source: "inlineClosure: anIRClosure\x0a\x09| inlinedClosure sequence statements |\x0a\x0a\x09inlinedClosure := self inlinedClosure.\x0a\x09inlinedClosure scope: anIRClosure scope.\x0a\x0a\x09\x22Add the possible temp declarations\x22\x0a\x09anIRClosure instructions do: [ :each | \x0a\x09\x09each isSequence ifFalse: [\x0a\x09\x09\x09inlinedClosure add: each ]].\x0a\x0a\x09\x22Add a block sequence\x22\x0a\x09sequence := self inlinedSequence.\x0a\x09inlinedClosure add: sequence.\x0a\x0a\x09\x22Get all the statements\x22\x0a\x09statements := anIRClosure instructions last instructions.\x0a\x09\x0a\x09statements ifNotEmpty: [\x0a\x09\x09statements allButLast do: [ :each | sequence add: each ].\x0a\x0a\x09\x09\x22Inlined closures don't have implicit local returns\x22\x0a\x09\x09(statements last isReturn and: [ statements last isBlockReturn ])\x0a\x09\x09\x09ifTrue: [ sequence add: statements last instructions first ]\x0a\x09\x09\x09ifFalse: [ sequence add: statements last ] ].\x0a\x0a\x09^ inlinedClosure",
984
988
  messageSends: ["inlinedClosure", "scope:", "scope", "do:", "ifFalse:", "add:", "isSequence", "instructions", "inlinedSequence", "last", "ifNotEmpty:", "allButLast", "ifTrue:ifFalse:", "first", "and:", "isBlockReturn", "isReturn"],
@@ -993,11 +997,11 @@ selector: "inlineSend:",
993
997
  category: 'inlining',
994
998
  fn: function (anIRSend){
995
999
  var self=this;
996
- var $1;
997
- smalltalk.send(self,"_send_",[anIRSend]);
998
- $1=smalltalk.send(self,"_perform_withArguments_",[smalltalk.send(smalltalk.send(self,"_send",[]),"_selector",[]),smalltalk.send(smalltalk.send(smalltalk.send(self,"_send",[]),"_instructions",[]),"_allButFirst",[])]);
1000
+ return smalltalk.withContext(function($ctx1) {
1001
+ _st(self)._send_(anIRSend);
1002
+ $1=_st(self)._perform_withArguments_(_st(_st(self)._send())._selector(),_st(_st(_st(self)._send())._instructions())._allButFirst());
999
1003
  return $1;
1000
- },
1004
+ }, function($ctx1) {$ctx1.fill(self,"inlineSend:",{anIRSend:anIRSend}, smalltalk.IRSendInliner)})},
1001
1005
  args: ["anIRSend"],
1002
1006
  source: "inlineSend: anIRSend\x0a\x09self send: anIRSend.\x0a\x09^ self \x0a\x09\x09perform: self send selector \x0a\x09\x09withArguments: self send instructions allButFirst",
1003
1007
  messageSends: ["send:", "perform:withArguments:", "selector", "send", "allButFirst", "instructions"],
@@ -1012,10 +1016,10 @@ selector: "inlinedClosure",
1012
1016
  category: 'factory',
1013
1017
  fn: function (){
1014
1018
  var self=this;
1015
- var $1;
1016
- $1=smalltalk.send((smalltalk.IRInlinedClosure || IRInlinedClosure),"_new",[]);
1019
+ return smalltalk.withContext(function($ctx1) {
1020
+ $1=_st((smalltalk.IRInlinedClosure || IRInlinedClosure))._new();
1017
1021
  return $1;
1018
- },
1022
+ }, function($ctx1) {$ctx1.fill(self,"inlinedClosure",{}, smalltalk.IRSendInliner)})},
1019
1023
  args: [],
1020
1024
  source: "inlinedClosure\x0a\x09^ IRInlinedClosure new",
1021
1025
  messageSends: ["new"],
@@ -1030,22 +1034,24 @@ selector: "inlinedSend:with:",
1030
1034
  category: 'inlining',
1031
1035
  fn: function (inlinedSend,anIRInstruction){
1032
1036
  var self=this;
1033
- var $1,$2,$3;
1034
1037
  var inlinedClosure;
1035
- $1=smalltalk.send(anIRInstruction,"_isClosure",[]);
1038
+ return smalltalk.withContext(function($ctx1) {
1039
+ $1=_st(anIRInstruction)._isClosure();
1036
1040
  if(! smalltalk.assert($1)){
1037
- smalltalk.send(self,"_inliningError_",["Message argument should be a block"]);
1041
+ _st(self)._inliningError_("Message argument should be a block");
1038
1042
  };
1039
- $2=smalltalk.send(smalltalk.send(smalltalk.send(anIRInstruction,"_arguments",[]),"_size",[]),"__eq",[(0)]);
1043
+ $2=_st(_st(_st(anIRInstruction)._arguments())._size()).__eq((0));
1040
1044
  if(! smalltalk.assert($2)){
1041
- smalltalk.send(self,"_inliningError_",["Inlined block should have zero argument"]);
1045
+ _st(self)._inliningError_("Inlined block should have zero argument");
1042
1046
  };
1043
- inlinedClosure=smalltalk.send(smalltalk.send(self,"_translator",[]),"_visit_",[smalltalk.send(self,"_inlineClosure_",[anIRInstruction])]);
1044
- smalltalk.send(inlinedSend,"_add_",[smalltalk.send(smalltalk.send(smalltalk.send(self,"_send",[]),"_instructions",[]),"_first",[])]);
1045
- $3=smalltalk.send(inlinedSend,"_add_",[inlinedClosure]);
1046
- smalltalk.send(smalltalk.send(self,"_send",[]),"_replaceWith_",[inlinedSend]);
1047
- return inlinedSend;
1048
- },
1047
+ inlinedClosure=_st(_st(self)._translator())._visit_(_st(self)._inlineClosure_(anIRInstruction));
1048
+ $3=inlinedSend;
1049
+ _st($3)._add_(_st(_st(_st(self)._send())._instructions())._first());
1050
+ $4=_st($3)._add_(inlinedClosure);
1051
+ _st(_st(self)._send())._replaceWith_(inlinedSend);
1052
+ $5=inlinedSend;
1053
+ return $5;
1054
+ }, function($ctx1) {$ctx1.fill(self,"inlinedSend:with:",{inlinedSend:inlinedSend,anIRInstruction:anIRInstruction,inlinedClosure:inlinedClosure}, smalltalk.IRSendInliner)})},
1049
1055
  args: ["inlinedSend", "anIRInstruction"],
1050
1056
  source: "inlinedSend: inlinedSend with: anIRInstruction\x0a\x09| inlinedClosure |\x0a\x0a\x09anIRInstruction isClosure ifFalse: [ self inliningError: 'Message argument should be a block' ].\x0a\x09anIRInstruction arguments size = 0 ifFalse: [ self inliningError: 'Inlined block should have zero argument' ].\x0a\x0a\x09inlinedClosure := self translator visit: (self inlineClosure: anIRInstruction).\x0a\x0a\x09inlinedSend\x0a\x09\x09add: self send instructions first;\x0a\x09\x09add: inlinedClosure.\x0a\x0a\x09self send replaceWith: inlinedSend.\x0a\x0a\x09^ inlinedSend",
1051
1057
  messageSends: ["ifFalse:", "inliningError:", "isClosure", "=", "size", "arguments", "visit:", "inlineClosure:", "translator", "add:", "first", "instructions", "send", "replaceWith:"],
@@ -1060,33 +1066,34 @@ selector: "inlinedSend:with:with:",
1060
1066
  category: 'inlining',
1061
1067
  fn: function (inlinedSend,anIRInstruction,anotherIRInstruction){
1062
1068
  var self=this;
1063
- var $1,$2,$3,$4,$5;
1064
- var inlinedClosure1;
1065
- var inlinedClosure2;
1066
- $1=smalltalk.send(anIRInstruction,"_isClosure",[]);
1069
+ var inlinedClosure1,inlinedClosure2;
1070
+ return smalltalk.withContext(function($ctx1) {
1071
+ $1=_st(anIRInstruction)._isClosure();
1067
1072
  if(! smalltalk.assert($1)){
1068
- smalltalk.send(self,"_inliningError_",["Message argument should be a block"]);
1073
+ _st(self)._inliningError_("Message argument should be a block");
1069
1074
  };
1070
- $2=smalltalk.send(smalltalk.send(smalltalk.send(anIRInstruction,"_arguments",[]),"_size",[]),"__eq",[(0)]);
1075
+ $2=_st(_st(_st(anIRInstruction)._arguments())._size()).__eq((0));
1071
1076
  if(! smalltalk.assert($2)){
1072
- smalltalk.send(self,"_inliningError_",["Inlined block should have zero argument"]);
1077
+ _st(self)._inliningError_("Inlined block should have zero argument");
1073
1078
  };
1074
- $3=smalltalk.send(anotherIRInstruction,"_isClosure",[]);
1079
+ $3=_st(anotherIRInstruction)._isClosure();
1075
1080
  if(! smalltalk.assert($3)){
1076
- smalltalk.send(self,"_inliningError_",["Message argument should be a block"]);
1081
+ _st(self)._inliningError_("Message argument should be a block");
1077
1082
  };
1078
- $4=smalltalk.send(smalltalk.send(smalltalk.send(anotherIRInstruction,"_arguments",[]),"_size",[]),"__eq",[(0)]);
1083
+ $4=_st(_st(_st(anotherIRInstruction)._arguments())._size()).__eq((0));
1079
1084
  if(! smalltalk.assert($4)){
1080
- smalltalk.send(self,"_inliningError_",["Inlined block should have zero argument"]);
1085
+ _st(self)._inliningError_("Inlined block should have zero argument");
1081
1086
  };
1082
- inlinedClosure1=smalltalk.send(smalltalk.send(self,"_translator",[]),"_visit_",[smalltalk.send(self,"_inlineClosure_",[anIRInstruction])]);
1083
- inlinedClosure2=smalltalk.send(smalltalk.send(self,"_translator",[]),"_visit_",[smalltalk.send(self,"_inlineClosure_",[anotherIRInstruction])]);
1084
- smalltalk.send(inlinedSend,"_add_",[smalltalk.send(smalltalk.send(smalltalk.send(self,"_send",[]),"_instructions",[]),"_first",[])]);
1085
- smalltalk.send(inlinedSend,"_add_",[inlinedClosure1]);
1086
- $5=smalltalk.send(inlinedSend,"_add_",[inlinedClosure2]);
1087
- smalltalk.send(smalltalk.send(self,"_send",[]),"_replaceWith_",[inlinedSend]);
1088
- return inlinedSend;
1089
- },
1087
+ inlinedClosure1=_st(_st(self)._translator())._visit_(_st(self)._inlineClosure_(anIRInstruction));
1088
+ inlinedClosure2=_st(_st(self)._translator())._visit_(_st(self)._inlineClosure_(anotherIRInstruction));
1089
+ $5=inlinedSend;
1090
+ _st($5)._add_(_st(_st(_st(self)._send())._instructions())._first());
1091
+ _st($5)._add_(inlinedClosure1);
1092
+ $6=_st($5)._add_(inlinedClosure2);
1093
+ _st(_st(self)._send())._replaceWith_(inlinedSend);
1094
+ $7=inlinedSend;
1095
+ return $7;
1096
+ }, function($ctx1) {$ctx1.fill(self,"inlinedSend:with:with:",{inlinedSend:inlinedSend,anIRInstruction:anIRInstruction,anotherIRInstruction:anotherIRInstruction,inlinedClosure1:inlinedClosure1,inlinedClosure2:inlinedClosure2}, smalltalk.IRSendInliner)})},
1090
1097
  args: ["inlinedSend", "anIRInstruction", "anotherIRInstruction"],
1091
1098
  source: "inlinedSend: inlinedSend with: anIRInstruction with: anotherIRInstruction\x0a\x09| inlinedClosure1 inlinedClosure2 |\x0a\x0a\x09anIRInstruction isClosure ifFalse: [ self inliningError: 'Message argument should be a block' ].\x0a\x09anIRInstruction arguments size = 0 ifFalse: [ self inliningError: 'Inlined block should have zero argument' ].\x0a\x0a\x09anotherIRInstruction isClosure ifFalse: [ self inliningError: 'Message argument should be a block' ].\x0a\x09anotherIRInstruction arguments size = 0 ifFalse: [ self inliningError: 'Inlined block should have zero argument' ].\x0a\x0a\x09inlinedClosure1 := self translator visit: (self inlineClosure: anIRInstruction).\x0a\x09inlinedClosure2 := self translator visit: (self inlineClosure: anotherIRInstruction).\x0a\x0a\x0a\x09inlinedSend\x0a\x09\x09add: self send instructions first;\x0a\x09\x09add: inlinedClosure1;\x0a\x09\x09add: inlinedClosure2.\x0a\x0a\x09self send replaceWith: inlinedSend.\x0a\x09^ inlinedSend",
1092
1099
  messageSends: ["ifFalse:", "inliningError:", "isClosure", "=", "size", "arguments", "visit:", "inlineClosure:", "translator", "add:", "first", "instructions", "send", "replaceWith:"],
@@ -1101,10 +1108,10 @@ selector: "inlinedSequence",
1101
1108
  category: 'factory',
1102
1109
  fn: function (){
1103
1110
  var self=this;
1104
- var $1;
1105
- $1=smalltalk.send((smalltalk.IRInlinedSequence || IRInlinedSequence),"_new",[]);
1111
+ return smalltalk.withContext(function($ctx1) {
1112
+ $1=_st((smalltalk.IRInlinedSequence || IRInlinedSequence))._new();
1106
1113
  return $1;
1107
- },
1114
+ }, function($ctx1) {$ctx1.fill(self,"inlinedSequence",{}, smalltalk.IRSendInliner)})},
1108
1115
  args: [],
1109
1116
  source: "inlinedSequence\x0a\x09^ IRInlinedSequence new",
1110
1117
  messageSends: ["new"],
@@ -1119,8 +1126,8 @@ selector: "inliningError:",
1119
1126
  category: 'error handling',
1120
1127
  fn: function (aString){
1121
1128
  var self=this;
1122
- smalltalk.send((smalltalk.InliningError || InliningError),"_signal_",[aString]);
1123
- return self},
1129
+ return smalltalk.withContext(function($ctx1) {
1130
+ return self}, function($ctx1) {$ctx1.fill(self,"inliningError:",{aString:aString}, smalltalk.IRSendInliner)})},
1124
1131
  args: ["aString"],
1125
1132
  source: "inliningError: aString\x0a\x09InliningError signal: aString",
1126
1133
  messageSends: ["signal:"],
@@ -1135,8 +1142,10 @@ selector: "send",
1135
1142
  category: 'accessing',
1136
1143
  fn: function (){
1137
1144
  var self=this;
1138
- return self["@send"];
1139
- },
1145
+ return smalltalk.withContext(function($ctx1) {
1146
+ $1=self["@send"];
1147
+ return $1;
1148
+ }, function($ctx1) {$ctx1.fill(self,"send",{}, smalltalk.IRSendInliner)})},
1140
1149
  args: [],
1141
1150
  source: "send\x0a\x09^ send",
1142
1151
  messageSends: [],
@@ -1151,8 +1160,8 @@ selector: "send:",
1151
1160
  category: 'accessing',
1152
1161
  fn: function (anIRSend){
1153
1162
  var self=this;
1154
- self["@send"]=anIRSend;
1155
- return self},
1163
+ return smalltalk.withContext(function($ctx1) {
1164
+ return self}, function($ctx1) {$ctx1.fill(self,"send:",{anIRSend:anIRSend}, smalltalk.IRSendInliner)})},
1156
1165
  args: ["anIRSend"],
1157
1166
  source: "send: anIRSend\x0a\x09send := anIRSend",
1158
1167
  messageSends: [],
@@ -1167,8 +1176,10 @@ selector: "translator",
1167
1176
  category: 'accessing',
1168
1177
  fn: function (){
1169
1178
  var self=this;
1170
- return self["@translator"];
1171
- },
1179
+ return smalltalk.withContext(function($ctx1) {
1180
+ $1=self["@translator"];
1181
+ return $1;
1182
+ }, function($ctx1) {$ctx1.fill(self,"translator",{}, smalltalk.IRSendInliner)})},
1172
1183
  args: [],
1173
1184
  source: "translator\x0a\x09^ translator",
1174
1185
  messageSends: [],
@@ -1183,8 +1194,8 @@ selector: "translator:",
1183
1194
  category: 'accessing',
1184
1195
  fn: function (anASTTranslator){
1185
1196
  var self=this;
1186
- self["@translator"]=anASTTranslator;
1187
- return self},
1197
+ return smalltalk.withContext(function($ctx1) {
1198
+ return self}, function($ctx1) {$ctx1.fill(self,"translator:",{anASTTranslator:anASTTranslator}, smalltalk.IRSendInliner)})},
1188
1199
  args: ["anASTTranslator"],
1189
1200
  source: "translator: anASTTranslator\x0a\x09translator := anASTTranslator",
1190
1201
  messageSends: [],
@@ -1200,8 +1211,8 @@ selector: "inlinedSelectors",
1200
1211
  category: 'accessing',
1201
1212
  fn: function (){
1202
1213
  var self=this;
1203
- return ["ifTrue:", "ifFalse:", "ifTrue:ifFalse:", "ifFalse:ifTrue:", "ifNil:", "ifNotNil:", "ifNil:ifNotNil:", "ifNotNil:ifNil"];
1204
- },
1214
+ return smalltalk.withContext(function($ctx1) {
1215
+ }, function($ctx1) {$ctx1.fill(self,"inlinedSelectors",{}, smalltalk.IRSendInliner.klass)})},
1205
1216
  args: [],
1206
1217
  source: "inlinedSelectors\x0a\x09^ #('ifTrue:' 'ifFalse:' 'ifTrue:ifFalse:' 'ifFalse:ifTrue:' 'ifNil:' 'ifNotNil:' 'ifNil:ifNotNil:' 'ifNotNil:ifNil')",
1207
1218
  messageSends: [],
@@ -1216,23 +1227,25 @@ selector: "shouldInline:",
1216
1227
  category: 'accessing',
1217
1228
  fn: function (anIRInstruction){
1218
1229
  var self=this;
1219
- var $1,$2;
1230
+ return smalltalk.withContext(function($ctx1) {
1220
1231
  var $early={};
1221
1232
  try {
1222
- $1=smalltalk.send(smalltalk.send(self,"_inlinedSelectors",[]),"_includes_",[smalltalk.send(anIRInstruction,"_selector",[])]);
1233
+ $1=_st(_st(self)._inlinedSelectors())._includes_(_st(anIRInstruction)._selector());
1223
1234
  if(! smalltalk.assert($1)){
1224
1235
  return false;
1225
1236
  };
1226
- smalltalk.send(smalltalk.send(smalltalk.send(anIRInstruction,"_instructions",[]),"_allButFirst",[]),"_do_",[(function(each){
1227
- $2=smalltalk.send(each,"_isClosure",[]);
1228
- if(! smalltalk.assert($2)){
1237
+ $2=_st(_st(anIRInstruction)._instructions())._allButFirst();
1238
+ $3=(function(each){
1239
+ return smalltalk.withContext(function($ctx2) {
1240
+ if(! smalltalk.assert($4)){
1229
1241
  throw $early=[false];
1230
1242
  };
1231
- })]);
1243
+ }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1)})});
1244
+ _st($2)._do_($3);
1232
1245
  return true;
1233
1246
  }
1234
1247
  catch(e) {if(e===$early)return e[0]; throw e}
1235
- },
1248
+ }, function($ctx1) {$ctx1.fill(self,"shouldInline:",{anIRInstruction:anIRInstruction}, smalltalk.IRSendInliner.klass)})},
1236
1249
  args: ["anIRInstruction"],
1237
1250
  source: "shouldInline: anIRInstruction\x0a\x09(self inlinedSelectors includes: anIRInstruction selector) ifFalse: [ ^ false ].\x0a\x09anIRInstruction instructions allButFirst do: [ :each |\x0a\x09\x09each isClosure ifFalse: [ ^ false ]].\x0a\x09^ true",
1238
1251
  messageSends: ["ifFalse:", "includes:", "selector", "inlinedSelectors", "do:", "isClosure", "allButFirst", "instructions"],
@@ -1250,8 +1263,10 @@ selector: "assignment",
1250
1263
  category: 'accessing',
1251
1264
  fn: function (){
1252
1265
  var self=this;
1253
- return self["@assignment"];
1254
- },
1266
+ return smalltalk.withContext(function($ctx1) {
1267
+ $1=self["@assignment"];
1268
+ return $1;
1269
+ }, function($ctx1) {$ctx1.fill(self,"assignment",{}, smalltalk.IRAssignmentInliner)})},
1255
1270
  args: [],
1256
1271
  source: "assignment\x0a\x09^ assignment",
1257
1272
  messageSends: [],
@@ -1266,8 +1281,8 @@ selector: "assignment:",
1266
1281
  category: 'accessing',
1267
1282
  fn: function (aNode){
1268
1283
  var self=this;
1269
- self["@assignment"]=aNode;
1270
- return self},
1284
+ return smalltalk.withContext(function($ctx1) {
1285
+ return self}, function($ctx1) {$ctx1.fill(self,"assignment:",{aNode:aNode}, smalltalk.IRAssignmentInliner)})},
1271
1286
  args: ["aNode"],
1272
1287
  source: "assignment: aNode\x0a\x09assignment := aNode",
1273
1288
  messageSends: [],
@@ -1283,15 +1298,17 @@ category: 'inlining',
1283
1298
  fn: function (anIRAssignment){
1284
1299
  var self=this;
1285
1300
  var inlinedAssignment;
1286
- smalltalk.send(self,"_assignment_",[anIRAssignment]);
1287
- inlinedAssignment=smalltalk.send((smalltalk.IRInlinedAssignment || IRInlinedAssignment),"_new",[]);
1288
- smalltalk.send(smalltalk.send(anIRAssignment,"_instructions",[]),"_do_",[(function(each){
1289
- return smalltalk.send(inlinedAssignment,"_add_",[each]);
1290
- })]);
1291
- smalltalk.send(anIRAssignment,"_replaceWith_",[inlinedAssignment]);
1292
- smalltalk.send(self,"_inlineSend_",[smalltalk.send(smalltalk.send(inlinedAssignment,"_instructions",[]),"_last",[])]);
1293
- return inlinedAssignment;
1294
- },
1301
+ return smalltalk.withContext(function($ctx1) {
1302
+ _st(self)._assignment_(anIRAssignment);
1303
+ inlinedAssignment=_st((smalltalk.IRInlinedAssignment || IRInlinedAssignment))._new();
1304
+ _st(_st(anIRAssignment)._instructions())._do_((function(each){
1305
+ return smalltalk.withContext(function($ctx2) {
1306
+ }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1)})}));
1307
+ _st(anIRAssignment)._replaceWith_(inlinedAssignment);
1308
+ _st(self)._inlineSend_(_st(_st(inlinedAssignment)._instructions())._last());
1309
+ $1=inlinedAssignment;
1310
+ return $1;
1311
+ }, function($ctx1) {$ctx1.fill(self,"inlineAssignment:",{anIRAssignment:anIRAssignment,inlinedAssignment:inlinedAssignment}, smalltalk.IRAssignmentInliner)})},
1295
1312
  args: ["anIRAssignment"],
1296
1313
  source: "inlineAssignment: anIRAssignment\x0a\x09| inlinedAssignment |\x0a\x09self assignment: anIRAssignment.\x0a\x09inlinedAssignment := IRInlinedAssignment new.\x0a\x09anIRAssignment instructions do: [ :each |\x0a\x09\x09inlinedAssignment add: each ].\x0a\x09anIRAssignment replaceWith: inlinedAssignment.\x0a\x09self inlineSend: inlinedAssignment instructions last.\x0a\x09^ inlinedAssignment",
1297
1314
  messageSends: ["assignment:", "new", "do:", "add:", "instructions", "replaceWith:", "inlineSend:", "last"],
@@ -1306,23 +1323,25 @@ selector: "inlineClosure:",
1306
1323
  category: 'inlining',
1307
1324
  fn: function (anIRClosure){
1308
1325
  var self=this;
1309
- var $1,$2,$3;
1310
- var inlinedClosure;
1311
- var statements;
1312
- inlinedClosure=smalltalk.send(self,"_inlineClosure_",[anIRClosure],smalltalk.IRSendInliner);
1313
- statements=smalltalk.send(smalltalk.send(smalltalk.send(inlinedClosure,"_instructions",[]),"_last",[]),"_instructions",[]);
1314
- smalltalk.send(statements,"_ifNotEmpty_",[(function(){
1315
- $1=smalltalk.send(smalltalk.send(statements,"_last",[]),"_canBeAssigned",[]);
1316
- if(smalltalk.assert($1)){
1317
- $2=smalltalk.send((smalltalk.IRAssignment || IRAssignment),"_new",[]);
1318
- smalltalk.send($2,"_add_",[smalltalk.send(smalltalk.send(smalltalk.send(self,"_assignment",[]),"_instructions",[]),"_first",[])]);
1319
- smalltalk.send($2,"_add_",[smalltalk.send(smalltalk.send(statements,"_last",[]),"_copy",[])]);
1320
- $3=smalltalk.send($2,"_yourself",[]);
1321
- return smalltalk.send(smalltalk.send(statements,"_last",[]),"_replaceWith_",[$3]);
1326
+ var inlinedClosure,statements;
1327
+ return smalltalk.withContext(function($ctx1) {
1328
+ inlinedClosure=smalltalk.IRSendInliner.fn.prototype._inlineClosure_.apply(_st(self), [anIRClosure]);
1329
+ statements=_st(_st(_st(inlinedClosure)._instructions())._last())._instructions();
1330
+ $1=statements;
1331
+ $2=(function(){
1332
+ return smalltalk.withContext(function($ctx2) {
1333
+ if(smalltalk.assert($3)){
1334
+ $4=_st((smalltalk.IRAssignment || IRAssignment))._new();
1335
+ _st($4)._add_(_st(_st(_st(self)._assignment())._instructions())._first());
1336
+ _st($4)._add_(_st(_st(statements)._last())._copy());
1337
+ $5=_st($4)._yourself();
1338
+ return _st(_st(statements)._last())._replaceWith_($5);
1322
1339
  };
1323
- })]);
1324
- return inlinedClosure;
1325
- },
1340
+ }, function($ctx2) {$ctx2.fillBlock({},$ctx1)})});
1341
+ _st($1)._ifNotEmpty_($2);
1342
+ $6=inlinedClosure;
1343
+ return $6;
1344
+ }, function($ctx1) {$ctx1.fill(self,"inlineClosure:",{anIRClosure:anIRClosure,inlinedClosure:inlinedClosure,statements:statements}, smalltalk.IRAssignmentInliner)})},
1326
1345
  args: ["anIRClosure"],
1327
1346
  source: "inlineClosure: anIRClosure\x0a\x09| inlinedClosure statements |\x0a\x0a\x09inlinedClosure := super inlineClosure: anIRClosure.\x0a\x09statements := inlinedClosure instructions last instructions.\x0a\x09\x0a\x09statements ifNotEmpty: [\x0a\x09\x09statements last canBeAssigned ifTrue: [\x0a\x09\x09\x09statements last replaceWith: (IRAssignment new\x0a\x09\x09\x09\x09add: self assignment instructions first;\x0a\x09\x09\x09\x09add: statements last copy;\x0a\x09\x09\x09\x09yourself) ] ].\x0a\x0a\x09^ inlinedClosure",
1328
1347
  messageSends: ["inlineClosure:", "instructions", "last", "ifNotEmpty:", "ifTrue:", "replaceWith:", "add:", "first", "assignment", "new", "copy", "yourself", "canBeAssigned"],
@@ -1340,10 +1359,10 @@ selector: "inlineClosure:",
1340
1359
  category: 'inlining',
1341
1360
  fn: function (anIRClosure){
1342
1361
  var self=this;
1343
- var $1;
1344
- $1=smalltalk.send(self,"_inlineCLosure_",[anIRClosure],smalltalk.IRSendInliner);
1362
+ return smalltalk.withContext(function($ctx1) {
1363
+ $1=smalltalk.IRSendInliner.fn.prototype._inlineCLosure_.apply(_st(self), [anIRClosure]);
1345
1364
  return $1;
1346
- },
1365
+ }, function($ctx1) {$ctx1.fill(self,"inlineClosure:",{anIRClosure:anIRClosure}, smalltalk.IRNonLocalReturnInliner)})},
1347
1366
  args: ["anIRClosure"],
1348
1367
  source: "inlineClosure: anIRClosure\x0a\x09\x22| inlinedClosure statements |\x0a\x0a\x09inlinedClosure := super inlineClosure: anIRClosure.\x0a\x09statements := inlinedClosure instructions last instructions.\x0a\x09\x0a\x09statements ifNotEmpty: [\x0a\x09\x09statements last replaceWith: (IRNonLocalReturn new\x0a\x09\x09\x09add: statements last copy;\x0a\x09\x09\x09yourself) ].\x0a\x0a\x09^ inlinedClosure\x22\x0a\x0a\x09^ super inlineCLosure: anIRClosure",
1349
1368
  messageSends: ["inlineCLosure:"],
@@ -1358,10 +1377,10 @@ selector: "inlinedReturn",
1358
1377
  category: 'factory',
1359
1378
  fn: function (){
1360
1379
  var self=this;
1361
- var $1;
1362
- $1=smalltalk.send((smalltalk.IRInlinedNonLocalReturn || IRInlinedNonLocalReturn),"_new",[]);
1380
+ return smalltalk.withContext(function($ctx1) {
1381
+ $1=_st((smalltalk.IRInlinedNonLocalReturn || IRInlinedNonLocalReturn))._new();
1363
1382
  return $1;
1364
- },
1383
+ }, function($ctx1) {$ctx1.fill(self,"inlinedReturn",{}, smalltalk.IRNonLocalReturnInliner)})},
1365
1384
  args: [],
1366
1385
  source: "inlinedReturn\x0a\x09^ IRInlinedNonLocalReturn new",
1367
1386
  messageSends: ["new"],
@@ -1380,22 +1399,24 @@ selector: "inlineClosure:",
1380
1399
  category: 'inlining',
1381
1400
  fn: function (anIRClosure){
1382
1401
  var self=this;
1383
- var $1,$2,$3;
1384
- var closure;
1385
- var statements;
1386
- closure=smalltalk.send(self,"_inlineClosure_",[anIRClosure],smalltalk.IRSendInliner);
1387
- statements=smalltalk.send(smalltalk.send(smalltalk.send(closure,"_instructions",[]),"_last",[]),"_instructions",[]);
1388
- smalltalk.send(statements,"_ifNotEmpty_",[(function(){
1389
- $1=smalltalk.send(smalltalk.send(statements,"_last",[]),"_isReturn",[]);
1390
- if(! smalltalk.assert($1)){
1391
- $2=smalltalk.send((smalltalk.IRReturn || IRReturn),"_new",[]);
1392
- smalltalk.send($2,"_add_",[smalltalk.send(smalltalk.send(statements,"_last",[]),"_copy",[])]);
1393
- $3=smalltalk.send($2,"_yourself",[]);
1394
- return smalltalk.send(smalltalk.send(statements,"_last",[]),"_replaceWith_",[$3]);
1402
+ var closure,statements;
1403
+ return smalltalk.withContext(function($ctx1) {
1404
+ closure=smalltalk.IRSendInliner.fn.prototype._inlineClosure_.apply(_st(self), [anIRClosure]);
1405
+ statements=_st(_st(_st(closure)._instructions())._last())._instructions();
1406
+ $1=statements;
1407
+ $2=(function(){
1408
+ return smalltalk.withContext(function($ctx2) {
1409
+ if(! smalltalk.assert($3)){
1410
+ $4=_st((smalltalk.IRReturn || IRReturn))._new();
1411
+ _st($4)._add_(_st(_st(statements)._last())._copy());
1412
+ $5=_st($4)._yourself();
1413
+ return _st(_st(statements)._last())._replaceWith_($5);
1395
1414
  };
1396
- })]);
1397
- return closure;
1398
- },
1415
+ }, function($ctx2) {$ctx2.fillBlock({},$ctx1)})});
1416
+ _st($1)._ifNotEmpty_($2);
1417
+ $6=closure;
1418
+ return $6;
1419
+ }, function($ctx1) {$ctx1.fill(self,"inlineClosure:",{anIRClosure:anIRClosure,closure:closure,statements:statements}, smalltalk.IRReturnInliner)})},
1399
1420
  args: ["anIRClosure"],
1400
1421
  source: "inlineClosure: anIRClosure\x0a\x09| closure statements |\x0a\x0a\x09closure := super inlineClosure: anIRClosure.\x0a\x09statements := closure instructions last instructions.\x0a\x09\x0a\x09statements ifNotEmpty: [\x0a\x09\x09statements last isReturn\x0a\x09\x09\x09ifFalse: [ statements last replaceWith: (IRReturn new\x0a\x09\x09\x09\x09add: statements last copy;\x0a\x09\x09\x09\x09yourself)] ].\x0a\x0a\x09^ closure",
1401
1422
  messageSends: ["inlineClosure:", "instructions", "last", "ifNotEmpty:", "ifFalse:", "replaceWith:", "add:", "copy", "new", "yourself", "isReturn"],
@@ -1411,14 +1432,16 @@ category: 'inlining',
1411
1432
  fn: function (anIRReturn){
1412
1433
  var self=this;
1413
1434
  var return_;
1414
- return_=smalltalk.send(self,"_inlinedReturn",[]);
1415
- smalltalk.send(smalltalk.send(anIRReturn,"_instructions",[]),"_do_",[(function(each){
1416
- return smalltalk.send(return_,"_add_",[each]);
1417
- })]);
1418
- smalltalk.send(anIRReturn,"_replaceWith_",[return_]);
1419
- smalltalk.send(self,"_inlineSend_",[smalltalk.send(smalltalk.send(return_,"_instructions",[]),"_last",[])]);
1420
- return return_;
1421
- },
1435
+ return smalltalk.withContext(function($ctx1) {
1436
+ return_=_st(self)._inlinedReturn();
1437
+ _st(_st(anIRReturn)._instructions())._do_((function(each){
1438
+ return smalltalk.withContext(function($ctx2) {
1439
+ }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1)})}));
1440
+ _st(anIRReturn)._replaceWith_(return_);
1441
+ _st(self)._inlineSend_(_st(_st(return_)._instructions())._last());
1442
+ $1=return_;
1443
+ return $1;
1444
+ }, function($ctx1) {$ctx1.fill(self,"inlineReturn:",{anIRReturn:anIRReturn,return_:return_}, smalltalk.IRReturnInliner)})},
1422
1445
  args: ["anIRReturn"],
1423
1446
  source: "inlineReturn: anIRReturn\x0a\x09| return |\x0a\x09return := self inlinedReturn.\x0a\x09anIRReturn instructions do: [ :each |\x0a\x09\x09return add: each ].\x0a\x09anIRReturn replaceWith: return.\x0a\x09self inlineSend: return instructions last.\x0a\x09^ return",
1424
1447
  messageSends: ["inlinedReturn", "do:", "add:", "instructions", "replaceWith:", "inlineSend:", "last"],
@@ -1433,10 +1456,10 @@ selector: "inlinedReturn",
1433
1456
  category: 'factory',
1434
1457
  fn: function (){
1435
1458
  var self=this;
1436
- var $1;
1437
- $1=smalltalk.send((smalltalk.IRInlinedReturn || IRInlinedReturn),"_new",[]);
1459
+ return smalltalk.withContext(function($ctx1) {
1460
+ $1=_st((smalltalk.IRInlinedReturn || IRInlinedReturn))._new();
1438
1461
  return $1;
1439
- },
1462
+ }, function($ctx1) {$ctx1.fill(self,"inlinedReturn",{}, smalltalk.IRReturnInliner)})},
1440
1463
  args: [],
1441
1464
  source: "inlinedReturn\x0a\x09^ IRInlinedReturn new",
1442
1465
  messageSends: ["new"],
@@ -1455,18 +1478,17 @@ selector: "compileNode:",
1455
1478
  category: 'compiling',
1456
1479
  fn: function (aNode){
1457
1480
  var self=this;
1458
- var $2,$3,$1;
1459
- var ir;
1460
- var stream;
1461
- smalltalk.send(smalltalk.send(self,"_semanticAnalyzer",[]),"_visit_",[aNode]);
1462
- ir=smalltalk.send(smalltalk.send(self,"_translator",[]),"_visit_",[aNode]);
1463
- smalltalk.send(smalltalk.send(self,"_inliner",[]),"_visit_",[ir]);
1464
- $2=smalltalk.send(self,"_irTranslator",[]);
1465
- smalltalk.send($2,"_visit_",[ir]);
1466
- $3=smalltalk.send($2,"_contents",[]);
1481
+ var ir,stream;
1482
+ return smalltalk.withContext(function($ctx1) {
1483
+ _st(_st(self)._semanticAnalyzer())._visit_(aNode);
1484
+ ir=_st(_st(self)._translator())._visit_(aNode);
1485
+ _st(_st(self)._inliner())._visit_(ir);
1486
+ $2=_st(self)._irTranslator();
1487
+ _st($2)._visit_(ir);
1488
+ $3=_st($2)._contents();
1467
1489
  $1=$3;
1468
1490
  return $1;
1469
- },
1491
+ }, function($ctx1) {$ctx1.fill(self,"compileNode:",{aNode:aNode,ir:ir,stream:stream}, smalltalk.InliningCodeGenerator)})},
1470
1492
  args: ["aNode"],
1471
1493
  source: "compileNode: aNode\x0a\x09| ir stream |\x0a\x0a\x09self semanticAnalyzer visit: aNode.\x0a\x09ir := self translator visit: aNode.\x0a\x09self inliner visit: ir.\x0a\x0a\x09^ self irTranslator\x0a\x09\x09visit: ir;\x0a\x09\x09contents",
1472
1494
  messageSends: ["visit:", "semanticAnalyzer", "translator", "inliner", "irTranslator", "contents"],
@@ -1481,10 +1503,10 @@ selector: "inliner",
1481
1503
  category: 'compiling',
1482
1504
  fn: function (){
1483
1505
  var self=this;
1484
- var $1;
1485
- $1=smalltalk.send((smalltalk.IRInliner || IRInliner),"_new",[]);
1506
+ return smalltalk.withContext(function($ctx1) {
1507
+ $1=_st((smalltalk.IRInliner || IRInliner))._new();
1486
1508
  return $1;
1487
- },
1509
+ }, function($ctx1) {$ctx1.fill(self,"inliner",{}, smalltalk.InliningCodeGenerator)})},
1488
1510
  args: [],
1489
1511
  source: "inliner\x0a\x09^ IRInliner new",
1490
1512
  messageSends: ["new"],
@@ -1499,10 +1521,10 @@ selector: "irTranslator",
1499
1521
  category: 'compiling',
1500
1522
  fn: function (){
1501
1523
  var self=this;
1502
- var $1;
1503
- $1=smalltalk.send((smalltalk.IRInliningJSTranslator || IRInliningJSTranslator),"_new",[]);
1524
+ return smalltalk.withContext(function($ctx1) {
1525
+ $1=_st((smalltalk.IRInliningJSTranslator || IRInliningJSTranslator))._new();
1504
1526
  return $1;
1505
- },
1527
+ }, function($ctx1) {$ctx1.fill(self,"irTranslator",{}, smalltalk.InliningCodeGenerator)})},
1506
1528
  args: [],
1507
1529
  source: "irTranslator\x0a\x09^ IRInliningJSTranslator new",
1508
1530
  messageSends: ["new"],