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
@@ -1,353 +1,13 @@
1
- #!/bin/bash
2
- #
3
- # This is a "compiler" for Amber code. Run without arguments for help.
4
- #
5
- # Get Amber root directory from the location of this script so that
6
- # we can find the st and js directories etc.
1
+ #!/usr/bin/env node
7
2
 
8
- # Earlier we used this but it does not work on Mac
9
- # Amber=$(readlink -f `dirname ${0}`/..)
10
- TARGET=`dirname ${0}`/..
11
- pushd . >/dev/null
12
- cd $TARGET
13
- AMBER="`\pwd -P`"
14
- popd >/dev/null
3
+ var path = require('path');
4
+ var amberc = require('./amberc.js');
15
5
 
16
- function usage {
17
- cat <<ENDOFHELP
18
- Usage: $0 [-l lib1,lib2...] [-i file] [-m class] [-M file]
19
- [-o] [-O|-A] [-d] [-s suffix] [-S suffix] [file1 [file2 ...]] [Program]
20
-
21
- Will compile Amber files - either separately or into a runnable complete
22
- program. If no .st files are listed only a linking stage is performed.
23
- Files listed will be handled using these rules:
24
-
25
- *.js
26
- Files are linked (concatenated) in listed order.
27
- If not found we look in $AMBER/js
28
-
29
- *.st
30
- Files are compiled into .js files before concatenated.
31
- If not found we look in $AMBER/st.
32
-
33
- NOTE: Each file is currently considered to be a fileout of a single class
34
- category of the same name as the file!
35
-
36
- If no Program is specified each given .st file will be compiled into
37
- a .js file. Otherwise a <Program>.js file is linked together based on
38
- the options:
39
-
40
- -l library1,library2
41
- Additionally add listed libraries (no spaces or .js) in listed order.
42
-
43
- -i file
44
- Add library initializer <file> instead of default $AMBER/js/init.js
45
-
46
- -m class
47
- Add at end a call to #main in class <class>.
48
-
49
- -M file
50
- Add at end javascript file <file> acting as main.
51
-
52
- -o
53
- Optimize each js file using the Google closure compiler.
54
- Using Closure compiler found at ~/compiler.jar
55
-
56
- -O
57
- Optimize final <Program>.js using the Google closure compiler.
58
- Using Closure compiler found at ~/compiler.jar
59
-
60
- -A Same as -O but use --compilation_level ADVANCED_OPTIMIZATIONS
61
-
62
- -d
63
- Additionally export code for deploy - stripped from source etc.
64
- Uses suffix ".deploy.js" in addition to any explicit given suffic using -s.
65
-
66
- -s suffix
67
- Add <suffix> to compiled js files so that File.st is compiled into
68
- File.<suffix>.js.
69
-
70
- -S suffix
71
- Use <suffix> for all libraries accessed using -L or -l. This makes it possible
72
- to have multiple flavors of Amber and libraries in the same place.
73
-
74
-
75
- Example invocations:
76
-
77
- Just compile Kernel-Objects.st to Kernel-Objects.js:
78
-
79
- amberc Kernel-Objects.st
80
-
81
- Compile Hello.st to Hello.js and create complete program called
82
- Program.js and adding a call to class method #main in class Hello:
83
-
84
- amberc -m Hello Hello.st Program
85
-
86
- Compile two .st files into corresponding .js files,
87
- and link with specific myboot.js, myKernel.js, myinit.js
88
- and main.js and create complete program called Program.js:
89
-
90
- amberc -M main.js myinit.js myboot.js myKernel.js Cat1.st Cat2.st Program
91
-
92
- ENDOFHELP
93
- exit 1;
94
- }
95
-
96
- # Check we at least got one argument
97
- if [ -z $1 ] ; then
98
- usage
99
- fi
100
-
101
- # Define our predefined library combinations
102
- KERNEL="boot Kernel-Objects Kernel-Classes Kernel-Methods Kernel-Collections Kernel-Exceptions Kernel-Transcript Kernel-Announcements"
103
- COMPILER="$KERNEL parser Compiler Compiler-Exceptions"
104
-
105
- # Predefined initializer
106
- INITIALIZER="$AMBER/js/init.js"
107
-
108
- # Default values
109
- ENV=
110
- INIT=$INITIALIZER
111
- MAIN=
112
- MAINFILE=
113
- BASE=$KERNEL
114
- LOAD=
115
- CLOSUREOPTS=
116
- # Ok, bad coding practice but hey, who would use such a suffix?
117
- SUFFIX=no-silly-suffix
118
- SUFFIXUSED=
119
- DEPLOY=false
120
- NODECOMPILE=nodecompile
121
-
122
- # Read options and shift them away
123
- while getopts "l:i:m:M:oOAds:S:h?" o; do
124
- case "$o" in
125
- l) LOAD=$OPTARG;;
126
- i) INIT=$OPTARG;;
127
- m) MAIN=$OPTARG;;
128
- M) MAINFILE=$OPTARG;;
129
- o) CLOSURE=true
130
- CLOSUREPARTS=true;;
131
- O) CLOSURE=true
132
- CLOSUREFULL=true;;
133
- A) CLOSURE=true
134
- CLOSUREOPTS="$CLOSUREOPTS --compilation_level ADVANCED_OPTIMIZATIONS"
135
- CLOSUREFULL=true;;
136
- d) DEPLOY=true;;
137
- s) SUFFIX=$OPTARG
138
- SUFFIXUSED=$SUFFIX;;
139
- S) LOADSUFFIX=$OPTARG
140
- SUFFIXUSED=$SUFFIX;;
141
- h) usage;;
142
- [?]) usage;;
143
- esac
144
- done
145
- shift $(($OPTIND - 1))
146
-
147
- # Check for Closure compiler and Java
148
- if [ ! -z $CLOSURE ]; then
149
- java > /dev/null
150
- if [ $? -eq 0 ]; then
151
- if [ ! -f ~/compiler.jar ]; then
152
- echo "Can not find Closure compiler at ~/compiler.jar"
153
- exit 1
154
- fi
155
- else
156
- echo "java is not installed and is needed for -O, -A or -o (Closure compiler)."
157
- exit 1
158
- fi
159
- fi
160
-
161
- # Function for looking up listed js files
162
- function resolvejs {
163
- FNAME="$1$LOADSUFFIX.js"
164
- if [ -f $FNAME ]; then
165
- RESOLVED="$FNAME"
166
- else
167
- if [ -f $AMBER/js/$FNAME ]; then
168
- RESOLVED="$AMBER/js/$FNAME"
169
- else
170
- echo "Javascript file not found: $FNAME"
171
- exit 1
172
- fi
173
- fi
174
- }
175
-
176
- # Resolve listed libraries in $BASE deparated by spaces
177
- for FILE in $BASE
178
- do
179
- resolvejs $FILE
180
- TOBASE="$TOBASE $RESOLVED"
181
- done
182
-
183
- # Resolve listed libraries in $LOAD separated by ,
184
- LOAD=${LOAD//,/\ }
185
- for FILE in $LOAD
186
- do
187
- resolvejs $FILE
188
- TOLOAD="$TOLOAD $RESOLVED"
189
- done
190
-
191
- # Resolve COMPILER
192
- for FILE in $COMPILER
193
- do
194
- resolvejs $FILE
195
- TOCOMPILER="$TOCOMPILER $RESOLVED"
196
- done
197
-
198
- # Add supplied libraries we have not already loaded (they are already resolved)
199
- #for FILE in $EXTRA
200
- #do
201
- # resolvejs $FILE
202
- # TOEXTRA="$TOEXTRA $RESOLVED"
203
- #done
204
-
205
- TOCOMPILER="$TOCOMPILER$TOLOAD"
206
-
207
- # Resolve init and nodecompile
208
- THEREST="init $AMBER/bin/$NODECOMPILE"
209
- for FILE in $THEREST
210
- do
211
- resolvejs $FILE
212
- TOCOMPILER="$TOCOMPILER $RESOLVED"
213
- done
214
-
215
- # Add supplied libraries
216
- LIBS="$TOBASE $TOLOAD"
217
-
218
- # Get a unique tempdir and make it get auto removed on exit
219
- TMPDIR=`mktemp -d amberc.XXXXXX 2>>/dev/null` ||\
220
- TMPDIR=/tmp/amberc.$$.`date +%s` && mkdir -p $TMPDIR
221
- trap "rm -rf $TMPDIR" EXIT
222
-
223
-
224
- # --------------------------------------------------
225
- # Collect libraries and Smalltalk files looking
226
- # both locally and in $AMBER/js and $AMBER/st
227
- # --------------------------------------------------
228
- PROGRAM=
229
- until [ "$*" = "" ]
230
- do
231
- case $1 in
232
- *.st)
233
- CATEGORY=`basename $1 .st`
234
- if [ -f "$1" ]; then
235
- COMPILE="$COMPILE $1 $CATEGORY"
236
- COMPILED="$COMPILED $CATEGORY$SUFFIXUSED.js"
237
- else
238
- if [ -f $AMBER/st/$1 ]; then
239
- COMPILE="$COMPILE $AMBER/st/$1 $CATEGORY"
240
- COMPILED="$COMPILED $CATEGORY$SUFFIXUSED.js"
241
- else
242
- echo "Amber file not found: $1"
243
- exit 1
244
- fi
245
- fi
246
- ;;
247
-
248
- *.js)
249
- resolvejs $1
250
- LIBS="$LIBS $RESOLVED"
251
- ;;
252
- *)
253
- # Will end up being the last non js/st argument
254
- PROGRAM=$1
255
- ;;
256
- esac
257
- shift
258
- done
259
-
260
- # --------------------------------------------------
261
- # Actual compilation phase of collected .st files
262
- # --------------------------------------------------
263
-
264
- # Create compiler dynamically
265
- cat $TOCOMPILER > $TMPDIR/compiler.js
266
-
267
- # Compile all collected .st files to .js
268
- echo "Loading libraries$TOCOMPILER and compiling ..."
269
- node $TMPDIR/compiler.js $DEPLOY $SUFFIX $COMPILE
270
-
271
- # Verify all .js files corresponding to .st files were created, otherwise exit
272
- IFS=" "
273
- for FILE in $COMPILED
274
- do
275
- if [ ! -f "$FILE" ]; then
276
- echo "Failed compilation of $FILE, exiting."
277
- exit 1
278
- fi
279
- done
280
-
281
- if [ ! -z $CLOSUREPARTS ]; then
282
- echo "Compiling all js files using Google closure compiler."
283
-
284
- ALLJSFILES="$COMPILED $LIBS"
285
- for FILE in $ALLJSFILES
286
- do
287
- mv $FILE $FILE.original
288
- java -jar ~/compiler.jar $CLOSUREOPTS --js $FILE.original --js_output_file $FILE
289
- rm $FILE.original
290
- done
291
- fi
292
-
293
-
294
- if [ -z $PROGRAM ]; then
295
- echo "Done."
296
- exit 0
297
- fi
298
-
299
- # --------------------------------------------------
300
- # Now we start composing resulting javascript file.
301
- # --------------------------------------------------
302
-
303
- # Add collected libraries to libs.js file.
304
- if [ ! -z "$LIBS" ]; then
305
- echo "Adding libraries $LIBS ..."
306
- cat $LIBS > $TMPDIR/libs.js
307
- LIBS=$TMPDIR/libs.js
308
- fi
309
-
310
- echo "Adding Amber code$COMPILED ..."
311
-
312
- # Check for init file
313
- if [ ! -z "$INIT" ]; then
314
- if [ -f "$INIT" ]; then
315
- echo "Adding initializer $INIT ..."
316
- else
317
- echo "Can not find init file $INIT, exiting."
318
- exit 1
319
- fi
320
- fi
321
-
322
- # Check for adding main
323
- if [ ! -z "$MAIN" ]; then
324
- echo "Adding call to $MAIN class >> main ..."
325
- echo "smalltalk.$MAIN._main()" > $TMPDIR/main.js
326
- MAIN=$TMPDIR/main.js
327
- fi
328
-
329
- # Check for adding main file
330
- if [ ! -z "$MAINFILE" ]; then
331
- if [ -f "$MAINFILE" ]; then
332
- echo "Adding main as $MAINFILE ..."
333
- else
334
- echo "Can not find main file $MAINFILE, exiting."
335
- exit 1
336
- fi
337
- MAIN=$MAINFILE
338
- fi
339
-
340
- # And finally concatenate Program.js
341
- echo "Writing $PROGRAM.js ..."
342
- cat $LIBS $COMPILED $INIT $MAIN > $PROGRAM.js
343
- echo "Done."
344
-
345
-
346
- if [ ! -z $CLOSUREFULL ]; then
347
- echo "Compiling $PROGRAM.js file using Google closure compiler."
348
- mv $PROGRAM.js $PROGRAM.js.original
349
- java -jar ~/compiler.jar $CLOSUREOPTS --js $PROGRAM.js.original --js_output_file $PROGRAM.js
350
- rm $PROGRAM.js.original
351
- echo "Done."
352
- fi
6
+ // Get Amber root directory from the location of this script so that
7
+ // we can find the st and js directories etc.
8
+ var amber_dir = path.normalize(path.join(path.dirname(process.argv[1]), '..'));
9
+ // Get default location of compiler.jar
10
+ var closure_jar = path.resolve(path.join(process.env['HOME'], 'compiler.jar'));
353
11
 
