Bläddra i källkod

- Use JS temp variables
- use a worker and fill function to lazily create contexts
- recompiled all js files

Nicolas Petton 11 år sedan
förälder
incheckning
7b9e44855c
49 ändrade filer med 6663 tillägg och 6328 borttagningar
  1. 90 99
      js/Benchfib.deploy.js
  2. 90 99
      js/Benchfib.js
  3. 118 114
      js/Canvas.deploy.js
  4. 118 114
      js/Canvas.js
  5. 187 149
      js/Compiler-AST.deploy.js
  6. 187 149
      js/Compiler-AST.js
  7. 121 107
      js/Compiler-Core.deploy.js
  8. 121 107
      js/Compiler-Core.js
  9. 17 11
      js/Compiler-Exceptions.deploy.js
  10. 17 11
      js/Compiler-Exceptions.js
  11. 179 171
      js/Compiler-IR.deploy.js
  12. 183 170
      js/Compiler-IR.js
  13. 241 219
      js/Compiler-Inlining.deploy.js
  14. 241 219
      js/Compiler-Inlining.js
  15. 42 43
      js/Compiler-Interpreter.deploy.js
  16. 42 43
      js/Compiler-Interpreter.js
  17. 175 177
      js/Compiler-Semantic.deploy.js
  18. 175 182
      js/Compiler-Semantic.js
  19. 182 192
      js/Compiler-Tests.deploy.js
  20. 182 192
      js/Compiler-Tests.js
  21. 13 13
      js/Examples.deploy.js
  22. 13 13
      js/Examples.js
  23. 273 243
      js/IDE.deploy.js
  24. 273 243
      js/IDE.js
  25. 362 316
      js/Importer-Exporter.deploy.js
  26. 362 316
      js/Importer-Exporter.js
  27. 33 24
      js/Kernel-Announcements.deploy.js
  28. 33 24
      js/Kernel-Announcements.js
  29. 218 208
      js/Kernel-Classes.deploy.js
  30. 218 208
      js/Kernel-Classes.js
  31. 237 209
      js/Kernel-Collections.deploy.js
  32. 237 209
      js/Kernel-Collections.js
  33. 50 45
      js/Kernel-Exceptions.deploy.js
  34. 50 45
      js/Kernel-Exceptions.js
  35. 106 120
      js/Kernel-Methods.deploy.js
  36. 106 120
      js/Kernel-Methods.js
  37. 124 124
      js/Kernel-Objects.deploy.js
  38. 124 124
      js/Kernel-Objects.js
  39. 286 294
      js/Kernel-Tests.deploy.js
  40. 286 294
      js/Kernel-Tests.js
  41. 15 14
      js/Kernel-Transcript.deploy.js
  42. 15 14
      js/Kernel-Transcript.js
  43. 104 110
      js/SUnit-Tests.deploy.js
  44. 104 110
      js/SUnit-Tests.js
  45. 127 128
      js/SUnit.deploy.js
  46. 127 128
      js/SUnit.js
  47. 34 50
      js/boot.js
  48. 25 8
      st/Compiler-IR.st
  49. 0 6
      st/Compiler-Semantic.st

+ 90 - 99
js/Benchfib.deploy.js

@@ -7,10 +7,10 @@ smalltalk.method({
 selector: "main",
 fn: function (){
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
$ctx1.result=nil;
-$ctx1.locals.result=_st((0))._tinyBenchmarks();
-_st(console)._log_(_st("0 tinyBenchmarks => ").__comma($ctx1.locals.result));
-return self}, self, "main", [], smalltalk.Benchfib.klass)}
+var result;
+return smalltalk.withContext(function($ctx1) { 
result=_st((0))._tinyBenchmarks();
+_st(console)._log_(_st("0 tinyBenchmarks => ").__comma(result));
+return self}, function($ctx1) {$ctx1.fill(self,"main", [], smalltalk.Benchfib.klass)})}
 }),
 smalltalk.Benchfib.klass);
 
@@ -29,7 +29,7 @@ $1=(1);
 $1=_st(_st(_st(_st(self).__minus((1)))._benchFib()).__plus(_st(_st(self).__minus((2)))._benchFib())).__plus((1));
 };
 return $1;
-}, self, "benchFib", [], smalltalk.Number)}
+}, function($ctx1) {$ctx1.fill(self,"benchFib", [], smalltalk.Number)})}
 }),
 smalltalk.Number);
 
@@ -39,42 +39,43 @@ smalltalk.method({
 selector: "benchmark",
 fn: function (){
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $1;
-$ctx1.size=nil;
-$ctx1.flags=nil;
-$ctx1.prime=nil;
-$ctx1.k=nil;
-$ctx1.count=nil;
-$ctx1.locals.size=(8190);
-_st((1))._to_do_(self,(function(iter){
-return smalltalk.withContext(function($ctx2) { 
$ctx1.locals.count=(0);
-$ctx1.locals.count;
-$ctx1.locals.flags=_st((smalltalk.Array || Array))._new();
-$ctx1.locals.flags;
-_st($ctx1.locals.size)._timesRepeat_((function(){
-return smalltalk.withContext(function($ctx3) { 
return _st($ctx1.locals.flags)._add_(true);
-})}));
-return _st((1))._to_do_($ctx1.locals.size,(function(i){
-return smalltalk.withContext(function($ctx3) { 
$1=_st($ctx1.locals.flags)._at_(i);
-if(smalltalk.assert($1)){
-$ctx1.locals.prime=_st(i).__plus((1));
-$ctx1.locals.prime;
-$ctx1.locals.k=_st(i).__plus($ctx1.locals.prime);
-$ctx1.locals.k;
+var size,flags,prime,k,count;
+return smalltalk.withContext(function($ctx1) { 
var $1,$3,$5,$4,$2,$6;
+size=(8190);
+$1=self;
+$2=(function(iter){
+return smalltalk.withContext(function($ctx2) {
count=(0);
+count;
+flags=_st((smalltalk.Array || Array))._new();
+flags;
+_st(size)._timesRepeat_((function(){
+return smalltalk.withContext(function($ctx3) {
return _st(flags)._add_(true);
+}, function($ctx3) {$ctx3.fill(null, null, {})})}));
+$3=size;
+$4=(function(i){
+return smalltalk.withContext(function($ctx3) {
$5=_st(flags)._at_(i);
+if(smalltalk.assert($5)){
+prime=_st(i).__plus((1));
+prime;
+k=_st(i).__plus(prime);
+k;
 _st((function(){
-return smalltalk.withContext(function($ctx4) { 
return _st($ctx1.locals.k).__lt_eq($ctx1.locals.size);
-})}))._whileTrue_((function(){
-return smalltalk.withContext(function($ctx4) { 
_st($ctx1.locals.flags)._at_put_($ctx1.locals.k,false);
-$ctx1.locals.k=_st($ctx1.locals.k).__plus($ctx1.locals.prime);
-return $ctx1.locals.k;
-})}));
-$ctx1.locals.count=_st($ctx1.locals.count).__plus((1));
-return $ctx1.locals.count;
+return smalltalk.withContext(function($ctx4) {
return _st(k).__lt_eq(size);
+}, function($ctx4) {$ctx4.fill(null, null, {})})}))._whileTrue_((function(){
+return smalltalk.withContext(function($ctx4) {
_st(flags)._at_put_(k,false);
+k=_st(k).__plus(prime);
+return k;
+}, function($ctx4) {$ctx4.fill(null, null, {})})}));
+count=_st(count).__plus((1));
+return count;
 };
-})}));
-})}));
-return $ctx1.locals.count;
-}, self, "benchmark", [], smalltalk.Number)}
+}, function($ctx3) {$ctx3.fill(null, null, {})})});
+return _st((1))._to_do_($3,$4);
+}, function($ctx2) {$ctx2.fill(null, null, {})})});
+_st((1))._to_do_($1,$2);
+$6=count;
+return $6;
+}, function($ctx1) {$ctx1.fill(self,"benchmark", [], smalltalk.Number)})}
 }),
 smalltalk.Number);
 
@@ -88,8 +89,7 @@ return smalltalk.withContext(function($ctx1) { 
if (this < 2) {
 return 1;
 } else {
 return (this-1)._jsbenchFib() + (this-2)._jsbenchFib() + 1;};
-;
-return self}, self, "jsbenchFib", [], smalltalk.Number)}
+return self}, function($ctx1) {$ctx1.fill(self,"jsbenchFib", [], smalltalk.Number)})}
 }),
 smalltalk.Number);
 
@@ -121,8 +121,7 @@ for (var z=0;z<this;z++) {
   }
 }
 return count;
-;
-return self}, self, "jsbenchmark", [], smalltalk.Number)}
+return self}, function($ctx1) {$ctx1.fill(self,"jsbenchmark", [], smalltalk.Number)})}
 }),
 smalltalk.Number);
 
@@ -132,38 +131,34 @@ smalltalk.method({
 selector: "jstinyBenchmarks",
 fn: function (){
 var self=this;
+var t1,t2,r,n1,n2;
 return smalltalk.withContext(function($ctx1) { 
var $1;
-$ctx1.t1=nil;
-$ctx1.t2=nil;
-$ctx1.r=nil;
-$ctx1.n1=nil;
-$ctx1.n2=nil;
-$ctx1.locals.n1=(1);
+n1=(1);
 _st((function(){
-return smalltalk.withContext(function($ctx2) { 
$ctx1.locals.t1=_st((smalltalk.Date || Date))._millisecondsToRun_((function(){
-return smalltalk.withContext(function($ctx3) { 
return _st($ctx1.locals.n1)._jsbenchmark();
-})}));
-$ctx1.locals.t1;
-return _st($ctx1.locals.t1).__lt((1000));
-})}))._whileTrue_((function(){
-return smalltalk.withContext(function($ctx2) { 
$ctx1.locals.n1=_st($ctx1.locals.n1).__star((2));
-return $ctx1.locals.n1;
-})}));
-$ctx1.locals.n2=(28);
+return smalltalk.withContext(function($ctx2) {
t1=_st((smalltalk.Date || Date))._millisecondsToRun_((function(){
+return smalltalk.withContext(function($ctx3) {
return _st(n1)._jsbenchmark();
+}, function($ctx3) {$ctx3.fill(null, null, {})})}));
+t1;
+return _st(t1).__lt((1000));
+}, function($ctx2) {$ctx2.fill(null, null, {})})}))._whileTrue_((function(){
+return smalltalk.withContext(function($ctx2) {
n1=_st(n1).__star((2));
+return n1;
+}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+n2=(28);
 _st((function(){
-return smalltalk.withContext(function($ctx2) { 
$ctx1.locals.t2=_st((smalltalk.Date || Date))._millisecondsToRun_((function(){
-return smalltalk.withContext(function($ctx3) { 
$ctx1.locals.r=_st($ctx1.locals.n2)._jsbenchFib();
-return $ctx1.locals.r;
-})}));
-$ctx1.locals.t2;
-return _st($ctx1.locals.t2).__lt((1000));
-})}))._whileTrue_((function(){
-return smalltalk.withContext(function($ctx2) { 
$ctx1.locals.n2=_st($ctx1.locals.n2).__plus((1));
-return $ctx1.locals.n2;
-})}));
-$1=_st(_st(_st(_st(_st(_st(_st($ctx1.locals.n1).__star((500000))).__star((1000))).__slash($ctx1.locals.t1))._printString()).__comma(" bytecodes/sec; ")).__comma(_st(_st(_st($ctx1.locals.r).__star((1000))).__slash($ctx1.locals.t2))._printString())).__comma(" sends/sec");
+return smalltalk.withContext(function($ctx2) {
t2=_st((smalltalk.Date || Date))._millisecondsToRun_((function(){
+return smalltalk.withContext(function($ctx3) {
r=_st(n2)._jsbenchFib();
+return r;
+}, function($ctx3) {$ctx3.fill(null, null, {})})}));
+t2;
+return _st(t2).__lt((1000));
+}, function($ctx2) {$ctx2.fill(null, null, {})})}))._whileTrue_((function(){
+return smalltalk.withContext(function($ctx2) {
n2=_st(n2).__plus((1));
+return n2;
+}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+$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");
 return $1;
-}, self, "jstinyBenchmarks", [], smalltalk.Number)}
+}, function($ctx1) {$ctx1.fill(self,"jstinyBenchmarks", [], smalltalk.Number)})}
 }),
 smalltalk.Number);
 
@@ -173,38 +168,34 @@ smalltalk.method({
 selector: "tinyBenchmarks",
 fn: function (){
 var self=this;
+var t1,t2,r,n1,n2;
 return smalltalk.withContext(function($ctx1) { 
var $1;
-$ctx1.t1=nil;
-$ctx1.t2=nil;
-$ctx1.r=nil;
-$ctx1.n1=nil;
-$ctx1.n2=nil;
-$ctx1.locals.n1=(1);
+n1=(1);
 _st((function(){
-return smalltalk.withContext(function($ctx2) { 
$ctx1.locals.t1=_st((smalltalk.Date || Date))._millisecondsToRun_((function(){
-return smalltalk.withContext(function($ctx3) { 
return _st($ctx1.locals.n1)._benchmark();
-})}));
-$ctx1.locals.t1;
-return _st($ctx1.locals.t1).__lt((1000));
-})}))._whileTrue_((function(){
-return smalltalk.withContext(function($ctx2) { 
$ctx1.locals.n1=_st($ctx1.locals.n1).__star((2));
-return $ctx1.locals.n1;
-})}));
-$ctx1.locals.n2=(16);
+return smalltalk.withContext(function($ctx2) {
t1=_st((smalltalk.Date || Date))._millisecondsToRun_((function(){
+return smalltalk.withContext(function($ctx3) {
return _st(n1)._benchmark();
+}, function($ctx3) {$ctx3.fill(null, null, {})})}));
+t1;
+return _st(t1).__lt((1000));
+}, function($ctx2) {$ctx2.fill(null, null, {})})}))._whileTrue_((function(){
+return smalltalk.withContext(function($ctx2) {
n1=_st(n1).__star((2));
+return n1;
+}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+n2=(16);
 _st((function(){
-return smalltalk.withContext(function($ctx2) { 
$ctx1.locals.t2=_st((smalltalk.Date || Date))._millisecondsToRun_((function(){
-return smalltalk.withContext(function($ctx3) { 
$ctx1.locals.r=_st($ctx1.locals.n2)._benchFib();
-return $ctx1.locals.r;
-})}));
-$ctx1.locals.t2;
-return _st($ctx1.locals.t2).__lt((1000));
-})}))._whileTrue_((function(){
-return smalltalk.withContext(function($ctx2) { 
$ctx1.locals.n2=_st($ctx1.locals.n2).__plus((1));
-return $ctx1.locals.n2;
-})}));
-$1=_st(_st(_st(_st(_st(_st(_st($ctx1.locals.n1).__star((500000))).__star((1000))).__slash($ctx1.locals.t1))._printString()).__comma(" bytecodes/sec; ")).__comma(_st(_st(_st($ctx1.locals.r).__star((1000))).__slash($ctx1.locals.t2))._printString())).__comma(" sends/sec");
+return smalltalk.withContext(function($ctx2) {
t2=_st((smalltalk.Date || Date))._millisecondsToRun_((function(){
+return smalltalk.withContext(function($ctx3) {
r=_st(n2)._benchFib();
+return r;
+}, function($ctx3) {$ctx3.fill(null, null, {})})}));
+t2;
+return _st(t2).__lt((1000));
+}, function($ctx2) {$ctx2.fill(null, null, {})})}))._whileTrue_((function(){
+return smalltalk.withContext(function($ctx2) {
n2=_st(n2).__plus((1));
+return n2;
+}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+$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");
 return $1;
-}, self, "tinyBenchmarks", [], smalltalk.Number)}
+}, function($ctx1) {$ctx1.fill(self,"tinyBenchmarks", [], smalltalk.Number)})}
 }),
 smalltalk.Number);
 

+ 90 - 99
js/Benchfib.js

@@ -8,10 +8,10 @@ selector: "main",
 category: 'not yet classified',
 fn: function (){
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
$ctx1.result=nil;
-$ctx1.locals.result=_st((0))._tinyBenchmarks();
-_st(console)._log_(_st("0 tinyBenchmarks => ").__comma($ctx1.locals.result));
-return self}, self, "main", [], smalltalk.Benchfib.klass)},
+var result;
+return smalltalk.withContext(function($ctx1) { 
result=_st((0))._tinyBenchmarks();
+_st(console)._log_(_st("0 tinyBenchmarks => ").__comma(result));
+return self}, function($ctx1) {$ctx1.fill(self,"main", [], smalltalk.Benchfib.klass)})},
 args: [],
 source: "main\x0a\x0a\x09| result |\x0a\x09result := 0 tinyBenchmarks.\x0a\x09console log: '0 tinyBenchmarks => ' , result",
 messageSends: ["tinyBenchmarks", "log:", ","],
@@ -35,7 +35,7 @@ $1=(1);
 $1=_st(_st(_st(_st(self).__minus((1)))._benchFib()).__plus(_st(_st(self).__minus((2)))._benchFib())).__plus((1));
 };
 return $1;
-}, self, "benchFib", [], smalltalk.Number)},
+}, function($ctx1) {$ctx1.fill(self,"benchFib", [], smalltalk.Number)})},
 args: [],
 source: "benchFib \x0a\x09\x22Handy send-heavy benchmark\x22\x0a\x09\x22(result // seconds to run) = approx calls per second\x22\x0a\x09\x22 | r t |\x0a\x09  t := Time millisecondsToRun: [r := 26 benchFib].\x0a\x09  (r * 1000) // t\x22\x0a\x09\x22138000 on a Mac 8100/100\x22\x0a\x09^ self < 2 \x0a\x09\x09ifTrue: [1] \x0a\x09\x09ifFalse: [(self-1) benchFib + (self-2) benchFib + 1]",
 messageSends: ["ifTrue:ifFalse:", "+", "benchFib", "-", "<"],
@@ -50,42 +50,43 @@ selector: "benchmark",
 category: '*Benchfib',
 fn: function (){
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $1;
-$ctx1.size=nil;
-$ctx1.flags=nil;
-$ctx1.prime=nil;
-$ctx1.k=nil;
-$ctx1.count=nil;
-$ctx1.locals.size=(8190);
-_st((1))._to_do_(self,(function(iter){
-return smalltalk.withContext(function($ctx2) { 
$ctx1.locals.count=(0);
-$ctx1.locals.count;
-$ctx1.locals.flags=_st((smalltalk.Array || Array))._new();
-$ctx1.locals.flags;
-_st($ctx1.locals.size)._timesRepeat_((function(){
-return smalltalk.withContext(function($ctx3) { 
return _st($ctx1.locals.flags)._add_(true);
-})}));
-return _st((1))._to_do_($ctx1.locals.size,(function(i){
-return smalltalk.withContext(function($ctx3) { 
$1=_st($ctx1.locals.flags)._at_(i);
-if(smalltalk.assert($1)){
-$ctx1.locals.prime=_st(i).__plus((1));
-$ctx1.locals.prime;
-$ctx1.locals.k=_st(i).__plus($ctx1.locals.prime);
-$ctx1.locals.k;
+var size,flags,prime,k,count;
+return smalltalk.withContext(function($ctx1) { 
var $1,$3,$5,$4,$2,$6;
+size=(8190);
+$1=self;
+$2=(function(iter){
+return smalltalk.withContext(function($ctx2) {
count=(0);
+count;
+flags=_st((smalltalk.Array || Array))._new();
+flags;
+_st(size)._timesRepeat_((function(){
+return smalltalk.withContext(function($ctx3) {
return _st(flags)._add_(true);
+}, function($ctx3) {$ctx3.fill(null, null, {})})}));
+$3=size;
+$4=(function(i){
+return smalltalk.withContext(function($ctx3) {
$5=_st(flags)._at_(i);
+if(smalltalk.assert($5)){
+prime=_st(i).__plus((1));
+prime;
+k=_st(i).__plus(prime);
+k;
 _st((function(){
-return smalltalk.withContext(function($ctx4) { 
return _st($ctx1.locals.k).__lt_eq($ctx1.locals.size);
-})}))._whileTrue_((function(){
-return smalltalk.withContext(function($ctx4) { 
_st($ctx1.locals.flags)._at_put_($ctx1.locals.k,false);
-$ctx1.locals.k=_st($ctx1.locals.k).__plus($ctx1.locals.prime);
-return $ctx1.locals.k;
-})}));
-$ctx1.locals.count=_st($ctx1.locals.count).__plus((1));
-return $ctx1.locals.count;
+return smalltalk.withContext(function($ctx4) {
return _st(k).__lt_eq(size);
+}, function($ctx4) {$ctx4.fill(null, null, {})})}))._whileTrue_((function(){
+return smalltalk.withContext(function($ctx4) {
_st(flags)._at_put_(k,false);
+k=_st(k).__plus(prime);
+return k;
+}, function($ctx4) {$ctx4.fill(null, null, {})})}));
+count=_st(count).__plus((1));
+return count;
 };
-})}));
-})}));
-return $ctx1.locals.count;
-}, self, "benchmark", [], smalltalk.Number)},
+}, function($ctx3) {$ctx3.fill(null, null, {})})});
+return _st((1))._to_do_($3,$4);
+}, function($ctx2) {$ctx2.fill(null, null, {})})});
+_st((1))._to_do_($1,$2);
+$6=count;
+return $6;
+}, function($ctx1) {$ctx1.fill(self,"benchmark", [], smalltalk.Number)})},
 args: [],
 source: "benchmark \x0a\x09\x22Handy bytecode-heavy benchmark\x22\x0a\x09\x22(500000 // time to run) = approx bytecodes per second\x22\x0a\x09\x225000000 // (Time millisecondsToRun: [10 benchmark]) * 1000\x22\x0a\x09\x223059000 on a Mac 8100/100\x22\x0a    | size flags prime k count |\x0a    size := 8190.\x0a    1 to: self do:\x0a        [:iter |\x0a        count := 0.\x0a        flags := Array new.\x0a        size timesRepeat: [ flags add: true].\x0a        1 to: size do:\x0a            [:i | (flags at: i) ifTrue:\x0a                [prime := i+1.\x0a                k := i + prime.\x0a                [k <= size] whileTrue:\x0a                    [flags at: k put: false.\x0a                    k := k + prime].\x0a                count := count + 1]]].\x0a    ^ count",
 messageSends: ["to:do:", "new", "timesRepeat:", "add:", "ifTrue:", "+", "whileTrue:", "at:put:", "<=", "at:"],
@@ -104,8 +105,7 @@ return smalltalk.withContext(function($ctx1) { 
if (this < 2) {
 return 1;
 } else {
 return (this-1)._jsbenchFib() + (this-2)._jsbenchFib() + 1;};
-;
-return self}, self, "jsbenchFib", [], smalltalk.Number)},
+return self}, function($ctx1) {$ctx1.fill(self,"jsbenchFib", [], smalltalk.Number)})},
 args: [],
 source: "jsbenchFib\x0a \x0a\x09<if (this < 2) {\x0areturn 1;\x0a} else {\x0areturn (this-1)._jsbenchFib() + (this-2)._jsbenchFib() + 1;}>",
 messageSends: [],
@@ -142,8 +142,7 @@ for (var z=0;z<this;z++) {
   }
 }
 return count;
-;
-return self}, self, "jsbenchmark", [], smalltalk.Number)},
+return self}, function($ctx1) {$ctx1.fill(self,"jsbenchmark", [], smalltalk.Number)})},
 args: [],
 source: "jsbenchmark\x0a\x0a<\x0avar size = 8190;\x0avar count;\x0afor (var z=0;z<this;z++) {\x0a  count = 0;\x0a  var flags = new Array();\x0a  for (var p=0; p<size; p++) {\x0a    flags[p] = true;\x0a  }\x0a  for (var i=1;i<=size;i++) {\x0a    if (flags[i-1]) {\x0a      var prime = i+1;\x0a      var k = i + prime;\x0a      while (k <= size) {\x0a        flags[k-1] = false;\x0a        k = k + prime;\x0a      }\x0a      count = count + 1;\x0a    }\x0a  }\x0a}\x0areturn count>",
 messageSends: [],
@@ -158,38 +157,34 @@ selector: "jstinyBenchmarks",
 category: '*Benchfib',
 fn: function (){
 var self=this;
+var t1,t2,r,n1,n2;
 return smalltalk.withContext(function($ctx1) { 
var $1;
-$ctx1.t1=nil;
-$ctx1.t2=nil;
-$ctx1.r=nil;
-$ctx1.n1=nil;
-$ctx1.n2=nil;
-$ctx1.locals.n1=(1);
+n1=(1);
 _st((function(){
-return smalltalk.withContext(function($ctx2) { 
$ctx1.locals.t1=_st((smalltalk.Date || Date))._millisecondsToRun_((function(){
-return smalltalk.withContext(function($ctx3) { 
return _st($ctx1.locals.n1)._jsbenchmark();
-})}));
-$ctx1.locals.t1;
-return _st($ctx1.locals.t1).__lt((1000));
-})}))._whileTrue_((function(){
-return smalltalk.withContext(function($ctx2) { 
$ctx1.locals.n1=_st($ctx1.locals.n1).__star((2));
-return $ctx1.locals.n1;
-})}));
-$ctx1.locals.n2=(28);
+return smalltalk.withContext(function($ctx2) {
t1=_st((smalltalk.Date || Date))._millisecondsToRun_((function(){
+return smalltalk.withContext(function($ctx3) {
return _st(n1)._jsbenchmark();
+}, function($ctx3) {$ctx3.fill(null, null, {})})}));
+t1;
+return _st(t1).__lt((1000));
+}, function($ctx2) {$ctx2.fill(null, null, {})})}))._whileTrue_((function(){
+return smalltalk.withContext(function($ctx2) {
n1=_st(n1).__star((2));
+return n1;
+}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+n2=(28);
 _st((function(){
-return smalltalk.withContext(function($ctx2) { 
$ctx1.locals.t2=_st((smalltalk.Date || Date))._millisecondsToRun_((function(){
-return smalltalk.withContext(function($ctx3) { 
$ctx1.locals.r=_st($ctx1.locals.n2)._jsbenchFib();
-return $ctx1.locals.r;
-})}));
-$ctx1.locals.t2;
-return _st($ctx1.locals.t2).__lt((1000));
-})}))._whileTrue_((function(){
-return smalltalk.withContext(function($ctx2) { 
$ctx1.locals.n2=_st($ctx1.locals.n2).__plus((1));
-return $ctx1.locals.n2;
-})}));
-$1=_st(_st(_st(_st(_st(_st(_st($ctx1.locals.n1).__star((500000))).__star((1000))).__slash($ctx1.locals.t1))._printString()).__comma(" bytecodes/sec; ")).__comma(_st(_st(_st($ctx1.locals.r).__star((1000))).__slash($ctx1.locals.t2))._printString())).__comma(" sends/sec");
+return smalltalk.withContext(function($ctx2) {
t2=_st((smalltalk.Date || Date))._millisecondsToRun_((function(){
+return smalltalk.withContext(function($ctx3) {
r=_st(n2)._jsbenchFib();
+return r;
+}, function($ctx3) {$ctx3.fill(null, null, {})})}));
+t2;
+return _st(t2).__lt((1000));
+}, function($ctx2) {$ctx2.fill(null, null, {})})}))._whileTrue_((function(){
+return smalltalk.withContext(function($ctx2) {
n2=_st(n2).__plus((1));
+return n2;
+}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+$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");
 return $1;
-}, self, "jstinyBenchmarks", [], smalltalk.Number)},
+}, function($ctx1) {$ctx1.fill(self,"jstinyBenchmarks", [], smalltalk.Number)})},
 args: [],
 source: "jstinyBenchmarks\x0a\x09\x220 jstinyBenchmarks\x22\x0a\x0a\x09| t1 t2 r n1 n2 |\x0a\x09n1 := 1.\x0a\x09[t1 := Date millisecondsToRun: [n1 jsbenchmark].\x0a\x09t1 < 1000] whileTrue:[n1 := n1 * 2]. \x22Note: #benchmark's runtime is about O(n)\x22\x0a\x0a\x09n2 := 28.\x0a\x09[t2 := Date millisecondsToRun: [r := n2 jsbenchFib].\x0a\x09t2 < 1000] whileTrue:[n2 := n2 + 1]. \x0a\x09\x22Note: #jsbenchFib's runtime is about O(k^n),\x0a\x09\x09where k is the golden number = (1 + 5 sqrt) / 2 = 1.618....\x22\x0a\x0a\x09^ ((n1 * 500000 * 1000) / t1) printString, ' bytecodes/sec; ',\x0a\x09  ((r * 1000) / t2) printString, ' sends/sec'",
 messageSends: ["whileTrue:", "*", "millisecondsToRun:", "jsbenchmark", "<", "+", "jsbenchFib", ",", "printString", "/"],
@@ -204,38 +199,34 @@ selector: "tinyBenchmarks",
 category: '*Benchfib',
 fn: function (){
 var self=this;
+var t1,t2,r,n1,n2;
 return smalltalk.withContext(function($ctx1) { 
var $1;
-$ctx1.t1=nil;
-$ctx1.t2=nil;
-$ctx1.r=nil;
-$ctx1.n1=nil;
-$ctx1.n2=nil;
-$ctx1.locals.n1=(1);
+n1=(1);
 _st((function(){
-return smalltalk.withContext(function($ctx2) { 
$ctx1.locals.t1=_st((smalltalk.Date || Date))._millisecondsToRun_((function(){
-return smalltalk.withContext(function($ctx3) { 
return _st($ctx1.locals.n1)._benchmark();
-})}));
-$ctx1.locals.t1;
-return _st($ctx1.locals.t1).__lt((1000));
-})}))._whileTrue_((function(){
-return smalltalk.withContext(function($ctx2) { 
$ctx1.locals.n1=_st($ctx1.locals.n1).__star((2));
-return $ctx1.locals.n1;
-})}));
-$ctx1.locals.n2=(16);
+return smalltalk.withContext(function($ctx2) {
t1=_st((smalltalk.Date || Date))._millisecondsToRun_((function(){
+return smalltalk.withContext(function($ctx3) {
return _st(n1)._benchmark();
+}, function($ctx3) {$ctx3.fill(null, null, {})})}));
+t1;
+return _st(t1).__lt((1000));
+}, function($ctx2) {$ctx2.fill(null, null, {})})}))._whileTrue_((function(){
+return smalltalk.withContext(function($ctx2) {
n1=_st(n1).__star((2));
+return n1;
+}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+n2=(16);
 _st((function(){
-return smalltalk.withContext(function($ctx2) { 
$ctx1.locals.t2=_st((smalltalk.Date || Date))._millisecondsToRun_((function(){
-return smalltalk.withContext(function($ctx3) { 
$ctx1.locals.r=_st($ctx1.locals.n2)._benchFib();
-return $ctx1.locals.r;
-})}));
-$ctx1.locals.t2;
-return _st($ctx1.locals.t2).__lt((1000));
-})}))._whileTrue_((function(){
-return smalltalk.withContext(function($ctx2) { 
$ctx1.locals.n2=_st($ctx1.locals.n2).__plus((1));
-return $ctx1.locals.n2;
-})}));
-$1=_st(_st(_st(_st(_st(_st(_st($ctx1.locals.n1).__star((500000))).__star((1000))).__slash($ctx1.locals.t1))._printString()).__comma(" bytecodes/sec; ")).__comma(_st(_st(_st($ctx1.locals.r).__star((1000))).__slash($ctx1.locals.t2))._printString())).__comma(" sends/sec");
+return smalltalk.withContext(function($ctx2) {
t2=_st((smalltalk.Date || Date))._millisecondsToRun_((function(){
+return smalltalk.withContext(function($ctx3) {
r=_st(n2)._benchFib();
+return r;
+}, function($ctx3) {$ctx3.fill(null, null, {})})}));
+t2;
+return _st(t2).__lt((1000));
+}, function($ctx2) {$ctx2.fill(null, null, {})})}))._whileTrue_((function(){
+return smalltalk.withContext(function($ctx2) {
n2=_st(n2).__plus((1));
+return n2;
+}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+$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");
 return $1;
-}, self, "tinyBenchmarks", [], smalltalk.Number)},
+}, function($ctx1) {$ctx1.fill(self,"tinyBenchmarks", [], smalltalk.Number)})},
 args: [],
 source: "tinyBenchmarks \x0a\x09\x22Report the results of running the two tiny Squeak benchmarks.\x0a\x09ar 9/10/1999: Adjusted to run at least 1 sec to get more stable results\x22\x0a\x09\x220 tinyBenchmarks\x22\x0a\x09\x22On a 292 MHz G3 Mac: 22727272 bytecodes/sec; 984169 sends/sec\x22\x0a\x09\x22On a 400 MHz PII/Win98:  18028169 bytecodes/sec; 1081272 sends/sec\x22\x0a\x09| t1 t2 r n1 n2 |\x0a\x09n1 := 1.\x0a\x09[t1 := Date millisecondsToRun: [n1 benchmark].\x0a\x09t1 < 1000] whileTrue:[n1 := n1 * 2]. \x22Note: #benchmark's runtime is about O(n)\x22\x0a\x0a\x09n2 := 16.\x0a\x09[t2 := Date millisecondsToRun: [r := n2 benchFib].\x0a\x09t2 < 1000] whileTrue:[n2 := n2 + 1]. \x0a\x09\x22Note: #benchFib's runtime is about O(k^n),\x0a\x09\x09where k is the golden number = (1 + 5 sqrt) / 2 = 1.618....\x22\x0a\x0a\x09^ ((n1 * 500000 * 1000) / t1) printString, ' bytecodes/sec; ',\x0a\x09  ((r * 1000) / t2) printString, ' sends/sec'",
 messageSends: ["whileTrue:", "*", "millisecondsToRun:", "benchmark", "<", "+", "benchFib", ",", "printString", "/"],

Filskillnaden har hållts tillbaka eftersom den är för stor
+ 118 - 114
js/Canvas.deploy.js


Filskillnaden har hållts tillbaka eftersom den är för stor
+ 118 - 114
js/Canvas.js


Filskillnaden har hållts tillbaka eftersom den är för stor
+ 187 - 149
js/Compiler-AST.deploy.js


Filskillnaden har hållts tillbaka eftersom den är för stor
+ 187 - 149
js/Compiler-AST.js


+ 121 - 107
js/Compiler-Core.deploy.js

@@ -6,14 +6,15 @@ smalltalk.method({
 selector: "codeGeneratorClass",
 fn: function (){
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $1;
-if(($receiver = self["@codeGeneratorClass"]) == nil || $receiver == undefined){
+return smalltalk.withContext(function($ctx1) { 
var $2,$1;
+$2=self["@codeGeneratorClass"];
+if(($receiver = $2) == nil || $receiver == undefined){
 $1=(smalltalk.InliningCodeGenerator || InliningCodeGenerator);
 } else {
-$1=self["@codeGeneratorClass"];
+$1=$2;
 };
 return $1;
-}, self, "codeGeneratorClass", [], smalltalk.Compiler)}
+}, function($ctx1) {$ctx1.fill(self,"codeGeneratorClass", [], smalltalk.Compiler)})}
 }),
 smalltalk.Compiler);
 
@@ -24,7 +25,7 @@ selector: "codeGeneratorClass:",
 fn: function (aClass){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
self["@codeGeneratorClass"]=aClass;
-return self}, self, "codeGeneratorClass:", [aClass], smalltalk.Compiler)}
+return self}, function($ctx1) {$ctx1.fill(self,"codeGeneratorClass:", [aClass], smalltalk.Compiler)})}
 }),
 smalltalk.Compiler);
 
@@ -37,7 +38,7 @@ var self=this;
 return smalltalk.withContext(function($ctx1) { 
var $1;
 $1=_st(self)._compileNode_(_st(self)._parse_(aString));
 return $1;
-}, self, "compile:", [aString], smalltalk.Compiler)}
+}, function($ctx1) {$ctx1.fill(self,"compile:", [aString], smalltalk.Compiler)})}
 }),
 smalltalk.Compiler);
 
@@ -52,7 +53,7 @@ _st(self)._currentClass_(aClass);
 _st(self)._source_(aString);
 $1=_st(self)._compile_(aString);
 return $1;
-}, self, "compile:forClass:", [aString,aClass], smalltalk.Compiler)}
+}, function($ctx1) {$ctx1.fill(self,"compile:forClass:", [aString,aClass], smalltalk.Compiler)})}
 }),
 smalltalk.Compiler);
 
@@ -67,7 +68,7 @@ _st(self)._currentClass_((smalltalk.DoIt || DoIt));
 _st(self)._source_(_st(_st("doIt ^[").__comma(aString)).__comma("] value"));
 $1=_st(self)._compileNode_(_st(self)._parse_(_st(self)._source()));
 return $1;
-}, self, "compileExpression:", [aString], smalltalk.Compiler)}
+}, function($ctx1) {$ctx1.fill(self,"compileExpression:", [aString], smalltalk.Compiler)})}
 }),
 smalltalk.Compiler);
 
@@ -77,16 +78,17 @@ smalltalk.method({
 selector: "compileNode:",
 fn: function (aNode){
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $1;
-$ctx1.generator=nil;
-$ctx1.result=nil;
-$ctx1.locals.generator=_st(_st(self)._codeGeneratorClass())._new();
-_st($ctx1.locals.generator)._source_(_st(self)._source());
-$1=_st($ctx1.locals.generator)._currentClass_(_st(self)._currentClass());
-$ctx1.locals.result=_st($ctx1.locals.generator)._compileNode_(aNode);
+var generator,result;
+return smalltalk.withContext(function($ctx1) { 
var $1,$2,$3;
+generator=_st(_st(self)._codeGeneratorClass())._new();
+$1=generator;
+_st($1)._source_(_st(self)._source());
+$2=_st($1)._currentClass_(_st(self)._currentClass());
+result=_st(generator)._compileNode_(aNode);
 _st(self)._unknownVariables_([]);
-return $ctx1.locals.result;
-}, self, "compileNode:", [aNode], smalltalk.Compiler)}
+$3=result;
+return $3;
+}, function($ctx1) {$ctx1.fill(self,"compileNode:", [aNode], smalltalk.Compiler)})}
 }),
 smalltalk.Compiler);
 
@@ -96,8 +98,10 @@ smalltalk.method({
 selector: "currentClass",
 fn: function (){
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
return self["@currentClass"];
-}, self, "currentClass", [], smalltalk.Compiler)}
+return smalltalk.withContext(function($ctx1) { 
var $1;
+$1=self["@currentClass"];
+return $1;
+}, function($ctx1) {$ctx1.fill(self,"currentClass", [], smalltalk.Compiler)})}
 }),
 smalltalk.Compiler);
 
@@ -108,7 +112,7 @@ selector: "currentClass:",
 fn: function (aClass){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
self["@currentClass"]=aClass;
-return self}, self, "currentClass:", [aClass], smalltalk.Compiler)}
+return self}, function($ctx1) {$ctx1.fill(self,"currentClass:", [aClass], smalltalk.Compiler)})}
 }),
 smalltalk.Compiler);
 
@@ -119,8 +123,7 @@ selector: "eval:",
 fn: function (aString){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
return eval(aString);
-;
-return self}, self, "eval:", [aString], smalltalk.Compiler)}
+return self}, function($ctx1) {$ctx1.fill(self,"eval:", [aString], smalltalk.Compiler)})}
 }),
 smalltalk.Compiler);
 
@@ -130,12 +133,14 @@ smalltalk.method({
 selector: "evaluateExpression:",
 fn: function (aString){
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
$ctx1.result=nil;
+var result;
+return smalltalk.withContext(function($ctx1) { 
var $1;
 _st((smalltalk.DoIt || DoIt))._addCompiledMethod_(_st(self)._eval_(_st(self)._compileExpression_(aString)));
-$ctx1.locals.result=_st(_st((smalltalk.DoIt || DoIt))._new())._doIt();
+result=_st(_st((smalltalk.DoIt || DoIt))._new())._doIt();
 _st((smalltalk.DoIt || DoIt))._removeCompiledMethod_(_st(_st((smalltalk.DoIt || DoIt))._methodDictionary())._at_("doIt"));
-return $ctx1.locals.result;
-}, self, "evaluateExpression:", [aString], smalltalk.Compiler)}
+$1=result;
+return $1;
+}, function($ctx1) {$ctx1.fill(self,"evaluateExpression:", [aString], smalltalk.Compiler)})}
 }),
 smalltalk.Compiler);
 
@@ -145,13 +150,15 @@ smalltalk.method({
 selector: "install:forClass:category:",
 fn: function (aString,aBehavior,anotherString){
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
$ctx1.compiled=nil;
-$ctx1.locals.compiled=_st(self)._eval_(_st(self)._compile_forClass_(aString,aBehavior));
-_st($ctx1.locals.compiled)._category_(anotherString);
-_st(aBehavior)._addCompiledMethod_($ctx1.locals.compiled);
+var compiled;
+return smalltalk.withContext(function($ctx1) { 
var $1;
+compiled=_st(self)._eval_(_st(self)._compile_forClass_(aString,aBehavior));
+_st(compiled)._category_(anotherString);
+_st(aBehavior)._addCompiledMethod_(compiled);
 _st(self)._setupClass_(aBehavior);
-return $ctx1.locals.compiled;
-}, self, "install:forClass:category:", [aString,aBehavior,anotherString], smalltalk.Compiler)}
+$1=compiled;
+return $1;
+}, function($ctx1) {$ctx1.fill(self,"install:forClass:category:", [aString,aBehavior,anotherString], smalltalk.Compiler)})}
 }),
 smalltalk.Compiler);
 
@@ -164,7 +171,7 @@ var self=this;
 return smalltalk.withContext(function($ctx1) { 
var $1;
 $1=_st(_st((smalltalk.Smalltalk || Smalltalk))._current())._parse_(aString);
 return $1;
-}, self, "parse:", [aString], smalltalk.Compiler)}
+}, function($ctx1) {$ctx1.fill(self,"parse:", [aString], smalltalk.Compiler)})}
 }),
 smalltalk.Compiler);
 
@@ -177,7 +184,7 @@ var self=this;
 return smalltalk.withContext(function($ctx1) { 
var $1;
 $1=_st(self)._parse_(_st(_st("doIt ^[").__comma(aString)).__comma("] value"));
 return $1;
-}, self, "parseExpression:", [aString], smalltalk.Compiler)}
+}, function($ctx1) {$ctx1.fill(self,"parseExpression:", [aString], smalltalk.Compiler)})}
 }),
 smalltalk.Compiler);
 
@@ -189,15 +196,15 @@ fn: function (aClass){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
var $1;
 _st(_st(aClass)._methodDictionary())._do_((function(each){
-return smalltalk.withContext(function($ctx2) { 
_st(console)._log_(_st(_st(_st(aClass)._name()).__comma(" >> ")).__comma(_st(each)._selector()));
+return smalltalk.withContext(function($ctx2) {
_st(console)._log_(_st(_st(_st(aClass)._name()).__comma(" >> ")).__comma(_st(each)._selector()));
 return _st(self)._install_forClass_category_(_st(each)._source(),aClass,_st(each)._category());
-})}));
+}, function($ctx2) {$ctx2.fill(null, null, {})})}));
 _st(self)._setupClass_(aClass);
 $1=_st(aClass)._isMetaclass();
 if(! smalltalk.assert($1)){
 _st(self)._recompile_(_st(aClass)._class());
 };
-return self}, self, "recompile:", [aClass], smalltalk.Compiler)}
+return self}, function($ctx1) {$ctx1.fill(self,"recompile:", [aClass], smalltalk.Compiler)})}
 }),
 smalltalk.Compiler);
 
@@ -207,16 +214,17 @@ smalltalk.method({
 selector: "recompileAll",
 fn: function (){
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $1;
+return smalltalk.withContext(function($ctx1) { 
var $1,$2;
 _st(_st(_st((smalltalk.Smalltalk || Smalltalk))._current())._classes())._do_((function(each){
-return smalltalk.withContext(function($ctx2) { 
_st((smalltalk.Transcript || Transcript))._show_(each);
-$1=_st((smalltalk.Transcript || Transcript))._cr();
-$1;
+return smalltalk.withContext(function($ctx2) {
$1=(smalltalk.Transcript || Transcript);
+_st($1)._show_(each);
+$2=_st($1)._cr();
+$2;
 return _st((function(){
-return smalltalk.withContext(function($ctx3) { 
return _st(self)._recompile_(each);
-})}))._valueWithTimeout_((100));
-})}));
-return self}, self, "recompileAll", [], smalltalk.Compiler)}
+return smalltalk.withContext(function($ctx3) {
return _st(self)._recompile_(each);
+}, function($ctx3) {$ctx3.fill(null, null, {})})}))._valueWithTimeout_((100));
+}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+return self}, function($ctx1) {$ctx1.fill(self,"recompileAll", [], smalltalk.Compiler)})}
 }),
 smalltalk.Compiler);
 
@@ -227,8 +235,7 @@ selector: "setupClass:",
 fn: function (aClass){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
smalltalk.init(aClass);
-;
-return self}, self, "setupClass:", [aClass], smalltalk.Compiler)}
+return self}, function($ctx1) {$ctx1.fill(self,"setupClass:", [aClass], smalltalk.Compiler)})}
 }),
 smalltalk.Compiler);
 
@@ -238,14 +245,15 @@ smalltalk.method({
 selector: "source",
 fn: function (){
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $1;
-if(($receiver = self["@source"]) == nil || $receiver == undefined){
+return smalltalk.withContext(function($ctx1) { 
var $2,$1;
+$2=self["@source"];
+if(($receiver = $2) == nil || $receiver == undefined){
 $1="";
 } else {
-$1=self["@source"];
+$1=$2;
 };
 return $1;
-}, self, "source", [], smalltalk.Compiler)}
+}, function($ctx1) {$ctx1.fill(self,"source", [], smalltalk.Compiler)})}
 }),
 smalltalk.Compiler);
 
@@ -256,7 +264,7 @@ selector: "source:",
 fn: function (aString){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
self["@source"]=aString;
-return self}, self, "source:", [aString], smalltalk.Compiler)}
+return self}, function($ctx1) {$ctx1.fill(self,"source:", [aString], smalltalk.Compiler)})}
 }),
 smalltalk.Compiler);
 
@@ -266,8 +274,10 @@ smalltalk.method({
 selector: "unknownVariables",
 fn: function (){
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
return self["@unknownVariables"];
-}, self, "unknownVariables", [], smalltalk.Compiler)}
+return smalltalk.withContext(function($ctx1) { 
var $1;
+$1=self["@unknownVariables"];
+return $1;
+}, function($ctx1) {$ctx1.fill(self,"unknownVariables", [], smalltalk.Compiler)})}
 }),
 smalltalk.Compiler);
 
@@ -278,7 +288,7 @@ selector: "unknownVariables:",
 fn: function (aCollection){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
self["@unknownVariables"]=aCollection;
-return self}, self, "unknownVariables:", [aCollection], smalltalk.Compiler)}
+return self}, function($ctx1) {$ctx1.fill(self,"unknownVariables:", [aCollection], smalltalk.Compiler)})}
 }),
 smalltalk.Compiler);
 
@@ -290,7 +300,7 @@ selector: "recompile:",
 fn: function (aClass){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
_st(_st(self)._new())._recompile_(aClass);
-return self}, self, "recompile:", [aClass], smalltalk.Compiler.klass)}
+return self}, function($ctx1) {$ctx1.fill(self,"recompile:", [aClass], smalltalk.Compiler.klass)})}
 }),
 smalltalk.Compiler.klass);
 
@@ -301,9 +311,9 @@ selector: "recompileAll",
 fn: function (){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
_st(_st(_st((smalltalk.Smalltalk || Smalltalk))._current())._classes())._do_((function(each){
-return smalltalk.withContext(function($ctx2) { 
return _st(self)._recompile_(each);
-})}));
-return self}, self, "recompileAll", [], smalltalk.Compiler.klass)}
+return smalltalk.withContext(function($ctx2) {
return _st(self)._recompile_(each);
+}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+return self}, function($ctx1) {$ctx1.fill(self,"recompileAll", [], smalltalk.Compiler.klass)})}
 }),
 smalltalk.Compiler.klass);
 
@@ -321,7 +331,7 @@ var self=this;
 return smalltalk.withContext(function($ctx1) { 
var $1;
 $1=_st(aNode)._accept_(self);
 return $1;
-}, self, "visit:", [aNode], smalltalk.NodeVisitor)}
+}, function($ctx1) {$ctx1.fill(self,"visit:", [aNode], smalltalk.NodeVisitor)})}
 }),
 smalltalk.NodeVisitor);
 
@@ -333,10 +343,10 @@ fn: function (aCollection){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
var $1;
 $1=_st(aCollection)._do_((function(each){
-return smalltalk.withContext(function($ctx2) { 
return _st(self)._visit_(each);
-})}));
+return smalltalk.withContext(function($ctx2) {
return _st(self)._visit_(each);
+}, function($ctx2) {$ctx2.fill(null, null, {})})}));
 return $1;
-}, self, "visitAll:", [aCollection], smalltalk.NodeVisitor)}
+}, function($ctx1) {$ctx1.fill(self,"visitAll:", [aCollection], smalltalk.NodeVisitor)})}
 }),
 smalltalk.NodeVisitor);
 
@@ -349,7 +359,7 @@ var self=this;
 return smalltalk.withContext(function($ctx1) { 
var $1;
 $1=_st(self)._visitNode_(aNode);
 return $1;
-}, self, "visitAssignmentNode:", [aNode], smalltalk.NodeVisitor)}
+}, function($ctx1) {$ctx1.fill(self,"visitAssignmentNode:", [aNode], smalltalk.NodeVisitor)})}
 }),
 smalltalk.NodeVisitor);
 
@@ -362,7 +372,7 @@ var self=this;
 return smalltalk.withContext(function($ctx1) { 
var $1;
 $1=_st(self)._visitNode_(aNode);
 return $1;
-}, self, "visitBlockNode:", [aNode], smalltalk.NodeVisitor)}
+}, function($ctx1) {$ctx1.fill(self,"visitBlockNode:", [aNode], smalltalk.NodeVisitor)})}
 }),
 smalltalk.NodeVisitor);
 
@@ -375,7 +385,7 @@ var self=this;
 return smalltalk.withContext(function($ctx1) { 
var $1;
 $1=_st(self)._visitSequenceNode_(aNode);
 return $1;
-}, self, "visitBlockSequenceNode:", [aNode], smalltalk.NodeVisitor)}
+}, function($ctx1) {$ctx1.fill(self,"visitBlockSequenceNode:", [aNode], smalltalk.NodeVisitor)})}
 }),
 smalltalk.NodeVisitor);
 
@@ -388,7 +398,7 @@ var self=this;
 return smalltalk.withContext(function($ctx1) { 
var $1;
 $1=_st(self)._visitNode_(aNode);
 return $1;
-}, self, "visitCascadeNode:", [aNode], smalltalk.NodeVisitor)}
+}, function($ctx1) {$ctx1.fill(self,"visitCascadeNode:", [aNode], smalltalk.NodeVisitor)})}
 }),
 smalltalk.NodeVisitor);
 
@@ -401,7 +411,7 @@ var self=this;
 return smalltalk.withContext(function($ctx1) { 
var $1;
 $1=_st(self)._visitVariableNode_(aNode);
 return $1;
-}, self, "visitClassReferenceNode:", [aNode], smalltalk.NodeVisitor)}
+}, function($ctx1) {$ctx1.fill(self,"visitClassReferenceNode:", [aNode], smalltalk.NodeVisitor)})}
 }),
 smalltalk.NodeVisitor);
 
@@ -414,7 +424,7 @@ var self=this;
 return smalltalk.withContext(function($ctx1) { 
var $1;
 $1=_st(self)._visitNode_(aNode);
 return $1;
-}, self, "visitDynamicArrayNode:", [aNode], smalltalk.NodeVisitor)}
+}, function($ctx1) {$ctx1.fill(self,"visitDynamicArrayNode:", [aNode], smalltalk.NodeVisitor)})}
 }),
 smalltalk.NodeVisitor);
 
@@ -427,7 +437,7 @@ var self=this;
 return smalltalk.withContext(function($ctx1) { 
var $1;
 $1=_st(self)._visitNode_(aNode);
 return $1;
-}, self, "visitDynamicDictionaryNode:", [aNode], smalltalk.NodeVisitor)}
+}, function($ctx1) {$ctx1.fill(self,"visitDynamicDictionaryNode:", [aNode], smalltalk.NodeVisitor)})}
 }),
 smalltalk.NodeVisitor);
 
@@ -440,7 +450,7 @@ var self=this;
 return smalltalk.withContext(function($ctx1) { 
var $1;
 $1=_st(self)._visitNode_(aNode);
 return $1;
-}, self, "visitJSStatementNode:", [aNode], smalltalk.NodeVisitor)}
+}, function($ctx1) {$ctx1.fill(self,"visitJSStatementNode:", [aNode], smalltalk.NodeVisitor)})}
 }),
 smalltalk.NodeVisitor);
 
@@ -453,7 +463,7 @@ var self=this;
 return smalltalk.withContext(function($ctx1) { 
var $1;
 $1=_st(self)._visitNode_(aNode);
 return $1;
-}, self, "visitMethodNode:", [aNode], smalltalk.NodeVisitor)}
+}, function($ctx1) {$ctx1.fill(self,"visitMethodNode:", [aNode], smalltalk.NodeVisitor)})}
 }),
 smalltalk.NodeVisitor);
 
@@ -466,7 +476,7 @@ var self=this;
 return smalltalk.withContext(function($ctx1) { 
var $1;
 $1=_st(self)._visitAll_(_st(aNode)._nodes());
 return $1;
-}, self, "visitNode:", [aNode], smalltalk.NodeVisitor)}
+}, function($ctx1) {$ctx1.fill(self,"visitNode:", [aNode], smalltalk.NodeVisitor)})}
 }),
 smalltalk.NodeVisitor);
 
@@ -479,7 +489,7 @@ var self=this;
 return smalltalk.withContext(function($ctx1) { 
var $1;
 $1=_st(self)._visitNode_(aNode);
 return $1;
-}, self, "visitReturnNode:", [aNode], smalltalk.NodeVisitor)}
+}, function($ctx1) {$ctx1.fill(self,"visitReturnNode:", [aNode], smalltalk.NodeVisitor)})}
 }),
 smalltalk.NodeVisitor);
 
@@ -492,7 +502,7 @@ var self=this;
 return smalltalk.withContext(function($ctx1) { 
var $1;
 $1=_st(self)._visitNode_(aNode);
 return $1;
-}, self, "visitSendNode:", [aNode], smalltalk.NodeVisitor)}
+}, function($ctx1) {$ctx1.fill(self,"visitSendNode:", [aNode], smalltalk.NodeVisitor)})}
 }),
 smalltalk.NodeVisitor);
 
@@ -505,7 +515,7 @@ var self=this;
 return smalltalk.withContext(function($ctx1) { 
var $1;
 $1=_st(self)._visitNode_(aNode);
 return $1;
-}, self, "visitSequenceNode:", [aNode], smalltalk.NodeVisitor)}
+}, function($ctx1) {$ctx1.fill(self,"visitSequenceNode:", [aNode], smalltalk.NodeVisitor)})}
 }),
 smalltalk.NodeVisitor);
 
@@ -518,7 +528,7 @@ var self=this;
 return smalltalk.withContext(function($ctx1) { 
var $1;
 $1=_st(self)._visitNode_(aNode);
 return $1;
-}, self, "visitValueNode:", [aNode], smalltalk.NodeVisitor)}
+}, function($ctx1) {$ctx1.fill(self,"visitValueNode:", [aNode], smalltalk.NodeVisitor)})}
 }),
 smalltalk.NodeVisitor);
 
@@ -531,7 +541,7 @@ var self=this;
 return smalltalk.withContext(function($ctx1) { 
var $1;
 $1=_st(self)._visitNode_(aNode);
 return $1;
-}, self, "visitVariableNode:", [aNode], smalltalk.NodeVisitor)}
+}, function($ctx1) {$ctx1.fill(self,"visitVariableNode:", [aNode], smalltalk.NodeVisitor)})}
 }),
 smalltalk.NodeVisitor);
 
@@ -544,20 +554,22 @@ smalltalk.method({
 selector: "classNameFor:",
 fn: function (aClass){
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $2,$3,$1;
+return smalltalk.withContext(function($ctx1) { 
var $2,$3,$5,$4,$1;
 $2=_st(aClass)._isMetaclass();
-if(smalltalk.assert($2)){
-$1=_st(_st(_st(aClass)._instanceClass())._name()).__comma(".klass");
-} else {
-$3=_st(aClass)._isNil();
-if(smalltalk.assert($3)){
-$1="nil";
+$3=(function(){
+return smalltalk.withContext(function($ctx2) {
return _st(_st(_st(aClass)._instanceClass())._name()).__comma(".klass");
+}, function($ctx2) {$ctx2.fill(null, null, {})})});
+$4=(function(){
+return smalltalk.withContext(function($ctx2) {
$5=_st(aClass)._isNil();
+if(smalltalk.assert($5)){
+return "nil";
 } else {
-$1=_st(aClass)._name();
-};
+return _st(aClass)._name();
 };
+}, function($ctx2) {$ctx2.fill(null, null, {})})});
+$1=_st($2)._ifTrue_ifFalse_($3,$4);
 return $1;
-}, self, "classNameFor:", [aClass], smalltalk.AbstractCodeGenerator)}
+}, function($ctx1) {$ctx1.fill(self,"classNameFor:", [aClass], smalltalk.AbstractCodeGenerator)})}
 }),
 smalltalk.AbstractCodeGenerator);
 
@@ -568,7 +580,7 @@ selector: "compileNode:",
 fn: function (aNode){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
_st(self)._subclassResponsibility();
-return self}, self, "compileNode:", [aNode], smalltalk.AbstractCodeGenerator)}
+return self}, function($ctx1) {$ctx1.fill(self,"compileNode:", [aNode], smalltalk.AbstractCodeGenerator)})}
 }),
 smalltalk.AbstractCodeGenerator);
 
@@ -578,8 +590,10 @@ smalltalk.method({
 selector: "currentClass",
 fn: function (){
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
return self["@currentClass"];
-}, self, "currentClass", [], smalltalk.AbstractCodeGenerator)}
+return smalltalk.withContext(function($ctx1) { 
var $1;
+$1=self["@currentClass"];
+return $1;
+}, function($ctx1) {$ctx1.fill(self,"currentClass", [], smalltalk.AbstractCodeGenerator)})}
 }),
 smalltalk.AbstractCodeGenerator);
 
@@ -590,7 +604,7 @@ selector: "currentClass:",
 fn: function (aClass){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
self["@currentClass"]=aClass;
-return self}, self, "currentClass:", [aClass], smalltalk.AbstractCodeGenerator)}
+return self}, function($ctx1) {$ctx1.fill(self,"currentClass:", [aClass], smalltalk.AbstractCodeGenerator)})}
 }),
 smalltalk.AbstractCodeGenerator);
 
@@ -601,7 +615,7 @@ selector: "pseudoVariables",
 fn: function (){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
return ["self", "super", "true", "false", "nil", "thisContext"];
-}, self, "pseudoVariables", [], smalltalk.AbstractCodeGenerator)}
+}, function($ctx1) {$ctx1.fill(self,"pseudoVariables", [], smalltalk.AbstractCodeGenerator)})}
 }),
 smalltalk.AbstractCodeGenerator);
 
@@ -619,7 +633,7 @@ $1=_st(aString).__comma("_");
 $1=aString;
 };
 return $1;
-}, self, "safeVariableNameFor:", [aString], smalltalk.AbstractCodeGenerator)}
+}, function($ctx1) {$ctx1.fill(self,"safeVariableNameFor:", [aString], smalltalk.AbstractCodeGenerator)})}
 }),
 smalltalk.AbstractCodeGenerator);
 
@@ -629,14 +643,15 @@ smalltalk.method({
 selector: "source",
 fn: function (){
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $1;
-if(($receiver = self["@source"]) == nil || $receiver == undefined){
+return smalltalk.withContext(function($ctx1) { 
var $2,$1;
+$2=self["@source"];
+if(($receiver = $2) == nil || $receiver == undefined){
 $1="";
 } else {
-$1=self["@source"];
+$1=$2;
 };
 return $1;
-}, self, "source", [], smalltalk.AbstractCodeGenerator)}
+}, function($ctx1) {$ctx1.fill(self,"source", [], smalltalk.AbstractCodeGenerator)})}
 }),
 smalltalk.AbstractCodeGenerator);
 
@@ -647,7 +662,7 @@ selector: "source:",
 fn: function (aString){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
self["@source"]=aString;
-return self}, self, "source:", [aString], smalltalk.AbstractCodeGenerator)}
+return self}, function($ctx1) {$ctx1.fill(self,"source:", [aString], smalltalk.AbstractCodeGenerator)})}
 }),
 smalltalk.AbstractCodeGenerator);
 
@@ -660,17 +675,16 @@ smalltalk.method({
 selector: "compileNode:",
 fn: function (aNode){
 var self=this;
+var ir,stream;
 return smalltalk.withContext(function($ctx1) { 
var $2,$3,$1;
-$ctx1.ir=nil;
-$ctx1.stream=nil;
 _st(_st(self)._semanticAnalyzer())._visit_(aNode);
-$ctx1.locals.ir=_st(_st(self)._translator())._visit_(aNode);
+ir=_st(_st(self)._translator())._visit_(aNode);
 $2=_st(self)._irTranslator();
-_st($2)._visit_($ctx1.locals.ir);
+_st($2)._visit_(ir);
 $3=_st($2)._contents();
 $1=$3;
 return $1;
-}, self, "compileNode:", [aNode], smalltalk.CodeGenerator)}
+}, function($ctx1) {$ctx1.fill(self,"compileNode:", [aNode], smalltalk.CodeGenerator)})}
 }),
 smalltalk.CodeGenerator);
 
@@ -683,7 +697,7 @@ var self=this;
 return smalltalk.withContext(function($ctx1) { 
var $1;
 $1=_st((smalltalk.IRJSTranslator || IRJSTranslator))._new();
 return $1;
-}, self, "irTranslator", [], smalltalk.CodeGenerator)}
+}, function($ctx1) {$ctx1.fill(self,"irTranslator", [], smalltalk.CodeGenerator)})}
 }),
 smalltalk.CodeGenerator);
 
@@ -696,7 +710,7 @@ var self=this;
 return smalltalk.withContext(function($ctx1) { 
var $1;
 $1=_st((smalltalk.SemanticAnalyzer || SemanticAnalyzer))._on_(_st(self)._currentClass());
 return $1;
-}, self, "semanticAnalyzer", [], smalltalk.CodeGenerator)}
+}, function($ctx1) {$ctx1.fill(self,"semanticAnalyzer", [], smalltalk.CodeGenerator)})}
 }),
 smalltalk.CodeGenerator);
 
@@ -713,7 +727,7 @@ _st($2)._theClass_(_st(self)._currentClass());
 $3=_st($2)._yourself();
 $1=$3;
 return $1;
-}, self, "translator", [], smalltalk.CodeGenerator)}
+}, function($ctx1) {$ctx1.fill(self,"translator", [], smalltalk.CodeGenerator)})}
 }),
 smalltalk.CodeGenerator);
 

+ 121 - 107
js/Compiler-Core.js

@@ -8,14 +8,15 @@ selector: "codeGeneratorClass",
 category: 'accessing',
 fn: function (){
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $1;
-if(($receiver = self["@codeGeneratorClass"]) == nil || $receiver == undefined){
+return smalltalk.withContext(function($ctx1) { 
var $2,$1;
+$2=self["@codeGeneratorClass"];
+if(($receiver = $2) == nil || $receiver == undefined){
 $1=(smalltalk.InliningCodeGenerator || InliningCodeGenerator);
 } else {
-$1=self["@codeGeneratorClass"];
+$1=$2;
 };
 return $1;
-}, self, "codeGeneratorClass", [], smalltalk.Compiler)},
+}, function($ctx1) {$ctx1.fill(self,"codeGeneratorClass", [], smalltalk.Compiler)})},
 args: [],
 source: "codeGeneratorClass\x0a\x09^codeGeneratorClass ifNil: [InliningCodeGenerator]",
 messageSends: ["ifNil:"],
@@ -31,7 +32,7 @@ category: 'accessing',
 fn: function (aClass){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
self["@codeGeneratorClass"]=aClass;
-return self}, self, "codeGeneratorClass:", [aClass], smalltalk.Compiler)},
+return self}, function($ctx1) {$ctx1.fill(self,"codeGeneratorClass:", [aClass], smalltalk.Compiler)})},
 args: ["aClass"],
 source: "codeGeneratorClass: aClass\x0a\x09codeGeneratorClass := aClass",
 messageSends: [],
@@ -49,7 +50,7 @@ var self=this;
 return smalltalk.withContext(function($ctx1) { 
var $1;
 $1=_st(self)._compileNode_(_st(self)._parse_(aString));
 return $1;
-}, self, "compile:", [aString], smalltalk.Compiler)},
+}, function($ctx1) {$ctx1.fill(self,"compile:", [aString], smalltalk.Compiler)})},
 args: ["aString"],
 source: "compile: aString\x0a\x09^self compileNode: (self parse: aString)",
 messageSends: ["compileNode:", "parse:"],
@@ -69,7 +70,7 @@ _st(self)._currentClass_(aClass);
 _st(self)._source_(aString);
 $1=_st(self)._compile_(aString);
 return $1;
-}, self, "compile:forClass:", [aString,aClass], smalltalk.Compiler)},
+}, function($ctx1) {$ctx1.fill(self,"compile:forClass:", [aString,aClass], smalltalk.Compiler)})},
 args: ["aString", "aClass"],
 source: "compile: aString forClass: aClass\x0a\x09self currentClass: aClass.\x0a\x09self source: aString.\x0a\x09^self compile: aString",
 messageSends: ["currentClass:", "source:", "compile:"],
@@ -89,7 +90,7 @@ _st(self)._currentClass_((smalltalk.DoIt || DoIt));
 _st(self)._source_(_st(_st("doIt ^[").__comma(aString)).__comma("] value"));
 $1=_st(self)._compileNode_(_st(self)._parse_(_st(self)._source()));
 return $1;
-}, self, "compileExpression:", [aString], smalltalk.Compiler)},
+}, function($ctx1) {$ctx1.fill(self,"compileExpression:", [aString], smalltalk.Compiler)})},
 args: ["aString"],
 source: "compileExpression: aString\x0a\x09self currentClass: DoIt.\x0a\x09self source: 'doIt ^[', aString, '] value'.\x0a\x09^self compileNode: (self parse: self source)",
 messageSends: ["currentClass:", "source:", ",", "compileNode:", "parse:", "source"],
@@ -104,16 +105,17 @@ selector: "compileNode:",
 category: 'compiling',
 fn: function (aNode){
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $1;
-$ctx1.generator=nil;
-$ctx1.result=nil;
-$ctx1.locals.generator=_st(_st(self)._codeGeneratorClass())._new();
-_st($ctx1.locals.generator)._source_(_st(self)._source());
-$1=_st($ctx1.locals.generator)._currentClass_(_st(self)._currentClass());
-$ctx1.locals.result=_st($ctx1.locals.generator)._compileNode_(aNode);
+var generator,result;
+return smalltalk.withContext(function($ctx1) { 
var $1,$2,$3;
+generator=_st(_st(self)._codeGeneratorClass())._new();
+$1=generator;
+_st($1)._source_(_st(self)._source());
+$2=_st($1)._currentClass_(_st(self)._currentClass());
+result=_st(generator)._compileNode_(aNode);
 _st(self)._unknownVariables_([]);
-return $ctx1.locals.result;
-}, self, "compileNode:", [aNode], smalltalk.Compiler)},
+$3=result;
+return $3;
+}, function($ctx1) {$ctx1.fill(self,"compileNode:", [aNode], smalltalk.Compiler)})},
 args: ["aNode"],
 source: "compileNode: aNode\x0a\x09| generator result |\x0a\x09generator := self codeGeneratorClass new.\x0a\x09generator\x0a\x09\x09source: self source;\x0a\x09\x09currentClass: self currentClass.\x0a\x09result := generator compileNode: aNode.\x0a\x09self unknownVariables: #().\x0a\x09^result",
 messageSends: ["new", "codeGeneratorClass", "source:", "source", "currentClass:", "currentClass", "compileNode:", "unknownVariables:"],
@@ -128,8 +130,10 @@ selector: "currentClass",
 category: 'accessing',
 fn: function (){
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
return self["@currentClass"];
-}, self, "currentClass", [], smalltalk.Compiler)},
+return smalltalk.withContext(function($ctx1) { 
var $1;
+$1=self["@currentClass"];
+return $1;
+}, function($ctx1) {$ctx1.fill(self,"currentClass", [], smalltalk.Compiler)})},
 args: [],
 source: "currentClass\x0a\x09^currentClass",
 messageSends: [],
@@ -145,7 +149,7 @@ category: 'accessing',
 fn: function (aClass){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
self["@currentClass"]=aClass;
-return self}, self, "currentClass:", [aClass], smalltalk.Compiler)},
+return self}, function($ctx1) {$ctx1.fill(self,"currentClass:", [aClass], smalltalk.Compiler)})},
 args: ["aClass"],
 source: "currentClass: aClass\x0a\x09currentClass := aClass",
 messageSends: [],
@@ -161,8 +165,7 @@ category: 'compiling',
 fn: function (aString){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
return eval(aString);
-;
-return self}, self, "eval:", [aString], smalltalk.Compiler)},
+return self}, function($ctx1) {$ctx1.fill(self,"eval:", [aString], smalltalk.Compiler)})},
 args: ["aString"],
 source: "eval: aString\x0a\x09<return eval(aString)>",
 messageSends: [],
@@ -177,12 +180,14 @@ selector: "evaluateExpression:",
 category: 'compiling',
 fn: function (aString){
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
$ctx1.result=nil;
+var result;
+return smalltalk.withContext(function($ctx1) { 
var $1;
 _st((smalltalk.DoIt || DoIt))._addCompiledMethod_(_st(self)._eval_(_st(self)._compileExpression_(aString)));
-$ctx1.locals.result=_st(_st((smalltalk.DoIt || DoIt))._new())._doIt();
+result=_st(_st((smalltalk.DoIt || DoIt))._new())._doIt();
 _st((smalltalk.DoIt || DoIt))._removeCompiledMethod_(_st(_st((smalltalk.DoIt || DoIt))._methodDictionary())._at_("doIt"));
-return $ctx1.locals.result;
-}, self, "evaluateExpression:", [aString], smalltalk.Compiler)},
+$1=result;
+return $1;
+}, function($ctx1) {$ctx1.fill(self,"evaluateExpression:", [aString], smalltalk.Compiler)})},
 args: ["aString"],
 source: "evaluateExpression: aString\x0a\x09\x22Unlike #eval: evaluate a Smalltalk expression and answer the returned object\x22\x0a\x09| result |\x0a\x09DoIt addCompiledMethod: (self eval: (self compileExpression: aString)).\x0a\x09result := DoIt new doIt.\x0a\x09DoIt removeCompiledMethod: (DoIt methodDictionary at: 'doIt').\x0a\x09^result",
 messageSends: ["addCompiledMethod:", "eval:", "compileExpression:", "doIt", "new", "removeCompiledMethod:", "at:", "methodDictionary"],
@@ -197,13 +202,15 @@ selector: "install:forClass:category:",
 category: 'compiling',
 fn: function (aString,aBehavior,anotherString){
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
$ctx1.compiled=nil;
-$ctx1.locals.compiled=_st(self)._eval_(_st(self)._compile_forClass_(aString,aBehavior));
-_st($ctx1.locals.compiled)._category_(anotherString);
-_st(aBehavior)._addCompiledMethod_($ctx1.locals.compiled);
+var compiled;
+return smalltalk.withContext(function($ctx1) { 
var $1;
+compiled=_st(self)._eval_(_st(self)._compile_forClass_(aString,aBehavior));
+_st(compiled)._category_(anotherString);
+_st(aBehavior)._addCompiledMethod_(compiled);
 _st(self)._setupClass_(aBehavior);
-return $ctx1.locals.compiled;
-}, self, "install:forClass:category:", [aString,aBehavior,anotherString], smalltalk.Compiler)},
+$1=compiled;
+return $1;
+}, function($ctx1) {$ctx1.fill(self,"install:forClass:category:", [aString,aBehavior,anotherString], smalltalk.Compiler)})},
 args: ["aString", "aBehavior", "anotherString"],
 source: "install: aString forClass: aBehavior category: anotherString\x0a\x09| compiled |\x0a\x09compiled := self eval: (self compile: aString forClass: aBehavior).\x0a\x09compiled category: anotherString.\x0a\x09aBehavior addCompiledMethod: compiled.\x0a    self setupClass: aBehavior.\x0a\x09^compiled",
 messageSends: ["eval:", "compile:forClass:", "category:", "addCompiledMethod:", "setupClass:"],
@@ -221,7 +228,7 @@ var self=this;
 return smalltalk.withContext(function($ctx1) { 
var $1;
 $1=_st(_st((smalltalk.Smalltalk || Smalltalk))._current())._parse_(aString);
 return $1;
-}, self, "parse:", [aString], smalltalk.Compiler)},
+}, function($ctx1) {$ctx1.fill(self,"parse:", [aString], smalltalk.Compiler)})},
 args: ["aString"],
 source: "parse: aString\x0a    ^Smalltalk current parse: aString",
 messageSends: ["parse:", "current"],
@@ -239,7 +246,7 @@ var self=this;
 return smalltalk.withContext(function($ctx1) { 
var $1;
 $1=_st(self)._parse_(_st(_st("doIt ^[").__comma(aString)).__comma("] value"));
 return $1;
-}, self, "parseExpression:", [aString], smalltalk.Compiler)},
+}, function($ctx1) {$ctx1.fill(self,"parseExpression:", [aString], smalltalk.Compiler)})},
 args: ["aString"],
 source: "parseExpression: aString\x0a    ^self parse: 'doIt ^[', aString, '] value'",
 messageSends: ["parse:", ","],
@@ -256,15 +263,15 @@ fn: function (aClass){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
var $1;
 _st(_st(aClass)._methodDictionary())._do_((function(each){
-return smalltalk.withContext(function($ctx2) { 
_st(console)._log_(_st(_st(_st(aClass)._name()).__comma(" >> ")).__comma(_st(each)._selector()));
+return smalltalk.withContext(function($ctx2) {
_st(console)._log_(_st(_st(_st(aClass)._name()).__comma(" >> ")).__comma(_st(each)._selector()));
 return _st(self)._install_forClass_category_(_st(each)._source(),aClass,_st(each)._category());
-})}));
+}, function($ctx2) {$ctx2.fill(null, null, {})})}));
 _st(self)._setupClass_(aClass);
 $1=_st(aClass)._isMetaclass();
 if(! smalltalk.assert($1)){
 _st(self)._recompile_(_st(aClass)._class());
 };
-return self}, self, "recompile:", [aClass], smalltalk.Compiler)},
+return self}, function($ctx1) {$ctx1.fill(self,"recompile:", [aClass], smalltalk.Compiler)})},
 args: ["aClass"],
 source: "recompile: aClass\x0a\x09aClass methodDictionary do: [:each |\x0a\x09\x09console log: aClass name, ' >> ', each selector.\x0a\x09\x09self install: each source forClass: aClass category: each category].\x0a\x09self setupClass: aClass.\x0a\x09aClass isMetaclass ifFalse: [self recompile: aClass class]",
 messageSends: ["do:", "log:", ",", "selector", "name", "install:forClass:category:", "source", "category", "methodDictionary", "setupClass:", "ifFalse:", "recompile:", "class", "isMetaclass"],
@@ -279,16 +286,17 @@ selector: "recompileAll",
 category: 'compiling',
 fn: function (){
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $1;
+return smalltalk.withContext(function($ctx1) { 
var $1,$2;
 _st(_st(_st((smalltalk.Smalltalk || Smalltalk))._current())._classes())._do_((function(each){
-return smalltalk.withContext(function($ctx2) { 
_st((smalltalk.Transcript || Transcript))._show_(each);
-$1=_st((smalltalk.Transcript || Transcript))._cr();
-$1;
+return smalltalk.withContext(function($ctx2) {
$1=(smalltalk.Transcript || Transcript);
+_st($1)._show_(each);
+$2=_st($1)._cr();
+$2;
 return _st((function(){
-return smalltalk.withContext(function($ctx3) { 
return _st(self)._recompile_(each);
-})}))._valueWithTimeout_((100));
-})}));
-return self}, self, "recompileAll", [], smalltalk.Compiler)},
+return smalltalk.withContext(function($ctx3) {
return _st(self)._recompile_(each);
+}, function($ctx3) {$ctx3.fill(null, null, {})})}))._valueWithTimeout_((100));
+}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+return self}, function($ctx1) {$ctx1.fill(self,"recompileAll", [], smalltalk.Compiler)})},
 args: [],
 source: "recompileAll\x0a\x09Smalltalk current classes do: [:each |\x0a\x09\x09Transcript show: each; cr.\x0a\x09\x09[self recompile: each] valueWithTimeout: 100]",
 messageSends: ["do:", "show:", "cr", "valueWithTimeout:", "recompile:", "classes", "current"],
@@ -304,8 +312,7 @@ category: 'compiling',
 fn: function (aClass){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
smalltalk.init(aClass);
-;
-return self}, self, "setupClass:", [aClass], smalltalk.Compiler)},
+return self}, function($ctx1) {$ctx1.fill(self,"setupClass:", [aClass], smalltalk.Compiler)})},
 args: ["aClass"],
 source: "setupClass: aClass\x0a\x09<smalltalk.init(aClass)>",
 messageSends: [],
@@ -320,14 +327,15 @@ selector: "source",
 category: 'accessing',
 fn: function (){
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $1;
-if(($receiver = self["@source"]) == nil || $receiver == undefined){
+return smalltalk.withContext(function($ctx1) { 
var $2,$1;
+$2=self["@source"];
+if(($receiver = $2) == nil || $receiver == undefined){
 $1="";
 } else {
-$1=self["@source"];
+$1=$2;
 };
 return $1;
-}, self, "source", [], smalltalk.Compiler)},
+}, function($ctx1) {$ctx1.fill(self,"source", [], smalltalk.Compiler)})},
 args: [],
 source: "source\x0a\x09^source ifNil: ['']",
 messageSends: ["ifNil:"],
@@ -343,7 +351,7 @@ category: 'accessing',
 fn: function (aString){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
self["@source"]=aString;
-return self}, self, "source:", [aString], smalltalk.Compiler)},
+return self}, function($ctx1) {$ctx1.fill(self,"source:", [aString], smalltalk.Compiler)})},
 args: ["aString"],
 source: "source: aString\x0a\x09source := aString",
 messageSends: [],
@@ -358,8 +366,10 @@ selector: "unknownVariables",
 category: 'accessing',
 fn: function (){
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
return self["@unknownVariables"];
-}, self, "unknownVariables", [], smalltalk.Compiler)},
+return smalltalk.withContext(function($ctx1) { 
var $1;
+$1=self["@unknownVariables"];
+return $1;
+}, function($ctx1) {$ctx1.fill(self,"unknownVariables", [], smalltalk.Compiler)})},
 args: [],
 source: "unknownVariables\x0a\x09^unknownVariables",
 messageSends: [],
@@ -375,7 +385,7 @@ category: 'accessing',
 fn: function (aCollection){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
self["@unknownVariables"]=aCollection;
-return self}, self, "unknownVariables:", [aCollection], smalltalk.Compiler)},
+return self}, function($ctx1) {$ctx1.fill(self,"unknownVariables:", [aCollection], smalltalk.Compiler)})},
 args: ["aCollection"],
 source: "unknownVariables: aCollection\x0a\x09unknownVariables := aCollection",
 messageSends: [],
@@ -392,7 +402,7 @@ category: 'compiling',
 fn: function (aClass){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
_st(_st(self)._new())._recompile_(aClass);
-return self}, self, "recompile:", [aClass], smalltalk.Compiler.klass)},
+return self}, function($ctx1) {$ctx1.fill(self,"recompile:", [aClass], smalltalk.Compiler.klass)})},
 args: ["aClass"],
 source: "recompile: aClass\x0a\x09self new recompile: aClass",
 messageSends: ["recompile:", "new"],
@@ -408,9 +418,9 @@ category: 'compiling',
 fn: function (){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
_st(_st(_st((smalltalk.Smalltalk || Smalltalk))._current())._classes())._do_((function(each){
-return smalltalk.withContext(function($ctx2) { 
return _st(self)._recompile_(each);
-})}));
-return self}, self, "recompileAll", [], smalltalk.Compiler.klass)},
+return smalltalk.withContext(function($ctx2) {
return _st(self)._recompile_(each);
+}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+return self}, function($ctx1) {$ctx1.fill(self,"recompileAll", [], smalltalk.Compiler.klass)})},
 args: [],
 source: "recompileAll\x0a\x09Smalltalk current classes do: [:each |\x0a\x09\x09self recompile: each]",
 messageSends: ["do:", "recompile:", "classes", "current"],
@@ -435,7 +445,7 @@ var self=this;
 return smalltalk.withContext(function($ctx1) { 
var $1;
 $1=_st(aNode)._accept_(self);
 return $1;
-}, self, "visit:", [aNode], smalltalk.NodeVisitor)},
+}, function($ctx1) {$ctx1.fill(self,"visit:", [aNode], smalltalk.NodeVisitor)})},
 args: ["aNode"],
 source: "visit: aNode\x0a\x09^ aNode accept: self",
 messageSends: ["accept:"],
@@ -452,10 +462,10 @@ fn: function (aCollection){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
var $1;
 $1=_st(aCollection)._do_((function(each){
-return smalltalk.withContext(function($ctx2) { 
return _st(self)._visit_(each);
-})}));
+return smalltalk.withContext(function($ctx2) {
return _st(self)._visit_(each);
+}, function($ctx2) {$ctx2.fill(null, null, {})})}));
 return $1;
-}, self, "visitAll:", [aCollection], smalltalk.NodeVisitor)},
+}, function($ctx1) {$ctx1.fill(self,"visitAll:", [aCollection], smalltalk.NodeVisitor)})},
 args: ["aCollection"],
 source: "visitAll: aCollection\x0a\x09^ aCollection do: [ :each | self visit: each ]",
 messageSends: ["do:", "visit:"],
@@ -473,7 +483,7 @@ var self=this;
 return smalltalk.withContext(function($ctx1) { 
var $1;
 $1=_st(self)._visitNode_(aNode);
 return $1;
-}, self, "visitAssignmentNode:", [aNode], smalltalk.NodeVisitor)},
+}, function($ctx1) {$ctx1.fill(self,"visitAssignmentNode:", [aNode], smalltalk.NodeVisitor)})},
 args: ["aNode"],
 source: "visitAssignmentNode: aNode\x0a\x09^ self visitNode: aNode",
 messageSends: ["visitNode:"],
@@ -491,7 +501,7 @@ var self=this;
 return smalltalk.withContext(function($ctx1) { 
var $1;
 $1=_st(self)._visitNode_(aNode);
 return $1;
-}, self, "visitBlockNode:", [aNode], smalltalk.NodeVisitor)},
+}, function($ctx1) {$ctx1.fill(self,"visitBlockNode:", [aNode], smalltalk.NodeVisitor)})},
 args: ["aNode"],
 source: "visitBlockNode: aNode\x0a\x09^ self visitNode: aNode",
 messageSends: ["visitNode:"],
@@ -509,7 +519,7 @@ var self=this;
 return smalltalk.withContext(function($ctx1) { 
var $1;
 $1=_st(self)._visitSequenceNode_(aNode);
 return $1;
-}, self, "visitBlockSequenceNode:", [aNode], smalltalk.NodeVisitor)},
+}, function($ctx1) {$ctx1.fill(self,"visitBlockSequenceNode:", [aNode], smalltalk.NodeVisitor)})},
 args: ["aNode"],
 source: "visitBlockSequenceNode: aNode\x0a\x09^ self visitSequenceNode: aNode",
 messageSends: ["visitSequenceNode:"],
@@ -527,7 +537,7 @@ var self=this;
 return smalltalk.withContext(function($ctx1) { 
var $1;
 $1=_st(self)._visitNode_(aNode);
 return $1;
-}, self, "visitCascadeNode:", [aNode], smalltalk.NodeVisitor)},
+}, function($ctx1) {$ctx1.fill(self,"visitCascadeNode:", [aNode], smalltalk.NodeVisitor)})},
 args: ["aNode"],
 source: "visitCascadeNode: aNode\x0a\x09^ self visitNode: aNode",
 messageSends: ["visitNode:"],
@@ -545,7 +555,7 @@ var self=this;
 return smalltalk.withContext(function($ctx1) { 
var $1;
 $1=_st(self)._visitVariableNode_(aNode);
 return $1;
-}, self, "visitClassReferenceNode:", [aNode], smalltalk.NodeVisitor)},
+}, function($ctx1) {$ctx1.fill(self,"visitClassReferenceNode:", [aNode], smalltalk.NodeVisitor)})},
 args: ["aNode"],
 source: "visitClassReferenceNode: aNode\x0a\x09^ self visitVariableNode: aNode",
 messageSends: ["visitVariableNode:"],
@@ -563,7 +573,7 @@ var self=this;
 return smalltalk.withContext(function($ctx1) { 
var $1;
 $1=_st(self)._visitNode_(aNode);
 return $1;
-}, self, "visitDynamicArrayNode:", [aNode], smalltalk.NodeVisitor)},
+}, function($ctx1) {$ctx1.fill(self,"visitDynamicArrayNode:", [aNode], smalltalk.NodeVisitor)})},
 args: ["aNode"],
 source: "visitDynamicArrayNode: aNode\x0a\x09^ self visitNode: aNode",
 messageSends: ["visitNode:"],
@@ -581,7 +591,7 @@ var self=this;
 return smalltalk.withContext(function($ctx1) { 
var $1;
 $1=_st(self)._visitNode_(aNode);
 return $1;
-}, self, "visitDynamicDictionaryNode:", [aNode], smalltalk.NodeVisitor)},
+}, function($ctx1) {$ctx1.fill(self,"visitDynamicDictionaryNode:", [aNode], smalltalk.NodeVisitor)})},
 args: ["aNode"],
 source: "visitDynamicDictionaryNode: aNode\x0a\x09^ self visitNode: aNode",
 messageSends: ["visitNode:"],
@@ -599,7 +609,7 @@ var self=this;
 return smalltalk.withContext(function($ctx1) { 
var $1;
 $1=_st(self)._visitNode_(aNode);
 return $1;
-}, self, "visitJSStatementNode:", [aNode], smalltalk.NodeVisitor)},
+}, function($ctx1) {$ctx1.fill(self,"visitJSStatementNode:", [aNode], smalltalk.NodeVisitor)})},
 args: ["aNode"],
 source: "visitJSStatementNode: aNode\x0a\x09^ self visitNode: aNode",
 messageSends: ["visitNode:"],
@@ -617,7 +627,7 @@ var self=this;
 return smalltalk.withContext(function($ctx1) { 
var $1;
 $1=_st(self)._visitNode_(aNode);
 return $1;
-}, self, "visitMethodNode:", [aNode], smalltalk.NodeVisitor)},
+}, function($ctx1) {$ctx1.fill(self,"visitMethodNode:", [aNode], smalltalk.NodeVisitor)})},
 args: ["aNode"],
 source: "visitMethodNode: aNode\x0a\x09^ self visitNode: aNode",
 messageSends: ["visitNode:"],
@@ -635,7 +645,7 @@ var self=this;
 return smalltalk.withContext(function($ctx1) { 
var $1;
 $1=_st(self)._visitAll_(_st(aNode)._nodes());
 return $1;
-}, self, "visitNode:", [aNode], smalltalk.NodeVisitor)},
+}, function($ctx1) {$ctx1.fill(self,"visitNode:", [aNode], smalltalk.NodeVisitor)})},
 args: ["aNode"],
 source: "visitNode: aNode\x0a\x09^ self visitAll: aNode nodes",
 messageSends: ["visitAll:", "nodes"],
@@ -653,7 +663,7 @@ var self=this;
 return smalltalk.withContext(function($ctx1) { 
var $1;
 $1=_st(self)._visitNode_(aNode);
 return $1;
-}, self, "visitReturnNode:", [aNode], smalltalk.NodeVisitor)},
+}, function($ctx1) {$ctx1.fill(self,"visitReturnNode:", [aNode], smalltalk.NodeVisitor)})},
 args: ["aNode"],
 source: "visitReturnNode: aNode\x0a\x09^ self visitNode: aNode",
 messageSends: ["visitNode:"],
@@ -671,7 +681,7 @@ var self=this;
 return smalltalk.withContext(function($ctx1) { 
var $1;
 $1=_st(self)._visitNode_(aNode);
 return $1;
-}, self, "visitSendNode:", [aNode], smalltalk.NodeVisitor)},
+}, function($ctx1) {$ctx1.fill(self,"visitSendNode:", [aNode], smalltalk.NodeVisitor)})},
 args: ["aNode"],
 source: "visitSendNode: aNode\x0a\x09^ self visitNode: aNode",
 messageSends: ["visitNode:"],
@@ -689,7 +699,7 @@ var self=this;
 return smalltalk.withContext(function($ctx1) { 
var $1;
 $1=_st(self)._visitNode_(aNode);
 return $1;
-}, self, "visitSequenceNode:", [aNode], smalltalk.NodeVisitor)},
+}, function($ctx1) {$ctx1.fill(self,"visitSequenceNode:", [aNode], smalltalk.NodeVisitor)})},
 args: ["aNode"],
 source: "visitSequenceNode: aNode\x0a\x09^ self visitNode: aNode",
 messageSends: ["visitNode:"],
@@ -707,7 +717,7 @@ var self=this;
 return smalltalk.withContext(function($ctx1) { 
var $1;
 $1=_st(self)._visitNode_(aNode);
 return $1;
-}, self, "visitValueNode:", [aNode], smalltalk.NodeVisitor)},
+}, function($ctx1) {$ctx1.fill(self,"visitValueNode:", [aNode], smalltalk.NodeVisitor)})},
 args: ["aNode"],
 source: "visitValueNode: aNode\x0a\x09^ self visitNode: aNode",
 messageSends: ["visitNode:"],
@@ -725,7 +735,7 @@ var self=this;
 return smalltalk.withContext(function($ctx1) { 
var $1;
 $1=_st(self)._visitNode_(aNode);
 return $1;
-}, self, "visitVariableNode:", [aNode], smalltalk.NodeVisitor)},
+}, function($ctx1) {$ctx1.fill(self,"visitVariableNode:", [aNode], smalltalk.NodeVisitor)})},
 args: ["aNode"],
 source: "visitVariableNode: aNode\x0a\x09^ self visitNode: aNode",
 messageSends: ["visitNode:"],
@@ -744,20 +754,22 @@ selector: "classNameFor:",
 category: 'accessing',
 fn: function (aClass){
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $2,$3,$1;
+return smalltalk.withContext(function($ctx1) { 
var $2,$3,$5,$4,$1;
 $2=_st(aClass)._isMetaclass();
-if(smalltalk.assert($2)){
-$1=_st(_st(_st(aClass)._instanceClass())._name()).__comma(".klass");
-} else {
-$3=_st(aClass)._isNil();
-if(smalltalk.assert($3)){
-$1="nil";
+$3=(function(){
+return smalltalk.withContext(function($ctx2) {
return _st(_st(_st(aClass)._instanceClass())._name()).__comma(".klass");
+}, function($ctx2) {$ctx2.fill(null, null, {})})});
+$4=(function(){
+return smalltalk.withContext(function($ctx2) {
$5=_st(aClass)._isNil();
+if(smalltalk.assert($5)){
+return "nil";
 } else {
-$1=_st(aClass)._name();
-};
+return _st(aClass)._name();
 };
+}, function($ctx2) {$ctx2.fill(null, null, {})})});
+$1=_st($2)._ifTrue_ifFalse_($3,$4);
 return $1;
-}, self, "classNameFor:", [aClass], smalltalk.AbstractCodeGenerator)},
+}, function($ctx1) {$ctx1.fill(self,"classNameFor:", [aClass], smalltalk.AbstractCodeGenerator)})},
 args: ["aClass"],
 source: "classNameFor: aClass\x0a\x09^aClass isMetaclass\x0a\x09    ifTrue: [aClass instanceClass name, '.klass']\x0a\x09    ifFalse: [\x0a\x09\x09aClass isNil\x0a\x09\x09    ifTrue: ['nil']\x0a\x09\x09    ifFalse: [aClass name]]",
 messageSends: ["ifTrue:ifFalse:", ",", "name", "instanceClass", "isNil", "isMetaclass"],
@@ -773,7 +785,7 @@ category: 'compiling',
 fn: function (aNode){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
_st(self)._subclassResponsibility();
-return self}, self, "compileNode:", [aNode], smalltalk.AbstractCodeGenerator)},
+return self}, function($ctx1) {$ctx1.fill(self,"compileNode:", [aNode], smalltalk.AbstractCodeGenerator)})},
 args: ["aNode"],
 source: "compileNode: aNode\x0a\x09self subclassResponsibility",
 messageSends: ["subclassResponsibility"],
@@ -788,8 +800,10 @@ selector: "currentClass",
 category: 'accessing',
 fn: function (){
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
return self["@currentClass"];
-}, self, "currentClass", [], smalltalk.AbstractCodeGenerator)},
+return smalltalk.withContext(function($ctx1) { 
var $1;
+$1=self["@currentClass"];
+return $1;
+}, function($ctx1) {$ctx1.fill(self,"currentClass", [], smalltalk.AbstractCodeGenerator)})},
 args: [],
 source: "currentClass\x0a\x09^currentClass",
 messageSends: [],
@@ -805,7 +819,7 @@ category: 'accessing',
 fn: function (aClass){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
self["@currentClass"]=aClass;
-return self}, self, "currentClass:", [aClass], smalltalk.AbstractCodeGenerator)},
+return self}, function($ctx1) {$ctx1.fill(self,"currentClass:", [aClass], smalltalk.AbstractCodeGenerator)})},
 args: ["aClass"],
 source: "currentClass: aClass\x0a\x09currentClass := aClass",
 messageSends: [],
@@ -821,7 +835,7 @@ category: 'accessing',
 fn: function (){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
return ["self", "super", "true", "false", "nil", "thisContext"];
-}, self, "pseudoVariables", [], smalltalk.AbstractCodeGenerator)},
+}, function($ctx1) {$ctx1.fill(self,"pseudoVariables", [], smalltalk.AbstractCodeGenerator)})},
 args: [],
 source: "pseudoVariables\x0a\x09^#('self' 'super' 'true' 'false' 'nil' 'thisContext')",
 messageSends: [],
@@ -844,7 +858,7 @@ $1=_st(aString).__comma("_");
 $1=aString;
 };
 return $1;
-}, self, "safeVariableNameFor:", [aString], smalltalk.AbstractCodeGenerator)},
+}, function($ctx1) {$ctx1.fill(self,"safeVariableNameFor:", [aString], smalltalk.AbstractCodeGenerator)})},
 args: ["aString"],
 source: "safeVariableNameFor: aString\x0a\x09^(Smalltalk current reservedWords includes: aString)\x0a\x09\x09ifTrue: [aString, '_']\x0a\x09\x09ifFalse: [aString]",
 messageSends: ["ifTrue:ifFalse:", ",", "includes:", "reservedWords", "current"],
@@ -859,14 +873,15 @@ selector: "source",
 category: 'accessing',
 fn: function (){
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $1;
-if(($receiver = self["@source"]) == nil || $receiver == undefined){
+return smalltalk.withContext(function($ctx1) { 
var $2,$1;
+$2=self["@source"];
+if(($receiver = $2) == nil || $receiver == undefined){
 $1="";
 } else {
-$1=self["@source"];
+$1=$2;
 };
 return $1;
-}, self, "source", [], smalltalk.AbstractCodeGenerator)},
+}, function($ctx1) {$ctx1.fill(self,"source", [], smalltalk.AbstractCodeGenerator)})},
 args: [],
 source: "source\x0a\x09^source ifNil: ['']",
 messageSends: ["ifNil:"],
@@ -882,7 +897,7 @@ category: 'accessing',
 fn: function (aString){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
self["@source"]=aString;
-return self}, self, "source:", [aString], smalltalk.AbstractCodeGenerator)},
+return self}, function($ctx1) {$ctx1.fill(self,"source:", [aString], smalltalk.AbstractCodeGenerator)})},
 args: ["aString"],
 source: "source: aString\x0a\x09source := aString",
 messageSends: [],
@@ -901,17 +916,16 @@ selector: "compileNode:",
 category: 'compiling',
 fn: function (aNode){
 var self=this;
+var ir,stream;
 return smalltalk.withContext(function($ctx1) { 
var $2,$3,$1;
-$ctx1.ir=nil;
-$ctx1.stream=nil;
 _st(_st(self)._semanticAnalyzer())._visit_(aNode);
-$ctx1.locals.ir=_st(_st(self)._translator())._visit_(aNode);
+ir=_st(_st(self)._translator())._visit_(aNode);
 $2=_st(self)._irTranslator();
-_st($2)._visit_($ctx1.locals.ir);
+_st($2)._visit_(ir);
 $3=_st($2)._contents();
 $1=$3;
 return $1;
-}, self, "compileNode:", [aNode], smalltalk.CodeGenerator)},
+}, function($ctx1) {$ctx1.fill(self,"compileNode:", [aNode], smalltalk.CodeGenerator)})},
 args: ["aNode"],
 source: "compileNode: aNode\x0a\x09| ir stream |\x0a\x09self semanticAnalyzer visit: aNode.\x0a\x09ir := self translator visit: aNode.\x0a\x09^ self irTranslator\x0a\x09\x09visit: ir;\x0a\x09\x09contents",
 messageSends: ["visit:", "semanticAnalyzer", "translator", "irTranslator", "contents"],
@@ -929,7 +943,7 @@ var self=this;
 return smalltalk.withContext(function($ctx1) { 
var $1;
 $1=_st((smalltalk.IRJSTranslator || IRJSTranslator))._new();
 return $1;
-}, self, "irTranslator", [], smalltalk.CodeGenerator)},
+}, function($ctx1) {$ctx1.fill(self,"irTranslator", [], smalltalk.CodeGenerator)})},
 args: [],
 source: "irTranslator\x0a\x09^ IRJSTranslator new",
 messageSends: ["new"],
@@ -947,7 +961,7 @@ var self=this;
 return smalltalk.withContext(function($ctx1) { 
var $1;
 $1=_st((smalltalk.SemanticAnalyzer || SemanticAnalyzer))._on_(_st(self)._currentClass());
 return $1;
-}, self, "semanticAnalyzer", [], smalltalk.CodeGenerator)},
+}, function($ctx1) {$ctx1.fill(self,"semanticAnalyzer", [], smalltalk.CodeGenerator)})},
 args: [],
 source: "semanticAnalyzer\x0a\x09^ SemanticAnalyzer on: self currentClass",
 messageSends: ["on:", "currentClass"],
@@ -969,7 +983,7 @@ _st($2)._theClass_(_st(self)._currentClass());
 $3=_st($2)._yourself();
 $1=$3;
 return $1;
-}, self, "translator", [], smalltalk.CodeGenerator)},
+}, function($ctx1) {$ctx1.fill(self,"translator", [], smalltalk.CodeGenerator)})},
 args: [],
 source: "translator\x0a\x09^ IRASTTranslator new\x0a\x09\x09source: self source;\x0a\x09\x09theClass: self currentClass;\x0a\x09\x09yourself",
 messageSends: ["source:", "source", "new", "theClass:", "currentClass", "yourself"],

+ 17 - 11
js/Compiler-Exceptions.deploy.js

@@ -21,7 +21,7 @@ var self=this;
 return smalltalk.withContext(function($ctx1) { 
var $1;
 $1=_st(" Invalid assignment to variable: ").__comma(_st(self)._variableName());
 return $1;
-}, self, "messageText", [], smalltalk.InvalidAssignmentError)}
+}, function($ctx1) {$ctx1.fill(self,"messageText", [], smalltalk.InvalidAssignmentError)})}
 }),
 smalltalk.InvalidAssignmentError);
 
@@ -31,8 +31,10 @@ smalltalk.method({
 selector: "variableName",
 fn: function (){
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
return self["@variableName"];
-}, self, "variableName", [], smalltalk.InvalidAssignmentError)}
+return smalltalk.withContext(function($ctx1) { 
var $1;
+$1=self["@variableName"];
+return $1;
+}, function($ctx1) {$ctx1.fill(self,"variableName", [], smalltalk.InvalidAssignmentError)})}
 }),
 smalltalk.InvalidAssignmentError);
 
@@ -43,7 +45,7 @@ selector: "variableName:",
 fn: function (aString){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
self["@variableName"]=aString;
-return self}, self, "variableName:", [aString], smalltalk.InvalidAssignmentError)}
+return self}, function($ctx1) {$ctx1.fill(self,"variableName:", [aString], smalltalk.InvalidAssignmentError)})}
 }),
 smalltalk.InvalidAssignmentError);
 
@@ -59,7 +61,7 @@ var self=this;
 return smalltalk.withContext(function($ctx1) { 
var $1;
 $1=_st(_st("Variable shadowing error: ").__comma(_st(self)._variableName())).__comma(" is already defined");
 return $1;
-}, self, "messageText", [], smalltalk.ShadowingVariableError)}
+}, function($ctx1) {$ctx1.fill(self,"messageText", [], smalltalk.ShadowingVariableError)})}
 }),
 smalltalk.ShadowingVariableError);
 
@@ -69,8 +71,10 @@ smalltalk.method({
 selector: "variableName",
 fn: function (){
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
return self["@variableName"];
-}, self, "variableName", [], smalltalk.ShadowingVariableError)}
+return smalltalk.withContext(function($ctx1) { 
var $1;
+$1=self["@variableName"];
+return $1;
+}, function($ctx1) {$ctx1.fill(self,"variableName", [], smalltalk.ShadowingVariableError)})}
 }),
 smalltalk.ShadowingVariableError);
 
@@ -81,7 +85,7 @@ selector: "variableName:",
 fn: function (aString){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
self["@variableName"]=aString;
-return self}, self, "variableName:", [aString], smalltalk.ShadowingVariableError)}
+return self}, function($ctx1) {$ctx1.fill(self,"variableName:", [aString], smalltalk.ShadowingVariableError)})}
 }),
 smalltalk.ShadowingVariableError);
 
@@ -94,8 +98,10 @@ smalltalk.method({
 selector: "variableName",
 fn: function (){
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
return self["@variableName"];
-}, self, "variableName", [], smalltalk.UnknownVariableError)}
+return smalltalk.withContext(function($ctx1) { 
var $1;
+$1=self["@variableName"];
+return $1;
+}, function($ctx1) {$ctx1.fill(self,"variableName", [], smalltalk.UnknownVariableError)})}
 }),
 smalltalk.UnknownVariableError);
 
@@ -106,7 +112,7 @@ selector: "variableName:",
 fn: function (aString){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
self["@variableName"]=aString;
-return self}, self, "variableName:", [aString], smalltalk.UnknownVariableError)}
+return self}, function($ctx1) {$ctx1.fill(self,"variableName:", [aString], smalltalk.UnknownVariableError)})}
 }),
 smalltalk.UnknownVariableError);
 

+ 17 - 11
js/Compiler-Exceptions.js

@@ -27,7 +27,7 @@ var self=this;
 return smalltalk.withContext(function($ctx1) { 
var $1;
 $1=_st(" Invalid assignment to variable: ").__comma(_st(self)._variableName());
 return $1;
-}, self, "messageText", [], smalltalk.InvalidAssignmentError)},
+}, function($ctx1) {$ctx1.fill(self,"messageText", [], smalltalk.InvalidAssignmentError)})},
 args: [],
 source: "messageText\x0a\x09^ ' Invalid assignment to variable: ', self variableName",
 messageSends: [",", "variableName"],
@@ -42,8 +42,10 @@ selector: "variableName",
 category: 'accessing',
 fn: function (){
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
return self["@variableName"];
-}, self, "variableName", [], smalltalk.InvalidAssignmentError)},
+return smalltalk.withContext(function($ctx1) { 
var $1;
+$1=self["@variableName"];
+return $1;
+}, function($ctx1) {$ctx1.fill(self,"variableName", [], smalltalk.InvalidAssignmentError)})},
 args: [],
 source: "variableName\x0a\x09^ variableName",
 messageSends: [],
@@ -59,7 +61,7 @@ category: 'accessing',
 fn: function (aString){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
self["@variableName"]=aString;
-return self}, self, "variableName:", [aString], smalltalk.InvalidAssignmentError)},
+return self}, function($ctx1) {$ctx1.fill(self,"variableName:", [aString], smalltalk.InvalidAssignmentError)})},
 args: ["aString"],
 source: "variableName: aString\x0a\x09variableName := aString",
 messageSends: [],
@@ -81,7 +83,7 @@ var self=this;
 return smalltalk.withContext(function($ctx1) { 
var $1;
 $1=_st(_st("Variable shadowing error: ").__comma(_st(self)._variableName())).__comma(" is already defined");
 return $1;
-}, self, "messageText", [], smalltalk.ShadowingVariableError)},
+}, function($ctx1) {$ctx1.fill(self,"messageText", [], smalltalk.ShadowingVariableError)})},
 args: [],
 source: "messageText\x0a\x09^ 'Variable shadowing error: ', self variableName, ' is already defined'",
 messageSends: [",", "variableName"],
@@ -96,8 +98,10 @@ selector: "variableName",
 category: 'accessing',
 fn: function (){
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
return self["@variableName"];
-}, self, "variableName", [], smalltalk.ShadowingVariableError)},
+return smalltalk.withContext(function($ctx1) { 
var $1;
+$1=self["@variableName"];
+return $1;
+}, function($ctx1) {$ctx1.fill(self,"variableName", [], smalltalk.ShadowingVariableError)})},
 args: [],
 source: "variableName\x0a\x09^ variableName",
 messageSends: [],
@@ -113,7 +117,7 @@ category: 'accessing',
 fn: function (aString){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
self["@variableName"]=aString;
-return self}, self, "variableName:", [aString], smalltalk.ShadowingVariableError)},
+return self}, function($ctx1) {$ctx1.fill(self,"variableName:", [aString], smalltalk.ShadowingVariableError)})},
 args: ["aString"],
 source: "variableName: aString\x0a\x09variableName := aString",
 messageSends: [],
@@ -132,8 +136,10 @@ selector: "variableName",
 category: 'accessing',
 fn: function (){
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
return self["@variableName"];
-}, self, "variableName", [], smalltalk.UnknownVariableError)},
+return smalltalk.withContext(function($ctx1) { 
var $1;
+$1=self["@variableName"];
+return $1;
+}, function($ctx1) {$ctx1.fill(self,"variableName", [], smalltalk.UnknownVariableError)})},
 args: [],
 source: "variableName\x0a\x09^ variableName",
 messageSends: [],
@@ -149,7 +155,7 @@ category: 'accessing',
 fn: function (aString){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
self["@variableName"]=aString;
-return self}, self, "variableName:", [aString], smalltalk.UnknownVariableError)},
+return self}, function($ctx1) {$ctx1.fill(self,"variableName:", [aString], smalltalk.UnknownVariableError)})},
 args: ["aString"],
 source: "variableName: aString\x0a\x09variableName := aString",
 messageSends: [],

Filskillnaden har hållts tillbaka eftersom den är för stor
+ 179 - 171
js/Compiler-IR.deploy.js


Filskillnaden har hållts tillbaka eftersom den är för stor
+ 183 - 170
js/Compiler-IR.js


Filskillnaden har hållts tillbaka eftersom den är för stor
+ 241 - 219
js/Compiler-Inlining.deploy.js


Filskillnaden har hållts tillbaka eftersom den är för stor
+ 241 - 219
js/Compiler-Inlining.js


+ 42 - 43
js/Compiler-Interpreter.deploy.js

@@ -17,9 +17,9 @@ $1;
 _st(self)._outerContext_(_st(_st(self)._class())._fromMethodContext_(_st(aMethodContext)._outerContext()));
 };
 _st(_st(aMethodContext)._locals())._keysAndValuesDo_((function(key,value){
-return smalltalk.withContext(function($ctx2) { 
return _st(_st(self)._locals())._at_put_(key,value);
-})}));
-return self}, self, "initializeFromMethodContext:", [aMethodContext], smalltalk.AIContext)}
+return smalltalk.withContext(function($ctx2) {
return _st(_st(self)._locals())._at_put_(key,value);
+}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+return self}, function($ctx1) {$ctx1.fill(self,"initializeFromMethodContext:", [aMethodContext], smalltalk.AIContext)})}
 }),
 smalltalk.AIContext);
 
@@ -30,7 +30,7 @@ selector: "localAt:put:",
 fn: function (aString,anObject){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
_st(_st(self)._locals())._at_put_(aString,anObject);
-return self}, self, "localAt:put:", [aString,anObject], smalltalk.AIContext)}
+return self}, function($ctx1) {$ctx1.fill(self,"localAt:put:", [aString,anObject], smalltalk.AIContext)})}
 }),
 smalltalk.AIContext);
 
@@ -49,7 +49,7 @@ $1=self["@locals"];
 $1=$2;
 };
 return $1;
-}, self, "locals", [], smalltalk.AIContext)}
+}, function($ctx1) {$ctx1.fill(self,"locals", [], smalltalk.AIContext)})}
 }),
 smalltalk.AIContext);
 
@@ -62,7 +62,7 @@ var self=this;
 return smalltalk.withContext(function($ctx1) { 
var $1;
 $1=self["@outerContext"];
 return $1;
-}, self, "outerContext", [], smalltalk.AIContext)}
+}, function($ctx1) {$ctx1.fill(self,"outerContext", [], smalltalk.AIContext)})}
 }),
 smalltalk.AIContext);
 
@@ -73,7 +73,7 @@ selector: "outerContext:",
 fn: function (anAIContext){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
self["@outerContext"]=anAIContext;
-return self}, self, "outerContext:", [anAIContext], smalltalk.AIContext)}
+return self}, function($ctx1) {$ctx1.fill(self,"outerContext:", [anAIContext], smalltalk.AIContext)})}
 }),
 smalltalk.AIContext);
 
@@ -92,7 +92,7 @@ $1=self["@pc"];
 $1=$2;
 };
 return $1;
-}, self, "pc", [], smalltalk.AIContext)}
+}, function($ctx1) {$ctx1.fill(self,"pc", [], smalltalk.AIContext)})}
 }),
 smalltalk.AIContext);
 
@@ -103,7 +103,7 @@ selector: "pc:",
 fn: function (anInteger){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
self["@pc"]=anInteger;
-return self}, self, "pc:", [anInteger], smalltalk.AIContext)}
+return self}, function($ctx1) {$ctx1.fill(self,"pc:", [anInteger], smalltalk.AIContext)})}
 }),
 smalltalk.AIContext);
 
@@ -116,7 +116,7 @@ var self=this;
 return smalltalk.withContext(function($ctx1) { 
var $1;
 $1=self["@receiver"];
 return $1;
-}, self, "receiver", [], smalltalk.AIContext)}
+}, function($ctx1) {$ctx1.fill(self,"receiver", [], smalltalk.AIContext)})}
 }),
 smalltalk.AIContext);
 
@@ -127,7 +127,7 @@ selector: "receiver:",
 fn: function (anObject){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
self["@receiver"]=anObject;
-return self}, self, "receiver:", [anObject], smalltalk.AIContext)}
+return self}, function($ctx1) {$ctx1.fill(self,"receiver:", [anObject], smalltalk.AIContext)})}
 }),
 smalltalk.AIContext);
 
@@ -140,7 +140,7 @@ var self=this;
 return smalltalk.withContext(function($ctx1) { 
var $1;
 $1=self["@selector"];
 return $1;
-}, self, "selector", [], smalltalk.AIContext)}
+}, function($ctx1) {$ctx1.fill(self,"selector", [], smalltalk.AIContext)})}
 }),
 smalltalk.AIContext);
 
@@ -151,7 +151,7 @@ selector: "selector:",
 fn: function (aString){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
self["@selector"]=aString;
-return self}, self, "selector:", [aString], smalltalk.AIContext)}
+return self}, function($ctx1) {$ctx1.fill(self,"selector:", [aString], smalltalk.AIContext)})}
 }),
 smalltalk.AIContext);
 
@@ -168,7 +168,7 @@ _st($2)._initializeFromMethodContext_(aMethodContext);
 $3=_st($2)._yourself();
 $1=$3;
 return $1;
-}, self, "fromMethodContext:", [aMethodContext], smalltalk.AIContext.klass)}
+}, function($ctx1) {$ctx1.fill(self,"fromMethodContext:", [aMethodContext], smalltalk.AIContext.klass)})}
 }),
 smalltalk.AIContext.klass);
 
@@ -189,7 +189,7 @@ $1=self["@context"];
 $1=$2;
 };
 return $1;
-}, self, "context", [], smalltalk.ASTInterpreter)}
+}, function($ctx1) {$ctx1.fill(self,"context", [], smalltalk.ASTInterpreter)})}
 }),
 smalltalk.ASTInterpreter);
 
@@ -200,7 +200,7 @@ selector: "context:",
 fn: function (anAIContext){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
self["@context"]=anAIContext;
-return self}, self, "context:", [anAIContext], smalltalk.ASTInterpreter)}
+return self}, function($ctx1) {$ctx1.fill(self,"context:", [anAIContext], smalltalk.ASTInterpreter)})}
 }),
 smalltalk.ASTInterpreter);
 
@@ -213,7 +213,7 @@ var self=this;
 return smalltalk.withContext(function($ctx1) { 
var $1;
 $1=_st(_st((smalltalk.Compiler || Compiler))._new())._eval_(_st(_st("(function() { ").__comma(aString)).__comma(" })()"));
 return $1;
-}, self, "eval:", [aString], smalltalk.ASTInterpreter)}
+}, function($ctx1) {$ctx1.fill(self,"eval:", [aString], smalltalk.ASTInterpreter)})}
 }),
 smalltalk.ASTInterpreter);
 
@@ -225,7 +225,7 @@ fn: function (){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
smalltalk.NodeVisitor.fn.prototype._initialize.apply(_st(self), []);
 self["@shouldReturn"]=false;
-return self}, self, "initialize", [], smalltalk.ASTInterpreter)}
+return self}, function($ctx1) {$ctx1.fill(self,"initialize", [], smalltalk.ASTInterpreter)})}
 }),
 smalltalk.ASTInterpreter);
 
@@ -239,7 +239,7 @@ return smalltalk.withContext(function($ctx1) { 
var $1;
 self["@shouldReturn"]=false;
 $1=_st(self)._interpretNode_(aNode);
 return $1;
-}, self, "interpret:", [aNode], smalltalk.ASTInterpreter)}
+}, function($ctx1) {$ctx1.fill(self,"interpret:", [aNode], smalltalk.ASTInterpreter)})}
 }),
 smalltalk.ASTInterpreter);
 
@@ -253,7 +253,7 @@ return smalltalk.withContext(function($ctx1) { 
var $1;
 self["@currentNode"]=aNode;
 $1=_st(self)._visit_(aNode);
 return $1;
-}, self, "interpretNode:", [aNode], smalltalk.ASTInterpreter)}
+}, function($ctx1) {$ctx1.fill(self,"interpretNode:", [aNode], smalltalk.ASTInterpreter)})}
 }),
 smalltalk.ASTInterpreter);
 
@@ -267,12 +267,12 @@ return smalltalk.withContext(function($ctx1) { 
var $2,$3,$1;
 $2=_st((smalltalk.Message || Message))._new();
 _st($2)._selector_(_st(aSendNode)._selector());
 _st($2)._arguments_(_st(_st(aSendNode)._arguments())._collect_((function(each){
-return smalltalk.withContext(function($ctx2) { 
return _st(self)._interpretNode_(each);
-})})));
+return smalltalk.withContext(function($ctx2) {
return _st(self)._interpretNode_(each);
+}, function($ctx2) {$ctx2.fill(null, null, {})})})));
 $3=_st($2)._yourself();
 $1=$3;
 return $1;
-}, self, "messageFromSendNode:", [aSendNode], smalltalk.ASTInterpreter)}
+}, function($ctx1) {$ctx1.fill(self,"messageFromSendNode:", [aSendNode], smalltalk.ASTInterpreter)})}
 }),
 smalltalk.ASTInterpreter);
 
@@ -284,10 +284,10 @@ fn: function (aNode){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
var $1;
 $1=(function(){
-return smalltalk.withContext(function($ctx2) { 
return _st(self)._interpretNode_(_st(_st(aNode)._nodes())._first());
-})});
+return smalltalk.withContext(function($ctx2) {
return _st(self)._interpretNode_(_st(_st(aNode)._nodes())._first());
+}, function($ctx2) {$ctx2.fill(null, null, {})})});
 return $1;
-}, self, "visitBlockNode:", [aNode], smalltalk.ASTInterpreter)}
+}, function($ctx1) {$ctx1.fill(self,"visitBlockNode:", [aNode], smalltalk.ASTInterpreter)})}
 }),
 smalltalk.ASTInterpreter);
 
@@ -297,15 +297,15 @@ smalltalk.method({
 selector: "visitCascadeNode:",
 fn: function (aNode){
 var self=this;
+var receiver;
 return smalltalk.withContext(function($ctx1) { 
var $1;
-$ctx1.locals.receiver=nil;
-$ctx1.locals.receiver=_st(self)._interpretNode_(_st(aNode)._receiver());
+receiver=_st(self)._interpretNode_(_st(aNode)._receiver());
 _st(_st(_st(aNode)._nodes())._allButLast())._do_((function(each){
-return smalltalk.withContext(function($ctx2) { 
return _st(_st(self)._messageFromSendNode_(each))._sendTo_($ctx1.locals.receiver);
-})}));
-$1=_st(_st(self)._messageFromSendNode_(_st(_st(aNode)._nodes())._last()))._sendTo_($ctx1.locals.receiver);
+return smalltalk.withContext(function($ctx2) {
return _st(_st(self)._messageFromSendNode_(each))._sendTo_(receiver);
+}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+$1=_st(_st(self)._messageFromSendNode_(_st(_st(aNode)._nodes())._last()))._sendTo_(receiver);
 return $1;
-}, self, "visitCascadeNode:", [aNode], smalltalk.ASTInterpreter)}
+}, function($ctx1) {$ctx1.fill(self,"visitCascadeNode:", [aNode], smalltalk.ASTInterpreter)})}
 }),
 smalltalk.ASTInterpreter);
 
@@ -318,7 +318,7 @@ var self=this;
 return smalltalk.withContext(function($ctx1) { 
var $1;
 $1=_st(_st((smalltalk.Smalltalk || Smalltalk))._current())._at_(_st(aNode)._value());
 return $1;
-}, self, "visitClassReferenceNode:", [aNode], smalltalk.ASTInterpreter)}
+}, function($ctx1) {$ctx1.fill(self,"visitClassReferenceNode:", [aNode], smalltalk.ASTInterpreter)})}
 }),
 smalltalk.ASTInterpreter);
 
@@ -332,7 +332,7 @@ return smalltalk.withContext(function($ctx1) { 
var $1;
 self["@shouldReturn"]=true;
 $1=_st(self)._eval_(_st(aNode)._source());
 return $1;
-}, self, "visitJSStatementNode:", [aNode], smalltalk.ASTInterpreter)}
+}, function($ctx1) {$ctx1.fill(self,"visitJSStatementNode:", [aNode], smalltalk.ASTInterpreter)})}
 }),
 smalltalk.ASTInterpreter);
 
@@ -346,7 +346,7 @@ return smalltalk.withContext(function($ctx1) { 
var $1;
 self["@shouldReturn"]=true;
 $1=_st(self)._interpretNode_(_st(_st(aNode)._nodes())._first());
 return $1;
-}, self, "visitReturnNode:", [aNode], smalltalk.ASTInterpreter)}
+}, function($ctx1) {$ctx1.fill(self,"visitReturnNode:", [aNode], smalltalk.ASTInterpreter)})}
 }),
 smalltalk.ASTInterpreter);
 
@@ -359,7 +359,7 @@ var self=this;
 return smalltalk.withContext(function($ctx1) { 
var $1;
 $1=_st(_st(self)._messageFromSendNode_(aNode))._sendTo_(_st(self)._interpretNode_(_st(aNode)._receiver()));
 return $1;
-}, self, "visitSendNode:", [aNode], smalltalk.ASTInterpreter)}
+}, function($ctx1) {$ctx1.fill(self,"visitSendNode:", [aNode], smalltalk.ASTInterpreter)})}
 }),
 smalltalk.ASTInterpreter);
 
@@ -374,21 +374,20 @@ var $early={};
 try {
 $1=_st(_st(aNode)._nodes())._allButLast();
 $2=(function(each){
-return smalltalk.withContext(function($ctx2) { 
$ctx2.locals.value=nil;
-$ctx2.locals.value=_st(self)._interpretNode_(each);
-$ctx2.locals.value;
+return smalltalk.withContext(function($ctx2) {
value=_st(self)._interpretNode_(each);
+value;
 $3=self["@shouldReturn"];
 if(smalltalk.assert($3)){
-$4=$ctx2.locals.value;
+$4=value;
 throw $early=[$4];
 };
-})});
+}, function($ctx2) {$ctx2.fill(null, null, {})})});
 _st($1)._do_($2);
 $5=_st(self)._interpretNode_(_st(_st(aNode)._nodes())._last());
 return $5;
 }
 catch(e) {if(e===$early)return e[0]; throw e}
-}, self, "visitSequenceNode:", [aNode], smalltalk.ASTInterpreter)}
+}, function($ctx1) {$ctx1.fill(self,"visitSequenceNode:", [aNode], smalltalk.ASTInterpreter)})}
 }),
 smalltalk.ASTInterpreter);
 
@@ -401,7 +400,7 @@ var self=this;
 return smalltalk.withContext(function($ctx1) { 
var $1;
 $1=_st(aNode)._value();
 return $1;
-}, self, "visitValueNode:", [aNode], smalltalk.ASTInterpreter)}
+}, function($ctx1) {$ctx1.fill(self,"visitValueNode:", [aNode], smalltalk.ASTInterpreter)})}
 }),
 smalltalk.ASTInterpreter);
 

+ 42 - 43
js/Compiler-Interpreter.js

@@ -18,9 +18,9 @@ $1;
 _st(self)._outerContext_(_st(_st(self)._class())._fromMethodContext_(_st(aMethodContext)._outerContext()));
 };
 _st(_st(aMethodContext)._locals())._keysAndValuesDo_((function(key,value){
-return smalltalk.withContext(function($ctx2) { 
return _st(_st(self)._locals())._at_put_(key,value);
-})}));
-return self}, self, "initializeFromMethodContext:", [aMethodContext], smalltalk.AIContext)},
+return smalltalk.withContext(function($ctx2) {
return _st(_st(self)._locals())._at_put_(key,value);
+}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+return self}, function($ctx1) {$ctx1.fill(self,"initializeFromMethodContext:", [aMethodContext], smalltalk.AIContext)})},
 args: ["aMethodContext"],
 source: "initializeFromMethodContext: aMethodContext\x0a\x09self pc: aMethodContext pc.\x0a    self receiver: aMethodContext receiver.\x0a    self selector: aMethodContext selector.\x0a    aMethodContext outerContext ifNotNil: [\x0a\x09\x09self outerContext: (self class fromMethodContext: aMethodContext outerContext) ].\x0a    aMethodContext locals keysAndValuesDo: [ :key :value |\x0a    \x09self locals at: key put: value ]\x0a    ",
 messageSends: ["pc:", "pc", "receiver:", "receiver", "selector:", "selector", "ifNotNil:", "outerContext:", "fromMethodContext:", "outerContext", "class", "keysAndValuesDo:", "at:put:", "locals"],
@@ -36,7 +36,7 @@ category: 'accessing',
 fn: function (aString,anObject){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
_st(_st(self)._locals())._at_put_(aString,anObject);
-return self}, self, "localAt:put:", [aString,anObject], smalltalk.AIContext)},
+return self}, function($ctx1) {$ctx1.fill(self,"localAt:put:", [aString,anObject], smalltalk.AIContext)})},
 args: ["aString", "anObject"],
 source: "localAt: aString put: anObject\x0a\x09self locals at: aString put: anObject",
 messageSends: ["at:put:", "locals"],
@@ -60,7 +60,7 @@ $1=self["@locals"];
 $1=$2;
 };
 return $1;
-}, self, "locals", [], smalltalk.AIContext)},
+}, function($ctx1) {$ctx1.fill(self,"locals", [], smalltalk.AIContext)})},
 args: [],
 source: "locals\x0a\x09^ locals ifNil: [ locals := Dictionary new ]",
 messageSends: ["ifNil:", "new"],
@@ -78,7 +78,7 @@ var self=this;
 return smalltalk.withContext(function($ctx1) { 
var $1;
 $1=self["@outerContext"];
 return $1;
-}, self, "outerContext", [], smalltalk.AIContext)},
+}, function($ctx1) {$ctx1.fill(self,"outerContext", [], smalltalk.AIContext)})},
 args: [],
 source: "outerContext\x0a\x09^ outerContext",
 messageSends: [],
@@ -94,7 +94,7 @@ category: 'accessing',
 fn: function (anAIContext){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
self["@outerContext"]=anAIContext;
-return self}, self, "outerContext:", [anAIContext], smalltalk.AIContext)},
+return self}, function($ctx1) {$ctx1.fill(self,"outerContext:", [anAIContext], smalltalk.AIContext)})},
 args: ["anAIContext"],
 source: "outerContext: anAIContext\x0a\x09outerContext := anAIContext",
 messageSends: [],
@@ -118,7 +118,7 @@ $1=self["@pc"];
 $1=$2;
 };
 return $1;
-}, self, "pc", [], smalltalk.AIContext)},
+}, function($ctx1) {$ctx1.fill(self,"pc", [], smalltalk.AIContext)})},
 args: [],
 source: "pc\x0a\x09^ pc ifNil: [ pc := 0 ]",
 messageSends: ["ifNil:"],
@@ -134,7 +134,7 @@ category: 'accessing',
 fn: function (anInteger){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
self["@pc"]=anInteger;
-return self}, self, "pc:", [anInteger], smalltalk.AIContext)},
+return self}, function($ctx1) {$ctx1.fill(self,"pc:", [anInteger], smalltalk.AIContext)})},
 args: ["anInteger"],
 source: "pc: anInteger\x0a\x09pc := anInteger",
 messageSends: [],
@@ -152,7 +152,7 @@ var self=this;
 return smalltalk.withContext(function($ctx1) { 
var $1;
 $1=self["@receiver"];
 return $1;
-}, self, "receiver", [], smalltalk.AIContext)},
+}, function($ctx1) {$ctx1.fill(self,"receiver", [], smalltalk.AIContext)})},
 args: [],
 source: "receiver\x0a\x09^ receiver",
 messageSends: [],
@@ -168,7 +168,7 @@ category: 'accessing',
 fn: function (anObject){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
self["@receiver"]=anObject;
-return self}, self, "receiver:", [anObject], smalltalk.AIContext)},
+return self}, function($ctx1) {$ctx1.fill(self,"receiver:", [anObject], smalltalk.AIContext)})},
 args: ["anObject"],
 source: "receiver: anObject\x0a\x09receiver := anObject",
 messageSends: [],
@@ -186,7 +186,7 @@ var self=this;
 return smalltalk.withContext(function($ctx1) { 
var $1;
 $1=self["@selector"];
 return $1;
-}, self, "selector", [], smalltalk.AIContext)},
+}, function($ctx1) {$ctx1.fill(self,"selector", [], smalltalk.AIContext)})},
 args: [],
 source: "selector\x0a\x09^ selector",
 messageSends: [],
@@ -202,7 +202,7 @@ category: 'accessing',
 fn: function (aString){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
self["@selector"]=aString;
-return self}, self, "selector:", [aString], smalltalk.AIContext)},
+return self}, function($ctx1) {$ctx1.fill(self,"selector:", [aString], smalltalk.AIContext)})},
 args: ["aString"],
 source: "selector: aString\x0a\x09selector := aString",
 messageSends: [],
@@ -224,7 +224,7 @@ _st($2)._initializeFromMethodContext_(aMethodContext);
 $3=_st($2)._yourself();
 $1=$3;
 return $1;
-}, self, "fromMethodContext:", [aMethodContext], smalltalk.AIContext.klass)},
+}, function($ctx1) {$ctx1.fill(self,"fromMethodContext:", [aMethodContext], smalltalk.AIContext.klass)})},
 args: ["aMethodContext"],
 source: "fromMethodContext: aMethodContext\x0a\x09^ self new \x0a    \x09initializeFromMethodContext: aMethodContext;\x0a        yourself",
 messageSends: ["initializeFromMethodContext:", "new", "yourself"],
@@ -250,7 +250,7 @@ $1=self["@context"];
 $1=$2;
 };
 return $1;
-}, self, "context", [], smalltalk.ASTInterpreter)},
+}, function($ctx1) {$ctx1.fill(self,"context", [], smalltalk.ASTInterpreter)})},
 args: [],
 source: "context\x0a\x09^ context ifNil: [ context := AIContext new ]",
 messageSends: ["ifNil:", "new"],
@@ -266,7 +266,7 @@ category: 'accessing',
 fn: function (anAIContext){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
self["@context"]=anAIContext;
-return self}, self, "context:", [anAIContext], smalltalk.ASTInterpreter)},
+return self}, function($ctx1) {$ctx1.fill(self,"context:", [anAIContext], smalltalk.ASTInterpreter)})},
 args: ["anAIContext"],
 source: "context: anAIContext\x0a\x09context := anAIContext",
 messageSends: [],
@@ -284,7 +284,7 @@ var self=this;
 return smalltalk.withContext(function($ctx1) { 
var $1;
 $1=_st(_st((smalltalk.Compiler || Compiler))._new())._eval_(_st(_st("(function() { ").__comma(aString)).__comma(" })()"));
 return $1;
-}, self, "eval:", [aString], smalltalk.ASTInterpreter)},
+}, function($ctx1) {$ctx1.fill(self,"eval:", [aString], smalltalk.ASTInterpreter)})},
 args: ["aString"],
 source: "eval: aString\x0a\x09\x22Evaluate aString as JS source inside an immediately evaluated JS function. \x0a    aString is not sandboxed.\x22\x0a    \x0a    ^ Compiler new eval: '(function() { ', aString, ' })()'",
 messageSends: ["eval:", ",", "new"],
@@ -301,7 +301,7 @@ fn: function (){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
smalltalk.NodeVisitor.fn.prototype._initialize.apply(_st(self), []);
 self["@shouldReturn"]=false;
-return self}, self, "initialize", [], smalltalk.ASTInterpreter)},
+return self}, function($ctx1) {$ctx1.fill(self,"initialize", [], smalltalk.ASTInterpreter)})},
 args: [],
 source: "initialize\x0a\x09super initialize.\x0a    shouldReturn := false",
 messageSends: ["initialize"],
@@ -320,7 +320,7 @@ return smalltalk.withContext(function($ctx1) { 
var $1;
 self["@shouldReturn"]=false;
 $1=_st(self)._interpretNode_(aNode);
 return $1;
-}, self, "interpret:", [aNode], smalltalk.ASTInterpreter)},
+}, function($ctx1) {$ctx1.fill(self,"interpret:", [aNode], smalltalk.ASTInterpreter)})},
 args: ["aNode"],
 source: "interpret: aNode\x0a\x09shouldReturn := false.\x0a    ^ self interpretNode: aNode",
 messageSends: ["interpretNode:"],
@@ -339,7 +339,7 @@ return smalltalk.withContext(function($ctx1) { 
var $1;
 self["@currentNode"]=aNode;
 $1=_st(self)._visit_(aNode);
 return $1;
-}, self, "interpretNode:", [aNode], smalltalk.ASTInterpreter)},
+}, function($ctx1) {$ctx1.fill(self,"interpretNode:", [aNode], smalltalk.ASTInterpreter)})},
 args: ["aNode"],
 source: "interpretNode: aNode\x0a\x09currentNode := aNode.\x0a    ^ self visit: aNode",
 messageSends: ["visit:"],
@@ -358,12 +358,12 @@ return smalltalk.withContext(function($ctx1) { 
var $2,$3,$1;
 $2=_st((smalltalk.Message || Message))._new();
 _st($2)._selector_(_st(aSendNode)._selector());
 _st($2)._arguments_(_st(_st(aSendNode)._arguments())._collect_((function(each){
-return smalltalk.withContext(function($ctx2) { 
return _st(self)._interpretNode_(each);
-})})));
+return smalltalk.withContext(function($ctx2) {
return _st(self)._interpretNode_(each);
+}, function($ctx2) {$ctx2.fill(null, null, {})})})));
 $3=_st($2)._yourself();
 $1=$3;
 return $1;
-}, self, "messageFromSendNode:", [aSendNode], smalltalk.ASTInterpreter)},
+}, function($ctx1) {$ctx1.fill(self,"messageFromSendNode:", [aSendNode], smalltalk.ASTInterpreter)})},
 args: ["aSendNode"],
 source: "messageFromSendNode: aSendNode\x0a\x09^ Message new\x0a    \x09selector: aSendNode selector;\x0a        arguments: (aSendNode arguments collect: [ :each |\x0a        \x09self interpretNode: each ]);\x0a        yourself",
 messageSends: ["selector:", "selector", "new", "arguments:", "collect:", "interpretNode:", "arguments", "yourself"],
@@ -380,10 +380,10 @@ fn: function (aNode){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
var $1;
 $1=(function(){
-return smalltalk.withContext(function($ctx2) { 
return _st(self)._interpretNode_(_st(_st(aNode)._nodes())._first());
-})});
+return smalltalk.withContext(function($ctx2) {
return _st(self)._interpretNode_(_st(_st(aNode)._nodes())._first());
+}, function($ctx2) {$ctx2.fill(null, null, {})})});
 return $1;
-}, self, "visitBlockNode:", [aNode], smalltalk.ASTInterpreter)},
+}, function($ctx1) {$ctx1.fill(self,"visitBlockNode:", [aNode], smalltalk.ASTInterpreter)})},
 args: ["aNode"],
 source: "visitBlockNode: aNode\x0a    ^ [ self interpretNode: aNode nodes first ]",
 messageSends: ["interpretNode:", "first", "nodes"],
@@ -398,15 +398,15 @@ selector: "visitCascadeNode:",
 category: 'visiting',
 fn: function (aNode){
 var self=this;
+var receiver;
 return smalltalk.withContext(function($ctx1) { 
var $1;
-$ctx1.locals.receiver=nil;
-$ctx1.locals.receiver=_st(self)._interpretNode_(_st(aNode)._receiver());
+receiver=_st(self)._interpretNode_(_st(aNode)._receiver());
 _st(_st(_st(aNode)._nodes())._allButLast())._do_((function(each){
-return smalltalk.withContext(function($ctx2) { 
return _st(_st(self)._messageFromSendNode_(each))._sendTo_($ctx1.locals.receiver);
-})}));
-$1=_st(_st(self)._messageFromSendNode_(_st(_st(aNode)._nodes())._last()))._sendTo_($ctx1.locals.receiver);
+return smalltalk.withContext(function($ctx2) {
return _st(_st(self)._messageFromSendNode_(each))._sendTo_(receiver);
+}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+$1=_st(_st(self)._messageFromSendNode_(_st(_st(aNode)._nodes())._last()))._sendTo_(receiver);
 return $1;
-}, self, "visitCascadeNode:", [aNode], smalltalk.ASTInterpreter)},
+}, function($ctx1) {$ctx1.fill(self,"visitCascadeNode:", [aNode], smalltalk.ASTInterpreter)})},
 args: ["aNode"],
 source: "visitCascadeNode: aNode\x0a\x09\x22TODO: Handle super sends\x22\x0a\x09| receiver |\x0a    \x0a    receiver := self interpretNode: aNode receiver.\x0a\x0a    aNode nodes allButLast\x0a    \x09do: [ :each | \x0a        \x09(self messageFromSendNode: each)\x0a            \x09sendTo: receiver ].\x0a\x0a    ^ (self messageFromSendNode: aNode nodes last)\x0a            \x09sendTo: receiver",
 messageSends: ["interpretNode:", "receiver", "do:", "sendTo:", "messageFromSendNode:", "allButLast", "nodes", "last"],
@@ -424,7 +424,7 @@ var self=this;
 return smalltalk.withContext(function($ctx1) { 
var $1;
 $1=_st(_st((smalltalk.Smalltalk || Smalltalk))._current())._at_(_st(aNode)._value());
 return $1;
-}, self, "visitClassReferenceNode:", [aNode], smalltalk.ASTInterpreter)},
+}, function($ctx1) {$ctx1.fill(self,"visitClassReferenceNode:", [aNode], smalltalk.ASTInterpreter)})},
 args: ["aNode"],
 source: "visitClassReferenceNode: aNode\x0a\x09^ Smalltalk current at: aNode value",
 messageSends: ["at:", "value", "current"],
@@ -443,7 +443,7 @@ return smalltalk.withContext(function($ctx1) { 
var $1;
 self["@shouldReturn"]=true;
 $1=_st(self)._eval_(_st(aNode)._source());
 return $1;
-}, self, "visitJSStatementNode:", [aNode], smalltalk.ASTInterpreter)},
+}, function($ctx1) {$ctx1.fill(self,"visitJSStatementNode:", [aNode], smalltalk.ASTInterpreter)})},
 args: ["aNode"],
 source: "visitJSStatementNode: aNode\x0a\x09shouldReturn := true.\x0a\x09^ self eval: aNode source",
 messageSends: ["eval:", "source"],
@@ -462,7 +462,7 @@ return smalltalk.withContext(function($ctx1) { 
var $1;
 self["@shouldReturn"]=true;
 $1=_st(self)._interpretNode_(_st(_st(aNode)._nodes())._first());
 return $1;
-}, self, "visitReturnNode:", [aNode], smalltalk.ASTInterpreter)},
+}, function($ctx1) {$ctx1.fill(self,"visitReturnNode:", [aNode], smalltalk.ASTInterpreter)})},
 args: ["aNode"],
 source: "visitReturnNode: aNode\x0a\x09shouldReturn := true.\x0a    ^ self interpretNode: aNode nodes first",
 messageSends: ["interpretNode:", "first", "nodes"],
@@ -480,7 +480,7 @@ var self=this;
 return smalltalk.withContext(function($ctx1) { 
var $1;
 $1=_st(_st(self)._messageFromSendNode_(aNode))._sendTo_(_st(self)._interpretNode_(_st(aNode)._receiver()));
 return $1;
-}, self, "visitSendNode:", [aNode], smalltalk.ASTInterpreter)},
+}, function($ctx1) {$ctx1.fill(self,"visitSendNode:", [aNode], smalltalk.ASTInterpreter)})},
 args: ["aNode"],
 source: "visitSendNode: aNode\x0a\x09\x22TODO: Handle super sends\x22\x0a    \x0a    ^ (self messageFromSendNode: aNode)\x0a    \x09sendTo: (self interpretNode: aNode receiver)",
 messageSends: ["sendTo:", "interpretNode:", "receiver", "messageFromSendNode:"],
@@ -500,21 +500,20 @@ var $early={};
 try {
 $1=_st(_st(aNode)._nodes())._allButLast();
 $2=(function(each){
-return smalltalk.withContext(function($ctx2) { 
$ctx2.locals.value=nil;
-$ctx2.locals.value=_st(self)._interpretNode_(each);
-$ctx2.locals.value;
+return smalltalk.withContext(function($ctx2) {
value=_st(self)._interpretNode_(each);
+value;
 $3=self["@shouldReturn"];
 if(smalltalk.assert($3)){
-$4=$ctx2.locals.value;
+$4=value;
 throw $early=[$4];
 };
-})});
+}, function($ctx2) {$ctx2.fill(null, null, {})})});
 _st($1)._do_($2);
 $5=_st(self)._interpretNode_(_st(_st(aNode)._nodes())._last());
 return $5;
 }
 catch(e) {if(e===$early)return e[0]; throw e}
-}, self, "visitSequenceNode:", [aNode], smalltalk.ASTInterpreter)},
+}, function($ctx1) {$ctx1.fill(self,"visitSequenceNode:", [aNode], smalltalk.ASTInterpreter)})},
 args: ["aNode"],
 source: "visitSequenceNode: aNode\x0a\x0a\x09aNode nodes allButLast do: [ :each | | value |\x0a        value := self interpretNode: each.\x0a\x09\x09shouldReturn ifTrue: [ ^ value ] ].\x0a        \x0a    ^ self interpretNode: aNode nodes last",
 messageSends: ["do:", "interpretNode:", "ifTrue:", "allButLast", "nodes", "last"],
@@ -532,7 +531,7 @@ var self=this;
 return smalltalk.withContext(function($ctx1) { 
var $1;
 $1=_st(aNode)._value();
 return $1;
-}, self, "visitValueNode:", [aNode], smalltalk.ASTInterpreter)},
+}, function($ctx1) {$ctx1.fill(self,"visitValueNode:", [aNode], smalltalk.ASTInterpreter)})},
 args: ["aNode"],
 source: "visitValueNode: aNode\x0a\x09^ aNode value",
 messageSends: ["value"],

Filskillnaden har hållts tillbaka eftersom den är för stor
+ 175 - 177
js/Compiler-Semantic.deploy.js


Filskillnaden har hållts tillbaka eftersom den är för stor
+ 175 - 182
js/Compiler-Semantic.js


+ 182 - 192
js/Compiler-Tests.deploy.js

@@ -6,9 +6,11 @@ smalltalk.method({
 selector: "analyze:forClass:",
 fn: function (aNode,aClass){
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
_st(_st((smalltalk.SemanticAnalyzer || SemanticAnalyzer))._on_(aClass))._visit_(aNode);
-return aNode;
-}, self, "analyze:forClass:", [aNode,aClass], smalltalk.ASTInterpreterTest)}
+return smalltalk.withContext(function($ctx1) { 
var $1;
+_st(_st((smalltalk.SemanticAnalyzer || SemanticAnalyzer))._on_(aClass))._visit_(aNode);
+$1=aNode;
+return $1;
+}, function($ctx1) {$ctx1.fill(self,"analyze:forClass:", [aNode,aClass], smalltalk.ASTInterpreterTest)})}
 }),
 smalltalk.ASTInterpreterTest);
 
@@ -21,7 +23,7 @@ var self=this;
 return smalltalk.withContext(function($ctx1) { 
var $1;
 $1=_st(self)._interpret_withArguments_(aString,_st((smalltalk.Dictionary || Dictionary))._new());
 return $1;
-}, self, "interpret:", [aString], smalltalk.ASTInterpreterTest)}
+}, function($ctx1) {$ctx1.fill(self,"interpret:", [aString], smalltalk.ASTInterpreterTest)})}
 }),
 smalltalk.ASTInterpreterTest);
 
@@ -31,18 +33,18 @@ smalltalk.method({
 selector: "interpret:withArguments:",
 fn: function (aString,aDictionary){
 var self=this;
+var ctx;
 return smalltalk.withContext(function($ctx1) { 
var $2,$3,$1;
-$ctx1.locals.ctx=nil;
-$ctx1.locals.ctx=_st((smalltalk.AIContext || AIContext))._new();
+ctx=_st((smalltalk.AIContext || AIContext))._new();
 _st(aDictionary)._keysAndValuesDo_((function(key,value){
-return smalltalk.withContext(function($ctx2) { 
return _st($ctx1.locals.ctx)._localAt_put_(key,value);
-})}));
+return smalltalk.withContext(function($ctx2) {
return _st(ctx)._localAt_put_(key,value);
+}, function($ctx2) {$ctx2.fill(null, null, {})})}));
 $2=_st((smalltalk.ASTInterpreter || ASTInterpreter))._new();
-_st($2)._context_($ctx1.locals.ctx);
+_st($2)._context_(ctx);
 $3=_st($2)._interpret_(_st(_st(_st(self)._parse_forClass_(aString,(smalltalk.Object || Object)))._nodes())._first());
 $1=$3;
 return $1;
-}, self, "interpret:withArguments:", [aString,aDictionary], smalltalk.ASTInterpreterTest)}
+}, function($ctx1) {$ctx1.fill(self,"interpret:withArguments:", [aString,aDictionary], smalltalk.ASTInterpreterTest)})}
 }),
 smalltalk.ASTInterpreterTest);
 
@@ -55,7 +57,7 @@ var self=this;
 return smalltalk.withContext(function($ctx1) { 
var $1;
 $1=_st(_st((smalltalk.Smalltalk || Smalltalk))._current())._parse_(aString);
 return $1;
-}, self, "parse:", [aString], smalltalk.ASTInterpreterTest)}
+}, function($ctx1) {$ctx1.fill(self,"parse:", [aString], smalltalk.ASTInterpreterTest)})}
 }),
 smalltalk.ASTInterpreterTest);
 
@@ -68,7 +70,7 @@ var self=this;
 return smalltalk.withContext(function($ctx1) { 
var $1;
 $1=_st(self)._analyze_forClass_(_st(self)._parse_(aString),aClass);
 return $1;
-}, self, "parse:forClass:", [aString,aClass], smalltalk.ASTInterpreterTest)}
+}, function($ctx1) {$ctx1.fill(self,"parse:forClass:", [aString,aClass], smalltalk.ASTInterpreterTest)})}
 }),
 smalltalk.ASTInterpreterTest);
 
@@ -79,7 +81,7 @@ selector: "testBinarySend",
 fn: function (){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
_st(self)._assert_equals_(_st(self)._interpret_("foo 2+3+4"),(9));
-return self}, self, "testBinarySend", [], smalltalk.ASTInterpreterTest)}
+return self}, function($ctx1) {$ctx1.fill(self,"testBinarySend", [], smalltalk.ASTInterpreterTest)})}
 }),
 smalltalk.ASTInterpreterTest);
 
@@ -92,7 +94,7 @@ var self=this;
 return smalltalk.withContext(function($ctx1) { 
_st(self)._assert_equals_(_st(self)._interpret_("foo ^ true ifTrue: [ 1 ] ifFalse: [ 2 ]"),(1));
 _st(self)._assert_equals_(_st(self)._interpret_("foo true ifTrue: [ ^ 1 ] ifFalse: [ 2 ]"),(1));
 _st(self)._assert_equals_(_st(self)._interpret_("foo ^ false ifTrue: [ 1 ] ifFalse: [ 2 ]"),(2));
-return self}, self, "testBlockLiteral", [], smalltalk.ASTInterpreterTest)}
+return self}, function($ctx1) {$ctx1.fill(self,"testBlockLiteral", [], smalltalk.ASTInterpreterTest)})}
 }),
 smalltalk.ASTInterpreterTest);
 
@@ -103,7 +105,7 @@ selector: "testCascade",
 fn: function (){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
_st(self)._assert_equals_(_st(self)._interpret_("foo ^ OrderedCollection new add: 2; add: 3; yourself"),_st((smalltalk.OrderedCollection || OrderedCollection))._with_with_((2),(3)));
-return self}, self, "testCascade", [], smalltalk.ASTInterpreterTest)}
+return self}, function($ctx1) {$ctx1.fill(self,"testCascade", [], smalltalk.ASTInterpreterTest)})}
 }),
 smalltalk.ASTInterpreterTest);
 
@@ -115,7 +117,7 @@ fn: function (){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
_st(self)._assert_equals_(_st(self)._interpret_("foo <return 2+3>"),(5));
 _st(self)._assert_equals_(_st(self)._interpret_withArguments_("foo: anInteger <return 2 + anInteger>",smalltalk.HashedCollection._fromPairs_([_st("anInteger").__minus_gt((3))])),(5));
-return self}, self, "testInlinedJSStatement", [], smalltalk.ASTInterpreterTest)}
+return self}, function($ctx1) {$ctx1.fill(self,"testInlinedJSStatement", [], smalltalk.ASTInterpreterTest)})}
 }),
 smalltalk.ASTInterpreterTest);
 
@@ -128,8 +130,10 @@ smalltalk.method({
 selector: "codeGeneratorClass",
 fn: function (){
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
return (smalltalk.CodeGenerator || CodeGenerator);
-}, self, "codeGeneratorClass", [], smalltalk.CodeGeneratorTest)}
+return smalltalk.withContext(function($ctx1) { 
var $1;
+$1=(smalltalk.CodeGenerator || CodeGenerator);
+return $1;
+}, function($ctx1) {$ctx1.fill(self,"codeGeneratorClass", [], smalltalk.CodeGeneratorTest)})}
 }),
 smalltalk.CodeGeneratorTest);
 
@@ -145,7 +149,7 @@ _st($2)._codeGeneratorClass_(_st(self)._codeGeneratorClass());
 $3=_st($2)._yourself();
 $1=$3;
 return $1;
-}, self, "compiler", [], smalltalk.CodeGeneratorTest)}
+}, function($ctx1) {$ctx1.fill(self,"compiler", [], smalltalk.CodeGeneratorTest)})}
 }),
 smalltalk.CodeGeneratorTest);
 
@@ -156,7 +160,7 @@ selector: "setUp",
 fn: function (){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
self["@receiver"]=_st(_st(self)._targetClass())._new();
-return self}, self, "setUp", [], smalltalk.CodeGeneratorTest)}
+return self}, function($ctx1) {$ctx1.fill(self,"setUp", [], smalltalk.CodeGeneratorTest)})}
 }),
 smalltalk.CodeGeneratorTest);
 
@@ -166,13 +170,12 @@ smalltalk.method({
 selector: "should:return:",
 fn: function (aString,anObject){
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
$ctx1.method=nil;
-$ctx1.result=nil;
-$ctx1.locals.method=_st(_st(self)._compiler())._install_forClass_category_(aString,_st(self)._targetClass(),"tests");
-$ctx1.locals.result=_st(self["@receiver"])._perform_(_st($ctx1.locals.method)._selector());
-_st(_st(self)._targetClass())._removeCompiledMethod_($ctx1.locals.method);
-_st(self)._assert_equals_(anObject,$ctx1.locals.result);
-return self}, self, "should:return:", [aString,anObject], smalltalk.CodeGeneratorTest)}
+var method,result;
+return smalltalk.withContext(function($ctx1) { 
method=_st(_st(self)._compiler())._install_forClass_category_(aString,_st(self)._targetClass(),"tests");
+result=_st(self["@receiver"])._perform_(_st(method)._selector());
+_st(_st(self)._targetClass())._removeCompiledMethod_(method);
+_st(self)._assert_equals_(anObject,result);
+return self}, function($ctx1) {$ctx1.fill(self,"should:return:", [aString,anObject], smalltalk.CodeGeneratorTest)})}
 }),
 smalltalk.CodeGeneratorTest);
 
@@ -182,8 +185,10 @@ smalltalk.method({
 selector: "targetClass",
 fn: function (){
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
return (smalltalk.DoIt || DoIt);
-}, self, "targetClass", [], smalltalk.CodeGeneratorTest)}
+return smalltalk.withContext(function($ctx1) { 
var $1;
+$1=(smalltalk.DoIt || DoIt);
+return $1;
+}, function($ctx1) {$ctx1.fill(self,"targetClass", [], smalltalk.CodeGeneratorTest)})}
 }),
 smalltalk.CodeGeneratorTest);
 
@@ -193,7 +198,7 @@ smalltalk.method({
 selector: "tearDown",
 fn: function (){
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
return self}, self, "tearDown", [], smalltalk.CodeGeneratorTest)}
+return smalltalk.withContext(function($ctx1) { 
return self}, function($ctx1) {$ctx1.fill(self,"tearDown", [], smalltalk.CodeGeneratorTest)})}
 }),
 smalltalk.CodeGeneratorTest);
 
@@ -206,7 +211,7 @@ var self=this;
 return smalltalk.withContext(function($ctx1) { 
_st(self)._should_return_("foo | a | a := true ifTrue: [ 1 ]. ^ a",(1));
 _st(self)._should_return_("foo | a | a := false ifTrue: [ 1 ]. ^ a",nil);
 _st(self)._should_return_("foo | a | ^ a := true ifTrue: [ 1 ]",(1));
-return self}, self, "testAssignment", [], smalltalk.CodeGeneratorTest)}
+return self}, function($ctx1) {$ctx1.fill(self,"testAssignment", [], smalltalk.CodeGeneratorTest)})}
 }),
 smalltalk.CodeGeneratorTest);
 
@@ -219,7 +224,7 @@ var self=this;
 return smalltalk.withContext(function($ctx1) { 
_st(self)._should_return_("foo ^ #(1 2 3) collect: [ :each | true ifTrue: [ each + 1 ] ]",[(2), (3), (4)]);
 _st(self)._should_return_("foo ^ #(1 2 3) collect: [ :each | false ifFalse: [ each + 1 ] ]",[(2), (3), (4)]);
 _st(self)._should_return_("foo ^ #(1 2 3) collect: [ :each | each odd ifTrue: [ each + 1 ] ifFalse: [ each - 1 ] ]",[(2), (1), (4)]);
-return self}, self, "testBlockReturn", [], smalltalk.CodeGeneratorTest)}
+return self}, function($ctx1) {$ctx1.fill(self,"testBlockReturn", [], smalltalk.CodeGeneratorTest)})}
 }),
 smalltalk.CodeGeneratorTest);
 
@@ -230,7 +235,7 @@ selector: "testCascades",
 fn: function (){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
_st(self)._should_return_("foo ^ Array new add: 3; add: 4; yourself",[(3), (4)]);
-return self}, self, "testCascades", [], smalltalk.CodeGeneratorTest)}
+return self}, function($ctx1) {$ctx1.fill(self,"testCascades", [], smalltalk.CodeGeneratorTest)})}
 }),
 smalltalk.CodeGeneratorTest);
 
@@ -240,8 +245,8 @@ smalltalk.method({
 selector: "testDynamicArrayElementsOrdered",
 fn: function (){
 var self=this;
-smalltalk.send(self,"_should_return_",["foo\x0a  | x |\x0a  x := 1.\x0a  ^ { x. true ifTrue: [ x := 2 ] }\x0a",[(1), (2)]]);
-return self}
+return smalltalk.withContext(function($ctx1) { 
_st(self)._should_return_("foo\x0a  | x |\x0a  x := 1.\x0a  ^ { x. true ifTrue: [ x := 2 ] }\x0a",[(1), (2)]);
+return self}, function($ctx1) {$ctx1.fill(self,"testDynamicArrayElementsOrdered", [], smalltalk.CodeGeneratorTest)})}
 }),
 smalltalk.CodeGeneratorTest);
 
@@ -251,8 +256,8 @@ smalltalk.method({
 selector: "testDynamicDictionaryElementsOrdered",
 fn: function (){
 var self=this;
-smalltalk.send(self,"_should_return_",["foo\x0a  | x |\x0a  x := 'foo'->1.\x0a  ^ #{ x. (true ifTrue: [ x := 'bar'->2 ]) }\x0a",smalltalk.HashedCollection._fromPairs_([smalltalk.send("foo","__minus_gt",[(1)]),smalltalk.send("bar","__minus_gt",[(2)])])]);
-return self}
+return smalltalk.withContext(function($ctx1) { 
_st(self)._should_return_("foo\x0a  | x |\x0a  x := 'foo'->1.\x0a  ^ #{ x. (true ifTrue: [ x := 'bar'->2 ]) }\x0a",smalltalk.HashedCollection._fromPairs_([_st("foo").__minus_gt((1)),_st("bar").__minus_gt((2))]));
+return self}, function($ctx1) {$ctx1.fill(self,"testDynamicDictionaryElementsOrdered", [], smalltalk.CodeGeneratorTest)})}
 }),
 smalltalk.CodeGeneratorTest);
 
@@ -262,11 +267,11 @@ smalltalk.method({
 selector: "testInnerTemporalDependentElementsOrdered",
 fn: function (){
 var self=this;
-smalltalk.send(self,"_should_return_",["foo\x0a  | x |\x0a  x := Array.\x0a  ^ x with: 'foo'->x with: 'bar'->(true ifTrue: [ x := 2 ])\x0a",[smalltalk.send("foo","__minus_gt",[(smalltalk.Array || Array)]),smalltalk.send("bar","__minus_gt",[(2)])]]);
-smalltalk.send(self,"_should_return_",["foo\x0a  | x |\x0a  x := 1.\x0a  ^ Array with: 'foo'->x with: 'bar'->(true ifTrue: [ x := 2 ])\x0a",[smalltalk.send("foo","__minus_gt",[(1)]),smalltalk.send("bar","__minus_gt",[(2)])]]);
-smalltalk.send(self,"_should_return_",["foo\x0a  | x |\x0a  x := 1.\x0a  ^ { 'foo'->x. 'bar'->(true ifTrue: [ x := 2 ]) }\x0a",[smalltalk.send("foo","__minus_gt",[(1)]),smalltalk.send("bar","__minus_gt",[(2)])]]);
-smalltalk.send(self,"_should_return_",["foo\x0a  | x |\x0a  x := 1.\x0a  ^ #{ 'foo'->x. 'bar'->(true ifTrue: [ x := 2 ]) }\x0a",smalltalk.HashedCollection._fromPairs_([smalltalk.send("foo","__minus_gt",[(1)]),smalltalk.send("bar","__minus_gt",[(2)])])]);
-return self}
+return smalltalk.withContext(function($ctx1) { 
_st(self)._should_return_("foo\x0a  | x |\x0a  x := Array.\x0a  ^ x with: 'foo'->x with: 'bar'->(true ifTrue: [ x := 2 ])\x0a",[_st("foo").__minus_gt((smalltalk.Array || Array)),_st("bar").__minus_gt((2))]);
+_st(self)._should_return_("foo\x0a  | x |\x0a  x := 1.\x0a  ^ Array with: 'foo'->x with: 'bar'->(true ifTrue: [ x := 2 ])\x0a",[_st("foo").__minus_gt((1)),_st("bar").__minus_gt((2))]);
+_st(self)._should_return_("foo\x0a  | x |\x0a  x := 1.\x0a  ^ { 'foo'->x. 'bar'->(true ifTrue: [ x := 2 ]) }\x0a",[_st("foo").__minus_gt((1)),_st("bar").__minus_gt((2))]);
+_st(self)._should_return_("foo\x0a  | x |\x0a  x := 1.\x0a  ^ #{ 'foo'->x. 'bar'->(true ifTrue: [ x := 2 ]) }\x0a",smalltalk.HashedCollection._fromPairs_([_st("foo").__minus_gt((1)),_st("bar").__minus_gt((2))]));
+return self}, function($ctx1) {$ctx1.fill(self,"testInnerTemporalDependentElementsOrdered", [], smalltalk.CodeGeneratorTest)})}
 }),
 smalltalk.CodeGeneratorTest);
 
@@ -285,7 +290,7 @@ _st(self)._should_return_("foo ^ false",false);
 _st(self)._should_return_("foo ^ #{1->2. 3->4}",smalltalk.HashedCollection._fromPairs_([_st((1)).__minus_gt((2)),_st((3)).__minus_gt((4))]));
 _st(self)._should_return_("foo ^ #hello",smalltalk.symbolFor("hello"));
 _st(self)._should_return_("foo ^ -123.456",(-123.456));
-return self}, self, "testLiterals", [], smalltalk.CodeGeneratorTest)}
+return self}, function($ctx1) {$ctx1.fill(self,"testLiterals", [], smalltalk.CodeGeneratorTest)})}
 }),
 smalltalk.CodeGeneratorTest);
 
@@ -300,7 +305,7 @@ _st(self)._should_return_("foo ^ 1 + 1",(2));
 _st(self)._should_return_("foo ",self["@receiver"]);
 _st(self)._should_return_("foo self asString",self["@receiver"]);
 _st(self)._should_return_("foo | a b | a := 1. b := 2. ^ a + b",(3));
-return self}, self, "testLocalReturn", [], smalltalk.CodeGeneratorTest)}
+return self}, function($ctx1) {$ctx1.fill(self,"testLocalReturn", [], smalltalk.CodeGeneratorTest)})}
 }),
 smalltalk.CodeGeneratorTest);
 
@@ -315,7 +320,7 @@ _st(self)._should_return_("foo ^ 1 + 1",(2));
 _st(self)._should_return_("foo ^ 1 + 2 * 3",(9));
 _st(self)._should_return_("foo ^ 1 to: 3",[(1), (2), (3)]);
 _st(self)._should_return_("foo ^ 1 to: 5 by: 2",[(1), (3), (5)]);
-return self}, self, "testMessageSends", [], smalltalk.CodeGeneratorTest)}
+return self}, function($ctx1) {$ctx1.fill(self,"testMessageSends", [], smalltalk.CodeGeneratorTest)})}
 }),
 smalltalk.CodeGeneratorTest);
 
@@ -329,7 +334,7 @@ return smalltalk.withContext(function($ctx1) { 
_st(self)._should_return_("foo ^
 _st(self)._should_return_("foo ^ true ifTrue: [ false ifTrue: [ 1 ] ]",nil);
 _st(self)._should_return_("foo true ifTrue: [ false ifFalse: [ ^ 1 ] ]",(1));
 _st(self)._should_return_("foo true ifTrue: [ false ifTrue: [ ^ 1 ] ]",self["@receiver"]);
-return self}, self, "testNestedIfTrue", [], smalltalk.CodeGeneratorTest)}
+return self}, function($ctx1) {$ctx1.fill(self,"testNestedIfTrue", [], smalltalk.CodeGeneratorTest)})}
 }),
 smalltalk.CodeGeneratorTest);
 
@@ -343,7 +348,7 @@ return smalltalk.withContext(function($ctx1) { 
_st(self)._should_return_("foo [
 _st(self)._should_return_("foo [ ^ 1 + 1 ] value",(2));
 _st(self)._should_return_("foo | a b | a := 1. b := 2. [ ^ a + b ] value. self halt",(3));
 _st(self)._should_return_("foo [ :x | ^ x + x ] value: 4. ^ 2",(8));
-return self}, self, "testNonLocalReturn", [], smalltalk.CodeGeneratorTest)}
+return self}, function($ctx1) {$ctx1.fill(self,"testNonLocalReturn", [], smalltalk.CodeGeneratorTest)})}
 }),
 smalltalk.CodeGeneratorTest);
 
@@ -353,9 +358,9 @@ smalltalk.method({
 selector: "testSendReceiverAndArgumentsOrdered",
 fn: function (){
 var self=this;
-smalltalk.send(self,"_should_return_",["foo\x0a  | x |\x0a  x := 1.\x0a  ^ Array with: x with: (true ifTrue: [ x := 2 ])\x0a",[(1), (2)]]);
-smalltalk.send(self,"_should_return_",["foo\x0a  | x |\x0a  x := Array.\x0a  ^ x with: x with: (true ifTrue: [ x := 2 ])\x0a",[(smalltalk.Array || Array),(2)]]);
-return self}
+return smalltalk.withContext(function($ctx1) { 
_st(self)._should_return_("foo\x0a  | x |\x0a  x := 1.\x0a  ^ Array with: x with: (true ifTrue: [ x := 2 ])\x0a",[(1), (2)]);
+_st(self)._should_return_("foo\x0a  | x |\x0a  x := Array.\x0a  ^ x with: x with: (true ifTrue: [ x := 2 ])\x0a",[(smalltalk.Array || Array),(2)]);
+return self}, function($ctx1) {$ctx1.fill(self,"testSendReceiverAndArgumentsOrdered", [], smalltalk.CodeGeneratorTest)})}
 }),
 smalltalk.CodeGeneratorTest);
 
@@ -369,7 +374,7 @@ return smalltalk.withContext(function($ctx1) { 
_st(self)._should_return_("foo t
 _st(self)._should_return_("foo false ifFalse: [ ^ 2 ]",(2));
 _st(self)._should_return_("foo ^ true ifFalse: [ 1 ]",nil);
 _st(self)._should_return_("foo ^ false ifFalse: [ 2 ]",(2));
-return self}, self, "testifFalse", [], smalltalk.CodeGeneratorTest)}
+return self}, function($ctx1) {$ctx1.fill(self,"testifFalse", [], smalltalk.CodeGeneratorTest)})}
 }),
 smalltalk.CodeGeneratorTest);
 
@@ -383,7 +388,7 @@ return smalltalk.withContext(function($ctx1) { 
_st(self)._should_return_("foo t
 _st(self)._should_return_("foo false ifFalse: [ ^ 2 ] ifTrue: [ ^1 ]",(2));
 _st(self)._should_return_("foo ^ true ifFalse: [ 1 ] ifTrue: [ 2 ]",(2));
 _st(self)._should_return_("foo ^ false ifFalse: [ 2 ] ifTrue: [ 1 ]",(2));
-return self}, self, "testifFalseIfTrue", [], smalltalk.CodeGeneratorTest)}
+return self}, function($ctx1) {$ctx1.fill(self,"testifFalseIfTrue", [], smalltalk.CodeGeneratorTest)})}
 }),
 smalltalk.CodeGeneratorTest);
 
@@ -397,7 +402,7 @@ return smalltalk.withContext(function($ctx1) { 
_st(self)._should_return_("foo ^
 _st(self)._should_return_("foo ^ nil ifNil: [ 2 ]",(2));
 _st(self)._should_return_("foo 1 ifNil: [ ^ 2 ]",self["@receiver"]);
 _st(self)._should_return_("foo nil ifNil: [ ^ 2 ]",(2));
-return self}, self, "testifNil", [], smalltalk.CodeGeneratorTest)}
+return self}, function($ctx1) {$ctx1.fill(self,"testifNil", [], smalltalk.CodeGeneratorTest)})}
 }),
 smalltalk.CodeGeneratorTest);
 
@@ -411,7 +416,7 @@ return smalltalk.withContext(function($ctx1) { 
_st(self)._should_return_("foo ^
 _st(self)._should_return_("foo ^ nil ifNil: [ 2 ] ifNotNil: [ 3 ]",(2));
 _st(self)._should_return_("foo 1 ifNil: [ ^ 2 ] ifNotNil: [ ^3 ]",(3));
 _st(self)._should_return_("foo nil ifNil: [ ^ 2 ] ifNotNil: [ ^3 ]",(2));
-return self}, self, "testifNilIfNotNil", [], smalltalk.CodeGeneratorTest)}
+return self}, function($ctx1) {$ctx1.fill(self,"testifNilIfNotNil", [], smalltalk.CodeGeneratorTest)})}
 }),
 smalltalk.CodeGeneratorTest);
 
@@ -425,7 +430,7 @@ return smalltalk.withContext(function($ctx1) { 
_st(self)._should_return_("foo ^
 _st(self)._should_return_("foo ^ nil ifNotNil: [ 2 ]",nil);
 _st(self)._should_return_("foo 1 ifNotNil: [ ^ 2 ]",(2));
 _st(self)._should_return_("foo nil ifNotNil: [ ^ 2 ]",self["@receiver"]);
-return self}, self, "testifNotNil", [], smalltalk.CodeGeneratorTest)}
+return self}, function($ctx1) {$ctx1.fill(self,"testifNotNil", [], smalltalk.CodeGeneratorTest)})}
 }),
 smalltalk.CodeGeneratorTest);
 
@@ -439,7 +444,7 @@ return smalltalk.withContext(function($ctx1) { 
_st(self)._should_return_("foo f
 _st(self)._should_return_("foo true ifTrue: [ ^ 2 ]",(2));
 _st(self)._should_return_("foo ^ false ifTrue: [ 1 ]",nil);
 _st(self)._should_return_("foo ^ true ifTrue: [ 2 ]",(2));
-return self}, self, "testifTrue", [], smalltalk.CodeGeneratorTest)}
+return self}, function($ctx1) {$ctx1.fill(self,"testifTrue", [], smalltalk.CodeGeneratorTest)})}
 }),
 smalltalk.CodeGeneratorTest);
 
@@ -453,7 +458,7 @@ return smalltalk.withContext(function($ctx1) { 
_st(self)._should_return_("foo f
 _st(self)._should_return_("foo true ifTrue: [ ^ 1 ] ifFalse: [ ^ 2 ]",(1));
 _st(self)._should_return_("foo ^ false ifTrue: [ 2 ] ifFalse: [ 1 ]",(1));
 _st(self)._should_return_("foo ^ true ifTrue: [ 2 ] ifFalse: [ 1 ]",(2));
-return self}, self, "testifTrueIfFalse", [], smalltalk.CodeGeneratorTest)}
+return self}, function($ctx1) {$ctx1.fill(self,"testifTrueIfFalse", [], smalltalk.CodeGeneratorTest)})}
 }),
 smalltalk.CodeGeneratorTest);
 
@@ -466,8 +471,10 @@ smalltalk.method({
 selector: "codeGeneratorClass",
 fn: function (){
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
return (smalltalk.InliningCodeGenerator || InliningCodeGenerator);
-}, self, "codeGeneratorClass", [], smalltalk.InliningCodeGeneratorTest)}
+return smalltalk.withContext(function($ctx1) { 
var $1;
+$1=(smalltalk.InliningCodeGenerator || InliningCodeGenerator);
+return $1;
+}, function($ctx1) {$ctx1.fill(self,"codeGeneratorClass", [], smalltalk.InliningCodeGeneratorTest)})}
 }),
 smalltalk.InliningCodeGeneratorTest);
 
@@ -480,15 +487,15 @@ smalltalk.method({
 selector: "testClassRefVar",
 fn: function (){
 var self=this;
+var node;
 return smalltalk.withContext(function($ctx1) { 
var $1,$2;
-$ctx1.node=nil;
 $1=_st((smalltalk.ClassReferenceNode || ClassReferenceNode))._new();
 _st($1)._value_("Object");
 $2=_st($1)._yourself();
-$ctx1.locals.node=$2;
-_st(_st((smalltalk.SemanticAnalyzer || SemanticAnalyzer))._new())._visit_($ctx1.locals.node);
-_st(self)._assert_(_st(_st($ctx1.locals.node)._binding())._isClassRefVar());
-return self}, self, "testClassRefVar", [], smalltalk.ScopeVarTest)}
+node=$2;
+_st(_st((smalltalk.SemanticAnalyzer || SemanticAnalyzer))._new())._visit_(node);
+_st(self)._assert_(_st(_st(node)._binding())._isClassRefVar());
+return self}, function($ctx1) {$ctx1.fill(self,"testClassRefVar", [], smalltalk.ScopeVarTest)})}
 }),
 smalltalk.ScopeVarTest);
 
@@ -498,17 +505,16 @@ smalltalk.method({
 selector: "testInstanceVar",
 fn: function (){
 var self=this;
+var node,scope;
 return smalltalk.withContext(function($ctx1) { 
var $1,$2;
-$ctx1.node=nil;
-$ctx1.scope=nil;
 $1=_st((smalltalk.VariableNode || VariableNode))._new();
 _st($1)._value_("bzzz");
 $2=_st($1)._yourself();
-$ctx1.locals.node=$2;
-$ctx1.locals.scope=_st((smalltalk.MethodLexicalScope || MethodLexicalScope))._new();
-_st($ctx1.locals.scope)._addIVar_("bzzz");
-_st(self)._assert_(_st(_st($ctx1.locals.scope)._bindingFor_($ctx1.locals.node))._isInstanceVar());
-return self}, self, "testInstanceVar", [], smalltalk.ScopeVarTest)}
+node=$2;
+scope=_st((smalltalk.MethodLexicalScope || MethodLexicalScope))._new();
+_st(scope)._addIVar_("bzzz");
+_st(self)._assert_(_st(_st(scope)._bindingFor_(node))._isInstanceVar());
+return self}, function($ctx1) {$ctx1.fill(self,"testInstanceVar", [], smalltalk.ScopeVarTest)})}
 }),
 smalltalk.ScopeVarTest);
 
@@ -518,19 +524,18 @@ smalltalk.method({
 selector: "testPseudoVar",
 fn: function (){
 var self=this;
+var node,pseudoVars;
 return smalltalk.withContext(function($ctx1) { 
var $1,$2;
-$ctx1.node=nil;
-$ctx1.pseudoVars=nil;
-$ctx1.locals.pseudoVars=["self", "super", "true", "false", "nil"];
-_st($ctx1.locals.pseudoVars)._do_((function(each){
-return smalltalk.withContext(function($ctx2) { 
$1=_st((smalltalk.VariableNode || VariableNode))._new();
+pseudoVars=["self", "super", "true", "false", "nil"];
+_st(pseudoVars)._do_((function(each){
+return smalltalk.withContext(function($ctx2) {
$1=_st((smalltalk.VariableNode || VariableNode))._new();
 _st($1)._value_(each);
 $2=_st($1)._yourself();
-$ctx1.locals.node=$2;
-$ctx1.locals.node;
-return _st(self)._assert_(_st(_st(_st((smalltalk.MethodLexicalScope || MethodLexicalScope))._new())._bindingFor_($ctx1.locals.node))._isPseudoVar());
-})}));
-return self}, self, "testPseudoVar", [], smalltalk.ScopeVarTest)}
+node=$2;
+node;
+return _st(self)._assert_(_st(_st(_st((smalltalk.MethodLexicalScope || MethodLexicalScope))._new())._bindingFor_(node))._isPseudoVar());
+}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+return self}, function($ctx1) {$ctx1.fill(self,"testPseudoVar", [], smalltalk.ScopeVarTest)})}
 }),
 smalltalk.ScopeVarTest);
 
@@ -540,17 +545,16 @@ smalltalk.method({
 selector: "testTempVar",
 fn: function (){
 var self=this;
+var node,scope;
 return smalltalk.withContext(function($ctx1) { 
var $1,$2;
-$ctx1.node=nil;
-$ctx1.scope=nil;
 $1=_st((smalltalk.VariableNode || VariableNode))._new();
 _st($1)._value_("bzzz");
 $2=_st($1)._yourself();
-$ctx1.locals.node=$2;
-$ctx1.locals.scope=_st((smalltalk.MethodLexicalScope || MethodLexicalScope))._new();
-_st($ctx1.locals.scope)._addTemp_("bzzz");
-_st(self)._assert_(_st(_st($ctx1.locals.scope)._bindingFor_($ctx1.locals.node))._isTempVar());
-return self}, self, "testTempVar", [], smalltalk.ScopeVarTest)}
+node=$2;
+scope=_st((smalltalk.MethodLexicalScope || MethodLexicalScope))._new();
+_st(scope)._addTemp_("bzzz");
+_st(self)._assert_(_st(_st(scope)._bindingFor_(node))._isTempVar());
+return self}, function($ctx1) {$ctx1.fill(self,"testTempVar", [], smalltalk.ScopeVarTest)})}
 }),
 smalltalk.ScopeVarTest);
 
@@ -560,14 +564,14 @@ smalltalk.method({
 selector: "testUnknownVar",
 fn: function (){
 var self=this;
+var node;
 return smalltalk.withContext(function($ctx1) { 
var $1,$2;
-$ctx1.node=nil;
 $1=_st((smalltalk.VariableNode || VariableNode))._new();
 _st($1)._value_("bzzz");
 $2=_st($1)._yourself();
-$ctx1.locals.node=$2;
-_st(self)._assert_(_st(_st(_st((smalltalk.MethodLexicalScope || MethodLexicalScope))._new())._bindingFor_($ctx1.locals.node))._isNil());
-return self}, self, "testUnknownVar", [], smalltalk.ScopeVarTest)}
+node=$2;
+_st(self)._assert_(_st(_st(_st((smalltalk.MethodLexicalScope || MethodLexicalScope))._new())._bindingFor_(node))._isNil());
+return self}, function($ctx1) {$ctx1.fill(self,"testUnknownVar", [], smalltalk.ScopeVarTest)})}
 }),
 smalltalk.ScopeVarTest);
 
@@ -581,7 +585,7 @@ selector: "setUp",
 fn: function (){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
self["@analyzer"]=_st((smalltalk.SemanticAnalyzer || SemanticAnalyzer))._on_((smalltalk.Object || Object));
-return self}, self, "setUp", [], smalltalk.SemanticAnalyzerTest)}
+return self}, function($ctx1) {$ctx1.fill(self,"setUp", [], smalltalk.SemanticAnalyzerTest)})}
 }),
 smalltalk.SemanticAnalyzerTest);
 
@@ -591,14 +595,13 @@ smalltalk.method({
 selector: "testAssignment",
 fn: function (){
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
$ctx1.src=nil;
-$ctx1.ast=nil;
-$ctx1.locals.src="foo self := 1";
-$ctx1.locals.ast=_st(smalltalk)._parse_($ctx1.locals.src);
+var src,ast;
+return smalltalk.withContext(function($ctx1) { 
src="foo self := 1";
+ast=_st(smalltalk)._parse_(src);
 _st(self)._should_raise_((function(){
-return smalltalk.withContext(function($ctx2) { 
return _st(self["@analyzer"])._visit_($ctx1.locals.ast);
-})}),(smalltalk.InvalidAssignmentError || InvalidAssignmentError));
-return self}, self, "testAssignment", [], smalltalk.SemanticAnalyzerTest)}
+return smalltalk.withContext(function($ctx2) {
return _st(self["@analyzer"])._visit_(ast);
+}, function($ctx2) {$ctx2.fill(null, null, {})})}),(smalltalk.InvalidAssignmentError || InvalidAssignmentError));
+return self}, function($ctx1) {$ctx1.fill(self,"testAssignment", [], smalltalk.SemanticAnalyzerTest)})}
 }),
 smalltalk.SemanticAnalyzerTest);
 
@@ -608,13 +611,12 @@ smalltalk.method({
 selector: "testNonLocalReturn",
 fn: function (){
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
$ctx1.src=nil;
-$ctx1.ast=nil;
-$ctx1.locals.src="foo | a | a + 1. ^ a";
-$ctx1.locals.ast=_st(smalltalk)._parse_($ctx1.locals.src);
-_st(self["@analyzer"])._visit_($ctx1.locals.ast);
-_st(self)._deny_(_st(_st($ctx1.locals.ast)._scope())._hasNonLocalReturn());
-return self}, self, "testNonLocalReturn", [], smalltalk.SemanticAnalyzerTest)}
+var src,ast;
+return smalltalk.withContext(function($ctx1) { 
src="foo | a | a + 1. ^ a";
+ast=_st(smalltalk)._parse_(src);
+_st(self["@analyzer"])._visit_(ast);
+_st(self)._deny_(_st(_st(ast)._scope())._hasNonLocalReturn());
+return self}, function($ctx1) {$ctx1.fill(self,"testNonLocalReturn", [], smalltalk.SemanticAnalyzerTest)})}
 }),
 smalltalk.SemanticAnalyzerTest);
 
@@ -624,13 +626,12 @@ smalltalk.method({
 selector: "testNonLocalReturn2",
 fn: function (){
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
$ctx1.src=nil;
-$ctx1.ast=nil;
-$ctx1.locals.src="foo | a | a + 1. [ [ ^ a] ]";
-$ctx1.locals.ast=_st(smalltalk)._parse_($ctx1.locals.src);
-_st(self["@analyzer"])._visit_($ctx1.locals.ast);
-_st(self)._assert_(_st(_st($ctx1.locals.ast)._scope())._hasNonLocalReturn());
-return self}, self, "testNonLocalReturn2", [], smalltalk.SemanticAnalyzerTest)}
+var src,ast;
+return smalltalk.withContext(function($ctx1) { 
src="foo | a | a + 1. [ [ ^ a] ]";
+ast=_st(smalltalk)._parse_(src);
+_st(self["@analyzer"])._visit_(ast);
+_st(self)._assert_(_st(_st(ast)._scope())._hasNonLocalReturn());
+return self}, function($ctx1) {$ctx1.fill(self,"testNonLocalReturn2", [], smalltalk.SemanticAnalyzerTest)})}
 }),
 smalltalk.SemanticAnalyzerTest);
 
@@ -640,13 +641,12 @@ smalltalk.method({
 selector: "testScope",
 fn: function (){
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
$ctx1.src=nil;
-$ctx1.ast=nil;
-$ctx1.locals.src="foo | a | a + 1. [ | b | b := a ]";
-$ctx1.locals.ast=_st(smalltalk)._parse_($ctx1.locals.src);
-_st(self["@analyzer"])._visit_($ctx1.locals.ast);
-_st(self)._deny_(_st(_st(_st(_st(_st(_st($ctx1.locals.ast)._nodes())._first())._nodes())._last())._scope()).__eq_eq(_st($ctx1.locals.ast)._scope()));
-return self}, self, "testScope", [], smalltalk.SemanticAnalyzerTest)}
+var src,ast;
+return smalltalk.withContext(function($ctx1) { 
src="foo | a | a + 1. [ | b | b := a ]";
+ast=_st(smalltalk)._parse_(src);
+_st(self["@analyzer"])._visit_(ast);
+_st(self)._deny_(_st(_st(_st(_st(_st(_st(ast)._nodes())._first())._nodes())._last())._scope()).__eq_eq(_st(ast)._scope()));
+return self}, function($ctx1) {$ctx1.fill(self,"testScope", [], smalltalk.SemanticAnalyzerTest)})}
 }),
 smalltalk.SemanticAnalyzerTest);
 
@@ -656,13 +656,12 @@ smalltalk.method({
 selector: "testScope2",
 fn: function (){
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
$ctx1.src=nil;
-$ctx1.ast=nil;
-$ctx1.locals.src="foo | a | a + 1. [ [ | b | b := a ] ]";
-$ctx1.locals.ast=_st(smalltalk)._parse_($ctx1.locals.src);
-_st(self["@analyzer"])._visit_($ctx1.locals.ast);
-_st(self)._deny_(_st(_st(_st(_st(_st(_st(_st(_st(_st(_st($ctx1.locals.ast)._nodes())._first())._nodes())._last())._nodes())._first())._nodes())._first())._scope()).__eq_eq(_st($ctx1.locals.ast)._scope()));
-return self}, self, "testScope2", [], smalltalk.SemanticAnalyzerTest)}
+var src,ast;
+return smalltalk.withContext(function($ctx1) { 
src="foo | a | a + 1. [ [ | b | b := a ] ]";
+ast=_st(smalltalk)._parse_(src);
+_st(self["@analyzer"])._visit_(ast);
+_st(self)._deny_(_st(_st(_st(_st(_st(_st(_st(_st(_st(_st(ast)._nodes())._first())._nodes())._last())._nodes())._first())._nodes())._first())._scope()).__eq_eq(_st(ast)._scope()));
+return self}, function($ctx1) {$ctx1.fill(self,"testScope2", [], smalltalk.SemanticAnalyzerTest)})}
 }),
 smalltalk.SemanticAnalyzerTest);
 
@@ -672,14 +671,13 @@ smalltalk.method({
 selector: "testScopeLevel",
 fn: function (){
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
$ctx1.src=nil;
-$ctx1.ast=nil;
-$ctx1.locals.src="foo | a | a + 1. [ [ | b | b := a ] ]";
-$ctx1.locals.ast=_st(smalltalk)._parse_($ctx1.locals.src);
-_st(self["@analyzer"])._visit_($ctx1.locals.ast);
-_st(self)._assert_(_st(_st(_st($ctx1.locals.ast)._scope())._scopeLevel()).__eq((1)));
-_st(self)._assert_(_st(_st(_st(_st(_st(_st(_st(_st(_st(_st(_st($ctx1.locals.ast)._nodes())._first())._nodes())._last())._nodes())._first())._nodes())._first())._scope())._scopeLevel()).__eq((3)));
-return self}, self, "testScopeLevel", [], smalltalk.SemanticAnalyzerTest)}
+var src,ast;
+return smalltalk.withContext(function($ctx1) { 
src="foo | a | a + 1. [ [ | b | b := a ] ]";
+ast=_st(smalltalk)._parse_(src);
+_st(self["@analyzer"])._visit_(ast);
+_st(self)._assert_(_st(_st(_st(ast)._scope())._scopeLevel()).__eq((1)));
+_st(self)._assert_(_st(_st(_st(_st(_st(_st(_st(_st(_st(_st(_st(ast)._nodes())._first())._nodes())._last())._nodes())._first())._nodes())._first())._scope())._scopeLevel()).__eq((3)));
+return self}, function($ctx1) {$ctx1.fill(self,"testScopeLevel", [], smalltalk.SemanticAnalyzerTest)})}
 }),
 smalltalk.SemanticAnalyzerTest);
 
@@ -689,14 +687,13 @@ smalltalk.method({
 selector: "testUnknownVariables",
 fn: function (){
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
$ctx1.src=nil;
-$ctx1.ast=nil;
-$ctx1.locals.src="foo | a | b + a";
-$ctx1.locals.ast=_st(smalltalk)._parse_($ctx1.locals.src);
+var src,ast;
+return smalltalk.withContext(function($ctx1) { 
src="foo | a | b + a";
+ast=_st(smalltalk)._parse_(src);
 _st(self)._should_raise_((function(){
-return smalltalk.withContext(function($ctx2) { 
return _st(self["@analyzer"])._visit_($ctx1.locals.ast);
-})}),(smalltalk.UnknownVariableError || UnknownVariableError));
-return self}, self, "testUnknownVariables", [], smalltalk.SemanticAnalyzerTest)}
+return smalltalk.withContext(function($ctx2) {
return _st(self["@analyzer"])._visit_(ast);
+}, function($ctx2) {$ctx2.fill(null, null, {})})}),(smalltalk.UnknownVariableError || UnknownVariableError));
+return self}, function($ctx1) {$ctx1.fill(self,"testUnknownVariables", [], smalltalk.SemanticAnalyzerTest)})}
 }),
 smalltalk.SemanticAnalyzerTest);
 
@@ -706,14 +703,13 @@ smalltalk.method({
 selector: "testUnknownVariablesWithScope",
 fn: function (){
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
$ctx1.src=nil;
-$ctx1.ast=nil;
-$ctx1.locals.src="foo | a b | [ c + 1. [ a + 1. d + 1 ]]";
-$ctx1.locals.ast=_st(smalltalk)._parse_($ctx1.locals.src);
+var src,ast;
+return smalltalk.withContext(function($ctx1) { 
src="foo | a b | [ c + 1. [ a + 1. d + 1 ]]";
+ast=_st(smalltalk)._parse_(src);
 _st(self)._should_raise_((function(){
-return smalltalk.withContext(function($ctx2) { 
return _st(self["@analyzer"])._visit_($ctx1.locals.ast);
-})}),(smalltalk.UnknownVariableError || UnknownVariableError));
-return self}, self, "testUnknownVariablesWithScope", [], smalltalk.SemanticAnalyzerTest)}
+return smalltalk.withContext(function($ctx2) {
return _st(self["@analyzer"])._visit_(ast);
+}, function($ctx2) {$ctx2.fill(null, null, {})})}),(smalltalk.UnknownVariableError || UnknownVariableError));
+return self}, function($ctx1) {$ctx1.fill(self,"testUnknownVariablesWithScope", [], smalltalk.SemanticAnalyzerTest)})}
 }),
 smalltalk.SemanticAnalyzerTest);
 
@@ -723,12 +719,11 @@ smalltalk.method({
 selector: "testVariableShadowing",
 fn: function (){
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
$ctx1.src=nil;
-$ctx1.ast=nil;
-$ctx1.locals.src="foo | a | a + 1";
-$ctx1.locals.ast=_st(smalltalk)._parse_($ctx1.locals.src);
-_st(self["@analyzer"])._visit_($ctx1.locals.ast);
-return self}, self, "testVariableShadowing", [], smalltalk.SemanticAnalyzerTest)}
+var src,ast;
+return smalltalk.withContext(function($ctx1) { 
src="foo | a | a + 1";
+ast=_st(smalltalk)._parse_(src);
+_st(self["@analyzer"])._visit_(ast);
+return self}, function($ctx1) {$ctx1.fill(self,"testVariableShadowing", [], smalltalk.SemanticAnalyzerTest)})}
 }),
 smalltalk.SemanticAnalyzerTest);
 
@@ -738,14 +733,13 @@ smalltalk.method({
 selector: "testVariableShadowing2",
 fn: function (){
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
$ctx1.src=nil;
-$ctx1.ast=nil;
-$ctx1.locals.src="foo | a | a + 1. [ | a | a := 2 ]";
-$ctx1.locals.ast=_st(smalltalk)._parse_($ctx1.locals.src);
+var src,ast;
+return smalltalk.withContext(function($ctx1) { 
src="foo | a | a + 1. [ | a | a := 2 ]";
+ast=_st(smalltalk)._parse_(src);
 _st(self)._should_raise_((function(){
-return smalltalk.withContext(function($ctx2) { 
return _st(self["@analyzer"])._visit_($ctx1.locals.ast);
-})}),(smalltalk.ShadowingVariableError || ShadowingVariableError));
-return self}, self, "testVariableShadowing2", [], smalltalk.SemanticAnalyzerTest)}
+return smalltalk.withContext(function($ctx2) {
return _st(self["@analyzer"])._visit_(ast);
+}, function($ctx2) {$ctx2.fill(null, null, {})})}),(smalltalk.ShadowingVariableError || ShadowingVariableError));
+return self}, function($ctx1) {$ctx1.fill(self,"testVariableShadowing2", [], smalltalk.SemanticAnalyzerTest)})}
 }),
 smalltalk.SemanticAnalyzerTest);
 
@@ -755,12 +749,11 @@ smalltalk.method({
 selector: "testVariableShadowing3",
 fn: function (){
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
$ctx1.src=nil;
-$ctx1.ast=nil;
-$ctx1.locals.src="foo | a | a + 1. [ | b | b := 2 ]";
-$ctx1.locals.ast=_st(smalltalk)._parse_($ctx1.locals.src);
-_st(self["@analyzer"])._visit_($ctx1.locals.ast);
-return self}, self, "testVariableShadowing3", [], smalltalk.SemanticAnalyzerTest)}
+var src,ast;
+return smalltalk.withContext(function($ctx1) { 
src="foo | a | a + 1. [ | b | b := 2 ]";
+ast=_st(smalltalk)._parse_(src);
+_st(self["@analyzer"])._visit_(ast);
+return self}, function($ctx1) {$ctx1.fill(self,"testVariableShadowing3", [], smalltalk.SemanticAnalyzerTest)})}
 }),
 smalltalk.SemanticAnalyzerTest);
 
@@ -770,12 +763,11 @@ smalltalk.method({
 selector: "testVariableShadowing4",
 fn: function (){
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
$ctx1.src=nil;
-$ctx1.ast=nil;
-$ctx1.locals.src="foo | a | a + 1. [ [ [ | b | b := 2 ] ] ]";
-$ctx1.locals.ast=_st(smalltalk)._parse_($ctx1.locals.src);
-_st(self["@analyzer"])._visit_($ctx1.locals.ast);
-return self}, self, "testVariableShadowing4", [], smalltalk.SemanticAnalyzerTest)}
+var src,ast;
+return smalltalk.withContext(function($ctx1) { 
src="foo | a | a + 1. [ [ [ | b | b := 2 ] ] ]";
+ast=_st(smalltalk)._parse_(src);
+_st(self["@analyzer"])._visit_(ast);
+return self}, function($ctx1) {$ctx1.fill(self,"testVariableShadowing4", [], smalltalk.SemanticAnalyzerTest)})}
 }),
 smalltalk.SemanticAnalyzerTest);
 
@@ -785,14 +777,13 @@ smalltalk.method({
 selector: "testVariableShadowing5",
 fn: function (){
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
$ctx1.src=nil;
-$ctx1.ast=nil;
-$ctx1.locals.src="foo | a | a + 1. [ [ [ | a | a := 2 ] ] ]";
-$ctx1.locals.ast=_st(smalltalk)._parse_($ctx1.locals.src);
+var src,ast;
+return smalltalk.withContext(function($ctx1) { 
src="foo | a | a + 1. [ [ [ | a | a := 2 ] ] ]";
+ast=_st(smalltalk)._parse_(src);
 _st(self)._should_raise_((function(){
-return smalltalk.withContext(function($ctx2) { 
return _st(self["@analyzer"])._visit_($ctx1.locals.ast);
-})}),(smalltalk.ShadowingVariableError || ShadowingVariableError));
-return self}, self, "testVariableShadowing5", [], smalltalk.SemanticAnalyzerTest)}
+return smalltalk.withContext(function($ctx2) {
return _st(self["@analyzer"])._visit_(ast);
+}, function($ctx2) {$ctx2.fill(null, null, {})})}),(smalltalk.ShadowingVariableError || ShadowingVariableError));
+return self}, function($ctx1) {$ctx1.fill(self,"testVariableShadowing5", [], smalltalk.SemanticAnalyzerTest)})}
 }),
 smalltalk.SemanticAnalyzerTest);
 
@@ -802,16 +793,15 @@ smalltalk.method({
 selector: "testVariablesLookup",
 fn: function (){
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
$ctx1.src=nil;
-$ctx1.ast=nil;
-$ctx1.locals.src="foo | a | a + 1. [ | b | b := a ]";
-$ctx1.locals.ast=_st(smalltalk)._parse_($ctx1.locals.src);
-_st(self["@analyzer"])._visit_($ctx1.locals.ast);
-_st(self)._assert_(_st(_st(_st(_st(_st(_st(_st($ctx1.locals.ast)._nodes())._first())._nodes())._first())._receiver())._binding())._isTempVar());
-_st(self)._assert_(_st(_st(_st(_st(_st(_st(_st(_st($ctx1.locals.ast)._nodes())._first())._nodes())._first())._receiver())._binding())._scope()).__eq_eq(_st($ctx1.locals.ast)._scope()));
-_st(self)._assert_(_st(_st(_st(_st(_st(_st(_st(_st(_st(_st(_st($ctx1.locals.ast)._nodes())._first())._nodes())._last())._nodes())._first())._nodes())._first())._left())._binding())._isTempVar());
-_st(self)._assert_(_st(_st(_st(_st(_st(_st(_st(_st(_st(_st(_st(_st($ctx1.locals.ast)._nodes())._first())._nodes())._last())._nodes())._first())._nodes())._first())._left())._binding())._scope()).__eq_eq(_st(_st(_st(_st(_st($ctx1.locals.ast)._nodes())._first())._nodes())._last())._scope()));
-return self}, self, "testVariablesLookup", [], smalltalk.SemanticAnalyzerTest)}
+var src,ast;
+return smalltalk.withContext(function($ctx1) { 
src="foo | a | a + 1. [ | b | b := a ]";
+ast=_st(smalltalk)._parse_(src);
+_st(self["@analyzer"])._visit_(ast);
+_st(self)._assert_(_st(_st(_st(_st(_st(_st(_st(ast)._nodes())._first())._nodes())._first())._receiver())._binding())._isTempVar());
+_st(self)._assert_(_st(_st(_st(_st(_st(_st(_st(_st(ast)._nodes())._first())._nodes())._first())._receiver())._binding())._scope()).__eq_eq(_st(ast)._scope()));
+_st(self)._assert_(_st(_st(_st(_st(_st(_st(_st(_st(_st(_st(_st(ast)._nodes())._first())._nodes())._last())._nodes())._first())._nodes())._first())._left())._binding())._isTempVar());
+_st(self)._assert_(_st(_st(_st(_st(_st(_st(_st(_st(_st(_st(_st(_st(ast)._nodes())._first())._nodes())._last())._nodes())._first())._nodes())._first())._left())._binding())._scope()).__eq_eq(_st(_st(_st(_st(_st(ast)._nodes())._first())._nodes())._last())._scope()));
+return self}, function($ctx1) {$ctx1.fill(self,"testVariablesLookup", [], smalltalk.SemanticAnalyzerTest)})}
 }),
 smalltalk.SemanticAnalyzerTest);
 

+ 182 - 192
js/Compiler-Tests.js

@@ -7,9 +7,11 @@ selector: "analyze:forClass:",
 category: 'accessing',
 fn: function (aNode,aClass){
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
_st(_st((smalltalk.SemanticAnalyzer || SemanticAnalyzer))._on_(aClass))._visit_(aNode);
-return aNode;
-}, self, "analyze:forClass:", [aNode,aClass], smalltalk.ASTInterpreterTest)},
+return smalltalk.withContext(function($ctx1) { 
var $1;
+_st(_st((smalltalk.SemanticAnalyzer || SemanticAnalyzer))._on_(aClass))._visit_(aNode);
+$1=aNode;
+return $1;
+}, function($ctx1) {$ctx1.fill(self,"analyze:forClass:", [aNode,aClass], smalltalk.ASTInterpreterTest)})},
 args: ["aNode", "aClass"],
 source: "analyze: aNode forClass: aClass\x0a\x09(SemanticAnalyzer on: aClass) visit: aNode.\x0a    ^ aNode",
 messageSends: ["visit:", "on:"],
@@ -27,7 +29,7 @@ var self=this;
 return smalltalk.withContext(function($ctx1) { 
var $1;
 $1=_st(self)._interpret_withArguments_(aString,_st((smalltalk.Dictionary || Dictionary))._new());
 return $1;
-}, self, "interpret:", [aString], smalltalk.ASTInterpreterTest)},
+}, function($ctx1) {$ctx1.fill(self,"interpret:", [aString], smalltalk.ASTInterpreterTest)})},
 args: ["aString"],
 source: "interpret: aString\x0a\x09^ self \x0a    \x09interpret: aString \x0a        withArguments: Dictionary new",
 messageSends: ["interpret:withArguments:", "new"],
@@ -42,18 +44,18 @@ selector: "interpret:withArguments:",
 category: 'accessing',
 fn: function (aString,aDictionary){
 var self=this;
+var ctx;
 return smalltalk.withContext(function($ctx1) { 
var $2,$3,$1;
-$ctx1.locals.ctx=nil;
-$ctx1.locals.ctx=_st((smalltalk.AIContext || AIContext))._new();
+ctx=_st((smalltalk.AIContext || AIContext))._new();
 _st(aDictionary)._keysAndValuesDo_((function(key,value){
-return smalltalk.withContext(function($ctx2) { 
return _st($ctx1.locals.ctx)._localAt_put_(key,value);
-})}));
+return smalltalk.withContext(function($ctx2) {
return _st(ctx)._localAt_put_(key,value);
+}, function($ctx2) {$ctx2.fill(null, null, {})})}));
 $2=_st((smalltalk.ASTInterpreter || ASTInterpreter))._new();
-_st($2)._context_($ctx1.locals.ctx);
+_st($2)._context_(ctx);
 $3=_st($2)._interpret_(_st(_st(_st(self)._parse_forClass_(aString,(smalltalk.Object || Object)))._nodes())._first());
 $1=$3;
 return $1;
-}, self, "interpret:withArguments:", [aString,aDictionary], smalltalk.ASTInterpreterTest)},
+}, function($ctx1) {$ctx1.fill(self,"interpret:withArguments:", [aString,aDictionary], smalltalk.ASTInterpreterTest)})},
 args: ["aString", "aDictionary"],
 source: "interpret: aString withArguments: aDictionary\x0a\x09\x22The food is a methodNode. Interpret the sequenceNode only\x22\x0a    \x0a    | ctx |\x0a    \x0a    ctx := AIContext new.\x0a    aDictionary keysAndValuesDo: [ :key :value |\x0a    \x09ctx localAt: key put: value ].\x0a    \x0a    ^ ASTInterpreter new\x0a    \x09context: ctx;\x0a    \x09interpret: (self parse: aString forClass: Object) \x0a        \x09nodes first",
 messageSends: ["new", "keysAndValuesDo:", "localAt:put:", "context:", "interpret:", "first", "nodes", "parse:forClass:"],
@@ -71,7 +73,7 @@ var self=this;
 return smalltalk.withContext(function($ctx1) { 
var $1;
 $1=_st(_st((smalltalk.Smalltalk || Smalltalk))._current())._parse_(aString);
 return $1;
-}, self, "parse:", [aString], smalltalk.ASTInterpreterTest)},
+}, function($ctx1) {$ctx1.fill(self,"parse:", [aString], smalltalk.ASTInterpreterTest)})},
 args: ["aString"],
 source: "parse: aString\x0a\x09^ Smalltalk current parse: aString",
 messageSends: ["parse:", "current"],
@@ -89,7 +91,7 @@ var self=this;
 return smalltalk.withContext(function($ctx1) { 
var $1;
 $1=_st(self)._analyze_forClass_(_st(self)._parse_(aString),aClass);
 return $1;
-}, self, "parse:forClass:", [aString,aClass], smalltalk.ASTInterpreterTest)},
+}, function($ctx1) {$ctx1.fill(self,"parse:forClass:", [aString,aClass], smalltalk.ASTInterpreterTest)})},
 args: ["aString", "aClass"],
 source: "parse: aString forClass: aClass\x0a\x09^ self analyze: (self parse: aString) forClass: aClass",
 messageSends: ["analyze:forClass:", "parse:"],
@@ -105,7 +107,7 @@ category: 'tests',
 fn: function (){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
_st(self)._assert_equals_(_st(self)._interpret_("foo 2+3+4"),(9));
-return self}, self, "testBinarySend", [], smalltalk.ASTInterpreterTest)},
+return self}, function($ctx1) {$ctx1.fill(self,"testBinarySend", [], smalltalk.ASTInterpreterTest)})},
 args: [],
 source: "testBinarySend\x0a\x09self assert: (self interpret: 'foo 2+3+4') equals: 9",
 messageSends: ["assert:equals:", "interpret:"],
@@ -123,7 +125,7 @@ var self=this;
 return smalltalk.withContext(function($ctx1) { 
_st(self)._assert_equals_(_st(self)._interpret_("foo ^ true ifTrue: [ 1 ] ifFalse: [ 2 ]"),(1));
 _st(self)._assert_equals_(_st(self)._interpret_("foo true ifTrue: [ ^ 1 ] ifFalse: [ 2 ]"),(1));
 _st(self)._assert_equals_(_st(self)._interpret_("foo ^ false ifTrue: [ 1 ] ifFalse: [ 2 ]"),(2));
-return self}, self, "testBlockLiteral", [], smalltalk.ASTInterpreterTest)},
+return self}, function($ctx1) {$ctx1.fill(self,"testBlockLiteral", [], smalltalk.ASTInterpreterTest)})},
 args: [],
 source: "testBlockLiteral\x0a\x09self assert: (self interpret: 'foo ^ true ifTrue: [ 1 ] ifFalse: [ 2 ]') equals: 1.\x0a    self assert: (self interpret: 'foo true ifTrue: [ ^ 1 ] ifFalse: [ 2 ]') equals: 1.\x0a    self assert: (self interpret: 'foo ^ false ifTrue: [ 1 ] ifFalse: [ 2 ]') equals: 2",
 messageSends: ["assert:equals:", "interpret:"],
@@ -139,7 +141,7 @@ category: 'tests',
 fn: function (){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
_st(self)._assert_equals_(_st(self)._interpret_("foo ^ OrderedCollection new add: 2; add: 3; yourself"),_st((smalltalk.OrderedCollection || OrderedCollection))._with_with_((2),(3)));
-return self}, self, "testCascade", [], smalltalk.ASTInterpreterTest)},
+return self}, function($ctx1) {$ctx1.fill(self,"testCascade", [], smalltalk.ASTInterpreterTest)})},
 args: [],
 source: "testCascade\x0a\x09self assert: (self interpret: 'foo ^ OrderedCollection new add: 2; add: 3; yourself') equals: (OrderedCollection with: 2 with: 3)",
 messageSends: ["assert:equals:", "interpret:", "with:with:"],
@@ -156,7 +158,7 @@ fn: function (){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
_st(self)._assert_equals_(_st(self)._interpret_("foo <return 2+3>"),(5));
 _st(self)._assert_equals_(_st(self)._interpret_withArguments_("foo: anInteger <return 2 + anInteger>",smalltalk.HashedCollection._fromPairs_([_st("anInteger").__minus_gt((3))])),(5));
-return self}, self, "testInlinedJSStatement", [], smalltalk.ASTInterpreterTest)},
+return self}, function($ctx1) {$ctx1.fill(self,"testInlinedJSStatement", [], smalltalk.ASTInterpreterTest)})},
 args: [],
 source: "testInlinedJSStatement\x0a\x09self assert: (self interpret: 'foo <return 2+3>') equals: 5.\x0a    self \x0a    \x09assert: (self \x0a    \x09\x09interpret: 'foo: anInteger <return 2 + anInteger>' \x0a        \x09withArguments: #{ 'anInteger' -> 3}) \x0a\x09\x09equals: 5",
 messageSends: ["assert:equals:", "interpret:", "interpret:withArguments:", "->"],
@@ -174,8 +176,10 @@ selector: "codeGeneratorClass",
 category: 'accessing',
 fn: function (){
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
return (smalltalk.CodeGenerator || CodeGenerator);
-}, self, "codeGeneratorClass", [], smalltalk.CodeGeneratorTest)},
+return smalltalk.withContext(function($ctx1) { 
var $1;
+$1=(smalltalk.CodeGenerator || CodeGenerator);
+return $1;
+}, function($ctx1) {$ctx1.fill(self,"codeGeneratorClass", [], smalltalk.CodeGeneratorTest)})},
 args: [],
 source: "codeGeneratorClass\x0a\x09^ CodeGenerator",
 messageSends: [],
@@ -196,7 +200,7 @@ _st($2)._codeGeneratorClass_(_st(self)._codeGeneratorClass());
 $3=_st($2)._yourself();
 $1=$3;
 return $1;
-}, self, "compiler", [], smalltalk.CodeGeneratorTest)},
+}, function($ctx1) {$ctx1.fill(self,"compiler", [], smalltalk.CodeGeneratorTest)})},
 args: [],
 source: "compiler\x0a\x09^ Compiler new\x0a\x09\x09codeGeneratorClass: self codeGeneratorClass;\x0a\x09\x09yourself",
 messageSends: ["codeGeneratorClass:", "codeGeneratorClass", "new", "yourself"],
@@ -212,7 +216,7 @@ category: 'initialization',
 fn: function (){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
self["@receiver"]=_st(_st(self)._targetClass())._new();
-return self}, self, "setUp", [], smalltalk.CodeGeneratorTest)},
+return self}, function($ctx1) {$ctx1.fill(self,"setUp", [], smalltalk.CodeGeneratorTest)})},
 args: [],
 source: "setUp\x0a\x09receiver := self targetClass new",
 messageSends: ["new", "targetClass"],
@@ -227,13 +231,12 @@ selector: "should:return:",
 category: 'testing',
 fn: function (aString,anObject){
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
$ctx1.method=nil;
-$ctx1.result=nil;
-$ctx1.locals.method=_st(_st(self)._compiler())._install_forClass_category_(aString,_st(self)._targetClass(),"tests");
-$ctx1.locals.result=_st(self["@receiver"])._perform_(_st($ctx1.locals.method)._selector());
-_st(_st(self)._targetClass())._removeCompiledMethod_($ctx1.locals.method);
-_st(self)._assert_equals_(anObject,$ctx1.locals.result);
-return self}, self, "should:return:", [aString,anObject], smalltalk.CodeGeneratorTest)},
+var method,result;
+return smalltalk.withContext(function($ctx1) { 
method=_st(_st(self)._compiler())._install_forClass_category_(aString,_st(self)._targetClass(),"tests");
+result=_st(self["@receiver"])._perform_(_st(method)._selector());
+_st(_st(self)._targetClass())._removeCompiledMethod_(method);
+_st(self)._assert_equals_(anObject,result);
+return self}, function($ctx1) {$ctx1.fill(self,"should:return:", [aString,anObject], smalltalk.CodeGeneratorTest)})},
 args: ["aString", "anObject"],
 source: "should: aString return: anObject\x0a\x09| method result |\x0a\x0a\x09method := self compiler install: aString forClass: self targetClass category: 'tests'.\x0a\x09result := receiver perform: method selector.\x0a\x09self targetClass removeCompiledMethod: method.\x0a\x09self assert: anObject equals: result",
 messageSends: ["install:forClass:category:", "targetClass", "compiler", "perform:", "selector", "removeCompiledMethod:", "assert:equals:"],
@@ -248,8 +251,10 @@ selector: "targetClass",
 category: 'accessing',
 fn: function (){
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
return (smalltalk.DoIt || DoIt);
-}, self, "targetClass", [], smalltalk.CodeGeneratorTest)},
+return smalltalk.withContext(function($ctx1) { 
var $1;
+$1=(smalltalk.DoIt || DoIt);
+return $1;
+}, function($ctx1) {$ctx1.fill(self,"targetClass", [], smalltalk.CodeGeneratorTest)})},
 args: [],
 source: "targetClass\x0a\x09^ DoIt",
 messageSends: [],
@@ -264,7 +269,7 @@ selector: "tearDown",
 category: 'initialization',
 fn: function (){
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
return self}, self, "tearDown", [], smalltalk.CodeGeneratorTest)},
+return smalltalk.withContext(function($ctx1) { 
return self}, function($ctx1) {$ctx1.fill(self,"tearDown", [], smalltalk.CodeGeneratorTest)})},
 args: [],
 source: "tearDown\x0a\x09\x22receiver := nil\x22",
 messageSends: [],
@@ -282,7 +287,7 @@ var self=this;
 return smalltalk.withContext(function($ctx1) { 
_st(self)._should_return_("foo | a | a := true ifTrue: [ 1 ]. ^ a",(1));
 _st(self)._should_return_("foo | a | a := false ifTrue: [ 1 ]. ^ a",nil);
 _st(self)._should_return_("foo | a | ^ a := true ifTrue: [ 1 ]",(1));
-return self}, self, "testAssignment", [], smalltalk.CodeGeneratorTest)},
+return self}, function($ctx1) {$ctx1.fill(self,"testAssignment", [], smalltalk.CodeGeneratorTest)})},
 args: [],
 source: "testAssignment\x0a\x09self should: 'foo | a | a := true ifTrue: [ 1 ]. ^ a' return: 1.\x0a\x09self should: 'foo | a | a := false ifTrue: [ 1 ]. ^ a' return: nil.\x0a\x0a\x09self should: 'foo | a | ^ a := true ifTrue: [ 1 ]' return: 1 ",
 messageSends: ["should:return:"],
@@ -300,7 +305,7 @@ var self=this;
 return smalltalk.withContext(function($ctx1) { 
_st(self)._should_return_("foo ^ #(1 2 3) collect: [ :each | true ifTrue: [ each + 1 ] ]",[(2), (3), (4)]);
 _st(self)._should_return_("foo ^ #(1 2 3) collect: [ :each | false ifFalse: [ each + 1 ] ]",[(2), (3), (4)]);
 _st(self)._should_return_("foo ^ #(1 2 3) collect: [ :each | each odd ifTrue: [ each + 1 ] ifFalse: [ each - 1 ] ]",[(2), (1), (4)]);
-return self}, self, "testBlockReturn", [], smalltalk.CodeGeneratorTest)},
+return self}, function($ctx1) {$ctx1.fill(self,"testBlockReturn", [], smalltalk.CodeGeneratorTest)})},
 args: [],
 source: "testBlockReturn\x0a\x09self should: 'foo ^ #(1 2 3) collect: [ :each | true ifTrue: [ each + 1 ] ]' return: #(2 3 4).\x0a\x09self should: 'foo ^ #(1 2 3) collect: [ :each | false ifFalse: [ each + 1 ] ]' return: #(2 3 4).\x0a\x09self should: 'foo ^ #(1 2 3) collect: [ :each | each odd ifTrue: [ each + 1 ] ifFalse: [ each - 1 ] ]' return: #(2 1 4).",
 messageSends: ["should:return:"],
@@ -316,7 +321,7 @@ category: 'tests',
 fn: function (){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
_st(self)._should_return_("foo ^ Array new add: 3; add: 4; yourself",[(3), (4)]);
-return self}, self, "testCascades", [], smalltalk.CodeGeneratorTest)},
+return self}, function($ctx1) {$ctx1.fill(self,"testCascades", [], smalltalk.CodeGeneratorTest)})},
 args: [],
 source: "testCascades\x0a\x09\x0a\x09self should: 'foo ^ Array new add: 3; add: 4; yourself' return: #(3 4)",
 messageSends: ["should:return:"],
@@ -331,8 +336,8 @@ selector: "testDynamicArrayElementsOrdered",
 category: 'tests',
 fn: function (){
 var self=this;
-smalltalk.send(self,"_should_return_",["foo\x0a  | x |\x0a  x := 1.\x0a  ^ { x. true ifTrue: [ x := 2 ] }\x0a",[(1), (2)]]);
-return self},
+return smalltalk.withContext(function($ctx1) { 
_st(self)._should_return_("foo\x0a  | x |\x0a  x := 1.\x0a  ^ { x. true ifTrue: [ x := 2 ] }\x0a",[(1), (2)]);
+return self}, function($ctx1) {$ctx1.fill(self,"testDynamicArrayElementsOrdered", [], smalltalk.CodeGeneratorTest)})},
 args: [],
 source: "testDynamicArrayElementsOrdered\x0a\x09self should: 'foo\x0a  | x |\x0a  x := 1.\x0a  ^ { x. true ifTrue: [ x := 2 ] }\x0a' return: #(1 2).\x0a",
 messageSends: ["should:return:"],
@@ -347,8 +352,8 @@ selector: "testDynamicDictionaryElementsOrdered",
 category: 'tests',
 fn: function (){
 var self=this;
-smalltalk.send(self,"_should_return_",["foo\x0a  | x |\x0a  x := 'foo'->1.\x0a  ^ #{ x. (true ifTrue: [ x := 'bar'->2 ]) }\x0a",smalltalk.HashedCollection._fromPairs_([smalltalk.send("foo","__minus_gt",[(1)]),smalltalk.send("bar","__minus_gt",[(2)])])]);
-return self},
+return smalltalk.withContext(function($ctx1) { 
_st(self)._should_return_("foo\x0a  | x |\x0a  x := 'foo'->1.\x0a  ^ #{ x. (true ifTrue: [ x := 'bar'->2 ]) }\x0a",smalltalk.HashedCollection._fromPairs_([_st("foo").__minus_gt((1)),_st("bar").__minus_gt((2))]));
+return self}, function($ctx1) {$ctx1.fill(self,"testDynamicDictionaryElementsOrdered", [], smalltalk.CodeGeneratorTest)})},
 args: [],
 source: "testDynamicDictionaryElementsOrdered\x0a\x09self should: 'foo\x0a  | x |\x0a  x := ''foo''->1.\x0a  ^ #{ x. (true ifTrue: [ x := ''bar''->2 ]) }\x0a' return: #{'foo'->1. 'bar'->2}.\x0a",
 messageSends: ["should:return:", "->"],
@@ -363,11 +368,11 @@ selector: "testInnerTemporalDependentElementsOrdered",
 category: 'tests',
 fn: function (){
 var self=this;
-smalltalk.send(self,"_should_return_",["foo\x0a  | x |\x0a  x := Array.\x0a  ^ x with: 'foo'->x with: 'bar'->(true ifTrue: [ x := 2 ])\x0a",[smalltalk.send("foo","__minus_gt",[(smalltalk.Array || Array)]),smalltalk.send("bar","__minus_gt",[(2)])]]);
-smalltalk.send(self,"_should_return_",["foo\x0a  | x |\x0a  x := 1.\x0a  ^ Array with: 'foo'->x with: 'bar'->(true ifTrue: [ x := 2 ])\x0a",[smalltalk.send("foo","__minus_gt",[(1)]),smalltalk.send("bar","__minus_gt",[(2)])]]);
-smalltalk.send(self,"_should_return_",["foo\x0a  | x |\x0a  x := 1.\x0a  ^ { 'foo'->x. 'bar'->(true ifTrue: [ x := 2 ]) }\x0a",[smalltalk.send("foo","__minus_gt",[(1)]),smalltalk.send("bar","__minus_gt",[(2)])]]);
-smalltalk.send(self,"_should_return_",["foo\x0a  | x |\x0a  x := 1.\x0a  ^ #{ 'foo'->x. 'bar'->(true ifTrue: [ x := 2 ]) }\x0a",smalltalk.HashedCollection._fromPairs_([smalltalk.send("foo","__minus_gt",[(1)]),smalltalk.send("bar","__minus_gt",[(2)])])]);
-return self},
+return smalltalk.withContext(function($ctx1) { 
_st(self)._should_return_("foo\x0a  | x |\x0a  x := Array.\x0a  ^ x with: 'foo'->x with: 'bar'->(true ifTrue: [ x := 2 ])\x0a",[_st("foo").__minus_gt((smalltalk.Array || Array)),_st("bar").__minus_gt((2))]);
+_st(self)._should_return_("foo\x0a  | x |\x0a  x := 1.\x0a  ^ Array with: 'foo'->x with: 'bar'->(true ifTrue: [ x := 2 ])\x0a",[_st("foo").__minus_gt((1)),_st("bar").__minus_gt((2))]);
+_st(self)._should_return_("foo\x0a  | x |\x0a  x := 1.\x0a  ^ { 'foo'->x. 'bar'->(true ifTrue: [ x := 2 ]) }\x0a",[_st("foo").__minus_gt((1)),_st("bar").__minus_gt((2))]);
+_st(self)._should_return_("foo\x0a  | x |\x0a  x := 1.\x0a  ^ #{ 'foo'->x. 'bar'->(true ifTrue: [ x := 2 ]) }\x0a",smalltalk.HashedCollection._fromPairs_([_st("foo").__minus_gt((1)),_st("bar").__minus_gt((2))]));
+return self}, function($ctx1) {$ctx1.fill(self,"testInnerTemporalDependentElementsOrdered", [], smalltalk.CodeGeneratorTest)})},
 args: [],
 source: "testInnerTemporalDependentElementsOrdered\x0a\x09self should: 'foo\x0a  | x |\x0a  x := Array.\x0a  ^ x with: ''foo''->x with: ''bar''->(true ifTrue: [ x := 2 ])\x0a' return: {'foo'->Array. 'bar'->2}.\x0a\x09self should: 'foo\x0a  | x |\x0a  x := 1.\x0a  ^ Array with: ''foo''->x with: ''bar''->(true ifTrue: [ x := 2 ])\x0a' return: {'foo'->1. 'bar'->2}.\x0a\x09self should: 'foo\x0a  | x |\x0a  x := 1.\x0a  ^ { ''foo''->x. ''bar''->(true ifTrue: [ x := 2 ]) }\x0a' return: {'foo'->1. 'bar'->2}.\x0a\x09self should: 'foo\x0a  | x |\x0a  x := 1.\x0a  ^ #{ ''foo''->x. ''bar''->(true ifTrue: [ x := 2 ]) }\x0a' return: #{'foo'->1. 'bar'->2}.\x0a",
 messageSends: ["should:return:", "->"],
@@ -391,7 +396,7 @@ _st(self)._should_return_("foo ^ false",false);
 _st(self)._should_return_("foo ^ #{1->2. 3->4}",smalltalk.HashedCollection._fromPairs_([_st((1)).__minus_gt((2)),_st((3)).__minus_gt((4))]));
 _st(self)._should_return_("foo ^ #hello",smalltalk.symbolFor("hello"));
 _st(self)._should_return_("foo ^ -123.456",(-123.456));
-return self}, self, "testLiterals", [], smalltalk.CodeGeneratorTest)},
+return self}, function($ctx1) {$ctx1.fill(self,"testLiterals", [], smalltalk.CodeGeneratorTest)})},
 args: [],
 source: "testLiterals\x0a\x09self should: 'foo ^ 1' return: 1.\x0a\x09self should: 'foo ^ ''hello''' return: 'hello'.\x0a\x09self should: 'foo ^ #(1 2 3 4)' return: #(1 2 3 4).\x0a\x09self should: 'foo ^ {1. [:x | x ] value: 2. 3. [4] value}' return: #(1 2 3 4).\x0a\x09self should: 'foo ^ true' return: true.\x0a\x09self should: 'foo ^ false' return: false.\x0a\x09self should: 'foo ^ #{1->2. 3->4}' return: #{1->2. 3->4}.\x0a\x09self should: 'foo ^ #hello' return: #hello.\x0a\x09self should: 'foo ^ -123.456' return: -123.456",
 messageSends: ["should:return:", "->"],
@@ -411,7 +416,7 @@ _st(self)._should_return_("foo ^ 1 + 1",(2));
 _st(self)._should_return_("foo ",self["@receiver"]);
 _st(self)._should_return_("foo self asString",self["@receiver"]);
 _st(self)._should_return_("foo | a b | a := 1. b := 2. ^ a + b",(3));
-return self}, self, "testLocalReturn", [], smalltalk.CodeGeneratorTest)},
+return self}, function($ctx1) {$ctx1.fill(self,"testLocalReturn", [], smalltalk.CodeGeneratorTest)})},
 args: [],
 source: "testLocalReturn\x0a\x09self should: 'foo ^ 1' return: 1.\x0a\x09self should: 'foo ^ 1 + 1' return: 2.\x0a\x09self should: 'foo ' return: receiver.\x0a\x09self should: 'foo self asString' return: receiver.\x0a\x09self should: 'foo | a b | a := 1. b := 2. ^ a + b' return: 3",
 messageSends: ["should:return:"],
@@ -431,7 +436,7 @@ _st(self)._should_return_("foo ^ 1 + 1",(2));
 _st(self)._should_return_("foo ^ 1 + 2 * 3",(9));
 _st(self)._should_return_("foo ^ 1 to: 3",[(1), (2), (3)]);
 _st(self)._should_return_("foo ^ 1 to: 5 by: 2",[(1), (3), (5)]);
-return self}, self, "testMessageSends", [], smalltalk.CodeGeneratorTest)},
+return self}, function($ctx1) {$ctx1.fill(self,"testMessageSends", [], smalltalk.CodeGeneratorTest)})},
 args: [],
 source: "testMessageSends\x0a\x09self should: 'foo ^ 1 asString' return: '1'.\x0a\x0a\x09self should: 'foo ^ 1 + 1' return: 2.\x0a\x09self should: 'foo ^ 1 + 2 * 3' return: 9.\x0a\x0a\x09self should: 'foo ^ 1 to: 3' return: #(1 2 3).\x0a\x09self should: 'foo ^ 1 to: 5 by: 2' return: #(1 3 5)",
 messageSends: ["should:return:"],
@@ -450,7 +455,7 @@ return smalltalk.withContext(function($ctx1) { 
_st(self)._should_return_("foo ^
 _st(self)._should_return_("foo ^ true ifTrue: [ false ifTrue: [ 1 ] ]",nil);
 _st(self)._should_return_("foo true ifTrue: [ false ifFalse: [ ^ 1 ] ]",(1));
 _st(self)._should_return_("foo true ifTrue: [ false ifTrue: [ ^ 1 ] ]",self["@receiver"]);
-return self}, self, "testNestedIfTrue", [], smalltalk.CodeGeneratorTest)},
+return self}, function($ctx1) {$ctx1.fill(self,"testNestedIfTrue", [], smalltalk.CodeGeneratorTest)})},
 args: [],
 source: "testNestedIfTrue\x0a\x09self should: 'foo ^ true ifTrue: [ false ifFalse: [ 1 ] ]' return: 1.\x0a\x09self should: 'foo ^ true ifTrue: [ false ifTrue: [ 1 ] ]' return: nil.\x0a\x0a\x09self should: 'foo true ifTrue: [ false ifFalse: [ ^ 1 ] ]' return: 1.\x0a\x09self should: 'foo true ifTrue: [ false ifTrue: [ ^ 1 ] ]' return: receiver.",
 messageSends: ["should:return:"],
@@ -469,7 +474,7 @@ return smalltalk.withContext(function($ctx1) { 
_st(self)._should_return_("foo [
 _st(self)._should_return_("foo [ ^ 1 + 1 ] value",(2));
 _st(self)._should_return_("foo | a b | a := 1. b := 2. [ ^ a + b ] value. self halt",(3));
 _st(self)._should_return_("foo [ :x | ^ x + x ] value: 4. ^ 2",(8));
-return self}, self, "testNonLocalReturn", [], smalltalk.CodeGeneratorTest)},
+return self}, function($ctx1) {$ctx1.fill(self,"testNonLocalReturn", [], smalltalk.CodeGeneratorTest)})},
 args: [],
 source: "testNonLocalReturn\x0a\x09self should: 'foo [ ^ 1 ] value' return: 1.\x0a\x09self should: 'foo [ ^ 1 + 1 ] value' return: 2.\x0a\x09self should: 'foo | a b | a := 1. b := 2. [ ^ a + b ] value. self halt' return: 3.\x0a\x09self should: 'foo [ :x | ^ x + x ] value: 4. ^ 2' return: 8",
 messageSends: ["should:return:"],
@@ -484,9 +489,9 @@ selector: "testSendReceiverAndArgumentsOrdered",
 category: 'tests',
 fn: function (){
 var self=this;
-smalltalk.send(self,"_should_return_",["foo\x0a  | x |\x0a  x := 1.\x0a  ^ Array with: x with: (true ifTrue: [ x := 2 ])\x0a",[(1), (2)]]);
-smalltalk.send(self,"_should_return_",["foo\x0a  | x |\x0a  x := Array.\x0a  ^ x with: x with: (true ifTrue: [ x := 2 ])\x0a",[(smalltalk.Array || Array),(2)]]);
-return self},
+return smalltalk.withContext(function($ctx1) { 
_st(self)._should_return_("foo\x0a  | x |\x0a  x := 1.\x0a  ^ Array with: x with: (true ifTrue: [ x := 2 ])\x0a",[(1), (2)]);
+_st(self)._should_return_("foo\x0a  | x |\x0a  x := Array.\x0a  ^ x with: x with: (true ifTrue: [ x := 2 ])\x0a",[(smalltalk.Array || Array),(2)]);
+return self}, function($ctx1) {$ctx1.fill(self,"testSendReceiverAndArgumentsOrdered", [], smalltalk.CodeGeneratorTest)})},
 args: [],
 source: "testSendReceiverAndArgumentsOrdered\x0a\x09self should: 'foo\x0a  | x |\x0a  x := 1.\x0a  ^ Array with: x with: (true ifTrue: [ x := 2 ])\x0a' return: #(1 2).\x0a\x0a\x09self should: 'foo\x0a  | x |\x0a  x := Array.\x0a  ^ x with: x with: (true ifTrue: [ x := 2 ])\x0a' return: {Array. 2}.\x0a",
 messageSends: ["should:return:"],
@@ -505,7 +510,7 @@ return smalltalk.withContext(function($ctx1) { 
_st(self)._should_return_("foo t
 _st(self)._should_return_("foo false ifFalse: [ ^ 2 ]",(2));
 _st(self)._should_return_("foo ^ true ifFalse: [ 1 ]",nil);
 _st(self)._should_return_("foo ^ false ifFalse: [ 2 ]",(2));
-return self}, self, "testifFalse", [], smalltalk.CodeGeneratorTest)},
+return self}, function($ctx1) {$ctx1.fill(self,"testifFalse", [], smalltalk.CodeGeneratorTest)})},
 args: [],
 source: "testifFalse\x0a\x09self should: 'foo true ifFalse: [ ^ 1 ]' return: receiver.\x0a\x09self should: 'foo false ifFalse: [ ^ 2 ]' return: 2.\x0a\x09\x0a\x09self should: 'foo ^ true ifFalse: [ 1 ]' return: nil.\x0a\x09self should: 'foo ^ false ifFalse: [ 2 ]' return: 2.",
 messageSends: ["should:return:"],
@@ -524,7 +529,7 @@ return smalltalk.withContext(function($ctx1) { 
_st(self)._should_return_("foo t
 _st(self)._should_return_("foo false ifFalse: [ ^ 2 ] ifTrue: [ ^1 ]",(2));
 _st(self)._should_return_("foo ^ true ifFalse: [ 1 ] ifTrue: [ 2 ]",(2));
 _st(self)._should_return_("foo ^ false ifFalse: [ 2 ] ifTrue: [ 1 ]",(2));
-return self}, self, "testifFalseIfTrue", [], smalltalk.CodeGeneratorTest)},
+return self}, function($ctx1) {$ctx1.fill(self,"testifFalseIfTrue", [], smalltalk.CodeGeneratorTest)})},
 args: [],
 source: "testifFalseIfTrue\x0a\x09self should: 'foo true ifFalse: [ ^ 1 ] ifTrue: [ ^ 2 ]' return: 2.\x0a\x09self should: 'foo false ifFalse: [ ^ 2 ] ifTrue: [ ^1 ]' return: 2.\x0a\x09\x0a\x09self should: 'foo ^ true ifFalse: [ 1 ] ifTrue: [ 2 ]' return: 2.\x0a\x09self should: 'foo ^ false ifFalse: [ 2 ] ifTrue: [ 1 ]' return: 2.",
 messageSends: ["should:return:"],
@@ -543,7 +548,7 @@ return smalltalk.withContext(function($ctx1) { 
_st(self)._should_return_("foo ^
 _st(self)._should_return_("foo ^ nil ifNil: [ 2 ]",(2));
 _st(self)._should_return_("foo 1 ifNil: [ ^ 2 ]",self["@receiver"]);
 _st(self)._should_return_("foo nil ifNil: [ ^ 2 ]",(2));
-return self}, self, "testifNil", [], smalltalk.CodeGeneratorTest)},
+return self}, function($ctx1) {$ctx1.fill(self,"testifNil", [], smalltalk.CodeGeneratorTest)})},
 args: [],
 source: "testifNil\x0a\x09self should: 'foo ^ 1 ifNil: [ 2 ]' return: 1.\x0a\x09self should: 'foo ^ nil ifNil: [ 2 ]' return: 2.\x0a\x0a\x09self should: 'foo 1 ifNil: [ ^ 2 ]' return: receiver.\x0a\x09self should: 'foo nil ifNil: [ ^ 2 ]' return: 2.",
 messageSends: ["should:return:"],
@@ -562,7 +567,7 @@ return smalltalk.withContext(function($ctx1) { 
_st(self)._should_return_("foo ^
 _st(self)._should_return_("foo ^ nil ifNil: [ 2 ] ifNotNil: [ 3 ]",(2));
 _st(self)._should_return_("foo 1 ifNil: [ ^ 2 ] ifNotNil: [ ^3 ]",(3));
 _st(self)._should_return_("foo nil ifNil: [ ^ 2 ] ifNotNil: [ ^3 ]",(2));
-return self}, self, "testifNilIfNotNil", [], smalltalk.CodeGeneratorTest)},
+return self}, function($ctx1) {$ctx1.fill(self,"testifNilIfNotNil", [], smalltalk.CodeGeneratorTest)})},
 args: [],
 source: "testifNilIfNotNil\x0a\x09self should: 'foo ^ 1 ifNil: [ 2 ] ifNotNil: [ 3 ]' return: 3.\x0a\x09self should: 'foo ^ nil ifNil: [ 2 ] ifNotNil: [ 3 ]' return: 2.\x0a\x0a\x09self should: 'foo 1 ifNil: [ ^ 2 ] ifNotNil: [ ^3 ]' return: 3.\x0a\x09self should: 'foo nil ifNil: [ ^ 2 ] ifNotNil: [ ^3 ]' return: 2.",
 messageSends: ["should:return:"],
@@ -581,7 +586,7 @@ return smalltalk.withContext(function($ctx1) { 
_st(self)._should_return_("foo ^
 _st(self)._should_return_("foo ^ nil ifNotNil: [ 2 ]",nil);
 _st(self)._should_return_("foo 1 ifNotNil: [ ^ 2 ]",(2));
 _st(self)._should_return_("foo nil ifNotNil: [ ^ 2 ]",self["@receiver"]);
-return self}, self, "testifNotNil", [], smalltalk.CodeGeneratorTest)},
+return self}, function($ctx1) {$ctx1.fill(self,"testifNotNil", [], smalltalk.CodeGeneratorTest)})},
 args: [],
 source: "testifNotNil\x0a\x09self should: 'foo ^ 1 ifNotNil: [ 2 ]' return: 2.\x0a\x09self should: 'foo ^ nil ifNotNil: [ 2 ]' return: nil.\x0a\x0a\x09self should: 'foo 1 ifNotNil: [ ^ 2 ]' return: 2.\x0a\x09self should: 'foo nil ifNotNil: [ ^ 2 ]' return: receiver.",
 messageSends: ["should:return:"],
@@ -600,7 +605,7 @@ return smalltalk.withContext(function($ctx1) { 
_st(self)._should_return_("foo f
 _st(self)._should_return_("foo true ifTrue: [ ^ 2 ]",(2));
 _st(self)._should_return_("foo ^ false ifTrue: [ 1 ]",nil);
 _st(self)._should_return_("foo ^ true ifTrue: [ 2 ]",(2));
-return self}, self, "testifTrue", [], smalltalk.CodeGeneratorTest)},
+return self}, function($ctx1) {$ctx1.fill(self,"testifTrue", [], smalltalk.CodeGeneratorTest)})},
 args: [],
 source: "testifTrue\x0a\x09self should: 'foo false ifTrue: [ ^ 1 ]' return: receiver.\x0a\x09self should: 'foo true ifTrue: [ ^ 2 ]' return: 2.\x0a\x09\x0a\x09self should: 'foo ^ false ifTrue: [ 1 ]' return: nil.\x0a\x09self should: 'foo ^ true ifTrue: [ 2 ]' return: 2.",
 messageSends: ["should:return:"],
@@ -619,7 +624,7 @@ return smalltalk.withContext(function($ctx1) { 
_st(self)._should_return_("foo f
 _st(self)._should_return_("foo true ifTrue: [ ^ 1 ] ifFalse: [ ^ 2 ]",(1));
 _st(self)._should_return_("foo ^ false ifTrue: [ 2 ] ifFalse: [ 1 ]",(1));
 _st(self)._should_return_("foo ^ true ifTrue: [ 2 ] ifFalse: [ 1 ]",(2));
-return self}, self, "testifTrueIfFalse", [], smalltalk.CodeGeneratorTest)},
+return self}, function($ctx1) {$ctx1.fill(self,"testifTrueIfFalse", [], smalltalk.CodeGeneratorTest)})},
 args: [],
 source: "testifTrueIfFalse\x0a\x09self should: 'foo false ifTrue: [ ^ 1 ] ifFalse: [ ^2 ]' return: 2.\x0a\x09self should: 'foo true ifTrue: [ ^ 1 ] ifFalse: [ ^ 2 ]' return: 1.\x0a\x09\x0a\x09self should: 'foo ^ false ifTrue: [ 2 ] ifFalse: [ 1 ]' return: 1.\x0a\x09self should: 'foo ^ true ifTrue: [ 2 ] ifFalse: [ 1 ]' return: 2.",
 messageSends: ["should:return:"],
@@ -637,8 +642,10 @@ selector: "codeGeneratorClass",
 category: 'accessing',
 fn: function (){
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
return (smalltalk.InliningCodeGenerator || InliningCodeGenerator);
-}, self, "codeGeneratorClass", [], smalltalk.InliningCodeGeneratorTest)},
+return smalltalk.withContext(function($ctx1) { 
var $1;
+$1=(smalltalk.InliningCodeGenerator || InliningCodeGenerator);
+return $1;
+}, function($ctx1) {$ctx1.fill(self,"codeGeneratorClass", [], smalltalk.InliningCodeGeneratorTest)})},
 args: [],
 source: "codeGeneratorClass\x0a\x09^ InliningCodeGenerator",
 messageSends: [],
@@ -656,15 +663,15 @@ selector: "testClassRefVar",
 category: 'tests',
 fn: function (){
 var self=this;
+var node;
 return smalltalk.withContext(function($ctx1) { 
var $1,$2;
-$ctx1.node=nil;
 $1=_st((smalltalk.ClassReferenceNode || ClassReferenceNode))._new();
 _st($1)._value_("Object");
 $2=_st($1)._yourself();
-$ctx1.locals.node=$2;
-_st(_st((smalltalk.SemanticAnalyzer || SemanticAnalyzer))._new())._visit_($ctx1.locals.node);
-_st(self)._assert_(_st(_st($ctx1.locals.node)._binding())._isClassRefVar());
-return self}, self, "testClassRefVar", [], smalltalk.ScopeVarTest)},
+node=$2;
+_st(_st((smalltalk.SemanticAnalyzer || SemanticAnalyzer))._new())._visit_(node);
+_st(self)._assert_(_st(_st(node)._binding())._isClassRefVar());
+return self}, function($ctx1) {$ctx1.fill(self,"testClassRefVar", [], smalltalk.ScopeVarTest)})},
 args: [],
 source: "testClassRefVar\x0a\x09| node |\x0a\x09node := ClassReferenceNode new\x0a\x09\x09value: 'Object';\x0a\x09\x09yourself.\x0a\x09SemanticAnalyzer new visit: node.\x0a\x09self assert: node binding isClassRefVar",
 messageSends: ["value:", "new", "yourself", "visit:", "assert:", "isClassRefVar", "binding"],
@@ -679,17 +686,16 @@ selector: "testInstanceVar",
 category: 'tests',
 fn: function (){
 var self=this;
+var node,scope;
 return smalltalk.withContext(function($ctx1) { 
var $1,$2;
-$ctx1.node=nil;
-$ctx1.scope=nil;
 $1=_st((smalltalk.VariableNode || VariableNode))._new();
 _st($1)._value_("bzzz");
 $2=_st($1)._yourself();
-$ctx1.locals.node=$2;
-$ctx1.locals.scope=_st((smalltalk.MethodLexicalScope || MethodLexicalScope))._new();
-_st($ctx1.locals.scope)._addIVar_("bzzz");
-_st(self)._assert_(_st(_st($ctx1.locals.scope)._bindingFor_($ctx1.locals.node))._isInstanceVar());
-return self}, self, "testInstanceVar", [], smalltalk.ScopeVarTest)},
+node=$2;
+scope=_st((smalltalk.MethodLexicalScope || MethodLexicalScope))._new();
+_st(scope)._addIVar_("bzzz");
+_st(self)._assert_(_st(_st(scope)._bindingFor_(node))._isInstanceVar());
+return self}, function($ctx1) {$ctx1.fill(self,"testInstanceVar", [], smalltalk.ScopeVarTest)})},
 args: [],
 source: "testInstanceVar\x0a\x09| node scope |\x0a\x09node := VariableNode new\x0a\x09\x09value: 'bzzz';\x0a\x09\x09yourself.\x0a\x09scope := MethodLexicalScope new.\x0a\x09scope addIVar: 'bzzz'.\x0a\x09self assert: (scope bindingFor: node) isInstanceVar",
 messageSends: ["value:", "new", "yourself", "addIVar:", "assert:", "isInstanceVar", "bindingFor:"],
@@ -704,19 +710,18 @@ selector: "testPseudoVar",
 category: 'tests',
 fn: function (){
 var self=this;
+var node,pseudoVars;
 return smalltalk.withContext(function($ctx1) { 
var $1,$2;
-$ctx1.node=nil;
-$ctx1.pseudoVars=nil;
-$ctx1.locals.pseudoVars=["self", "super", "true", "false", "nil"];
-_st($ctx1.locals.pseudoVars)._do_((function(each){
-return smalltalk.withContext(function($ctx2) { 
$1=_st((smalltalk.VariableNode || VariableNode))._new();
+pseudoVars=["self", "super", "true", "false", "nil"];
+_st(pseudoVars)._do_((function(each){
+return smalltalk.withContext(function($ctx2) {
$1=_st((smalltalk.VariableNode || VariableNode))._new();
 _st($1)._value_(each);
 $2=_st($1)._yourself();
-$ctx1.locals.node=$2;
-$ctx1.locals.node;
-return _st(self)._assert_(_st(_st(_st((smalltalk.MethodLexicalScope || MethodLexicalScope))._new())._bindingFor_($ctx1.locals.node))._isPseudoVar());
-})}));
-return self}, self, "testPseudoVar", [], smalltalk.ScopeVarTest)},
+node=$2;
+node;
+return _st(self)._assert_(_st(_st(_st((smalltalk.MethodLexicalScope || MethodLexicalScope))._new())._bindingFor_(node))._isPseudoVar());
+}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+return self}, function($ctx1) {$ctx1.fill(self,"testPseudoVar", [], smalltalk.ScopeVarTest)})},
 args: [],
 source: "testPseudoVar\x0a\x09| node pseudoVars |\x0a\x09pseudoVars := #('self' 'super' 'true' 'false' 'nil').\x0a\x09pseudoVars do: [:each |\x0a\x09\x09node := VariableNode new\x0a\x09\x09value: each;\x0a\x09\x09yourself.\x0a\x09\x09self assert: (MethodLexicalScope new bindingFor: node) isPseudoVar ]",
 messageSends: ["do:", "value:", "new", "yourself", "assert:", "isPseudoVar", "bindingFor:"],
@@ -731,17 +736,16 @@ selector: "testTempVar",
 category: 'tests',
 fn: function (){
 var self=this;
+var node,scope;
 return smalltalk.withContext(function($ctx1) { 
var $1,$2;
-$ctx1.node=nil;
-$ctx1.scope=nil;
 $1=_st((smalltalk.VariableNode || VariableNode))._new();
 _st($1)._value_("bzzz");
 $2=_st($1)._yourself();
-$ctx1.locals.node=$2;
-$ctx1.locals.scope=_st((smalltalk.MethodLexicalScope || MethodLexicalScope))._new();
-_st($ctx1.locals.scope)._addTemp_("bzzz");
-_st(self)._assert_(_st(_st($ctx1.locals.scope)._bindingFor_($ctx1.locals.node))._isTempVar());
-return self}, self, "testTempVar", [], smalltalk.ScopeVarTest)},
+node=$2;
+scope=_st((smalltalk.MethodLexicalScope || MethodLexicalScope))._new();
+_st(scope)._addTemp_("bzzz");
+_st(self)._assert_(_st(_st(scope)._bindingFor_(node))._isTempVar());
+return self}, function($ctx1) {$ctx1.fill(self,"testTempVar", [], smalltalk.ScopeVarTest)})},
 args: [],
 source: "testTempVar\x0a\x09| node scope |\x0a\x09node := VariableNode new\x0a\x09\x09value: 'bzzz';\x0a\x09\x09yourself.\x0a\x09scope := MethodLexicalScope new.\x0a\x09scope addTemp: 'bzzz'.\x0a\x09self assert: (scope bindingFor: node) isTempVar",
 messageSends: ["value:", "new", "yourself", "addTemp:", "assert:", "isTempVar", "bindingFor:"],
@@ -756,14 +760,14 @@ selector: "testUnknownVar",
 category: 'tests',
 fn: function (){
 var self=this;
+var node;
 return smalltalk.withContext(function($ctx1) { 
var $1,$2;
-$ctx1.node=nil;
 $1=_st((smalltalk.VariableNode || VariableNode))._new();
 _st($1)._value_("bzzz");
 $2=_st($1)._yourself();
-$ctx1.locals.node=$2;
-_st(self)._assert_(_st(_st(_st((smalltalk.MethodLexicalScope || MethodLexicalScope))._new())._bindingFor_($ctx1.locals.node))._isNil());
-return self}, self, "testUnknownVar", [], smalltalk.ScopeVarTest)},
+node=$2;
+_st(self)._assert_(_st(_st(_st((smalltalk.MethodLexicalScope || MethodLexicalScope))._new())._bindingFor_(node))._isNil());
+return self}, function($ctx1) {$ctx1.fill(self,"testUnknownVar", [], smalltalk.ScopeVarTest)})},
 args: [],
 source: "testUnknownVar\x0a\x09| node |\x0a\x09node := VariableNode new\x0a\x09\x09value: 'bzzz';\x0a\x09\x09yourself.\x0a\x09self assert: (MethodLexicalScope new bindingFor: node) isNil",
 messageSends: ["value:", "new", "yourself", "assert:", "isNil", "bindingFor:"],
@@ -782,7 +786,7 @@ category: 'running',
 fn: function (){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
self["@analyzer"]=_st((smalltalk.SemanticAnalyzer || SemanticAnalyzer))._on_((smalltalk.Object || Object));
-return self}, self, "setUp", [], smalltalk.SemanticAnalyzerTest)},
+return self}, function($ctx1) {$ctx1.fill(self,"setUp", [], smalltalk.SemanticAnalyzerTest)})},
 args: [],
 source: "setUp\x0a\x09analyzer := SemanticAnalyzer on: Object",
 messageSends: ["on:"],
@@ -797,14 +801,13 @@ selector: "testAssignment",
 category: 'tests',
 fn: function (){
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
$ctx1.src=nil;
-$ctx1.ast=nil;
-$ctx1.locals.src="foo self := 1";
-$ctx1.locals.ast=_st(smalltalk)._parse_($ctx1.locals.src);
+var src,ast;
+return smalltalk.withContext(function($ctx1) { 
src="foo self := 1";
+ast=_st(smalltalk)._parse_(src);
 _st(self)._should_raise_((function(){
-return smalltalk.withContext(function($ctx2) { 
return _st(self["@analyzer"])._visit_($ctx1.locals.ast);
-})}),(smalltalk.InvalidAssignmentError || InvalidAssignmentError));
-return self}, self, "testAssignment", [], smalltalk.SemanticAnalyzerTest)},
+return smalltalk.withContext(function($ctx2) {
return _st(self["@analyzer"])._visit_(ast);
+}, function($ctx2) {$ctx2.fill(null, null, {})})}),(smalltalk.InvalidAssignmentError || InvalidAssignmentError));
+return self}, function($ctx1) {$ctx1.fill(self,"testAssignment", [], smalltalk.SemanticAnalyzerTest)})},
 args: [],
 source: "testAssignment\x0a\x09| src ast |\x0a\x0a\x09src := 'foo self := 1'.\x0a\x09ast := smalltalk parse: src.\x0a\x09self should: [analyzer visit: ast] raise: InvalidAssignmentError",
 messageSends: ["parse:", "should:raise:", "visit:"],
@@ -819,13 +822,12 @@ selector: "testNonLocalReturn",
 category: 'tests',
 fn: function (){
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
$ctx1.src=nil;
-$ctx1.ast=nil;
-$ctx1.locals.src="foo | a | a + 1. ^ a";
-$ctx1.locals.ast=_st(smalltalk)._parse_($ctx1.locals.src);
-_st(self["@analyzer"])._visit_($ctx1.locals.ast);
-_st(self)._deny_(_st(_st($ctx1.locals.ast)._scope())._hasNonLocalReturn());
-return self}, self, "testNonLocalReturn", [], smalltalk.SemanticAnalyzerTest)},
+var src,ast;
+return smalltalk.withContext(function($ctx1) { 
src="foo | a | a + 1. ^ a";
+ast=_st(smalltalk)._parse_(src);
+_st(self["@analyzer"])._visit_(ast);
+_st(self)._deny_(_st(_st(ast)._scope())._hasNonLocalReturn());
+return self}, function($ctx1) {$ctx1.fill(self,"testNonLocalReturn", [], smalltalk.SemanticAnalyzerTest)})},
 args: [],
 source: "testNonLocalReturn\x0a\x09| src ast |\x0a\x0a\x09src := 'foo | a | a + 1. ^ a'.\x0a\x09ast := smalltalk parse: src.\x0a\x09analyzer visit: ast.\x0a\x0a\x09self deny: ast scope hasNonLocalReturn",
 messageSends: ["parse:", "visit:", "deny:", "hasNonLocalReturn", "scope"],
@@ -840,13 +842,12 @@ selector: "testNonLocalReturn2",
 category: 'tests',
 fn: function (){
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
$ctx1.src=nil;
-$ctx1.ast=nil;
-$ctx1.locals.src="foo | a | a + 1. [ [ ^ a] ]";
-$ctx1.locals.ast=_st(smalltalk)._parse_($ctx1.locals.src);
-_st(self["@analyzer"])._visit_($ctx1.locals.ast);
-_st(self)._assert_(_st(_st($ctx1.locals.ast)._scope())._hasNonLocalReturn());
-return self}, self, "testNonLocalReturn2", [], smalltalk.SemanticAnalyzerTest)},
+var src,ast;
+return smalltalk.withContext(function($ctx1) { 
src="foo | a | a + 1. [ [ ^ a] ]";
+ast=_st(smalltalk)._parse_(src);
+_st(self["@analyzer"])._visit_(ast);
+_st(self)._assert_(_st(_st(ast)._scope())._hasNonLocalReturn());
+return self}, function($ctx1) {$ctx1.fill(self,"testNonLocalReturn2", [], smalltalk.SemanticAnalyzerTest)})},
 args: [],
 source: "testNonLocalReturn2\x0a\x09| src ast |\x0a\x0a\x09src := 'foo | a | a + 1. [ [ ^ a] ]'.\x0a\x09ast := smalltalk parse: src.\x0a\x09analyzer visit: ast.\x0a\x0a\x09self assert: ast scope hasNonLocalReturn",
 messageSends: ["parse:", "visit:", "assert:", "hasNonLocalReturn", "scope"],
@@ -861,13 +862,12 @@ selector: "testScope",
 category: 'tests',
 fn: function (){
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
$ctx1.src=nil;
-$ctx1.ast=nil;
-$ctx1.locals.src="foo | a | a + 1. [ | b | b := a ]";
-$ctx1.locals.ast=_st(smalltalk)._parse_($ctx1.locals.src);
-_st(self["@analyzer"])._visit_($ctx1.locals.ast);
-_st(self)._deny_(_st(_st(_st(_st(_st(_st($ctx1.locals.ast)._nodes())._first())._nodes())._last())._scope()).__eq_eq(_st($ctx1.locals.ast)._scope()));
-return self}, self, "testScope", [], smalltalk.SemanticAnalyzerTest)},
+var src,ast;
+return smalltalk.withContext(function($ctx1) { 
src="foo | a | a + 1. [ | b | b := a ]";
+ast=_st(smalltalk)._parse_(src);
+_st(self["@analyzer"])._visit_(ast);
+_st(self)._deny_(_st(_st(_st(_st(_st(_st(ast)._nodes())._first())._nodes())._last())._scope()).__eq_eq(_st(ast)._scope()));
+return self}, function($ctx1) {$ctx1.fill(self,"testScope", [], smalltalk.SemanticAnalyzerTest)})},
 args: [],
 source: "testScope\x0a\x09| src ast |\x0a\x0a\x09src := 'foo | a | a + 1. [ | b | b := a ]'.\x0a\x09ast := smalltalk parse: src.\x0a\x09analyzer visit: ast.\x0a\x0a\x09self deny: ast nodes first nodes last scope == ast scope.",
 messageSends: ["parse:", "visit:", "deny:", "==", "scope", "last", "nodes", "first"],
@@ -882,13 +882,12 @@ selector: "testScope2",
 category: 'tests',
 fn: function (){
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
$ctx1.src=nil;
-$ctx1.ast=nil;
-$ctx1.locals.src="foo | a | a + 1. [ [ | b | b := a ] ]";
-$ctx1.locals.ast=_st(smalltalk)._parse_($ctx1.locals.src);
-_st(self["@analyzer"])._visit_($ctx1.locals.ast);
-_st(self)._deny_(_st(_st(_st(_st(_st(_st(_st(_st(_st(_st($ctx1.locals.ast)._nodes())._first())._nodes())._last())._nodes())._first())._nodes())._first())._scope()).__eq_eq(_st($ctx1.locals.ast)._scope()));
-return self}, self, "testScope2", [], smalltalk.SemanticAnalyzerTest)},
+var src,ast;
+return smalltalk.withContext(function($ctx1) { 
src="foo | a | a + 1. [ [ | b | b := a ] ]";
+ast=_st(smalltalk)._parse_(src);
+_st(self["@analyzer"])._visit_(ast);
+_st(self)._deny_(_st(_st(_st(_st(_st(_st(_st(_st(_st(_st(ast)._nodes())._first())._nodes())._last())._nodes())._first())._nodes())._first())._scope()).__eq_eq(_st(ast)._scope()));
+return self}, function($ctx1) {$ctx1.fill(self,"testScope2", [], smalltalk.SemanticAnalyzerTest)})},
 args: [],
 source: "testScope2\x0a\x09| src ast |\x0a\x0a\x09src := 'foo | a | a + 1. [ [ | b | b := a ] ]'.\x0a\x09ast := smalltalk parse: src.\x0a\x09analyzer visit: ast.\x0a\x0a\x09self deny: ast nodes first nodes last nodes first nodes first scope == ast scope.",
 messageSends: ["parse:", "visit:", "deny:", "==", "scope", "first", "nodes", "last"],
@@ -903,14 +902,13 @@ selector: "testScopeLevel",
 category: 'tests',
 fn: function (){
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
$ctx1.src=nil;
-$ctx1.ast=nil;
-$ctx1.locals.src="foo | a | a + 1. [ [ | b | b := a ] ]";
-$ctx1.locals.ast=_st(smalltalk)._parse_($ctx1.locals.src);
-_st(self["@analyzer"])._visit_($ctx1.locals.ast);
-_st(self)._assert_(_st(_st(_st($ctx1.locals.ast)._scope())._scopeLevel()).__eq((1)));
-_st(self)._assert_(_st(_st(_st(_st(_st(_st(_st(_st(_st(_st(_st($ctx1.locals.ast)._nodes())._first())._nodes())._last())._nodes())._first())._nodes())._first())._scope())._scopeLevel()).__eq((3)));
-return self}, self, "testScopeLevel", [], smalltalk.SemanticAnalyzerTest)},
+var src,ast;
+return smalltalk.withContext(function($ctx1) { 
src="foo | a | a + 1. [ [ | b | b := a ] ]";
+ast=_st(smalltalk)._parse_(src);
+_st(self["@analyzer"])._visit_(ast);
+_st(self)._assert_(_st(_st(_st(ast)._scope())._scopeLevel()).__eq((1)));
+_st(self)._assert_(_st(_st(_st(_st(_st(_st(_st(_st(_st(_st(_st(ast)._nodes())._first())._nodes())._last())._nodes())._first())._nodes())._first())._scope())._scopeLevel()).__eq((3)));
+return self}, function($ctx1) {$ctx1.fill(self,"testScopeLevel", [], smalltalk.SemanticAnalyzerTest)})},
 args: [],
 source: "testScopeLevel\x0a\x09| src ast |\x0a\x0a\x09src := 'foo | a | a + 1. [ [ | b | b := a ] ]'.\x0a\x09ast := smalltalk parse: src.\x0a\x09analyzer visit: ast.\x0a\x0a\x09self assert: ast scope scopeLevel = 1.\x0a\x09self assert: ast nodes first nodes last nodes first nodes first scope scopeLevel = 3",
 messageSends: ["parse:", "visit:", "assert:", "=", "scopeLevel", "scope", "first", "nodes", "last"],
@@ -925,14 +923,13 @@ selector: "testUnknownVariables",
 category: 'tests',
 fn: function (){
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
$ctx1.src=nil;
-$ctx1.ast=nil;
-$ctx1.locals.src="foo | a | b + a";
-$ctx1.locals.ast=_st(smalltalk)._parse_($ctx1.locals.src);
+var src,ast;
+return smalltalk.withContext(function($ctx1) { 
src="foo | a | b + a";
+ast=_st(smalltalk)._parse_(src);
 _st(self)._should_raise_((function(){
-return smalltalk.withContext(function($ctx2) { 
return _st(self["@analyzer"])._visit_($ctx1.locals.ast);
-})}),(smalltalk.UnknownVariableError || UnknownVariableError));
-return self}, self, "testUnknownVariables", [], smalltalk.SemanticAnalyzerTest)},
+return smalltalk.withContext(function($ctx2) {
return _st(self["@analyzer"])._visit_(ast);
+}, function($ctx2) {$ctx2.fill(null, null, {})})}),(smalltalk.UnknownVariableError || UnknownVariableError));
+return self}, function($ctx1) {$ctx1.fill(self,"testUnknownVariables", [], smalltalk.SemanticAnalyzerTest)})},
 args: [],
 source: "testUnknownVariables\x0a\x09| src ast |\x0a\x0a\x09src := 'foo | a | b + a'.\x0a\x09ast := smalltalk parse: src.\x0a\x0a\x09self should: [ analyzer visit: ast ] raise: UnknownVariableError",
 messageSends: ["parse:", "should:raise:", "visit:"],
@@ -947,14 +944,13 @@ selector: "testUnknownVariablesWithScope",
 category: 'tests',
 fn: function (){
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
$ctx1.src=nil;
-$ctx1.ast=nil;
-$ctx1.locals.src="foo | a b | [ c + 1. [ a + 1. d + 1 ]]";
-$ctx1.locals.ast=_st(smalltalk)._parse_($ctx1.locals.src);
+var src,ast;
+return smalltalk.withContext(function($ctx1) { 
src="foo | a b | [ c + 1. [ a + 1. d + 1 ]]";
+ast=_st(smalltalk)._parse_(src);
 _st(self)._should_raise_((function(){
-return smalltalk.withContext(function($ctx2) { 
return _st(self["@analyzer"])._visit_($ctx1.locals.ast);
-})}),(smalltalk.UnknownVariableError || UnknownVariableError));
-return self}, self, "testUnknownVariablesWithScope", [], smalltalk.SemanticAnalyzerTest)},
+return smalltalk.withContext(function($ctx2) {
return _st(self["@analyzer"])._visit_(ast);
+}, function($ctx2) {$ctx2.fill(null, null, {})})}),(smalltalk.UnknownVariableError || UnknownVariableError));
+return self}, function($ctx1) {$ctx1.fill(self,"testUnknownVariablesWithScope", [], smalltalk.SemanticAnalyzerTest)})},
 args: [],
 source: "testUnknownVariablesWithScope\x0a\x09| src ast |\x0a\x0a\x09src := 'foo | a b | [ c + 1. [ a + 1. d + 1 ]]'.\x0a\x09ast := smalltalk parse: src.\x0a\x09\x0a\x09self should: [ analyzer visit: ast ] raise: UnknownVariableError",
 messageSends: ["parse:", "should:raise:", "visit:"],
@@ -969,12 +965,11 @@ selector: "testVariableShadowing",
 category: 'tests',
 fn: function (){
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
$ctx1.src=nil;
-$ctx1.ast=nil;
-$ctx1.locals.src="foo | a | a + 1";
-$ctx1.locals.ast=_st(smalltalk)._parse_($ctx1.locals.src);
-_st(self["@analyzer"])._visit_($ctx1.locals.ast);
-return self}, self, "testVariableShadowing", [], smalltalk.SemanticAnalyzerTest)},
+var src,ast;
+return smalltalk.withContext(function($ctx1) { 
src="foo | a | a + 1";
+ast=_st(smalltalk)._parse_(src);
+_st(self["@analyzer"])._visit_(ast);
+return self}, function($ctx1) {$ctx1.fill(self,"testVariableShadowing", [], smalltalk.SemanticAnalyzerTest)})},
 args: [],
 source: "testVariableShadowing\x0a\x09| src ast |\x0a\x09src := 'foo | a | a + 1'.\x0a\x09ast := smalltalk parse: src.\x0a\x09analyzer visit: ast",
 messageSends: ["parse:", "visit:"],
@@ -989,14 +984,13 @@ selector: "testVariableShadowing2",
 category: 'tests',
 fn: function (){
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
$ctx1.src=nil;
-$ctx1.ast=nil;
-$ctx1.locals.src="foo | a | a + 1. [ | a | a := 2 ]";
-$ctx1.locals.ast=_st(smalltalk)._parse_($ctx1.locals.src);
+var src,ast;
+return smalltalk.withContext(function($ctx1) { 
src="foo | a | a + 1. [ | a | a := 2 ]";
+ast=_st(smalltalk)._parse_(src);
 _st(self)._should_raise_((function(){
-return smalltalk.withContext(function($ctx2) { 
return _st(self["@analyzer"])._visit_($ctx1.locals.ast);
-})}),(smalltalk.ShadowingVariableError || ShadowingVariableError));
-return self}, self, "testVariableShadowing2", [], smalltalk.SemanticAnalyzerTest)},
+return smalltalk.withContext(function($ctx2) {
return _st(self["@analyzer"])._visit_(ast);
+}, function($ctx2) {$ctx2.fill(null, null, {})})}),(smalltalk.ShadowingVariableError || ShadowingVariableError));
+return self}, function($ctx1) {$ctx1.fill(self,"testVariableShadowing2", [], smalltalk.SemanticAnalyzerTest)})},
 args: [],
 source: "testVariableShadowing2\x0a\x09| src ast |\x0a\x09src := 'foo | a | a + 1. [ | a | a := 2 ]'.\x0a\x09ast := smalltalk parse: src.\x0a\x09self should: [analyzer visit: ast] raise: ShadowingVariableError",
 messageSends: ["parse:", "should:raise:", "visit:"],
@@ -1011,12 +1005,11 @@ selector: "testVariableShadowing3",
 category: 'tests',
 fn: function (){
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
$ctx1.src=nil;
-$ctx1.ast=nil;
-$ctx1.locals.src="foo | a | a + 1. [ | b | b := 2 ]";
-$ctx1.locals.ast=_st(smalltalk)._parse_($ctx1.locals.src);
-_st(self["@analyzer"])._visit_($ctx1.locals.ast);
-return self}, self, "testVariableShadowing3", [], smalltalk.SemanticAnalyzerTest)},
+var src,ast;
+return smalltalk.withContext(function($ctx1) { 
src="foo | a | a + 1. [ | b | b := 2 ]";
+ast=_st(smalltalk)._parse_(src);
+_st(self["@analyzer"])._visit_(ast);
+return self}, function($ctx1) {$ctx1.fill(self,"testVariableShadowing3", [], smalltalk.SemanticAnalyzerTest)})},
 args: [],
 source: "testVariableShadowing3\x0a\x09| src ast |\x0a\x09src := 'foo | a | a + 1. [ | b | b := 2 ]'.\x0a\x09ast := smalltalk parse: src.\x0a\x09analyzer visit: ast",
 messageSends: ["parse:", "visit:"],
@@ -1031,12 +1024,11 @@ selector: "testVariableShadowing4",
 category: 'tests',
 fn: function (){
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
$ctx1.src=nil;
-$ctx1.ast=nil;
-$ctx1.locals.src="foo | a | a + 1. [ [ [ | b | b := 2 ] ] ]";
-$ctx1.locals.ast=_st(smalltalk)._parse_($ctx1.locals.src);
-_st(self["@analyzer"])._visit_($ctx1.locals.ast);
-return self}, self, "testVariableShadowing4", [], smalltalk.SemanticAnalyzerTest)},
+var src,ast;
+return smalltalk.withContext(function($ctx1) { 
src="foo | a | a + 1. [ [ [ | b | b := 2 ] ] ]";
+ast=_st(smalltalk)._parse_(src);
+_st(self["@analyzer"])._visit_(ast);
+return self}, function($ctx1) {$ctx1.fill(self,"testVariableShadowing4", [], smalltalk.SemanticAnalyzerTest)})},
 args: [],
 source: "testVariableShadowing4\x0a\x09| src ast |\x0a\x09src := 'foo | a | a + 1. [ [ [ | b | b := 2 ] ] ]'.\x0a\x09ast := smalltalk parse: src.\x0a\x09analyzer visit: ast",
 messageSends: ["parse:", "visit:"],
@@ -1051,14 +1043,13 @@ selector: "testVariableShadowing5",
 category: 'tests',
 fn: function (){
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
$ctx1.src=nil;
-$ctx1.ast=nil;
-$ctx1.locals.src="foo | a | a + 1. [ [ [ | a | a := 2 ] ] ]";
-$ctx1.locals.ast=_st(smalltalk)._parse_($ctx1.locals.src);
+var src,ast;
+return smalltalk.withContext(function($ctx1) { 
src="foo | a | a + 1. [ [ [ | a | a := 2 ] ] ]";
+ast=_st(smalltalk)._parse_(src);
 _st(self)._should_raise_((function(){
-return smalltalk.withContext(function($ctx2) { 
return _st(self["@analyzer"])._visit_($ctx1.locals.ast);
-})}),(smalltalk.ShadowingVariableError || ShadowingVariableError));
-return self}, self, "testVariableShadowing5", [], smalltalk.SemanticAnalyzerTest)},
+return smalltalk.withContext(function($ctx2) {
return _st(self["@analyzer"])._visit_(ast);
+}, function($ctx2) {$ctx2.fill(null, null, {})})}),(smalltalk.ShadowingVariableError || ShadowingVariableError));
+return self}, function($ctx1) {$ctx1.fill(self,"testVariableShadowing5", [], smalltalk.SemanticAnalyzerTest)})},
 args: [],
 source: "testVariableShadowing5\x0a\x09| src ast |\x0a\x09src := 'foo | a | a + 1. [ [ [ | a | a := 2 ] ] ]'.\x0a\x09ast := smalltalk parse: src.\x0a\x09self should: [analyzer visit: ast] raise: ShadowingVariableError",
 messageSends: ["parse:", "should:raise:", "visit:"],
@@ -1073,16 +1064,15 @@ selector: "testVariablesLookup",
 category: 'tests',
 fn: function (){
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
$ctx1.src=nil;
-$ctx1.ast=nil;
-$ctx1.locals.src="foo | a | a + 1. [ | b | b := a ]";
-$ctx1.locals.ast=_st(smalltalk)._parse_($ctx1.locals.src);
-_st(self["@analyzer"])._visit_($ctx1.locals.ast);
-_st(self)._assert_(_st(_st(_st(_st(_st(_st(_st($ctx1.locals.ast)._nodes())._first())._nodes())._first())._receiver())._binding())._isTempVar());
-_st(self)._assert_(_st(_st(_st(_st(_st(_st(_st(_st($ctx1.locals.ast)._nodes())._first())._nodes())._first())._receiver())._binding())._scope()).__eq_eq(_st($ctx1.locals.ast)._scope()));
-_st(self)._assert_(_st(_st(_st(_st(_st(_st(_st(_st(_st(_st(_st($ctx1.locals.ast)._nodes())._first())._nodes())._last())._nodes())._first())._nodes())._first())._left())._binding())._isTempVar());
-_st(self)._assert_(_st(_st(_st(_st(_st(_st(_st(_st(_st(_st(_st(_st($ctx1.locals.ast)._nodes())._first())._nodes())._last())._nodes())._first())._nodes())._first())._left())._binding())._scope()).__eq_eq(_st(_st(_st(_st(_st($ctx1.locals.ast)._nodes())._first())._nodes())._last())._scope()));
-return self}, self, "testVariablesLookup", [], smalltalk.SemanticAnalyzerTest)},
+var src,ast;
+return smalltalk.withContext(function($ctx1) { 
src="foo | a | a + 1. [ | b | b := a ]";
+ast=_st(smalltalk)._parse_(src);
+_st(self["@analyzer"])._visit_(ast);
+_st(self)._assert_(_st(_st(_st(_st(_st(_st(_st(ast)._nodes())._first())._nodes())._first())._receiver())._binding())._isTempVar());
+_st(self)._assert_(_st(_st(_st(_st(_st(_st(_st(_st(ast)._nodes())._first())._nodes())._first())._receiver())._binding())._scope()).__eq_eq(_st(ast)._scope()));
+_st(self)._assert_(_st(_st(_st(_st(_st(_st(_st(_st(_st(_st(_st(ast)._nodes())._first())._nodes())._last())._nodes())._first())._nodes())._first())._left())._binding())._isTempVar());
+_st(self)._assert_(_st(_st(_st(_st(_st(_st(_st(_st(_st(_st(_st(_st(ast)._nodes())._first())._nodes())._last())._nodes())._first())._nodes())._first())._left())._binding())._scope()).__eq_eq(_st(_st(_st(_st(_st(ast)._nodes())._first())._nodes())._last())._scope()));
+return self}, function($ctx1) {$ctx1.fill(self,"testVariablesLookup", [], smalltalk.SemanticAnalyzerTest)})},
 args: [],
 source: "testVariablesLookup\x0a\x09| src ast |\x0a\x0a\x09src := 'foo | a | a + 1. [ | b | b := a ]'.\x0a\x09ast := smalltalk parse: src.\x0a\x09analyzer visit: ast.\x0a\x0a\x09\x22Binding for `a` in the message send\x22\x0a\x09self assert: ast nodes first nodes first receiver binding isTempVar.\x0a\x09self assert: ast nodes first nodes first receiver binding scope == ast scope.\x0a\x0a\x09\x22Binding for `b`\x22\x0a\x09self assert: ast nodes first nodes last nodes first nodes first left binding isTempVar.\x0a\x09self assert: ast nodes first nodes last nodes first nodes first left binding scope == ast nodes first nodes last scope.",
 messageSends: ["parse:", "visit:", "assert:", "isTempVar", "binding", "receiver", "first", "nodes", "==", "scope", "left", "last"],

+ 13 - 13
js/Examples.deploy.js

@@ -8,9 +8,9 @@ fn: function (){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
self["@count"]=_st(self["@count"]).__minus((1));
 _st(self["@header"])._contents_((function(html){
-return smalltalk.withContext(function($ctx2) { 
return _st(html)._with_(_st(self["@count"])._asString());
-})}));
-return self}, self, "decrease", [], smalltalk.Counter)}
+return smalltalk.withContext(function($ctx2) {
return _st(html)._with_(_st(self["@count"])._asString());
+}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+return self}, function($ctx1) {$ctx1.fill(self,"decrease", [], smalltalk.Counter)})}
 }),
 smalltalk.Counter);
 
@@ -22,9 +22,9 @@ fn: function (){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
self["@count"]=_st(self["@count"]).__plus((1));
 _st(self["@header"])._contents_((function(html){
-return smalltalk.withContext(function($ctx2) { 
return _st(html)._with_(_st(self["@count"])._asString());
-})}));
-return self}, self, "increase", [], smalltalk.Counter)}
+return smalltalk.withContext(function($ctx2) {
return _st(html)._with_(_st(self["@count"])._asString());
+}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+return self}, function($ctx1) {$ctx1.fill(self,"increase", [], smalltalk.Counter)})}
 }),
 smalltalk.Counter);
 
@@ -36,7 +36,7 @@ fn: function (){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
smalltalk.Widget.fn.prototype._initialize.apply(_st(self), []);
 self["@count"]=(0);
-return self}, self, "initialize", [], smalltalk.Counter)}
+return self}, function($ctx1) {$ctx1.fill(self,"initialize", [], smalltalk.Counter)})}
 }),
 smalltalk.Counter);
 
@@ -54,14 +54,14 @@ self["@header"]=$2;
 $3=_st(html)._button();
 _st($3)._with_("++");
 $4=_st($3)._onClick_((function(){
-return smalltalk.withContext(function($ctx2) { 
return _st(self)._increase();
-})}));
+return smalltalk.withContext(function($ctx2) {
return _st(self)._increase();
+}, function($ctx2) {$ctx2.fill(null, null, {})})}));
 $5=_st(html)._button();
 _st($5)._with_("--");
 $6=_st($5)._onClick_((function(){
-return smalltalk.withContext(function($ctx2) { 
return _st(self)._decrease();
-})}));
-return self}, self, "renderOn:", [html], smalltalk.Counter)}
+return smalltalk.withContext(function($ctx2) {
return _st(self)._decrease();
+}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+return self}, function($ctx1) {$ctx1.fill(self,"renderOn:", [html], smalltalk.Counter)})}
 }),
 smalltalk.Counter);
 
@@ -73,7 +73,7 @@ selector: "tryExample",
 fn: function (){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
_st(_st(self)._new())._appendToJQuery_(_st("body")._asJQuery());
-return self}, self, "tryExample", [], smalltalk.Counter.klass)}
+return self}, function($ctx1) {$ctx1.fill(self,"tryExample", [], smalltalk.Counter.klass)})}
 }),
 smalltalk.Counter.klass);
 

+ 13 - 13
js/Examples.js

@@ -10,9 +10,9 @@ fn: function (){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
self["@count"]=_st(self["@count"]).__minus((1));
 _st(self["@header"])._contents_((function(html){
-return smalltalk.withContext(function($ctx2) { 
return _st(html)._with_(_st(self["@count"])._asString());
-})}));
-return self}, self, "decrease", [], smalltalk.Counter)},
+return smalltalk.withContext(function($ctx2) {
return _st(html)._with_(_st(self["@count"])._asString());
+}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+return self}, function($ctx1) {$ctx1.fill(self,"decrease", [], smalltalk.Counter)})},
 args: [],
 source: "decrease\x0a    count := count - 1.\x0a    header contents: [:html | html with: count asString]",
 messageSends: ["-", "contents:", "with:", "asString"],
@@ -29,9 +29,9 @@ fn: function (){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
self["@count"]=_st(self["@count"]).__plus((1));
 _st(self["@header"])._contents_((function(html){
-return smalltalk.withContext(function($ctx2) { 
return _st(html)._with_(_st(self["@count"])._asString());
-})}));
-return self}, self, "increase", [], smalltalk.Counter)},
+return smalltalk.withContext(function($ctx2) {
return _st(html)._with_(_st(self["@count"])._asString());
+}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+return self}, function($ctx1) {$ctx1.fill(self,"increase", [], smalltalk.Counter)})},
 args: [],
 source: "increase\x0a    count := count + 1.\x0a    header contents: [:html | html with: count asString]",
 messageSends: ["+", "contents:", "with:", "asString"],
@@ -48,7 +48,7 @@ fn: function (){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
smalltalk.Widget.fn.prototype._initialize.apply(_st(self), []);
 self["@count"]=(0);
-return self}, self, "initialize", [], smalltalk.Counter)},
+return self}, function($ctx1) {$ctx1.fill(self,"initialize", [], smalltalk.Counter)})},
 args: [],
 source: "initialize\x0a    super initialize.\x0a    count := 0",
 messageSends: ["initialize"],
@@ -71,14 +71,14 @@ self["@header"]=$2;
 $3=_st(html)._button();
 _st($3)._with_("++");
 $4=_st($3)._onClick_((function(){
-return smalltalk.withContext(function($ctx2) { 
return _st(self)._increase();
-})}));
+return smalltalk.withContext(function($ctx2) {
return _st(self)._increase();
+}, function($ctx2) {$ctx2.fill(null, null, {})})}));
 $5=_st(html)._button();
 _st($5)._with_("--");
 $6=_st($5)._onClick_((function(){
-return smalltalk.withContext(function($ctx2) { 
return _st(self)._decrease();
-})}));
-return self}, self, "renderOn:", [html], smalltalk.Counter)},
+return smalltalk.withContext(function($ctx2) {
return _st(self)._decrease();
+}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+return self}, function($ctx1) {$ctx1.fill(self,"renderOn:", [html], smalltalk.Counter)})},
 args: ["html"],
 source: "renderOn: html\x0a    header := html h1 \x0a\x09with: count asString;\x0a\x09yourself.\x0a    html button\x0a\x09with: '++';\x0a\x09onClick: [self increase].\x0a    html button\x0a\x09with: '--';\x0a\x09onClick: [self decrease]",
 messageSends: ["with:", "asString", "h1", "yourself", "button", "onClick:", "increase", "decrease"],
@@ -95,7 +95,7 @@ category: 'example',
 fn: function (){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
_st(_st(self)._new())._appendToJQuery_(_st("body")._asJQuery());
-return self}, self, "tryExample", [], smalltalk.Counter.klass)},
+return self}, function($ctx1) {$ctx1.fill(self,"tryExample", [], smalltalk.Counter.klass)})},
 args: [],
 source: "tryExample\x0a\x09\x22In order to play with the Counter, just select the\x0a\x09doit below and press the Do it button. Then take a\x0a\x09look in the HTML document above the IDE.\x22\x0a\x0a\x09\x22Counter tryExample\x22\x0a        self new appendToJQuery: 'body' asJQuery",
 messageSends: ["appendToJQuery:", "asJQuery", "new"],

Filskillnaden har hållts tillbaka eftersom den är för stor
+ 273 - 243
js/IDE.deploy.js


Filskillnaden har hållts tillbaka eftersom den är för stor
+ 273 - 243
js/IDE.js


+ 362 - 316
js/Importer-Exporter.deploy.js

@@ -6,34 +6,35 @@ smalltalk.method({
 selector: "nextChunk",
 fn: function (){
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $1,$2,$3;
+var char,result,chunk;
+return smalltalk.withContext(function($ctx1) { 
var $1,$3,$5,$6,$4,$2;
 var $early={};
 try {
-$ctx1.char=nil;
-$ctx1.result=nil;
-$ctx1.chunk=nil;
-$ctx1.locals.result=_st("")._writeStream();
-_st((function(){
-return smalltalk.withContext(function($ctx2) { 
$ctx1.locals.char=_st(self["@stream"])._next();
-$ctx1.locals.char;
-return _st($ctx1.locals.char)._notNil();
-})}))._whileTrue_((function(){
-return smalltalk.withContext(function($ctx2) { 
$1=_st($ctx1.locals.char).__eq("!");
-if(smalltalk.assert($1)){
-$2=_st(_st(self["@stream"])._peek()).__eq("!");
-if(smalltalk.assert($2)){
-_st(self["@stream"])._next();
+result=_st("")._writeStream();
+$1=(function(){
+return smalltalk.withContext(function($ctx2) {
char=_st(self["@stream"])._next();
+char;
+return _st(char)._notNil();
+}, function($ctx2) {$ctx2.fill(null, null, {})})});
+$2=(function(){
+return smalltalk.withContext(function($ctx2) {
$3=_st(char).__eq("!");
+$4=(function(){
+return smalltalk.withContext(function($ctx3) {
$5=_st(_st(self["@stream"])._peek()).__eq("!");
+if(smalltalk.assert($5)){
+return _st(self["@stream"])._next();
 } else {
-$3=_st(_st($ctx1.locals.result)._contents())._trimBoth();
-throw $early=[$3];
-};
+$6=_st(_st(result)._contents())._trimBoth();
+throw $early=[$6];
 };
-return _st($ctx1.locals.result)._nextPut_($ctx1.locals.char);
-})}));
+}, function($ctx3) {$ctx3.fill(null, null, {})})});
+_st($3)._ifTrue_($4);
+return _st(result)._nextPut_(char);
+}, function($ctx2) {$ctx2.fill(null, null, {})})});
+_st($1)._whileTrue_($2);
 return nil;
 }
 catch(e) {if(e===$early)return e[0]; throw e}
-}, self, "nextChunk", [], smalltalk.ChunkParser)}
+}, function($ctx1) {$ctx1.fill(self,"nextChunk", [], smalltalk.ChunkParser)})}
 }),
 smalltalk.ChunkParser);
 
@@ -44,7 +45,7 @@ selector: "stream:",
 fn: function (aStream){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
self["@stream"]=aStream;
-return self}, self, "stream:", [aStream], smalltalk.ChunkParser)}
+return self}, function($ctx1) {$ctx1.fill(self,"stream:", [aStream], smalltalk.ChunkParser)})}
 }),
 smalltalk.ChunkParser);
 
@@ -58,7 +59,7 @@ var self=this;
 return smalltalk.withContext(function($ctx1) { 
var $1;
 $1=_st(_st(self)._new())._stream_(aStream);
 return $1;
-}, self, "on:", [aStream], smalltalk.ChunkParser.klass)}
+}, function($ctx1) {$ctx1.fill(self,"on:", [aStream], smalltalk.ChunkParser.klass)})}
 }),
 smalltalk.ChunkParser.klass);
 
@@ -70,20 +71,22 @@ smalltalk.method({
 selector: "classNameFor:",
 fn: function (aClass){
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $2,$3,$1;
+return smalltalk.withContext(function($ctx1) { 
var $2,$3,$5,$4,$1;
 $2=_st(aClass)._isMetaclass();
-if(smalltalk.assert($2)){
-$1=_st(_st(_st(aClass)._instanceClass())._name()).__comma(".klass");
-} else {
-$3=_st(aClass)._isNil();
-if(smalltalk.assert($3)){
-$1="nil";
+$3=(function(){
+return smalltalk.withContext(function($ctx2) {
return _st(_st(_st(aClass)._instanceClass())._name()).__comma(".klass");
+}, function($ctx2) {$ctx2.fill(null, null, {})})});
+$4=(function(){
+return smalltalk.withContext(function($ctx2) {
$5=_st(aClass)._isNil();
+if(smalltalk.assert($5)){
+return "nil";
 } else {
-$1=_st(aClass)._name();
-};
+return _st(aClass)._name();
 };
+}, function($ctx2) {$ctx2.fill(null, null, {})})});
+$1=_st($2)._ifTrue_ifFalse_($3,$4);
 return $1;
-}, self, "classNameFor:", [aClass], smalltalk.Exporter)}
+}, function($ctx1) {$ctx1.fill(self,"classNameFor:", [aClass], smalltalk.Exporter)})}
 }),
 smalltalk.Exporter);
 
@@ -95,12 +98,12 @@ fn: function (){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
var $1;
 $1=_st((smalltalk.String || String))._streamContents_((function(stream){
-return smalltalk.withContext(function($ctx2) { 
return _st(_st(_st((smalltalk.Smalltalk || Smalltalk))._current())._packages())._do_((function(pkg){
-return smalltalk.withContext(function($ctx3) { 
return _st(stream)._nextPutAll_(_st(self)._exportPackage_(_st(pkg)._name()));
-})}));
-})}));
+return smalltalk.withContext(function($ctx2) {
return _st(_st(_st((smalltalk.Smalltalk || Smalltalk))._current())._packages())._do_((function(pkg){
+return smalltalk.withContext(function($ctx3) {
return _st(stream)._nextPutAll_(_st(self)._exportPackage_(_st(pkg)._name()));
+}, function($ctx3) {$ctx3.fill(null, null, {})})}));
+}, function($ctx2) {$ctx2.fill(null, null, {})})}));
 return $1;
-}, self, "exportAll", [], smalltalk.Exporter)}
+}, function($ctx1) {$ctx1.fill(self,"exportAll", [], smalltalk.Exporter)})}
 }),
 smalltalk.Exporter);
 
@@ -112,13 +115,13 @@ fn: function (aClass){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
var $1;
 $1=_st((smalltalk.String || String))._streamContents_((function(stream){
-return smalltalk.withContext(function($ctx2) { 
_st(self)._exportDefinitionOf_on_(aClass,stream);
+return smalltalk.withContext(function($ctx2) {
_st(self)._exportDefinitionOf_on_(aClass,stream);
 _st(self)._exportMethodsOf_on_(aClass,stream);
 _st(self)._exportMetaDefinitionOf_on_(aClass,stream);
 return _st(self)._exportMethodsOf_on_(_st(aClass)._class(),stream);
-})}));
+}, function($ctx2) {$ctx2.fill(null, null, {})})}));
 return $1;
-}, self, "exportClass:", [aClass], smalltalk.Exporter)}
+}, function($ctx1) {$ctx1.fill(self,"exportClass:", [aClass], smalltalk.Exporter)})}
 }),
 smalltalk.Exporter);
 
@@ -128,30 +131,33 @@ smalltalk.method({
 selector: "exportDefinitionOf:on:",
 fn: function (aClass,aStream){
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $1,$2,$3,$4;
-_st(aStream)._nextPutAll_("smalltalk.addClass(");
-_st(aStream)._nextPutAll_(_st(_st("'").__comma(_st(self)._classNameFor_(aClass))).__comma("', "));
-_st(aStream)._nextPutAll_(_st("smalltalk.").__comma(_st(self)._classNameFor_(_st(aClass)._superclass())));
-$1=_st(aStream)._nextPutAll_(", [");
+return smalltalk.withContext(function($ctx1) { 
var $1,$2,$3,$4,$5,$6,$7;
+$1=aStream;
+_st($1)._nextPutAll_("smalltalk.addClass(");
+_st($1)._nextPutAll_(_st(_st("'").__comma(_st(self)._classNameFor_(aClass))).__comma("', "));
+_st($1)._nextPutAll_(_st("smalltalk.").__comma(_st(self)._classNameFor_(_st(aClass)._superclass())));
+$2=_st($1)._nextPutAll_(", [");
 _st(_st(aClass)._instanceVariableNames())._do_separatedBy_((function(each){
-return smalltalk.withContext(function($ctx2) { 
return _st(aStream)._nextPutAll_(_st(_st("'").__comma(each)).__comma("'"));
-})}),(function(){
-return smalltalk.withContext(function($ctx2) { 
return _st(aStream)._nextPutAll_(", ");
-})}));
-_st(aStream)._nextPutAll_("], '");
-_st(aStream)._nextPutAll_(_st(_st(aClass)._category()).__comma("'"));
-$2=_st(aStream)._nextPutAll_(");");
-$3=_st(_st(aClass)._comment())._notEmpty();
-if(smalltalk.assert($3)){
-_st(aStream)._lf();
-_st(aStream)._nextPutAll_("smalltalk.");
-_st(aStream)._nextPutAll_(_st(self)._classNameFor_(aClass));
-_st(aStream)._nextPutAll_(".comment=");
-$4=_st(aStream)._nextPutAll_(_st(_st(aClass)._comment())._asJavascript());
-$4;
+return smalltalk.withContext(function($ctx2) {
return _st(aStream)._nextPutAll_(_st(_st("'").__comma(each)).__comma("'"));
+}, function($ctx2) {$ctx2.fill(null, null, {})})}),(function(){
+return smalltalk.withContext(function($ctx2) {
return _st(aStream)._nextPutAll_(", ");
+}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+$3=aStream;
+_st($3)._nextPutAll_("], '");
+_st($3)._nextPutAll_(_st(_st(aClass)._category()).__comma("'"));
+$4=_st($3)._nextPutAll_(");");
+$5=_st(_st(aClass)._comment())._notEmpty();
+if(smalltalk.assert($5)){
+$6=aStream;
+_st($6)._lf();
+_st($6)._nextPutAll_("smalltalk.");
+_st($6)._nextPutAll_(_st(self)._classNameFor_(aClass));
+_st($6)._nextPutAll_(".comment=");
+$7=_st($6)._nextPutAll_(_st(_st(aClass)._comment())._asJavascript());
+$7;
 };
 _st(aStream)._lf();
-return self}, self, "exportDefinitionOf:on:", [aClass,aStream], smalltalk.Exporter)}
+return self}, function($ctx1) {$ctx1.fill(self,"exportDefinitionOf:on:", [aClass,aStream], smalltalk.Exporter)})}
 }),
 smalltalk.Exporter);
 
@@ -161,20 +167,21 @@ smalltalk.method({
 selector: "exportMetaDefinitionOf:on:",
 fn: function (aClass,aStream){
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $1,$2;
+return smalltalk.withContext(function($ctx1) { 
var $1,$2,$3;
 $1=_st(_st(_st(aClass)._class())._instanceVariableNames())._isEmpty();
 if(! smalltalk.assert($1)){
-_st(aStream)._nextPutAll_(_st("smalltalk.").__comma(_st(self)._classNameFor_(_st(aClass)._class())));
-$2=_st(aStream)._nextPutAll_(".iVarNames = [");
-$2;
+$2=aStream;
+_st($2)._nextPutAll_(_st("smalltalk.").__comma(_st(self)._classNameFor_(_st(aClass)._class())));
+$3=_st($2)._nextPutAll_(".iVarNames = [");
+$3;
 _st(_st(_st(aClass)._class())._instanceVariableNames())._do_separatedBy_((function(each){
-return smalltalk.withContext(function($ctx2) { 
return _st(aStream)._nextPutAll_(_st(_st("'").__comma(each)).__comma("'"));
-})}),(function(){
-return smalltalk.withContext(function($ctx2) { 
return _st(aStream)._nextPutAll_(",");
-})}));
+return smalltalk.withContext(function($ctx2) {
return _st(aStream)._nextPutAll_(_st(_st("'").__comma(each)).__comma("'"));
+}, function($ctx2) {$ctx2.fill(null, null, {})})}),(function(){
+return smalltalk.withContext(function($ctx2) {
return _st(aStream)._nextPutAll_(",");
+}, function($ctx2) {$ctx2.fill(null, null, {})})}));
 _st(aStream)._nextPutAll_(_st("];").__comma(_st((smalltalk.String || String))._lf()));
 };
-return self}, self, "exportMetaDefinitionOf:on:", [aClass,aStream], smalltalk.Exporter)}
+return self}, function($ctx1) {$ctx1.fill(self,"exportMetaDefinitionOf:on:", [aClass,aStream], smalltalk.Exporter)})}
 }),
 smalltalk.Exporter);
 
@@ -184,34 +191,36 @@ smalltalk.method({
 selector: "exportMethod:of:on:",
 fn: function (aMethod,aClass,aStream){
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $1,$2;
-_st(aStream)._nextPutAll_("smalltalk.addMethod(");
-_st(aStream)._lf();
-_st(aStream)._nextPutAll_(_st(_st(_st(_st(aMethod)._selector())._asSelector())._asJavascript()).__comma(","));
-_st(aStream)._lf();
-_st(aStream)._nextPutAll_("smalltalk.method({");
-_st(aStream)._lf();
-_st(aStream)._nextPutAll_(_st(_st("selector: ").__comma(_st(_st(aMethod)._selector())._asJavascript())).__comma(","));
-_st(aStream)._lf();
-_st(aStream)._nextPutAll_(_st(_st("category: '").__comma(_st(aMethod)._category())).__comma("',"));
-_st(aStream)._lf();
-_st(aStream)._nextPutAll_(_st(_st("fn: ").__comma(_st(_st(aMethod)._fn())._compiledSource())).__comma(","));
-_st(aStream)._lf();
-_st(aStream)._nextPutAll_(_st(_st("args: ").__comma(_st(_st(aMethod)._arguments())._asJavascript())).__comma(","));
-_st(aStream)._lf();
-_st(aStream)._nextPutAll_(_st(_st("source: ").__comma(_st(_st(aMethod)._source())._asJavascript())).__comma(","));
-_st(aStream)._lf();
-_st(aStream)._nextPutAll_(_st(_st("messageSends: ").__comma(_st(_st(aMethod)._messageSends())._asJavascript())).__comma(","));
-_st(aStream)._lf();
-$1=_st(aStream)._nextPutAll_(_st("referencedClasses: ").__comma(_st(_st(aMethod)._referencedClasses())._asJavascript()));
-_st(aStream)._lf();
-_st(aStream)._nextPutAll_("}),");
-_st(aStream)._lf();
-_st(aStream)._nextPutAll_(_st("smalltalk.").__comma(_st(self)._classNameFor_(aClass)));
-_st(aStream)._nextPutAll_(");");
-_st(aStream)._lf();
-$2=_st(aStream)._lf();
-return self}, self, "exportMethod:of:on:", [aMethod,aClass,aStream], smalltalk.Exporter)}
+return smalltalk.withContext(function($ctx1) { 
var $1,$2,$3,$4;
+$1=aStream;
+_st($1)._nextPutAll_("smalltalk.addMethod(");
+_st($1)._lf();
+_st($1)._nextPutAll_(_st(_st(_st(_st(aMethod)._selector())._asSelector())._asJavascript()).__comma(","));
+_st($1)._lf();
+_st($1)._nextPutAll_("smalltalk.method({");
+_st($1)._lf();
+_st($1)._nextPutAll_(_st(_st("selector: ").__comma(_st(_st(aMethod)._selector())._asJavascript())).__comma(","));
+_st($1)._lf();
+_st($1)._nextPutAll_(_st(_st("category: '").__comma(_st(aMethod)._category())).__comma("',"));
+_st($1)._lf();
+_st($1)._nextPutAll_(_st(_st("fn: ").__comma(_st(_st(aMethod)._fn())._compiledSource())).__comma(","));
+_st($1)._lf();
+_st($1)._nextPutAll_(_st(_st("args: ").__comma(_st(_st(aMethod)._arguments())._asJavascript())).__comma(","));
+_st($1)._lf();
+_st($1)._nextPutAll_(_st(_st("source: ").__comma(_st(_st(aMethod)._source())._asJavascript())).__comma(","));
+_st($1)._lf();
+_st($1)._nextPutAll_(_st(_st("messageSends: ").__comma(_st(_st(aMethod)._messageSends())._asJavascript())).__comma(","));
+_st($1)._lf();
+$2=_st($1)._nextPutAll_(_st("referencedClasses: ").__comma(_st(_st(aMethod)._referencedClasses())._asJavascript()));
+$3=aStream;
+_st($3)._lf();
+_st($3)._nextPutAll_("}),");
+_st($3)._lf();
+_st($3)._nextPutAll_(_st("smalltalk.").__comma(_st(self)._classNameFor_(aClass)));
+_st($3)._nextPutAll_(");");
+_st($3)._lf();
+$4=_st($3)._lf();
+return self}, function($ctx1) {$ctx1.fill(self,"exportMethod:of:on:", [aMethod,aClass,aStream], smalltalk.Exporter)})}
 }),
 smalltalk.Exporter);
 
@@ -221,17 +230,19 @@ smalltalk.method({
 selector: "exportMethodsOf:on:",
 fn: function (aClass,aStream){
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $1;
-_st(_st(_st(_st(aClass)._methodDictionary())._values())._sorted_((function(a,b){
-return smalltalk.withContext(function($ctx2) { 
return _st(_st(a)._selector()).__lt_eq(_st(b)._selector());
-})})))._do_((function(each){
-return smalltalk.withContext(function($ctx2) { 
$1=_st(_st(each)._category())._match_("^\x5c*");
-if(! smalltalk.assert($1)){
+return smalltalk.withContext(function($ctx1) { 
var $1,$3,$2;
+$1=_st(_st(_st(aClass)._methodDictionary())._values())._sorted_((function(a,b){
+return smalltalk.withContext(function($ctx2) {
return _st(_st(a)._selector()).__lt_eq(_st(b)._selector());
+}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+$2=(function(each){
+return smalltalk.withContext(function($ctx2) {
$3=_st(_st(each)._category())._match_("^\x5c*");
+if(! smalltalk.assert($3)){
 return _st(self)._exportMethod_of_on_(each,aClass,aStream);
 };
-})}));
+}, function($ctx2) {$ctx2.fill(null, null, {})})});
+_st($1)._do_($2);
 _st(aStream)._lf();
-return self}, self, "exportMethodsOf:on:", [aClass,aStream], smalltalk.Exporter)}
+return self}, function($ctx1) {$ctx1.fill(self,"exportMethodsOf:on:", [aClass,aStream], smalltalk.Exporter)})}
 }),
 smalltalk.Exporter);
 
@@ -241,19 +252,19 @@ smalltalk.method({
 selector: "exportPackage:",
 fn: function (packageName){
 var self=this;
+var package_;
 return smalltalk.withContext(function($ctx1) { 
var $1;
-$ctx1.package=nil;
 $1=_st((smalltalk.String || String))._streamContents_((function(stream){
-return smalltalk.withContext(function($ctx2) { 
$ctx1.locals.package_=_st(_st((smalltalk.Smalltalk || Smalltalk))._current())._packageAt_(packageName);
-$ctx1.locals.package_;
-_st(self)._exportPackageDefinitionOf_on_($ctx1.locals.package_,stream);
-_st(_st(_st($ctx1.locals.package_)._sortedClasses())._asSet())._do_((function(each){
-return smalltalk.withContext(function($ctx3) { 
return _st(stream)._nextPutAll_(_st(self)._exportClass_(each));
-})}));
-return _st(self)._exportPackageExtensionsOf_on_($ctx1.locals.package_,stream);
-})}));
+return smalltalk.withContext(function($ctx2) {
package_=_st(_st((smalltalk.Smalltalk || Smalltalk))._current())._packageAt_(packageName);
+package_;
+_st(self)._exportPackageDefinitionOf_on_(package_,stream);
+_st(_st(_st(package_)._sortedClasses())._asSet())._do_((function(each){
+return smalltalk.withContext(function($ctx3) {
return _st(stream)._nextPutAll_(_st(self)._exportClass_(each));
+}, function($ctx3) {$ctx3.fill(null, null, {})})}));
+return _st(self)._exportPackageExtensionsOf_on_(package_,stream);
+}, function($ctx2) {$ctx2.fill(null, null, {})})}));
 return $1;
-}, self, "exportPackage:", [packageName], smalltalk.Exporter)}
+}, function($ctx1) {$ctx1.fill(self,"exportPackage:", [packageName], smalltalk.Exporter)})}
 }),
 smalltalk.Exporter);
 
@@ -263,11 +274,12 @@ smalltalk.method({
 selector: "exportPackageDefinitionOf:on:",
 fn: function (package_,aStream){
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $1;
-_st(aStream)._nextPutAll_("smalltalk.addPackage(");
-$1=_st(aStream)._nextPutAll_(_st(_st(_st(_st("'").__comma(_st(package_)._name())).__comma("', ")).__comma(_st(package_)._propertiesAsJSON())).__comma(");"));
+return smalltalk.withContext(function($ctx1) { 
var $1,$2;
+$1=aStream;
+_st($1)._nextPutAll_("smalltalk.addPackage(");
+$2=_st($1)._nextPutAll_(_st(_st(_st(_st("'").__comma(_st(package_)._name())).__comma("', ")).__comma(_st(package_)._propertiesAsJSON())).__comma(");"));
 _st(aStream)._lf();
-return self}, self, "exportPackageDefinitionOf:on:", [package_,aStream], smalltalk.Exporter)}
+return self}, function($ctx1) {$ctx1.fill(self,"exportPackageDefinitionOf:on:", [package_,aStream], smalltalk.Exporter)})}
 }),
 smalltalk.Exporter);
 
@@ -277,22 +289,28 @@ smalltalk.method({
 selector: "exportPackageExtensionsOf:on:",
 fn: function (package_,aStream){
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $1;
-$ctx1.name=nil;
-$ctx1.locals.name=_st(package_)._name();
-_st(_st((smalltalk.Package || Package))._sortedClasses_(_st(_st((smalltalk.Smalltalk || Smalltalk))._current())._classes()))._do_((function(each){
-return smalltalk.withContext(function($ctx2) { 
return _st([each,_st(each)._class()])._do_((function(aClass){
-return smalltalk.withContext(function($ctx3) { 
return _st(_st(_st(_st(aClass)._methodDictionary())._values())._sorted_((function(a,b){
-return smalltalk.withContext(function($ctx4) { 
return _st(_st(a)._selector()).__lt_eq(_st(b)._selector());
-})})))._do_((function(method){
-return smalltalk.withContext(function($ctx4) { 
$1=_st(_st(method)._category())._match_(_st("^\x5c*").__comma($ctx1.locals.name));
-if(smalltalk.assert($1)){
+var name;
+return smalltalk.withContext(function($ctx1) { 
var $1,$3,$5,$7,$6,$4,$2;
+name=_st(package_)._name();
+$1=_st((smalltalk.Package || Package))._sortedClasses_(_st(_st((smalltalk.Smalltalk || Smalltalk))._current())._classes());
+$2=(function(each){
+return smalltalk.withContext(function($ctx2) {
$3=[each,_st(each)._class()];
+$4=(function(aClass){
+return smalltalk.withContext(function($ctx3) {
$5=_st(_st(_st(aClass)._methodDictionary())._values())._sorted_((function(a,b){
+return smalltalk.withContext(function($ctx4) {
return _st(_st(a)._selector()).__lt_eq(_st(b)._selector());
+}, function($ctx4) {$ctx4.fill(null, null, {})})}));
+$6=(function(method){
+return smalltalk.withContext(function($ctx4) {
$7=_st(_st(method)._category())._match_(_st("^\x5c*").__comma(name));
+if(smalltalk.assert($7)){
 return _st(self)._exportMethod_of_on_(method,aClass,aStream);
 };
-})}));
-})}));
-})}));
-return self}, self, "exportPackageExtensionsOf:on:", [package_,aStream], smalltalk.Exporter)}
+}, function($ctx4) {$ctx4.fill(null, null, {})})});
+return _st($5)._do_($6);
+}, function($ctx3) {$ctx3.fill(null, null, {})})});
+return _st($3)._do_($4);
+}, function($ctx2) {$ctx2.fill(null, null, {})})});
+_st($1)._do_($2);
+return self}, function($ctx1) {$ctx1.fill(self,"exportPackageExtensionsOf:on:", [package_,aStream], smalltalk.Exporter)})}
 }),
 smalltalk.Exporter);
 
@@ -308,7 +326,7 @@ var self=this;
 return smalltalk.withContext(function($ctx1) { 
var $1;
 $1=_st(_st(aString)._replace_with_("!","!!"))._trimBoth();
 return $1;
-}, self, "chunkEscape:", [aString], smalltalk.ChunkExporter)}
+}, function($ctx1) {$ctx1.fill(self,"chunkEscape:", [aString], smalltalk.ChunkExporter)})}
 }),
 smalltalk.ChunkExporter);
 
@@ -318,20 +336,22 @@ smalltalk.method({
 selector: "classNameFor:",
 fn: function (aClass){
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $2,$3,$1;
+return smalltalk.withContext(function($ctx1) { 
var $2,$3,$5,$4,$1;
 $2=_st(aClass)._isMetaclass();
-if(smalltalk.assert($2)){
-$1=_st(_st(_st(aClass)._instanceClass())._name()).__comma(" class");
+$3=(function(){
+return smalltalk.withContext(function($ctx2) {
return _st(_st(_st(aClass)._instanceClass())._name()).__comma(" class");
+}, function($ctx2) {$ctx2.fill(null, null, {})})});
+$4=(function(){
+return smalltalk.withContext(function($ctx2) {
$5=_st(aClass)._isNil();
+if(smalltalk.assert($5)){
+return "nil";
 } else {
-$3=_st(aClass)._isNil();
-if(smalltalk.assert($3)){
-$1="nil";
-} else {
-$1=_st(aClass)._name();
-};
+return _st(aClass)._name();
 };
+}, function($ctx2) {$ctx2.fill(null, null, {})})});
+$1=_st($2)._ifTrue_ifFalse_($3,$4);
 return $1;
-}, self, "classNameFor:", [aClass], smalltalk.ChunkExporter)}
+}, function($ctx1) {$ctx1.fill(self,"classNameFor:", [aClass], smalltalk.ChunkExporter)})}
 }),
 smalltalk.ChunkExporter);
 
@@ -341,30 +361,33 @@ smalltalk.method({
 selector: "exportDefinitionOf:on:",
 fn: function (aClass,aStream){
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $1,$2,$3,$4;
-_st(aStream)._nextPutAll_(_st(self)._classNameFor_(_st(aClass)._superclass()));
-_st(aStream)._nextPutAll_(_st(" subclass: #").__comma(_st(self)._classNameFor_(aClass)));
-_st(aStream)._lf();
-$1=_st(aStream)._nextPutAll_("\x09instanceVariableNames: '");
+return smalltalk.withContext(function($ctx1) { 
var $1,$2,$3,$4,$5,$6,$7;
+$1=aStream;
+_st($1)._nextPutAll_(_st(self)._classNameFor_(_st(aClass)._superclass()));
+_st($1)._nextPutAll_(_st(" subclass: #").__comma(_st(self)._classNameFor_(aClass)));
+_st($1)._lf();
+$2=_st($1)._nextPutAll_("\x09instanceVariableNames: '");
 _st(_st(aClass)._instanceVariableNames())._do_separatedBy_((function(each){
-return smalltalk.withContext(function($ctx2) { 
return _st(aStream)._nextPutAll_(each);
-})}),(function(){
-return smalltalk.withContext(function($ctx2) { 
return _st(aStream)._nextPutAll_(" ");
-})}));
-_st(aStream)._nextPutAll_("'");
-_st(aStream)._lf();
-_st(aStream)._nextPutAll_(_st(_st("\x09package: '").__comma(_st(aClass)._category())).__comma("'!"));
-$2=_st(aStream)._lf();
-$3=_st(_st(aClass)._comment())._notEmpty();
-if(smalltalk.assert($3)){
-_st(aStream)._nextPutAll_(_st(_st("!").__comma(_st(self)._classNameFor_(aClass))).__comma(" commentStamp!"));
-_st(aStream)._lf();
-_st(aStream)._nextPutAll_(_st(_st(self)._chunkEscape_(_st(aClass)._comment())).__comma("!"));
-$4=_st(aStream)._lf();
-$4;
+return smalltalk.withContext(function($ctx2) {
return _st(aStream)._nextPutAll_(each);
+}, function($ctx2) {$ctx2.fill(null, null, {})})}),(function(){
+return smalltalk.withContext(function($ctx2) {
return _st(aStream)._nextPutAll_(" ");
+}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+$3=aStream;
+_st($3)._nextPutAll_("'");
+_st($3)._lf();
+_st($3)._nextPutAll_(_st(_st("\x09package: '").__comma(_st(aClass)._category())).__comma("'!"));
+$4=_st($3)._lf();
+$5=_st(_st(aClass)._comment())._notEmpty();
+if(smalltalk.assert($5)){
+$6=aStream;
+_st($6)._nextPutAll_(_st(_st("!").__comma(_st(self)._classNameFor_(aClass))).__comma(" commentStamp!"));
+_st($6)._lf();
+_st($6)._nextPutAll_(_st(_st(self)._chunkEscape_(_st(aClass)._comment())).__comma("!"));
+$7=_st($6)._lf();
+$7;
 };
 _st(aStream)._lf();
-return self}, self, "exportDefinitionOf:on:", [aClass,aStream], smalltalk.ChunkExporter)}
+return self}, function($ctx1) {$ctx1.fill(self,"exportDefinitionOf:on:", [aClass,aStream], smalltalk.ChunkExporter)})}
 }),
 smalltalk.ChunkExporter);
 
@@ -374,23 +397,25 @@ smalltalk.method({
 selector: "exportMetaDefinitionOf:on:",
 fn: function (aClass,aStream){
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $1,$2,$3;
+return smalltalk.withContext(function($ctx1) { 
var $1,$2,$3,$4,$5;
 $1=_st(_st(_st(aClass)._class())._instanceVariableNames())._isEmpty();
 if(! smalltalk.assert($1)){
-_st(aStream)._nextPutAll_(_st(self)._classNameFor_(_st(aClass)._class()));
-$2=_st(aStream)._nextPutAll_(" instanceVariableNames: '");
-$2;
-_st(_st(_st(aClass)._class())._instanceVariableNames())._do_separatedBy_((function(each){
-return smalltalk.withContext(function($ctx2) { 
return _st(aStream)._nextPutAll_(each);
-})}),(function(){
-return smalltalk.withContext(function($ctx2) { 
return _st(aStream)._nextPutAll_(" ");
-})}));
-_st(aStream)._nextPutAll_("'!");
-_st(aStream)._lf();
-$3=_st(aStream)._lf();
+$2=aStream;
+_st($2)._nextPutAll_(_st(self)._classNameFor_(_st(aClass)._class()));
+$3=_st($2)._nextPutAll_(" instanceVariableNames: '");
 $3;
+_st(_st(_st(aClass)._class())._instanceVariableNames())._do_separatedBy_((function(each){
+return smalltalk.withContext(function($ctx2) {
return _st(aStream)._nextPutAll_(each);
+}, function($ctx2) {$ctx2.fill(null, null, {})})}),(function(){
+return smalltalk.withContext(function($ctx2) {
return _st(aStream)._nextPutAll_(" ");
+}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+$4=aStream;
+_st($4)._nextPutAll_("'!");
+_st($4)._lf();
+$5=_st($4)._lf();
+$5;
 };
-return self}, self, "exportMetaDefinitionOf:on:", [aClass,aStream], smalltalk.ChunkExporter)}
+return self}, function($ctx1) {$ctx1.fill(self,"exportMetaDefinitionOf:on:", [aClass,aStream], smalltalk.ChunkExporter)})}
 }),
 smalltalk.ChunkExporter);
 
@@ -400,13 +425,14 @@ smalltalk.method({
 selector: "exportMethod:of:on:",
 fn: function (aMethod,aClass,aStream){
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $1;
-_st(aStream)._lf();
-_st(aStream)._lf();
-_st(aStream)._nextPutAll_(_st(self)._chunkEscape_(_st(aMethod)._source()));
-_st(aStream)._lf();
-$1=_st(aStream)._nextPutAll_("!");
-return self}, self, "exportMethod:of:on:", [aMethod,aClass,aStream], smalltalk.ChunkExporter)}
+return smalltalk.withContext(function($ctx1) { 
var $1,$2;
+$1=aStream;
+_st($1)._lf();
+_st($1)._lf();
+_st($1)._nextPutAll_(_st(self)._chunkEscape_(_st(aMethod)._source()));
+_st($1)._lf();
+$2=_st($1)._nextPutAll_("!");
+return self}, function($ctx1) {$ctx1.fill(self,"exportMethod:of:on:", [aMethod,aClass,aStream], smalltalk.ChunkExporter)})}
 }),
 smalltalk.ChunkExporter);
 
@@ -416,18 +442,20 @@ smalltalk.method({
 selector: "exportMethods:category:of:on:",
 fn: function (methods,category,aClass,aStream){
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $1,$2;
-_st(aStream)._nextPutAll_(_st("!").__comma(_st(self)._classNameFor_(aClass)));
-$1=_st(aStream)._nextPutAll_(_st(_st(" methodsFor: '").__comma(category)).__comma("'!"));
+return smalltalk.withContext(function($ctx1) { 
var $1,$2,$3,$4;
+$1=aStream;
+_st($1)._nextPutAll_(_st("!").__comma(_st(self)._classNameFor_(aClass)));
+$2=_st($1)._nextPutAll_(_st(_st(" methodsFor: '").__comma(category)).__comma("'!"));
 _st(_st(methods)._sorted_((function(a,b){
-return smalltalk.withContext(function($ctx2) { 
return _st(_st(a)._selector()).__lt_eq(_st(b)._selector());
-})})))._do_((function(each){
-return smalltalk.withContext(function($ctx2) { 
return _st(self)._exportMethod_of_on_(each,aClass,aStream);
-})}));
-_st(aStream)._nextPutAll_(" !");
-_st(aStream)._lf();
-$2=_st(aStream)._lf();
-return self}, self, "exportMethods:category:of:on:", [methods,category,aClass,aStream], smalltalk.ChunkExporter)}
+return smalltalk.withContext(function($ctx2) {
return _st(_st(a)._selector()).__lt_eq(_st(b)._selector());
+}, function($ctx2) {$ctx2.fill(null, null, {})})})))._do_((function(each){
+return smalltalk.withContext(function($ctx2) {
return _st(self)._exportMethod_of_on_(each,aClass,aStream);
+}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+$3=aStream;
+_st($3)._nextPutAll_(" !");
+_st($3)._lf();
+$4=_st($3)._lf();
+return self}, function($ctx1) {$ctx1.fill(self,"exportMethods:category:of:on:", [methods,category,aClass,aStream], smalltalk.ChunkExporter)})}
 }),
 smalltalk.ChunkExporter);
 
@@ -437,24 +465,25 @@ smalltalk.method({
 selector: "exportMethodsOf:on:",
 fn: function (aClass,aStream){
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $1;
-$ctx1.map=nil;
-$ctx1.locals.map=_st((smalltalk.Dictionary || Dictionary))._new();
-_st(aClass)._protocolsDo_((function(category,methods){
-return smalltalk.withContext(function($ctx2) { 
$1=_st(category)._match_("^\x5c*");
-if(! smalltalk.assert($1)){
-return _st($ctx1.locals.map)._at_put_(category,methods);
+var map;
+return smalltalk.withContext(function($ctx1) { 
var $1,$3,$2;
+map=_st((smalltalk.Dictionary || Dictionary))._new();
+$1=aClass;
+$2=(function(category,methods){
+return smalltalk.withContext(function($ctx2) {
$3=_st(category)._match_("^\x5c*");
+if(! smalltalk.assert($3)){
+return _st(map)._at_put_(category,methods);
 };
-})}));
-_st(_st(_st($ctx1.locals.map)._keys())._sorted_((function(a,b){
-return smalltalk.withContext(function($ctx2) { 
return _st(a).__lt_eq(b);
-})})))._do_((function(category){
-return smalltalk.withContext(function($ctx2) { 
$ctx2.methods=nil;
-$ctx2.locals.methods=_st($ctx1.locals.map)._at_(category);
-$ctx2.locals.methods;
-return _st(self)._exportMethods_category_of_on_($ctx2.locals.methods,category,aClass,aStream);
-})}));
-return self}, self, "exportMethodsOf:on:", [aClass,aStream], smalltalk.ChunkExporter)}
+}, function($ctx2) {$ctx2.fill(null, null, {})})});
+_st($1)._protocolsDo_($2);
+_st(_st(_st(map)._keys())._sorted_((function(a,b){
+return smalltalk.withContext(function($ctx2) {
return _st(a).__lt_eq(b);
+}, function($ctx2) {$ctx2.fill(null, null, {})})})))._do_((function(category){
+return smalltalk.withContext(function($ctx2) {
methods=_st(map)._at_(category);
+methods;
+return _st(self)._exportMethods_category_of_on_(methods,category,aClass,aStream);
+}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+return self}, function($ctx1) {$ctx1.fill(self,"exportMethodsOf:on:", [aClass,aStream], smalltalk.ChunkExporter)})}
 }),
 smalltalk.ChunkExporter);
 
@@ -464,10 +493,11 @@ smalltalk.method({
 selector: "exportPackageDefinitionOf:on:",
 fn: function (package_,aStream){
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $1;
-_st(aStream)._nextPutAll_(_st(_st(_st(_st("Smalltalk current createPackage: '").__comma(_st(package_)._name())).__comma("' properties: ")).__comma(_st(_st(package_)._properties())._storeString())).__comma("!"));
-$1=_st(aStream)._lf();
-return self}, self, "exportPackageDefinitionOf:on:", [package_,aStream], smalltalk.ChunkExporter)}
+return smalltalk.withContext(function($ctx1) { 
var $1,$2;
+$1=aStream;
+_st($1)._nextPutAll_(_st(_st(_st(_st("Smalltalk current createPackage: '").__comma(_st(package_)._name())).__comma("' properties: ")).__comma(_st(_st(package_)._properties())._storeString())).__comma("!"));
+$2=_st($1)._lf();
+return self}, function($ctx1) {$ctx1.fill(self,"exportPackageDefinitionOf:on:", [package_,aStream], smalltalk.ChunkExporter)})}
 }),
 smalltalk.ChunkExporter);
 
@@ -477,31 +507,35 @@ smalltalk.method({
 selector: "exportPackageExtensionsOf:on:",
 fn: function (package_,aStream){
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $1;
-$ctx1.name=nil;
-$ctx1.map=nil;
-$ctx1.locals.name=_st(package_)._name();
-_st(_st((smalltalk.Package || Package))._sortedClasses_(_st(_st((smalltalk.Smalltalk || Smalltalk))._current())._classes()))._do_((function(each){
-return smalltalk.withContext(function($ctx2) { 
return _st([each,_st(each)._class()])._do_((function(aClass){
-return smalltalk.withContext(function($ctx3) { 
$ctx1.locals.map=_st((smalltalk.Dictionary || Dictionary))._new();
-$ctx1.locals.map;
-_st(aClass)._protocolsDo_((function(category,methods){
-return smalltalk.withContext(function($ctx4) { 
$1=_st(category)._match_(_st("^\x5c*").__comma($ctx1.locals.name));
-if(smalltalk.assert($1)){
-return _st($ctx1.locals.map)._at_put_(category,methods);
+var name,map;
+return smalltalk.withContext(function($ctx1) { 
var $1,$3,$5,$7,$6,$4,$2;
+name=_st(package_)._name();
+$1=_st((smalltalk.Package || Package))._sortedClasses_(_st(_st((smalltalk.Smalltalk || Smalltalk))._current())._classes());
+$2=(function(each){
+return smalltalk.withContext(function($ctx2) {
$3=[each,_st(each)._class()];
+$4=(function(aClass){
+return smalltalk.withContext(function($ctx3) {
map=_st((smalltalk.Dictionary || Dictionary))._new();
+map;
+$5=aClass;
+$6=(function(category,methods){
+return smalltalk.withContext(function($ctx4) {
$7=_st(category)._match_(_st("^\x5c*").__comma(name));
+if(smalltalk.assert($7)){
+return _st(map)._at_put_(category,methods);
 };
-})}));
-return _st(_st(_st($ctx1.locals.map)._keys())._sorted_((function(a,b){
-return smalltalk.withContext(function($ctx4) { 
return _st(a).__lt_eq(b);
-})})))._do_((function(category){
-return smalltalk.withContext(function($ctx4) { 
$ctx4.methods=nil;
-$ctx4.locals.methods=_st($ctx1.locals.map)._at_(category);
-$ctx4.locals.methods;
-return _st(self)._exportMethods_category_of_on_($ctx4.locals.methods,category,aClass,aStream);
-})}));
-})}));
-})}));
-return self}, self, "exportPackageExtensionsOf:on:", [package_,aStream], smalltalk.ChunkExporter)}
+}, function($ctx4) {$ctx4.fill(null, null, {})})});
+_st($5)._protocolsDo_($6);
+return _st(_st(_st(map)._keys())._sorted_((function(a,b){
+return smalltalk.withContext(function($ctx4) {
return _st(a).__lt_eq(b);
+}, function($ctx4) {$ctx4.fill(null, null, {})})})))._do_((function(category){
+return smalltalk.withContext(function($ctx4) {
methods=_st(map)._at_(category);
+methods;
+return _st(self)._exportMethods_category_of_on_(methods,category,aClass,aStream);
+}, function($ctx4) {$ctx4.fill(null, null, {})})}));
+}, function($ctx3) {$ctx3.fill(null, null, {})})});
+return _st($3)._do_($4);
+}, function($ctx2) {$ctx2.fill(null, null, {})})});
+_st($1)._do_($2);
+return self}, function($ctx1) {$ctx1.fill(self,"exportPackageExtensionsOf:on:", [package_,aStream], smalltalk.ChunkExporter)})}
 }),
 smalltalk.ChunkExporter);
 
@@ -514,21 +548,23 @@ smalltalk.method({
 selector: "exportDefinitionOf:on:",
 fn: function (aClass,aStream){
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $1,$2;
-_st(aStream)._nextPutAll_("smalltalk.addClass(");
-_st(aStream)._nextPutAll_(_st(_st("'").__comma(_st(self)._classNameFor_(aClass))).__comma("', "));
-_st(aStream)._nextPutAll_(_st("smalltalk.").__comma(_st(self)._classNameFor_(_st(aClass)._superclass())));
-$1=_st(aStream)._nextPutAll_(", [");
+return smalltalk.withContext(function($ctx1) { 
var $1,$2,$3,$4;
+$1=aStream;
+_st($1)._nextPutAll_("smalltalk.addClass(");
+_st($1)._nextPutAll_(_st(_st("'").__comma(_st(self)._classNameFor_(aClass))).__comma("', "));
+_st($1)._nextPutAll_(_st("smalltalk.").__comma(_st(self)._classNameFor_(_st(aClass)._superclass())));
+$2=_st($1)._nextPutAll_(", [");
 _st(_st(aClass)._instanceVariableNames())._do_separatedBy_((function(each){
-return smalltalk.withContext(function($ctx2) { 
return _st(aStream)._nextPutAll_(_st(_st("'").__comma(each)).__comma("'"));
-})}),(function(){
-return smalltalk.withContext(function($ctx2) { 
return _st(aStream)._nextPutAll_(", ");
-})}));
-_st(aStream)._nextPutAll_("], '");
-_st(aStream)._nextPutAll_(_st(_st(aClass)._category()).__comma("'"));
-$2=_st(aStream)._nextPutAll_(");");
-_st(aStream)._lf();
-return self}, self, "exportDefinitionOf:on:", [aClass,aStream], smalltalk.StrippedExporter)}
+return smalltalk.withContext(function($ctx2) {
return _st(aStream)._nextPutAll_(_st(_st("'").__comma(each)).__comma("'"));
+}, function($ctx2) {$ctx2.fill(null, null, {})})}),(function(){
+return smalltalk.withContext(function($ctx2) {
return _st(aStream)._nextPutAll_(", ");
+}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+$3=aStream;
+_st($3)._nextPutAll_("], '");
+_st($3)._nextPutAll_(_st(_st(aClass)._category()).__comma("'"));
+$4=_st($3)._nextPutAll_(");");
+_st(aStream)._lf();
+return self}, function($ctx1) {$ctx1.fill(self,"exportDefinitionOf:on:", [aClass,aStream], smalltalk.StrippedExporter)})}
 }),
 smalltalk.StrippedExporter);
 
@@ -538,24 +574,25 @@ smalltalk.method({
 selector: "exportMethod:of:on:",
 fn: function (aMethod,aClass,aStream){
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $1;
-_st(aStream)._nextPutAll_("smalltalk.addMethod(");
-_st(aStream)._lf();
-_st(aStream)._nextPutAll_(_st(_st(_st(_st(aMethod)._selector())._asSelector())._asJavascript()).__comma(","));
-_st(aStream)._lf();
-_st(aStream)._nextPutAll_("smalltalk.method({");
-_st(aStream)._lf();
-_st(aStream)._nextPutAll_(_st(_st("selector: ").__comma(_st(_st(aMethod)._selector())._asJavascript())).__comma(","));
-_st(aStream)._lf();
-_st(aStream)._nextPutAll_(_st("fn: ").__comma(_st(_st(aMethod)._fn())._compiledSource()));
-_st(aStream)._lf();
-_st(aStream)._nextPutAll_("}),");
-_st(aStream)._lf();
-_st(aStream)._nextPutAll_(_st("smalltalk.").__comma(_st(self)._classNameFor_(aClass)));
-_st(aStream)._nextPutAll_(");");
-_st(aStream)._lf();
-$1=_st(aStream)._lf();
-return self}, self, "exportMethod:of:on:", [aMethod,aClass,aStream], smalltalk.StrippedExporter)}
+return smalltalk.withContext(function($ctx1) { 
var $1,$2;
+$1=aStream;
+_st($1)._nextPutAll_("smalltalk.addMethod(");
+_st($1)._lf();
+_st($1)._nextPutAll_(_st(_st(_st(_st(aMethod)._selector())._asSelector())._asJavascript()).__comma(","));
+_st($1)._lf();
+_st($1)._nextPutAll_("smalltalk.method({");
+_st($1)._lf();
+_st($1)._nextPutAll_(_st(_st("selector: ").__comma(_st(_st(aMethod)._selector())._asJavascript())).__comma(","));
+_st($1)._lf();
+_st($1)._nextPutAll_(_st("fn: ").__comma(_st(_st(aMethod)._fn())._compiledSource()));
+_st($1)._lf();
+_st($1)._nextPutAll_("}),");
+_st($1)._lf();
+_st($1)._nextPutAll_(_st("smalltalk.").__comma(_st(self)._classNameFor_(aClass)));
+_st($1)._nextPutAll_(");");
+_st($1)._lf();
+$2=_st($1)._lf();
+return self}, function($ctx1) {$ctx1.fill(self,"exportMethod:of:on:", [aMethod,aClass,aStream], smalltalk.StrippedExporter)})}
 }),
 smalltalk.StrippedExporter);
 
@@ -568,33 +605,35 @@ smalltalk.method({
 selector: "import:",
 fn: function (aStream){
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $1;
-$ctx1.chunk=nil;
-$ctx1.result=nil;
-$ctx1.parser=nil;
-$ctx1.lastEmpty=nil;
-$ctx1.locals.parser=_st((smalltalk.ChunkParser || ChunkParser))._on_(aStream);
-$ctx1.locals.lastEmpty=false;
-_st((function(){
-return smalltalk.withContext(function($ctx2) { 
$ctx1.locals.chunk=_st($ctx1.locals.parser)._nextChunk();
-$ctx1.locals.chunk;
-return _st($ctx1.locals.chunk)._isNil();
-})}))._whileFalse_((function(){
-return smalltalk.withContext(function($ctx2) { 
$1=_st($ctx1.locals.chunk)._isEmpty();
-if(smalltalk.assert($1)){
-$ctx1.locals.lastEmpty=true;
-return $ctx1.locals.lastEmpty;
-} else {
-$ctx1.locals.result=_st(_st((smalltalk.Compiler || Compiler))._new())._evaluateExpression_($ctx1.locals.chunk);
-$ctx1.locals.result;
-if(smalltalk.assert($ctx1.locals.lastEmpty)){
-$ctx1.locals.lastEmpty=false;
-$ctx1.locals.lastEmpty;
-return _st($ctx1.locals.result)._scanFrom_($ctx1.locals.parser);
+var chunk,result,parser,lastEmpty;
+return smalltalk.withContext(function($ctx1) { 
var $1,$3,$4,$6,$5,$2;
+parser=_st((smalltalk.ChunkParser || ChunkParser))._on_(aStream);
+lastEmpty=false;
+$1=(function(){
+return smalltalk.withContext(function($ctx2) {
chunk=_st(parser)._nextChunk();
+chunk;
+return _st(chunk)._isNil();
+}, function($ctx2) {$ctx2.fill(null, null, {})})});
+$2=(function(){
+return smalltalk.withContext(function($ctx2) {
$3=_st(chunk)._isEmpty();
+$4=(function(){
+return smalltalk.withContext(function($ctx3) {
lastEmpty=true;
+return lastEmpty;
+}, function($ctx3) {$ctx3.fill(null, null, {})})});
+$5=(function(){
+return smalltalk.withContext(function($ctx3) {
result=_st(_st((smalltalk.Compiler || Compiler))._new())._evaluateExpression_(chunk);
+result;
+$6=lastEmpty;
+if(smalltalk.assert($6)){
+lastEmpty=false;
+lastEmpty;
+return _st(result)._scanFrom_(parser);
 };
-};
-})}));
-return self}, self, "import:", [aStream], smalltalk.Importer)}
+}, function($ctx3) {$ctx3.fill(null, null, {})})});
+return _st($3)._ifTrue_ifFalse_($4,$5);
+}, function($ctx2) {$ctx2.fill(null, null, {})})});
+_st($1)._whileFalse_($2);
+return self}, function($ctx1) {$ctx1.fill(self,"import:", [aStream], smalltalk.Importer)})}
 }),
 smalltalk.Importer);
 
@@ -612,7 +651,7 @@ $1=_st((smalltalk.Package || Package))._named_(packageName);
 _st($1)._setupClasses();
 _st($1)._commitPathJs_(_st(_st("/").__comma(aString)).__comma("/js"));
 $2=_st($1)._commitPathSt_(_st(_st("/").__comma(aString)).__comma("/st"));
-return self}, self, "initializePackageNamed:prefix:", [packageName,aString], smalltalk.PackageLoader)}
+return self}, function($ctx1) {$ctx1.fill(self,"initializePackageNamed:prefix:", [packageName,aString], smalltalk.PackageLoader)})}
 }),
 smalltalk.PackageLoader);
 
@@ -622,18 +661,25 @@ smalltalk.method({
 selector: "loadPackage:prefix:",
 fn: function (packageName,aString){
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $1;
-$ctx1.url=nil;
-$ctx1.locals.url=_st(_st(_st(_st("/").__comma(aString)).__comma("/js/")).__comma(packageName)).__comma(".js");
-_st(jQuery)._ajax_options_($ctx1.locals.url,smalltalk.HashedCollection._fromPairs_([_st("type").__minus_gt("GET"),_st("dataType").__minus_gt("script"),_st("complete").__minus_gt((function(jqXHR,textStatus){
-return smalltalk.withContext(function($ctx2) { 
$1=_st(_st(jqXHR)._readyState()).__eq((4));
-if(smalltalk.assert($1)){
+var url;
+return smalltalk.withContext(function($ctx1) { 
var $1,$2,$4,$5,$8,$7,$6,$3;
+url=_st(_st(_st(_st("/").__comma(aString)).__comma("/js/")).__comma(packageName)).__comma(".js");
+$1=jQuery;
+$2=url;
+$4=_st("type").__minus_gt("GET");
+$5=_st("dataType").__minus_gt("script");
+$7=(function(jqXHR,textStatus){
+return smalltalk.withContext(function($ctx2) {
$8=_st(_st(jqXHR)._readyState()).__eq((4));
+if(smalltalk.assert($8)){
 return _st(self)._initializePackageNamed_prefix_(packageName,aString);
 };
-})})),_st("error").__minus_gt((function(){
-return smalltalk.withContext(function($ctx2) { 
return _st(window)._alert_(_st("Could not load package at:  ").__comma($ctx1.locals.url));
-})}))]));
-return self}, self, "loadPackage:prefix:", [packageName,aString], smalltalk.PackageLoader)}
+}, function($ctx2) {$ctx2.fill(null, null, {})})});
+$6=_st("complete").__minus_gt($7);
+$3=smalltalk.HashedCollection._fromPairs_([$4,$5,$6,_st("error").__minus_gt((function(){
+return smalltalk.withContext(function($ctx2) {
return _st(window)._alert_(_st("Could not load package at:  ").__comma(url));
+}, function($ctx2) {$ctx2.fill(null, null, {})})}))]);
+_st($1)._ajax_options_($2,$3);
+return self}, function($ctx1) {$ctx1.fill(self,"loadPackage:prefix:", [packageName,aString], smalltalk.PackageLoader)})}
 }),
 smalltalk.PackageLoader);
 
@@ -644,9 +690,9 @@ selector: "loadPackages:prefix:",
 fn: function (aCollection,aString){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
_st(aCollection)._do_((function(each){
-return smalltalk.withContext(function($ctx2) { 
return _st(self)._loadPackage_prefix_(each,aString);
-})}));
-return self}, self, "loadPackages:prefix:", [aCollection,aString], smalltalk.PackageLoader)}
+return smalltalk.withContext(function($ctx2) {
return _st(self)._loadPackage_prefix_(each,aString);
+}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+return self}, function($ctx1) {$ctx1.fill(self,"loadPackages:prefix:", [aCollection,aString], smalltalk.PackageLoader)})}
 }),
 smalltalk.PackageLoader);
 
@@ -660,7 +706,7 @@ var self=this;
 return smalltalk.withContext(function($ctx1) { 
var $1;
 $1=_st(_st(self)._new())._loadPackages_prefix_(aCollection,aString);
 return $1;
-}, self, "loadPackages:prefix:", [aCollection,aString], smalltalk.PackageLoader.klass)}
+}, function($ctx1) {$ctx1.fill(self,"loadPackages:prefix:", [aCollection,aString], smalltalk.PackageLoader.klass)})}
 }),
 smalltalk.PackageLoader.klass);
 

+ 362 - 316
js/Importer-Exporter.js

@@ -7,34 +7,35 @@ selector: "nextChunk",
 category: 'reading',
 fn: function (){
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $1,$2,$3;
+var char,result,chunk;
+return smalltalk.withContext(function($ctx1) { 
var $1,$3,$5,$6,$4,$2;
 var $early={};
 try {
-$ctx1.char=nil;
-$ctx1.result=nil;
-$ctx1.chunk=nil;
-$ctx1.locals.result=_st("")._writeStream();
-_st((function(){
-return smalltalk.withContext(function($ctx2) { 
$ctx1.locals.char=_st(self["@stream"])._next();
-$ctx1.locals.char;
-return _st($ctx1.locals.char)._notNil();
-})}))._whileTrue_((function(){
-return smalltalk.withContext(function($ctx2) { 
$1=_st($ctx1.locals.char).__eq("!");
-if(smalltalk.assert($1)){
-$2=_st(_st(self["@stream"])._peek()).__eq("!");
-if(smalltalk.assert($2)){
-_st(self["@stream"])._next();
+result=_st("")._writeStream();
+$1=(function(){
+return smalltalk.withContext(function($ctx2) {
char=_st(self["@stream"])._next();
+char;
+return _st(char)._notNil();
+}, function($ctx2) {$ctx2.fill(null, null, {})})});
+$2=(function(){
+return smalltalk.withContext(function($ctx2) {
$3=_st(char).__eq("!");
+$4=(function(){
+return smalltalk.withContext(function($ctx3) {
$5=_st(_st(self["@stream"])._peek()).__eq("!");
+if(smalltalk.assert($5)){
+return _st(self["@stream"])._next();
 } else {
-$3=_st(_st($ctx1.locals.result)._contents())._trimBoth();
-throw $early=[$3];
-};
+$6=_st(_st(result)._contents())._trimBoth();
+throw $early=[$6];
 };
-return _st($ctx1.locals.result)._nextPut_($ctx1.locals.char);
-})}));
+}, function($ctx3) {$ctx3.fill(null, null, {})})});
+_st($3)._ifTrue_($4);
+return _st(result)._nextPut_(char);
+}, function($ctx2) {$ctx2.fill(null, null, {})})});
+_st($1)._whileTrue_($2);
 return nil;
 }
 catch(e) {if(e===$early)return e[0]; throw e}
-}, self, "nextChunk", [], smalltalk.ChunkParser)},
+}, function($ctx1) {$ctx1.fill(self,"nextChunk", [], smalltalk.ChunkParser)})},
 args: [],
 source: "nextChunk\x0a\x09\x22The chunk format (Smalltalk Interchange Format or Fileout format)\x0a\x09is a trivial format but can be a bit tricky to understand:\x0a\x09\x09- Uses the exclamation mark as delimiter of chunks.\x0a\x09\x09- Inside a chunk a normal exclamation mark must be doubled.\x0a\x09\x09- A non empty chunk must be a valid Smalltalk expression.\x0a\x09\x09- A chunk on top level with a preceding empty chunk is an instruction chunk:\x0a\x09\x09\x09- The object created by the expression then takes over reading chunks.\x0a\x0a\x09This metod returns next chunk as a String (trimmed), empty String (all whitespace) or nil.\x22\x0a\x0a\x09| char result chunk |\x0a\x09result := '' writeStream.\x0a        [char := stream next.\x0a        char notNil] whileTrue: [\x0a                 char = '!' ifTrue: [\x0a                         stream peek = '!'\x0a                                ifTrue: [stream next \x22skipping the escape double\x22]\x0a                                ifFalse: [^result contents trimBoth  \x22chunk end marker found\x22]].\x0a                 result nextPut: char].\x0a\x09^nil \x22a chunk needs to end with !\x22",
 messageSends: ["writeStream", "whileTrue:", "ifTrue:", "ifTrue:ifFalse:", "next", "trimBoth", "contents", "=", "peek", "nextPut:", "notNil"],
@@ -50,7 +51,7 @@ category: 'accessing',
 fn: function (aStream){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
self["@stream"]=aStream;
-return self}, self, "stream:", [aStream], smalltalk.ChunkParser)},
+return self}, function($ctx1) {$ctx1.fill(self,"stream:", [aStream], smalltalk.ChunkParser)})},
 args: ["aStream"],
 source: "stream: aStream\x0a\x09stream := aStream",
 messageSends: [],
@@ -69,7 +70,7 @@ var self=this;
 return smalltalk.withContext(function($ctx1) { 
var $1;
 $1=_st(_st(self)._new())._stream_(aStream);
 return $1;
-}, self, "on:", [aStream], smalltalk.ChunkParser.klass)},
+}, function($ctx1) {$ctx1.fill(self,"on:", [aStream], smalltalk.ChunkParser.klass)})},
 args: ["aStream"],
 source: "on: aStream\x0a\x09^self new stream: aStream",
 messageSends: ["stream:", "new"],
@@ -86,20 +87,22 @@ selector: "classNameFor:",
 category: 'private',
 fn: function (aClass){
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $2,$3,$1;
+return smalltalk.withContext(function($ctx1) { 
var $2,$3,$5,$4,$1;
 $2=_st(aClass)._isMetaclass();
-if(smalltalk.assert($2)){
-$1=_st(_st(_st(aClass)._instanceClass())._name()).__comma(".klass");
-} else {
-$3=_st(aClass)._isNil();
-if(smalltalk.assert($3)){
-$1="nil";
+$3=(function(){
+return smalltalk.withContext(function($ctx2) {
return _st(_st(_st(aClass)._instanceClass())._name()).__comma(".klass");
+}, function($ctx2) {$ctx2.fill(null, null, {})})});
+$4=(function(){
+return smalltalk.withContext(function($ctx2) {
$5=_st(aClass)._isNil();
+if(smalltalk.assert($5)){
+return "nil";
 } else {
-$1=_st(aClass)._name();
-};
+return _st(aClass)._name();
 };
+}, function($ctx2) {$ctx2.fill(null, null, {})})});
+$1=_st($2)._ifTrue_ifFalse_($3,$4);
 return $1;
-}, self, "classNameFor:", [aClass], smalltalk.Exporter)},
+}, function($ctx1) {$ctx1.fill(self,"classNameFor:", [aClass], smalltalk.Exporter)})},
 args: ["aClass"],
 source: "classNameFor: aClass\x0a\x09^aClass isMetaclass\x0a\x09    ifTrue: [aClass instanceClass name, '.klass']\x0a\x09    ifFalse: [\x0a\x09\x09aClass isNil\x0a\x09\x09    ifTrue: ['nil']\x0a\x09\x09    ifFalse: [aClass name]]",
 messageSends: ["ifTrue:ifFalse:", ",", "name", "instanceClass", "isNil", "isMetaclass"],
@@ -116,12 +119,12 @@ fn: function (){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
var $1;
 $1=_st((smalltalk.String || String))._streamContents_((function(stream){
-return smalltalk.withContext(function($ctx2) { 
return _st(_st(_st((smalltalk.Smalltalk || Smalltalk))._current())._packages())._do_((function(pkg){
-return smalltalk.withContext(function($ctx3) { 
return _st(stream)._nextPutAll_(_st(self)._exportPackage_(_st(pkg)._name()));
-})}));
-})}));
+return smalltalk.withContext(function($ctx2) {
return _st(_st(_st((smalltalk.Smalltalk || Smalltalk))._current())._packages())._do_((function(pkg){
+return smalltalk.withContext(function($ctx3) {
return _st(stream)._nextPutAll_(_st(self)._exportPackage_(_st(pkg)._name()));
+}, function($ctx3) {$ctx3.fill(null, null, {})})}));
+}, function($ctx2) {$ctx2.fill(null, null, {})})}));
 return $1;
-}, self, "exportAll", [], smalltalk.Exporter)},
+}, function($ctx1) {$ctx1.fill(self,"exportAll", [], smalltalk.Exporter)})},
 args: [],
 source: "exportAll\x0a    \x22Export all packages in the system.\x22\x0a\x0a    ^String streamContents: [:stream |\x0a    \x09Smalltalk current packages do: [:pkg |\x0a\x09\x09stream nextPutAll: (self exportPackage: pkg name)]]",
 messageSends: ["streamContents:", "do:", "nextPutAll:", "exportPackage:", "name", "packages", "current"],
@@ -138,13 +141,13 @@ fn: function (aClass){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
var $1;
 $1=_st((smalltalk.String || String))._streamContents_((function(stream){
-return smalltalk.withContext(function($ctx2) { 
_st(self)._exportDefinitionOf_on_(aClass,stream);
+return smalltalk.withContext(function($ctx2) {
_st(self)._exportDefinitionOf_on_(aClass,stream);
 _st(self)._exportMethodsOf_on_(aClass,stream);
 _st(self)._exportMetaDefinitionOf_on_(aClass,stream);
 return _st(self)._exportMethodsOf_on_(_st(aClass)._class(),stream);
-})}));
+}, function($ctx2) {$ctx2.fill(null, null, {})})}));
 return $1;
-}, self, "exportClass:", [aClass], smalltalk.Exporter)},
+}, function($ctx1) {$ctx1.fill(self,"exportClass:", [aClass], smalltalk.Exporter)})},
 args: ["aClass"],
 source: "exportClass: aClass\x0a\x09\x22Export a single class. Subclasses override these methods.\x22\x0a\x0a\x09^String streamContents: [:stream |\x0a\x09\x09self exportDefinitionOf: aClass on: stream.\x0a\x09\x09self exportMethodsOf: aClass on: stream.\x0a\x09\x09self exportMetaDefinitionOf: aClass on: stream.\x0a\x09\x09self exportMethodsOf: aClass class on: stream]",
 messageSends: ["streamContents:", "exportDefinitionOf:on:", "exportMethodsOf:on:", "exportMetaDefinitionOf:on:", "class"],
@@ -159,30 +162,33 @@ selector: "exportDefinitionOf:on:",
 category: 'private',
 fn: function (aClass,aStream){
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $1,$2,$3,$4;
-_st(aStream)._nextPutAll_("smalltalk.addClass(");
-_st(aStream)._nextPutAll_(_st(_st("'").__comma(_st(self)._classNameFor_(aClass))).__comma("', "));
-_st(aStream)._nextPutAll_(_st("smalltalk.").__comma(_st(self)._classNameFor_(_st(aClass)._superclass())));
-$1=_st(aStream)._nextPutAll_(", [");
+return smalltalk.withContext(function($ctx1) { 
var $1,$2,$3,$4,$5,$6,$7;
+$1=aStream;
+_st($1)._nextPutAll_("smalltalk.addClass(");
+_st($1)._nextPutAll_(_st(_st("'").__comma(_st(self)._classNameFor_(aClass))).__comma("', "));
+_st($1)._nextPutAll_(_st("smalltalk.").__comma(_st(self)._classNameFor_(_st(aClass)._superclass())));
+$2=_st($1)._nextPutAll_(", [");
 _st(_st(aClass)._instanceVariableNames())._do_separatedBy_((function(each){
-return smalltalk.withContext(function($ctx2) { 
return _st(aStream)._nextPutAll_(_st(_st("'").__comma(each)).__comma("'"));
-})}),(function(){
-return smalltalk.withContext(function($ctx2) { 
return _st(aStream)._nextPutAll_(", ");
-})}));
-_st(aStream)._nextPutAll_("], '");
-_st(aStream)._nextPutAll_(_st(_st(aClass)._category()).__comma("'"));
-$2=_st(aStream)._nextPutAll_(");");
-$3=_st(_st(aClass)._comment())._notEmpty();
-if(smalltalk.assert($3)){
-_st(aStream)._lf();
-_st(aStream)._nextPutAll_("smalltalk.");
-_st(aStream)._nextPutAll_(_st(self)._classNameFor_(aClass));
-_st(aStream)._nextPutAll_(".comment=");
-$4=_st(aStream)._nextPutAll_(_st(_st(aClass)._comment())._asJavascript());
-$4;
+return smalltalk.withContext(function($ctx2) {
return _st(aStream)._nextPutAll_(_st(_st("'").__comma(each)).__comma("'"));
+}, function($ctx2) {$ctx2.fill(null, null, {})})}),(function(){
+return smalltalk.withContext(function($ctx2) {
return _st(aStream)._nextPutAll_(", ");
+}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+$3=aStream;
+_st($3)._nextPutAll_("], '");
+_st($3)._nextPutAll_(_st(_st(aClass)._category()).__comma("'"));
+$4=_st($3)._nextPutAll_(");");
+$5=_st(_st(aClass)._comment())._notEmpty();
+if(smalltalk.assert($5)){
+$6=aStream;
+_st($6)._lf();
+_st($6)._nextPutAll_("smalltalk.");
+_st($6)._nextPutAll_(_st(self)._classNameFor_(aClass));
+_st($6)._nextPutAll_(".comment=");
+$7=_st($6)._nextPutAll_(_st(_st(aClass)._comment())._asJavascript());
+$7;
 };
 _st(aStream)._lf();
-return self}, self, "exportDefinitionOf:on:", [aClass,aStream], smalltalk.Exporter)},
+return self}, function($ctx1) {$ctx1.fill(self,"exportDefinitionOf:on:", [aClass,aStream], smalltalk.Exporter)})},
 args: ["aClass", "aStream"],
 source: "exportDefinitionOf: aClass on: aStream\x0a\x09aStream \x0a\x09    nextPutAll: 'smalltalk.addClass(';\x0a\x09    nextPutAll: '''', (self classNameFor: aClass), ''', ';\x0a\x09    nextPutAll: 'smalltalk.', (self classNameFor: aClass superclass);\x0a\x09    nextPutAll: ', ['.\x0a\x09aClass instanceVariableNames \x0a\x09    do: [:each | aStream nextPutAll: '''', each, '''']\x0a\x09    separatedBy: [aStream nextPutAll: ', '].\x0a\x09aStream\x09\x0a\x09    nextPutAll: '], ''';\x0a\x09    nextPutAll: aClass category, '''';\x0a\x09    nextPutAll: ');'.\x0a\x09aClass comment notEmpty ifTrue: [\x0a\x09    aStream \x0a\x09    \x09lf;\x0a\x09\x09nextPutAll: 'smalltalk.';\x0a\x09\x09nextPutAll: (self classNameFor: aClass);\x0a\x09\x09nextPutAll: '.comment=';\x0a\x09\x09nextPutAll: aClass comment asJavascript].\x0a\x09aStream lf",
 messageSends: ["nextPutAll:", ",", "classNameFor:", "superclass", "do:separatedBy:", "instanceVariableNames", "category", "ifTrue:", "lf", "asJavascript", "comment", "notEmpty"],
@@ -197,20 +203,21 @@ selector: "exportMetaDefinitionOf:on:",
 category: 'private',
 fn: function (aClass,aStream){
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $1,$2;
+return smalltalk.withContext(function($ctx1) { 
var $1,$2,$3;
 $1=_st(_st(_st(aClass)._class())._instanceVariableNames())._isEmpty();
 if(! smalltalk.assert($1)){
-_st(aStream)._nextPutAll_(_st("smalltalk.").__comma(_st(self)._classNameFor_(_st(aClass)._class())));
-$2=_st(aStream)._nextPutAll_(".iVarNames = [");
-$2;
+$2=aStream;
+_st($2)._nextPutAll_(_st("smalltalk.").__comma(_st(self)._classNameFor_(_st(aClass)._class())));
+$3=_st($2)._nextPutAll_(".iVarNames = [");
+$3;
 _st(_st(_st(aClass)._class())._instanceVariableNames())._do_separatedBy_((function(each){
-return smalltalk.withContext(function($ctx2) { 
return _st(aStream)._nextPutAll_(_st(_st("'").__comma(each)).__comma("'"));
-})}),(function(){
-return smalltalk.withContext(function($ctx2) { 
return _st(aStream)._nextPutAll_(",");
-})}));
+return smalltalk.withContext(function($ctx2) {
return _st(aStream)._nextPutAll_(_st(_st("'").__comma(each)).__comma("'"));
+}, function($ctx2) {$ctx2.fill(null, null, {})})}),(function(){
+return smalltalk.withContext(function($ctx2) {
return _st(aStream)._nextPutAll_(",");
+}, function($ctx2) {$ctx2.fill(null, null, {})})}));
 _st(aStream)._nextPutAll_(_st("];").__comma(_st((smalltalk.String || String))._lf()));
 };
-return self}, self, "exportMetaDefinitionOf:on:", [aClass,aStream], smalltalk.Exporter)},
+return self}, function($ctx1) {$ctx1.fill(self,"exportMetaDefinitionOf:on:", [aClass,aStream], smalltalk.Exporter)})},
 args: ["aClass", "aStream"],
 source: "exportMetaDefinitionOf: aClass on: aStream\x0a\x09aClass class instanceVariableNames isEmpty ifFalse: [\x0a\x09    aStream \x0a\x09\x09nextPutAll: 'smalltalk.', (self classNameFor: aClass class);\x0a\x09\x09nextPutAll: '.iVarNames = ['.\x0a\x09    aClass class instanceVariableNames\x0a\x09\x09do: [:each | aStream nextPutAll: '''', each, '''']\x0a\x09\x09separatedBy: [aStream nextPutAll: ','].\x0a\x09    aStream nextPutAll: '];', String lf]",
 messageSends: ["ifFalse:", "nextPutAll:", ",", "classNameFor:", "class", "do:separatedBy:", "instanceVariableNames", "lf", "isEmpty"],
@@ -225,34 +232,36 @@ selector: "exportMethod:of:on:",
 category: 'private',
 fn: function (aMethod,aClass,aStream){
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $1,$2;
-_st(aStream)._nextPutAll_("smalltalk.addMethod(");
-_st(aStream)._lf();
-_st(aStream)._nextPutAll_(_st(_st(_st(_st(aMethod)._selector())._asSelector())._asJavascript()).__comma(","));
-_st(aStream)._lf();
-_st(aStream)._nextPutAll_("smalltalk.method({");
-_st(aStream)._lf();
-_st(aStream)._nextPutAll_(_st(_st("selector: ").__comma(_st(_st(aMethod)._selector())._asJavascript())).__comma(","));
-_st(aStream)._lf();
-_st(aStream)._nextPutAll_(_st(_st("category: '").__comma(_st(aMethod)._category())).__comma("',"));
-_st(aStream)._lf();
-_st(aStream)._nextPutAll_(_st(_st("fn: ").__comma(_st(_st(aMethod)._fn())._compiledSource())).__comma(","));
-_st(aStream)._lf();
-_st(aStream)._nextPutAll_(_st(_st("args: ").__comma(_st(_st(aMethod)._arguments())._asJavascript())).__comma(","));
-_st(aStream)._lf();
-_st(aStream)._nextPutAll_(_st(_st("source: ").__comma(_st(_st(aMethod)._source())._asJavascript())).__comma(","));
-_st(aStream)._lf();
-_st(aStream)._nextPutAll_(_st(_st("messageSends: ").__comma(_st(_st(aMethod)._messageSends())._asJavascript())).__comma(","));
-_st(aStream)._lf();
-$1=_st(aStream)._nextPutAll_(_st("referencedClasses: ").__comma(_st(_st(aMethod)._referencedClasses())._asJavascript()));
-_st(aStream)._lf();
-_st(aStream)._nextPutAll_("}),");
-_st(aStream)._lf();
-_st(aStream)._nextPutAll_(_st("smalltalk.").__comma(_st(self)._classNameFor_(aClass)));
-_st(aStream)._nextPutAll_(");");
-_st(aStream)._lf();
-$2=_st(aStream)._lf();
-return self}, self, "exportMethod:of:on:", [aMethod,aClass,aStream], smalltalk.Exporter)},
+return smalltalk.withContext(function($ctx1) { 
var $1,$2,$3,$4;
+$1=aStream;
+_st($1)._nextPutAll_("smalltalk.addMethod(");
+_st($1)._lf();
+_st($1)._nextPutAll_(_st(_st(_st(_st(aMethod)._selector())._asSelector())._asJavascript()).__comma(","));
+_st($1)._lf();
+_st($1)._nextPutAll_("smalltalk.method({");
+_st($1)._lf();
+_st($1)._nextPutAll_(_st(_st("selector: ").__comma(_st(_st(aMethod)._selector())._asJavascript())).__comma(","));
+_st($1)._lf();
+_st($1)._nextPutAll_(_st(_st("category: '").__comma(_st(aMethod)._category())).__comma("',"));
+_st($1)._lf();
+_st($1)._nextPutAll_(_st(_st("fn: ").__comma(_st(_st(aMethod)._fn())._compiledSource())).__comma(","));
+_st($1)._lf();
+_st($1)._nextPutAll_(_st(_st("args: ").__comma(_st(_st(aMethod)._arguments())._asJavascript())).__comma(","));
+_st($1)._lf();
+_st($1)._nextPutAll_(_st(_st("source: ").__comma(_st(_st(aMethod)._source())._asJavascript())).__comma(","));
+_st($1)._lf();
+_st($1)._nextPutAll_(_st(_st("messageSends: ").__comma(_st(_st(aMethod)._messageSends())._asJavascript())).__comma(","));
+_st($1)._lf();
+$2=_st($1)._nextPutAll_(_st("referencedClasses: ").__comma(_st(_st(aMethod)._referencedClasses())._asJavascript()));
+$3=aStream;
+_st($3)._lf();
+_st($3)._nextPutAll_("}),");
+_st($3)._lf();
+_st($3)._nextPutAll_(_st("smalltalk.").__comma(_st(self)._classNameFor_(aClass)));
+_st($3)._nextPutAll_(");");
+_st($3)._lf();
+$4=_st($3)._lf();
+return self}, function($ctx1) {$ctx1.fill(self,"exportMethod:of:on:", [aMethod,aClass,aStream], smalltalk.Exporter)})},
 args: ["aMethod", "aClass", "aStream"],
 source: "exportMethod: aMethod of: aClass on: aStream\x0a\x09aStream \x0a\x09\x09nextPutAll: 'smalltalk.addMethod(';lf;\x0a\x09\x09nextPutAll: aMethod selector asSelector asJavascript, ',';lf;\x0a\x09\x09nextPutAll: 'smalltalk.method({';lf;\x0a\x09\x09nextPutAll: 'selector: ', aMethod selector asJavascript, ',';lf;\x0a\x09\x09nextPutAll: 'category: ''', aMethod category, ''',';lf;\x0a\x09\x09nextPutAll: 'fn: ', aMethod fn compiledSource, ',';lf;\x0a\x09\x09nextPutAll: 'args: ', aMethod arguments asJavascript, ','; lf;\x0a\x09\x09nextPutAll: 'source: ', aMethod source asJavascript, ',';lf;\x0a\x09\x09nextPutAll: 'messageSends: ', aMethod messageSends asJavascript, ',';lf;\x0a\x09\x09nextPutAll: 'referencedClasses: ', aMethod referencedClasses asJavascript.\x0a\x09aStream\x0a\x09\x09lf;\x0a\x09\x09nextPutAll: '}),';lf;\x0a\x09\x09nextPutAll: 'smalltalk.', (self classNameFor: aClass);\x0a\x09\x09nextPutAll: ');';lf;lf",
 messageSends: ["nextPutAll:", "lf", ",", "asJavascript", "asSelector", "selector", "category", "compiledSource", "fn", "arguments", "source", "messageSends", "referencedClasses", "classNameFor:"],
@@ -267,17 +276,19 @@ selector: "exportMethodsOf:on:",
 category: 'private',
 fn: function (aClass,aStream){
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $1;
-_st(_st(_st(_st(aClass)._methodDictionary())._values())._sorted_((function(a,b){
-return smalltalk.withContext(function($ctx2) { 
return _st(_st(a)._selector()).__lt_eq(_st(b)._selector());
-})})))._do_((function(each){
-return smalltalk.withContext(function($ctx2) { 
$1=_st(_st(each)._category())._match_("^\x5c*");
-if(! smalltalk.assert($1)){
+return smalltalk.withContext(function($ctx1) { 
var $1,$3,$2;
+$1=_st(_st(_st(aClass)._methodDictionary())._values())._sorted_((function(a,b){
+return smalltalk.withContext(function($ctx2) {
return _st(_st(a)._selector()).__lt_eq(_st(b)._selector());
+}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+$2=(function(each){
+return smalltalk.withContext(function($ctx2) {
$3=_st(_st(each)._category())._match_("^\x5c*");
+if(! smalltalk.assert($3)){
 return _st(self)._exportMethod_of_on_(each,aClass,aStream);
 };
-})}));
+}, function($ctx2) {$ctx2.fill(null, null, {})})});
+_st($1)._do_($2);
 _st(aStream)._lf();
-return self}, self, "exportMethodsOf:on:", [aClass,aStream], smalltalk.Exporter)},
+return self}, function($ctx1) {$ctx1.fill(self,"exportMethodsOf:on:", [aClass,aStream], smalltalk.Exporter)})},
 args: ["aClass", "aStream"],
 source: "exportMethodsOf: aClass on: aStream\x0a\x09\x22Issue #143: sort methods alphabetically\x22\x0a\x0a\x09((aClass methodDictionary values) sorted: [:a :b | a selector <= b selector]) do: [:each |\x0a\x09\x09(each category match: '^\x5c*') ifFalse: [\x0a\x09\x09\x09self exportMethod: each of: aClass on: aStream]].\x0a\x09aStream lf",
 messageSends: ["do:", "ifFalse:", "exportMethod:of:on:", "match:", "category", "sorted:", "<=", "selector", "values", "methodDictionary", "lf"],
@@ -292,19 +303,19 @@ selector: "exportPackage:",
 category: 'fileOut',
 fn: function (packageName){
 var self=this;
+var package_;
 return smalltalk.withContext(function($ctx1) { 
var $1;
-$ctx1.package=nil;
 $1=_st((smalltalk.String || String))._streamContents_((function(stream){
-return smalltalk.withContext(function($ctx2) { 
$ctx1.locals.package_=_st(_st((smalltalk.Smalltalk || Smalltalk))._current())._packageAt_(packageName);
-$ctx1.locals.package_;
-_st(self)._exportPackageDefinitionOf_on_($ctx1.locals.package_,stream);
-_st(_st(_st($ctx1.locals.package_)._sortedClasses())._asSet())._do_((function(each){
-return smalltalk.withContext(function($ctx3) { 
return _st(stream)._nextPutAll_(_st(self)._exportClass_(each));
-})}));
-return _st(self)._exportPackageExtensionsOf_on_($ctx1.locals.package_,stream);
-})}));
+return smalltalk.withContext(function($ctx2) {
package_=_st(_st((smalltalk.Smalltalk || Smalltalk))._current())._packageAt_(packageName);
+package_;
+_st(self)._exportPackageDefinitionOf_on_(package_,stream);
+_st(_st(_st(package_)._sortedClasses())._asSet())._do_((function(each){
+return smalltalk.withContext(function($ctx3) {
return _st(stream)._nextPutAll_(_st(self)._exportClass_(each));
+}, function($ctx3) {$ctx3.fill(null, null, {})})}));
+return _st(self)._exportPackageExtensionsOf_on_(package_,stream);
+}, function($ctx2) {$ctx2.fill(null, null, {})})}));
 return $1;
-}, self, "exportPackage:", [packageName], smalltalk.Exporter)},
+}, function($ctx1) {$ctx1.fill(self,"exportPackage:", [packageName], smalltalk.Exporter)})},
 args: ["packageName"],
 source: "exportPackage: packageName\x0a\x09\x22Export a given package by name.\x22\x0a\x0a\x09| package |\x0a\x09^String streamContents: [:stream |\x0a                package := Smalltalk current packageAt: packageName.\x0a                self exportPackageDefinitionOf: package on: stream.\x0a\x0a\x09\x09\x22Export classes in dependency order.\x0a\x09\x09Update (issue #171): Remove duplicates for export\x22\x0a\x09    \x09package sortedClasses asSet do: [:each |\x0a                        stream nextPutAll: (self exportClass: each)].\x0a\x09\x09self exportPackageExtensionsOf: package on: stream]",
 messageSends: ["streamContents:", "packageAt:", "current", "exportPackageDefinitionOf:on:", "do:", "nextPutAll:", "exportClass:", "asSet", "sortedClasses", "exportPackageExtensionsOf:on:"],
@@ -319,11 +330,12 @@ selector: "exportPackageDefinitionOf:on:",
 category: 'private',
 fn: function (package_,aStream){
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $1;
-_st(aStream)._nextPutAll_("smalltalk.addPackage(");
-$1=_st(aStream)._nextPutAll_(_st(_st(_st(_st("'").__comma(_st(package_)._name())).__comma("', ")).__comma(_st(package_)._propertiesAsJSON())).__comma(");"));
+return smalltalk.withContext(function($ctx1) { 
var $1,$2;
+$1=aStream;
+_st($1)._nextPutAll_("smalltalk.addPackage(");
+$2=_st($1)._nextPutAll_(_st(_st(_st(_st("'").__comma(_st(package_)._name())).__comma("', ")).__comma(_st(package_)._propertiesAsJSON())).__comma(");"));
 _st(aStream)._lf();
-return self}, self, "exportPackageDefinitionOf:on:", [package_,aStream], smalltalk.Exporter)},
+return self}, function($ctx1) {$ctx1.fill(self,"exportPackageDefinitionOf:on:", [package_,aStream], smalltalk.Exporter)})},
 args: ["package", "aStream"],
 source: "exportPackageDefinitionOf: package on: aStream\x0a\x09aStream \x0a\x09    nextPutAll: 'smalltalk.addPackage(';\x0a\x09    nextPutAll: '''', package name, ''', ', package propertiesAsJSON , ');'.\x0a\x09aStream lf",
 messageSends: ["nextPutAll:", ",", "propertiesAsJSON", "name", "lf"],
@@ -338,22 +350,28 @@ selector: "exportPackageExtensionsOf:on:",
 category: 'private',
 fn: function (package_,aStream){
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $1;
-$ctx1.name=nil;
-$ctx1.locals.name=_st(package_)._name();
-_st(_st((smalltalk.Package || Package))._sortedClasses_(_st(_st((smalltalk.Smalltalk || Smalltalk))._current())._classes()))._do_((function(each){
-return smalltalk.withContext(function($ctx2) { 
return _st([each,_st(each)._class()])._do_((function(aClass){
-return smalltalk.withContext(function($ctx3) { 
return _st(_st(_st(_st(aClass)._methodDictionary())._values())._sorted_((function(a,b){
-return smalltalk.withContext(function($ctx4) { 
return _st(_st(a)._selector()).__lt_eq(_st(b)._selector());
-})})))._do_((function(method){
-return smalltalk.withContext(function($ctx4) { 
$1=_st(_st(method)._category())._match_(_st("^\x5c*").__comma($ctx1.locals.name));
-if(smalltalk.assert($1)){
+var name;
+return smalltalk.withContext(function($ctx1) { 
var $1,$3,$5,$7,$6,$4,$2;
+name=_st(package_)._name();
+$1=_st((smalltalk.Package || Package))._sortedClasses_(_st(_st((smalltalk.Smalltalk || Smalltalk))._current())._classes());
+$2=(function(each){
+return smalltalk.withContext(function($ctx2) {
$3=[each,_st(each)._class()];
+$4=(function(aClass){
+return smalltalk.withContext(function($ctx3) {
$5=_st(_st(_st(aClass)._methodDictionary())._values())._sorted_((function(a,b){
+return smalltalk.withContext(function($ctx4) {
return _st(_st(a)._selector()).__lt_eq(_st(b)._selector());
+}, function($ctx4) {$ctx4.fill(null, null, {})})}));
+$6=(function(method){
+return smalltalk.withContext(function($ctx4) {
$7=_st(_st(method)._category())._match_(_st("^\x5c*").__comma(name));
+if(smalltalk.assert($7)){
 return _st(self)._exportMethod_of_on_(method,aClass,aStream);
 };
-})}));
-})}));
-})}));
-return self}, self, "exportPackageExtensionsOf:on:", [package_,aStream], smalltalk.Exporter)},
+}, function($ctx4) {$ctx4.fill(null, null, {})})});
+return _st($5)._do_($6);
+}, function($ctx3) {$ctx3.fill(null, null, {})})});
+return _st($3)._do_($4);
+}, function($ctx2) {$ctx2.fill(null, null, {})})});
+_st($1)._do_($2);
+return self}, function($ctx1) {$ctx1.fill(self,"exportPackageExtensionsOf:on:", [package_,aStream], smalltalk.Exporter)})},
 args: ["package", "aStream"],
 source: "exportPackageExtensionsOf: package on: aStream\x0a\x09\x22Issue #143: sort classes and methods alphabetically\x22\x0a\x0a\x09| name |\x0a\x09name := package name.\x0a\x09(Package sortedClasses: Smalltalk current classes) do: [:each |\x0a\x09\x09{each. each class} do: [:aClass | \x0a\x09\x09\x09((aClass methodDictionary values) sorted: [:a :b | a selector <= b selector]) do: [:method |\x0a\x09\x09\x09\x09(method category match: '^\x5c*', name) ifTrue: [\x0a\x09\x09\x09\x09\x09self exportMethod: method of: aClass on: aStream ]]]]",
 messageSends: ["name", "do:", "ifTrue:", "exportMethod:of:on:", "match:", ",", "category", "sorted:", "<=", "selector", "values", "methodDictionary", "class", "sortedClasses:", "classes", "current"],
@@ -374,7 +392,7 @@ var self=this;
 return smalltalk.withContext(function($ctx1) { 
var $1;
 $1=_st(_st(aString)._replace_with_("!","!!"))._trimBoth();
 return $1;
-}, self, "chunkEscape:", [aString], smalltalk.ChunkExporter)},
+}, function($ctx1) {$ctx1.fill(self,"chunkEscape:", [aString], smalltalk.ChunkExporter)})},
 args: ["aString"],
 source: "chunkEscape: aString\x0a\x09\x22Replace all occurrences of ! with !! and trim at both ends.\x22\x0a\x0a\x09^(aString replace: '!' with: '!!') trimBoth",
 messageSends: ["trimBoth", "replace:with:"],
@@ -389,20 +407,22 @@ selector: "classNameFor:",
 category: 'not yet classified',
 fn: function (aClass){
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $2,$3,$1;
+return smalltalk.withContext(function($ctx1) { 
var $2,$3,$5,$4,$1;
 $2=_st(aClass)._isMetaclass();
-if(smalltalk.assert($2)){
-$1=_st(_st(_st(aClass)._instanceClass())._name()).__comma(" class");
+$3=(function(){
+return smalltalk.withContext(function($ctx2) {
return _st(_st(_st(aClass)._instanceClass())._name()).__comma(" class");
+}, function($ctx2) {$ctx2.fill(null, null, {})})});
+$4=(function(){
+return smalltalk.withContext(function($ctx2) {
$5=_st(aClass)._isNil();
+if(smalltalk.assert($5)){
+return "nil";
 } else {
-$3=_st(aClass)._isNil();
-if(smalltalk.assert($3)){
-$1="nil";
-} else {
-$1=_st(aClass)._name();
-};
+return _st(aClass)._name();
 };
+}, function($ctx2) {$ctx2.fill(null, null, {})})});
+$1=_st($2)._ifTrue_ifFalse_($3,$4);
 return $1;
-}, self, "classNameFor:", [aClass], smalltalk.ChunkExporter)},
+}, function($ctx1) {$ctx1.fill(self,"classNameFor:", [aClass], smalltalk.ChunkExporter)})},
 args: ["aClass"],
 source: "classNameFor: aClass\x0a\x09^aClass isMetaclass\x0a\x09    ifTrue: [aClass instanceClass name, ' class']\x0a\x09    ifFalse: [\x0a\x09\x09aClass isNil\x0a\x09\x09    ifTrue: ['nil']\x0a\x09\x09    ifFalse: [aClass name]]",
 messageSends: ["ifTrue:ifFalse:", ",", "name", "instanceClass", "isNil", "isMetaclass"],
@@ -417,30 +437,33 @@ selector: "exportDefinitionOf:on:",
 category: 'not yet classified',
 fn: function (aClass,aStream){
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $1,$2,$3,$4;
-_st(aStream)._nextPutAll_(_st(self)._classNameFor_(_st(aClass)._superclass()));
-_st(aStream)._nextPutAll_(_st(" subclass: #").__comma(_st(self)._classNameFor_(aClass)));
-_st(aStream)._lf();
-$1=_st(aStream)._nextPutAll_("\x09instanceVariableNames: '");
+return smalltalk.withContext(function($ctx1) { 
var $1,$2,$3,$4,$5,$6,$7;
+$1=aStream;
+_st($1)._nextPutAll_(_st(self)._classNameFor_(_st(aClass)._superclass()));
+_st($1)._nextPutAll_(_st(" subclass: #").__comma(_st(self)._classNameFor_(aClass)));
+_st($1)._lf();
+$2=_st($1)._nextPutAll_("\x09instanceVariableNames: '");
 _st(_st(aClass)._instanceVariableNames())._do_separatedBy_((function(each){
-return smalltalk.withContext(function($ctx2) { 
return _st(aStream)._nextPutAll_(each);
-})}),(function(){
-return smalltalk.withContext(function($ctx2) { 
return _st(aStream)._nextPutAll_(" ");
-})}));
-_st(aStream)._nextPutAll_("'");
-_st(aStream)._lf();
-_st(aStream)._nextPutAll_(_st(_st("\x09package: '").__comma(_st(aClass)._category())).__comma("'!"));
-$2=_st(aStream)._lf();
-$3=_st(_st(aClass)._comment())._notEmpty();
-if(smalltalk.assert($3)){
-_st(aStream)._nextPutAll_(_st(_st("!").__comma(_st(self)._classNameFor_(aClass))).__comma(" commentStamp!"));
-_st(aStream)._lf();
-_st(aStream)._nextPutAll_(_st(_st(self)._chunkEscape_(_st(aClass)._comment())).__comma("!"));
-$4=_st(aStream)._lf();
-$4;
+return smalltalk.withContext(function($ctx2) {
return _st(aStream)._nextPutAll_(each);
+}, function($ctx2) {$ctx2.fill(null, null, {})})}),(function(){
+return smalltalk.withContext(function($ctx2) {
return _st(aStream)._nextPutAll_(" ");
+}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+$3=aStream;
+_st($3)._nextPutAll_("'");
+_st($3)._lf();
+_st($3)._nextPutAll_(_st(_st("\x09package: '").__comma(_st(aClass)._category())).__comma("'!"));
+$4=_st($3)._lf();
+$5=_st(_st(aClass)._comment())._notEmpty();
+if(smalltalk.assert($5)){
+$6=aStream;
+_st($6)._nextPutAll_(_st(_st("!").__comma(_st(self)._classNameFor_(aClass))).__comma(" commentStamp!"));
+_st($6)._lf();
+_st($6)._nextPutAll_(_st(_st(self)._chunkEscape_(_st(aClass)._comment())).__comma("!"));
+$7=_st($6)._lf();
+$7;
 };
 _st(aStream)._lf();
-return self}, self, "exportDefinitionOf:on:", [aClass,aStream], smalltalk.ChunkExporter)},
+return self}, function($ctx1) {$ctx1.fill(self,"exportDefinitionOf:on:", [aClass,aStream], smalltalk.ChunkExporter)})},
 args: ["aClass", "aStream"],
 source: "exportDefinitionOf: aClass on: aStream\x0a    \x22Chunk format.\x22\x0a\x0a    aStream \x0a        nextPutAll: (self classNameFor: aClass superclass);\x0a        nextPutAll: ' subclass: #', (self classNameFor: aClass); lf;\x0a        nextPutAll: '\x09instanceVariableNames: '''.\x0a    aClass instanceVariableNames \x0a        do: [:each | aStream nextPutAll: each]\x0a        separatedBy: [aStream nextPutAll: ' '].\x0a    aStream \x0a        nextPutAll: ''''; lf;\x0a        nextPutAll: '\x09package: ''', aClass category, '''!'; lf.\x0a    aClass comment notEmpty ifTrue: [\x0a        aStream \x0a        nextPutAll: '!', (self classNameFor: aClass), ' commentStamp!';lf;\x0a        nextPutAll: (self chunkEscape: aClass comment), '!';lf].\x0a    aStream lf",
 messageSends: ["nextPutAll:", "classNameFor:", "superclass", ",", "lf", "do:separatedBy:", "instanceVariableNames", "category", "ifTrue:", "chunkEscape:", "comment", "notEmpty"],
@@ -455,23 +478,25 @@ selector: "exportMetaDefinitionOf:on:",
 category: 'not yet classified',
 fn: function (aClass,aStream){
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $1,$2,$3;
+return smalltalk.withContext(function($ctx1) { 
var $1,$2,$3,$4,$5;
 $1=_st(_st(_st(aClass)._class())._instanceVariableNames())._isEmpty();
 if(! smalltalk.assert($1)){
-_st(aStream)._nextPutAll_(_st(self)._classNameFor_(_st(aClass)._class()));
-$2=_st(aStream)._nextPutAll_(" instanceVariableNames: '");
-$2;
-_st(_st(_st(aClass)._class())._instanceVariableNames())._do_separatedBy_((function(each){
-return smalltalk.withContext(function($ctx2) { 
return _st(aStream)._nextPutAll_(each);
-})}),(function(){
-return smalltalk.withContext(function($ctx2) { 
return _st(aStream)._nextPutAll_(" ");
-})}));
-_st(aStream)._nextPutAll_("'!");
-_st(aStream)._lf();
-$3=_st(aStream)._lf();
+$2=aStream;
+_st($2)._nextPutAll_(_st(self)._classNameFor_(_st(aClass)._class()));
+$3=_st($2)._nextPutAll_(" instanceVariableNames: '");
 $3;
+_st(_st(_st(aClass)._class())._instanceVariableNames())._do_separatedBy_((function(each){
+return smalltalk.withContext(function($ctx2) {
return _st(aStream)._nextPutAll_(each);
+}, function($ctx2) {$ctx2.fill(null, null, {})})}),(function(){
+return smalltalk.withContext(function($ctx2) {
return _st(aStream)._nextPutAll_(" ");
+}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+$4=aStream;
+_st($4)._nextPutAll_("'!");
+_st($4)._lf();
+$5=_st($4)._lf();
+$5;
 };
-return self}, self, "exportMetaDefinitionOf:on:", [aClass,aStream], smalltalk.ChunkExporter)},
+return self}, function($ctx1) {$ctx1.fill(self,"exportMetaDefinitionOf:on:", [aClass,aStream], smalltalk.ChunkExporter)})},
 args: ["aClass", "aStream"],
 source: "exportMetaDefinitionOf: aClass on: aStream\x0a\x0a\x09aClass class instanceVariableNames isEmpty ifFalse: [\x0a\x09\x09aStream \x0a\x09\x09    nextPutAll: (self classNameFor: aClass class);\x0a\x09\x09    nextPutAll: ' instanceVariableNames: '''.\x0a\x09\x09aClass class instanceVariableNames \x0a\x09\x09    do: [:each | aStream nextPutAll: each]\x0a\x09\x09    separatedBy: [aStream nextPutAll: ' '].\x0a\x09\x09aStream\x09\x0a\x09\x09    nextPutAll: '''!'; lf; lf]",
 messageSends: ["ifFalse:", "nextPutAll:", "classNameFor:", "class", "do:separatedBy:", "instanceVariableNames", "lf", "isEmpty"],
@@ -486,13 +511,14 @@ selector: "exportMethod:of:on:",
 category: 'not yet classified',
 fn: function (aMethod,aClass,aStream){
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $1;
-_st(aStream)._lf();
-_st(aStream)._lf();
-_st(aStream)._nextPutAll_(_st(self)._chunkEscape_(_st(aMethod)._source()));
-_st(aStream)._lf();
-$1=_st(aStream)._nextPutAll_("!");
-return self}, self, "exportMethod:of:on:", [aMethod,aClass,aStream], smalltalk.ChunkExporter)},
+return smalltalk.withContext(function($ctx1) { 
var $1,$2;
+$1=aStream;
+_st($1)._lf();
+_st($1)._lf();
+_st($1)._nextPutAll_(_st(self)._chunkEscape_(_st(aMethod)._source()));
+_st($1)._lf();
+$2=_st($1)._nextPutAll_("!");
+return self}, function($ctx1) {$ctx1.fill(self,"exportMethod:of:on:", [aMethod,aClass,aStream], smalltalk.ChunkExporter)})},
 args: ["aMethod", "aClass", "aStream"],
 source: "exportMethod: aMethod of: aClass on: aStream\x0a\x09aStream \x0a\x09\x09lf; lf; nextPutAll: (self chunkEscape: aMethod source); lf;\x0a\x09\x09nextPutAll: '!'",
 messageSends: ["lf", "nextPutAll:", "chunkEscape:", "source"],
@@ -507,18 +533,20 @@ selector: "exportMethods:category:of:on:",
 category: 'not yet classified',
 fn: function (methods,category,aClass,aStream){
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $1,$2;
-_st(aStream)._nextPutAll_(_st("!").__comma(_st(self)._classNameFor_(aClass)));
-$1=_st(aStream)._nextPutAll_(_st(_st(" methodsFor: '").__comma(category)).__comma("'!"));
+return smalltalk.withContext(function($ctx1) { 
var $1,$2,$3,$4;
+$1=aStream;
+_st($1)._nextPutAll_(_st("!").__comma(_st(self)._classNameFor_(aClass)));
+$2=_st($1)._nextPutAll_(_st(_st(" methodsFor: '").__comma(category)).__comma("'!"));
 _st(_st(methods)._sorted_((function(a,b){
-return smalltalk.withContext(function($ctx2) { 
return _st(_st(a)._selector()).__lt_eq(_st(b)._selector());
-})})))._do_((function(each){
-return smalltalk.withContext(function($ctx2) { 
return _st(self)._exportMethod_of_on_(each,aClass,aStream);
-})}));
-_st(aStream)._nextPutAll_(" !");
-_st(aStream)._lf();
-$2=_st(aStream)._lf();
-return self}, self, "exportMethods:category:of:on:", [methods,category,aClass,aStream], smalltalk.ChunkExporter)},
+return smalltalk.withContext(function($ctx2) {
return _st(_st(a)._selector()).__lt_eq(_st(b)._selector());
+}, function($ctx2) {$ctx2.fill(null, null, {})})})))._do_((function(each){
+return smalltalk.withContext(function($ctx2) {
return _st(self)._exportMethod_of_on_(each,aClass,aStream);
+}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+$3=aStream;
+_st($3)._nextPutAll_(" !");
+_st($3)._lf();
+$4=_st($3)._lf();
+return self}, function($ctx1) {$ctx1.fill(self,"exportMethods:category:of:on:", [methods,category,aClass,aStream], smalltalk.ChunkExporter)})},
 args: ["methods", "category", "aClass", "aStream"],
 source: "exportMethods: methods category: category of: aClass on: aStream\x0a\x09\x22Issue #143: sort methods alphabetically\x22\x0a\x0a\x09aStream\x0a\x09\x09nextPutAll: '!', (self classNameFor: aClass);\x0a\x09\x09nextPutAll: ' methodsFor: ''', category, '''!'.\x0a\x09\x09(methods sorted: [:a :b | a selector <= b selector]) do: [:each |\x0a\x09\x09\x09\x09self exportMethod: each of: aClass on: aStream].\x0a\x09aStream nextPutAll: ' !'; lf; lf",
 messageSends: ["nextPutAll:", ",", "classNameFor:", "do:", "exportMethod:of:on:", "sorted:", "<=", "selector", "lf"],
@@ -533,24 +561,25 @@ selector: "exportMethodsOf:on:",
 category: 'not yet classified',
 fn: function (aClass,aStream){
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $1;
-$ctx1.map=nil;
-$ctx1.locals.map=_st((smalltalk.Dictionary || Dictionary))._new();
-_st(aClass)._protocolsDo_((function(category,methods){
-return smalltalk.withContext(function($ctx2) { 
$1=_st(category)._match_("^\x5c*");
-if(! smalltalk.assert($1)){
-return _st($ctx1.locals.map)._at_put_(category,methods);
+var map;
+return smalltalk.withContext(function($ctx1) { 
var $1,$3,$2;
+map=_st((smalltalk.Dictionary || Dictionary))._new();
+$1=aClass;
+$2=(function(category,methods){
+return smalltalk.withContext(function($ctx2) {
$3=_st(category)._match_("^\x5c*");
+if(! smalltalk.assert($3)){
+return _st(map)._at_put_(category,methods);
 };
-})}));
-_st(_st(_st($ctx1.locals.map)._keys())._sorted_((function(a,b){
-return smalltalk.withContext(function($ctx2) { 
return _st(a).__lt_eq(b);
-})})))._do_((function(category){
-return smalltalk.withContext(function($ctx2) { 
$ctx2.methods=nil;
-$ctx2.locals.methods=_st($ctx1.locals.map)._at_(category);
-$ctx2.locals.methods;
-return _st(self)._exportMethods_category_of_on_($ctx2.locals.methods,category,aClass,aStream);
-})}));
-return self}, self, "exportMethodsOf:on:", [aClass,aStream], smalltalk.ChunkExporter)},
+}, function($ctx2) {$ctx2.fill(null, null, {})})});
+_st($1)._protocolsDo_($2);
+_st(_st(_st(map)._keys())._sorted_((function(a,b){
+return smalltalk.withContext(function($ctx2) {
return _st(a).__lt_eq(b);
+}, function($ctx2) {$ctx2.fill(null, null, {})})})))._do_((function(category){
+return smalltalk.withContext(function($ctx2) {
methods=_st(map)._at_(category);
+methods;
+return _st(self)._exportMethods_category_of_on_(methods,category,aClass,aStream);
+}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+return self}, function($ctx1) {$ctx1.fill(self,"exportMethodsOf:on:", [aClass,aStream], smalltalk.ChunkExporter)})},
 args: ["aClass", "aStream"],
 source: "exportMethodsOf: aClass on: aStream\x0a\x09\x22Issue #143: sort protocol alphabetically\x22\x0a\x0a\x09| map |\x0a\x09map := Dictionary new.\x0a\x09aClass protocolsDo: [:category :methods | \x0a\x09\x09(category match: '^\x5c*') ifFalse: [ map at: category put: methods ]].\x0a\x09(map keys sorted: [:a :b | a <= b ]) do: [:category | | methods |\x0a\x09\x09methods := map at: category.\x0a\x09\x09self\x0a\x09\x09\x09exportMethods: methods\x0a\x09\x09\x09category: category\x0a\x09\x09\x09of: aClass\x0a\x09\x09\x09on: aStream ]",
 messageSends: ["new", "protocolsDo:", "ifFalse:", "at:put:", "match:", "do:", "at:", "exportMethods:category:of:on:", "sorted:", "<=", "keys"],
@@ -565,10 +594,11 @@ selector: "exportPackageDefinitionOf:on:",
 category: 'not yet classified',
 fn: function (package_,aStream){
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $1;
-_st(aStream)._nextPutAll_(_st(_st(_st(_st("Smalltalk current createPackage: '").__comma(_st(package_)._name())).__comma("' properties: ")).__comma(_st(_st(package_)._properties())._storeString())).__comma("!"));
-$1=_st(aStream)._lf();
-return self}, self, "exportPackageDefinitionOf:on:", [package_,aStream], smalltalk.ChunkExporter)},
+return smalltalk.withContext(function($ctx1) { 
var $1,$2;
+$1=aStream;
+_st($1)._nextPutAll_(_st(_st(_st(_st("Smalltalk current createPackage: '").__comma(_st(package_)._name())).__comma("' properties: ")).__comma(_st(_st(package_)._properties())._storeString())).__comma("!"));
+$2=_st($1)._lf();
+return self}, function($ctx1) {$ctx1.fill(self,"exportPackageDefinitionOf:on:", [package_,aStream], smalltalk.ChunkExporter)})},
 args: ["package", "aStream"],
 source: "exportPackageDefinitionOf: package on: aStream\x0a\x09\x22Chunk format.\x22\x0a\x0a\x09aStream \x0a\x09    nextPutAll: 'Smalltalk current createPackage: ''', package name,\x0a\x09\x09''' properties: ', package properties storeString, '!'; lf.",
 messageSends: ["nextPutAll:", ",", "storeString", "properties", "name", "lf"],
@@ -583,31 +613,35 @@ selector: "exportPackageExtensionsOf:on:",
 category: 'not yet classified',
 fn: function (package_,aStream){
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $1;
-$ctx1.name=nil;
-$ctx1.map=nil;
-$ctx1.locals.name=_st(package_)._name();
-_st(_st((smalltalk.Package || Package))._sortedClasses_(_st(_st((smalltalk.Smalltalk || Smalltalk))._current())._classes()))._do_((function(each){
-return smalltalk.withContext(function($ctx2) { 
return _st([each,_st(each)._class()])._do_((function(aClass){
-return smalltalk.withContext(function($ctx3) { 
$ctx1.locals.map=_st((smalltalk.Dictionary || Dictionary))._new();
-$ctx1.locals.map;
-_st(aClass)._protocolsDo_((function(category,methods){
-return smalltalk.withContext(function($ctx4) { 
$1=_st(category)._match_(_st("^\x5c*").__comma($ctx1.locals.name));
-if(smalltalk.assert($1)){
-return _st($ctx1.locals.map)._at_put_(category,methods);
+var name,map;
+return smalltalk.withContext(function($ctx1) { 
var $1,$3,$5,$7,$6,$4,$2;
+name=_st(package_)._name();
+$1=_st((smalltalk.Package || Package))._sortedClasses_(_st(_st((smalltalk.Smalltalk || Smalltalk))._current())._classes());
+$2=(function(each){
+return smalltalk.withContext(function($ctx2) {
$3=[each,_st(each)._class()];
+$4=(function(aClass){
+return smalltalk.withContext(function($ctx3) {
map=_st((smalltalk.Dictionary || Dictionary))._new();
+map;
+$5=aClass;
+$6=(function(category,methods){
+return smalltalk.withContext(function($ctx4) {
$7=_st(category)._match_(_st("^\x5c*").__comma(name));
+if(smalltalk.assert($7)){
+return _st(map)._at_put_(category,methods);
 };
-})}));
-return _st(_st(_st($ctx1.locals.map)._keys())._sorted_((function(a,b){
-return smalltalk.withContext(function($ctx4) { 
return _st(a).__lt_eq(b);
-})})))._do_((function(category){
-return smalltalk.withContext(function($ctx4) { 
$ctx4.methods=nil;
-$ctx4.locals.methods=_st($ctx1.locals.map)._at_(category);
-$ctx4.locals.methods;
-return _st(self)._exportMethods_category_of_on_($ctx4.locals.methods,category,aClass,aStream);
-})}));
-})}));
-})}));
-return self}, self, "exportPackageExtensionsOf:on:", [package_,aStream], smalltalk.ChunkExporter)},
+}, function($ctx4) {$ctx4.fill(null, null, {})})});
+_st($5)._protocolsDo_($6);
+return _st(_st(_st(map)._keys())._sorted_((function(a,b){
+return smalltalk.withContext(function($ctx4) {
return _st(a).__lt_eq(b);
+}, function($ctx4) {$ctx4.fill(null, null, {})})})))._do_((function(category){
+return smalltalk.withContext(function($ctx4) {
methods=_st(map)._at_(category);
+methods;
+return _st(self)._exportMethods_category_of_on_(methods,category,aClass,aStream);
+}, function($ctx4) {$ctx4.fill(null, null, {})})}));
+}, function($ctx3) {$ctx3.fill(null, null, {})})});
+return _st($3)._do_($4);
+}, function($ctx2) {$ctx2.fill(null, null, {})})});
+_st($1)._do_($2);
+return self}, function($ctx1) {$ctx1.fill(self,"exportPackageExtensionsOf:on:", [package_,aStream], smalltalk.ChunkExporter)})},
 args: ["package", "aStream"],
 source: "exportPackageExtensionsOf: package on: aStream\x0a\x09\x22We need to override this one too since we need to group\x0a\x09all methods in a given protocol under a leading methodsFor: chunk\x0a\x09for that class.\x22\x0a\x0a\x09\x22Issue #143: sort protocol alphabetically\x22\x0a\x0a\x09| name map |\x0a\x09name := package name.\x0a\x09(Package sortedClasses: Smalltalk current classes) do: [:each |\x0a\x09\x09{each. each class} do: [:aClass |\x0a\x09\x09\x09map := Dictionary new.\x0a\x09\x09\x09aClass protocolsDo: [:category :methods | \x0a\x09\x09\x09\x09(category match: '^\x5c*', name) ifTrue: [ map at: category put: methods ]].\x0a\x09\x09\x09(map keys sorted: [:a :b | a <= b ]) do: [:category | | methods |\x0a\x09\x09\x09\x09methods := map at: category.\x09\x0a\x09\x09\x09\x09self exportMethods: methods category: category of: aClass on: aStream ]]]",
 messageSends: ["name", "do:", "new", "protocolsDo:", "ifTrue:", "at:put:", "match:", ",", "at:", "exportMethods:category:of:on:", "sorted:", "<=", "keys", "class", "sortedClasses:", "classes", "current"],
@@ -625,21 +659,23 @@ selector: "exportDefinitionOf:on:",
 category: 'private',
 fn: function (aClass,aStream){
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $1,$2;
-_st(aStream)._nextPutAll_("smalltalk.addClass(");
-_st(aStream)._nextPutAll_(_st(_st("'").__comma(_st(self)._classNameFor_(aClass))).__comma("', "));
-_st(aStream)._nextPutAll_(_st("smalltalk.").__comma(_st(self)._classNameFor_(_st(aClass)._superclass())));
-$1=_st(aStream)._nextPutAll_(", [");
+return smalltalk.withContext(function($ctx1) { 
var $1,$2,$3,$4;
+$1=aStream;
+_st($1)._nextPutAll_("smalltalk.addClass(");
+_st($1)._nextPutAll_(_st(_st("'").__comma(_st(self)._classNameFor_(aClass))).__comma("', "));
+_st($1)._nextPutAll_(_st("smalltalk.").__comma(_st(self)._classNameFor_(_st(aClass)._superclass())));
+$2=_st($1)._nextPutAll_(", [");
 _st(_st(aClass)._instanceVariableNames())._do_separatedBy_((function(each){
-return smalltalk.withContext(function($ctx2) { 
return _st(aStream)._nextPutAll_(_st(_st("'").__comma(each)).__comma("'"));
-})}),(function(){
-return smalltalk.withContext(function($ctx2) { 
return _st(aStream)._nextPutAll_(", ");
-})}));
-_st(aStream)._nextPutAll_("], '");
-_st(aStream)._nextPutAll_(_st(_st(aClass)._category()).__comma("'"));
-$2=_st(aStream)._nextPutAll_(");");
-_st(aStream)._lf();
-return self}, self, "exportDefinitionOf:on:", [aClass,aStream], smalltalk.StrippedExporter)},
+return smalltalk.withContext(function($ctx2) {
return _st(aStream)._nextPutAll_(_st(_st("'").__comma(each)).__comma("'"));
+}, function($ctx2) {$ctx2.fill(null, null, {})})}),(function(){
+return smalltalk.withContext(function($ctx2) {
return _st(aStream)._nextPutAll_(", ");
+}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+$3=aStream;
+_st($3)._nextPutAll_("], '");
+_st($3)._nextPutAll_(_st(_st(aClass)._category()).__comma("'"));
+$4=_st($3)._nextPutAll_(");");
+_st(aStream)._lf();
+return self}, function($ctx1) {$ctx1.fill(self,"exportDefinitionOf:on:", [aClass,aStream], smalltalk.StrippedExporter)})},
 args: ["aClass", "aStream"],
 source: "exportDefinitionOf: aClass on: aStream\x0a\x09aStream \x0a\x09    nextPutAll: 'smalltalk.addClass(';\x0a\x09    nextPutAll: '''', (self classNameFor: aClass), ''', ';\x0a\x09    nextPutAll: 'smalltalk.', (self classNameFor: aClass superclass);\x0a\x09    nextPutAll: ', ['.\x0a\x09aClass instanceVariableNames \x0a\x09    do: [:each | aStream nextPutAll: '''', each, '''']\x0a\x09    separatedBy: [aStream nextPutAll: ', '].\x0a\x09aStream\x09\x0a\x09    nextPutAll: '], ''';\x0a\x09    nextPutAll: aClass category, '''';\x0a\x09    nextPutAll: ');'.\x0a\x09aStream lf",
 messageSends: ["nextPutAll:", ",", "classNameFor:", "superclass", "do:separatedBy:", "instanceVariableNames", "category", "lf"],
@@ -654,24 +690,25 @@ selector: "exportMethod:of:on:",
 category: 'private',
 fn: function (aMethod,aClass,aStream){
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $1;
-_st(aStream)._nextPutAll_("smalltalk.addMethod(");
-_st(aStream)._lf();
-_st(aStream)._nextPutAll_(_st(_st(_st(_st(aMethod)._selector())._asSelector())._asJavascript()).__comma(","));
-_st(aStream)._lf();
-_st(aStream)._nextPutAll_("smalltalk.method({");
-_st(aStream)._lf();
-_st(aStream)._nextPutAll_(_st(_st("selector: ").__comma(_st(_st(aMethod)._selector())._asJavascript())).__comma(","));
-_st(aStream)._lf();
-_st(aStream)._nextPutAll_(_st("fn: ").__comma(_st(_st(aMethod)._fn())._compiledSource()));
-_st(aStream)._lf();
-_st(aStream)._nextPutAll_("}),");
-_st(aStream)._lf();
-_st(aStream)._nextPutAll_(_st("smalltalk.").__comma(_st(self)._classNameFor_(aClass)));
-_st(aStream)._nextPutAll_(");");
-_st(aStream)._lf();
-$1=_st(aStream)._lf();
-return self}, self, "exportMethod:of:on:", [aMethod,aClass,aStream], smalltalk.StrippedExporter)},
+return smalltalk.withContext(function($ctx1) { 
var $1,$2;
+$1=aStream;
+_st($1)._nextPutAll_("smalltalk.addMethod(");
+_st($1)._lf();
+_st($1)._nextPutAll_(_st(_st(_st(_st(aMethod)._selector())._asSelector())._asJavascript()).__comma(","));
+_st($1)._lf();
+_st($1)._nextPutAll_("smalltalk.method({");
+_st($1)._lf();
+_st($1)._nextPutAll_(_st(_st("selector: ").__comma(_st(_st(aMethod)._selector())._asJavascript())).__comma(","));
+_st($1)._lf();
+_st($1)._nextPutAll_(_st("fn: ").__comma(_st(_st(aMethod)._fn())._compiledSource()));
+_st($1)._lf();
+_st($1)._nextPutAll_("}),");
+_st($1)._lf();
+_st($1)._nextPutAll_(_st("smalltalk.").__comma(_st(self)._classNameFor_(aClass)));
+_st($1)._nextPutAll_(");");
+_st($1)._lf();
+$2=_st($1)._lf();
+return self}, function($ctx1) {$ctx1.fill(self,"exportMethod:of:on:", [aMethod,aClass,aStream], smalltalk.StrippedExporter)})},
 args: ["aMethod", "aClass", "aStream"],
 source: "exportMethod: aMethod of: aClass on: aStream\x0a\x09aStream \x0a\x09\x09nextPutAll: 'smalltalk.addMethod(';lf;\x0a\x09\x09nextPutAll: aMethod selector asSelector asJavascript, ',';lf;\x0a\x09\x09nextPutAll: 'smalltalk.method({';lf;\x0a\x09\x09nextPutAll: 'selector: ', aMethod selector asJavascript, ',';lf;\x0a\x09\x09nextPutAll: 'fn: ', aMethod fn compiledSource;lf;\x0a\x09\x09nextPutAll: '}),';lf;\x0a\x09\x09nextPutAll: 'smalltalk.', (self classNameFor: aClass);\x0a\x09\x09nextPutAll: ');';lf;lf",
 messageSends: ["nextPutAll:", "lf", ",", "asJavascript", "asSelector", "selector", "compiledSource", "fn", "classNameFor:"],
@@ -689,33 +726,35 @@ selector: "import:",
 category: 'fileIn',
 fn: function (aStream){
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $1;
-$ctx1.chunk=nil;
-$ctx1.result=nil;
-$ctx1.parser=nil;
-$ctx1.lastEmpty=nil;
-$ctx1.locals.parser=_st((smalltalk.ChunkParser || ChunkParser))._on_(aStream);
-$ctx1.locals.lastEmpty=false;
-_st((function(){
-return smalltalk.withContext(function($ctx2) { 
$ctx1.locals.chunk=_st($ctx1.locals.parser)._nextChunk();
-$ctx1.locals.chunk;
-return _st($ctx1.locals.chunk)._isNil();
-})}))._whileFalse_((function(){
-return smalltalk.withContext(function($ctx2) { 
$1=_st($ctx1.locals.chunk)._isEmpty();
-if(smalltalk.assert($1)){
-$ctx1.locals.lastEmpty=true;
-return $ctx1.locals.lastEmpty;
-} else {
-$ctx1.locals.result=_st(_st((smalltalk.Compiler || Compiler))._new())._evaluateExpression_($ctx1.locals.chunk);
-$ctx1.locals.result;
-if(smalltalk.assert($ctx1.locals.lastEmpty)){
-$ctx1.locals.lastEmpty=false;
-$ctx1.locals.lastEmpty;
-return _st($ctx1.locals.result)._scanFrom_($ctx1.locals.parser);
+var chunk,result,parser,lastEmpty;
+return smalltalk.withContext(function($ctx1) { 
var $1,$3,$4,$6,$5,$2;
+parser=_st((smalltalk.ChunkParser || ChunkParser))._on_(aStream);
+lastEmpty=false;
+$1=(function(){
+return smalltalk.withContext(function($ctx2) {
chunk=_st(parser)._nextChunk();
+chunk;
+return _st(chunk)._isNil();
+}, function($ctx2) {$ctx2.fill(null, null, {})})});
+$2=(function(){
+return smalltalk.withContext(function($ctx2) {
$3=_st(chunk)._isEmpty();
+$4=(function(){
+return smalltalk.withContext(function($ctx3) {
lastEmpty=true;
+return lastEmpty;
+}, function($ctx3) {$ctx3.fill(null, null, {})})});
+$5=(function(){
+return smalltalk.withContext(function($ctx3) {
result=_st(_st((smalltalk.Compiler || Compiler))._new())._evaluateExpression_(chunk);
+result;
+$6=lastEmpty;
+if(smalltalk.assert($6)){
+lastEmpty=false;
+lastEmpty;
+return _st(result)._scanFrom_(parser);
 };
-};
-})}));
-return self}, self, "import:", [aStream], smalltalk.Importer)},
+}, function($ctx3) {$ctx3.fill(null, null, {})})});
+return _st($3)._ifTrue_ifFalse_($4,$5);
+}, function($ctx2) {$ctx2.fill(null, null, {})})});
+_st($1)._whileFalse_($2);
+return self}, function($ctx1) {$ctx1.fill(self,"import:", [aStream], smalltalk.Importer)})},
 args: ["aStream"],
 source: "import: aStream\x0a    | chunk result parser lastEmpty |\x0a    parser := ChunkParser on: aStream.\x0a    lastEmpty := false.\x0a    [chunk := parser nextChunk.\x0a     chunk isNil] whileFalse: [\x0a        chunk isEmpty\x0a       \x09\x09ifTrue: [lastEmpty := true]\x0a       \x09\x09ifFalse: [\x0a        \x09\x09result := Compiler new evaluateExpression: chunk.\x0a        \x09\x09lastEmpty \x0a            \x09\x09\x09ifTrue: [\x0a                                  \x09lastEmpty := false.\x0a                                  \x09result scanFrom: parser]]]",
 messageSends: ["on:", "whileFalse:", "ifTrue:ifFalse:", "evaluateExpression:", "new", "ifTrue:", "scanFrom:", "isEmpty", "nextChunk", "isNil"],
@@ -738,7 +777,7 @@ $1=_st((smalltalk.Package || Package))._named_(packageName);
 _st($1)._setupClasses();
 _st($1)._commitPathJs_(_st(_st("/").__comma(aString)).__comma("/js"));
 $2=_st($1)._commitPathSt_(_st(_st("/").__comma(aString)).__comma("/st"));
-return self}, self, "initializePackageNamed:prefix:", [packageName,aString], smalltalk.PackageLoader)},
+return self}, function($ctx1) {$ctx1.fill(self,"initializePackageNamed:prefix:", [packageName,aString], smalltalk.PackageLoader)})},
 args: ["packageName", "aString"],
 source: "initializePackageNamed: packageName prefix: aString\x0a\x0a\x09(Package named: packageName) \x0a    \x09setupClasses;\x0a        commitPathJs: '/', aString, '/js';\x0a        commitPathSt: '/', aString, '/st'",
 messageSends: ["setupClasses", "named:", "commitPathJs:", ",", "commitPathSt:"],
@@ -753,18 +792,25 @@ selector: "loadPackage:prefix:",
 category: 'laoding',
 fn: function (packageName,aString){
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $1;
-$ctx1.url=nil;
-$ctx1.locals.url=_st(_st(_st(_st("/").__comma(aString)).__comma("/js/")).__comma(packageName)).__comma(".js");
-_st(jQuery)._ajax_options_($ctx1.locals.url,smalltalk.HashedCollection._fromPairs_([_st("type").__minus_gt("GET"),_st("dataType").__minus_gt("script"),_st("complete").__minus_gt((function(jqXHR,textStatus){
-return smalltalk.withContext(function($ctx2) { 
$1=_st(_st(jqXHR)._readyState()).__eq((4));
-if(smalltalk.assert($1)){
+var url;
+return smalltalk.withContext(function($ctx1) { 
var $1,$2,$4,$5,$8,$7,$6,$3;
+url=_st(_st(_st(_st("/").__comma(aString)).__comma("/js/")).__comma(packageName)).__comma(".js");
+$1=jQuery;
+$2=url;
+$4=_st("type").__minus_gt("GET");
+$5=_st("dataType").__minus_gt("script");
+$7=(function(jqXHR,textStatus){
+return smalltalk.withContext(function($ctx2) {
$8=_st(_st(jqXHR)._readyState()).__eq((4));
+if(smalltalk.assert($8)){
 return _st(self)._initializePackageNamed_prefix_(packageName,aString);
 };
-})})),_st("error").__minus_gt((function(){
-return smalltalk.withContext(function($ctx2) { 
return _st(window)._alert_(_st("Could not load package at:  ").__comma($ctx1.locals.url));
-})}))]));
-return self}, self, "loadPackage:prefix:", [packageName,aString], smalltalk.PackageLoader)},
+}, function($ctx2) {$ctx2.fill(null, null, {})})});
+$6=_st("complete").__minus_gt($7);
+$3=smalltalk.HashedCollection._fromPairs_([$4,$5,$6,_st("error").__minus_gt((function(){
+return smalltalk.withContext(function($ctx2) {
return _st(window)._alert_(_st("Could not load package at:  ").__comma(url));
+}, function($ctx2) {$ctx2.fill(null, null, {})})}))]);
+_st($1)._ajax_options_($2,$3);
+return self}, function($ctx1) {$ctx1.fill(self,"loadPackage:prefix:", [packageName,aString], smalltalk.PackageLoader)})},
 args: ["packageName", "aString"],
 source: "loadPackage: packageName prefix: aString\x09\x0a\x09| url |\x0a    url := '/', aString, '/js/', packageName, '.js'.\x0a\x09jQuery \x0a\x09\x09ajax: url\x0a        options: #{\x0a\x09\x09\x09'type' -> 'GET'.\x0a\x09\x09\x09'dataType' -> 'script'.\x0a    \x09\x09'complete' -> [ :jqXHR :textStatus | \x0a\x09\x09\x09\x09jqXHR readyState = 4 \x0a                \x09ifTrue: [ self initializePackageNamed: packageName prefix: aString ] ].\x0a\x09\x09\x09'error' -> [ window alert: 'Could not load package at:  ', url ]\x0a\x09\x09}",
 messageSends: [",", "ajax:options:", "->", "ifTrue:", "initializePackageNamed:prefix:", "=", "readyState", "alert:"],
@@ -780,9 +826,9 @@ category: 'laoding',
 fn: function (aCollection,aString){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
_st(aCollection)._do_((function(each){
-return smalltalk.withContext(function($ctx2) { 
return _st(self)._loadPackage_prefix_(each,aString);
-})}));
-return self}, self, "loadPackages:prefix:", [aCollection,aString], smalltalk.PackageLoader)},
+return smalltalk.withContext(function($ctx2) {
return _st(self)._loadPackage_prefix_(each,aString);
+}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+return self}, function($ctx1) {$ctx1.fill(self,"loadPackages:prefix:", [aCollection,aString], smalltalk.PackageLoader)})},
 args: ["aCollection", "aString"],
 source: "loadPackages: aCollection prefix: aString\x0a\x09aCollection do: [ :each |\x0a    \x09self loadPackage: each prefix: aString ]",
 messageSends: ["do:", "loadPackage:prefix:"],
@@ -801,7 +847,7 @@ var self=this;
 return smalltalk.withContext(function($ctx1) { 
var $1;
 $1=_st(_st(self)._new())._loadPackages_prefix_(aCollection,aString);
 return $1;
-}, self, "loadPackages:prefix:", [aCollection,aString], smalltalk.PackageLoader.klass)},
+}, function($ctx1) {$ctx1.fill(self,"loadPackages:prefix:", [aCollection,aString], smalltalk.PackageLoader.klass)})},
 args: ["aCollection", "aString"],
 source: "loadPackages: aCollection prefix: aString\x0a\x09^ self new loadPackages: aCollection prefix: aString",
 messageSends: ["loadPackages:prefix:", "new"],

+ 33 - 24
js/Kernel-Announcements.deploy.js

@@ -6,8 +6,10 @@ smalltalk.method({
 selector: "announcementClass",
 fn: function (){
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
return self["@announcementClass"];
-}, self, "announcementClass", [], smalltalk.AnnouncementSubscription)}
+return smalltalk.withContext(function($ctx1) { 
var $1;
+$1=self["@announcementClass"];
+return $1;
+}, function($ctx1) {$ctx1.fill(self,"announcementClass", [], smalltalk.AnnouncementSubscription)})}
 }),
 smalltalk.AnnouncementSubscription);
 
@@ -18,7 +20,7 @@ selector: "announcementClass:",
 fn: function (aClass){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
self["@announcementClass"]=aClass;
-return self}, self, "announcementClass:", [aClass], smalltalk.AnnouncementSubscription)}
+return self}, function($ctx1) {$ctx1.fill(self,"announcementClass:", [aClass], smalltalk.AnnouncementSubscription)})}
 }),
 smalltalk.AnnouncementSubscription);
 
@@ -28,8 +30,10 @@ smalltalk.method({
 selector: "block",
 fn: function (){
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
return self["@block"];
-}, self, "block", [], smalltalk.AnnouncementSubscription)}
+return smalltalk.withContext(function($ctx1) { 
var $1;
+$1=self["@block"];
+return $1;
+}, function($ctx1) {$ctx1.fill(self,"block", [], smalltalk.AnnouncementSubscription)})}
 }),
 smalltalk.AnnouncementSubscription);
 
@@ -40,7 +44,7 @@ selector: "block:",
 fn: function (aBlock){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
self["@block"]=aBlock;
-return self}, self, "block:", [aBlock], smalltalk.AnnouncementSubscription)}
+return self}, function($ctx1) {$ctx1.fill(self,"block:", [aBlock], smalltalk.AnnouncementSubscription)})}
 }),
 smalltalk.AnnouncementSubscription);
 
@@ -55,7 +59,7 @@ $1=_st(self)._handlesAnnouncement_(anAnnouncement);
 if(smalltalk.assert($1)){
 _st(_st(self)._block())._value_(anAnnouncement);
 };
-return self}, self, "deliver:", [anAnnouncement], smalltalk.AnnouncementSubscription)}
+return self}, function($ctx1) {$ctx1.fill(self,"deliver:", [anAnnouncement], smalltalk.AnnouncementSubscription)})}
 }),
 smalltalk.AnnouncementSubscription);
 
@@ -68,7 +72,7 @@ var self=this;
 return smalltalk.withContext(function($ctx1) { 
var $1;
 $1=_st(anAnnouncement)._isKindOf_(_st(self)._announcementClass());
 return $1;
-}, self, "handlesAnnouncement:", [anAnnouncement], smalltalk.AnnouncementSubscription)}
+}, function($ctx1) {$ctx1.fill(self,"handlesAnnouncement:", [anAnnouncement], smalltalk.AnnouncementSubscription)})}
 }),
 smalltalk.AnnouncementSubscription);
 
@@ -82,9 +86,9 @@ selector: "announce:",
 fn: function (anAnnouncement){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
_st(self["@subscriptions"])._do_((function(each){
-return smalltalk.withContext(function($ctx2) { 
return _st(each)._deliver_(anAnnouncement);
-})}));
-return self}, self, "announce:", [anAnnouncement], smalltalk.Announcer)}
+return smalltalk.withContext(function($ctx2) {
return _st(each)._deliver_(anAnnouncement);
+}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+return self}, function($ctx1) {$ctx1.fill(self,"announce:", [anAnnouncement], smalltalk.Announcer)})}
 }),
 smalltalk.Announcer);
 
@@ -96,7 +100,7 @@ fn: function (){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
smalltalk.Object.fn.prototype._initialize.apply(_st(self), []);
 self["@subscriptions"]=_st((smalltalk.Array || Array))._new();
-return self}, self, "initialize", [], smalltalk.Announcer)}
+return self}, function($ctx1) {$ctx1.fill(self,"initialize", [], smalltalk.Announcer)})}
 }),
 smalltalk.Announcer);
 
@@ -112,7 +116,7 @@ _st($1)._block_(aBlock);
 _st($1)._announcementClass_(aClass);
 $2=_st($1)._yourself();
 _st(self["@subscriptions"])._add_($2);
-return self}, self, "on:do:", [aClass,aBlock], smalltalk.Announcer)}
+return self}, function($ctx1) {$ctx1.fill(self,"on:do:", [aClass,aBlock], smalltalk.Announcer)})}
 }),
 smalltalk.Announcer);
 
@@ -127,15 +131,16 @@ smalltalk.method({
 selector: "current",
 fn: function (){
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $1;
-if(($receiver = self["@current"]) == nil || $receiver == undefined){
+return smalltalk.withContext(function($ctx1) { 
var $2,$1;
+$2=self["@current"];
+if(($receiver = $2) == nil || $receiver == undefined){
 self["@current"]=smalltalk.Announcer.klass.fn.prototype._new.apply(_st(self), []);
 $1=self["@current"];
 } else {
-$1=self["@current"];
+$1=$2;
 };
 return $1;
-}, self, "current", [], smalltalk.SystemAnnouncer.klass)}
+}, function($ctx1) {$ctx1.fill(self,"current", [], smalltalk.SystemAnnouncer.klass)})}
 }),
 smalltalk.SystemAnnouncer.klass);
 
@@ -146,7 +151,7 @@ selector: "new",
 fn: function (){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
_st(self)._shouldNotImplement();
-return self}, self, "new", [], smalltalk.SystemAnnouncer.klass)}
+return self}, function($ctx1) {$ctx1.fill(self,"new", [], smalltalk.SystemAnnouncer.klass)})}
 }),
 smalltalk.SystemAnnouncer.klass);
 
@@ -158,8 +163,10 @@ smalltalk.method({
 selector: "theClass",
 fn: function (){
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
return self["@theClass"];
-}, self, "theClass", [], smalltalk.SystemAnnouncement)}
+return smalltalk.withContext(function($ctx1) { 
var $1;
+$1=self["@theClass"];
+return $1;
+}, function($ctx1) {$ctx1.fill(self,"theClass", [], smalltalk.SystemAnnouncement)})}
 }),
 smalltalk.SystemAnnouncement);
 
@@ -170,7 +177,7 @@ selector: "theClass:",
 fn: function (aClass){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
self["@theClass"]=aClass;
-return self}, self, "theClass:", [aClass], smalltalk.SystemAnnouncement)}
+return self}, function($ctx1) {$ctx1.fill(self,"theClass:", [aClass], smalltalk.SystemAnnouncement)})}
 }),
 smalltalk.SystemAnnouncement);
 
@@ -198,8 +205,10 @@ smalltalk.method({
 selector: "method",
 fn: function (){
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
return self["@method"];
-}, self, "method", [], smalltalk.MethodAnnouncement)}
+return smalltalk.withContext(function($ctx1) { 
var $1;
+$1=self["@method"];
+return $1;
+}, function($ctx1) {$ctx1.fill(self,"method", [], smalltalk.MethodAnnouncement)})}
 }),
 smalltalk.MethodAnnouncement);
 
@@ -210,7 +219,7 @@ selector: "method:",
 fn: function (aCompiledMethod){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
self["@method"]=aCompiledMethod;
-return self}, self, "method:", [aCompiledMethod], smalltalk.MethodAnnouncement)}
+return self}, function($ctx1) {$ctx1.fill(self,"method:", [aCompiledMethod], smalltalk.MethodAnnouncement)})}
 }),
 smalltalk.MethodAnnouncement);
 

+ 33 - 24
js/Kernel-Announcements.js

@@ -7,8 +7,10 @@ selector: "announcementClass",
 category: 'accessing',
 fn: function (){
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
return self["@announcementClass"];
-}, self, "announcementClass", [], smalltalk.AnnouncementSubscription)},
+return smalltalk.withContext(function($ctx1) { 
var $1;
+$1=self["@announcementClass"];
+return $1;
+}, function($ctx1) {$ctx1.fill(self,"announcementClass", [], smalltalk.AnnouncementSubscription)})},
 args: [],
 source: "announcementClass\x0a\x09^announcementClass",
 messageSends: [],
@@ -24,7 +26,7 @@ category: 'accessing',
 fn: function (aClass){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
self["@announcementClass"]=aClass;
-return self}, self, "announcementClass:", [aClass], smalltalk.AnnouncementSubscription)},
+return self}, function($ctx1) {$ctx1.fill(self,"announcementClass:", [aClass], smalltalk.AnnouncementSubscription)})},
 args: ["aClass"],
 source: "announcementClass: aClass\x0a\x09announcementClass := aClass",
 messageSends: [],
@@ -39,8 +41,10 @@ selector: "block",
 category: 'accessing',
 fn: function (){
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
return self["@block"];
-}, self, "block", [], smalltalk.AnnouncementSubscription)},
+return smalltalk.withContext(function($ctx1) { 
var $1;
+$1=self["@block"];
+return $1;
+}, function($ctx1) {$ctx1.fill(self,"block", [], smalltalk.AnnouncementSubscription)})},
 args: [],
 source: "block\x0a\x09^block",
 messageSends: [],
@@ -56,7 +60,7 @@ category: 'accessing',
 fn: function (aBlock){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
self["@block"]=aBlock;
-return self}, self, "block:", [aBlock], smalltalk.AnnouncementSubscription)},
+return self}, function($ctx1) {$ctx1.fill(self,"block:", [aBlock], smalltalk.AnnouncementSubscription)})},
 args: ["aBlock"],
 source: "block: aBlock\x0a\x09block := aBlock",
 messageSends: [],
@@ -76,7 +80,7 @@ $1=_st(self)._handlesAnnouncement_(anAnnouncement);
 if(smalltalk.assert($1)){
 _st(_st(self)._block())._value_(anAnnouncement);
 };
-return self}, self, "deliver:", [anAnnouncement], smalltalk.AnnouncementSubscription)},
+return self}, function($ctx1) {$ctx1.fill(self,"deliver:", [anAnnouncement], smalltalk.AnnouncementSubscription)})},
 args: ["anAnnouncement"],
 source: "deliver: anAnnouncement\x0a\x09(self handlesAnnouncement: anAnnouncement)\x0a\x09\x09ifTrue: [self block value: anAnnouncement]",
 messageSends: ["ifTrue:", "value:", "block", "handlesAnnouncement:"],
@@ -94,7 +98,7 @@ var self=this;
 return smalltalk.withContext(function($ctx1) { 
var $1;
 $1=_st(anAnnouncement)._isKindOf_(_st(self)._announcementClass());
 return $1;
-}, self, "handlesAnnouncement:", [anAnnouncement], smalltalk.AnnouncementSubscription)},
+}, function($ctx1) {$ctx1.fill(self,"handlesAnnouncement:", [anAnnouncement], smalltalk.AnnouncementSubscription)})},
 args: ["anAnnouncement"],
 source: "handlesAnnouncement: anAnnouncement\x0a\x09^anAnnouncement isKindOf: self announcementClass",
 messageSends: ["isKindOf:", "announcementClass"],
@@ -113,9 +117,9 @@ category: 'announcing',
 fn: function (anAnnouncement){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
_st(self["@subscriptions"])._do_((function(each){
-return smalltalk.withContext(function($ctx2) { 
return _st(each)._deliver_(anAnnouncement);
-})}));
-return self}, self, "announce:", [anAnnouncement], smalltalk.Announcer)},
+return smalltalk.withContext(function($ctx2) {
return _st(each)._deliver_(anAnnouncement);
+}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+return self}, function($ctx1) {$ctx1.fill(self,"announce:", [anAnnouncement], smalltalk.Announcer)})},
 args: ["anAnnouncement"],
 source: "announce: anAnnouncement\x0a\x09subscriptions do: [:each |\x0a\x09\x09each deliver: anAnnouncement]",
 messageSends: ["do:", "deliver:"],
@@ -132,7 +136,7 @@ fn: function (){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
smalltalk.Object.fn.prototype._initialize.apply(_st(self), []);
 self["@subscriptions"]=_st((smalltalk.Array || Array))._new();
-return self}, self, "initialize", [], smalltalk.Announcer)},
+return self}, function($ctx1) {$ctx1.fill(self,"initialize", [], smalltalk.Announcer)})},
 args: [],
 source: "initialize\x0a\x09super initialize.\x0a\x09subscriptions := Array new",
 messageSends: ["initialize", "new"],
@@ -153,7 +157,7 @@ _st($1)._block_(aBlock);
 _st($1)._announcementClass_(aClass);
 $2=_st($1)._yourself();
 _st(self["@subscriptions"])._add_($2);
-return self}, self, "on:do:", [aClass,aBlock], smalltalk.Announcer)},
+return self}, function($ctx1) {$ctx1.fill(self,"on:do:", [aClass,aBlock], smalltalk.Announcer)})},
 args: ["aClass", "aBlock"],
 source: "on: aClass do: aBlock\x0a\x09subscriptions add: (AnnouncementSubscription new\x0a\x09\x09block: aBlock;\x0a\x09\x09announcementClass: aClass;\x0a\x09\x09yourself)",
 messageSends: ["add:", "block:", "new", "announcementClass:", "yourself"],
@@ -174,15 +178,16 @@ selector: "current",
 category: 'accessing',
 fn: function (){
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $1;
-if(($receiver = self["@current"]) == nil || $receiver == undefined){
+return smalltalk.withContext(function($ctx1) { 
var $2,$1;
+$2=self["@current"];
+if(($receiver = $2) == nil || $receiver == undefined){
 self["@current"]=smalltalk.Announcer.klass.fn.prototype._new.apply(_st(self), []);
 $1=self["@current"];
 } else {
-$1=self["@current"];
+$1=$2;
 };
 return $1;
-}, self, "current", [], smalltalk.SystemAnnouncer.klass)},
+}, function($ctx1) {$ctx1.fill(self,"current", [], smalltalk.SystemAnnouncer.klass)})},
 args: [],
 source: "current\x0a\x09^ current ifNil: [ current := super new ]",
 messageSends: ["ifNil:", "new"],
@@ -198,7 +203,7 @@ category: 'instance creation',
 fn: function (){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
_st(self)._shouldNotImplement();
-return self}, self, "new", [], smalltalk.SystemAnnouncer.klass)},
+return self}, function($ctx1) {$ctx1.fill(self,"new", [], smalltalk.SystemAnnouncer.klass)})},
 args: [],
 source: "new\x0a\x09self shouldNotImplement",
 messageSends: ["shouldNotImplement"],
@@ -216,8 +221,10 @@ selector: "theClass",
 category: 'accessing',
 fn: function (){
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
return self["@theClass"];
-}, self, "theClass", [], smalltalk.SystemAnnouncement)},
+return smalltalk.withContext(function($ctx1) { 
var $1;
+$1=self["@theClass"];
+return $1;
+}, function($ctx1) {$ctx1.fill(self,"theClass", [], smalltalk.SystemAnnouncement)})},
 args: [],
 source: "theClass\x0a\x09^ theClass",
 messageSends: [],
@@ -233,7 +240,7 @@ category: 'accessing',
 fn: function (aClass){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
self["@theClass"]=aClass;
-return self}, self, "theClass:", [aClass], smalltalk.SystemAnnouncement)},
+return self}, function($ctx1) {$ctx1.fill(self,"theClass:", [aClass], smalltalk.SystemAnnouncement)})},
 args: ["aClass"],
 source: "theClass: aClass\x0a\x09theClass := aClass",
 messageSends: [],
@@ -271,8 +278,10 @@ selector: "method",
 category: 'accessing',
 fn: function (){
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
return self["@method"];
-}, self, "method", [], smalltalk.MethodAnnouncement)},
+return smalltalk.withContext(function($ctx1) { 
var $1;
+$1=self["@method"];
+return $1;
+}, function($ctx1) {$ctx1.fill(self,"method", [], smalltalk.MethodAnnouncement)})},
 args: [],
 source: "method\x0a\x09^ method",
 messageSends: [],
@@ -288,7 +297,7 @@ category: 'accessing',
 fn: function (aCompiledMethod){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
self["@method"]=aCompiledMethod;
-return self}, self, "method:", [aCompiledMethod], smalltalk.MethodAnnouncement)},
+return self}, function($ctx1) {$ctx1.fill(self,"method:", [aCompiledMethod], smalltalk.MethodAnnouncement)})},
 args: ["aCompiledMethod"],
 source: "method: aCompiledMethod\x0a\x09method := aCompiledMethod",
 messageSends: [],

Filskillnaden har hållts tillbaka eftersom den är för stor
+ 218 - 208
js/Kernel-Classes.deploy.js


Filskillnaden har hållts tillbaka eftersom den är för stor
+ 218 - 208
js/Kernel-Classes.js


Filskillnaden har hållts tillbaka eftersom den är för stor
+ 237 - 209
js/Kernel-Collections.deploy.js


Filskillnaden har hållts tillbaka eftersom den är för stor
+ 237 - 209
js/Kernel-Collections.js


+ 50 - 45
js/Kernel-Exceptions.deploy.js

@@ -7,8 +7,7 @@ selector: "context",
 fn: function (){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
return self.context;
-;
-return self}, self, "context", [], smalltalk.Error)}
+return self}, function($ctx1) {$ctx1.fill(self,"context", [], smalltalk.Error)})}
 }),
 smalltalk.Error);
 
@@ -19,8 +18,7 @@ selector: "isSmalltalkError",
 fn: function (){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
return self.smalltalkError === true;
-;
-return self}, self, "isSmalltalkError", [], smalltalk.Error)}
+return self}, function($ctx1) {$ctx1.fill(self,"isSmalltalkError", [], smalltalk.Error)})}
 }),
 smalltalk.Error);
 
@@ -31,8 +29,7 @@ selector: "jsStack",
 fn: function (){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
return self.stack;
-;
-return self}, self, "jsStack", [], smalltalk.Error)}
+return self}, function($ctx1) {$ctx1.fill(self,"jsStack", [], smalltalk.Error)})}
 }),
 smalltalk.Error);
 
@@ -42,8 +39,10 @@ smalltalk.method({
 selector: "messageText",
 fn: function (){
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
return self["@messageText"];
-}, self, "messageText", [], smalltalk.Error)}
+return smalltalk.withContext(function($ctx1) { 
var $1;
+$1=self["@messageText"];
+return $1;
+}, function($ctx1) {$ctx1.fill(self,"messageText", [], smalltalk.Error)})}
 }),
 smalltalk.Error);
 
@@ -54,7 +53,7 @@ selector: "messageText:",
 fn: function (aString){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
self["@messageText"]=aString;
-return self}, self, "messageText:", [aString], smalltalk.Error)}
+return self}, function($ctx1) {$ctx1.fill(self,"messageText:", [aString], smalltalk.Error)})}
 }),
 smalltalk.Error);
 
@@ -65,8 +64,7 @@ selector: "signal",
 fn: function (){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
self.context = smalltalk.getThisContext(); self.smalltalkError = true; throw(self);
-;
-return self}, self, "signal", [], smalltalk.Error)}
+return self}, function($ctx1) {$ctx1.fill(self,"signal", [], smalltalk.Error)})}
 }),
 smalltalk.Error);
 
@@ -78,7 +76,7 @@ fn: function (aString){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
_st(self)._messageText_(aString);
 _st(self)._signal();
-return self}, self, "signal:", [aString], smalltalk.Error)}
+return self}, function($ctx1) {$ctx1.fill(self,"signal:", [aString], smalltalk.Error)})}
 }),
 smalltalk.Error);
 
@@ -92,7 +90,7 @@ var self=this;
 return smalltalk.withContext(function($ctx1) { 
var $1;
 $1=_st(_st(self)._new())._signal();
 return $1;
-}, self, "signal", [], smalltalk.Error.klass)}
+}, function($ctx1) {$ctx1.fill(self,"signal", [], smalltalk.Error.klass)})}
 }),
 smalltalk.Error.klass);
 
@@ -105,7 +103,7 @@ var self=this;
 return smalltalk.withContext(function($ctx1) { 
var $1;
 $1=_st(_st(self)._new())._signal_(aString);
 return $1;
-}, self, "signal:", [aString], smalltalk.Error.klass)}
+}, function($ctx1) {$ctx1.fill(self,"signal:", [aString], smalltalk.Error.klass)})}
 }),
 smalltalk.Error.klass);
 
@@ -117,8 +115,10 @@ smalltalk.method({
 selector: "message",
 fn: function (){
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
return self["@message"];
-}, self, "message", [], smalltalk.MessageNotUnderstood)}
+return smalltalk.withContext(function($ctx1) { 
var $1;
+$1=self["@message"];
+return $1;
+}, function($ctx1) {$ctx1.fill(self,"message", [], smalltalk.MessageNotUnderstood)})}
 }),
 smalltalk.MessageNotUnderstood);
 
@@ -129,7 +129,7 @@ selector: "message:",
 fn: function (aMessage){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
self["@message"]=aMessage;
-return self}, self, "message:", [aMessage], smalltalk.MessageNotUnderstood)}
+return self}, function($ctx1) {$ctx1.fill(self,"message:", [aMessage], smalltalk.MessageNotUnderstood)})}
 }),
 smalltalk.MessageNotUnderstood);
 
@@ -142,7 +142,7 @@ var self=this;
 return smalltalk.withContext(function($ctx1) { 
var $1;
 $1=_st(_st(_st(_st(self)._receiver())._asString()).__comma(" does not understand #")).__comma(_st(_st(self)._message())._selector());
 return $1;
-}, self, "messageText", [], smalltalk.MessageNotUnderstood)}
+}, function($ctx1) {$ctx1.fill(self,"messageText", [], smalltalk.MessageNotUnderstood)})}
 }),
 smalltalk.MessageNotUnderstood);
 
@@ -152,8 +152,10 @@ smalltalk.method({
 selector: "receiver",
 fn: function (){
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
return self["@receiver"];
-}, self, "receiver", [], smalltalk.MessageNotUnderstood)}
+return smalltalk.withContext(function($ctx1) { 
var $1;
+$1=self["@receiver"];
+return $1;
+}, function($ctx1) {$ctx1.fill(self,"receiver", [], smalltalk.MessageNotUnderstood)})}
 }),
 smalltalk.MessageNotUnderstood);
 
@@ -164,7 +166,7 @@ selector: "receiver:",
 fn: function (anObject){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
self["@receiver"]=anObject;
-return self}, self, "receiver:", [anObject], smalltalk.MessageNotUnderstood)}
+return self}, function($ctx1) {$ctx1.fill(self,"receiver:", [anObject], smalltalk.MessageNotUnderstood)})}
 }),
 smalltalk.MessageNotUnderstood);
 
@@ -177,8 +179,10 @@ smalltalk.method({
 selector: "object",
 fn: function (){
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
return self["@object"];
-}, self, "object", [], smalltalk.NonBooleanReceiver)}
+return smalltalk.withContext(function($ctx1) { 
var $1;
+$1=self["@object"];
+return $1;
+}, function($ctx1) {$ctx1.fill(self,"object", [], smalltalk.NonBooleanReceiver)})}
 }),
 smalltalk.NonBooleanReceiver);
 
@@ -189,7 +193,7 @@ selector: "object:",
 fn: function (anObject){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
self["@object"]=anObject;
-return self}, self, "object:", [anObject], smalltalk.NonBooleanReceiver)}
+return self}, function($ctx1) {$ctx1.fill(self,"object:", [anObject], smalltalk.NonBooleanReceiver)})}
 }),
 smalltalk.NonBooleanReceiver);
 
@@ -210,7 +214,7 @@ $1;
 _st(self)._logErrorContext_(_st(anError)._context());
 };
 _st(self)._logError_(anError);
-return self}, self, "handleError:", [anError], smalltalk.ErrorHandler)}
+return self}, function($ctx1) {$ctx1.fill(self,"handleError:", [anError], smalltalk.ErrorHandler)})}
 }),
 smalltalk.ErrorHandler);
 
@@ -221,7 +225,7 @@ selector: "log:",
 fn: function (aString){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
_st(console)._log_(aString);
-return self}, self, "log:", [aString], smalltalk.ErrorHandler)}
+return self}, function($ctx1) {$ctx1.fill(self,"log:", [aString], smalltalk.ErrorHandler)})}
 }),
 smalltalk.ErrorHandler);
 
@@ -239,7 +243,7 @@ $1;
 _st(self)._logContext_(_st(aContext)._home());
 };
 _st(self)._log_(_st(_st(_st(_st(aContext)._receiver())._asString()).__comma(">>")).__comma(_st(_st(aContext)._selector())._asString()));
-return self}, self, "logContext:", [aContext], smalltalk.ErrorHandler)}
+return self}, function($ctx1) {$ctx1.fill(self,"logContext:", [aContext], smalltalk.ErrorHandler)})}
 }),
 smalltalk.ErrorHandler);
 
@@ -250,7 +254,7 @@ selector: "logError:",
 fn: function (anError){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
_st(self)._log_(_st(anError)._messageText());
-return self}, self, "logError:", [anError], smalltalk.ErrorHandler)}
+return self}, function($ctx1) {$ctx1.fill(self,"logError:", [anError], smalltalk.ErrorHandler)})}
 }),
 smalltalk.ErrorHandler);
 
@@ -260,18 +264,18 @@ smalltalk.method({
 selector: "logErrorContext:",
 fn: function (aContext){
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $1;
-if(($receiver = aContext) == nil || $receiver == undefined){
-aContext;
+return smalltalk.withContext(function($ctx1) { 
var $1,$3,$2;
+$1=aContext;
+$2=(function(){
+return smalltalk.withContext(function($ctx2) {
$3=_st(aContext)._home();
+if(($receiver = $3) == nil || $receiver == undefined){
+return $3;
 } else {
-$1=_st(aContext)._home();
-if(($receiver = $1) == nil || $receiver == undefined){
-$1;
-} else {
-_st(self)._logContext_(_st(aContext)._home());
-};
+return _st(self)._logContext_(_st(aContext)._home());
 };
-return self}, self, "logErrorContext:", [aContext], smalltalk.ErrorHandler)}
+}, function($ctx2) {$ctx2.fill(null, null, {})})});
+_st($1)._ifNotNil_($2);
+return self}, function($ctx1) {$ctx1.fill(self,"logErrorContext:", [aContext], smalltalk.ErrorHandler)})}
 }),
 smalltalk.ErrorHandler);
 
@@ -283,15 +287,16 @@ smalltalk.method({
 selector: "current",
 fn: function (){
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $1;
-if(($receiver = self["@current"]) == nil || $receiver == undefined){
+return smalltalk.withContext(function($ctx1) { 
var $2,$1;
+$2=self["@current"];
+if(($receiver = $2) == nil || $receiver == undefined){
 self["@current"]=_st(self)._new();
 $1=self["@current"];
 } else {
-$1=self["@current"];
+$1=$2;
 };
 return $1;
-}, self, "current", [], smalltalk.ErrorHandler.klass)}
+}, function($ctx1) {$ctx1.fill(self,"current", [], smalltalk.ErrorHandler.klass)})}
 }),
 smalltalk.ErrorHandler.klass);
 
@@ -302,7 +307,7 @@ selector: "initialize",
 fn: function (){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
_st(self)._register();
-return self}, self, "initialize", [], smalltalk.ErrorHandler.klass)}
+return self}, function($ctx1) {$ctx1.fill(self,"initialize", [], smalltalk.ErrorHandler.klass)})}
 }),
 smalltalk.ErrorHandler.klass);
 
@@ -313,7 +318,7 @@ selector: "register",
 fn: function (){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
_st((smalltalk.ErrorHandler || ErrorHandler))._setCurrent_(_st(self)._new());
-return self}, self, "register", [], smalltalk.ErrorHandler.klass)}
+return self}, function($ctx1) {$ctx1.fill(self,"register", [], smalltalk.ErrorHandler.klass)})}
 }),
 smalltalk.ErrorHandler.klass);
 
@@ -324,7 +329,7 @@ selector: "setCurrent:",
 fn: function (anHandler){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
self["@current"]=anHandler;
-return self}, self, "setCurrent:", [anHandler], smalltalk.ErrorHandler.klass)}
+return self}, function($ctx1) {$ctx1.fill(self,"setCurrent:", [anHandler], smalltalk.ErrorHandler.klass)})}
 }),
 smalltalk.ErrorHandler.klass);
 

+ 50 - 45
js/Kernel-Exceptions.js

@@ -8,8 +8,7 @@ category: 'accessing',
 fn: function (){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
return self.context;
-;
-return self}, self, "context", [], smalltalk.Error)},
+return self}, function($ctx1) {$ctx1.fill(self,"context", [], smalltalk.Error)})},
 args: [],
 source: "context\x0a\x09<return self.context>",
 messageSends: [],
@@ -25,8 +24,7 @@ category: 'testing',
 fn: function (){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
return self.smalltalkError === true;
-;
-return self}, self, "isSmalltalkError", [], smalltalk.Error)},
+return self}, function($ctx1) {$ctx1.fill(self,"isSmalltalkError", [], smalltalk.Error)})},
 args: [],
 source: "isSmalltalkError\x0a\x09<return self.smalltalkError === true>",
 messageSends: [],
@@ -42,8 +40,7 @@ category: 'accessing',
 fn: function (){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
return self.stack;
-;
-return self}, self, "jsStack", [], smalltalk.Error)},
+return self}, function($ctx1) {$ctx1.fill(self,"jsStack", [], smalltalk.Error)})},
 args: [],
 source: "jsStack\x0a\x09<return self.stack>",
 messageSends: [],
@@ -58,8 +55,10 @@ selector: "messageText",
 category: 'accessing',
 fn: function (){
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
return self["@messageText"];
-}, self, "messageText", [], smalltalk.Error)},
+return smalltalk.withContext(function($ctx1) { 
var $1;
+$1=self["@messageText"];
+return $1;
+}, function($ctx1) {$ctx1.fill(self,"messageText", [], smalltalk.Error)})},
 args: [],
 source: "messageText\x0a\x09^messageText",
 messageSends: [],
@@ -75,7 +74,7 @@ category: 'accessing',
 fn: function (aString){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
self["@messageText"]=aString;
-return self}, self, "messageText:", [aString], smalltalk.Error)},
+return self}, function($ctx1) {$ctx1.fill(self,"messageText:", [aString], smalltalk.Error)})},
 args: ["aString"],
 source: "messageText: aString\x0a\x09messageText := aString",
 messageSends: [],
@@ -91,8 +90,7 @@ category: 'signaling',
 fn: function (){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
self.context = smalltalk.getThisContext(); self.smalltalkError = true; throw(self);
-;
-return self}, self, "signal", [], smalltalk.Error)},
+return self}, function($ctx1) {$ctx1.fill(self,"signal", [], smalltalk.Error)})},
 args: [],
 source: "signal\x0a\x09<self.context = smalltalk.getThisContext(); self.smalltalkError = true; throw(self)>",
 messageSends: [],
@@ -109,7 +107,7 @@ fn: function (aString){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
_st(self)._messageText_(aString);
 _st(self)._signal();
-return self}, self, "signal:", [aString], smalltalk.Error)},
+return self}, function($ctx1) {$ctx1.fill(self,"signal:", [aString], smalltalk.Error)})},
 args: ["aString"],
 source: "signal: aString\x0a\x09self messageText: aString.\x0a\x09self signal",
 messageSends: ["messageText:", "signal"],
@@ -128,7 +126,7 @@ var self=this;
 return smalltalk.withContext(function($ctx1) { 
var $1;
 $1=_st(_st(self)._new())._signal();
 return $1;
-}, self, "signal", [], smalltalk.Error.klass)},
+}, function($ctx1) {$ctx1.fill(self,"signal", [], smalltalk.Error.klass)})},
 args: [],
 source: "signal\x0a\x09^self new signal",
 messageSends: ["signal", "new"],
@@ -146,7 +144,7 @@ var self=this;
 return smalltalk.withContext(function($ctx1) { 
var $1;
 $1=_st(_st(self)._new())._signal_(aString);
 return $1;
-}, self, "signal:", [aString], smalltalk.Error.klass)},
+}, function($ctx1) {$ctx1.fill(self,"signal:", [aString], smalltalk.Error.klass)})},
 args: ["aString"],
 source: "signal: aString\x0a\x09    ^self new\x0a\x09\x09signal: aString",
 messageSends: ["signal:", "new"],
@@ -163,8 +161,10 @@ selector: "message",
 category: 'accessing',
 fn: function (){
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
return self["@message"];
-}, self, "message", [], smalltalk.MessageNotUnderstood)},
+return smalltalk.withContext(function($ctx1) { 
var $1;
+$1=self["@message"];
+return $1;
+}, function($ctx1) {$ctx1.fill(self,"message", [], smalltalk.MessageNotUnderstood)})},
 args: [],
 source: "message\x0a\x09^message",
 messageSends: [],
@@ -180,7 +180,7 @@ category: 'accessing',
 fn: function (aMessage){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
self["@message"]=aMessage;
-return self}, self, "message:", [aMessage], smalltalk.MessageNotUnderstood)},
+return self}, function($ctx1) {$ctx1.fill(self,"message:", [aMessage], smalltalk.MessageNotUnderstood)})},
 args: ["aMessage"],
 source: "message: aMessage\x0a\x09message := aMessage",
 messageSends: [],
@@ -198,7 +198,7 @@ var self=this;
 return smalltalk.withContext(function($ctx1) { 
var $1;
 $1=_st(_st(_st(_st(self)._receiver())._asString()).__comma(" does not understand #")).__comma(_st(_st(self)._message())._selector());
 return $1;
-}, self, "messageText", [], smalltalk.MessageNotUnderstood)},
+}, function($ctx1) {$ctx1.fill(self,"messageText", [], smalltalk.MessageNotUnderstood)})},
 args: [],
 source: "messageText\x0a\x09^self receiver asString, ' does not understand #', self message selector",
 messageSends: [",", "selector", "message", "asString", "receiver"],
@@ -213,8 +213,10 @@ selector: "receiver",
 category: 'accessing',
 fn: function (){
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
return self["@receiver"];
-}, self, "receiver", [], smalltalk.MessageNotUnderstood)},
+return smalltalk.withContext(function($ctx1) { 
var $1;
+$1=self["@receiver"];
+return $1;
+}, function($ctx1) {$ctx1.fill(self,"receiver", [], smalltalk.MessageNotUnderstood)})},
 args: [],
 source: "receiver\x0a\x09^receiver",
 messageSends: [],
@@ -230,7 +232,7 @@ category: 'accessing',
 fn: function (anObject){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
self["@receiver"]=anObject;
-return self}, self, "receiver:", [anObject], smalltalk.MessageNotUnderstood)},
+return self}, function($ctx1) {$ctx1.fill(self,"receiver:", [anObject], smalltalk.MessageNotUnderstood)})},
 args: ["anObject"],
 source: "receiver: anObject\x0a\x09receiver := anObject",
 messageSends: [],
@@ -248,8 +250,10 @@ selector: "object",
 category: 'accessing',
 fn: function (){
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
return self["@object"];
-}, self, "object", [], smalltalk.NonBooleanReceiver)},
+return smalltalk.withContext(function($ctx1) { 
var $1;
+$1=self["@object"];
+return $1;
+}, function($ctx1) {$ctx1.fill(self,"object", [], smalltalk.NonBooleanReceiver)})},
 args: [],
 source: "object\x0a\x09^ object",
 messageSends: [],
@@ -265,7 +269,7 @@ category: 'accessing',
 fn: function (anObject){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
self["@object"]=anObject;
-return self}, self, "object:", [anObject], smalltalk.NonBooleanReceiver)},
+return self}, function($ctx1) {$ctx1.fill(self,"object:", [anObject], smalltalk.NonBooleanReceiver)})},
 args: ["anObject"],
 source: "object: anObject\x0a\x09object := anObject",
 messageSends: [],
@@ -291,7 +295,7 @@ $1;
 _st(self)._logErrorContext_(_st(anError)._context());
 };
 _st(self)._logError_(anError);
-return self}, self, "handleError:", [anError], smalltalk.ErrorHandler)},
+return self}, function($ctx1) {$ctx1.fill(self,"handleError:", [anError], smalltalk.ErrorHandler)})},
 args: ["anError"],
 source: "handleError: anError\x0a\x09anError context ifNotNil: [self logErrorContext: anError context].\x0a\x09self logError: anError",
 messageSends: ["ifNotNil:", "logErrorContext:", "context", "logError:"],
@@ -307,7 +311,7 @@ category: 'private',
 fn: function (aString){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
_st(console)._log_(aString);
-return self}, self, "log:", [aString], smalltalk.ErrorHandler)},
+return self}, function($ctx1) {$ctx1.fill(self,"log:", [aString], smalltalk.ErrorHandler)})},
 args: ["aString"],
 source: "log: aString\x0a\x09console log: aString",
 messageSends: ["log:"],
@@ -330,7 +334,7 @@ $1;
 _st(self)._logContext_(_st(aContext)._home());
 };
 _st(self)._log_(_st(_st(_st(_st(aContext)._receiver())._asString()).__comma(">>")).__comma(_st(_st(aContext)._selector())._asString()));
-return self}, self, "logContext:", [aContext], smalltalk.ErrorHandler)},
+return self}, function($ctx1) {$ctx1.fill(self,"logContext:", [aContext], smalltalk.ErrorHandler)})},
 args: ["aContext"],
 source: "logContext: aContext\x0a\x09aContext home ifNotNil: [\x0a\x09\x09self logContext: aContext home].\x0a\x09self log: aContext receiver asString, '>>', aContext selector asString\x0a",
 messageSends: ["ifNotNil:", "logContext:", "home", "log:", ",", "asString", "selector", "receiver"],
@@ -346,7 +350,7 @@ category: 'private',
 fn: function (anError){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
_st(self)._log_(_st(anError)._messageText());
-return self}, self, "logError:", [anError], smalltalk.ErrorHandler)},
+return self}, function($ctx1) {$ctx1.fill(self,"logError:", [anError], smalltalk.ErrorHandler)})},
 args: ["anError"],
 source: "logError: anError\x0a\x09self log: anError messageText",
 messageSends: ["log:", "messageText"],
@@ -361,18 +365,18 @@ selector: "logErrorContext:",
 category: 'private',
 fn: function (aContext){
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $1;
-if(($receiver = aContext) == nil || $receiver == undefined){
-aContext;
+return smalltalk.withContext(function($ctx1) { 
var $1,$3,$2;
+$1=aContext;
+$2=(function(){
+return smalltalk.withContext(function($ctx2) {
$3=_st(aContext)._home();
+if(($receiver = $3) == nil || $receiver == undefined){
+return $3;
 } else {
-$1=_st(aContext)._home();
-if(($receiver = $1) == nil || $receiver == undefined){
-$1;
-} else {
-_st(self)._logContext_(_st(aContext)._home());
-};
+return _st(self)._logContext_(_st(aContext)._home());
 };
-return self}, self, "logErrorContext:", [aContext], smalltalk.ErrorHandler)},
+}, function($ctx2) {$ctx2.fill(null, null, {})})});
+_st($1)._ifNotNil_($2);
+return self}, function($ctx1) {$ctx1.fill(self,"logErrorContext:", [aContext], smalltalk.ErrorHandler)})},
 args: ["aContext"],
 source: "logErrorContext: aContext\x0a\x09aContext ifNotNil: [\x0a\x09\x09aContext home ifNotNil: [\x0a\x09\x09\x09self logContext: aContext home]]",
 messageSends: ["ifNotNil:", "logContext:", "home"],
@@ -389,15 +393,16 @@ selector: "current",
 category: 'accessing',
 fn: function (){
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $1;
-if(($receiver = self["@current"]) == nil || $receiver == undefined){
+return smalltalk.withContext(function($ctx1) { 
var $2,$1;
+$2=self["@current"];
+if(($receiver = $2) == nil || $receiver == undefined){
 self["@current"]=_st(self)._new();
 $1=self["@current"];
 } else {
-$1=self["@current"];
+$1=$2;
 };
 return $1;
-}, self, "current", [], smalltalk.ErrorHandler.klass)},
+}, function($ctx1) {$ctx1.fill(self,"current", [], smalltalk.ErrorHandler.klass)})},
 args: [],
 source: "current\x0a\x09^current ifNil: [current := self new]",
 messageSends: ["ifNil:", "new"],
@@ -413,7 +418,7 @@ category: 'initialization',
 fn: function (){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
_st(self)._register();
-return self}, self, "initialize", [], smalltalk.ErrorHandler.klass)},
+return self}, function($ctx1) {$ctx1.fill(self,"initialize", [], smalltalk.ErrorHandler.klass)})},
 args: [],
 source: "initialize\x0a\x09self register",
 messageSends: ["register"],
@@ -429,7 +434,7 @@ category: 'initialization',
 fn: function (){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
_st((smalltalk.ErrorHandler || ErrorHandler))._setCurrent_(_st(self)._new());
-return self}, self, "register", [], smalltalk.ErrorHandler.klass)},
+return self}, function($ctx1) {$ctx1.fill(self,"register", [], smalltalk.ErrorHandler.klass)})},
 args: [],
 source: "register\x0a\x09ErrorHandler setCurrent: self new",
 messageSends: ["setCurrent:", "new"],
@@ -445,7 +450,7 @@ category: 'accessing',
 fn: function (anHandler){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
self["@current"]=anHandler;
-return self}, self, "setCurrent:", [anHandler], smalltalk.ErrorHandler.klass)},
+return self}, function($ctx1) {$ctx1.fill(self,"setCurrent:", [anHandler], smalltalk.ErrorHandler.klass)})},
 args: ["anHandler"],
 source: "setCurrent: anHandler\x0a\x09current := anHandler",
 messageSends: [],

+ 106 - 120
js/Kernel-Methods.deploy.js

@@ -7,8 +7,7 @@ selector: "applyTo:arguments:",
 fn: function (anObject,aCollection){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
return self.apply(anObject, aCollection);
-;
-return self}, self, "applyTo:arguments:", [anObject,aCollection], smalltalk.BlockClosure)}
+return self}, function($ctx1) {$ctx1.fill(self,"applyTo:arguments:", [anObject,aCollection], smalltalk.BlockClosure)})}
 }),
 smalltalk.BlockClosure);
 
@@ -19,8 +18,7 @@ selector: "compiledSource",
 fn: function (){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
return self.toString();
-;
-return self}, self, "compiledSource", [], smalltalk.BlockClosure)}
+return self}, function($ctx1) {$ctx1.fill(self,"compiledSource", [], smalltalk.BlockClosure)})}
 }),
 smalltalk.BlockClosure);
 
@@ -31,8 +29,7 @@ selector: "ensure:",
 fn: function (aBlock){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
try{return self()}finally{aBlock._value()};
-;
-return self}, self, "ensure:", [aBlock], smalltalk.BlockClosure)}
+return self}, function($ctx1) {$ctx1.fill(self,"ensure:", [aBlock], smalltalk.BlockClosure)})}
 }),
 smalltalk.BlockClosure);
 
@@ -43,7 +40,7 @@ selector: "fork",
 fn: function (){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
_st(_st((smalltalk.ForkPool || ForkPool))._default())._fork_(self);
-return self}, self, "fork", [], smalltalk.BlockClosure)}
+return self}, function($ctx1) {$ctx1.fill(self,"fork", [], smalltalk.BlockClosure)})}
 }),
 smalltalk.BlockClosure);
 
@@ -54,8 +51,7 @@ selector: "new",
 fn: function (){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
return new self();
-;
-return self}, self, "new", [], smalltalk.BlockClosure)}
+return self}, function($ctx1) {$ctx1.fill(self,"new", [], smalltalk.BlockClosure)})}
 }),
 smalltalk.BlockClosure);
 
@@ -66,8 +62,7 @@ selector: "newValue:",
 fn: function (anObject){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
return new self(anObject);
-;
-return self}, self, "newValue:", [anObject], smalltalk.BlockClosure)}
+return self}, function($ctx1) {$ctx1.fill(self,"newValue:", [anObject], smalltalk.BlockClosure)})}
 }),
 smalltalk.BlockClosure);
 
@@ -78,8 +73,7 @@ selector: "newValue:value:",
 fn: function (anObject,anObject2){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
return new self(anObject, anObject2);
-;
-return self}, self, "newValue:value:", [anObject,anObject2], smalltalk.BlockClosure)}
+return self}, function($ctx1) {$ctx1.fill(self,"newValue:value:", [anObject,anObject2], smalltalk.BlockClosure)})}
 }),
 smalltalk.BlockClosure);
 
@@ -90,8 +84,7 @@ selector: "newValue:value:value:",
 fn: function (anObject,anObject2,anObject3){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
return new self(anObject, anObject2);
-;
-return self}, self, "newValue:value:value:", [anObject,anObject2,anObject3], smalltalk.BlockClosure)}
+return self}, function($ctx1) {$ctx1.fill(self,"newValue:value:value:", [anObject,anObject2,anObject3], smalltalk.BlockClosure)})}
 }),
 smalltalk.BlockClosure);
 
@@ -102,8 +95,7 @@ selector: "numArgs",
 fn: function (){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
return self.length;
-;
-return self}, self, "numArgs", [], smalltalk.BlockClosure)}
+return self}, function($ctx1) {$ctx1.fill(self,"numArgs", [], smalltalk.BlockClosure)})}
 }),
 smalltalk.BlockClosure);
 
@@ -113,17 +105,20 @@ smalltalk.method({
 selector: "on:do:",
 fn: function (anErrorClass,aBlock){
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $2,$1;
-$1=_st(self)._try_catch_(self,(function(error){
-return smalltalk.withContext(function($ctx2) { 
$2=_st(error)._isKindOf_(anErrorClass);
-if(smalltalk.assert($2)){
+return smalltalk.withContext(function($ctx1) { 
var $2,$3,$5,$4,$1;
+$2=self;
+$3=self;
+$4=(function(error){
+return smalltalk.withContext(function($ctx2) {
$5=_st(error)._isKindOf_(anErrorClass);
+if(smalltalk.assert($5)){
 return _st(aBlock)._value_(error);
 } else {
 return _st(error)._signal();
 };
-})}));
+}, function($ctx2) {$ctx2.fill(null, null, {})})});
+$1=_st($2)._try_catch_($3,$4);
 return $1;
-}, self, "on:do:", [anErrorClass,aBlock], smalltalk.BlockClosure)}
+}, function($ctx1) {$ctx1.fill(self,"on:do:", [anErrorClass,aBlock], smalltalk.BlockClosure)})}
 }),
 smalltalk.BlockClosure);
 
@@ -136,7 +131,7 @@ var self=this;
 return smalltalk.withContext(function($ctx1) { 
var $1;
 $1=_st((smalltalk.Date || Date))._millisecondsToRun_(self);
 return $1;
-}, self, "timeToRun", [], smalltalk.BlockClosure)}
+}, function($ctx1) {$ctx1.fill(self,"timeToRun", [], smalltalk.BlockClosure)})}
 }),
 smalltalk.BlockClosure);
 
@@ -147,8 +142,7 @@ selector: "value",
 fn: function (){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
return self();;
-;
-return self}, self, "value", [], smalltalk.BlockClosure)}
+return self}, function($ctx1) {$ctx1.fill(self,"value", [], smalltalk.BlockClosure)})}
 }),
 smalltalk.BlockClosure);
 
@@ -159,8 +153,7 @@ selector: "value:",
 fn: function (anArg){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
return self(anArg);;
-;
-return self}, self, "value:", [anArg], smalltalk.BlockClosure)}
+return self}, function($ctx1) {$ctx1.fill(self,"value:", [anArg], smalltalk.BlockClosure)})}
 }),
 smalltalk.BlockClosure);
 
@@ -171,8 +164,7 @@ selector: "value:value:",
 fn: function (firstArg,secondArg){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
return self(firstArg, secondArg);;
-;
-return self}, self, "value:value:", [firstArg,secondArg], smalltalk.BlockClosure)}
+return self}, function($ctx1) {$ctx1.fill(self,"value:value:", [firstArg,secondArg], smalltalk.BlockClosure)})}
 }),
 smalltalk.BlockClosure);
 
@@ -183,8 +175,7 @@ selector: "value:value:value:",
 fn: function (firstArg,secondArg,thirdArg){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
return self(firstArg, secondArg, thirdArg);;
-;
-return self}, self, "value:value:value:", [firstArg,secondArg,thirdArg], smalltalk.BlockClosure)}
+return self}, function($ctx1) {$ctx1.fill(self,"value:value:value:", [firstArg,secondArg,thirdArg], smalltalk.BlockClosure)})}
 }),
 smalltalk.BlockClosure);
 
@@ -198,7 +189,7 @@ return smalltalk.withContext(function($ctx1) {
     	var interval = setInterval(self, aNumber);
     	return smalltalk.Timeout._on_(interval);
     ;
-return self}, self, "valueWithInterval:", [aNumber], smalltalk.BlockClosure)}
+return self}, function($ctx1) {$ctx1.fill(self,"valueWithInterval:", [aNumber], smalltalk.BlockClosure)})}
 }),
 smalltalk.BlockClosure);
 
@@ -209,8 +200,7 @@ selector: "valueWithPossibleArguments:",
 fn: function (aCollection){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
return self.apply(null, aCollection);;
-;
-return self}, self, "valueWithPossibleArguments:", [aCollection], smalltalk.BlockClosure)}
+return self}, function($ctx1) {$ctx1.fill(self,"valueWithPossibleArguments:", [aCollection], smalltalk.BlockClosure)})}
 }),
 smalltalk.BlockClosure);
 
@@ -224,7 +214,7 @@ return smalltalk.withContext(function($ctx1) {
     	var timeout = setTimeout(self, aNumber);
     	return smalltalk.Timeout._on_(timeout);
     ;
-return self}, self, "valueWithTimeout:", [aNumber], smalltalk.BlockClosure)}
+return self}, function($ctx1) {$ctx1.fill(self,"valueWithTimeout:", [aNumber], smalltalk.BlockClosure)})}
 }),
 smalltalk.BlockClosure);
 
@@ -235,8 +225,8 @@ selector: "whileFalse",
 fn: function (){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
_st(self)._whileFalse_((function(){
-return smalltalk.withContext(function($ctx2) { 
})}));
-return self}, self, "whileFalse", [], smalltalk.BlockClosure)}
+return smalltalk.withContext(function($ctx2) {
}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+return self}, function($ctx1) {$ctx1.fill(self,"whileFalse", [], smalltalk.BlockClosure)})}
 }),
 smalltalk.BlockClosure);
 
@@ -247,8 +237,7 @@ selector: "whileFalse:",
 fn: function (aBlock){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
while(!self()) {aBlock()};
-;
-return self}, self, "whileFalse:", [aBlock], smalltalk.BlockClosure)}
+return self}, function($ctx1) {$ctx1.fill(self,"whileFalse:", [aBlock], smalltalk.BlockClosure)})}
 }),
 smalltalk.BlockClosure);
 
@@ -259,8 +248,8 @@ selector: "whileTrue",
 fn: function (){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
_st(self)._whileTrue_((function(){
-return smalltalk.withContext(function($ctx2) { 
})}));
-return self}, self, "whileTrue", [], smalltalk.BlockClosure)}
+return smalltalk.withContext(function($ctx2) {
}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+return self}, function($ctx1) {$ctx1.fill(self,"whileTrue", [], smalltalk.BlockClosure)})}
 }),
 smalltalk.BlockClosure);
 
@@ -271,8 +260,7 @@ selector: "whileTrue:",
 fn: function (aBlock){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
while(self()) {aBlock()};
-;
-return self}, self, "whileTrue:", [aBlock], smalltalk.BlockClosure)}
+return self}, function($ctx1) {$ctx1.fill(self,"whileTrue:", [aBlock], smalltalk.BlockClosure)})}
 }),
 smalltalk.BlockClosure);
 
@@ -286,8 +274,7 @@ selector: "arguments",
 fn: function (){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
return self.args || [];
-;
-return self}, self, "arguments", [], smalltalk.CompiledMethod)}
+return self}, function($ctx1) {$ctx1.fill(self,"arguments", [], smalltalk.CompiledMethod)})}
 }),
 smalltalk.CompiledMethod);
 
@@ -305,7 +292,7 @@ $1="";
 $1=$2;
 };
 return $1;
-}, self, "category", [], smalltalk.CompiledMethod)}
+}, function($ctx1) {$ctx1.fill(self,"category", [], smalltalk.CompiledMethod)})}
 }),
 smalltalk.CompiledMethod);
 
@@ -315,9 +302,9 @@ smalltalk.method({
 selector: "category:",
 fn: function (aString){
 var self=this;
+var oldCategory;
 return smalltalk.withContext(function($ctx1) { 
var $1;
-$ctx1.locals.oldCategory=nil;
-$ctx1.locals.oldCategory=_st(self)._category();
+oldCategory=_st(self)._category();
 _st(self)._basicAt_put_("category",aString);
 $1=_st(self)._methodClass();
 if(($receiver = $1) == nil || $receiver == undefined){
@@ -325,12 +312,12 @@ $1;
 } else {
 _st(_st(_st(self)._methodClass())._organization())._addElement_(aString);
 _st(_st(_st(_st(self)._methodClass())._methods())._select_((function(each){
-return smalltalk.withContext(function($ctx2) { 
return _st(_st(each)._category()).__eq($ctx1.locals.oldCategory);
-})})))._ifEmpty_((function(){
-return smalltalk.withContext(function($ctx2) { 
return _st(_st(_st(self)._methodClass())._organization())._removeElement_($ctx1.locals.oldCategory);
-})}));
+return smalltalk.withContext(function($ctx2) {
return _st(_st(each)._category()).__eq(oldCategory);
+}, function($ctx2) {$ctx2.fill(null, null, {})})})))._ifEmpty_((function(){
+return smalltalk.withContext(function($ctx2) {
return _st(_st(_st(self)._methodClass())._organization())._removeElement_(oldCategory);
+}, function($ctx2) {$ctx2.fill(null, null, {})})}));
 };
-return self}, self, "category:", [aString], smalltalk.CompiledMethod)}
+return self}, function($ctx1) {$ctx1.fill(self,"category:", [aString], smalltalk.CompiledMethod)})}
 }),
 smalltalk.CompiledMethod);
 
@@ -343,7 +330,7 @@ var self=this;
 return smalltalk.withContext(function($ctx1) { 
var $1;
 $1=_st(self)._basicAt_("fn");
 return $1;
-}, self, "fn", [], smalltalk.CompiledMethod)}
+}, function($ctx1) {$ctx1.fill(self,"fn", [], smalltalk.CompiledMethod)})}
 }),
 smalltalk.CompiledMethod);
 
@@ -354,7 +341,7 @@ selector: "fn:",
 fn: function (aBlock){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
_st(self)._basicAt_put_("fn",aBlock);
-return self}, self, "fn:", [aBlock], smalltalk.CompiledMethod)}
+return self}, function($ctx1) {$ctx1.fill(self,"fn:", [aBlock], smalltalk.CompiledMethod)})}
 }),
 smalltalk.CompiledMethod);
 
@@ -367,7 +354,7 @@ var self=this;
 return smalltalk.withContext(function($ctx1) { 
var $1;
 $1=_st(self)._basicAt_("messageSends");
 return $1;
-}, self, "messageSends", [], smalltalk.CompiledMethod)}
+}, function($ctx1) {$ctx1.fill(self,"messageSends", [], smalltalk.CompiledMethod)})}
 }),
 smalltalk.CompiledMethod);
 
@@ -380,7 +367,7 @@ var self=this;
 return smalltalk.withContext(function($ctx1) { 
var $1;
 $1=_st(self)._basicAt_("methodClass");
 return $1;
-}, self, "methodClass", [], smalltalk.CompiledMethod)}
+}, function($ctx1) {$ctx1.fill(self,"methodClass", [], smalltalk.CompiledMethod)})}
 }),
 smalltalk.CompiledMethod);
 
@@ -393,7 +380,7 @@ var self=this;
 return smalltalk.withContext(function($ctx1) { 
var $1;
 $1=_st(self)._category();
 return $1;
-}, self, "protocol", [], smalltalk.CompiledMethod)}
+}, function($ctx1) {$ctx1.fill(self,"protocol", [], smalltalk.CompiledMethod)})}
 }),
 smalltalk.CompiledMethod);
 
@@ -406,7 +393,7 @@ var self=this;
 return smalltalk.withContext(function($ctx1) { 
var $1;
 $1=_st(self)._basicAt_("referencedClasses");
 return $1;
-}, self, "referencedClasses", [], smalltalk.CompiledMethod)}
+}, function($ctx1) {$ctx1.fill(self,"referencedClasses", [], smalltalk.CompiledMethod)})}
 }),
 smalltalk.CompiledMethod);
 
@@ -419,7 +406,7 @@ var self=this;
 return smalltalk.withContext(function($ctx1) { 
var $1;
 $1=_st(self)._basicAt_("selector");
 return $1;
-}, self, "selector", [], smalltalk.CompiledMethod)}
+}, function($ctx1) {$ctx1.fill(self,"selector", [], smalltalk.CompiledMethod)})}
 }),
 smalltalk.CompiledMethod);
 
@@ -430,7 +417,7 @@ selector: "selector:",
 fn: function (aString){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
_st(self)._basicAt_put_("selector",aString);
-return self}, self, "selector:", [aString], smalltalk.CompiledMethod)}
+return self}, function($ctx1) {$ctx1.fill(self,"selector:", [aString], smalltalk.CompiledMethod)})}
 }),
 smalltalk.CompiledMethod);
 
@@ -448,7 +435,7 @@ $1="";
 $1=$2;
 };
 return $1;
-}, self, "source", [], smalltalk.CompiledMethod)}
+}, function($ctx1) {$ctx1.fill(self,"source", [], smalltalk.CompiledMethod)})}
 }),
 smalltalk.CompiledMethod);
 
@@ -459,7 +446,7 @@ selector: "source:",
 fn: function (aString){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
_st(self)._basicAt_put_("source",aString);
-return self}, self, "source:", [aString], smalltalk.CompiledMethod)}
+return self}, function($ctx1) {$ctx1.fill(self,"source:", [aString], smalltalk.CompiledMethod)})}
 }),
 smalltalk.CompiledMethod);
 
@@ -474,7 +461,7 @@ fn: function (){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
_st(self["@worker"])._valueWithTimeout_((0));
 self["@poolSize"]=_st(self["@poolSize"]).__plus((1));
-return self}, self, "addWorker", [], smalltalk.ForkPool)}
+return self}, function($ctx1) {$ctx1.fill(self,"addWorker", [], smalltalk.ForkPool)})}
 }),
 smalltalk.ForkPool);
 
@@ -487,7 +474,7 @@ var self=this;
 return smalltalk.withContext(function($ctx1) { 
var $1;
 $1=_st(_st(self)._class())._defaultMaxPoolSize();
 return $1;
-}, self, "defaultMaxPoolSize", [], smalltalk.ForkPool)}
+}, function($ctx1) {$ctx1.fill(self,"defaultMaxPoolSize", [], smalltalk.ForkPool)})}
 }),
 smalltalk.ForkPool);
 
@@ -503,7 +490,7 @@ if(smalltalk.assert($1)){
 _st(self)._addWorker();
 };
 _st(self["@queue"])._back_(aBlock);
-return self}, self, "fork:", [aBlock], smalltalk.ForkPool)}
+return self}, function($ctx1) {$ctx1.fill(self,"fork:", [aBlock], smalltalk.ForkPool)})}
 }),
 smalltalk.ForkPool);
 
@@ -517,7 +504,7 @@ return smalltalk.withContext(function($ctx1) { 
smalltalk.Object.fn.prototype._i
 self["@poolSize"]=(0);
 self["@queue"]=_st((smalltalk.Queue || Queue))._new();
 self["@worker"]=_st(self)._makeWorker();
-return self}, self, "initialize", [], smalltalk.ForkPool)}
+return self}, function($ctx1) {$ctx1.fill(self,"initialize", [], smalltalk.ForkPool)})}
 }),
 smalltalk.ForkPool);
 
@@ -527,28 +514,27 @@ smalltalk.method({
 selector: "makeWorker",
 fn: function (){
 var self=this;
+var sentinel;
 return smalltalk.withContext(function($ctx1) { 
var $2,$1;
-$ctx1.locals.sentinel=nil;
-$ctx1.locals.sentinel=_st((smalltalk.Object || Object))._new();
+sentinel=_st((smalltalk.Object || Object))._new();
 $1=(function(){
-return smalltalk.withContext(function($ctx2) { 
$ctx2.locals.block=nil;
-self["@poolSize"]=_st(self["@poolSize"]).__minus((1));
+return smalltalk.withContext(function($ctx2) {
self["@poolSize"]=_st(self["@poolSize"]).__minus((1));
 self["@poolSize"];
-$ctx2.locals.block=_st(self["@queue"])._frontIfAbsent_((function(){
-return smalltalk.withContext(function($ctx3) { 
return $ctx1.locals.sentinel;
-})}));
-$ctx2.locals.block;
-$2=_st($ctx2.locals.block).__eq_eq($ctx1.locals.sentinel);
+block=_st(self["@queue"])._frontIfAbsent_((function(){
+return smalltalk.withContext(function($ctx3) {
return sentinel;
+}, function($ctx3) {$ctx3.fill(null, null, {})})}));
+block;
+$2=_st(block).__eq_eq(sentinel);
 if(! smalltalk.assert($2)){
 return _st((function(){
-return smalltalk.withContext(function($ctx3) { 
return _st($ctx2.locals.block)._value();
-})}))._ensure_((function(){
-return smalltalk.withContext(function($ctx3) { 
return _st(self)._addWorker();
-})}));
+return smalltalk.withContext(function($ctx3) {
return _st(block)._value();
+}, function($ctx3) {$ctx3.fill(null, null, {})})}))._ensure_((function(){
+return smalltalk.withContext(function($ctx3) {
return _st(self)._addWorker();
+}, function($ctx3) {$ctx3.fill(null, null, {})})}));
 };
-})});
+}, function($ctx2) {$ctx2.fill(null, null, {})})});
 return $1;
-}, self, "makeWorker", [], smalltalk.ForkPool)}
+}, function($ctx1) {$ctx1.fill(self,"makeWorker", [], smalltalk.ForkPool)})}
 }),
 smalltalk.ForkPool);
 
@@ -566,7 +552,7 @@ $1=_st(self)._defaultMaxPoolSize();
 $1=$2;
 };
 return $1;
-}, self, "maxPoolSize", [], smalltalk.ForkPool)}
+}, function($ctx1) {$ctx1.fill(self,"maxPoolSize", [], smalltalk.ForkPool)})}
 }),
 smalltalk.ForkPool);
 
@@ -577,7 +563,7 @@ selector: "maxPoolSize:",
 fn: function (anInteger){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
self["@maxPoolSize"]=anInteger;
-return self}, self, "maxPoolSize:", [anInteger], smalltalk.ForkPool)}
+return self}, function($ctx1) {$ctx1.fill(self,"maxPoolSize:", [anInteger], smalltalk.ForkPool)})}
 }),
 smalltalk.ForkPool);
 
@@ -598,7 +584,7 @@ $1=self["@default"];
 $1=$2;
 };
 return $1;
-}, self, "default", [], smalltalk.ForkPool.klass)}
+}, function($ctx1) {$ctx1.fill(self,"default", [], smalltalk.ForkPool.klass)})}
 }),
 smalltalk.ForkPool.klass);
 
@@ -609,7 +595,7 @@ selector: "defaultMaxPoolSize",
 fn: function (){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
return (100);
-}, self, "defaultMaxPoolSize", [], smalltalk.ForkPool.klass)}
+}, function($ctx1) {$ctx1.fill(self,"defaultMaxPoolSize", [], smalltalk.ForkPool.klass)})}
 }),
 smalltalk.ForkPool.klass);
 
@@ -620,7 +606,7 @@ selector: "resetDefault",
 fn: function (){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
self["@default"]=nil;
-return self}, self, "resetDefault", [], smalltalk.ForkPool.klass)}
+return self}, function($ctx1) {$ctx1.fill(self,"resetDefault", [], smalltalk.ForkPool.klass)})}
 }),
 smalltalk.ForkPool.klass);
 
@@ -632,8 +618,10 @@ smalltalk.method({
 selector: "arguments",
 fn: function (){
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
return self["@arguments"];
-}, self, "arguments", [], smalltalk.Message)}
+return smalltalk.withContext(function($ctx1) { 
var $1;
+$1=self["@arguments"];
+return $1;
+}, function($ctx1) {$ctx1.fill(self,"arguments", [], smalltalk.Message)})}
 }),
 smalltalk.Message);
 
@@ -644,7 +632,7 @@ selector: "arguments:",
 fn: function (anArray){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
self["@arguments"]=anArray;
-return self}, self, "arguments:", [anArray], smalltalk.Message)}
+return self}, function($ctx1) {$ctx1.fill(self,"arguments:", [anArray], smalltalk.Message)})}
 }),
 smalltalk.Message);
 
@@ -654,16 +642,17 @@ smalltalk.method({
 selector: "printString",
 fn: function (){
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $2,$1;
+return smalltalk.withContext(function($ctx1) { 
var $2,$3,$1;
 $1=_st((smalltalk.String || String))._streamContents_((function(aStream){
-return smalltalk.withContext(function($ctx2) { 
_st(aStream)._nextPutAll_(smalltalk.Object.fn.prototype._printString.apply(_st(self), []));
-_st(aStream)._nextPutAll_("(");
-_st(aStream)._nextPutAll_(self["@selector"]);
-$2=_st(aStream)._nextPutAll_(")");
-return $2;
-})}));
+return smalltalk.withContext(function($ctx2) {
$2=aStream;
+_st($2)._nextPutAll_(smalltalk.Object.fn.prototype._printString.apply(_st(self), []));
+_st($2)._nextPutAll_("(");
+_st($2)._nextPutAll_(self["@selector"]);
+$3=_st($2)._nextPutAll_(")");
+return $3;
+}, function($ctx2) {$ctx2.fill(null, null, {})})}));
 return $1;
-}, self, "printString", [], smalltalk.Message)}
+}, function($ctx1) {$ctx1.fill(self,"printString", [], smalltalk.Message)})}
 }),
 smalltalk.Message);
 
@@ -673,8 +662,10 @@ smalltalk.method({
 selector: "selector",
 fn: function (){
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
return self["@selector"];
-}, self, "selector", [], smalltalk.Message)}
+return smalltalk.withContext(function($ctx1) { 
var $1;
+$1=self["@selector"];
+return $1;
+}, function($ctx1) {$ctx1.fill(self,"selector", [], smalltalk.Message)})}
 }),
 smalltalk.Message);
 
@@ -685,7 +676,7 @@ selector: "selector:",
 fn: function (aString){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
self["@selector"]=aString;
-return self}, self, "selector:", [aString], smalltalk.Message)}
+return self}, function($ctx1) {$ctx1.fill(self,"selector:", [aString], smalltalk.Message)})}
 }),
 smalltalk.Message);
 
@@ -698,7 +689,7 @@ var self=this;
 return smalltalk.withContext(function($ctx1) { 
var $1;
 $1=_st(anObject)._perform_withArguments_(_st(self)._selector(),_st(self)._arguments());
 return $1;
-}, self, "sendTo:", [anObject], smalltalk.Message)}
+}, function($ctx1) {$ctx1.fill(self,"sendTo:", [anObject], smalltalk.Message)})}
 }),
 smalltalk.Message);
 
@@ -716,7 +707,7 @@ _st($2)._arguments_(anArray);
 $3=_st($2)._yourself();
 $1=$3;
 return $1;
-}, self, "selector:arguments:", [aString,anArray], smalltalk.Message.klass)}
+}, function($ctx1) {$ctx1.fill(self,"selector:arguments:", [aString,anArray], smalltalk.Message.klass)})}
 }),
 smalltalk.Message.klass);
 
@@ -731,7 +722,7 @@ var self=this;
 return smalltalk.withContext(function($ctx1) { 
var $1;
 $1=_st(_st(_st(_st(_st(self)._receiver())._class())._printString()).__comma(" >> ")).__comma(_st(self)._selector());
 return $1;
-}, self, "asString", [], smalltalk.MethodContext)}
+}, function($ctx1) {$ctx1.fill(self,"asString", [], smalltalk.MethodContext)})}
 }),
 smalltalk.MethodContext);
 
@@ -742,8 +733,7 @@ selector: "home",
 fn: function (){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
return self.homeContext;
-;
-return self}, self, "home", [], smalltalk.MethodContext)}
+return self}, function($ctx1) {$ctx1.fill(self,"home", [], smalltalk.MethodContext)})}
 }),
 smalltalk.MethodContext);
 
@@ -756,7 +746,7 @@ var self=this;
 return smalltalk.withContext(function($ctx1) { 
var $1;
 $1=_st(_st(self)._selector())._isNil();
 return $1;
-}, self, "isBlockContext", [], smalltalk.MethodContext)}
+}, function($ctx1) {$ctx1.fill(self,"isBlockContext", [], smalltalk.MethodContext)})}
 }),
 smalltalk.MethodContext);
 
@@ -767,8 +757,7 @@ selector: "locals",
 fn: function (){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
return self.locals;
-;
-return self}, self, "locals", [], smalltalk.MethodContext)}
+return self}, function($ctx1) {$ctx1.fill(self,"locals", [], smalltalk.MethodContext)})}
 }),
 smalltalk.MethodContext);
 
@@ -786,7 +775,7 @@ return $2;
 };
 $3=_st(self)._outerContext();
 return $3;
-}, self, "methodContext", [], smalltalk.MethodContext)}
+}, function($ctx1) {$ctx1.fill(self,"methodContext", [], smalltalk.MethodContext)})}
 }),
 smalltalk.MethodContext);
 
@@ -799,7 +788,7 @@ var self=this;
 return smalltalk.withContext(function($ctx1) { 
var $1;
 $1=_st(self)._home();
 return $1;
-}, self, "outerContext", [], smalltalk.MethodContext)}
+}, function($ctx1) {$ctx1.fill(self,"outerContext", [], smalltalk.MethodContext)})}
 }),
 smalltalk.MethodContext);
 
@@ -810,8 +799,7 @@ selector: "pc",
 fn: function (){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
return self.pc;
-;
-return self}, self, "pc", [], smalltalk.MethodContext)}
+return self}, function($ctx1) {$ctx1.fill(self,"pc", [], smalltalk.MethodContext)})}
 }),
 smalltalk.MethodContext);
 
@@ -824,7 +812,7 @@ var self=this;
 return smalltalk.withContext(function($ctx1) { 
var $1;
 $1=_st(_st(_st(smalltalk.Object.fn.prototype._printString.apply(_st(self), [])).__comma("(")).__comma(_st(self)._asString())).__comma(")");
 return $1;
-}, self, "printString", [], smalltalk.MethodContext)}
+}, function($ctx1) {$ctx1.fill(self,"printString", [], smalltalk.MethodContext)})}
 }),
 smalltalk.MethodContext);
 
@@ -835,8 +823,7 @@ selector: "receiver",
 fn: function (){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
return self.receiver;
-;
-return self}, self, "receiver", [], smalltalk.MethodContext)}
+return self}, function($ctx1) {$ctx1.fill(self,"receiver", [], smalltalk.MethodContext)})}
 }),
 smalltalk.MethodContext);
 
@@ -853,8 +840,7 @@ return smalltalk.withContext(function($ctx1) {
         	return nil;
         }
     ;
-;
-return self}, self, "selector", [], smalltalk.MethodContext)}
+return self}, function($ctx1) {$ctx1.fill(self,"selector", [], smalltalk.MethodContext)})}
 }),
 smalltalk.MethodContext);
 
@@ -868,7 +854,7 @@ return smalltalk.withContext(function($ctx1) { 
var $1;
 _st(self)._deprecatedAPI();
 $1=_st(self)._locals();
 return $1;
-}, self, "temps", [], smalltalk.MethodContext)}
+}, function($ctx1) {$ctx1.fill(self,"temps", [], smalltalk.MethodContext)})}
 }),
 smalltalk.MethodContext);
 

+ 106 - 120
js/Kernel-Methods.js

@@ -9,8 +9,7 @@ category: 'evaluating',
 fn: function (anObject,aCollection){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
return self.apply(anObject, aCollection);
-;
-return self}, self, "applyTo:arguments:", [anObject,aCollection], smalltalk.BlockClosure)},
+return self}, function($ctx1) {$ctx1.fill(self,"applyTo:arguments:", [anObject,aCollection], smalltalk.BlockClosure)})},
 args: ["anObject", "aCollection"],
 source: "applyTo: anObject arguments: aCollection\x0a\x09<return self.apply(anObject, aCollection)>",
 messageSends: [],
@@ -26,8 +25,7 @@ category: 'accessing',
 fn: function (){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
return self.toString();
-;
-return self}, self, "compiledSource", [], smalltalk.BlockClosure)},
+return self}, function($ctx1) {$ctx1.fill(self,"compiledSource", [], smalltalk.BlockClosure)})},
 args: [],
 source: "compiledSource\x0a\x09<return self.toString()>",
 messageSends: [],
@@ -43,8 +41,7 @@ category: 'evaluating',
 fn: function (aBlock){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
try{return self()}finally{aBlock._value()};
-;
-return self}, self, "ensure:", [aBlock], smalltalk.BlockClosure)},
+return self}, function($ctx1) {$ctx1.fill(self,"ensure:", [aBlock], smalltalk.BlockClosure)})},
 args: ["aBlock"],
 source: "ensure: aBlock\x0a\x09<try{return self()}finally{aBlock._value()}>",
 messageSends: [],
@@ -60,7 +57,7 @@ category: 'timeout/interval',
 fn: function (){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
_st(_st((smalltalk.ForkPool || ForkPool))._default())._fork_(self);
-return self}, self, "fork", [], smalltalk.BlockClosure)},
+return self}, function($ctx1) {$ctx1.fill(self,"fork", [], smalltalk.BlockClosure)})},
 args: [],
 source: "fork\x0a\x09ForkPool default fork: self",
 messageSends: ["fork:", "default"],
@@ -76,8 +73,7 @@ category: 'evaluating',
 fn: function (){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
return new self();
-;
-return self}, self, "new", [], smalltalk.BlockClosure)},
+return self}, function($ctx1) {$ctx1.fill(self,"new", [], smalltalk.BlockClosure)})},
 args: [],
 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()>",
 messageSends: [],
@@ -93,8 +89,7 @@ category: 'evaluating',
 fn: function (anObject){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
return new self(anObject);
-;
-return self}, self, "newValue:", [anObject], smalltalk.BlockClosure)},
+return self}, function($ctx1) {$ctx1.fill(self,"newValue:", [anObject], smalltalk.BlockClosure)})},
 args: ["anObject"],
 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)>",
 messageSends: [],
@@ -110,8 +105,7 @@ category: 'evaluating',
 fn: function (anObject,anObject2){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
return new self(anObject, anObject2);
-;
-return self}, self, "newValue:value:", [anObject,anObject2], smalltalk.BlockClosure)},
+return self}, function($ctx1) {$ctx1.fill(self,"newValue:value:", [anObject,anObject2], smalltalk.BlockClosure)})},
 args: ["anObject", "anObject2"],
 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)>",
 messageSends: [],
@@ -127,8 +121,7 @@ category: 'evaluating',
 fn: function (anObject,anObject2,anObject3){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
return new self(anObject, anObject2);
-;
-return self}, self, "newValue:value:value:", [anObject,anObject2,anObject3], smalltalk.BlockClosure)},
+return self}, function($ctx1) {$ctx1.fill(self,"newValue:value:value:", [anObject,anObject2,anObject3], smalltalk.BlockClosure)})},
 args: ["anObject", "anObject2", "anObject3"],
 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)>",
 messageSends: [],
@@ -144,8 +137,7 @@ category: 'accessing',
 fn: function (){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
return self.length;
-;
-return self}, self, "numArgs", [], smalltalk.BlockClosure)},
+return self}, function($ctx1) {$ctx1.fill(self,"numArgs", [], smalltalk.BlockClosure)})},
 args: [],
 source: "numArgs\x0a\x09<return self.length>",
 messageSends: [],
@@ -160,17 +152,20 @@ selector: "on:do:",
 category: 'error handling',
 fn: function (anErrorClass,aBlock){
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $2,$1;
-$1=_st(self)._try_catch_(self,(function(error){
-return smalltalk.withContext(function($ctx2) { 
$2=_st(error)._isKindOf_(anErrorClass);
-if(smalltalk.assert($2)){
+return smalltalk.withContext(function($ctx1) { 
var $2,$3,$5,$4,$1;
+$2=self;
+$3=self;
+$4=(function(error){
+return smalltalk.withContext(function($ctx2) {
$5=_st(error)._isKindOf_(anErrorClass);
+if(smalltalk.assert($5)){
 return _st(aBlock)._value_(error);
 } else {
 return _st(error)._signal();
 };
-})}));
+}, function($ctx2) {$ctx2.fill(null, null, {})})});
+$1=_st($2)._try_catch_($3,$4);
 return $1;
-}, self, "on:do:", [anErrorClass,aBlock], smalltalk.BlockClosure)},
+}, function($ctx1) {$ctx1.fill(self,"on:do:", [anErrorClass,aBlock], smalltalk.BlockClosure)})},
 args: ["anErrorClass", "aBlock"],
 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]]",
 messageSends: ["try:catch:", "ifTrue:ifFalse:", "value:", "signal", "isKindOf:"],
@@ -188,7 +183,7 @@ var self=this;
 return smalltalk.withContext(function($ctx1) { 
var $1;
 $1=_st((smalltalk.Date || Date))._millisecondsToRun_(self);
 return $1;
-}, self, "timeToRun", [], smalltalk.BlockClosure)},
+}, function($ctx1) {$ctx1.fill(self,"timeToRun", [], smalltalk.BlockClosure)})},
 args: [],
 source: "timeToRun\x0a\x09\x22Answer the number of milliseconds taken to execute this block.\x22\x0a\x0a\x09^ Date millisecondsToRun: self",
 messageSends: ["millisecondsToRun:"],
@@ -204,8 +199,7 @@ category: 'evaluating',
 fn: function (){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
return self();;
-;
-return self}, self, "value", [], smalltalk.BlockClosure)},
+return self}, function($ctx1) {$ctx1.fill(self,"value", [], smalltalk.BlockClosure)})},
 args: [],
 source: "value\x0a\x09\x22inlined in the Compiler\x22\x0a\x09<return self();>",
 messageSends: [],
@@ -221,8 +215,7 @@ category: 'evaluating',
 fn: function (anArg){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
return self(anArg);;
-;
-return self}, self, "value:", [anArg], smalltalk.BlockClosure)},
+return self}, function($ctx1) {$ctx1.fill(self,"value:", [anArg], smalltalk.BlockClosure)})},
 args: ["anArg"],
 source: "value: anArg\x0a\x09\x22inlined in the Compiler\x22\x0a\x09<return self(anArg);>",
 messageSends: [],
@@ -238,8 +231,7 @@ category: 'evaluating',
 fn: function (firstArg,secondArg){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
return self(firstArg, secondArg);;
-;
-return self}, self, "value:value:", [firstArg,secondArg], smalltalk.BlockClosure)},
+return self}, function($ctx1) {$ctx1.fill(self,"value:value:", [firstArg,secondArg], smalltalk.BlockClosure)})},
 args: ["firstArg", "secondArg"],
 source: "value: firstArg value: secondArg\x0a\x09\x22inlined in the Compiler\x22\x0a\x09<return self(firstArg, secondArg);>",
 messageSends: [],
@@ -255,8 +247,7 @@ category: 'evaluating',
 fn: function (firstArg,secondArg,thirdArg){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
return self(firstArg, secondArg, thirdArg);;
-;
-return self}, self, "value:value:value:", [firstArg,secondArg,thirdArg], smalltalk.BlockClosure)},
+return self}, function($ctx1) {$ctx1.fill(self,"value:value:value:", [firstArg,secondArg,thirdArg], smalltalk.BlockClosure)})},
 args: ["firstArg", "secondArg", "thirdArg"],
 source: "value: firstArg value: secondArg value: thirdArg\x0a\x09\x22inlined in the Compiler\x22\x0a\x09<return self(firstArg, secondArg, thirdArg);>",
 messageSends: [],
@@ -275,7 +266,7 @@ return smalltalk.withContext(function($ctx1) {
     	var interval = setInterval(self, aNumber);
     	return smalltalk.Timeout._on_(interval);
     ;
-return self}, self, "valueWithInterval:", [aNumber], smalltalk.BlockClosure)},
+return self}, function($ctx1) {$ctx1.fill(self,"valueWithInterval:", [aNumber], smalltalk.BlockClosure)})},
 args: ["aNumber"],
 source: "valueWithInterval: aNumber\x0a\x09<\x0a    \x09var interval = setInterval(self, aNumber);\x0a    \x09return smalltalk.Timeout._on_(interval);\x0a    >",
 messageSends: [],
@@ -291,8 +282,7 @@ category: 'evaluating',
 fn: function (aCollection){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
return self.apply(null, aCollection);;
-;
-return self}, self, "valueWithPossibleArguments:", [aCollection], smalltalk.BlockClosure)},
+return self}, function($ctx1) {$ctx1.fill(self,"valueWithPossibleArguments:", [aCollection], smalltalk.BlockClosure)})},
 args: ["aCollection"],
 source: "valueWithPossibleArguments: aCollection\x0a\x09<return self.apply(null, aCollection);>",
 messageSends: [],
@@ -311,7 +301,7 @@ return smalltalk.withContext(function($ctx1) {
     	var timeout = setTimeout(self, aNumber);
     	return smalltalk.Timeout._on_(timeout);
     ;
-return self}, self, "valueWithTimeout:", [aNumber], smalltalk.BlockClosure)},
+return self}, function($ctx1) {$ctx1.fill(self,"valueWithTimeout:", [aNumber], smalltalk.BlockClosure)})},
 args: ["aNumber"],
 source: "valueWithTimeout: aNumber\x0a\x09<\x0a    \x09var timeout = setTimeout(self, aNumber);\x0a    \x09return smalltalk.Timeout._on_(timeout);\x0a    >",
 messageSends: [],
@@ -327,8 +317,8 @@ category: 'controlling',
 fn: function (){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
_st(self)._whileFalse_((function(){
-return smalltalk.withContext(function($ctx2) { 
})}));
-return self}, self, "whileFalse", [], smalltalk.BlockClosure)},
+return smalltalk.withContext(function($ctx2) {
}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+return self}, function($ctx1) {$ctx1.fill(self,"whileFalse", [], smalltalk.BlockClosure)})},
 args: [],
 source: "whileFalse\x0a\x09\x22inlined in the Compiler\x22\x0a\x09self whileFalse: []",
 messageSends: ["whileFalse:"],
@@ -344,8 +334,7 @@ category: 'controlling',
 fn: function (aBlock){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
while(!self()) {aBlock()};
-;
-return self}, self, "whileFalse:", [aBlock], smalltalk.BlockClosure)},
+return self}, function($ctx1) {$ctx1.fill(self,"whileFalse:", [aBlock], smalltalk.BlockClosure)})},
 args: ["aBlock"],
 source: "whileFalse: aBlock\x0a\x09\x22inlined in the Compiler\x22\x0a\x09<while(!self()) {aBlock()}>",
 messageSends: [],
@@ -361,8 +350,8 @@ category: 'controlling',
 fn: function (){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
_st(self)._whileTrue_((function(){
-return smalltalk.withContext(function($ctx2) { 
})}));
-return self}, self, "whileTrue", [], smalltalk.BlockClosure)},
+return smalltalk.withContext(function($ctx2) {
}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+return self}, function($ctx1) {$ctx1.fill(self,"whileTrue", [], smalltalk.BlockClosure)})},
 args: [],
 source: "whileTrue\x0a\x09\x22inlined in the Compiler\x22\x0a\x09self whileTrue: []",
 messageSends: ["whileTrue:"],
@@ -378,8 +367,7 @@ category: 'controlling',
 fn: function (aBlock){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
while(self()) {aBlock()};
-;
-return self}, self, "whileTrue:", [aBlock], smalltalk.BlockClosure)},
+return self}, function($ctx1) {$ctx1.fill(self,"whileTrue:", [aBlock], smalltalk.BlockClosure)})},
 args: ["aBlock"],
 source: "whileTrue: aBlock\x0a\x09\x22inlined in the Compiler\x22\x0a\x09<while(self()) {aBlock()}>",
 messageSends: [],
@@ -399,8 +387,7 @@ category: 'accessing',
 fn: function (){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
return self.args || [];
-;
-return self}, self, "arguments", [], smalltalk.CompiledMethod)},
+return self}, function($ctx1) {$ctx1.fill(self,"arguments", [], smalltalk.CompiledMethod)})},
 args: [],
 source: "arguments\x0a\x09<return self.args || []>",
 messageSends: [],
@@ -423,7 +410,7 @@ $1="";
 $1=$2;
 };
 return $1;
-}, self, "category", [], smalltalk.CompiledMethod)},
+}, function($ctx1) {$ctx1.fill(self,"category", [], smalltalk.CompiledMethod)})},
 args: [],
 source: "category\x0a\x09^(self basicAt: 'category') ifNil: ['']",
 messageSends: ["ifNil:", "basicAt:"],
@@ -438,9 +425,9 @@ selector: "category:",
 category: 'accessing',
 fn: function (aString){
 var self=this;
+var oldCategory;
 return smalltalk.withContext(function($ctx1) { 
var $1;
-$ctx1.locals.oldCategory=nil;
-$ctx1.locals.oldCategory=_st(self)._category();
+oldCategory=_st(self)._category();
 _st(self)._basicAt_put_("category",aString);
 $1=_st(self)._methodClass();
 if(($receiver = $1) == nil || $receiver == undefined){
@@ -448,12 +435,12 @@ $1;
 } else {
 _st(_st(_st(self)._methodClass())._organization())._addElement_(aString);
 _st(_st(_st(_st(self)._methodClass())._methods())._select_((function(each){
-return smalltalk.withContext(function($ctx2) { 
return _st(_st(each)._category()).__eq($ctx1.locals.oldCategory);
-})})))._ifEmpty_((function(){
-return smalltalk.withContext(function($ctx2) { 
return _st(_st(_st(self)._methodClass())._organization())._removeElement_($ctx1.locals.oldCategory);
-})}));
+return smalltalk.withContext(function($ctx2) {
return _st(_st(each)._category()).__eq(oldCategory);
+}, function($ctx2) {$ctx2.fill(null, null, {})})})))._ifEmpty_((function(){
+return smalltalk.withContext(function($ctx2) {
return _st(_st(_st(self)._methodClass())._organization())._removeElement_(oldCategory);
+}, function($ctx2) {$ctx2.fill(null, null, {})})}));
 };
-return self}, self, "category:", [aString], smalltalk.CompiledMethod)},
+return self}, function($ctx1) {$ctx1.fill(self,"category:", [aString], smalltalk.CompiledMethod)})},
 args: ["aString"],
 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 ] ]",
 messageSends: ["category", "basicAt:put:", "ifNotNil:", "addElement:", "organization", "methodClass", "ifEmpty:", "removeElement:", "select:", "=", "methods"],
@@ -471,7 +458,7 @@ var self=this;
 return smalltalk.withContext(function($ctx1) { 
var $1;
 $1=_st(self)._basicAt_("fn");
 return $1;
-}, self, "fn", [], smalltalk.CompiledMethod)},
+}, function($ctx1) {$ctx1.fill(self,"fn", [], smalltalk.CompiledMethod)})},
 args: [],
 source: "fn\x0a\x09^self basicAt: 'fn'",
 messageSends: ["basicAt:"],
@@ -487,7 +474,7 @@ category: 'accessing',
 fn: function (aBlock){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
_st(self)._basicAt_put_("fn",aBlock);
-return self}, self, "fn:", [aBlock], smalltalk.CompiledMethod)},
+return self}, function($ctx1) {$ctx1.fill(self,"fn:", [aBlock], smalltalk.CompiledMethod)})},
 args: ["aBlock"],
 source: "fn: aBlock\x0a\x09self basicAt: 'fn' put: aBlock",
 messageSends: ["basicAt:put:"],
@@ -505,7 +492,7 @@ var self=this;
 return smalltalk.withContext(function($ctx1) { 
var $1;
 $1=_st(self)._basicAt_("messageSends");
 return $1;
-}, self, "messageSends", [], smalltalk.CompiledMethod)},
+}, function($ctx1) {$ctx1.fill(self,"messageSends", [], smalltalk.CompiledMethod)})},
 args: [],
 source: "messageSends\x0a\x09^self basicAt: 'messageSends'",
 messageSends: ["basicAt:"],
@@ -523,7 +510,7 @@ var self=this;
 return smalltalk.withContext(function($ctx1) { 
var $1;
 $1=_st(self)._basicAt_("methodClass");
 return $1;
-}, self, "methodClass", [], smalltalk.CompiledMethod)},
+}, function($ctx1) {$ctx1.fill(self,"methodClass", [], smalltalk.CompiledMethod)})},
 args: [],
 source: "methodClass\x0a\x09^self basicAt: 'methodClass'",
 messageSends: ["basicAt:"],
@@ -541,7 +528,7 @@ var self=this;
 return smalltalk.withContext(function($ctx1) { 
var $1;
 $1=_st(self)._category();
 return $1;
-}, self, "protocol", [], smalltalk.CompiledMethod)},
+}, function($ctx1) {$ctx1.fill(self,"protocol", [], smalltalk.CompiledMethod)})},
 args: [],
 source: "protocol\x0a\x09^ self category",
 messageSends: ["category"],
@@ -559,7 +546,7 @@ var self=this;
 return smalltalk.withContext(function($ctx1) { 
var $1;
 $1=_st(self)._basicAt_("referencedClasses");
 return $1;
-}, self, "referencedClasses", [], smalltalk.CompiledMethod)},
+}, function($ctx1) {$ctx1.fill(self,"referencedClasses", [], smalltalk.CompiledMethod)})},
 args: [],
 source: "referencedClasses\x0a\x09^self basicAt: 'referencedClasses'",
 messageSends: ["basicAt:"],
@@ -577,7 +564,7 @@ var self=this;
 return smalltalk.withContext(function($ctx1) { 
var $1;
 $1=_st(self)._basicAt_("selector");
 return $1;
-}, self, "selector", [], smalltalk.CompiledMethod)},
+}, function($ctx1) {$ctx1.fill(self,"selector", [], smalltalk.CompiledMethod)})},
 args: [],
 source: "selector\x0a\x09^self basicAt: 'selector'",
 messageSends: ["basicAt:"],
@@ -593,7 +580,7 @@ category: 'accessing',
 fn: function (aString){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
_st(self)._basicAt_put_("selector",aString);
-return self}, self, "selector:", [aString], smalltalk.CompiledMethod)},
+return self}, function($ctx1) {$ctx1.fill(self,"selector:", [aString], smalltalk.CompiledMethod)})},
 args: ["aString"],
 source: "selector: aString\x0a\x09self basicAt: 'selector' put: aString",
 messageSends: ["basicAt:put:"],
@@ -616,7 +603,7 @@ $1="";
 $1=$2;
 };
 return $1;
-}, self, "source", [], smalltalk.CompiledMethod)},
+}, function($ctx1) {$ctx1.fill(self,"source", [], smalltalk.CompiledMethod)})},
 args: [],
 source: "source\x0a\x09^(self basicAt: 'source') ifNil: ['']",
 messageSends: ["ifNil:", "basicAt:"],
@@ -632,7 +619,7 @@ category: 'accessing',
 fn: function (aString){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
_st(self)._basicAt_put_("source",aString);
-return self}, self, "source:", [aString], smalltalk.CompiledMethod)},
+return self}, function($ctx1) {$ctx1.fill(self,"source:", [aString], smalltalk.CompiledMethod)})},
 args: ["aString"],
 source: "source: aString\x0a\x09self basicAt: 'source' put: aString",
 messageSends: ["basicAt:put:"],
@@ -653,7 +640,7 @@ fn: function (){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
_st(self["@worker"])._valueWithTimeout_((0));
 self["@poolSize"]=_st(self["@poolSize"]).__plus((1));
-return self}, self, "addWorker", [], smalltalk.ForkPool)},
+return self}, function($ctx1) {$ctx1.fill(self,"addWorker", [], smalltalk.ForkPool)})},
 args: [],
 source: "addWorker\x0a\x09worker valueWithTimeout: 0.\x0a    poolSize := poolSize + 1",
 messageSends: ["valueWithTimeout:", "+"],
@@ -671,7 +658,7 @@ var self=this;
 return smalltalk.withContext(function($ctx1) { 
var $1;
 $1=_st(_st(self)._class())._defaultMaxPoolSize();
 return $1;
-}, self, "defaultMaxPoolSize", [], smalltalk.ForkPool)},
+}, function($ctx1) {$ctx1.fill(self,"defaultMaxPoolSize", [], smalltalk.ForkPool)})},
 args: [],
 source: "defaultMaxPoolSize\x0a\x09^ self class defaultMaxPoolSize",
 messageSends: ["defaultMaxPoolSize", "class"],
@@ -692,7 +679,7 @@ if(smalltalk.assert($1)){
 _st(self)._addWorker();
 };
 _st(self["@queue"])._back_(aBlock);
-return self}, self, "fork:", [aBlock], smalltalk.ForkPool)},
+return self}, function($ctx1) {$ctx1.fill(self,"fork:", [aBlock], smalltalk.ForkPool)})},
 args: ["aBlock"],
 source: "fork: aBlock\x0a\x09poolSize < self maxPoolSize ifTrue: [ self addWorker ].\x0a\x09queue back: aBlock",
 messageSends: ["ifTrue:", "addWorker", "<", "maxPoolSize", "back:"],
@@ -711,7 +698,7 @@ return smalltalk.withContext(function($ctx1) { 
smalltalk.Object.fn.prototype._i
 self["@poolSize"]=(0);
 self["@queue"]=_st((smalltalk.Queue || Queue))._new();
 self["@worker"]=_st(self)._makeWorker();
-return self}, self, "initialize", [], smalltalk.ForkPool)},
+return self}, function($ctx1) {$ctx1.fill(self,"initialize", [], smalltalk.ForkPool)})},
 args: [],
 source: "initialize\x0a    super initialize.\x0a    \x0a\x09poolSize := 0.\x0a    queue := Queue new.\x0a    worker := self makeWorker",
 messageSends: ["initialize", "new", "makeWorker"],
@@ -726,28 +713,27 @@ selector: "makeWorker",
 category: 'initialization',
 fn: function (){
 var self=this;
+var sentinel;
 return smalltalk.withContext(function($ctx1) { 
var $2,$1;
-$ctx1.locals.sentinel=nil;
-$ctx1.locals.sentinel=_st((smalltalk.Object || Object))._new();
+sentinel=_st((smalltalk.Object || Object))._new();
 $1=(function(){
-return smalltalk.withContext(function($ctx2) { 
$ctx2.locals.block=nil;
-self["@poolSize"]=_st(self["@poolSize"]).__minus((1));
+return smalltalk.withContext(function($ctx2) {
self["@poolSize"]=_st(self["@poolSize"]).__minus((1));
 self["@poolSize"];
-$ctx2.locals.block=_st(self["@queue"])._frontIfAbsent_((function(){
-return smalltalk.withContext(function($ctx3) { 
return $ctx1.locals.sentinel;
-})}));
-$ctx2.locals.block;
-$2=_st($ctx2.locals.block).__eq_eq($ctx1.locals.sentinel);
+block=_st(self["@queue"])._frontIfAbsent_((function(){
+return smalltalk.withContext(function($ctx3) {
return sentinel;
+}, function($ctx3) {$ctx3.fill(null, null, {})})}));
+block;
+$2=_st(block).__eq_eq(sentinel);
 if(! smalltalk.assert($2)){
 return _st((function(){
-return smalltalk.withContext(function($ctx3) { 
return _st($ctx2.locals.block)._value();
-})}))._ensure_((function(){
-return smalltalk.withContext(function($ctx3) { 
return _st(self)._addWorker();
-})}));
+return smalltalk.withContext(function($ctx3) {
return _st(block)._value();
+}, function($ctx3) {$ctx3.fill(null, null, {})})}))._ensure_((function(){
+return smalltalk.withContext(function($ctx3) {
return _st(self)._addWorker();
+}, function($ctx3) {$ctx3.fill(null, null, {})})}));
 };
-})});
+}, function($ctx2) {$ctx2.fill(null, null, {})})});
 return $1;
-}, self, "makeWorker", [], smalltalk.ForkPool)},
+}, function($ctx1) {$ctx1.fill(self,"makeWorker", [], smalltalk.ForkPool)})},
 args: [],
 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 ]]]",
 messageSends: ["new", "-", "frontIfAbsent:", "ifFalse:", "ensure:", "addWorker", "value", "=="],
@@ -770,7 +756,7 @@ $1=_st(self)._defaultMaxPoolSize();
 $1=$2;
 };
 return $1;
-}, self, "maxPoolSize", [], smalltalk.ForkPool)},
+}, function($ctx1) {$ctx1.fill(self,"maxPoolSize", [], smalltalk.ForkPool)})},
 args: [],
 source: "maxPoolSize\x0a\x09^ maxPoolSize ifNil: [ self defaultMaxPoolSize ]",
 messageSends: ["ifNil:", "defaultMaxPoolSize"],
@@ -786,7 +772,7 @@ category: 'accessing',
 fn: function (anInteger){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
self["@maxPoolSize"]=anInteger;
-return self}, self, "maxPoolSize:", [anInteger], smalltalk.ForkPool)},
+return self}, function($ctx1) {$ctx1.fill(self,"maxPoolSize:", [anInteger], smalltalk.ForkPool)})},
 args: ["anInteger"],
 source: "maxPoolSize: anInteger\x0a\x09maxPoolSize := anInteger",
 messageSends: [],
@@ -812,7 +798,7 @@ $1=self["@default"];
 $1=$2;
 };
 return $1;
-}, self, "default", [], smalltalk.ForkPool.klass)},
+}, function($ctx1) {$ctx1.fill(self,"default", [], smalltalk.ForkPool.klass)})},
 args: [],
 source: "default\x0a\x09^default ifNil: [ default := self new ]",
 messageSends: ["ifNil:", "new"],
@@ -828,7 +814,7 @@ category: 'accessing',
 fn: function (){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
return (100);
-}, self, "defaultMaxPoolSize", [], smalltalk.ForkPool.klass)},
+}, function($ctx1) {$ctx1.fill(self,"defaultMaxPoolSize", [], smalltalk.ForkPool.klass)})},
 args: [],
 source: "defaultMaxPoolSize\x0a\x09^100",
 messageSends: [],
@@ -844,7 +830,7 @@ category: 'accessing',
 fn: function (){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
self["@default"]=nil;
-return self}, self, "resetDefault", [], smalltalk.ForkPool.klass)},
+return self}, function($ctx1) {$ctx1.fill(self,"resetDefault", [], smalltalk.ForkPool.klass)})},
 args: [],
 source: "resetDefault\x0a\x09default := nil",
 messageSends: [],
@@ -862,8 +848,10 @@ selector: "arguments",
 category: 'accessing',
 fn: function (){
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
return self["@arguments"];
-}, self, "arguments", [], smalltalk.Message)},
+return smalltalk.withContext(function($ctx1) { 
var $1;
+$1=self["@arguments"];
+return $1;
+}, function($ctx1) {$ctx1.fill(self,"arguments", [], smalltalk.Message)})},
 args: [],
 source: "arguments\x0a\x09^arguments",
 messageSends: [],
@@ -879,7 +867,7 @@ category: 'accessing',
 fn: function (anArray){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
self["@arguments"]=anArray;
-return self}, self, "arguments:", [anArray], smalltalk.Message)},
+return self}, function($ctx1) {$ctx1.fill(self,"arguments:", [anArray], smalltalk.Message)})},
 args: ["anArray"],
 source: "arguments: anArray\x0a\x09arguments := anArray",
 messageSends: [],
@@ -894,16 +882,17 @@ selector: "printString",
 category: 'printing',
 fn: function (){
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $2,$1;
+return smalltalk.withContext(function($ctx1) { 
var $2,$3,$1;
 $1=_st((smalltalk.String || String))._streamContents_((function(aStream){
-return smalltalk.withContext(function($ctx2) { 
_st(aStream)._nextPutAll_(smalltalk.Object.fn.prototype._printString.apply(_st(self), []));
-_st(aStream)._nextPutAll_("(");
-_st(aStream)._nextPutAll_(self["@selector"]);
-$2=_st(aStream)._nextPutAll_(")");
-return $2;
-})}));
+return smalltalk.withContext(function($ctx2) {
$2=aStream;
+_st($2)._nextPutAll_(smalltalk.Object.fn.prototype._printString.apply(_st(self), []));
+_st($2)._nextPutAll_("(");
+_st($2)._nextPutAll_(self["@selector"]);
+$3=_st($2)._nextPutAll_(")");
+return $3;
+}, function($ctx2) {$ctx2.fill(null, null, {})})}));
 return $1;
-}, self, "printString", [], smalltalk.Message)},
+}, function($ctx1) {$ctx1.fill(self,"printString", [], smalltalk.Message)})},
 args: [],
 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]",
 messageSends: ["streamContents:", "nextPutAll:", "printString"],
@@ -918,8 +907,10 @@ selector: "selector",
 category: 'accessing',
 fn: function (){
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
return self["@selector"];
-}, self, "selector", [], smalltalk.Message)},
+return smalltalk.withContext(function($ctx1) { 
var $1;
+$1=self["@selector"];
+return $1;
+}, function($ctx1) {$ctx1.fill(self,"selector", [], smalltalk.Message)})},
 args: [],
 source: "selector\x0a\x09^selector",
 messageSends: [],
@@ -935,7 +926,7 @@ category: 'accessing',
 fn: function (aString){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
self["@selector"]=aString;
-return self}, self, "selector:", [aString], smalltalk.Message)},
+return self}, function($ctx1) {$ctx1.fill(self,"selector:", [aString], smalltalk.Message)})},
 args: ["aString"],
 source: "selector: aString\x0a\x09selector := aString",
 messageSends: [],
@@ -953,7 +944,7 @@ var self=this;
 return smalltalk.withContext(function($ctx1) { 
var $1;
 $1=_st(anObject)._perform_withArguments_(_st(self)._selector(),_st(self)._arguments());
 return $1;
-}, self, "sendTo:", [anObject], smalltalk.Message)},
+}, function($ctx1) {$ctx1.fill(self,"sendTo:", [anObject], smalltalk.Message)})},
 args: ["anObject"],
 source: "sendTo: anObject\x0a\x09^ anObject perform: self selector withArguments: self arguments",
 messageSends: ["perform:withArguments:", "selector", "arguments"],
@@ -976,7 +967,7 @@ _st($2)._arguments_(anArray);
 $3=_st($2)._yourself();
 $1=$3;
 return $1;
-}, self, "selector:arguments:", [aString,anArray], smalltalk.Message.klass)},
+}, function($ctx1) {$ctx1.fill(self,"selector:arguments:", [aString,anArray], smalltalk.Message.klass)})},
 args: ["aString", "anArray"],
 source: "selector: aString arguments: anArray\x0a\x09^self new\x0a\x09\x09selector: aString;\x0a\x09\x09arguments: anArray;\x0a\x09\x09yourself",
 messageSends: ["selector:", "new", "arguments:", "yourself"],
@@ -997,7 +988,7 @@ var self=this;
 return smalltalk.withContext(function($ctx1) { 
var $1;
 $1=_st(_st(_st(_st(_st(self)._receiver())._class())._printString()).__comma(" >> ")).__comma(_st(self)._selector());
 return $1;
-}, self, "asString", [], smalltalk.MethodContext)},
+}, function($ctx1) {$ctx1.fill(self,"asString", [], smalltalk.MethodContext)})},
 args: [],
 source: "asString\x0a\x09^self receiver class printString, ' >> ', self selector",
 messageSends: [",", "selector", "printString", "class", "receiver"],
@@ -1013,8 +1004,7 @@ category: 'accessing',
 fn: function (){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
return self.homeContext;
-;
-return self}, self, "home", [], smalltalk.MethodContext)},
+return self}, function($ctx1) {$ctx1.fill(self,"home", [], smalltalk.MethodContext)})},
 args: [],
 source: "home\x0a\x09<return self.homeContext>",
 messageSends: [],
@@ -1032,7 +1022,7 @@ var self=this;
 return smalltalk.withContext(function($ctx1) { 
var $1;
 $1=_st(_st(self)._selector())._isNil();
 return $1;
-}, self, "isBlockContext", [], smalltalk.MethodContext)},
+}, function($ctx1) {$ctx1.fill(self,"isBlockContext", [], smalltalk.MethodContext)})},
 args: [],
 source: "isBlockContext\x0a\x09\x22Block context do not have selectors.\x22\x0a    \x0a\x09^ self selector isNil",
 messageSends: ["isNil", "selector"],
@@ -1048,8 +1038,7 @@ category: 'accessing',
 fn: function (){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
return self.locals;
-;
-return self}, self, "locals", [], smalltalk.MethodContext)},
+return self}, function($ctx1) {$ctx1.fill(self,"locals", [], smalltalk.MethodContext)})},
 args: [],
 source: "locals\x0a\x09<return self.locals>",
 messageSends: [],
@@ -1072,7 +1061,7 @@ return $2;
 };
 $3=_st(self)._outerContext();
 return $3;
-}, self, "methodContext", [], smalltalk.MethodContext)},
+}, function($ctx1) {$ctx1.fill(self,"methodContext", [], smalltalk.MethodContext)})},
 args: [],
 source: "methodContext\x0a\x09self isBlockContext ifFalse: [ ^ self ].\x0a    \x0a    ^ self outerContext",
 messageSends: ["ifFalse:", "isBlockContext", "outerContext"],
@@ -1090,7 +1079,7 @@ var self=this;
 return smalltalk.withContext(function($ctx1) { 
var $1;
 $1=_st(self)._home();
 return $1;
-}, self, "outerContext", [], smalltalk.MethodContext)},
+}, function($ctx1) {$ctx1.fill(self,"outerContext", [], smalltalk.MethodContext)})},
 args: [],
 source: "outerContext\x0a\x09^ self home",
 messageSends: ["home"],
@@ -1106,8 +1095,7 @@ category: 'accessing',
 fn: function (){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
return self.pc;
-;
-return self}, self, "pc", [], smalltalk.MethodContext)},
+return self}, function($ctx1) {$ctx1.fill(self,"pc", [], smalltalk.MethodContext)})},
 args: [],
 source: "pc\x0a\x09<return self.pc>",
 messageSends: [],
@@ -1125,7 +1113,7 @@ var self=this;
 return smalltalk.withContext(function($ctx1) { 
var $1;
 $1=_st(_st(_st(smalltalk.Object.fn.prototype._printString.apply(_st(self), [])).__comma("(")).__comma(_st(self)._asString())).__comma(")");
 return $1;
-}, self, "printString", [], smalltalk.MethodContext)},
+}, function($ctx1) {$ctx1.fill(self,"printString", [], smalltalk.MethodContext)})},
 args: [],
 source: "printString\x0a\x09^super printString, '(', self asString, ')'",
 messageSends: [",", "asString", "printString"],
@@ -1141,8 +1129,7 @@ category: 'accessing',
 fn: function (){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
return self.receiver;
-;
-return self}, self, "receiver", [], smalltalk.MethodContext)},
+return self}, function($ctx1) {$ctx1.fill(self,"receiver", [], smalltalk.MethodContext)})},
 args: [],
 source: "receiver\x0a\x09<return self.receiver>",
 messageSends: [],
@@ -1164,8 +1151,7 @@ return smalltalk.withContext(function($ctx1) {
         	return nil;
         }
     ;
-;
-return self}, self, "selector", [], smalltalk.MethodContext)},
+return self}, function($ctx1) {$ctx1.fill(self,"selector", [], smalltalk.MethodContext)})},
 args: [],
 source: "selector\x0a\x09<\x0a    \x09if(self.selector) {\x0a        \x09return smalltalk.convertSelector(self.selector);\x0a        } else {\x0a        \x09return nil;\x0a        }\x0a    >",
 messageSends: [],
@@ -1184,7 +1170,7 @@ return smalltalk.withContext(function($ctx1) { 
var $1;
 _st(self)._deprecatedAPI();
 $1=_st(self)._locals();
 return $1;
-}, self, "temps", [], smalltalk.MethodContext)},
+}, function($ctx1) {$ctx1.fill(self,"temps", [], smalltalk.MethodContext)})},
 args: [],
 source: "temps\x0a\x09self deprecatedAPI.\x0a    \x0a\x09^ self locals",
 messageSends: ["deprecatedAPI", "locals"],

Filskillnaden har hållts tillbaka eftersom den är för stor
+ 124 - 124
js/Kernel-Objects.deploy.js


Filskillnaden har hållts tillbaka eftersom den är för stor
+ 124 - 124
js/Kernel-Objects.js


Filskillnaden har hållts tillbaka eftersom den är för stor
+ 286 - 294
js/Kernel-Tests.deploy.js


Filskillnaden har hållts tillbaka eftersom den är för stor
+ 286 - 294
js/Kernel-Tests.js


+ 15 - 14
js/Kernel-Transcript.deploy.js

@@ -6,7 +6,7 @@ smalltalk.method({
 selector: "clear",
 fn: function (){
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
return self}, self, "clear", [], smalltalk.ConsoleTranscript)}
+return smalltalk.withContext(function($ctx1) { 
return self}, function($ctx1) {$ctx1.fill(self,"clear", [], smalltalk.ConsoleTranscript)})}
 }),
 smalltalk.ConsoleTranscript);
 
@@ -16,7 +16,7 @@ smalltalk.method({
 selector: "cr",
 fn: function (){
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
return self}, self, "cr", [], smalltalk.ConsoleTranscript)}
+return smalltalk.withContext(function($ctx1) { 
return self}, function($ctx1) {$ctx1.fill(self,"cr", [], smalltalk.ConsoleTranscript)})}
 }),
 smalltalk.ConsoleTranscript);
 
@@ -26,7 +26,7 @@ smalltalk.method({
 selector: "open",
 fn: function (){
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
return self}, self, "open", [], smalltalk.ConsoleTranscript)}
+return smalltalk.withContext(function($ctx1) { 
return self}, function($ctx1) {$ctx1.fill(self,"open", [], smalltalk.ConsoleTranscript)})}
 }),
 smalltalk.ConsoleTranscript);
 
@@ -37,8 +37,7 @@ selector: "show:",
 fn: function (anObject){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
console.log(String(string._asString()));
-;
-return self}, self, "show:", [anObject], smalltalk.ConsoleTranscript)}
+return self}, function($ctx1) {$ctx1.fill(self,"show:", [anObject], smalltalk.ConsoleTranscript)})}
 }),
 smalltalk.ConsoleTranscript);
 
@@ -50,7 +49,7 @@ selector: "initialize",
 fn: function (){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
_st((smalltalk.Transcript || Transcript))._register_(_st(self)._new());
-return self}, self, "initialize", [], smalltalk.ConsoleTranscript.klass)}
+return self}, function($ctx1) {$ctx1.fill(self,"initialize", [], smalltalk.ConsoleTranscript.klass)})}
 }),
 smalltalk.ConsoleTranscript.klass);
 
@@ -65,7 +64,7 @@ selector: "clear",
 fn: function (){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
_st(_st(self)._current())._clear();
-return self}, self, "clear", [], smalltalk.Transcript.klass)}
+return self}, function($ctx1) {$ctx1.fill(self,"clear", [], smalltalk.Transcript.klass)})}
 }),
 smalltalk.Transcript.klass);
 
@@ -76,7 +75,7 @@ selector: "cr",
 fn: function (){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
_st(_st(self)._current())._show_(_st((smalltalk.String || String))._cr());
-return self}, self, "cr", [], smalltalk.Transcript.klass)}
+return self}, function($ctx1) {$ctx1.fill(self,"cr", [], smalltalk.Transcript.klass)})}
 }),
 smalltalk.Transcript.klass);
 
@@ -86,8 +85,10 @@ smalltalk.method({
 selector: "current",
 fn: function (){
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
return self["@current"];
-}, self, "current", [], smalltalk.Transcript.klass)}
+return smalltalk.withContext(function($ctx1) { 
var $1;
+$1=self["@current"];
+return $1;
+}, function($ctx1) {$ctx1.fill(self,"current", [], smalltalk.Transcript.klass)})}
 }),
 smalltalk.Transcript.klass);
 
@@ -98,7 +99,7 @@ selector: "new",
 fn: function (){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
_st(self)._shouldNotImplement();
-return self}, self, "new", [], smalltalk.Transcript.klass)}
+return self}, function($ctx1) {$ctx1.fill(self,"new", [], smalltalk.Transcript.klass)})}
 }),
 smalltalk.Transcript.klass);
 
@@ -109,7 +110,7 @@ selector: "open",
 fn: function (){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
_st(_st(self)._current())._open();
-return self}, self, "open", [], smalltalk.Transcript.klass)}
+return self}, function($ctx1) {$ctx1.fill(self,"open", [], smalltalk.Transcript.klass)})}
 }),
 smalltalk.Transcript.klass);
 
@@ -120,7 +121,7 @@ selector: "register:",
 fn: function (aTranscript){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
self["@current"]=aTranscript;
-return self}, self, "register:", [aTranscript], smalltalk.Transcript.klass)}
+return self}, function($ctx1) {$ctx1.fill(self,"register:", [aTranscript], smalltalk.Transcript.klass)})}
 }),
 smalltalk.Transcript.klass);
 
@@ -131,7 +132,7 @@ selector: "show:",
 fn: function (anObject){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
_st(_st(self)._current())._show_(anObject);
-return self}, self, "show:", [anObject], smalltalk.Transcript.klass)}
+return self}, function($ctx1) {$ctx1.fill(self,"show:", [anObject], smalltalk.Transcript.klass)})}
 }),
 smalltalk.Transcript.klass);
 

+ 15 - 14
js/Kernel-Transcript.js

@@ -7,7 +7,7 @@ selector: "clear",
 category: 'printing',
 fn: function (){
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
return self}, self, "clear", [], smalltalk.ConsoleTranscript)},
+return smalltalk.withContext(function($ctx1) { 
return self}, function($ctx1) {$ctx1.fill(self,"clear", [], smalltalk.ConsoleTranscript)})},
 args: [],
 source: "clear\x0a\x09\x22no op\x22",
 messageSends: [],
@@ -22,7 +22,7 @@ selector: "cr",
 category: 'printing',
 fn: function (){
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
return self}, self, "cr", [], smalltalk.ConsoleTranscript)},
+return smalltalk.withContext(function($ctx1) { 
return self}, function($ctx1) {$ctx1.fill(self,"cr", [], smalltalk.ConsoleTranscript)})},
 args: [],
 source: "cr\x0a\x09\x22no op\x22",
 messageSends: [],
@@ -37,7 +37,7 @@ selector: "open",
 category: 'actions',
 fn: function (){
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
return self}, self, "open", [], smalltalk.ConsoleTranscript)},
+return smalltalk.withContext(function($ctx1) { 
return self}, function($ctx1) {$ctx1.fill(self,"open", [], smalltalk.ConsoleTranscript)})},
 args: [],
 source: "open",
 messageSends: [],
@@ -53,8 +53,7 @@ category: 'printing',
 fn: function (anObject){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
console.log(String(string._asString()));
-;
-return self}, self, "show:", [anObject], smalltalk.ConsoleTranscript)},
+return self}, function($ctx1) {$ctx1.fill(self,"show:", [anObject], smalltalk.ConsoleTranscript)})},
 args: ["anObject"],
 source: "show: anObject\x0a\x09<console.log(String(string._asString()))>",
 messageSends: [],
@@ -71,7 +70,7 @@ category: 'initialization',
 fn: function (){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
_st((smalltalk.Transcript || Transcript))._register_(_st(self)._new());
-return self}, self, "initialize", [], smalltalk.ConsoleTranscript.klass)},
+return self}, function($ctx1) {$ctx1.fill(self,"initialize", [], smalltalk.ConsoleTranscript.klass)})},
 args: [],
 source: "initialize\x0a\x09Transcript register: self new",
 messageSends: ["register:", "new"],
@@ -91,7 +90,7 @@ category: 'printing',
 fn: function (){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
_st(_st(self)._current())._clear();
-return self}, self, "clear", [], smalltalk.Transcript.klass)},
+return self}, function($ctx1) {$ctx1.fill(self,"clear", [], smalltalk.Transcript.klass)})},
 args: [],
 source: "clear\x0a    self current clear",
 messageSends: ["clear", "current"],
@@ -107,7 +106,7 @@ category: 'printing',
 fn: function (){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
_st(_st(self)._current())._show_(_st((smalltalk.String || String))._cr());
-return self}, self, "cr", [], smalltalk.Transcript.klass)},
+return self}, function($ctx1) {$ctx1.fill(self,"cr", [], smalltalk.Transcript.klass)})},
 args: [],
 source: "cr\x0a    self current show: String cr",
 messageSends: ["show:", "cr", "current"],
@@ -122,8 +121,10 @@ selector: "current",
 category: 'instance creation',
 fn: function (){
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
return self["@current"];
-}, self, "current", [], smalltalk.Transcript.klass)},
+return smalltalk.withContext(function($ctx1) { 
var $1;
+$1=self["@current"];
+return $1;
+}, function($ctx1) {$ctx1.fill(self,"current", [], smalltalk.Transcript.klass)})},
 args: [],
 source: "current\x0a    ^current",
 messageSends: [],
@@ -139,7 +140,7 @@ category: 'instance creation',
 fn: function (){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
_st(self)._shouldNotImplement();
-return self}, self, "new", [], smalltalk.Transcript.klass)},
+return self}, function($ctx1) {$ctx1.fill(self,"new", [], smalltalk.Transcript.klass)})},
 args: [],
 source: "new\x0a    self shouldNotImplement",
 messageSends: ["shouldNotImplement"],
@@ -155,7 +156,7 @@ category: 'instance creation',
 fn: function (){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
_st(_st(self)._current())._open();
-return self}, self, "open", [], smalltalk.Transcript.klass)},
+return self}, function($ctx1) {$ctx1.fill(self,"open", [], smalltalk.Transcript.klass)})},
 args: [],
 source: "open\x0a    self current open",
 messageSends: ["open", "current"],
@@ -171,7 +172,7 @@ category: 'instance creation',
 fn: function (aTranscript){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
self["@current"]=aTranscript;
-return self}, self, "register:", [aTranscript], smalltalk.Transcript.klass)},
+return self}, function($ctx1) {$ctx1.fill(self,"register:", [aTranscript], smalltalk.Transcript.klass)})},
 args: ["aTranscript"],
 source: "register: aTranscript\x0a\x09current := aTranscript",
 messageSends: [],
@@ -187,7 +188,7 @@ category: 'printing',
 fn: function (anObject){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
_st(_st(self)._current())._show_(anObject);
-return self}, self, "show:", [anObject], smalltalk.Transcript.klass)},
+return self}, function($ctx1) {$ctx1.fill(self,"show:", [anObject], smalltalk.Transcript.klass)})},
 args: ["anObject"],
 source: "show: anObject\x0a    self current show: anObject",
 messageSends: ["show:", "current"],

+ 104 - 110
js/SUnit-Tests.deploy.js

@@ -8,7 +8,7 @@ fn: function (){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
self["@empty"]=_st((smalltalk.Set || Set))._new();
 self["@full"]=_st((smalltalk.Set || Set))._with_with_((5),smalltalk.symbolFor("abc"));
-return self}, self, "setUp", [], smalltalk.ExampleSetTest)}
+return self}, function($ctx1) {$ctx1.fill(self,"setUp", [], smalltalk.ExampleSetTest)})}
 }),
 smalltalk.ExampleSetTest);
 
@@ -20,7 +20,7 @@ fn: function (){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
_st(self["@empty"])._add_((5));
 _st(self)._assert_(_st(self["@empty"])._includes_((5)));
-return self}, self, "testAdd", [], smalltalk.ExampleSetTest)}
+return self}, function($ctx1) {$ctx1.fill(self,"testAdd", [], smalltalk.ExampleSetTest)})}
 }),
 smalltalk.ExampleSetTest);
 
@@ -32,7 +32,7 @@ fn: function (){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
_st(self["@empty"])._addAll_(_st((1))._to_((100)));
 _st(self)._assert_(_st(_st(self["@empty"])._size()).__eq((100)));
-return self}, self, "testGrow", [], smalltalk.ExampleSetTest)}
+return self}, function($ctx1) {$ctx1.fill(self,"testGrow", [], smalltalk.ExampleSetTest)})}
 }),
 smalltalk.ExampleSetTest);
 
@@ -43,12 +43,12 @@ selector: "testIllegal",
 fn: function (){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
_st(self)._should_raise_((function(){
-return smalltalk.withContext(function($ctx2) { 
return _st(self["@empty"])._at_((5));
-})}),(smalltalk.Error || Error));
+return smalltalk.withContext(function($ctx2) {
return _st(self["@empty"])._at_((5));
+}, function($ctx2) {$ctx2.fill(null, null, {})})}),(smalltalk.Error || Error));
 _st(self)._should_raise_((function(){
-return smalltalk.withContext(function($ctx2) { 
return _st(self["@empty"])._at_put_((5),smalltalk.symbolFor("abc"));
-})}),(smalltalk.Error || Error));
-return self}, self, "testIllegal", [], smalltalk.ExampleSetTest)}
+return smalltalk.withContext(function($ctx2) {
return _st(self["@empty"])._at_put_((5),smalltalk.symbolFor("abc"));
+}, function($ctx2) {$ctx2.fill(null, null, {})})}),(smalltalk.Error || Error));
+return self}, function($ctx1) {$ctx1.fill(self,"testIllegal", [], smalltalk.ExampleSetTest)})}
 }),
 smalltalk.ExampleSetTest);
 
@@ -60,7 +60,7 @@ fn: function (){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
_st(self)._assert_(_st(self["@full"])._includes_((5)));
 _st(self)._assert_(_st(self["@full"])._includes_(smalltalk.symbolFor("abc")));
-return self}, self, "testIncludes", [], smalltalk.ExampleSetTest)}
+return self}, function($ctx1) {$ctx1.fill(self,"testIncludes", [], smalltalk.ExampleSetTest)})}
 }),
 smalltalk.ExampleSetTest);
 
@@ -74,7 +74,7 @@ return smalltalk.withContext(function($ctx1) { 
_st(self)._assert_(_st(_st(self[
 _st(self)._assert_(_st(_st(self["@full"])._occurrencesOf_((5))).__eq((1)));
 _st(self["@full"])._add_((5));
 _st(self)._assert_(_st(_st(self["@full"])._occurrencesOf_((5))).__eq((1)));
-return self}, self, "testOccurrences", [], smalltalk.ExampleSetTest)}
+return self}, function($ctx1) {$ctx1.fill(self,"testOccurrences", [], smalltalk.ExampleSetTest)})}
 }),
 smalltalk.ExampleSetTest);
 
@@ -87,7 +87,7 @@ var self=this;
 return smalltalk.withContext(function($ctx1) { 
_st(self["@full"])._remove_((5));
 _st(self)._assert_(_st(self["@full"])._includes_(smalltalk.symbolFor("abc")));
 _st(self)._deny_(_st(self["@full"])._includes_((5)));
-return self}, self, "testRemove", [], smalltalk.ExampleSetTest)}
+return self}, function($ctx1) {$ctx1.fill(self,"testRemove", [], smalltalk.ExampleSetTest)})}
 }),
 smalltalk.ExampleSetTest);
 
@@ -103,11 +103,11 @@ var self=this;
 return smalltalk.withContext(function($ctx1) { 
self["@flag"]="bad";
 _st(self)._timeout_((10));
 self["@flag"]=_st(_st(self)._async_((function(){
-return smalltalk.withContext(function($ctx2) { 
self["@flag"]="ok";
+return smalltalk.withContext(function($ctx2) {
self["@flag"]="ok";
 self["@flag"];
 return _st(self)._error_("Intentional");
-})})))._valueWithTimeout_((5));
-return self}, self, "fakeError", [], smalltalk.SUnitAsyncTest)}
+}, function($ctx2) {$ctx2.fill(null, null, {})})})))._valueWithTimeout_((5));
+return self}, function($ctx1) {$ctx1.fill(self,"fakeError", [], smalltalk.SUnitAsyncTest)})}
 }),
 smalltalk.SUnitAsyncTest);
 
@@ -120,9 +120,9 @@ var self=this;
 return smalltalk.withContext(function($ctx1) { 
self["@flag"]="bad";
 _st(self)._timeout_((10));
 self["@flag"]=_st(_st(self)._async_((function(){
-return smalltalk.withContext(function($ctx2) { 
return _st(self)._error_("Intentional");
-})})))._valueWithTimeout_((5));
-return self}, self, "fakeErrorFailingInTearDown", [], smalltalk.SUnitAsyncTest)}
+return smalltalk.withContext(function($ctx2) {
return _st(self)._error_("Intentional");
+}, function($ctx2) {$ctx2.fill(null, null, {})})})))._valueWithTimeout_((5));
+return self}, function($ctx1) {$ctx1.fill(self,"fakeErrorFailingInTearDown", [], smalltalk.SUnitAsyncTest)})}
 }),
 smalltalk.SUnitAsyncTest);
 
@@ -135,11 +135,11 @@ var self=this;
 return smalltalk.withContext(function($ctx1) { 
self["@flag"]="bad";
 _st(self)._timeout_((10));
 self["@flag"]=_st(_st(self)._async_((function(){
-return smalltalk.withContext(function($ctx2) { 
self["@flag"]="ok";
+return smalltalk.withContext(function($ctx2) {
self["@flag"]="ok";
 self["@flag"];
 return _st(self)._assert_(false);
-})})))._valueWithTimeout_((5));
-return self}, self, "fakeFailure", [], smalltalk.SUnitAsyncTest)}
+}, function($ctx2) {$ctx2.fill(null, null, {})})})))._valueWithTimeout_((5));
+return self}, function($ctx1) {$ctx1.fill(self,"fakeFailure", [], smalltalk.SUnitAsyncTest)})}
 }),
 smalltalk.SUnitAsyncTest);
 
@@ -151,12 +151,12 @@ fn: function (){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
_st(self)._timeout_((100));
 _st(_st(self)._async_((function(){
-return smalltalk.withContext(function($ctx2) { 
_st(self)._timeout_((5));
+return smalltalk.withContext(function($ctx2) {
_st(self)._timeout_((5));
 return _st(_st(self)._async_((function(){
-return smalltalk.withContext(function($ctx3) { 
return _st(self)._finished();
-})})))._valueWithTimeout_((10));
-})})))._valueWithTimeout_((5));
-return self}, self, "fakeMultipleTimeoutFailing", [], smalltalk.SUnitAsyncTest)}
+return smalltalk.withContext(function($ctx3) {
return _st(self)._finished();
+}, function($ctx3) {$ctx3.fill(null, null, {})})})))._valueWithTimeout_((10));
+}, function($ctx2) {$ctx2.fill(null, null, {})})})))._valueWithTimeout_((5));
+return self}, function($ctx1) {$ctx1.fill(self,"fakeMultipleTimeoutFailing", [], smalltalk.SUnitAsyncTest)})}
 }),
 smalltalk.SUnitAsyncTest);
 
@@ -168,12 +168,12 @@ fn: function (){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
_st(self)._timeout_((10));
 _st(_st(self)._async_((function(){
-return smalltalk.withContext(function($ctx2) { 
_st(self)._timeout_((20));
+return smalltalk.withContext(function($ctx2) {
_st(self)._timeout_((20));
 return _st(_st(self)._async_((function(){
-return smalltalk.withContext(function($ctx3) { 
return _st(self)._finished();
-})})))._valueWithTimeout_((10));
-})})))._valueWithTimeout_((5));
-return self}, self, "fakeMultipleTimeoutPassing", [], smalltalk.SUnitAsyncTest)}
+return smalltalk.withContext(function($ctx3) {
return _st(self)._finished();
+}, function($ctx3) {$ctx3.fill(null, null, {})})})))._valueWithTimeout_((10));
+}, function($ctx2) {$ctx2.fill(null, null, {})})})))._valueWithTimeout_((5));
+return self}, function($ctx1) {$ctx1.fill(self,"fakeMultipleTimeoutPassing", [], smalltalk.SUnitAsyncTest)})}
 }),
 smalltalk.SUnitAsyncTest);
 
@@ -185,9 +185,9 @@ fn: function (){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
_st(self)._timeout_((4));
 _st(_st(self)._async_((function(){
-return smalltalk.withContext(function($ctx2) { 
return _st(self)._finished();
-})})))._valueWithTimeout_((5));
-return self}, self, "fakeTimeout", [], smalltalk.SUnitAsyncTest)}
+return smalltalk.withContext(function($ctx2) {
return _st(self)._finished();
+}, function($ctx2) {$ctx2.fill(null, null, {})})})))._valueWithTimeout_((5));
+return self}, function($ctx1) {$ctx1.fill(self,"fakeTimeout", [], smalltalk.SUnitAsyncTest)})}
 }),
 smalltalk.SUnitAsyncTest);
 
@@ -198,7 +198,7 @@ selector: "setUp",
 fn: function (){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
self["@flag"]="ok";
-return self}, self, "setUp", [], smalltalk.SUnitAsyncTest)}
+return self}, function($ctx1) {$ctx1.fill(self,"setUp", [], smalltalk.SUnitAsyncTest)})}
 }),
 smalltalk.SUnitAsyncTest);
 
@@ -210,10 +210,10 @@ fn: function (aCollection){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
var $1;
 $1=_st(_st(aCollection)._collect_((function(each){
-return smalltalk.withContext(function($ctx2) { 
return _st(each)._selector();
-})})))._sorted();
+return smalltalk.withContext(function($ctx2) {
return _st(each)._selector();
+}, function($ctx2) {$ctx2.fill(null, null, {})})})))._sorted();
 return $1;
-}, self, "sortedSelectors:", [aCollection], smalltalk.SUnitAsyncTest)}
+}, function($ctx1) {$ctx1.fill(self,"sortedSelectors:", [aCollection], smalltalk.SUnitAsyncTest)})}
 }),
 smalltalk.SUnitAsyncTest);
 
@@ -224,7 +224,7 @@ selector: "tearDown",
 fn: function (){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
_st(self)._assert_equals_("ok",self["@flag"]);
-return self}, self, "tearDown", [], smalltalk.SUnitAsyncTest)}
+return self}, function($ctx1) {$ctx1.fill(self,"tearDown", [], smalltalk.SUnitAsyncTest)})}
 }),
 smalltalk.SUnitAsyncTest);
 
@@ -234,35 +234,32 @@ smalltalk.method({
 selector: "testAsyncErrorsAndFailures",
 fn: function (){
 var self=this;
+var suite,runner,result,assertBlock;
 return smalltalk.withContext(function($ctx1) { 
var $1,$2,$4,$6,$5,$3;
-$ctx1.locals.suite=nil;
-$ctx1.locals.runner=nil;
-$ctx1.locals.result=nil;
-$ctx1.locals.assertBlock=nil;
-$ctx1.locals.suite=_st(["fakeError", "fakeErrorFailingInTearDown", "fakeFailure", "testPass"])._collect_((function(each){
-return smalltalk.withContext(function($ctx2) { 
return _st(_st(self)._class())._selector_(each);
-})}));
-$ctx1.locals.runner=_st((smalltalk.TestSuiteRunner || TestSuiteRunner))._on_($ctx1.locals.suite);
+suite=_st(["fakeError", "fakeErrorFailingInTearDown", "fakeFailure", "testPass"])._collect_((function(each){
+return smalltalk.withContext(function($ctx2) {
return _st(_st(self)._class())._selector_(each);
+}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+runner=_st((smalltalk.TestSuiteRunner || TestSuiteRunner))._on_(suite);
 _st(self)._timeout_((200));
-$ctx1.locals.result=_st($ctx1.locals.runner)._result();
-$ctx1.locals.assertBlock=_st(self)._async_((function(){
-return smalltalk.withContext(function($ctx2) { 
_st(self)._assert_equals_(["fakeError"],_st(self)._sortedSelectors_(_st($ctx1.locals.result)._errors()));
-_st(self)._assert_equals_(["fakeErrorFailingInTearDown", "fakeFailure"],_st(self)._sortedSelectors_(_st($ctx1.locals.result)._failures()));
+result=_st(runner)._result();
+assertBlock=_st(self)._async_((function(){
+return smalltalk.withContext(function($ctx2) {
_st(self)._assert_equals_(["fakeError"],_st(self)._sortedSelectors_(_st(result)._errors()));
+_st(self)._assert_equals_(["fakeErrorFailingInTearDown", "fakeFailure"],_st(self)._sortedSelectors_(_st(result)._failures()));
 return _st(self)._finished();
-})}));
-$1=_st($ctx1.locals.runner)._announcer();
+}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+$1=_st(runner)._announcer();
 $2=(smalltalk.ResultAnnouncement || ResultAnnouncement);
 $3=(function(ann){
-return smalltalk.withContext(function($ctx2) { 
$4=_st(_st(ann)._result()).__eq_eq($ctx1.locals.result);
+return smalltalk.withContext(function($ctx2) {
$4=_st(_st(ann)._result()).__eq_eq(result);
 $5=(function(){
-return smalltalk.withContext(function($ctx3) { 
$6=_st(_st($ctx1.locals.result)._runs()).__eq(_st($ctx1.locals.result)._total());
-return _st($6)._ifTrue_($ctx1.locals.assertBlock);
-})});
+return smalltalk.withContext(function($ctx3) {
$6=_st(_st(result)._runs()).__eq(_st(result)._total());
+return _st($6)._ifTrue_(assertBlock);
+}, function($ctx3) {$ctx3.fill(null, null, {})})});
 return _st($4)._ifTrue_($5);
-})});
+}, function($ctx2) {$ctx2.fill(null, null, {})})});
 _st($1)._on_do_($2,$3);
-_st($ctx1.locals.runner)._run();
-return self}, self, "testAsyncErrorsAndFailures", [], smalltalk.SUnitAsyncTest)}
+_st(runner)._run();
+return self}, function($ctx1) {$ctx1.fill(self,"testAsyncErrorsAndFailures", [], smalltalk.SUnitAsyncTest)})}
 }),
 smalltalk.SUnitAsyncTest);
 
@@ -273,16 +270,16 @@ selector: "testAsyncNeedsTimeout",
 fn: function (){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
_st(self)._should_raise_((function(){
-return smalltalk.withContext(function($ctx2) { 
return _st(self)._async_((function(){
-return smalltalk.withContext(function($ctx3) { 
})}));
-})}),(smalltalk.Error || Error));
+return smalltalk.withContext(function($ctx2) {
return _st(self)._async_((function(){
+return smalltalk.withContext(function($ctx3) {
}, function($ctx3) {$ctx3.fill(null, null, {})})}));
+}, function($ctx2) {$ctx2.fill(null, null, {})})}),(smalltalk.Error || Error));
 _st(self)._timeout_((0));
 _st(self)._shouldnt_raise_((function(){
-return smalltalk.withContext(function($ctx2) { 
return _st(self)._async_((function(){
-return smalltalk.withContext(function($ctx3) { 
})}));
-})}),(smalltalk.Error || Error));
+return smalltalk.withContext(function($ctx2) {
return _st(self)._async_((function(){
+return smalltalk.withContext(function($ctx3) {
}, function($ctx3) {$ctx3.fill(null, null, {})})}));
+}, function($ctx2) {$ctx2.fill(null, null, {})})}),(smalltalk.Error || Error));
 _st(self)._finished();
-return self}, self, "testAsyncNeedsTimeout", [], smalltalk.SUnitAsyncTest)}
+return self}, function($ctx1) {$ctx1.fill(self,"testAsyncNeedsTimeout", [], smalltalk.SUnitAsyncTest)})}
 }),
 smalltalk.SUnitAsyncTest);
 
@@ -293,13 +290,13 @@ selector: "testFinishedNeedsTimeout",
 fn: function (){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
_st(self)._should_raise_((function(){
-return smalltalk.withContext(function($ctx2) { 
return _st(self)._finished();
-})}),(smalltalk.Error || Error));
+return smalltalk.withContext(function($ctx2) {
return _st(self)._finished();
+}, function($ctx2) {$ctx2.fill(null, null, {})})}),(smalltalk.Error || Error));
 _st(self)._timeout_((0));
 _st(self)._shouldnt_raise_((function(){
-return smalltalk.withContext(function($ctx2) { 
return _st(self)._finished();
-})}),(smalltalk.Error || Error));
-return self}, self, "testFinishedNeedsTimeout", [], smalltalk.SUnitAsyncTest)}
+return smalltalk.withContext(function($ctx2) {
return _st(self)._finished();
+}, function($ctx2) {$ctx2.fill(null, null, {})})}),(smalltalk.Error || Error));
+return self}, function($ctx1) {$ctx1.fill(self,"testFinishedNeedsTimeout", [], smalltalk.SUnitAsyncTest)})}
 }),
 smalltalk.SUnitAsyncTest);
 
@@ -314,7 +311,7 @@ _st(self)._timeout_((0));
 _st(self)._assert_(_st(self)._isAsync());
 _st(self)._finished();
 _st(self)._deny_(_st(self)._isAsync());
-return self}, self, "testIsAsyncReturnsCorrectValues", [], smalltalk.SUnitAsyncTest)}
+return self}, function($ctx1) {$ctx1.fill(self,"testIsAsyncReturnsCorrectValues", [], smalltalk.SUnitAsyncTest)})}
 }),
 smalltalk.SUnitAsyncTest);
 
@@ -327,12 +324,12 @@ var self=this;
 return smalltalk.withContext(function($ctx1) { 
self["@flag"]="bad";
 _st(self)._timeout_((10));
 self["@flag"]=_st(_st(self)._async_((function(){
-return smalltalk.withContext(function($ctx2) { 
_st(self)._assert_(true);
+return smalltalk.withContext(function($ctx2) {
_st(self)._assert_(true);
 _st(self)._finished();
 self["@flag"]="ok";
 return self["@flag"];
-})})))._valueWithTimeout_((5));
-return self}, self, "testPass", [], smalltalk.SUnitAsyncTest)}
+}, function($ctx2) {$ctx2.fill(null, null, {})})})))._valueWithTimeout_((5));
+return self}, function($ctx1) {$ctx1.fill(self,"testPass", [], smalltalk.SUnitAsyncTest)})}
 }),
 smalltalk.SUnitAsyncTest);
 
@@ -342,35 +339,32 @@ smalltalk.method({
 selector: "testTimeouts",
 fn: function (){
 var self=this;
+var suite,runner,result,assertBlock;
 return smalltalk.withContext(function($ctx1) { 
var $1,$2,$4,$6,$5,$3;
-$ctx1.locals.suite=nil;
-$ctx1.locals.runner=nil;
-$ctx1.locals.result=nil;
-$ctx1.locals.assertBlock=nil;
-$ctx1.locals.suite=_st(["fakeTimeout", "fakeMultipleTimeoutFailing", "fakeMultipleTimeoutPassing", "testPass"])._collect_((function(each){
-return smalltalk.withContext(function($ctx2) { 
return _st(_st(self)._class())._selector_(each);
-})}));
-$ctx1.locals.runner=_st((smalltalk.TestSuiteRunner || TestSuiteRunner))._on_($ctx1.locals.suite);
+suite=_st(["fakeTimeout", "fakeMultipleTimeoutFailing", "fakeMultipleTimeoutPassing", "testPass"])._collect_((function(each){
+return smalltalk.withContext(function($ctx2) {
return _st(_st(self)._class())._selector_(each);
+}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+runner=_st((smalltalk.TestSuiteRunner || TestSuiteRunner))._on_(suite);
 _st(self)._timeout_((200));
-$ctx1.locals.result=_st($ctx1.locals.runner)._result();
-$ctx1.locals.assertBlock=_st(self)._async_((function(){
-return smalltalk.withContext(function($ctx2) { 
_st(self)._assert_(_st(_st($ctx1.locals.result)._errors())._isEmpty());
-_st(self)._assert_equals_(["fakeMultipleTimeoutFailing", "fakeTimeout"],_st(self)._sortedSelectors_(_st($ctx1.locals.result)._failures()));
+result=_st(runner)._result();
+assertBlock=_st(self)._async_((function(){
+return smalltalk.withContext(function($ctx2) {
_st(self)._assert_(_st(_st(result)._errors())._isEmpty());
+_st(self)._assert_equals_(["fakeMultipleTimeoutFailing", "fakeTimeout"],_st(self)._sortedSelectors_(_st(result)._failures()));
 return _st(self)._finished();
-})}));
-$1=_st($ctx1.locals.runner)._announcer();
+}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+$1=_st(runner)._announcer();
 $2=(smalltalk.ResultAnnouncement || ResultAnnouncement);
 $3=(function(ann){
-return smalltalk.withContext(function($ctx2) { 
$4=_st(_st(ann)._result()).__eq_eq($ctx1.locals.result);
+return smalltalk.withContext(function($ctx2) {
$4=_st(_st(ann)._result()).__eq_eq(result);
 $5=(function(){
-return smalltalk.withContext(function($ctx3) { 
$6=_st(_st($ctx1.locals.result)._runs()).__eq(_st($ctx1.locals.result)._total());
-return _st($6)._ifTrue_($ctx1.locals.assertBlock);
-})});
+return smalltalk.withContext(function($ctx3) {
$6=_st(_st(result)._runs()).__eq(_st(result)._total());
+return _st($6)._ifTrue_(assertBlock);
+}, function($ctx3) {$ctx3.fill(null, null, {})})});
 return _st($4)._ifTrue_($5);
-})});
+}, function($ctx2) {$ctx2.fill(null, null, {})})});
 _st($1)._on_do_($2,$3);
-_st($ctx1.locals.runner)._run();
-return self}, self, "testTimeouts", [], smalltalk.SUnitAsyncTest)}
+_st(runner)._run();
+return self}, function($ctx1) {$ctx1.fill(self,"testTimeouts", [], smalltalk.SUnitAsyncTest)})}
 }),
 smalltalk.SUnitAsyncTest);
 
@@ -380,27 +374,27 @@ smalltalk.method({
 selector: "testTwoAsyncPassesWithFinishedOnlyOneIsRun",
 fn: function (){
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
$ctx1.locals.x=nil;
-self["@flag"]="bad";
+var x;
+return smalltalk.withContext(function($ctx1) { 
self["@flag"]="bad";
 _st(self)._timeout_((10));
-$ctx1.locals.x=(0);
+x=(0);
 self["@flag"]=_st(_st(self)._async_((function(){
-return smalltalk.withContext(function($ctx2) { 
_st(self)._finished();
+return smalltalk.withContext(function($ctx2) {
_st(self)._finished();
 self["@flag"]="ok";
 self["@flag"];
-$ctx1.locals.x=_st($ctx1.locals.x).__plus((1));
-$ctx1.locals.x;
-return _st(self)._assert_equals_((1),$ctx1.locals.x);
-})})))._valueWithTimeout_((0));
+x=_st(x).__plus((1));
+x;
+return _st(self)._assert_equals_((1),x);
+}, function($ctx2) {$ctx2.fill(null, null, {})})})))._valueWithTimeout_((0));
 self["@flag"]=_st(_st(self)._async_((function(){
-return smalltalk.withContext(function($ctx2) { 
_st(self)._finished();
+return smalltalk.withContext(function($ctx2) {
_st(self)._finished();
 self["@flag"]="ok";
 self["@flag"];
-$ctx1.locals.x=_st($ctx1.locals.x).__plus((1));
-$ctx1.locals.x;
-return _st(self)._assert_equals_((1),$ctx1.locals.x);
-})})))._valueWithTimeout_((0));
-return self}, self, "testTwoAsyncPassesWithFinishedOnlyOneIsRun", [], smalltalk.SUnitAsyncTest)}
+x=_st(x).__plus((1));
+x;
+return _st(self)._assert_equals_((1),x);
+}, function($ctx2) {$ctx2.fill(null, null, {})})})))._valueWithTimeout_((0));
+return self}, function($ctx1) {$ctx1.fill(self,"testTwoAsyncPassesWithFinishedOnlyOneIsRun", [], smalltalk.SUnitAsyncTest)})}
 }),
 smalltalk.SUnitAsyncTest);
 

+ 104 - 110
js/SUnit-Tests.js

@@ -10,7 +10,7 @@ fn: function (){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
self["@empty"]=_st((smalltalk.Set || Set))._new();
 self["@full"]=_st((smalltalk.Set || Set))._with_with_((5),smalltalk.symbolFor("abc"));
-return self}, self, "setUp", [], smalltalk.ExampleSetTest)},
+return self}, function($ctx1) {$ctx1.fill(self,"setUp", [], smalltalk.ExampleSetTest)})},
 args: [],
 source: "setUp\x0a\x09empty := Set new.\x0a\x09full := Set with: 5 with: #abc",
 messageSends: ["new", "with:with:"],
@@ -27,7 +27,7 @@ fn: function (){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
_st(self["@empty"])._add_((5));
 _st(self)._assert_(_st(self["@empty"])._includes_((5)));
-return self}, self, "testAdd", [], smalltalk.ExampleSetTest)},
+return self}, function($ctx1) {$ctx1.fill(self,"testAdd", [], smalltalk.ExampleSetTest)})},
 args: [],
 source: "testAdd\x0a\x09empty add: 5.\x0a\x09self assert: (empty includes: 5)",
 messageSends: ["add:", "assert:", "includes:"],
@@ -44,7 +44,7 @@ fn: function (){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
_st(self["@empty"])._addAll_(_st((1))._to_((100)));
 _st(self)._assert_(_st(_st(self["@empty"])._size()).__eq((100)));
-return self}, self, "testGrow", [], smalltalk.ExampleSetTest)},
+return self}, function($ctx1) {$ctx1.fill(self,"testGrow", [], smalltalk.ExampleSetTest)})},
 args: [],
 source: "testGrow\x0a\x09empty addAll: (1 to: 100).\x0a\x09self assert: empty size = 100",
 messageSends: ["addAll:", "to:", "assert:", "=", "size"],
@@ -60,12 +60,12 @@ category: 'tests',
 fn: function (){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
_st(self)._should_raise_((function(){
-return smalltalk.withContext(function($ctx2) { 
return _st(self["@empty"])._at_((5));
-})}),(smalltalk.Error || Error));
+return smalltalk.withContext(function($ctx2) {
return _st(self["@empty"])._at_((5));
+}, function($ctx2) {$ctx2.fill(null, null, {})})}),(smalltalk.Error || Error));
 _st(self)._should_raise_((function(){
-return smalltalk.withContext(function($ctx2) { 
return _st(self["@empty"])._at_put_((5),smalltalk.symbolFor("abc"));
-})}),(smalltalk.Error || Error));
-return self}, self, "testIllegal", [], smalltalk.ExampleSetTest)},
+return smalltalk.withContext(function($ctx2) {
return _st(self["@empty"])._at_put_((5),smalltalk.symbolFor("abc"));
+}, function($ctx2) {$ctx2.fill(null, null, {})})}),(smalltalk.Error || Error));
+return self}, function($ctx1) {$ctx1.fill(self,"testIllegal", [], smalltalk.ExampleSetTest)})},
 args: [],
 source: "testIllegal\x0a\x09self \x0a\x09\x09should: [empty at: 5] \x0a\x09\x09raise: Error.\x0a\x09self \x0a\x09\x09should: [empty at: 5 put: #abc] \x0a\x09\x09raise: Error",
 messageSends: ["should:raise:", "at:", "at:put:"],
@@ -82,7 +82,7 @@ fn: function (){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
_st(self)._assert_(_st(self["@full"])._includes_((5)));
 _st(self)._assert_(_st(self["@full"])._includes_(smalltalk.symbolFor("abc")));
-return self}, self, "testIncludes", [], smalltalk.ExampleSetTest)},
+return self}, function($ctx1) {$ctx1.fill(self,"testIncludes", [], smalltalk.ExampleSetTest)})},
 args: [],
 source: "testIncludes\x0a\x09self assert: (full includes: 5).\x0a\x09self assert: (full includes: #abc)",
 messageSends: ["assert:", "includes:"],
@@ -101,7 +101,7 @@ return smalltalk.withContext(function($ctx1) { 
_st(self)._assert_(_st(_st(self[
 _st(self)._assert_(_st(_st(self["@full"])._occurrencesOf_((5))).__eq((1)));
 _st(self["@full"])._add_((5));
 _st(self)._assert_(_st(_st(self["@full"])._occurrencesOf_((5))).__eq((1)));
-return self}, self, "testOccurrences", [], smalltalk.ExampleSetTest)},
+return self}, function($ctx1) {$ctx1.fill(self,"testOccurrences", [], smalltalk.ExampleSetTest)})},
 args: [],
 source: "testOccurrences\x0a\x09self assert: (empty occurrencesOf: 0) = 0.\x0a\x09self assert: (full occurrencesOf: 5) = 1.\x0a\x09full add: 5.\x0a\x09self assert: (full occurrencesOf: 5) = 1",
 messageSends: ["assert:", "=", "occurrencesOf:", "add:"],
@@ -119,7 +119,7 @@ var self=this;
 return smalltalk.withContext(function($ctx1) { 
_st(self["@full"])._remove_((5));
 _st(self)._assert_(_st(self["@full"])._includes_(smalltalk.symbolFor("abc")));
 _st(self)._deny_(_st(self["@full"])._includes_((5)));
-return self}, self, "testRemove", [], smalltalk.ExampleSetTest)},
+return self}, function($ctx1) {$ctx1.fill(self,"testRemove", [], smalltalk.ExampleSetTest)})},
 args: [],
 source: "testRemove\x0a\x09full remove: 5.\x0a\x09self assert: (full includes: #abc).\x0a\x09self deny: (full includes: 5)",
 messageSends: ["remove:", "assert:", "includes:", "deny:"],
@@ -140,11 +140,11 @@ var self=this;
 return smalltalk.withContext(function($ctx1) { 
self["@flag"]="bad";
 _st(self)._timeout_((10));
 self["@flag"]=_st(_st(self)._async_((function(){
-return smalltalk.withContext(function($ctx2) { 
self["@flag"]="ok";
+return smalltalk.withContext(function($ctx2) {
self["@flag"]="ok";
 self["@flag"];
 return _st(self)._error_("Intentional");
-})})))._valueWithTimeout_((5));
-return self}, self, "fakeError", [], smalltalk.SUnitAsyncTest)},
+}, function($ctx2) {$ctx2.fill(null, null, {})})})))._valueWithTimeout_((5));
+return self}, function($ctx1) {$ctx1.fill(self,"fakeError", [], smalltalk.SUnitAsyncTest)})},
 args: [],
 source: "fakeError\x0a\x09flag := 'bad'.\x0a\x09self timeout: 10.\x0a    flag := (self async: [ flag := 'ok'. self error: 'Intentional' ]) valueWithTimeout: 5",
 messageSends: ["timeout:", "valueWithTimeout:", "async:", "error:"],
@@ -162,9 +162,9 @@ var self=this;
 return smalltalk.withContext(function($ctx1) { 
self["@flag"]="bad";
 _st(self)._timeout_((10));
 self["@flag"]=_st(_st(self)._async_((function(){
-return smalltalk.withContext(function($ctx2) { 
return _st(self)._error_("Intentional");
-})})))._valueWithTimeout_((5));
-return self}, self, "fakeErrorFailingInTearDown", [], smalltalk.SUnitAsyncTest)},
+return smalltalk.withContext(function($ctx2) {
return _st(self)._error_("Intentional");
+}, function($ctx2) {$ctx2.fill(null, null, {})})})))._valueWithTimeout_((5));
+return self}, function($ctx1) {$ctx1.fill(self,"fakeErrorFailingInTearDown", [], smalltalk.SUnitAsyncTest)})},
 args: [],
 source: "fakeErrorFailingInTearDown\x0a\x09flag := 'bad'.\x0a\x09self timeout: 10.\x0a    flag := (self async: [ self error: 'Intentional' ]) valueWithTimeout: 5",
 messageSends: ["timeout:", "valueWithTimeout:", "async:", "error:"],
@@ -182,11 +182,11 @@ var self=this;
 return smalltalk.withContext(function($ctx1) { 
self["@flag"]="bad";
 _st(self)._timeout_((10));
 self["@flag"]=_st(_st(self)._async_((function(){
-return smalltalk.withContext(function($ctx2) { 
self["@flag"]="ok";
+return smalltalk.withContext(function($ctx2) {
self["@flag"]="ok";
 self["@flag"];
 return _st(self)._assert_(false);
-})})))._valueWithTimeout_((5));
-return self}, self, "fakeFailure", [], smalltalk.SUnitAsyncTest)},
+}, function($ctx2) {$ctx2.fill(null, null, {})})})))._valueWithTimeout_((5));
+return self}, function($ctx1) {$ctx1.fill(self,"fakeFailure", [], smalltalk.SUnitAsyncTest)})},
 args: [],
 source: "fakeFailure\x0a\x09flag := 'bad'.\x0a\x09self timeout: 10.\x0a    flag := (self async: [ flag := 'ok'. self assert: false ]) valueWithTimeout: 5",
 messageSends: ["timeout:", "valueWithTimeout:", "async:", "assert:"],
@@ -203,12 +203,12 @@ fn: function (){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
_st(self)._timeout_((100));
 _st(_st(self)._async_((function(){
-return smalltalk.withContext(function($ctx2) { 
_st(self)._timeout_((5));
+return smalltalk.withContext(function($ctx2) {
_st(self)._timeout_((5));
 return _st(_st(self)._async_((function(){
-return smalltalk.withContext(function($ctx3) { 
return _st(self)._finished();
-})})))._valueWithTimeout_((10));
-})})))._valueWithTimeout_((5));
-return self}, self, "fakeMultipleTimeoutFailing", [], smalltalk.SUnitAsyncTest)},
+return smalltalk.withContext(function($ctx3) {
return _st(self)._finished();
+}, function($ctx3) {$ctx3.fill(null, null, {})})})))._valueWithTimeout_((10));
+}, function($ctx2) {$ctx2.fill(null, null, {})})})))._valueWithTimeout_((5));
+return self}, function($ctx1) {$ctx1.fill(self,"fakeMultipleTimeoutFailing", [], smalltalk.SUnitAsyncTest)})},
 args: [],
 source: "fakeMultipleTimeoutFailing\x0a\x09self timeout: 100.\x0a    (self async: [\x0a\x09\x09self timeout: 5.\x0a        (self async: [ self finished ]) valueWithTimeout: 10\x0a\x09]) valueWithTimeout: 5",
 messageSends: ["timeout:", "valueWithTimeout:", "async:", "finished"],
@@ -225,12 +225,12 @@ fn: function (){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
_st(self)._timeout_((10));
 _st(_st(self)._async_((function(){
-return smalltalk.withContext(function($ctx2) { 
_st(self)._timeout_((20));
+return smalltalk.withContext(function($ctx2) {
_st(self)._timeout_((20));
 return _st(_st(self)._async_((function(){
-return smalltalk.withContext(function($ctx3) { 
return _st(self)._finished();
-})})))._valueWithTimeout_((10));
-})})))._valueWithTimeout_((5));
-return self}, self, "fakeMultipleTimeoutPassing", [], smalltalk.SUnitAsyncTest)},
+return smalltalk.withContext(function($ctx3) {
return _st(self)._finished();
+}, function($ctx3) {$ctx3.fill(null, null, {})})})))._valueWithTimeout_((10));
+}, function($ctx2) {$ctx2.fill(null, null, {})})})))._valueWithTimeout_((5));
+return self}, function($ctx1) {$ctx1.fill(self,"fakeMultipleTimeoutPassing", [], smalltalk.SUnitAsyncTest)})},
 args: [],
 source: "fakeMultipleTimeoutPassing\x0a\x09self timeout: 10.\x0a    (self async: [\x0a\x09\x09self timeout: 20.\x0a        (self async: [ self finished ]) valueWithTimeout: 10\x0a\x09]) valueWithTimeout: 5",
 messageSends: ["timeout:", "valueWithTimeout:", "async:", "finished"],
@@ -247,9 +247,9 @@ fn: function (){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
_st(self)._timeout_((4));
 _st(_st(self)._async_((function(){
-return smalltalk.withContext(function($ctx2) { 
return _st(self)._finished();
-})})))._valueWithTimeout_((5));
-return self}, self, "fakeTimeout", [], smalltalk.SUnitAsyncTest)},
+return smalltalk.withContext(function($ctx2) {
return _st(self)._finished();
+}, function($ctx2) {$ctx2.fill(null, null, {})})})))._valueWithTimeout_((5));
+return self}, function($ctx1) {$ctx1.fill(self,"fakeTimeout", [], smalltalk.SUnitAsyncTest)})},
 args: [],
 source: "fakeTimeout\x0a\x09self timeout: 4.\x0a    (self async: [ self finished ]) valueWithTimeout: 5",
 messageSends: ["timeout:", "valueWithTimeout:", "async:", "finished"],
@@ -265,7 +265,7 @@ category: 'running',
 fn: function (){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
self["@flag"]="ok";
-return self}, self, "setUp", [], smalltalk.SUnitAsyncTest)},
+return self}, function($ctx1) {$ctx1.fill(self,"setUp", [], smalltalk.SUnitAsyncTest)})},
 args: [],
 source: "setUp\x0a\x09flag := 'ok'",
 messageSends: [],
@@ -282,10 +282,10 @@ fn: function (aCollection){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
var $1;
 $1=_st(_st(aCollection)._collect_((function(each){
-return smalltalk.withContext(function($ctx2) { 
return _st(each)._selector();
-})})))._sorted();
+return smalltalk.withContext(function($ctx2) {
return _st(each)._selector();
+}, function($ctx2) {$ctx2.fill(null, null, {})})})))._sorted();
 return $1;
-}, self, "sortedSelectors:", [aCollection], smalltalk.SUnitAsyncTest)},
+}, function($ctx1) {$ctx1.fill(self,"sortedSelectors:", [aCollection], smalltalk.SUnitAsyncTest)})},
 args: ["aCollection"],
 source: "sortedSelectors: aCollection\x0a\x09^(aCollection collect: [:each | each selector]) sorted",
 messageSends: ["sorted", "collect:", "selector"],
@@ -301,7 +301,7 @@ category: 'running',
 fn: function (){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
_st(self)._assert_equals_("ok",self["@flag"]);
-return self}, self, "tearDown", [], smalltalk.SUnitAsyncTest)},
+return self}, function($ctx1) {$ctx1.fill(self,"tearDown", [], smalltalk.SUnitAsyncTest)})},
 args: [],
 source: "tearDown\x0a\x09self assert: 'ok' equals: flag",
 messageSends: ["assert:equals:"],
@@ -316,35 +316,32 @@ selector: "testAsyncErrorsAndFailures",
 category: 'tests',
 fn: function (){
 var self=this;
+var suite,runner,result,assertBlock;
 return smalltalk.withContext(function($ctx1) { 
var $1,$2,$4,$6,$5,$3;
-$ctx1.locals.suite=nil;
-$ctx1.locals.runner=nil;
-$ctx1.locals.result=nil;
-$ctx1.locals.assertBlock=nil;
-$ctx1.locals.suite=_st(["fakeError", "fakeErrorFailingInTearDown", "fakeFailure", "testPass"])._collect_((function(each){
-return smalltalk.withContext(function($ctx2) { 
return _st(_st(self)._class())._selector_(each);
-})}));
-$ctx1.locals.runner=_st((smalltalk.TestSuiteRunner || TestSuiteRunner))._on_($ctx1.locals.suite);
+suite=_st(["fakeError", "fakeErrorFailingInTearDown", "fakeFailure", "testPass"])._collect_((function(each){
+return smalltalk.withContext(function($ctx2) {
return _st(_st(self)._class())._selector_(each);
+}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+runner=_st((smalltalk.TestSuiteRunner || TestSuiteRunner))._on_(suite);
 _st(self)._timeout_((200));
-$ctx1.locals.result=_st($ctx1.locals.runner)._result();
-$ctx1.locals.assertBlock=_st(self)._async_((function(){
-return smalltalk.withContext(function($ctx2) { 
_st(self)._assert_equals_(["fakeError"],_st(self)._sortedSelectors_(_st($ctx1.locals.result)._errors()));
-_st(self)._assert_equals_(["fakeErrorFailingInTearDown", "fakeFailure"],_st(self)._sortedSelectors_(_st($ctx1.locals.result)._failures()));
+result=_st(runner)._result();
+assertBlock=_st(self)._async_((function(){
+return smalltalk.withContext(function($ctx2) {
_st(self)._assert_equals_(["fakeError"],_st(self)._sortedSelectors_(_st(result)._errors()));
+_st(self)._assert_equals_(["fakeErrorFailingInTearDown", "fakeFailure"],_st(self)._sortedSelectors_(_st(result)._failures()));
 return _st(self)._finished();
-})}));
-$1=_st($ctx1.locals.runner)._announcer();
+}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+$1=_st(runner)._announcer();
 $2=(smalltalk.ResultAnnouncement || ResultAnnouncement);
 $3=(function(ann){
-return smalltalk.withContext(function($ctx2) { 
$4=_st(_st(ann)._result()).__eq_eq($ctx1.locals.result);
+return smalltalk.withContext(function($ctx2) {
$4=_st(_st(ann)._result()).__eq_eq(result);
 $5=(function(){
-return smalltalk.withContext(function($ctx3) { 
$6=_st(_st($ctx1.locals.result)._runs()).__eq(_st($ctx1.locals.result)._total());
-return _st($6)._ifTrue_($ctx1.locals.assertBlock);
-})});
+return smalltalk.withContext(function($ctx3) {
$6=_st(_st(result)._runs()).__eq(_st(result)._total());
+return _st($6)._ifTrue_(assertBlock);
+}, function($ctx3) {$ctx3.fill(null, null, {})})});
 return _st($4)._ifTrue_($5);
-})});
+}, function($ctx2) {$ctx2.fill(null, null, {})})});
 _st($1)._on_do_($2,$3);
-_st($ctx1.locals.runner)._run();
-return self}, self, "testAsyncErrorsAndFailures", [], smalltalk.SUnitAsyncTest)},
+_st(runner)._run();
+return self}, function($ctx1) {$ctx1.fill(self,"testAsyncErrorsAndFailures", [], smalltalk.SUnitAsyncTest)})},
 args: [],
 source: "testAsyncErrorsAndFailures\x0a\x09| suite runner result assertBlock |\x0a\x09suite := #('fakeError' 'fakeErrorFailingInTearDown' 'fakeFailure' 'testPass') collect: [ :each | self class selector: each ].\x0a    runner := TestSuiteRunner on: suite.\x0a    self timeout: 200.\x0a\x09result := runner result.\x0a    assertBlock := self async: [\x0a\x09\x09self assert: #('fakeError') equals: (self sortedSelectors: result errors).\x0a\x09\x09self assert: #('fakeErrorFailingInTearDown' 'fakeFailure') equals: (self sortedSelectors: result failures).\x0a\x09\x09self finished\x0a  \x09].\x0a    runner announcer on: ResultAnnouncement do: [:ann |\x0a    \x09ann result == result  ifTrue: [ result runs = result total ifTrue: assertBlock ]].\x0a\x09runner run",
 messageSends: ["collect:", "selector:", "class", "on:", "timeout:", "result", "async:", "assert:equals:", "sortedSelectors:", "errors", "failures", "finished", "on:do:", "ifTrue:", "=", "total", "runs", "==", "announcer", "run"],
@@ -360,16 +357,16 @@ category: 'tests',
 fn: function (){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
_st(self)._should_raise_((function(){
-return smalltalk.withContext(function($ctx2) { 
return _st(self)._async_((function(){
-return smalltalk.withContext(function($ctx3) { 
})}));
-})}),(smalltalk.Error || Error));
+return smalltalk.withContext(function($ctx2) {
return _st(self)._async_((function(){
+return smalltalk.withContext(function($ctx3) {
}, function($ctx3) {$ctx3.fill(null, null, {})})}));
+}, function($ctx2) {$ctx2.fill(null, null, {})})}),(smalltalk.Error || Error));
 _st(self)._timeout_((0));
 _st(self)._shouldnt_raise_((function(){
-return smalltalk.withContext(function($ctx2) { 
return _st(self)._async_((function(){
-return smalltalk.withContext(function($ctx3) { 
})}));
-})}),(smalltalk.Error || Error));
+return smalltalk.withContext(function($ctx2) {
return _st(self)._async_((function(){
+return smalltalk.withContext(function($ctx3) {
}, function($ctx3) {$ctx3.fill(null, null, {})})}));
+}, function($ctx2) {$ctx2.fill(null, null, {})})}),(smalltalk.Error || Error));
 _st(self)._finished();
-return self}, self, "testAsyncNeedsTimeout", [], smalltalk.SUnitAsyncTest)},
+return self}, function($ctx1) {$ctx1.fill(self,"testAsyncNeedsTimeout", [], smalltalk.SUnitAsyncTest)})},
 args: [],
 source: "testAsyncNeedsTimeout\x0a    self should: [ self async: [ ] ] raise: Error.\x0a    self timeout: 0.\x0a    self shouldnt: [ self async: [ ] ] raise: Error.\x0a    self finished",
 messageSends: ["should:raise:", "async:", "timeout:", "shouldnt:raise:", "finished"],
@@ -385,13 +382,13 @@ category: 'tests',
 fn: function (){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
_st(self)._should_raise_((function(){
-return smalltalk.withContext(function($ctx2) { 
return _st(self)._finished();
-})}),(smalltalk.Error || Error));
+return smalltalk.withContext(function($ctx2) {
return _st(self)._finished();
+}, function($ctx2) {$ctx2.fill(null, null, {})})}),(smalltalk.Error || Error));
 _st(self)._timeout_((0));
 _st(self)._shouldnt_raise_((function(){
-return smalltalk.withContext(function($ctx2) { 
return _st(self)._finished();
-})}),(smalltalk.Error || Error));
-return self}, self, "testFinishedNeedsTimeout", [], smalltalk.SUnitAsyncTest)},
+return smalltalk.withContext(function($ctx2) {
return _st(self)._finished();
+}, function($ctx2) {$ctx2.fill(null, null, {})})}),(smalltalk.Error || Error));
+return self}, function($ctx1) {$ctx1.fill(self,"testFinishedNeedsTimeout", [], smalltalk.SUnitAsyncTest)})},
 args: [],
 source: "testFinishedNeedsTimeout\x0a    self should: [ self finished ] raise: Error.\x0a    self timeout: 0.\x0a    self shouldnt: [ self finished ] raise: Error.",
 messageSends: ["should:raise:", "finished", "timeout:", "shouldnt:raise:"],
@@ -411,7 +408,7 @@ _st(self)._timeout_((0));
 _st(self)._assert_(_st(self)._isAsync());
 _st(self)._finished();
 _st(self)._deny_(_st(self)._isAsync());
-return self}, self, "testIsAsyncReturnsCorrectValues", [], smalltalk.SUnitAsyncTest)},
+return self}, function($ctx1) {$ctx1.fill(self,"testIsAsyncReturnsCorrectValues", [], smalltalk.SUnitAsyncTest)})},
 args: [],
 source: "testIsAsyncReturnsCorrectValues\x0a    self deny: self isAsync.\x0a    self timeout: 0.\x0a    self assert: self isAsync.\x0a    self finished.\x0a    self deny: self isAsync",
 messageSends: ["deny:", "isAsync", "timeout:", "assert:", "finished"],
@@ -429,12 +426,12 @@ var self=this;
 return smalltalk.withContext(function($ctx1) { 
self["@flag"]="bad";
 _st(self)._timeout_((10));
 self["@flag"]=_st(_st(self)._async_((function(){
-return smalltalk.withContext(function($ctx2) { 
_st(self)._assert_(true);
+return smalltalk.withContext(function($ctx2) {
_st(self)._assert_(true);
 _st(self)._finished();
 self["@flag"]="ok";
 return self["@flag"];
-})})))._valueWithTimeout_((5));
-return self}, self, "testPass", [], smalltalk.SUnitAsyncTest)},
+}, function($ctx2) {$ctx2.fill(null, null, {})})})))._valueWithTimeout_((5));
+return self}, function($ctx1) {$ctx1.fill(self,"testPass", [], smalltalk.SUnitAsyncTest)})},
 args: [],
 source: "testPass\x0a\x09flag := 'bad'.\x0a\x09self timeout: 10.\x0a    flag := (self async: [ self assert: true. self finished. flag := 'ok' ]) valueWithTimeout: 5",
 messageSends: ["timeout:", "valueWithTimeout:", "async:", "assert:", "finished"],
@@ -449,35 +446,32 @@ selector: "testTimeouts",
 category: 'tests',
 fn: function (){
 var self=this;
+var suite,runner,result,assertBlock;
 return smalltalk.withContext(function($ctx1) { 
var $1,$2,$4,$6,$5,$3;
-$ctx1.locals.suite=nil;
-$ctx1.locals.runner=nil;
-$ctx1.locals.result=nil;
-$ctx1.locals.assertBlock=nil;
-$ctx1.locals.suite=_st(["fakeTimeout", "fakeMultipleTimeoutFailing", "fakeMultipleTimeoutPassing", "testPass"])._collect_((function(each){
-return smalltalk.withContext(function($ctx2) { 
return _st(_st(self)._class())._selector_(each);
-})}));
-$ctx1.locals.runner=_st((smalltalk.TestSuiteRunner || TestSuiteRunner))._on_($ctx1.locals.suite);
+suite=_st(["fakeTimeout", "fakeMultipleTimeoutFailing", "fakeMultipleTimeoutPassing", "testPass"])._collect_((function(each){
+return smalltalk.withContext(function($ctx2) {
return _st(_st(self)._class())._selector_(each);
+}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+runner=_st((smalltalk.TestSuiteRunner || TestSuiteRunner))._on_(suite);
 _st(self)._timeout_((200));
-$ctx1.locals.result=_st($ctx1.locals.runner)._result();
-$ctx1.locals.assertBlock=_st(self)._async_((function(){
-return smalltalk.withContext(function($ctx2) { 
_st(self)._assert_(_st(_st($ctx1.locals.result)._errors())._isEmpty());
-_st(self)._assert_equals_(["fakeMultipleTimeoutFailing", "fakeTimeout"],_st(self)._sortedSelectors_(_st($ctx1.locals.result)._failures()));
+result=_st(runner)._result();
+assertBlock=_st(self)._async_((function(){
+return smalltalk.withContext(function($ctx2) {
_st(self)._assert_(_st(_st(result)._errors())._isEmpty());
+_st(self)._assert_equals_(["fakeMultipleTimeoutFailing", "fakeTimeout"],_st(self)._sortedSelectors_(_st(result)._failures()));
 return _st(self)._finished();
-})}));
-$1=_st($ctx1.locals.runner)._announcer();
+}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+$1=_st(runner)._announcer();
 $2=(smalltalk.ResultAnnouncement || ResultAnnouncement);
 $3=(function(ann){
-return smalltalk.withContext(function($ctx2) { 
$4=_st(_st(ann)._result()).__eq_eq($ctx1.locals.result);
+return smalltalk.withContext(function($ctx2) {
$4=_st(_st(ann)._result()).__eq_eq(result);
 $5=(function(){
-return smalltalk.withContext(function($ctx3) { 
$6=_st(_st($ctx1.locals.result)._runs()).__eq(_st($ctx1.locals.result)._total());
-return _st($6)._ifTrue_($ctx1.locals.assertBlock);
-})});
+return smalltalk.withContext(function($ctx3) {
$6=_st(_st(result)._runs()).__eq(_st(result)._total());
+return _st($6)._ifTrue_(assertBlock);
+}, function($ctx3) {$ctx3.fill(null, null, {})})});
 return _st($4)._ifTrue_($5);
-})});
+}, function($ctx2) {$ctx2.fill(null, null, {})})});
 _st($1)._on_do_($2,$3);
-_st($ctx1.locals.runner)._run();
-return self}, self, "testTimeouts", [], smalltalk.SUnitAsyncTest)},
+_st(runner)._run();
+return self}, function($ctx1) {$ctx1.fill(self,"testTimeouts", [], smalltalk.SUnitAsyncTest)})},
 args: [],
 source: "testTimeouts\x0a\x09| suite runner result assertBlock |\x0a\x09suite := #('fakeTimeout' 'fakeMultipleTimeoutFailing' 'fakeMultipleTimeoutPassing' 'testPass') collect: [ :each | self class selector: each ].\x0a    runner := TestSuiteRunner on: suite.\x0a    self timeout: 200.\x0a\x09result := runner result.\x0a    assertBlock := self async: [\x0a\x09\x09self assert: result errors isEmpty.\x0a\x09\x09self assert: #('fakeMultipleTimeoutFailing' 'fakeTimeout') equals: (self sortedSelectors: result failures).\x0a\x09\x09self finished\x0a  \x09].\x0a    runner announcer on: ResultAnnouncement do: [:ann |\x0a    \x09ann result == result  ifTrue: [ result runs = result total ifTrue: assertBlock ]].\x0a\x09runner run",
 messageSends: ["collect:", "selector:", "class", "on:", "timeout:", "result", "async:", "assert:", "isEmpty", "errors", "assert:equals:", "sortedSelectors:", "failures", "finished", "on:do:", "ifTrue:", "=", "total", "runs", "==", "announcer", "run"],
@@ -492,27 +486,27 @@ selector: "testTwoAsyncPassesWithFinishedOnlyOneIsRun",
 category: 'tests',
 fn: function (){
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
$ctx1.locals.x=nil;
-self["@flag"]="bad";
+var x;
+return smalltalk.withContext(function($ctx1) { 
self["@flag"]="bad";
 _st(self)._timeout_((10));
-$ctx1.locals.x=(0);
+x=(0);
 self["@flag"]=_st(_st(self)._async_((function(){
-return smalltalk.withContext(function($ctx2) { 
_st(self)._finished();
+return smalltalk.withContext(function($ctx2) {
_st(self)._finished();
 self["@flag"]="ok";
 self["@flag"];
-$ctx1.locals.x=_st($ctx1.locals.x).__plus((1));
-$ctx1.locals.x;
-return _st(self)._assert_equals_((1),$ctx1.locals.x);
-})})))._valueWithTimeout_((0));
+x=_st(x).__plus((1));
+x;
+return _st(self)._assert_equals_((1),x);
+}, function($ctx2) {$ctx2.fill(null, null, {})})})))._valueWithTimeout_((0));
 self["@flag"]=_st(_st(self)._async_((function(){
-return smalltalk.withContext(function($ctx2) { 
_st(self)._finished();
+return smalltalk.withContext(function($ctx2) {
_st(self)._finished();
 self["@flag"]="ok";
 self["@flag"];
-$ctx1.locals.x=_st($ctx1.locals.x).__plus((1));
-$ctx1.locals.x;
-return _st(self)._assert_equals_((1),$ctx1.locals.x);
-})})))._valueWithTimeout_((0));
-return self}, self, "testTwoAsyncPassesWithFinishedOnlyOneIsRun", [], smalltalk.SUnitAsyncTest)},
+x=_st(x).__plus((1));
+x;
+return _st(self)._assert_equals_((1),x);
+}, function($ctx2) {$ctx2.fill(null, null, {})})})))._valueWithTimeout_((0));
+return self}, function($ctx1) {$ctx1.fill(self,"testTwoAsyncPassesWithFinishedOnlyOneIsRun", [], smalltalk.SUnitAsyncTest)})},
 args: [],
 source: "testTwoAsyncPassesWithFinishedOnlyOneIsRun\x0a\x09| x |\x0a\x09flag := 'bad'.\x0a\x09self timeout: 10.\x0a    x := 0.\x0a    flag := (self async: [ self finished. flag := 'ok'. x := x+1. self assert: 1 equals: x ]) valueWithTimeout: 0.\x0a    flag := (self async: [ self finished. flag := 'ok'. x := x+1. self assert: 1 equals: x ]) valueWithTimeout: 0.",
 messageSends: ["timeout:", "valueWithTimeout:", "async:", "finished", "+", "assert:equals:"],

+ 127 - 128
js/SUnit.deploy.js

@@ -9,7 +9,7 @@ var self=this;
 return smalltalk.withContext(function($ctx1) { 
var $1;
 $1=self["@result"];
 return $1;
-}, self, "result", [], smalltalk.ResultAnnouncement)}
+}, function($ctx1) {$ctx1.fill(self,"result", [], smalltalk.ResultAnnouncement)})}
 }),
 smalltalk.ResultAnnouncement);
 
@@ -20,7 +20,7 @@ selector: "result:",
 fn: function (aTestResult){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
self["@result"]=aTestResult;
-return self}, self, "result:", [aTestResult], smalltalk.ResultAnnouncement)}
+return self}, function($ctx1) {$ctx1.fill(self,"result:", [aTestResult], smalltalk.ResultAnnouncement)})}
 }),
 smalltalk.ResultAnnouncement);
 
@@ -34,7 +34,7 @@ selector: "assert:",
 fn: function (aBoolean){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
_st(self)._assert_description_(aBoolean,"Assertion failed");
-return self}, self, "assert:", [aBoolean], smalltalk.TestCase)}
+return self}, function($ctx1) {$ctx1.fill(self,"assert:", [aBoolean], smalltalk.TestCase)})}
 }),
 smalltalk.TestCase);
 
@@ -49,7 +49,7 @@ $1=aBoolean;
 if(! smalltalk.assert($1)){
 _st(self)._signalFailure_(aString);
 };
-return self}, self, "assert:description:", [aBoolean,aString], smalltalk.TestCase)}
+return self}, function($ctx1) {$ctx1.fill(self,"assert:description:", [aBoolean,aString], smalltalk.TestCase)})}
 }),
 smalltalk.TestCase);
 
@@ -62,7 +62,7 @@ var self=this;
 return smalltalk.withContext(function($ctx1) { 
var $1;
 $1=_st(self)._assert_description_(_st(expected).__eq(actual),_st(_st(_st("Expected: ").__comma(_st(expected)._asString())).__comma(" but was: ")).__comma(_st(actual)._asString()));
 return $1;
-}, self, "assert:equals:", [expected,actual], smalltalk.TestCase)}
+}, function($ctx1) {$ctx1.fill(self,"assert:equals:", [expected,actual], smalltalk.TestCase)})}
 }),
 smalltalk.TestCase);
 
@@ -72,18 +72,18 @@ smalltalk.method({
 selector: "async:",
 fn: function (aBlock){
 var self=this;
+var c;
 return smalltalk.withContext(function($ctx1) { 
var $2,$1;
-$ctx1.locals.c=nil;
 _st(self)._errorIfNotAsync_("#async");
-$ctx1.locals.c=self["@context"];
+c=self["@context"];
 $1=(function(){
-return smalltalk.withContext(function($ctx2) { 
$2=_st(self)._isAsync();
+return smalltalk.withContext(function($ctx2) {
$2=_st(self)._isAsync();
 if(smalltalk.assert($2)){
-return _st($ctx1.locals.c)._execute_(aBlock);
+return _st(c)._execute_(aBlock);
 };
-})});
+}, function($ctx2) {$ctx2.fill(null, null, {})})});
 return $1;
-}, self, "async:", [aBlock], smalltalk.TestCase)}
+}, function($ctx1) {$ctx1.fill(self,"async:", [aBlock], smalltalk.TestCase)})}
 }),
 smalltalk.TestCase);
 
@@ -94,7 +94,7 @@ selector: "context:",
 fn: function (aRunningTestContext){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
self["@context"]=aRunningTestContext;
-return self}, self, "context:", [aRunningTestContext], smalltalk.TestCase)}
+return self}, function($ctx1) {$ctx1.fill(self,"context:", [aRunningTestContext], smalltalk.TestCase)})}
 }),
 smalltalk.TestCase);
 
@@ -105,7 +105,7 @@ selector: "deny:",
 fn: function (aBoolean){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
_st(self)._assert_(_st(aBoolean)._not());
-return self}, self, "deny:", [aBoolean], smalltalk.TestCase)}
+return self}, function($ctx1) {$ctx1.fill(self,"deny:", [aBoolean], smalltalk.TestCase)})}
 }),
 smalltalk.TestCase);
 
@@ -120,7 +120,7 @@ $1=_st(self)._isAsync();
 if(! smalltalk.assert($1)){
 _st(self)._error_(_st(aString).__comma(" used without prior #timeout:"));
 };
-return self}, self, "errorIfNotAsync:", [aString], smalltalk.TestCase)}
+return self}, function($ctx1) {$ctx1.fill(self,"errorIfNotAsync:", [aString], smalltalk.TestCase)})}
 }),
 smalltalk.TestCase);
 
@@ -132,7 +132,7 @@ fn: function (){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
_st(self)._errorIfNotAsync_("#finished");
 self["@asyncTimeout"]=nil;
-return self}, self, "finished", [], smalltalk.TestCase)}
+return self}, function($ctx1) {$ctx1.fill(self,"finished", [], smalltalk.TestCase)})}
 }),
 smalltalk.TestCase);
 
@@ -145,7 +145,7 @@ var self=this;
 return smalltalk.withContext(function($ctx1) { 
var $1;
 $1=_st(self["@asyncTimeout"])._notNil();
 return $1;
-}, self, "isAsync", [], smalltalk.TestCase)}
+}, function($ctx1) {$ctx1.fill(self,"isAsync", [], smalltalk.TestCase)})}
 }),
 smalltalk.TestCase);
 
@@ -157,7 +157,7 @@ fn: function (){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
self["@asyncTimeout"]=nil;
 _st(self)._perform_(_st(self)._selector());
-return self}, self, "performTest", [], smalltalk.TestCase)}
+return self}, function($ctx1) {$ctx1.fill(self,"performTest", [], smalltalk.TestCase)})}
 }),
 smalltalk.TestCase);
 
@@ -168,7 +168,7 @@ selector: "runCase",
 fn: function (){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
_st(_st((smalltalk.TestContext || TestContext))._testCase_(self))._start();
-return self}, self, "runCase", [], smalltalk.TestCase)}
+return self}, function($ctx1) {$ctx1.fill(self,"runCase", [], smalltalk.TestCase)})}
 }),
 smalltalk.TestCase);
 
@@ -181,7 +181,7 @@ var self=this;
 return smalltalk.withContext(function($ctx1) { 
var $1;
 $1=self["@testSelector"];
 return $1;
-}, self, "selector", [], smalltalk.TestCase)}
+}, function($ctx1) {$ctx1.fill(self,"selector", [], smalltalk.TestCase)})}
 }),
 smalltalk.TestCase);
 
@@ -192,7 +192,7 @@ selector: "setTestSelector:",
 fn: function (aSelector){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
self["@testSelector"]=aSelector;
-return self}, self, "setTestSelector:", [aSelector], smalltalk.TestCase)}
+return self}, function($ctx1) {$ctx1.fill(self,"setTestSelector:", [aSelector], smalltalk.TestCase)})}
 }),
 smalltalk.TestCase);
 
@@ -202,7 +202,7 @@ smalltalk.method({
 selector: "setUp",
 fn: function (){
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
return self}, self, "setUp", [], smalltalk.TestCase)}
+return smalltalk.withContext(function($ctx1) { 
return self}, function($ctx1) {$ctx1.fill(self,"setUp", [], smalltalk.TestCase)})}
 }),
 smalltalk.TestCase);
 
@@ -213,7 +213,7 @@ selector: "should:",
 fn: function (aBlock){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
_st(self)._assert_(_st(aBlock)._value());
-return self}, self, "should:", [aBlock], smalltalk.TestCase)}
+return self}, function($ctx1) {$ctx1.fill(self,"should:", [aBlock], smalltalk.TestCase)})}
 }),
 smalltalk.TestCase);
 
@@ -224,12 +224,12 @@ selector: "should:raise:",
 fn: function (aBlock,anExceptionClass){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
_st(self)._assert_(_st((function(){
-return smalltalk.withContext(function($ctx2) { 
_st(aBlock)._value();
+return smalltalk.withContext(function($ctx2) {
_st(aBlock)._value();
 return false;
-})}))._on_do_(anExceptionClass,(function(ex){
-return smalltalk.withContext(function($ctx2) { 
return true;
-})})));
-return self}, self, "should:raise:", [aBlock,anExceptionClass], smalltalk.TestCase)}
+}, function($ctx2) {$ctx2.fill(null, null, {})})}))._on_do_(anExceptionClass,(function(ex){
+return smalltalk.withContext(function($ctx2) {
return true;
+}, function($ctx2) {$ctx2.fill(null, null, {})})})));
+return self}, function($ctx1) {$ctx1.fill(self,"should:raise:", [aBlock,anExceptionClass], smalltalk.TestCase)})}
 }),
 smalltalk.TestCase);
 
@@ -240,12 +240,12 @@ selector: "shouldnt:raise:",
 fn: function (aBlock,anExceptionClass){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
_st(self)._assert_(_st((function(){
-return smalltalk.withContext(function($ctx2) { 
_st(aBlock)._value();
+return smalltalk.withContext(function($ctx2) {
_st(aBlock)._value();
 return true;
-})}))._on_do_(anExceptionClass,(function(ex){
-return smalltalk.withContext(function($ctx2) { 
return false;
-})})));
-return self}, self, "shouldnt:raise:", [aBlock,anExceptionClass], smalltalk.TestCase)}
+}, function($ctx2) {$ctx2.fill(null, null, {})})}))._on_do_(anExceptionClass,(function(ex){
+return smalltalk.withContext(function($ctx2) {
return false;
+}, function($ctx2) {$ctx2.fill(null, null, {})})})));
+return self}, function($ctx1) {$ctx1.fill(self,"shouldnt:raise:", [aBlock,anExceptionClass], smalltalk.TestCase)})}
 }),
 smalltalk.TestCase);
 
@@ -259,7 +259,7 @@ return smalltalk.withContext(function($ctx1) { 
var $1,$2;
 $1=_st((smalltalk.TestFailure || TestFailure))._new();
 _st($1)._messageText_(aString);
 $2=_st($1)._signal();
-return self}, self, "signalFailure:", [aString], smalltalk.TestCase)}
+return self}, function($ctx1) {$ctx1.fill(self,"signalFailure:", [aString], smalltalk.TestCase)})}
 }),
 smalltalk.TestCase);
 
@@ -269,7 +269,7 @@ smalltalk.method({
 selector: "tearDown",
 fn: function (){
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
return self}, self, "tearDown", [], smalltalk.TestCase)}
+return smalltalk.withContext(function($ctx1) { 
return self}, function($ctx1) {$ctx1.fill(self,"tearDown", [], smalltalk.TestCase)})}
 }),
 smalltalk.TestCase);
 
@@ -288,9 +288,9 @@ _st(self["@asyncTimeout"])._clearTimeout();
 };
 self["@asyncTimeout"]=(0);
 self["@asyncTimeout"]=_st(_st(self)._async_((function(){
-return smalltalk.withContext(function($ctx2) { 
return _st(self)._assert_description_(false,"SUnit grace time exhausted");
-})})))._valueWithTimeout_(aNumber);
-return self}, self, "timeout:", [aNumber], smalltalk.TestCase)}
+return smalltalk.withContext(function($ctx2) {
return _st(self)._assert_description_(false,"SUnit grace time exhausted");
+}, function($ctx2) {$ctx2.fill(null, null, {})})})))._valueWithTimeout_(aNumber);
+return self}, function($ctx1) {$ctx1.fill(self,"timeout:", [aNumber], smalltalk.TestCase)})}
 }),
 smalltalk.TestCase);
 
@@ -301,16 +301,16 @@ smalltalk.method({
 selector: "allTestSelectors",
 fn: function (){
 var self=this;
+var selectors;
 return smalltalk.withContext(function($ctx1) { 
var $1,$2;
-$ctx1.locals.selectors=nil;
-$ctx1.locals.selectors=_st(self)._testSelectors();
+selectors=_st(self)._testSelectors();
 $1=_st(self)._shouldInheritSelectors();
 if(smalltalk.assert($1)){
-_st($ctx1.locals.selectors)._addAll_(_st(_st(self)._superclass())._allTestSelectors());
+_st(selectors)._addAll_(_st(_st(self)._superclass())._allTestSelectors());
 };
-$2=$ctx1.locals.selectors;
+$2=selectors;
 return $2;
-}, self, "allTestSelectors", [], smalltalk.TestCase.klass)}
+}, function($ctx1) {$ctx1.fill(self,"allTestSelectors", [], smalltalk.TestCase.klass)})}
 }),
 smalltalk.TestCase.klass);
 
@@ -322,10 +322,10 @@ fn: function (){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
var $1;
 $1=_st(_st(self)._allTestSelectors())._collect_((function(each){
-return smalltalk.withContext(function($ctx2) { 
return _st(self)._selector_(each);
-})}));
+return smalltalk.withContext(function($ctx2) {
return _st(self)._selector_(each);
+}, function($ctx2) {$ctx2.fill(null, null, {})})}));
 return $1;
-}, self, "buildSuite", [], smalltalk.TestCase.klass)}
+}, function($ctx1) {$ctx1.fill(self,"buildSuite", [], smalltalk.TestCase.klass)})}
 }),
 smalltalk.TestCase.klass);
 
@@ -338,7 +338,7 @@ var self=this;
 return smalltalk.withContext(function($ctx1) { 
var $1;
 $1=_st(_st(self)._name()).__eq("TestCase");
 return $1;
-}, self, "isAbstract", [], smalltalk.TestCase.klass)}
+}, function($ctx1) {$ctx1.fill(self,"isAbstract", [], smalltalk.TestCase.klass)})}
 }),
 smalltalk.TestCase.klass);
 
@@ -351,7 +351,7 @@ var self=this;
 return smalltalk.withContext(function($ctx1) { 
var $1;
 $1=(smalltalk.TestCase || TestCase);
 return $1;
-}, self, "lookupHierarchyRoot", [], smalltalk.TestCase.klass)}
+}, function($ctx1) {$ctx1.fill(self,"lookupHierarchyRoot", [], smalltalk.TestCase.klass)})}
 }),
 smalltalk.TestCase.klass);
 
@@ -367,7 +367,7 @@ _st($2)._setTestSelector_(aSelector);
 $3=_st($2)._yourself();
 $1=$3;
 return $1;
-}, self, "selector:", [aSelector], smalltalk.TestCase.klass)}
+}, function($ctx1) {$ctx1.fill(self,"selector:", [aSelector], smalltalk.TestCase.klass)})}
 }),
 smalltalk.TestCase.klass);
 
@@ -380,7 +380,7 @@ var self=this;
 return smalltalk.withContext(function($ctx1) { 
var $1;
 $1=_st(self).__tild_eq(_st(self)._lookupHierarchyRoot());
 return $1;
-}, self, "shouldInheritSelectors", [], smalltalk.TestCase.klass)}
+}, function($ctx1) {$ctx1.fill(self,"shouldInheritSelectors", [], smalltalk.TestCase.klass)})}
 }),
 smalltalk.TestCase.klass);
 
@@ -392,10 +392,10 @@ fn: function (){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
var $1;
 $1=_st(_st(_st(self)._methodDictionary())._keys())._select_((function(each){
-return smalltalk.withContext(function($ctx2) { 
return _st(each)._match_("^test");
-})}));
+return smalltalk.withContext(function($ctx2) {
return _st(each)._match_("^test");
+}, function($ctx2) {$ctx2.fill(null, null, {})})}));
 return $1;
-}, self, "testSelectors", [], smalltalk.TestCase.klass)}
+}, function($ctx1) {$ctx1.fill(self,"testSelectors", [], smalltalk.TestCase.klass)})}
 }),
 smalltalk.TestCase.klass);
 
@@ -407,21 +407,21 @@ smalltalk.method({
 selector: "execute:",
 fn: function (aBlock){
 var self=this;
+var failed;
 return smalltalk.withContext(function($ctx1) { 
var $1,$3,$4,$2;
-$ctx1.locals.failed=nil;
 _st(self["@testCase"])._context_(self);
 $1=(function(){
-return smalltalk.withContext(function($ctx2) { 
$ctx1.locals.failed=true;
-$ctx1.locals.failed;
+return smalltalk.withContext(function($ctx2) {
failed=true;
+failed;
 _st(aBlock)._value();
-$ctx1.locals.failed=false;
-return $ctx1.locals.failed;
-})});
+failed=false;
+return failed;
+}, function($ctx2) {$ctx2.fill(null, null, {})})});
 $2=(function(){
-return smalltalk.withContext(function($ctx2) { 
_st(self["@testCase"])._context_(nil);
-$3=_st($ctx1.locals.failed)._and_((function(){
-return smalltalk.withContext(function($ctx3) { 
return _st(self["@testCase"])._isAsync();
-})}));
+return smalltalk.withContext(function($ctx2) {
_st(self["@testCase"])._context_(nil);
+$3=_st(failed)._and_((function(){
+return smalltalk.withContext(function($ctx3) {
return _st(self["@testCase"])._isAsync();
+}, function($ctx3) {$ctx3.fill(null, null, {})})}));
 if(smalltalk.assert($3)){
 _st(self["@testCase"])._finished();
 };
@@ -429,9 +429,9 @@ $4=_st(self["@testCase"])._isAsync();
 if(! smalltalk.assert($4)){
 return _st(self["@testCase"])._tearDown();
 };
-})});
+}, function($ctx2) {$ctx2.fill(null, null, {})})});
 _st($1)._ensure_($2);
-return self}, self, "execute:", [aBlock], smalltalk.TestContext)}
+return self}, function($ctx1) {$ctx1.fill(self,"execute:", [aBlock], smalltalk.TestContext)})}
 }),
 smalltalk.TestContext);
 
@@ -442,10 +442,10 @@ selector: "start",
 fn: function (){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
_st(self)._execute_((function(){
-return smalltalk.withContext(function($ctx2) { 
_st(self["@testCase"])._setUp();
+return smalltalk.withContext(function($ctx2) {
_st(self["@testCase"])._setUp();
 return _st(self["@testCase"])._performTest();
-})}));
-return self}, self, "start", [], smalltalk.TestContext)}
+}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+return self}, function($ctx1) {$ctx1.fill(self,"start", [], smalltalk.TestContext)})}
 }),
 smalltalk.TestContext);
 
@@ -456,7 +456,7 @@ selector: "testCase:",
 fn: function (aTestCase){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
self["@testCase"]=aTestCase;
-return self}, self, "testCase:", [aTestCase], smalltalk.TestContext)}
+return self}, function($ctx1) {$ctx1.fill(self,"testCase:", [aTestCase], smalltalk.TestContext)})}
 }),
 smalltalk.TestContext);
 
@@ -473,7 +473,7 @@ _st($2)._testCase_(aTestCase);
 $3=_st($2)._yourself();
 $1=$3;
 return $1;
-}, self, "testCase:", [aTestCase], smalltalk.TestContext.klass)}
+}, function($ctx1) {$ctx1.fill(self,"testCase:", [aTestCase], smalltalk.TestContext.klass)})}
 }),
 smalltalk.TestContext.klass);
 
@@ -487,19 +487,19 @@ fn: function (aBlock){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
var $1,$3,$2;
 $1=(function(){
-return smalltalk.withContext(function($ctx2) { 
return _st(self)._withErrorReporting_((function(){
-return smalltalk.withContext(function($ctx3) { 
return smalltalk.TestContext.fn.prototype._execute_.apply(_st(self), [aBlock]);
-})}));
-})});
+return smalltalk.withContext(function($ctx2) {
return _st(self)._withErrorReporting_((function(){
+return smalltalk.withContext(function($ctx3) {
return smalltalk.TestContext.fn.prototype._execute_.apply(_st(self), [aBlock]);
+}, function($ctx3) {$ctx3.fill(null, null, {})})}));
+}, function($ctx2) {$ctx2.fill(null, null, {})})});
 $2=(function(){
-return smalltalk.withContext(function($ctx2) { 
$3=_st(self["@testCase"])._isAsync();
+return smalltalk.withContext(function($ctx2) {
$3=_st(self["@testCase"])._isAsync();
 if(! smalltalk.assert($3)){
 _st(self["@result"])._increaseRuns();
 return _st(self["@finished"])._value();
 };
-})});
+}, function($ctx2) {$ctx2.fill(null, null, {})})});
 _st($1)._ensure_($2);
-return self}, self, "execute:", [aBlock], smalltalk.ReportingTestContext)}
+return self}, function($ctx1) {$ctx1.fill(self,"execute:", [aBlock], smalltalk.ReportingTestContext)})}
 }),
 smalltalk.ReportingTestContext);
 
@@ -510,7 +510,7 @@ selector: "finished:",
 fn: function (aBlock){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
self["@finished"]=aBlock;
-return self}, self, "finished:", [aBlock], smalltalk.ReportingTestContext)}
+return self}, function($ctx1) {$ctx1.fill(self,"finished:", [aBlock], smalltalk.ReportingTestContext)})}
 }),
 smalltalk.ReportingTestContext);
 
@@ -521,7 +521,7 @@ selector: "result:",
 fn: function (aTestResult){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
self["@result"]=aTestResult;
-return self}, self, "result:", [aTestResult], smalltalk.ReportingTestContext)}
+return self}, function($ctx1) {$ctx1.fill(self,"result:", [aTestResult], smalltalk.ReportingTestContext)})}
 }),
 smalltalk.ReportingTestContext);
 
@@ -532,13 +532,13 @@ selector: "withErrorReporting:",
 fn: function (aBlock){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
_st((function(){
-return smalltalk.withContext(function($ctx2) { 
return _st(aBlock)._on_do_((smalltalk.TestFailure || TestFailure),(function(ex){
-return smalltalk.withContext(function($ctx3) { 
return _st(self["@result"])._addFailure_(self["@testCase"]);
-})}));
-})}))._on_do_((smalltalk.Error || Error),(function(ex){
-return smalltalk.withContext(function($ctx2) { 
return _st(self["@result"])._addError_(self["@testCase"]);
-})}));
-return self}, self, "withErrorReporting:", [aBlock], smalltalk.ReportingTestContext)}
+return smalltalk.withContext(function($ctx2) {
return _st(aBlock)._on_do_((smalltalk.TestFailure || TestFailure),(function(ex){
+return smalltalk.withContext(function($ctx3) {
return _st(self["@result"])._addFailure_(self["@testCase"]);
+}, function($ctx3) {$ctx3.fill(null, null, {})})}));
+}, function($ctx2) {$ctx2.fill(null, null, {})})}))._on_do_((smalltalk.Error || Error),(function(ex){
+return smalltalk.withContext(function($ctx2) {
return _st(self["@result"])._addError_(self["@testCase"]);
+}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+return self}, function($ctx1) {$ctx1.fill(self,"withErrorReporting:", [aBlock], smalltalk.ReportingTestContext)})}
 }),
 smalltalk.ReportingTestContext);
 
@@ -556,7 +556,7 @@ _st($2)._finished_(aBlock);
 $3=_st($2)._yourself();
 $1=$3;
 return $1;
-}, self, "testCase:result:finished:", [aTestCase,aTestResult,aBlock], smalltalk.ReportingTestContext.klass)}
+}, function($ctx1) {$ctx1.fill(self,"testCase:result:finished:", [aTestCase,aTestResult,aBlock], smalltalk.ReportingTestContext.klass)})}
 }),
 smalltalk.ReportingTestContext.klass);
 
@@ -572,7 +572,7 @@ selector: "addError:",
 fn: function (anError){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
_st(_st(self)._errors())._add_(anError);
-return self}, self, "addError:", [anError], smalltalk.TestResult)}
+return self}, function($ctx1) {$ctx1.fill(self,"addError:", [anError], smalltalk.TestResult)})}
 }),
 smalltalk.TestResult);
 
@@ -583,7 +583,7 @@ selector: "addFailure:",
 fn: function (aFailure){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
_st(_st(self)._failures())._add_(aFailure);
-return self}, self, "addFailure:", [aFailure], smalltalk.TestResult)}
+return self}, function($ctx1) {$ctx1.fill(self,"addFailure:", [aFailure], smalltalk.TestResult)})}
 }),
 smalltalk.TestResult);
 
@@ -596,7 +596,7 @@ var self=this;
 return smalltalk.withContext(function($ctx1) { 
var $1;
 $1=self["@errors"];
 return $1;
-}, self, "errors", [], smalltalk.TestResult)}
+}, function($ctx1) {$ctx1.fill(self,"errors", [], smalltalk.TestResult)})}
 }),
 smalltalk.TestResult);
 
@@ -609,7 +609,7 @@ var self=this;
 return smalltalk.withContext(function($ctx1) { 
var $1;
 $1=self["@failures"];
 return $1;
-}, self, "failures", [], smalltalk.TestResult)}
+}, function($ctx1) {$ctx1.fill(self,"failures", [], smalltalk.TestResult)})}
 }),
 smalltalk.TestResult);
 
@@ -620,7 +620,7 @@ selector: "increaseRuns",
 fn: function (){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
self["@runs"]=_st(self["@runs"]).__plus((1));
-return self}, self, "increaseRuns", [], smalltalk.TestResult)}
+return self}, function($ctx1) {$ctx1.fill(self,"increaseRuns", [], smalltalk.TestResult)})}
 }),
 smalltalk.TestResult);
 
@@ -636,7 +636,7 @@ self["@runs"]=(0);
 self["@errors"]=_st((smalltalk.Array || Array))._new();
 self["@failures"]=_st((smalltalk.Array || Array))._new();
 self["@total"]=(0);
-return self}, self, "initialize", [], smalltalk.TestResult)}
+return self}, function($ctx1) {$ctx1.fill(self,"initialize", [], smalltalk.TestResult)})}
 }),
 smalltalk.TestResult);
 
@@ -652,7 +652,7 @@ if(! smalltalk.assert($2)){
 $1=_st(aBlock)._value_(_st(_st(self)._runs()).__plus((1)));
 };
 return $1;
-}, self, "nextRunDo:", [aBlock], smalltalk.TestResult)}
+}, function($ctx1) {$ctx1.fill(self,"nextRunDo:", [aBlock], smalltalk.TestResult)})}
 }),
 smalltalk.TestResult);
 
@@ -663,16 +663,16 @@ selector: "runCase:",
 fn: function (aTestCase){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
_st((function(){
-return smalltalk.withContext(function($ctx2) { 
return _st((function(){
-return smalltalk.withContext(function($ctx3) { 
_st(self)._increaseRuns();
+return smalltalk.withContext(function($ctx2) {
return _st((function(){
+return smalltalk.withContext(function($ctx3) {
_st(self)._increaseRuns();
 return _st(aTestCase)._runCase();
-})}))._on_do_((smalltalk.TestFailure || TestFailure),(function(ex){
-return smalltalk.withContext(function($ctx3) { 
return _st(self)._addFailure_(aTestCase);
-})}));
-})}))._on_do_((smalltalk.Error || Error),(function(ex){
-return smalltalk.withContext(function($ctx2) { 
return _st(self)._addError_(aTestCase);
-})}));
-return self}, self, "runCase:", [aTestCase], smalltalk.TestResult)}
+}, function($ctx3) {$ctx3.fill(null, null, {})})}))._on_do_((smalltalk.TestFailure || TestFailure),(function(ex){
+return smalltalk.withContext(function($ctx3) {
return _st(self)._addFailure_(aTestCase);
+}, function($ctx3) {$ctx3.fill(null, null, {})})}));
+}, function($ctx2) {$ctx2.fill(null, null, {})})}))._on_do_((smalltalk.Error || Error),(function(ex){
+return smalltalk.withContext(function($ctx2) {
return _st(self)._addError_(aTestCase);
+}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+return self}, function($ctx1) {$ctx1.fill(self,"runCase:", [aTestCase], smalltalk.TestResult)})}
 }),
 smalltalk.TestResult);
 
@@ -685,7 +685,7 @@ var self=this;
 return smalltalk.withContext(function($ctx1) { 
var $1;
 $1=self["@runs"];
 return $1;
-}, self, "runs", [], smalltalk.TestResult)}
+}, function($ctx1) {$ctx1.fill(self,"runs", [], smalltalk.TestResult)})}
 }),
 smalltalk.TestResult);
 
@@ -698,18 +698,18 @@ var self=this;
 return smalltalk.withContext(function($ctx1) { 
var $2,$4,$3,$1;
 $2=_st(_st(self)._errors())._isEmpty();
 $3=(function(){
-return smalltalk.withContext(function($ctx2) { 
$4=_st(_st(self)._failures())._isEmpty();
+return smalltalk.withContext(function($ctx2) {
$4=_st(_st(self)._failures())._isEmpty();
 if(smalltalk.assert($4)){
 return "success";
 } else {
 return "failure";
 };
-})});
+}, function($ctx2) {$ctx2.fill(null, null, {})})});
 $1=_st($2)._ifTrue_ifFalse_($3,(function(){
-return smalltalk.withContext(function($ctx2) { 
return "error";
-})}));
+return smalltalk.withContext(function($ctx2) {
return "error";
+}, function($ctx2) {$ctx2.fill(null, null, {})})}));
 return $1;
-}, self, "status", [], smalltalk.TestResult)}
+}, function($ctx1) {$ctx1.fill(self,"status", [], smalltalk.TestResult)})}
 }),
 smalltalk.TestResult);
 
@@ -722,7 +722,7 @@ var self=this;
 return smalltalk.withContext(function($ctx1) { 
var $1;
 $1=self["@timestamp"];
 return $1;
-}, self, "timestamp", [], smalltalk.TestResult)}
+}, function($ctx1) {$ctx1.fill(self,"timestamp", [], smalltalk.TestResult)})}
 }),
 smalltalk.TestResult);
 
@@ -735,7 +735,7 @@ var self=this;
 return smalltalk.withContext(function($ctx1) { 
var $1;
 $1=self["@total"];
 return $1;
-}, self, "total", [], smalltalk.TestResult)}
+}, function($ctx1) {$ctx1.fill(self,"total", [], smalltalk.TestResult)})}
 }),
 smalltalk.TestResult);
 
@@ -746,7 +746,7 @@ selector: "total:",
 fn: function (aNumber){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
self["@total"]=aNumber;
-return self}, self, "total:", [aNumber], smalltalk.TestResult)}
+return self}, function($ctx1) {$ctx1.fill(self,"total:", [aNumber], smalltalk.TestResult)})}
 }),
 smalltalk.TestResult);
 
@@ -762,7 +762,7 @@ var self=this;
 return smalltalk.withContext(function($ctx1) { 
var $1;
 $1=self["@announcer"];
 return $1;
-}, self, "announcer", [], smalltalk.TestSuiteRunner)}
+}, function($ctx1) {$ctx1.fill(self,"announcer", [], smalltalk.TestSuiteRunner)})}
 }),
 smalltalk.TestSuiteRunner);
 
@@ -774,10 +774,10 @@ fn: function (anInteger){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
var $1;
 $1=_st((smalltalk.ReportingTestContext || ReportingTestContext))._testCase_result_finished_(_st(self["@suite"])._at_(anInteger),self["@result"],(function(){
-return smalltalk.withContext(function($ctx2) { 
return _st(self)._resume();
-})}));
+return smalltalk.withContext(function($ctx2) {
return _st(self)._resume();
+}, function($ctx2) {$ctx2.fill(null, null, {})})}));
 return $1;
-}, self, "contextOf:", [anInteger], smalltalk.TestSuiteRunner)}
+}, function($ctx1) {$ctx1.fill(self,"contextOf:", [anInteger], smalltalk.TestSuiteRunner)})}
 }),
 smalltalk.TestSuiteRunner);
 
@@ -792,15 +792,14 @@ smalltalk.Object.fn.prototype._initialize.apply(_st(self), []);
 self["@announcer"]=_st((smalltalk.Announcer || Announcer))._new();
 self["@result"]=_st((smalltalk.TestResult || TestResult))._new();
 self["@runNextTest"]=(function(){
-return smalltalk.withContext(function($ctx2) { 
$ctx2.locals.runs=nil;
-$ctx2.locals.runs=_st(self["@result"])._runs();
-$ctx2.locals.runs;
-$1=_st($ctx2.locals.runs).__lt(_st(self["@result"])._total());
+return smalltalk.withContext(function($ctx2) {
runs=_st(self["@result"])._runs();
+runs;
+$1=_st(runs).__lt(_st(self["@result"])._total());
 if(smalltalk.assert($1)){
-return _st(_st(self)._contextOf_(_st($ctx2.locals.runs).__plus((1))))._start();
+return _st(_st(self)._contextOf_(_st(runs).__plus((1))))._start();
 };
-})});
-return self}, self, "initialize", [], smalltalk.TestSuiteRunner)}
+}, function($ctx2) {$ctx2.fill(null, null, {})})});
+return self}, function($ctx1) {$ctx1.fill(self,"initialize", [], smalltalk.TestSuiteRunner)})}
 }),
 smalltalk.TestSuiteRunner);
 
@@ -813,7 +812,7 @@ var self=this;
 return smalltalk.withContext(function($ctx1) { 
var $1;
 $1=self["@result"];
 return $1;
-}, self, "result", [], smalltalk.TestSuiteRunner)}
+}, function($ctx1) {$ctx1.fill(self,"result", [], smalltalk.TestSuiteRunner)})}
 }),
 smalltalk.TestSuiteRunner);
 
@@ -825,7 +824,7 @@ fn: function (){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
_st(self["@runNextTest"])._fork();
 _st(self["@announcer"])._announce_(_st(_st((smalltalk.ResultAnnouncement || ResultAnnouncement))._new())._result_(self["@result"]));
-return self}, self, "resume", [], smalltalk.TestSuiteRunner)}
+return self}, function($ctx1) {$ctx1.fill(self,"resume", [], smalltalk.TestSuiteRunner)})}
 }),
 smalltalk.TestSuiteRunner);
 
@@ -837,7 +836,7 @@ fn: function (){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
_st(self["@result"])._total_(_st(self["@suite"])._size());
 _st(self)._resume();
-return self}, self, "run", [], smalltalk.TestSuiteRunner)}
+return self}, function($ctx1) {$ctx1.fill(self,"run", [], smalltalk.TestSuiteRunner)})}
 }),
 smalltalk.TestSuiteRunner);
 
@@ -848,7 +847,7 @@ selector: "suite:",
 fn: function (aCollection){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
self["@suite"]=aCollection;
-return self}, self, "suite:", [aCollection], smalltalk.TestSuiteRunner)}
+return self}, function($ctx1) {$ctx1.fill(self,"suite:", [aCollection], smalltalk.TestSuiteRunner)})}
 }),
 smalltalk.TestSuiteRunner);
 
@@ -860,7 +859,7 @@ selector: "new",
 fn: function (){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
_st(self)._shouldNotImplement();
-return self}, self, "new", [], smalltalk.TestSuiteRunner.klass)}
+return self}, function($ctx1) {$ctx1.fill(self,"new", [], smalltalk.TestSuiteRunner.klass)})}
 }),
 smalltalk.TestSuiteRunner.klass);
 
@@ -873,7 +872,7 @@ var self=this;
 return smalltalk.withContext(function($ctx1) { 
var $1;
 $1=_st(smalltalk.Object.klass.fn.prototype._new.apply(_st(self), []))._suite_(aCollection);
 return $1;
-}, self, "on:", [aCollection], smalltalk.TestSuiteRunner.klass)}
+}, function($ctx1) {$ctx1.fill(self,"on:", [aCollection], smalltalk.TestSuiteRunner.klass)})}
 }),
 smalltalk.TestSuiteRunner.klass);
 

+ 127 - 128
js/SUnit.js

@@ -10,7 +10,7 @@ var self=this;
 return smalltalk.withContext(function($ctx1) { 
var $1;
 $1=self["@result"];
 return $1;
-}, self, "result", [], smalltalk.ResultAnnouncement)},
+}, function($ctx1) {$ctx1.fill(self,"result", [], smalltalk.ResultAnnouncement)})},
 args: [],
 source: "result\x0a\x09^result",
 messageSends: [],
@@ -26,7 +26,7 @@ category: 'accessing',
 fn: function (aTestResult){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
self["@result"]=aTestResult;
-return self}, self, "result:", [aTestResult], smalltalk.ResultAnnouncement)},
+return self}, function($ctx1) {$ctx1.fill(self,"result:", [aTestResult], smalltalk.ResultAnnouncement)})},
 args: ["aTestResult"],
 source: "result: aTestResult\x0a\x09result := aTestResult",
 messageSends: [],
@@ -46,7 +46,7 @@ category: 'testing',
 fn: function (aBoolean){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
_st(self)._assert_description_(aBoolean,"Assertion failed");
-return self}, self, "assert:", [aBoolean], smalltalk.TestCase)},
+return self}, function($ctx1) {$ctx1.fill(self,"assert:", [aBoolean], smalltalk.TestCase)})},
 args: ["aBoolean"],
 source: "assert: aBoolean\x0a\x09self assert: aBoolean description: 'Assertion failed'",
 messageSends: ["assert:description:"],
@@ -66,7 +66,7 @@ $1=aBoolean;
 if(! smalltalk.assert($1)){
 _st(self)._signalFailure_(aString);
 };
-return self}, self, "assert:description:", [aBoolean,aString], smalltalk.TestCase)},
+return self}, function($ctx1) {$ctx1.fill(self,"assert:description:", [aBoolean,aString], smalltalk.TestCase)})},
 args: ["aBoolean", "aString"],
 source: "assert: aBoolean description: aString\x0a\x09aBoolean ifFalse: [self signalFailure: aString]",
 messageSends: ["ifFalse:", "signalFailure:"],
@@ -84,7 +84,7 @@ var self=this;
 return smalltalk.withContext(function($ctx1) { 
var $1;
 $1=_st(self)._assert_description_(_st(expected).__eq(actual),_st(_st(_st("Expected: ").__comma(_st(expected)._asString())).__comma(" but was: ")).__comma(_st(actual)._asString()));
 return $1;
-}, self, "assert:equals:", [expected,actual], smalltalk.TestCase)},
+}, function($ctx1) {$ctx1.fill(self,"assert:equals:", [expected,actual], smalltalk.TestCase)})},
 args: ["expected", "actual"],
 source: "assert: expected equals: actual\x0a\x09^ self assert: (expected = actual) description: 'Expected: ', expected asString, ' but was: ', actual asString",
 messageSends: ["assert:description:", "=", ",", "asString"],
@@ -99,18 +99,18 @@ selector: "async:",
 category: 'async',
 fn: function (aBlock){
 var self=this;
+var c;
 return smalltalk.withContext(function($ctx1) { 
var $2,$1;
-$ctx1.locals.c=nil;
 _st(self)._errorIfNotAsync_("#async");
-$ctx1.locals.c=self["@context"];
+c=self["@context"];
 $1=(function(){
-return smalltalk.withContext(function($ctx2) { 
$2=_st(self)._isAsync();
+return smalltalk.withContext(function($ctx2) {
$2=_st(self)._isAsync();
 if(smalltalk.assert($2)){
-return _st($ctx1.locals.c)._execute_(aBlock);
+return _st(c)._execute_(aBlock);
 };
-})});
+}, function($ctx2) {$ctx2.fill(null, null, {})})});
 return $1;
-}, self, "async:", [aBlock], smalltalk.TestCase)},
+}, function($ctx1) {$ctx1.fill(self,"async:", [aBlock], smalltalk.TestCase)})},
 args: ["aBlock"],
 source: "async: aBlock\x0a\x09| c |\x0a\x09self errorIfNotAsync: '#async'.\x0a    c := context.\x0a    ^ [ self isAsync ifTrue: [ c execute: aBlock ] ]",
 messageSends: ["errorIfNotAsync:", "ifTrue:", "execute:", "isAsync"],
@@ -126,7 +126,7 @@ category: 'accessing',
 fn: function (aRunningTestContext){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
self["@context"]=aRunningTestContext;
-return self}, self, "context:", [aRunningTestContext], smalltalk.TestCase)},
+return self}, function($ctx1) {$ctx1.fill(self,"context:", [aRunningTestContext], smalltalk.TestCase)})},
 args: ["aRunningTestContext"],
 source: "context: aRunningTestContext\x0a\x09context := aRunningTestContext",
 messageSends: [],
@@ -142,7 +142,7 @@ category: 'testing',
 fn: function (aBoolean){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
_st(self)._assert_(_st(aBoolean)._not());
-return self}, self, "deny:", [aBoolean], smalltalk.TestCase)},
+return self}, function($ctx1) {$ctx1.fill(self,"deny:", [aBoolean], smalltalk.TestCase)})},
 args: ["aBoolean"],
 source: "deny: aBoolean\x0a\x09self assert: aBoolean not",
 messageSends: ["assert:", "not"],
@@ -162,7 +162,7 @@ $1=_st(self)._isAsync();
 if(! smalltalk.assert($1)){
 _st(self)._error_(_st(aString).__comma(" used without prior #timeout:"));
 };
-return self}, self, "errorIfNotAsync:", [aString], smalltalk.TestCase)},
+return self}, function($ctx1) {$ctx1.fill(self,"errorIfNotAsync:", [aString], smalltalk.TestCase)})},
 args: ["aString"],
 source: "errorIfNotAsync: aString\x0a\x09self isAsync ifFalse: [ \x0a    \x09self error: aString, ' used without prior #timeout:' ]",
 messageSends: ["ifFalse:", "error:", ",", "isAsync"],
@@ -179,7 +179,7 @@ fn: function (){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
_st(self)._errorIfNotAsync_("#finished");
 self["@asyncTimeout"]=nil;
-return self}, self, "finished", [], smalltalk.TestCase)},
+return self}, function($ctx1) {$ctx1.fill(self,"finished", [], smalltalk.TestCase)})},
 args: [],
 source: "finished\x0a\x09self errorIfNotAsync: '#finished'.\x0a\x09asyncTimeout := nil",
 messageSends: ["errorIfNotAsync:"],
@@ -197,7 +197,7 @@ var self=this;
 return smalltalk.withContext(function($ctx1) { 
var $1;
 $1=_st(self["@asyncTimeout"])._notNil();
 return $1;
-}, self, "isAsync", [], smalltalk.TestCase)},
+}, function($ctx1) {$ctx1.fill(self,"isAsync", [], smalltalk.TestCase)})},
 args: [],
 source: "isAsync\x0a\x09^asyncTimeout notNil",
 messageSends: ["notNil"],
@@ -214,7 +214,7 @@ fn: function (){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
self["@asyncTimeout"]=nil;
 _st(self)._perform_(_st(self)._selector());
-return self}, self, "performTest", [], smalltalk.TestCase)},
+return self}, function($ctx1) {$ctx1.fill(self,"performTest", [], smalltalk.TestCase)})},
 args: [],
 source: "performTest\x0a\x09asyncTimeout := nil.\x0a\x09self perform: self selector",
 messageSends: ["perform:", "selector"],
@@ -230,7 +230,7 @@ category: 'running',
 fn: function (){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
_st(_st((smalltalk.TestContext || TestContext))._testCase_(self))._start();
-return self}, self, "runCase", [], smalltalk.TestCase)},
+return self}, function($ctx1) {$ctx1.fill(self,"runCase", [], smalltalk.TestCase)})},
 args: [],
 source: "runCase\x0a\x09\x22Runs a test case in isolated context, leaking all errors.\x22\x0a\x0a\x09(TestContext testCase: self) start",
 messageSends: ["start", "testCase:"],
@@ -248,7 +248,7 @@ var self=this;
 return smalltalk.withContext(function($ctx1) { 
var $1;
 $1=self["@testSelector"];
 return $1;
-}, self, "selector", [], smalltalk.TestCase)},
+}, function($ctx1) {$ctx1.fill(self,"selector", [], smalltalk.TestCase)})},
 args: [],
 source: "selector\x0a\x09^testSelector",
 messageSends: [],
@@ -264,7 +264,7 @@ category: 'accessing',
 fn: function (aSelector){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
self["@testSelector"]=aSelector;
-return self}, self, "setTestSelector:", [aSelector], smalltalk.TestCase)},
+return self}, function($ctx1) {$ctx1.fill(self,"setTestSelector:", [aSelector], smalltalk.TestCase)})},
 args: ["aSelector"],
 source: "setTestSelector: aSelector\x0a\x09testSelector := aSelector",
 messageSends: [],
@@ -279,7 +279,7 @@ selector: "setUp",
 category: 'running',
 fn: function (){
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
return self}, self, "setUp", [], smalltalk.TestCase)},
+return smalltalk.withContext(function($ctx1) { 
return self}, function($ctx1) {$ctx1.fill(self,"setUp", [], smalltalk.TestCase)})},
 args: [],
 source: "setUp",
 messageSends: [],
@@ -295,7 +295,7 @@ category: 'testing',
 fn: function (aBlock){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
_st(self)._assert_(_st(aBlock)._value());
-return self}, self, "should:", [aBlock], smalltalk.TestCase)},
+return self}, function($ctx1) {$ctx1.fill(self,"should:", [aBlock], smalltalk.TestCase)})},
 args: ["aBlock"],
 source: "should: aBlock\x0a\x09self assert: aBlock value",
 messageSends: ["assert:", "value"],
@@ -311,12 +311,12 @@ category: 'testing',
 fn: function (aBlock,anExceptionClass){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
_st(self)._assert_(_st((function(){
-return smalltalk.withContext(function($ctx2) { 
_st(aBlock)._value();
+return smalltalk.withContext(function($ctx2) {
_st(aBlock)._value();
 return false;
-})}))._on_do_(anExceptionClass,(function(ex){
-return smalltalk.withContext(function($ctx2) { 
return true;
-})})));
-return self}, self, "should:raise:", [aBlock,anExceptionClass], smalltalk.TestCase)},
+}, function($ctx2) {$ctx2.fill(null, null, {})})}))._on_do_(anExceptionClass,(function(ex){
+return smalltalk.withContext(function($ctx2) {
return true;
+}, function($ctx2) {$ctx2.fill(null, null, {})})})));
+return self}, function($ctx1) {$ctx1.fill(self,"should:raise:", [aBlock,anExceptionClass], smalltalk.TestCase)})},
 args: ["aBlock", "anExceptionClass"],
 source: "should: aBlock raise: anExceptionClass\x0a\x09self assert: ([aBlock value. false] \x0a\x09\x09on: anExceptionClass \x0a\x09\x09do: [:ex | true])",
 messageSends: ["assert:", "on:do:", "value"],
@@ -332,12 +332,12 @@ category: 'testing',
 fn: function (aBlock,anExceptionClass){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
_st(self)._assert_(_st((function(){
-return smalltalk.withContext(function($ctx2) { 
_st(aBlock)._value();
+return smalltalk.withContext(function($ctx2) {
_st(aBlock)._value();
 return true;
-})}))._on_do_(anExceptionClass,(function(ex){
-return smalltalk.withContext(function($ctx2) { 
return false;
-})})));
-return self}, self, "shouldnt:raise:", [aBlock,anExceptionClass], smalltalk.TestCase)},
+}, function($ctx2) {$ctx2.fill(null, null, {})})}))._on_do_(anExceptionClass,(function(ex){
+return smalltalk.withContext(function($ctx2) {
return false;
+}, function($ctx2) {$ctx2.fill(null, null, {})})})));
+return self}, function($ctx1) {$ctx1.fill(self,"shouldnt:raise:", [aBlock,anExceptionClass], smalltalk.TestCase)})},
 args: ["aBlock", "anExceptionClass"],
 source: "shouldnt: aBlock raise: anExceptionClass\x0a\x09self assert: ([aBlock value. true] \x0a\x09\x09on: anExceptionClass \x0a\x09\x09do: [:ex | false])",
 messageSends: ["assert:", "on:do:", "value"],
@@ -356,7 +356,7 @@ return smalltalk.withContext(function($ctx1) { 
var $1,$2;
 $1=_st((smalltalk.TestFailure || TestFailure))._new();
 _st($1)._messageText_(aString);
 $2=_st($1)._signal();
-return self}, self, "signalFailure:", [aString], smalltalk.TestCase)},
+return self}, function($ctx1) {$ctx1.fill(self,"signalFailure:", [aString], smalltalk.TestCase)})},
 args: ["aString"],
 source: "signalFailure: aString\x0a\x09TestFailure new\x0a\x09\x09messageText: aString;\x0a\x09\x09signal",
 messageSends: ["messageText:", "new", "signal"],
@@ -371,7 +371,7 @@ selector: "tearDown",
 category: 'running',
 fn: function (){
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
return self}, self, "tearDown", [], smalltalk.TestCase)},
+return smalltalk.withContext(function($ctx1) { 
return self}, function($ctx1) {$ctx1.fill(self,"tearDown", [], smalltalk.TestCase)})},
 args: [],
 source: "tearDown",
 messageSends: [],
@@ -395,9 +395,9 @@ _st(self["@asyncTimeout"])._clearTimeout();
 };
 self["@asyncTimeout"]=(0);
 self["@asyncTimeout"]=_st(_st(self)._async_((function(){
-return smalltalk.withContext(function($ctx2) { 
return _st(self)._assert_description_(false,"SUnit grace time exhausted");
-})})))._valueWithTimeout_(aNumber);
-return self}, self, "timeout:", [aNumber], smalltalk.TestCase)},
+return smalltalk.withContext(function($ctx2) {
return _st(self)._assert_description_(false,"SUnit grace time exhausted");
+}, function($ctx2) {$ctx2.fill(null, null, {})})})))._valueWithTimeout_(aNumber);
+return self}, function($ctx1) {$ctx1.fill(self,"timeout:", [aNumber], smalltalk.TestCase)})},
 args: ["aNumber"],
 source: "timeout: aNumber\x0a\x09\x22Set a grace time timeout in milliseconds to run the test asynchronously\x22\x0a    \x0a\x09asyncTimeout ifNotNil: [ asyncTimeout clearTimeout ].\x0a    \x0a     \x22to allow #async: message send without throwing an error\x22\x0a\x09asyncTimeout := 0.\x0a    \x0a\x09asyncTimeout := (self async: [ \x0a    \x09self assert: false description: 'SUnit grace time exhausted' ])\x0a        \x09valueWithTimeout: aNumber",
 messageSends: ["ifNotNil:", "clearTimeout", "valueWithTimeout:", "async:", "assert:description:"],
@@ -413,16 +413,16 @@ selector: "allTestSelectors",
 category: 'accessing',
 fn: function (){
 var self=this;
+var selectors;
 return smalltalk.withContext(function($ctx1) { 
var $1,$2;
-$ctx1.locals.selectors=nil;
-$ctx1.locals.selectors=_st(self)._testSelectors();
+selectors=_st(self)._testSelectors();
 $1=_st(self)._shouldInheritSelectors();
 if(smalltalk.assert($1)){
-_st($ctx1.locals.selectors)._addAll_(_st(_st(self)._superclass())._allTestSelectors());
+_st(selectors)._addAll_(_st(_st(self)._superclass())._allTestSelectors());
 };
-$2=$ctx1.locals.selectors;
+$2=selectors;
 return $2;
-}, self, "allTestSelectors", [], smalltalk.TestCase.klass)},
+}, function($ctx1) {$ctx1.fill(self,"allTestSelectors", [], smalltalk.TestCase.klass)})},
 args: [],
 source: "allTestSelectors\x0a\x09| selectors |\x0a\x09selectors := self testSelectors.\x0a\x09self shouldInheritSelectors ifTrue: [\x0a\x09\x09selectors addAll: self superclass allTestSelectors].\x0a\x09^selectors",
 messageSends: ["testSelectors", "ifTrue:", "addAll:", "allTestSelectors", "superclass", "shouldInheritSelectors"],
@@ -439,10 +439,10 @@ fn: function (){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
var $1;
 $1=_st(_st(self)._allTestSelectors())._collect_((function(each){
-return smalltalk.withContext(function($ctx2) { 
return _st(self)._selector_(each);
-})}));
+return smalltalk.withContext(function($ctx2) {
return _st(self)._selector_(each);
+}, function($ctx2) {$ctx2.fill(null, null, {})})}));
 return $1;
-}, self, "buildSuite", [], smalltalk.TestCase.klass)},
+}, function($ctx1) {$ctx1.fill(self,"buildSuite", [], smalltalk.TestCase.klass)})},
 args: [],
 source: "buildSuite\x0a\x09^self allTestSelectors collect: [:each | self selector: each]",
 messageSends: ["collect:", "selector:", "allTestSelectors"],
@@ -460,7 +460,7 @@ var self=this;
 return smalltalk.withContext(function($ctx1) { 
var $1;
 $1=_st(_st(self)._name()).__eq("TestCase");
 return $1;
-}, self, "isAbstract", [], smalltalk.TestCase.klass)},
+}, function($ctx1) {$ctx1.fill(self,"isAbstract", [], smalltalk.TestCase.klass)})},
 args: [],
 source: "isAbstract\x0a\x09^ self name = 'TestCase'",
 messageSends: ["=", "name"],
@@ -478,7 +478,7 @@ var self=this;
 return smalltalk.withContext(function($ctx1) { 
var $1;
 $1=(smalltalk.TestCase || TestCase);
 return $1;
-}, self, "lookupHierarchyRoot", [], smalltalk.TestCase.klass)},
+}, function($ctx1) {$ctx1.fill(self,"lookupHierarchyRoot", [], smalltalk.TestCase.klass)})},
 args: [],
 source: "lookupHierarchyRoot\x0a\x09^TestCase",
 messageSends: [],
@@ -499,7 +499,7 @@ _st($2)._setTestSelector_(aSelector);
 $3=_st($2)._yourself();
 $1=$3;
 return $1;
-}, self, "selector:", [aSelector], smalltalk.TestCase.klass)},
+}, function($ctx1) {$ctx1.fill(self,"selector:", [aSelector], smalltalk.TestCase.klass)})},
 args: ["aSelector"],
 source: "selector: aSelector\x0a\x09^self new\x0a\x09\x09setTestSelector: aSelector;\x0a\x09\x09yourself",
 messageSends: ["setTestSelector:", "new", "yourself"],
@@ -517,7 +517,7 @@ var self=this;
 return smalltalk.withContext(function($ctx1) { 
var $1;
 $1=_st(self).__tild_eq(_st(self)._lookupHierarchyRoot());
 return $1;
-}, self, "shouldInheritSelectors", [], smalltalk.TestCase.klass)},
+}, function($ctx1) {$ctx1.fill(self,"shouldInheritSelectors", [], smalltalk.TestCase.klass)})},
 args: [],
 source: "shouldInheritSelectors\x0a\x09^self ~= self lookupHierarchyRoot",
 messageSends: ["~=", "lookupHierarchyRoot"],
@@ -534,10 +534,10 @@ fn: function (){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
var $1;
 $1=_st(_st(_st(self)._methodDictionary())._keys())._select_((function(each){
-return smalltalk.withContext(function($ctx2) { 
return _st(each)._match_("^test");
-})}));
+return smalltalk.withContext(function($ctx2) {
return _st(each)._match_("^test");
+}, function($ctx2) {$ctx2.fill(null, null, {})})}));
 return $1;
-}, self, "testSelectors", [], smalltalk.TestCase.klass)},
+}, function($ctx1) {$ctx1.fill(self,"testSelectors", [], smalltalk.TestCase.klass)})},
 args: [],
 source: "testSelectors\x0a\x09^self methodDictionary keys select: [:each | each match: '^test']",
 messageSends: ["select:", "match:", "keys", "methodDictionary"],
@@ -555,21 +555,21 @@ selector: "execute:",
 category: 'running',
 fn: function (aBlock){
 var self=this;
+var failed;
 return smalltalk.withContext(function($ctx1) { 
var $1,$3,$4,$2;
-$ctx1.locals.failed=nil;
 _st(self["@testCase"])._context_(self);
 $1=(function(){
-return smalltalk.withContext(function($ctx2) { 
$ctx1.locals.failed=true;
-$ctx1.locals.failed;
+return smalltalk.withContext(function($ctx2) {
failed=true;
+failed;
 _st(aBlock)._value();
-$ctx1.locals.failed=false;
-return $ctx1.locals.failed;
-})});
+failed=false;
+return failed;
+}, function($ctx2) {$ctx2.fill(null, null, {})})});
 $2=(function(){
-return smalltalk.withContext(function($ctx2) { 
_st(self["@testCase"])._context_(nil);
-$3=_st($ctx1.locals.failed)._and_((function(){
-return smalltalk.withContext(function($ctx3) { 
return _st(self["@testCase"])._isAsync();
-})}));
+return smalltalk.withContext(function($ctx2) {
_st(self["@testCase"])._context_(nil);
+$3=_st(failed)._and_((function(){
+return smalltalk.withContext(function($ctx3) {
return _st(self["@testCase"])._isAsync();
+}, function($ctx3) {$ctx3.fill(null, null, {})})}));
 if(smalltalk.assert($3)){
 _st(self["@testCase"])._finished();
 };
@@ -577,9 +577,9 @@ $4=_st(self["@testCase"])._isAsync();
 if(! smalltalk.assert($4)){
 return _st(self["@testCase"])._tearDown();
 };
-})});
+}, function($ctx2) {$ctx2.fill(null, null, {})})});
 _st($1)._ensure_($2);
-return self}, self, "execute:", [aBlock], smalltalk.TestContext)},
+return self}, function($ctx1) {$ctx1.fill(self,"execute:", [aBlock], smalltalk.TestContext)})},
 args: ["aBlock"],
 source: "execute: aBlock\x0a\x09| failed |\x0a    \x0a    testCase context: self.\x0a    [ \x0a    \x09failed := true. \x0a        aBlock value. \x0a        failed := false \x0a\x09] \x0a    \x09ensure: [\x0a        \x09testCase context: nil.\x0a            \x0a        \x09(failed and: [ testCase isAsync ]) ifTrue: [ \x0a            \x09testCase finished ].\x0a        \x09testCase isAsync ifFalse: [ \x0a        \x09\x09testCase tearDown ] ]",
 messageSends: ["context:", "ensure:", "ifTrue:", "finished", "and:", "isAsync", "ifFalse:", "tearDown", "value"],
@@ -595,10 +595,10 @@ category: 'running',
 fn: function (){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
_st(self)._execute_((function(){
-return smalltalk.withContext(function($ctx2) { 
_st(self["@testCase"])._setUp();
+return smalltalk.withContext(function($ctx2) {
_st(self["@testCase"])._setUp();
 return _st(self["@testCase"])._performTest();
-})}));
-return self}, self, "start", [], smalltalk.TestContext)},
+}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+return self}, function($ctx1) {$ctx1.fill(self,"start", [], smalltalk.TestContext)})},
 args: [],
 source: "start\x0a\x09self execute: [ \x0a    \x09testCase setUp. \x0a        testCase performTest ]",
 messageSends: ["execute:", "setUp", "performTest"],
@@ -614,7 +614,7 @@ category: 'accessing',
 fn: function (aTestCase){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
self["@testCase"]=aTestCase;
-return self}, self, "testCase:", [aTestCase], smalltalk.TestContext)},
+return self}, function($ctx1) {$ctx1.fill(self,"testCase:", [aTestCase], smalltalk.TestContext)})},
 args: ["aTestCase"],
 source: "testCase: aTestCase\x0a\x09testCase := aTestCase",
 messageSends: [],
@@ -636,7 +636,7 @@ _st($2)._testCase_(aTestCase);
 $3=_st($2)._yourself();
 $1=$3;
 return $1;
-}, self, "testCase:", [aTestCase], smalltalk.TestContext.klass)},
+}, function($ctx1) {$ctx1.fill(self,"testCase:", [aTestCase], smalltalk.TestContext.klass)})},
 args: ["aTestCase"],
 source: "testCase: aTestCase\x0a\x09^self new\x0a        testCase: aTestCase;\x0a        yourself",
 messageSends: ["testCase:", "new", "yourself"],
@@ -656,19 +656,19 @@ fn: function (aBlock){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
var $1,$3,$2;
 $1=(function(){
-return smalltalk.withContext(function($ctx2) { 
return _st(self)._withErrorReporting_((function(){
-return smalltalk.withContext(function($ctx3) { 
return smalltalk.TestContext.fn.prototype._execute_.apply(_st(self), [aBlock]);
-})}));
-})});
+return smalltalk.withContext(function($ctx2) {
return _st(self)._withErrorReporting_((function(){
+return smalltalk.withContext(function($ctx3) {
return smalltalk.TestContext.fn.prototype._execute_.apply(_st(self), [aBlock]);
+}, function($ctx3) {$ctx3.fill(null, null, {})})}));
+}, function($ctx2) {$ctx2.fill(null, null, {})})});
 $2=(function(){
-return smalltalk.withContext(function($ctx2) { 
$3=_st(self["@testCase"])._isAsync();
+return smalltalk.withContext(function($ctx2) {
$3=_st(self["@testCase"])._isAsync();
 if(! smalltalk.assert($3)){
 _st(self["@result"])._increaseRuns();
 return _st(self["@finished"])._value();
 };
-})});
+}, function($ctx2) {$ctx2.fill(null, null, {})})});
 _st($1)._ensure_($2);
-return self}, self, "execute:", [aBlock], smalltalk.ReportingTestContext)},
+return self}, function($ctx1) {$ctx1.fill(self,"execute:", [aBlock], smalltalk.ReportingTestContext)})},
 args: ["aBlock"],
 source: "execute: aBlock\x0a    [ \x0a    \x09self withErrorReporting: [ super execute: aBlock ] \x0a\x09]\x0a    \x09ensure: [ \x0a        \x09testCase isAsync ifFalse: [ \x0a            \x09result increaseRuns. finished value ] ]",
 messageSends: ["ensure:", "ifFalse:", "increaseRuns", "value", "isAsync", "withErrorReporting:", "execute:"],
@@ -684,7 +684,7 @@ category: 'accessing',
 fn: function (aBlock){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
self["@finished"]=aBlock;
-return self}, self, "finished:", [aBlock], smalltalk.ReportingTestContext)},
+return self}, function($ctx1) {$ctx1.fill(self,"finished:", [aBlock], smalltalk.ReportingTestContext)})},
 args: ["aBlock"],
 source: "finished: aBlock\x0a\x09finished := aBlock",
 messageSends: [],
@@ -700,7 +700,7 @@ category: 'accessing',
 fn: function (aTestResult){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
self["@result"]=aTestResult;
-return self}, self, "result:", [aTestResult], smalltalk.ReportingTestContext)},
+return self}, function($ctx1) {$ctx1.fill(self,"result:", [aTestResult], smalltalk.ReportingTestContext)})},
 args: ["aTestResult"],
 source: "result: aTestResult\x0a\x09result := aTestResult",
 messageSends: [],
@@ -716,13 +716,13 @@ category: 'private',
 fn: function (aBlock){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
_st((function(){
-return smalltalk.withContext(function($ctx2) { 
return _st(aBlock)._on_do_((smalltalk.TestFailure || TestFailure),(function(ex){
-return smalltalk.withContext(function($ctx3) { 
return _st(self["@result"])._addFailure_(self["@testCase"]);
-})}));
-})}))._on_do_((smalltalk.Error || Error),(function(ex){
-return smalltalk.withContext(function($ctx2) { 
return _st(self["@result"])._addError_(self["@testCase"]);
-})}));
-return self}, self, "withErrorReporting:", [aBlock], smalltalk.ReportingTestContext)},
+return smalltalk.withContext(function($ctx2) {
return _st(aBlock)._on_do_((smalltalk.TestFailure || TestFailure),(function(ex){
+return smalltalk.withContext(function($ctx3) {
return _st(self["@result"])._addFailure_(self["@testCase"]);
+}, function($ctx3) {$ctx3.fill(null, null, {})})}));
+}, function($ctx2) {$ctx2.fill(null, null, {})})}))._on_do_((smalltalk.Error || Error),(function(ex){
+return smalltalk.withContext(function($ctx2) {
return _st(self["@result"])._addError_(self["@testCase"]);
+}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+return self}, function($ctx1) {$ctx1.fill(self,"withErrorReporting:", [aBlock], smalltalk.ReportingTestContext)})},
 args: ["aBlock"],
 source: "withErrorReporting: aBlock\x0a \x09[ aBlock\x0a\x09\x09on: TestFailure \x0a\x09\x09do: [ :ex | result addFailure: testCase ] \x0a\x09]\x0a    \x09on: Error \x0a        do: [ :ex | result addError: testCase ]",
 messageSends: ["on:do:", "addError:", "addFailure:"],
@@ -745,7 +745,7 @@ _st($2)._finished_(aBlock);
 $3=_st($2)._yourself();
 $1=$3;
 return $1;
-}, self, "testCase:result:finished:", [aTestCase,aTestResult,aBlock], smalltalk.ReportingTestContext.klass)},
+}, function($ctx1) {$ctx1.fill(self,"testCase:result:finished:", [aTestCase,aTestResult,aBlock], smalltalk.ReportingTestContext.klass)})},
 args: ["aTestCase", "aTestResult", "aBlock"],
 source: "testCase: aTestCase result: aTestResult finished: aBlock\x0a\x09^(super testCase: aTestCase)\x0a        result: aTestResult;\x0a        finished: aBlock;\x0a        yourself",
 messageSends: ["result:", "testCase:", "finished:", "yourself"],
@@ -768,7 +768,7 @@ category: 'accessing',
 fn: function (anError){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
_st(_st(self)._errors())._add_(anError);
-return self}, self, "addError:", [anError], smalltalk.TestResult)},
+return self}, function($ctx1) {$ctx1.fill(self,"addError:", [anError], smalltalk.TestResult)})},
 args: ["anError"],
 source: "addError: anError\x0a\x09self errors add: anError",
 messageSends: ["add:", "errors"],
@@ -784,7 +784,7 @@ category: 'accessing',
 fn: function (aFailure){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
_st(_st(self)._failures())._add_(aFailure);
-return self}, self, "addFailure:", [aFailure], smalltalk.TestResult)},
+return self}, function($ctx1) {$ctx1.fill(self,"addFailure:", [aFailure], smalltalk.TestResult)})},
 args: ["aFailure"],
 source: "addFailure: aFailure\x0a\x09self failures add: aFailure",
 messageSends: ["add:", "failures"],
@@ -802,7 +802,7 @@ var self=this;
 return smalltalk.withContext(function($ctx1) { 
var $1;
 $1=self["@errors"];
 return $1;
-}, self, "errors", [], smalltalk.TestResult)},
+}, function($ctx1) {$ctx1.fill(self,"errors", [], smalltalk.TestResult)})},
 args: [],
 source: "errors\x0a\x09^errors",
 messageSends: [],
@@ -820,7 +820,7 @@ var self=this;
 return smalltalk.withContext(function($ctx1) { 
var $1;
 $1=self["@failures"];
 return $1;
-}, self, "failures", [], smalltalk.TestResult)},
+}, function($ctx1) {$ctx1.fill(self,"failures", [], smalltalk.TestResult)})},
 args: [],
 source: "failures\x0a\x09^failures",
 messageSends: [],
@@ -836,7 +836,7 @@ category: 'accessing',
 fn: function (){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
self["@runs"]=_st(self["@runs"]).__plus((1));
-return self}, self, "increaseRuns", [], smalltalk.TestResult)},
+return self}, function($ctx1) {$ctx1.fill(self,"increaseRuns", [], smalltalk.TestResult)})},
 args: [],
 source: "increaseRuns\x0a\x09runs := runs + 1",
 messageSends: ["+"],
@@ -857,7 +857,7 @@ self["@runs"]=(0);
 self["@errors"]=_st((smalltalk.Array || Array))._new();
 self["@failures"]=_st((smalltalk.Array || Array))._new();
 self["@total"]=(0);
-return self}, self, "initialize", [], smalltalk.TestResult)},
+return self}, function($ctx1) {$ctx1.fill(self,"initialize", [], smalltalk.TestResult)})},
 args: [],
 source: "initialize\x0a\x09super initialize.\x0a\x09timestamp := Date now.\x0a\x09runs := 0.\x0a\x09errors := Array new.\x0a\x09failures := Array new.\x0a\x09total := 0",
 messageSends: ["initialize", "now", "new"],
@@ -878,7 +878,7 @@ if(! smalltalk.assert($2)){
 $1=_st(aBlock)._value_(_st(_st(self)._runs()).__plus((1)));
 };
 return $1;
-}, self, "nextRunDo:", [aBlock], smalltalk.TestResult)},
+}, function($ctx1) {$ctx1.fill(self,"nextRunDo:", [aBlock], smalltalk.TestResult)})},
 args: ["aBlock"],
 source: "nextRunDo: aBlock\x0a\x22Runs aBlock with index of next run\x0aor does nothing if no more runs\x22\x0a^self runs == self total\x0a\x09ifFalse: [ aBlock value: self runs + 1 ]",
 messageSends: ["ifFalse:", "value:", "+", "runs", "==", "total"],
@@ -894,16 +894,16 @@ category: 'running',
 fn: function (aTestCase){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
_st((function(){
-return smalltalk.withContext(function($ctx2) { 
return _st((function(){
-return smalltalk.withContext(function($ctx3) { 
_st(self)._increaseRuns();
+return smalltalk.withContext(function($ctx2) {
return _st((function(){
+return smalltalk.withContext(function($ctx3) {
_st(self)._increaseRuns();
 return _st(aTestCase)._runCase();
-})}))._on_do_((smalltalk.TestFailure || TestFailure),(function(ex){
-return smalltalk.withContext(function($ctx3) { 
return _st(self)._addFailure_(aTestCase);
-})}));
-})}))._on_do_((smalltalk.Error || Error),(function(ex){
-return smalltalk.withContext(function($ctx2) { 
return _st(self)._addError_(aTestCase);
-})}));
-return self}, self, "runCase:", [aTestCase], smalltalk.TestResult)},
+}, function($ctx3) {$ctx3.fill(null, null, {})})}))._on_do_((smalltalk.TestFailure || TestFailure),(function(ex){
+return smalltalk.withContext(function($ctx3) {
return _st(self)._addFailure_(aTestCase);
+}, function($ctx3) {$ctx3.fill(null, null, {})})}));
+}, function($ctx2) {$ctx2.fill(null, null, {})})}))._on_do_((smalltalk.Error || Error),(function(ex){
+return smalltalk.withContext(function($ctx2) {
return _st(self)._addError_(aTestCase);
+}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+return self}, function($ctx1) {$ctx1.fill(self,"runCase:", [aTestCase], smalltalk.TestResult)})},
 args: ["aTestCase"],
 source: "runCase: aTestCase\x0a\x09[[\x09self increaseRuns.\x0a    \x09aTestCase runCase]\x0a\x09on: TestFailure do: [:ex | self addFailure: aTestCase]]\x0a\x09on: Error do: [:ex | self addError: aTestCase]\x0a",
 messageSends: ["on:do:", "addError:", "addFailure:", "increaseRuns", "runCase"],
@@ -921,7 +921,7 @@ var self=this;
 return smalltalk.withContext(function($ctx1) { 
var $1;
 $1=self["@runs"];
 return $1;
-}, self, "runs", [], smalltalk.TestResult)},
+}, function($ctx1) {$ctx1.fill(self,"runs", [], smalltalk.TestResult)})},
 args: [],
 source: "runs\x0a\x09^runs",
 messageSends: [],
@@ -939,18 +939,18 @@ var self=this;
 return smalltalk.withContext(function($ctx1) { 
var $2,$4,$3,$1;
 $2=_st(_st(self)._errors())._isEmpty();
 $3=(function(){
-return smalltalk.withContext(function($ctx2) { 
$4=_st(_st(self)._failures())._isEmpty();
+return smalltalk.withContext(function($ctx2) {
$4=_st(_st(self)._failures())._isEmpty();
 if(smalltalk.assert($4)){
 return "success";
 } else {
 return "failure";
 };
-})});
+}, function($ctx2) {$ctx2.fill(null, null, {})})});
 $1=_st($2)._ifTrue_ifFalse_($3,(function(){
-return smalltalk.withContext(function($ctx2) { 
return "error";
-})}));
+return smalltalk.withContext(function($ctx2) {
return "error";
+}, function($ctx2) {$ctx2.fill(null, null, {})})}));
 return $1;
-}, self, "status", [], smalltalk.TestResult)},
+}, function($ctx1) {$ctx1.fill(self,"status", [], smalltalk.TestResult)})},
 args: [],
 source: "status\x0a\x09^self errors isEmpty \x0a\x09\x09ifTrue: [\x0a\x09\x09\x09self failures isEmpty \x0a\x09\x09\x09\x09ifTrue: ['success']\x0a\x09\x09\x09\x09ifFalse: ['failure']]\x0a\x09\x09ifFalse: ['error']",
 messageSends: ["ifTrue:ifFalse:", "isEmpty", "failures", "errors"],
@@ -968,7 +968,7 @@ var self=this;
 return smalltalk.withContext(function($ctx1) { 
var $1;
 $1=self["@timestamp"];
 return $1;
-}, self, "timestamp", [], smalltalk.TestResult)},
+}, function($ctx1) {$ctx1.fill(self,"timestamp", [], smalltalk.TestResult)})},
 args: [],
 source: "timestamp\x0a\x09^timestamp",
 messageSends: [],
@@ -986,7 +986,7 @@ var self=this;
 return smalltalk.withContext(function($ctx1) { 
var $1;
 $1=self["@total"];
 return $1;
-}, self, "total", [], smalltalk.TestResult)},
+}, function($ctx1) {$ctx1.fill(self,"total", [], smalltalk.TestResult)})},
 args: [],
 source: "total\x0a\x09^total",
 messageSends: [],
@@ -1002,7 +1002,7 @@ category: 'accessing',
 fn: function (aNumber){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
self["@total"]=aNumber;
-return self}, self, "total:", [aNumber], smalltalk.TestResult)},
+return self}, function($ctx1) {$ctx1.fill(self,"total:", [aNumber], smalltalk.TestResult)})},
 args: ["aNumber"],
 source: "total: aNumber\x0a\x09total := aNumber",
 messageSends: [],
@@ -1023,7 +1023,7 @@ var self=this;
 return smalltalk.withContext(function($ctx1) { 
var $1;
 $1=self["@announcer"];
 return $1;
-}, self, "announcer", [], smalltalk.TestSuiteRunner)},
+}, function($ctx1) {$ctx1.fill(self,"announcer", [], smalltalk.TestSuiteRunner)})},
 args: [],
 source: "announcer\x0a\x09^announcer",
 messageSends: [],
@@ -1040,10 +1040,10 @@ fn: function (anInteger){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
var $1;
 $1=_st((smalltalk.ReportingTestContext || ReportingTestContext))._testCase_result_finished_(_st(self["@suite"])._at_(anInteger),self["@result"],(function(){
-return smalltalk.withContext(function($ctx2) { 
return _st(self)._resume();
-})}));
+return smalltalk.withContext(function($ctx2) {
return _st(self)._resume();
+}, function($ctx2) {$ctx2.fill(null, null, {})})}));
 return $1;
-}, self, "contextOf:", [anInteger], smalltalk.TestSuiteRunner)},
+}, function($ctx1) {$ctx1.fill(self,"contextOf:", [anInteger], smalltalk.TestSuiteRunner)})},
 args: ["anInteger"],
 source: "contextOf: anInteger\x0a   \x09^ReportingTestContext testCase: (suite at: anInteger) result: result finished: [ self resume ]",
 messageSends: ["testCase:result:finished:", "at:", "resume"],
@@ -1063,15 +1063,14 @@ smalltalk.Object.fn.prototype._initialize.apply(_st(self), []);
 self["@announcer"]=_st((smalltalk.Announcer || Announcer))._new();
 self["@result"]=_st((smalltalk.TestResult || TestResult))._new();
 self["@runNextTest"]=(function(){
-return smalltalk.withContext(function($ctx2) { 
$ctx2.locals.runs=nil;
-$ctx2.locals.runs=_st(self["@result"])._runs();
-$ctx2.locals.runs;
-$1=_st($ctx2.locals.runs).__lt(_st(self["@result"])._total());
+return smalltalk.withContext(function($ctx2) {
runs=_st(self["@result"])._runs();
+runs;
+$1=_st(runs).__lt(_st(self["@result"])._total());
 if(smalltalk.assert($1)){
-return _st(_st(self)._contextOf_(_st($ctx2.locals.runs).__plus((1))))._start();
+return _st(_st(self)._contextOf_(_st(runs).__plus((1))))._start();
 };
-})});
-return self}, self, "initialize", [], smalltalk.TestSuiteRunner)},
+}, function($ctx2) {$ctx2.fill(null, null, {})})});
+return self}, function($ctx1) {$ctx1.fill(self,"initialize", [], smalltalk.TestSuiteRunner)})},
 args: [],
 source: "initialize\x0a\x09super initialize.\x0a\x09announcer := Announcer new.\x0a    result := TestResult new.\x0a    runNextTest := [ | runs | runs := result runs. runs < result total ifTrue: [ (self contextOf: runs + 1) start ]].",
 messageSends: ["initialize", "new", "runs", "ifTrue:", "start", "contextOf:", "+", "<", "total"],
@@ -1089,7 +1088,7 @@ var self=this;
 return smalltalk.withContext(function($ctx1) { 
var $1;
 $1=self["@result"];
 return $1;
-}, self, "result", [], smalltalk.TestSuiteRunner)},
+}, function($ctx1) {$ctx1.fill(self,"result", [], smalltalk.TestSuiteRunner)})},
 args: [],
 source: "result\x0a\x09^result",
 messageSends: [],
@@ -1106,7 +1105,7 @@ fn: function (){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
_st(self["@runNextTest"])._fork();
 _st(self["@announcer"])._announce_(_st(_st((smalltalk.ResultAnnouncement || ResultAnnouncement))._new())._result_(self["@result"]));
-return self}, self, "resume", [], smalltalk.TestSuiteRunner)},
+return self}, function($ctx1) {$ctx1.fill(self,"resume", [], smalltalk.TestSuiteRunner)})},
 args: [],
 source: "resume\x0a\x09runNextTest fork.\x0a    announcer announce: (ResultAnnouncement new result: result)",
 messageSends: ["fork", "announce:", "result:", "new"],
@@ -1123,7 +1122,7 @@ fn: function (){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
_st(self["@result"])._total_(_st(self["@suite"])._size());
 _st(self)._resume();
-return self}, self, "run", [], smalltalk.TestSuiteRunner)},
+return self}, function($ctx1) {$ctx1.fill(self,"run", [], smalltalk.TestSuiteRunner)})},
 args: [],
 source: "run\x0a\x09result total: suite size.\x0a\x09self resume",
 messageSends: ["total:", "size", "resume"],
@@ -1139,7 +1138,7 @@ category: 'accessing',
 fn: function (aCollection){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
self["@suite"]=aCollection;
-return self}, self, "suite:", [aCollection], smalltalk.TestSuiteRunner)},
+return self}, function($ctx1) {$ctx1.fill(self,"suite:", [aCollection], smalltalk.TestSuiteRunner)})},
 args: ["aCollection"],
 source: "suite: aCollection\x0a\x09suite := aCollection",
 messageSends: [],
@@ -1156,7 +1155,7 @@ category: 'instance creation',
 fn: function (){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
_st(self)._shouldNotImplement();
-return self}, self, "new", [], smalltalk.TestSuiteRunner.klass)},
+return self}, function($ctx1) {$ctx1.fill(self,"new", [], smalltalk.TestSuiteRunner.klass)})},
 args: [],
 source: "new\x0a\x09self shouldNotImplement",
 messageSends: ["shouldNotImplement"],
@@ -1174,7 +1173,7 @@ var self=this;
 return smalltalk.withContext(function($ctx1) { 
var $1;
 $1=_st(smalltalk.Object.klass.fn.prototype._new.apply(_st(self), []))._suite_(aCollection);
 return $1;
-}, self, "on:", [aCollection], smalltalk.TestSuiteRunner.klass)},
+}, function($ctx1) {$ctx1.fill(self,"on:", [aCollection], smalltalk.TestSuiteRunner.klass)})},
 args: ["aCollection"],
 source: "on: aCollection\x0a\x09^super new suite: aCollection",
 messageSends: ["suite:", "new"],

+ 34 - 50
js/boot.js

@@ -504,49 +504,27 @@ function Smalltalk() {
     };
 
 	/* Handles unhandled errors during message sends */
-    // TODO: simply send the message ans handle #dnu:
+    // simply send the message and handle #dnu:
 
 	st.send = function(receiver, selector, args, klass) {
-		if(st.thisContext) {
-			return withContextSend(receiver, selector, args, klass);
-		} else {
-			try {return withContextSend(receiver, selector, args, klass)}
-			catch(error) {
-				// Reset the context stack in any case
-				st.thisContext = undefined;
-				if(error.smalltalkError) {
-					handleError(error);
-					return nil;
-				} else {
-					throw(error);
-				}
-			}
-		}
-	};
-
-    //TODO: remove
-	function withContextSend(receiver, selector, args, klass) {
-		var call, method;
+		var method;
 		if(receiver == null) {
 			receiver = nil;
 		}
 		method = klass ? klass.fn.prototype[selector] : receiver.klass && receiver[selector];
 		if(method) {
-			var context = pushContext(receiver, selector, args);
-			call = method.apply(receiver, args);
-			popContext(context);
-			return call;
+            return method.apply(receiver, args);
 		} else {
 			return messageNotUnderstood(receiver, selector, args);
 		}
 	}
 
-	st.withContext = function(fn, receiver, selector, args, lookupClass) {
+	st.withContext = function(worker, setup) {
 		if(st.thisContext) {
             st.thisContext.pc++;
-			return inContext(fn, receiver, selector, args, lookupClass);
+			return inContext(worker, setup);
 		} else {
-			try {return inContext(fn, receiver, selector, args, lookupClass)}
+			try {return inContext(worker, setup)}
 			catch(error) {
 				// Reset the context stack in any case
 				st.thisContext = undefined;
@@ -560,9 +538,9 @@ function Smalltalk() {
 		}
 	};
 
-	function inContext(fn, receiver, selector, args, lookupClass) {
-		var context = pushContext(receiver, selector, args, lookupClass);
-		var result = fn(context);
+	function inContext(worker, setup) {
+		var context = pushContext(setup);
+		var result = worker(context);
 		popContext(context);
 		return result;
 	}
@@ -627,11 +605,16 @@ function Smalltalk() {
 	/* Handle thisContext pseudo variable */
 
 	st.getThisContext = function() {
-		return st.thisContext ? st.thisContext.copy() : nil;
+        if(st.thisContext) {
+		    st.thisContext.init();
+            return st.thisContext;
+        } else {
+            return nil;
+        }
 	};
 
-	function pushContext(receiver, selector, locals, lookupClass) {
-		return st.thisContext = new SmalltalkMethodContext(receiver, selector, locals, smalltalk.thisContext, lookupClass);
+	function pushContext(setup) {
+		return st.thisContext = new SmalltalkMethodContext(smalltalk.thisContext, setup);
 	}
 
 	function popContext(context) {
@@ -740,28 +723,29 @@ function Smalltalk() {
 
 inherits(Smalltalk, SmalltalkObject);
 
-function SmalltalkMethodContext(receiver, selector, locals, home, lookupClass, pc) {
-	this.receiver    = receiver;
-    this.selector    = selector;
-	this.locals      = locals || {};
+function SmalltalkMethodContext(home, setup) {
 	this.homeContext = home;
-    this.lookupClass = lookupClass;
-    this.pc          = pc || 0;
+    this.setup       = setup || function() {};
+    this.pc          = 0;
+    this.locals      = {};
 }
 
 inherits(SmalltalkMethodContext, SmalltalkObject);
 
-SmalltalkMethodContext.prototype.copy = function() {
+SmalltalkMethodContext.prototype.fill = function(receiver, selector, args, // locals,
+                                                 lookupClass) {
+    this.receiver    = receiver;
+    this.selector    = selector;
+    this.args        = args || [];
+    this.locals      = /*locals ||*/ {};
+    this.lookupClass = lookupClass;
+};
+
+SmalltalkMethodContext.prototype.init = function() {
 	var home = this.homeContext;
-	if(home) {home = home.copy()}
-	return new SmalltalkMethodContext(
-		this.receiver,
-        this.selector,
-		this.locals,
-		home,
-        this.lookupClass,
-        this.pc
-	);
+	if(home) {home = home.init()}
+
+    this.setup(this);
 };
 
 SmalltalkMethodContext.prototype.method = function() {

+ 25 - 8
st/Compiler-IR.st

@@ -494,6 +494,11 @@ superSends: aCollection
 	superSends := aCollection
 !
 
+tempDeclarations
+	^ self instructions select: [ :each | 
+    	each isTempDeclaration ]
+!
+
 theClass
 	^ theClass
 !
@@ -595,6 +600,12 @@ name: aString
 	name := aString
 ! !
 
+!IRTempDeclaration methodsFor: 'testing'!
+
+isTempDeclaration
+	^ true
+! !
+
 !IRTempDeclaration methodsFor: 'visiting'!
 
 accept: aVisitor
@@ -897,6 +908,8 @@ visitIRMethod: anIRMethod
 		nextPutMethodDeclaration: anIRMethod 
 		with: [ self stream 
 			nextPutFunctionWith: [ 
+            	self stream nextPutVars: (anIRMethod tempDeclarations collect: [ :each |
+    				each name asVariableName ]).
             	self stream nextPutContextFor: anIRMethod during: [
 				anIRMethod internalVariables notEmpty ifTrue: [
 					self stream nextPutVars: (anIRMethod internalVariables asArray collect: [ :each |
@@ -949,9 +962,9 @@ visitIRSequence: anIRSequence
 !
 
 visitIRTempDeclaration: anIRTempDeclaration
-	self stream 
-    	nextPutAll: anIRTempDeclaration scope alias, '.locals.', anIRTempDeclaration name, '=nil;'; 
-        lf
+	"self stream 
+    	nextPutAll: 'var ', anIRTempDeclaration name asVariableName, ';'; 
+        lf"
 !
 
 visitIRValue: anIRValue
@@ -1006,10 +1019,12 @@ nextPutAssignment
 
 nextPutBlockContextFor: anIRClosure during: aBlock
 	self 
-    	nextPutAll: 'return smalltalk.withContext(function(', anIRClosure scope alias, ') { '; 
+    	nextPutAll: 'return smalltalk.withContext(function(', anIRClosure scope alias, ') {'; 
         nextPutAll: String cr.
     aBlock value.
-    self nextPutAll: '})'
+    self 
+    	nextPutAll: '}, function(', anIRClosure scope alias, ') {';
+        nextPutAll: anIRClosure scope alias, '.fill(null, null, {})})'
 !
 
 nextPutClosureWith: aBlock arguments: anArray
@@ -1028,14 +1043,14 @@ nextPutContextFor: aMethod during: aBlock
         nextPutAll: String cr.
     aBlock value.
     self 
-    	nextPutAll: '}, self, ';
-        nextPutAll: aMethod selector asJavascript, ', ['.
+    	nextPutAll: '}, function(', aMethod scope alias, ') {', aMethod scope alias; 
+        nextPutAll: '.fill(self,', aMethod selector asJavascript, ', ['.
     aMethod arguments 
     	do: [ :each | self nextPutAll: each asVariableName ]
       	separatedBy: [ self nextPutAll: ','  ].
     self nextPutAll: '], ';
         nextPutAll: aMethod theClass asJavascript;
-        nextPutAll: ')'
+        nextPutAll: ')})'
 !
 
 nextPutFunctionWith: aBlock arguments: anArray
@@ -1135,6 +1150,8 @@ nextPutVar: aString
 !
 
 nextPutVars: aCollection
+	aCollection ifEmpty: [ ^self ].
+    
 	stream nextPutAll: 'var '.
 	aCollection 
 		do: [ :each | stream nextPutAll: each ]

+ 0 - 6
st/Compiler-Semantic.st

@@ -357,12 +357,6 @@ ScopeVar subclass: #TempVar
 !TempVar commentStamp!
 I am an temporary variable of a method or block.!
 
-!TempVar methodsFor: 'accessing'!
-
-alias
-	^ self scope alias, '.locals.', super alias
-! !
-
 !TempVar methodsFor: 'testing'!
 
 isTempVar

Vissa filer visades inte eftersom för många filer har ändrats