resin 0.2.2 → 0.2.3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (117) hide show
  1. data/amber/css/amber-normalize.css +73 -73
  2. data/amber/css/amber-normalize.less +1 -1
  3. data/amber/css/amber.css +106 -106
  4. data/amber/css/helios.css +242 -0
  5. data/amber/images/hsplitter.png +0 -0
  6. data/amber/images/vsplitter.png +0 -0
  7. data/amber/js/Benchfib.deploy.js +116 -38
  8. data/amber/js/Benchfib.js +120 -42
  9. data/amber/js/Canvas.deploy.js +674 -403
  10. data/amber/js/Canvas.js +682 -411
  11. data/amber/js/Compiler-AST.deploy.js +1150 -0
  12. data/amber/js/Compiler-AST.js +1591 -0
  13. data/amber/js/Compiler-Core.deploy.js +1562 -0
  14. data/amber/js/Compiler-Core.js +1972 -0
  15. data/amber/js/Compiler-Exceptions.deploy.js +114 -0
  16. data/amber/js/Compiler-Exceptions.js +161 -0
  17. data/amber/js/Compiler-IR.deploy.js +2326 -0
  18. data/amber/js/Compiler-IR.js +3146 -0
  19. data/amber/js/Compiler-Inlining.deploy.js +1147 -0
  20. data/amber/js/Compiler-Inlining.js +1514 -0
  21. data/amber/js/Compiler-Semantic.deploy.js +1207 -0
  22. data/amber/js/Compiler-Semantic.js +1628 -0
  23. data/amber/js/Compiler-Tests.deploy.js +646 -60
  24. data/amber/js/Compiler-Tests.js +843 -82
  25. data/amber/js/Compiler.deploy.js +1097 -159
  26. data/amber/js/Compiler.js +1414 -161
  27. data/amber/js/Examples.deploy.js +31 -15
  28. data/amber/js/Examples.js +33 -17
  29. data/amber/js/Helios-Announcements.deploy.js +127 -0
  30. data/amber/js/Helios-Announcements.js +157 -0
  31. data/amber/js/Helios-Browser.deploy.js +1473 -0
  32. data/amber/js/Helios-Browser.js +1953 -0
  33. data/amber/js/Helios-Commands.deploy.js +403 -0
  34. data/amber/js/Helios-Commands.js +563 -0
  35. data/amber/js/Helios-Core.deploy.js +1070 -0
  36. data/amber/js/Helios-Core.js +1445 -0
  37. data/amber/js/Helios-Environments.deploy.js +132 -0
  38. data/amber/js/Helios-Environments.js +179 -0
  39. data/amber/js/Helios-Inspector.deploy.js +855 -0
  40. data/amber/js/Helios-Inspector.js +1155 -0
  41. data/amber/js/Helios-KeyBindings.deploy.js +753 -0
  42. data/amber/js/Helios-KeyBindings.js +1023 -0
  43. data/amber/js/Helios-Layout.deploy.js +383 -0
  44. data/amber/js/Helios-Layout.js +523 -0
  45. data/amber/js/Helios-Workspace.deploy.js +799 -0
  46. data/amber/js/Helios-Workspace.js +1074 -0
  47. data/amber/js/IDE.deploy.js +2541 -1490
  48. data/amber/js/IDE.js +2721 -1660
  49. data/amber/js/Importer-Exporter.deploy.js +671 -0
  50. data/amber/js/Importer-Exporter.js +816 -0
  51. data/amber/js/Kernel-Announcements.deploy.js +137 -20
  52. data/amber/js/Kernel-Announcements.js +176 -22
  53. data/amber/js/Kernel-Classes.deploy.js +555 -168
  54. data/amber/js/Kernel-Classes.js +662 -205
  55. data/amber/js/Kernel-Collections.deploy.js +1403 -618
  56. data/amber/js/Kernel-Collections.js +1545 -690
  57. data/amber/js/Kernel-Exceptions.deploy.js +109 -45
  58. data/amber/js/Kernel-Exceptions.js +123 -49
  59. data/amber/js/Kernel-Methods.deploy.js +196 -81
  60. data/amber/js/Kernel-Methods.js +214 -89
  61. data/amber/js/Kernel-Objects.deploy.js +1542 -1117
  62. data/amber/js/Kernel-Objects.js +1593 -1148
  63. data/amber/js/Kernel-Tests.deploy.js +1725 -772
  64. data/amber/js/Kernel-Tests.js +2301 -1123
  65. data/amber/js/Kernel-Transcript.deploy.js +23 -25
  66. data/amber/js/Kernel-Transcript.js +24 -26
  67. data/amber/js/SUnit.deploy.js +204 -131
  68. data/amber/js/SUnit.js +222 -139
  69. data/amber/js/Spaces.deploy.js +240 -0
  70. data/amber/js/Spaces.js +326 -0
  71. data/amber/js/amber.js +26 -7
  72. data/amber/js/boot.js +65 -47
  73. data/amber/js/init.js +1 -1
  74. data/amber/js/lib/CodeMirror/amber.css +21 -21
  75. data/amber/js/lib/CodeMirror/codemirror.css +119 -13
  76. data/amber/js/lib/CodeMirror/codemirror.js +2219 -1220
  77. data/amber/js/lib/CodeMirror/smalltalk.js +134 -129
  78. data/amber/js/lib/bootstrap/css/bootstrap.css +5837 -0
  79. data/amber/js/lib/bootstrap/css/bootstrap.min.css +841 -0
  80. data/amber/js/lib/bootstrap/img/glyphicons-halflings-white.png +0 -0
  81. data/amber/js/lib/bootstrap/img/glyphicons-halflings.png +0 -0
  82. data/amber/js/lib/bootstrap/js/bootstrap.js +2038 -0
  83. data/amber/js/lib/bootstrap/js/bootstrap.min.js +7 -0
  84. data/amber/js/lib/jQuery/jquery-1.8.2.min.js +2 -0
  85. data/amber/js/lib/jQuery/jquery-ui-1.8.24.custom.min.js +125 -0
  86. data/amber/st/Compiler-AST.st +505 -0
  87. data/amber/st/Compiler-Core.st +835 -0
  88. data/amber/st/Compiler-Exceptions.st +87 -0
  89. data/amber/st/Compiler-IR.st +1097 -0
  90. data/amber/st/Compiler-Inlining.st +650 -0
  91. data/amber/st/Compiler-Semantic.st +558 -0
  92. data/amber/st/Compiler-Tests.st +285 -381
  93. data/amber/st/Compiler.st +725 -2
  94. data/amber/st/Helios-Announcements.st +104 -0
  95. data/amber/st/Helios-Browser.st +708 -0
  96. data/amber/st/Helios-Commands.st +223 -0
  97. data/amber/st/Helios-Core.st +532 -0
  98. data/amber/st/Helios-Environments.st +98 -0
  99. data/amber/st/Helios-Inspector.st +367 -0
  100. data/amber/st/Helios-KeyBindings.st +337 -0
  101. data/amber/st/Helios-Layout.st +199 -0
  102. data/amber/st/Helios-Workspace.st +367 -0
  103. data/amber/st/IDE.st +75 -53
  104. data/amber/st/Importer-Exporter.st +386 -0
  105. data/amber/st/Kernel-Announcements.st +92 -0
  106. data/amber/st/Kernel-Classes.st +137 -15
  107. data/amber/st/Kernel-Collections.st +137 -47
  108. data/amber/st/Kernel-Exceptions.st +14 -0
  109. data/amber/st/Kernel-Methods.st +9 -1
  110. data/amber/st/Kernel-Objects.st +29 -5
  111. data/amber/st/Kernel-Tests.st +545 -199
  112. data/amber/st/SUnit.st +10 -0
  113. data/amber/st/Spaces.st +142 -0
  114. data/lib/resin/app.rb +1 -1
  115. metadata +86 -31
  116. data/amber/js/lib/jQuery/jquery-1.4.4.min.js +0 -167
  117. data/amber/js/lib/jQuery/jquery-1.6.4.min.js +0 -4