12
+ var compiler = new amberc.Compiler(amber_dir, closure_jar);
13
+ compiler.main();
@@ -8,9 +8,9 @@ selector: "main",
8
8
  fn: function (){
9
9
  var self=this;
10
10
  var result;
11
- result=smalltalk.send((0),"_tinyBenchmarks",[]);
12
- smalltalk.send(console,"_log_",[smalltalk.send("0 tinyBenchmarks => ","__comma",[result])]);
13
- return self}
11
+ return smalltalk.withContext(function($ctx1) {
12
+ _st(console)._log_(_st("0 tinyBenchmarks => ").__comma(result));
13
+ return self}, function($ctx1) {$ctx1.fill(self,"main",{result:result}, smalltalk.Benchfib.klass)})}
14
14
  }),
15
15
  smalltalk.Benchfib.klass);
16
16
 
@@ -21,15 +21,15 @@ smalltalk.method({
21
21
  selector: "benchFib",
22
22
  fn: function (){
23
23
  var self=this;
24
- var $2,$1;
25
- $2=smalltalk.send(self,"__lt",[(2)]);
24
+ return smalltalk.withContext(function($ctx1) {
25
+ $2=_st(self).__lt((2));
26
26
  if(smalltalk.assert($2)){
27
27
  $1=(1);
28
28
  } else {
29
- $1=smalltalk.send(smalltalk.send(smalltalk.send(smalltalk.send(self,"__minus",[(1)]),"_benchFib",[]),"__plus",[smalltalk.send(smalltalk.send(self,"__minus",[(2)]),"_benchFib",[])]),"__plus",[(1)]);
29
+ $1=_st(_st(_st(_st(self).__minus((1)))._benchFib()).__plus(_st(_st(self).__minus((2)))._benchFib())).__plus((1));
30
30
  };
31
31
  return $1;
32
- }
32
+ }, function($ctx1) {$ctx1.fill(self,"benchFib",{}, smalltalk.Number)})}
33
33
  }),
