resin 0.3.1 → 0.4.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (84) hide show
  1. data/amber/bin/amberc +10 -350
  2. data/amber/js/Benchfib.deploy.js +80 -89
  3. data/amber/js/Benchfib.js +80 -89
  4. data/amber/js/Canvas.deploy.js +558 -545
  5. data/amber/js/Canvas.js +563 -545
  6. data/amber/js/Compiler-AST.deploy.js +431 -243
  7. data/amber/js/Compiler-AST.js +487 -244
  8. data/amber/js/Compiler-Core.deploy.js +201 -1045
  9. data/amber/js/Compiler-Core.js +208 -1207
  10. data/amber/js/Compiler-Exceptions.deploy.js +37 -18
  11. data/amber/js/Compiler-Exceptions.js +42 -18
  12. data/amber/js/Compiler-IR.deploy.js +1071 -774
  13. data/amber/js/Compiler-IR.js +1194 -848
  14. data/amber/js/Compiler-Inlining.deploy.js +395 -373
  15. data/amber/js/Compiler-Inlining.js +395 -373
  16. data/amber/js/Compiler-Interpreter.deploy.js +1202 -0
  17. data/amber/js/Compiler-Interpreter.js +1631 -0
  18. data/amber/js/Compiler-Semantic.deploy.js +695 -600
  19. data/amber/js/Compiler-Semantic.js +721 -611
  20. data/amber/js/Compiler-Tests.deploy.js +699 -376
  21. data/amber/js/Compiler-Tests.js +834 -381
  22. data/amber/js/Compiler.deploy.js +8563 -1805
  23. data/amber/js/Compiler.js +11476 -2633
  24. data/amber/js/Examples.deploy.js +29 -29
  25. data/amber/js/Examples.js +29 -29
  26. data/amber/js/IDE.deploy.js +3292 -2649
  27. data/amber/js/IDE.js +3318 -2710
  28. data/amber/js/Importer-Exporter.deploy.js +393 -349
  29. data/amber/js/Importer-Exporter.js +398 -354
  30. data/amber/js/Kernel-Announcements.deploy.js +53 -44
  31. data/amber/js/Kernel-Announcements.js +55 -44
  32. data/amber/js/Kernel-Classes.deploy.js +566 -368
  33. data/amber/js/Kernel-Classes.js +660 -402
  34. data/amber/js/Kernel-Collections.deploy.js +1149 -1098
  35. data/amber/js/Kernel-Collections.js +1183 -1116
  36. data/amber/js/Kernel-Exceptions.deploy.js +173 -75
  37. data/amber/js/Kernel-Exceptions.js +215 -77
  38. data/amber/js/Kernel-Methods.deploy.js +530 -313
  39. data/amber/js/Kernel-Methods.js +632 -338
  40. data/amber/js/Kernel-Objects.deploy.js +1734 -1577
  41. data/amber/js/Kernel-Objects.js +1867 -1654
  42. data/amber/js/Kernel-Tests.deploy.js +1416 -973
  43. data/amber/js/Kernel-Tests.js +1495 -981
  44. data/amber/js/Kernel-Transcript.deploy.js +23 -24
  45. data/amber/js/Kernel-Transcript.js +25 -26
  46. data/amber/js/SUnit-Tests.deploy.js +402 -0
  47. data/amber/js/SUnit-Tests.js +518 -0
  48. data/amber/js/SUnit.deploy.js +535 -237
  49. data/amber/js/SUnit.js +634 -246
  50. data/amber/js/amber.js +90 -53
  51. data/amber/js/boot.js +441 -255
  52. data/amber/js/init.js +1 -3
  53. data/amber/js/lib/CodeMirror/codemirror.css +3 -0
  54. data/amber/js/lib/CodeMirror/codemirror.js +104 -55
  55. data/amber/js/lib/peg-0.7.0.min.js +9 -0
  56. data/amber/js/parser.js +1504 -802
  57. data/amber/js/parser.pegjs +170 -165
  58. data/amber/st/Canvas.st +6 -0
  59. data/amber/st/Compiler-AST.st +54 -3
  60. data/amber/st/Compiler-Core.st +6 -551
  61. data/amber/st/Compiler-Exceptions.st +4 -0
  62. data/amber/st/Compiler-IR.st +205 -87
  63. data/amber/st/Compiler-Interpreter.st +597 -0
  64. data/amber/st/Compiler-Semantic.st +46 -21
  65. data/amber/st/Compiler-Tests.st +254 -7
  66. data/amber/st/Compiler.st +3172 -1541
  67. data/amber/st/IDE.st +57 -93
  68. data/amber/st/Importer-Exporter.st +4 -7
  69. data/amber/st/Kernel-Announcements.st +8 -0
  70. data/amber/st/Kernel-Classes.st +149 -40
  71. data/amber/st/Kernel-Collections.st +43 -32
  72. data/amber/st/Kernel-Exceptions.st +70 -1
  73. data/amber/st/Kernel-Methods.st +165 -27
  74. data/amber/st/Kernel-Objects.st +215 -140
  75. data/amber/st/Kernel-Tests.st +195 -10
  76. data/amber/st/Kernel-Transcript.st +1 -3
  77. data/amber/st/SUnit-Tests.st +186 -0
  78. data/amber/st/SUnit.st +186 -14
  79. data/bin/resin +6 -0
  80. data/lib/resin/cli.rb +19 -0
  81. metadata +41 -25
  82. data/amber/js/lib/peg-0.6.2.min.js +0 -2
  83. data/bin/resin-compile +0 -6
  84. data/bin/runresin +0 -12
@@ -6,11 +6,10 @@ smalltalk.addMethod(
6
6
  smalltalk.method({
7
7
  selector: "applyTo:arguments:",
8
8
  category: 'evaluating',
9
- fn: function (anObject, aCollection) {
10
- var self = this;
11
- return self.apply(anObject, aCollection);
12
- return self;
13
- },
9
+ fn: function (anObject,aCollection){
10
+ var self=this;
11
+ return smalltalk.withContext(function($ctx1) {
12
+ return self}, function($ctx1) {$ctx1.fill(self,"applyTo:arguments:",{anObject:anObject,aCollection:aCollection}, smalltalk.BlockClosure)})},
14
13
  args: ["anObject", "aCollection"],
15
14
  source: "applyTo: anObject arguments: aCollection\x0a\x09<return self.apply(anObject, aCollection)>",
16
15
  messageSends: [],
@@ -18,16 +17,31 @@ referencedClasses: []
18
17
  }),
19
18
  smalltalk.BlockClosure);
20
19
 
20
+ smalltalk.addMethod(
21
+ "_asCompiledMethod_",
22
+ smalltalk.method({
23
+ selector: "asCompiledMethod:",
24
+ category: 'converting',
25
+ fn: function (aString){
26
+ var self=this;
27
+ return smalltalk.withContext(function($ctx1) {
28
+ return self}, function($ctx1) {$ctx1.fill(self,"asCompiledMethod:",{aString:aString}, smalltalk.BlockClosure)})},
29
+ args: ["aString"],
30
+ source: "asCompiledMethod: aString\x0a\x09<return smalltalk.method({selector:aString, fn:self});>",
31
+ messageSends: [],
32
+ referencedClasses: []
33
+ }),
34
+ smalltalk.BlockClosure);
35
+
21
36
  smalltalk.addMethod(
22
37
  "_compiledSource",
23
38
  smalltalk.method({
24
39
  selector: "compiledSource",
25
40
  category: 'accessing',
26
- fn: function () {
27
- var self = this;
28
- return self.toString();
29
- return self;
30
- },
41
+ fn: function (){
42
+ var self=this;
43
+ return smalltalk.withContext(function($ctx1) {
44
+ return self}, function($ctx1) {$ctx1.fill(self,"compiledSource",{}, smalltalk.BlockClosure)})},
31
45
  args: [],
32
46
  source: "compiledSource\x0a\x09<return self.toString()>",
33
47
  messageSends: [],
@@ -42,11 +56,10 @@ selector: "ensure:",
42
56
  category: 'evaluating',
43
57
  fn: function (aBlock){
44
58
  var self=this;
45
- try{self()}finally{return aBlock._value()};
46
- ;
47
- return self},
59
+ return smalltalk.withContext(function($ctx1) {
60
+ return self}, function($ctx1) {$ctx1.fill(self,"ensure:",{aBlock:aBlock}, smalltalk.BlockClosure)})},
48
61
  args: ["aBlock"],
49
- source: "ensure: aBlock\x0a\x09<try{self()}finally{return aBlock._value()}>",
62
+ source: "ensure: aBlock\x0a\x09<try{return self()}finally{aBlock._value()}>",
50
63
  messageSends: [],
51
64
  referencedClasses: []
52
65
  }),
@@ -59,8 +72,8 @@ selector: "fork",
59
72
  category: 'timeout/interval',
60
73
  fn: function (){
61
74
  var self=this;
62
- smalltalk.send(smalltalk.send((smalltalk.ForkPool || ForkPool),"_default",[]),"_fork_",[self]);
63
- return self},
75
+ return smalltalk.withContext(function($ctx1) {
76
+ return self}, function($ctx1) {$ctx1.fill(self,"fork",{}, smalltalk.BlockClosure)})},
64
77
  args: [],
65
78
  source: "fork\x0a\x09ForkPool default fork: self",
66
79
  messageSends: ["fork:", "default"],