data/amber/js/Compiler.js CHANGED
@@ -5,7 +5,7 @@ smalltalk.addMethod(
5
5
  smalltalk.method({
6
6
  selector: "nextChunk",
7
7
  category: 'reading',
8
- fn: function (){
8
+ fn: function () {
9
9
  var self=this;
10
10
  var $early={};
11
11
  try{var char_=nil;
@@ -28,7 +28,7 @@ smalltalk.addMethod(
28
28
  smalltalk.method({
29
29
  selector: "stream:",
30
30
  category: 'accessing',
31
- fn: function (aStream){
31
+ fn: function (aStream) {
32
32
  var self=this;
33
33
  (self['@stream']=aStream);
34
34
  return self;},
@@ -45,7 +45,7 @@ smalltalk.addMethod(
45
45
  smalltalk.method({
46
46
  selector: "on:",
47
47
  category: 'not yet classified',
48
- fn: function (aStream){
48
+ fn: function (aStream) {
49
49
  var self=this;
50
50
  return smalltalk.send(smalltalk.send(self, "_new", []), "_stream_", [aStream]);
51
51
  return self;},
@@ -57,29 +57,45 @@ referencedClasses: []
57
57
  smalltalk.ChunkParser.klass);
58
58
 
59
59
 
60
- smalltalk.addClass('Compiler', smalltalk.Object, ['currentClass', 'source', 'unknownVariables'], 'Compiler');
60
+ smalltalk.addClass('Compiler', smalltalk.Object, ['currentClass', 'source', 'unknownVariables', 'codeGeneratorClass'], 'Compiler');
61
61
  smalltalk.addMethod(
62
62
  "_codeGeneratorClass",
63
63
  smalltalk.method({
64
64
  selector: "codeGeneratorClass",
65
65
  category: 'accessing',
66
- fn: function (){
66
+ fn: function () {
67
67
  var self=this;
68
- return (smalltalk.FunCodeGenerator || FunCodeGenerator);
68
+ return (($receiver = self['@codeGeneratorClass']) == nil || $receiver == undefined) ? (function(){return (smalltalk.FunCodeGenerator || FunCodeGenerator);})() : $receiver;
69
69
  return self;},
70
70
  args: [],
71
- source: "codeGeneratorClass\x0a\x09^FunCodeGenerator",
72
- messageSends: [],
71
+ source: "codeGeneratorClass\x0a\x09^codeGeneratorClass ifNil: [FunCodeGenerator]",
72
+ messageSends: ["ifNil:"],
73
73
  referencedClasses: ["FunCodeGenerator"]
74
74
  }),
75
75
  smalltalk.Compiler);
76
76
 
77
+ smalltalk.addMethod(
78
+ "_codeGeneratorClass_",
79
+ smalltalk.method({
80
+ selector: "codeGeneratorClass:",
81
+ category: 'accessing',
82
+ fn: function (aClass) {
83
+ var self=this;
84
+ (self['@codeGeneratorClass']=aClass);
85
+ return self;},
86
+ args: ["aClass"],
87
+ source: "codeGeneratorClass: aClass\x0a\x09codeGeneratorClass := aClass",
88
+ messageSends: [],
89
+ referencedClasses: []
90
+ }),
91
+ smalltalk.Compiler);
92
+
77
93
  smalltalk.addMethod(
78
94
  "_compile_",
79
95
  smalltalk.method({
80
96
  selector: "compile:",
81
97
  category: 'compiling',
82
- fn: function (aString){
98
+ fn: function (aString) {
83
99
  var self=this;
84
100
  return smalltalk.send(self, "_compileNode_", [smalltalk.send(self, "_parse_", [aString])]);
85
101
  return self;},
@@ -95,7 +111,7 @@ smalltalk.addMethod(
95
111
  smalltalk.method({
96
112
  selector: "compile:forClass:",
97
113
  category: 'compiling',
98
- fn: function (aString, aClass){
114
+ fn: function (aString, aClass) {
99
115
  var self=this;
100
116
  smalltalk.send(self, "_currentClass_", [aClass]);
101
117
  smalltalk.send(self, "_source_", [aString]);
@@ -113,7 +129,7 @@ smalltalk.addMethod(
113
129
  smalltalk.method({
114
130
  selector: "compileExpression:",
115
131
  category: 'compiling',
116
- fn: function (aString){
132
+ fn: function (aString) {
117
133
  var self=this;
118
134
  smalltalk.send(self, "_currentClass_", [(smalltalk.DoIt || DoIt)]);
119
135
  smalltalk.send(self, "_source_", [smalltalk.send(smalltalk.send("doIt ^[", "__comma", [aString]), "__comma", ["] value"])]);
@@ -131,7 +147,7 @@ smalltalk.addMethod(
131
147
  smalltalk.method({
132
148
  selector: "compileNode:",
133
149
  category: 'compiling',
134
- fn: function (aNode){
150
+ fn: function (aNode) {
135
151
  var self=this;
136
152
  var generator=nil;
137
153
  var result=nil;
@@ -153,7 +169,7 @@ smalltalk.addMethod(
153
169
  smalltalk.method({
154
170
  selector: "currentClass",
155
171
  category: 'accessing',
156
- fn: function (){
172
+ fn: function () {
157
173
  var self=this;
158
174
  return self['@currentClass'];
159
175
  return self;},
@@ -169,7 +185,7 @@ smalltalk.addMethod(
169
185
  smalltalk.method({
170
186
  selector: "currentClass:",
171
187
  category: 'accessing',
172
- fn: function (aClass){
188
+ fn: function (aClass) {
173
189
  var self=this;
174
190
  (self['@currentClass']=aClass);
175
191
  return self;},
@@ -185,7 +201,7 @@ smalltalk.addMethod(
185
201
  smalltalk.method({
186
202
  selector: "eval:",
187
203
  category: 'compiling',
188
- fn: function (aString){
204
+ fn: function (aString) {
189
205
  var self=this;
190
206
  return eval(aString);
191
207
  return self;},
@@ -201,7 +217,7 @@ smalltalk.addMethod(
201
217
  smalltalk.method({
202
218
  selector: "evaluateExpression:",
203
219
  category: 'compiling',
204
- fn: function (aString){
220
+ fn: function (aString) {
205
221
  var self=this;
206
222
  var result=nil;
207
223
  smalltalk.send((smalltalk.DoIt || DoIt), "_addCompiledMethod_", [smalltalk.send(self, "_eval_", [smalltalk.send(self, "_compileExpression_", [aString])])]);
@@ -221,7 +237,7 @@ smalltalk.addMethod(
221
237
  smalltalk.method({
222
238
  selector: "install:forClass:category:",
223
239
  category: 'compiling',
224
- fn: function (aString, aBehavior, anotherString){
240
+ fn: function (aString, aBehavior, anotherString) {
225
241
  var self=this;
226
242
  var compiled=nil;
227
243
  (compiled=smalltalk.send(self, "_eval_", [smalltalk.send(self, "_compile_forClass_", [aString, aBehavior])]));
@@ -241,7 +257,7 @@ smalltalk.addMethod(
241
257
  smalltalk.method({
242
258
  selector: "parse:",
243
259
  category: 'compiling',
244
- fn: function (aString){
260
+ fn: function (aString) {
245
261
  var self=this;
246
262
  return smalltalk.send(smalltalk.send((smalltalk.Smalltalk || Smalltalk), "_current", []), "_parse_", [aString]);
247
263
  return self;},
@@ -257,7 +273,7 @@ smalltalk.addMethod(
257
273
  smalltalk.method({
258
274
  selector: "parseExpression:",
259
275
  category: 'compiling',
260
- fn: function (aString){
276
+ fn: function (aString) {
261
277
  var self=this;
262
278
  return smalltalk.send(self, "_parse_", [smalltalk.send(smalltalk.send("doIt ^[", "__comma", [aString]), "__comma", ["] value"])]);
263
279
  return self;},
@@ -273,7 +289,7 @@ smalltalk.addMethod(
273
289
  smalltalk.method({
274
290
  selector: "recompile:",
275
291
  category: 'compiling',
276
- fn: function (aClass){
292
+ fn: function (aClass) {
277
293
  var self=this;
278
294
  smalltalk.send(smalltalk.send(aClass, "_methodDictionary", []), "_do_", [(function(each){return smalltalk.send(self, "_install_forClass_category_", [smalltalk.send(each, "_source", []), aClass, smalltalk.send(each, "_category", [])]);})]);
279
295
  smalltalk.send(self, "_setupClass_", [aClass]);
@@ -291,7 +307,7 @@ smalltalk.addMethod(
291
307
  smalltalk.method({
292
308
  selector: "recompileAll",
293
309
  category: 'compiling',
294
- fn: function (){
310
+ fn: function () {
295
311
  var self=this;
296
312
  smalltalk.send(smalltalk.send(smalltalk.send((smalltalk.Smalltalk || Smalltalk), "_current", []), "_classes", []), "_do_", [(function(each){(function($rec){smalltalk.send($rec, "_show_", [each]);return smalltalk.send($rec, "_cr", []);})((smalltalk.Transcript || Transcript));return smalltalk.send((function(){return smalltalk.send(self, "_recompile_", [each]);}), "_valueWithTimeout_", [(100)]);})]);
297
313
  return self;},
@@ -307,7 +323,7 @@ smalltalk.addMethod(
307
323
  smalltalk.method({
308
324
  selector: "setupClass:",
309
325
  category: 'compiling',
310
- fn: function (aClass){
326
+ fn: function (aClass) {
311
327
  var self=this;
312
328
  smalltalk.init(aClass);
313
329
  return self;},
@@ -323,7 +339,7 @@ smalltalk.addMethod(
323
339
  smalltalk.method({
324
340
  selector: "source",
325
341
  category: 'accessing',
326
- fn: function (){
342
+ fn: function () {
327
343
  var self=this;
328
344
  return (($receiver = self['@source']) == nil || $receiver == undefined) ? (function(){return "";})() : $receiver;
329
345
  return self;},
@@ -339,7 +355,7 @@ smalltalk.addMethod(
339
355
  smalltalk.method({
340
356
  selector: "source:",
341
357
  category: 'accessing',
342
- fn: function (aString){
358
+ fn: function (aString) {
343
359
  var self=this;
344
360
  (self['@source']=aString);
345
361
  return self;},
@@ -355,7 +371,7 @@ smalltalk.addMethod(
355
371
  smalltalk.method({
356
372
  selector: "unknownVariables",
357
373
  category: 'accessing',
358
- fn: function (){
374
+ fn: function () {
359
375
  var self=this;
360
376
  return self['@unknownVariables'];
361
377
  return self;},
@@ -371,7 +387,7 @@ smalltalk.addMethod(
371
387
  smalltalk.method({
372
388
  selector: "unknownVariables:",
373
389
  category: 'accessing',
374
- fn: function (aCollection){
390
+ fn: function (aCollection) {
375
391
  var self=this;
376
392
  (self['@unknownVariables']=aCollection);
377
393
  return self;},
@@ -388,7 +404,7 @@ smalltalk.addMethod(
388
404
  smalltalk.method({
389
405
  selector: "recompile:",
390
406
  category: 'compiling',
391
- fn: function (aClass){
407
+ fn: function (aClass) {
392
408
  var self=this;
393
409
  smalltalk.send(smalltalk.send(self, "_new", []), "_recompile_", [aClass]);
394
410
  return self;},
@@ -404,7 +420,7 @@ smalltalk.addMethod(
404
420
  smalltalk.method({
405
421
  selector: "recompileAll",
406
422
  category: 'compiling',
407
- fn: function (){
423
+ fn: function () {
408
424
  var self=this;
409
425
  smalltalk.send(smalltalk.send(smalltalk.send((smalltalk.Smalltalk || Smalltalk), "_current", []), "_classes", []), "_do_", [(function(each){return smalltalk.send(self, "_recompile_", [each]);})]);
410
426
  return self;},
@@ -425,7 +441,7 @@ smalltalk.addMethod(
425
441
  smalltalk.method({
426
442
  selector: "classNameFor:",
427
443
  category: 'private',
428
- fn: function (aClass){
444
+ fn: function (aClass) {
429
445
  var self=this;
430
446
  return ((($receiver = smalltalk.send(aClass, "_isMetaclass", [])).klass === smalltalk.Boolean) ? ($receiver ? (function(){return smalltalk.send(smalltalk.send(smalltalk.send(aClass, "_instanceClass", []), "_name", []), "__comma", [".klass"]);})() : (function(){return ((($receiver = smalltalk.send(aClass, "_isNil", [])).klass === smalltalk.Boolean) ? ($receiver ? (function(){return "nil";})() : (function(){return smalltalk.send(aClass, "_name", []);})()) : smalltalk.send($receiver, "_ifTrue_ifFalse_", [(function(){return "nil";}), (function(){return smalltalk.send(aClass, "_name", []);})]));})()) : smalltalk.send($receiver, "_ifTrue_ifFalse_", [(function(){return smalltalk.send(smalltalk.send(smalltalk.send(aClass, "_instanceClass", []), "_name", []), "__comma", [".klass"]);}), (function(){return ((($receiver = smalltalk.send(aClass, "_isNil", [])).klass === smalltalk.Boolean) ? ($receiver ? (function(){return "nil";})() : (function(){return smalltalk.send(aClass, "_name", []);})()) : smalltalk.send($receiver, "_ifTrue_ifFalse_", [(function(){return "nil";}), (function(){return smalltalk.send(aClass, "_name", []);})]));})]));
431
447
  return self;},
@@ -441,7 +457,7 @@ smalltalk.addMethod(
441
457
  smalltalk.method({
442
458
  selector: "exportAll",
443
459
  category: 'fileOut',
444
- fn: function (){
460
+ fn: function () {
445
461
  var self=this;
446
462
  return smalltalk.send((smalltalk.String || String), "_streamContents_", [(function(stream){return smalltalk.send(smalltalk.send(smalltalk.send((smalltalk.Smalltalk || Smalltalk), "_current", []), "_packages", []), "_do_", [(function(pkg){return smalltalk.send(stream, "_nextPutAll_", [smalltalk.send(self, "_exportPackage_", [smalltalk.send(pkg, "_name", [])])]);})]);})]);
447
463
  return self;},
@@ -457,7 +473,7 @@ smalltalk.addMethod(
457
473
  smalltalk.method({
458
474
  selector: "exportClass:",
459
475
  category: 'fileOut',
460
- fn: function (aClass){
476
+ fn: function (aClass) {
461
477
  var self=this;
462
478
  return smalltalk.send((smalltalk.String || String), "_streamContents_", [(function(stream){smalltalk.send(self, "_exportDefinitionOf_on_", [aClass, stream]);smalltalk.send(self, "_exportMethodsOf_on_", [aClass, stream]);smalltalk.send(self, "_exportMetaDefinitionOf_on_", [aClass, stream]);return smalltalk.send(self, "_exportMethodsOf_on_", [smalltalk.send(aClass, "_class", []), stream]);})]);
463
479
  return self;},
@@ -473,7 +489,7 @@ smalltalk.addMethod(
473
489
  smalltalk.method({
474
490
  selector: "exportDefinitionOf:on:",
475
491
  category: 'private',
476
- fn: function (aClass, aStream){
492
+ fn: function (aClass, aStream) {
477
493
  var self=this;
478
494
  (function($rec){smalltalk.send($rec, "_nextPutAll_", ["smalltalk.addClass("]);smalltalk.send($rec, "_nextPutAll_", [smalltalk.send(smalltalk.send("'", "__comma", [smalltalk.send(self, "_classNameFor_", [aClass])]), "__comma", ["', "])]);smalltalk.send($rec, "_nextPutAll_", [smalltalk.send("smalltalk.", "__comma", [smalltalk.send(self, "_classNameFor_", [smalltalk.send(aClass, "_superclass", [])])])]);return smalltalk.send($rec, "_nextPutAll_", [", ["]);})(aStream);
479
495
  smalltalk.send(smalltalk.send(aClass, "_instanceVariableNames", []), "_do_separatedBy_", [(function(each){return smalltalk.send(aStream, "_nextPutAll_", [smalltalk.send(smalltalk.send("'", "__comma", [each]), "__comma", ["'"])]);}), (function(){return smalltalk.send(aStream, "_nextPutAll_", [", "]);})]);
@@ -493,7 +509,7 @@ smalltalk.addMethod(
493
509
  smalltalk.method({
494
510
  selector: "exportMetaDefinitionOf:on:",
495
511
  category: 'private',
496
- fn: function (aClass, aStream){
512
+ fn: function (aClass, aStream) {
497
513
  var self=this;
498
514
  ((($receiver = smalltalk.send(smalltalk.send(smalltalk.send(aClass, "_class", []), "_instanceVariableNames", []), "_isEmpty", [])).klass === smalltalk.Boolean) ? (! $receiver ? (function(){(function($rec){smalltalk.send($rec, "_nextPutAll_", [smalltalk.send("smalltalk.", "__comma", [smalltalk.send(self, "_classNameFor_", [smalltalk.send(aClass, "_class", [])])])]);return smalltalk.send($rec, "_nextPutAll_", [".iVarNames = ["]);})(aStream);smalltalk.send(smalltalk.send(smalltalk.send(aClass, "_class", []), "_instanceVariableNames", []), "_do_separatedBy_", [(function(each){return smalltalk.send(aStream, "_nextPutAll_", [smalltalk.send(smalltalk.send("'", "__comma", [each]), "__comma", ["'"])]);}), (function(){return smalltalk.send(aStream, "_nextPutAll_", [","]);})]);return smalltalk.send(aStream, "_nextPutAll_", [smalltalk.send("];", "__comma", [smalltalk.send((smalltalk.String || String), "_lf", [])])]);})() : nil) : smalltalk.send($receiver, "_ifFalse_", [(function(){(function($rec){smalltalk.send($rec, "_nextPutAll_", [smalltalk.send("smalltalk.", "__comma", [smalltalk.send(self, "_classNameFor_", [smalltalk.send(aClass, "_class", [])])])]);return smalltalk.send($rec, "_nextPutAll_", [".iVarNames = ["]);})(aStream);smalltalk.send(smalltalk.send(smalltalk.send(aClass, "_class", []), "_instanceVariableNames", []), "_do_separatedBy_", [(function(each){return smalltalk.send(aStream, "_nextPutAll_", [smalltalk.send(smalltalk.send("'", "__comma", [each]), "__comma", ["'"])]);}), (function(){return smalltalk.send(aStream, "_nextPutAll_", [","]);})]);return smalltalk.send(aStream, "_nextPutAll_", [smalltalk.send("];", "__comma", [smalltalk.send((smalltalk.String || String), "_lf", [])])]);})]));
499
515
  return self;},
@@ -509,7 +525,7 @@ smalltalk.addMethod(
509
525
  smalltalk.method({
510
526
  selector: "exportMethod:of:on:",
511
527
  category: 'private',
512
- fn: function (aMethod, aClass, aStream){
528
+ fn: function (aMethod, aClass, aStream) {
513
529
  var self=this;
514
530
  (function($rec){smalltalk.send($rec, "_nextPutAll_", ["smalltalk.addMethod("]);smalltalk.send($rec, "_lf", []);smalltalk.send($rec, "_nextPutAll_", [smalltalk.send(smalltalk.send(smalltalk.send(smalltalk.send(aMethod, "_selector", []), "_asSelector", []), "_asJavascript", []), "__comma", [","])]);smalltalk.send($rec, "_lf", []);smalltalk.send($rec, "_nextPutAll_", ["smalltalk.method({"]);smalltalk.send($rec, "_lf", []);smalltalk.send($rec, "_nextPutAll_", [smalltalk.send(smalltalk.send("selector: ", "__comma", [smalltalk.send(smalltalk.send(aMethod, "_selector", []), "_asJavascript", [])]), "__comma", [","])]);smalltalk.send($rec, "_lf", []);smalltalk.send($rec, "_nextPutAll_", [smalltalk.send(smalltalk.send("category: '", "__comma", [smalltalk.send(aMethod, "_category", [])]), "__comma", ["',"])]);smalltalk.send($rec, "_lf", []);smalltalk.send($rec, "_nextPutAll_", [smalltalk.send(smalltalk.send("fn: ", "__comma", [smalltalk.send(smalltalk.send(aMethod, "_fn", []), "_compiledSource", [])]), "__comma", [","])]);smalltalk.send($rec, "_lf", []);smalltalk.send($rec, "_nextPutAll_", [smalltalk.send(smalltalk.send("args: ", "__comma", [smalltalk.send(smalltalk.send(aMethod, "_arguments", []), "_asJavascript", [])]), "__comma", [","])]);smalltalk.send($rec, "_lf", []);smalltalk.send($rec, "_nextPutAll_", [smalltalk.send(smalltalk.send("source: ", "__comma", [smalltalk.send(smalltalk.send(aMethod, "_source", []), "_asJavascript", [])]), "__comma", [","])]);smalltalk.send($rec, "_lf", []);smalltalk.send($rec, "_nextPutAll_", [smalltalk.send(smalltalk.send("messageSends: ", "__comma", [smalltalk.send(smalltalk.send(aMethod, "_messageSends", []), "_asJavascript", [])]), "__comma", [","])]);smalltalk.send($rec, "_lf", []);return smalltalk.send($rec, "_nextPutAll_", [smalltalk.send("referencedClasses: ", "__comma", [smalltalk.send(smalltalk.send(aMethod, "_referencedClasses", []), "_asJavascript", [])])]);})(aStream);
515
531
  (function($rec){smalltalk.send($rec, "_lf", []);smalltalk.send($rec, "_nextPutAll_", ["}),"]);smalltalk.send($rec, "_lf", []);smalltalk.send($rec, "_nextPutAll_", [smalltalk.send("smalltalk.", "__comma", [smalltalk.send(self, "_classNameFor_", [aClass])])]);smalltalk.send($rec, "_nextPutAll_", [");"]);smalltalk.send($rec, "_lf", []);return smalltalk.send($rec, "_lf", []);})(aStream);
@@ -526,7 +542,7 @@ smalltalk.addMethod(
526
542
  smalltalk.method({
527
543
  selector: "exportMethodsOf:on:",
528
544
  category: 'private',
529
- fn: function (aClass, aStream){
545
+ fn: function (aClass, aStream) {
530
546
  var self=this;
531
547
  smalltalk.send(smalltalk.send(smalltalk.send(smalltalk.send(aClass, "_methodDictionary", []), "_values", []), "_sorted_", [(function(a, b){return ((($receiver = smalltalk.send(a, "_selector", [])).klass === smalltalk.Number) ? $receiver <=smalltalk.send(b, "_selector", []) : smalltalk.send($receiver, "__lt_eq", [smalltalk.send(b, "_selector", [])]));})]), "_do_", [(function(each){return ((($receiver = smalltalk.send(smalltalk.send(each, "_category", []), "_match_", ["^\x5c*"])).klass === smalltalk.Boolean) ? (! $receiver ? (function(){return smalltalk.send(self, "_exportMethod_of_on_", [each, aClass, aStream]);})() : nil) : smalltalk.send($receiver, "_ifFalse_", [(function(){return smalltalk.send(self, "_exportMethod_of_on_", [each, aClass, aStream]);})]));})]);
532
548
  smalltalk.send(aStream, "_lf", []);
@@ -543,7 +559,7 @@ smalltalk.addMethod(
543
559
  smalltalk.method({
544
560
  selector: "exportPackage:",
545
561
  category: 'fileOut',
546
- fn: function (packageName){
562
+ fn: function (packageName) {
547
563
  var self=this;
548
564
  var package=nil;
549
565
  return smalltalk.send((smalltalk.String || String), "_streamContents_", [(function(stream){(package=smalltalk.send(smalltalk.send((smalltalk.Smalltalk || Smalltalk), "_current", []), "_packageAt_", [packageName]));smalltalk.send(self, "_exportPackageDefinitionOf_on_", [package, stream]);smalltalk.send(smalltalk.send(smalltalk.send(package, "_sortedClasses", []), "_asSet", []), "_do_", [(function(each){return smalltalk.send(stream, "_nextPutAll_", [smalltalk.send(self, "_exportClass_", [each])]);})]);return smalltalk.send(self, "_exportPackageExtensionsOf_on_", [package, stream]);})]);
@@ -560,7 +576,7 @@ smalltalk.addMethod(
560
576
  smalltalk.method({
561
577
  selector: "exportPackageDefinitionOf:on:",
562
578
  category: 'private',
563
- fn: function (package, aStream){
579
+ fn: function (package, aStream) {
564
580
  var self=this;
565
581
  (function($rec){smalltalk.send($rec, "_nextPutAll_", ["smalltalk.addPackage("]);return smalltalk.send($rec, "_nextPutAll_", [smalltalk.send(smalltalk.send(smalltalk.send(smalltalk.send("'", "__comma", [smalltalk.send(package, "_name", [])]), "__comma", ["', "]), "__comma", [smalltalk.send(package, "_propertiesAsJSON", [])]), "__comma", [");"])]);})(aStream);
566
582
  smalltalk.send(aStream, "_lf", []);
@@ -577,7 +593,7 @@ smalltalk.addMethod(
577
593
  smalltalk.method({
578
594
  selector: "exportPackageExtensionsOf:on:",
579
595
  category: 'private',
580
- fn: function (package, aStream){
596
+ fn: function (package, aStream) {
581
597
  var self=this;
582
598
  var name=nil;
583
599
  (name=smalltalk.send(package, "_name", []));
@@ -598,7 +614,7 @@ smalltalk.addMethod(
598
614
  smalltalk.method({
599
615
  selector: "chunkEscape:",
600
616
  category: 'not yet classified',
601
- fn: function (aString){
617
+ fn: function (aString) {
602
618
  var self=this;
603
619
  return smalltalk.send(smalltalk.send(aString, "_replace_with_", ["!", "!!"]), "_trimBoth", []);
604
620
  return self;},
@@ -614,7 +630,7 @@ smalltalk.addMethod(
614
630
  smalltalk.method({
615
631
  selector: "classNameFor:",
616
632
  category: 'not yet classified',
617
- fn: function (aClass){
633
+ fn: function (aClass) {
618
634
  var self=this;
619
635
  return ((($receiver = smalltalk.send(aClass, "_isMetaclass", [])).klass === smalltalk.Boolean) ? ($receiver ? (function(){return smalltalk.send(smalltalk.send(smalltalk.send(aClass, "_instanceClass", []), "_name", []), "__comma", [" class"]);})() : (function(){return ((($receiver = smalltalk.send(aClass, "_isNil", [])).klass === smalltalk.Boolean) ? ($receiver ? (function(){return "nil";})() : (function(){return smalltalk.send(aClass, "_name", []);})()) : smalltalk.send($receiver, "_ifTrue_ifFalse_", [(function(){return "nil";}), (function(){return smalltalk.send(aClass, "_name", []);})]));})()) : smalltalk.send($receiver, "_ifTrue_ifFalse_", [(function(){return smalltalk.send(smalltalk.send(smalltalk.send(aClass, "_instanceClass", []), "_name", []), "__comma", [" class"]);}), (function(){return ((($receiver = smalltalk.send(aClass, "_isNil", [])).klass === smalltalk.Boolean) ? ($receiver ? (function(){return "nil";})() : (function(){return smalltalk.send(aClass, "_name", []);})()) : smalltalk.send($receiver, "_ifTrue_ifFalse_", [(function(){return "nil";}), (function(){return smalltalk.send(aClass, "_name", []);})]));})]));
620
636
  return self;},
@@ -630,7 +646,7 @@ smalltalk.addMethod(
630
646
  smalltalk.method({
631
647
  selector: "exportDefinitionOf:on:",
632
648
  category: 'not yet classified',
633
- fn: function (aClass, aStream){
649
+ fn: function (aClass, aStream) {
634
650
  var self=this;
635
651
  (function($rec){smalltalk.send($rec, "_nextPutAll_", [smalltalk.send(self, "_classNameFor_", [smalltalk.send(aClass, "_superclass", [])])]);smalltalk.send($rec, "_nextPutAll_", [smalltalk.send(" subclass: #", "__comma", [smalltalk.send(self, "_classNameFor_", [aClass])])]);smalltalk.send($rec, "_lf", []);return smalltalk.send($rec, "_nextPutAll_", ["\x09instanceVariableNames: '"]);})(aStream);
636
652
  smalltalk.send(smalltalk.send(aClass, "_instanceVariableNames", []), "_do_separatedBy_", [(function(each){return smalltalk.send(aStream, "_nextPutAll_", [each]);}), (function(){return smalltalk.send(aStream, "_nextPutAll_", [" "]);})]);
@@ -650,7 +666,7 @@ smalltalk.addMethod(
650
666
  smalltalk.method({
651
667
  selector: "exportMetaDefinitionOf:on:",
652
668
  category: 'not yet classified',
653
- fn: function (aClass, aStream){
669
+ fn: function (aClass, aStream) {
654
670
  var self=this;
655
671
  ((($receiver = smalltalk.send(smalltalk.send(smalltalk.send(aClass, "_class", []), "_instanceVariableNames", []), "_isEmpty", [])).klass === smalltalk.Boolean) ? (! $receiver ? (function(){(function($rec){smalltalk.send($rec, "_nextPutAll_", [smalltalk.send(self, "_classNameFor_", [smalltalk.send(aClass, "_class", [])])]);return smalltalk.send($rec, "_nextPutAll_", [" instanceVariableNames: '"]);})(aStream);smalltalk.send(smalltalk.send(smalltalk.send(aClass, "_class", []), "_instanceVariableNames", []), "_do_separatedBy_", [(function(each){return smalltalk.send(aStream, "_nextPutAll_", [each]);}), (function(){return smalltalk.send(aStream, "_nextPutAll_", [" "]);})]);return (function($rec){smalltalk.send($rec, "_nextPutAll_", ["'!"]);smalltalk.send($rec, "_lf", []);return smalltalk.send($rec, "_lf", []);})(aStream);})() : nil) : smalltalk.send($receiver, "_ifFalse_", [(function(){(function($rec){smalltalk.send($rec, "_nextPutAll_", [smalltalk.send(self, "_classNameFor_", [smalltalk.send(aClass, "_class", [])])]);return smalltalk.send($rec, "_nextPutAll_", [" instanceVariableNames: '"]);})(aStream);smalltalk.send(smalltalk.send(smalltalk.send(aClass, "_class", []), "_instanceVariableNames", []), "_do_separatedBy_", [(function(each){return smalltalk.send(aStream, "_nextPutAll_", [each]);}), (function(){return smalltalk.send(aStream, "_nextPutAll_", [" "]);})]);return (function($rec){smalltalk.send($rec, "_nextPutAll_", ["'!"]);smalltalk.send($rec, "_lf", []);return smalltalk.send($rec, "_lf", []);})(aStream);})]));
656
672
  return self;},
@@ -666,7 +682,7 @@ smalltalk.addMethod(
666
682
  smalltalk.method({
667
683
  selector: "exportMethod:of:on:",
668
684
  category: 'not yet classified',
669
- fn: function (aMethod, aClass, aStream){
685
+ fn: function (aMethod, aClass, aStream) {
670
686
  var self=this;
671
687
  (function($rec){smalltalk.send($rec, "_lf", []);smalltalk.send($rec, "_lf", []);smalltalk.send($rec, "_nextPutAll_", [smalltalk.send(self, "_chunkEscape_", [smalltalk.send(aMethod, "_source", [])])]);smalltalk.send($rec, "_lf", []);return smalltalk.send($rec, "_nextPutAll_", ["!"]);})(aStream);
672
688
  return self;},
@@ -682,7 +698,7 @@ smalltalk.addMethod(
682
698
  smalltalk.method({
683
699
  selector: "exportMethods:category:of:on:",
684
700
  category: 'not yet classified',
685
- fn: function (methods, category, aClass, aStream){
701
+ fn: function (methods, category, aClass, aStream) {
686
702
  var self=this;
687
703
  (function($rec){smalltalk.send($rec, "_nextPutAll_", [smalltalk.send("!", "__comma", [smalltalk.send(self, "_classNameFor_", [aClass])])]);return smalltalk.send($rec, "_nextPutAll_", [smalltalk.send(smalltalk.send(" methodsFor: '", "__comma", [category]), "__comma", ["'!"])]);})(aStream);
688
704
  smalltalk.send(smalltalk.send(methods, "_sorted_", [(function(a, b){return ((($receiver = smalltalk.send(a, "_selector", [])).klass === smalltalk.Number) ? $receiver <=smalltalk.send(b, "_selector", []) : smalltalk.send($receiver, "__lt_eq", [smalltalk.send(b, "_selector", [])]));})]), "_do_", [(function(each){return smalltalk.send(self, "_exportMethod_of_on_", [each, aClass, aStream]);})]);
@@ -700,7 +716,7 @@ smalltalk.addMethod(
700
716
  smalltalk.method({
701
717
  selector: "exportMethodsOf:on:",
702
718
  category: 'not yet classified',
703
- fn: function (aClass, aStream){
719
+ fn: function (aClass, aStream) {
704
720
  var self=this;
705
721
  var map=nil;
706
722
  (map=smalltalk.send((smalltalk.Dictionary || Dictionary), "_new", []));
@@ -720,7 +736,7 @@ smalltalk.addMethod(
720
736
  smalltalk.method({
721
737
  selector: "exportPackageDefinitionOf:on:",
722
738
  category: 'not yet classified',
723
- fn: function (package, aStream){
739
+ fn: function (package, aStream) {
724
740
  var self=this;
725
741
  (function($rec){smalltalk.send($rec, "_nextPutAll_", [smalltalk.send(smalltalk.send(smalltalk.send(smalltalk.send("Smalltalk current createPackage: '", "__comma", [smalltalk.send(package, "_name", [])]), "__comma", ["' properties: "]), "__comma", [smalltalk.send(smalltalk.send(package, "_properties", []), "_storeString", [])]), "__comma", ["!"])]);return smalltalk.send($rec, "_lf", []);})(aStream);
726
742
  return self;},
@@ -736,7 +752,7 @@ smalltalk.addMethod(
736
752
  smalltalk.method({
737
753
  selector: "exportPackageExtensionsOf:on:",
738
754
  category: 'not yet classified',
739
- fn: function (package, aStream){
755
+ fn: function (package, aStream) {
740
756
  var self=this;
741
757
  var name=nil;
742
758
  var map=nil;
@@ -759,7 +775,7 @@ smalltalk.addMethod(
759
775
  smalltalk.method({
760
776
  selector: "exportDefinitionOf:on:",
761
777
  category: 'private',
762
- fn: function (aClass, aStream){
778
+ fn: function (aClass, aStream) {
763
779
  var self=this;
764
780
  (function($rec){smalltalk.send($rec, "_nextPutAll_", ["smalltalk.addClass("]);smalltalk.send($rec, "_nextPutAll_", [smalltalk.send(smalltalk.send("'", "__comma", [smalltalk.send(self, "_classNameFor_", [aClass])]), "__comma", ["', "])]);smalltalk.send($rec, "_nextPutAll_", [smalltalk.send("smalltalk.", "__comma", [smalltalk.send(self, "_classNameFor_", [smalltalk.send(aClass, "_superclass", [])])])]);return smalltalk.send($rec, "_nextPutAll_", [", ["]);})(aStream);
765
781
  smalltalk.send(smalltalk.send(aClass, "_instanceVariableNames", []), "_do_separatedBy_", [(function(each){return smalltalk.send(aStream, "_nextPutAll_", [smalltalk.send(smalltalk.send("'", "__comma", [each]), "__comma", ["'"])]);}), (function(){return smalltalk.send(aStream, "_nextPutAll_", [", "]);})]);
@@ -778,7 +794,7 @@ smalltalk.addMethod(
778
794
  smalltalk.method({
779
795
  selector: "exportMethod:of:on:",
780
796
  category: 'private',
781
- fn: function (aMethod, aClass, aStream){
797
+ fn: function (aMethod, aClass, aStream) {
782
798
  var self=this;
783
799
  (function($rec){smalltalk.send($rec, "_nextPutAll_", ["smalltalk.addMethod("]);smalltalk.send($rec, "_lf", []);smalltalk.send($rec, "_nextPutAll_", [smalltalk.send(smalltalk.send(smalltalk.send(smalltalk.send(aMethod, "_selector", []), "_asSelector", []), "_asJavascript", []), "__comma", [","])]);smalltalk.send($rec, "_lf", []);smalltalk.send($rec, "_nextPutAll_", ["smalltalk.method({"]);smalltalk.send($rec, "_lf", []);smalltalk.send($rec, "_nextPutAll_", [smalltalk.send(smalltalk.send("selector: ", "__comma", [smalltalk.send(smalltalk.send(aMethod, "_selector", []), "_asJavascript", [])]), "__comma", [","])]);smalltalk.send($rec, "_lf", []);smalltalk.send($rec, "_nextPutAll_", [smalltalk.send("fn: ", "__comma", [smalltalk.send(smalltalk.send(aMethod, "_fn", []), "_compiledSource", [])])]);smalltalk.send($rec, "_lf", []);smalltalk.send($rec, "_nextPutAll_", ["}),"]);smalltalk.send($rec, "_lf", []);smalltalk.send($rec, "_nextPutAll_", [smalltalk.send("smalltalk.", "__comma", [smalltalk.send(self, "_classNameFor_", [aClass])])]);smalltalk.send($rec, "_nextPutAll_", [");"]);smalltalk.send($rec, "_lf", []);return smalltalk.send($rec, "_lf", []);})(aStream);
784
800
  return self;},
@@ -797,7 +813,7 @@ smalltalk.addMethod(
797
813
  smalltalk.method({
798
814
  selector: "import:",
799
815
  category: 'fileIn',
800
- fn: function (aStream){
816
+ fn: function (aStream) {
801
817
  var self=this;
802
818
  var chunk=nil;
803
819
  var result=nil;
@@ -822,7 +838,7 @@ smalltalk.addMethod(
822
838
  smalltalk.method({
823
839
  selector: "accept:",
824
840
  category: 'visiting',
825
- fn: function (aVisitor){
841
+ fn: function (aVisitor) {
826
842
  var self=this;
827
843
  smalltalk.send(aVisitor, "_visitNode_", [self]);
828
844
  return self;},
@@ -838,7 +854,7 @@ smalltalk.addMethod(
838
854
  smalltalk.method({
839
855
  selector: "addNode:",
840
856
  category: 'accessing',
841
- fn: function (aNode){
857
+ fn: function (aNode) {
842
858
  var self=this;
843
859
  smalltalk.send(smalltalk.send(self, "_nodes", []), "_add_", [aNode]);
844
860
  return self;},
@@ -854,7 +870,7 @@ smalltalk.addMethod(
854
870
  smalltalk.method({
855
871
  selector: "isBlockNode",
856
872
  category: 'testing',
857
- fn: function (){
873
+ fn: function () {
858
874
  var self=this;
859
875
  return false;
860
876
  return self;},
@@ -870,7 +886,7 @@ smalltalk.addMethod(
870
886
  smalltalk.method({
871
887
  selector: "isBlockSequenceNode",
872
888
  category: 'testing',
873
- fn: function (){
889
+ fn: function () {
874
890
  var self=this;
875
891
  return false;
876
892
  return self;},
@@ -886,7 +902,7 @@ smalltalk.addMethod(
886
902
  smalltalk.method({
887
903
  selector: "isValueNode",
888
904
  category: 'testing',
889
- fn: function (){
905
+ fn: function () {
890
906
  var self=this;
891
907
  return false;
892
908
  return self;},
@@ -902,7 +918,7 @@ smalltalk.addMethod(
902
918
  smalltalk.method({
903
919
  selector: "nodes",
904
920
  category: 'accessing',
905
- fn: function (){
921
+ fn: function () {
906
922
  var self=this;
907
923
  return (($receiver = self['@nodes']) == nil || $receiver == undefined) ? (function(){return (self['@nodes']=smalltalk.send((smalltalk.Array || Array), "_new", []));})() : $receiver;
908
924
  return self;},
@@ -918,7 +934,7 @@ smalltalk.addMethod(
918
934
  smalltalk.method({
919
935
  selector: "nodes:",
920
936
  category: 'building',
921
- fn: function (aCollection){
937
+ fn: function (aCollection) {
922
938
  var self=this;
923
939
  (self['@nodes']=aCollection);
924
940
  return self;},
@@ -937,7 +953,7 @@ smalltalk.addMethod(
937
953
  smalltalk.method({
938
954
  selector: "accept:",
939
955
  category: 'visiting',
940
- fn: function (aVisitor){
956
+ fn: function (aVisitor) {
941
957
  var self=this;
942
958
  smalltalk.send(aVisitor, "_visitAssignmentNode_", [self]);
943
959
  return self;},
@@ -953,7 +969,7 @@ smalltalk.addMethod(
953
969
  smalltalk.method({
954
970
  selector: "left",
955
971
  category: 'accessing',
956
- fn: function (){
972
+ fn: function () {
957
973
  var self=this;
958
974
  return self['@left'];
959
975
  return self;},
@@ -969,7 +985,7 @@ smalltalk.addMethod(
969
985
  smalltalk.method({
970
986
  selector: "left:",
971
987
  category: 'accessing',
972
- fn: function (aNode){
988
+ fn: function (aNode) {
973
989
  var self=this;
974
990
  (self['@left']=aNode);
975
991
  smalltalk.send(self['@left'], "_assigned_", [true]);
@@ -986,7 +1002,7 @@ smalltalk.addMethod(
986
1002
  smalltalk.method({
987
1003
  selector: "right",
988
1004
  category: 'accessing',
989
- fn: function (){
1005
+ fn: function () {
990
1006
  var self=this;
991
1007
  return self['@right'];
992
1008
  return self;},
@@ -1002,7 +1018,7 @@ smalltalk.addMethod(
1002
1018
  smalltalk.method({
1003
1019
  selector: "right:",
1004
1020
  category: 'accessing',
1005
- fn: function (aNode){
1021
+ fn: function (aNode) {
1006
1022
  var self=this;
1007
1023
  (self['@right']=aNode);
1008
1024
  return self;},
@@ -1021,7 +1037,7 @@ smalltalk.addMethod(
1021
1037
  smalltalk.method({
1022
1038
  selector: "accept:",
1023
1039
  category: 'visiting',
1024
- fn: function (aVisitor){
1040
+ fn: function (aVisitor) {
1025
1041
  var self=this;
1026
1042
  smalltalk.send(aVisitor, "_visitBlockNode_", [self]);
1027
1043
  return self;},
@@ -1037,7 +1053,7 @@ smalltalk.addMethod(
1037
1053
  smalltalk.method({
1038
1054
  selector: "inlined",
1039
1055
  category: 'accessing',
1040
- fn: function (){
1056
+ fn: function () {
1041
1057
  var self=this;
1042
1058
  return (($receiver = self['@inlined']) == nil || $receiver == undefined) ? (function(){return false;})() : $receiver;
1043
1059
  return self;},
@@ -1053,7 +1069,7 @@ smalltalk.addMethod(
1053
1069
  smalltalk.method({
1054
1070
  selector: "inlined:",
1055
1071
  category: 'accessing',
1056
- fn: function (aBoolean){
1072
+ fn: function (aBoolean) {
1057
1073
  var self=this;
1058
1074
  (self['@inlined']=aBoolean);
1059
1075
  return self;},
@@ -1069,7 +1085,7 @@ smalltalk.addMethod(
1069
1085
  smalltalk.method({
1070
1086
  selector: "isBlockNode",
1071
1087
  category: 'testing',
1072
- fn: function (){
1088
+ fn: function () {
1073
1089
  var self=this;
1074
1090
  return true;
1075
1091
  return self;},
@@ -1085,7 +1101,7 @@ smalltalk.addMethod(
1085
1101
  smalltalk.method({
1086
1102
  selector: "parameters",
1087
1103
  category: 'accessing',
1088
- fn: function (){
1104
+ fn: function () {
1089
1105
  var self=this;
1090
1106
  return (($receiver = self['@parameters']) == nil || $receiver == undefined) ? (function(){return (self['@parameters']=smalltalk.send((smalltalk.Array || Array), "_new", []));})() : $receiver;
1091
1107
  return self;},
@@ -1101,7 +1117,7 @@ smalltalk.addMethod(
1101
1117
  smalltalk.method({
1102
1118
  selector: "parameters:",
1103
1119
  category: 'accessing',
1104
- fn: function (aCollection){
1120
+ fn: function (aCollection) {
1105
1121
  var self=this;
1106
1122
  (self['@parameters']=aCollection);
1107
1123
  return self;},
@@ -1120,7 +1136,7 @@ smalltalk.addMethod(
1120
1136
  smalltalk.method({
1121
1137
  selector: "accept:",
1122
1138
  category: 'visiting',
1123
- fn: function (aVisitor){
1139
+ fn: function (aVisitor) {
1124
1140
  var self=this;
1125
1141
  smalltalk.send(aVisitor, "_visitCascadeNode_", [self]);
1126
1142
  return self;},
@@ -1136,7 +1152,7 @@ smalltalk.addMethod(
1136
1152
  smalltalk.method({
1137
1153
  selector: "receiver",
1138
1154
  category: 'accessing',
1139
- fn: function (){
1155
+ fn: function () {
1140
1156
  var self=this;
1141
1157
  return self['@receiver'];
1142
1158
  return self;},
@@ -1152,7 +1168,7 @@ smalltalk.addMethod(
1152
1168
  smalltalk.method({
1153
1169
  selector: "receiver:",
1154
1170
  category: 'accessing',
1155
- fn: function (aNode){
1171
+ fn: function (aNode) {
1156
1172
  var self=this;
1157
1173
  (self['@receiver']=aNode);
1158
1174
  return self;},
@@ -1171,7 +1187,7 @@ smalltalk.addMethod(
1171
1187
  smalltalk.method({
1172
1188
  selector: "accept:",
1173
1189
  category: 'visiting',
1174
- fn: function (aVisitor){
1190
+ fn: function (aVisitor) {
1175
1191
  var self=this;
1176
1192
  smalltalk.send(aVisitor, "_visitDynamicArrayNode_", [self]);
1177
1193
  return self;},
@@ -1190,7 +1206,7 @@ smalltalk.addMethod(
1190
1206
  smalltalk.method({
1191
1207
  selector: "accept:",
1192
1208
  category: 'visiting',
1193
- fn: function (aVisitor){
1209
+ fn: function (aVisitor) {
1194
1210
  var self=this;
1195
1211
  smalltalk.send(aVisitor, "_visitDynamicDictionaryNode_", [self]);
1196
1212
  return self;},
@@ -1209,7 +1225,7 @@ smalltalk.addMethod(
1209
1225
  smalltalk.method({
1210
1226
  selector: "accept:",
1211
1227
  category: 'visiting',
1212
- fn: function (aVisitor){
1228
+ fn: function (aVisitor) {
1213
1229
  var self=this;
1214
1230
  smalltalk.send(aVisitor, "_visitJSStatementNode_", [self]);
1215
1231
  return self;},
@@ -1225,7 +1241,7 @@ smalltalk.addMethod(
1225
1241
  smalltalk.method({
1226
1242
  selector: "source",
1227
1243
  category: 'accessing',
1228
- fn: function (){
1244
+ fn: function () {
1229
1245
  var self=this;
1230
1246
  return (($receiver = self['@source']) == nil || $receiver == undefined) ? (function(){return "";})() : $receiver;
1231
1247
  return self;},
@@ -1241,7 +1257,7 @@ smalltalk.addMethod(
1241
1257
  smalltalk.method({
1242
1258
  selector: "source:",
1243
1259
  category: 'accessing',
1244
- fn: function (aString){
1260
+ fn: function (aString) {
1245
1261
  var self=this;
1246
1262
  (self['@source']=aString);
1247
1263
  return self;},
@@ -1260,7 +1276,7 @@ smalltalk.addMethod(
1260
1276
  smalltalk.method({
1261
1277
  selector: "accept:",
1262
1278
  category: 'visiting',
1263
- fn: function (aVisitor){
1279
+ fn: function (aVisitor) {
1264
1280
  var self=this;
1265
1281
  smalltalk.send(aVisitor, "_visitMethodNode_", [self]);
1266
1282
  return self;},
@@ -1276,7 +1292,7 @@ smalltalk.addMethod(
1276
1292
  smalltalk.method({
1277
1293
  selector: "arguments",
1278
1294
  category: 'accessing',
1279
- fn: function (){
1295
+ fn: function () {
1280
1296
  var self=this;
1281
1297
  return (($receiver = self['@arguments']) == nil || $receiver == undefined) ? (function(){return [];})() : $receiver;
1282
1298
  return self;},
@@ -1292,7 +1308,7 @@ smalltalk.addMethod(
1292
1308
  smalltalk.method({
1293
1309
  selector: "arguments:",
1294
1310
  category: 'accessing',
1295
- fn: function (aCollection){
1311
+ fn: function (aCollection) {
1296
1312
  var self=this;
1297
1313
  (self['@arguments']=aCollection);
1298
1314
  return self;},
@@ -1308,7 +1324,7 @@ smalltalk.addMethod(
1308
1324
  smalltalk.method({
1309
1325
  selector: "selector",
1310
1326
  category: 'accessing',
1311
- fn: function (){
1327
+ fn: function () {
1312
1328
  var self=this;
1313
1329
  return self['@selector'];
1314
1330
  return self;},
@@ -1324,7 +1340,7 @@ smalltalk.addMethod(
1324
1340
  smalltalk.method({
1325
1341
  selector: "selector:",
1326
1342
  category: 'accessing',
1327
- fn: function (aString){
1343
+ fn: function (aString) {
1328
1344
  var self=this;
1329
1345
  (self['@selector']=aString);
1330
1346
  return self;},
@@ -1340,7 +1356,7 @@ smalltalk.addMethod(
1340
1356
  smalltalk.method({
1341
1357
  selector: "source",
1342
1358
  category: 'accessing',
1343
- fn: function (){
1359
+ fn: function () {
1344
1360
  var self=this;
1345
1361
  return self['@source'];
1346
1362
  return self;},
@@ -1356,7 +1372,7 @@ smalltalk.addMethod(
1356
1372
  smalltalk.method({
1357
1373
  selector: "source:",
1358
1374
  category: 'accessing',
1359
- fn: function (aString){
1375
+ fn: function (aString) {
1360
1376
  var self=this;
1361
1377
  (self['@source']=aString);
1362
1378
  return self;},
@@ -1375,7 +1391,7 @@ smalltalk.addMethod(
1375
1391
  smalltalk.method({
1376
1392
  selector: "accept:",
1377
1393
  category: 'visiting',
1378
- fn: function (aVisitor){
1394
+ fn: function (aVisitor) {
1379
1395
  var self=this;
1380
1396
  smalltalk.send(aVisitor, "_visitReturnNode_", [self]);
1381
1397
  return self;},
@@ -1394,7 +1410,7 @@ smalltalk.addMethod(
1394
1410
  smalltalk.method({
1395
1411
  selector: "accept:",
1396
1412
  category: 'visiting',
1397
- fn: function (aVisitor){
1413
+ fn: function (aVisitor) {
1398
1414
  var self=this;
1399
1415
  smalltalk.send(aVisitor, "_visitSendNode_", [self]);
1400
1416
  return self;},
@@ -1410,7 +1426,7 @@ smalltalk.addMethod(
1410
1426
  smalltalk.method({
1411
1427
  selector: "arguments",
1412
1428
  category: 'accessing',
1413
- fn: function (){
1429
+ fn: function () {
1414
1430
  var self=this;
1415
1431
  return (($receiver = self['@arguments']) == nil || $receiver == undefined) ? (function(){return (self['@arguments']=[]);})() : $receiver;
1416
1432
  return self;},
@@ -1426,7 +1442,7 @@ smalltalk.addMethod(
1426
1442
  smalltalk.method({
1427
1443
  selector: "arguments:",
1428
1444
  category: 'accessing',
1429
- fn: function (aCollection){
1445
+ fn: function (aCollection) {
1430
1446
  var self=this;
1431
1447
  (self['@arguments']=aCollection);
1432
1448
  return self;},
@@ -1442,7 +1458,7 @@ smalltalk.addMethod(
1442
1458
  smalltalk.method({
1443
1459
  selector: "cascadeNodeWithMessages:",
1444
1460
  category: 'accessing',
1445
- fn: function (aCollection){
1461
+ fn: function (aCollection) {
1446
1462
  var self=this;
1447
1463
  var first=nil;
1448
1464
  (first=(function($rec){smalltalk.send($rec, "_selector_", [smalltalk.send(self, "_selector", [])]);smalltalk.send($rec, "_arguments_", [smalltalk.send(self, "_arguments", [])]);return smalltalk.send($rec, "_yourself", []);})(smalltalk.send((smalltalk.SendNode || SendNode), "_new", [])));
@@ -1460,7 +1476,7 @@ smalltalk.addMethod(
1460
1476
  smalltalk.method({
1461
1477
  selector: "receiver",
1462
1478
  category: 'accessing',
1463
- fn: function (){
1479
+ fn: function () {
1464
1480
  var self=this;
1465
1481
  return self['@receiver'];
1466
1482
  return self;},
@@ -1476,7 +1492,7 @@ smalltalk.addMethod(
1476
1492
  smalltalk.method({
1477
1493
  selector: "receiver:",
1478
1494
  category: 'accessing',
1479
- fn: function (aNode){
1495
+ fn: function (aNode) {
1480
1496
  var self=this;
1481
1497
  (self['@receiver']=aNode);
1482
1498
  return self;},
@@ -1492,7 +1508,7 @@ smalltalk.addMethod(
1492
1508
  smalltalk.method({
1493
1509
  selector: "selector",
1494
1510
  category: 'accessing',
1495
- fn: function (){
1511
+ fn: function () {
1496
1512
  var self=this;
1497
1513
  return self['@selector'];
1498
1514
  return self;},
@@ -1508,7 +1524,7 @@ smalltalk.addMethod(
1508
1524
  smalltalk.method({
1509
1525
  selector: "selector:",
1510
1526
  category: 'accessing',
1511
- fn: function (aString){
1527
+ fn: function (aString) {
1512
1528
  var self=this;
1513
1529
  (self['@selector']=aString);
1514
1530
  return self;},
@@ -1524,7 +1540,7 @@ smalltalk.addMethod(
1524
1540
  smalltalk.method({
1525
1541
  selector: "valueForReceiver:",
1526
1542
  category: 'accessing',
1527
- fn: function (anObject){
1543
+ fn: function (anObject) {
1528
1544
  var self=this;
1529
1545
  return (function($rec){smalltalk.send($rec, "_receiver_", [(($receiver = smalltalk.send(self, "_receiver", [])) == nil || $receiver == undefined) ? (function(){return anObject;})() : (function(){return smalltalk.send(smalltalk.send(self, "_receiver", []), "_valueForReceiver_", [anObject]);})()]);smalltalk.send($rec, "_selector_", [smalltalk.send(self, "_selector", [])]);smalltalk.send($rec, "_arguments_", [smalltalk.send(self, "_arguments", [])]);return smalltalk.send($rec, "_yourself", []);})(smalltalk.send((smalltalk.SendNode || SendNode), "_new", []));
1530
1546
  return self;},
@@ -1543,7 +1559,7 @@ smalltalk.addMethod(
1543
1559
  smalltalk.method({
1544
1560
  selector: "accept:",
1545
1561
  category: 'visiting',
1546
- fn: function (aVisitor){
1562
+ fn: function (aVisitor) {
1547
1563
  var self=this;
1548
1564
  smalltalk.send(aVisitor, "_visitSequenceNode_", [self]);
1549
1565
  return self;},
@@ -1559,7 +1575,7 @@ smalltalk.addMethod(
1559
1575
  smalltalk.method({
1560
1576
  selector: "asBlockSequenceNode",
1561
1577
  category: 'testing',
1562
- fn: function (){
1578
+ fn: function () {
1563
1579
  var self=this;
1564
1580
  return (function($rec){smalltalk.send($rec, "_nodes_", [smalltalk.send(self, "_nodes", [])]);smalltalk.send($rec, "_temps_", [smalltalk.send(self, "_temps", [])]);return smalltalk.send($rec, "_yourself", []);})(smalltalk.send((smalltalk.BlockSequenceNode || BlockSequenceNode), "_new", []));
1565
1581
  return self;},
@@ -1575,7 +1591,7 @@ smalltalk.addMethod(
1575
1591
  smalltalk.method({
1576
1592
  selector: "temps",
1577
1593
  category: 'accessing',
1578
- fn: function (){
1594
+ fn: function () {
1579
1595
  var self=this;
1580
1596
  return (($receiver = self['@temps']) == nil || $receiver == undefined) ? (function(){return [];})() : $receiver;
1581
1597
  return self;},
@@ -1591,7 +1607,7 @@ smalltalk.addMethod(
1591
1607
  smalltalk.method({
1592
1608
  selector: "temps:",
1593
1609
  category: 'accessing',
1594
- fn: function (aCollection){
1610
+ fn: function (aCollection) {
1595
1611
  var self=this;
1596
1612
  (self['@temps']=aCollection);
1597
1613
  return self;},
@@ -1610,7 +1626,7 @@ smalltalk.addMethod(
1610
1626
  smalltalk.method({
1611
1627
  selector: "accept:",
1612
1628
  category: 'visiting',
1613
- fn: function (aVisitor){
1629
+ fn: function (aVisitor) {
1614
1630
  var self=this;
1615
1631
  smalltalk.send(aVisitor, "_visitBlockSequenceNode_", [self]);
1616
1632
  return self;},
@@ -1626,7 +1642,7 @@ smalltalk.addMethod(
1626
1642
  smalltalk.method({
1627
1643
  selector: "isBlockSequenceNode",
1628
1644
  category: 'testing',
1629
- fn: function (){
1645
+ fn: function () {
1630
1646
  var self=this;
1631
1647
  return true;
1632
1648
  return self;},
@@ -1645,7 +1661,7 @@ smalltalk.addMethod(
1645
1661
  smalltalk.method({
1646
1662
  selector: "accept:",
1647
1663
  category: 'visiting',
1648
- fn: function (aVisitor){
1664
+ fn: function (aVisitor) {
1649
1665
  var self=this;
1650
1666
  smalltalk.send(aVisitor, "_visitValueNode_", [self]);
1651
1667
  return self;},
@@ -1661,7 +1677,7 @@ smalltalk.addMethod(
1661
1677
  smalltalk.method({
1662
1678
  selector: "isValueNode",
1663
1679
  category: 'testing',
1664
- fn: function (){
1680
+ fn: function () {
1665
1681
  var self=this;
1666
1682
  return true;
1667
1683
  return self;},
@@ -1677,7 +1693,7 @@ smalltalk.addMethod(
1677
1693
  smalltalk.method({
1678
1694
  selector: "value",
1679
1695
  category: 'accessing',
1680
- fn: function (){
1696
+ fn: function () {
1681
1697
  var self=this;
1682
1698
  return self['@value'];
1683
1699
  return self;},
@@ -1693,7 +1709,7 @@ smalltalk.addMethod(
1693
1709
  smalltalk.method({
1694
1710
  selector: "value:",
1695
1711
  category: 'accessing',
1696
- fn: function (anObject){
1712
+ fn: function (anObject) {
1697
1713
  var self=this;
1698
1714
  (self['@value']=anObject);
1699
1715
  return self;},
@@ -1712,7 +1728,7 @@ smalltalk.addMethod(
1712
1728
  smalltalk.method({
1713
1729
  selector: "accept:",
1714
1730
  category: 'visiting',
1715
- fn: function (aVisitor){
1731
+ fn: function (aVisitor) {
1716
1732
  var self=this;
1717
1733
  smalltalk.send(aVisitor, "_visitVariableNode_", [self]);
1718
1734
  return self;},
@@ -1728,7 +1744,7 @@ smalltalk.addMethod(
1728
1744
  smalltalk.method({
1729
1745
  selector: "assigned",
1730
1746
  category: 'accessing',
1731
- fn: function (){
1747
+ fn: function () {
1732
1748
  var self=this;
1733
1749
  return (($receiver = self['@assigned']) == nil || $receiver == undefined) ? (function(){return false;})() : $receiver;
1734
1750
  return self;},
@@ -1744,7 +1760,7 @@ smalltalk.addMethod(
1744
1760
  smalltalk.method({
1745
1761
  selector: "assigned:",
1746
1762
  category: 'accessing',
1747
- fn: function (aBoolean){
1763
+ fn: function (aBoolean) {
1748
1764
  var self=this;
1749
1765
  (self['@assigned']=aBoolean);
1750
1766
  return self;},
@@ -1763,7 +1779,7 @@ smalltalk.addMethod(
1763
1779
  smalltalk.method({
1764
1780
  selector: "accept:",
1765
1781
  category: 'visiting',
1766
- fn: function (aVisitor){
1782
+ fn: function (aVisitor) {
1767
1783
  var self=this;
1768
1784
  smalltalk.send(aVisitor, "_visitClassReferenceNode_", [self]);
1769
1785
  return self;},
@@ -1776,13 +1792,64 @@ smalltalk.ClassReferenceNode);
1776
1792
 
1777
1793
 
1778
1794
 
1795
+ smalltalk.addClass('VerbatimNode', smalltalk.Node, ['value'], 'Compiler');
1796
+ smalltalk.addMethod(
1797
+ "_accept_",
1798
+ smalltalk.method({
1799
+ selector: "accept:",
1800
+ category: 'visiting',
1801
+ fn: function (aVisitor) {
1802
+ var self=this;
1803
+ smalltalk.send(aVisitor, "_visitVerbatimNode_", [self]);
1804
+ return self;},
1805
+ args: ["aVisitor"],
1806
+ source: "accept: aVisitor\x0a\x09aVisitor visitVerbatimNode: self",
1807
+ messageSends: ["visitVerbatimNode:"],
1808
+ referencedClasses: []
1809
+ }),
1810
+ smalltalk.VerbatimNode);
1811
+
1812
+ smalltalk.addMethod(
1813
+ "_value",
1814
+ smalltalk.method({
1815
+ selector: "value",
1816
+ category: 'accessing',
1817
+ fn: function () {
1818
+ var self=this;
1819
+ return self['@value'];
1820
+ return self;},
1821
+ args: [],
1822
+ source: "value\x0a\x09^value",
1823
+ messageSends: [],
1824
+ referencedClasses: []
1825
+ }),
1826
+ smalltalk.VerbatimNode);
1827
+
1828
+ smalltalk.addMethod(
1829
+ "_value_",
1830
+ smalltalk.method({
1831
+ selector: "value:",
1832
+ category: 'accessing',
1833
+ fn: function (anObject) {
1834
+ var self=this;
1835
+ (self['@value']=anObject);
1836
+ return self;},
1837
+ args: ["anObject"],
1838
+ source: "value: anObject\x0a\x09value := anObject",
1839
+ messageSends: [],
1840
+ referencedClasses: []
1841
+ }),
1842
+ smalltalk.VerbatimNode);
1843
+
1844
+
1845
+
1779
1846
  smalltalk.addClass('NodeVisitor', smalltalk.Object, [], 'Compiler');
1780
1847
  smalltalk.addMethod(
1781
1848
  "_visit_",
1782
1849
  smalltalk.method({
1783
1850
  selector: "visit:",
1784
1851
  category: 'visiting',
1785
- fn: function (aNode){
1852
+ fn: function (aNode) {
1786
1853
  var self=this;
1787
1854
  smalltalk.send(aNode, "_accept_", [self]);
1788
1855
  return self;},
@@ -1798,7 +1865,7 @@ smalltalk.addMethod(
1798
1865
  smalltalk.method({
1799
1866
  selector: "visitAssignmentNode:",
1800
1867
  category: 'visiting',
1801
- fn: function (aNode){
1868
+ fn: function (aNode) {
1802
1869
  var self=this;
1803
1870
  smalltalk.send(self, "_visitNode_", [aNode]);
1804
1871
  return self;},
@@ -1814,7 +1881,7 @@ smalltalk.addMethod(
1814
1881
  smalltalk.method({
1815
1882
  selector: "visitBlockNode:",
1816
1883
  category: 'visiting',
1817
- fn: function (aNode){
1884
+ fn: function (aNode) {
1818
1885
  var self=this;
1819
1886
  smalltalk.send(self, "_visitNode_", [aNode]);
1820
1887
  return self;},
@@ -1830,7 +1897,7 @@ smalltalk.addMethod(
1830
1897
  smalltalk.method({
1831
1898
  selector: "visitBlockSequenceNode:",
1832
1899
  category: 'visiting',
1833
- fn: function (aNode){
1900
+ fn: function (aNode) {
1834
1901
  var self=this;
1835
1902
  smalltalk.send(self, "_visitNode_", [aNode]);
1836
1903
  return self;},
@@ -1846,7 +1913,7 @@ smalltalk.addMethod(
1846
1913
  smalltalk.method({
1847
1914
  selector: "visitCascadeNode:",
1848
1915
  category: 'visiting',
1849
- fn: function (aNode){
1916
+ fn: function (aNode) {
1850
1917
  var self=this;
1851
1918
  smalltalk.send(self, "_visitNode_", [aNode]);
1852
1919
  return self;},
@@ -1862,7 +1929,7 @@ smalltalk.addMethod(
1862
1929
  smalltalk.method({
1863
1930
  selector: "visitClassReferenceNode:",
1864
1931
  category: 'visiting',
1865
- fn: function (aNode){
1932
+ fn: function (aNode) {
1866
1933
  var self=this;
1867
1934
  smalltalk.send(self, "_visitNode_", [aNode]);
1868
1935
  return self;},
@@ -1878,7 +1945,7 @@ smalltalk.addMethod(
1878
1945
  smalltalk.method({
1879
1946
  selector: "visitDynamicArrayNode:",
1880
1947
  category: 'visiting',
1881
- fn: function (aNode){
1948
+ fn: function (aNode) {
1882
1949
  var self=this;
1883
1950
  smalltalk.send(self, "_visitNode_", [aNode]);
1884
1951
  return self;},
@@ -1894,7 +1961,7 @@ smalltalk.addMethod(
1894
1961
  smalltalk.method({
1895
1962
  selector: "visitDynamicDictionaryNode:",
1896
1963
  category: 'visiting',
1897
- fn: function (aNode){
1964
+ fn: function (aNode) {
1898
1965
  var self=this;
1899
1966
  smalltalk.send(self, "_visitNode_", [aNode]);
1900
1967
  return self;},
@@ -1910,7 +1977,7 @@ smalltalk.addMethod(
1910
1977
  smalltalk.method({
1911
1978
  selector: "visitJSStatementNode:",
1912
1979
  category: 'visiting',
1913
- fn: function (aNode){
1980
+ fn: function (aNode) {
1914
1981
  var self=this;
1915
1982
  smalltalk.send(self, "_visitNode_", [aNode]);
1916
1983
  return self;},
@@ -1926,7 +1993,7 @@ smalltalk.addMethod(
1926
1993
  smalltalk.method({
1927
1994
  selector: "visitMethodNode:",
1928
1995
  category: 'visiting',
1929
- fn: function (aNode){
1996
+ fn: function (aNode) {
1930
1997
  var self=this;
1931
1998
  smalltalk.send(self, "_visitNode_", [aNode]);
1932
1999
  return self;},
@@ -1942,7 +2009,7 @@ smalltalk.addMethod(
1942
2009
  smalltalk.method({
1943
2010
  selector: "visitNode:",
1944
2011
  category: 'visiting',
1945
- fn: function (aNode){
2012
+ fn: function (aNode) {
1946
2013
  var self=this;
1947
2014
 
1948
2015
  return self;},
@@ -1958,7 +2025,7 @@ smalltalk.addMethod(
1958
2025
  smalltalk.method({
1959
2026
  selector: "visitReturnNode:",
1960
2027
  category: 'visiting',
1961
- fn: function (aNode){
2028
+ fn: function (aNode) {
1962
2029
  var self=this;
1963
2030
  smalltalk.send(self, "_visitNode_", [aNode]);
1964
2031
  return self;},
@@ -1974,7 +2041,7 @@ smalltalk.addMethod(
1974
2041
  smalltalk.method({
1975
2042
  selector: "visitSendNode:",
1976
2043
  category: 'visiting',
1977
- fn: function (aNode){
2044
+ fn: function (aNode) {
1978
2045
  var self=this;
1979
2046
  smalltalk.send(self, "_visitNode_", [aNode]);
1980
2047
  return self;},
@@ -1990,7 +2057,7 @@ smalltalk.addMethod(
1990
2057
  smalltalk.method({
1991
2058
  selector: "visitSequenceNode:",
1992
2059
  category: 'visiting',
1993
- fn: function (aNode){
2060
+ fn: function (aNode) {
1994
2061
  var self=this;
1995
2062
  smalltalk.send(self, "_visitNode_", [aNode]);
1996
2063
  return self;},
@@ -2006,7 +2073,7 @@ smalltalk.addMethod(
2006
2073
  smalltalk.method({
2007
2074
  selector: "visitValueNode:",
2008
2075
  category: 'visiting',
2009
- fn: function (aNode){
2076
+ fn: function (aNode) {
2010
2077
  var self=this;
2011
2078
  smalltalk.send(self, "_visitNode_", [aNode]);
2012
2079
  return self;},
@@ -2022,7 +2089,7 @@ smalltalk.addMethod(
2022
2089
  smalltalk.method({
2023
2090
  selector: "visitVariableNode:",
2024
2091
  category: 'visiting',
2025
- fn: function (aNode){
2092
+ fn: function (aNode) {
2026
2093
  var self=this;
2027
2094
  smalltalk.send(self, "_visitNode_", [aNode]);
2028
2095
  return self;},
@@ -2033,6 +2100,22 @@ referencedClasses: []
2033
2100
  }),
2034
2101
  smalltalk.NodeVisitor);
2035
2102
 
2103
+ smalltalk.addMethod(
2104
+ "_visitVerbatimNode_",
2105
+ smalltalk.method({
2106
+ selector: "visitVerbatimNode:",
2107
+ category: 'visiting',
2108
+ fn: function (aNode) {
2109
+ var self=this;
2110
+ smalltalk.send(self, "_visitNode_", [aNode]);
2111
+ return self;},
2112
+ args: ["aNode"],
2113
+ source: "visitVerbatimNode: aNode\x0a\x09self visitNode: aNode",
2114
+ messageSends: ["visitNode:"],
2115
+ referencedClasses: []
2116
+ }),
2117
+ smalltalk.NodeVisitor);
2118
+
2036
2119
 
2037
2120
 
2038
2121
  smalltalk.addClass('AbstractCodeGenerator', smalltalk.NodeVisitor, ['currentClass', 'source'], 'Compiler');
@@ -2041,7 +2124,7 @@ smalltalk.addMethod(
2041
2124
  smalltalk.method({
2042
2125
  selector: "classNameFor:",
2043
2126
  category: 'accessing',
2044
- fn: function (aClass){
2127
+ fn: function (aClass) {
2045
2128
  var self=this;
2046
2129
  return ((($receiver = smalltalk.send(aClass, "_isMetaclass", [])).klass === smalltalk.Boolean) ? ($receiver ? (function(){return smalltalk.send(smalltalk.send(smalltalk.send(aClass, "_instanceClass", []), "_name", []), "__comma", [".klass"]);})() : (function(){return ((($receiver = smalltalk.send(aClass, "_isNil", [])).klass === smalltalk.Boolean) ? ($receiver ? (function(){return "nil";})() : (function(){return smalltalk.send(aClass, "_name", []);})()) : smalltalk.send($receiver, "_ifTrue_ifFalse_", [(function(){return "nil";}), (function(){return smalltalk.send(aClass, "_name", []);})]));})()) : smalltalk.send($receiver, "_ifTrue_ifFalse_", [(function(){return smalltalk.send(smalltalk.send(smalltalk.send(aClass, "_instanceClass", []), "_name", []), "__comma", [".klass"]);}), (function(){return ((($receiver = smalltalk.send(aClass, "_isNil", [])).klass === smalltalk.Boolean) ? ($receiver ? (function(){return "nil";})() : (function(){return smalltalk.send(aClass, "_name", []);})()) : smalltalk.send($receiver, "_ifTrue_ifFalse_", [(function(){return "nil";}), (function(){return smalltalk.send(aClass, "_name", []);})]));})]));
2047
2130
  return self;},
@@ -2057,7 +2140,7 @@ smalltalk.addMethod(
2057
2140
  smalltalk.method({
2058
2141
  selector: "compileNode:",
2059
2142
  category: 'compiling',
2060
- fn: function (aNode){
2143
+ fn: function (aNode) {
2061
2144
  var self=this;
2062
2145
  smalltalk.send(self, "_subclassResponsibility", []);
2063
2146
  return self;},
@@ -2073,7 +2156,7 @@ smalltalk.addMethod(
2073
2156
  smalltalk.method({
2074
2157
  selector: "currentClass",
2075
2158
  category: 'accessing',
2076
- fn: function (){
2159
+ fn: function () {
2077
2160
  var self=this;
2078
2161
  return self['@currentClass'];
2079
2162
  return self;},
@@ -2089,7 +2172,7 @@ smalltalk.addMethod(
2089
2172
  smalltalk.method({
2090
2173
  selector: "currentClass:",
2091
2174
  category: 'accessing',
2092
- fn: function (aClass){
2175
+ fn: function (aClass) {
2093
2176
  var self=this;
2094
2177
  (self['@currentClass']=aClass);
2095
2178
  return self;},
@@ -2105,7 +2188,7 @@ smalltalk.addMethod(
2105
2188
  smalltalk.method({
2106
2189
  selector: "pseudoVariables",
2107
2190
  category: 'accessing',
2108
- fn: function (){
2191
+ fn: function () {
2109
2192
  var self=this;
2110
2193
  return ["self", "super", "true", "false", "nil", "thisContext"];
2111
2194
  return self;},
@@ -2121,7 +2204,7 @@ smalltalk.addMethod(
2121
2204
  smalltalk.method({
2122
2205
  selector: "safeVariableNameFor:",
2123
2206
  category: 'accessing',
2124
- fn: function (aString){
2207
+ fn: function (aString) {
2125
2208
  var self=this;
2126
2209
  return ((($receiver = smalltalk.send(smalltalk.send(smalltalk.send((smalltalk.Smalltalk || Smalltalk), "_current", []), "_reservedWords", []), "_includes_", [aString])).klass === smalltalk.Boolean) ? ($receiver ? (function(){return smalltalk.send(aString, "__comma", ["_"]);})() : (function(){return aString;})()) : smalltalk.send($receiver, "_ifTrue_ifFalse_", [(function(){return smalltalk.send(aString, "__comma", ["_"]);}), (function(){return aString;})]));
2127
2210
  return self;},
@@ -2137,7 +2220,7 @@ smalltalk.addMethod(
2137
2220
  smalltalk.method({
2138
2221
  selector: "source",
2139
2222
  category: 'accessing',
2140
- fn: function (){
2223
+ fn: function () {
2141
2224
  var self=this;
2142
2225
  return (($receiver = self['@source']) == nil || $receiver == undefined) ? (function(){return "";})() : $receiver;
2143
2226
  return self;},
@@ -2153,7 +2236,7 @@ smalltalk.addMethod(
2153
2236
  smalltalk.method({
2154
2237
  selector: "source:",
2155
2238
  category: 'accessing',
2156
- fn: function (aString){
2239
+ fn: function (aString) {
2157
2240
  var self=this;
2158
2241
  (self['@source']=aString);
2159
2242
  return self;},
@@ -2172,7 +2255,7 @@ smalltalk.addMethod(
2172
2255
  smalltalk.method({
2173
2256
  selector: "argVariables",
2174
2257
  category: 'accessing',
2175
- fn: function (){
2258
+ fn: function () {
2176
2259
  var self=this;
2177
2260
  return smalltalk.send(self['@argVariables'], "_copy", []);
2178
2261
  return self;},
@@ -2188,7 +2271,7 @@ smalltalk.addMethod(
2188
2271
  smalltalk.method({
2189
2272
  selector: "checkClass:for:",
2190
2273
  category: 'optimizations',
2191
- fn: function (aClassName, receiver){
2274
+ fn: function (aClassName, receiver) {
2192
2275
  var self=this;
2193
2276
  smalltalk.send(self['@stream'], "_nextPutAll_", [smalltalk.send(smalltalk.send(smalltalk.send(smalltalk.send("((($receiver = ", "__comma", [receiver]), "__comma", [").klass === smalltalk."]), "__comma", [aClassName]), "__comma", [") ? "])]);
2194
2277
  return self;},
@@ -2204,7 +2287,7 @@ smalltalk.addMethod(
2204
2287
  smalltalk.method({
2205
2288
  selector: "compileNode:",
2206
2289
  category: 'compiling',
2207
- fn: function (aNode){
2290
+ fn: function (aNode) {
2208
2291
  var self=this;
2209
2292
  (self['@stream']=smalltalk.send("", "_writeStream", []));
2210
2293
  smalltalk.send(self, "_visit_", [aNode]);
@@ -2222,7 +2305,7 @@ smalltalk.addMethod(
2222
2305
  smalltalk.method({
2223
2306
  selector: "initialize",
2224
2307
  category: 'initialization',
2225
- fn: function (){
2308
+ fn: function () {
2226
2309
  var self=this;
2227
2310
  smalltalk.send(self, "_initialize", [], smalltalk.FunCodeGenerator.superclass || nil);
2228
2311
  (self['@stream']=smalltalk.send("", "_writeStream", []));
@@ -2244,7 +2327,7 @@ smalltalk.addMethod(
2244
2327
  smalltalk.method({
2245
2328
  selector: "inline:receiver:argumentNodes:",
2246
2329
  category: 'optimizations',
2247
- fn: function (aSelector, receiver, aCollection){
2330
+ fn: function (aSelector, receiver, aCollection) {
2248
2331
  var self=this;
2249
2332
  var inlined=nil;
2250
2333
  (inlined=false);
@@ -2274,7 +2357,7 @@ smalltalk.addMethod(
2274
2357
  smalltalk.method({
2275
2358
  selector: "inlineLiteral:receiverNode:argumentNodes:",
2276
2359
  category: 'optimizations',
2277
- fn: function (aSelector, anObject, aCollection){
2360
+ fn: function (aSelector, anObject, aCollection) {
2278
2361
  var self=this;
2279
2362
  var inlined=nil;
2280
2363
  (inlined=false);
@@ -2308,7 +2391,7 @@ smalltalk.addMethod(
2308
2391
  smalltalk.method({
2309
2392
  selector: "isNode:ofClass:",
2310
2393
  category: 'optimizations',
2311
- fn: function (aNode, aClass){
2394
+ fn: function (aNode, aClass) {
2312
2395
  var self=this;
2313
2396
  return smalltalk.send(smalltalk.send(aNode, "_isValueNode", []), "_and_", [(function(){return smalltalk.send(smalltalk.send(smalltalk.send(smalltalk.send(aNode, "_value", []), "_class", []), "__eq", [aClass]), "_or_", [(function(){return smalltalk.send(smalltalk.send(smalltalk.send(aNode, "_value", []), "__eq", ["self"]), "_and_", [(function(){return smalltalk.send(smalltalk.send(self, "_currentClass", []), "__eq", [aClass]);})]);})]);})]);
2314
2397
  return self;},
@@ -2324,7 +2407,7 @@ smalltalk.addMethod(
2324
2407
  smalltalk.method({
2325
2408
  selector: "knownVariables",
2326
2409
  category: 'accessing',
2327
- fn: function (){
2410
+ fn: function () {
2328
2411
  var self=this;
2329
2412
  return (function($rec){smalltalk.send($rec, "_addAll_", [smalltalk.send(self, "_tempVariables", [])]);smalltalk.send($rec, "_addAll_", [smalltalk.send(self, "_argVariables", [])]);return smalltalk.send($rec, "_yourself", []);})(smalltalk.send(self, "_pseudoVariables", []));
2330
2413
  return self;},
@@ -2340,7 +2423,7 @@ smalltalk.addMethod(
2340
2423
  smalltalk.method({
2341
2424
  selector: "performOptimizations",
2342
2425
  category: 'testing',
2343
- fn: function (){
2426
+ fn: function () {
2344
2427
  var self=this;
2345
2428
  return smalltalk.send(smalltalk.send(self, "_class", []), "_performOptimizations", []);
2346
2429
  return self;},
@@ -2356,7 +2439,7 @@ smalltalk.addMethod(
2356
2439
  smalltalk.method({
2357
2440
  selector: "send:to:arguments:superSend:",
2358
2441
  category: 'visiting',
2359
- fn: function (aSelector, aReceiver, aCollection, aBoolean){
2442
+ fn: function (aSelector, aReceiver, aCollection, aBoolean) {
2360
2443
  var self=this;
2361
2444
  return smalltalk.send((smalltalk.String || String), "_streamContents_", [(function(str){var tmp=nil;
2362
2445
  (tmp=self['@stream']);smalltalk.send(str, "_nextPutAll_", ["smalltalk.send("]);smalltalk.send(str, "_nextPutAll_", [aReceiver]);smalltalk.send(str, "_nextPutAll_", [smalltalk.send(smalltalk.send(", \x22", "__comma", [smalltalk.send(aSelector, "_asSelector", [])]), "__comma", ["\x22, ["])]);(self['@stream']=str);smalltalk.send(aCollection, "_do_separatedBy_", [(function(each){return smalltalk.send(self, "_visit_", [each]);}), (function(){return smalltalk.send(self['@stream'], "_nextPutAll_", [", "]);})]);(self['@stream']=tmp);smalltalk.send(str, "_nextPutAll_", ["]"]);((($receiver = aBoolean).klass === smalltalk.Boolean) ? ($receiver ? (function(){return smalltalk.send(str, "_nextPutAll_", [smalltalk.send(smalltalk.send(", smalltalk.", "__comma", [smalltalk.send(self, "_classNameFor_", [smalltalk.send(self, "_currentClass", [])])]), "__comma", [".superclass || nil"])]);})() : nil) : smalltalk.send($receiver, "_ifTrue_", [(function(){return smalltalk.send(str, "_nextPutAll_", [smalltalk.send(smalltalk.send(", smalltalk.", "__comma", [smalltalk.send(self, "_classNameFor_", [smalltalk.send(self, "_currentClass", [])])]), "__comma", [".superclass || nil"])]);})]));return smalltalk.send(str, "_nextPutAll_", [")"]);})]);
@@ -2373,7 +2456,7 @@ smalltalk.addMethod(
2373
2456
  smalltalk.method({
2374
2457
  selector: "tempVariables",
2375
2458
  category: 'accessing',
2376
- fn: function (){
2459
+ fn: function () {
2377
2460
  var self=this;
2378
2461
  return smalltalk.send(self['@tempVariables'], "_copy", []);
2379
2462
  return self;},
@@ -2389,7 +2472,7 @@ smalltalk.addMethod(
2389
2472
  smalltalk.method({
2390
2473
  selector: "unknownVariables",
2391
2474
  category: 'accessing',
2392
- fn: function (){
2475
+ fn: function () {
2393
2476
  var self=this;
2394
2477
  return smalltalk.send(self['@unknownVariables'], "_copy", []);
2395
2478
  return self;},
@@ -2405,7 +2488,7 @@ smalltalk.addMethod(
2405
2488
  smalltalk.method({
2406
2489
  selector: "visit:",
2407
2490
  category: 'visiting',
2408
- fn: function (aNode){
2491
+ fn: function (aNode) {
2409
2492
  var self=this;
2410
2493
  smalltalk.send(aNode, "_accept_", [self]);
2411
2494
  return self;},
@@ -2421,7 +2504,7 @@ smalltalk.addMethod(
2421
2504
  smalltalk.method({
2422
2505
  selector: "visitAssignmentNode:",
2423
2506
  category: 'visiting',
2424
- fn: function (aNode){
2507
+ fn: function (aNode) {
2425
2508
  var self=this;
2426
2509
  smalltalk.send(self['@stream'], "_nextPutAll_", ["("]);
2427
2510
  smalltalk.send(self, "_visit_", [smalltalk.send(aNode, "_left", [])]);
@@ -2441,7 +2524,7 @@ smalltalk.addMethod(
2441
2524
  smalltalk.method({
2442
2525
  selector: "visitBlockNode:",
2443
2526
  category: 'visiting',
2444
- fn: function (aNode){
2527
+ fn: function (aNode) {
2445
2528
  var self=this;
2446
2529
  smalltalk.send(self['@stream'], "_nextPutAll_", ["(function("]);
2447
2530
  smalltalk.send(smalltalk.send(aNode, "_parameters", []), "_do_separatedBy_", [(function(each){smalltalk.send(self['@tempVariables'], "_add_", [each]);return smalltalk.send(self['@stream'], "_nextPutAll_", [each]);}), (function(){return smalltalk.send(self['@stream'], "_nextPutAll_", [", "]);})]);
@@ -2461,7 +2544,7 @@ smalltalk.addMethod(
2461
2544
  smalltalk.method({
2462
2545
  selector: "visitBlockSequenceNode:",
2463
2546
  category: 'visiting',
2464
- fn: function (aNode){
2547
+ fn: function (aNode) {
2465
2548
  var self=this;
2466
2549
  var index=nil;
2467
2550
  (self['@nestedBlocks']=((($receiver = self['@nestedBlocks']).klass === smalltalk.Number) ? $receiver +(1) : smalltalk.send($receiver, "__plus", [(1)])));
@@ -2482,7 +2565,7 @@ smalltalk.addMethod(
2482
2565
  smalltalk.method({
2483
2566
  selector: "visitCascadeNode:",
2484
2567
  category: 'visiting',
2485
- fn: function (aNode){
2568
+ fn: function (aNode) {
2486
2569
  var self=this;
2487
2570
  var index=nil;
2488
2571
  (index=(0));
@@ -2505,7 +2588,7 @@ smalltalk.addMethod(
2505
2588
  smalltalk.method({
2506
2589
  selector: "visitClassReferenceNode:",
2507
2590
  category: 'visiting',
2508
- fn: function (aNode){
2591
+ fn: function (aNode) {
2509
2592
  var self=this;
2510
2593
  ((($receiver = smalltalk.send(self['@referencedClasses'], "_includes_", [smalltalk.send(aNode, "_value", [])])).klass === smalltalk.Boolean) ? (! $receiver ? (function(){return smalltalk.send(self['@referencedClasses'], "_add_", [smalltalk.send(aNode, "_value", [])]);})() : nil) : smalltalk.send($receiver, "_ifFalse_", [(function(){return smalltalk.send(self['@referencedClasses'], "_add_", [smalltalk.send(aNode, "_value", [])]);})]));
2511
2594
  smalltalk.send(self['@stream'], "_nextPutAll_", [smalltalk.send(smalltalk.send(smalltalk.send(smalltalk.send("(smalltalk.", "__comma", [smalltalk.send(aNode, "_value", [])]), "__comma", [" || "]), "__comma", [smalltalk.send(aNode, "_value", [])]), "__comma", [")"])]);
@@ -2522,7 +2605,7 @@ smalltalk.addMethod(
2522
2605
  smalltalk.method({
2523
2606
  selector: "visitDynamicArrayNode:",
2524
2607
  category: 'visiting',
2525
- fn: function (aNode){
2608
+ fn: function (aNode) {
2526
2609
  var self=this;
2527
2610
  smalltalk.send(self['@stream'], "_nextPutAll_", ["["]);
2528
2611
  smalltalk.send(smalltalk.send(aNode, "_nodes", []), "_do_separatedBy_", [(function(each){return smalltalk.send(self, "_visit_", [each]);}), (function(){return smalltalk.send(self['@stream'], "_nextPutAll_", [","]);})]);
@@ -2540,7 +2623,7 @@ smalltalk.addMethod(
2540
2623
  smalltalk.method({
2541
2624
  selector: "visitDynamicDictionaryNode:",
2542
2625
  category: 'visiting',
2543
- fn: function (aNode){
2626
+ fn: function (aNode) {
2544
2627
  var self=this;
2545
2628
  smalltalk.send(self['@stream'], "_nextPutAll_", ["smalltalk.HashedCollection._fromPairs_(["]);
2546
2629
  smalltalk.send(smalltalk.send(aNode, "_nodes", []), "_do_separatedBy_", [(function(each){return smalltalk.send(self, "_visit_", [each]);}), (function(){return smalltalk.send(self['@stream'], "_nextPutAll_", [","]);})]);
@@ -2558,7 +2641,7 @@ smalltalk.addMethod(
2558
2641
  smalltalk.method({
2559
2642
  selector: "visitFailure:",
2560
2643
  category: 'visiting',
2561
- fn: function (aFailure){
2644
+ fn: function (aFailure) {
2562
2645
  var self=this;
2563
2646
  smalltalk.send(self, "_error_", [smalltalk.send(aFailure, "_asString", [])]);
2564
2647
  return self;},
@@ -2574,7 +2657,7 @@ smalltalk.addMethod(
2574
2657
  smalltalk.method({
2575
2658
  selector: "visitJSStatementNode:",
2576
2659
  category: 'visiting',
2577
- fn: function (aNode){
2660
+ fn: function (aNode) {
2578
2661
  var self=this;
2579
2662
  smalltalk.send(self['@stream'], "_nextPutAll_", [smalltalk.send(aNode, "_source", [])]);
2580
2663
  return self;},
@@ -2590,7 +2673,7 @@ smalltalk.addMethod(
2590
2673
  smalltalk.method({
2591
2674
  selector: "visitMethodNode:",
2592
2675
  category: 'visiting',
2593
- fn: function (aNode){
2676
+ fn: function (aNode) {
2594
2677
  var self=this;
2595
2678
  var str=nil;
2596
2679
  var currentSelector=nil;
@@ -2633,7 +2716,7 @@ smalltalk.addMethod(
2633
2716
  smalltalk.method({
2634
2717
  selector: "visitReturnNode:",
2635
2718
  category: 'visiting',
2636
- fn: function (aNode){
2719
+ fn: function (aNode) {
2637
2720
  var self=this;
2638
2721
  ((($receiver = ((($receiver = self['@nestedBlocks']).klass === smalltalk.Number) ? $receiver >(0) : smalltalk.send($receiver, "__gt", [(0)]))).klass === smalltalk.Boolean) ? ($receiver ? (function(){return (self['@earlyReturn']=true);})() : nil) : smalltalk.send($receiver, "_ifTrue_", [(function(){return (self['@earlyReturn']=true);})]));
2639
2722
  ((($receiver = ((($receiver = self['@nestedBlocks']).klass === smalltalk.Number) ? $receiver >(0) : smalltalk.send($receiver, "__gt", [(0)]))).klass === smalltalk.Boolean) ? ($receiver ? (function(){return smalltalk.send(self['@stream'], "_nextPutAll_", ["(function(){throw $early=["]);})() : (function(){return smalltalk.send(self['@stream'], "_nextPutAll_", ["return "]);})()) : smalltalk.send($receiver, "_ifTrue_ifFalse_", [(function(){return smalltalk.send(self['@stream'], "_nextPutAll_", ["(function(){throw $early=["]);}), (function(){return smalltalk.send(self['@stream'], "_nextPutAll_", ["return "]);})]));
@@ -2652,7 +2735,7 @@ smalltalk.addMethod(
2652
2735
  smalltalk.method({
2653
2736
  selector: "visitSendNode:",
2654
2737
  category: 'visiting',
2655
- fn: function (aNode){
2738
+ fn: function (aNode) {
2656
2739
  var self=this;
2657
2740
  var str=nil;
2658
2741
  var receiver=nil;
@@ -2679,7 +2762,7 @@ smalltalk.addMethod(
2679
2762
  smalltalk.method({
2680
2763
  selector: "visitSequenceNode:",
2681
2764
  category: 'visiting',
2682
- fn: function (aNode){
2765
+ fn: function (aNode) {
2683
2766
  var self=this;
2684
2767
  smalltalk.send(smalltalk.send(aNode, "_temps", []), "_do_", [(function(each){var temp=nil;
2685
2768
  (temp=smalltalk.send(self, "_safeVariableNameFor_", [each]));smalltalk.send(self['@tempVariables'], "_add_", [temp]);return (function($rec){smalltalk.send($rec, "_nextPutAll_", [smalltalk.send(smalltalk.send("var ", "__comma", [temp]), "__comma", ["=nil;"])]);return smalltalk.send($rec, "_lf", []);})(self['@stream']);})]);
@@ -2697,7 +2780,7 @@ smalltalk.addMethod(
2697
2780
  smalltalk.method({
2698
2781
  selector: "visitValueNode:",
2699
2782
  category: 'visiting',
2700
- fn: function (aNode){
2783
+ fn: function (aNode) {
2701
2784
  var self=this;
2702
2785
  smalltalk.send(self['@stream'], "_nextPutAll_", [smalltalk.send(smalltalk.send(aNode, "_value", []), "_asJavascript", [])]);
2703
2786
  return self;},
@@ -2713,7 +2796,7 @@ smalltalk.addMethod(
2713
2796
  smalltalk.method({
2714
2797
  selector: "visitVariableNode:",
2715
2798
  category: 'visiting',
2716
- fn: function (aNode){
2799
+ fn: function (aNode) {
2717
2800
  var self=this;
2718
2801
  var varName=nil;
2719
2802
  ((($receiver = smalltalk.send(smalltalk.send(smalltalk.send(self, "_currentClass", []), "_allInstanceVariableNames", []), "_includes_", [smalltalk.send(aNode, "_value", [])])).klass === smalltalk.Boolean) ? ($receiver ? (function(){return smalltalk.send(self['@stream'], "_nextPutAll_", [smalltalk.send(smalltalk.send("self['@", "__comma", [smalltalk.send(aNode, "_value", [])]), "__comma", ["']"])]);})() : (function(){(varName=smalltalk.send(self, "_safeVariableNameFor_", [smalltalk.send(aNode, "_value", [])]));return ((($receiver = smalltalk.send(smalltalk.send(self, "_knownVariables", []), "_includes_", [varName])).klass === smalltalk.Boolean) ? (! $receiver ? (function(){smalltalk.send(self['@unknownVariables'], "_add_", [smalltalk.send(aNode, "_value", [])]);return ((($receiver = smalltalk.send(aNode, "_assigned", [])).klass === smalltalk.Boolean) ? ($receiver ? (function(){return smalltalk.send(self['@stream'], "_nextPutAll_", [varName]);})() : (function(){return smalltalk.send(self['@stream'], "_nextPutAll_", [smalltalk.send(smalltalk.send(smalltalk.send(smalltalk.send("(typeof ", "__comma", [varName]), "__comma", [" == 'undefined' ? nil : "]), "__comma", [varName]), "__comma", [")"])]);})()) : smalltalk.send($receiver, "_ifTrue_ifFalse_", [(function(){return smalltalk.send(self['@stream'], "_nextPutAll_", [varName]);}), (function(){return smalltalk.send(self['@stream'], "_nextPutAll_", [smalltalk.send(smalltalk.send(smalltalk.send(smalltalk.send("(typeof ", "__comma", [varName]), "__comma", [" == 'undefined' ? nil : "]), "__comma", [varName]), "__comma", [")"])]);})]));})() : (function(){return ((($receiver = smalltalk.send(smalltalk.send(aNode, "_value", []), "__eq", ["thisContext"])).klass === smalltalk.Boolean) ? ($receiver ? (function(){return smalltalk.send(self['@stream'], "_nextPutAll_", ["(smalltalk.getThisContext())"]);})() : (function(){return smalltalk.send(self['@stream'], "_nextPutAll_", [varName]);})()) : smalltalk.send($receiver, "_ifTrue_ifFalse_", [(function(){return smalltalk.send(self['@stream'], "_nextPutAll_", ["(smalltalk.getThisContext())"]);}), (function(){return smalltalk.send(self['@stream'], "_nextPutAll_", [varName]);})]));})()) : smalltalk.send($receiver, "_ifFalse_ifTrue_", [(function(){smalltalk.send(self['@unknownVariables'], "_add_", [smalltalk.send(aNode, "_value", [])]);return ((($receiver = smalltalk.send(aNode, "_assigned", [])).klass === smalltalk.Boolean) ? ($receiver ? (function(){return smalltalk.send(self['@stream'], "_nextPutAll_", [varName]);})() : (function(){return smalltalk.send(self['@stream'], "_nextPutAll_", [smalltalk.send(smalltalk.send(smalltalk.send(smalltalk.send("(typeof ", "__comma", [varName]), "__comma", [" == 'undefined' ? nil : "]), "__comma", [varName]), "__comma", [")"])]);})()) : smalltalk.send($receiver, "_ifTrue_ifFalse_", [(function(){return smalltalk.send(self['@stream'], "_nextPutAll_", [varName]);}), (function(){return smalltalk.send(self['@stream'], "_nextPutAll_", [smalltalk.send(smalltalk.send(smalltalk.send(smalltalk.send("(typeof ", "__comma", [varName]), "__comma", [" == 'undefined' ? nil : "]), "__comma", [varName]), "__comma", [")"])]);})]));}), (function(){return ((($receiver = smalltalk.send(smalltalk.send(aNode, "_value", []), "__eq", ["thisContext"])).klass === smalltalk.Boolean) ? ($receiver ? (function(){return smalltalk.send(self['@stream'], "_nextPutAll_", ["(smalltalk.getThisContext())"]);})() : (function(){return smalltalk.send(self['@stream'], "_nextPutAll_", [varName]);})()) : smalltalk.send($receiver, "_ifTrue_ifFalse_", [(function(){return smalltalk.send(self['@stream'], "_nextPutAll_", ["(smalltalk.getThisContext())"]);}), (function(){return smalltalk.send(self['@stream'], "_nextPutAll_", [varName]);})]));})]));})()) : smalltalk.send($receiver, "_ifTrue_ifFalse_", [(function(){return smalltalk.send(self['@stream'], "_nextPutAll_", [smalltalk.send(smalltalk.send("self['@", "__comma", [smalltalk.send(aNode, "_value", [])]), "__comma", ["']"])]);}), (function(){(varName=smalltalk.send(self, "_safeVariableNameFor_", [smalltalk.send(aNode, "_value", [])]));return ((($receiver = smalltalk.send(smalltalk.send(self, "_knownVariables", []), "_includes_", [varName])).klass === smalltalk.Boolean) ? (! $receiver ? (function(){smalltalk.send(self['@unknownVariables'], "_add_", [smalltalk.send(aNode, "_value", [])]);return ((($receiver = smalltalk.send(aNode, "_assigned", [])).klass === smalltalk.Boolean) ? ($receiver ? (function(){return smalltalk.send(self['@stream'], "_nextPutAll_", [varName]);})() : (function(){return smalltalk.send(self['@stream'], "_nextPutAll_", [smalltalk.send(smalltalk.send(smalltalk.send(smalltalk.send("(typeof ", "__comma", [varName]), "__comma", [" == 'undefined' ? nil : "]), "__comma", [varName]), "__comma", [")"])]);})()) : smalltalk.send($receiver, "_ifTrue_ifFalse_", [(function(){return smalltalk.send(self['@stream'], "_nextPutAll_", [varName]);}), (function(){return smalltalk.send(self['@stream'], "_nextPutAll_", [smalltalk.send(smalltalk.send(smalltalk.send(smalltalk.send("(typeof ", "__comma", [varName]), "__comma", [" == 'undefined' ? nil : "]), "__comma", [varName]), "__comma", [")"])]);})]));})() : (function(){return ((($receiver = smalltalk.send(smalltalk.send(aNode, "_value", []), "__eq", ["thisContext"])).klass === smalltalk.Boolean) ? ($receiver ? (function(){return smalltalk.send(self['@stream'], "_nextPutAll_", ["(smalltalk.getThisContext())"]);})() : (function(){return smalltalk.send(self['@stream'], "_nextPutAll_", [varName]);})()) : smalltalk.send($receiver, "_ifTrue_ifFalse_", [(function(){return smalltalk.send(self['@stream'], "_nextPutAll_", ["(smalltalk.getThisContext())"]);}), (function(){return smalltalk.send(self['@stream'], "_nextPutAll_", [varName]);})]));})()) : smalltalk.send($receiver, "_ifFalse_ifTrue_", [(function(){smalltalk.send(self['@unknownVariables'], "_add_", [smalltalk.send(aNode, "_value", [])]);return ((($receiver = smalltalk.send(aNode, "_assigned", [])).klass === smalltalk.Boolean) ? ($receiver ? (function(){return smalltalk.send(self['@stream'], "_nextPutAll_", [varName]);})() : (function(){return smalltalk.send(self['@stream'], "_nextPutAll_", [smalltalk.send(smalltalk.send(smalltalk.send(smalltalk.send("(typeof ", "__comma", [varName]), "__comma", [" == 'undefined' ? nil : "]), "__comma", [varName]), "__comma", [")"])]);})()) : smalltalk.send($receiver, "_ifTrue_ifFalse_", [(function(){return smalltalk.send(self['@stream'], "_nextPutAll_", [varName]);}), (function(){return smalltalk.send(self['@stream'], "_nextPutAll_", [smalltalk.send(smalltalk.send(smalltalk.send(smalltalk.send("(typeof ", "__comma", [varName]), "__comma", [" == 'undefined' ? nil : "]), "__comma", [varName]), "__comma", [")"])]);})]));}), (function(){return ((($receiver = smalltalk.send(smalltalk.send(aNode, "_value", []), "__eq", ["thisContext"])).klass === smalltalk.Boolean) ? ($receiver ? (function(){return smalltalk.send(self['@stream'], "_nextPutAll_", ["(smalltalk.getThisContext())"]);})() : (function(){return smalltalk.send(self['@stream'], "_nextPutAll_", [varName]);})()) : smalltalk.send($receiver, "_ifTrue_ifFalse_", [(function(){return smalltalk.send(self['@stream'], "_nextPutAll_", ["(smalltalk.getThisContext())"]);}), (function(){return smalltalk.send(self['@stream'], "_nextPutAll_", [varName]);})]));})]));})]));
@@ -2732,7 +2815,7 @@ smalltalk.addMethod(
2732
2815
  smalltalk.method({
2733
2816
  selector: "performOptimizations",
2734
2817
  category: 'accessing',
2735
- fn: function (){
2818
+ fn: function () {
2736
2819
  var self=this;
2737
2820
  return (($receiver = self['@performOptimizations']) == nil || $receiver == undefined) ? (function(){return true;})() : $receiver;
2738
2821
  return self;},
@@ -2748,7 +2831,7 @@ smalltalk.addMethod(
2748
2831
  smalltalk.method({
2749
2832
  selector: "performOptimizations:",
2750
2833
  category: 'accessing',
2751
- fn: function (aBoolean){
2834
+ fn: function (aBoolean) {
2752
2835
  var self=this;
2753
2836
  (self['@performOptimizations']=aBoolean);
2754
2837
  return self;},
@@ -2760,3 +2843,1173 @@ referencedClasses: []
2760
2843
  smalltalk.FunCodeGenerator.klass);
2761
2844
 
2762
2845
 
2846
+ smalltalk.addClass('ImpCodeGenerator', smalltalk.AbstractCodeGenerator, ['stream', 'nestedBlocks', 'earlyReturn', 'currentSelector', 'unknownVariables', 'tempVariables', 'messageSends', 'referencedClasses', 'classReferenced', 'argVariables', 'mutables', 'target', 'lazyVars', 'realVarNames'], 'Compiler');
2847
+ smalltalk.addMethod(
2848
+ "_aboutToModifyState",
2849
+ smalltalk.method({
2850
+ selector: "aboutToModifyState",
2851
+ category: 'compilation DSL',
2852
+ fn: function (){
2853
+ var self=this;
2854
+ var list=nil;
2855
+ var old=nil;
2856
+ (list=self['@mutables']);
2857
+ (self['@mutables']=smalltalk.send((smalltalk.Set || Set), "_new", []));
2858
+ (old=smalltalk.send(self, "_switchTarget_", [nil]));
2859
+ smalltalk.send(list, "_do_", [(function(each){var value=nil;
2860
+ smalltalk.send(self, "_switchTarget_", [each]);return smalltalk.send(self, "_realAssign_", [smalltalk.send(self['@lazyVars'], "_at_", [each])]);})]);
2861
+ smalltalk.send(self, "_switchTarget_", [old]);
2862
+ return self;},
2863
+ args: [],
2864
+ source: "aboutToModifyState\x0a| list old |\x0a\x09list := mutables.\x0a\x09mutables := Set new.\x0a\x09old := self switchTarget: nil.\x0a\x09list do: [ :each | | value |\x0a\x09\x09self switchTarget: each.\x0a\x09\x09self realAssign: (lazyVars at: each)\x0a\x09].\x0a\x09self switchTarget: old",
2865
+ messageSends: ["new", "switchTarget:", "do:", "realAssign:", "at:"],
2866
+ referencedClasses: ["Set"]
2867
+ }),
2868
+ smalltalk.ImpCodeGenerator);
2869
+
2870
+ smalltalk.addMethod(
2871
+ "_argVariables",
2872
+ smalltalk.method({
2873
+ selector: "argVariables",
2874
+ category: 'accessing',
2875
+ fn: function () {
2876
+ var self=this;
2877
+ return smalltalk.send(self['@argVariables'], "_copy", []);
2878
+ return self;},
2879
+ args: [],
2880
+ source: "argVariables\x0a\x09^argVariables copy",
2881
+ messageSends: ["copy"],
2882
+ referencedClasses: []
2883
+ }),
2884
+ smalltalk.ImpCodeGenerator);
2885
+
2886
+ smalltalk.addMethod(
2887
+ "_assert_",
2888
+ smalltalk.method({
2889
+ selector: "assert:",
2890
+ category: 'testing',
2891
+ fn: function (aBoolean) {
2892
+ var self=this;
2893
+ ((($receiver = aBoolean).klass === smalltalk.Boolean) ? (! $receiver ? (function(){return smalltalk.send(self, "_error_", ["assertion failed"]);})() : nil) : smalltalk.send($receiver, "_ifFalse_", [(function(){return smalltalk.send(self, "_error_", ["assertion failed"]);})]));
2894
+ return self;},
2895
+ args: ["aBoolean"],
2896
+ source: "assert: aBoolean\x0a\x09aBoolean ifFalse: [ self error: 'assertion failed' ]",
2897
+ messageSends: ["ifFalse:", "error:"],
2898
+ referencedClasses: []
2899
+ }),
2900
+ smalltalk.ImpCodeGenerator);
2901
+
2902
+ smalltalk.addMethod(
2903
+ "_checkClass_for_",
2904
+ smalltalk.method({
2905
+ selector: "checkClass:for:",
2906
+ category: 'optimizations',
2907
+ fn: function (aClassName, receiver) {
2908
+ var self=this;
2909
+ smalltalk.send(self, "_prvCheckClass_for_", [aClassName, receiver]);
2910
+ smalltalk.send(self['@stream'], "_nextPutAll_", ["{"]);
2911
+ return self;},
2912
+ args: ["aClassName", "receiver"],
2913
+ source: "checkClass: aClassName for: receiver\x0a\x09self prvCheckClass: aClassName for: receiver.\x0a\x09stream nextPutAll: '{'",
2914
+ messageSends: ["prvCheckClass:for:", "nextPutAll:"],
2915
+ referencedClasses: []
2916
+ }),
2917
+ smalltalk.ImpCodeGenerator);
2918
+
2919
+ smalltalk.addMethod(
2920
+ "_checkClass_for_includeIf_",
2921
+ smalltalk.method({
2922
+ selector: "checkClass:for:includeIf:",
2923
+ category: 'optimizations',
2924
+ fn: function (aClassName, receiver, aBoolean){
2925
+ var self=this;
2926
+ smalltalk.send(self, "_prvCheckClass_for_", [aClassName, receiver]);
2927
+ smalltalk.send(self['@stream'], "_nextPutAll_", [smalltalk.send(smalltalk.send(((($receiver = aBoolean).klass === smalltalk.Boolean) ? ($receiver ? (function(){return "if((";})() : (function(){return "if(!(";})()) : smalltalk.send($receiver, "_ifTrue_ifFalse_", [(function(){return "if((";}), (function(){return "if(!(";})])), "__comma", [smalltalk.send(self, "_useValueNamed_", [receiver])]), "__comma", [")) {"])]);
2928
+ return self;},
2929
+ args: ["aClassName", "receiver", "aBoolean"],
2930
+ source: "checkClass: aClassName for: receiver includeIf: aBoolean\x0a\x09self prvCheckClass: aClassName for: receiver.\x0a\x09stream nextPutAll: (aBoolean ifTrue: ['if(('] ifFalse: ['if(!(']), (self useValueNamed: receiver), ')) {'",
2931
+ messageSends: ["prvCheckClass:for:", "nextPutAll:", ",", "ifTrue:ifFalse:", "useValueNamed:"],
2932
+ referencedClasses: []
2933
+ }),
2934
+ smalltalk.ImpCodeGenerator);
2935
+
2936
+ smalltalk.addMethod(
2937
+ "_compileNode_",
2938
+ smalltalk.method({
2939
+ selector: "compileNode:",
2940
+ category: 'compiling',
2941
+ fn: function (aNode) {
2942
+ var self=this;
2943
+ (self['@stream']=smalltalk.send("", "_writeStream", []));
2944
+ smalltalk.send(self, "_visit_", [aNode]);
2945
+ return smalltalk.send(self['@stream'], "_contents", []);
2946
+ return self;},
2947
+ args: ["aNode"],
2948
+ source: "compileNode: aNode\x0a\x09stream := '' writeStream.\x0a\x09self visit: aNode.\x0a\x09^stream contents",
2949
+ messageSends: ["writeStream", "visit:", "contents"],
2950
+ referencedClasses: []
2951
+ }),
2952
+ smalltalk.ImpCodeGenerator);
2953
+
2954
+ smalltalk.addMethod(
2955
+ "_ifValueWanted_",
2956
+ smalltalk.method({
2957
+ selector: "ifValueWanted:",
2958
+ category: 'compilation DSL',
2959
+ fn: function (aBlock){
2960
+ var self=this;
2961
+ smalltalk.send(self['@target'], "_ifNotNil_", [aBlock]);
2962
+ return self;},
2963
+ args: ["aBlock"],
2964
+ source: "ifValueWanted: aBlock\x0a\x09target ifNotNil: aBlock",
2965
+ messageSends: ["ifNotNil:"],
2966
+ referencedClasses: []
2967
+ }),
2968
+ smalltalk.ImpCodeGenerator);
2969
+
2970
+ smalltalk.addMethod(
2971
+ "_initialize",
2972
+ smalltalk.method({
2973
+ selector: "initialize",
2974
+ category: 'initialization',
2975
+ fn: function (){
2976
+ var self=this;
2977
+ smalltalk.send(self, "_initialize", [], smalltalk.ImpCodeGenerator.superclass || nil);
2978
+ (self['@stream']=smalltalk.send("", "_writeStream", []));
2979
+ (self['@unknownVariables']=[]);
2980
+ (self['@tempVariables']=[]);
2981
+ (self['@argVariables']=[]);
2982
+ (self['@messageSends']=[]);
2983
+ (self['@classReferenced']=[]);
2984
+ (self['@mutables']=smalltalk.send((smalltalk.Set || Set), "_new", []));
2985
+ (self['@realVarNames']=smalltalk.send((smalltalk.Set || Set), "_new", []));
2986
+ (self['@lazyVars']=smalltalk.send((smalltalk.HashedCollection || HashedCollection), "_new", []));
2987
+ (self['@target']=nil);
2988
+ return self;},
2989
+ args: [],
2990
+ source: "initialize\x0a\x09super initialize.\x0a\x09stream := '' writeStream. \x0a\x09unknownVariables := #().\x0a\x09tempVariables := #().\x0a\x09argVariables := #().\x0a\x09messageSends := #().\x0a\x09classReferenced := #().\x0a\x09mutables := Set new.\x0a\x09realVarNames := Set new.\x0a\x09lazyVars := HashedCollection new.\x0a\x09target := nil\x0a",
2991
+ messageSends: ["initialize", "writeStream", "new"],
2992
+ referencedClasses: ["Set", "HashedCollection"]
2993
+ }),
2994
+ smalltalk.ImpCodeGenerator);
2995
+
2996
+ smalltalk.addMethod(
2997
+ "_inline_receiver_argumentNodes_",
2998
+ smalltalk.method({
2999
+ selector: "inline:receiver:argumentNodes:",
3000
+ category: 'optimizations',
3001
+ fn: function (aSelector, receiver, aCollection){
3002
+ var self=this;
3003
+ var $early={};
3004
+ try{((($receiver = smalltalk.send(aSelector, "__eq", ["ifFalse:"])).klass === smalltalk.Boolean) ? ($receiver ? (function(){return ((($receiver = smalltalk.send(smalltalk.send(aCollection, "_first", []), "_isBlockNode", [])).klass === smalltalk.Boolean) ? ($receiver ? (function(){smalltalk.send(self, "_checkClass_for_includeIf_", ["Boolean", receiver, false]);smalltalk.send(self, "_prvPutAndElse_", [(function(){return smalltalk.send(self, "_visit_", [smalltalk.send(smalltalk.send(smalltalk.send(aCollection, "_first", []), "_nodes", []), "_first", [])]);})]);smalltalk.send(self, "_prvPutAndElse_", [(function(){return smalltalk.send(self, "_nilIfValueWanted", []);})]);return (function(){throw $early=[true]})();})() : nil) : smalltalk.send($receiver, "_ifTrue_", [(function(){smalltalk.send(self, "_checkClass_for_includeIf_", ["Boolean", receiver, false]);smalltalk.send(self, "_prvPutAndElse_", [(function(){return smalltalk.send(self, "_visit_", [smalltalk.send(smalltalk.send(smalltalk.send(aCollection, "_first", []), "_nodes", []), "_first", [])]);})]);smalltalk.send(self, "_prvPutAndElse_", [(function(){return smalltalk.send(self, "_nilIfValueWanted", []);})]);return (function(){throw $early=[true]})();})]));})() : nil) : smalltalk.send($receiver, "_ifTrue_", [(function(){return ((($receiver = smalltalk.send(smalltalk.send(aCollection, "_first", []), "_isBlockNode", [])).klass === smalltalk.Boolean) ? ($receiver ? (function(){smalltalk.send(self, "_checkClass_for_includeIf_", ["Boolean", receiver, false]);smalltalk.send(self, "_prvPutAndElse_", [(function(){return smalltalk.send(self, "_visit_", [smalltalk.send(smalltalk.send(smalltalk.send(aCollection, "_first", []), "_nodes", []), "_first", [])]);})]);smalltalk.send(self, "_prvPutAndElse_", [(function(){return smalltalk.send(self, "_nilIfValueWanted", []);})]);return (function(){throw $early=[true]})();})() : nil) : smalltalk.send($receiver, "_ifTrue_", [(function(){smalltalk.send(self, "_checkClass_for_includeIf_", ["Boolean", receiver, false]);smalltalk.send(self, "_prvPutAndElse_", [(function(){return smalltalk.send(self, "_visit_", [smalltalk.send(smalltalk.send(smalltalk.send(aCollection, "_first", []), "_nodes", []), "_first", [])]);})]);smalltalk.send(self, "_prvPutAndElse_", [(function(){return smalltalk.send(self, "_nilIfValueWanted", []);})]);return (function(){throw $early=[true]})();})]));})]));
3005
+ ((($receiver = smalltalk.send(aSelector, "__eq", ["ifTrue:"])).klass === smalltalk.Boolean) ? ($receiver ? (function(){return ((($receiver = smalltalk.send(smalltalk.send(aCollection, "_first", []), "_isBlockNode", [])).klass === smalltalk.Boolean) ? ($receiver ? (function(){smalltalk.send(self, "_checkClass_for_includeIf_", ["Boolean", receiver, true]);smalltalk.send(self, "_prvPutAndElse_", [(function(){return smalltalk.send(self, "_visit_", [smalltalk.send(smalltalk.send(smalltalk.send(aCollection, "_first", []), "_nodes", []), "_first", [])]);})]);smalltalk.send(self, "_prvPutAndElse_", [(function(){return smalltalk.send(self, "_nilIfValueWanted", []);})]);return (function(){throw $early=[true]})();})() : nil) : smalltalk.send($receiver, "_ifTrue_", [(function(){smalltalk.send(self, "_checkClass_for_includeIf_", ["Boolean", receiver, true]);smalltalk.send(self, "_prvPutAndElse_", [(function(){return smalltalk.send(self, "_visit_", [smalltalk.send(smalltalk.send(smalltalk.send(aCollection, "_first", []), "_nodes", []), "_first", [])]);})]);smalltalk.send(self, "_prvPutAndElse_", [(function(){return smalltalk.send(self, "_nilIfValueWanted", []);})]);return (function(){throw $early=[true]})();})]));})() : nil) : smalltalk.send($receiver, "_ifTrue_", [(function(){return ((($receiver = smalltalk.send(smalltalk.send(aCollection, "_first", []), "_isBlockNode", [])).klass === smalltalk.Boolean) ? ($receiver ? (function(){smalltalk.send(self, "_checkClass_for_includeIf_", ["Boolean", receiver, true]);smalltalk.send(self, "_prvPutAndElse_", [(function(){return smalltalk.send(self, "_visit_", [smalltalk.send(smalltalk.send(smalltalk.send(aCollection, "_first", []), "_nodes", []), "_first", [])]);})]);smalltalk.send(self, "_prvPutAndElse_", [(function(){return smalltalk.send(self, "_nilIfValueWanted", []);})]);return (function(){throw $early=[true]})();})() : nil) : smalltalk.send($receiver, "_ifTrue_", [(function(){smalltalk.send(self, "_checkClass_for_includeIf_", ["Boolean", receiver, true]);smalltalk.send(self, "_prvPutAndElse_", [(function(){return smalltalk.send(self, "_visit_", [smalltalk.send(smalltalk.send(smalltalk.send(aCollection, "_first", []), "_nodes", []), "_first", [])]);})]);smalltalk.send(self, "_prvPutAndElse_", [(function(){return smalltalk.send(self, "_nilIfValueWanted", []);})]);return (function(){throw $early=[true]})();})]));})]));
3006
+ ((($receiver = smalltalk.send(aSelector, "__eq", ["ifTrue:ifFalse:"])).klass === smalltalk.Boolean) ? ($receiver ? (function(){return ((($receiver = smalltalk.send(smalltalk.send(smalltalk.send(aCollection, "_first", []), "_isBlockNode", []), "_and_", [(function(){return smalltalk.send(smalltalk.send(aCollection, "_second", []), "_isBlockNode", []);})])).klass === smalltalk.Boolean) ? ($receiver ? (function(){smalltalk.send(self, "_checkClass_for_includeIf_", ["Boolean", receiver, true]);smalltalk.send(self, "_prvPutAndElse_", [(function(){return smalltalk.send(self, "_visit_", [smalltalk.send(smalltalk.send(smalltalk.send(aCollection, "_first", []), "_nodes", []), "_first", [])]);})]);smalltalk.send(self, "_prvPutAndElse_", [(function(){return smalltalk.send(self, "_visit_", [smalltalk.send(smalltalk.send(smalltalk.send(aCollection, "_second", []), "_nodes", []), "_first", [])]);})]);return (function(){throw $early=[true]})();})() : nil) : smalltalk.send($receiver, "_ifTrue_", [(function(){smalltalk.send(self, "_checkClass_for_includeIf_", ["Boolean", receiver, true]);smalltalk.send(self, "_prvPutAndElse_", [(function(){return smalltalk.send(self, "_visit_", [smalltalk.send(smalltalk.send(smalltalk.send(aCollection, "_first", []), "_nodes", []), "_first", [])]);})]);smalltalk.send(self, "_prvPutAndElse_", [(function(){return smalltalk.send(self, "_visit_", [smalltalk.send(smalltalk.send(smalltalk.send(aCollection, "_second", []), "_nodes", []), "_first", [])]);})]);return (function(){throw $early=[true]})();})]));})() : nil) : smalltalk.send($receiver, "_ifTrue_", [(function(){return ((($receiver = smalltalk.send(smalltalk.send(smalltalk.send(aCollection, "_first", []), "_isBlockNode", []), "_and_", [(function(){return smalltalk.send(smalltalk.send(aCollection, "_second", []), "_isBlockNode", []);})])).klass === smalltalk.Boolean) ? ($receiver ? (function(){smalltalk.send(self, "_checkClass_for_includeIf_", ["Boolean", receiver, true]);smalltalk.send(self, "_prvPutAndElse_", [(function(){return smalltalk.send(self, "_visit_", [smalltalk.send(smalltalk.send(smalltalk.send(aCollection, "_first", []), "_nodes", []), "_first", [])]);})]);smalltalk.send(self, "_prvPutAndElse_", [(function(){return smalltalk.send(self, "_visit_", [smalltalk.send(smalltalk.send(smalltalk.send(aCollection, "_second", []), "_nodes", []), "_first", [])]);})]);return (function(){throw $early=[true]})();})() : nil) : smalltalk.send($receiver, "_ifTrue_", [(function(){smalltalk.send(self, "_checkClass_for_includeIf_", ["Boolean", receiver, true]);smalltalk.send(self, "_prvPutAndElse_", [(function(){return smalltalk.send(self, "_visit_", [smalltalk.send(smalltalk.send(smalltalk.send(aCollection, "_first", []), "_nodes", []), "_first", [])]);})]);smalltalk.send(self, "_prvPutAndElse_", [(function(){return smalltalk.send(self, "_visit_", [smalltalk.send(smalltalk.send(smalltalk.send(aCollection, "_second", []), "_nodes", []), "_first", [])]);})]);return (function(){throw $early=[true]})();})]));})]));
3007
+ ((($receiver = smalltalk.send(aSelector, "__eq", ["ifFalse:ifTrue:"])).klass === smalltalk.Boolean) ? ($receiver ? (function(){return ((($receiver = smalltalk.send(smalltalk.send(smalltalk.send(aCollection, "_first", []), "_isBlockNode", []), "_and_", [(function(){return smalltalk.send(smalltalk.send(aCollection, "_second", []), "_isBlockNode", []);})])).klass === smalltalk.Boolean) ? ($receiver ? (function(){smalltalk.send(self, "_checkClass_for_includeIf_", ["Boolean", receiver, false]);smalltalk.send(self, "_prvPutAndElse_", [(function(){return smalltalk.send(self, "_visit_", [smalltalk.send(smalltalk.send(smalltalk.send(aCollection, "_first", []), "_nodes", []), "_first", [])]);})]);smalltalk.send(self, "_prvPutAndElse_", [(function(){return smalltalk.send(self, "_visit_", [smalltalk.send(smalltalk.send(smalltalk.send(aCollection, "_second", []), "_nodes", []), "_first", [])]);})]);return (function(){throw $early=[true]})();})() : nil) : smalltalk.send($receiver, "_ifTrue_", [(function(){smalltalk.send(self, "_checkClass_for_includeIf_", ["Boolean", receiver, false]);smalltalk.send(self, "_prvPutAndElse_", [(function(){return smalltalk.send(self, "_visit_", [smalltalk.send(smalltalk.send(smalltalk.send(aCollection, "_first", []), "_nodes", []), "_first", [])]);})]);smalltalk.send(self, "_prvPutAndElse_", [(function(){return smalltalk.send(self, "_visit_", [smalltalk.send(smalltalk.send(smalltalk.send(aCollection, "_second", []), "_nodes", []), "_first", [])]);})]);return (function(){throw $early=[true]})();})]));})() : nil) : smalltalk.send($receiver, "_ifTrue_", [(function(){return ((($receiver = smalltalk.send(smalltalk.send(smalltalk.send(aCollection, "_first", []), "_isBlockNode", []), "_and_", [(function(){return smalltalk.send(smalltalk.send(aCollection, "_second", []), "_isBlockNode", []);})])).klass === smalltalk.Boolean) ? ($receiver ? (function(){smalltalk.send(self, "_checkClass_for_includeIf_", ["Boolean", receiver, false]);smalltalk.send(self, "_prvPutAndElse_", [(function(){return smalltalk.send(self, "_visit_", [smalltalk.send(smalltalk.send(smalltalk.send(aCollection, "_first", []), "_nodes", []), "_first", [])]);})]);smalltalk.send(self, "_prvPutAndElse_", [(function(){return smalltalk.send(self, "_visit_", [smalltalk.send(smalltalk.send(smalltalk.send(aCollection, "_second", []), "_nodes", []), "_first", [])]);})]);return (function(){throw $early=[true]})();})() : nil) : smalltalk.send($receiver, "_ifTrue_", [(function(){smalltalk.send(self, "_checkClass_for_includeIf_", ["Boolean", receiver, false]);smalltalk.send(self, "_prvPutAndElse_", [(function(){return smalltalk.send(self, "_visit_", [smalltalk.send(smalltalk.send(smalltalk.send(aCollection, "_first", []), "_nodes", []), "_first", [])]);})]);smalltalk.send(self, "_prvPutAndElse_", [(function(){return smalltalk.send(self, "_visit_", [smalltalk.send(smalltalk.send(smalltalk.send(aCollection, "_second", []), "_nodes", []), "_first", [])]);})]);return (function(){throw $early=[true]})();})]));})]));
3008
+ ((($receiver = smalltalk.send(aSelector, "__eq", ["<"])).klass === smalltalk.Boolean) ? ($receiver ? (function(){var operand=nil;
3009
+ (operand=smalltalk.send(self, "_isolatedUse_", [smalltalk.send(aCollection, "_first", [])]));smalltalk.send(self, "_checkClass_for_", ["Number", receiver]);smalltalk.send(self, "_prvPutAndElse_", [(function(){return smalltalk.send(self, "_lazyAssignExpression_", [smalltalk.send(smalltalk.send(smalltalk.send(smalltalk.send("(", "__comma", [smalltalk.send(self, "_useValueNamed_", [receiver])]), "__comma", ["<"]), "__comma", [operand]), "__comma", [")"])]);})]);return (function(){throw $early=[[smalltalk.send(smalltalk.send((smalltalk.VerbatimNode || VerbatimNode), "_new", []), "_value_", [operand])]]})();})() : nil) : smalltalk.send($receiver, "_ifTrue_", [(function(){var operand=nil;
3010
+ (operand=smalltalk.send(self, "_isolatedUse_", [smalltalk.send(aCollection, "_first", [])]));smalltalk.send(self, "_checkClass_for_", ["Number", receiver]);smalltalk.send(self, "_prvPutAndElse_", [(function(){return smalltalk.send(self, "_lazyAssignExpression_", [smalltalk.send(smalltalk.send(smalltalk.send(smalltalk.send("(", "__comma", [smalltalk.send(self, "_useValueNamed_", [receiver])]), "__comma", ["<"]), "__comma", [operand]), "__comma", [")"])]);})]);return (function(){throw $early=[[smalltalk.send(smalltalk.send((smalltalk.VerbatimNode || VerbatimNode), "_new", []), "_value_", [operand])]]})();})]));
3011
+ ((($receiver = smalltalk.send(aSelector, "__eq", ["<="])).klass === smalltalk.Boolean) ? ($receiver ? (function(){var operand=nil;
3012
+ (operand=smalltalk.send(self, "_isolatedUse_", [smalltalk.send(aCollection, "_first", [])]));smalltalk.send(self, "_checkClass_for_", ["Number", receiver]);smalltalk.send(self, "_prvPutAndElse_", [(function(){return smalltalk.send(self, "_lazyAssignExpression_", [smalltalk.send(smalltalk.send(smalltalk.send(smalltalk.send("(", "__comma", [smalltalk.send(self, "_useValueNamed_", [receiver])]), "__comma", ["<="]), "__comma", [operand]), "__comma", [")"])]);})]);return (function(){throw $early=[[smalltalk.send(smalltalk.send((smalltalk.VerbatimNode || VerbatimNode), "_new", []), "_value_", [operand])]]})();})() : nil) : smalltalk.send($receiver, "_ifTrue_", [(function(){var operand=nil;
3013
+ (operand=smalltalk.send(self, "_isolatedUse_", [smalltalk.send(aCollection, "_first", [])]));smalltalk.send(self, "_checkClass_for_", ["Number", receiver]);smalltalk.send(self, "_prvPutAndElse_", [(function(){return smalltalk.send(self, "_lazyAssignExpression_", [smalltalk.send(smalltalk.send(smalltalk.send(smalltalk.send("(", "__comma", [smalltalk.send(self, "_useValueNamed_", [receiver])]), "__comma", ["<="]), "__comma", [operand]), "__comma", [")"])]);})]);return (function(){throw $early=[[smalltalk.send(smalltalk.send((smalltalk.VerbatimNode || VerbatimNode), "_new", []), "_value_", [operand])]]})();})]));
3014
+ ((($receiver = smalltalk.send(aSelector, "__eq", [">"])).klass === smalltalk.Boolean) ? ($receiver ? (function(){var operand=nil;
3015
+ (operand=smalltalk.send(self, "_isolatedUse_", [smalltalk.send(aCollection, "_first", [])]));smalltalk.send(self, "_checkClass_for_", ["Number", receiver]);smalltalk.send(self, "_prvPutAndElse_", [(function(){return smalltalk.send(self, "_lazyAssignExpression_", [smalltalk.send(smalltalk.send(smalltalk.send(smalltalk.send("(", "__comma", [smalltalk.send(self, "_useValueNamed_", [receiver])]), "__comma", [">"]), "__comma", [operand]), "__comma", [")"])]);})]);return (function(){throw $early=[[smalltalk.send(smalltalk.send((smalltalk.VerbatimNode || VerbatimNode), "_new", []), "_value_", [operand])]]})();})() : nil) : smalltalk.send($receiver, "_ifTrue_", [(function(){var operand=nil;
3016
+ (operand=smalltalk.send(self, "_isolatedUse_", [smalltalk.send(aCollection, "_first", [])]));smalltalk.send(self, "_checkClass_for_", ["Number", receiver]);smalltalk.send(self, "_prvPutAndElse_", [(function(){return smalltalk.send(self, "_lazyAssignExpression_", [smalltalk.send(smalltalk.send(smalltalk.send(smalltalk.send("(", "__comma", [smalltalk.send(self, "_useValueNamed_", [receiver])]), "__comma", [">"]), "__comma", [operand]), "__comma", [")"])]);})]);return (function(){throw $early=[[smalltalk.send(smalltalk.send((smalltalk.VerbatimNode || VerbatimNode), "_new", []), "_value_", [operand])]]})();})]));
3017
+ ((($receiver = smalltalk.send(aSelector, "__eq", [">="])).klass === smalltalk.Boolean) ? ($receiver ? (function(){var operand=nil;
3018
+ (operand=smalltalk.send(self, "_isolatedUse_", [smalltalk.send(aCollection, "_first", [])]));smalltalk.send(self, "_checkClass_for_", ["Number", receiver]);smalltalk.send(self, "_prvPutAndElse_", [(function(){return smalltalk.send(self, "_lazyAssignExpression_", [smalltalk.send(smalltalk.send(smalltalk.send(smalltalk.send("(", "__comma", [smalltalk.send(self, "_useValueNamed_", [receiver])]), "__comma", [">="]), "__comma", [operand]), "__comma", [")"])]);})]);return (function(){throw $early=[[smalltalk.send(smalltalk.send((smalltalk.VerbatimNode || VerbatimNode), "_new", []), "_value_", [operand])]]})();})() : nil) : smalltalk.send($receiver, "_ifTrue_", [(function(){var operand=nil;
3019
+ (operand=smalltalk.send(self, "_isolatedUse_", [smalltalk.send(aCollection, "_first", [])]));smalltalk.send(self, "_checkClass_for_", ["Number", receiver]);smalltalk.send(self, "_prvPutAndElse_", [(function(){return smalltalk.send(self, "_lazyAssignExpression_", [smalltalk.send(smalltalk.send(smalltalk.send(smalltalk.send("(", "__comma", [smalltalk.send(self, "_useValueNamed_", [receiver])]), "__comma", [">="]), "__comma", [operand]), "__comma", [")"])]);})]);return (function(){throw $early=[[smalltalk.send(smalltalk.send((smalltalk.VerbatimNode || VerbatimNode), "_new", []), "_value_", [operand])]]})();})]));
3020
+ ((($receiver = smalltalk.send(aSelector, "__eq", ["+"])).klass === smalltalk.Boolean) ? ($receiver ? (function(){var operand=nil;
3021
+ (operand=smalltalk.send(self, "_isolatedUse_", [smalltalk.send(aCollection, "_first", [])]));smalltalk.send(self, "_checkClass_for_", ["Number", receiver]);smalltalk.send(self, "_prvPutAndElse_", [(function(){return smalltalk.send(self, "_lazyAssignExpression_", [smalltalk.send(smalltalk.send(smalltalk.send(smalltalk.send("(", "__comma", [smalltalk.send(self, "_useValueNamed_", [receiver])]), "__comma", ["+"]), "__comma", [operand]), "__comma", [")"])]);})]);return (function(){throw $early=[[smalltalk.send(smalltalk.send((smalltalk.VerbatimNode || VerbatimNode), "_new", []), "_value_", [operand])]]})();})() : nil) : smalltalk.send($receiver, "_ifTrue_", [(function(){var operand=nil;
3022
+ (operand=smalltalk.send(self, "_isolatedUse_", [smalltalk.send(aCollection, "_first", [])]));smalltalk.send(self, "_checkClass_for_", ["Number", receiver]);smalltalk.send(self, "_prvPutAndElse_", [(function(){return smalltalk.send(self, "_lazyAssignExpression_", [smalltalk.send(smalltalk.send(smalltalk.send(smalltalk.send("(", "__comma", [smalltalk.send(self, "_useValueNamed_", [receiver])]), "__comma", ["+"]), "__comma", [operand]), "__comma", [")"])]);})]);return (function(){throw $early=[[smalltalk.send(smalltalk.send((smalltalk.VerbatimNode || VerbatimNode), "_new", []), "_value_", [operand])]]})();})]));
3023
+ ((($receiver = smalltalk.send(aSelector, "__eq", ["-"])).klass === smalltalk.Boolean) ? ($receiver ? (function(){var operand=nil;
3024
+ (operand=smalltalk.send(self, "_isolatedUse_", [smalltalk.send(aCollection, "_first", [])]));smalltalk.send(self, "_checkClass_for_", ["Number", receiver]);smalltalk.send(self, "_prvPutAndElse_", [(function(){return smalltalk.send(self, "_lazyAssignExpression_", [smalltalk.send(smalltalk.send(smalltalk.send(smalltalk.send("(", "__comma", [smalltalk.send(self, "_useValueNamed_", [receiver])]), "__comma", ["-"]), "__comma", [operand]), "__comma", [")"])]);})]);return (function(){throw $early=[[smalltalk.send(smalltalk.send((smalltalk.VerbatimNode || VerbatimNode), "_new", []), "_value_", [operand])]]})();})() : nil) : smalltalk.send($receiver, "_ifTrue_", [(function(){var operand=nil;
3025
+ (operand=smalltalk.send(self, "_isolatedUse_", [smalltalk.send(aCollection, "_first", [])]));smalltalk.send(self, "_checkClass_for_", ["Number", receiver]);smalltalk.send(self, "_prvPutAndElse_", [(function(){return smalltalk.send(self, "_lazyAssignExpression_", [smalltalk.send(smalltalk.send(smalltalk.send(smalltalk.send("(", "__comma", [smalltalk.send(self, "_useValueNamed_", [receiver])]), "__comma", ["-"]), "__comma", [operand]), "__comma", [")"])]);})]);return (function(){throw $early=[[smalltalk.send(smalltalk.send((smalltalk.VerbatimNode || VerbatimNode), "_new", []), "_value_", [operand])]]})();})]));
3026
+ ((($receiver = smalltalk.send(aSelector, "__eq", ["*"])).klass === smalltalk.Boolean) ? ($receiver ? (function(){var operand=nil;
3027
+ (operand=smalltalk.send(self, "_isolatedUse_", [smalltalk.send(aCollection, "_first", [])]));smalltalk.send(self, "_checkClass_for_", ["Number", receiver]);smalltalk.send(self, "_prvPutAndElse_", [(function(){return smalltalk.send(self, "_lazyAssignExpression_", [smalltalk.send(smalltalk.send(smalltalk.send(smalltalk.send("(", "__comma", [smalltalk.send(self, "_useValueNamed_", [receiver])]), "__comma", ["*"]), "__comma", [operand]), "__comma", [")"])]);})]);return (function(){throw $early=[[smalltalk.send(smalltalk.send((smalltalk.VerbatimNode || VerbatimNode), "_new", []), "_value_", [operand])]]})();})() : nil) : smalltalk.send($receiver, "_ifTrue_", [(function(){var operand=nil;
3028
+ (operand=smalltalk.send(self, "_isolatedUse_", [smalltalk.send(aCollection, "_first", [])]));smalltalk.send(self, "_checkClass_for_", ["Number", receiver]);smalltalk.send(self, "_prvPutAndElse_", [(function(){return smalltalk.send(self, "_lazyAssignExpression_", [smalltalk.send(smalltalk.send(smalltalk.send(smalltalk.send("(", "__comma", [smalltalk.send(self, "_useValueNamed_", [receiver])]), "__comma", ["*"]), "__comma", [operand]), "__comma", [")"])]);})]);return (function(){throw $early=[[smalltalk.send(smalltalk.send((smalltalk.VerbatimNode || VerbatimNode), "_new", []), "_value_", [operand])]]})();})]));
3029
+ ((($receiver = smalltalk.send(aSelector, "__eq", ["/"])).klass === smalltalk.Boolean) ? ($receiver ? (function(){var operand=nil;
3030
+ (operand=smalltalk.send(self, "_isolatedUse_", [smalltalk.send(aCollection, "_first", [])]));smalltalk.send(self, "_checkClass_for_", ["Number", receiver]);smalltalk.send(self, "_prvPutAndElse_", [(function(){return smalltalk.send(self, "_lazyAssignExpression_", [smalltalk.send(smalltalk.send(smalltalk.send(smalltalk.send("(", "__comma", [smalltalk.send(self, "_useValueNamed_", [receiver])]), "__comma", ["/"]), "__comma", [operand]), "__comma", [")"])]);})]);return (function(){throw $early=[[smalltalk.send(smalltalk.send((smalltalk.VerbatimNode || VerbatimNode), "_new", []), "_value_", [operand])]]})();})() : nil) : smalltalk.send($receiver, "_ifTrue_", [(function(){var operand=nil;
3031
+ (operand=smalltalk.send(self, "_isolatedUse_", [smalltalk.send(aCollection, "_first", [])]));smalltalk.send(self, "_checkClass_for_", ["Number", receiver]);smalltalk.send(self, "_prvPutAndElse_", [(function(){return smalltalk.send(self, "_lazyAssignExpression_", [smalltalk.send(smalltalk.send(smalltalk.send(smalltalk.send("(", "__comma", [smalltalk.send(self, "_useValueNamed_", [receiver])]), "__comma", ["/"]), "__comma", [operand]), "__comma", [")"])]);})]);return (function(){throw $early=[[smalltalk.send(smalltalk.send((smalltalk.VerbatimNode || VerbatimNode), "_new", []), "_value_", [operand])]]})();})]));
3032
+ return nil;
3033
+ return self;
3034
+ } catch(e) {if(e===$early)return e[0]; throw e}},
3035
+ args: ["aSelector", "receiver", "aCollection"],
3036
+ source: "inline: aSelector receiver: receiver argumentNodes: aCollection\x0a\x0a\x09\x22-- Booleans --\x22\x0a\x0a\x09(aSelector = 'ifFalse:') ifTrue: [\x0a\x09\x09aCollection first isBlockNode ifTrue: [\x0a\x09\x09\x09self checkClass: 'Boolean' for: receiver includeIf: false.\x0a\x09\x09\x09self prvPutAndElse: [ self visit: aCollection first nodes first ].\x0a\x09\x09\x09self prvPutAndElse: [ self nilIfValueWanted ].\x0a\x09\x09\x09^true]].\x0a\x0a\x09(aSelector = 'ifTrue:') ifTrue: [\x0a\x09\x09aCollection first isBlockNode ifTrue: [\x0a\x09\x09\x09self checkClass: 'Boolean' for: receiver includeIf: true.\x0a\x09\x09\x09self prvPutAndElse: [ self visit: aCollection first nodes first ].\x0a\x09\x09\x09self prvPutAndElse: [ self nilIfValueWanted ].\x0a\x09\x09\x09^true]].\x0a\x0a\x09(aSelector = 'ifTrue:ifFalse:') ifTrue: [\x0a\x09\x09(aCollection first isBlockNode and: [aCollection second isBlockNode]) ifTrue: [\x0a\x09\x09\x09self checkClass: 'Boolean' for: receiver includeIf: true.\x0a\x09\x09\x09self prvPutAndElse: [ self visit: aCollection first nodes first ].\x0a\x09\x09\x09self prvPutAndElse: [ self visit: aCollection second nodes first ].\x0a\x09\x09\x09^true]].\x0a\x0a\x09(aSelector = 'ifFalse:ifTrue:') ifTrue: [\x0a\x09\x09(aCollection first isBlockNode and: [aCollection second isBlockNode]) ifTrue: [\x0a\x09\x09\x09self checkClass: 'Boolean' for: receiver includeIf: false.\x0a\x09\x09\x09self prvPutAndElse: [ self visit: aCollection first nodes first ].\x0a\x09\x09\x09self prvPutAndElse: [ self visit: aCollection second nodes first ].\x0a\x09\x09\x09^true]].\x0a\x0a\x09\x22-- Numbers --\x22\x0a\x0a\x09(aSelector = '<') ifTrue: [ | operand |\x0a\x09\x09operand := self isolatedUse: aCollection first.\x0a\x09\x09self checkClass: 'Number' for: receiver.\x0a\x09\x09self prvPutAndElse: [\x0a\x09\x09\x09self lazyAssignExpression: '(', (self useValueNamed: receiver), '<', operand, ')' ].\x0a\x09\x09^{ VerbatimNode new value: operand }].\x0a\x0a\x09(aSelector = '<=') ifTrue: [ | operand |\x0a\x09\x09operand := self isolatedUse: aCollection first.\x0a\x09\x09self checkClass: 'Number' for: receiver.\x0a\x09\x09self prvPutAndElse: [\x0a\x09\x09\x09self lazyAssignExpression: '(', (self useValueNamed: receiver), '<=', operand, ')' ].\x0a\x09\x09^{ VerbatimNode new value: operand }].\x0a\x0a\x09(aSelector = '>') ifTrue: [ | operand |\x0a\x09\x09operand := self isolatedUse: aCollection first.\x0a\x09\x09self checkClass: 'Number' for: receiver.\x0a\x09\x09self prvPutAndElse: [\x0a\x09\x09\x09self lazyAssignExpression: '(', (self useValueNamed: receiver), '>', operand, ')' ].\x0a\x09\x09^{ VerbatimNode new value: operand }].\x0a\x0a\x09(aSelector = '>=') ifTrue: [ | operand |\x0a\x09\x09operand := self isolatedUse: aCollection first.\x0a\x09\x09self checkClass: 'Number' for: receiver.\x0a\x09\x09self prvPutAndElse: [\x0a\x09\x09\x09self lazyAssignExpression: '(', (self useValueNamed: receiver), '>=', operand, ')' ].\x0a\x09\x09^{ VerbatimNode new value: operand }].\x0a\x0a (aSelector = '+') ifTrue: [ | operand |\x0a\x09\x09operand := self isolatedUse: aCollection first.\x0a\x09\x09self checkClass: 'Number' for: receiver.\x0a\x09\x09self prvPutAndElse: [\x0a\x09\x09\x09self lazyAssignExpression: '(', (self useValueNamed: receiver), '+', operand, ')' ].\x0a\x09\x09^{ VerbatimNode new value: operand }].\x0a\x0a (aSelector = '-') ifTrue: [ | operand |\x0a\x09\x09operand := self isolatedUse: aCollection first.\x0a\x09\x09self checkClass: 'Number' for: receiver.\x0a\x09\x09self prvPutAndElse: [\x0a\x09\x09\x09self lazyAssignExpression: '(', (self useValueNamed: receiver), '-', operand, ')' ].\x0a\x09\x09^{ VerbatimNode new value: operand }].\x0a\x0a (aSelector = '*') ifTrue: [ | operand |\x0a\x09\x09operand := self isolatedUse: aCollection first.\x0a\x09\x09self checkClass: 'Number' for: receiver.\x0a\x09\x09self prvPutAndElse: [\x0a\x09\x09\x09self lazyAssignExpression: '(', (self useValueNamed: receiver), '*', operand, ')' ].\x0a\x09\x09^{ VerbatimNode new value: operand }].\x0a\x0a (aSelector = '/') ifTrue: [ | operand |\x0a\x09\x09operand := self isolatedUse: aCollection first.\x0a\x09\x09self checkClass: 'Number' for: receiver.\x0a\x09\x09self prvPutAndElse: [\x0a\x09\x09\x09self lazyAssignExpression: '(', (self useValueNamed: receiver), '/', operand, ')' ].\x0a\x09\x09^{ VerbatimNode new value: operand }].\x0a\x0a ^nil",
3037
+ messageSends: ["ifTrue:", "=", "isBlockNode", "first", "checkClass:for:includeIf:", "prvPutAndElse:", "visit:", "nodes", "nilIfValueWanted", "and:", "second", "isolatedUse:", "checkClass:for:", "lazyAssignExpression:", ",", "useValueNamed:", "value:", "new"],
3038
+ referencedClasses: ["VerbatimNode"]
3039
+ }),
3040
+ smalltalk.ImpCodeGenerator);
3041
+
3042
+ smalltalk.addMethod(
3043
+ "_inlineLiteral_receiverNode_argumentNodes_",
3044
+ smalltalk.method({
3045
+ selector: "inlineLiteral:receiverNode:argumentNodes:",
3046
+ category: 'optimizations',
3047
+ fn: function (aSelector, anObject, aCollection){
3048
+ var self=this;
3049
+ var inlined=nil;
3050
+ (inlined=false);
3051
+ ((($receiver = smalltalk.send(aSelector, "__eq", ["whileTrue:"])).klass === smalltalk.Boolean) ? ($receiver ? (function(){return ((($receiver = smalltalk.send(smalltalk.send(anObject, "_isBlockNode", []), "_and_", [(function(){return smalltalk.send(smalltalk.send(aCollection, "_first", []), "_isBlockNode", []);})])).klass === smalltalk.Boolean) ? ($receiver ? (function(){var old=nil;
3052
+ smalltalk.send(self, "_prvWhileConditionStatement_pre_condition_post_", ["for(;;){", "if (!(", anObject, ")) {"]);smalltalk.send(self['@stream'], "_nextPutAll_", [smalltalk.send("break}", "__comma", [smalltalk.send(self, "_mylf", [])])]);smalltalk.send(self, "_prvPutAndClose_", [(function(){return smalltalk.send(self, "_visit_targetBeing_", [smalltalk.send(smalltalk.send(smalltalk.send(aCollection, "_first", []), "_nodes", []), "_first", []), nil]);})]);return (inlined=true);})() : nil) : smalltalk.send($receiver, "_ifTrue_", [(function(){var old=nil;
3053
+ smalltalk.send(self, "_prvWhileConditionStatement_pre_condition_post_", ["for(;;){", "if (!(", anObject, ")) {"]);smalltalk.send(self['@stream'], "_nextPutAll_", [smalltalk.send("break}", "__comma", [smalltalk.send(self, "_mylf", [])])]);smalltalk.send(self, "_prvPutAndClose_", [(function(){return smalltalk.send(self, "_visit_targetBeing_", [smalltalk.send(smalltalk.send(smalltalk.send(aCollection, "_first", []), "_nodes", []), "_first", []), nil]);})]);return (inlined=true);})]));})() : nil) : smalltalk.send($receiver, "_ifTrue_", [(function(){return ((($receiver = smalltalk.send(smalltalk.send(anObject, "_isBlockNode", []), "_and_", [(function(){return smalltalk.send(smalltalk.send(aCollection, "_first", []), "_isBlockNode", []);})])).klass === smalltalk.Boolean) ? ($receiver ? (function(){var old=nil;
3054
+ smalltalk.send(self, "_prvWhileConditionStatement_pre_condition_post_", ["for(;;){", "if (!(", anObject, ")) {"]);smalltalk.send(self['@stream'], "_nextPutAll_", [smalltalk.send("break}", "__comma", [smalltalk.send(self, "_mylf", [])])]);smalltalk.send(self, "_prvPutAndClose_", [(function(){return smalltalk.send(self, "_visit_targetBeing_", [smalltalk.send(smalltalk.send(smalltalk.send(aCollection, "_first", []), "_nodes", []), "_first", []), nil]);})]);return (inlined=true);})() : nil) : smalltalk.send($receiver, "_ifTrue_", [(function(){var old=nil;
3055
+ smalltalk.send(self, "_prvWhileConditionStatement_pre_condition_post_", ["for(;;){", "if (!(", anObject, ")) {"]);smalltalk.send(self['@stream'], "_nextPutAll_", [smalltalk.send("break}", "__comma", [smalltalk.send(self, "_mylf", [])])]);smalltalk.send(self, "_prvPutAndClose_", [(function(){return smalltalk.send(self, "_visit_targetBeing_", [smalltalk.send(smalltalk.send(smalltalk.send(aCollection, "_first", []), "_nodes", []), "_first", []), nil]);})]);return (inlined=true);})]));})]));
3056
+ ((($receiver = smalltalk.send(aSelector, "__eq", ["whileFalse:"])).klass === smalltalk.Boolean) ? ($receiver ? (function(){return ((($receiver = smalltalk.send(smalltalk.send(anObject, "_isBlockNode", []), "_and_", [(function(){return smalltalk.send(smalltalk.send(aCollection, "_first", []), "_isBlockNode", []);})])).klass === smalltalk.Boolean) ? ($receiver ? (function(){var old=nil;
3057
+ smalltalk.send(self, "_prvWhileConditionStatement_pre_condition_post_", ["for(;;){", "if ((", anObject, ")) {"]);smalltalk.send(self['@stream'], "_nextPutAll_", [smalltalk.send("break}", "__comma", [smalltalk.send(self, "_mylf", [])])]);smalltalk.send(self, "_prvPutAndClose_", [(function(){return smalltalk.send(self, "_visit_targetBeing_", [smalltalk.send(smalltalk.send(smalltalk.send(aCollection, "_first", []), "_nodes", []), "_first", []), nil]);})]);return (inlined=true);})() : nil) : smalltalk.send($receiver, "_ifTrue_", [(function(){var old=nil;
3058
+ smalltalk.send(self, "_prvWhileConditionStatement_pre_condition_post_", ["for(;;){", "if ((", anObject, ")) {"]);smalltalk.send(self['@stream'], "_nextPutAll_", [smalltalk.send("break}", "__comma", [smalltalk.send(self, "_mylf", [])])]);smalltalk.send(self, "_prvPutAndClose_", [(function(){return smalltalk.send(self, "_visit_targetBeing_", [smalltalk.send(smalltalk.send(smalltalk.send(aCollection, "_first", []), "_nodes", []), "_first", []), nil]);})]);return (inlined=true);})]));})() : nil) : smalltalk.send($receiver, "_ifTrue_", [(function(){return ((($receiver = smalltalk.send(smalltalk.send(anObject, "_isBlockNode", []), "_and_", [(function(){return smalltalk.send(smalltalk.send(aCollection, "_first", []), "_isBlockNode", []);})])).klass === smalltalk.Boolean) ? ($receiver ? (function(){var old=nil;
3059
+ smalltalk.send(self, "_prvWhileConditionStatement_pre_condition_post_", ["for(;;){", "if ((", anObject, ")) {"]);smalltalk.send(self['@stream'], "_nextPutAll_", [smalltalk.send("break}", "__comma", [smalltalk.send(self, "_mylf", [])])]);smalltalk.send(self, "_prvPutAndClose_", [(function(){return smalltalk.send(self, "_visit_targetBeing_", [smalltalk.send(smalltalk.send(smalltalk.send(aCollection, "_first", []), "_nodes", []), "_first", []), nil]);})]);return (inlined=true);})() : nil) : smalltalk.send($receiver, "_ifTrue_", [(function(){var old=nil;
3060
+ smalltalk.send(self, "_prvWhileConditionStatement_pre_condition_post_", ["for(;;){", "if ((", anObject, ")) {"]);smalltalk.send(self['@stream'], "_nextPutAll_", [smalltalk.send("break}", "__comma", [smalltalk.send(self, "_mylf", [])])]);smalltalk.send(self, "_prvPutAndClose_", [(function(){return smalltalk.send(self, "_visit_targetBeing_", [smalltalk.send(smalltalk.send(smalltalk.send(aCollection, "_first", []), "_nodes", []), "_first", []), nil]);})]);return (inlined=true);})]));})]));
3061
+ ((($receiver = smalltalk.send(aSelector, "__eq", ["whileTrue"])).klass === smalltalk.Boolean) ? ($receiver ? (function(){return ((($receiver = smalltalk.send(anObject, "_isBlockNode", [])).klass === smalltalk.Boolean) ? ($receiver ? (function(){smalltalk.send(self, "_prvWhileConditionStatement_pre_condition_post_", ["do{", "}while((", anObject, smalltalk.send("));", "__comma", [smalltalk.send(self, "_mylf", [])])]);return (inlined=true);})() : nil) : smalltalk.send($receiver, "_ifTrue_", [(function(){smalltalk.send(self, "_prvWhileConditionStatement_pre_condition_post_", ["do{", "}while((", anObject, smalltalk.send("));", "__comma", [smalltalk.send(self, "_mylf", [])])]);return (inlined=true);})]));})() : nil) : smalltalk.send($receiver, "_ifTrue_", [(function(){return ((($receiver = smalltalk.send(anObject, "_isBlockNode", [])).klass === smalltalk.Boolean) ? ($receiver ? (function(){smalltalk.send(self, "_prvWhileConditionStatement_pre_condition_post_", ["do{", "}while((", anObject, smalltalk.send("));", "__comma", [smalltalk.send(self, "_mylf", [])])]);return (inlined=true);})() : nil) : smalltalk.send($receiver, "_ifTrue_", [(function(){smalltalk.send(self, "_prvWhileConditionStatement_pre_condition_post_", ["do{", "}while((", anObject, smalltalk.send("));", "__comma", [smalltalk.send(self, "_mylf", [])])]);return (inlined=true);})]));})]));
3062
+ ((($receiver = smalltalk.send(aSelector, "__eq", ["whileFalse"])).klass === smalltalk.Boolean) ? ($receiver ? (function(){return ((($receiver = smalltalk.send(anObject, "_isBlockNode", [])).klass === smalltalk.Boolean) ? ($receiver ? (function(){smalltalk.send(self, "_prvWhileConditionStatement_pre_condition_post_", ["do{", "}while(!(", anObject, smalltalk.send("));", "__comma", [smalltalk.send(self, "_mylf", [])])]);return (inlined=true);})() : nil) : smalltalk.send($receiver, "_ifTrue_", [(function(){smalltalk.send(self, "_prvWhileConditionStatement_pre_condition_post_", ["do{", "}while(!(", anObject, smalltalk.send("));", "__comma", [smalltalk.send(self, "_mylf", [])])]);return (inlined=true);})]));})() : nil) : smalltalk.send($receiver, "_ifTrue_", [(function(){return ((($receiver = smalltalk.send(anObject, "_isBlockNode", [])).klass === smalltalk.Boolean) ? ($receiver ? (function(){smalltalk.send(self, "_prvWhileConditionStatement_pre_condition_post_", ["do{", "}while(!(", anObject, smalltalk.send("));", "__comma", [smalltalk.send(self, "_mylf", [])])]);return (inlined=true);})() : nil) : smalltalk.send($receiver, "_ifTrue_", [(function(){smalltalk.send(self, "_prvWhileConditionStatement_pre_condition_post_", ["do{", "}while(!(", anObject, smalltalk.send("));", "__comma", [smalltalk.send(self, "_mylf", [])])]);return (inlined=true);})]));})]));
3063
+ ((($receiver = smalltalk.send(["+", "-", "*", "/", "<", "<=", ">=", ">"], "_includes_", [aSelector])).klass === smalltalk.Boolean) ? ($receiver ? (function(){return ((($receiver = smalltalk.send(self, "_prvInlineNumberOperator_on_and_", [aSelector, anObject, smalltalk.send(aCollection, "_first", [])])).klass === smalltalk.Boolean) ? ($receiver ? (function(){return (inlined=true);})() : nil) : smalltalk.send($receiver, "_ifTrue_", [(function(){return (inlined=true);})]));})() : nil) : smalltalk.send($receiver, "_ifTrue_", [(function(){return ((($receiver = smalltalk.send(self, "_prvInlineNumberOperator_on_and_", [aSelector, anObject, smalltalk.send(aCollection, "_first", [])])).klass === smalltalk.Boolean) ? ($receiver ? (function(){return (inlined=true);})() : nil) : smalltalk.send($receiver, "_ifTrue_", [(function(){return (inlined=true);})]));})]));
3064
+ ((($receiver = smalltalk.send(aSelector, "__eq", ["ifNil:"])).klass === smalltalk.Boolean) ? ($receiver ? (function(){return ((($receiver = smalltalk.send(smalltalk.send(aCollection, "_first", []), "_isBlockNode", [])).klass === smalltalk.Boolean) ? ($receiver ? (function(){var rcv=nil;
3065
+ smalltalk.send(self, "_aboutToModifyState", []);(rcv=smalltalk.send(self, "_isolatedUse_", [anObject]));((($receiver = smalltalk.send(rcv, "__eq", ["super"])).klass === smalltalk.Boolean) ? ($receiver ? (function(){return (rcv="self");})() : nil) : smalltalk.send($receiver, "_ifTrue_", [(function(){return (rcv="self");})]));smalltalk.send(self, "_makeTargetRealVariable", []);smalltalk.send(self['@stream'], "_nextPutAll_", [smalltalk.send(smalltalk.send(smalltalk.send(smalltalk.send("if((", "__comma", [rcv]), "__comma", [") === nil || ("]), "__comma", [rcv]), "__comma", [") == null) {"])]);smalltalk.send(self, "_prvPutAndElse_", [(function(){return smalltalk.send(self, "_visit_", [smalltalk.send(smalltalk.send(smalltalk.send(aCollection, "_first", []), "_nodes", []), "_first", [])]);})]);smalltalk.send(self, "_prvPutAndClose_", [(function(){return smalltalk.send(self, "_lazyAssignValue_", [rcv]);})]);return (inlined=true);})() : nil) : smalltalk.send($receiver, "_ifTrue_", [(function(){var rcv=nil;
3066
+ smalltalk.send(self, "_aboutToModifyState", []);(rcv=smalltalk.send(self, "_isolatedUse_", [anObject]));((($receiver = smalltalk.send(rcv, "__eq", ["super"])).klass === smalltalk.Boolean) ? ($receiver ? (function(){return (rcv="self");})() : nil) : smalltalk.send($receiver, "_ifTrue_", [(function(){return (rcv="self");})]));smalltalk.send(self, "_makeTargetRealVariable", []);smalltalk.send(self['@stream'], "_nextPutAll_", [smalltalk.send(smalltalk.send(smalltalk.send(smalltalk.send("if((", "__comma", [rcv]), "__comma", [") === nil || ("]), "__comma", [rcv]), "__comma", [") == null) {"])]);smalltalk.send(self, "_prvPutAndElse_", [(function(){return smalltalk.send(self, "_visit_", [smalltalk.send(smalltalk.send(smalltalk.send(aCollection, "_first", []), "_nodes", []), "_first", [])]);})]);smalltalk.send(self, "_prvPutAndClose_", [(function(){return smalltalk.send(self, "_lazyAssignValue_", [rcv]);})]);return (inlined=true);})]));})() : nil) : smalltalk.send($receiver, "_ifTrue_", [(function(){return ((($receiver = smalltalk.send(smalltalk.send(aCollection, "_first", []), "_isBlockNode", [])).klass === smalltalk.Boolean) ? ($receiver ? (function(){var rcv=nil;
3067
+ smalltalk.send(self, "_aboutToModifyState", []);(rcv=smalltalk.send(self, "_isolatedUse_", [anObject]));((($receiver = smalltalk.send(rcv, "__eq", ["super"])).klass === smalltalk.Boolean) ? ($receiver ? (function(){return (rcv="self");})() : nil) : smalltalk.send($receiver, "_ifTrue_", [(function(){return (rcv="self");})]));smalltalk.send(self, "_makeTargetRealVariable", []);smalltalk.send(self['@stream'], "_nextPutAll_", [smalltalk.send(smalltalk.send(smalltalk.send(smalltalk.send("if((", "__comma", [rcv]), "__comma", [") === nil || ("]), "__comma", [rcv]), "__comma", [") == null) {"])]);smalltalk.send(self, "_prvPutAndElse_", [(function(){return smalltalk.send(self, "_visit_", [smalltalk.send(smalltalk.send(smalltalk.send(aCollection, "_first", []), "_nodes", []), "_first", [])]);})]);smalltalk.send(self, "_prvPutAndClose_", [(function(){return smalltalk.send(self, "_lazyAssignValue_", [rcv]);})]);return (inlined=true);})() : nil) : smalltalk.send($receiver, "_ifTrue_", [(function(){var rcv=nil;
3068
+ smalltalk.send(self, "_aboutToModifyState", []);(rcv=smalltalk.send(self, "_isolatedUse_", [anObject]));((($receiver = smalltalk.send(rcv, "__eq", ["super"])).klass === smalltalk.Boolean) ? ($receiver ? (function(){return (rcv="self");})() : nil) : smalltalk.send($receiver, "_ifTrue_", [(function(){return (rcv="self");})]));smalltalk.send(self, "_makeTargetRealVariable", []);smalltalk.send(self['@stream'], "_nextPutAll_", [smalltalk.send(smalltalk.send(smalltalk.send(smalltalk.send("if((", "__comma", [rcv]), "__comma", [") === nil || ("]), "__comma", [rcv]), "__comma", [") == null) {"])]);smalltalk.send(self, "_prvPutAndElse_", [(function(){return smalltalk.send(self, "_visit_", [smalltalk.send(smalltalk.send(smalltalk.send(aCollection, "_first", []), "_nodes", []), "_first", [])]);})]);smalltalk.send(self, "_prvPutAndClose_", [(function(){return smalltalk.send(self, "_lazyAssignValue_", [rcv]);})]);return (inlined=true);})]));})]));
3069
+ ((($receiver = smalltalk.send(aSelector, "__eq", ["ifNotNil:"])).klass === smalltalk.Boolean) ? ($receiver ? (function(){return ((($receiver = smalltalk.send(smalltalk.send(aCollection, "_first", []), "_isBlockNode", [])).klass === smalltalk.Boolean) ? ($receiver ? (function(){var rcv=nil;
3070
+ smalltalk.send(self, "_aboutToModifyState", []);(rcv=smalltalk.send(self, "_isolatedUse_", [anObject]));((($receiver = smalltalk.send(rcv, "__eq", ["super"])).klass === smalltalk.Boolean) ? ($receiver ? (function(){return (rcv="self");})() : nil) : smalltalk.send($receiver, "_ifTrue_", [(function(){return (rcv="self");})]));smalltalk.send(self, "_makeTargetRealVariable", []);smalltalk.send(self['@stream'], "_nextPutAll_", [smalltalk.send(smalltalk.send(smalltalk.send(smalltalk.send("if((", "__comma", [rcv]), "__comma", [") !== nil && ("]), "__comma", [rcv]), "__comma", [") != null) {"])]);smalltalk.send(self, "_prvPutAndElse_", [(function(){return smalltalk.send(self, "_visit_", [smalltalk.send(smalltalk.send(smalltalk.send(aCollection, "_first", []), "_nodes", []), "_first", [])]);})]);smalltalk.send(self, "_prvPutAndClose_", [(function(){return smalltalk.send(self, "_lazyAssignValue_", [rcv]);})]);return (inlined=true);})() : nil) : smalltalk.send($receiver, "_ifTrue_", [(function(){var rcv=nil;
3071
+ smalltalk.send(self, "_aboutToModifyState", []);(rcv=smalltalk.send(self, "_isolatedUse_", [anObject]));((($receiver = smalltalk.send(rcv, "__eq", ["super"])).klass === smalltalk.Boolean) ? ($receiver ? (function(){return (rcv="self");})() : nil) : smalltalk.send($receiver, "_ifTrue_", [(function(){return (rcv="self");})]));smalltalk.send(self, "_makeTargetRealVariable", []);smalltalk.send(self['@stream'], "_nextPutAll_", [smalltalk.send(smalltalk.send(smalltalk.send(smalltalk.send("if((", "__comma", [rcv]), "__comma", [") !== nil && ("]), "__comma", [rcv]), "__comma", [") != null) {"])]);smalltalk.send(self, "_prvPutAndElse_", [(function(){return smalltalk.send(self, "_visit_", [smalltalk.send(smalltalk.send(smalltalk.send(aCollection, "_first", []), "_nodes", []), "_first", [])]);})]);smalltalk.send(self, "_prvPutAndClose_", [(function(){return smalltalk.send(self, "_lazyAssignValue_", [rcv]);})]);return (inlined=true);})]));})() : nil) : smalltalk.send($receiver, "_ifTrue_", [(function(){return ((($receiver = smalltalk.send(smalltalk.send(aCollection, "_first", []), "_isBlockNode", [])).klass === smalltalk.Boolean) ? ($receiver ? (function(){var rcv=nil;
3072
+ smalltalk.send(self, "_aboutToModifyState", []);(rcv=smalltalk.send(self, "_isolatedUse_", [anObject]));((($receiver = smalltalk.send(rcv, "__eq", ["super"])).klass === smalltalk.Boolean) ? ($receiver ? (function(){return (rcv="self");})() : nil) : smalltalk.send($receiver, "_ifTrue_", [(function(){return (rcv="self");})]));smalltalk.send(self, "_makeTargetRealVariable", []);smalltalk.send(self['@stream'], "_nextPutAll_", [smalltalk.send(smalltalk.send(smalltalk.send(smalltalk.send("if((", "__comma", [rcv]), "__comma", [") !== nil && ("]), "__comma", [rcv]), "__comma", [") != null) {"])]);smalltalk.send(self, "_prvPutAndElse_", [(function(){return smalltalk.send(self, "_visit_", [smalltalk.send(smalltalk.send(smalltalk.send(aCollection, "_first", []), "_nodes", []), "_first", [])]);})]);smalltalk.send(self, "_prvPutAndClose_", [(function(){return smalltalk.send(self, "_lazyAssignValue_", [rcv]);})]);return (inlined=true);})() : nil) : smalltalk.send($receiver, "_ifTrue_", [(function(){var rcv=nil;
3073
+ smalltalk.send(self, "_aboutToModifyState", []);(rcv=smalltalk.send(self, "_isolatedUse_", [anObject]));((($receiver = smalltalk.send(rcv, "__eq", ["super"])).klass === smalltalk.Boolean) ? ($receiver ? (function(){return (rcv="self");})() : nil) : smalltalk.send($receiver, "_ifTrue_", [(function(){return (rcv="self");})]));smalltalk.send(self, "_makeTargetRealVariable", []);smalltalk.send(self['@stream'], "_nextPutAll_", [smalltalk.send(smalltalk.send(smalltalk.send(smalltalk.send("if((", "__comma", [rcv]), "__comma", [") !== nil && ("]), "__comma", [rcv]), "__comma", [") != null) {"])]);smalltalk.send(self, "_prvPutAndElse_", [(function(){return smalltalk.send(self, "_visit_", [smalltalk.send(smalltalk.send(smalltalk.send(aCollection, "_first", []), "_nodes", []), "_first", [])]);})]);smalltalk.send(self, "_prvPutAndClose_", [(function(){return smalltalk.send(self, "_lazyAssignValue_", [rcv]);})]);return (inlined=true);})]));})]));
3074
+ ((($receiver = smalltalk.send(aSelector, "__eq", ["ifNil:ifNotNil:"])).klass === smalltalk.Boolean) ? ($receiver ? (function(){return ((($receiver = smalltalk.send(smalltalk.send(smalltalk.send(aCollection, "_first", []), "_isBlockNode", []), "_and_", [(function(){return smalltalk.send(smalltalk.send(aCollection, "_second", []), "_isBlockNode", []);})])).klass === smalltalk.Boolean) ? ($receiver ? (function(){var rcv=nil;
3075
+ smalltalk.send(self, "_aboutToModifyState", []);(rcv=smalltalk.send(self, "_isolatedUse_", [anObject]));((($receiver = smalltalk.send(rcv, "__eq", ["super"])).klass === smalltalk.Boolean) ? ($receiver ? (function(){return (rcv="self");})() : nil) : smalltalk.send($receiver, "_ifTrue_", [(function(){return (rcv="self");})]));smalltalk.send(self, "_makeTargetRealVariable", []);smalltalk.send(self['@stream'], "_nextPutAll_", [smalltalk.send(smalltalk.send(smalltalk.send(smalltalk.send("if((", "__comma", [rcv]), "__comma", [") === nil || ("]), "__comma", [rcv]), "__comma", [") == null) {"])]);smalltalk.send(self, "_prvPutAndElse_", [(function(){return smalltalk.send(self, "_visit_", [smalltalk.send(smalltalk.send(smalltalk.send(aCollection, "_first", []), "_nodes", []), "_first", [])]);})]);smalltalk.send(self, "_prvPutAndClose_", [(function(){return smalltalk.send(self, "_visit_", [smalltalk.send(smalltalk.send(smalltalk.send(aCollection, "_second", []), "_nodes", []), "_first", [])]);})]);return (inlined=true);})() : nil) : smalltalk.send($receiver, "_ifTrue_", [(function(){var rcv=nil;
3076
+ smalltalk.send(self, "_aboutToModifyState", []);(rcv=smalltalk.send(self, "_isolatedUse_", [anObject]));((($receiver = smalltalk.send(rcv, "__eq", ["super"])).klass === smalltalk.Boolean) ? ($receiver ? (function(){return (rcv="self");})() : nil) : smalltalk.send($receiver, "_ifTrue_", [(function(){return (rcv="self");})]));smalltalk.send(self, "_makeTargetRealVariable", []);smalltalk.send(self['@stream'], "_nextPutAll_", [smalltalk.send(smalltalk.send(smalltalk.send(smalltalk.send("if((", "__comma", [rcv]), "__comma", [") === nil || ("]), "__comma", [rcv]), "__comma", [") == null) {"])]);smalltalk.send(self, "_prvPutAndElse_", [(function(){return smalltalk.send(self, "_visit_", [smalltalk.send(smalltalk.send(smalltalk.send(aCollection, "_first", []), "_nodes", []), "_first", [])]);})]);smalltalk.send(self, "_prvPutAndClose_", [(function(){return smalltalk.send(self, "_visit_", [smalltalk.send(smalltalk.send(smalltalk.send(aCollection, "_second", []), "_nodes", []), "_first", [])]);})]);return (inlined=true);})]));})() : nil) : smalltalk.send($receiver, "_ifTrue_", [(function(){return ((($receiver = smalltalk.send(smalltalk.send(smalltalk.send(aCollection, "_first", []), "_isBlockNode", []), "_and_", [(function(){return smalltalk.send(smalltalk.send(aCollection, "_second", []), "_isBlockNode", []);})])).klass === smalltalk.Boolean) ? ($receiver ? (function(){var rcv=nil;
3077
+ smalltalk.send(self, "_aboutToModifyState", []);(rcv=smalltalk.send(self, "_isolatedUse_", [anObject]));((($receiver = smalltalk.send(rcv, "__eq", ["super"])).klass === smalltalk.Boolean) ? ($receiver ? (function(){return (rcv="self");})() : nil) : smalltalk.send($receiver, "_ifTrue_", [(function(){return (rcv="self");})]));smalltalk.send(self, "_makeTargetRealVariable", []);smalltalk.send(self['@stream'], "_nextPutAll_", [smalltalk.send(smalltalk.send(smalltalk.send(smalltalk.send("if((", "__comma", [rcv]), "__comma", [") === nil || ("]), "__comma", [rcv]), "__comma", [") == null) {"])]);smalltalk.send(self, "_prvPutAndElse_", [(function(){return smalltalk.send(self, "_visit_", [smalltalk.send(smalltalk.send(smalltalk.send(aCollection, "_first", []), "_nodes", []), "_first", [])]);})]);smalltalk.send(self, "_prvPutAndClose_", [(function(){return smalltalk.send(self, "_visit_", [smalltalk.send(smalltalk.send(smalltalk.send(aCollection, "_second", []), "_nodes", []), "_first", [])]);})]);return (inlined=true);})() : nil) : smalltalk.send($receiver, "_ifTrue_", [(function(){var rcv=nil;
3078
+ smalltalk.send(self, "_aboutToModifyState", []);(rcv=smalltalk.send(self, "_isolatedUse_", [anObject]));((($receiver = smalltalk.send(rcv, "__eq", ["super"])).klass === smalltalk.Boolean) ? ($receiver ? (function(){return (rcv="self");})() : nil) : smalltalk.send($receiver, "_ifTrue_", [(function(){return (rcv="self");})]));smalltalk.send(self, "_makeTargetRealVariable", []);smalltalk.send(self['@stream'], "_nextPutAll_", [smalltalk.send(smalltalk.send(smalltalk.send(smalltalk.send("if((", "__comma", [rcv]), "__comma", [") === nil || ("]), "__comma", [rcv]), "__comma", [") == null) {"])]);smalltalk.send(self, "_prvPutAndElse_", [(function(){return smalltalk.send(self, "_visit_", [smalltalk.send(smalltalk.send(smalltalk.send(aCollection, "_first", []), "_nodes", []), "_first", [])]);})]);smalltalk.send(self, "_prvPutAndClose_", [(function(){return smalltalk.send(self, "_visit_", [smalltalk.send(smalltalk.send(smalltalk.send(aCollection, "_second", []), "_nodes", []), "_first", [])]);})]);return (inlined=true);})]));})]));
3079
+ ((($receiver = smalltalk.send(aSelector, "__eq", ["ifNotNil:ifNil:"])).klass === smalltalk.Boolean) ? ($receiver ? (function(){return ((($receiver = smalltalk.send(smalltalk.send(smalltalk.send(aCollection, "_first", []), "_isBlockNode", []), "_and_", [(function(){return smalltalk.send(smalltalk.send(aCollection, "_second", []), "_isBlockNode", []);})])).klass === smalltalk.Boolean) ? ($receiver ? (function(){var rcv=nil;
3080
+ smalltalk.send(self, "_aboutToModifyState", []);(rcv=smalltalk.send(self, "_isolatedUse_", [anObject]));((($receiver = smalltalk.send(rcv, "__eq", ["super"])).klass === smalltalk.Boolean) ? ($receiver ? (function(){return (rcv="self");})() : nil) : smalltalk.send($receiver, "_ifTrue_", [(function(){return (rcv="self");})]));smalltalk.send(self, "_makeTargetRealVariable", []);smalltalk.send(self['@stream'], "_nextPutAll_", [smalltalk.send(smalltalk.send(smalltalk.send(smalltalk.send("if((", "__comma", [rcv]), "__comma", [") !== nil && ("]), "__comma", [rcv]), "__comma", [") != null) {"])]);smalltalk.send(self, "_prvPutAndElse_", [(function(){return smalltalk.send(self, "_visit_", [smalltalk.send(smalltalk.send(smalltalk.send(aCollection, "_first", []), "_nodes", []), "_first", [])]);})]);smalltalk.send(self, "_prvPutAndClose_", [(function(){return smalltalk.send(self, "_visit_", [smalltalk.send(smalltalk.send(smalltalk.send(aCollection, "_second", []), "_nodes", []), "_first", [])]);})]);return (inlined=true);})() : nil) : smalltalk.send($receiver, "_ifTrue_", [(function(){var rcv=nil;
3081
+ smalltalk.send(self, "_aboutToModifyState", []);(rcv=smalltalk.send(self, "_isolatedUse_", [anObject]));((($receiver = smalltalk.send(rcv, "__eq", ["super"])).klass === smalltalk.Boolean) ? ($receiver ? (function(){return (rcv="self");})() : nil) : smalltalk.send($receiver, "_ifTrue_", [(function(){return (rcv="self");})]));smalltalk.send(self, "_makeTargetRealVariable", []);smalltalk.send(self['@stream'], "_nextPutAll_", [smalltalk.send(smalltalk.send(smalltalk.send(smalltalk.send("if((", "__comma", [rcv]), "__comma", [") !== nil && ("]), "__comma", [rcv]), "__comma", [") != null) {"])]);smalltalk.send(self, "_prvPutAndElse_", [(function(){return smalltalk.send(self, "_visit_", [smalltalk.send(smalltalk.send(smalltalk.send(aCollection, "_first", []), "_nodes", []), "_first", [])]);})]);smalltalk.send(self, "_prvPutAndClose_", [(function(){return smalltalk.send(self, "_visit_", [smalltalk.send(smalltalk.send(smalltalk.send(aCollection, "_second", []), "_nodes", []), "_first", [])]);})]);return (inlined=true);})]));})() : nil) : smalltalk.send($receiver, "_ifTrue_", [(function(){return ((($receiver = smalltalk.send(smalltalk.send(smalltalk.send(aCollection, "_first", []), "_isBlockNode", []), "_and_", [(function(){return smalltalk.send(smalltalk.send(aCollection, "_second", []), "_isBlockNode", []);})])).klass === smalltalk.Boolean) ? ($receiver ? (function(){var rcv=nil;
3082
+ smalltalk.send(self, "_aboutToModifyState", []);(rcv=smalltalk.send(self, "_isolatedUse_", [anObject]));((($receiver = smalltalk.send(rcv, "__eq", ["super"])).klass === smalltalk.Boolean) ? ($receiver ? (function(){return (rcv="self");})() : nil) : smalltalk.send($receiver, "_ifTrue_", [(function(){return (rcv="self");})]));smalltalk.send(self, "_makeTargetRealVariable", []);smalltalk.send(self['@stream'], "_nextPutAll_", [smalltalk.send(smalltalk.send(smalltalk.send(smalltalk.send("if((", "__comma", [rcv]), "__comma", [") !== nil && ("]), "__comma", [rcv]), "__comma", [") != null) {"])]);smalltalk.send(self, "_prvPutAndElse_", [(function(){return smalltalk.send(self, "_visit_", [smalltalk.send(smalltalk.send(smalltalk.send(aCollection, "_first", []), "_nodes", []), "_first", [])]);})]);smalltalk.send(self, "_prvPutAndClose_", [(function(){return smalltalk.send(self, "_visit_", [smalltalk.send(smalltalk.send(smalltalk.send(aCollection, "_second", []), "_nodes", []), "_first", [])]);})]);return (inlined=true);})() : nil) : smalltalk.send($receiver, "_ifTrue_", [(function(){var rcv=nil;
3083
+ smalltalk.send(self, "_aboutToModifyState", []);(rcv=smalltalk.send(self, "_isolatedUse_", [anObject]));((($receiver = smalltalk.send(rcv, "__eq", ["super"])).klass === smalltalk.Boolean) ? ($receiver ? (function(){return (rcv="self");})() : nil) : smalltalk.send($receiver, "_ifTrue_", [(function(){return (rcv="self");})]));smalltalk.send(self, "_makeTargetRealVariable", []);smalltalk.send(self['@stream'], "_nextPutAll_", [smalltalk.send(smalltalk.send(smalltalk.send(smalltalk.send("if((", "__comma", [rcv]), "__comma", [") !== nil && ("]), "__comma", [rcv]), "__comma", [") != null) {"])]);smalltalk.send(self, "_prvPutAndElse_", [(function(){return smalltalk.send(self, "_visit_", [smalltalk.send(smalltalk.send(smalltalk.send(aCollection, "_first", []), "_nodes", []), "_first", [])]);})]);smalltalk.send(self, "_prvPutAndClose_", [(function(){return smalltalk.send(self, "_visit_", [smalltalk.send(smalltalk.send(smalltalk.send(aCollection, "_second", []), "_nodes", []), "_first", [])]);})]);return (inlined=true);})]));})]));
3084
+ ((($receiver = smalltalk.send(aSelector, "__eq", ["isNil"])).klass === smalltalk.Boolean) ? ($receiver ? (function(){var rcv=nil;
3085
+ (rcv=smalltalk.send(self, "_isolatedUse_", [anObject]));((($receiver = smalltalk.send(rcv, "__eq", ["super"])).klass === smalltalk.Boolean) ? ($receiver ? (function(){return (rcv="self");})() : nil) : smalltalk.send($receiver, "_ifTrue_", [(function(){return (rcv="self");})]));smalltalk.send(self, "_lazyAssignValue_", [smalltalk.send(smalltalk.send(smalltalk.send(smalltalk.send("((", "__comma", [rcv]), "__comma", [") === nil || ("]), "__comma", [rcv]), "__comma", [") == null)"])]);return (inlined=true);})() : nil) : smalltalk.send($receiver, "_ifTrue_", [(function(){var rcv=nil;
3086
+ (rcv=smalltalk.send(self, "_isolatedUse_", [anObject]));((($receiver = smalltalk.send(rcv, "__eq", ["super"])).klass === smalltalk.Boolean) ? ($receiver ? (function(){return (rcv="self");})() : nil) : smalltalk.send($receiver, "_ifTrue_", [(function(){return (rcv="self");})]));smalltalk.send(self, "_lazyAssignValue_", [smalltalk.send(smalltalk.send(smalltalk.send(smalltalk.send("((", "__comma", [rcv]), "__comma", [") === nil || ("]), "__comma", [rcv]), "__comma", [") == null)"])]);return (inlined=true);})]));
3087
+ ((($receiver = smalltalk.send(aSelector, "__eq", ["notNil"])).klass === smalltalk.Boolean) ? ($receiver ? (function(){var rcv=nil;
3088
+ (rcv=smalltalk.send(self, "_isolatedUse_", [anObject]));((($receiver = smalltalk.send(rcv, "__eq", ["super"])).klass === smalltalk.Boolean) ? ($receiver ? (function(){return (rcv="self");})() : nil) : smalltalk.send($receiver, "_ifTrue_", [(function(){return (rcv="self");})]));smalltalk.send(self, "_lazyAssignValue_", [smalltalk.send(smalltalk.send(smalltalk.send(smalltalk.send("((", "__comma", [rcv]), "__comma", [") !== nil && ("]), "__comma", [rcv]), "__comma", [") != null)"])]);return (inlined=true);})() : nil) : smalltalk.send($receiver, "_ifTrue_", [(function(){var rcv=nil;
3089
+ (rcv=smalltalk.send(self, "_isolatedUse_", [anObject]));((($receiver = smalltalk.send(rcv, "__eq", ["super"])).klass === smalltalk.Boolean) ? ($receiver ? (function(){return (rcv="self");})() : nil) : smalltalk.send($receiver, "_ifTrue_", [(function(){return (rcv="self");})]));smalltalk.send(self, "_lazyAssignValue_", [smalltalk.send(smalltalk.send(smalltalk.send(smalltalk.send("((", "__comma", [rcv]), "__comma", [") !== nil && ("]), "__comma", [rcv]), "__comma", [") != null)"])]);return (inlined=true);})]));
3090
+ return inlined;
3091
+ return self;},
3092
+ args: ["aSelector", "anObject", "aCollection"],
3093
+ source: "inlineLiteral: aSelector receiverNode: anObject argumentNodes: aCollection\x0a | inlined |\x0a inlined := false.\x0a \x0a\x09\x22-- BlockClosures --\x22\x0a\x0a\x09(aSelector = 'whileTrue:') ifTrue: [\x0a \x09(anObject isBlockNode and: [aCollection first isBlockNode]) ifTrue: [ | old |\x0a\x09\x09\x09self prvWhileConditionStatement: 'for(;;){' pre: 'if (!(' condition: anObject post: ')) {'.\x0a\x09\x09\x09stream nextPutAll: 'break}', self mylf.\x0a\x09\x09\x09self prvPutAndClose: [ self visit: aCollection first nodes first targetBeing: nil ].\x0a\x09\x09\x09inlined := true]].\x0a\x0a\x09(aSelector = 'whileFalse:') ifTrue: [\x0a \x09(anObject isBlockNode and: [aCollection first isBlockNode]) ifTrue: [ | old |\x0a\x09\x09\x09self prvWhileConditionStatement: 'for(;;){' pre: 'if ((' condition: anObject post: ')) {'.\x0a\x09\x09\x09stream nextPutAll: 'break}', self mylf.\x0a\x09\x09\x09self prvPutAndClose: [ self visit: aCollection first nodes first targetBeing: nil ].\x0a\x09\x09\x09inlined := true]].\x0a\x0a\x09(aSelector = 'whileTrue') ifTrue: [\x0a \x09anObject isBlockNode ifTrue: [\x0a\x09\x09\x09self prvWhileConditionStatement: 'do{' pre: '}while((' condition: anObject post: '));', self mylf.\x0a\x09\x09\x09inlined := true]].\x0a\x0a\x09(aSelector = 'whileFalse') ifTrue: [\x0a \x09anObject isBlockNode ifTrue: [\x0a\x09\x09\x09self prvWhileConditionStatement: 'do{' pre: '}while(!(' condition: anObject post: '));', self mylf.\x0a\x09\x09\x09inlined := true]].\x0a\x0a\x09\x22-- Numbers --\x22\x0a\x0a\x09(#('+' '-' '*' '/' '<' '<=' '>=' '>') includes: aSelector) ifTrue: [\x0a\x09\x09(self prvInlineNumberOperator: aSelector on: anObject and: aCollection first) ifTrue: [\x0a\x09\x09\x09inlined := true]].\x0a \x09 \x0a\x09\x22-- UndefinedObject --\x22\x0a\x0a\x09(aSelector = 'ifNil:') ifTrue: [\x0a\x09\x09aCollection first isBlockNode ifTrue: [ | rcv |\x0a\x09\x09\x09self aboutToModifyState.\x0a\x09\x09\x09rcv := self isolatedUse: anObject.\x0a\x09\x09\x09rcv = 'super' ifTrue: [ rcv := 'self' ].\x0a\x09\x09\x09self makeTargetRealVariable.\x0a\x09\x09\x09stream nextPutAll: 'if((', rcv, ') === nil || (', rcv, ') == null) {'.\x0a\x09\x09\x09self prvPutAndElse: [ self visit: aCollection first nodes first ].\x0a\x09\x09\x09self prvPutAndClose: [ self lazyAssignValue: rcv ].\x0a\x09\x09\x09inlined := true]].\x0a\x0a\x09(aSelector = 'ifNotNil:') ifTrue: [\x0a\x09\x09aCollection first isBlockNode ifTrue: [ | rcv |\x0a\x09\x09\x09self aboutToModifyState.\x0a\x09\x09\x09rcv := self isolatedUse: anObject.\x0a\x09\x09\x09rcv = 'super' ifTrue: [ rcv := 'self' ].\x0a\x09\x09\x09self makeTargetRealVariable.\x0a\x09\x09\x09stream nextPutAll: 'if((', rcv, ') !== nil && (', rcv, ') != null) {'.\x0a\x09\x09\x09self prvPutAndElse: [ self visit: aCollection first nodes first ].\x0a\x09\x09\x09self prvPutAndClose: [ self lazyAssignValue: rcv ].\x0a\x09\x09\x09inlined := true]].\x0a\x0a\x09(aSelector = 'ifNil:ifNotNil:') ifTrue: [\x0a\x09\x09(aCollection first isBlockNode and: [aCollection second isBlockNode]) ifTrue: [ | rcv |\x0a\x09\x09\x09self aboutToModifyState.\x0a\x09\x09\x09rcv := self isolatedUse: anObject.\x0a\x09\x09\x09rcv = 'super' ifTrue: [ rcv := 'self' ].\x0a\x09\x09\x09self makeTargetRealVariable.\x0a\x09\x09\x09stream nextPutAll: 'if((', rcv, ') === nil || (', rcv, ') == null) {'.\x0a\x09\x09\x09self prvPutAndElse: [ self visit: aCollection first nodes first ].\x0a\x09\x09\x09self prvPutAndClose: [ self visit: aCollection second nodes first ].\x0a\x09\x09\x09inlined := true]].\x0a\x0a\x09(aSelector = 'ifNotNil:ifNil:') ifTrue: [\x0a\x09\x09(aCollection first isBlockNode and: [aCollection second isBlockNode]) ifTrue: [ | rcv |\x0a\x09\x09\x09self aboutToModifyState.\x0a\x09\x09\x09rcv := self isolatedUse: anObject.\x0a\x09\x09\x09rcv = 'super' ifTrue: [ rcv := 'self' ].\x0a\x09\x09\x09self makeTargetRealVariable.\x0a\x09\x09\x09stream nextPutAll: 'if((', rcv, ') !== nil && (', rcv, ') != null) {'.\x0a\x09\x09\x09self prvPutAndElse: [ self visit: aCollection first nodes first ].\x0a\x09\x09\x09self prvPutAndClose: [ self visit: aCollection second nodes first ].\x0a\x09\x09\x09inlined := true]].\x0a\x0a\x09(aSelector = 'isNil') ifTrue: [ | rcv |\x0a\x09\x09rcv := self isolatedUse: anObject.\x0a\x09\x09rcv = 'super' ifTrue: [ rcv := 'self' ].\x0a\x09\x09self lazyAssignValue: '((', rcv, ') === nil || (', rcv, ') == null)'.\x0a\x09\x09inlined := true].\x0a\x0a\x09(aSelector = 'notNil') ifTrue: [ | rcv |\x0a\x09\x09rcv := self isolatedUse: anObject.\x0a\x09\x09rcv = 'super' ifTrue: [ rcv := 'self' ].\x0a\x09\x09self lazyAssignValue: '((', rcv, ') !== nil && (', rcv, ') != null)'.\x0a\x09\x09inlined := true].\x0a\x0a ^inlined",
3094
+ messageSends: ["ifTrue:", "=", "and:", "isBlockNode", "first", "prvWhileConditionStatement:pre:condition:post:", "nextPutAll:", ",", "mylf", "prvPutAndClose:", "visit:targetBeing:", "nodes", "includes:", "prvInlineNumberOperator:on:and:", "aboutToModifyState", "isolatedUse:", "makeTargetRealVariable", "prvPutAndElse:", "visit:", "lazyAssignValue:", "second"],
3095
+ referencedClasses: []
3096
+ }),
3097
+ smalltalk.ImpCodeGenerator);
3098
+
3099
+ smalltalk.addMethod(
3100
+ "_isNode_ofClass_",
3101
+ smalltalk.method({
3102
+ selector: "isNode:ofClass:",
3103
+ category: 'optimizations',
3104
+ fn: function (aNode, aClass) {
3105
+ var self=this;
3106
+ return smalltalk.send(smalltalk.send(aNode, "_isValueNode", []), "_and_", [(function(){return smalltalk.send(smalltalk.send(smalltalk.send(smalltalk.send(aNode, "_value", []), "_class", []), "__eq", [aClass]), "_or_", [(function(){return smalltalk.send(smalltalk.send(smalltalk.send(aNode, "_value", []), "__eq", ["self"]), "_and_", [(function(){return smalltalk.send(smalltalk.send(self, "_currentClass", []), "__eq", [aClass]);})]);})]);})]);
3107
+ return self;},
3108
+ args: ["aNode", "aClass"],
3109
+ source: "isNode: aNode ofClass: aClass\x0a\x09^aNode isValueNode and: [\x0a \x09aNode value class = aClass or: [\x0a \x09\x09aNode value = 'self' and: [self currentClass = aClass]]]",
3110
+ messageSends: ["and:", "isValueNode", "or:", "=", "class", "value", "currentClass"],
3111
+ referencedClasses: []
3112
+ }),
3113
+ smalltalk.ImpCodeGenerator);
3114
+
3115
+ smalltalk.addMethod(
3116
+ "_isolated_",
3117
+ smalltalk.method({
3118
+ selector: "isolated:",
3119
+ category: 'compilation DSL',
3120
+ fn: function (node){
3121
+ var self=this;
3122
+ return smalltalk.send(self, "_visit_targetBeing_", [node, smalltalk.send(self, "_nextLazyvarName", [])]);
3123
+ return self;},
3124
+ args: ["node"],
3125
+ source: "isolated: node\x0a \x09^ self visit: node targetBeing: self nextLazyvarName",
3126
+ messageSends: ["visit:targetBeing:", "nextLazyvarName"],
3127
+ referencedClasses: []
3128
+ }),
3129
+ smalltalk.ImpCodeGenerator);
3130
+
3131
+ smalltalk.addMethod(
3132
+ "_isolatedUse_",
3133
+ smalltalk.method({
3134
+ selector: "isolatedUse:",
3135
+ category: 'compilation DSL',
3136
+ fn: function (node){
3137
+ var self=this;
3138
+ var old=nil;
3139
+ (old=smalltalk.send(self, "_switchTarget_", [smalltalk.send(self, "_nextLazyvarName", [])]));
3140
+ smalltalk.send(self, "_visit_", [node]);
3141
+ return smalltalk.send(self, "_useValueNamed_", [smalltalk.send(self, "_switchTarget_", [old])]);
3142
+ return self;},
3143
+ args: ["node"],
3144
+ source: "isolatedUse: node\x0a| old |\x0a\x09old := self switchTarget: self nextLazyvarName.\x0a\x09self visit: node.\x0a\x09^self useValueNamed: (self switchTarget: old)",
3145
+ messageSends: ["switchTarget:", "nextLazyvarName", "visit:", "useValueNamed:"],
3146
+ referencedClasses: []
3147
+ }),
3148
+ smalltalk.ImpCodeGenerator);
3149
+
3150
+ smalltalk.addMethod(
3151
+ "_knownVariables",
3152
+ smalltalk.method({
3153
+ selector: "knownVariables",
3154
+ category: 'accessing',
3155
+ fn: function () {
3156
+ var self=this;
3157
+ return (function($rec){smalltalk.send($rec, "_addAll_", [smalltalk.send(self, "_tempVariables", [])]);smalltalk.send($rec, "_addAll_", [smalltalk.send(self, "_argVariables", [])]);return smalltalk.send($rec, "_yourself", []);})(smalltalk.send(self, "_pseudoVariables", []));
3158
+ return self;},
3159
+ args: [],
3160
+ source: "knownVariables\x0a\x09^self pseudoVariables \x0a\x09\x09addAll: self tempVariables;\x0a\x09\x09addAll: self argVariables;\x0a\x09\x09yourself",
3161
+ messageSends: ["addAll:", "tempVariables", "argVariables", "yourself", "pseudoVariables"],
3162
+ referencedClasses: []
3163
+ }),
3164
+ smalltalk.ImpCodeGenerator);
3165
+
3166
+ smalltalk.addMethod(
3167
+ "_lazyAssign_dependsOnState_",
3168
+ smalltalk.method({
3169
+ selector: "lazyAssign:dependsOnState:",
3170
+ category: 'compilation DSL',
3171
+ fn: function (aString, aBoolean){
3172
+ var self=this;
3173
+ ((($receiver = smalltalk.send(self['@lazyVars'], "_includesKey_", [self['@target']])).klass === smalltalk.Boolean) ? ($receiver ? (function(){smalltalk.send(self['@lazyVars'], "_at_put_", [self['@target'], aString]);return ((($receiver = aBoolean).klass === smalltalk.Boolean) ? ($receiver ? (function(){return smalltalk.send(self['@mutables'], "_add_", [self['@target']]);})() : nil) : smalltalk.send($receiver, "_ifTrue_", [(function(){return smalltalk.send(self['@mutables'], "_add_", [self['@target']]);})]));})() : (function(){return smalltalk.send(self, "_realAssign_", [aString]);})()) : smalltalk.send($receiver, "_ifTrue_ifFalse_", [(function(){smalltalk.send(self['@lazyVars'], "_at_put_", [self['@target'], aString]);return ((($receiver = aBoolean).klass === smalltalk.Boolean) ? ($receiver ? (function(){return smalltalk.send(self['@mutables'], "_add_", [self['@target']]);})() : nil) : smalltalk.send($receiver, "_ifTrue_", [(function(){return smalltalk.send(self['@mutables'], "_add_", [self['@target']]);})]));}), (function(){return smalltalk.send(self, "_realAssign_", [aString]);})]));
3174
+ return self;},
3175
+ args: ["aString", "aBoolean"],
3176
+ source: "lazyAssign: aString dependsOnState: aBoolean\x0a\x09(lazyVars includesKey: target)\x0a\x09\x09ifTrue: [ lazyVars at: target put: aString. aBoolean ifTrue: [ mutables add: target ] ]\x0a\x09\x09ifFalse: [ self realAssign: aString ]",
3177
+ messageSends: ["ifTrue:ifFalse:", "includesKey:", "at:put:", "ifTrue:", "add:", "realAssign:"],
3178
+ referencedClasses: []
3179
+ }),
3180
+ smalltalk.ImpCodeGenerator);
3181
+
3182
+ smalltalk.addMethod(
3183
+ "_lazyAssignExpression_",
3184
+ smalltalk.method({
3185
+ selector: "lazyAssignExpression:",
3186
+ category: 'compilation DSL',
3187
+ fn: function (aString){
3188
+ var self=this;
3189
+ smalltalk.send(self, "_lazyAssign_dependsOnState_", [aString, true]);
3190
+ return self;},
3191
+ args: ["aString"],
3192
+ source: "lazyAssignExpression: aString\x0a\x09self lazyAssign: aString dependsOnState: true",
3193
+ messageSends: ["lazyAssign:dependsOnState:"],
3194
+ referencedClasses: []
3195
+ }),
3196
+ smalltalk.ImpCodeGenerator);
3197
+
3198
+ smalltalk.addMethod(
3199
+ "_lazyAssignValue_",
3200
+ smalltalk.method({
3201
+ selector: "lazyAssignValue:",
3202
+ category: 'compilation DSL',
3203
+ fn: function (aString){
3204
+ var self=this;
3205
+ smalltalk.send(self, "_lazyAssign_dependsOnState_", [aString, false]);
3206
+ return self;},
3207
+ args: ["aString"],
3208
+ source: "lazyAssignValue: aString\x0a\x09self lazyAssign: aString dependsOnState: false",
3209
+ messageSends: ["lazyAssign:dependsOnState:"],
3210
+ referencedClasses: []
3211
+ }),
3212
+ smalltalk.ImpCodeGenerator);
3213
+
3214
+ smalltalk.addMethod(
3215
+ "_makeTargetRealVariable",
3216
+ smalltalk.method({
3217
+ selector: "makeTargetRealVariable",
3218
+ category: 'compilation DSL',
3219
+ fn: function (){
3220
+ var self=this;
3221
+ ((($receiver = smalltalk.send(self['@lazyVars'], "_includesKey_", [self['@target']])).klass === smalltalk.Boolean) ? ($receiver ? (function(){smalltalk.send(self['@lazyVars'], "_removeKey_", [self['@target']]);smalltalk.send(self['@lazyVars'], "_at_put_", [smalltalk.send("assigned ", "__comma", [self['@target']]), nil]);return smalltalk.send(self['@realVarNames'], "_add_", [self['@target']]);})() : nil) : smalltalk.send($receiver, "_ifTrue_", [(function(){smalltalk.send(self['@lazyVars'], "_removeKey_", [self['@target']]);smalltalk.send(self['@lazyVars'], "_at_put_", [smalltalk.send("assigned ", "__comma", [self['@target']]), nil]);return smalltalk.send(self['@realVarNames'], "_add_", [self['@target']]);})]));
3222
+ return self;},
3223
+ args: [],
3224
+ source: "makeTargetRealVariable\x0a\x09(lazyVars includesKey: target) ifTrue: [\x0a\x09\x09lazyVars removeKey: target.\x0a\x09\x09lazyVars at: 'assigned ',target put: nil. \x22<-- only to retain size, it is used in nextLazyvarName\x22\x0a\x09\x09realVarNames add: target ].",
3225
+ messageSends: ["ifTrue:", "includesKey:", "removeKey:", "at:put:", ",", "add:"],
3226
+ referencedClasses: []
3227
+ }),
3228
+ smalltalk.ImpCodeGenerator);
3229
+
3230
+ smalltalk.addMethod(
3231
+ "_mylf",
3232
+ smalltalk.method({
3233
+ selector: "mylf",
3234
+ category: 'output',
3235
+ fn: function () {
3236
+ var self=this;
3237
+ return smalltalk.send(smalltalk.send((smalltalk.String || String), "_lf", []), "__comma", [smalltalk.send(smalltalk.send((smalltalk.Array || Array), "_new_", [((($receiver = self['@nestedBlocks']).klass === smalltalk.Number) ? $receiver +(2) : smalltalk.send($receiver, "__plus", [(2)]))]), "_join_", [smalltalk.send((smalltalk.String || String), "_tab", [])])]);
3238
+ return self;},
3239
+ args: [],
3240
+ source: "mylf\x0a\x09^String lf, ((Array new: nestedBlocks+2) join: String tab)",
3241
+ messageSends: [",", "lf", "join:", "new:", "+", "tab"],
3242
+ referencedClasses: ["String", "Array"]
3243
+ }),
3244
+ smalltalk.ImpCodeGenerator);
3245
+
3246
+ smalltalk.addMethod(
3247
+ "_nextLazyvarName",
3248
+ smalltalk.method({
3249
+ selector: "nextLazyvarName",
3250
+ category: 'compilation DSL',
3251
+ fn: function (){
3252
+ var self=this;
3253
+ var name=nil;
3254
+ (name=smalltalk.send("$", "__comma", [smalltalk.send(smalltalk.send(self['@lazyVars'], "_size", []), "_asString", [])]));
3255
+ smalltalk.send(self['@lazyVars'], "_at_put_", [name, name]);
3256
+ return name;
3257
+ return self;},
3258
+ args: [],
3259
+ source: "nextLazyvarName\x0a\x09| name |\x0a\x09name := '$', lazyVars size asString.\x0a\x09lazyVars at: name put: name.\x0a\x09^name",
3260
+ messageSends: [",", "asString", "size", "at:put:"],
3261
+ referencedClasses: []
3262
+ }),
3263
+ smalltalk.ImpCodeGenerator);
3264
+
3265
+ smalltalk.addMethod(
3266
+ "_nilIfValueWanted",
3267
+ smalltalk.method({
3268
+ selector: "nilIfValueWanted",
3269
+ category: 'compilation DSL',
3270
+ fn: function (){
3271
+ var self=this;
3272
+ (($receiver = self['@target']) != nil && $receiver != undefined) ? (function(){return smalltalk.send(self, "_lazyAssignValue_", ["nil"]);})() : nil;
3273
+ return self;},
3274
+ args: [],
3275
+ source: "nilIfValueWanted\x0a\x09target ifNotNil: [ self lazyAssignValue: 'nil' ]",
3276
+ messageSends: ["ifNotNil:", "lazyAssignValue:"],
3277
+ referencedClasses: []
3278
+ }),
3279
+ smalltalk.ImpCodeGenerator);
3280
+
3281
+ smalltalk.addMethod(
3282
+ "_performOptimizations",
3283
+ smalltalk.method({
3284
+ selector: "performOptimizations",
3285
+ category: 'testing',
3286
+ fn: function () {
3287
+ var self=this;
3288
+ return smalltalk.send(smalltalk.send(self, "_class", []), "_performOptimizations", []);
3289
+ return self;},
3290
+ args: [],
3291
+ source: "performOptimizations\x0a\x09^self class performOptimizations",
3292
+ messageSends: ["performOptimizations", "class"],
3293
+ referencedClasses: []
3294
+ }),
3295
+ smalltalk.ImpCodeGenerator);
3296
+
3297
+ smalltalk.addMethod(
3298
+ "_prvCheckClass_for_",
3299
+ smalltalk.method({
3300
+ selector: "prvCheckClass:for:",
3301
+ category: 'optimizations',
3302
+ fn: function (aClassName, receiver){
3303
+ var self=this;
3304
+ smalltalk.send(self, "_makeTargetRealVariable", []);
3305
+ smalltalk.send(self, "_aboutToModifyState", []);
3306
+ smalltalk.send(self['@stream'], "_nextPutAll_", [smalltalk.send(smalltalk.send(smalltalk.send(smalltalk.send("if((", "__comma", [smalltalk.send(self, "_useValueNamed_", [receiver])]), "__comma", [").klass === smalltalk."]), "__comma", [aClassName]), "__comma", [") "])]);
3307
+ return self;},
3308
+ args: ["aClassName", "receiver"],
3309
+ source: "prvCheckClass: aClassName for: receiver\x0a\x09self makeTargetRealVariable.\x0a\x09self aboutToModifyState.\x0a stream nextPutAll: 'if((', (self useValueNamed: receiver), ').klass === smalltalk.', aClassName, ') '",
3310
+ messageSends: ["makeTargetRealVariable", "aboutToModifyState", "nextPutAll:", ",", "useValueNamed:"],
3311
+ referencedClasses: []
3312
+ }),
3313
+ smalltalk.ImpCodeGenerator);
3314
+
3315
+ smalltalk.addMethod(
3316
+ "_prvInlineNumberOperator_on_and_",
3317
+ smalltalk.method({
3318
+ selector: "prvInlineNumberOperator:on:and:",
3319
+ category: 'optimizations',
3320
+ fn: function (aSelector, receiverNode, operandNode){
3321
+ var self=this;
3322
+ var $early={};
3323
+ try{((($receiver = smalltalk.send(aSelector, "__eq", [aSelector])).klass === smalltalk.Boolean) ? ($receiver ? (function(){return ((($receiver = smalltalk.send(self, "_isNode_ofClass_", [receiverNode, (smalltalk.Number || Number)])).klass === smalltalk.Boolean) ? ($receiver ? (function(){var rcv=nil;
3324
+ var operand=nil;
3325
+ (rcv=smalltalk.send(self, "_isolated_", [receiverNode]));(operand=smalltalk.send(self, "_isolated_", [operandNode]));smalltalk.send(self, "_lazyAssignValue_", [smalltalk.send(smalltalk.send(smalltalk.send(self, "_useValueNamed_", [rcv]), "__comma", [aSelector]), "__comma", [smalltalk.send(self, "_useValueNamed_", [operand])])]);return (function(){throw $early=[true]})();})() : nil) : smalltalk.send($receiver, "_ifTrue_", [(function(){var rcv=nil;
3326
+ var operand=nil;
3327
+ (rcv=smalltalk.send(self, "_isolated_", [receiverNode]));(operand=smalltalk.send(self, "_isolated_", [operandNode]));smalltalk.send(self, "_lazyAssignValue_", [smalltalk.send(smalltalk.send(smalltalk.send(self, "_useValueNamed_", [rcv]), "__comma", [aSelector]), "__comma", [smalltalk.send(self, "_useValueNamed_", [operand])])]);return (function(){throw $early=[true]})();})]));})() : nil) : smalltalk.send($receiver, "_ifTrue_", [(function(){return ((($receiver = smalltalk.send(self, "_isNode_ofClass_", [receiverNode, (smalltalk.Number || Number)])).klass === smalltalk.Boolean) ? ($receiver ? (function(){var rcv=nil;
3328
+ var operand=nil;
3329
+ (rcv=smalltalk.send(self, "_isolated_", [receiverNode]));(operand=smalltalk.send(self, "_isolated_", [operandNode]));smalltalk.send(self, "_lazyAssignValue_", [smalltalk.send(smalltalk.send(smalltalk.send(self, "_useValueNamed_", [rcv]), "__comma", [aSelector]), "__comma", [smalltalk.send(self, "_useValueNamed_", [operand])])]);return (function(){throw $early=[true]})();})() : nil) : smalltalk.send($receiver, "_ifTrue_", [(function(){var rcv=nil;
3330
+ var operand=nil;
3331
+ (rcv=smalltalk.send(self, "_isolated_", [receiverNode]));(operand=smalltalk.send(self, "_isolated_", [operandNode]));smalltalk.send(self, "_lazyAssignValue_", [smalltalk.send(smalltalk.send(smalltalk.send(self, "_useValueNamed_", [rcv]), "__comma", [aSelector]), "__comma", [smalltalk.send(self, "_useValueNamed_", [operand])])]);return (function(){throw $early=[true]})();})]));})]));
3332
+ return false;
3333
+ return self;
3334
+ } catch(e) {if(e===$early)return e[0]; throw e}},
3335
+ args: ["aSelector", "receiverNode", "operandNode"],
3336
+ source: "prvInlineNumberOperator: aSelector on: receiverNode and: operandNode\x0a\x09(aSelector = aSelector) ifTrue: [\x0a\x09\x09(self isNode: receiverNode ofClass: Number) ifTrue: [\x0a\x09\x09\x09| rcv operand |\x0a\x09\x09\x09rcv := self isolated: receiverNode.\x0a\x09\x09\x09operand := self isolated: operandNode.\x0a\x09\x09\x09self lazyAssignValue: ((self useValueNamed: rcv), aSelector, (self useValueNamed: operand)).\x0a\x09\x09\x09^true]].\x0a\x09^false\x0a",
3337
+ messageSends: ["ifTrue:", "=", "isNode:ofClass:", "isolated:", "lazyAssignValue:", ",", "useValueNamed:"],
3338
+ referencedClasses: ["Number"]
3339
+ }),
3340
+ smalltalk.ImpCodeGenerator);
3341
+
3342
+ smalltalk.addMethod(
3343
+ "_prvPutAndClose_",
3344
+ smalltalk.method({
3345
+ selector: "prvPutAndClose:",
3346
+ category: 'output',
3347
+ fn: function (aBlock) {
3348
+ var self=this;
3349
+ smalltalk.send(aBlock, "_value", []);
3350
+ smalltalk.send(self['@stream'], "_nextPutAll_", [smalltalk.send("}", "__comma", [smalltalk.send(self, "_mylf", [])])]);
3351
+ return self;},
3352
+ args: ["aBlock"],
3353
+ source: "prvPutAndClose: aBlock\x0a\x0a\x09aBlock value.\x0a\x09stream nextPutAll: '}', self mylf\x0a",
3354
+ messageSends: ["value", "nextPutAll:", ",", "mylf"],
3355
+ referencedClasses: []
3356
+ }),
3357
+ smalltalk.ImpCodeGenerator);
3358
+
3359
+ smalltalk.addMethod(
3360
+ "_prvPutAndElse_",
3361
+ smalltalk.method({
3362
+ selector: "prvPutAndElse:",
3363
+ category: 'output',
3364
+ fn: function (aBlock) {
3365
+ var self=this;
3366
+ smalltalk.send(aBlock, "_value", []);
3367
+ smalltalk.send(self['@stream'], "_nextPutAll_", ["} else {"]);
3368
+ return self;},
3369
+ args: ["aBlock"],
3370
+ source: "prvPutAndElse: aBlock\x0a\x0a\x09aBlock value.\x0a\x09stream nextPutAll: '} else {'\x0a",
3371
+ messageSends: ["value", "nextPutAll:"],
3372
+ referencedClasses: []
3373
+ }),
3374
+ smalltalk.ImpCodeGenerator);
3375
+
3376
+ smalltalk.addMethod(
3377
+ "_prvWhileConditionStatement_pre_condition_post_",
3378
+ smalltalk.method({
3379
+ selector: "prvWhileConditionStatement:pre:condition:post:",
3380
+ category: 'optimizations',
3381
+ fn: function (stmtString, preString, anObject, postString){
3382
+ var self=this;
3383
+ var x=nil;
3384
+ smalltalk.send(self['@stream'], "_nextPutAll_", [stmtString]);
3385
+ (x=smalltalk.send(self, "_isolatedUse_", [smalltalk.send(smalltalk.send(anObject, "_nodes", []), "_first", [])]));
3386
+ smalltalk.send(x, "_ifEmpty_", [(function(){return (x="\x22should not reach - receiver includes ^\x22");})]);
3387
+ smalltalk.send(self['@stream'], "_nextPutAll_", [smalltalk.send(smalltalk.send(preString, "__comma", [x]), "__comma", [postString])]);
3388
+ smalltalk.send(self, "_nilIfValueWanted", []);
3389
+ return self;},
3390
+ args: ["stmtString", "preString", "anObject", "postString"],
3391
+ source: "prvWhileConditionStatement: stmtString pre: preString condition: anObject post: postString\x0a\x09| x |\x0a\x09stream nextPutAll: stmtString.\x0a\x09x := self isolatedUse: anObject nodes first.\x0a\x09x ifEmpty: [ x := '\x22should not reach - receiver includes ^\x22' ].\x0a\x09stream nextPutAll: preString, x, postString.\x0a\x09self nilIfValueWanted",
3392
+ messageSends: ["nextPutAll:", "isolatedUse:", "first", "nodes", "ifEmpty:", ",", "nilIfValueWanted"],
3393
+ referencedClasses: []
3394
+ }),
3395
+ smalltalk.ImpCodeGenerator);
3396
+
3397
+ smalltalk.addMethod(
3398
+ "_putTemps_",
3399
+ smalltalk.method({
3400
+ selector: "putTemps:",
3401
+ category: 'output',
3402
+ fn: function (temps) {
3403
+ var self=this;
3404
+ smalltalk.send(temps, "_ifNotEmpty_", [(function(){smalltalk.send(self['@stream'], "_nextPutAll_", ["var "]);smalltalk.send(temps, "_do_separatedBy_", [(function(each){var temp=nil;
3405
+ (temp=smalltalk.send(self, "_safeVariableNameFor_", [each]));smalltalk.send(self['@tempVariables'], "_add_", [temp]);return smalltalk.send(self['@stream'], "_nextPutAll_", [smalltalk.send(temp, "__comma", ["=nil"])]);}), (function(){return smalltalk.send(self['@stream'], "_nextPutAll_", [","]);})]);return smalltalk.send(self['@stream'], "_nextPutAll_", [smalltalk.send(";", "__comma", [smalltalk.send(self, "_mylf", [])])]);})]);
3406
+ return self;},
3407
+ args: ["temps"],
3408
+ source: "putTemps: temps\x0a temps ifNotEmpty: [\x0a\x09stream nextPutAll: 'var '.\x0a\x09temps do: [:each | | temp |\x0a temp := self safeVariableNameFor: each.\x0a\x09 tempVariables add: temp.\x0a\x09 stream nextPutAll: temp, '=nil'] separatedBy: [ stream nextPutAll: ',' ].\x0a\x09stream nextPutAll: ';', self mylf\x0a ]",
3409
+ messageSends: ["ifNotEmpty:", "nextPutAll:", "do:separatedBy:", "safeVariableNameFor:", "add:", ",", "mylf"],
3410
+ referencedClasses: []
3411
+ }),
3412
+ smalltalk.ImpCodeGenerator);
3413
+
3414
+ smalltalk.addMethod(
3415
+ "_realAssign_",
3416
+ smalltalk.method({
3417
+ selector: "realAssign:",
3418
+ category: 'compilation DSL',
3419
+ fn: function (aString){
3420
+ var self=this;
3421
+ var closer=nil;
3422
+ smalltalk.send(aString, "_ifNotEmpty_", [(function(){smalltalk.send(self, "_aboutToModifyState", []);(closer="");smalltalk.send(self, "_ifValueWanted_", [(function(){return smalltalk.send(self['@stream'], "_nextPutAll_", [((($receiver = smalltalk.send(self['@target'], "__eq", ["^"])).klass === smalltalk.Boolean) ? ($receiver ? (function(){return "return ";})() : (function(){return ((($receiver = smalltalk.send(self['@target'], "__eq", ["!"])).klass === smalltalk.Boolean) ? ($receiver ? (function(){(closer="]");return "throw $early=[";})() : (function(){return smalltalk.send(self['@target'], "__comma", ["="]);})()) : smalltalk.send($receiver, "_ifTrue_ifFalse_", [(function(){(closer="]");return "throw $early=[";}), (function(){return smalltalk.send(self['@target'], "__comma", ["="]);})]));})()) : smalltalk.send($receiver, "_ifTrue_ifFalse_", [(function(){return "return ";}), (function(){return ((($receiver = smalltalk.send(self['@target'], "__eq", ["!"])).klass === smalltalk.Boolean) ? ($receiver ? (function(){(closer="]");return "throw $early=[";})() : (function(){return smalltalk.send(self['@target'], "__comma", ["="]);})()) : smalltalk.send($receiver, "_ifTrue_ifFalse_", [(function(){(closer="]");return "throw $early=[";}), (function(){return smalltalk.send(self['@target'], "__comma", ["="]);})]));})]))]);})]);smalltalk.send(self, "_makeTargetRealVariable", []);return smalltalk.send(self['@stream'], "_nextPutAll_", [smalltalk.send(smalltalk.send(smalltalk.send(aString, "__comma", [closer]), "__comma", [";"]), "__comma", [smalltalk.send(self, "_mylf", [])])]);})]);
3423
+ return self;},
3424
+ args: ["aString"],
3425
+ source: "realAssign: aString\x0a\x09| closer |\x0a\x09aString ifNotEmpty: [\x0a\x09\x09self aboutToModifyState.\x0a\x09\x09closer := ''.\x0a\x09\x09self ifValueWanted: [ stream nextPutAll:\x0a\x09\x09\x09(target = '^' ifTrue: ['return '] ifFalse: [\x0a\x09\x09\x09\x09target = '!' ifTrue: [ closer := ']'. 'throw $early=['] ifFalse: [\x0a\x09\x09\x09\x09\x09target, '=']]) ].\x0a\x09\x09self makeTargetRealVariable.\x0a\x09\x09stream nextPutAll: aString, closer, ';', self mylf ]",
3426
+ messageSends: ["ifNotEmpty:", "aboutToModifyState", "ifValueWanted:", "nextPutAll:", "ifTrue:ifFalse:", "=", ",", "makeTargetRealVariable", "mylf"],
3427
+ referencedClasses: []
3428
+ }),
3429
+ smalltalk.ImpCodeGenerator);
3430
+
3431
+ smalltalk.addMethod(
3432
+ "_send_to_arguments_superSend_",
3433
+ smalltalk.method({
3434
+ selector: "send:to:arguments:superSend:",
3435
+ category: 'visiting',
3436
+ fn: function (aSelector, aReceiver, aCollection, aBoolean){
3437
+ var self=this;
3438
+ var args=nil;
3439
+ (args=smalltalk.send(self, "_isolated_", [(function($rec){smalltalk.send($rec, "_nodes_", [aCollection]);return smalltalk.send($rec, "_yourself", []);})(smalltalk.send((smalltalk.DynamicArrayNode || DynamicArrayNode), "_new", []))]));
3440
+ smalltalk.send(self, "_lazyAssignExpression_", [smalltalk.send((smalltalk.String || String), "_streamContents_", [(function(str){smalltalk.send(str, "_nextPutAll_", ["smalltalk.send("]);smalltalk.send(str, "_nextPutAll_", [smalltalk.send(self, "_useValueNamed_", [aReceiver])]);smalltalk.send(str, "_nextPutAll_", [smalltalk.send(smalltalk.send(", \x22", "__comma", [smalltalk.send(aSelector, "_asSelector", [])]), "__comma", ["\x22, "])]);smalltalk.send(str, "_nextPutAll_", [smalltalk.send(self, "_useValueNamed_", [args])]);((($receiver = aBoolean).klass === smalltalk.Boolean) ? ($receiver ? (function(){return smalltalk.send(str, "_nextPutAll_", [smalltalk.send(", smalltalk.", "__comma", [smalltalk.send(self, "_classNameFor_", [smalltalk.send(smalltalk.send(self, "_currentClass", []), "_superclass", [])])])]);})() : nil) : smalltalk.send($receiver, "_ifTrue_", [(function(){return smalltalk.send(str, "_nextPutAll_", [smalltalk.send(", smalltalk.", "__comma", [smalltalk.send(self, "_classNameFor_", [smalltalk.send(smalltalk.send(self, "_currentClass", []), "_superclass", [])])])]);})]));return smalltalk.send(str, "_nextPutAll_", [")"]);})])]);
3441
+ return self;},
3442
+ args: ["aSelector", "aReceiver", "aCollection", "aBoolean"],
3443
+ source: "send: aSelector to: aReceiver arguments: aCollection superSend: aBoolean\x0a\x09| args |\x0a\x09args := self isolated: (DynamicArrayNode new nodes: aCollection; yourself).\x0a\x09self lazyAssignExpression: (String streamContents: [ :str |\x0a\x09\x09str nextPutAll: 'smalltalk.send('.\x0a\x09\x09str nextPutAll: (self useValueNamed: aReceiver).\x0a\x09\x09str nextPutAll: ', \x22', aSelector asSelector, '\x22, '.\x0a\x09\x09str nextPutAll: (self useValueNamed: args).\x0a\x09\x09aBoolean ifTrue: [\x0a\x09\x09\x09str nextPutAll: ', smalltalk.', (self classNameFor: self currentClass superclass)].\x0a\x09\x09str nextPutAll: ')'\x0a\x09])",
3444
+ messageSends: ["isolated:", "nodes:", "yourself", "new", "lazyAssignExpression:", "streamContents:", "nextPutAll:", "useValueNamed:", ",", "asSelector", "ifTrue:", "classNameFor:", "superclass", "currentClass"],
3445
+ referencedClasses: ["DynamicArrayNode", "String"]
3446
+ }),
3447
+ smalltalk.ImpCodeGenerator);
3448
+
3449
+ smalltalk.addMethod(
3450
+ "_sequenceOfNodes_temps_",
3451
+ smalltalk.method({
3452
+ selector: "sequenceOfNodes:temps:",
3453
+ category: 'visiting',
3454
+ fn: function (nodes, temps){
3455
+ var self=this;
3456
+ ((($receiver = smalltalk.send(nodes, "_isEmpty", [])).klass === smalltalk.Boolean) ? (! $receiver ? (function(){var old=nil;
3457
+ var index=nil;
3458
+ smalltalk.send(self, "_putTemps_", [temps]);(old=smalltalk.send(self, "_switchTarget_", [nil]));(index=(0));return smalltalk.send(nodes, "_do_", [(function(each){(index=((($receiver = index).klass === smalltalk.Number) ? $receiver +(1) : smalltalk.send($receiver, "__plus", [(1)])));((($receiver = smalltalk.send(index, "__eq", [smalltalk.send(nodes, "_size", [])])).klass === smalltalk.Boolean) ? ($receiver ? (function(){return smalltalk.send(self, "_switchTarget_", [old]);})() : nil) : smalltalk.send($receiver, "_ifTrue_", [(function(){return smalltalk.send(self, "_switchTarget_", [old]);})]));return smalltalk.send(self, "_visit_", [each]);})]);})() : (function(){return smalltalk.send(self, "_nilIfValueWanted", []);})()) : smalltalk.send($receiver, "_ifFalse_ifTrue_", [(function(){var old=nil;
3459
+ var index=nil;
3460
+ smalltalk.send(self, "_putTemps_", [temps]);(old=smalltalk.send(self, "_switchTarget_", [nil]));(index=(0));return smalltalk.send(nodes, "_do_", [(function(each){(index=((($receiver = index).klass === smalltalk.Number) ? $receiver +(1) : smalltalk.send($receiver, "__plus", [(1)])));((($receiver = smalltalk.send(index, "__eq", [smalltalk.send(nodes, "_size", [])])).klass === smalltalk.Boolean) ? ($receiver ? (function(){return smalltalk.send(self, "_switchTarget_", [old]);})() : nil) : smalltalk.send($receiver, "_ifTrue_", [(function(){return smalltalk.send(self, "_switchTarget_", [old]);})]));return smalltalk.send(self, "_visit_", [each]);})]);}), (function(){return smalltalk.send(self, "_nilIfValueWanted", []);})]));
3461
+ return self;},
3462
+ args: ["nodes", "temps"],
3463
+ source: "sequenceOfNodes: nodes temps: temps\x0a\x09nodes isEmpty\x0a\x09\x09ifFalse: [ | old index |\x0a\x09\x09\x09self putTemps: temps.\x0a\x09\x09\x09old :=self switchTarget: nil.\x0a\x09\x09\x09index := 0.\x0a\x09\x09\x09nodes do: [:each |\x0a\x09\x09\x09\x09index := index + 1.\x0a\x09\x09\x09\x09index = nodes size ifTrue: [ self switchTarget: old ].\x0a\x09\x09\x09self visit: each ]]\x0a\x09\x09ifTrue: [ self nilIfValueWanted ]",
3464
+ messageSends: ["ifFalse:ifTrue:", "isEmpty", "putTemps:", "switchTarget:", "do:", "+", "ifTrue:", "=", "size", "visit:", "nilIfValueWanted"],
3465
+ referencedClasses: []
3466
+ }),
3467
+ smalltalk.ImpCodeGenerator);
3468
+
3469
+ smalltalk.addMethod(
3470
+ "_switchTarget_",
3471
+ smalltalk.method({
3472
+ selector: "switchTarget:",
3473
+ category: 'compilation DSL',
3474
+ fn: function (aString){
3475
+ var self=this;
3476
+ var old=nil;
3477
+ (old=self['@target']);
3478
+ (self['@target']=aString);
3479
+ return old;
3480
+ return self;},
3481
+ args: ["aString"],
3482
+ source: "switchTarget: aString\x0a\x09| old |\x0a\x09old := target.\x0a\x09target := aString.\x0a\x09^old",
3483
+ messageSends: [],
3484
+ referencedClasses: []
3485
+ }),
3486
+ smalltalk.ImpCodeGenerator);
3487
+
3488
+ smalltalk.addMethod(
3489
+ "_tempVariables",
3490
+ smalltalk.method({
3491
+ selector: "tempVariables",
3492
+ category: 'accessing',
3493
+ fn: function () {
3494
+ var self=this;
3495
+ return smalltalk.send(self['@tempVariables'], "_copy", []);
3496
+ return self;},
3497
+ args: [],
3498
+ source: "tempVariables\x0a\x09^tempVariables copy",
3499
+ messageSends: ["copy"],
3500
+ referencedClasses: []
3501
+ }),
3502
+ smalltalk.ImpCodeGenerator);
3503
+
3504
+ smalltalk.addMethod(
3505
+ "_unknownVariables",
3506
+ smalltalk.method({
3507
+ selector: "unknownVariables",
3508
+ category: 'accessing',
3509
+ fn: function () {
3510
+ var self=this;
3511
+ return smalltalk.send(self['@unknownVariables'], "_copy", []);
3512
+ return self;},
3513
+ args: [],
3514
+ source: "unknownVariables\x0a\x09^unknownVariables copy",
3515
+ messageSends: ["copy"],
3516
+ referencedClasses: []
3517
+ }),
3518
+ smalltalk.ImpCodeGenerator);
3519
+
3520
+ smalltalk.addMethod(
3521
+ "_useValueNamed_",
3522
+ smalltalk.method({
3523
+ selector: "useValueNamed:",
3524
+ category: 'compilation DSL',
3525
+ fn: function (key){
3526
+ var self=this;
3527
+ var $early={};
3528
+ try{var val=nil;
3529
+ ((($receiver = smalltalk.send(self['@realVarNames'], "_includes_", [key])).klass === smalltalk.Boolean) ? ($receiver ? (function(){return (function(){throw $early=[key]})();})() : nil) : smalltalk.send($receiver, "_ifTrue_", [(function(){return (function(){throw $early=[key]})();})]));
3530
+ smalltalk.send(self['@mutables'], "_remove_", [key]);
3531
+ return smalltalk.send(self['@lazyVars'], "_at_", [key]);
3532
+ return self;
3533
+ } catch(e) {if(e===$early)return e[0]; throw e}},
3534
+ args: ["key"],
3535
+ source: "useValueNamed: key\x0a\x09| val |\x0a\x09(realVarNames includes: key) ifTrue: [ ^key ].\x0a\x09mutables remove: key.\x0a\x09^lazyVars at: key",
3536
+ messageSends: ["ifTrue:", "includes:", "remove:", "at:"],
3537
+ referencedClasses: []
3538
+ }),
3539
+ smalltalk.ImpCodeGenerator);
3540
+
3541
+ smalltalk.addMethod(
3542
+ "_visit_",
3543
+ smalltalk.method({
3544
+ selector: "visit:",
3545
+ category: 'visiting',
3546
+ fn: function (aNode) {
3547
+ var self=this;
3548
+ smalltalk.send(aNode, "_accept_", [self]);
3549
+ return self;},
3550
+ args: ["aNode"],
3551
+ source: "visit: aNode\x0a\x09aNode accept: self",
3552
+ messageSends: ["accept:"],
3553
+ referencedClasses: []
3554
+ }),
3555
+ smalltalk.ImpCodeGenerator);
3556
+
3557
+ smalltalk.addMethod(
3558
+ "_visit_targetBeing_",
3559
+ smalltalk.method({
3560
+ selector: "visit:targetBeing:",
3561
+ category: 'compilation DSL',
3562
+ fn: function (aNode, aString){
3563
+ var self=this;
3564
+ var old=nil;
3565
+ (old=smalltalk.send(self, "_switchTarget_", [aString]));
3566
+ smalltalk.send(self, "_visit_", [aNode]);
3567
+ return smalltalk.send(self, "_switchTarget_", [old]);
3568
+ return self;},
3569
+ args: ["aNode", "aString"],
3570
+ source: "visit: aNode targetBeing: aString\x0a| old |\x0a\x09old := self switchTarget: aString.\x0a\x09self visit: aNode.\x0a\x09^ self switchTarget: old.\x0a",
3571
+ messageSends: ["switchTarget:", "visit:"],
3572
+ referencedClasses: []
3573
+ }),
3574
+ smalltalk.ImpCodeGenerator);
3575
+
3576
+ smalltalk.addMethod(
3577
+ "_visitAssignmentNode_",
3578
+ smalltalk.method({
3579
+ selector: "visitAssignmentNode:",
3580
+ category: 'visiting',
3581
+ fn: function (aNode){
3582
+ var self=this;
3583
+ var olds=nil;
3584
+ var oldt=nil;
3585
+ (olds=self['@stream']);
3586
+ (self['@stream']=smalltalk.send("", "_writeStream", []));
3587
+ (oldt=smalltalk.send(self, "_switchTarget_", [smalltalk.send(self, "_nextLazyvarName", [])]));
3588
+ smalltalk.send(self, "_visit_", [smalltalk.send(aNode, "_left", [])]);
3589
+ smalltalk.send(self, "_assert_", [smalltalk.send(smalltalk.send(self['@lazyVars'], "_at_", [self['@target']]), "_~_eq", [self['@target']])]);
3590
+ smalltalk.send(self, "_switchTarget_", [smalltalk.send(self, "_useValueNamed_", [smalltalk.send(self, "_switchTarget_", [nil])])]);
3591
+ smalltalk.send(self, "_assert_", [smalltalk.send(smalltalk.send(self['@lazyVars'], "_includesKey_", [self['@target']]), "_not", [])]);
3592
+ (self['@stream']=olds);
3593
+ smalltalk.send(self, "_visit_", [smalltalk.send(aNode, "_right", [])]);
3594
+ (olds=smalltalk.send(self, "_switchTarget_", [oldt]));
3595
+ smalltalk.send(self, "_ifValueWanted_", [(function(){return smalltalk.send(self, "_lazyAssignExpression_", [olds]);})]);
3596
+ return self;},
3597
+ args: ["aNode"],
3598
+ source: "visitAssignmentNode: aNode\x0a| olds oldt |\x0a\x09olds := stream.\x0a\x09stream := '' writeStream.\x0a\x09oldt := self switchTarget: self nextLazyvarName.\x0a\x09self visit: aNode left.\x0a\x09self assert: (lazyVars at: target) ~= target.\x0a\x09self switchTarget: (self useValueNamed: (self switchTarget: nil)).\x0a\x09self assert: (lazyVars includesKey: target) not.\x0a\x09stream := olds.\x0a\x09self visit: aNode right.\x0a\x09olds := self switchTarget: oldt.\x0a\x09self ifValueWanted: [ self lazyAssignExpression: olds ]",
3599
+ messageSends: ["writeStream", "switchTarget:", "nextLazyvarName", "visit:", "left", "assert:", "~=", "at:", "useValueNamed:", "not", "includesKey:", "right", "ifValueWanted:", "lazyAssignExpression:"],
3600
+ referencedClasses: []
3601
+ }),
3602
+ smalltalk.ImpCodeGenerator);
3603
+
3604
+ smalltalk.addMethod(
3605
+ "_visitBlockNode_",
3606
+ smalltalk.method({
3607
+ selector: "visitBlockNode:",
3608
+ category: 'visiting',
3609
+ fn: function (aNode){
3610
+ var self=this;
3611
+ var oldt=nil;
3612
+ var olds=nil;
3613
+ var oldm=nil;
3614
+ smalltalk.send(self, "_assert_", [smalltalk.send(smalltalk.send(smalltalk.send(aNode, "_nodes", []), "_size", []), "__eq", [(1)])]);
3615
+ (oldt=smalltalk.send(self, "_switchTarget_", ["^"]));
3616
+ (olds=self['@stream']);
3617
+ (self['@stream']=smalltalk.send("", "_writeStream", []));
3618
+ smalltalk.send(self['@stream'], "_nextPutAll_", ["(function("]);
3619
+ smalltalk.send(smalltalk.send(aNode, "_parameters", []), "_do_separatedBy_", [(function(each){smalltalk.send(self['@tempVariables'], "_add_", [each]);return smalltalk.send(self['@stream'], "_nextPutAll_", [each]);}), (function(){return smalltalk.send(self['@stream'], "_nextPutAll_", [", "]);})]);
3620
+ smalltalk.send(self['@stream'], "_nextPutAll_", ["){"]);
3621
+ (self['@nestedBlocks']=((($receiver = self['@nestedBlocks']).klass === smalltalk.Number) ? $receiver +(1) : smalltalk.send($receiver, "__plus", [(1)])));
3622
+ (oldm=self['@mutables']);
3623
+ (self['@mutables']=smalltalk.send((smalltalk.Set || Set), "_new", []));
3624
+ smalltalk.send(self, "_visit_", [smalltalk.send(smalltalk.send(aNode, "_nodes", []), "_first", [])]);
3625
+ smalltalk.send(self, "_assert_", [smalltalk.send(self['@mutables'], "_isEmpty", [])]);
3626
+ (self['@mutables']=oldm);
3627
+ (self['@nestedBlocks']=((($receiver = self['@nestedBlocks']).klass === smalltalk.Number) ? $receiver -(1) : smalltalk.send($receiver, "__minus", [(1)])));
3628
+ smalltalk.send(self['@stream'], "_nextPutAll_", ["})"]);
3629
+ smalltalk.send(self, "_switchTarget_", [oldt]);
3630
+ (oldt=smalltalk.send(self['@stream'], "_contents", []));
3631
+ (self['@stream']=olds);
3632
+ smalltalk.send(self, "_lazyAssignExpression_", [oldt]);
3633
+ return self;},
3634
+ args: ["aNode"],
3635
+ source: "visitBlockNode: aNode\x0a| oldt olds oldm |\x0a\x09self assert: aNode nodes size = 1.\x0a\x09oldt := self switchTarget: '^'.\x0a\x09olds := stream.\x0a\x09stream := '' writeStream.\x0a\x09stream nextPutAll: '(function('.\x0a\x09aNode parameters \x0a\x09 do: [:each |\x0a\x09\x09tempVariables add: each.\x0a\x09\x09stream nextPutAll: each]\x0a\x09 separatedBy: [stream nextPutAll: ', '].\x0a\x09stream nextPutAll: '){'.\x0a\x09nestedBlocks := nestedBlocks + 1.\x0a\x09oldm := mutables.\x0a\x09mutables := Set new.\x0a\x09self visit: aNode nodes first.\x0a\x09self assert: mutables isEmpty.\x0a\x09mutables := oldm.\x0a\x09nestedBlocks := nestedBlocks - 1.\x0a\x09stream nextPutAll: '})'.\x0a\x09self switchTarget: oldt.\x0a\x09oldt := stream contents.\x0a\x09stream := olds.\x0a\x09self lazyAssignExpression: oldt",
3636
+ messageSends: ["assert:", "=", "size", "nodes", "switchTarget:", "writeStream", "nextPutAll:", "do:separatedBy:", "parameters", "add:", "+", "new", "visit:", "first", "isEmpty", "-", "contents", "lazyAssignExpression:"],
3637
+ referencedClasses: ["Set"]
3638
+ }),
3639
+ smalltalk.ImpCodeGenerator);
3640
+
3641
+ smalltalk.addMethod(
3642
+ "_visitBlockSequenceNode_",
3643
+ smalltalk.method({
3644
+ selector: "visitBlockSequenceNode:",
3645
+ category: 'visiting',
3646
+ fn: function (aNode) {
3647
+ var self=this;
3648
+ smalltalk.send(self, "_sequenceOfNodes_temps_", [smalltalk.send(aNode, "_nodes", []), smalltalk.send(aNode, "_temps", [])]);
3649
+ return self;},
3650
+ args: ["aNode"],
3651
+ source: "visitBlockSequenceNode: aNode\x0a\x09self sequenceOfNodes: aNode nodes temps: aNode temps",
3652
+ messageSends: ["sequenceOfNodes:temps:", "nodes", "temps"],
3653
+ referencedClasses: []
3654
+ }),
3655
+ smalltalk.ImpCodeGenerator);
3656
+
3657
+ smalltalk.addMethod(
3658
+ "_visitCascadeNode_",
3659
+ smalltalk.method({
3660
+ selector: "visitCascadeNode:",
3661
+ category: 'visiting',
3662
+ fn: function (aNode){
3663
+ var self=this;
3664
+ var rcv=nil;
3665
+ (rcv=smalltalk.send(self, "_isolated_", [smalltalk.send(aNode, "_receiver", [])]));
3666
+ smalltalk.send(self, "_aboutToModifyState", []);
3667
+ (rcv=smalltalk.send(self, "_useValueNamed_", [rcv]));
3668
+ smalltalk.send(smalltalk.send(aNode, "_nodes", []), "_do_", [(function(each){return smalltalk.send(each, "_receiver_", [smalltalk.send(smalltalk.send((smalltalk.VerbatimNode || VerbatimNode), "_new", []), "_value_", [rcv])]);})]);
3669
+ smalltalk.send(self, "_sequenceOfNodes_temps_", [smalltalk.send(aNode, "_nodes", []), []]);
3670
+ return self;},
3671
+ args: ["aNode"],
3672
+ source: "visitCascadeNode: aNode\x0a\x09| rcv |\x0a\x09rcv := self isolated: aNode receiver.\x0a\x09self aboutToModifyState.\x0a\x09rcv := self useValueNamed: rcv.\x0a\x09aNode nodes do: [:each |\x0a\x09\x09each receiver: (VerbatimNode new value: rcv) ].\x0a\x09self sequenceOfNodes: aNode nodes temps: #()",
3673
+ messageSends: ["isolated:", "receiver", "aboutToModifyState", "useValueNamed:", "do:", "nodes", "receiver:", "value:", "new", "sequenceOfNodes:temps:"],
3674
+ referencedClasses: ["VerbatimNode"]
3675
+ }),
3676
+ smalltalk.ImpCodeGenerator);
3677
+
3678
+ smalltalk.addMethod(
3679
+ "_visitClassReferenceNode_",
3680
+ smalltalk.method({
3681
+ selector: "visitClassReferenceNode:",
3682
+ category: 'visiting',
3683
+ fn: function (aNode){
3684
+ var self=this;
3685
+ ((($receiver = smalltalk.send(self['@referencedClasses'], "_includes_", [smalltalk.send(aNode, "_value", [])])).klass === smalltalk.Boolean) ? (! $receiver ? (function(){return smalltalk.send(self['@referencedClasses'], "_add_", [smalltalk.send(aNode, "_value", [])]);})() : nil) : smalltalk.send($receiver, "_ifFalse_", [(function(){return smalltalk.send(self['@referencedClasses'], "_add_", [smalltalk.send(aNode, "_value", [])]);})]));
3686
+ smalltalk.send(self, "_lazyAssignExpression_", [smalltalk.send(smalltalk.send(smalltalk.send(smalltalk.send("(smalltalk.", "__comma", [smalltalk.send(aNode, "_value", [])]), "__comma", [" || "]), "__comma", [smalltalk.send(aNode, "_value", [])]), "__comma", [")"])]);
3687
+ return self;},
3688
+ args: ["aNode"],
3689
+ source: "visitClassReferenceNode: aNode\x0a\x09(referencedClasses includes: aNode value) ifFalse: [\x0a\x09\x09referencedClasses add: aNode value].\x0a\x09self lazyAssignExpression: '(smalltalk.', aNode value, ' || ', aNode value, ')'",
3690
+ messageSends: ["ifFalse:", "includes:", "value", "add:", "lazyAssignExpression:", ","],
3691
+ referencedClasses: []
3692
+ }),
3693
+ smalltalk.ImpCodeGenerator);
3694
+
3695
+ smalltalk.addMethod(
3696
+ "_visitDynamicArrayNode_",
3697
+ smalltalk.method({
3698
+ selector: "visitDynamicArrayNode:",
3699
+ category: 'visiting',
3700
+ fn: function (aNode){
3701
+ var self=this;
3702
+ var args=nil;
3703
+ (args=smalltalk.send(smalltalk.send(aNode, "_nodes", []), "_collect_", [(function(node){return smalltalk.send(self, "_isolated_", [node]);})]));
3704
+ smalltalk.send(self, "_lazyAssignValue_", [smalltalk.send((smalltalk.String || String), "_streamContents_", [(function(str){smalltalk.send(str, "_nextPutAll_", ["["]);smalltalk.send(args, "_do_separatedBy_", [(function(each){return smalltalk.send(str, "_nextPutAll_", [smalltalk.send(self, "_useValueNamed_", [each])]);}), (function(){return smalltalk.send(str, "_nextPutAll_", [", "]);})]);return smalltalk.send(str, "_nextPutAll_", ["]"]);})])]);
3705
+ return self;},
3706
+ args: ["aNode"],
3707
+ source: "visitDynamicArrayNode: aNode\x0a\x09| args |\x0a\x09args :=aNode nodes collect: [ :node | self isolated: node ].\x0a\x09self lazyAssignValue: (String streamContents: [ :str |\x0a\x09\x09str nextPutAll: '['.\x0a\x09\x09args\x0a\x09 \x09\x09do: [:each | str nextPutAll: (self useValueNamed: each) ]\x0a\x09 \x09\x09separatedBy: [str nextPutAll: ', '].\x0a str nextPutAll: ']'\x0a\x09])",
3708
+ messageSends: ["collect:", "nodes", "isolated:", "lazyAssignValue:", "streamContents:", "nextPutAll:", "do:separatedBy:", "useValueNamed:"],
3709
+ referencedClasses: ["String"]
3710
+ }),
3711
+ smalltalk.ImpCodeGenerator);
3712
+
3713
+ smalltalk.addMethod(
3714
+ "_visitDynamicDictionaryNode_",
3715
+ smalltalk.method({
3716
+ selector: "visitDynamicDictionaryNode:",
3717
+ category: 'visiting',
3718
+ fn: function (aNode){
3719
+ var self=this;
3720
+ var elements=nil;
3721
+ (elements=smalltalk.send(self, "_isolated_", [(function($rec){smalltalk.send($rec, "_nodes_", [smalltalk.send(aNode, "_nodes", [])]);return smalltalk.send($rec, "_yourself", []);})(smalltalk.send((smalltalk.DynamicArrayNode || DynamicArrayNode), "_new", []))]));
3722
+ smalltalk.send(self, "_lazyAssignValue_", [smalltalk.send(smalltalk.send("smalltalk.HashedCollection._fromPairs_(", "__comma", [smalltalk.send(self, "_useValueNamed_", [elements])]), "__comma", [")"])]);
3723
+ return self;},
3724
+ args: ["aNode"],
3725
+ source: "visitDynamicDictionaryNode: aNode\x0a\x09| elements |\x0a\x09elements := self isolated: (DynamicArrayNode new nodes: aNode nodes; yourself).\x0a\x09self lazyAssignValue: 'smalltalk.HashedCollection._fromPairs_(', (self useValueNamed: elements), ')'",
3726
+ messageSends: ["isolated:", "nodes:", "nodes", "yourself", "new", "lazyAssignValue:", ",", "useValueNamed:"],
3727
+ referencedClasses: ["DynamicArrayNode"]
3728
+ }),
3729
+ smalltalk.ImpCodeGenerator);
3730
+
3731
+ smalltalk.addMethod(
3732
+ "_visitFailure_",
3733
+ smalltalk.method({
3734
+ selector: "visitFailure:",
3735
+ category: 'visiting',
3736
+ fn: function (aFailure) {
3737
+ var self=this;
3738
+ smalltalk.send(self, "_error_", [smalltalk.send(aFailure, "_asString", [])]);
3739
+ return self;},
3740
+ args: ["aFailure"],
3741
+ source: "visitFailure: aFailure\x0a\x09self error: aFailure asString",
3742
+ messageSends: ["error:", "asString"],
3743
+ referencedClasses: []
3744
+ }),
3745
+ smalltalk.ImpCodeGenerator);
3746
+
3747
+ smalltalk.addMethod(
3748
+ "_visitJSStatementNode_",
3749
+ smalltalk.method({
3750
+ selector: "visitJSStatementNode:",
3751
+ category: 'visiting',
3752
+ fn: function (aNode){
3753
+ var self=this;
3754
+ smalltalk.send(self, "_aboutToModifyState", []);
3755
+ smalltalk.send(self['@stream'], "_nextPutAll_", [smalltalk.send(smalltalk.send(smalltalk.send(";", "__comma", [smalltalk.send(smalltalk.send(aNode, "_source", []), "_replace_with_", [">>", ">"])]), "__comma", [";"]), "__comma", [smalltalk.send(self, "_mylf", [])])]);
3756
+ return self;},
3757
+ args: ["aNode"],
3758
+ source: "visitJSStatementNode: aNode\x0a\x09self aboutToModifyState.\x0a\x09stream nextPutAll: ';', (aNode source replace: '>>' with: '>'), ';', self mylf",
3759
+ messageSends: ["aboutToModifyState", "nextPutAll:", ",", "replace:with:", "source", "mylf"],
3760
+ referencedClasses: []
3761
+ }),
3762
+ smalltalk.ImpCodeGenerator);
3763
+
3764
+ smalltalk.addMethod(
3765
+ "_visitMethodNode_",
3766
+ smalltalk.method({
3767
+ selector: "visitMethodNode:",
3768
+ category: 'visiting',
3769
+ fn: function (aNode){
3770
+ var self=this;
3771
+ var str=nil;
3772
+ var currentSelector=nil;
3773
+ (self['@currentSelector']=smalltalk.send(smalltalk.send(aNode, "_selector", []), "_asSelector", []));
3774
+ (self['@nestedBlocks']=(0));
3775
+ (self['@earlyReturn']=false);
3776
+ (self['@messageSends']=[]);
3777
+ (self['@referencedClasses']=[]);
3778
+ (self['@unknownVariables']=[]);
3779
+ (self['@tempVariables']=[]);
3780
+ (self['@argVariables']=[]);
3781
+ (self['@lazyVars']=smalltalk.send((smalltalk.HashedCollection || HashedCollection), "_new", []));
3782
+ (self['@mutables']=smalltalk.send((smalltalk.Set || Set), "_new", []));
3783
+ (self['@realVarNames']=smalltalk.send((smalltalk.Set || Set), "_new", []));
3784
+ (function($rec){smalltalk.send($rec, "_nextPutAll_", ["smalltalk.method({"]);smalltalk.send($rec, "_lf", []);smalltalk.send($rec, "_nextPutAll_", [smalltalk.send(smalltalk.send("selector: \x22", "__comma", [smalltalk.send(aNode, "_selector", [])]), "__comma", ["\x22,"])]);return smalltalk.send($rec, "_lf", []);})(self['@stream']);
3785
+ (function($rec){smalltalk.send($rec, "_nextPutAll_", [smalltalk.send(smalltalk.send("source: ", "__comma", [smalltalk.send(smalltalk.send(self, "_source", []), "_asJavascript", [])]), "__comma", [","])]);return smalltalk.send($rec, "_lf", []);})(self['@stream']);
3786
+ smalltalk.send(self['@stream'], "_nextPutAll_", ["fn: function("]);
3787
+ smalltalk.send(smalltalk.send(aNode, "_arguments", []), "_do_separatedBy_", [(function(each){smalltalk.send(self['@argVariables'], "_add_", [each]);return smalltalk.send(self['@stream'], "_nextPutAll_", [each]);}), (function(){return smalltalk.send(self['@stream'], "_nextPutAll_", [", "]);})]);
3788
+ smalltalk.send(self['@stream'], "_nextPutAll_", [smalltalk.send("){var self=this;", "__comma", [smalltalk.send(self, "_mylf", [])])]);
3789
+ (str=self['@stream']);
3790
+ (self['@stream']=smalltalk.send("", "_writeStream", []));
3791
+ smalltalk.send(self, "_switchTarget_", [nil]);
3792
+ smalltalk.send(self, "_assert_", [smalltalk.send(smalltalk.send(smalltalk.send(aNode, "_nodes", []), "_size", []), "__eq", [(1)])]);
3793
+ smalltalk.send(self, "_visit_", [smalltalk.send(smalltalk.send(aNode, "_nodes", []), "_first", [])]);
3794
+ smalltalk.send(self['@realVarNames'], "_ifNotEmpty_", [(function(){return smalltalk.send(str, "_nextPutAll_", [smalltalk.send(smalltalk.send(smalltalk.send("var ", "__comma", [smalltalk.send(smalltalk.send(self['@realVarNames'], "_asArray", []), "_join_", [","])]), "__comma", [";"]), "__comma", [smalltalk.send(self, "_mylf", [])])]);})]);
3795
+ ((($receiver = self['@earlyReturn']).klass === smalltalk.Boolean) ? ($receiver ? (function(){return smalltalk.send(str, "_nextPutAll_", [smalltalk.send("var $early={}; try{", "__comma", [smalltalk.send(self, "_mylf", [])])]);})() : nil) : smalltalk.send($receiver, "_ifTrue_", [(function(){return smalltalk.send(str, "_nextPutAll_", [smalltalk.send("var $early={}; try{", "__comma", [smalltalk.send(self, "_mylf", [])])]);})]));
3796
+ smalltalk.send(str, "_nextPutAll_", [smalltalk.send(self['@stream'], "_contents", [])]);
3797
+ (self['@stream']=str);
3798
+ ((($receiver = smalltalk.send(smalltalk.send(smalltalk.send(smalltalk.send(smalltalk.send(aNode, "_nodes", []), "_first", []), "_nodes", []), "_notEmpty", []), "_and_", [(function(){var checker=nil;
3799
+ (checker=smalltalk.send((smalltalk.ReturnNodeChecker || ReturnNodeChecker), "_new", []));smalltalk.send(checker, "_visit_", [smalltalk.send(smalltalk.send(smalltalk.send(smalltalk.send(aNode, "_nodes", []), "_first", []), "_nodes", []), "_last", [])]);return smalltalk.send(checker, "_wasReturnNode", []);})])).klass === smalltalk.Boolean) ? (! $receiver ? (function(){smalltalk.send(self, "_switchTarget_", ["^"]);smalltalk.send(self, "_lazyAssignValue_", ["self"]);return smalltalk.send(self, "_switchTarget_", [nil]);})() : nil) : smalltalk.send($receiver, "_ifFalse_", [(function(){smalltalk.send(self, "_switchTarget_", ["^"]);smalltalk.send(self, "_lazyAssignValue_", ["self"]);return smalltalk.send(self, "_switchTarget_", [nil]);})]));
3800
+ ((($receiver = self['@earlyReturn']).klass === smalltalk.Boolean) ? ($receiver ? (function(){return smalltalk.send(self['@stream'], "_nextPutAll_", ["} catch(e) {if(e===$early) return e[0]; throw e}"]);})() : nil) : smalltalk.send($receiver, "_ifTrue_", [(function(){return smalltalk.send(self['@stream'], "_nextPutAll_", ["} catch(e) {if(e===$early) return e[0]; throw e}"]);})]));
3801
+ smalltalk.send(self['@stream'], "_nextPutAll_", ["}"]);
3802
+ (function($rec){smalltalk.send($rec, "_nextPutAll_", [smalltalk.send(smalltalk.send(",", "__comma", [smalltalk.send((smalltalk.String || String), "_lf", [])]), "__comma", ["messageSends: "])]);smalltalk.send($rec, "_nextPutAll_", [smalltalk.send(smalltalk.send(self['@messageSends'], "_asJavascript", []), "__comma", [","])]);smalltalk.send($rec, "_lf", []);smalltalk.send($rec, "_nextPutAll_", [smalltalk.send(smalltalk.send("args: ", "__comma", [smalltalk.send(self['@argVariables'], "_asJavascript", [])]), "__comma", [","])]);smalltalk.send($rec, "_lf", []);return smalltalk.send($rec, "_nextPutAll_", ["referencedClasses: ["]);})(self['@stream']);
3803
+ smalltalk.send(self['@referencedClasses'], "_do_separatedBy_", [(function(each){return smalltalk.send(self['@stream'], "_nextPutAll_", [smalltalk.send(each, "_printString", [])]);}), (function(){return smalltalk.send(self['@stream'], "_nextPutAll_", [","]);})]);
3804
+ smalltalk.send(self['@stream'], "_nextPutAll_", ["]"]);
3805
+ smalltalk.send(self['@stream'], "_nextPutAll_", ["})"]);
3806
+ smalltalk.send(self, "_assert_", [smalltalk.send(self['@mutables'], "_isEmpty", [])]);
3807
+ return self;},
3808
+ args: ["aNode"],
3809
+ source: "visitMethodNode: aNode\x0a\x09| str currentSelector | \x0a\x09currentSelector := aNode selector asSelector.\x0a\x09nestedBlocks := 0.\x0a\x09earlyReturn := false.\x0a\x09messageSends := #().\x0a\x09referencedClasses := #().\x0a\x09unknownVariables := #().\x0a\x09tempVariables := #().\x0a\x09argVariables := #().\x0a\x09lazyVars := HashedCollection new.\x0a\x09mutables := Set new.\x0a\x09realVarNames := Set new.\x0a\x09stream \x0a\x09 nextPutAll: 'smalltalk.method({'; lf;\x0a\x09 nextPutAll: 'selector: \x22', aNode selector, '\x22,'; lf.\x0a\x09stream nextPutAll: 'source: ', self source asJavascript, ',';lf.\x0a\x09stream nextPutAll: 'fn: function('.\x0a\x09aNode arguments \x0a\x09 do: [:each | \x0a\x09\x09argVariables add: each.\x0a\x09\x09stream nextPutAll: each]\x0a\x09 separatedBy: [stream nextPutAll: ', '].\x0a\x09stream \x0a\x09 nextPutAll: '){var self=this;', self mylf.\x0a\x09str := stream.\x0a\x09stream := '' writeStream.\x0a\x09self switchTarget: nil.\x0a\x09self assert: aNode nodes size = 1.\x0a\x09self visit: aNode nodes first.\x0a\x09realVarNames ifNotEmpty: [ str nextPutAll: 'var ', (realVarNames asArray join: ','), ';', self mylf ].\x0a\x09earlyReturn ifTrue: [\x0a\x09 str nextPutAll: 'var $early={}; try{', self mylf].\x0a\x09str nextPutAll: stream contents.\x0a\x09stream := str.\x0a\x09(aNode nodes first nodes notEmpty and: [ |checker|\x0a\x09 checker := ReturnNodeChecker new.\x0a\x09 checker visit: aNode nodes first nodes last.\x0a\x09 checker wasReturnNode]) ifFalse: [ self switchTarget: '^'. self lazyAssignValue: 'self'. self switchTarget: nil ].\x0a\x09earlyReturn ifTrue: [\x0a\x09 stream nextPutAll: '} catch(e) {if(e===$early) return e[0]; throw e}'].\x0a\x09stream nextPutAll: '}'.\x0a\x09stream \x0a\x09\x09nextPutAll: ',', String lf, 'messageSends: ';\x0a\x09\x09nextPutAll: messageSends asJavascript, ','; lf;\x0a \x09nextPutAll: 'args: ', argVariables asJavascript, ','; lf;\x0a\x09\x09nextPutAll: 'referencedClasses: ['.\x0a\x09referencedClasses \x0a\x09\x09do: [:each | stream nextPutAll: each printString]\x0a\x09\x09separatedBy: [stream nextPutAll: ','].\x0a\x09stream nextPutAll: ']'.\x0a\x09stream nextPutAll: '})'.\x0a\x09self assert: mutables isEmpty",
3810
+ messageSends: ["asSelector", "selector", "new", "nextPutAll:", "lf", ",", "asJavascript", "source", "do:separatedBy:", "arguments", "add:", "mylf", "writeStream", "switchTarget:", "assert:", "=", "size", "nodes", "visit:", "first", "ifNotEmpty:", "join:", "asArray", "ifTrue:", "contents", "ifFalse:", "and:", "notEmpty", "last", "wasReturnNode", "lazyAssignValue:", "printString", "isEmpty"],
3811
+ referencedClasses: ["HashedCollection", "Set", "ReturnNodeChecker", "String"]
3812
+ }),
3813
+ smalltalk.ImpCodeGenerator);
3814
+
3815
+ smalltalk.addMethod(
3816
+ "_visitReturnNode_",
3817
+ smalltalk.method({
3818
+ selector: "visitReturnNode:",
3819
+ category: 'visiting',
3820
+ fn: function (aNode){
3821
+ var self=this;
3822
+ smalltalk.send(self, "_assert_", [smalltalk.send(smalltalk.send(smalltalk.send(aNode, "_nodes", []), "_size", []), "__eq", [(1)])]);
3823
+ ((($receiver = ((($receiver = self['@nestedBlocks']).klass === smalltalk.Number) ? $receiver >(0) : smalltalk.send($receiver, "__gt", [(0)]))).klass === smalltalk.Boolean) ? ($receiver ? (function(){return (self['@earlyReturn']=true);})() : nil) : smalltalk.send($receiver, "_ifTrue_", [(function(){return (self['@earlyReturn']=true);})]));
3824
+ smalltalk.send(self, "_visit_targetBeing_", [smalltalk.send(smalltalk.send(aNode, "_nodes", []), "_first", []), ((($receiver = ((($receiver = self['@nestedBlocks']).klass === smalltalk.Number) ? $receiver >(0) : smalltalk.send($receiver, "__gt", [(0)]))).klass === smalltalk.Boolean) ? ($receiver ? (function(){return "!";})() : (function(){return "^";})()) : smalltalk.send($receiver, "_ifTrue_ifFalse_", [(function(){return "!";}), (function(){return "^";})]))]);
3825
+ smalltalk.send(self, "_lazyAssignValue_", [""]);
3826
+ return self;},
3827
+ args: ["aNode"],
3828
+ source: "visitReturnNode: aNode\x0a\x09self assert: aNode nodes size = 1.\x0a\x09nestedBlocks > 0 ifTrue: [\x0a\x09 earlyReturn := true].\x0a\x09self\x0a\x09\x09visit: aNode nodes first\x0a\x09\x09targetBeing: (nestedBlocks > 0 ifTrue: ['!'] ifFalse: ['^']).\x0a\x09self lazyAssignValue: ''",
3829
+ messageSends: ["assert:", "=", "size", "nodes", "ifTrue:", ">", "visit:targetBeing:", "first", "ifTrue:ifFalse:", "lazyAssignValue:"],
3830
+ referencedClasses: []
3831
+ }),
3832
+ smalltalk.ImpCodeGenerator);
3833
+
3834
+ smalltalk.addMethod(
3835
+ "_visitSendNode_",
3836
+ smalltalk.method({
3837
+ selector: "visitSendNode:",
3838
+ category: 'visiting',
3839
+ fn: function (aNode){
3840
+ var self=this;
3841
+ var $early={};
3842
+ try{var receiver=nil;
3843
+ var superSend=nil;
3844
+ var rcv=nil;
3845
+ ((($receiver = smalltalk.send(self['@messageSends'], "_includes_", [smalltalk.send(aNode, "_selector", [])])).klass === smalltalk.Boolean) ? (! $receiver ? (function(){return smalltalk.send(self['@messageSends'], "_add_", [smalltalk.send(aNode, "_selector", [])]);})() : nil) : smalltalk.send($receiver, "_ifFalse_", [(function(){return smalltalk.send(self['@messageSends'], "_add_", [smalltalk.send(aNode, "_selector", [])]);})]));
3846
+ ((($receiver = smalltalk.send(self, "_performOptimizations", [])).klass === smalltalk.Boolean) ? ($receiver ? (function(){return ((($receiver = smalltalk.send(self, "_inlineLiteral_receiverNode_argumentNodes_", [smalltalk.send(aNode, "_selector", []), smalltalk.send(aNode, "_receiver", []), smalltalk.send(aNode, "_arguments", [])])).klass === smalltalk.Boolean) ? ($receiver ? (function(){return (function(){throw $early=[self]})();})() : nil) : smalltalk.send($receiver, "_ifTrue_", [(function(){return (function(){throw $early=[self]})();})]));})() : nil) : smalltalk.send($receiver, "_ifTrue_", [(function(){return ((($receiver = smalltalk.send(self, "_inlineLiteral_receiverNode_argumentNodes_", [smalltalk.send(aNode, "_selector", []), smalltalk.send(aNode, "_receiver", []), smalltalk.send(aNode, "_arguments", [])])).klass === smalltalk.Boolean) ? ($receiver ? (function(){return (function(){throw $early=[self]})();})() : nil) : smalltalk.send($receiver, "_ifTrue_", [(function(){return (function(){throw $early=[self]})();})]));})]));
3847
+ (rcv=smalltalk.send(self, "_isolated_", [smalltalk.send(aNode, "_receiver", [])]));
3848
+ (superSend=smalltalk.send(smalltalk.send(self['@lazyVars'], "_at_ifAbsent_", [rcv, (function(){return nil;})]), "__eq", ["super"]));
3849
+ ((($receiver = superSend).klass === smalltalk.Boolean) ? ($receiver ? (function(){smalltalk.send(self['@mutables'], "_remove_", [rcv]);return smalltalk.send(self['@lazyVars'], "_at_put_", [rcv, "self"]);})() : nil) : smalltalk.send($receiver, "_ifTrue_", [(function(){smalltalk.send(self['@mutables'], "_remove_", [rcv]);return smalltalk.send(self['@lazyVars'], "_at_put_", [rcv, "self"]);})]));
3850
+ ((($receiver = smalltalk.send(self, "_performOptimizations", [])).klass === smalltalk.Boolean) ? ($receiver ? (function(){var inline=nil;
3851
+ (inline=smalltalk.send(self, "_inline_receiver_argumentNodes_", [smalltalk.send(aNode, "_selector", []), rcv, smalltalk.send(aNode, "_arguments", [])]));return (($receiver = inline) != nil && $receiver != undefined) ? (function(){var args=nil;
3852
+ (args=((($receiver = smalltalk.send(inline, "__eq", [true])).klass === smalltalk.Boolean) ? ($receiver ? (function(){return smalltalk.send(aNode, "_arguments", []);})() : (function(){return inline;})()) : smalltalk.send($receiver, "_ifTrue_ifFalse_", [(function(){return smalltalk.send(aNode, "_arguments", []);}), (function(){return inline;})])));smalltalk.send(self, "_prvPutAndClose_", [(function(){return smalltalk.send(self, "_send_to_arguments_superSend_", [smalltalk.send(aNode, "_selector", []), rcv, args, superSend]);})]);return (function(){throw $early=[self]})();})() : nil;})() : nil) : smalltalk.send($receiver, "_ifTrue_", [(function(){var inline=nil;
3853
+ (inline=smalltalk.send(self, "_inline_receiver_argumentNodes_", [smalltalk.send(aNode, "_selector", []), rcv, smalltalk.send(aNode, "_arguments", [])]));return (($receiver = inline) != nil && $receiver != undefined) ? (function(){var args=nil;
3854
+ (args=((($receiver = smalltalk.send(inline, "__eq", [true])).klass === smalltalk.Boolean) ? ($receiver ? (function(){return smalltalk.send(aNode, "_arguments", []);})() : (function(){return inline;})()) : smalltalk.send($receiver, "_ifTrue_ifFalse_", [(function(){return smalltalk.send(aNode, "_arguments", []);}), (function(){return inline;})])));smalltalk.send(self, "_prvPutAndClose_", [(function(){return smalltalk.send(self, "_send_to_arguments_superSend_", [smalltalk.send(aNode, "_selector", []), rcv, args, superSend]);})]);return (function(){throw $early=[self]})();})() : nil;})]));
3855
+ smalltalk.send(self, "_send_to_arguments_superSend_", [smalltalk.send(aNode, "_selector", []), rcv, smalltalk.send(aNode, "_arguments", []), superSend]);
3856
+ return self;
3857
+ } catch(e) {if(e===$early)return e[0]; throw e}},
3858
+ args: ["aNode"],
3859
+ source: "visitSendNode: aNode\x0a | receiver superSend rcv |\x0a (messageSends includes: aNode selector) ifFalse: [\x0a messageSends add: aNode selector].\x0a\x09\x0a\x09self performOptimizations \x0a\x09\x09ifTrue: [\x0a\x09\x09\x09(self inlineLiteral: aNode selector receiverNode: aNode receiver argumentNodes: aNode arguments) ifTrue: [ ^self ].\x0a\x09\x09].\x0a\x0a\x09rcv := self isolated: aNode receiver.\x0a superSend := (lazyVars at: rcv ifAbsent: []) = 'super'.\x0a superSend ifTrue: [ mutables remove: rcv. lazyVars at: rcv put: 'self' ].\x0a\x0a\x09self performOptimizations \x0a\x09\x09ifTrue: [ | inline |\x0a\x09\x09\x09inline := self inline: aNode selector receiver: rcv argumentNodes: aNode arguments.\x0a\x09\x09\x09inline ifNotNil: [ | args |\x0a\x09\x09\x09\x09args := inline = true ifTrue: [ aNode arguments ] ifFalse: [ inline ].\x0a\x09\x09\x09\x09self prvPutAndClose: [ self send: aNode selector to: rcv arguments: args superSend: superSend ].\x0a\x09\x09\x09\x09^self ]].\x0a\x09self send: aNode selector to: rcv arguments: aNode arguments superSend: superSend",
3860
+ messageSends: ["ifFalse:", "includes:", "selector", "add:", "ifTrue:", "performOptimizations", "inlineLiteral:receiverNode:argumentNodes:", "receiver", "arguments", "isolated:", "=", "at:ifAbsent:", "remove:", "at:put:", "inline:receiver:argumentNodes:", "ifNotNil:", "ifTrue:ifFalse:", "prvPutAndClose:", "send:to:arguments:superSend:"],
3861
+ referencedClasses: []
3862
+ }),
3863
+ smalltalk.ImpCodeGenerator);
3864
+
3865
+ smalltalk.addMethod(
3866
+ "_visitSequenceNode_",
3867
+ smalltalk.method({
3868
+ selector: "visitSequenceNode:",
3869
+ category: 'visiting',
3870
+ fn: function (aNode) {
3871
+ var self=this;
3872
+ ((($receiver = smalltalk.send(smalltalk.send(aNode, "_nodes", []), "_isEmpty", [])).klass === smalltalk.Boolean) ? (! $receiver ? (function(){return smalltalk.send(self, "_sequenceOfNodes_temps_", [smalltalk.send(aNode, "_nodes", []), smalltalk.send(aNode, "_temps", [])]);})() : nil) : smalltalk.send($receiver, "_ifFalse_", [(function(){return smalltalk.send(self, "_sequenceOfNodes_temps_", [smalltalk.send(aNode, "_nodes", []), smalltalk.send(aNode, "_temps", [])]);})]));
3873
+ return self;},
3874
+ args: ["aNode"],
3875
+ source: "visitSequenceNode: aNode\x0a\x09aNode nodes isEmpty ifFalse: [\x0a\x09\x09self sequenceOfNodes: aNode nodes temps: aNode temps ]\x0a",
3876
+ messageSends: ["ifFalse:", "isEmpty", "nodes", "sequenceOfNodes:temps:", "temps"],
3877
+ referencedClasses: []
3878
+ }),
3879
+ smalltalk.ImpCodeGenerator);
3880
+
3881
+ smalltalk.addMethod(
3882
+ "_visitValueNode_",
3883
+ smalltalk.method({
3884
+ selector: "visitValueNode:",
3885
+ category: 'visiting',
3886
+ fn: function (aNode){
3887
+ var self=this;
3888
+ smalltalk.send(self, "_lazyAssignValue_", [smalltalk.send(smalltalk.send(aNode, "_value", []), "_asJavascript", [])]);
3889
+ return self;},
3890
+ args: ["aNode"],
3891
+ source: "visitValueNode: aNode\x0a\x09self lazyAssignValue: aNode value asJavascript",
3892
+ messageSends: ["lazyAssignValue:", "asJavascript", "value"],
3893
+ referencedClasses: []
3894
+ }),
3895
+ smalltalk.ImpCodeGenerator);
3896
+
3897
+ smalltalk.addMethod(
3898
+ "_visitVariableNode_",
3899
+ smalltalk.method({
3900
+ selector: "visitVariableNode:",
3901
+ category: 'visiting',
3902
+ fn: function (aNode){
3903
+ var self=this;
3904
+ var varName=nil;
3905
+ ((($receiver = smalltalk.send(smalltalk.send(smalltalk.send(self, "_currentClass", []), "_allInstanceVariableNames", []), "_includes_", [smalltalk.send(aNode, "_value", [])])).klass === smalltalk.Boolean) ? ($receiver ? (function(){return smalltalk.send(self, "_lazyAssignExpression_", [smalltalk.send(smalltalk.send("self['@", "__comma", [smalltalk.send(aNode, "_value", [])]), "__comma", ["']"])]);})() : (function(){(varName=smalltalk.send(self, "_safeVariableNameFor_", [smalltalk.send(aNode, "_value", [])]));return ((($receiver = smalltalk.send(smalltalk.send(self, "_knownVariables", []), "_includes_", [varName])).klass === smalltalk.Boolean) ? (! $receiver ? (function(){smalltalk.send(self['@unknownVariables'], "_add_", [smalltalk.send(aNode, "_value", [])]);return ((($receiver = smalltalk.send(aNode, "_assigned", [])).klass === smalltalk.Boolean) ? ($receiver ? (function(){return smalltalk.send(self, "_lazyAssignExpression_", [varName]);})() : (function(){return smalltalk.send(self, "_lazyAssignExpression_", [smalltalk.send(smalltalk.send(smalltalk.send(smalltalk.send("(typeof ", "__comma", [varName]), "__comma", [" == 'undefined' ? nil : "]), "__comma", [varName]), "__comma", [")"])]);})()) : smalltalk.send($receiver, "_ifTrue_ifFalse_", [(function(){return smalltalk.send(self, "_lazyAssignExpression_", [varName]);}), (function(){return smalltalk.send(self, "_lazyAssignExpression_", [smalltalk.send(smalltalk.send(smalltalk.send(smalltalk.send("(typeof ", "__comma", [varName]), "__comma", [" == 'undefined' ? nil : "]), "__comma", [varName]), "__comma", [")"])]);})]));})() : (function(){return ((($receiver = smalltalk.send(smalltalk.send(aNode, "_value", []), "__eq", ["thisContext"])).klass === smalltalk.Boolean) ? ($receiver ? (function(){return smalltalk.send(self, "_lazyAssignExpression_", ["(smalltalk.getThisContext())"]);})() : (function(){return ((($receiver = smalltalk.send(smalltalk.send(self, "_pseudoVariables", []), "_includes_", [varName])).klass === smalltalk.Boolean) ? ($receiver ? (function(){return smalltalk.send(self, "_lazyAssignValue_", [varName]);})() : (function(){return smalltalk.send(self, "_lazyAssignExpression_", [varName]);})()) : smalltalk.send($receiver, "_ifTrue_ifFalse_", [(function(){return smalltalk.send(self, "_lazyAssignValue_", [varName]);}), (function(){return smalltalk.send(self, "_lazyAssignExpression_", [varName]);})]));})()) : smalltalk.send($receiver, "_ifTrue_ifFalse_", [(function(){return smalltalk.send(self, "_lazyAssignExpression_", ["(smalltalk.getThisContext())"]);}), (function(){return ((($receiver = smalltalk.send(smalltalk.send(self, "_pseudoVariables", []), "_includes_", [varName])).klass === smalltalk.Boolean) ? ($receiver ? (function(){return smalltalk.send(self, "_lazyAssignValue_", [varName]);})() : (function(){return smalltalk.send(self, "_lazyAssignExpression_", [varName]);})()) : smalltalk.send($receiver, "_ifTrue_ifFalse_", [(function(){return smalltalk.send(self, "_lazyAssignValue_", [varName]);}), (function(){return smalltalk.send(self, "_lazyAssignExpression_", [varName]);})]));})]));})()) : smalltalk.send($receiver, "_ifFalse_ifTrue_", [(function(){smalltalk.send(self['@unknownVariables'], "_add_", [smalltalk.send(aNode, "_value", [])]);return ((($receiver = smalltalk.send(aNode, "_assigned", [])).klass === smalltalk.Boolean) ? ($receiver ? (function(){return smalltalk.send(self, "_lazyAssignExpression_", [varName]);})() : (function(){return smalltalk.send(self, "_lazyAssignExpression_", [smalltalk.send(smalltalk.send(smalltalk.send(smalltalk.send("(typeof ", "__comma", [varName]), "__comma", [" == 'undefined' ? nil : "]), "__comma", [varName]), "__comma", [")"])]);})()) : smalltalk.send($receiver, "_ifTrue_ifFalse_", [(function(){return smalltalk.send(self, "_lazyAssignExpression_", [varName]);}), (function(){return smalltalk.send(self, "_lazyAssignExpression_", [smalltalk.send(smalltalk.send(smalltalk.send(smalltalk.send("(typeof ", "__comma", [varName]), "__comma", [" == 'undefined' ? nil : "]), "__comma", [varName]), "__comma", [")"])]);})]));}), (function(){return ((($receiver = smalltalk.send(smalltalk.send(aNode, "_value", []), "__eq", ["thisContext"])).klass === smalltalk.Boolean) ? ($receiver ? (function(){return smalltalk.send(self, "_lazyAssignExpression_", ["(smalltalk.getThisContext())"]);})() : (function(){return ((($receiver = smalltalk.send(smalltalk.send(self, "_pseudoVariables", []), "_includes_", [varName])).klass === smalltalk.Boolean) ? ($receiver ? (function(){return smalltalk.send(self, "_lazyAssignValue_", [varName]);})() : (function(){return smalltalk.send(self, "_lazyAssignExpression_", [varName]);})()) : smalltalk.send($receiver, "_ifTrue_ifFalse_", [(function(){return smalltalk.send(self, "_lazyAssignValue_", [varName]);}), (function(){return smalltalk.send(self, "_lazyAssignExpression_", [varName]);})]));})()) : smalltalk.send($receiver, "_ifTrue_ifFalse_", [(function(){return smalltalk.send(self, "_lazyAssignExpression_", ["(smalltalk.getThisContext())"]);}), (function(){return ((($receiver = smalltalk.send(smalltalk.send(self, "_pseudoVariables", []), "_includes_", [varName])).klass === smalltalk.Boolean) ? ($receiver ? (function(){return smalltalk.send(self, "_lazyAssignValue_", [varName]);})() : (function(){return smalltalk.send(self, "_lazyAssignExpression_", [varName]);})()) : smalltalk.send($receiver, "_ifTrue_ifFalse_", [(function(){return smalltalk.send(self, "_lazyAssignValue_", [varName]);}), (function(){return smalltalk.send(self, "_lazyAssignExpression_", [varName]);})]));})]));})]));})()) : smalltalk.send($receiver, "_ifTrue_ifFalse_", [(function(){return smalltalk.send(self, "_lazyAssignExpression_", [smalltalk.send(smalltalk.send("self['@", "__comma", [smalltalk.send(aNode, "_value", [])]), "__comma", ["']"])]);}), (function(){(varName=smalltalk.send(self, "_safeVariableNameFor_", [smalltalk.send(aNode, "_value", [])]));return ((($receiver = smalltalk.send(smalltalk.send(self, "_knownVariables", []), "_includes_", [varName])).klass === smalltalk.Boolean) ? (! $receiver ? (function(){smalltalk.send(self['@unknownVariables'], "_add_", [smalltalk.send(aNode, "_value", [])]);return ((($receiver = smalltalk.send(aNode, "_assigned", [])).klass === smalltalk.Boolean) ? ($receiver ? (function(){return smalltalk.send(self, "_lazyAssignExpression_", [varName]);})() : (function(){return smalltalk.send(self, "_lazyAssignExpression_", [smalltalk.send(smalltalk.send(smalltalk.send(smalltalk.send("(typeof ", "__comma", [varName]), "__comma", [" == 'undefined' ? nil : "]), "__comma", [varName]), "__comma", [")"])]);})()) : smalltalk.send($receiver, "_ifTrue_ifFalse_", [(function(){return smalltalk.send(self, "_lazyAssignExpression_", [varName]);}), (function(){return smalltalk.send(self, "_lazyAssignExpression_", [smalltalk.send(smalltalk.send(smalltalk.send(smalltalk.send("(typeof ", "__comma", [varName]), "__comma", [" == 'undefined' ? nil : "]), "__comma", [varName]), "__comma", [")"])]);})]));})() : (function(){return ((($receiver = smalltalk.send(smalltalk.send(aNode, "_value", []), "__eq", ["thisContext"])).klass === smalltalk.Boolean) ? ($receiver ? (function(){return smalltalk.send(self, "_lazyAssignExpression_", ["(smalltalk.getThisContext())"]);})() : (function(){return ((($receiver = smalltalk.send(smalltalk.send(self, "_pseudoVariables", []), "_includes_", [varName])).klass === smalltalk.Boolean) ? ($receiver ? (function(){return smalltalk.send(self, "_lazyAssignValue_", [varName]);})() : (function(){return smalltalk.send(self, "_lazyAssignExpression_", [varName]);})()) : smalltalk.send($receiver, "_ifTrue_ifFalse_", [(function(){return smalltalk.send(self, "_lazyAssignValue_", [varName]);}), (function(){return smalltalk.send(self, "_lazyAssignExpression_", [varName]);})]));})()) : smalltalk.send($receiver, "_ifTrue_ifFalse_", [(function(){return smalltalk.send(self, "_lazyAssignExpression_", ["(smalltalk.getThisContext())"]);}), (function(){return ((($receiver = smalltalk.send(smalltalk.send(self, "_pseudoVariables", []), "_includes_", [varName])).klass === smalltalk.Boolean) ? ($receiver ? (function(){return smalltalk.send(self, "_lazyAssignValue_", [varName]);})() : (function(){return smalltalk.send(self, "_lazyAssignExpression_", [varName]);})()) : smalltalk.send($receiver, "_ifTrue_ifFalse_", [(function(){return smalltalk.send(self, "_lazyAssignValue_", [varName]);}), (function(){return smalltalk.send(self, "_lazyAssignExpression_", [varName]);})]));})]));})()) : smalltalk.send($receiver, "_ifFalse_ifTrue_", [(function(){smalltalk.send(self['@unknownVariables'], "_add_", [smalltalk.send(aNode, "_value", [])]);return ((($receiver = smalltalk.send(aNode, "_assigned", [])).klass === smalltalk.Boolean) ? ($receiver ? (function(){return smalltalk.send(self, "_lazyAssignExpression_", [varName]);})() : (function(){return smalltalk.send(self, "_lazyAssignExpression_", [smalltalk.send(smalltalk.send(smalltalk.send(smalltalk.send("(typeof ", "__comma", [varName]), "__comma", [" == 'undefined' ? nil : "]), "__comma", [varName]), "__comma", [")"])]);})()) : smalltalk.send($receiver, "_ifTrue_ifFalse_", [(function(){return smalltalk.send(self, "_lazyAssignExpression_", [varName]);}), (function(){return smalltalk.send(self, "_lazyAssignExpression_", [smalltalk.send(smalltalk.send(smalltalk.send(smalltalk.send("(typeof ", "__comma", [varName]), "__comma", [" == 'undefined' ? nil : "]), "__comma", [varName]), "__comma", [")"])]);})]));}), (function(){return ((($receiver = smalltalk.send(smalltalk.send(aNode, "_value", []), "__eq", ["thisContext"])).klass === smalltalk.Boolean) ? ($receiver ? (function(){return smalltalk.send(self, "_lazyAssignExpression_", ["(smalltalk.getThisContext())"]);})() : (function(){return ((($receiver = smalltalk.send(smalltalk.send(self, "_pseudoVariables", []), "_includes_", [varName])).klass === smalltalk.Boolean) ? ($receiver ? (function(){return smalltalk.send(self, "_lazyAssignValue_", [varName]);})() : (function(){return smalltalk.send(self, "_lazyAssignExpression_", [varName]);})()) : smalltalk.send($receiver, "_ifTrue_ifFalse_", [(function(){return smalltalk.send(self, "_lazyAssignValue_", [varName]);}), (function(){return smalltalk.send(self, "_lazyAssignExpression_", [varName]);})]));})()) : smalltalk.send($receiver, "_ifTrue_ifFalse_", [(function(){return smalltalk.send(self, "_lazyAssignExpression_", ["(smalltalk.getThisContext())"]);}), (function(){return ((($receiver = smalltalk.send(smalltalk.send(self, "_pseudoVariables", []), "_includes_", [varName])).klass === smalltalk.Boolean) ? ($receiver ? (function(){return smalltalk.send(self, "_lazyAssignValue_", [varName]);})() : (function(){return smalltalk.send(self, "_lazyAssignExpression_", [varName]);})()) : smalltalk.send($receiver, "_ifTrue_ifFalse_", [(function(){return smalltalk.send(self, "_lazyAssignValue_", [varName]);}), (function(){return smalltalk.send(self, "_lazyAssignExpression_", [varName]);})]));})]));})]));})]));
3906
+ return self;},
3907
+ args: ["aNode"],
3908
+ source: "visitVariableNode: aNode\x0a\x09| varName |\x0a\x09(self currentClass allInstanceVariableNames includes: aNode value) \x0a\x09\x09ifTrue: [self lazyAssignExpression: 'self[''@', aNode value, ''']']\x0a\x09\x09ifFalse: [\x0a \x09varName := self safeVariableNameFor: aNode value.\x0a\x09\x09\x09(self knownVariables includes: varName) \x0a \x09\x09ifFalse: [\x0a \x09unknownVariables add: aNode value.\x0a \x09aNode assigned \x0a \x09\x09ifTrue: [self lazyAssignExpression: varName]\x0a \x09\x09ifFalse: [self lazyAssignExpression: '(typeof ', varName, ' == ''undefined'' ? nil : ', varName, ')']]\x0a \x09\x09ifTrue: [\x0a \x09aNode value = 'thisContext'\x0a \x09\x09ifTrue: [self lazyAssignExpression: '(smalltalk.getThisContext())']\x0a \x09\x09\x09\x09ifFalse: [(self pseudoVariables includes: varName)\x0a\x09\x09\x09\x09\x09\x09\x09ifTrue: [ self lazyAssignValue: varName ]\x0a\x09\x09\x09\x09\x09\x09\x09ifFalse: [ self lazyAssignExpression: varName]]]]",
3909
+ messageSends: ["ifTrue:ifFalse:", "includes:", "allInstanceVariableNames", "currentClass", "value", "lazyAssignExpression:", ",", "safeVariableNameFor:", "ifFalse:ifTrue:", "knownVariables", "add:", "assigned", "=", "pseudoVariables", "lazyAssignValue:"],
3910
+ referencedClasses: []
3911
+ }),
3912
+ smalltalk.ImpCodeGenerator);
3913
+
3914
+ smalltalk.addMethod(
3915
+ "_visitVerbatimNode_",
3916
+ smalltalk.method({
3917
+ selector: "visitVerbatimNode:",
3918
+ category: 'visiting',
3919
+ fn: function (aNode){
3920
+ var self=this;
3921
+ smalltalk.send(self, "_lazyAssignValue_", [smalltalk.send(aNode, "_value", [])]);
3922
+ return self;},
3923
+ args: ["aNode"],
3924
+ source: "visitVerbatimNode: aNode\x0a\x09self lazyAssignValue: aNode value",
3925
+ messageSends: ["lazyAssignValue:", "value"],
3926
+ referencedClasses: []
3927
+ }),
3928
+ smalltalk.ImpCodeGenerator);
3929
+
3930
+
3931
+ smalltalk.ImpCodeGenerator.klass.iVarNames = ['performOptimizations'];
3932
+ smalltalk.addMethod(
3933
+ "_performOptimizations",
3934
+ smalltalk.method({
3935
+ selector: "performOptimizations",
3936
+ category: 'accessing',
3937
+ fn: function () {
3938
+ var self=this;
3939
+ return (($receiver = self['@performOptimizations']) == nil || $receiver == undefined) ? (function(){return true;})() : $receiver;
3940
+ return self;},
3941
+ args: [],
3942
+ source: "performOptimizations\x0a\x09^performOptimizations ifNil: [true]",
3943
+ messageSends: ["ifNil:"],
3944
+ referencedClasses: []
3945
+ }),
3946
+ smalltalk.ImpCodeGenerator.klass);
3947
+
3948
+ smalltalk.addMethod(
3949
+ "_performOptimizations_",
3950
+ smalltalk.method({
3951
+ selector: "performOptimizations:",
3952
+ category: 'accessing',
3953
+ fn: function (aBoolean) {
3954
+ var self=this;
3955
+ (self['@performOptimizations']=aBoolean);
3956
+ return self;},
3957
+ args: ["aBoolean"],
3958
+ source: "performOptimizations: aBoolean\x0a\x09performOptimizations := aBoolean",
3959
+ messageSends: [],
3960
+ referencedClasses: []
3961
+ }),
3962
+ smalltalk.ImpCodeGenerator.klass);
3963
+
3964
+
3965
+ smalltalk.addClass('ReturnNodeChecker', smalltalk.NodeVisitor, ['wasReturnNode'], 'Compiler');
3966
+ smalltalk.addMethod(
3967
+ "_initialize",
3968
+ smalltalk.method({
3969
+ selector: "initialize",
3970
+ category: 'initializing',
3971
+ fn: function () {
3972
+ var self=this;
3973
+ (self['@wasReturnNode']=false);
3974
+ return self;},
3975
+ args: [],
3976
+ source: "initialize\x0a\x09wasReturnNode := false",
3977
+ messageSends: [],
3978
+ referencedClasses: []
3979
+ }),
3980
+ smalltalk.ReturnNodeChecker);
3981
+
3982
+ smalltalk.addMethod(
3983
+ "_visitReturnNode_",
3984
+ smalltalk.method({
3985
+ selector: "visitReturnNode:",
3986
+ category: 'visiting',
3987
+ fn: function (aNode) {
3988
+ var self=this;
3989
+ (self['@wasReturnNode']=true);
3990
+ return self;},
3991
+ args: ["aNode"],
3992
+ source: "visitReturnNode: aNode\x0a\x09wasReturnNode := true",
3993
+ messageSends: [],
3994
+ referencedClasses: []
3995
+ }),
3996
+ smalltalk.ReturnNodeChecker);
3997
+
3998
+ smalltalk.addMethod(
3999
+ "_wasReturnNode",
4000
+ smalltalk.method({
4001
+ selector: "wasReturnNode",
4002
+ category: 'accessing',
4003
+ fn: function () {
4004
+ var self=this;
4005
+ return self['@wasReturnNode'];
4006
+ return self;},
4007
+ args: [],
4008
+ source: "wasReturnNode\x0a\x09^wasReturnNode",
4009
+ messageSends: [],
4010
+ referencedClasses: []
4011
+ }),
4012
+ smalltalk.ReturnNodeChecker);
4013
+
4014
+
4015
+