34
34
  smalltalk.Number);
35
35
 
@@ -39,42 +39,43 @@ smalltalk.method({
39
39
  selector: "benchmark",
40
40
  fn: function (){
41
41
  var self=this;
42
- var $1;
43
- var size;
44
- var flags;
45
- var prime;
46
- var k;
47
- var count;
42
+ var size,flags,prime,k,count;
43
+ return smalltalk.withContext(function($ctx1) {
48
44
  size=(8190);
49
- smalltalk.send((1),"_to_do_",[self,(function(iter){
50
- count=(0);
45
+ $1=self;
46
+ $2=(function(iter){
47
+ return smalltalk.withContext(function($ctx2) {
51
48
  count;
52
- flags=smalltalk.send((smalltalk.Array || Array),"_new",[]);
49
+ flags=_st((smalltalk.Array || Array))._new();
53
50
  flags;
54
- smalltalk.send(size,"_timesRepeat_",[(function(){
55
- return smalltalk.send(flags,"_add_",[true]);
56
- })]);
57
- return smalltalk.send((1),"_to_do_",[size,(function(i){
58
- $1=smalltalk.send(flags,"_at_",[i]);
59
- if(smalltalk.assert($1)){
60
- prime=smalltalk.send(i,"__plus",[(1)]);
51
+ _st(size)._timesRepeat_((function(){
52
+ return smalltalk.withContext(function($ctx3) {
53
+ }, function($ctx3) {$ctx3.fillBlock({},$ctx1)})}));
54
+ $3=size;
55
+ $4=(function(i){
56
+ return smalltalk.withContext(function($ctx3) {
57
+ if(smalltalk.assert($5)){
58
+ prime=_st(i).__plus((1));
61
59
  prime;
62
- k=smalltalk.send(i,"__plus",[prime]);
60
+ k=_st(i).__plus(prime);
63
61
  k;
64
- smalltalk.send((function(){
65
- return smalltalk.send(k,"__lt_eq",[size]);
66
- }),"_whileTrue_",[(function(){
67
- smalltalk.send(flags,"_at_put_",[k,false]);
68
- k=smalltalk.send(k,"__plus",[prime]);
62
+ _st((function(){
63
+ return smalltalk.withContext(function($ctx4) {
64
+ }, function($ctx4) {$ctx4.fillBlock({},$ctx1)})}))._whileTrue_((function(){
65
+ return smalltalk.withContext(function($ctx4) {
66
+ k=_st(k).__plus(prime);
69
67
  return k;
70
- })]);
71
- count=smalltalk.send(count,"__plus",[(1)]);
68
+ }, function($ctx4) {$ctx4.fillBlock({},$ctx1)})}));
69
+ count=_st(count).__plus((1));
72
70
  return count;
73
71
  };
74
- })]);
75
- })]);
76
- return count;
77
- }
72
+ }, function($ctx3) {$ctx3.fillBlock({i:i},$ctx1)})});
73
+ return _st((1))._to_do_($3,$4);
74
+ }, function($ctx2) {$ctx2.fillBlock({iter:iter},$ctx1)})});
75
+ _st((1))._to_do_($1,$2);
76
+ $6=count;
77
+ return $6;
78
+ }, function($ctx1) {$ctx1.fill(self,"benchmark",{size:size,flags:flags,prime:prime,k:k,count:count}, smalltalk.Number)})}
78
79
  }),