@@ -73,11 +86,10 @@ smalltalk.addMethod(
73
86
  smalltalk.method({
74
87
  selector: "new",
75
88
  category: 'evaluating',
76
- fn: function () {
77
- var self = this;
78
- return new self;
79
- return self;
80
- },
89
+ fn: function (){
90
+ var self=this;
91
+ return smalltalk.withContext(function($ctx1) {
92
+ return self}, function($ctx1) {$ctx1.fill(self,"new",{}, smalltalk.BlockClosure)})},
81
93
  args: [],
82
94
  source: "new\x0a\x09\x22Use the receiver as a JS constructor. \x0a\x09*Do not* use this method to instanciate Smalltalk objects!\x22\x0a\x09<return new self()>",
83
95
  messageSends: [],
@@ -90,11 +102,10 @@ smalltalk.addMethod(
90
102
  smalltalk.method({
91
103
  selector: "newValue:",
92
104
  category: 'evaluating',
93
- fn: function (anObject) {
94
- var self = this;
95
- return new self(anObject);
96
- return self;
97
- },
105
+ fn: function (anObject){
106
+ var self=this;
107
+ return smalltalk.withContext(function($ctx1) {
108
+ return self}, function($ctx1) {$ctx1.fill(self,"newValue:",{anObject:anObject}, smalltalk.BlockClosure)})},
98
109
  args: ["anObject"],
99
110
  source: "newValue: anObject\x0a\x09\x22Use the receiver as a JS constructor. \x0a\x09*Do not* use this method to instanciate Smalltalk objects!\x22\x0a\x09<return new self(anObject)>",
100
111
  messageSends: [],
@@ -107,11 +118,10 @@ smalltalk.addMethod(
107
118
  smalltalk.method({
108
119
  selector: "newValue:value:",
109
120
  category: 'evaluating',
110
- fn: function (anObject, anObject2) {
111
- var self = this;
112
- return new self(anObject, anObject2);
113
- return self;
114
- },
121
+ fn: function (anObject,anObject2){
122
+ var self=this;
123
+ return smalltalk.withContext(function($ctx1) {
124
+ return self}, function($ctx1) {$ctx1.fill(self,"newValue:value:",{anObject:anObject,anObject2:anObject2}, smalltalk.BlockClosure)})},
115
125
  args: ["anObject", "anObject2"],
116
126
  source: "newValue: anObject value: anObject2\x0a\x09\x22Use the receiver as a JS constructor. \x0a\x09*Do not* use this method to instanciate Smalltalk objects!\x22\x0a\x09<return new self(anObject, anObject2)>",
117
127
  messageSends: [],
@@ -124,13 +134,12 @@ smalltalk.addMethod(
124
134
  smalltalk.method({
125
135
  selector: "newValue:value:value:",
126
136
  category: 'evaluating',
127
- fn: function (anObject, anObject2, anObject3) {
128
- var self = this;
129
- return new self(anObject, anObject2);
130
- return self;
131
- },
137
+ fn: function (anObject,anObject2,anObject3){
138
+ var self=this;
139
+ return smalltalk.withContext(function($ctx1) {
140
+ return self}, function($ctx1) {$ctx1.fill(self,"newValue:value:value:",{anObject:anObject,anObject2:anObject2,anObject3:anObject3}, smalltalk.BlockClosure)})},
132
141
  args: ["anObject", "anObject2", "anObject3"],
133
- source: "newValue: anObject value: anObject2 value: anObject3\x0a\x09\x22Use the receiver as a JS constructor. \x0a\x09*Do not* use this method to instanciate Smalltalk objects!\x22\x0a\x09<return new self(anObject, anObject2)>",
142
+ source: "newValue: anObject value: anObject2 value: anObject3\x0a\x09\x22Use the receiver as a JS constructor. \x0a\x09*Do not* use this method to instanciate Smalltalk objects!\x22\x0a\x09<return new self(anObject, anObject2,anObject3)>",
134
143
  messageSends: [],
135
144
  referencedClasses: []
136
145
  }),
@@ -141,11 +150,10 @@ smalltalk.addMethod(
141
150
  smalltalk.method({
142
151
  selector: "numArgs",
143
152
  category: 'accessing',
144
- fn: function () {
145
- var self = this;
146
- return self.length;
147
- return self;
148
- },
153
+ fn: function (){
154
+ var self=this;
155
+ return smalltalk.withContext(function($ctx1) {
156
+ return self}, function($ctx1) {$ctx1.fill(self,"numArgs",{}, smalltalk.BlockClosure)})},
149
157
  args: [],
150
158
  source: "numArgs\x0a\x09<return self.length>",
151
159
  messageSends: [],
@@ -158,16 +166,26 @@ smalltalk.addMethod(
158
166
  smalltalk.method({
159
167
  selector: "on:do:",
160
168
  category: 'error handling',
161
- fn: function (anErrorClass, aBlock) {
162
- var self = this;
163
- var $2, $1;
164
- $1 = smalltalk.send(self, "_try_catch_", [self, function (error) {$2 = smalltalk.send(error, "_isKindOf_", [anErrorClass]);if (smalltalk.assert($2)) {return smalltalk.send(aBlock, "_value_", [error]);} else {return smalltalk.send(error, "_signal", []);}}]);
165
- return $1;
166
- },
169
+ fn: function (anErrorClass,aBlock){
170
+ var self=this;
171
+ return smalltalk.withContext(function($ctx1) {
172
+ $1=_st(self)._try_catch_(self,(function(error){
173
+ var smalltalkError;
174
+ return smalltalk.withContext(function($ctx2) {
175
+ smalltalkError;
176
+ $2=_st(smalltalkError)._isKindOf_(anErrorClass);
177
+ if(smalltalk.assert($2)){
178
+ return _st(aBlock)._value_(smalltalkError);
179
+ } else {
180
+ return _st(smalltalkError)._signal();
181
+ };
182
+ }, function($ctx2) {$ctx2.fillBlock({error:error,smalltalkError:smalltalkError},$ctx1)})}));
183
+ return $1;
184
+ }, function($ctx1) {$ctx1.fill(self,"on:do:",{anErrorClass:anErrorClass,aBlock:aBlock}, smalltalk.BlockClosure)})},
167
185
  args: ["anErrorClass", "aBlock"],
168
- source: "on: anErrorClass do: aBlock\x0a\x09^self try: self catch: [:error |\x0a\x09 (error isKindOf: anErrorClass) \x0a\x09 ifTrue: [aBlock value: error]\x0a\x09 ifFalse: [error signal]]",
169
- messageSends: ["try:catch:", "ifTrue:ifFalse:", "value:", "signal", "isKindOf:"],
170
- referencedClasses: []
186
+ source: "on: anErrorClass do: aBlock\x0a\x09\x22All exceptions thrown in the Smalltalk stack are cought.\x0a Convert all JS exceptions to JavaScriptException instances.\x22\x0a \x0a\x09^self try: self catch: [ :error | | smalltalkError |\x0a \x09smalltalkError := Smalltalk current asSmalltalkException: error.\x0a\x09 (smalltalkError isKindOf: anErrorClass) \x0a\x09 ifTrue: [ aBlock value: smalltalkError ]\x0a\x09 ifFalse: [ smalltalkError signal ] ]",
187
+ messageSends: ["try:catch:", "asSmalltalkException:", "current", "ifTrue:ifFalse:", "value:", "signal", "isKindOf:"],
188
+ referencedClasses: ["Smalltalk"]
171
189
  }),
172
190
  smalltalk.BlockClosure);
173
191
 
@@ -176,12 +194,12 @@ smalltalk.addMethod(
176
194
  smalltalk.method({
177
195
  selector: "timeToRun",
178
196
  category: 'evaluating',
179
- fn: function () {
180
- var self = this;
181
- var $1;
182
- $1 = smalltalk.send(smalltalk.Date || Date, "_millisecondsToRun_", [self]);
183
- return $1;
184
- },
197
+ fn: function (){
198
+ var self=this;
199
+ return smalltalk.withContext(function($ctx1) {
200
+ $1=_st((smalltalk.Date || Date))._millisecondsToRun_(self);
201
+ return $1;
202
+ }, function($ctx1) {$ctx1.fill(self,"timeToRun",{}, smalltalk.BlockClosure)})},
185
203
  args: [],
186
204
  source: "timeToRun\x0a\x09\x22Answer the number of milliseconds taken to execute this block.\x22\x0a\x0a\x09^ Date millisecondsToRun: self",
187
205
  messageSends: ["millisecondsToRun:"],
@@ -194,11 +212,10 @@ smalltalk.addMethod(
194
212
  smalltalk.method({
195
213
  selector: "value",
196
214
  category: 'evaluating',
197
- fn: function () {
198
- var self = this;
199
- return self();
200
- return self;
201
- },
215
+ fn: function (){
216
+ var self=this;
217
+ return smalltalk.withContext(function($ctx1) {
218
+ return self}, function($ctx1) {$ctx1.fill(self,"value",{}, smalltalk.BlockClosure)})},
202
219
  args: [],
203
220
  source: "value\x0a\x09\x22inlined in the Compiler\x22\x0a\x09<return self();>",
204
221
  messageSends: [],
@@ -211,11 +228,10 @@ smalltalk.addMethod(
211
228
  smalltalk.method({
212
229
  selector: "value:",
213
230
  category: 'evaluating',
214
- fn: function (anArg) {
215
- var self = this;
216
- return self(anArg);
217
- return self;
218
- },
231
+ fn: function (anArg){
232
+ var self=this;
233
+ return smalltalk.withContext(function($ctx1) {
234
+ return self}, function($ctx1) {$ctx1.fill(self,"value:",{anArg:anArg}, smalltalk.BlockClosure)})},
219
235
  args: ["anArg"],
220
236
  source: "value: anArg\x0a\x09\x22inlined in the Compiler\x22\x0a\x09<return self(anArg);>",
221
237
  messageSends: [],
@@ -228,11 +244,10 @@ smalltalk.addMethod(
228
244
  smalltalk.method({
229
245
  selector: "value:value:",
230
246
  category: 'evaluating',
231
- fn: function (firstArg, secondArg) {
232
- var self = this;
233
- return self(firstArg, secondArg);
234
- return self;
235
- },
247
+ fn: function (firstArg,secondArg){
248
+ var self=this;
249
+ return smalltalk.withContext(function($ctx1) {
250
+ return self}, function($ctx1) {$ctx1.fill(self,"value:value:",{firstArg:firstArg,secondArg:secondArg}, smalltalk.BlockClosure)})},
236
251
  args: ["firstArg", "secondArg"],
237
252
  source: "value: firstArg value: secondArg\x0a\x09\x22inlined in the Compiler\x22\x0a\x09<return self(firstArg, secondArg);>",
238
253
  messageSends: [],
@@ -245,11 +260,10 @@ smalltalk.addMethod(
245
260
  smalltalk.method({
246
261
  selector: "value:value:value:",
247
262
  category: 'evaluating',
248
- fn: function (firstArg, secondArg, thirdArg) {
249
- var self = this;
250
- return self(firstArg, secondArg, thirdArg);
251
- return self;
252
- },
263
+ fn: function (firstArg,secondArg,thirdArg){
264
+ var self=this;
265
+ return smalltalk.withContext(function($ctx1) {
266
+ return self}, function($ctx1) {$ctx1.fill(self,"value:value:value:",{firstArg:firstArg,secondArg:secondArg,thirdArg:thirdArg}, smalltalk.BlockClosure)})},
253
267
  args: ["firstArg", "secondArg", "thirdArg"],
254
268
  source: "value: firstArg value: secondArg value: thirdArg\x0a\x09\x22inlined in the Compiler\x22\x0a\x09<return self(firstArg, secondArg, thirdArg);>",
255
269
  messageSends: [],
@@ -262,13 +276,15 @@ smalltalk.addMethod(
262
276
  smalltalk.method({
263
277
  selector: "valueWithInterval:",
264
278
  category: 'timeout/interval',
265
- fn: function (aNumber) {
266
- var self = this;
267
- return setInterval(self, aNumber);
268
- return self;
269
- },
279
+ fn: function (aNumber){
280
+ var self=this;
281
+ return smalltalk.withContext(function($ctx1) {
282
+ var interval = setInterval(self, aNumber);
283
+ return smalltalk.Timeout._on_(interval);
284
+ ;
285
+ return self}, function($ctx1) {$ctx1.fill(self,"valueWithInterval:",{aNumber:aNumber}, smalltalk.BlockClosure)})},
270
286
  args: ["aNumber"],
271
- source: "valueWithInterval: aNumber\x0a\x09<return setInterval(self, aNumber)>",
287
+ source: "valueWithInterval: aNumber\x0a\x09<\x0a \x09var interval = setInterval(self, aNumber);\x0a \x09return smalltalk.Timeout._on_(interval);\x0a >",
272
288
  messageSends: [],
273
289
  referencedClasses: []
274
290
  }),
@@ -279,11 +295,10 @@ smalltalk.addMethod(
279
295
  smalltalk.method({
280
296
  selector: "valueWithPossibleArguments:",
281
297
  category: 'evaluating',
282
- fn: function (aCollection) {
283
- var self = this;
284
- return self.apply(null, aCollection);
285
- return self;
286
- },
298
+ fn: function (aCollection){
299
+ var self=this;
300
+ return smalltalk.withContext(function($ctx1) {
301
+ return self}, function($ctx1) {$ctx1.fill(self,"valueWithPossibleArguments:",{aCollection:aCollection}, smalltalk.BlockClosure)})},
287
302
  args: ["aCollection"],
288
303
  source: "valueWithPossibleArguments: aCollection\x0a\x09<return self.apply(null, aCollection);>",
289
304
  messageSends: [],
@@ -296,13 +311,15 @@ smalltalk.addMethod(
296
311
  smalltalk.method({
297
312
  selector: "valueWithTimeout:",
298
313
  category: 'timeout/interval',
299
- fn: function (aNumber) {
300
- var self = this;
301
- return setTimeout(self, aNumber);
302
- return self;
303
- },
314
+ fn: function (aNumber){
315
+ var self=this;
316
+ return smalltalk.withContext(function($ctx1) {
317
+ var timeout = setTimeout(self, aNumber);
318
+ return smalltalk.Timeout._on_(timeout);
319
+ ;
320
+ return self}, function($ctx1) {$ctx1.fill(self,"valueWithTimeout:",{aNumber:aNumber}, smalltalk.BlockClosure)})},
304
321
  args: ["aNumber"],
305
- source: "valueWithTimeout: aNumber\x0a\x09<return setTimeout(self, aNumber)>",
322
+ source: "valueWithTimeout: aNumber\x0a\x09<\x0a \x09var timeout = setTimeout(self, aNumber);\x0a \x09return smalltalk.Timeout._on_(timeout);\x0a >",
306
323
  messageSends: [],
307
324
  referencedClasses: []
308
325
  }),
@@ -313,11 +330,11 @@ smalltalk.addMethod(
313
330
  smalltalk.method({
314
331
  selector: "whileFalse",
315
332
  category: 'controlling',
316
- fn: function () {
317
- var self = this;
318
- smalltalk.send(self, "_whileFalse_", [function () {}]);
319
- return self;
320
- },
333
+ fn: function (){
334
+ var self=this;
335
+ return smalltalk.withContext(function($ctx1) {
336
+ return smalltalk.withContext(function($ctx2) {
337
+ return self}, function($ctx1) {$ctx1.fill(self,"whileFalse",{}, smalltalk.BlockClosure)})},
321
338
  args: [],
322
339
  source: "whileFalse\x0a\x09\x22inlined in the Compiler\x22\x0a\x09self whileFalse: []",
323
340
  messageSends: ["whileFalse:"],
@@ -330,13 +347,10 @@ smalltalk.addMethod(
330
347
  smalltalk.method({
331
348
  selector: "whileFalse:",
332
349
  category: 'controlling',
333
- fn: function (aBlock) {
334
- var self = this;
335
- while (!self()) {
336
- aBlock();
337
- }
338
- return self;
339
- },
350
+ fn: function (aBlock){
351
+ var self=this;
352
+ return smalltalk.withContext(function($ctx1) {
353
+ return self}, function($ctx1) {$ctx1.fill(self,"whileFalse:",{aBlock:aBlock}, smalltalk.BlockClosure)})},
340
354
  args: ["aBlock"],
341
355
  source: "whileFalse: aBlock\x0a\x09\x22inlined in the Compiler\x22\x0a\x09<while(!self()) {aBlock()}>",
342
356
  messageSends: [],
@@ -349,11 +363,11 @@ smalltalk.addMethod(
349
363
  smalltalk.method({
350
364
  selector: "whileTrue",
351
365
  category: 'controlling',
352
- fn: function () {
353
- var self = this;
354
- smalltalk.send(self, "_whileTrue_", [function () {}]);
355
- return self;
356
- },
366
+ fn: function (){
367
+ var self=this;
368
+ return smalltalk.withContext(function($ctx1) {
369
+ return smalltalk.withContext(function($ctx2) {
370
+ return self}, function($ctx1) {$ctx1.fill(self,"whileTrue",{}, smalltalk.BlockClosure)})},
357
371
  args: [],
358
372
  source: "whileTrue\x0a\x09\x22inlined in the Compiler\x22\x0a\x09self whileTrue: []",
359
373
  messageSends: ["whileTrue:"],
@@ -366,13 +380,10 @@ smalltalk.addMethod(
366
380
  smalltalk.method({
367
381
  selector: "whileTrue:",
368
382
  category: 'controlling',
369
- fn: function (aBlock) {
370
- var self = this;
371
- while (self()) {
372
- aBlock();
373
- }
374
- return self;
375
- },
383
+ fn: function (aBlock){
384
+ var self=this;
385
+ return smalltalk.withContext(function($ctx1) {
386
+ return self}, function($ctx1) {$ctx1.fill(self,"whileTrue:",{aBlock:aBlock}, smalltalk.BlockClosure)})},
376
387
  args: ["aBlock"],
377
388
  source: "whileTrue: aBlock\x0a\x09\x22inlined in the Compiler\x22\x0a\x09<while(self()) {aBlock()}>",
378
389
  messageSends: [],
@@ -389,11 +400,10 @@ smalltalk.addMethod(
389
400
  smalltalk.method({
390
401
  selector: "arguments",
391
402
  category: 'accessing',
392
- fn: function () {
393
- var self = this;
394
- return self.args || [];
395
- return self;
396
- },
403
+ fn: function (){
404
+ var self=this;
405
+ return smalltalk.withContext(function($ctx1) {
406
+ return self}, function($ctx1) {$ctx1.fill(self,"arguments",{}, smalltalk.CompiledMethod)})},
397
407
  args: [],
398
408
  source: "arguments\x0a\x09<return self.args || []>",
399
409
  messageSends: [],
@@ -406,17 +416,17 @@ smalltalk.addMethod(
406
416
  smalltalk.method({
407
417
  selector: "category",
408
418
  category: 'accessing',
409
- fn: function () {
410
- var self = this;
411
- var $2, $1;
412
- $2 = smalltalk.send(self, "_basicAt_", ["category"]);
413
- if (($receiver = $2) == nil || $receiver == undefined) {
414
- $1 = "";
415
- } else {
416
- $1 = $2;
417
- }
418
- return $1;
419
- },
419
+ fn: function (){
420
+ var self=this;
421
+ return smalltalk.withContext(function($ctx1) {
422
+ $2=_st(self)._basicAt_("category");
423
+ if(($receiver = $2) == nil || $receiver == undefined){
424
+ $1="";
425
+ } else {
426
+ $1=$2;
427
+ };
428
+ return $1;
429
+ }, function($ctx1) {$ctx1.fill(self,"category",{}, smalltalk.CompiledMethod)})},
420
430
  args: [],
421
431
  source: "category\x0a\x09^(self basicAt: 'category') ifNil: ['']",
422
432
  messageSends: ["ifNil:", "basicAt:"],
@@ -431,22 +441,22 @@ selector: "category:",
431
441
  category: 'accessing',
432
442
  fn: function (aString){
433
443
  var self=this;
434
- var $1;
435
444
  var oldCategory;
436
- oldCategory=smalltalk.send(self,"_category",[]);
437
- smalltalk.send(self,"_basicAt_put_",["category",aString]);
438
- $1=smalltalk.send(self,"_methodClass",[]);
445
+ return smalltalk.withContext(function($ctx1) {
446
+ oldCategory=_st(self)._category();
447
+ _st(self)._basicAt_put_("category",aString);
448
+ $1=_st(self)._methodClass();
439
449
  if(($receiver = $1) == nil || $receiver == undefined){
440
450
  $1;
441
451
  } else {
442
- smalltalk.send(smalltalk.send(smalltalk.send(self,"_methodClass",[]),"_organization",[]),"_addElement_",[aString]);
443
- smalltalk.send(smalltalk.send(smalltalk.send(smalltalk.send(self,"_methodClass",[]),"_methods",[]),"_select_",[(function(each){
444
- return smalltalk.send(smalltalk.send(each,"_category",[]),"__eq",[oldCategory]);
445
- })]),"_ifEmpty_",[(function(){
446
- return smalltalk.send(smalltalk.send(smalltalk.send(self,"_methodClass",[]),"_organization",[]),"_removeElement_",[oldCategory]);
447
- })]);
452
+ _st(_st(_st(self)._methodClass())._organization())._addElement_(aString);
453
+ _st(_st(_st(_st(self)._methodClass())._methods())._select_((function(each){
454
+ return smalltalk.withContext(function($ctx2) {
455
+ }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1)})})))._ifEmpty_((function(){
456
+ return smalltalk.withContext(function($ctx2) {
457
+ }, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}));
448
458
  };
449
- return self},
459
+ return self}, function($ctx1) {$ctx1.fill(self,"category:",{aString:aString,oldCategory:oldCategory}, smalltalk.CompiledMethod)})},
450
460
  args: ["aString"],
451
461
  source: "category: aString\x0a\x09| oldCategory |\x0a oldCategory := self category.\x0a\x09self basicAt: 'category' put: aString.\x0a \x0a self methodClass ifNotNil: [\x0a \x09self methodClass organization addElement: aString.\x0a \x0a\x09\x09(self methodClass methods \x0a \x09\x09select: [ :each | each category = oldCategory ])\x0a \x09ifEmpty: [ self methodClass organization removeElement: oldCategory ] ]",
452
462
  messageSends: ["category", "basicAt:put:", "ifNotNil:", "addElement:", "organization", "methodClass", "ifEmpty:", "removeElement:", "select:", "=", "methods"],
@@ -459,12 +469,12 @@ smalltalk.addMethod(
459
469
  smalltalk.method({
460
470
  selector: "fn",
461
471
  category: 'accessing',
462
- fn: function () {
463
- var self = this;
464
- var $1;
465
- $1 = smalltalk.send(self, "_basicAt_", ["fn"]);
466
- return $1;
467
- },
472
+ fn: function (){
473
+ var self=this;
474
+ return smalltalk.withContext(function($ctx1) {
475
+ $1=_st(self)._basicAt_("fn");
476
+ return $1;
477
+ }, function($ctx1) {$ctx1.fill(self,"fn",{}, smalltalk.CompiledMethod)})},
468
478
  args: [],
469
479
  source: "fn\x0a\x09^self basicAt: 'fn'",
470
480
  messageSends: ["basicAt:"],
@@ -477,11 +487,10 @@ smalltalk.addMethod(
477
487
  smalltalk.method({
478
488
  selector: "fn:",
479
489
  category: 'accessing',
480
- fn: function (aBlock) {
481
- var self = this;
482
- smalltalk.send(self, "_basicAt_put_", ["fn", aBlock]);
483
- return self;
484
- },
490
+ fn: function (aBlock){
491
+ var self=this;
492
+ return smalltalk.withContext(function($ctx1) {
493
+ return self}, function($ctx1) {$ctx1.fill(self,"fn:",{aBlock:aBlock}, smalltalk.CompiledMethod)})},
485
494
  args: ["aBlock"],
486
495
  source: "fn: aBlock\x0a\x09self basicAt: 'fn' put: aBlock",
487
496
  messageSends: ["basicAt:put:"],
@@ -494,12 +503,12 @@ smalltalk.addMethod(
494
503
  smalltalk.method({
495
504
  selector: "messageSends",
496
505
  category: 'accessing',
497
- fn: function () {
498
- var self = this;
499
- var $1;
500
- $1 = smalltalk.send(self, "_basicAt_", ["messageSends"]);
501
- return $1;
502
- },
506
+ fn: function (){
507
+ var self=this;
508
+ return smalltalk.withContext(function($ctx1) {
509
+ $1=_st(self)._basicAt_("messageSends");
510
+ return $1;
511
+ }, function($ctx1) {$ctx1.fill(self,"messageSends",{}, smalltalk.CompiledMethod)})},
503
512
  args: [],
504
513
  source: "messageSends\x0a\x09^self basicAt: 'messageSends'",
505
514
  messageSends: ["basicAt:"],
@@ -512,12 +521,12 @@ smalltalk.addMethod(
512
521
  smalltalk.method({
513
522
  selector: "methodClass",
514
523
  category: 'accessing',
515
- fn: function () {
516
- var self = this;
517
- var $1;
518
- $1 = smalltalk.send(self, "_basicAt_", ["methodClass"]);
519
- return $1;
520
- },
524
+ fn: function (){
525
+ var self=this;
526
+ return smalltalk.withContext(function($ctx1) {
527
+ $1=_st(self)._basicAt_("methodClass");
528
+ return $1;
529
+ }, function($ctx1) {$ctx1.fill(self,"methodClass",{}, smalltalk.CompiledMethod)})},
521
530
  args: [],
522
531
  source: "methodClass\x0a\x09^self basicAt: 'methodClass'",
523
532
  messageSends: ["basicAt:"],
@@ -530,12 +539,12 @@ smalltalk.addMethod(
530
539
  smalltalk.method({
531
540
  selector: "protocol",
532
541
  category: 'accessing',
533
- fn: function () {
534
- var self = this;
535
- var $1;
536
- $1 = smalltalk.send(self, "_category", []);
537
- return $1;
538
- },
542
+ fn: function (){
543
+ var self=this;
544
+ return smalltalk.withContext(function($ctx1) {
545
+ $1=_st(self)._category();
546
+ return $1;
547
+ }, function($ctx1) {$ctx1.fill(self,"protocol",{}, smalltalk.CompiledMethod)})},
539
548
  args: [],
540
549
  source: "protocol\x0a\x09^ self category",
541
550
  messageSends: ["category"],
@@ -548,12 +557,12 @@ smalltalk.addMethod(
548
557
  smalltalk.method({
549
558
  selector: "referencedClasses",
550
559
  category: 'accessing',
551
- fn: function () {
552
- var self = this;
553
- var $1;
554
- $1 = smalltalk.send(self, "_basicAt_", ["referencedClasses"]);
555
- return $1;
556
- },
560
+ fn: function (){
561
+ var self=this;
562
+ return smalltalk.withContext(function($ctx1) {
563
+ $1=_st(self)._basicAt_("referencedClasses");
564
+ return $1;
565
+ }, function($ctx1) {$ctx1.fill(self,"referencedClasses",{}, smalltalk.CompiledMethod)})},
557
566
  args: [],
558
567
  source: "referencedClasses\x0a\x09^self basicAt: 'referencedClasses'",
559
568
  messageSends: ["basicAt:"],
@@ -566,12 +575,12 @@ smalltalk.addMethod(
566
575
  smalltalk.method({
567
576
  selector: "selector",
568
577
  category: 'accessing',
569
- fn: function () {
570
- var self = this;
571
- var $1;
572
- $1 = smalltalk.send(self, "_basicAt_", ["selector"]);
573
- return $1;
574
- },
578
+ fn: function (){
579
+ var self=this;
580
+ return smalltalk.withContext(function($ctx1) {
581
+ $1=_st(self)._basicAt_("selector");
582
+ return $1;
583
+ }, function($ctx1) {$ctx1.fill(self,"selector",{}, smalltalk.CompiledMethod)})},
575
584
  args: [],
576
585
  source: "selector\x0a\x09^self basicAt: 'selector'",
577
586
  messageSends: ["basicAt:"],
@@ -584,11 +593,10 @@ smalltalk.addMethod(
584
593
  smalltalk.method({
585
594
  selector: "selector:",
586
595
  category: 'accessing',
587
- fn: function (aString) {
588
- var self = this;
589
- smalltalk.send(self, "_basicAt_put_", ["selector", aString]);
590
- return self;
591
- },
596
+ fn: function (aString){
597
+ var self=this;
598
+ return smalltalk.withContext(function($ctx1) {
599
+ return self}, function($ctx1) {$ctx1.fill(self,"selector:",{aString:aString}, smalltalk.CompiledMethod)})},
592
600
  args: ["aString"],
593
601
  source: "selector: aString\x0a\x09self basicAt: 'selector' put: aString",
594
602
  messageSends: ["basicAt:put:"],
@@ -601,17 +609,17 @@ smalltalk.addMethod(
601
609
  smalltalk.method({
602
610
  selector: "source",
603
611
  category: 'accessing',
604
- fn: function () {
605
- var self = this;
606
- var $2, $1;
607
- $2 = smalltalk.send(self, "_basicAt_", ["source"]);
608
- if (($receiver = $2) == nil || $receiver == undefined) {
609
- $1 = "";
610
- } else {
611
- $1 = $2;
612
- }
613
- return $1;
614
- },
612
+ fn: function (){
613
+ var self=this;
614
+ return smalltalk.withContext(function($ctx1) {
615
+ $2=_st(self)._basicAt_("source");
616
+ if(($receiver = $2) == nil || $receiver == undefined){
617
+ $1="";
618
+ } else {
619
+ $1=$2;
620
+ };
621
+ return $1;
622
+ }, function($ctx1) {$ctx1.fill(self,"source",{}, smalltalk.CompiledMethod)})},
615
623
  args: [],
616
624
  source: "source\x0a\x09^(self basicAt: 'source') ifNil: ['']",
617
625
  messageSends: ["ifNil:", "basicAt:"],
@@ -624,11 +632,10 @@ smalltalk.addMethod(
624
632
  smalltalk.method({
625
633
  selector: "source:",
626
634
  category: 'accessing',
627
- fn: function (aString) {
628
- var self = this;
629
- smalltalk.send(self, "_basicAt_put_", ["source", aString]);
630
- return self;
631
- },
635
+ fn: function (aString){
636
+ var self=this;
637
+ return smalltalk.withContext(function($ctx1) {
638
+ return self}, function($ctx1) {$ctx1.fill(self,"source:",{aString:aString}, smalltalk.CompiledMethod)})},
632
639
  args: ["aString"],
633
640
  source: "source: aString\x0a\x09self basicAt: 'source' put: aString",
634
641
  messageSends: ["basicAt:put:"],
@@ -639,16 +646,17 @@ smalltalk.CompiledMethod);
639
646
 
640
647
 
641
648
  smalltalk.addClass('ForkPool', smalltalk.Object, ['poolSize', 'maxPoolSize', 'queue', 'worker'], 'Kernel-Methods');
649
+ smalltalk.ForkPool.comment="A ForkPool is responsible for handling forked blocks.\x0aThe pool size sets the maximum concurrent forked blocks.\x0a\x0aThe default instance is accessed with `ForkPool default`"
642
650
  smalltalk.addMethod(
643
651
  "_addWorker",
644
652
  smalltalk.method({
645
653
  selector: "addWorker",
646
- category: 'action',
654
+ category: 'private',
647
655
  fn: function (){
648
656
  var self=this;
649
- smalltalk.send(self["@worker"],"_valueWithTimeout_",[(0)]);
650
- self["@poolSize"]=smalltalk.send(self["@poolSize"],"__plus",[(1)]);
651
- return self},
657
+ return smalltalk.withContext(function($ctx1) {
658
+ self["@poolSize"]=_st(self["@poolSize"]).__plus((1));
659
+ return self}, function($ctx1) {$ctx1.fill(self,"addWorker",{}, smalltalk.ForkPool)})},
652
660
  args: [],
653
661
  source: "addWorker\x0a\x09worker valueWithTimeout: 0.\x0a poolSize := poolSize + 1",
654
662
  messageSends: ["valueWithTimeout:", "+"],
@@ -656,23 +664,41 @@ referencedClasses: []
656
664
  }),
657
665
  smalltalk.ForkPool);
658
666
 
667
+ smalltalk.addMethod(
668
+ "_defaultMaxPoolSize",
669
+ smalltalk.method({
670
+ selector: "defaultMaxPoolSize",
671
+ category: 'defaults',
672
+ fn: function (){
673
+ var self=this;
674
+ return smalltalk.withContext(function($ctx1) {
675
+ $1=_st(_st(self)._class())._defaultMaxPoolSize();
676
+ return $1;
677
+ }, function($ctx1) {$ctx1.fill(self,"defaultMaxPoolSize",{}, smalltalk.ForkPool)})},
678
+ args: [],
679
+ source: "defaultMaxPoolSize\x0a\x09^ self class defaultMaxPoolSize",
680
+ messageSends: ["defaultMaxPoolSize", "class"],
681
+ referencedClasses: []
682
+ }),
683
+ smalltalk.ForkPool);
684
+
659
685
  smalltalk.addMethod(
660
686
  "_fork_",
661
687
  smalltalk.method({
662
688
  selector: "fork:",
663
- category: 'action',
689
+ category: 'actions',
664
690
  fn: function (aBlock){
665
691
  var self=this;
666
- var $1;
667
- $1=smalltalk.send(self["@poolSize"],"__lt",[self["@maxPoolSize"]]);
692
+ return smalltalk.withContext(function($ctx1) {
693
+ $1=_st(self["@poolSize"]).__lt(_st(self)._maxPoolSize());
668
694
  if(smalltalk.assert($1)){
669
- smalltalk.send(self,"_addWorker",[]);
695
+ _st(self)._addWorker();
670
696
  };
671
- smalltalk.send(self["@queue"],"_back_",[aBlock]);
672
- return self},
697
+ _st(self["@queue"])._back_(aBlock);
698
+ return self}, function($ctx1) {$ctx1.fill(self,"fork:",{aBlock:aBlock}, smalltalk.ForkPool)})},
673
699
  args: ["aBlock"],
674
- source: "fork: aBlock\x0a\x09poolSize < maxPoolSize ifTrue: [ self addWorker ].\x0a\x09queue back: aBlock",
675
- messageSends: ["ifTrue:", "addWorker", "<", "back:"],
700
+ source: "fork: aBlock\x0a\x09poolSize < self maxPoolSize ifTrue: [ self addWorker ].\x0a\x09queue back: aBlock",
701
+ messageSends: ["ifTrue:", "addWorker", "<", "maxPoolSize", "back:"],
676
702
  referencedClasses: []
677
703
  }),
678
704
  smalltalk.ForkPool);
@@ -684,34 +710,90 @@ selector: "initialize",
684
710
  category: 'initialization',
685
711
  fn: function (){
686
712
  var self=this;
687
- var $1;
688
- var sentinel;
713
+ return smalltalk.withContext(function($ctx1) {
689
714
  self["@poolSize"]=(0);
690
- self["@maxPoolSize"]=smalltalk.send(smalltalk.send(self,"_class",[]),"_defaultMaxPoolSize",[]);
691
- self["@queue"]=smalltalk.send((smalltalk.Queue || Queue),"_new",[]);
692
- sentinel=smalltalk.send((smalltalk.Object || Object),"_new",[]);
693
- self["@worker"]=(function(){
715
+ self["@queue"]=_st((smalltalk.Queue || Queue))._new();
716
+ self["@worker"]=_st(self)._makeWorker();
717
+ return self}, function($ctx1) {$ctx1.fill(self,"initialize",{}, smalltalk.ForkPool)})},
718
+ args: [],
719
+ source: "initialize\x0a super initialize.\x0a \x0a\x09poolSize := 0.\x0a queue := Queue new.\x0a worker := self makeWorker",
720
+ messageSends: ["initialize", "new", "makeWorker"],
721
+ referencedClasses: ["Queue"]
722
+ }),
723
+ smalltalk.ForkPool);
724
+
725
+ smalltalk.addMethod(
726
+ "_makeWorker",
727
+ smalltalk.method({
728
+ selector: "makeWorker",
729
+ category: 'initialization',
730
+ fn: function (){
731
+ var self=this;
732
+ var sentinel;
733
+ return smalltalk.withContext(function($ctx1) {
734
+ sentinel=_st((smalltalk.Object || Object))._new();
735
+ $1=(function(){
694
736
  var block;
695
- self["@poolSize"]=smalltalk.send(self["@poolSize"],"__minus",[(1)]);
737
+ return smalltalk.withContext(function($ctx2) {
696
738
  self["@poolSize"];
697
- block=smalltalk.send(self["@queue"],"_frontIfAbsent_",[(function(){
698
- return sentinel;
699
- })]);
739
+ block=_st(self["@queue"])._frontIfAbsent_((function(){
740
+ return smalltalk.withContext(function($ctx3) {
741
+ }, function($ctx3) {$ctx3.fillBlock({},$ctx1)})}));
700
742
  block;
701
- $1=smalltalk.send(block,"__eq_eq",[sentinel]);
702
- if(! smalltalk.assert($1)){
703
- return smalltalk.send((function(){
704
- return smalltalk.send(block,"_value",[]);
705
- }),"_ensure_",[(function(){
706
- return smalltalk.send(self,"_addWorker",[]);
707
- })]);
743
+ $2=_st(block).__eq_eq(sentinel);
744
+ if(! smalltalk.assert($2)){
745
+ return _st((function(){
746
+ return smalltalk.withContext(function($ctx3) {
747
+ }, function($ctx3) {$ctx3.fillBlock({},$ctx1)})}))._ensure_((function(){
748
+ return smalltalk.withContext(function($ctx3) {
749
+ }, function($ctx3) {$ctx3.fillBlock({},$ctx1)})}));
708
750
  };
709
- });
710
- return self},
751
+ }, function($ctx2) {$ctx2.fillBlock({block:block},$ctx1)})});
752
+ return $1;
753
+ }, function($ctx1) {$ctx1.fill(self,"makeWorker",{sentinel:sentinel}, smalltalk.ForkPool)})},
711
754
  args: [],
712
- source: "initialize\x0a\x09| sentinel |\x0a\x09poolSize := 0.\x0a maxPoolSize := self class defaultMaxPoolSize.\x0a queue := Queue new.\x0a sentinel := Object new.\x0a worker := [\x0a\x09\x09| block |\x0a poolSize := poolSize - 1.\x0a\x09\x09block := queue frontIfAbsent: [ sentinel ].\x0a block == sentinel ifFalse: [\x0a \x09[ block value ] ensure: [ self addWorker ]]].",
713
- messageSends: ["defaultMaxPoolSize", "class", "new", "-", "frontIfAbsent:", "ifFalse:", "ensure:", "addWorker", "value", "=="],
714
- referencedClasses: ["Queue", "Object"]
755
+ source: "makeWorker\x0a\x09| sentinel |\x0a sentinel := Object new.\x0a ^[ | block |\x0a poolSize := poolSize - 1.\x0a\x09\x09block := queue frontIfAbsent: [ sentinel ].\x0a block == sentinel ifFalse: [\x0a \x09[ block value ] ensure: [ self addWorker ]]]",
756
+ messageSends: ["new", "-", "frontIfAbsent:", "ifFalse:", "ensure:", "addWorker", "value", "=="],
757
+ referencedClasses: ["Object"]
758
+ }),
759
+ smalltalk.ForkPool);
760
+
761
+ smalltalk.addMethod(
762
+ "_maxPoolSize",
763
+ smalltalk.method({
764
+ selector: "maxPoolSize",
765
+ category: 'accessing',
766
+ fn: function (){
767
+ var self=this;
768
+ return smalltalk.withContext(function($ctx1) {
769
+ $2=self["@maxPoolSize"];
770
+ if(($receiver = $2) == nil || $receiver == undefined){
771
+ $1=_st(self)._defaultMaxPoolSize();
772
+ } else {
773
+ $1=$2;
774
+ };
775
+ return $1;
776
+ }, function($ctx1) {$ctx1.fill(self,"maxPoolSize",{}, smalltalk.ForkPool)})},
777
+ args: [],
778
+ source: "maxPoolSize\x0a\x09^ maxPoolSize ifNil: [ self defaultMaxPoolSize ]",
779
+ messageSends: ["ifNil:", "defaultMaxPoolSize"],
780
+ referencedClasses: []
781
+ }),
782
+ smalltalk.ForkPool);
783
+
784
+ smalltalk.addMethod(
785
+ "_maxPoolSize_",
786
+ smalltalk.method({
787
+ selector: "maxPoolSize:",
788
+ category: 'accessing',
789
+ fn: function (anInteger){
790
+ var self=this;
791
+ return smalltalk.withContext(function($ctx1) {
792
+ return self}, function($ctx1) {$ctx1.fill(self,"maxPoolSize:",{anInteger:anInteger}, smalltalk.ForkPool)})},
793
+ args: ["anInteger"],
794
+ source: "maxPoolSize: anInteger\x0a\x09maxPoolSize := anInteger",
795
+ messageSends: [],
796
+ referencedClasses: []
715
797
  }),
716
798
  smalltalk.ForkPool);
717
799
 
@@ -724,15 +806,16 @@ selector: "default",
724
806
  category: 'accessing',
725
807
  fn: function (){
726
808
  var self=this;
727
- var $1;
728
- if(($receiver = self["@default"]) == nil || $receiver == undefined){
729
- self["@default"]=smalltalk.send(self,"_new",[]);
809
+ return smalltalk.withContext(function($ctx1) {
810
+ $2=self["@default"];
811
+ if(($receiver = $2) == nil || $receiver == undefined){
812
+ self["@default"]=_st(self)._new();
730
813
  $1=self["@default"];
731
814
  } else {
732
- $1=self["@default"];
815
+ $1=$2;
733
816
  };
734
817
  return $1;
735
- },
818
+ }, function($ctx1) {$ctx1.fill(self,"default",{}, smalltalk.ForkPool.klass)})},
736
819
  args: [],
737
820
  source: "default\x0a\x09^default ifNil: [ default := self new ]",
738
821
  messageSends: ["ifNil:", "new"],
@@ -747,8 +830,8 @@ selector: "defaultMaxPoolSize",
747
830
  category: 'accessing',
748
831
  fn: function (){
749
832
  var self=this;
750
- return (100);
751
- },
833
+ return smalltalk.withContext(function($ctx1) {
834
+ }, function($ctx1) {$ctx1.fill(self,"defaultMaxPoolSize",{}, smalltalk.ForkPool.klass)})},
752
835
  args: [],
753
836
  source: "defaultMaxPoolSize\x0a\x09^100",
754
837
  messageSends: [],
@@ -763,8 +846,8 @@ selector: "resetDefault",
763
846
  category: 'accessing',
764
847
  fn: function (){
765
848
  var self=this;
766
- self["@default"]=nil;
767
- return self},
849
+ return smalltalk.withContext(function($ctx1) {
850
+ return self}, function($ctx1) {$ctx1.fill(self,"resetDefault",{}, smalltalk.ForkPool.klass)})},
768
851
  args: [],
769
852
  source: "resetDefault\x0a\x09default := nil",
770
853
  messageSends: [],
@@ -780,10 +863,12 @@ smalltalk.addMethod(
780
863
  smalltalk.method({
781
864
  selector: "arguments",
782
865
  category: 'accessing',
783
- fn: function () {
784
- var self = this;
785
- return self['@arguments'];
786
- },
866
+ fn: function (){
867
+ var self=this;
868
+ return smalltalk.withContext(function($ctx1) {
869
+ $1=self["@arguments"];
870
+ return $1;
871
+ }, function($ctx1) {$ctx1.fill(self,"arguments",{}, smalltalk.Message)})},
787
872
  args: [],
788
873
  source: "arguments\x0a\x09^arguments",
789
874
  messageSends: [],
@@ -796,11 +881,10 @@ smalltalk.addMethod(
796
881
  smalltalk.method({
797
882
  selector: "arguments:",
798
883
  category: 'accessing',
799
- fn: function (anArray) {
800
- var self = this;
801
- self['@arguments'] = anArray;
802
- return self;
803
- },
884
+ fn: function (anArray){
885
+ var self=this;
886
+ return smalltalk.withContext(function($ctx1) {
887
+ return self}, function($ctx1) {$ctx1.fill(self,"arguments:",{anArray:anArray}, smalltalk.Message)})},
804
888
  args: ["anArray"],
805
889
  source: "arguments: anArray\x0a\x09arguments := anArray",
806
890
  messageSends: [],
@@ -813,12 +897,19 @@ smalltalk.addMethod(
813
897
  smalltalk.method({
814
898
  selector: "printString",
815
899
  category: 'printing',
816
- fn: function () {
817
- var self = this;
818
- var $2, $1;
819
- $1 = smalltalk.send(smalltalk.String || String, "_streamContents_", [function (aStream) {smalltalk.send(aStream, "_nextPutAll_", [smalltalk.send(self, "_printString", [], smalltalk.Object)]);smalltalk.send(aStream, "_nextPutAll_", ["("]);smalltalk.send(aStream, "_nextPutAll_", [self['@selector']]);$2 = smalltalk.send(aStream, "_nextPutAll_", [")"]);return $2;}]);
820
- return $1;
821
- },
900
+ fn: function (){
901
+ var self=this;
902
+ return smalltalk.withContext(function($ctx1) {
903
+ $1=_st((smalltalk.String || String))._streamContents_((function(aStream){
904
+ return smalltalk.withContext(function($ctx2) {
905
+ _st($2)._nextPutAll_(smalltalk.Object.fn.prototype._printString.apply(_st(self), []));
906
+ _st($2)._nextPutAll_("(");
907
+ _st($2)._nextPutAll_(self["@selector"]);
908
+ $3=_st($2)._nextPutAll_(")");
909
+ return $3;
910
+ }, function($ctx2) {$ctx2.fillBlock({aStream:aStream},$ctx1)})}));
911
+ return $1;
912
+ }, function($ctx1) {$ctx1.fill(self,"printString",{}, smalltalk.Message)})},
822
913
  args: [],
823
914
  source: "printString\x0a\x09^ String streamContents: [:aStream| \x0a \x09\x09\x09\x09aStream \x0a \x09\x09\x09\x09\x09nextPutAll: super printString;\x0a \x09\x09\x09\x09\x09nextPutAll: '(';\x0a \x09\x09\x09\x09\x09nextPutAll: selector;\x0a \x09\x09\x09\x09\x09nextPutAll: ')' \x09\x09\x09\x09]",
824
915
  messageSends: ["streamContents:", "nextPutAll:", "printString"],
@@ -831,10 +922,12 @@ smalltalk.addMethod(
831
922
  smalltalk.method({
832
923
  selector: "selector",
833
924
  category: 'accessing',
834
- fn: function () {
835
- var self = this;
836
- return self['@selector'];
837
- },
925
+ fn: function (){
926
+ var self=this;
927
+ return smalltalk.withContext(function($ctx1) {
928
+ $1=self["@selector"];
929
+ return $1;
930
+ }, function($ctx1) {$ctx1.fill(self,"selector",{}, smalltalk.Message)})},
838
931
  args: [],
839
932
  source: "selector\x0a\x09^selector",
840
933
  messageSends: [],
@@ -847,11 +940,10 @@ smalltalk.addMethod(
847
940
  smalltalk.method({
848
941
  selector: "selector:",
849
942
  category: 'accessing',
850
- fn: function (aString) {
851
- var self = this;
852
- self['@selector'] = aString;
853
- return self;
854
- },
943
+ fn: function (aString){
944
+ var self=this;
945
+ return smalltalk.withContext(function($ctx1) {
946
+ return self}, function($ctx1) {$ctx1.fill(self,"selector:",{aString:aString}, smalltalk.Message)})},
855
947
  args: ["aString"],
856
948
  source: "selector: aString\x0a\x09selector := aString",
857
949
  messageSends: [],
@@ -864,16 +956,16 @@ smalltalk.addMethod(
864
956
  smalltalk.method({
865
957
  selector: "sendTo:",
866
958
  category: 'printing',
867
- fn: function (anObject) {
868
- var self = this;
869
- var $1;
870
- $1 = smalltalk.send(smalltalk.send(smalltalk.Smalltalk || Smalltalk, "_current", []), "_send_to_arguments_", [smalltalk.send(self, "_selector", []), anObject, smalltalk.send(self, "_arguments", [])]);
871
- return $1;
872
- },
959
+ fn: function (anObject){
960
+ var self=this;
961
+ return smalltalk.withContext(function($ctx1) {
962
+ $1=_st(anObject)._perform_withArguments_(_st(self)._selector(),_st(self)._arguments());
963
+ return $1;
964
+ }, function($ctx1) {$ctx1.fill(self,"sendTo:",{anObject:anObject}, smalltalk.Message)})},
873
965
  args: ["anObject"],
874
- source: "sendTo: anObject\x0a\x09^ Smalltalk current send: self selector to: anObject arguments: self arguments",
875
- messageSends: ["send:to:arguments:", "selector", "arguments", "current"],
876
- referencedClasses: ["Smalltalk"]
966
+ source: "sendTo: anObject\x0a\x09^ anObject perform: self selector withArguments: self arguments",
967
+ messageSends: ["perform:withArguments:", "selector", "arguments"],
968
+ referencedClasses: []
877
969
  }),
878
970
  smalltalk.Message);
879
971
 
@@ -883,16 +975,16 @@ smalltalk.addMethod(
883
975
  smalltalk.method({
884
976
  selector: "selector:arguments:",
885
977
  category: 'instance creation',
886
- fn: function (aString, anArray) {
887
- var self = this;
888
- var $2, $3, $1;
889
- $2 = smalltalk.send(self, "_new", []);
890
- smalltalk.send($2, "_selector_", [aString]);
891
- smalltalk.send($2, "_arguments_", [anArray]);
892
- $3 = smalltalk.send($2, "_yourself", []);
893
- $1 = $3;
894
- return $1;
895
- },
978
+ fn: function (aString,anArray){
979
+ var self=this;
980
+ return smalltalk.withContext(function($ctx1) {
981
+ $2=_st(self)._new();
982
+ _st($2)._selector_(aString);
983
+ _st($2)._arguments_(anArray);
984
+ $3=_st($2)._yourself();
985
+ $1=$3;
986
+ return $1;
987
+ }, function($ctx1) {$ctx1.fill(self,"selector:arguments:",{aString:aString,anArray:anArray}, smalltalk.Message.klass)})},
896
988
  args: ["aString", "anArray"],
897
989
  source: "selector: aString arguments: anArray\x0a\x09^self new\x0a\x09\x09selector: aString;\x0a\x09\x09arguments: anArray;\x0a\x09\x09yourself",
898
990
  messageSends: ["selector:", "new", "arguments:", "yourself"],
@@ -902,21 +994,26 @@ smalltalk.Message.klass);
902
994
 
903
995
 
904
996
  smalltalk.addClass('MethodContext', smalltalk.Object, [], 'Kernel-Methods');
905
- smalltalk.MethodContext.comment="MethodContext holds all the dynamic state associated with the execution of either a method activation resulting from a message send. That is used to build the call stack while debugging.\x0a \x0aMethodContext instances are JavaScript `SmalltalkMethodContext` objects defined in boot.js \x0a\x0aCurrent limitation: MethodContext instances are not created on Block evaluation. That means it's actually impossible to debug inside a Block."
997
+ smalltalk.MethodContext.comment="MethodContext holds all the dynamic state associated with the execution of either a method activation resulting from a message send. That is used to build the call stack while debugging.\x0a \x0aMethodContext instances are JavaScript `SmalltalkMethodContext` objects defined in boot.js "
906
998
  smalltalk.addMethod(
907
999
  "_asString",
908
1000
  smalltalk.method({
909
1001
  selector: "asString",
910
- category: 'accessing',
911
- fn: function () {
912
- var self = this;
913
- var $1;
914
- $1 = smalltalk.send(smalltalk.send(smalltalk.send(smalltalk.send(smalltalk.send(self, "_receiver", []), "_class", []), "_printString", []), "__comma", [" >> "]), "__comma", [smalltalk.send(self, "_selector", [])]);
915
- return $1;
916
- },
1002
+ category: 'converting',
1003
+ fn: function (){
1004
+ var self=this;
1005
+ return smalltalk.withContext(function($ctx1) {
1006
+ $2=_st(self)._isBlockContext();
1007
+ if(smalltalk.assert($2)){
1008
+ $1=_st(_st("a block (in ").__comma(_st(_st(_st(_st(self)._methodContext())._receiver())._class())._printString())).__comma(")");
1009
+ } else {
1010
+ $1=_st(_st(_st(_st(_st(self)._receiver())._class())._printString()).__comma(" >> ")).__comma(_st(self)._selector());
1011
+ };
1012
+ return $1;
1013
+ }, function($ctx1) {$ctx1.fill(self,"asString",{}, smalltalk.MethodContext)})},
917
1014
  args: [],
918
- source: "asString\x0a\x09^self receiver class printString, ' >> ', self selector",
919
- messageSends: [",", "selector", "printString", "class", "receiver"],
1015
+ source: "asString\x0a\x09^self isBlockContext \x0a \x09ifTrue: [ 'a block (in ', self methodContext receiver class printString, ')' ]\x0a \x09ifFalse: [ self receiver class printString, ' >> ', self selector ]",
1016
+ messageSends: ["ifTrue:ifFalse:", ",", "printString", "class", "receiver", "methodContext", "selector", "isBlockContext"],
920
1017
  referencedClasses: []
921
1018
  }),
922
1019
  smalltalk.MethodContext);
@@ -926,13 +1023,103 @@ smalltalk.addMethod(
926
1023
  smalltalk.method({
927
1024
  selector: "home",
928
1025
  category: 'accessing',
929
- fn: function () {
930
- var self = this;
931
- return self.homeContext;
932
- return self;
933
- },
1026
+ fn: function (){
1027
+ var self=this;
1028
+ return smalltalk.withContext(function($ctx1) {
1029
+ return self}, function($ctx1) {$ctx1.fill(self,"home",{}, smalltalk.MethodContext)})},
1030
+ args: [],
1031
+ source: "home\x0a\x09<return self.methodContext || self.homeContext>",
1032
+ messageSends: [],
1033
+ referencedClasses: []
1034
+ }),
1035
+ smalltalk.MethodContext);
1036
+
1037
+ smalltalk.addMethod(
1038
+ "_isBlockContext",
1039
+ smalltalk.method({
1040
+ selector: "isBlockContext",
1041
+ category: 'testing',
1042
+ fn: function (){
1043
+ var self=this;
1044
+ return smalltalk.withContext(function($ctx1) {
1045
+ $1=_st(_st(self)._selector())._isNil();
1046
+ return $1;
1047
+ }, function($ctx1) {$ctx1.fill(self,"isBlockContext",{}, smalltalk.MethodContext)})},
1048
+ args: [],
1049
+ source: "isBlockContext\x0a\x09\x22Block context do not have selectors.\x22\x0a \x0a\x09^ self selector isNil",
1050
+ messageSends: ["isNil", "selector"],
1051
+ referencedClasses: []
1052
+ }),
1053
+ smalltalk.MethodContext);
1054
+
1055
+ smalltalk.addMethod(
1056
+ "_locals",
1057
+ smalltalk.method({
1058
+ selector: "locals",
1059
+ category: 'accessing',
1060
+ fn: function (){
1061
+ var self=this;
1062
+ return smalltalk.withContext(function($ctx1) {
1063
+ return self}, function($ctx1) {$ctx1.fill(self,"locals",{}, smalltalk.MethodContext)})},
1064
+ args: [],
1065
+ source: "locals\x0a\x09<return self.locals>",
1066
+ messageSends: [],
1067
+ referencedClasses: []
1068
+ }),
1069
+ smalltalk.MethodContext);
1070
+
1071
+ smalltalk.addMethod(
1072
+ "_method",
1073
+ smalltalk.method({
1074
+ selector: "method",
1075
+ category: 'accessing',
1076
+ fn: function (){
1077
+ var self=this;
1078
+ return smalltalk.withContext(function($ctx1) {
1079
+ $1=_st(_st(_st(_st(self)._methodContext())._receiver())._class())._lookupSelector_(_st(_st(self)._methodContext())._selector());
1080
+ return $1;
1081
+ }, function($ctx1) {$ctx1.fill(self,"method",{}, smalltalk.MethodContext)})},
1082
+ args: [],
1083
+ source: "method\x0a\x09^self methodContext receiver class lookupSelector: self methodContext selector",
1084
+ messageSends: ["lookupSelector:", "selector", "methodContext", "class", "receiver"],
1085
+ referencedClasses: []
1086
+ }),
1087
+ smalltalk.MethodContext);
1088
+
1089
+ smalltalk.addMethod(
1090
+ "_methodContext",
1091
+ smalltalk.method({
1092
+ selector: "methodContext",
1093
+ category: 'accessing',
1094
+ fn: function (){
1095
+ var self=this;
1096
+ return smalltalk.withContext(function($ctx1) {
1097
+ $1=_st(self)._isBlockContext();
1098
+ if(! smalltalk.assert($1)){
1099
+ $2=self;
1100
+ return $2;
1101
+ };
1102
+ $3=_st(self)._home();
1103
+ return $3;
1104
+ }, function($ctx1) {$ctx1.fill(self,"methodContext",{}, smalltalk.MethodContext)})},
1105
+ args: [],
1106
+ source: "methodContext\x0a\x09self isBlockContext ifFalse: [ ^ self ].\x0a \x0a ^ self home",
1107
+ messageSends: ["ifFalse:", "isBlockContext", "home"],
1108
+ referencedClasses: []
1109
+ }),
1110
+ smalltalk.MethodContext);
1111
+
1112
+ smalltalk.addMethod(
1113
+ "_outerContext",
1114
+ smalltalk.method({
1115
+ selector: "outerContext",
1116
+ category: 'accessing',
1117
+ fn: function (){
1118
+ var self=this;
1119
+ return smalltalk.withContext(function($ctx1) {
1120
+ return self}, function($ctx1) {$ctx1.fill(self,"outerContext",{}, smalltalk.MethodContext)})},
934
1121
  args: [],
935
- source: "home\x0a\x09<return self.homeContext>",
1122
+ source: "outerContext\x0a\x09<return self.homeContext>",
936
1123
  messageSends: [],
937
1124
  referencedClasses: []
938
1125
  }),
@@ -943,11 +1130,10 @@ smalltalk.addMethod(
943
1130
  smalltalk.method({
944
1131
  selector: "pc",
945
1132
  category: 'accessing',
946
- fn: function () {
947
- var self = this;
948
- return self.pc;
949
- return self;
950
- },
1133
+ fn: function (){
1134
+ var self=this;
1135
+ return smalltalk.withContext(function($ctx1) {
1136
+ return self}, function($ctx1) {$ctx1.fill(self,"pc",{}, smalltalk.MethodContext)})},
951
1137
  args: [],
952
1138
  source: "pc\x0a\x09<return self.pc>",
953
1139
  messageSends: [],
@@ -960,12 +1146,12 @@ smalltalk.addMethod(
960
1146
  smalltalk.method({
961
1147
  selector: "printString",
962
1148
  category: 'accessing',
963
- fn: function () {
964
- var self = this;
965
- var $1;
966
- $1 = smalltalk.send(smalltalk.send(smalltalk.send(smalltalk.send(self, "_printString", [], smalltalk.Object), "__comma", ["("]), "__comma", [smalltalk.send(self, "_asString", [])]), "__comma", [")"]);
967
- return $1;
968
- },
1149
+ fn: function (){
1150
+ var self=this;
1151
+ return smalltalk.withContext(function($ctx1) {
1152
+ $1=_st(_st(_st(smalltalk.Object.fn.prototype._printString.apply(_st(self), [])).__comma("(")).__comma(_st(self)._asString())).__comma(")");
1153
+ return $1;
1154
+ }, function($ctx1) {$ctx1.fill(self,"printString",{}, smalltalk.MethodContext)})},
969
1155
  args: [],
970
1156
  source: "printString\x0a\x09^super printString, '(', self asString, ')'",
971
1157
  messageSends: [",", "asString", "printString"],
@@ -978,11 +1164,10 @@ smalltalk.addMethod(
978
1164
  smalltalk.method({
979
1165
  selector: "receiver",
980
1166
  category: 'accessing',
981
- fn: function () {
982
- var self = this;
983
- return self.receiver;
984
- return self;
985
- },
1167
+ fn: function (){
1168
+ var self=this;
1169
+ return smalltalk.withContext(function($ctx1) {
1170
+ return self}, function($ctx1) {$ctx1.fill(self,"receiver",{}, smalltalk.MethodContext)})},
986
1171
  args: [],
987
1172
  source: "receiver\x0a\x09<return self.receiver>",
988
1173
  messageSends: [],
@@ -995,13 +1180,18 @@ smalltalk.addMethod(
995
1180
  smalltalk.method({
996
1181
  selector: "selector",
997
1182
  category: 'accessing',
998
- fn: function () {
999
- var self = this;
1000
- return smalltalk.convertSelector(self.selector);
1001
- return self;
1002
- },
1183
+ fn: function (){
1184
+ var self=this;
1185
+ return smalltalk.withContext(function($ctx1) {
1186
+ if(self.selector) {
1187
+ return smalltalk.convertSelector(self.selector);
1188
+ } else {
1189
+ return nil;
1190
+ }
1191
+ ;
1192
+ return self}, function($ctx1) {$ctx1.fill(self,"selector",{}, smalltalk.MethodContext)})},
1003
1193
  args: [],
1004
- source: "selector\x0a\x09<return smalltalk.convertSelector(self.selector)>",
1194
+ source: "selector\x0a\x09<\x0a \x09if(self.selector) {\x0a \x09return smalltalk.convertSelector(self.selector);\x0a } else {\x0a \x09return nil;\x0a }\x0a >",
1005
1195
  messageSends: [],
1006
1196
  referencedClasses: []
1007
1197
  }),
@@ -1012,17 +1202,121 @@ smalltalk.addMethod(
1012
1202
  smalltalk.method({
1013
1203
  selector: "temps",
1014
1204
  category: 'accessing',
1015
- fn: function () {
1016
- var self = this;
1017
- return self.temps;
1018
- return self;
1019
- },
1205
+ fn: function (){
1206
+ var self=this;
1207
+ return smalltalk.withContext(function($ctx1) {
1208
+ _st(self)._deprecatedAPI();
1209
+ $1=_st(self)._locals();
1210
+ return $1;
1211
+ }, function($ctx1) {$ctx1.fill(self,"temps",{}, smalltalk.MethodContext)})},
1020
1212
  args: [],
1021
- source: "temps\x0a\x09<return self.temps>",
1022
- messageSends: [],
1213
+ source: "temps\x0a\x09self deprecatedAPI.\x0a \x0a\x09^ self locals",
1214
+ messageSends: ["deprecatedAPI", "locals"],
1023
1215
  referencedClasses: []
1024
1216
  }),
1025
1217
  smalltalk.MethodContext);
1026
1218
 
1027
1219
 
1028
1220
 
1221
+ smalltalk.addClass('NativeFunction', smalltalk.Object, [], 'Kernel-Methods');
1222
+ smalltalk.NativeFunction.comment="NativeFunction is a wrapper around native functions, such as `WebSocket`.\x0aFor 'normal' functions (whose constructor is the JavaScript `Function` object), use `BlockClosure`.\x0a\x0aSee the class-side `instance creation` methods.\x0a\x0aCreated instances will most probably be instance of `JSObjectProxy`.\x0a\x0aUsage example:\x0a\x0a | ws |\x0a ws := NativeFunction constructor: 'WebSocket' value: 'ws://localhost'.\x0a ws at: 'onopen' put: [ ws send: 'hey there from Amber' ]"
1223
+
1224
+ smalltalk.addMethod(
1225
+ "_constructor_",
1226
+ smalltalk.method({
1227
+ selector: "constructor:",
1228
+ category: 'instance creation',
1229
+ fn: function (aString){
1230
+ var self=this;
1231
+ return smalltalk.withContext(function($ctx1) {
1232
+ var native=eval(aString);
1233
+ return new native();
1234
+ ;
1235
+ return self}, function($ctx1) {$ctx1.fill(self,"constructor:",{aString:aString}, smalltalk.NativeFunction.klass)})},
1236
+ args: ["aString"],
1237
+ source: "constructor: aString\x0a\x09<\x0a \x09var native=eval(aString); \x0a return new native();\x0a\x09>\x0a",
1238
+ messageSends: [],
1239
+ referencedClasses: []
1240
+ }),
1241
+ smalltalk.NativeFunction.klass);
1242
+
1243
+ smalltalk.addMethod(
1244
+ "_constructor_value_",
1245
+ smalltalk.method({
1246
+ selector: "constructor:value:",
1247
+ category: 'instance creation',
1248
+ fn: function (aString,anObject){
1249
+ var self=this;
1250
+ return smalltalk.withContext(function($ctx1) {
1251
+ var native=eval(aString);
1252
+ return new native(anObject);
1253
+ ;
1254
+ return self}, function($ctx1) {$ctx1.fill(self,"constructor:value:",{aString:aString,anObject:anObject}, smalltalk.NativeFunction.klass)})},
1255
+ args: ["aString", "anObject"],
1256
+ source: "constructor: aString value:anObject\x0a\x09<\x0a \x09var native=eval(aString); \x0a return new native(anObject);\x0a\x09>\x0a",
1257
+ messageSends: [],
1258
+ referencedClasses: []
1259
+ }),
1260
+ smalltalk.NativeFunction.klass);
1261
+
1262
+ smalltalk.addMethod(
1263
+ "_constructor_value_value_",
1264
+ smalltalk.method({
1265
+ selector: "constructor:value:value:",
1266
+ category: 'instance creation',
1267
+ fn: function (aString,anObject,anObject2){
1268
+ var self=this;
1269
+ return smalltalk.withContext(function($ctx1) {
1270
+ var native=eval(aString);
1271
+ return new native(anObject,anObject2);
1272
+ ;
1273
+ return self}, function($ctx1) {$ctx1.fill(self,"constructor:value:value:",{aString:aString,anObject:anObject,anObject2:anObject2}, smalltalk.NativeFunction.klass)})},
1274
+ args: ["aString", "anObject", "anObject2"],
1275
+ source: "constructor: aString value:anObject value: anObject2\x0a\x09<\x0a \x09var native=eval(aString); \x0a return new native(anObject,anObject2);\x0a\x09>\x0a",
1276
+ messageSends: [],
1277
+ referencedClasses: []
1278
+ }),
1279
+ smalltalk.NativeFunction.klass);
1280
+
1281
+ smalltalk.addMethod(
1282
+ "_constructor_value_value_value_",
1283
+ smalltalk.method({
1284
+ selector: "constructor:value:value:value:",
1285
+ category: 'instance creation',
1286
+ fn: function (aString,anObject,anObject2,anObject3){
1287
+ var self=this;
1288
+ return smalltalk.withContext(function($ctx1) {
1289
+ var native=eval(aString);
1290
+ return new native(anObject,anObject2, anObject3);
1291
+ ;
1292
+ return self}, function($ctx1) {$ctx1.fill(self,"constructor:value:value:value:",{aString:aString,anObject:anObject,anObject2:anObject2,anObject3:anObject3}, smalltalk.NativeFunction.klass)})},
1293
+ args: ["aString", "anObject", "anObject2", "anObject3"],
1294
+ source: "constructor: aString value:anObject value: anObject2 value:anObject3\x0a\x09<\x0a \x09var native=eval(aString); \x0a return new native(anObject,anObject2, anObject3);\x0a\x09>\x0a",
1295
+ messageSends: [],
1296
+ referencedClasses: []
1297
+ }),
1298
+ smalltalk.NativeFunction.klass);
1299
+
1300
+ smalltalk.addMethod(
1301
+ "_exists_",
1302
+ smalltalk.method({
1303
+ selector: "exists:",
1304
+ category: 'testing',
1305
+ fn: function (aString){
1306
+ var self=this;
1307
+ return smalltalk.withContext(function($ctx1) {
1308
+ if(aString in window) {
1309
+ return true
1310
+ } else {
1311
+ return false
1312
+ }
1313
+ ;
1314
+ return self}, function($ctx1) {$ctx1.fill(self,"exists:",{aString:aString}, smalltalk.NativeFunction.klass)})},
1315
+ args: ["aString"],
1316
+ source: "exists: aString\x0a\x09<\x0a \x09if(aString in window) {\x0a \x09return true\x0a } else {\x0a \x09return false\x0a }\x0a >",
1317
+ messageSends: [],
1318
+ referencedClasses: []
1319
+ }),
1320
+ smalltalk.NativeFunction.klass);
1321
+
1322
+