resin 0.3.1 → 0.4.0

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