79
80
  smalltalk.Number);
80
81
 
@@ -84,12 +85,11 @@ smalltalk.method({
84
85
  selector: "jsbenchFib",
85
86
  fn: function (){
86
87
  var self=this;
87
- if (this < 2) {
88
+ return smalltalk.withContext(function($ctx1) {
88
89
  return 1;
89
90
  } else {
90
91
  return (this-1)._jsbenchFib() + (this-2)._jsbenchFib() + 1;};
91
- ;
92
- return self}
92
+ return self}, function($ctx1) {$ctx1.fill(self,"jsbenchFib",{}, smalltalk.Number)})}
93
93
  }),
94
94
  smalltalk.Number);
95
95
 
@@ -99,7 +99,7 @@ smalltalk.method({
99
99
  selector: "jsbenchmark",
100
100
  fn: function (){
101
101
  var self=this;
102
-
102
+ return smalltalk.withContext(function($ctx1) {
103
103
  var size = 8190;
104
104
  var count;
105
105
  for (var z=0;z<this;z++) {
@@ -121,8 +121,7 @@ for (var z=0;z<this;z++) {
121
121
  }
122
122
  }
123
123
  return count;
124
- ;
125
- return self}
124
+ return self}, function($ctx1) {$ctx1.fill(self,"jsbenchmark",{}, smalltalk.Number)})}
126
125
  }),
127
126
  smalltalk.Number);
128
127
 
@@ -132,38 +131,34 @@ smalltalk.method({
132
131
  selector: "jstinyBenchmarks",
133
132
  fn: function (){
134
133
  var self=this;
135
- var $1;
136
- var t1;
137
- var t2;
138
- var r;
139
- var n1;
140
- var n2;
134
+ var t1,t2,r,n1,n2;
135
+ return smalltalk.withContext(function($ctx1) {
141
136
  n1=(1);
142
- smalltalk.send((function(){
143
- t1=smalltalk.send((smalltalk.Date || Date),"_millisecondsToRun_",[(function(){
144
- return smalltalk.send(n1,"_jsbenchmark",[]);
145
- })]);
137
+ _st((function(){
138
+ return smalltalk.withContext(function($ctx2) {
139
+ return smalltalk.withContext(function($ctx3) {
140
+ }, function($ctx3) {$ctx3.fillBlock({},$ctx1)})}));
146
141
  t1;
147
- return smalltalk.send(t1,"__lt",[(1000)]);
148
- }),"_whileTrue_",[(function(){
149
- n1=smalltalk.send(n1,"__star",[(2)]);
142
+ return _st(t1).__lt((1000));
143
+ }, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}))._whileTrue_((function(){
144
+ return smalltalk.withContext(function($ctx2) {
150
145
  return n1;
151
- })]);
146
+ }, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}));
152
147
  n2=(28);
153
- smalltalk.send((function(){
154
- t2=smalltalk.send((smalltalk.Date || Date),"_millisecondsToRun_",[(function(){
155
- r=smalltalk.send(n2,"_jsbenchFib",[]);
148
+ _st((function(){
149
+ return smalltalk.withContext(function($ctx2) {
150
+ return smalltalk.withContext(function($ctx3) {
156
151
  return r;
157
- })]);
152
+ }, function($ctx3) {$ctx3.fillBlock({},$ctx1)})}));
158
153
  t2;
159
- return smalltalk.send(t2,"__lt",[(1000)]);
160
- }),"_whileTrue_",[(function(){
161
- n2=smalltalk.send(n2,"__plus",[(1)]);
154
+ return _st(t2).__lt((1000));
155
+ }, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}))._whileTrue_((function(){
156
+ return smalltalk.withContext(function($ctx2) {
162
157
  return n2;
163
- })]);
164
- $1=smalltalk.send(smalltalk.send(smalltalk.send(smalltalk.send(smalltalk.send(smalltalk.send(smalltalk.send(n1,"__star",[(500000)]),"__star",[(1000)]),"__slash",[t1]),"_printString",[]),"__comma",[" bytecodes/sec; "]),"__comma",[smalltalk.send(smalltalk.send(smalltalk.send(r,"__star",[(1000)]),"__slash",[t2]),"_printString",[])]),"__comma",[" sends/sec"]);
158
+ }, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}));
159
+ $1=_st(_st(_st(_st(_st(_st(_st(n1).__star((500000))).__star((1000))).__slash(t1))._printString()).__comma(" bytecodes/sec; ")).__comma(_st(_st(_st(r).__star((1000))).__slash(t2))._printString())).__comma(" sends/sec");
165
160
  return $1;
166
- }
161
+ }, function($ctx1) {$ctx1.fill(self,"jstinyBenchmarks",{t1:t1,t2:t2,r:r,n1:n1,n2:n2}, smalltalk.Number)})}
167
162
  }),
168
163
  smalltalk.Number);
169
164
 
@@ -173,38 +168,34 @@ smalltalk.method({
173
168
  selector: "tinyBenchmarks",
174
169
  fn: function (){
175
170
  var self=this;
176
- var $1;
177
- var t1;
178
- var t2;
179
- var r;
180
- var n1;
181
- var n2;
171
+ var t1,t2,r,n1,n2;
172
+ return smalltalk.withContext(function($ctx1) {
182
173
  n1=(1);
183
- smalltalk.send((function(){
184
- t1=smalltalk.send((smalltalk.Date || Date),"_millisecondsToRun_",[(function(){
185
- return smalltalk.send(n1,"_benchmark",[]);
186
- })]);
174
+ _st((function(){
175
+ return smalltalk.withContext(function($ctx2) {
176
+ return smalltalk.withContext(function($ctx3) {
177
+ }, function($ctx3) {$ctx3.fillBlock({},$ctx1)})}));
187
178
  t1;
188
- return smalltalk.send(t1,"__lt",[(1000)]);
189
- }),"_whileTrue_",[(function(){
190
- n1=smalltalk.send(n1,"__star",[(2)]);
179
+ return _st(t1).__lt((1000));
180
+ }, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}))._whileTrue_((function(){
181
+ return smalltalk.withContext(function($ctx2) {
191
182
  return n1;
192
- })]);
183
+ }, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}));
193
184
  n2=(16);
194
- smalltalk.send((function(){
195
- t2=smalltalk.send((smalltalk.Date || Date),"_millisecondsToRun_",[(function(){
196
- r=smalltalk.send(n2,"_benchFib",[]);
185
+ _st((function(){
186
+ return smalltalk.withContext(function($ctx2) {
187
+ return smalltalk.withContext(function($ctx3) {
197
188
  return r;
198
- })]);
189
+ }, function($ctx3) {$ctx3.fillBlock({},$ctx1)})}));
199
190
  t2;
200
- return smalltalk.send(t2,"__lt",[(1000)]);
201
- }),"_whileTrue_",[(function(){
202
- n2=smalltalk.send(n2,"__plus",[(1)]);
191
+ return _st(t2).__lt((1000));
192
+ }, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}))._whileTrue_((function(){
193
+ return smalltalk.withContext(function($ctx2) {
203
194
  return n2;
204
- })]);
205
- $1=smalltalk.send(smalltalk.send(smalltalk.send(smalltalk.send(smalltalk.send(smalltalk.send(smalltalk.send(n1,"__star",[(500000)]),"__star",[(1000)]),"__slash",[t1]),"_printString",[]),"__comma",[" bytecodes/sec; "]),"__comma",[smalltalk.send(smalltalk.send(smalltalk.send(r,"__star",[(1000)]),"__slash",[t2]),"_printString",[])]),"__comma",[" sends/sec"]);
195
+ }, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}));
196
+ $1=_st(_st(_st(_st(_st(_st(_st(n1).__star((500000))).__star((1000))).__slash(t1))._printString()).__comma(" bytecodes/sec; ")).__comma(_st(_st(_st(r).__star((1000))).__slash(t2))._printString())).__comma(" sends/sec");
206
197
  return $1;
207
- }
198
+ }, function($ctx1) {$ctx1.fill(self,"tinyBenchmarks",{t1:t1,t2:t2,r:r,n1:n1,n2:n2}, smalltalk.Number)})}
208
199
  }),
209
200
  smalltalk.Number);
210
201