Browse Source

- improved MethodContext >> asString
- fixed block context filling
- recompiled all .js files

Nicolas Petton 11 years ago
parent
commit
b4f9a7f555

+ 17 - 17
js/Benchfib.deploy.js

@@ -50,7 +50,7 @@ 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, {})})}));
+}, function($ctx3) {$ctx3.fillBlock([], {})})}));
 $3=size;
 $4=(function(i){
 return smalltalk.withContext(function($ctx3) {
$5=_st(flags)._at_(i);
@@ -61,17 +61,17 @@ k=_st(i).__plus(prime);
 k;
 _st((function(){
 return smalltalk.withContext(function($ctx4) {
return _st(k).__lt_eq(size);
-}, function($ctx4) {$ctx4.fill(null, null, {})})}))._whileTrue_((function(){
+}, function($ctx4) {$ctx4.fillBlock([], {})})}))._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, {})})}));
+}, function($ctx4) {$ctx4.fillBlock([], {})})}));
 count=_st(count).__plus((1));
 return count;
 };
-}, function($ctx3) {$ctx3.fill(null, null, {})})});
+}, function($ctx3) {$ctx3.fillBlock([i], {})})});
 return _st((1))._to_do_($3,$4);
-}, function($ctx2) {$ctx2.fill(null, null, {})})});
+}, function($ctx2) {$ctx2.fillBlock([iter], {})})});
 _st((1))._to_do_($1,$2);
 $6=count;
 return $6;
@@ -137,25 +137,25 @@ n1=(1);
 _st((function(){
 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, {})})}));
+}, function($ctx3) {$ctx3.fillBlock([], {})})}));
 t1;
 return _st(t1).__lt((1000));
-}, function($ctx2) {$ctx2.fill(null, null, {})})}))._whileTrue_((function(){
+}, function($ctx2) {$ctx2.fillBlock([], {})})}))._whileTrue_((function(){
 return smalltalk.withContext(function($ctx2) {
n1=_st(n1).__star((2));
 return n1;
-}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+}, function($ctx2) {$ctx2.fillBlock([], {})})}));
 n2=(28);
 _st((function(){
 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, {})})}));
+}, function($ctx3) {$ctx3.fillBlock([], {})})}));
 t2;
 return _st(t2).__lt((1000));
-}, function($ctx2) {$ctx2.fill(null, null, {})})}))._whileTrue_((function(){
+}, function($ctx2) {$ctx2.fillBlock([], {})})}))._whileTrue_((function(){
 return smalltalk.withContext(function($ctx2) {
n2=_st(n2).__plus((1));
 return n2;
-}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+}, function($ctx2) {$ctx2.fillBlock([], {})})}));
 $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;
 }, function($ctx1) {$ctx1.fill(self,"jstinyBenchmarks", [], {t1:t1,t2:t2,r:r,n1:n1,n2:n2}, smalltalk.Number)})}
@@ -174,25 +174,25 @@ n1=(1);
 _st((function(){
 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, {})})}));
+}, function($ctx3) {$ctx3.fillBlock([], {})})}));
 t1;
 return _st(t1).__lt((1000));
-}, function($ctx2) {$ctx2.fill(null, null, {})})}))._whileTrue_((function(){
+}, function($ctx2) {$ctx2.fillBlock([], {})})}))._whileTrue_((function(){
 return smalltalk.withContext(function($ctx2) {
n1=_st(n1).__star((2));
 return n1;
-}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+}, function($ctx2) {$ctx2.fillBlock([], {})})}));
 n2=(16);
 _st((function(){
 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, {})})}));
+}, function($ctx3) {$ctx3.fillBlock([], {})})}));
 t2;
 return _st(t2).__lt((1000));
-}, function($ctx2) {$ctx2.fill(null, null, {})})}))._whileTrue_((function(){
+}, function($ctx2) {$ctx2.fillBlock([], {})})}))._whileTrue_((function(){
 return smalltalk.withContext(function($ctx2) {
n2=_st(n2).__plus((1));
 return n2;
-}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+}, function($ctx2) {$ctx2.fillBlock([], {})})}));
 $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;
 }, function($ctx1) {$ctx1.fill(self,"tinyBenchmarks", [], {t1:t1,t2:t2,r:r,n1:n1,n2:n2}, smalltalk.Number)})}

+ 17 - 17
js/Benchfib.js

@@ -61,7 +61,7 @@ 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, {})})}));
+}, function($ctx3) {$ctx3.fillBlock([], {})})}));
 $3=size;
 $4=(function(i){
 return smalltalk.withContext(function($ctx3) {
$5=_st(flags)._at_(i);
@@ -72,17 +72,17 @@ k=_st(i).__plus(prime);
 k;
 _st((function(){
 return smalltalk.withContext(function($ctx4) {
return _st(k).__lt_eq(size);
-}, function($ctx4) {$ctx4.fill(null, null, {})})}))._whileTrue_((function(){
+}, function($ctx4) {$ctx4.fillBlock([], {})})}))._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, {})})}));
+}, function($ctx4) {$ctx4.fillBlock([], {})})}));
 count=_st(count).__plus((1));
 return count;
 };
-}, function($ctx3) {$ctx3.fill(null, null, {})})});
+}, function($ctx3) {$ctx3.fillBlock([i], {})})});
 return _st((1))._to_do_($3,$4);
-}, function($ctx2) {$ctx2.fill(null, null, {})})});
+}, function($ctx2) {$ctx2.fillBlock([iter], {})})});
 _st((1))._to_do_($1,$2);
 $6=count;
 return $6;
@@ -163,25 +163,25 @@ n1=(1);
 _st((function(){
 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, {})})}));
+}, function($ctx3) {$ctx3.fillBlock([], {})})}));
 t1;
 return _st(t1).__lt((1000));
-}, function($ctx2) {$ctx2.fill(null, null, {})})}))._whileTrue_((function(){
+}, function($ctx2) {$ctx2.fillBlock([], {})})}))._whileTrue_((function(){
 return smalltalk.withContext(function($ctx2) {
n1=_st(n1).__star((2));
 return n1;
-}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+}, function($ctx2) {$ctx2.fillBlock([], {})})}));
 n2=(28);
 _st((function(){
 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, {})})}));
+}, function($ctx3) {$ctx3.fillBlock([], {})})}));
 t2;
 return _st(t2).__lt((1000));
-}, function($ctx2) {$ctx2.fill(null, null, {})})}))._whileTrue_((function(){
+}, function($ctx2) {$ctx2.fillBlock([], {})})}))._whileTrue_((function(){
 return smalltalk.withContext(function($ctx2) {
n2=_st(n2).__plus((1));
 return n2;
-}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+}, function($ctx2) {$ctx2.fillBlock([], {})})}));
 $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;
 }, function($ctx1) {$ctx1.fill(self,"jstinyBenchmarks", [], {t1:t1,t2:t2,r:r,n1:n1,n2:n2}, smalltalk.Number)})},
@@ -205,25 +205,25 @@ n1=(1);
 _st((function(){
 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, {})})}));
+}, function($ctx3) {$ctx3.fillBlock([], {})})}));
 t1;
 return _st(t1).__lt((1000));
-}, function($ctx2) {$ctx2.fill(null, null, {})})}))._whileTrue_((function(){
+}, function($ctx2) {$ctx2.fillBlock([], {})})}))._whileTrue_((function(){
 return smalltalk.withContext(function($ctx2) {
n1=_st(n1).__star((2));
 return n1;
-}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+}, function($ctx2) {$ctx2.fillBlock([], {})})}));
 n2=(16);
 _st((function(){
 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, {})})}));
+}, function($ctx3) {$ctx3.fillBlock([], {})})}));
 t2;
 return _st(t2).__lt((1000));
-}, function($ctx2) {$ctx2.fill(null, null, {})})}))._whileTrue_((function(){
+}, function($ctx2) {$ctx2.fillBlock([], {})})}))._whileTrue_((function(){
 return smalltalk.withContext(function($ctx2) {
n2=_st(n2).__plus((1));
 return n2;
-}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+}, function($ctx2) {$ctx2.fillBlock([], {})})}));
 $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;
 }, function($ctx1) {$ctx1.fill(self,"tinyBenchmarks", [], {t1:t1,t2:t2,r:r,n1:n1,n2:n2}, smalltalk.Number)})},

+ 4 - 4
js/Compiler-AST.deploy.js

@@ -228,13 +228,13 @@ var self=this;
 return smalltalk.withContext(function($ctx1) { 
var $1;
 $1=_st(_st(_st(self)._shouldBeAliased())._or_((function(){
 return smalltalk.withContext(function($ctx2) {
return _st(self)._shouldBeInlined();
-}, function($ctx2) {$ctx2.fill(null, null, {})})})))._or_((function(){
+}, function($ctx2) {$ctx2.fillBlock([], {})})})))._or_((function(){
 return smalltalk.withContext(function($ctx2) {
return _st(_st(_st(self)._nodes())._detect_ifNone_((function(each){
 return smalltalk.withContext(function($ctx3) {
return _st(each)._subtreeNeedsAliasing();
-}, function($ctx3) {$ctx3.fill(null, null, {})})}),(function(){
+}, function($ctx3) {$ctx3.fillBlock([each], {})})}),(function(){
 return smalltalk.withContext(function($ctx3) {
return false;
-}, function($ctx3) {$ctx3.fill(null, null, {})})}))).__tild_eq(false);
-}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+}, function($ctx3) {$ctx3.fillBlock([], {})})}))).__tild_eq(false);
+}, function($ctx2) {$ctx2.fillBlock([], {})})}));
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"subtreeNeedsAliasing", [], {}, smalltalk.Node)})}
 }),

+ 4 - 4
js/Compiler-AST.js

@@ -315,13 +315,13 @@ var self=this;
 return smalltalk.withContext(function($ctx1) { 
var $1;
 $1=_st(_st(_st(self)._shouldBeAliased())._or_((function(){
 return smalltalk.withContext(function($ctx2) {
return _st(self)._shouldBeInlined();
-}, function($ctx2) {$ctx2.fill(null, null, {})})})))._or_((function(){
+}, function($ctx2) {$ctx2.fillBlock([], {})})})))._or_((function(){
 return smalltalk.withContext(function($ctx2) {
return _st(_st(_st(self)._nodes())._detect_ifNone_((function(each){
 return smalltalk.withContext(function($ctx3) {
return _st(each)._subtreeNeedsAliasing();
-}, function($ctx3) {$ctx3.fill(null, null, {})})}),(function(){
+}, function($ctx3) {$ctx3.fillBlock([each], {})})}),(function(){
 return smalltalk.withContext(function($ctx3) {
return false;
-}, function($ctx3) {$ctx3.fill(null, null, {})})}))).__tild_eq(false);
-}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+}, function($ctx3) {$ctx3.fillBlock([], {})})}))).__tild_eq(false);
+}, function($ctx2) {$ctx2.fillBlock([], {})})}));
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"subtreeNeedsAliasing", [], {}, smalltalk.Node)})},
 args: [],

+ 7 - 7
js/Compiler-Core.deploy.js

@@ -198,7 +198,7 @@ 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 _st(self)._install_forClass_category_(_st(each)._source(),aClass,_st(each)._category());
-}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+}, function($ctx2) {$ctx2.fillBlock([each], {})})}));
 _st(self)._setupClass_(aClass);
 $1=_st(aClass)._isMetaclass();
 if(! smalltalk.assert($1)){
@@ -222,8 +222,8 @@ $2=_st($1)._cr();
 $2;
 return _st((function(){
 return smalltalk.withContext(function($ctx3) {
return _st(self)._recompile_(each);
-}, function($ctx3) {$ctx3.fill(null, null, {})})}))._valueWithTimeout_((100));
-}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+}, function($ctx3) {$ctx3.fillBlock([], {})})}))._valueWithTimeout_((100));
+}, function($ctx2) {$ctx2.fillBlock([each], {})})}));
 return self}, function($ctx1) {$ctx1.fill(self,"recompileAll", [], {}, smalltalk.Compiler)})}
 }),
 smalltalk.Compiler);
@@ -312,7 +312,7 @@ 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);
-}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+}, function($ctx2) {$ctx2.fillBlock([each], {})})}));
 return self}, function($ctx1) {$ctx1.fill(self,"recompileAll", [], {}, smalltalk.Compiler.klass)})}
 }),
 smalltalk.Compiler.klass);
@@ -344,7 +344,7 @@ 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);
-}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+}, function($ctx2) {$ctx2.fillBlock([each], {})})}));
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"visitAll:", [aCollection], {}, smalltalk.NodeVisitor)})}
 }),
@@ -558,7 +558,7 @@ return smalltalk.withContext(function($ctx1) { 
var $2,$3,$5,$4,$1;
 $2=_st(aClass)._isMetaclass();
 $3=(function(){
 return smalltalk.withContext(function($ctx2) {
return _st(_st(_st(aClass)._instanceClass())._name()).__comma(".klass");
-}, function($ctx2) {$ctx2.fill(null, null, {})})});
+}, function($ctx2) {$ctx2.fillBlock([], {})})});
 $4=(function(){
 return smalltalk.withContext(function($ctx2) {
$5=_st(aClass)._isNil();
 if(smalltalk.assert($5)){
@@ -566,7 +566,7 @@ return "nil";
 } else {
 return _st(aClass)._name();
 };
-}, function($ctx2) {$ctx2.fill(null, null, {})})});
+}, function($ctx2) {$ctx2.fillBlock([], {})})});
 $1=_st($2)._ifTrue_ifFalse_($3,$4);
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"classNameFor:", [aClass], {}, smalltalk.AbstractCodeGenerator)})}

+ 7 - 7
js/Compiler-Core.js

@@ -265,7 +265,7 @@ 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 _st(self)._install_forClass_category_(_st(each)._source(),aClass,_st(each)._category());
-}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+}, function($ctx2) {$ctx2.fillBlock([each], {})})}));
 _st(self)._setupClass_(aClass);
 $1=_st(aClass)._isMetaclass();
 if(! smalltalk.assert($1)){
@@ -294,8 +294,8 @@ $2=_st($1)._cr();
 $2;
 return _st((function(){
 return smalltalk.withContext(function($ctx3) {
return _st(self)._recompile_(each);
-}, function($ctx3) {$ctx3.fill(null, null, {})})}))._valueWithTimeout_((100));
-}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+}, function($ctx3) {$ctx3.fillBlock([], {})})}))._valueWithTimeout_((100));
+}, function($ctx2) {$ctx2.fillBlock([each], {})})}));
 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]",
@@ -419,7 +419,7 @@ 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);
-}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+}, function($ctx2) {$ctx2.fillBlock([each], {})})}));
 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]",
@@ -463,7 +463,7 @@ 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);
-}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+}, function($ctx2) {$ctx2.fillBlock([each], {})})}));
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"visitAll:", [aCollection], {}, smalltalk.NodeVisitor)})},
 args: ["aCollection"],
@@ -758,7 +758,7 @@ return smalltalk.withContext(function($ctx1) { 
var $2,$3,$5,$4,$1;
 $2=_st(aClass)._isMetaclass();
 $3=(function(){
 return smalltalk.withContext(function($ctx2) {
return _st(_st(_st(aClass)._instanceClass())._name()).__comma(".klass");
-}, function($ctx2) {$ctx2.fill(null, null, {})})});
+}, function($ctx2) {$ctx2.fillBlock([], {})})});
 $4=(function(){
 return smalltalk.withContext(function($ctx2) {
$5=_st(aClass)._isNil();
 if(smalltalk.assert($5)){
@@ -766,7 +766,7 @@ return "nil";
 } else {
 return _st(aClass)._name();
 };
-}, function($ctx2) {$ctx2.fill(null, null, {})})});
+}, function($ctx2) {$ctx2.fillBlock([], {})})});
 $1=_st($2)._ifTrue_ifFalse_($3,$4);
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"classNameFor:", [aClass], {}, smalltalk.AbstractCodeGenerator)})},

+ 74 - 58
js/Compiler-IR.deploy.js

@@ -45,7 +45,7 @@ if(smalltalk.assert($3)){
 threshold=i;
 return threshold;
 };
-}, function($ctx2) {$ctx2.fill(null, null, {})})});
+}, function($ctx2) {$ctx2.fillBlock([each,i], {})})});
 _st($1)._withIndexDo_($2);
 result=_st((smalltalk.OrderedCollection || OrderedCollection))._new();
 $4=aCollection;
@@ -58,7 +58,7 @@ $7=_st(self)._alias_(each);
 $7=_st(self)._visit_(each);
 };
 return _st($6)._add_($7);
-}, function($ctx2) {$ctx2.fill(null, null, {})})});
+}, function($ctx2) {$ctx2.fillBlock([each,i], {})})});
 _st($4)._withIndexDo_($5);
 $9=result;
 return $9;
@@ -223,10 +223,10 @@ _st($3)._name_(_st(each)._name());
 _st($3)._scope_(_st(aNode)._scope());
 $4=_st($3)._yourself();
 return _st(closure)._add_($4);
-}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+}, function($ctx2) {$ctx2.fillBlock([each], {})})}));
 _st(_st(aNode)._nodes())._do_((function(each){
 return smalltalk.withContext(function($ctx2) {
return _st(closure)._add_(_st(self)._visit_(each));
-}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+}, function($ctx2) {$ctx2.fillBlock([each], {})})}));
 $5=closure;
 return $5;
 }, function($ctx1) {$ctx1.fill(self,"visitBlockNode:", [aNode], {closure:closure}, smalltalk.IRASTTranslator)})}
@@ -247,7 +247,7 @@ return smalltalk.withContext(function($ctx2) {
$5=_st(aNode)._nodes();
 $6=(function(){
 return smalltalk.withContext(function($ctx3) {
_st(_st(_st(aNode)._nodes())._allButLast())._do_((function(each){
 return smalltalk.withContext(function($ctx4) {
return _st(_st(self)._sequence())._add_(_st(self)._visit_(each));
-}, function($ctx4) {$ctx4.fill(null, null, {})})}));
+}, function($ctx4) {$ctx4.fillBlock([each], {})})}));
 $7=_st(_st(_st(aNode)._nodes())._last())._isReturnNode();
 if(smalltalk.assert($7)){
 return _st(_st(self)._sequence())._add_(_st(self)._visit_(_st(_st(aNode)._nodes())._last()));
@@ -257,9 +257,9 @@ _st($8)._add_(_st(self)._visit_(_st(_st(aNode)._nodes())._last()));
 $9=_st($8)._yourself();
 return _st(_st(self)._sequence())._add_($9);
 };
-}, function($ctx3) {$ctx3.fill(null, null, {})})});
+}, function($ctx3) {$ctx3.fillBlock([], {})})});
 return _st($5)._ifNotEmpty_($6);
-}, function($ctx2) {$ctx2.fill(null, null, {})})});
+}, function($ctx2) {$ctx2.fillBlock([], {})})});
 $1=_st($2)._withSequence_do_($3,$4);
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"visitBlockSequenceNode:", [aNode], {}, smalltalk.IRASTTranslator)})}
@@ -280,11 +280,11 @@ alias=_st(self)._alias_(_st(aNode)._receiver());
 alias;
 _st(_st(aNode)._nodes())._do_((function(each){
 return smalltalk.withContext(function($ctx2) {
return _st(each)._receiver_(_st(_st((smalltalk.VariableNode || VariableNode))._new())._binding_(_st(alias)._variable()));
-}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+}, function($ctx2) {$ctx2.fillBlock([each], {})})}));
 };
 _st(_st(_st(aNode)._nodes())._allButLast())._do_((function(each){
 return smalltalk.withContext(function($ctx2) {
return _st(_st(self)._sequence())._add_(_st(self)._visit_(each));
-}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+}, function($ctx2) {$ctx2.fillBlock([each], {})})}));
 $2=_st(self)._alias_(_st(_st(aNode)._nodes())._last());
 return $2;
 }, function($ctx1) {$ctx1.fill(self,"visitCascadeNode:", [aNode], {alias:alias}, smalltalk.IRASTTranslator)})}
@@ -302,7 +302,7 @@ return smalltalk.withContext(function($ctx1) { 
var $1;
 array=_st((smalltalk.IRDynamicArray || IRDynamicArray))._new();
 _st(_st(self)._aliasTemporally_(_st(aNode)._nodes()))._do_((function(each){
 return smalltalk.withContext(function($ctx2) {
return _st(array)._add_(each);
-}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+}, function($ctx2) {$ctx2.fillBlock([each], {})})}));
 $1=array;
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"visitDynamicArrayNode:", [aNode], {array:array}, smalltalk.IRASTTranslator)})}
@@ -320,7 +320,7 @@ return smalltalk.withContext(function($ctx1) { 
var $1;
 dictionary=_st((smalltalk.IRDynamicDictionary || IRDynamicDictionary))._new();
 _st(_st(self)._aliasTemporally_(_st(aNode)._nodes()))._do_((function(each){
 return smalltalk.withContext(function($ctx2) {
return _st(dictionary)._add_(each);
-}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+}, function($ctx2) {$ctx2.fillBlock([each], {})})}));
 $1=dictionary;
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"visitDynamicDictionaryNode:", [aNode], {dictionary:dictionary}, smalltalk.IRASTTranslator)})}
@@ -367,10 +367,10 @@ _st($3)._name_(_st(each)._name());
 _st($3)._scope_(_st(aNode)._scope());
 $4=_st($3)._yourself();
 return _st(_st(self)._method())._add_($4);
-}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+}, function($ctx2) {$ctx2.fillBlock([each], {})})}));
 _st(_st(aNode)._nodes())._do_((function(each){
 return smalltalk.withContext(function($ctx2) {
return _st(_st(self)._method())._add_(_st(self)._visit_(each));
-}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+}, function($ctx2) {$ctx2.fillBlock([each], {})})}));
 $5=_st(_st(aNode)._scope())._hasLocalReturn();
 if(! smalltalk.assert($5)){
 $6=_st((smalltalk.IRVariable || IRVariable))._new();
@@ -401,7 +401,7 @@ return_=_st((smalltalk.IRReturn || IRReturn))._new();
 _st(return_)._scope_(_st(aNode)._scope());
 _st(_st(aNode)._nodes())._do_((function(each){
 return smalltalk.withContext(function($ctx2) {
return _st(return_)._add_(_st(self)._alias_(each));
-}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+}, function($ctx2) {$ctx2.fillBlock([each], {})})}));
 $2=return_;
 return $2;
 }, function($ctx1) {$ctx1.fill(self,"visitReturnNode:", [aNode], {return_:return_}, smalltalk.IRASTTranslator)})}
@@ -430,7 +430,7 @@ arguments=_st(all)._allButFirst();
 _st(send)._add_(receiver);
 _st(arguments)._do_((function(each){
 return smalltalk.withContext(function($ctx2) {
return _st(send)._add_(each);
-}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+}, function($ctx2) {$ctx2.fillBlock([each], {})})}));
 $4=send;
 return $4;
 }, function($ctx1) {$ctx1.fill(self,"visitSendNode:", [aNode], {send:send,all:all,receiver:receiver,arguments:arguments}, smalltalk.IRASTTranslator)})}
@@ -456,9 +456,9 @@ $7=_st(instruction)._isVariable();
 if(! smalltalk.assert($7)){
 return _st(_st(self)._sequence())._add_(instruction);
 };
-}, function($ctx3) {$ctx3.fill(null, null, {})})});
+}, function($ctx3) {$ctx3.fillBlock([each], {instruction:instruction})})});
 return _st($5)._do_($6);
-}, function($ctx2) {$ctx2.fill(null, null, {})})});
+}, function($ctx2) {$ctx2.fillBlock([], {})})});
 $1=_st($2)._withSequence_do_($3,$4);
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"visitSequenceNode:", [aNode], {}, smalltalk.IRASTTranslator)})}
@@ -913,7 +913,7 @@ var self=this;
 return smalltalk.withContext(function($ctx1) { 
var $1;
 $1=_st(_st(self)._instructions())._select_((function(each){
 return smalltalk.withContext(function($ctx2) {
return _st(each)._isTempDeclaration();
-}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+}, function($ctx2) {$ctx2.fillBlock([each], {})})}));
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"tempDeclarations", [], {}, smalltalk.IRClosure)})}
 }),
@@ -1119,7 +1119,7 @@ var self=this;
 return smalltalk.withContext(function($ctx1) { 
var $1;
 $1=_st(_st(self)._instructions())._select_((function(each){
 return smalltalk.withContext(function($ctx2) {
return _st(each)._isTempDeclaration();
-}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+}, function($ctx2) {$ctx2.fillBlock([each], {})})}));
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"tempDeclarations", [], {}, smalltalk.IRMethod)})}
 }),
@@ -1747,7 +1747,7 @@ var self=this;
 return smalltalk.withContext(function($ctx1) { 
var $1;
 _st(_st(anIRInstruction)._instructions())._do_((function(each){
 return smalltalk.withContext(function($ctx2) {
return _st(self)._visit_(each);
-}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+}, function($ctx2) {$ctx2.fillBlock([each], {})})}));
 $1=anIRInstruction;
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"visitIRInstruction:", [anIRInstruction], {}, smalltalk.IRVisitor)})}
@@ -1958,11 +1958,11 @@ var self=this;
 return smalltalk.withContext(function($ctx1) { 
_st(_st(self)._stream())._nextPutClosureWith_arguments_((function(){
 return smalltalk.withContext(function($ctx2) {
_st(_st(self)._stream())._nextPutVars_(_st(_st(anIRClosure)._tempDeclarations())._collect_((function(each){
 return smalltalk.withContext(function($ctx3) {
return _st(_st(each)._name())._asVariableName();
-}, function($ctx3) {$ctx3.fill(null, null, {})})})));
+}, function($ctx3) {$ctx3.fillBlock([each], {})})})));
 return _st(_st(self)._stream())._nextPutBlockContextFor_during_(anIRClosure,(function(){
 return smalltalk.withContext(function($ctx3) {
return smalltalk.IRVisitor.fn.prototype._visitIRClosure_.apply(_st(self), [anIRClosure]);
-}, function($ctx3) {$ctx3.fill(null, null, {})})}));
-}, function($ctx2) {$ctx2.fill(null, null, {})})}),_st(anIRClosure)._arguments());
+}, function($ctx3) {$ctx3.fillBlock([], {})})}));
+}, function($ctx2) {$ctx2.fillBlock([], {})})}),_st(anIRClosure)._arguments());
 return self}, function($ctx1) {$ctx1.fill(self,"visitIRClosure:", [anIRClosure], {}, smalltalk.IRJSTranslator)})}
 }),
 smalltalk.IRJSTranslator);
@@ -1976,9 +1976,9 @@ var self=this;
 return smalltalk.withContext(function($ctx1) { 
_st(_st(self)._stream())._nextPutAll_("[");
 _st(_st(anIRDynamicArray)._instructions())._do_separatedBy_((function(each){
 return smalltalk.withContext(function($ctx2) {
return _st(self)._visit_(each);
-}, function($ctx2) {$ctx2.fill(null, null, {})})}),(function(){
+}, function($ctx2) {$ctx2.fillBlock([each], {})})}),(function(){
 return smalltalk.withContext(function($ctx2) {
return _st(_st(self)._stream())._nextPutAll_(",");
-}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+}, function($ctx2) {$ctx2.fillBlock([], {})})}));
 _st(self["@stream"])._nextPutAll_("]");
 return self}, function($ctx1) {$ctx1.fill(self,"visitIRDynamicArray:", [anIRDynamicArray], {}, smalltalk.IRJSTranslator)})}
 }),
@@ -1993,9 +1993,9 @@ var self=this;
 return smalltalk.withContext(function($ctx1) { 
_st(_st(self)._stream())._nextPutAll_("smalltalk.HashedCollection._fromPairs_([");
 _st(_st(anIRDynamicDictionary)._instructions())._do_separatedBy_((function(each){
 return smalltalk.withContext(function($ctx2) {
return _st(self)._visit_(each);
-}, function($ctx2) {$ctx2.fill(null, null, {})})}),(function(){
+}, function($ctx2) {$ctx2.fillBlock([each], {})})}),(function(){
 return smalltalk.withContext(function($ctx2) {
return _st(_st(self)._stream())._nextPutAll_(",");
-}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+}, function($ctx2) {$ctx2.fillBlock([], {})})}));
 _st(_st(self)._stream())._nextPutAll_("])");
 return self}, function($ctx1) {$ctx1.fill(self,"visitIRDynamicDictionary:", [anIRDynamicDictionary], {}, smalltalk.IRJSTranslator)})}
 }),
@@ -2015,7 +2015,7 @@ return smalltalk.withContext(function($ctx2) {
$4=_st(self)._stream();
 $5=(function(){
 return smalltalk.withContext(function($ctx3) {
_st(_st(self)._stream())._nextPutVars_(_st(_st(anIRMethod)._tempDeclarations())._collect_((function(each){
 return smalltalk.withContext(function($ctx4) {
return _st(_st(each)._name())._asVariableName();
-}, function($ctx4) {$ctx4.fill(null, null, {})})})));
+}, function($ctx4) {$ctx4.fillBlock([each], {})})})));
 $6=_st(self)._stream();
 $7=anIRMethod;
 $8=(function(){
@@ -2023,21 +2023,21 @@ return smalltalk.withContext(function($ctx4) {
$9=_st(_st(anIRMethod)._internalV
 if(smalltalk.assert($9)){
 _st(_st(self)._stream())._nextPutVars_(_st(_st(_st(anIRMethod)._internalVariables())._asArray())._collect_((function(each){
 return smalltalk.withContext(function($ctx5) {
return _st(_st(each)._variable())._alias();
-}, function($ctx5) {$ctx5.fill(null, null, {})})})));
+}, function($ctx5) {$ctx5.fillBlock([each], {})})})));
 };
 $10=_st(_st(anIRMethod)._scope())._hasNonLocalReturn();
 if(smalltalk.assert($10)){
 return _st(_st(self)._stream())._nextPutNonLocalReturnHandlingWith_((function(){
 return smalltalk.withContext(function($ctx5) {
return smalltalk.IRVisitor.fn.prototype._visitIRMethod_.apply(_st(self), [anIRMethod]);
-}, function($ctx5) {$ctx5.fill(null, null, {})})}));
+}, function($ctx5) {$ctx5.fillBlock([], {})})}));
 } else {
 return smalltalk.IRVisitor.fn.prototype._visitIRMethod_.apply(_st(self), [anIRMethod]);
 };
-}, function($ctx4) {$ctx4.fill(null, null, {})})});
+}, function($ctx4) {$ctx4.fillBlock([], {})})});
 return _st($6)._nextPutContextFor_during_($7,$8);
-}, function($ctx3) {$ctx3.fill(null, null, {})})});
+}, function($ctx3) {$ctx3.fillBlock([], {})})});
 return _st($4)._nextPutFunctionWith_arguments_($5,_st(anIRMethod)._arguments());
-}, function($ctx2) {$ctx2.fill(null, null, {})})});
+}, function($ctx2) {$ctx2.fillBlock([], {})})});
 _st($1)._nextPutMethodDeclaration_with_($2,$3);
 return self}, function($ctx1) {$ctx1.fill(self,"visitIRMethod:", [anIRMethod], {}, smalltalk.IRJSTranslator)})}
 }),
@@ -2051,7 +2051,7 @@ fn: function (anIRNonLocalReturn){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
_st(_st(self)._stream())._nextPutNonLocalReturnWith_((function(){
 return smalltalk.withContext(function($ctx2) {
return smalltalk.IRVisitor.fn.prototype._visitIRNonLocalReturn_.apply(_st(self), [anIRNonLocalReturn]);
-}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+}, function($ctx2) {$ctx2.fillBlock([], {})})}));
 return self}, function($ctx1) {$ctx1.fill(self,"visitIRNonLocalReturn:", [anIRNonLocalReturn], {}, smalltalk.IRJSTranslator)})}
 }),
 smalltalk.IRJSTranslator);
@@ -2064,7 +2064,7 @@ fn: function (anIRReturn){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
_st(_st(self)._stream())._nextPutReturnWith_((function(){
 return smalltalk.withContext(function($ctx2) {
return smalltalk.IRVisitor.fn.prototype._visitIRReturn_.apply(_st(self), [anIRReturn]);
-}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+}, function($ctx2) {$ctx2.fillBlock([], {})})}));
 return self}, function($ctx1) {$ctx1.fill(self,"visitIRReturn:", [anIRReturn], {}, smalltalk.IRJSTranslator)})}
 }),
 smalltalk.IRJSTranslator);
@@ -2083,9 +2083,9 @@ _st(self)._visit_(_st(_st(anIRSend)._instructions())._first());
 _st(_st(self)._stream())._nextPutAll_(_st(_st(").").__comma(_st(_st(anIRSend)._selector())._asSelector())).__comma("("));
 _st(_st(_st(anIRSend)._instructions())._allButFirst())._do_separatedBy_((function(each){
 return smalltalk.withContext(function($ctx2) {
return _st(self)._visit_(each);
-}, function($ctx2) {$ctx2.fill(null, null, {})})}),(function(){
+}, function($ctx2) {$ctx2.fillBlock([each], {})})}),(function(){
 return smalltalk.withContext(function($ctx2) {
return _st(_st(self)._stream())._nextPutAll_(",");
-}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+}, function($ctx2) {$ctx2.fillBlock([], {})})}));
 _st(_st(self)._stream())._nextPutAll_(")");
 } else {
 $2=_st(self)._stream();
@@ -2097,9 +2097,9 @@ _st(self)._visit_(_st(_st(anIRSend)._instructions())._first());
 _st(_st(self)._stream())._nextPutAll_("), [");
 _st(_st(_st(anIRSend)._instructions())._allButFirst())._do_separatedBy_((function(each){
 return smalltalk.withContext(function($ctx2) {
return _st(self)._visit_(each);
-}, function($ctx2) {$ctx2.fill(null, null, {})})}),(function(){
+}, function($ctx2) {$ctx2.fillBlock([each], {})})}),(function(){
 return smalltalk.withContext(function($ctx2) {
return _st(_st(self)._stream())._nextPutAll_(",");
-}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+}, function($ctx2) {$ctx2.fillBlock([], {})})}));
 _st(_st(self)._stream())._nextPutAll_("])");
 };
 return self}, function($ctx1) {$ctx1.fill(self,"visitIRSend:", [anIRSend], {}, smalltalk.IRJSTranslator)})}
@@ -2115,8 +2115,8 @@ var self=this;
 return smalltalk.withContext(function($ctx1) { 
_st(_st(self)._stream())._nextPutSequenceWith_((function(){
 return smalltalk.withContext(function($ctx2) {
return _st(_st(anIRSequence)._instructions())._do_((function(each){
 return smalltalk.withContext(function($ctx3) {
return _st(_st(self)._stream())._nextPutStatementWith_(_st(self)._visit_(each));
-}, function($ctx3) {$ctx3.fill(null, null, {})})}));
-}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+}, function($ctx3) {$ctx3.fillBlock([each], {})})}));
+}, function($ctx2) {$ctx2.fillBlock([], {})})}));
 return self}, function($ctx1) {$ctx1.fill(self,"visitIRSequence:", [anIRSequence], {}, smalltalk.IRJSTranslator)})}
 }),
 smalltalk.IRJSTranslator);
@@ -2167,7 +2167,7 @@ fn: function (anIRVerbatim){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
_st(_st(self)._stream())._nextPutStatementWith_((function(){
 return smalltalk.withContext(function($ctx2) {
return _st(_st(self)._stream())._nextPutAll_(_st(anIRVerbatim)._source());
-}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+}, function($ctx2) {$ctx2.fillBlock([], {})})}));
 return self}, function($ctx1) {$ctx1.fill(self,"visitIRVerbatim:", [anIRVerbatim], {}, smalltalk.IRJSTranslator)})}
 }),
 smalltalk.IRJSTranslator);
@@ -2250,14 +2250,30 @@ smalltalk.method({
 selector: "nextPutBlockContextFor:during:",
 fn: function (anIRClosure,aBlock){
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $1,$2,$3,$4;
+return smalltalk.withContext(function($ctx1) { 
var $1,$2,$3,$4,$5,$6;
 $1=self;
 _st($1)._nextPutAll_(_st(_st("return smalltalk.withContext(function(").__comma(_st(_st(anIRClosure)._scope())._alias())).__comma(") {"));
 $2=_st($1)._nextPutAll_(_st((smalltalk.String || String))._cr());
 _st(aBlock)._value();
 $3=self;
 _st($3)._nextPutAll_(_st(_st("}, function(").__comma(_st(_st(anIRClosure)._scope())._alias())).__comma(") {"));
-$4=_st($3)._nextPutAll_(_st(_st(_st(anIRClosure)._scope())._alias()).__comma(".fillBlock()})"));
+$4=_st($3)._nextPutAll_(_st(_st(_st(anIRClosure)._scope())._alias()).__comma(".fillBlock(["));
+_st(_st(anIRClosure)._arguments())._do_separatedBy_((function(each){
+return smalltalk.withContext(function($ctx2) {
return _st(self)._nextPutAll_(_st(each)._asVariableName());
+}, function($ctx2) {$ctx2.fillBlock([each], {})})}),(function(){
+return smalltalk.withContext(function($ctx2) {
return _st(self)._nextPutAll_(",");
+}, function($ctx2) {$ctx2.fillBlock([], {})})}));
+_st(self)._nextPutAll_("], {");
+_st(_st(anIRClosure)._tempDeclarations())._do_separatedBy_((function(each){
+return smalltalk.withContext(function($ctx2) {
$5=self;
+_st($5)._nextPutAll_(_st(_st(each)._name())._asVariableName());
+_st($5)._nextPutAll_(":");
+$6=_st($5)._nextPutAll_(_st(_st(each)._name())._asVariableName());
+return $6;
+}, function($ctx2) {$ctx2.fillBlock([each], {})})}),(function(){
+return smalltalk.withContext(function($ctx2) {
return _st(self)._nextPutAll_(",");
+}, function($ctx2) {$ctx2.fillBlock([], {})})}));
+_st(self)._nextPutAll_("})})");
 return self}, function($ctx1) {$ctx1.fill(self,"nextPutBlockContextFor:during:", [anIRClosure,aBlock], {}, smalltalk.JSStream)})}
 }),
 smalltalk.JSStream);
@@ -2272,9 +2288,9 @@ return smalltalk.withContext(function($ctx1) { 
var $1,$2;
 _st(self["@stream"])._nextPutAll_("(function(");
 _st(anArray)._do_separatedBy_((function(each){
 return smalltalk.withContext(function($ctx2) {
return _st(self["@stream"])._nextPutAll_(_st(each)._asVariableName());
-}, function($ctx2) {$ctx2.fill(null, null, {})})}),(function(){
+}, function($ctx2) {$ctx2.fillBlock([each], {})})}),(function(){
 return smalltalk.withContext(function($ctx2) {
return _st(self["@stream"])._nextPut_(",");
-}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+}, function($ctx2) {$ctx2.fillBlock([], {})})}));
 $1=self["@stream"];
 _st($1)._nextPutAll_("){");
 $2=_st($1)._lf();
@@ -2300,9 +2316,9 @@ _st($3)._nextPutAll_(_st(_st(_st("}, function(").__comma(_st(_st(aMethod)._scope
 $4=_st($3)._nextPutAll_(_st(_st(".fill(self,").__comma(_st(_st(aMethod)._selector())._asJavascript())).__comma(", ["));
 _st(_st(aMethod)._arguments())._do_separatedBy_((function(each){
 return smalltalk.withContext(function($ctx2) {
return _st(self)._nextPutAll_(_st(each)._asVariableName());
-}, function($ctx2) {$ctx2.fill(null, null, {})})}),(function(){
+}, function($ctx2) {$ctx2.fillBlock([each], {})})}),(function(){
 return smalltalk.withContext(function($ctx2) {
return _st(self)._nextPutAll_(",");
-}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+}, function($ctx2) {$ctx2.fillBlock([], {})})}));
 _st(self)._nextPutAll_("], {");
 _st(_st(aMethod)._tempDeclarations())._do_separatedBy_((function(each){
 return smalltalk.withContext(function($ctx2) {
$5=self;
@@ -2310,9 +2326,9 @@ _st($5)._nextPutAll_(_st(_st(each)._name())._asVariableName());
 _st($5)._nextPutAll_(":");
 $6=_st($5)._nextPutAll_(_st(_st(each)._name())._asVariableName());
 return $6;
-}, function($ctx2) {$ctx2.fill(null, null, {})})}),(function(){
+}, function($ctx2) {$ctx2.fillBlock([each], {})})}),(function(){
 return smalltalk.withContext(function($ctx2) {
return _st(self)._nextPutAll_(",");
-}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+}, function($ctx2) {$ctx2.fillBlock([], {})})}));
 $7=self;
 _st($7)._nextPutAll_("}, ");
 _st($7)._nextPutAll_(_st(_st(aMethod)._theClass())._asJavascript());
@@ -2331,9 +2347,9 @@ return smalltalk.withContext(function($ctx1) { 
var $1,$2,$3,$4;
 _st(self["@stream"])._nextPutAll_("fn: function(");
 _st(anArray)._do_separatedBy_((function(each){
 return smalltalk.withContext(function($ctx2) {
return _st(self["@stream"])._nextPutAll_(_st(each)._asVariableName());
-}, function($ctx2) {$ctx2.fill(null, null, {})})}),(function(){
+}, function($ctx2) {$ctx2.fillBlock([each], {})})}),(function(){
 return smalltalk.withContext(function($ctx2) {
return _st(self["@stream"])._nextPut_(",");
-}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+}, function($ctx2) {$ctx2.fillBlock([], {})})}));
 $1=self["@stream"];
 _st($1)._nextPutAll_("){");
 $2=_st($1)._lf();
@@ -2407,14 +2423,14 @@ _st($3)._nextPutAll_(_st(_st(_st(_st(aMethod)._messageSends())._asArray())._asJa
 _st($3)._lf();
 _st($3)._nextPutAll_(_st(_st("args: ").__comma(_st(_st(_st(_st(aMethod)._arguments())._collect_((function(each){
 return smalltalk.withContext(function($ctx2) {
return _st(each)._value();
-}, function($ctx2) {$ctx2.fill(null, null, {})})})))._asArray())._asJavascript())).__comma(","));
+}, function($ctx2) {$ctx2.fillBlock([each], {})})})))._asArray())._asJavascript())).__comma(","));
 _st($3)._lf();
 $4=_st($3)._nextPutAll_("referencedClasses: [");
 _st(_st(aMethod)._classReferences())._do_separatedBy_((function(each){
 return smalltalk.withContext(function($ctx2) {
return _st(self["@stream"])._nextPutAll_(_st(each)._asJavascript());
-}, function($ctx2) {$ctx2.fill(null, null, {})})}),(function(){
+}, function($ctx2) {$ctx2.fillBlock([each], {})})}),(function(){
 return smalltalk.withContext(function($ctx2) {
return _st(self["@stream"])._nextPutAll_(",");
-}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+}, function($ctx2) {$ctx2.fillBlock([], {})})}));
 $5=self["@stream"];
 _st($5)._nextPutAll_("]");
 $6=_st($5)._nextPutAll_("})");
@@ -2550,13 +2566,13 @@ try {
 _st(aCollection)._ifEmpty_((function(){
 return smalltalk.withContext(function($ctx2) {
$1=self;
 throw $early=[$1];
-}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+}, function($ctx2) {$ctx2.fillBlock([], {})})}));
 _st(self["@stream"])._nextPutAll_("var ");
 _st(aCollection)._do_separatedBy_((function(each){
 return smalltalk.withContext(function($ctx2) {
return _st(self["@stream"])._nextPutAll_(each);
-}, function($ctx2) {$ctx2.fill(null, null, {})})}),(function(){
+}, function($ctx2) {$ctx2.fillBlock([each], {})})}),(function(){
 return smalltalk.withContext(function($ctx2) {
return _st(self["@stream"])._nextPutAll_(",");
-}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+}, function($ctx2) {$ctx2.fillBlock([], {})})}));
 $2=self["@stream"];
 _st($2)._nextPutAll_(";");
 $3=_st($2)._lf();

+ 76 - 60
js/Compiler-IR.js

@@ -52,7 +52,7 @@ if(smalltalk.assert($3)){
 threshold=i;
 return threshold;
 };
-}, function($ctx2) {$ctx2.fill(null, null, {})})});
+}, function($ctx2) {$ctx2.fillBlock([each,i], {})})});
 _st($1)._withIndexDo_($2);
 result=_st((smalltalk.OrderedCollection || OrderedCollection))._new();
 $4=aCollection;
@@ -65,7 +65,7 @@ $7=_st(self)._alias_(each);
 $7=_st(self)._visit_(each);
 };
 return _st($6)._add_($7);
-}, function($ctx2) {$ctx2.fill(null, null, {})})});
+}, function($ctx2) {$ctx2.fillBlock([each,i], {})})});
 _st($4)._withIndexDo_($5);
 $9=result;
 return $9;
@@ -285,10 +285,10 @@ _st($3)._name_(_st(each)._name());
 _st($3)._scope_(_st(aNode)._scope());
 $4=_st($3)._yourself();
 return _st(closure)._add_($4);
-}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+}, function($ctx2) {$ctx2.fillBlock([each], {})})}));
 _st(_st(aNode)._nodes())._do_((function(each){
 return smalltalk.withContext(function($ctx2) {
return _st(closure)._add_(_st(self)._visit_(each));
-}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+}, function($ctx2) {$ctx2.fillBlock([each], {})})}));
 $5=closure;
 return $5;
 }, function($ctx1) {$ctx1.fill(self,"visitBlockNode:", [aNode], {closure:closure}, smalltalk.IRASTTranslator)})},
@@ -314,7 +314,7 @@ return smalltalk.withContext(function($ctx2) {
$5=_st(aNode)._nodes();
 $6=(function(){
 return smalltalk.withContext(function($ctx3) {
_st(_st(_st(aNode)._nodes())._allButLast())._do_((function(each){
 return smalltalk.withContext(function($ctx4) {
return _st(_st(self)._sequence())._add_(_st(self)._visit_(each));
-}, function($ctx4) {$ctx4.fill(null, null, {})})}));
+}, function($ctx4) {$ctx4.fillBlock([each], {})})}));
 $7=_st(_st(_st(aNode)._nodes())._last())._isReturnNode();
 if(smalltalk.assert($7)){
 return _st(_st(self)._sequence())._add_(_st(self)._visit_(_st(_st(aNode)._nodes())._last()));
@@ -324,9 +324,9 @@ _st($8)._add_(_st(self)._visit_(_st(_st(aNode)._nodes())._last()));
 $9=_st($8)._yourself();
 return _st(_st(self)._sequence())._add_($9);
 };
-}, function($ctx3) {$ctx3.fill(null, null, {})})});
+}, function($ctx3) {$ctx3.fillBlock([], {})})});
 return _st($5)._ifNotEmpty_($6);
-}, function($ctx2) {$ctx2.fill(null, null, {})})});
+}, function($ctx2) {$ctx2.fillBlock([], {})})});
 $1=_st($2)._withSequence_do_($3,$4);
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"visitBlockSequenceNode:", [aNode], {}, smalltalk.IRASTTranslator)})},
@@ -352,11 +352,11 @@ alias=_st(self)._alias_(_st(aNode)._receiver());
 alias;
 _st(_st(aNode)._nodes())._do_((function(each){
 return smalltalk.withContext(function($ctx2) {
return _st(each)._receiver_(_st(_st((smalltalk.VariableNode || VariableNode))._new())._binding_(_st(alias)._variable()));
-}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+}, function($ctx2) {$ctx2.fillBlock([each], {})})}));
 };
 _st(_st(_st(aNode)._nodes())._allButLast())._do_((function(each){
 return smalltalk.withContext(function($ctx2) {
return _st(_st(self)._sequence())._add_(_st(self)._visit_(each));
-}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+}, function($ctx2) {$ctx2.fillBlock([each], {})})}));
 $2=_st(self)._alias_(_st(_st(aNode)._nodes())._last());
 return $2;
 }, function($ctx1) {$ctx1.fill(self,"visitCascadeNode:", [aNode], {alias:alias}, smalltalk.IRASTTranslator)})},
@@ -379,7 +379,7 @@ return smalltalk.withContext(function($ctx1) { 
var $1;
 array=_st((smalltalk.IRDynamicArray || IRDynamicArray))._new();
 _st(_st(self)._aliasTemporally_(_st(aNode)._nodes()))._do_((function(each){
 return smalltalk.withContext(function($ctx2) {
return _st(array)._add_(each);
-}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+}, function($ctx2) {$ctx2.fillBlock([each], {})})}));
 $1=array;
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"visitDynamicArrayNode:", [aNode], {array:array}, smalltalk.IRASTTranslator)})},
@@ -402,7 +402,7 @@ return smalltalk.withContext(function($ctx1) { 
var $1;
 dictionary=_st((smalltalk.IRDynamicDictionary || IRDynamicDictionary))._new();
 _st(_st(self)._aliasTemporally_(_st(aNode)._nodes()))._do_((function(each){
 return smalltalk.withContext(function($ctx2) {
return _st(dictionary)._add_(each);
-}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+}, function($ctx2) {$ctx2.fillBlock([each], {})})}));
 $1=dictionary;
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"visitDynamicDictionaryNode:", [aNode], {dictionary:dictionary}, smalltalk.IRASTTranslator)})},
@@ -459,10 +459,10 @@ _st($3)._name_(_st(each)._name());
 _st($3)._scope_(_st(aNode)._scope());
 $4=_st($3)._yourself();
 return _st(_st(self)._method())._add_($4);
-}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+}, function($ctx2) {$ctx2.fillBlock([each], {})})}));
 _st(_st(aNode)._nodes())._do_((function(each){
 return smalltalk.withContext(function($ctx2) {
return _st(_st(self)._method())._add_(_st(self)._visit_(each));
-}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+}, function($ctx2) {$ctx2.fillBlock([each], {})})}));
 $5=_st(_st(aNode)._scope())._hasLocalReturn();
 if(! smalltalk.assert($5)){
 $6=_st((smalltalk.IRVariable || IRVariable))._new();
@@ -498,7 +498,7 @@ return_=_st((smalltalk.IRReturn || IRReturn))._new();
 _st(return_)._scope_(_st(aNode)._scope());
 _st(_st(aNode)._nodes())._do_((function(each){
 return smalltalk.withContext(function($ctx2) {
return _st(return_)._add_(_st(self)._alias_(each));
-}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+}, function($ctx2) {$ctx2.fillBlock([each], {})})}));
 $2=return_;
 return $2;
 }, function($ctx1) {$ctx1.fill(self,"visitReturnNode:", [aNode], {return_:return_}, smalltalk.IRASTTranslator)})},
@@ -532,7 +532,7 @@ arguments=_st(all)._allButFirst();
 _st(send)._add_(receiver);
 _st(arguments)._do_((function(each){
 return smalltalk.withContext(function($ctx2) {
return _st(send)._add_(each);
-}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+}, function($ctx2) {$ctx2.fillBlock([each], {})})}));
 $4=send;
 return $4;
 }, function($ctx1) {$ctx1.fill(self,"visitSendNode:", [aNode], {send:send,all:all,receiver:receiver,arguments:arguments}, smalltalk.IRASTTranslator)})},
@@ -563,9 +563,9 @@ $7=_st(instruction)._isVariable();
 if(! smalltalk.assert($7)){
 return _st(_st(self)._sequence())._add_(instruction);
 };
-}, function($ctx3) {$ctx3.fill(null, null, {})})});
+}, function($ctx3) {$ctx3.fillBlock([each], {instruction:instruction})})});
 return _st($5)._do_($6);
-}, function($ctx2) {$ctx2.fill(null, null, {})})});
+}, function($ctx2) {$ctx2.fillBlock([], {})})});
 $1=_st($2)._withSequence_do_($3,$4);
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"visitSequenceNode:", [aNode], {}, smalltalk.IRASTTranslator)})},
@@ -1191,7 +1191,7 @@ var self=this;
 return smalltalk.withContext(function($ctx1) { 
var $1;
 $1=_st(_st(self)._instructions())._select_((function(each){
 return smalltalk.withContext(function($ctx2) {
return _st(each)._isTempDeclaration();
-}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+}, function($ctx2) {$ctx2.fillBlock([each], {})})}));
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"tempDeclarations", [], {}, smalltalk.IRClosure)})},
 args: [],
@@ -1478,7 +1478,7 @@ var self=this;
 return smalltalk.withContext(function($ctx1) { 
var $1;
 $1=_st(_st(self)._instructions())._select_((function(each){
 return smalltalk.withContext(function($ctx2) {
return _st(each)._isTempDeclaration();
-}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+}, function($ctx2) {$ctx2.fillBlock([each], {})})}));
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"tempDeclarations", [], {}, smalltalk.IRMethod)})},
 args: [],
@@ -2352,7 +2352,7 @@ var self=this;
 return smalltalk.withContext(function($ctx1) { 
var $1;
 _st(_st(anIRInstruction)._instructions())._do_((function(each){
 return smalltalk.withContext(function($ctx2) {
return _st(self)._visit_(each);
-}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+}, function($ctx2) {$ctx2.fillBlock([each], {})})}));
 $1=anIRInstruction;
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"visitIRInstruction:", [anIRInstruction], {}, smalltalk.IRVisitor)})},
@@ -2643,11 +2643,11 @@ var self=this;
 return smalltalk.withContext(function($ctx1) { 
_st(_st(self)._stream())._nextPutClosureWith_arguments_((function(){
 return smalltalk.withContext(function($ctx2) {
_st(_st(self)._stream())._nextPutVars_(_st(_st(anIRClosure)._tempDeclarations())._collect_((function(each){
 return smalltalk.withContext(function($ctx3) {
return _st(_st(each)._name())._asVariableName();
-}, function($ctx3) {$ctx3.fill(null, null, {})})})));
+}, function($ctx3) {$ctx3.fillBlock([each], {})})})));
 return _st(_st(self)._stream())._nextPutBlockContextFor_during_(anIRClosure,(function(){
 return smalltalk.withContext(function($ctx3) {
return smalltalk.IRVisitor.fn.prototype._visitIRClosure_.apply(_st(self), [anIRClosure]);
-}, function($ctx3) {$ctx3.fill(null, null, {})})}));
-}, function($ctx2) {$ctx2.fill(null, null, {})})}),_st(anIRClosure)._arguments());
+}, function($ctx3) {$ctx3.fillBlock([], {})})}));
+}, function($ctx2) {$ctx2.fillBlock([], {})})}),_st(anIRClosure)._arguments());
 return self}, function($ctx1) {$ctx1.fill(self,"visitIRClosure:", [anIRClosure], {}, smalltalk.IRJSTranslator)})},
 args: ["anIRClosure"],
 source: "visitIRClosure: anIRClosure\x0a\x09self stream \x0a\x09\x09nextPutClosureWith: [ \x0a        \x09self stream nextPutVars: (anIRClosure tempDeclarations collect: [ :each |\x0a    \x09\x09\x09\x09each name asVariableName ]).\x0a        \x09self stream \x0a            \x09nextPutBlockContextFor: anIRClosure\x0a                during: [ super visitIRClosure: anIRClosure ] ]\x0a\x09\x09arguments: anIRClosure arguments",
@@ -2666,9 +2666,9 @@ var self=this;
 return smalltalk.withContext(function($ctx1) { 
_st(_st(self)._stream())._nextPutAll_("[");
 _st(_st(anIRDynamicArray)._instructions())._do_separatedBy_((function(each){
 return smalltalk.withContext(function($ctx2) {
return _st(self)._visit_(each);
-}, function($ctx2) {$ctx2.fill(null, null, {})})}),(function(){
+}, function($ctx2) {$ctx2.fillBlock([each], {})})}),(function(){
 return smalltalk.withContext(function($ctx2) {
return _st(_st(self)._stream())._nextPutAll_(",");
-}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+}, function($ctx2) {$ctx2.fillBlock([], {})})}));
 _st(self["@stream"])._nextPutAll_("]");
 return self}, function($ctx1) {$ctx1.fill(self,"visitIRDynamicArray:", [anIRDynamicArray], {}, smalltalk.IRJSTranslator)})},
 args: ["anIRDynamicArray"],
@@ -2688,9 +2688,9 @@ var self=this;
 return smalltalk.withContext(function($ctx1) { 
_st(_st(self)._stream())._nextPutAll_("smalltalk.HashedCollection._fromPairs_([");
 _st(_st(anIRDynamicDictionary)._instructions())._do_separatedBy_((function(each){
 return smalltalk.withContext(function($ctx2) {
return _st(self)._visit_(each);
-}, function($ctx2) {$ctx2.fill(null, null, {})})}),(function(){
+}, function($ctx2) {$ctx2.fillBlock([each], {})})}),(function(){
 return smalltalk.withContext(function($ctx2) {
return _st(_st(self)._stream())._nextPutAll_(",");
-}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+}, function($ctx2) {$ctx2.fillBlock([], {})})}));
 _st(_st(self)._stream())._nextPutAll_("])");
 return self}, function($ctx1) {$ctx1.fill(self,"visitIRDynamicDictionary:", [anIRDynamicDictionary], {}, smalltalk.IRJSTranslator)})},
 args: ["anIRDynamicDictionary"],
@@ -2715,7 +2715,7 @@ return smalltalk.withContext(function($ctx2) {
$4=_st(self)._stream();
 $5=(function(){
 return smalltalk.withContext(function($ctx3) {
_st(_st(self)._stream())._nextPutVars_(_st(_st(anIRMethod)._tempDeclarations())._collect_((function(each){
 return smalltalk.withContext(function($ctx4) {
return _st(_st(each)._name())._asVariableName();
-}, function($ctx4) {$ctx4.fill(null, null, {})})})));
+}, function($ctx4) {$ctx4.fillBlock([each], {})})})));
 $6=_st(self)._stream();
 $7=anIRMethod;
 $8=(function(){
@@ -2723,21 +2723,21 @@ return smalltalk.withContext(function($ctx4) {
$9=_st(_st(anIRMethod)._internalV
 if(smalltalk.assert($9)){
 _st(_st(self)._stream())._nextPutVars_(_st(_st(_st(anIRMethod)._internalVariables())._asArray())._collect_((function(each){
 return smalltalk.withContext(function($ctx5) {
return _st(_st(each)._variable())._alias();
-}, function($ctx5) {$ctx5.fill(null, null, {})})})));
+}, function($ctx5) {$ctx5.fillBlock([each], {})})})));
 };
 $10=_st(_st(anIRMethod)._scope())._hasNonLocalReturn();
 if(smalltalk.assert($10)){
 return _st(_st(self)._stream())._nextPutNonLocalReturnHandlingWith_((function(){
 return smalltalk.withContext(function($ctx5) {
return smalltalk.IRVisitor.fn.prototype._visitIRMethod_.apply(_st(self), [anIRMethod]);
-}, function($ctx5) {$ctx5.fill(null, null, {})})}));
+}, function($ctx5) {$ctx5.fillBlock([], {})})}));
 } else {
 return smalltalk.IRVisitor.fn.prototype._visitIRMethod_.apply(_st(self), [anIRMethod]);
 };
-}, function($ctx4) {$ctx4.fill(null, null, {})})});
+}, function($ctx4) {$ctx4.fillBlock([], {})})});
 return _st($6)._nextPutContextFor_during_($7,$8);
-}, function($ctx3) {$ctx3.fill(null, null, {})})});
+}, function($ctx3) {$ctx3.fillBlock([], {})})});
 return _st($4)._nextPutFunctionWith_arguments_($5,_st(anIRMethod)._arguments());
-}, function($ctx2) {$ctx2.fill(null, null, {})})});
+}, function($ctx2) {$ctx2.fillBlock([], {})})});
 _st($1)._nextPutMethodDeclaration_with_($2,$3);
 return self}, function($ctx1) {$ctx1.fill(self,"visitIRMethod:", [anIRMethod], {}, smalltalk.IRJSTranslator)})},
 args: ["anIRMethod"],
@@ -2756,7 +2756,7 @@ fn: function (anIRNonLocalReturn){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
_st(_st(self)._stream())._nextPutNonLocalReturnWith_((function(){
 return smalltalk.withContext(function($ctx2) {
return smalltalk.IRVisitor.fn.prototype._visitIRNonLocalReturn_.apply(_st(self), [anIRNonLocalReturn]);
-}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+}, function($ctx2) {$ctx2.fillBlock([], {})})}));
 return self}, function($ctx1) {$ctx1.fill(self,"visitIRNonLocalReturn:", [anIRNonLocalReturn], {}, smalltalk.IRJSTranslator)})},
 args: ["anIRNonLocalReturn"],
 source: "visitIRNonLocalReturn: anIRNonLocalReturn\x0a\x09self stream nextPutNonLocalReturnWith: [\x0a\x09\x09super visitIRNonLocalReturn: anIRNonLocalReturn ]",
@@ -2774,7 +2774,7 @@ fn: function (anIRReturn){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
_st(_st(self)._stream())._nextPutReturnWith_((function(){
 return smalltalk.withContext(function($ctx2) {
return smalltalk.IRVisitor.fn.prototype._visitIRReturn_.apply(_st(self), [anIRReturn]);
-}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+}, function($ctx2) {$ctx2.fillBlock([], {})})}));
 return self}, function($ctx1) {$ctx1.fill(self,"visitIRReturn:", [anIRReturn], {}, smalltalk.IRJSTranslator)})},
 args: ["anIRReturn"],
 source: "visitIRReturn: anIRReturn\x0a\x09self stream nextPutReturnWith: [\x0a\x09\x09super visitIRReturn: anIRReturn ]",
@@ -2798,9 +2798,9 @@ _st(self)._visit_(_st(_st(anIRSend)._instructions())._first());
 _st(_st(self)._stream())._nextPutAll_(_st(_st(").").__comma(_st(_st(anIRSend)._selector())._asSelector())).__comma("("));
 _st(_st(_st(anIRSend)._instructions())._allButFirst())._do_separatedBy_((function(each){
 return smalltalk.withContext(function($ctx2) {
return _st(self)._visit_(each);
-}, function($ctx2) {$ctx2.fill(null, null, {})})}),(function(){
+}, function($ctx2) {$ctx2.fillBlock([each], {})})}),(function(){
 return smalltalk.withContext(function($ctx2) {
return _st(_st(self)._stream())._nextPutAll_(",");
-}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+}, function($ctx2) {$ctx2.fillBlock([], {})})}));
 _st(_st(self)._stream())._nextPutAll_(")");
 } else {
 $2=_st(self)._stream();
@@ -2812,9 +2812,9 @@ _st(self)._visit_(_st(_st(anIRSend)._instructions())._first());
 _st(_st(self)._stream())._nextPutAll_("), [");
 _st(_st(_st(anIRSend)._instructions())._allButFirst())._do_separatedBy_((function(each){
 return smalltalk.withContext(function($ctx2) {
return _st(self)._visit_(each);
-}, function($ctx2) {$ctx2.fill(null, null, {})})}),(function(){
+}, function($ctx2) {$ctx2.fillBlock([each], {})})}),(function(){
 return smalltalk.withContext(function($ctx2) {
return _st(_st(self)._stream())._nextPutAll_(",");
-}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+}, function($ctx2) {$ctx2.fillBlock([], {})})}));
 _st(_st(self)._stream())._nextPutAll_("])");
 };
 return self}, function($ctx1) {$ctx1.fill(self,"visitIRSend:", [anIRSend], {}, smalltalk.IRJSTranslator)})},
@@ -2835,8 +2835,8 @@ var self=this;
 return smalltalk.withContext(function($ctx1) { 
_st(_st(self)._stream())._nextPutSequenceWith_((function(){
 return smalltalk.withContext(function($ctx2) {
return _st(_st(anIRSequence)._instructions())._do_((function(each){
 return smalltalk.withContext(function($ctx3) {
return _st(_st(self)._stream())._nextPutStatementWith_(_st(self)._visit_(each));
-}, function($ctx3) {$ctx3.fill(null, null, {})})}));
-}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+}, function($ctx3) {$ctx3.fillBlock([each], {})})}));
+}, function($ctx2) {$ctx2.fillBlock([], {})})}));
 return self}, function($ctx1) {$ctx1.fill(self,"visitIRSequence:", [anIRSequence], {}, smalltalk.IRJSTranslator)})},
 args: ["anIRSequence"],
 source: "visitIRSequence: anIRSequence\x0a\x09self stream nextPutSequenceWith: [\x0a\x09\x09anIRSequence instructions do: [ :each |\x0a\x09\x09\x09self stream nextPutStatementWith: (self visit: each) ]]",
@@ -2907,7 +2907,7 @@ fn: function (anIRVerbatim){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
_st(_st(self)._stream())._nextPutStatementWith_((function(){
 return smalltalk.withContext(function($ctx2) {
return _st(_st(self)._stream())._nextPutAll_(_st(anIRVerbatim)._source());
-}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+}, function($ctx2) {$ctx2.fillBlock([], {})})}));
 return self}, function($ctx1) {$ctx1.fill(self,"visitIRVerbatim:", [anIRVerbatim], {}, smalltalk.IRJSTranslator)})},
 args: ["anIRVerbatim"],
 source: "visitIRVerbatim: anIRVerbatim\x0a\x09self stream nextPutStatementWith: [\x0a\x09\x09self stream nextPutAll: anIRVerbatim source ]",
@@ -3025,18 +3025,34 @@ selector: "nextPutBlockContextFor:during:",
 category: 'streaming',
 fn: function (anIRClosure,aBlock){
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $1,$2,$3,$4;
+return smalltalk.withContext(function($ctx1) { 
var $1,$2,$3,$4,$5,$6;
 $1=self;
 _st($1)._nextPutAll_(_st(_st("return smalltalk.withContext(function(").__comma(_st(_st(anIRClosure)._scope())._alias())).__comma(") {"));
 $2=_st($1)._nextPutAll_(_st((smalltalk.String || String))._cr());
 _st(aBlock)._value();
 $3=self;
 _st($3)._nextPutAll_(_st(_st("}, function(").__comma(_st(_st(anIRClosure)._scope())._alias())).__comma(") {"));
-$4=_st($3)._nextPutAll_(_st(_st(_st(anIRClosure)._scope())._alias()).__comma(".fillBlock()})"));
+$4=_st($3)._nextPutAll_(_st(_st(_st(anIRClosure)._scope())._alias()).__comma(".fillBlock(["));
+_st(_st(anIRClosure)._arguments())._do_separatedBy_((function(each){
+return smalltalk.withContext(function($ctx2) {
return _st(self)._nextPutAll_(_st(each)._asVariableName());
+}, function($ctx2) {$ctx2.fillBlock([each], {})})}),(function(){
+return smalltalk.withContext(function($ctx2) {
return _st(self)._nextPutAll_(",");
+}, function($ctx2) {$ctx2.fillBlock([], {})})}));
+_st(self)._nextPutAll_("], {");
+_st(_st(anIRClosure)._tempDeclarations())._do_separatedBy_((function(each){
+return smalltalk.withContext(function($ctx2) {
$5=self;
+_st($5)._nextPutAll_(_st(_st(each)._name())._asVariableName());
+_st($5)._nextPutAll_(":");
+$6=_st($5)._nextPutAll_(_st(_st(each)._name())._asVariableName());
+return $6;
+}, function($ctx2) {$ctx2.fillBlock([each], {})})}),(function(){
+return smalltalk.withContext(function($ctx2) {
return _st(self)._nextPutAll_(",");
+}, function($ctx2) {$ctx2.fillBlock([], {})})}));
+_st(self)._nextPutAll_("})})");
 return self}, function($ctx1) {$ctx1.fill(self,"nextPutBlockContextFor:during:", [anIRClosure,aBlock], {}, smalltalk.JSStream)})},
 args: ["anIRClosure", "aBlock"],
-source: "nextPutBlockContextFor: anIRClosure during: aBlock\x0a\x09self \x0a    \x09nextPutAll: 'return smalltalk.withContext(function(', anIRClosure scope alias, ') {'; \x0a        nextPutAll: String cr.\x0a    aBlock value.\x0a    self \x0a    \x09nextPutAll: '}, function(', anIRClosure scope alias, ') {';\x0a        nextPutAll: anIRClosure scope alias, '.fillBlock()})'",
-messageSends: ["nextPutAll:", ",", "alias", "scope", "cr", "value"],
+source: "nextPutBlockContextFor: anIRClosure during: aBlock\x0a\x09self \x0a    \x09nextPutAll: 'return smalltalk.withContext(function(', anIRClosure scope alias, ') {'; \x0a        nextPutAll: String cr.\x0a    \x0a    aBlock value.\x0a    \x0a    self \x0a    \x09nextPutAll: '}, function(', anIRClosure scope alias, ') {';\x0a        nextPutAll: anIRClosure scope alias, '.fillBlock(['.\x0a    \x0a    anIRClosure arguments \x0a    \x09do: [ :each | self nextPutAll: each asVariableName ]\x0a      \x09separatedBy: [ self nextPutAll: ','  ].\x0a    self nextPutAll: '], {'.\x0a    \x0a    anIRClosure tempDeclarations \x0a    \x09do: [ :each |\x0a    \x09\x09self \x0a        \x09\x09nextPutAll: each name asVariableName;\x0a           \x09 \x09nextPutAll: ':';\x0a        \x09\x09nextPutAll: each name asVariableName]\x0a\x09\x09separatedBy: [ self nextPutAll: ',' ].\x0a    \x0a    self\x0a    \x09nextPutAll: '})})'",
+messageSends: ["nextPutAll:", ",", "alias", "scope", "cr", "value", "do:separatedBy:", "asVariableName", "arguments", "name", "tempDeclarations"],
 referencedClasses: ["String"]
 }),
 smalltalk.JSStream);
@@ -3052,9 +3068,9 @@ return smalltalk.withContext(function($ctx1) { 
var $1,$2;
 _st(self["@stream"])._nextPutAll_("(function(");
 _st(anArray)._do_separatedBy_((function(each){
 return smalltalk.withContext(function($ctx2) {
return _st(self["@stream"])._nextPutAll_(_st(each)._asVariableName());
-}, function($ctx2) {$ctx2.fill(null, null, {})})}),(function(){
+}, function($ctx2) {$ctx2.fillBlock([each], {})})}),(function(){
 return smalltalk.withContext(function($ctx2) {
return _st(self["@stream"])._nextPut_(",");
-}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+}, function($ctx2) {$ctx2.fillBlock([], {})})}));
 $1=self["@stream"];
 _st($1)._nextPutAll_("){");
 $2=_st($1)._lf();
@@ -3085,9 +3101,9 @@ _st($3)._nextPutAll_(_st(_st(_st("}, function(").__comma(_st(_st(aMethod)._scope
 $4=_st($3)._nextPutAll_(_st(_st(".fill(self,").__comma(_st(_st(aMethod)._selector())._asJavascript())).__comma(", ["));
 _st(_st(aMethod)._arguments())._do_separatedBy_((function(each){
 return smalltalk.withContext(function($ctx2) {
return _st(self)._nextPutAll_(_st(each)._asVariableName());
-}, function($ctx2) {$ctx2.fill(null, null, {})})}),(function(){
+}, function($ctx2) {$ctx2.fillBlock([each], {})})}),(function(){
 return smalltalk.withContext(function($ctx2) {
return _st(self)._nextPutAll_(",");
-}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+}, function($ctx2) {$ctx2.fillBlock([], {})})}));
 _st(self)._nextPutAll_("], {");
 _st(_st(aMethod)._tempDeclarations())._do_separatedBy_((function(each){
 return smalltalk.withContext(function($ctx2) {
$5=self;
@@ -3095,9 +3111,9 @@ _st($5)._nextPutAll_(_st(_st(each)._name())._asVariableName());
 _st($5)._nextPutAll_(":");
 $6=_st($5)._nextPutAll_(_st(_st(each)._name())._asVariableName());
 return $6;
-}, function($ctx2) {$ctx2.fill(null, null, {})})}),(function(){
+}, function($ctx2) {$ctx2.fillBlock([each], {})})}),(function(){
 return smalltalk.withContext(function($ctx2) {
return _st(self)._nextPutAll_(",");
-}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+}, function($ctx2) {$ctx2.fillBlock([], {})})}));
 $7=self;
 _st($7)._nextPutAll_("}, ");
 _st($7)._nextPutAll_(_st(_st(aMethod)._theClass())._asJavascript());
@@ -3121,9 +3137,9 @@ return smalltalk.withContext(function($ctx1) { 
var $1,$2,$3,$4;
 _st(self["@stream"])._nextPutAll_("fn: function(");
 _st(anArray)._do_separatedBy_((function(each){
 return smalltalk.withContext(function($ctx2) {
return _st(self["@stream"])._nextPutAll_(_st(each)._asVariableName());
-}, function($ctx2) {$ctx2.fill(null, null, {})})}),(function(){
+}, function($ctx2) {$ctx2.fillBlock([each], {})})}),(function(){
 return smalltalk.withContext(function($ctx2) {
return _st(self["@stream"])._nextPut_(",");
-}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+}, function($ctx2) {$ctx2.fillBlock([], {})})}));
 $1=self["@stream"];
 _st($1)._nextPutAll_("){");
 $2=_st($1)._lf();
@@ -3212,14 +3228,14 @@ _st($3)._nextPutAll_(_st(_st(_st(_st(aMethod)._messageSends())._asArray())._asJa
 _st($3)._lf();
 _st($3)._nextPutAll_(_st(_st("args: ").__comma(_st(_st(_st(_st(aMethod)._arguments())._collect_((function(each){
 return smalltalk.withContext(function($ctx2) {
return _st(each)._value();
-}, function($ctx2) {$ctx2.fill(null, null, {})})})))._asArray())._asJavascript())).__comma(","));
+}, function($ctx2) {$ctx2.fillBlock([each], {})})})))._asArray())._asJavascript())).__comma(","));
 _st($3)._lf();
 $4=_st($3)._nextPutAll_("referencedClasses: [");
 _st(_st(aMethod)._classReferences())._do_separatedBy_((function(each){
 return smalltalk.withContext(function($ctx2) {
return _st(self["@stream"])._nextPutAll_(_st(each)._asJavascript());
-}, function($ctx2) {$ctx2.fill(null, null, {})})}),(function(){
+}, function($ctx2) {$ctx2.fillBlock([each], {})})}),(function(){
 return smalltalk.withContext(function($ctx2) {
return _st(self["@stream"])._nextPutAll_(",");
-}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+}, function($ctx2) {$ctx2.fillBlock([], {})})}));
 $5=self["@stream"];
 _st($5)._nextPutAll_("]");
 $6=_st($5)._nextPutAll_("})");
@@ -3400,13 +3416,13 @@ try {
 _st(aCollection)._ifEmpty_((function(){
 return smalltalk.withContext(function($ctx2) {
$1=self;
 throw $early=[$1];
-}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+}, function($ctx2) {$ctx2.fillBlock([], {})})}));
 _st(self["@stream"])._nextPutAll_("var ");
 _st(aCollection)._do_separatedBy_((function(each){
 return smalltalk.withContext(function($ctx2) {
return _st(self["@stream"])._nextPutAll_(each);
-}, function($ctx2) {$ctx2.fill(null, null, {})})}),(function(){
+}, function($ctx2) {$ctx2.fillBlock([each], {})})}),(function(){
 return smalltalk.withContext(function($ctx2) {
return _st(self["@stream"])._nextPutAll_(",");
-}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+}, function($ctx2) {$ctx2.fillBlock([], {})})}));
 $2=self["@stream"];
 _st($2)._nextPutAll_(";");
 $3=_st($2)._lf();

+ 32 - 32
js/Compiler-Inlining.deploy.js

@@ -286,8 +286,8 @@ return smalltalk.withContext(function($ctx1) { 
var $1;
 $1=_st(_st(_st(anIRAssignment)._isInlined())._not())._and_((function(){
 return smalltalk.withContext(function($ctx2) {
return _st(_st(_st(_st(anIRAssignment)._instructions())._last())._isSend())._and_((function(){
 return smalltalk.withContext(function($ctx3) {
return _st(self)._shouldInlineSend_(_st(_st(anIRAssignment)._instructions())._last());
-}, function($ctx3) {$ctx3.fill(null, null, {})})}));
-}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+}, function($ctx3) {$ctx3.fillBlock([], {})})}));
+}, function($ctx2) {$ctx2.fillBlock([], {})})}));
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"shouldInlineAssignment:", [anIRAssignment], {}, smalltalk.IRInliner)})}
 }),
@@ -303,8 +303,8 @@ return smalltalk.withContext(function($ctx1) { 
var $1;
 $1=_st(_st(_st(anIRReturn)._isInlined())._not())._and_((function(){
 return smalltalk.withContext(function($ctx2) {
return _st(_st(_st(_st(anIRReturn)._instructions())._first())._isSend())._and_((function(){
 return smalltalk.withContext(function($ctx3) {
return _st(self)._shouldInlineSend_(_st(_st(anIRReturn)._instructions())._first());
-}, function($ctx3) {$ctx3.fill(null, null, {})})}));
-}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+}, function($ctx3) {$ctx3.fillBlock([], {})})}));
+}, function($ctx2) {$ctx2.fillBlock([], {})})}));
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"shouldInlineReturn:", [anIRReturn], {}, smalltalk.IRInliner)})}
 }),
@@ -319,7 +319,7 @@ var self=this;
 return smalltalk.withContext(function($ctx1) { 
var $1;
 $1=_st(_st(_st(anIRSend)._isInlined())._not())._and_((function(){
 return smalltalk.withContext(function($ctx2) {
return _st((smalltalk.IRSendInliner || IRSendInliner))._shouldInline_(anIRSend);
-}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+}, function($ctx2) {$ctx2.fillBlock([], {})})}));
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"shouldInlineSend:", [anIRSend], {}, smalltalk.IRInliner)})}
 }),
@@ -343,7 +343,7 @@ localReturn=$3;
 localReturn;
 _st(_st(anIRNonLocalReturn)._instructions())._do_((function(each){
 return smalltalk.withContext(function($ctx2) {
return _st(localReturn)._add_(each);
-}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+}, function($ctx2) {$ctx2.fillBlock([each], {})})}));
 _st(anIRNonLocalReturn)._replaceWith_(localReturn);
 $4=localReturn;
 return $4;
@@ -448,7 +448,7 @@ fn: function (anIRInlinedClosure){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
_st(_st(anIRInlinedClosure)._instructions())._do_((function(each){
 return smalltalk.withContext(function($ctx2) {
return _st(self)._visit_(each);
-}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+}, function($ctx2) {$ctx2.fillBlock([each], {})})}));
 return self}, function($ctx1) {$ctx1.fill(self,"visitIRInlinedClosure:", [anIRInlinedClosure], {}, smalltalk.IRInliningJSTranslator)})}
 }),
 smalltalk.IRInliningJSTranslator);
@@ -463,9 +463,9 @@ return smalltalk.withContext(function($ctx1) { 
_st(_st(self)._stream())._nextPu
 return smalltalk.withContext(function($ctx2) {
_st(_st(self)._stream())._nextPutAll_("! smalltalk.assert(");
 _st(self)._visit_(_st(_st(anIRInlinedIfFalse)._instructions())._first());
 return _st(_st(self)._stream())._nextPutAll_(")");
-}, function($ctx2) {$ctx2.fill(null, null, {})})}),(function(){
+}, function($ctx2) {$ctx2.fillBlock([], {})})}),(function(){
 return smalltalk.withContext(function($ctx2) {
return _st(self)._visit_(_st(_st(anIRInlinedIfFalse)._instructions())._last());
-}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+}, function($ctx2) {$ctx2.fillBlock([], {})})}));
 return self}, function($ctx1) {$ctx1.fill(self,"visitIRInlinedIfFalse:", [anIRInlinedIfFalse], {}, smalltalk.IRInliningJSTranslator)})}
 }),
 smalltalk.IRInliningJSTranslator);
@@ -480,9 +480,9 @@ return smalltalk.withContext(function($ctx1) { 
_st(_st(self)._stream())._nextPu
 return smalltalk.withContext(function($ctx2) {
_st(_st(self)._stream())._nextPutAll_("($receiver = ");
 _st(self)._visit_(_st(_st(anIRInlinedIfNil)._instructions())._first());
 return _st(_st(self)._stream())._nextPutAll_(") == nil || $receiver == undefined");
-}, function($ctx2) {$ctx2.fill(null, null, {})})}),(function(){
+}, function($ctx2) {$ctx2.fillBlock([], {})})}),(function(){
 return smalltalk.withContext(function($ctx2) {
return _st(self)._visit_(_st(_st(anIRInlinedIfNil)._instructions())._last());
-}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+}, function($ctx2) {$ctx2.fillBlock([], {})})}));
 return self}, function($ctx1) {$ctx1.fill(self,"visitIRInlinedIfNil:", [anIRInlinedIfNil], {}, smalltalk.IRInliningJSTranslator)})}
 }),
 smalltalk.IRInliningJSTranslator);
@@ -497,11 +497,11 @@ return smalltalk.withContext(function($ctx1) { 
_st(_st(self)._stream())._nextPu
 return smalltalk.withContext(function($ctx2) {
_st(_st(self)._stream())._nextPutAll_("($receiver = ");
 _st(self)._visit_(_st(_st(anIRInlinedIfNilIfNotNil)._instructions())._first());
 return _st(_st(self)._stream())._nextPutAll_(") == nil || $receiver == undefined");
-}, function($ctx2) {$ctx2.fill(null, null, {})})}),(function(){
+}, function($ctx2) {$ctx2.fillBlock([], {})})}),(function(){
 return smalltalk.withContext(function($ctx2) {
return _st(self)._visit_(_st(_st(anIRInlinedIfNilIfNotNil)._instructions())._second());
-}, function($ctx2) {$ctx2.fill(null, null, {})})}),(function(){
+}, function($ctx2) {$ctx2.fillBlock([], {})})}),(function(){
 return smalltalk.withContext(function($ctx2) {
return _st(self)._visit_(_st(_st(anIRInlinedIfNilIfNotNil)._instructions())._third());
-}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+}, function($ctx2) {$ctx2.fillBlock([], {})})}));
 return self}, function($ctx1) {$ctx1.fill(self,"visitIRInlinedIfNilIfNotNil:", [anIRInlinedIfNilIfNotNil], {}, smalltalk.IRInliningJSTranslator)})}
 }),
 smalltalk.IRInliningJSTranslator);
@@ -516,9 +516,9 @@ return smalltalk.withContext(function($ctx1) { 
_st(_st(self)._stream())._nextPu
 return smalltalk.withContext(function($ctx2) {
_st(_st(self)._stream())._nextPutAll_("smalltalk.assert(");
 _st(self)._visit_(_st(_st(anIRInlinedIfTrue)._instructions())._first());
 return _st(_st(self)._stream())._nextPutAll_(")");
-}, function($ctx2) {$ctx2.fill(null, null, {})})}),(function(){
+}, function($ctx2) {$ctx2.fillBlock([], {})})}),(function(){
 return smalltalk.withContext(function($ctx2) {
return _st(self)._visit_(_st(_st(anIRInlinedIfTrue)._instructions())._last());
-}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+}, function($ctx2) {$ctx2.fillBlock([], {})})}));
 return self}, function($ctx1) {$ctx1.fill(self,"visitIRInlinedIfTrue:", [anIRInlinedIfTrue], {}, smalltalk.IRInliningJSTranslator)})}
 }),
 smalltalk.IRInliningJSTranslator);
@@ -533,11 +533,11 @@ return smalltalk.withContext(function($ctx1) { 
_st(_st(self)._stream())._nextPu
 return smalltalk.withContext(function($ctx2) {
_st(_st(self)._stream())._nextPutAll_("smalltalk.assert(");
 _st(self)._visit_(_st(_st(anIRInlinedIfTrueIfFalse)._instructions())._first());
 return _st(_st(self)._stream())._nextPutAll_(")");
-}, function($ctx2) {$ctx2.fill(null, null, {})})}),(function(){
+}, function($ctx2) {$ctx2.fillBlock([], {})})}),(function(){
 return smalltalk.withContext(function($ctx2) {
return _st(self)._visit_(_st(_st(anIRInlinedIfTrueIfFalse)._instructions())._second());
-}, function($ctx2) {$ctx2.fill(null, null, {})})}),(function(){
+}, function($ctx2) {$ctx2.fillBlock([], {})})}),(function(){
 return smalltalk.withContext(function($ctx2) {
return _st(self)._visit_(_st(_st(anIRInlinedIfTrueIfFalse)._instructions())._third());
-}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+}, function($ctx2) {$ctx2.fillBlock([], {})})}));
 return self}, function($ctx1) {$ctx1.fill(self,"visitIRInlinedIfTrueIfFalse:", [anIRInlinedIfTrueIfFalse], {}, smalltalk.IRInliningJSTranslator)})}
 }),
 smalltalk.IRInliningJSTranslator);
@@ -550,9 +550,9 @@ fn: function (anIRInlinedReturn){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
_st(_st(self)._stream())._nextPutStatementWith_((function(){
 return smalltalk.withContext(function($ctx2) {
return _st(self)._visit_(_st(_st(anIRInlinedReturn)._instructions())._last());
-}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+}, function($ctx2) {$ctx2.fillBlock([], {})})}));
 _st(_st(self)._stream())._nextPutNonLocalReturnWith_((function(){
-return smalltalk.withContext(function($ctx2) {
}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+return smalltalk.withContext(function($ctx2) {
}, function($ctx2) {$ctx2.fillBlock([], {})})}));
 return self}, function($ctx1) {$ctx1.fill(self,"visitIRInlinedNonLocalReturn:", [anIRInlinedReturn], {}, smalltalk.IRInliningJSTranslator)})}
 }),
 smalltalk.IRInliningJSTranslator);
@@ -577,8 +577,8 @@ var self=this;
 return smalltalk.withContext(function($ctx1) { 
_st(_st(anIRInlinedSequence)._instructions())._do_((function(each){
 return smalltalk.withContext(function($ctx2) {
return _st(_st(self)._stream())._nextPutStatementWith_((function(){
 return smalltalk.withContext(function($ctx3) {
return _st(self)._visit_(each);
-}, function($ctx3) {$ctx3.fill(null, null, {})})}));
-}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+}, function($ctx3) {$ctx3.fillBlock([], {})})}));
+}, function($ctx2) {$ctx2.fillBlock([each], {})})}));
 return self}, function($ctx1) {$ctx1.fill(self,"visitIRInlinedSequence:", [anIRInlinedSequence], {}, smalltalk.IRInliningJSTranslator)})}
 }),
 smalltalk.IRInliningJSTranslator);
@@ -720,7 +720,7 @@ return smalltalk.withContext(function($ctx2) {
$3=_st(each)._isSequence();
 if(! smalltalk.assert($3)){
 return _st(inlinedClosure)._add_(each);
 };
-}, function($ctx2) {$ctx2.fill(null, null, {})})});
+}, function($ctx2) {$ctx2.fillBlock([each], {})})});
 _st($1)._do_($2);
 sequence=_st(self)._inlinedSequence();
 _st(inlinedClosure)._add_(sequence);
@@ -729,16 +729,16 @@ $4=statements;
 $5=(function(){
 return smalltalk.withContext(function($ctx2) {
_st(_st(statements)._allButLast())._do_((function(each){
 return smalltalk.withContext(function($ctx3) {
return _st(sequence)._add_(each);
-}, function($ctx3) {$ctx3.fill(null, null, {})})}));
+}, function($ctx3) {$ctx3.fillBlock([each], {})})}));
 $6=_st(_st(_st(statements)._last())._isReturn())._and_((function(){
 return smalltalk.withContext(function($ctx3) {
return _st(_st(statements)._last())._isBlockReturn();
-}, function($ctx3) {$ctx3.fill(null, null, {})})}));
+}, function($ctx3) {$ctx3.fillBlock([], {})})}));
 if(smalltalk.assert($6)){
 return _st(sequence)._add_(_st(_st(_st(statements)._last())._instructions())._first());
 } else {
 return _st(sequence)._add_(_st(statements)._last());
 };
-}, function($ctx2) {$ctx2.fill(null, null, {})})});
+}, function($ctx2) {$ctx2.fillBlock([], {})})});
 _st($4)._ifNotEmpty_($5);
 $7=inlinedClosure;
 return $7;
@@ -940,7 +940,7 @@ return smalltalk.withContext(function($ctx2) {
$4=_st(each)._isClosure();
 if(! smalltalk.assert($4)){
 throw $early=[false];
 };
-}, function($ctx2) {$ctx2.fill(null, null, {})})});
+}, function($ctx2) {$ctx2.fillBlock([each], {})})});
 _st($2)._do_($3);
 return true;
 }
@@ -987,7 +987,7 @@ _st(self)._assignment_(anIRAssignment);
 inlinedAssignment=_st((smalltalk.IRInlinedAssignment || IRInlinedAssignment))._new();
 _st(_st(anIRAssignment)._instructions())._do_((function(each){
 return smalltalk.withContext(function($ctx2) {
return _st(inlinedAssignment)._add_(each);
-}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+}, function($ctx2) {$ctx2.fillBlock([each], {})})}));
 _st(anIRAssignment)._replaceWith_(inlinedAssignment);
 _st(self)._inlineSend_(_st(_st(inlinedAssignment)._instructions())._last());
 $1=inlinedAssignment;
@@ -1016,7 +1016,7 @@ _st($4)._add_(_st(_st(statements)._last())._copy());
 $5=_st($4)._yourself();
 return _st(_st(statements)._last())._replaceWith_($5);
 };
-}, function($ctx2) {$ctx2.fill(null, null, {})})});
+}, function($ctx2) {$ctx2.fillBlock([], {})})});
 _st($1)._ifNotEmpty_($2);
 $6=inlinedClosure;
 return $6;
@@ -1075,7 +1075,7 @@ _st($4)._add_(_st(_st(statements)._last())._copy());
 $5=_st($4)._yourself();
 return _st(_st(statements)._last())._replaceWith_($5);
 };
-}, function($ctx2) {$ctx2.fill(null, null, {})})});
+}, function($ctx2) {$ctx2.fillBlock([], {})})});
 _st($1)._ifNotEmpty_($2);
 $6=closure;
 return $6;
@@ -1094,7 +1094,7 @@ return smalltalk.withContext(function($ctx1) { 
var $1;
 return_=_st(self)._inlinedReturn();
 _st(_st(anIRReturn)._instructions())._do_((function(each){
 return smalltalk.withContext(function($ctx2) {
return _st(return_)._add_(each);
-}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+}, function($ctx2) {$ctx2.fillBlock([each], {})})}));
 _st(anIRReturn)._replaceWith_(return_);
 _st(self)._inlineSend_(_st(_st(return_)._instructions())._last());
 $1=return_;

+ 32 - 32
js/Compiler-Inlining.js

@@ -394,8 +394,8 @@ return smalltalk.withContext(function($ctx1) { 
var $1;
 $1=_st(_st(_st(anIRAssignment)._isInlined())._not())._and_((function(){
 return smalltalk.withContext(function($ctx2) {
return _st(_st(_st(_st(anIRAssignment)._instructions())._last())._isSend())._and_((function(){
 return smalltalk.withContext(function($ctx3) {
return _st(self)._shouldInlineSend_(_st(_st(anIRAssignment)._instructions())._last());
-}, function($ctx3) {$ctx3.fill(null, null, {})})}));
-}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+}, function($ctx3) {$ctx3.fillBlock([], {})})}));
+}, function($ctx2) {$ctx2.fillBlock([], {})})}));
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"shouldInlineAssignment:", [anIRAssignment], {}, smalltalk.IRInliner)})},
 args: ["anIRAssignment"],
@@ -416,8 +416,8 @@ return smalltalk.withContext(function($ctx1) { 
var $1;
 $1=_st(_st(_st(anIRReturn)._isInlined())._not())._and_((function(){
 return smalltalk.withContext(function($ctx2) {
return _st(_st(_st(_st(anIRReturn)._instructions())._first())._isSend())._and_((function(){
 return smalltalk.withContext(function($ctx3) {
return _st(self)._shouldInlineSend_(_st(_st(anIRReturn)._instructions())._first());
-}, function($ctx3) {$ctx3.fill(null, null, {})})}));
-}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+}, function($ctx3) {$ctx3.fillBlock([], {})})}));
+}, function($ctx2) {$ctx2.fillBlock([], {})})}));
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"shouldInlineReturn:", [anIRReturn], {}, smalltalk.IRInliner)})},
 args: ["anIRReturn"],
@@ -437,7 +437,7 @@ var self=this;
 return smalltalk.withContext(function($ctx1) { 
var $1;
 $1=_st(_st(_st(anIRSend)._isInlined())._not())._and_((function(){
 return smalltalk.withContext(function($ctx2) {
return _st((smalltalk.IRSendInliner || IRSendInliner))._shouldInline_(anIRSend);
-}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+}, function($ctx2) {$ctx2.fillBlock([], {})})}));
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"shouldInlineSend:", [anIRSend], {}, smalltalk.IRInliner)})},
 args: ["anIRSend"],
@@ -466,7 +466,7 @@ localReturn=$3;
 localReturn;
 _st(_st(anIRNonLocalReturn)._instructions())._do_((function(each){
 return smalltalk.withContext(function($ctx2) {
return _st(localReturn)._add_(each);
-}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+}, function($ctx2) {$ctx2.fillBlock([each], {})})}));
 _st(anIRNonLocalReturn)._replaceWith_(localReturn);
 $4=localReturn;
 return $4;
@@ -602,7 +602,7 @@ fn: function (anIRInlinedClosure){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
_st(_st(anIRInlinedClosure)._instructions())._do_((function(each){
 return smalltalk.withContext(function($ctx2) {
return _st(self)._visit_(each);
-}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+}, function($ctx2) {$ctx2.fillBlock([each], {})})}));
 return self}, function($ctx1) {$ctx1.fill(self,"visitIRInlinedClosure:", [anIRInlinedClosure], {}, smalltalk.IRInliningJSTranslator)})},
 args: ["anIRInlinedClosure"],
 source: "visitIRInlinedClosure: anIRInlinedClosure\x0a\x09anIRInlinedClosure instructions do: [ :each |\x0a\x09\x09self visit: each ]",
@@ -622,9 +622,9 @@ return smalltalk.withContext(function($ctx1) { 
_st(_st(self)._stream())._nextPu
 return smalltalk.withContext(function($ctx2) {
_st(_st(self)._stream())._nextPutAll_("! smalltalk.assert(");
 _st(self)._visit_(_st(_st(anIRInlinedIfFalse)._instructions())._first());
 return _st(_st(self)._stream())._nextPutAll_(")");
-}, function($ctx2) {$ctx2.fill(null, null, {})})}),(function(){
+}, function($ctx2) {$ctx2.fillBlock([], {})})}),(function(){
 return smalltalk.withContext(function($ctx2) {
return _st(self)._visit_(_st(_st(anIRInlinedIfFalse)._instructions())._last());
-}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+}, function($ctx2) {$ctx2.fillBlock([], {})})}));
 return self}, function($ctx1) {$ctx1.fill(self,"visitIRInlinedIfFalse:", [anIRInlinedIfFalse], {}, smalltalk.IRInliningJSTranslator)})},
 args: ["anIRInlinedIfFalse"],
 source: "visitIRInlinedIfFalse: anIRInlinedIfFalse\x0a\x09self stream nextPutIf: [ \x0a\x09\x09self stream nextPutAll: '! smalltalk.assert('.\x0a\x09\x09self visit: anIRInlinedIfFalse instructions first.\x0a\x09\x09self stream nextPutAll: ')' ]\x0a\x09\x09with: [ self visit: anIRInlinedIfFalse instructions last ]",
@@ -644,9 +644,9 @@ return smalltalk.withContext(function($ctx1) { 
_st(_st(self)._stream())._nextPu
 return smalltalk.withContext(function($ctx2) {
_st(_st(self)._stream())._nextPutAll_("($receiver = ");
 _st(self)._visit_(_st(_st(anIRInlinedIfNil)._instructions())._first());
 return _st(_st(self)._stream())._nextPutAll_(") == nil || $receiver == undefined");
-}, function($ctx2) {$ctx2.fill(null, null, {})})}),(function(){
+}, function($ctx2) {$ctx2.fillBlock([], {})})}),(function(){
 return smalltalk.withContext(function($ctx2) {
return _st(self)._visit_(_st(_st(anIRInlinedIfNil)._instructions())._last());
-}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+}, function($ctx2) {$ctx2.fillBlock([], {})})}));
 return self}, function($ctx1) {$ctx1.fill(self,"visitIRInlinedIfNil:", [anIRInlinedIfNil], {}, smalltalk.IRInliningJSTranslator)})},
 args: ["anIRInlinedIfNil"],
 source: "visitIRInlinedIfNil: anIRInlinedIfNil\x0a\x09self stream nextPutIf: [ \x0a\x09\x09self stream nextPutAll: '($receiver = '. \x0a\x09\x09self visit: anIRInlinedIfNil instructions first.\x0a\x09\x09self stream nextPutAll: ') == nil || $receiver == undefined' ]\x0a\x09\x09with: [ self visit: anIRInlinedIfNil instructions last ]",
@@ -666,11 +666,11 @@ return smalltalk.withContext(function($ctx1) { 
_st(_st(self)._stream())._nextPu
 return smalltalk.withContext(function($ctx2) {
_st(_st(self)._stream())._nextPutAll_("($receiver = ");
 _st(self)._visit_(_st(_st(anIRInlinedIfNilIfNotNil)._instructions())._first());
 return _st(_st(self)._stream())._nextPutAll_(") == nil || $receiver == undefined");
-}, function($ctx2) {$ctx2.fill(null, null, {})})}),(function(){
+}, function($ctx2) {$ctx2.fillBlock([], {})})}),(function(){
 return smalltalk.withContext(function($ctx2) {
return _st(self)._visit_(_st(_st(anIRInlinedIfNilIfNotNil)._instructions())._second());
-}, function($ctx2) {$ctx2.fill(null, null, {})})}),(function(){
+}, function($ctx2) {$ctx2.fillBlock([], {})})}),(function(){
 return smalltalk.withContext(function($ctx2) {
return _st(self)._visit_(_st(_st(anIRInlinedIfNilIfNotNil)._instructions())._third());
-}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+}, function($ctx2) {$ctx2.fillBlock([], {})})}));
 return self}, function($ctx1) {$ctx1.fill(self,"visitIRInlinedIfNilIfNotNil:", [anIRInlinedIfNilIfNotNil], {}, smalltalk.IRInliningJSTranslator)})},
 args: ["anIRInlinedIfNilIfNotNil"],
 source: "visitIRInlinedIfNilIfNotNil: anIRInlinedIfNilIfNotNil\x0a\x09self stream \x0a\x09\x09nextPutIfElse: [ \x0a\x09\x09\x09self stream nextPutAll: '($receiver = '. \x0a\x09\x09\x09self visit: anIRInlinedIfNilIfNotNil instructions first.\x0a\x09\x09\x09self stream nextPutAll: ') == nil || $receiver == undefined' ]\x0a\x09\x09with: [ self visit: anIRInlinedIfNilIfNotNil instructions second ]\x0a\x09\x09with: [ self visit: anIRInlinedIfNilIfNotNil instructions third ]",
@@ -690,9 +690,9 @@ return smalltalk.withContext(function($ctx1) { 
_st(_st(self)._stream())._nextPu
 return smalltalk.withContext(function($ctx2) {
_st(_st(self)._stream())._nextPutAll_("smalltalk.assert(");
 _st(self)._visit_(_st(_st(anIRInlinedIfTrue)._instructions())._first());
 return _st(_st(self)._stream())._nextPutAll_(")");
-}, function($ctx2) {$ctx2.fill(null, null, {})})}),(function(){
+}, function($ctx2) {$ctx2.fillBlock([], {})})}),(function(){
 return smalltalk.withContext(function($ctx2) {
return _st(self)._visit_(_st(_st(anIRInlinedIfTrue)._instructions())._last());
-}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+}, function($ctx2) {$ctx2.fillBlock([], {})})}));
 return self}, function($ctx1) {$ctx1.fill(self,"visitIRInlinedIfTrue:", [anIRInlinedIfTrue], {}, smalltalk.IRInliningJSTranslator)})},
 args: ["anIRInlinedIfTrue"],
 source: "visitIRInlinedIfTrue: anIRInlinedIfTrue\x0a\x09self stream nextPutIf: [ \x0a\x09\x09self stream nextPutAll: 'smalltalk.assert('. \x0a\x09\x09self visit: anIRInlinedIfTrue instructions first.\x0a\x09\x09self stream nextPutAll: ')' ]\x0a\x09\x09with: [ self visit: anIRInlinedIfTrue instructions last ]",
@@ -712,11 +712,11 @@ return smalltalk.withContext(function($ctx1) { 
_st(_st(self)._stream())._nextPu
 return smalltalk.withContext(function($ctx2) {
_st(_st(self)._stream())._nextPutAll_("smalltalk.assert(");
 _st(self)._visit_(_st(_st(anIRInlinedIfTrueIfFalse)._instructions())._first());
 return _st(_st(self)._stream())._nextPutAll_(")");
-}, function($ctx2) {$ctx2.fill(null, null, {})})}),(function(){
+}, function($ctx2) {$ctx2.fillBlock([], {})})}),(function(){
 return smalltalk.withContext(function($ctx2) {
return _st(self)._visit_(_st(_st(anIRInlinedIfTrueIfFalse)._instructions())._second());
-}, function($ctx2) {$ctx2.fill(null, null, {})})}),(function(){
+}, function($ctx2) {$ctx2.fillBlock([], {})})}),(function(){
 return smalltalk.withContext(function($ctx2) {
return _st(self)._visit_(_st(_st(anIRInlinedIfTrueIfFalse)._instructions())._third());
-}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+}, function($ctx2) {$ctx2.fillBlock([], {})})}));
 return self}, function($ctx1) {$ctx1.fill(self,"visitIRInlinedIfTrueIfFalse:", [anIRInlinedIfTrueIfFalse], {}, smalltalk.IRInliningJSTranslator)})},
 args: ["anIRInlinedIfTrueIfFalse"],
 source: "visitIRInlinedIfTrueIfFalse: anIRInlinedIfTrueIfFalse\x0a\x09self stream \x0a\x09\x09nextPutIfElse: [ \x0a\x09\x09\x09self stream nextPutAll: 'smalltalk.assert('. \x0a\x09\x09\x09self visit: anIRInlinedIfTrueIfFalse instructions first.\x0a\x09\x09\x09self stream nextPutAll: ')' ]\x0a\x09\x09with: [ self visit: anIRInlinedIfTrueIfFalse instructions second ]\x0a\x09\x09with: [ self visit: anIRInlinedIfTrueIfFalse instructions third ]",
@@ -734,9 +734,9 @@ fn: function (anIRInlinedReturn){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
_st(_st(self)._stream())._nextPutStatementWith_((function(){
 return smalltalk.withContext(function($ctx2) {
return _st(self)._visit_(_st(_st(anIRInlinedReturn)._instructions())._last());
-}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+}, function($ctx2) {$ctx2.fillBlock([], {})})}));
 _st(_st(self)._stream())._nextPutNonLocalReturnWith_((function(){
-return smalltalk.withContext(function($ctx2) {
}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+return smalltalk.withContext(function($ctx2) {
}, function($ctx2) {$ctx2.fillBlock([], {})})}));
 return self}, function($ctx1) {$ctx1.fill(self,"visitIRInlinedNonLocalReturn:", [anIRInlinedReturn], {}, smalltalk.IRInliningJSTranslator)})},
 args: ["anIRInlinedReturn"],
 source: "visitIRInlinedNonLocalReturn: anIRInlinedReturn\x0a\x09self stream nextPutStatementWith: [\x0a\x09\x09self visit: anIRInlinedReturn instructions last ].\x0a\x09self stream nextPutNonLocalReturnWith: [ ]",
@@ -771,8 +771,8 @@ var self=this;
 return smalltalk.withContext(function($ctx1) { 
_st(_st(anIRInlinedSequence)._instructions())._do_((function(each){
 return smalltalk.withContext(function($ctx2) {
return _st(_st(self)._stream())._nextPutStatementWith_((function(){
 return smalltalk.withContext(function($ctx3) {
return _st(self)._visit_(each);
-}, function($ctx3) {$ctx3.fill(null, null, {})})}));
-}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+}, function($ctx3) {$ctx3.fillBlock([], {})})}));
+}, function($ctx2) {$ctx2.fillBlock([each], {})})}));
 return self}, function($ctx1) {$ctx1.fill(self,"visitIRInlinedSequence:", [anIRInlinedSequence], {}, smalltalk.IRInliningJSTranslator)})},
 args: ["anIRInlinedSequence"],
 source: "visitIRInlinedSequence: anIRInlinedSequence\x0a\x09anIRInlinedSequence instructions do: [ :each | \x0a\x09\x09self stream nextPutStatementWith: [ self visit: each ]]",
@@ -960,7 +960,7 @@ return smalltalk.withContext(function($ctx2) {
$3=_st(each)._isSequence();
 if(! smalltalk.assert($3)){
 return _st(inlinedClosure)._add_(each);
 };
-}, function($ctx2) {$ctx2.fill(null, null, {})})});
+}, function($ctx2) {$ctx2.fillBlock([each], {})})});
 _st($1)._do_($2);
 sequence=_st(self)._inlinedSequence();
 _st(inlinedClosure)._add_(sequence);
@@ -969,16 +969,16 @@ $4=statements;
 $5=(function(){
 return smalltalk.withContext(function($ctx2) {
_st(_st(statements)._allButLast())._do_((function(each){
 return smalltalk.withContext(function($ctx3) {
return _st(sequence)._add_(each);
-}, function($ctx3) {$ctx3.fill(null, null, {})})}));
+}, function($ctx3) {$ctx3.fillBlock([each], {})})}));
 $6=_st(_st(_st(statements)._last())._isReturn())._and_((function(){
 return smalltalk.withContext(function($ctx3) {
return _st(_st(statements)._last())._isBlockReturn();
-}, function($ctx3) {$ctx3.fill(null, null, {})})}));
+}, function($ctx3) {$ctx3.fillBlock([], {})})}));
 if(smalltalk.assert($6)){
 return _st(sequence)._add_(_st(_st(_st(statements)._last())._instructions())._first());
 } else {
 return _st(sequence)._add_(_st(statements)._last());
 };
-}, function($ctx2) {$ctx2.fill(null, null, {})})});
+}, function($ctx2) {$ctx2.fillBlock([], {})})});
 _st($4)._ifNotEmpty_($5);
 $7=inlinedClosure;
 return $7;
@@ -1240,7 +1240,7 @@ return smalltalk.withContext(function($ctx2) {
$4=_st(each)._isClosure();
 if(! smalltalk.assert($4)){
 throw $early=[false];
 };
-}, function($ctx2) {$ctx2.fill(null, null, {})})});
+}, function($ctx2) {$ctx2.fillBlock([each], {})})});
 _st($2)._do_($3);
 return true;
 }
@@ -1303,7 +1303,7 @@ _st(self)._assignment_(anIRAssignment);
 inlinedAssignment=_st((smalltalk.IRInlinedAssignment || IRInlinedAssignment))._new();
 _st(_st(anIRAssignment)._instructions())._do_((function(each){
 return smalltalk.withContext(function($ctx2) {
return _st(inlinedAssignment)._add_(each);
-}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+}, function($ctx2) {$ctx2.fillBlock([each], {})})}));
 _st(anIRAssignment)._replaceWith_(inlinedAssignment);
 _st(self)._inlineSend_(_st(_st(inlinedAssignment)._instructions())._last());
 $1=inlinedAssignment;
@@ -1337,7 +1337,7 @@ _st($4)._add_(_st(_st(statements)._last())._copy());
 $5=_st($4)._yourself();
 return _st(_st(statements)._last())._replaceWith_($5);
 };
-}, function($ctx2) {$ctx2.fill(null, null, {})})});
+}, function($ctx2) {$ctx2.fillBlock([], {})})});
 _st($1)._ifNotEmpty_($2);
 $6=inlinedClosure;
 return $6;
@@ -1412,7 +1412,7 @@ _st($4)._add_(_st(_st(statements)._last())._copy());
 $5=_st($4)._yourself();
 return _st(_st(statements)._last())._replaceWith_($5);
 };
-}, function($ctx2) {$ctx2.fill(null, null, {})})});
+}, function($ctx2) {$ctx2.fillBlock([], {})})});
 _st($1)._ifNotEmpty_($2);
 $6=closure;
 return $6;
@@ -1436,7 +1436,7 @@ return smalltalk.withContext(function($ctx1) { 
var $1;
 return_=_st(self)._inlinedReturn();
 _st(_st(anIRReturn)._instructions())._do_((function(each){
 return smalltalk.withContext(function($ctx2) {
return _st(return_)._add_(each);
-}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+}, function($ctx2) {$ctx2.fillBlock([each], {})})}));
 _st(anIRReturn)._replaceWith_(return_);
 _st(self)._inlineSend_(_st(_st(return_)._instructions())._last());
 $1=return_;

+ 5 - 5
js/Compiler-Interpreter.deploy.js

@@ -18,7 +18,7 @@ _st(self)._outerContext_(_st(_st(self)._class())._fromMethodContext_(_st(aMethod
 };
 _st(_st(aMethodContext)._locals())._keysAndValuesDo_((function(key,value){
 return smalltalk.withContext(function($ctx2) {
return _st(_st(self)._locals())._at_put_(key,value);
-}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+}, function($ctx2) {$ctx2.fillBlock([key,value], {})})}));
 return self}, function($ctx1) {$ctx1.fill(self,"initializeFromMethodContext:", [aMethodContext], {}, smalltalk.AIContext)})}
 }),
 smalltalk.AIContext);
@@ -268,7 +268,7 @@ $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);
-}, function($ctx2) {$ctx2.fill(null, null, {})})})));
+}, function($ctx2) {$ctx2.fillBlock([each], {})})})));
 $3=_st($2)._yourself();
 $1=$3;
 return $1;
@@ -285,7 +285,7 @@ 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());
-}, function($ctx2) {$ctx2.fill(null, null, {})})});
+}, function($ctx2) {$ctx2.fillBlock([], {})})});
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"visitBlockNode:", [aNode], {}, smalltalk.ASTInterpreter)})}
 }),
@@ -302,7 +302,7 @@ return smalltalk.withContext(function($ctx1) { 
var $1;
 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_(receiver);
-}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+}, function($ctx2) {$ctx2.fillBlock([each], {})})}));
 $1=_st(_st(self)._messageFromSendNode_(_st(_st(aNode)._nodes())._last()))._sendTo_(receiver);
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"visitCascadeNode:", [aNode], {receiver:receiver}, smalltalk.ASTInterpreter)})}
@@ -382,7 +382,7 @@ if(smalltalk.assert($3)){
 $4=value;
 throw $early=[$4];
 };
-}, function($ctx2) {$ctx2.fill(null, null, {})})});
+}, function($ctx2) {$ctx2.fillBlock([each], {value:value})})});
 _st($1)._do_($2);
 $5=_st(self)._interpretNode_(_st(_st(aNode)._nodes())._last());
 return $5;

+ 5 - 5
js/Compiler-Interpreter.js

@@ -19,7 +19,7 @@ _st(self)._outerContext_(_st(_st(self)._class())._fromMethodContext_(_st(aMethod
 };
 _st(_st(aMethodContext)._locals())._keysAndValuesDo_((function(key,value){
 return smalltalk.withContext(function($ctx2) {
return _st(_st(self)._locals())._at_put_(key,value);
-}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+}, function($ctx2) {$ctx2.fillBlock([key,value], {})})}));
 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    ",
@@ -359,7 +359,7 @@ $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);
-}, function($ctx2) {$ctx2.fill(null, null, {})})})));
+}, function($ctx2) {$ctx2.fillBlock([each], {})})})));
 $3=_st($2)._yourself();
 $1=$3;
 return $1;
@@ -381,7 +381,7 @@ 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());
-}, function($ctx2) {$ctx2.fill(null, null, {})})});
+}, function($ctx2) {$ctx2.fillBlock([], {})})});
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"visitBlockNode:", [aNode], {}, smalltalk.ASTInterpreter)})},
 args: ["aNode"],
@@ -403,7 +403,7 @@ return smalltalk.withContext(function($ctx1) { 
var $1;
 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_(receiver);
-}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+}, function($ctx2) {$ctx2.fillBlock([each], {})})}));
 $1=_st(_st(self)._messageFromSendNode_(_st(_st(aNode)._nodes())._last()))._sendTo_(receiver);
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"visitCascadeNode:", [aNode], {receiver:receiver}, smalltalk.ASTInterpreter)})},
@@ -508,7 +508,7 @@ if(smalltalk.assert($3)){
 $4=value;
 throw $early=[$4];
 };
-}, function($ctx2) {$ctx2.fill(null, null, {})})});
+}, function($ctx2) {$ctx2.fillBlock([each], {value:value})})});
 _st($1)._do_($2);
 $5=_st(self)._interpretNode_(_st(_st(aNode)._nodes())._last());
 return $5;

+ 21 - 21
js/Compiler-Semantic.deploy.js

@@ -80,9 +80,9 @@ $1=_st(_st(self)._pseudoVars())._at_ifAbsent_(_st(aStringOrNode)._value(),(funct
 return smalltalk.withContext(function($ctx2) {
return _st(_st(self)._args())._at_ifAbsent_(_st(aStringOrNode)._value(),(function(){
 return smalltalk.withContext(function($ctx3) {
return _st(_st(self)._temps())._at_ifAbsent_(_st(aStringOrNode)._value(),(function(){
 return smalltalk.withContext(function($ctx4) {
return nil;
-}, function($ctx4) {$ctx4.fill(null, null, {})})}));
-}, function($ctx3) {$ctx3.fill(null, null, {})})}));
-}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+}, function($ctx4) {$ctx4.fillBlock([], {})})}));
+}, function($ctx3) {$ctx3.fillBlock([], {})})}));
+}, function($ctx2) {$ctx2.fillBlock([], {})})}));
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"bindingFor:", [aStringOrNode], {}, smalltalk.LexicalScope)})}
 }),
@@ -97,7 +97,7 @@ var self=this;
 return smalltalk.withContext(function($ctx1) { 
var $1;
 $1=_st(_st(self)._isInlined())._and_((function(){
 return smalltalk.withContext(function($ctx2) {
return _st(_st(self)._outerScope())._canInlineNonLocalReturns();
-}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+}, function($ctx2) {$ctx2.fillBlock([], {})})}));
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"canInlineNonLocalReturns", [], {}, smalltalk.LexicalScope)})}
 }),
@@ -149,7 +149,7 @@ var self=this;
 return smalltalk.withContext(function($ctx1) { 
var $1;
 $1=_st(_st(_st(self)._instruction())._notNil())._and_((function(){
 return smalltalk.withContext(function($ctx2) {
return _st(_st(self)._instruction())._isInlined();
-}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+}, function($ctx2) {$ctx2.fillBlock([], {})})}));
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"isInlined", [], {}, smalltalk.LexicalScope)})}
 }),
@@ -184,7 +184,7 @@ lookup=$3;
 lookup=_st(_st(self)._outerScope())._lookupVariable_(aNode);
 };
 return lookup;
-}, function($ctx2) {$ctx2.fill(null, null, {})})});
+}, function($ctx2) {$ctx2.fillBlock([], {})})});
 _st($1)._ifNil_($2);
 $4=lookup;
 return $4;
@@ -364,7 +364,7 @@ $2=smalltalk.LexicalScope.fn.prototype._bindingFor_.apply(_st(self), [aNode]);
 if(($receiver = $2) == nil || $receiver == undefined){
 $1=_st(_st(self)._iVars())._at_ifAbsent_(_st(aNode)._value(),(function(){
 return smalltalk.withContext(function($ctx2) {
return nil;
-}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+}, function($ctx2) {$ctx2.fillBlock([], {})})}));
 } else {
 $1=$2;
 };
@@ -517,7 +517,7 @@ return smalltalk.withContext(function($ctx2) {
$2=_st((smalltalk.PseudoVar || Ps
 _st($2)._scope_(_st(self)._methodScope());
 $3=_st($2)._yourself();
 return _st(self["@pseudoVars"])._at_put_(each,$3);
-}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+}, function($ctx2) {$ctx2.fillBlock([each], {})})}));
 } else {
 $1;
 };
@@ -534,7 +534,7 @@ selector: "removeNonLocalReturn:",
 fn: function (aScope){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
_st(_st(self)._nonLocalReturns())._remove_ifAbsent_(aScope,(function(){
-return smalltalk.withContext(function($ctx2) {
}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+return smalltalk.withContext(function($ctx2) {
}, function($ctx2) {$ctx2.fillBlock([], {})})}));
 return self}, function($ctx1) {$ctx1.fill(self,"removeNonLocalReturn:", [aScope], {}, smalltalk.MethodLexicalScope)})}
 }),
 smalltalk.MethodLexicalScope);
@@ -697,7 +697,7 @@ var self=this;
 return smalltalk.withContext(function($ctx1) { 
var $1,$2,$3;
 $1=_st(_st(self)._isArgVar())._or_((function(){
 return smalltalk.withContext(function($ctx2) {
return _st(self)._isPseudoVar();
-}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+}, function($ctx2) {$ctx2.fillBlock([], {})})}));
 if(smalltalk.assert($1)){
 $2=_st((smalltalk.InvalidAssignmentError || InvalidAssignmentError))._new();
 _st($2)._variableName_(_st(self)._name());
@@ -921,7 +921,7 @@ return smalltalk.withContext(function($ctx1) { 
var $1,$2,$3;
 identifier=_st(aNode)._value();
 $1=_st(_st(_st(["jQuery", "window", "process", "global"])._includes_(identifier))._not())._and_((function(){
 return smalltalk.withContext(function($ctx2) {
return _st(self)._isVariableGloballyUndefined_(identifier);
-}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+}, function($ctx2) {$ctx2.fillBlock([], {})})}));
 if(smalltalk.assert($1)){
 $2=_st((smalltalk.UnknownVariableError || UnknownVariableError))._new();
 _st($2)._variableName_(_st(aNode)._value());
@@ -1120,7 +1120,7 @@ _st(self["@currentScope"])._node_(aNode);
 _st(_st(aNode)._parameters())._do_((function(each){
 return smalltalk.withContext(function($ctx2) {
_st(self)._validateVariableScope_(each);
 return _st(self["@currentScope"])._addArg_(each);
-}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+}, function($ctx2) {$ctx2.fillBlock([each], {})})}));
 smalltalk.NodeVisitor.fn.prototype._visitBlockNode_.apply(_st(self), [aNode]);
 _st(self)._popScope();
 return self}, function($ctx1) {$ctx1.fill(self,"visitBlockNode:", [aNode], {}, smalltalk.SemanticAnalyzer)})}
@@ -1136,13 +1136,13 @@ var self=this;
 return smalltalk.withContext(function($ctx1) { 
var $1;
 _st(_st(aNode)._nodes())._do_((function(each){
 return smalltalk.withContext(function($ctx2) {
return _st(each)._receiver_(_st(aNode)._receiver());
-}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+}, function($ctx2) {$ctx2.fillBlock([each], {})})}));
 smalltalk.NodeVisitor.fn.prototype._visitCascadeNode_.apply(_st(self), [aNode]);
 $1=_st(_st(_st(aNode)._nodes())._first())._superSend();
 if(smalltalk.assert($1)){
 _st(_st(aNode)._nodes())._do_((function(each){
 return smalltalk.withContext(function($ctx2) {
return _st(each)._superSend_(true);
-}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+}, function($ctx2) {$ctx2.fillBlock([each], {})})}));
 };
 return self}, function($ctx1) {$ctx1.fill(self,"visitCascadeNode:", [aNode], {}, smalltalk.SemanticAnalyzer)})}
 }),
@@ -1176,11 +1176,11 @@ _st(aNode)._scope_(self["@currentScope"]);
 _st(self["@currentScope"])._node_(aNode);
 _st(_st(_st(self)._theClass())._allInstanceVariableNames())._do_((function(each){
 return smalltalk.withContext(function($ctx2) {
return _st(self["@currentScope"])._addIVar_(each);
-}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+}, function($ctx2) {$ctx2.fillBlock([each], {})})}));
 _st(_st(aNode)._arguments())._do_((function(each){
 return smalltalk.withContext(function($ctx2) {
_st(self)._validateVariableScope_(each);
 return _st(self["@currentScope"])._addArg_(each);
-}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+}, function($ctx2) {$ctx2.fillBlock([each], {})})}));
 smalltalk.NodeVisitor.fn.prototype._visitMethodNode_.apply(_st(self), [aNode]);
 $1=aNode;
 _st($1)._classReferences_(_st(self)._classReferences());
@@ -1223,20 +1223,20 @@ return smalltalk.withContext(function($ctx2) {
_st(aNode)._superSend_(true);
 _st(_st(aNode)._receiver())._value_("self");
 _st(_st(self)._superSends())._at_ifAbsentPut_(_st(aNode)._selector(),(function(){
 return smalltalk.withContext(function($ctx3) {
return _st((smalltalk.Set || Set))._new();
-}, function($ctx3) {$ctx3.fill(null, null, {})})}));
+}, function($ctx3) {$ctx3.fillBlock([], {})})}));
 return _st(_st(_st(self)._superSends())._at_(_st(aNode)._selector()))._add_(aNode);
-}, function($ctx2) {$ctx2.fill(null, null, {})})});
+}, function($ctx2) {$ctx2.fillBlock([], {})})});
 $3=(function(){
 return smalltalk.withContext(function($ctx2) {
$4=_st(_st((smalltalk.IRSendInliner || IRSendInliner))._inlinedSelectors())._includes_(_st(aNode)._selector());
 if(smalltalk.assert($4)){
 _st(aNode)._shouldBeInlined_(true);
 return _st(_st(aNode)._receiver())._shouldBeAliased_(true);
 };
-}, function($ctx2) {$ctx2.fill(null, null, {})})});
+}, function($ctx2) {$ctx2.fillBlock([], {})})});
 _st($1)._ifTrue_ifFalse_($2,$3);
 _st(_st(self)._messageSends())._at_ifAbsentPut_(_st(aNode)._selector(),(function(){
 return smalltalk.withContext(function($ctx2) {
return _st((smalltalk.Set || Set))._new();
-}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+}, function($ctx2) {$ctx2.fillBlock([], {})})}));
 _st(_st(_st(self)._messageSends())._at_(_st(aNode)._selector()))._add_(aNode);
 _st(aNode)._index_(_st(_st(_st(self)._messageSends())._at_(_st(aNode)._selector()))._size());
 smalltalk.NodeVisitor.fn.prototype._visitSendNode_.apply(_st(self), [aNode]);
@@ -1253,7 +1253,7 @@ var self=this;
 return smalltalk.withContext(function($ctx1) { 
_st(_st(aNode)._temps())._do_((function(each){
 return smalltalk.withContext(function($ctx2) {
_st(self)._validateVariableScope_(each);
 return _st(self["@currentScope"])._addTemp_(each);
-}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+}, function($ctx2) {$ctx2.fillBlock([each], {})})}));
 smalltalk.NodeVisitor.fn.prototype._visitSequenceNode_.apply(_st(self), [aNode]);
 return self}, function($ctx1) {$ctx1.fill(self,"visitSequenceNode:", [aNode], {}, smalltalk.SemanticAnalyzer)})}
 }),

+ 21 - 21
js/Compiler-Semantic.js

@@ -107,9 +107,9 @@ $1=_st(_st(self)._pseudoVars())._at_ifAbsent_(_st(aStringOrNode)._value(),(funct
 return smalltalk.withContext(function($ctx2) {
return _st(_st(self)._args())._at_ifAbsent_(_st(aStringOrNode)._value(),(function(){
 return smalltalk.withContext(function($ctx3) {
return _st(_st(self)._temps())._at_ifAbsent_(_st(aStringOrNode)._value(),(function(){
 return smalltalk.withContext(function($ctx4) {
return nil;
-}, function($ctx4) {$ctx4.fill(null, null, {})})}));
-}, function($ctx3) {$ctx3.fill(null, null, {})})}));
-}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+}, function($ctx4) {$ctx4.fillBlock([], {})})}));
+}, function($ctx3) {$ctx3.fillBlock([], {})})}));
+}, function($ctx2) {$ctx2.fillBlock([], {})})}));
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"bindingFor:", [aStringOrNode], {}, smalltalk.LexicalScope)})},
 args: ["aStringOrNode"],
@@ -129,7 +129,7 @@ var self=this;
 return smalltalk.withContext(function($ctx1) { 
var $1;
 $1=_st(_st(self)._isInlined())._and_((function(){
 return smalltalk.withContext(function($ctx2) {
return _st(_st(self)._outerScope())._canInlineNonLocalReturns();
-}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+}, function($ctx2) {$ctx2.fillBlock([], {})})}));
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"canInlineNonLocalReturns", [], {}, smalltalk.LexicalScope)})},
 args: [],
@@ -201,7 +201,7 @@ var self=this;
 return smalltalk.withContext(function($ctx1) { 
var $1;
 $1=_st(_st(_st(self)._instruction())._notNil())._and_((function(){
 return smalltalk.withContext(function($ctx2) {
return _st(_st(self)._instruction())._isInlined();
-}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+}, function($ctx2) {$ctx2.fillBlock([], {})})}));
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"isInlined", [], {}, smalltalk.LexicalScope)})},
 args: [],
@@ -246,7 +246,7 @@ lookup=$3;
 lookup=_st(_st(self)._outerScope())._lookupVariable_(aNode);
 };
 return lookup;
-}, function($ctx2) {$ctx2.fill(null, null, {})})});
+}, function($ctx2) {$ctx2.fillBlock([], {})})});
 _st($1)._ifNil_($2);
 $4=lookup;
 return $4;
@@ -487,7 +487,7 @@ $2=smalltalk.LexicalScope.fn.prototype._bindingFor_.apply(_st(self), [aNode]);
 if(($receiver = $2) == nil || $receiver == undefined){
 $1=_st(_st(self)._iVars())._at_ifAbsent_(_st(aNode)._value(),(function(){
 return smalltalk.withContext(function($ctx2) {
return nil;
-}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+}, function($ctx2) {$ctx2.fillBlock([], {})})}));
 } else {
 $1=$2;
 };
@@ -690,7 +690,7 @@ return smalltalk.withContext(function($ctx2) {
$2=_st((smalltalk.PseudoVar || Ps
 _st($2)._scope_(_st(self)._methodScope());
 $3=_st($2)._yourself();
 return _st(self["@pseudoVars"])._at_put_(each,$3);
-}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+}, function($ctx2) {$ctx2.fillBlock([each], {})})}));
 } else {
 $1;
 };
@@ -712,7 +712,7 @@ category: 'adding',
 fn: function (aScope){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
_st(_st(self)._nonLocalReturns())._remove_ifAbsent_(aScope,(function(){
-return smalltalk.withContext(function($ctx2) {
}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+return smalltalk.withContext(function($ctx2) {
}, function($ctx2) {$ctx2.fillBlock([], {})})}));
 return self}, function($ctx1) {$ctx1.fill(self,"removeNonLocalReturn:", [aScope], {}, smalltalk.MethodLexicalScope)})},
 args: ["aScope"],
 source: "removeNonLocalReturn: aScope\x0a\x09self nonLocalReturns remove: aScope ifAbsent: []",
@@ -941,7 +941,7 @@ var self=this;
 return smalltalk.withContext(function($ctx1) { 
var $1,$2,$3;
 $1=_st(_st(self)._isArgVar())._or_((function(){
 return smalltalk.withContext(function($ctx2) {
return _st(self)._isPseudoVar();
-}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+}, function($ctx2) {$ctx2.fillBlock([], {})})}));
 if(smalltalk.assert($1)){
 $2=_st((smalltalk.InvalidAssignmentError || InvalidAssignmentError))._new();
 _st($2)._variableName_(_st(self)._name());
@@ -1248,7 +1248,7 @@ return smalltalk.withContext(function($ctx1) { 
var $1,$2,$3;
 identifier=_st(aNode)._value();
 $1=_st(_st(_st(["jQuery", "window", "process", "global"])._includes_(identifier))._not())._and_((function(){
 return smalltalk.withContext(function($ctx2) {
return _st(self)._isVariableGloballyUndefined_(identifier);
-}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+}, function($ctx2) {$ctx2.fillBlock([], {})})}));
 if(smalltalk.assert($1)){
 $2=_st((smalltalk.UnknownVariableError || UnknownVariableError))._new();
 _st($2)._variableName_(_st(aNode)._value());
@@ -1512,7 +1512,7 @@ _st(self["@currentScope"])._node_(aNode);
 _st(_st(aNode)._parameters())._do_((function(each){
 return smalltalk.withContext(function($ctx2) {
_st(self)._validateVariableScope_(each);
 return _st(self["@currentScope"])._addArg_(each);
-}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+}, function($ctx2) {$ctx2.fillBlock([each], {})})}));
 smalltalk.NodeVisitor.fn.prototype._visitBlockNode_.apply(_st(self), [aNode]);
 _st(self)._popScope();
 return self}, function($ctx1) {$ctx1.fill(self,"visitBlockNode:", [aNode], {}, smalltalk.SemanticAnalyzer)})},
@@ -1533,13 +1533,13 @@ var self=this;
 return smalltalk.withContext(function($ctx1) { 
var $1;
 _st(_st(aNode)._nodes())._do_((function(each){
 return smalltalk.withContext(function($ctx2) {
return _st(each)._receiver_(_st(aNode)._receiver());
-}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+}, function($ctx2) {$ctx2.fillBlock([each], {})})}));
 smalltalk.NodeVisitor.fn.prototype._visitCascadeNode_.apply(_st(self), [aNode]);
 $1=_st(_st(_st(aNode)._nodes())._first())._superSend();
 if(smalltalk.assert($1)){
 _st(_st(aNode)._nodes())._do_((function(each){
 return smalltalk.withContext(function($ctx2) {
return _st(each)._superSend_(true);
-}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+}, function($ctx2) {$ctx2.fillBlock([each], {})})}));
 };
 return self}, function($ctx1) {$ctx1.fill(self,"visitCascadeNode:", [aNode], {}, smalltalk.SemanticAnalyzer)})},
 args: ["aNode"],
@@ -1583,11 +1583,11 @@ _st(aNode)._scope_(self["@currentScope"]);
 _st(self["@currentScope"])._node_(aNode);
 _st(_st(_st(self)._theClass())._allInstanceVariableNames())._do_((function(each){
 return smalltalk.withContext(function($ctx2) {
return _st(self["@currentScope"])._addIVar_(each);
-}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+}, function($ctx2) {$ctx2.fillBlock([each], {})})}));
 _st(_st(aNode)._arguments())._do_((function(each){
 return smalltalk.withContext(function($ctx2) {
_st(self)._validateVariableScope_(each);
 return _st(self["@currentScope"])._addArg_(each);
-}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+}, function($ctx2) {$ctx2.fillBlock([each], {})})}));
 smalltalk.NodeVisitor.fn.prototype._visitMethodNode_.apply(_st(self), [aNode]);
 $1=aNode;
 _st($1)._classReferences_(_st(self)._classReferences());
@@ -1640,20 +1640,20 @@ return smalltalk.withContext(function($ctx2) {
_st(aNode)._superSend_(true);
 _st(_st(aNode)._receiver())._value_("self");
 _st(_st(self)._superSends())._at_ifAbsentPut_(_st(aNode)._selector(),(function(){
 return smalltalk.withContext(function($ctx3) {
return _st((smalltalk.Set || Set))._new();
-}, function($ctx3) {$ctx3.fill(null, null, {})})}));
+}, function($ctx3) {$ctx3.fillBlock([], {})})}));
 return _st(_st(_st(self)._superSends())._at_(_st(aNode)._selector()))._add_(aNode);
-}, function($ctx2) {$ctx2.fill(null, null, {})})});
+}, function($ctx2) {$ctx2.fillBlock([], {})})});
 $3=(function(){
 return smalltalk.withContext(function($ctx2) {
$4=_st(_st((smalltalk.IRSendInliner || IRSendInliner))._inlinedSelectors())._includes_(_st(aNode)._selector());
 if(smalltalk.assert($4)){
 _st(aNode)._shouldBeInlined_(true);
 return _st(_st(aNode)._receiver())._shouldBeAliased_(true);
 };
-}, function($ctx2) {$ctx2.fill(null, null, {})})});
+}, function($ctx2) {$ctx2.fillBlock([], {})})});
 _st($1)._ifTrue_ifFalse_($2,$3);
 _st(_st(self)._messageSends())._at_ifAbsentPut_(_st(aNode)._selector(),(function(){
 return smalltalk.withContext(function($ctx2) {
return _st((smalltalk.Set || Set))._new();
-}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+}, function($ctx2) {$ctx2.fillBlock([], {})})}));
 _st(_st(_st(self)._messageSends())._at_(_st(aNode)._selector()))._add_(aNode);
 _st(aNode)._index_(_st(_st(_st(self)._messageSends())._at_(_st(aNode)._selector()))._size());
 smalltalk.NodeVisitor.fn.prototype._visitSendNode_.apply(_st(self), [aNode]);
@@ -1675,7 +1675,7 @@ var self=this;
 return smalltalk.withContext(function($ctx1) { 
_st(_st(aNode)._temps())._do_((function(each){
 return smalltalk.withContext(function($ctx2) {
_st(self)._validateVariableScope_(each);
 return _st(self["@currentScope"])._addTemp_(each);
-}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+}, function($ctx2) {$ctx2.fillBlock([each], {})})}));
 smalltalk.NodeVisitor.fn.prototype._visitSequenceNode_.apply(_st(self), [aNode]);
 return self}, function($ctx1) {$ctx1.fill(self,"visitSequenceNode:", [aNode], {}, smalltalk.SemanticAnalyzer)})},
 args: ["aNode"],

+ 7 - 7
js/Compiler-Tests.deploy.js

@@ -38,7 +38,7 @@ return smalltalk.withContext(function($ctx1) { 
var $2,$3,$1;
 ctx=_st((smalltalk.AIContext || AIContext))._new();
 _st(aDictionary)._keysAndValuesDo_((function(key,value){
 return smalltalk.withContext(function($ctx2) {
return _st(ctx)._localAt_put_(key,value);
-}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+}, function($ctx2) {$ctx2.fillBlock([key,value], {})})}));
 $2=_st((smalltalk.ASTInterpreter || ASTInterpreter))._new();
 _st($2)._context_(ctx);
 $3=_st($2)._interpret_(_st(_st(_st(self)._parse_forClass_(aString,(smalltalk.Object || Object)))._nodes())._first());
@@ -534,7 +534,7 @@ $2=_st($1)._yourself();
 node=$2;
 node;
 return _st(self)._assert_(_st(_st(_st((smalltalk.MethodLexicalScope || MethodLexicalScope))._new())._bindingFor_(node))._isPseudoVar());
-}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+}, function($ctx2) {$ctx2.fillBlock([each], {})})}));
 return self}, function($ctx1) {$ctx1.fill(self,"testPseudoVar", [], {node:node,pseudoVars:pseudoVars}, smalltalk.ScopeVarTest)})}
 }),
 smalltalk.ScopeVarTest);
@@ -600,7 +600,7 @@ 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_(ast);
-}, function($ctx2) {$ctx2.fill(null, null, {})})}),(smalltalk.InvalidAssignmentError || InvalidAssignmentError));
+}, function($ctx2) {$ctx2.fillBlock([], {})})}),(smalltalk.InvalidAssignmentError || InvalidAssignmentError));
 return self}, function($ctx1) {$ctx1.fill(self,"testAssignment", [], {src:src,ast:ast}, smalltalk.SemanticAnalyzerTest)})}
 }),
 smalltalk.SemanticAnalyzerTest);
@@ -692,7 +692,7 @@ 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_(ast);
-}, function($ctx2) {$ctx2.fill(null, null, {})})}),(smalltalk.UnknownVariableError || UnknownVariableError));
+}, function($ctx2) {$ctx2.fillBlock([], {})})}),(smalltalk.UnknownVariableError || UnknownVariableError));
 return self}, function($ctx1) {$ctx1.fill(self,"testUnknownVariables", [], {src:src,ast:ast}, smalltalk.SemanticAnalyzerTest)})}
 }),
 smalltalk.SemanticAnalyzerTest);
@@ -708,7 +708,7 @@ return smalltalk.withContext(function($ctx1) { 
src="foo | a b | [ c + 1. [ a +
 ast=_st(smalltalk)._parse_(src);
 _st(self)._should_raise_((function(){
 return smalltalk.withContext(function($ctx2) {
return _st(self["@analyzer"])._visit_(ast);
-}, function($ctx2) {$ctx2.fill(null, null, {})})}),(smalltalk.UnknownVariableError || UnknownVariableError));
+}, function($ctx2) {$ctx2.fillBlock([], {})})}),(smalltalk.UnknownVariableError || UnknownVariableError));
 return self}, function($ctx1) {$ctx1.fill(self,"testUnknownVariablesWithScope", [], {src:src,ast:ast}, smalltalk.SemanticAnalyzerTest)})}
 }),
 smalltalk.SemanticAnalyzerTest);
@@ -738,7 +738,7 @@ return smalltalk.withContext(function($ctx1) { 
src="foo | a | a + 1. [ | a | a
 ast=_st(smalltalk)._parse_(src);
 _st(self)._should_raise_((function(){
 return smalltalk.withContext(function($ctx2) {
return _st(self["@analyzer"])._visit_(ast);
-}, function($ctx2) {$ctx2.fill(null, null, {})})}),(smalltalk.ShadowingVariableError || ShadowingVariableError));
+}, function($ctx2) {$ctx2.fillBlock([], {})})}),(smalltalk.ShadowingVariableError || ShadowingVariableError));
 return self}, function($ctx1) {$ctx1.fill(self,"testVariableShadowing2", [], {src:src,ast:ast}, smalltalk.SemanticAnalyzerTest)})}
 }),
 smalltalk.SemanticAnalyzerTest);
@@ -782,7 +782,7 @@ return smalltalk.withContext(function($ctx1) { 
src="foo | a | a + 1. [ [ [ | a
 ast=_st(smalltalk)._parse_(src);
 _st(self)._should_raise_((function(){
 return smalltalk.withContext(function($ctx2) {
return _st(self["@analyzer"])._visit_(ast);
-}, function($ctx2) {$ctx2.fill(null, null, {})})}),(smalltalk.ShadowingVariableError || ShadowingVariableError));
+}, function($ctx2) {$ctx2.fillBlock([], {})})}),(smalltalk.ShadowingVariableError || ShadowingVariableError));
 return self}, function($ctx1) {$ctx1.fill(self,"testVariableShadowing5", [], {src:src,ast:ast}, smalltalk.SemanticAnalyzerTest)})}
 }),
 smalltalk.SemanticAnalyzerTest);

+ 7 - 7
js/Compiler-Tests.js

@@ -49,7 +49,7 @@ return smalltalk.withContext(function($ctx1) { 
var $2,$3,$1;
 ctx=_st((smalltalk.AIContext || AIContext))._new();
 _st(aDictionary)._keysAndValuesDo_((function(key,value){
 return smalltalk.withContext(function($ctx2) {
return _st(ctx)._localAt_put_(key,value);
-}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+}, function($ctx2) {$ctx2.fillBlock([key,value], {})})}));
 $2=_st((smalltalk.ASTInterpreter || ASTInterpreter))._new();
 _st($2)._context_(ctx);
 $3=_st($2)._interpret_(_st(_st(_st(self)._parse_forClass_(aString,(smalltalk.Object || Object)))._nodes())._first());
@@ -720,7 +720,7 @@ $2=_st($1)._yourself();
 node=$2;
 node;
 return _st(self)._assert_(_st(_st(_st((smalltalk.MethodLexicalScope || MethodLexicalScope))._new())._bindingFor_(node))._isPseudoVar());
-}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+}, function($ctx2) {$ctx2.fillBlock([each], {})})}));
 return self}, function($ctx1) {$ctx1.fill(self,"testPseudoVar", [], {node:node,pseudoVars:pseudoVars}, 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 ]",
@@ -806,7 +806,7 @@ 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_(ast);
-}, function($ctx2) {$ctx2.fill(null, null, {})})}),(smalltalk.InvalidAssignmentError || InvalidAssignmentError));
+}, function($ctx2) {$ctx2.fillBlock([], {})})}),(smalltalk.InvalidAssignmentError || InvalidAssignmentError));
 return self}, function($ctx1) {$ctx1.fill(self,"testAssignment", [], {src:src,ast:ast}, 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",
@@ -928,7 +928,7 @@ 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_(ast);
-}, function($ctx2) {$ctx2.fill(null, null, {})})}),(smalltalk.UnknownVariableError || UnknownVariableError));
+}, function($ctx2) {$ctx2.fillBlock([], {})})}),(smalltalk.UnknownVariableError || UnknownVariableError));
 return self}, function($ctx1) {$ctx1.fill(self,"testUnknownVariables", [], {src:src,ast:ast}, 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",
@@ -949,7 +949,7 @@ return smalltalk.withContext(function($ctx1) { 
src="foo | a b | [ c + 1. [ a +
 ast=_st(smalltalk)._parse_(src);
 _st(self)._should_raise_((function(){
 return smalltalk.withContext(function($ctx2) {
return _st(self["@analyzer"])._visit_(ast);
-}, function($ctx2) {$ctx2.fill(null, null, {})})}),(smalltalk.UnknownVariableError || UnknownVariableError));
+}, function($ctx2) {$ctx2.fillBlock([], {})})}),(smalltalk.UnknownVariableError || UnknownVariableError));
 return self}, function($ctx1) {$ctx1.fill(self,"testUnknownVariablesWithScope", [], {src:src,ast:ast}, 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",
@@ -989,7 +989,7 @@ return smalltalk.withContext(function($ctx1) { 
src="foo | a | a + 1. [ | a | a
 ast=_st(smalltalk)._parse_(src);
 _st(self)._should_raise_((function(){
 return smalltalk.withContext(function($ctx2) {
return _st(self["@analyzer"])._visit_(ast);
-}, function($ctx2) {$ctx2.fill(null, null, {})})}),(smalltalk.ShadowingVariableError || ShadowingVariableError));
+}, function($ctx2) {$ctx2.fillBlock([], {})})}),(smalltalk.ShadowingVariableError || ShadowingVariableError));
 return self}, function($ctx1) {$ctx1.fill(self,"testVariableShadowing2", [], {src:src,ast:ast}, 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",
@@ -1048,7 +1048,7 @@ return smalltalk.withContext(function($ctx1) { 
src="foo | a | a + 1. [ [ [ | a
 ast=_st(smalltalk)._parse_(src);
 _st(self)._should_raise_((function(){
 return smalltalk.withContext(function($ctx2) {
return _st(self["@analyzer"])._visit_(ast);
-}, function($ctx2) {$ctx2.fill(null, null, {})})}),(smalltalk.ShadowingVariableError || ShadowingVariableError));
+}, function($ctx2) {$ctx2.fillBlock([], {})})}),(smalltalk.ShadowingVariableError || ShadowingVariableError));
 return self}, function($ctx1) {$ctx1.fill(self,"testVariableShadowing5", [], {src:src,ast:ast}, 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",

+ 4 - 4
js/Examples.deploy.js

@@ -9,7 +9,7 @@ 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());
-}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+}, function($ctx2) {$ctx2.fillBlock([html], {})})}));
 return self}, function($ctx1) {$ctx1.fill(self,"decrease", [], {}, smalltalk.Counter)})}
 }),
 smalltalk.Counter);
@@ -23,7 +23,7 @@ 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());
-}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+}, function($ctx2) {$ctx2.fillBlock([html], {})})}));
 return self}, function($ctx1) {$ctx1.fill(self,"increase", [], {}, smalltalk.Counter)})}
 }),
 smalltalk.Counter);
@@ -55,12 +55,12 @@ $3=_st(html)._button();
 _st($3)._with_("++");
 $4=_st($3)._onClick_((function(){
 return smalltalk.withContext(function($ctx2) {
return _st(self)._increase();
-}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+}, function($ctx2) {$ctx2.fillBlock([], {})})}));
 $5=_st(html)._button();
 _st($5)._with_("--");
 $6=_st($5)._onClick_((function(){
 return smalltalk.withContext(function($ctx2) {
return _st(self)._decrease();
-}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+}, function($ctx2) {$ctx2.fillBlock([], {})})}));
 return self}, function($ctx1) {$ctx1.fill(self,"renderOn:", [html], {}, smalltalk.Counter)})}
 }),
 smalltalk.Counter);

+ 4 - 4
js/Examples.js

@@ -11,7 +11,7 @@ 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());
-}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+}, function($ctx2) {$ctx2.fillBlock([html], {})})}));
 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]",
@@ -30,7 +30,7 @@ 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());
-}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+}, function($ctx2) {$ctx2.fillBlock([html], {})})}));
 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]",
@@ -72,12 +72,12 @@ $3=_st(html)._button();
 _st($3)._with_("++");
 $4=_st($3)._onClick_((function(){
 return smalltalk.withContext(function($ctx2) {
return _st(self)._increase();
-}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+}, function($ctx2) {$ctx2.fillBlock([], {})})}));
 $5=_st(html)._button();
 _st($5)._with_("--");
 $6=_st($5)._onClick_((function(){
 return smalltalk.withContext(function($ctx2) {
return _st(self)._decrease();
-}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+}, function($ctx2) {$ctx2.fillBlock([], {})})}));
 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]",

File diff suppressed because it is too large
+ 145 - 145
js/IDE.deploy.js


File diff suppressed because it is too large
+ 145 - 145
js/IDE.js


+ 45 - 45
js/Importer-Exporter.deploy.js

@@ -15,7 +15,7 @@ $1=(function(){
 return smalltalk.withContext(function($ctx2) {
char=_st(self["@stream"])._next();
 char;
 return _st(char)._notNil();
-}, function($ctx2) {$ctx2.fill(null, null, {})})});
+}, function($ctx2) {$ctx2.fillBlock([], {})})});
 $2=(function(){
 return smalltalk.withContext(function($ctx2) {
$3=_st(char).__eq("!");
 $4=(function(){
@@ -26,10 +26,10 @@ return _st(self["@stream"])._next();
 $6=_st(_st(result)._contents())._trimBoth();
 throw $early=[$6];
 };
-}, function($ctx3) {$ctx3.fill(null, null, {})})});
+}, function($ctx3) {$ctx3.fillBlock([], {})})});
 _st($3)._ifTrue_($4);
 return _st(result)._nextPut_(char);
-}, function($ctx2) {$ctx2.fill(null, null, {})})});
+}, function($ctx2) {$ctx2.fillBlock([], {})})});
 _st($1)._whileTrue_($2);
 return nil;
 }
@@ -75,7 +75,7 @@ return smalltalk.withContext(function($ctx1) { 
var $2,$3,$5,$4,$1;
 $2=_st(aClass)._isMetaclass();
 $3=(function(){
 return smalltalk.withContext(function($ctx2) {
return _st(_st(_st(aClass)._instanceClass())._name()).__comma(".klass");
-}, function($ctx2) {$ctx2.fill(null, null, {})})});
+}, function($ctx2) {$ctx2.fillBlock([], {})})});
 $4=(function(){
 return smalltalk.withContext(function($ctx2) {
$5=_st(aClass)._isNil();
 if(smalltalk.assert($5)){
@@ -83,7 +83,7 @@ return "nil";
 } else {
 return _st(aClass)._name();
 };
-}, function($ctx2) {$ctx2.fill(null, null, {})})});
+}, function($ctx2) {$ctx2.fillBlock([], {})})});
 $1=_st($2)._ifTrue_ifFalse_($3,$4);
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"classNameFor:", [aClass], {}, smalltalk.Exporter)})}
@@ -100,8 +100,8 @@ 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()));
-}, function($ctx3) {$ctx3.fill(null, null, {})})}));
-}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+}, function($ctx3) {$ctx3.fillBlock([pkg], {})})}));
+}, function($ctx2) {$ctx2.fillBlock([stream], {})})}));
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"exportAll", [], {}, smalltalk.Exporter)})}
 }),
@@ -119,7 +119,7 @@ return smalltalk.withContext(function($ctx2) {
_st(self)._exportDefinitionOf_on_
 _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, {})})}));
+}, function($ctx2) {$ctx2.fillBlock([stream], {})})}));
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"exportClass:", [aClass], {}, smalltalk.Exporter)})}
 }),
@@ -139,9 +139,9 @@ _st($1)._nextPutAll_(_st("smalltalk.").__comma(_st(self)._classNameFor_(_st(aCla
 $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($ctx2) {$ctx2.fill(null, null, {})})}),(function(){
+}, function($ctx2) {$ctx2.fillBlock([each], {})})}),(function(){
 return smalltalk.withContext(function($ctx2) {
return _st(aStream)._nextPutAll_(", ");
-}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+}, function($ctx2) {$ctx2.fillBlock([], {})})}));
 $3=aStream;
 _st($3)._nextPutAll_("], '");
 _st($3)._nextPutAll_(_st(_st(aClass)._category()).__comma("'"));
@@ -176,9 +176,9 @@ $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($ctx2) {$ctx2.fill(null, null, {})})}),(function(){
+}, function($ctx2) {$ctx2.fillBlock([each], {})})}),(function(){
 return smalltalk.withContext(function($ctx2) {
return _st(aStream)._nextPutAll_(",");
-}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+}, function($ctx2) {$ctx2.fillBlock([], {})})}));
 _st(aStream)._nextPutAll_(_st("];").__comma(_st((smalltalk.String || String))._lf()));
 };
 return self}, function($ctx1) {$ctx1.fill(self,"exportMetaDefinitionOf:on:", [aClass,aStream], {}, smalltalk.Exporter)})}
@@ -233,13 +233,13 @@ var self=this;
 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, {})})}));
+}, function($ctx2) {$ctx2.fillBlock([a,b], {})})}));
 $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, {})})});
+}, function($ctx2) {$ctx2.fillBlock([each], {})})});
 _st($1)._do_($2);
 _st(aStream)._lf();
 return self}, function($ctx1) {$ctx1.fill(self,"exportMethodsOf:on:", [aClass,aStream], {}, smalltalk.Exporter)})}
@@ -260,9 +260,9 @@ 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, {})})}));
+}, function($ctx3) {$ctx3.fillBlock([each], {})})}));
 return _st(self)._exportPackageExtensionsOf_on_(package_,stream);
-}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+}, function($ctx2) {$ctx2.fillBlock([stream], {})})}));
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"exportPackage:", [packageName], {package_:package_}, smalltalk.Exporter)})}
 }),
@@ -298,17 +298,17 @@ 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, {})})}));
+}, function($ctx4) {$ctx4.fillBlock([a,b], {})})}));
 $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);
 };
-}, function($ctx4) {$ctx4.fill(null, null, {})})});
+}, function($ctx4) {$ctx4.fillBlock([method], {})})});
 return _st($5)._do_($6);
-}, function($ctx3) {$ctx3.fill(null, null, {})})});
+}, function($ctx3) {$ctx3.fillBlock([aClass], {})})});
 return _st($3)._do_($4);
-}, function($ctx2) {$ctx2.fill(null, null, {})})});
+}, function($ctx2) {$ctx2.fillBlock([each], {})})});
 _st($1)._do_($2);
 return self}, function($ctx1) {$ctx1.fill(self,"exportPackageExtensionsOf:on:", [package_,aStream], {name:name}, smalltalk.Exporter)})}
 }),
@@ -340,7 +340,7 @@ return smalltalk.withContext(function($ctx1) { 
var $2,$3,$5,$4,$1;
 $2=_st(aClass)._isMetaclass();
 $3=(function(){
 return smalltalk.withContext(function($ctx2) {
return _st(_st(_st(aClass)._instanceClass())._name()).__comma(" class");
-}, function($ctx2) {$ctx2.fill(null, null, {})})});
+}, function($ctx2) {$ctx2.fillBlock([], {})})});
 $4=(function(){
 return smalltalk.withContext(function($ctx2) {
$5=_st(aClass)._isNil();
 if(smalltalk.assert($5)){
@@ -348,7 +348,7 @@ return "nil";
 } else {
 return _st(aClass)._name();
 };
-}, function($ctx2) {$ctx2.fill(null, null, {})})});
+}, function($ctx2) {$ctx2.fillBlock([], {})})});
 $1=_st($2)._ifTrue_ifFalse_($3,$4);
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"classNameFor:", [aClass], {}, smalltalk.ChunkExporter)})}
@@ -369,9 +369,9 @@ _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($ctx2) {$ctx2.fill(null, null, {})})}),(function(){
+}, function($ctx2) {$ctx2.fillBlock([each], {})})}),(function(){
 return smalltalk.withContext(function($ctx2) {
return _st(aStream)._nextPutAll_(" ");
-}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+}, function($ctx2) {$ctx2.fillBlock([], {})})}));
 $3=aStream;
 _st($3)._nextPutAll_("'");
 _st($3)._lf();
@@ -406,9 +406,9 @@ $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(){
+}, function($ctx2) {$ctx2.fillBlock([each], {})})}),(function(){
 return smalltalk.withContext(function($ctx2) {
return _st(aStream)._nextPutAll_(" ");
-}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+}, function($ctx2) {$ctx2.fillBlock([], {})})}));
 $4=aStream;
 _st($4)._nextPutAll_("'!");
 _st($4)._lf();
@@ -448,9 +448,9 @@ _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());
-}, function($ctx2) {$ctx2.fill(null, null, {})})})))._do_((function(each){
+}, function($ctx2) {$ctx2.fillBlock([a,b], {})})})))._do_((function(each){
 return smalltalk.withContext(function($ctx2) {
return _st(self)._exportMethod_of_on_(each,aClass,aStream);
-}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+}, function($ctx2) {$ctx2.fillBlock([each], {})})}));
 $3=aStream;
 _st($3)._nextPutAll_(" !");
 _st($3)._lf();
@@ -474,16 +474,16 @@ return smalltalk.withContext(function($ctx2) {
$3=_st(category)._match_("^\x5c*"
 if(! smalltalk.assert($3)){
 return _st(map)._at_put_(category,methods);
 };
-}, function($ctx2) {$ctx2.fill(null, null, {})})});
+}, function($ctx2) {$ctx2.fillBlock([category,methods], {})})});
 _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){
+}, function($ctx2) {$ctx2.fillBlock([a,b], {})})})))._do_((function(category){
 var methods;
 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, {})})}));
+}, function($ctx2) {$ctx2.fillBlock([category], {methods:methods})})}));
 return self}, function($ctx1) {$ctx1.fill(self,"exportMethodsOf:on:", [aClass,aStream], {map:map}, smalltalk.ChunkExporter)})}
 }),
 smalltalk.ChunkExporter);
@@ -523,19 +523,19 @@ return smalltalk.withContext(function($ctx4) {
$7=_st(category)._match_(_st("^\x
 if(smalltalk.assert($7)){
 return _st(map)._at_put_(category,methods);
 };
-}, function($ctx4) {$ctx4.fill(null, null, {})})});
+}, function($ctx4) {$ctx4.fillBlock([category,methods], {})})});
 _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){
+}, function($ctx4) {$ctx4.fillBlock([a,b], {})})})))._do_((function(category){
 var methods;
 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, {})})});
+}, function($ctx4) {$ctx4.fillBlock([category], {methods:methods})})}));
+}, function($ctx3) {$ctx3.fillBlock([aClass], {})})});
 return _st($3)._do_($4);
-}, function($ctx2) {$ctx2.fill(null, null, {})})});
+}, function($ctx2) {$ctx2.fillBlock([each], {})})});
 _st($1)._do_($2);
 return self}, function($ctx1) {$ctx1.fill(self,"exportPackageExtensionsOf:on:", [package_,aStream], {name:name,map:map}, smalltalk.ChunkExporter)})}
 }),
@@ -558,9 +558,9 @@ _st($1)._nextPutAll_(_st("smalltalk.").__comma(_st(self)._classNameFor_(_st(aCla
 $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($ctx2) {$ctx2.fill(null, null, {})})}),(function(){
+}, function($ctx2) {$ctx2.fillBlock([each], {})})}),(function(){
 return smalltalk.withContext(function($ctx2) {
return _st(aStream)._nextPutAll_(", ");
-}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+}, function($ctx2) {$ctx2.fillBlock([], {})})}));
 $3=aStream;
 _st($3)._nextPutAll_("], '");
 _st($3)._nextPutAll_(_st(_st(aClass)._category()).__comma("'"));
@@ -615,13 +615,13 @@ $1=(function(){
 return smalltalk.withContext(function($ctx2) {
chunk=_st(parser)._nextChunk();
 chunk;
 return _st(chunk)._isNil();
-}, function($ctx2) {$ctx2.fill(null, null, {})})});
+}, function($ctx2) {$ctx2.fillBlock([], {})})});
 $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, {})})});
+}, function($ctx3) {$ctx3.fillBlock([], {})})});
 $5=(function(){
 return smalltalk.withContext(function($ctx3) {
result=_st(_st((smalltalk.Compiler || Compiler))._new())._evaluateExpression_(chunk);
 result;
@@ -631,9 +631,9 @@ lastEmpty=false;
 lastEmpty;
 return _st(result)._scanFrom_(parser);
 };
-}, function($ctx3) {$ctx3.fill(null, null, {})})});
+}, function($ctx3) {$ctx3.fillBlock([], {})})});
 return _st($3)._ifTrue_ifFalse_($4,$5);
-}, function($ctx2) {$ctx2.fill(null, null, {})})});
+}, function($ctx2) {$ctx2.fillBlock([], {})})});
 _st($1)._whileFalse_($2);
 return self}, function($ctx1) {$ctx1.fill(self,"import:", [aStream], {chunk:chunk,result:result,parser:parser,lastEmpty:lastEmpty}, smalltalk.Importer)})}
 }),
@@ -675,11 +675,11 @@ return smalltalk.withContext(function($ctx2) {
$8=_st(_st(jqXHR)._readyState()).
 if(smalltalk.assert($8)){
 return _st(self)._initializePackageNamed_prefix_(packageName,aString);
 };
-}, function($ctx2) {$ctx2.fill(null, null, {})})});
+}, function($ctx2) {$ctx2.fillBlock([jqXHR,textStatus], {})})});
 $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, {})})}))]);
+}, function($ctx2) {$ctx2.fillBlock([], {})})}))]);
 _st($1)._ajax_options_($2,$3);
 return self}, function($ctx1) {$ctx1.fill(self,"loadPackage:prefix:", [packageName,aString], {url:url}, smalltalk.PackageLoader)})}
 }),
@@ -693,7 +693,7 @@ 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);
-}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+}, function($ctx2) {$ctx2.fillBlock([each], {})})}));
 return self}, function($ctx1) {$ctx1.fill(self,"loadPackages:prefix:", [aCollection,aString], {}, smalltalk.PackageLoader)})}
 }),
 smalltalk.PackageLoader);

+ 45 - 45
js/Importer-Exporter.js

@@ -16,7 +16,7 @@ $1=(function(){
 return smalltalk.withContext(function($ctx2) {
char=_st(self["@stream"])._next();
 char;
 return _st(char)._notNil();
-}, function($ctx2) {$ctx2.fill(null, null, {})})});
+}, function($ctx2) {$ctx2.fillBlock([], {})})});
 $2=(function(){
 return smalltalk.withContext(function($ctx2) {
$3=_st(char).__eq("!");
 $4=(function(){
@@ -27,10 +27,10 @@ return _st(self["@stream"])._next();
 $6=_st(_st(result)._contents())._trimBoth();
 throw $early=[$6];
 };
-}, function($ctx3) {$ctx3.fill(null, null, {})})});
+}, function($ctx3) {$ctx3.fillBlock([], {})})});
 _st($3)._ifTrue_($4);
 return _st(result)._nextPut_(char);
-}, function($ctx2) {$ctx2.fill(null, null, {})})});
+}, function($ctx2) {$ctx2.fillBlock([], {})})});
 _st($1)._whileTrue_($2);
 return nil;
 }
@@ -91,7 +91,7 @@ return smalltalk.withContext(function($ctx1) { 
var $2,$3,$5,$4,$1;
 $2=_st(aClass)._isMetaclass();
 $3=(function(){
 return smalltalk.withContext(function($ctx2) {
return _st(_st(_st(aClass)._instanceClass())._name()).__comma(".klass");
-}, function($ctx2) {$ctx2.fill(null, null, {})})});
+}, function($ctx2) {$ctx2.fillBlock([], {})})});
 $4=(function(){
 return smalltalk.withContext(function($ctx2) {
$5=_st(aClass)._isNil();
 if(smalltalk.assert($5)){
@@ -99,7 +99,7 @@ return "nil";
 } else {
 return _st(aClass)._name();
 };
-}, function($ctx2) {$ctx2.fill(null, null, {})})});
+}, function($ctx2) {$ctx2.fillBlock([], {})})});
 $1=_st($2)._ifTrue_ifFalse_($3,$4);
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"classNameFor:", [aClass], {}, smalltalk.Exporter)})},
@@ -121,8 +121,8 @@ 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()));
-}, function($ctx3) {$ctx3.fill(null, null, {})})}));
-}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+}, function($ctx3) {$ctx3.fillBlock([pkg], {})})}));
+}, function($ctx2) {$ctx2.fillBlock([stream], {})})}));
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"exportAll", [], {}, smalltalk.Exporter)})},
 args: [],
@@ -145,7 +145,7 @@ return smalltalk.withContext(function($ctx2) {
_st(self)._exportDefinitionOf_on_
 _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, {})})}));
+}, function($ctx2) {$ctx2.fillBlock([stream], {})})}));
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"exportClass:", [aClass], {}, smalltalk.Exporter)})},
 args: ["aClass"],
@@ -170,9 +170,9 @@ _st($1)._nextPutAll_(_st("smalltalk.").__comma(_st(self)._classNameFor_(_st(aCla
 $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($ctx2) {$ctx2.fill(null, null, {})})}),(function(){
+}, function($ctx2) {$ctx2.fillBlock([each], {})})}),(function(){
 return smalltalk.withContext(function($ctx2) {
return _st(aStream)._nextPutAll_(", ");
-}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+}, function($ctx2) {$ctx2.fillBlock([], {})})}));
 $3=aStream;
 _st($3)._nextPutAll_("], '");
 _st($3)._nextPutAll_(_st(_st(aClass)._category()).__comma("'"));
@@ -212,9 +212,9 @@ $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($ctx2) {$ctx2.fill(null, null, {})})}),(function(){
+}, function($ctx2) {$ctx2.fillBlock([each], {})})}),(function(){
 return smalltalk.withContext(function($ctx2) {
return _st(aStream)._nextPutAll_(",");
-}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+}, function($ctx2) {$ctx2.fillBlock([], {})})}));
 _st(aStream)._nextPutAll_(_st("];").__comma(_st((smalltalk.String || String))._lf()));
 };
 return self}, function($ctx1) {$ctx1.fill(self,"exportMetaDefinitionOf:on:", [aClass,aStream], {}, smalltalk.Exporter)})},
@@ -279,13 +279,13 @@ var self=this;
 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, {})})}));
+}, function($ctx2) {$ctx2.fillBlock([a,b], {})})}));
 $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, {})})});
+}, function($ctx2) {$ctx2.fillBlock([each], {})})});
 _st($1)._do_($2);
 _st(aStream)._lf();
 return self}, function($ctx1) {$ctx1.fill(self,"exportMethodsOf:on:", [aClass,aStream], {}, smalltalk.Exporter)})},
@@ -311,9 +311,9 @@ 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, {})})}));
+}, function($ctx3) {$ctx3.fillBlock([each], {})})}));
 return _st(self)._exportPackageExtensionsOf_on_(package_,stream);
-}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+}, function($ctx2) {$ctx2.fillBlock([stream], {})})}));
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"exportPackage:", [packageName], {package_:package_}, smalltalk.Exporter)})},
 args: ["packageName"],
@@ -359,17 +359,17 @@ 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, {})})}));
+}, function($ctx4) {$ctx4.fillBlock([a,b], {})})}));
 $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);
 };
-}, function($ctx4) {$ctx4.fill(null, null, {})})});
+}, function($ctx4) {$ctx4.fillBlock([method], {})})});
 return _st($5)._do_($6);
-}, function($ctx3) {$ctx3.fill(null, null, {})})});
+}, function($ctx3) {$ctx3.fillBlock([aClass], {})})});
 return _st($3)._do_($4);
-}, function($ctx2) {$ctx2.fill(null, null, {})})});
+}, function($ctx2) {$ctx2.fillBlock([each], {})})});
 _st($1)._do_($2);
 return self}, function($ctx1) {$ctx1.fill(self,"exportPackageExtensionsOf:on:", [package_,aStream], {name:name}, smalltalk.Exporter)})},
 args: ["package", "aStream"],
@@ -411,7 +411,7 @@ return smalltalk.withContext(function($ctx1) { 
var $2,$3,$5,$4,$1;
 $2=_st(aClass)._isMetaclass();
 $3=(function(){
 return smalltalk.withContext(function($ctx2) {
return _st(_st(_st(aClass)._instanceClass())._name()).__comma(" class");
-}, function($ctx2) {$ctx2.fill(null, null, {})})});
+}, function($ctx2) {$ctx2.fillBlock([], {})})});
 $4=(function(){
 return smalltalk.withContext(function($ctx2) {
$5=_st(aClass)._isNil();
 if(smalltalk.assert($5)){
@@ -419,7 +419,7 @@ return "nil";
 } else {
 return _st(aClass)._name();
 };
-}, function($ctx2) {$ctx2.fill(null, null, {})})});
+}, function($ctx2) {$ctx2.fillBlock([], {})})});
 $1=_st($2)._ifTrue_ifFalse_($3,$4);
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"classNameFor:", [aClass], {}, smalltalk.ChunkExporter)})},
@@ -445,9 +445,9 @@ _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($ctx2) {$ctx2.fill(null, null, {})})}),(function(){
+}, function($ctx2) {$ctx2.fillBlock([each], {})})}),(function(){
 return smalltalk.withContext(function($ctx2) {
return _st(aStream)._nextPutAll_(" ");
-}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+}, function($ctx2) {$ctx2.fillBlock([], {})})}));
 $3=aStream;
 _st($3)._nextPutAll_("'");
 _st($3)._lf();
@@ -487,9 +487,9 @@ $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(){
+}, function($ctx2) {$ctx2.fillBlock([each], {})})}),(function(){
 return smalltalk.withContext(function($ctx2) {
return _st(aStream)._nextPutAll_(" ");
-}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+}, function($ctx2) {$ctx2.fillBlock([], {})})}));
 $4=aStream;
 _st($4)._nextPutAll_("'!");
 _st($4)._lf();
@@ -539,9 +539,9 @@ _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());
-}, function($ctx2) {$ctx2.fill(null, null, {})})})))._do_((function(each){
+}, function($ctx2) {$ctx2.fillBlock([a,b], {})})})))._do_((function(each){
 return smalltalk.withContext(function($ctx2) {
return _st(self)._exportMethod_of_on_(each,aClass,aStream);
-}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+}, function($ctx2) {$ctx2.fillBlock([each], {})})}));
 $3=aStream;
 _st($3)._nextPutAll_(" !");
 _st($3)._lf();
@@ -570,16 +570,16 @@ return smalltalk.withContext(function($ctx2) {
$3=_st(category)._match_("^\x5c*"
 if(! smalltalk.assert($3)){
 return _st(map)._at_put_(category,methods);
 };
-}, function($ctx2) {$ctx2.fill(null, null, {})})});
+}, function($ctx2) {$ctx2.fillBlock([category,methods], {})})});
 _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){
+}, function($ctx2) {$ctx2.fillBlock([a,b], {})})})))._do_((function(category){
 var methods;
 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, {})})}));
+}, function($ctx2) {$ctx2.fillBlock([category], {methods:methods})})}));
 return self}, function($ctx1) {$ctx1.fill(self,"exportMethodsOf:on:", [aClass,aStream], {map:map}, 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 ]",
@@ -629,19 +629,19 @@ return smalltalk.withContext(function($ctx4) {
$7=_st(category)._match_(_st("^\x
 if(smalltalk.assert($7)){
 return _st(map)._at_put_(category,methods);
 };
-}, function($ctx4) {$ctx4.fill(null, null, {})})});
+}, function($ctx4) {$ctx4.fillBlock([category,methods], {})})});
 _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){
+}, function($ctx4) {$ctx4.fillBlock([a,b], {})})})))._do_((function(category){
 var methods;
 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, {})})});
+}, function($ctx4) {$ctx4.fillBlock([category], {methods:methods})})}));
+}, function($ctx3) {$ctx3.fillBlock([aClass], {})})});
 return _st($3)._do_($4);
-}, function($ctx2) {$ctx2.fill(null, null, {})})});
+}, function($ctx2) {$ctx2.fillBlock([each], {})})});
 _st($1)._do_($2);
 return self}, function($ctx1) {$ctx1.fill(self,"exportPackageExtensionsOf:on:", [package_,aStream], {name:name,map:map}, smalltalk.ChunkExporter)})},
 args: ["package", "aStream"],
@@ -669,9 +669,9 @@ _st($1)._nextPutAll_(_st("smalltalk.").__comma(_st(self)._classNameFor_(_st(aCla
 $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($ctx2) {$ctx2.fill(null, null, {})})}),(function(){
+}, function($ctx2) {$ctx2.fillBlock([each], {})})}),(function(){
 return smalltalk.withContext(function($ctx2) {
return _st(aStream)._nextPutAll_(", ");
-}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+}, function($ctx2) {$ctx2.fillBlock([], {})})}));
 $3=aStream;
 _st($3)._nextPutAll_("], '");
 _st($3)._nextPutAll_(_st(_st(aClass)._category()).__comma("'"));
@@ -736,13 +736,13 @@ $1=(function(){
 return smalltalk.withContext(function($ctx2) {
chunk=_st(parser)._nextChunk();
 chunk;
 return _st(chunk)._isNil();
-}, function($ctx2) {$ctx2.fill(null, null, {})})});
+}, function($ctx2) {$ctx2.fillBlock([], {})})});
 $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, {})})});
+}, function($ctx3) {$ctx3.fillBlock([], {})})});
 $5=(function(){
 return smalltalk.withContext(function($ctx3) {
result=_st(_st((smalltalk.Compiler || Compiler))._new())._evaluateExpression_(chunk);
 result;
@@ -752,9 +752,9 @@ lastEmpty=false;
 lastEmpty;
 return _st(result)._scanFrom_(parser);
 };
-}, function($ctx3) {$ctx3.fill(null, null, {})})});
+}, function($ctx3) {$ctx3.fillBlock([], {})})});
 return _st($3)._ifTrue_ifFalse_($4,$5);
-}, function($ctx2) {$ctx2.fill(null, null, {})})});
+}, function($ctx2) {$ctx2.fillBlock([], {})})});
 _st($1)._whileFalse_($2);
 return self}, function($ctx1) {$ctx1.fill(self,"import:", [aStream], {chunk:chunk,result:result,parser:parser,lastEmpty:lastEmpty}, smalltalk.Importer)})},
 args: ["aStream"],
@@ -806,11 +806,11 @@ return smalltalk.withContext(function($ctx2) {
$8=_st(_st(jqXHR)._readyState()).
 if(smalltalk.assert($8)){
 return _st(self)._initializePackageNamed_prefix_(packageName,aString);
 };
-}, function($ctx2) {$ctx2.fill(null, null, {})})});
+}, function($ctx2) {$ctx2.fillBlock([jqXHR,textStatus], {})})});
 $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, {})})}))]);
+}, function($ctx2) {$ctx2.fillBlock([], {})})}))]);
 _st($1)._ajax_options_($2,$3);
 return self}, function($ctx1) {$ctx1.fill(self,"loadPackage:prefix:", [packageName,aString], {url:url}, smalltalk.PackageLoader)})},
 args: ["packageName", "aString"],
@@ -829,7 +829,7 @@ 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);
-}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+}, function($ctx2) {$ctx2.fillBlock([each], {})})}));
 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 ]",

+ 1 - 1
js/Kernel-Announcements.deploy.js

@@ -87,7 +87,7 @@ 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);
-}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+}, function($ctx2) {$ctx2.fillBlock([each], {})})}));
 return self}, function($ctx1) {$ctx1.fill(self,"announce:", [anAnnouncement], {}, smalltalk.Announcer)})}
 }),
 smalltalk.Announcer);

+ 1 - 1
js/Kernel-Announcements.js

@@ -118,7 +118,7 @@ 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);
-}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+}, function($ctx2) {$ctx2.fillBlock([each], {})})}));
 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]",

+ 24 - 24
js/Kernel-Classes.deploy.js

@@ -49,7 +49,7 @@ return smalltalk.withContext(function($ctx1) { 
var $1;
 result=_st(self)._subclasses();
 _st(_st(self)._subclasses())._do_((function(each){
 return smalltalk.withContext(function($ctx2) {
return _st(result)._addAll_(_st(each)._allSubclasses());
-}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+}, function($ctx2) {$ctx2.fillBlock([each], {})})}));
 $1=result;
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"allSubclasses", [], {result:result}, smalltalk.Behavior)})}
@@ -124,8 +124,8 @@ return smalltalk.withContext(function($ctx1) { 
var $1;
 $1=_st(_st(_st(_st(self)._methodDictionary())._keys())._includes_(_st(aSelector)._asString()))._or_((function(){
 return smalltalk.withContext(function($ctx2) {
return _st(_st(_st(self)._superclass())._notNil())._and_((function(){
 return smalltalk.withContext(function($ctx3) {
return _st(_st(self)._superclass())._canUnderstand_(aSelector);
-}, function($ctx3) {$ctx3.fill(null, null, {})})}));
-}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+}, function($ctx3) {$ctx3.fillBlock([], {})})}));
+}, function($ctx2) {$ctx2.fillBlock([], {})})}));
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"canUnderstand:", [aSelector], {}, smalltalk.Behavior)})}
 }),
@@ -277,7 +277,7 @@ try {
 lookupClass=self;
 $1=(function(){
 return smalltalk.withContext(function($ctx2) {
return _st(lookupClass).__eq(nil);
-}, function($ctx2) {$ctx2.fill(null, null, {})})});
+}, function($ctx2) {$ctx2.fillBlock([], {})})});
 $2=(function(){
 return smalltalk.withContext(function($ctx2) {
$3=_st(lookupClass)._includesSelector_(selector);
 if(smalltalk.assert($3)){
@@ -286,7 +286,7 @@ throw $early=[$4];
 };
 lookupClass=_st(lookupClass)._superclass();
 return lookupClass;
-}, function($ctx2) {$ctx2.fill(null, null, {})})});
+}, function($ctx2) {$ctx2.fillBlock([], {})})});
 _st($1)._whileFalse_($2);
 return nil;
 }
@@ -377,7 +377,7 @@ var self=this;
 return smalltalk.withContext(function($ctx1) { 
var $1;
 $1=_st(_st(_st(self)._methodDictionary())._values())._select_((function(each){
 return smalltalk.withContext(function($ctx2) {
return _st(_st(each)._protocol()).__eq(aString);
-}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+}, function($ctx2) {$ctx2.fillBlock([each], {})})}));
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"methodsInProtocol:", [aString], {}, smalltalk.Behavior)})}
 }),
@@ -444,11 +444,11 @@ return smalltalk.withContext(function($ctx1) { 
methodsByCategory=_st((smalltalk
 _st(_st(_st(self)._methodDictionary())._values())._do_((function(m){
 return smalltalk.withContext(function($ctx2) {
return _st(_st(methodsByCategory)._at_ifAbsentPut_(_st(m)._category(),(function(){
 return smalltalk.withContext(function($ctx3) {
return _st((smalltalk.Array || Array))._new();
-}, function($ctx3) {$ctx3.fill(null, null, {})})})))._add_(m);
-}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+}, function($ctx3) {$ctx3.fillBlock([], {})})})))._add_(m);
+}, function($ctx2) {$ctx2.fillBlock([m], {})})}));
 _st(_st(self)._protocols())._do_((function(category){
 return smalltalk.withContext(function($ctx2) {
return _st(aBlock)._value_value_(category,_st(methodsByCategory)._at_(category));
-}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+}, function($ctx2) {$ctx2.fillBlock([category], {})})}));
 return self}, function($ctx1) {$ctx1.fill(self,"protocolsDo:", [aBlock], {methodsByCategory:methodsByCategory}, smalltalk.Behavior)})}
 }),
 smalltalk.Behavior);
@@ -609,16 +609,16 @@ $3=_st($2)._nextPutAll_("instanceVariableNames: '");
 $3;
 _st(_st(self)._instanceVariableNames())._do_separatedBy_((function(each){
 return smalltalk.withContext(function($ctx3) {
return _st(stream)._nextPutAll_(each);
-}, function($ctx3) {$ctx3.fill(null, null, {})})}),(function(){
+}, function($ctx3) {$ctx3.fillBlock([each], {})})}),(function(){
 return smalltalk.withContext(function($ctx3) {
return _st(stream)._nextPutAll_(" ");
-}, function($ctx3) {$ctx3.fill(null, null, {})})}));
+}, function($ctx3) {$ctx3.fillBlock([], {})})}));
 $4=stream;
 _st($4)._nextPutAll_(_st(_st("'").__comma(_st((smalltalk.String || String))._lf())).__comma(_st((smalltalk.String || String))._tab()));
 _st($4)._nextPutAll_("package: '");
 _st($4)._nextPutAll_(_st(self)._category());
 $5=_st($4)._nextPutAll_("'");
 return $5;
-}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+}, function($ctx2) {$ctx2.fillBlock([stream], {})})}));
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"definition", [], {}, smalltalk.Class)})}
 }),
@@ -765,11 +765,11 @@ $3=_st($2)._nextPutAll_("instanceVariableNames: '");
 $3;
 _st(_st(self)._instanceVariableNames())._do_separatedBy_((function(each){
 return smalltalk.withContext(function($ctx3) {
return _st(stream)._nextPutAll_(each);
-}, function($ctx3) {$ctx3.fill(null, null, {})})}),(function(){
+}, function($ctx3) {$ctx3.fillBlock([each], {})})}),(function(){
 return smalltalk.withContext(function($ctx3) {
return _st(stream)._nextPutAll_(" ");
-}, function($ctx3) {$ctx3.fill(null, null, {})})}));
+}, function($ctx3) {$ctx3.fillBlock([], {})})}));
 return _st(stream)._nextPutAll_("'");
-}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+}, function($ctx2) {$ctx2.fillBlock([stream], {})})}));
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"definition", [], {}, smalltalk.Metaclass)})}
 }),
@@ -934,10 +934,10 @@ newClass=_st(self)._addSubclassOf_named_instanceVariableNames_package_(_st(aClas
 _st(self)._setupClass_(newClass);
 _st(_st(_st(aClass)._methodDictionary())._values())._do_((function(each){
 return smalltalk.withContext(function($ctx2) {
return _st(_st((smalltalk.Compiler || Compiler))._new())._install_forClass_category_(_st(each)._source(),newClass,_st(each)._category());
-}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+}, function($ctx2) {$ctx2.fillBlock([each], {})})}));
 _st(_st(_st(_st(aClass)._class())._methodDictionary())._values())._do_((function(each){
 return smalltalk.withContext(function($ctx2) {
return _st(_st((smalltalk.Compiler || Compiler))._new())._install_forClass_category_(_st(each)._source(),_st(newClass)._class(),_st(each)._category());
-}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+}, function($ctx2) {$ctx2.fillBlock([each], {})})}));
 _st(self)._setupClass_(newClass);
 $1=newClass;
 return $1;
@@ -954,7 +954,7 @@ var self=this;
 return smalltalk.withContext(function($ctx1) { 
var $1;
 $1=_st(_st(aString)._tokenize_(" "))._reject_((function(each){
 return smalltalk.withContext(function($ctx2) {
return _st(each)._isEmpty();
-}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+}, function($ctx2) {$ctx2.fillBlock([each], {})})}));
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"instanceVariableNamesFor:", [aString], {}, smalltalk.ClassBuilder)})}
 }),
@@ -1079,9 +1079,9 @@ return smalltalk.withContext(function($ctx1) { 
_st((function(){
 return smalltalk.withContext(function($ctx2) {
chunk=_st(aChunkParser)._nextChunk();
 chunk;
 return _st(chunk)._isEmpty();
-}, function($ctx2) {$ctx2.fill(null, null, {})})}))._whileFalse_((function(){
+}, function($ctx2) {$ctx2.fillBlock([], {})})}))._whileFalse_((function(){
 return smalltalk.withContext(function($ctx2) {
return _st(self)._compileMethod_(chunk);
-}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+}, function($ctx2) {$ctx2.fillBlock([], {})})}));
 _st(_st((smalltalk.Compiler || Compiler))._new())._setupClass_(self["@class"]);
 return self}, function($ctx1) {$ctx1.fill(self,"scanFrom:", [aChunkParser], {chunk:chunk}, smalltalk.ClassCategoryReader)})}
 }),
@@ -1162,11 +1162,11 @@ return _st(children)._add_(each);
 } else {
 return _st(others)._add_(each);
 };
-}, function($ctx2) {$ctx2.fill(null, null, {})})});
+}, function($ctx2) {$ctx2.fillBlock([each], {})})});
 _st($1)._do_($2);
 self["@nodes"]=_st(children)._collect_((function(each){
 return smalltalk.withContext(function($ctx2) {
return _st((smalltalk.ClassSorterNode || ClassSorterNode))._on_classes_level_(each,others,_st(_st(self)._level()).__plus((1)));
-}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+}, function($ctx2) {$ctx2.fillBlock([each], {})})}));
 return self}, function($ctx1) {$ctx1.fill(self,"getNodesFrom:", [aCollection], {children:children,others:others}, smalltalk.ClassSorterNode)})}
 }),
 smalltalk.ClassSorterNode);
@@ -1241,9 +1241,9 @@ var self=this;
 return smalltalk.withContext(function($ctx1) { 
_st(aCollection)._add_(_st(self)._theClass());
 _st(_st(_st(self)._nodes())._sorted_((function(a,b){
 return smalltalk.withContext(function($ctx2) {
return _st(_st(_st(a)._theClass())._name()).__lt_eq(_st(_st(b)._theClass())._name());
-}, function($ctx2) {$ctx2.fill(null, null, {})})})))._do_((function(aNode){
+}, function($ctx2) {$ctx2.fillBlock([a,b], {})})})))._do_((function(aNode){
 return smalltalk.withContext(function($ctx2) {
return _st(aNode)._traverseClassesWith_(aCollection);
-}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+}, function($ctx2) {$ctx2.fillBlock([aNode], {})})}));
 return self}, function($ctx1) {$ctx1.fill(self,"traverseClassesWith:", [aCollection], {}, smalltalk.ClassSorterNode)})}
 }),
 smalltalk.ClassSorterNode);

+ 24 - 24
js/Kernel-Classes.js

@@ -61,7 +61,7 @@ return smalltalk.withContext(function($ctx1) { 
var $1;
 result=_st(self)._subclasses();
 _st(_st(self)._subclasses())._do_((function(each){
 return smalltalk.withContext(function($ctx2) {
return _st(result)._addAll_(_st(each)._allSubclasses());
-}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+}, function($ctx2) {$ctx2.fillBlock([each], {})})}));
 $1=result;
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"allSubclasses", [], {result:result}, smalltalk.Behavior)})},
@@ -161,8 +161,8 @@ return smalltalk.withContext(function($ctx1) { 
var $1;
 $1=_st(_st(_st(_st(self)._methodDictionary())._keys())._includes_(_st(aSelector)._asString()))._or_((function(){
 return smalltalk.withContext(function($ctx2) {
return _st(_st(_st(self)._superclass())._notNil())._and_((function(){
 return smalltalk.withContext(function($ctx3) {
return _st(_st(self)._superclass())._canUnderstand_(aSelector);
-}, function($ctx3) {$ctx3.fill(null, null, {})})}));
-}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+}, function($ctx3) {$ctx3.fillBlock([], {})})}));
+}, function($ctx2) {$ctx2.fillBlock([], {})})}));
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"canUnderstand:", [aSelector], {}, smalltalk.Behavior)})},
 args: ["aSelector"],
@@ -369,7 +369,7 @@ try {
 lookupClass=self;
 $1=(function(){
 return smalltalk.withContext(function($ctx2) {
return _st(lookupClass).__eq(nil);
-}, function($ctx2) {$ctx2.fill(null, null, {})})});
+}, function($ctx2) {$ctx2.fillBlock([], {})})});
 $2=(function(){
 return smalltalk.withContext(function($ctx2) {
$3=_st(lookupClass)._includesSelector_(selector);
 if(smalltalk.assert($3)){
@@ -378,7 +378,7 @@ throw $early=[$4];
 };
 lookupClass=_st(lookupClass)._superclass();
 return lookupClass;
-}, function($ctx2) {$ctx2.fill(null, null, {})})});
+}, function($ctx2) {$ctx2.fillBlock([], {})})});
 _st($1)._whileFalse_($2);
 return nil;
 }
@@ -499,7 +499,7 @@ var self=this;
 return smalltalk.withContext(function($ctx1) { 
var $1;
 $1=_st(_st(_st(self)._methodDictionary())._values())._select_((function(each){
 return smalltalk.withContext(function($ctx2) {
return _st(_st(each)._protocol()).__eq(aString);
-}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+}, function($ctx2) {$ctx2.fillBlock([each], {})})}));
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"methodsInProtocol:", [aString], {}, smalltalk.Behavior)})},
 args: ["aString"],
@@ -591,11 +591,11 @@ return smalltalk.withContext(function($ctx1) { 
methodsByCategory=_st((smalltalk
 _st(_st(_st(self)._methodDictionary())._values())._do_((function(m){
 return smalltalk.withContext(function($ctx2) {
return _st(_st(methodsByCategory)._at_ifAbsentPut_(_st(m)._category(),(function(){
 return smalltalk.withContext(function($ctx3) {
return _st((smalltalk.Array || Array))._new();
-}, function($ctx3) {$ctx3.fill(null, null, {})})})))._add_(m);
-}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+}, function($ctx3) {$ctx3.fillBlock([], {})})})))._add_(m);
+}, function($ctx2) {$ctx2.fillBlock([m], {})})}));
 _st(_st(self)._protocols())._do_((function(category){
 return smalltalk.withContext(function($ctx2) {
return _st(aBlock)._value_value_(category,_st(methodsByCategory)._at_(category));
-}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+}, function($ctx2) {$ctx2.fillBlock([category], {})})}));
 return self}, function($ctx1) {$ctx1.fill(self,"protocolsDo:", [aBlock], {methodsByCategory:methodsByCategory}, smalltalk.Behavior)})},
 args: ["aBlock"],
 source: "protocolsDo: aBlock\x0a\x09\x22Execute aBlock for each method category with\x0a\x09its collection of methods in the sort order of category name.\x22\x0a\x0a\x09| methodsByCategory |\x0a\x09methodsByCategory := HashedCollection new.\x0a\x09self methodDictionary values do: [:m |\x0a\x09\x09(methodsByCategory at: m category ifAbsentPut: [Array new])\x0a \x09\x09\x09add: m]. \x0a\x09self protocols do: [:category |\x0a\x09\x09aBlock value: category value: (methodsByCategory at: category)]",
@@ -812,16 +812,16 @@ $3=_st($2)._nextPutAll_("instanceVariableNames: '");
 $3;
 _st(_st(self)._instanceVariableNames())._do_separatedBy_((function(each){
 return smalltalk.withContext(function($ctx3) {
return _st(stream)._nextPutAll_(each);
-}, function($ctx3) {$ctx3.fill(null, null, {})})}),(function(){
+}, function($ctx3) {$ctx3.fillBlock([each], {})})}),(function(){
 return smalltalk.withContext(function($ctx3) {
return _st(stream)._nextPutAll_(" ");
-}, function($ctx3) {$ctx3.fill(null, null, {})})}));
+}, function($ctx3) {$ctx3.fillBlock([], {})})}));
 $4=stream;
 _st($4)._nextPutAll_(_st(_st("'").__comma(_st((smalltalk.String || String))._lf())).__comma(_st((smalltalk.String || String))._tab()));
 _st($4)._nextPutAll_("package: '");
 _st($4)._nextPutAll_(_st(self)._category());
 $5=_st($4)._nextPutAll_("'");
 return $5;
-}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+}, function($ctx2) {$ctx2.fillBlock([stream], {})})}));
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"definition", [], {}, smalltalk.Class)})},
 args: [],
@@ -1024,11 +1024,11 @@ $3=_st($2)._nextPutAll_("instanceVariableNames: '");
 $3;
 _st(_st(self)._instanceVariableNames())._do_separatedBy_((function(each){
 return smalltalk.withContext(function($ctx3) {
return _st(stream)._nextPutAll_(each);
-}, function($ctx3) {$ctx3.fill(null, null, {})})}),(function(){
+}, function($ctx3) {$ctx3.fillBlock([each], {})})}),(function(){
 return smalltalk.withContext(function($ctx3) {
return _st(stream)._nextPutAll_(" ");
-}, function($ctx3) {$ctx3.fill(null, null, {})})}));
+}, function($ctx3) {$ctx3.fillBlock([], {})})}));
 return _st(stream)._nextPutAll_("'");
-}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+}, function($ctx2) {$ctx2.fillBlock([stream], {})})}));
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"definition", [], {}, smalltalk.Metaclass)})},
 args: [],
@@ -1254,10 +1254,10 @@ newClass=_st(self)._addSubclassOf_named_instanceVariableNames_package_(_st(aClas
 _st(self)._setupClass_(newClass);
 _st(_st(_st(aClass)._methodDictionary())._values())._do_((function(each){
 return smalltalk.withContext(function($ctx2) {
return _st(_st((smalltalk.Compiler || Compiler))._new())._install_forClass_category_(_st(each)._source(),newClass,_st(each)._category());
-}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+}, function($ctx2) {$ctx2.fillBlock([each], {})})}));
 _st(_st(_st(_st(aClass)._class())._methodDictionary())._values())._do_((function(each){
 return smalltalk.withContext(function($ctx2) {
return _st(_st((smalltalk.Compiler || Compiler))._new())._install_forClass_category_(_st(each)._source(),_st(newClass)._class(),_st(each)._category());
-}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+}, function($ctx2) {$ctx2.fillBlock([each], {})})}));
 _st(self)._setupClass_(newClass);
 $1=newClass;
 return $1;
@@ -1279,7 +1279,7 @@ var self=this;
 return smalltalk.withContext(function($ctx1) { 
var $1;
 $1=_st(_st(aString)._tokenize_(" "))._reject_((function(each){
 return smalltalk.withContext(function($ctx2) {
return _st(each)._isEmpty();
-}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+}, function($ctx2) {$ctx2.fillBlock([each], {})})}));
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"instanceVariableNamesFor:", [aString], {}, smalltalk.ClassBuilder)})},
 args: ["aString"],
@@ -1445,9 +1445,9 @@ return smalltalk.withContext(function($ctx1) { 
_st((function(){
 return smalltalk.withContext(function($ctx2) {
chunk=_st(aChunkParser)._nextChunk();
 chunk;
 return _st(chunk)._isEmpty();
-}, function($ctx2) {$ctx2.fill(null, null, {})})}))._whileFalse_((function(){
+}, function($ctx2) {$ctx2.fillBlock([], {})})}))._whileFalse_((function(){
 return smalltalk.withContext(function($ctx2) {
return _st(self)._compileMethod_(chunk);
-}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+}, function($ctx2) {$ctx2.fillBlock([], {})})}));
 _st(_st((smalltalk.Compiler || Compiler))._new())._setupClass_(self["@class"]);
 return self}, function($ctx1) {$ctx1.fill(self,"scanFrom:", [aChunkParser], {chunk:chunk}, smalltalk.ClassCategoryReader)})},
 args: ["aChunkParser"],
@@ -1554,11 +1554,11 @@ return _st(children)._add_(each);
 } else {
 return _st(others)._add_(each);
 };
-}, function($ctx2) {$ctx2.fill(null, null, {})})});
+}, function($ctx2) {$ctx2.fillBlock([each], {})})});
 _st($1)._do_($2);
 self["@nodes"]=_st(children)._collect_((function(each){
 return smalltalk.withContext(function($ctx2) {
return _st((smalltalk.ClassSorterNode || ClassSorterNode))._on_classes_level_(each,others,_st(_st(self)._level()).__plus((1)));
-}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+}, function($ctx2) {$ctx2.fillBlock([each], {})})}));
 return self}, function($ctx1) {$ctx1.fill(self,"getNodesFrom:", [aCollection], {children:children,others:others}, smalltalk.ClassSorterNode)})},
 args: ["aCollection"],
 source: "getNodesFrom: aCollection\x0a\x09| children others |\x0a\x09children := #().\x0a\x09others := #().\x0a\x09aCollection do: [:each |\x0a\x09\x09(each superclass = self theClass)\x0a\x09\x09\x09ifTrue: [children add: each]\x0a\x09\x09\x09ifFalse: [others add: each]].\x0a\x09nodes:= children collect: [:each |\x0a\x09\x09ClassSorterNode on: each classes: others level: self level + 1]",
@@ -1663,9 +1663,9 @@ var self=this;
 return smalltalk.withContext(function($ctx1) { 
_st(aCollection)._add_(_st(self)._theClass());
 _st(_st(_st(self)._nodes())._sorted_((function(a,b){
 return smalltalk.withContext(function($ctx2) {
return _st(_st(_st(a)._theClass())._name()).__lt_eq(_st(_st(b)._theClass())._name());
-}, function($ctx2) {$ctx2.fill(null, null, {})})})))._do_((function(aNode){
+}, function($ctx2) {$ctx2.fillBlock([a,b], {})})})))._do_((function(aNode){
 return smalltalk.withContext(function($ctx2) {
return _st(aNode)._traverseClassesWith_(aCollection);
-}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+}, function($ctx2) {$ctx2.fillBlock([aNode], {})})}));
 return self}, function($ctx1) {$ctx1.fill(self,"traverseClassesWith:", [aCollection], {}, smalltalk.ClassSorterNode)})},
 args: ["aCollection"],
 source: "traverseClassesWith: aCollection\x0a\x09\x22sort classes alphabetically Issue #143\x22\x0a\x0a\x09aCollection add: self theClass.\x0a\x09(self nodes sorted: [:a :b | a theClass name <= b theClass name ]) do: [:aNode |\x0a\x09\x09aNode traverseClassesWith: aCollection ].",

+ 72 - 72
js/Kernel-Collections.deploy.js

@@ -10,8 +10,8 @@ return smalltalk.withContext(function($ctx1) { 
var $1;
 $1=_st(_st(_st(self)._class()).__eq(_st(anAssociation)._class()))._and_((function(){
 return smalltalk.withContext(function($ctx2) {
return _st(_st(_st(self)._key()).__eq(_st(anAssociation)._key()))._and_((function(){
 return smalltalk.withContext(function($ctx3) {
return _st(_st(self)._value()).__eq(_st(anAssociation)._value());
-}, function($ctx3) {$ctx3.fill(null, null, {})})}));
-}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+}, function($ctx3) {$ctx3.fillBlock([], {})})}));
+}, function($ctx2) {$ctx2.fillBlock([], {})})}));
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"=", [anAssociation], {}, smalltalk.Association)})}
 }),
@@ -50,7 +50,7 @@ var self=this;
 return smalltalk.withContext(function($ctx1) { 
var $1;
 $1=_st((smalltalk.String || String))._streamContents_((function(aStream){
 return smalltalk.withContext(function($ctx2) {
return _st(self)._storeOn_(aStream);
-}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+}, function($ctx2) {$ctx2.fillBlock([aStream], {})})}));
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"printString", [], {}, smalltalk.Association)})}
 }),
@@ -149,7 +149,7 @@ var self=this;
 return smalltalk.withContext(function($ctx1) { 
var $1;
 _st(aCollection)._do_((function(each){
 return smalltalk.withContext(function($ctx2) {
return _st(self)._add_(each);
-}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+}, function($ctx2) {$ctx2.fillBlock([each], {})})}));
 $1=aCollection;
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"addAll:", [aCollection], {}, smalltalk.Collection)})}
@@ -178,7 +178,7 @@ var self=this;
 return smalltalk.withContext(function($ctx1) { 
var $1;
 $1=_st(_st(self)._asArray())._collect_((function(each){
 return smalltalk.withContext(function($ctx2) {
return _st(each)._asJSON();
-}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+}, function($ctx2) {$ctx2.fillBlock([each], {})})}));
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"asJSON", [], {}, smalltalk.Collection)})}
 }),
@@ -221,7 +221,7 @@ return smalltalk.withContext(function($ctx1) { 
var $1;
 stream=_st(_st(_st(self)._class())._new())._writeStream();
 _st(self)._do_((function(each){
 return smalltalk.withContext(function($ctx2) {
return _st(stream)._nextPut_(_st(aBlock)._value_(each));
-}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+}, function($ctx2) {$ctx2.fillBlock([each], {})})}));
 $1=_st(stream)._contents();
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"collect:", [aBlock], {stream:stream}, smalltalk.Collection)})}
@@ -269,7 +269,7 @@ var self=this;
 return smalltalk.withContext(function($ctx1) { 
var $1;
 $1=_st(self)._reject_((function(each){
 return smalltalk.withContext(function($ctx2) {
return _st(aCollection)._includes_(each);
-}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+}, function($ctx2) {$ctx2.fillBlock([each], {})})}));
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"copyWithoutAll:", [aCollection], {}, smalltalk.Collection)})}
 }),
@@ -284,7 +284,7 @@ var self=this;
 return smalltalk.withContext(function($ctx1) { 
var $1;
 $1=_st(self)._detect_ifNone_(aBlock,(function(){
 return smalltalk.withContext(function($ctx2) {
return _st(self)._errorNotFound();
-}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+}, function($ctx2) {$ctx2.fillBlock([], {})})}));
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"detect:", [aBlock], {}, smalltalk.Collection)})}
 }),
@@ -336,7 +336,7 @@ first;
 _st(anotherBlock)._value();
 };
 return _st(aBlock)._value_(each);
-}, function($ctx2) {$ctx2.fill(null, null, {})})});
+}, function($ctx2) {$ctx2.fillBlock([each], {})})});
 _st($1)._do_($2);
 return self}, function($ctx1) {$ctx1.fill(self,"do:separatedBy:", [aBlock,anotherBlock], {first:first}, smalltalk.Collection)})}
 }),
@@ -413,7 +413,7 @@ result=anObject;
 _st(self)._do_((function(each){
 return smalltalk.withContext(function($ctx2) {
result=_st(aBlock)._value_value_(result,each);
 return result;
-}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+}, function($ctx2) {$ctx2.fillBlock([each], {})})}));
 $1=result;
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"inject:into:", [anObject,aBlock], {result:result}, smalltalk.Collection)})}
@@ -434,11 +434,11 @@ $1=aCollection;
 $2=(function(each){
 return smalltalk.withContext(function($ctx2) {
$3=_st(_st(set)._includes_(each))._and_((function(){
 return smalltalk.withContext(function($ctx3) {
return _st(_st(outputSet)._includes_(each))._not();
-}, function($ctx3) {$ctx3.fill(null, null, {})})}));
+}, function($ctx3) {$ctx3.fillBlock([], {})})}));
 if(smalltalk.assert($3)){
 return _st(outputSet)._add_(each);
 };
-}, function($ctx2) {$ctx2.fill(null, null, {})})});
+}, function($ctx2) {$ctx2.fillBlock([each], {})})});
 _st($1)._do_($2);
 $4=_st(_st(self)._class())._withAll_(_st(outputSet)._asArray());
 return $4;
@@ -488,7 +488,7 @@ if(smalltalk.assert($3)){
 tally=_st(tally).__plus((1));
 return tally;
 };
-}, function($ctx2) {$ctx2.fill(null, null, {})})});
+}, function($ctx2) {$ctx2.fillBlock([each], {})})});
 _st($1)._do_($2);
 $4=tally;
 return $4;
@@ -507,11 +507,11 @@ $1=_st((smalltalk.String || String))._streamContents_((function(aStream){
 return smalltalk.withContext(function($ctx2) {
_st(aStream)._nextPutAll_(_st(smalltalk.Object.fn.prototype._printString.apply(_st(self), [])).__comma(" ("));
 _st(self)._do_separatedBy_((function(each){
 return smalltalk.withContext(function($ctx3) {
return _st(aStream)._nextPutAll_(_st(each)._printString());
-}, function($ctx3) {$ctx3.fill(null, null, {})})}),(function(){
+}, function($ctx3) {$ctx3.fillBlock([each], {})})}),(function(){
 return smalltalk.withContext(function($ctx3) {
return _st(aStream)._nextPutAll_(" ");
-}, function($ctx3) {$ctx3.fill(null, null, {})})}));
+}, function($ctx3) {$ctx3.fillBlock([], {})})}));
 return _st(aStream)._nextPutAll_(")");
-}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+}, function($ctx2) {$ctx2.fillBlock([aStream], {})})}));
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"printString", [], {}, smalltalk.Collection)})}
 }),
@@ -539,7 +539,7 @@ var self=this;
 return smalltalk.withContext(function($ctx1) { 
var $1;
 $1=_st(self)._select_((function(each){
 return smalltalk.withContext(function($ctx2) {
return _st(_st(aBlock)._value_(each)).__eq(false);
-}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+}, function($ctx2) {$ctx2.fillBlock([each], {})})}));
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"reject:", [aBlock], {}, smalltalk.Collection)})}
 }),
@@ -554,7 +554,7 @@ var self=this;
 return smalltalk.withContext(function($ctx1) { 
var $1;
 $1=_st(self)._remove_ifAbsent_(anObject,(function(){
 return smalltalk.withContext(function($ctx2) {
return _st(self)._errorNotFound();
-}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+}, function($ctx2) {$ctx2.fillBlock([], {})})}));
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"remove:", [anObject], {}, smalltalk.Collection)})}
 }),
@@ -586,7 +586,7 @@ return smalltalk.withContext(function($ctx2) {
$3=_st(aBlock)._value_(each);
 if(smalltalk.assert($3)){
 return _st(stream)._nextPut_(each);
 };
-}, function($ctx2) {$ctx2.fill(null, null, {})})});
+}, function($ctx2) {$ctx2.fillBlock([each], {})})});
 _st($1)._do_($2);
 $4=_st(stream)._contents();
 return $4;
@@ -821,7 +821,7 @@ return smalltalk.withContext(function($ctx1) { 
var $1;
 c=_st(_st(self)._class())._new();
 _st(self)._keysAndValuesDo_((function(key,value){
 return smalltalk.withContext(function($ctx2) {
return _st(c)._at_put_(key,_st(value)._asJSON());
-}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+}, function($ctx2) {$ctx2.fillBlock([key,value], {})})}));
 $1=c;
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"asJSON", [], {c:c}, smalltalk.HashedCollection)})}
@@ -839,7 +839,7 @@ return smalltalk.withContext(function($ctx1) { 
var $1;
 associations=[];
 _st(_st(self)._keys())._do_((function(each){
 return smalltalk.withContext(function($ctx2) {
return _st(associations)._add_(_st((smalltalk.Association || Association))._key_value_(each,_st(self)._at_(each)));
-}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+}, function($ctx2) {$ctx2.fillBlock([each], {})})}));
 $1=associations;
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"associations", [], {associations:associations}, smalltalk.HashedCollection)})}
@@ -866,7 +866,7 @@ var self=this;
 return smalltalk.withContext(function($ctx1) { 
var $1;
 $1=_st(self)._at_ifAbsent_(aKey,(function(){
 return smalltalk.withContext(function($ctx2) {
return _st(self)._errorNotFound();
-}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+}, function($ctx2) {$ctx2.fillBlock([], {})})}));
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"at:", [aKey], {}, smalltalk.HashedCollection)})}
 }),
@@ -882,7 +882,7 @@ return smalltalk.withContext(function($ctx1) { 
var $2,$1;
 $2=_st(self)._includesKey_(aKey);
 $1=_st($2)._ifTrue_ifFalse_((function(){
 return smalltalk.withContext(function($ctx2) {
return _st(self)._basicAt_(aKey);
-}, function($ctx2) {$ctx2.fill(null, null, {})})}),aBlock);
+}, function($ctx2) {$ctx2.fillBlock([], {})})}),aBlock);
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"at:ifAbsent:", [aKey,aBlock], {}, smalltalk.HashedCollection)})}
 }),
@@ -897,7 +897,7 @@ var self=this;
 return smalltalk.withContext(function($ctx1) { 
var $1;
 $1=_st(self)._at_ifAbsent_(aKey,(function(){
 return smalltalk.withContext(function($ctx2) {
return _st(self)._at_put_(aKey,_st(aBlock)._value());
-}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+}, function($ctx2) {$ctx2.fillBlock([], {})})}));
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"at:ifAbsentPut:", [aKey,aBlock], {}, smalltalk.HashedCollection)})}
 }),
@@ -931,7 +931,7 @@ return smalltalk.withContext(function($ctx1) { 
var $2,$1;
 $2=_st(self)._includesKey_(aKey);
 $1=_st($2)._ifTrue_ifFalse_((function(){
 return smalltalk.withContext(function($ctx2) {
return _st(aBlock)._value_(_st(self)._at_(aKey));
-}, function($ctx2) {$ctx2.fill(null, null, {})})}),anotherBlock);
+}, function($ctx2) {$ctx2.fillBlock([], {})})}),anotherBlock);
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"at:ifPresent:ifAbsent:", [aKey,aBlock,anotherBlock], {}, smalltalk.HashedCollection)})}
 }),
@@ -961,7 +961,7 @@ return smalltalk.withContext(function($ctx1) { 
var $1;
 newDict=_st(_st(self)._class())._new();
 _st(self)._keysAndValuesDo_((function(key,value){
 return smalltalk.withContext(function($ctx2) {
return _st(newDict)._at_put_(key,_st(aBlock)._value_(value));
-}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+}, function($ctx2) {$ctx2.fillBlock([key,value], {})})}));
 $1=newDict;
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"collect:", [aBlock], {newDict:newDict}, smalltalk.HashedCollection)})}
@@ -990,7 +990,7 @@ return smalltalk.withContext(function($ctx1) { 
var $1;
 copy=_st(_st(self)._class())._new();
 _st(self)._associationsDo_((function(each){
 return smalltalk.withContext(function($ctx2) {
return _st(copy)._at_put_(_st(each)._key(),_st(_st(each)._value())._deepCopy());
-}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+}, function($ctx2) {$ctx2.fillBlock([each], {})})}));
 $1=copy;
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"deepCopy", [], {copy:copy}, smalltalk.HashedCollection)})}
@@ -1073,7 +1073,7 @@ fn: function (aBlock){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
_st(self)._associationsDo_((function(each){
 return smalltalk.withContext(function($ctx2) {
return _st(aBlock)._value_value_(_st(each)._key(),_st(each)._value());
-}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+}, function($ctx2) {$ctx2.fillBlock([each], {})})}));
 return self}, function($ctx1) {$ctx1.fill(self,"keysAndValuesDo:", [aBlock], {}, smalltalk.HashedCollection)})}
 }),
 smalltalk.HashedCollection);
@@ -1089,11 +1089,11 @@ $1=_st((smalltalk.String || String))._streamContents_((function(aStream){
 return smalltalk.withContext(function($ctx2) {
_st(aStream)._nextPutAll_(_st(_st("a ").__comma(_st(_st(self)._class())._name())).__comma("("));
 _st(_st(self)._associations())._do_separatedBy_((function(each){
 return smalltalk.withContext(function($ctx3) {
return _st(each)._storeOn_(aStream);
-}, function($ctx3) {$ctx3.fill(null, null, {})})}),(function(){
+}, function($ctx3) {$ctx3.fillBlock([each], {})})}),(function(){
 return smalltalk.withContext(function($ctx3) {
return _st(aStream)._nextPutAll_(" , ");
-}, function($ctx3) {$ctx3.fill(null, null, {})})}));
+}, function($ctx3) {$ctx3.fillBlock([], {})})}));
 return _st(aStream)._nextPutAll_(")");
-}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+}, function($ctx2) {$ctx2.fillBlock([aStream], {})})}));
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"printString", [], {}, smalltalk.HashedCollection)})}
 }),
@@ -1158,7 +1158,7 @@ return smalltalk.withContext(function($ctx2) {
$3=_st(aBlock)._value_(value);
 if(smalltalk.assert($3)){
 return _st(newDict)._at_put_(key,value);
 };
-}, function($ctx2) {$ctx2.fill(null, null, {})})});
+}, function($ctx2) {$ctx2.fillBlock([key,value], {})})});
 _st($1)._keysAndValuesDo_($2);
 $4=newDict;
 return $4;
@@ -1177,7 +1177,7 @@ return smalltalk.withContext(function($ctx1) { 
var $1;
 copy=_st(_st(self)._class())._new();
 _st(self)._associationsDo_((function(each){
 return smalltalk.withContext(function($ctx2) {
return _st(copy)._at_put_(_st(each)._key(),_st(each)._value());
-}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+}, function($ctx2) {$ctx2.fillBlock([each], {})})}));
 $1=copy;
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"shallowCopy", [], {copy:copy}, smalltalk.HashedCollection)})}
@@ -1206,9 +1206,9 @@ var self=this;
 return smalltalk.withContext(function($ctx1) { 
_st(aStream)._nextPutAll_("#{");
 _st(_st(self)._associations())._do_separatedBy_((function(each){
 return smalltalk.withContext(function($ctx2) {
return _st(each)._storeOn_(aStream);
-}, function($ctx2) {$ctx2.fill(null, null, {})})}),(function(){
+}, function($ctx2) {$ctx2.fillBlock([each], {})})}),(function(){
 return smalltalk.withContext(function($ctx2) {
return _st(aStream)._nextPutAll_(". ");
-}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+}, function($ctx2) {$ctx2.fillBlock([], {})})}));
 _st(aStream)._nextPutAll_("}");
 return self}, function($ctx1) {$ctx1.fill(self,"storeOn:", [aStream], {}, smalltalk.HashedCollection)})}
 }),
@@ -1223,7 +1223,7 @@ var self=this;
 return smalltalk.withContext(function($ctx1) { 
var $1;
 $1=_st(_st(self)._keys())._collect_((function(each){
 return smalltalk.withContext(function($ctx2) {
return _st(self)._at_(each);
-}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+}, function($ctx2) {$ctx2.fillBlock([each], {})})}));
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"values", [], {}, smalltalk.HashedCollection)})}
 }),
@@ -1241,7 +1241,7 @@ return smalltalk.withContext(function($ctx1) { 
var $1;
 dict=_st(self)._new();
 _st(aCollection)._do_((function(each){
 return smalltalk.withContext(function($ctx2) {
return _st(dict)._add_(each);
-}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+}, function($ctx2) {$ctx2.fillBlock([each], {})})}));
 $1=dict;
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"fromPairs:", [aCollection], {dict:dict}, smalltalk.HashedCollection.klass)})}
@@ -1353,9 +1353,9 @@ var self=this;
 return smalltalk.withContext(function($ctx1) { 
var $1;
 $1=_st(_st(_st(self)._associations())._detect_ifNone_((function(k,v){
 return smalltalk.withContext(function($ctx2) {
return _st(v).__eq_eq(anObject);
-}, function($ctx2) {$ctx2.fill(null, null, {})})}),(function(){
+}, function($ctx2) {$ctx2.fillBlock([k,v], {})})}),(function(){
 return smalltalk.withContext(function($ctx2) {
return _st(self)._error_("Not found");
-}, function($ctx2) {$ctx2.fill(null, null, {})})})))._key();
+}, function($ctx2) {$ctx2.fillBlock([], {})})})))._key();
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"keyAtValue:", [anObject], {}, smalltalk.Dictionary)})}
 }),
@@ -1435,7 +1435,7 @@ var $early={};
 try {
 $1=_st(_st(_st(self)._class()).__eq(_st(aCollection)._class()))._and_((function(){
 return smalltalk.withContext(function($ctx2) {
return _st(_st(self)._size()).__eq(_st(aCollection)._size());
-}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+}, function($ctx2) {$ctx2.fillBlock([], {})})}));
 if(! smalltalk.assert($1)){
 return false;
 };
@@ -1445,7 +1445,7 @@ return smalltalk.withContext(function($ctx2) {
$4=_st(_st(aCollection)._at_(i)).
 if(! smalltalk.assert($4)){
 throw $early=[false];
 };
-}, function($ctx2) {$ctx2.fill(null, null, {})})});
+}, function($ctx2) {$ctx2.fillBlock([each,i], {})})});
 _st($2)._withIndexDo_($3);
 return true;
 }
@@ -1500,7 +1500,7 @@ var self=this;
 return smalltalk.withContext(function($ctx1) { 
var $1;
 $1=_st(self)._at_ifAbsent_(anIndex,(function(){
 return smalltalk.withContext(function($ctx2) {
return _st(self)._errorNotFound();
-}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+}, function($ctx2) {$ctx2.fillBlock([], {})})}));
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"at:", [anIndex], {}, smalltalk.SequenceableCollection)})}
 }),
@@ -1553,7 +1553,7 @@ range=_st(anIndex)._to_(anotherIndex);
 newCollection=_st(_st(self)._class())._new_(_st(range)._size());
 _st(range)._withIndexDo_((function(each,i){
 return smalltalk.withContext(function($ctx2) {
return _st(newCollection)._at_put_(i,_st(self)._at_(each));
-}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+}, function($ctx2) {$ctx2.fillBlock([each,i], {})})}));
 $1=newCollection;
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"copyFrom:to:", [anIndex,anotherIndex], {range:range,newCollection:newCollection}, smalltalk.SequenceableCollection)})}
@@ -1571,7 +1571,7 @@ return smalltalk.withContext(function($ctx1) { 
var $1;
 newCollection=_st(_st(self)._class())._new_(_st(self)._size());
 _st(self)._withIndexDo_((function(each,index){
 return smalltalk.withContext(function($ctx2) {
return _st(newCollection)._at_put_(index,_st(each)._deepCopy());
-}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+}, function($ctx2) {$ctx2.fillBlock([each,index], {})})}));
 $1=newCollection;
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"deepCopy", [], {newCollection:newCollection}, smalltalk.SequenceableCollection)})}
@@ -1626,7 +1626,7 @@ var self=this;
 return smalltalk.withContext(function($ctx1) { 
var $1;
 $1=_st(self)._indexOf_ifAbsent_(anObject,(function(){
 return smalltalk.withContext(function($ctx2) {
return _st(self)._errorNotFound();
-}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+}, function($ctx2) {$ctx2.fillBlock([], {})})}));
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"indexOf:", [anObject], {}, smalltalk.SequenceableCollection)})}
 }),
@@ -1657,7 +1657,7 @@ var self=this;
 return smalltalk.withContext(function($ctx1) { 
var $1;
 $1=_st(self)._indexOf_startingAt_ifAbsent_(anObject,start,(function(){
 return smalltalk.withContext(function($ctx2) {
return (0);
-}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+}, function($ctx2) {$ctx2.fillBlock([], {})})}));
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"indexOf:startingAt:", [anObject,start], {}, smalltalk.SequenceableCollection)})}
 }),
@@ -1738,7 +1738,7 @@ return smalltalk.withContext(function($ctx1) { 
var $1;
 newCollection=_st(_st(self)._class())._new_(_st(self)._size());
 _st(self)._withIndexDo_((function(each,index){
 return smalltalk.withContext(function($ctx2) {
return _st(newCollection)._at_put_(index,each);
-}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+}, function($ctx2) {$ctx2.fillBlock([each,index], {})})}));
 $1=newCollection;
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"shallowCopy", [], {newCollection:newCollection}, smalltalk.SequenceableCollection)})}
@@ -1792,7 +1792,7 @@ var self=this;
 return smalltalk.withContext(function($ctx1) { 
var $1;
 $1=_st(_st("[").__comma(_st(_st(self)._collect_((function(each){
 return smalltalk.withContext(function($ctx2) {
return _st(each)._asJavascript();
-}, function($ctx2) {$ctx2.fill(null, null, {})})})))._join_(", "))).__comma("]");
+}, function($ctx2) {$ctx2.fillBlock([each], {})})})))._join_(", "))).__comma("]");
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"asJavascript", [], {}, smalltalk.Array)})}
 }),
@@ -2017,7 +2017,7 @@ _st(aCollection)._do_((function(each){
 return smalltalk.withContext(function($ctx2) {
_st(instance)._at_put_(index,each);
 index=_st(index).__plus((1));
 return index;
-}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+}, function($ctx2) {$ctx2.fillBlock([each], {})})}));
 $1=instance;
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"withAll:", [aCollection], {instance:instance,index:index}, smalltalk.Array.klass)})}
@@ -2471,10 +2471,10 @@ return smalltalk.withContext(function($ctx1) { 
var $1;
 $1=_st((smalltalk.String || String))._streamContents_((function(stream){
 return smalltalk.withContext(function($ctx2) {
return _st(aCollection)._do_separatedBy_((function(each){
 return smalltalk.withContext(function($ctx3) {
return _st(stream)._nextPutAll_(_st(each)._asString());
-}, function($ctx3) {$ctx3.fill(null, null, {})})}),(function(){
+}, function($ctx3) {$ctx3.fillBlock([each], {})})}),(function(){
 return smalltalk.withContext(function($ctx3) {
return _st(stream)._nextPutAll_(self);
-}, function($ctx3) {$ctx3.fill(null, null, {})})}));
-}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+}, function($ctx3) {$ctx3.fillBlock([], {})})}));
+}, function($ctx2) {$ctx2.fillBlock([stream], {})})}));
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"join:", [aCollection], {}, smalltalk.String)})}
 }),
@@ -2498,11 +2498,11 @@ lf=_st((smalltalk.String || String))._lf();
 nextLF=_st(self)._indexOf_startingAt_(lf,(1));
 $1=(function(){
 return smalltalk.withContext(function($ctx2) {
return _st(start).__lt_eq(sz);
-}, function($ctx2) {$ctx2.fill(null, null, {})})});
+}, function($ctx2) {$ctx2.fillBlock([], {})})});
 $2=(function(){
 return smalltalk.withContext(function($ctx2) {
$3=_st(_st(nextLF).__eq((0)))._and_((function(){
 return smalltalk.withContext(function($ctx3) {
return _st(nextCR).__eq((0));
-}, function($ctx3) {$ctx3.fill(null, null, {})})}));
+}, function($ctx3) {$ctx3.fillBlock([], {})})}));
 if(smalltalk.assert($3)){
 _st(aBlock)._value_value_value_(start,sz,sz);
 $4=self;
@@ -2511,15 +2511,15 @@ throw $early=[$4];
 $5=_st(_st(nextCR).__eq((0)))._or_((function(){
 return smalltalk.withContext(function($ctx3) {
return _st(_st((0)).__lt(nextLF))._and_((function(){
 return smalltalk.withContext(function($ctx4) {
return _st(nextLF).__lt(nextCR);
-}, function($ctx4) {$ctx4.fill(null, null, {})})}));
-}, function($ctx3) {$ctx3.fill(null, null, {})})}));
+}, function($ctx4) {$ctx4.fillBlock([], {})})}));
+}, function($ctx3) {$ctx3.fillBlock([], {})})}));
 $6=(function(){
 return smalltalk.withContext(function($ctx3) {
_st(aBlock)._value_value_value_(start,_st(nextLF).__minus((1)),nextLF);
 start=_st((1)).__plus(nextLF);
 start;
 nextLF=_st(self)._indexOf_startingAt_(lf,start);
 return nextLF;
-}, function($ctx3) {$ctx3.fill(null, null, {})})});
+}, function($ctx3) {$ctx3.fillBlock([], {})})});
 $7=(function(){
 return smalltalk.withContext(function($ctx3) {
$8=_st(_st((1)).__plus(nextCR)).__eq(nextLF);
 if(smalltalk.assert($8)){
@@ -2537,9 +2537,9 @@ start;
 nextCR=_st(self)._indexOf_startingAt_(cr,start);
 return nextCR;
 };
-}, function($ctx3) {$ctx3.fill(null, null, {})})});
+}, function($ctx3) {$ctx3.fillBlock([], {})})});
 return _st($5)._ifTrue_ifFalse_($6,$7);
-}, function($ctx2) {$ctx2.fill(null, null, {})})});
+}, function($ctx2) {$ctx2.fillBlock([], {})})});
 _st($1)._whileTrue_($2);
 return self}
 catch(e) {if(e===$early)return e[0]; throw e}
@@ -2566,7 +2566,7 @@ if(smalltalk.assert($3)){
 $4=_st(self)._copyFrom_to_(start,endWithoutDelimiters);
 throw $early=[$4];
 };
-}, function($ctx2) {$ctx2.fill(null, null, {})})});
+}, function($ctx2) {$ctx2.fillBlock([start,endWithoutDelimiters,end], {})})});
 _st($1)._lineIndicesDo_($2);
 return nil;
 }
@@ -2586,7 +2586,7 @@ return smalltalk.withContext(function($ctx1) { 
var $1;
 lines=_st((smalltalk.Array || Array))._new();
 _st(self)._linesDo_((function(aLine){
 return smalltalk.withContext(function($ctx2) {
return _st(lines)._add_(aLine);
-}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+}, function($ctx2) {$ctx2.fillBlock([aLine], {})})}));
 $1=lines;
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"lines", [], {lines:lines}, smalltalk.String)})}
@@ -2601,7 +2601,7 @@ fn: function (aBlock){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
_st(self)._lineIndicesDo_((function(start,endWithoutDelimiters,end){
 return smalltalk.withContext(function($ctx2) {
return _st(aBlock)._value_(_st(self)._copyFrom_to_(start,endWithoutDelimiters));
-}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+}, function($ctx2) {$ctx2.fillBlock([start,endWithoutDelimiters,end], {})})}));
 return self}, function($ctx1) {$ctx1.fill(self,"linesDo:", [aBlock], {}, smalltalk.String)})}
 }),
 smalltalk.String);
@@ -3297,7 +3297,7 @@ var self=this;
 return smalltalk.withContext(function($ctx1) { 
var $1;
 $1=_st(_st(_st(self)._class()).__eq(_st(aCollection)._class()))._and_((function(){
 return smalltalk.withContext(function($ctx2) {
return _st(self["@elements"]).__eq(_st(aCollection)._asArray());
-}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+}, function($ctx2) {$ctx2.fillBlock([], {})})}));
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"=", [aCollection], {}, smalltalk.Set)})}
 }),
@@ -3411,7 +3411,7 @@ return smalltalk.withContext(function($ctx2) {
$3=_st(aBlock)._value_(each);
 if(smalltalk.assert($3)){
 return _st(collection)._add_(each);
 };
-}, function($ctx2) {$ctx2.fill(null, null, {})})});
+}, function($ctx2) {$ctx2.fillBlock([each], {})})});
 _st($1)._do_($2);
 $4=collection;
 return $4;
@@ -3455,7 +3455,7 @@ var self=this;
 return smalltalk.withContext(function($ctx1) { 
var $1;
 $1=_st(self)._frontIfAbsent_((function(){
 return smalltalk.withContext(function($ctx2) {
return _st(self)._error_("Cannot read from empty Queue.");
-}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+}, function($ctx2) {$ctx2.fillBlock([], {})})}));
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"front", [], {}, smalltalk.Queue)})}
 }),
@@ -3485,7 +3485,7 @@ self["@readIndex"];
 };
 $7=_st(aBlock)._value();
 throw $early=[$7];
-}, function($ctx3) {$ctx3.fill(null, null, {})})});
+}, function($ctx3) {$ctx3.fillBlock([], {})})});
 _st($4)._ifTrue_($5);
 self["@read"]=self["@write"];
 self["@read"];
@@ -3494,7 +3494,7 @@ self["@readIndex"];
 self["@write"]=_st((smalltalk.OrderedCollection || OrderedCollection))._new();
 self["@write"];
 return _st(self["@read"])._first();
-}, function($ctx2) {$ctx2.fill(null, null, {})})});
+}, function($ctx2) {$ctx2.fillBlock([], {})})});
 result=_st($1)._at_ifAbsent_($2,$3);
 _st(self["@read"])._at_put_(self["@readIndex"],nil);
 self["@readIndex"]=_st(self["@readIndex"]).__plus((1));
@@ -3653,9 +3653,9 @@ fn: function (aBlock){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
_st((function(){
 return smalltalk.withContext(function($ctx2) {
return _st(self)._atEnd();
-}, function($ctx2) {$ctx2.fill(null, null, {})})}))._whileFalse_((function(){
+}, function($ctx2) {$ctx2.fillBlock([], {})})}))._whileFalse_((function(){
 return smalltalk.withContext(function($ctx2) {
return _st(aBlock)._value_(_st(self)._next());
-}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+}, function($ctx2) {$ctx2.fillBlock([], {})})}));
 return self}, function($ctx1) {$ctx1.fill(self,"do:", [aBlock], {}, smalltalk.Stream)})}
 }),
 smalltalk.Stream);
@@ -3717,7 +3717,7 @@ return smalltalk.withContext(function($ctx2) {
$3=_st(self)._atEnd();
 if(! smalltalk.assert($3)){
 return _st(tempCollection)._add_(_st(self)._next());
 };
-}, function($ctx2) {$ctx2.fill(null, null, {})})});
+}, function($ctx2) {$ctx2.fillBlock([], {})})});
 _st($1)._timesRepeat_($2);
 $4=tempCollection;
 return $4;
@@ -3746,7 +3746,7 @@ fn: function (aCollection){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
_st(aCollection)._do_((function(each){
 return smalltalk.withContext(function($ctx2) {
return _st(self)._nextPut_(each);
-}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+}, function($ctx2) {$ctx2.fillBlock([each], {})})}));
 return self}, function($ctx1) {$ctx1.fill(self,"nextPutAll:", [aCollection], {}, smalltalk.Stream)})}
 }),
 smalltalk.Stream);
@@ -3965,7 +3965,7 @@ if(! smalltalk.assert($3)){
 tempCollection=_st(tempCollection).__comma(_st(self)._next());
 return tempCollection;
 };
-}, function($ctx2) {$ctx2.fill(null, null, {})})});
+}, function($ctx2) {$ctx2.fillBlock([], {})})});
 _st($1)._timesRepeat_($2);
 $4=tempCollection;
 return $4;

+ 72 - 72
js/Kernel-Collections.js

@@ -11,8 +11,8 @@ return smalltalk.withContext(function($ctx1) { 
var $1;
 $1=_st(_st(_st(self)._class()).__eq(_st(anAssociation)._class()))._and_((function(){
 return smalltalk.withContext(function($ctx2) {
return _st(_st(_st(self)._key()).__eq(_st(anAssociation)._key()))._and_((function(){
 return smalltalk.withContext(function($ctx3) {
return _st(_st(self)._value()).__eq(_st(anAssociation)._value());
-}, function($ctx3) {$ctx3.fill(null, null, {})})}));
-}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+}, function($ctx3) {$ctx3.fillBlock([], {})})}));
+}, function($ctx2) {$ctx2.fillBlock([], {})})}));
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"=", [anAssociation], {}, smalltalk.Association)})},
 args: ["anAssociation"],
@@ -66,7 +66,7 @@ var self=this;
 return smalltalk.withContext(function($ctx1) { 
var $1;
 $1=_st((smalltalk.String || String))._streamContents_((function(aStream){
 return smalltalk.withContext(function($ctx2) {
return _st(self)._storeOn_(aStream);
-}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+}, function($ctx2) {$ctx2.fillBlock([aStream], {})})}));
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"printString", [], {}, smalltalk.Association)})},
 args: [],
@@ -200,7 +200,7 @@ var self=this;
 return smalltalk.withContext(function($ctx1) { 
var $1;
 _st(aCollection)._do_((function(each){
 return smalltalk.withContext(function($ctx2) {
return _st(self)._add_(each);
-}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+}, function($ctx2) {$ctx2.fillBlock([each], {})})}));
 $1=aCollection;
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"addAll:", [aCollection], {}, smalltalk.Collection)})},
@@ -239,7 +239,7 @@ var self=this;
 return smalltalk.withContext(function($ctx1) { 
var $1;
 $1=_st(_st(self)._asArray())._collect_((function(each){
 return smalltalk.withContext(function($ctx2) {
return _st(each)._asJSON();
-}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+}, function($ctx2) {$ctx2.fillBlock([each], {})})}));
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"asJSON", [], {}, smalltalk.Collection)})},
 args: [],
@@ -297,7 +297,7 @@ return smalltalk.withContext(function($ctx1) { 
var $1;
 stream=_st(_st(_st(self)._class())._new())._writeStream();
 _st(self)._do_((function(each){
 return smalltalk.withContext(function($ctx2) {
return _st(stream)._nextPut_(_st(aBlock)._value_(each));
-}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+}, function($ctx2) {$ctx2.fillBlock([each], {})})}));
 $1=_st(stream)._contents();
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"collect:", [aBlock], {stream:stream}, smalltalk.Collection)})},
@@ -360,7 +360,7 @@ var self=this;
 return smalltalk.withContext(function($ctx1) { 
var $1;
 $1=_st(self)._reject_((function(each){
 return smalltalk.withContext(function($ctx2) {
return _st(aCollection)._includes_(each);
-}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+}, function($ctx2) {$ctx2.fillBlock([each], {})})}));
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"copyWithoutAll:", [aCollection], {}, smalltalk.Collection)})},
 args: ["aCollection"],
@@ -380,7 +380,7 @@ var self=this;
 return smalltalk.withContext(function($ctx1) { 
var $1;
 $1=_st(self)._detect_ifNone_(aBlock,(function(){
 return smalltalk.withContext(function($ctx2) {
return _st(self)._errorNotFound();
-}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+}, function($ctx2) {$ctx2.fillBlock([], {})})}));
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"detect:", [aBlock], {}, smalltalk.Collection)})},
 args: ["aBlock"],
@@ -447,7 +447,7 @@ first;
 _st(anotherBlock)._value();
 };
 return _st(aBlock)._value_(each);
-}, function($ctx2) {$ctx2.fill(null, null, {})})});
+}, function($ctx2) {$ctx2.fillBlock([each], {})})});
 _st($1)._do_($2);
 return self}, function($ctx1) {$ctx1.fill(self,"do:separatedBy:", [aBlock,anotherBlock], {first:first}, smalltalk.Collection)})},
 args: ["aBlock", "anotherBlock"],
@@ -549,7 +549,7 @@ result=anObject;
 _st(self)._do_((function(each){
 return smalltalk.withContext(function($ctx2) {
result=_st(aBlock)._value_value_(result,each);
 return result;
-}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+}, function($ctx2) {$ctx2.fillBlock([each], {})})}));
 $1=result;
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"inject:into:", [anObject,aBlock], {result:result}, smalltalk.Collection)})},
@@ -575,11 +575,11 @@ $1=aCollection;
 $2=(function(each){
 return smalltalk.withContext(function($ctx2) {
$3=_st(_st(set)._includes_(each))._and_((function(){
 return smalltalk.withContext(function($ctx3) {
return _st(_st(outputSet)._includes_(each))._not();
-}, function($ctx3) {$ctx3.fill(null, null, {})})}));
+}, function($ctx3) {$ctx3.fillBlock([], {})})}));
 if(smalltalk.assert($3)){
 return _st(outputSet)._add_(each);
 };
-}, function($ctx2) {$ctx2.fill(null, null, {})})});
+}, function($ctx2) {$ctx2.fillBlock([each], {})})});
 _st($1)._do_($2);
 $4=_st(_st(self)._class())._withAll_(_st(outputSet)._asArray());
 return $4;
@@ -644,7 +644,7 @@ if(smalltalk.assert($3)){
 tally=_st(tally).__plus((1));
 return tally;
 };
-}, function($ctx2) {$ctx2.fill(null, null, {})})});
+}, function($ctx2) {$ctx2.fillBlock([each], {})})});
 _st($1)._do_($2);
 $4=tally;
 return $4;
@@ -668,11 +668,11 @@ $1=_st((smalltalk.String || String))._streamContents_((function(aStream){
 return smalltalk.withContext(function($ctx2) {
_st(aStream)._nextPutAll_(_st(smalltalk.Object.fn.prototype._printString.apply(_st(self), [])).__comma(" ("));
 _st(self)._do_separatedBy_((function(each){
 return smalltalk.withContext(function($ctx3) {
return _st(aStream)._nextPutAll_(_st(each)._printString());
-}, function($ctx3) {$ctx3.fill(null, null, {})})}),(function(){
+}, function($ctx3) {$ctx3.fillBlock([each], {})})}),(function(){
 return smalltalk.withContext(function($ctx3) {
return _st(aStream)._nextPutAll_(" ");
-}, function($ctx3) {$ctx3.fill(null, null, {})})}));
+}, function($ctx3) {$ctx3.fillBlock([], {})})}));
 return _st(aStream)._nextPutAll_(")");
-}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+}, function($ctx2) {$ctx2.fillBlock([aStream], {})})}));
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"printString", [], {}, smalltalk.Collection)})},
 args: [],
@@ -710,7 +710,7 @@ var self=this;
 return smalltalk.withContext(function($ctx1) { 
var $1;
 $1=_st(self)._select_((function(each){
 return smalltalk.withContext(function($ctx2) {
return _st(_st(aBlock)._value_(each)).__eq(false);
-}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+}, function($ctx2) {$ctx2.fillBlock([each], {})})}));
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"reject:", [aBlock], {}, smalltalk.Collection)})},
 args: ["aBlock"],
@@ -730,7 +730,7 @@ var self=this;
 return smalltalk.withContext(function($ctx1) { 
var $1;
 $1=_st(self)._remove_ifAbsent_(anObject,(function(){
 return smalltalk.withContext(function($ctx2) {
return _st(self)._errorNotFound();
-}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+}, function($ctx2) {$ctx2.fillBlock([], {})})}));
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"remove:", [anObject], {}, smalltalk.Collection)})},
 args: ["anObject"],
@@ -772,7 +772,7 @@ return smalltalk.withContext(function($ctx2) {
$3=_st(aBlock)._value_(each);
 if(smalltalk.assert($3)){
 return _st(stream)._nextPut_(each);
 };
-}, function($ctx2) {$ctx2.fill(null, null, {})})});
+}, function($ctx2) {$ctx2.fillBlock([each], {})})});
 _st($1)._do_($2);
 $4=_st(stream)._contents();
 return $4;
@@ -1088,7 +1088,7 @@ return smalltalk.withContext(function($ctx1) { 
var $1;
 c=_st(_st(self)._class())._new();
 _st(self)._keysAndValuesDo_((function(key,value){
 return smalltalk.withContext(function($ctx2) {
return _st(c)._at_put_(key,_st(value)._asJSON());
-}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+}, function($ctx2) {$ctx2.fillBlock([key,value], {})})}));
 $1=c;
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"asJSON", [], {c:c}, smalltalk.HashedCollection)})},
@@ -1111,7 +1111,7 @@ return smalltalk.withContext(function($ctx1) { 
var $1;
 associations=[];
 _st(_st(self)._keys())._do_((function(each){
 return smalltalk.withContext(function($ctx2) {
return _st(associations)._add_(_st((smalltalk.Association || Association))._key_value_(each,_st(self)._at_(each)));
-}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+}, function($ctx2) {$ctx2.fillBlock([each], {})})}));
 $1=associations;
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"associations", [], {associations:associations}, smalltalk.HashedCollection)})},
@@ -1148,7 +1148,7 @@ var self=this;
 return smalltalk.withContext(function($ctx1) { 
var $1;
 $1=_st(self)._at_ifAbsent_(aKey,(function(){
 return smalltalk.withContext(function($ctx2) {
return _st(self)._errorNotFound();
-}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+}, function($ctx2) {$ctx2.fillBlock([], {})})}));
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"at:", [aKey], {}, smalltalk.HashedCollection)})},
 args: ["aKey"],
@@ -1169,7 +1169,7 @@ return smalltalk.withContext(function($ctx1) { 
var $2,$1;
 $2=_st(self)._includesKey_(aKey);
 $1=_st($2)._ifTrue_ifFalse_((function(){
 return smalltalk.withContext(function($ctx2) {
return _st(self)._basicAt_(aKey);
-}, function($ctx2) {$ctx2.fill(null, null, {})})}),aBlock);
+}, function($ctx2) {$ctx2.fillBlock([], {})})}),aBlock);
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"at:ifAbsent:", [aKey,aBlock], {}, smalltalk.HashedCollection)})},
 args: ["aKey", "aBlock"],
@@ -1189,7 +1189,7 @@ var self=this;
 return smalltalk.withContext(function($ctx1) { 
var $1;
 $1=_st(self)._at_ifAbsent_(aKey,(function(){
 return smalltalk.withContext(function($ctx2) {
return _st(self)._at_put_(aKey,_st(aBlock)._value());
-}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+}, function($ctx2) {$ctx2.fillBlock([], {})})}));
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"at:ifAbsentPut:", [aKey,aBlock], {}, smalltalk.HashedCollection)})},
 args: ["aKey", "aBlock"],
@@ -1233,7 +1233,7 @@ return smalltalk.withContext(function($ctx1) { 
var $2,$1;
 $2=_st(self)._includesKey_(aKey);
 $1=_st($2)._ifTrue_ifFalse_((function(){
 return smalltalk.withContext(function($ctx2) {
return _st(aBlock)._value_(_st(self)._at_(aKey));
-}, function($ctx2) {$ctx2.fill(null, null, {})})}),anotherBlock);
+}, function($ctx2) {$ctx2.fillBlock([], {})})}),anotherBlock);
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"at:ifPresent:ifAbsent:", [aKey,aBlock,anotherBlock], {}, smalltalk.HashedCollection)})},
 args: ["aKey", "aBlock", "anotherBlock"],
@@ -1273,7 +1273,7 @@ return smalltalk.withContext(function($ctx1) { 
var $1;
 newDict=_st(_st(self)._class())._new();
 _st(self)._keysAndValuesDo_((function(key,value){
 return smalltalk.withContext(function($ctx2) {
return _st(newDict)._at_put_(key,_st(aBlock)._value_(value));
-}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+}, function($ctx2) {$ctx2.fillBlock([key,value], {})})}));
 $1=newDict;
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"collect:", [aBlock], {newDict:newDict}, smalltalk.HashedCollection)})},
@@ -1312,7 +1312,7 @@ return smalltalk.withContext(function($ctx1) { 
var $1;
 copy=_st(_st(self)._class())._new();
 _st(self)._associationsDo_((function(each){
 return smalltalk.withContext(function($ctx2) {
return _st(copy)._at_put_(_st(each)._key(),_st(_st(each)._value())._deepCopy());
-}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+}, function($ctx2) {$ctx2.fillBlock([each], {})})}));
 $1=copy;
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"deepCopy", [], {copy:copy}, smalltalk.HashedCollection)})},
@@ -1425,7 +1425,7 @@ fn: function (aBlock){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
_st(self)._associationsDo_((function(each){
 return smalltalk.withContext(function($ctx2) {
return _st(aBlock)._value_value_(_st(each)._key(),_st(each)._value());
-}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+}, function($ctx2) {$ctx2.fillBlock([each], {})})}));
 return self}, function($ctx1) {$ctx1.fill(self,"keysAndValuesDo:", [aBlock], {}, smalltalk.HashedCollection)})},
 args: ["aBlock"],
 source: "keysAndValuesDo: aBlock\x0a\x09self associationsDo: [:each |\x0a\x09    aBlock value: each key value: each value]",
@@ -1446,11 +1446,11 @@ $1=_st((smalltalk.String || String))._streamContents_((function(aStream){
 return smalltalk.withContext(function($ctx2) {
_st(aStream)._nextPutAll_(_st(_st("a ").__comma(_st(_st(self)._class())._name())).__comma("("));
 _st(_st(self)._associations())._do_separatedBy_((function(each){
 return smalltalk.withContext(function($ctx3) {
return _st(each)._storeOn_(aStream);
-}, function($ctx3) {$ctx3.fill(null, null, {})})}),(function(){
+}, function($ctx3) {$ctx3.fillBlock([each], {})})}),(function(){
 return smalltalk.withContext(function($ctx3) {
return _st(aStream)._nextPutAll_(" , ");
-}, function($ctx3) {$ctx3.fill(null, null, {})})}));
+}, function($ctx3) {$ctx3.fillBlock([], {})})}));
 return _st(aStream)._nextPutAll_(")");
-}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+}, function($ctx2) {$ctx2.fillBlock([aStream], {})})}));
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"printString", [], {}, smalltalk.HashedCollection)})},
 args: [],
@@ -1535,7 +1535,7 @@ return smalltalk.withContext(function($ctx2) {
$3=_st(aBlock)._value_(value);
 if(smalltalk.assert($3)){
 return _st(newDict)._at_put_(key,value);
 };
-}, function($ctx2) {$ctx2.fill(null, null, {})})});
+}, function($ctx2) {$ctx2.fillBlock([key,value], {})})});
 _st($1)._keysAndValuesDo_($2);
 $4=newDict;
 return $4;
@@ -1559,7 +1559,7 @@ return smalltalk.withContext(function($ctx1) { 
var $1;
 copy=_st(_st(self)._class())._new();
 _st(self)._associationsDo_((function(each){
 return smalltalk.withContext(function($ctx2) {
return _st(copy)._at_put_(_st(each)._key(),_st(each)._value());
-}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+}, function($ctx2) {$ctx2.fillBlock([each], {})})}));
 $1=copy;
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"shallowCopy", [], {copy:copy}, smalltalk.HashedCollection)})},
@@ -1598,9 +1598,9 @@ var self=this;
 return smalltalk.withContext(function($ctx1) { 
_st(aStream)._nextPutAll_("#{");
 _st(_st(self)._associations())._do_separatedBy_((function(each){
 return smalltalk.withContext(function($ctx2) {
return _st(each)._storeOn_(aStream);
-}, function($ctx2) {$ctx2.fill(null, null, {})})}),(function(){
+}, function($ctx2) {$ctx2.fillBlock([each], {})})}),(function(){
 return smalltalk.withContext(function($ctx2) {
return _st(aStream)._nextPutAll_(". ");
-}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+}, function($ctx2) {$ctx2.fillBlock([], {})})}));
 _st(aStream)._nextPutAll_("}");
 return self}, function($ctx1) {$ctx1.fill(self,"storeOn:", [aStream], {}, smalltalk.HashedCollection)})},
 args: ["aStream"],
@@ -1620,7 +1620,7 @@ var self=this;
 return smalltalk.withContext(function($ctx1) { 
var $1;
 $1=_st(_st(self)._keys())._collect_((function(each){
 return smalltalk.withContext(function($ctx2) {
return _st(self)._at_(each);
-}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+}, function($ctx2) {$ctx2.fillBlock([each], {})})}));
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"values", [], {}, smalltalk.HashedCollection)})},
 args: [],
@@ -1643,7 +1643,7 @@ return smalltalk.withContext(function($ctx1) { 
var $1;
 dict=_st(self)._new();
 _st(aCollection)._do_((function(each){
 return smalltalk.withContext(function($ctx2) {
return _st(dict)._add_(each);
-}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+}, function($ctx2) {$ctx2.fillBlock([each], {})})}));
 $1=dict;
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"fromPairs:", [aCollection], {dict:dict}, smalltalk.HashedCollection.klass)})},
@@ -1790,9 +1790,9 @@ var self=this;
 return smalltalk.withContext(function($ctx1) { 
var $1;
 $1=_st(_st(_st(self)._associations())._detect_ifNone_((function(k,v){
 return smalltalk.withContext(function($ctx2) {
return _st(v).__eq_eq(anObject);
-}, function($ctx2) {$ctx2.fill(null, null, {})})}),(function(){
+}, function($ctx2) {$ctx2.fillBlock([k,v], {})})}),(function(){
 return smalltalk.withContext(function($ctx2) {
return _st(self)._error_("Not found");
-}, function($ctx2) {$ctx2.fill(null, null, {})})})))._key();
+}, function($ctx2) {$ctx2.fillBlock([], {})})})))._key();
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"keyAtValue:", [anObject], {}, smalltalk.Dictionary)})},
 args: ["anObject"],
@@ -1897,7 +1897,7 @@ var $early={};
 try {
 $1=_st(_st(_st(self)._class()).__eq(_st(aCollection)._class()))._and_((function(){
 return smalltalk.withContext(function($ctx2) {
return _st(_st(self)._size()).__eq(_st(aCollection)._size());
-}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+}, function($ctx2) {$ctx2.fillBlock([], {})})}));
 if(! smalltalk.assert($1)){
 return false;
 };
@@ -1907,7 +1907,7 @@ return smalltalk.withContext(function($ctx2) {
$4=_st(_st(aCollection)._at_(i)).
 if(! smalltalk.assert($4)){
 throw $early=[false];
 };
-}, function($ctx2) {$ctx2.fill(null, null, {})})});
+}, function($ctx2) {$ctx2.fillBlock([each,i], {})})});
 _st($2)._withIndexDo_($3);
 return true;
 }
@@ -1982,7 +1982,7 @@ var self=this;
 return smalltalk.withContext(function($ctx1) { 
var $1;
 $1=_st(self)._at_ifAbsent_(anIndex,(function(){
 return smalltalk.withContext(function($ctx2) {
return _st(self)._errorNotFound();
-}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+}, function($ctx2) {$ctx2.fillBlock([], {})})}));
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"at:", [anIndex], {}, smalltalk.SequenceableCollection)})},
 args: ["anIndex"],
@@ -2055,7 +2055,7 @@ range=_st(anIndex)._to_(anotherIndex);
 newCollection=_st(_st(self)._class())._new_(_st(range)._size());
 _st(range)._withIndexDo_((function(each,i){
 return smalltalk.withContext(function($ctx2) {
return _st(newCollection)._at_put_(i,_st(self)._at_(each));
-}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+}, function($ctx2) {$ctx2.fillBlock([each,i], {})})}));
 $1=newCollection;
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"copyFrom:to:", [anIndex,anotherIndex], {range:range,newCollection:newCollection}, smalltalk.SequenceableCollection)})},
@@ -2078,7 +2078,7 @@ return smalltalk.withContext(function($ctx1) { 
var $1;
 newCollection=_st(_st(self)._class())._new_(_st(self)._size());
 _st(self)._withIndexDo_((function(each,index){
 return smalltalk.withContext(function($ctx2) {
return _st(newCollection)._at_put_(index,_st(each)._deepCopy());
-}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+}, function($ctx2) {$ctx2.fillBlock([each,index], {})})}));
 $1=newCollection;
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"deepCopy", [], {newCollection:newCollection}, smalltalk.SequenceableCollection)})},
@@ -2153,7 +2153,7 @@ var self=this;
 return smalltalk.withContext(function($ctx1) { 
var $1;
 $1=_st(self)._indexOf_ifAbsent_(anObject,(function(){
 return smalltalk.withContext(function($ctx2) {
return _st(self)._errorNotFound();
-}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+}, function($ctx2) {$ctx2.fillBlock([], {})})}));
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"indexOf:", [anObject], {}, smalltalk.SequenceableCollection)})},
 args: ["anObject"],
@@ -2194,7 +2194,7 @@ var self=this;
 return smalltalk.withContext(function($ctx1) { 
var $1;
 $1=_st(self)._indexOf_startingAt_ifAbsent_(anObject,start,(function(){
 return smalltalk.withContext(function($ctx2) {
return (0);
-}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+}, function($ctx2) {$ctx2.fillBlock([], {})})}));
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"indexOf:startingAt:", [anObject,start], {}, smalltalk.SequenceableCollection)})},
 args: ["anObject", "start"],
@@ -2305,7 +2305,7 @@ return smalltalk.withContext(function($ctx1) { 
var $1;
 newCollection=_st(_st(self)._class())._new_(_st(self)._size());
 _st(self)._withIndexDo_((function(each,index){
 return smalltalk.withContext(function($ctx2) {
return _st(newCollection)._at_put_(index,each);
-}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+}, function($ctx2) {$ctx2.fillBlock([each,index], {})})}));
 $1=newCollection;
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"shallowCopy", [], {newCollection:newCollection}, smalltalk.SequenceableCollection)})},
@@ -2379,7 +2379,7 @@ var self=this;
 return smalltalk.withContext(function($ctx1) { 
var $1;
 $1=_st(_st("[").__comma(_st(_st(self)._collect_((function(each){
 return smalltalk.withContext(function($ctx2) {
return _st(each)._asJavascript();
-}, function($ctx2) {$ctx2.fill(null, null, {})})})))._join_(", "))).__comma("]");
+}, function($ctx2) {$ctx2.fillBlock([each], {})})})))._join_(", "))).__comma("]");
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"asJavascript", [], {}, smalltalk.Array)})},
 args: [],
@@ -2684,7 +2684,7 @@ _st(aCollection)._do_((function(each){
 return smalltalk.withContext(function($ctx2) {
_st(instance)._at_put_(index,each);
 index=_st(index).__plus((1));
 return index;
-}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+}, function($ctx2) {$ctx2.fillBlock([each], {})})}));
 $1=instance;
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"withAll:", [aCollection], {instance:instance,index:index}, smalltalk.Array.klass)})},
@@ -3323,10 +3323,10 @@ return smalltalk.withContext(function($ctx1) { 
var $1;
 $1=_st((smalltalk.String || String))._streamContents_((function(stream){
 return smalltalk.withContext(function($ctx2) {
return _st(aCollection)._do_separatedBy_((function(each){
 return smalltalk.withContext(function($ctx3) {
return _st(stream)._nextPutAll_(_st(each)._asString());
-}, function($ctx3) {$ctx3.fill(null, null, {})})}),(function(){
+}, function($ctx3) {$ctx3.fillBlock([each], {})})}),(function(){
 return smalltalk.withContext(function($ctx3) {
return _st(stream)._nextPutAll_(self);
-}, function($ctx3) {$ctx3.fill(null, null, {})})}));
-}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+}, function($ctx3) {$ctx3.fillBlock([], {})})}));
+}, function($ctx2) {$ctx2.fillBlock([stream], {})})}));
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"join:", [aCollection], {}, smalltalk.String)})},
 args: ["aCollection"],
@@ -3355,11 +3355,11 @@ lf=_st((smalltalk.String || String))._lf();
 nextLF=_st(self)._indexOf_startingAt_(lf,(1));
 $1=(function(){
 return smalltalk.withContext(function($ctx2) {
return _st(start).__lt_eq(sz);
-}, function($ctx2) {$ctx2.fill(null, null, {})})});
+}, function($ctx2) {$ctx2.fillBlock([], {})})});
 $2=(function(){
 return smalltalk.withContext(function($ctx2) {
$3=_st(_st(nextLF).__eq((0)))._and_((function(){
 return smalltalk.withContext(function($ctx3) {
return _st(nextCR).__eq((0));
-}, function($ctx3) {$ctx3.fill(null, null, {})})}));
+}, function($ctx3) {$ctx3.fillBlock([], {})})}));
 if(smalltalk.assert($3)){
 _st(aBlock)._value_value_value_(start,sz,sz);
 $4=self;
@@ -3368,15 +3368,15 @@ throw $early=[$4];
 $5=_st(_st(nextCR).__eq((0)))._or_((function(){
 return smalltalk.withContext(function($ctx3) {
return _st(_st((0)).__lt(nextLF))._and_((function(){
 return smalltalk.withContext(function($ctx4) {
return _st(nextLF).__lt(nextCR);
-}, function($ctx4) {$ctx4.fill(null, null, {})})}));
-}, function($ctx3) {$ctx3.fill(null, null, {})})}));
+}, function($ctx4) {$ctx4.fillBlock([], {})})}));
+}, function($ctx3) {$ctx3.fillBlock([], {})})}));
 $6=(function(){
 return smalltalk.withContext(function($ctx3) {
_st(aBlock)._value_value_value_(start,_st(nextLF).__minus((1)),nextLF);
 start=_st((1)).__plus(nextLF);
 start;
 nextLF=_st(self)._indexOf_startingAt_(lf,start);
 return nextLF;
-}, function($ctx3) {$ctx3.fill(null, null, {})})});
+}, function($ctx3) {$ctx3.fillBlock([], {})})});
 $7=(function(){
 return smalltalk.withContext(function($ctx3) {
$8=_st(_st((1)).__plus(nextCR)).__eq(nextLF);
 if(smalltalk.assert($8)){
@@ -3394,9 +3394,9 @@ start;
 nextCR=_st(self)._indexOf_startingAt_(cr,start);
 return nextCR;
 };
-}, function($ctx3) {$ctx3.fill(null, null, {})})});
+}, function($ctx3) {$ctx3.fillBlock([], {})})});
 return _st($5)._ifTrue_ifFalse_($6,$7);
-}, function($ctx2) {$ctx2.fill(null, null, {})})});
+}, function($ctx2) {$ctx2.fillBlock([], {})})});
 _st($1)._whileTrue_($2);
 return self}
 catch(e) {if(e===$early)return e[0]; throw e}
@@ -3428,7 +3428,7 @@ if(smalltalk.assert($3)){
 $4=_st(self)._copyFrom_to_(start,endWithoutDelimiters);
 throw $early=[$4];
 };
-}, function($ctx2) {$ctx2.fill(null, null, {})})});
+}, function($ctx2) {$ctx2.fillBlock([start,endWithoutDelimiters,end], {})})});
 _st($1)._lineIndicesDo_($2);
 return nil;
 }
@@ -3453,7 +3453,7 @@ return smalltalk.withContext(function($ctx1) { 
var $1;
 lines=_st((smalltalk.Array || Array))._new();
 _st(self)._linesDo_((function(aLine){
 return smalltalk.withContext(function($ctx2) {
return _st(lines)._add_(aLine);
-}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+}, function($ctx2) {$ctx2.fillBlock([aLine], {})})}));
 $1=lines;
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"lines", [], {lines:lines}, smalltalk.String)})},
@@ -3473,7 +3473,7 @@ fn: function (aBlock){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
_st(self)._lineIndicesDo_((function(start,endWithoutDelimiters,end){
 return smalltalk.withContext(function($ctx2) {
return _st(aBlock)._value_(_st(self)._copyFrom_to_(start,endWithoutDelimiters));
-}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+}, function($ctx2) {$ctx2.fillBlock([start,endWithoutDelimiters,end], {})})}));
 return self}, function($ctx1) {$ctx1.fill(self,"linesDo:", [aBlock], {}, smalltalk.String)})},
 args: ["aBlock"],
 source: "linesDo: aBlock\x0a\x09\x22Execute aBlock with each line in this string. The terminating line\x0a\x09delimiters CR, LF or CRLF pairs are not included in what is passed to aBlock\x22\x0a\x0a\x09self lineIndicesDo: [:start :endWithoutDelimiters :end |\x0a\x09\x09aBlock value: (self copyFrom: start to: endWithoutDelimiters)]",
@@ -4449,7 +4449,7 @@ var self=this;
 return smalltalk.withContext(function($ctx1) { 
var $1;
 $1=_st(_st(_st(self)._class()).__eq(_st(aCollection)._class()))._and_((function(){
 return smalltalk.withContext(function($ctx2) {
return _st(self["@elements"]).__eq(_st(aCollection)._asArray());
-}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+}, function($ctx2) {$ctx2.fillBlock([], {})})}));
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"=", [aCollection], {}, smalltalk.Set)})},
 args: ["aCollection"],
@@ -4603,7 +4603,7 @@ return smalltalk.withContext(function($ctx2) {
$3=_st(aBlock)._value_(each);
 if(smalltalk.assert($3)){
 return _st(collection)._add_(each);
 };
-}, function($ctx2) {$ctx2.fill(null, null, {})})});
+}, function($ctx2) {$ctx2.fillBlock([each], {})})});
 _st($1)._do_($2);
 $4=collection;
 return $4;
@@ -4663,7 +4663,7 @@ var self=this;
 return smalltalk.withContext(function($ctx1) { 
var $1;
 $1=_st(self)._frontIfAbsent_((function(){
 return smalltalk.withContext(function($ctx2) {
return _st(self)._error_("Cannot read from empty Queue.");
-}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+}, function($ctx2) {$ctx2.fillBlock([], {})})}));
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"front", [], {}, smalltalk.Queue)})},
 args: [],
@@ -4698,7 +4698,7 @@ self["@readIndex"];
 };
 $7=_st(aBlock)._value();
 throw $early=[$7];
-}, function($ctx3) {$ctx3.fill(null, null, {})})});
+}, function($ctx3) {$ctx3.fillBlock([], {})})});
 _st($4)._ifTrue_($5);
 self["@read"]=self["@write"];
 self["@read"];
@@ -4707,7 +4707,7 @@ self["@readIndex"];
 self["@write"]=_st((smalltalk.OrderedCollection || OrderedCollection))._new();
 self["@write"];
 return _st(self["@read"])._first();
-}, function($ctx2) {$ctx2.fill(null, null, {})})});
+}, function($ctx2) {$ctx2.fillBlock([], {})})});
 result=_st($1)._at_ifAbsent_($2,$3);
 _st(self["@read"])._at_put_(self["@readIndex"],nil);
 self["@readIndex"]=_st(self["@readIndex"]).__plus((1));
@@ -4926,9 +4926,9 @@ fn: function (aBlock){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
_st((function(){
 return smalltalk.withContext(function($ctx2) {
return _st(self)._atEnd();
-}, function($ctx2) {$ctx2.fill(null, null, {})})}))._whileFalse_((function(){
+}, function($ctx2) {$ctx2.fillBlock([], {})})}))._whileFalse_((function(){
 return smalltalk.withContext(function($ctx2) {
return _st(aBlock)._value_(_st(self)._next());
-}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+}, function($ctx2) {$ctx2.fillBlock([], {})})}));
 return self}, function($ctx1) {$ctx1.fill(self,"do:", [aBlock], {}, smalltalk.Stream)})},
 args: ["aBlock"],
 source: "do: aBlock\x0a\x09[self atEnd] whileFalse: [aBlock value: self next]",
@@ -5010,7 +5010,7 @@ return smalltalk.withContext(function($ctx2) {
$3=_st(self)._atEnd();
 if(! smalltalk.assert($3)){
 return _st(tempCollection)._add_(_st(self)._next());
 };
-}, function($ctx2) {$ctx2.fill(null, null, {})})});
+}, function($ctx2) {$ctx2.fillBlock([], {})})});
 _st($1)._timesRepeat_($2);
 $4=tempCollection;
 return $4;
@@ -5049,7 +5049,7 @@ fn: function (aCollection){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
_st(aCollection)._do_((function(each){
 return smalltalk.withContext(function($ctx2) {
return _st(self)._nextPut_(each);
-}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+}, function($ctx2) {$ctx2.fillBlock([each], {})})}));
 return self}, function($ctx1) {$ctx1.fill(self,"nextPutAll:", [aCollection], {}, smalltalk.Stream)})},
 args: ["aCollection"],
 source: "nextPutAll: aCollection\x0a\x09aCollection do: [:each |\x0a\x09    self nextPut: each]",
@@ -5348,7 +5348,7 @@ if(! smalltalk.assert($3)){
 tempCollection=_st(tempCollection).__comma(_st(self)._next());
 return tempCollection;
 };
-}, function($ctx2) {$ctx2.fill(null, null, {})})});
+}, function($ctx2) {$ctx2.fillBlock([], {})})});
 _st($1)._timesRepeat_($2);
 $4=tempCollection;
 return $4;

+ 1 - 1
js/Kernel-Exceptions.deploy.js

@@ -273,7 +273,7 @@ return $3;
 } else {
 return _st(self)._logContext_(_st(aContext)._home());
 };
-}, function($ctx2) {$ctx2.fill(null, null, {})})});
+}, function($ctx2) {$ctx2.fillBlock([], {})})});
 _st($1)._ifNotNil_($2);
 return self}, function($ctx1) {$ctx1.fill(self,"logErrorContext:", [aContext], {}, smalltalk.ErrorHandler)})}
 }),

+ 1 - 1
js/Kernel-Exceptions.js

@@ -374,7 +374,7 @@ return $3;
 } else {
 return _st(self)._logContext_(_st(aContext)._home());
 };
-}, function($ctx2) {$ctx2.fill(null, null, {})})});
+}, function($ctx2) {$ctx2.fillBlock([], {})})});
 _st($1)._ifNotNil_($2);
 return self}, function($ctx1) {$ctx1.fill(self,"logErrorContext:", [aContext], {}, smalltalk.ErrorHandler)})},
 args: ["aContext"],

+ 16 - 11
js/Kernel-Methods.deploy.js

@@ -115,7 +115,7 @@ return _st(aBlock)._value_(error);
 } else {
 return _st(error)._signal();
 };
-}, function($ctx2) {$ctx2.fill(null, null, {})})});
+}, function($ctx2) {$ctx2.fillBlock([error], {})})});
 $1=_st($2)._try_catch_($3,$4);
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"on:do:", [anErrorClass,aBlock], {}, smalltalk.BlockClosure)})}
@@ -225,7 +225,7 @@ selector: "whileFalse",
 fn: function (){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
_st(self)._whileFalse_((function(){
-return smalltalk.withContext(function($ctx2) {
}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+return smalltalk.withContext(function($ctx2) {
}, function($ctx2) {$ctx2.fillBlock([], {})})}));
 return self}, function($ctx1) {$ctx1.fill(self,"whileFalse", [], {}, smalltalk.BlockClosure)})}
 }),
 smalltalk.BlockClosure);
@@ -248,7 +248,7 @@ selector: "whileTrue",
 fn: function (){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
_st(self)._whileTrue_((function(){
-return smalltalk.withContext(function($ctx2) {
}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+return smalltalk.withContext(function($ctx2) {
}, function($ctx2) {$ctx2.fillBlock([], {})})}));
 return self}, function($ctx1) {$ctx1.fill(self,"whileTrue", [], {}, smalltalk.BlockClosure)})}
 }),
 smalltalk.BlockClosure);
@@ -313,9 +313,9 @@ $1;
 _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(oldCategory);
-}, function($ctx2) {$ctx2.fill(null, null, {})})})))._ifEmpty_((function(){
+}, function($ctx2) {$ctx2.fillBlock([each], {})})})))._ifEmpty_((function(){
 return smalltalk.withContext(function($ctx2) {
return _st(_st(_st(self)._methodClass())._organization())._removeElement_(oldCategory);
-}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+}, function($ctx2) {$ctx2.fillBlock([], {})})}));
 };
 return self}, function($ctx1) {$ctx1.fill(self,"category:", [aString], {oldCategory:oldCategory}, smalltalk.CompiledMethod)})}
 }),
@@ -523,17 +523,17 @@ return smalltalk.withContext(function($ctx2) {
self["@poolSize"]=_st(self["@pool
 self["@poolSize"];
 block=_st(self["@queue"])._frontIfAbsent_((function(){
 return smalltalk.withContext(function($ctx3) {
return sentinel;
-}, function($ctx3) {$ctx3.fill(null, null, {})})}));
+}, function($ctx3) {$ctx3.fillBlock([], {})})}));
 block;
 $2=_st(block).__eq_eq(sentinel);
 if(! smalltalk.assert($2)){
 return _st((function(){
 return smalltalk.withContext(function($ctx3) {
return _st(block)._value();
-}, function($ctx3) {$ctx3.fill(null, null, {})})}))._ensure_((function(){
+}, function($ctx3) {$ctx3.fillBlock([], {})})}))._ensure_((function(){
 return smalltalk.withContext(function($ctx3) {
return _st(self)._addWorker();
-}, function($ctx3) {$ctx3.fill(null, null, {})})}));
+}, function($ctx3) {$ctx3.fillBlock([], {})})}));
 };
-}, function($ctx2) {$ctx2.fill(null, null, {})})});
+}, function($ctx2) {$ctx2.fillBlock([], {block:block})})});
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"makeWorker", [], {sentinel:sentinel}, smalltalk.ForkPool)})}
 }),
@@ -651,7 +651,7 @@ _st($2)._nextPutAll_("(");
 _st($2)._nextPutAll_(self["@selector"]);
 $3=_st($2)._nextPutAll_(")");
 return $3;
-}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+}, function($ctx2) {$ctx2.fillBlock([aStream], {})})}));
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"printString", [], {}, smalltalk.Message)})}
 }),
@@ -731,8 +731,13 @@ smalltalk.method({
 selector: "asString",
 fn: function (){
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $1;
+return smalltalk.withContext(function($ctx1) { 
var $2,$1;
+$2=_st(self)._isBlockContext();
+if(smalltalk.assert($2)){
+$1=_st(_st("a block (in ").__comma(_st(_st(self)._methodContext())._asString())).__comma(")");
+} else {
 $1=_st(_st(_st(_st(_st(self)._receiver())._class())._printString()).__comma(" >> ")).__comma(_st(self)._selector());
+};
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"asString", [], {}, smalltalk.MethodContext)})}
 }),

+ 18 - 13
js/Kernel-Methods.js

@@ -162,7 +162,7 @@ return _st(aBlock)._value_(error);
 } else {
 return _st(error)._signal();
 };
-}, function($ctx2) {$ctx2.fill(null, null, {})})});
+}, function($ctx2) {$ctx2.fillBlock([error], {})})});
 $1=_st($2)._try_catch_($3,$4);
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"on:do:", [anErrorClass,aBlock], {}, smalltalk.BlockClosure)})},
@@ -317,7 +317,7 @@ category: 'controlling',
 fn: function (){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
_st(self)._whileFalse_((function(){
-return smalltalk.withContext(function($ctx2) {
}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+return smalltalk.withContext(function($ctx2) {
}, function($ctx2) {$ctx2.fillBlock([], {})})}));
 return self}, function($ctx1) {$ctx1.fill(self,"whileFalse", [], {}, smalltalk.BlockClosure)})},
 args: [],
 source: "whileFalse\x0a\x09\x22inlined in the Compiler\x22\x0a\x09self whileFalse: []",
@@ -350,7 +350,7 @@ category: 'controlling',
 fn: function (){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
_st(self)._whileTrue_((function(){
-return smalltalk.withContext(function($ctx2) {
}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+return smalltalk.withContext(function($ctx2) {
}, function($ctx2) {$ctx2.fillBlock([], {})})}));
 return self}, function($ctx1) {$ctx1.fill(self,"whileTrue", [], {}, smalltalk.BlockClosure)})},
 args: [],
 source: "whileTrue\x0a\x09\x22inlined in the Compiler\x22\x0a\x09self whileTrue: []",
@@ -436,9 +436,9 @@ $1;
 _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(oldCategory);
-}, function($ctx2) {$ctx2.fill(null, null, {})})})))._ifEmpty_((function(){
+}, function($ctx2) {$ctx2.fillBlock([each], {})})})))._ifEmpty_((function(){
 return smalltalk.withContext(function($ctx2) {
return _st(_st(_st(self)._methodClass())._organization())._removeElement_(oldCategory);
-}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+}, function($ctx2) {$ctx2.fillBlock([], {})})}));
 };
 return self}, function($ctx1) {$ctx1.fill(self,"category:", [aString], {oldCategory:oldCategory}, smalltalk.CompiledMethod)})},
 args: ["aString"],
@@ -722,17 +722,17 @@ return smalltalk.withContext(function($ctx2) {
self["@poolSize"]=_st(self["@pool
 self["@poolSize"];
 block=_st(self["@queue"])._frontIfAbsent_((function(){
 return smalltalk.withContext(function($ctx3) {
return sentinel;
-}, function($ctx3) {$ctx3.fill(null, null, {})})}));
+}, function($ctx3) {$ctx3.fillBlock([], {})})}));
 block;
 $2=_st(block).__eq_eq(sentinel);
 if(! smalltalk.assert($2)){
 return _st((function(){
 return smalltalk.withContext(function($ctx3) {
return _st(block)._value();
-}, function($ctx3) {$ctx3.fill(null, null, {})})}))._ensure_((function(){
+}, function($ctx3) {$ctx3.fillBlock([], {})})}))._ensure_((function(){
 return smalltalk.withContext(function($ctx3) {
return _st(self)._addWorker();
-}, function($ctx3) {$ctx3.fill(null, null, {})})}));
+}, function($ctx3) {$ctx3.fillBlock([], {})})}));
 };
-}, function($ctx2) {$ctx2.fill(null, null, {})})});
+}, function($ctx2) {$ctx2.fillBlock([], {block:block})})});
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"makeWorker", [], {sentinel:sentinel}, smalltalk.ForkPool)})},
 args: [],
@@ -891,7 +891,7 @@ _st($2)._nextPutAll_("(");
 _st($2)._nextPutAll_(self["@selector"]);
 $3=_st($2)._nextPutAll_(")");
 return $3;
-}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+}, function($ctx2) {$ctx2.fillBlock([aStream], {})})}));
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"printString", [], {}, smalltalk.Message)})},
 args: [],
@@ -1002,13 +1002,18 @@ selector: "asString",
 category: 'accessing',
 fn: function (){
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $1;
+return smalltalk.withContext(function($ctx1) { 
var $2,$1;
+$2=_st(self)._isBlockContext();
+if(smalltalk.assert($2)){
+$1=_st(_st("a block (in ").__comma(_st(_st(self)._methodContext())._asString())).__comma(")");
+} else {
 $1=_st(_st(_st(_st(_st(self)._receiver())._class())._printString()).__comma(" >> ")).__comma(_st(self)._selector());
+};
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"asString", [], {}, smalltalk.MethodContext)})},
 args: [],
-source: "asString\x0a\x09^self receiver class printString, ' >> ', self selector",
-messageSends: [",", "selector", "printString", "class", "receiver"],
+source: "asString\x0a\x09^self isBlockContext \x0a    \x09ifTrue: [ 'a block (in ', self methodContext asString, ')' ]\x0a      \x09ifFalse: [ self receiver class printString, ' >> ', self selector ]",
+messageSends: ["ifTrue:ifFalse:", ",", "asString", "methodContext", "selector", "printString", "class", "receiver", "isBlockContext"],
 referencedClasses: []
 }),
 smalltalk.MethodContext);

+ 40 - 40
js/Kernel-Objects.deploy.js

@@ -50,7 +50,7 @@ return smalltalk.withContext(function($ctx1) { 
var $1;
 variables=_st((smalltalk.HashedCollection || HashedCollection))._new();
 _st(_st(_st(self)._class())._allInstanceVariableNames())._do_((function(each){
 return smalltalk.withContext(function($ctx2) {
return _st(variables)._at_put_(each,_st(_st(self)._instVarAt_(each))._asJSON());
-}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+}, function($ctx2) {$ctx2.fillBlock([each], {})})}));
 $1=variables;
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"asJSON", [], {variables:variables}, smalltalk.Object)})}
@@ -475,7 +475,7 @@ return smalltalk.withContext(function($ctx1) { 
var $1;
 _st(console)._log_(_st(_st(aString).__comma(" time: ")).__comma(_st(_st((smalltalk.Date || Date))._millisecondsToRun_((function(){
 return smalltalk.withContext(function($ctx2) {
result=_st(aBlock)._value();
 return result;
-}, function($ctx2) {$ctx2.fill(null, null, {})})})))._printString()));
+}, function($ctx2) {$ctx2.fillBlock([], {})})})))._printString()));
 $1=result;
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"log:block:", [aString,aBlock], {result:result}, smalltalk.Object)})}
@@ -627,7 +627,7 @@ var self=this;
 return smalltalk.withContext(function($ctx1) { 
var $1;
 $1=_st((smalltalk.String || String))._streamContents_((function(s){
 return smalltalk.withContext(function($ctx2) {
return _st(self)._storeOn_(s);
-}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+}, function($ctx2) {$ctx2.fillBlock([s], {})})}));
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"storeString", [], {}, smalltalk.Object)})}
 }),
@@ -798,7 +798,7 @@ return smalltalk.withContext(function($ctx1) { 
var $2,$1;
 $2=_st(self).__eq(true);
 $1=_st($2)._ifTrue_ifFalse_(aBlock,(function(){
 return smalltalk.withContext(function($ctx2) {
return false;
-}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+}, function($ctx2) {$ctx2.fillBlock([], {})})}));
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"and:", [aBlock], {}, smalltalk.Boolean)})}
 }),
@@ -839,7 +839,7 @@ var self=this;
 return smalltalk.withContext(function($ctx1) { 
var $2,$1;
 $2=self;
 $1=_st($2)._ifTrue_ifFalse_((function(){
-return smalltalk.withContext(function($ctx2) {
}, function($ctx2) {$ctx2.fill(null, null, {})})}),aBlock);
+return smalltalk.withContext(function($ctx2) {
}, function($ctx2) {$ctx2.fillBlock([], {})})}),aBlock);
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"ifFalse:", [aBlock], {}, smalltalk.Boolean)})}
 }),
@@ -868,7 +868,7 @@ var self=this;
 return smalltalk.withContext(function($ctx1) { 
var $2,$1;
 $2=self;
 $1=_st($2)._ifTrue_ifFalse_(aBlock,(function(){
-return smalltalk.withContext(function($ctx2) {
}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+return smalltalk.withContext(function($ctx2) {
}, function($ctx2) {$ctx2.fillBlock([], {})})}));
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"ifTrue:", [aBlock], {}, smalltalk.Boolean)})}
 }),
@@ -925,7 +925,7 @@ return smalltalk.withContext(function($ctx1) { 
var $2,$1;
 $2=_st(self).__eq(true);
 $1=_st($2)._ifTrue_ifFalse_((function(){
 return smalltalk.withContext(function($ctx2) {
return true;
-}, function($ctx2) {$ctx2.fill(null, null, {})})}),aBlock);
+}, function($ctx2) {$ctx2.fillBlock([], {})})}),aBlock);
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"or:", [aBlock], {}, smalltalk.Boolean)})}
 }),
@@ -2060,11 +2060,11 @@ var count;
 return smalltalk.withContext(function($ctx1) { 
count=(1);
 _st((function(){
 return smalltalk.withContext(function($ctx2) {
return _st(count).__gt(self);
-}, function($ctx2) {$ctx2.fill(null, null, {})})}))._whileFalse_((function(){
+}, function($ctx2) {$ctx2.fillBlock([], {})})}))._whileFalse_((function(){
 return smalltalk.withContext(function($ctx2) {
_st(aBlock)._value();
 count=_st(count).__plus((1));
 return count;
-}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+}, function($ctx2) {$ctx2.fillBlock([], {})})}));
 return self}, function($ctx1) {$ctx1.fill(self,"timesRepeat:", [aBlock], {count:count}, smalltalk.Number)})}
 }),
 smalltalk.Number);
@@ -2087,7 +2087,7 @@ count=_st(count).__plus((1));
 count;
 first=_st(first).__plus((1));
 return first;
-}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+}, function($ctx2) {$ctx2.fillBlock([], {})})}));
 $1=array;
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"to:", [aNumber], {array:array,first:first,last:last,count:count}, smalltalk.Number)})}
@@ -2113,23 +2113,23 @@ $2=_st(step).__lt((0));
 if(smalltalk.assert($2)){
 _st((function(){
 return smalltalk.withContext(function($ctx2) {
return _st(value).__gt_eq(stop);
-}, function($ctx2) {$ctx2.fill(null, null, {})})}))._whileTrue_((function(){
+}, function($ctx2) {$ctx2.fillBlock([], {})})}))._whileTrue_((function(){
 return smalltalk.withContext(function($ctx2) {
_st(array)._at_put_(pos,value);
 pos=_st(pos).__plus((1));
 pos;
 value=_st(value).__plus(step);
 return value;
-}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+}, function($ctx2) {$ctx2.fillBlock([], {})})}));
 } else {
 _st((function(){
 return smalltalk.withContext(function($ctx2) {
return _st(value).__lt_eq(stop);
-}, function($ctx2) {$ctx2.fill(null, null, {})})}))._whileTrue_((function(){
+}, function($ctx2) {$ctx2.fillBlock([], {})})}))._whileTrue_((function(){
 return smalltalk.withContext(function($ctx2) {
_st(array)._at_put_(pos,value);
 pos=_st(pos).__plus((1));
 pos;
 value=_st(value).__plus(step);
 return value;
-}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+}, function($ctx2) {$ctx2.fillBlock([], {})})}));
 };
 $3=array;
 return $3;
@@ -2154,19 +2154,19 @@ $2=_st(step).__lt((0));
 if(smalltalk.assert($2)){
 _st((function(){
 return smalltalk.withContext(function($ctx2) {
return _st(value).__gt_eq(stop);
-}, function($ctx2) {$ctx2.fill(null, null, {})})}))._whileTrue_((function(){
+}, function($ctx2) {$ctx2.fillBlock([], {})})}))._whileTrue_((function(){
 return smalltalk.withContext(function($ctx2) {
_st(aBlock)._value_(value);
 value=_st(value).__plus(step);
 return value;
-}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+}, function($ctx2) {$ctx2.fillBlock([], {})})}));
 } else {
 _st((function(){
 return smalltalk.withContext(function($ctx2) {
return _st(value).__lt_eq(stop);
-}, function($ctx2) {$ctx2.fill(null, null, {})})}))._whileTrue_((function(){
+}, function($ctx2) {$ctx2.fillBlock([], {})})}))._whileTrue_((function(){
 return smalltalk.withContext(function($ctx2) {
_st(aBlock)._value_(value);
 value=_st(value).__plus(step);
 return value;
-}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+}, function($ctx2) {$ctx2.fillBlock([], {})})}));
 };
 return self}, function($ctx1) {$ctx1.fill(self,"to:by:do:", [stop,step,aBlock], {value:value}, smalltalk.Number)})}
 }),
@@ -2182,11 +2182,11 @@ var nextValue;
 return smalltalk.withContext(function($ctx1) { 
nextValue=self;
 _st((function(){
 return smalltalk.withContext(function($ctx2) {
return _st(nextValue).__lt_eq(stop);
-}, function($ctx2) {$ctx2.fill(null, null, {})})}))._whileTrue_((function(){
+}, function($ctx2) {$ctx2.fillBlock([], {})})}))._whileTrue_((function(){
 return smalltalk.withContext(function($ctx2) {
_st(aBlock)._value_(nextValue);
 nextValue=_st(nextValue).__plus((1));
 return nextValue;
-}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+}, function($ctx2) {$ctx2.fillBlock([], {})})}));
 return self}, function($ctx1) {$ctx1.fill(self,"to:do:", [stop,aBlock], {nextValue:nextValue}, smalltalk.Number)})}
 }),
 smalltalk.Number);
@@ -2351,7 +2351,7 @@ var self=this;
 return smalltalk.withContext(function($ctx1) { 
var $1;
 $1=_st(self)._propertyAt_ifAbsent_("dependencies",(function(){
 return smalltalk.withContext(function($ctx2) {
return [];
-}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+}, function($ctx2) {$ctx2.fillBlock([], {})})}));
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"dependencies", [], {}, smalltalk.Package)})}
 }),
@@ -2514,10 +2514,10 @@ return smalltalk.withContext(function($ctx1) { 
var $1,$2;
 $1=_st(self)._classes();
 _st($1)._do_((function(each){
 return smalltalk.withContext(function($ctx2) {
return _st(_st((smalltalk.ClassBuilder || ClassBuilder))._new())._setupClass_(each);
-}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+}, function($ctx2) {$ctx2.fillBlock([each], {})})}));
 $2=_st($1)._do_((function(each){
 return smalltalk.withContext(function($ctx2) {
return _st(each)._initialize();
-}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+}, function($ctx2) {$ctx2.fillBlock([each], {})})}));
 return self}, function($ctx1) {$ctx1.fill(self,"setupClasses", [], {}, smalltalk.Package)})}
 }),
 smalltalk.Package);
@@ -2616,7 +2616,7 @@ fn: function (aPackageName,aPrefix){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
_st(jQuery)._getScript_onSuccess_(_st(_st(aPrefix).__comma(aPackageName)).__comma(".js"),(function(){
 return smalltalk.withContext(function($ctx2) {
return _st(_st((smalltalk.Package || Package))._named_(aPackageName))._setupClasses();
-}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+}, function($ctx2) {$ctx2.fillBlock([], {})})}));
 return self}, function($ctx1) {$ctx1.fill(self,"fetch:prefix:", [aPackageName,aPrefix], {}, smalltalk.Package.klass)})}
 }),
 smalltalk.Package.klass);
@@ -2677,18 +2677,18 @@ return _st(others)._add_(each);
 } else {
 return _st(children)._add_(each);
 };
-}, function($ctx2) {$ctx2.fill(null, null, {})})});
+}, function($ctx2) {$ctx2.fillBlock([each], {})})});
 _st($1)._do_($2);
 nodes=_st(children)._collect_((function(each){
 return smalltalk.withContext(function($ctx2) {
return _st((smalltalk.ClassSorterNode || ClassSorterNode))._on_classes_level_(each,others,(0));
-}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+}, function($ctx2) {$ctx2.fillBlock([each], {})})}));
 nodes=_st(nodes)._sorted_((function(a,b){
 return smalltalk.withContext(function($ctx2) {
return _st(_st(_st(a)._theClass())._name()).__lt_eq(_st(_st(b)._theClass())._name());
-}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+}, function($ctx2) {$ctx2.fillBlock([a,b], {})})}));
 expandedClasses=_st((smalltalk.Array || Array))._new();
 _st(nodes)._do_((function(aNode){
 return smalltalk.withContext(function($ctx2) {
return _st(aNode)._traverseClassesWith_(expandedClasses);
-}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+}, function($ctx2) {$ctx2.fillBlock([aNode], {})})}));
 $4=expandedClasses;
 return $4;
 }, function($ctx1) {$ctx1.fill(self,"sortedClasses:", [classes], {children:children,others:others,nodes:nodes,expandedClasses:expandedClasses}, smalltalk.Package.klass)})}
@@ -2758,7 +2758,7 @@ var self=this;
 return smalltalk.withContext(function($ctx1) { 
var $1;
 $1=_st(_st(_st(aPoint)._class()).__eq(_st(self)._class()))._and_((function(){
 return smalltalk.withContext(function($ctx2) {
return _st(_st(_st(aPoint)._x()).__eq(_st(self)._x())).__and(_st(_st(aPoint)._y()).__eq(_st(self)._y()));
-}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+}, function($ctx2) {$ctx2.fillBlock([], {})})}));
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"=", [aPoint], {}, smalltalk.Point)})}
 }),
@@ -2789,12 +2789,12 @@ $3=(function(stream){
 return smalltalk.withContext(function($ctx2) {
_st(stream)._nextPutAll_(_st(_st(self["@x"])._printString()).__comma("@"));
 $4=_st(_st(self["@y"])._notNil())._and_((function(){
 return smalltalk.withContext(function($ctx3) {
return _st(self["@y"])._negative();
-}, function($ctx3) {$ctx3.fill(null, null, {})})}));
+}, function($ctx3) {$ctx3.fillBlock([], {})})}));
 if(smalltalk.assert($4)){
 _st(stream)._space();
 };
 return _st(stream)._nextPutAll_(_st(self["@y"])._printString());
-}, function($ctx2) {$ctx2.fill(null, null, {})})});
+}, function($ctx2) {$ctx2.fillBlock([stream], {})})});
 $1=_st($2)._streamContents_($3);
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"printString", [], {}, smalltalk.Point)})}
@@ -2902,7 +2902,7 @@ var self=this;
 return smalltalk.withContext(function($ctx1) { 
var $1;
 $1=_st(_st((1))._to_(anInteger))._collect_((function(each){
 return smalltalk.withContext(function($ctx2) {
return _st(self)._next();
-}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+}, function($ctx2) {$ctx2.fillBlock([each], {})})}));
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"next:", [anInteger], {}, smalltalk.Random)})}
 }),
@@ -3042,9 +3042,9 @@ return smalltalk.withContext(function($ctx1) { 
var $1;
 _st(self)._try_catch_((function(){
 return smalltalk.withContext(function($ctx2) {
result=_st(self)._basicParse_(aString);
 return result;
-}, function($ctx2) {$ctx2.fill(null, null, {})})}),(function(ex){
+}, function($ctx2) {$ctx2.fillBlock([], {})})}),(function(ex){
 return smalltalk.withContext(function($ctx2) {
return _st(_st(self)._parseError_parsing_(ex,aString))._signal();
-}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+}, function($ctx2) {$ctx2.fillBlock([ex], {})})}));
 $1=result;
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"parse:", [aString], {result:result}, smalltalk.Smalltalk)})}
@@ -3099,10 +3099,10 @@ _st(self)._error_(_st(_st(aClass)._asString()).__comma(" is a Metaclass and cann
 };
 _st(_st(_st(aClass)._methodDictionary())._values())._do_((function(each){
 return smalltalk.withContext(function($ctx2) {
return _st(aClass)._removeCompiledMethod_(each);
-}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+}, function($ctx2) {$ctx2.fillBlock([each], {})})}));
 _st(_st(_st(_st(aClass)._class())._methodDictionary())._values())._do_((function(each){
 return smalltalk.withContext(function($ctx2) {
return _st(_st(aClass)._class())._removeCompiledMethod_(each);
-}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+}, function($ctx2) {$ctx2.fillBlock([each], {})})}));
 _st(self)._deleteClass_(aClass);
 $2=_st((smalltalk.ClassRemoved || ClassRemoved))._new();
 _st($2)._theClass_(aClass);
@@ -3121,10 +3121,10 @@ var self=this;
 var pkg;
 return smalltalk.withContext(function($ctx1) { 
pkg=_st(self)._packageAt_ifAbsent_(packageName,(function(){
 return smalltalk.withContext(function($ctx2) {
return _st(self)._error_(_st("Missing package: ").__comma(packageName));
-}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+}, function($ctx2) {$ctx2.fillBlock([], {})})}));
 _st(_st(pkg)._classes())._do_((function(each){
 return smalltalk.withContext(function($ctx2) {
return _st(self)._removeClass_(each);
-}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+}, function($ctx2) {$ctx2.fillBlock([each], {})})}));
 _st(self)._deletePackage_(packageName);
 return self}, function($ctx1) {$ctx1.fill(self,"removePackage:", [packageName], {pkg:pkg}, smalltalk.Smalltalk)})}
 }),
@@ -3140,7 +3140,7 @@ var pkg;
 return smalltalk.withContext(function($ctx1) { 
var $1;
 pkg=_st(self)._packageAt_ifAbsent_(packageName,(function(){
 return smalltalk.withContext(function($ctx2) {
return _st(self)._error_(_st("Missing package: ").__comma(packageName));
-}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+}, function($ctx2) {$ctx2.fillBlock([], {})})}));
 $1=_st(self)._packageAt_(newName);
 if(($receiver = $1) == nil || $receiver == undefined){
 $1;
@@ -3273,7 +3273,7 @@ var self=this;
 return smalltalk.withContext(function($ctx1) { 
var $2,$1;
 $2=self;
 $1=_st($2)._ifNil_ifNotNil_(aBlock,(function(){
-return smalltalk.withContext(function($ctx2) {
}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+return smalltalk.withContext(function($ctx2) {
}, function($ctx2) {$ctx2.fillBlock([], {})})}));
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"ifNil:", [aBlock], {}, smalltalk.UndefinedObject)})}
 }),

+ 40 - 40
js/Kernel-Objects.js

@@ -67,7 +67,7 @@ return smalltalk.withContext(function($ctx1) { 
var $1;
 variables=_st((smalltalk.HashedCollection || HashedCollection))._new();
 _st(_st(_st(self)._class())._allInstanceVariableNames())._do_((function(each){
 return smalltalk.withContext(function($ctx2) {
return _st(variables)._at_put_(each,_st(_st(self)._instVarAt_(each))._asJSON());
-}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+}, function($ctx2) {$ctx2.fillBlock([each], {})})}));
 $1=variables;
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"asJSON", [], {variables:variables}, smalltalk.Object)})},
@@ -662,7 +662,7 @@ return smalltalk.withContext(function($ctx1) { 
var $1;
 _st(console)._log_(_st(_st(aString).__comma(" time: ")).__comma(_st(_st((smalltalk.Date || Date))._millisecondsToRun_((function(){
 return smalltalk.withContext(function($ctx2) {
result=_st(aBlock)._value();
 return result;
-}, function($ctx2) {$ctx2.fill(null, null, {})})})))._printString()));
+}, function($ctx2) {$ctx2.fillBlock([], {})})})))._printString()));
 $1=result;
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"log:block:", [aString,aBlock], {result:result}, smalltalk.Object)})},
@@ -874,7 +874,7 @@ var self=this;
 return smalltalk.withContext(function($ctx1) { 
var $1;
 $1=_st((smalltalk.String || String))._streamContents_((function(s){
 return smalltalk.withContext(function($ctx2) {
return _st(self)._storeOn_(s);
-}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+}, function($ctx2) {$ctx2.fillBlock([s], {})})}));
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"storeString", [], {}, smalltalk.Object)})},
 args: [],
@@ -1111,7 +1111,7 @@ return smalltalk.withContext(function($ctx1) { 
var $2,$1;
 $2=_st(self).__eq(true);
 $1=_st($2)._ifTrue_ifFalse_(aBlock,(function(){
 return smalltalk.withContext(function($ctx2) {
return false;
-}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+}, function($ctx2) {$ctx2.fillBlock([], {})})}));
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"and:", [aBlock], {}, smalltalk.Boolean)})},
 args: ["aBlock"],
@@ -1167,7 +1167,7 @@ var self=this;
 return smalltalk.withContext(function($ctx1) { 
var $2,$1;
 $2=self;
 $1=_st($2)._ifTrue_ifFalse_((function(){
-return smalltalk.withContext(function($ctx2) {
}, function($ctx2) {$ctx2.fill(null, null, {})})}),aBlock);
+return smalltalk.withContext(function($ctx2) {
}, function($ctx2) {$ctx2.fillBlock([], {})})}),aBlock);
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"ifFalse:", [aBlock], {}, smalltalk.Boolean)})},
 args: ["aBlock"],
@@ -1206,7 +1206,7 @@ var self=this;
 return smalltalk.withContext(function($ctx1) { 
var $2,$1;
 $2=self;
 $1=_st($2)._ifTrue_ifFalse_(aBlock,(function(){
-return smalltalk.withContext(function($ctx2) {
}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+return smalltalk.withContext(function($ctx2) {
}, function($ctx2) {$ctx2.fillBlock([], {})})}));
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"ifTrue:", [aBlock], {}, smalltalk.Boolean)})},
 args: ["aBlock"],
@@ -1283,7 +1283,7 @@ return smalltalk.withContext(function($ctx1) { 
var $2,$1;
 $2=_st(self).__eq(true);
 $1=_st($2)._ifTrue_ifFalse_((function(){
 return smalltalk.withContext(function($ctx2) {
return true;
-}, function($ctx2) {$ctx2.fill(null, null, {})})}),aBlock);
+}, function($ctx2) {$ctx2.fillBlock([], {})})}),aBlock);
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"or:", [aBlock], {}, smalltalk.Boolean)})},
 args: ["aBlock"],
@@ -2881,11 +2881,11 @@ var count;
 return smalltalk.withContext(function($ctx1) { 
count=(1);
 _st((function(){
 return smalltalk.withContext(function($ctx2) {
return _st(count).__gt(self);
-}, function($ctx2) {$ctx2.fill(null, null, {})})}))._whileFalse_((function(){
+}, function($ctx2) {$ctx2.fillBlock([], {})})}))._whileFalse_((function(){
 return smalltalk.withContext(function($ctx2) {
_st(aBlock)._value();
 count=_st(count).__plus((1));
 return count;
-}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+}, function($ctx2) {$ctx2.fillBlock([], {})})}));
 return self}, function($ctx1) {$ctx1.fill(self,"timesRepeat:", [aBlock], {count:count}, smalltalk.Number)})},
 args: ["aBlock"],
 source: "timesRepeat: aBlock\x0a\x09| count |\x0a\x09count := 1.\x0a\x09[count > self] whileFalse: [\x0a\x09    aBlock value.\x0a\x09    count := count + 1]",
@@ -2913,7 +2913,7 @@ count=_st(count).__plus((1));
 count;
 first=_st(first).__plus((1));
 return first;
-}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+}, function($ctx2) {$ctx2.fillBlock([], {})})}));
 $1=array;
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"to:", [aNumber], {array:array,first:first,last:last,count:count}, smalltalk.Number)})},
@@ -2944,23 +2944,23 @@ $2=_st(step).__lt((0));
 if(smalltalk.assert($2)){
 _st((function(){
 return smalltalk.withContext(function($ctx2) {
return _st(value).__gt_eq(stop);
-}, function($ctx2) {$ctx2.fill(null, null, {})})}))._whileTrue_((function(){
+}, function($ctx2) {$ctx2.fillBlock([], {})})}))._whileTrue_((function(){
 return smalltalk.withContext(function($ctx2) {
_st(array)._at_put_(pos,value);
 pos=_st(pos).__plus((1));
 pos;
 value=_st(value).__plus(step);
 return value;
-}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+}, function($ctx2) {$ctx2.fillBlock([], {})})}));
 } else {
 _st((function(){
 return smalltalk.withContext(function($ctx2) {
return _st(value).__lt_eq(stop);
-}, function($ctx2) {$ctx2.fill(null, null, {})})}))._whileTrue_((function(){
+}, function($ctx2) {$ctx2.fillBlock([], {})})}))._whileTrue_((function(){
 return smalltalk.withContext(function($ctx2) {
_st(array)._at_put_(pos,value);
 pos=_st(pos).__plus((1));
 pos;
 value=_st(value).__plus(step);
 return value;
-}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+}, function($ctx2) {$ctx2.fillBlock([], {})})}));
 };
 $3=array;
 return $3;
@@ -2990,19 +2990,19 @@ $2=_st(step).__lt((0));
 if(smalltalk.assert($2)){
 _st((function(){
 return smalltalk.withContext(function($ctx2) {
return _st(value).__gt_eq(stop);
-}, function($ctx2) {$ctx2.fill(null, null, {})})}))._whileTrue_((function(){
+}, function($ctx2) {$ctx2.fillBlock([], {})})}))._whileTrue_((function(){
 return smalltalk.withContext(function($ctx2) {
_st(aBlock)._value_(value);
 value=_st(value).__plus(step);
 return value;
-}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+}, function($ctx2) {$ctx2.fillBlock([], {})})}));
 } else {
 _st((function(){
 return smalltalk.withContext(function($ctx2) {
return _st(value).__lt_eq(stop);
-}, function($ctx2) {$ctx2.fill(null, null, {})})}))._whileTrue_((function(){
+}, function($ctx2) {$ctx2.fillBlock([], {})})}))._whileTrue_((function(){
 return smalltalk.withContext(function($ctx2) {
_st(aBlock)._value_(value);
 value=_st(value).__plus(step);
 return value;
-}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+}, function($ctx2) {$ctx2.fillBlock([], {})})}));
 };
 return self}, function($ctx1) {$ctx1.fill(self,"to:by:do:", [stop,step,aBlock], {value:value}, smalltalk.Number)})},
 args: ["stop", "step", "aBlock"],
@@ -3023,11 +3023,11 @@ var nextValue;
 return smalltalk.withContext(function($ctx1) { 
nextValue=self;
 _st((function(){
 return smalltalk.withContext(function($ctx2) {
return _st(nextValue).__lt_eq(stop);
-}, function($ctx2) {$ctx2.fill(null, null, {})})}))._whileTrue_((function(){
+}, function($ctx2) {$ctx2.fillBlock([], {})})}))._whileTrue_((function(){
 return smalltalk.withContext(function($ctx2) {
_st(aBlock)._value_(nextValue);
 nextValue=_st(nextValue).__plus((1));
 return nextValue;
-}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+}, function($ctx2) {$ctx2.fillBlock([], {})})}));
 return self}, function($ctx1) {$ctx1.fill(self,"to:do:", [stop,aBlock], {nextValue:nextValue}, smalltalk.Number)})},
 args: ["stop", "aBlock"],
 source: "to: stop do: aBlock\x0a\x09\x22Evaluate aBlock for each number from self to aNumber.\x22\x0a\x09| nextValue |\x0a\x09nextValue := self.\x0a\x09[nextValue <= stop]\x0a\x09\x09whileTrue: \x0a\x09\x09\x09[aBlock value: nextValue.\x0a\x09\x09\x09nextValue := nextValue + 1]",
@@ -3253,7 +3253,7 @@ var self=this;
 return smalltalk.withContext(function($ctx1) { 
var $1;
 $1=_st(self)._propertyAt_ifAbsent_("dependencies",(function(){
 return smalltalk.withContext(function($ctx2) {
return [];
-}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+}, function($ctx2) {$ctx2.fillBlock([], {})})}));
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"dependencies", [], {}, smalltalk.Package)})},
 args: [],
@@ -3481,10 +3481,10 @@ return smalltalk.withContext(function($ctx1) { 
var $1,$2;
 $1=_st(self)._classes();
 _st($1)._do_((function(each){
 return smalltalk.withContext(function($ctx2) {
return _st(_st((smalltalk.ClassBuilder || ClassBuilder))._new())._setupClass_(each);
-}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+}, function($ctx2) {$ctx2.fillBlock([each], {})})}));
 $2=_st($1)._do_((function(each){
 return smalltalk.withContext(function($ctx2) {
return _st(each)._initialize();
-}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+}, function($ctx2) {$ctx2.fillBlock([each], {})})}));
 return self}, function($ctx1) {$ctx1.fill(self,"setupClasses", [], {}, smalltalk.Package)})},
 args: [],
 source: "setupClasses\x0a\x09self classes\x0a\x09\x09do: [ :each | ClassBuilder new setupClass: each ];\x0a\x09\x09do: [ :each | each initialize ]",
@@ -3618,7 +3618,7 @@ fn: function (aPackageName,aPrefix){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
_st(jQuery)._getScript_onSuccess_(_st(_st(aPrefix).__comma(aPackageName)).__comma(".js"),(function(){
 return smalltalk.withContext(function($ctx2) {
return _st(_st((smalltalk.Package || Package))._named_(aPackageName))._setupClasses();
-}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+}, function($ctx2) {$ctx2.fillBlock([], {})})}));
 return self}, function($ctx1) {$ctx1.fill(self,"fetch:prefix:", [aPackageName,aPrefix], {}, smalltalk.Package.klass)})},
 args: ["aPackageName", "aPrefix"],
 source: "fetch: aPackageName prefix: aPrefix\x0a\x09jQuery \x0a    \x09getScript: (aPrefix , aPackageName , '.js') \x0a        onSuccess: [ \x0a        \x09(Package named: aPackageName) setupClasses ]",
@@ -3699,18 +3699,18 @@ return _st(others)._add_(each);
 } else {
 return _st(children)._add_(each);
 };
-}, function($ctx2) {$ctx2.fill(null, null, {})})});
+}, function($ctx2) {$ctx2.fillBlock([each], {})})});
 _st($1)._do_($2);
 nodes=_st(children)._collect_((function(each){
 return smalltalk.withContext(function($ctx2) {
return _st((smalltalk.ClassSorterNode || ClassSorterNode))._on_classes_level_(each,others,(0));
-}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+}, function($ctx2) {$ctx2.fillBlock([each], {})})}));
 nodes=_st(nodes)._sorted_((function(a,b){
 return smalltalk.withContext(function($ctx2) {
return _st(_st(_st(a)._theClass())._name()).__lt_eq(_st(_st(b)._theClass())._name());
-}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+}, function($ctx2) {$ctx2.fillBlock([a,b], {})})}));
 expandedClasses=_st((smalltalk.Array || Array))._new();
 _st(nodes)._do_((function(aNode){
 return smalltalk.withContext(function($ctx2) {
return _st(aNode)._traverseClassesWith_(expandedClasses);
-}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+}, function($ctx2) {$ctx2.fillBlock([aNode], {})})}));
 $4=expandedClasses;
 return $4;
 }, function($ctx1) {$ctx1.fill(self,"sortedClasses:", [classes], {children:children,others:others,nodes:nodes,expandedClasses:expandedClasses}, smalltalk.Package.klass)})},
@@ -3806,7 +3806,7 @@ var self=this;
 return smalltalk.withContext(function($ctx1) { 
var $1;
 $1=_st(_st(_st(aPoint)._class()).__eq(_st(self)._class()))._and_((function(){
 return smalltalk.withContext(function($ctx2) {
return _st(_st(_st(aPoint)._x()).__eq(_st(self)._x())).__and(_st(_st(aPoint)._y()).__eq(_st(self)._y()));
-}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+}, function($ctx2) {$ctx2.fillBlock([], {})})}));
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"=", [aPoint], {}, smalltalk.Point)})},
 args: ["aPoint"],
@@ -3847,12 +3847,12 @@ $3=(function(stream){
 return smalltalk.withContext(function($ctx2) {
_st(stream)._nextPutAll_(_st(_st(self["@x"])._printString()).__comma("@"));
 $4=_st(_st(self["@y"])._notNil())._and_((function(){
 return smalltalk.withContext(function($ctx3) {
return _st(self["@y"])._negative();
-}, function($ctx3) {$ctx3.fill(null, null, {})})}));
+}, function($ctx3) {$ctx3.fillBlock([], {})})}));
 if(smalltalk.assert($4)){
 _st(stream)._space();
 };
 return _st(stream)._nextPutAll_(_st(self["@y"])._printString());
-}, function($ctx2) {$ctx2.fill(null, null, {})})});
+}, function($ctx2) {$ctx2.fillBlock([stream], {})})});
 $1=_st($2)._streamContents_($3);
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"printString", [], {}, smalltalk.Point)})},
@@ -4001,7 +4001,7 @@ var self=this;
 return smalltalk.withContext(function($ctx1) { 
var $1;
 $1=_st(_st((1))._to_(anInteger))._collect_((function(each){
 return smalltalk.withContext(function($ctx2) {
return _st(self)._next();
-}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+}, function($ctx2) {$ctx2.fillBlock([each], {})})}));
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"next:", [anInteger], {}, smalltalk.Random)})},
 args: ["anInteger"],
@@ -4197,9 +4197,9 @@ return smalltalk.withContext(function($ctx1) { 
var $1;
 _st(self)._try_catch_((function(){
 return smalltalk.withContext(function($ctx2) {
result=_st(self)._basicParse_(aString);
 return result;
-}, function($ctx2) {$ctx2.fill(null, null, {})})}),(function(ex){
+}, function($ctx2) {$ctx2.fillBlock([], {})})}),(function(ex){
 return smalltalk.withContext(function($ctx2) {
return _st(_st(self)._parseError_parsing_(ex,aString))._signal();
-}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+}, function($ctx2) {$ctx2.fillBlock([ex], {})})}));
 $1=result;
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"parse:", [aString], {result:result}, smalltalk.Smalltalk)})},
@@ -4274,10 +4274,10 @@ _st(self)._error_(_st(_st(aClass)._asString()).__comma(" is a Metaclass and cann
 };
 _st(_st(_st(aClass)._methodDictionary())._values())._do_((function(each){
 return smalltalk.withContext(function($ctx2) {
return _st(aClass)._removeCompiledMethod_(each);
-}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+}, function($ctx2) {$ctx2.fillBlock([each], {})})}));
 _st(_st(_st(_st(aClass)._class())._methodDictionary())._values())._do_((function(each){
 return smalltalk.withContext(function($ctx2) {
return _st(_st(aClass)._class())._removeCompiledMethod_(each);
-}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+}, function($ctx2) {$ctx2.fillBlock([each], {})})}));
 _st(self)._deleteClass_(aClass);
 $2=_st((smalltalk.ClassRemoved || ClassRemoved))._new();
 _st($2)._theClass_(aClass);
@@ -4301,10 +4301,10 @@ var self=this;
 var pkg;
 return smalltalk.withContext(function($ctx1) { 
pkg=_st(self)._packageAt_ifAbsent_(packageName,(function(){
 return smalltalk.withContext(function($ctx2) {
return _st(self)._error_(_st("Missing package: ").__comma(packageName));
-}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+}, function($ctx2) {$ctx2.fillBlock([], {})})}));
 _st(_st(pkg)._classes())._do_((function(each){
 return smalltalk.withContext(function($ctx2) {
return _st(self)._removeClass_(each);
-}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+}, function($ctx2) {$ctx2.fillBlock([each], {})})}));
 _st(self)._deletePackage_(packageName);
 return self}, function($ctx1) {$ctx1.fill(self,"removePackage:", [packageName], {pkg:pkg}, smalltalk.Smalltalk)})},
 args: ["packageName"],
@@ -4325,7 +4325,7 @@ var pkg;
 return smalltalk.withContext(function($ctx1) { 
var $1;
 pkg=_st(self)._packageAt_ifAbsent_(packageName,(function(){
 return smalltalk.withContext(function($ctx2) {
return _st(self)._error_(_st("Missing package: ").__comma(packageName));
-}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+}, function($ctx2) {$ctx2.fillBlock([], {})})}));
 $1=_st(self)._packageAt_(newName);
 if(($receiver = $1) == nil || $receiver == undefined){
 $1;
@@ -4505,7 +4505,7 @@ var self=this;
 return smalltalk.withContext(function($ctx1) { 
var $2,$1;
 $2=self;
 $1=_st($2)._ifNil_ifNotNil_(aBlock,(function(){
-return smalltalk.withContext(function($ctx2) {
}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+return smalltalk.withContext(function($ctx2) {
}, function($ctx2) {$ctx2.fillBlock([], {})})}));
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"ifNil:", [aBlock], {}, smalltalk.UndefinedObject)})},
 args: ["aBlock"],

+ 141 - 141
js/Kernel-Tests.deploy.js

@@ -9,8 +9,8 @@ var self=this;
 return smalltalk.withContext(function($ctx1) { 
_st(self)._shouldnt_raise_((function(){
 return smalltalk.withContext(function($ctx2) {
return _st(_st((function(){
 return smalltalk.withContext(function($ctx3) {
return _st(_st((smalltalk.Error || Error))._new())._signal();
-}, function($ctx3) {$ctx3.fill(null, null, {})})}))._valueWithInterval_((0)))._clearInterval();
-}, function($ctx2) {$ctx2.fill(null, null, {})})}),(smalltalk.Error || Error));
+}, function($ctx3) {$ctx3.fillBlock([], {})})}))._valueWithInterval_((0)))._clearInterval();
+}, function($ctx2) {$ctx2.fillBlock([], {})})}),(smalltalk.Error || Error));
 return self}, function($ctx1) {$ctx1.fill(self,"testCanClearInterval", [], {}, smalltalk.BlockClosureTest)})}
 }),
 smalltalk.BlockClosureTest);
@@ -24,8 +24,8 @@ var self=this;
 return smalltalk.withContext(function($ctx1) { 
_st(self)._shouldnt_raise_((function(){
 return smalltalk.withContext(function($ctx2) {
return _st(_st((function(){
 return smalltalk.withContext(function($ctx3) {
return _st(_st((smalltalk.Error || Error))._new())._signal();
-}, function($ctx3) {$ctx3.fill(null, null, {})})}))._valueWithTimeout_((0)))._clearTimeout();
-}, function($ctx2) {$ctx2.fill(null, null, {})})}),(smalltalk.Error || Error));
+}, function($ctx3) {$ctx3.fillBlock([], {})})}))._valueWithTimeout_((0)))._clearTimeout();
+}, function($ctx2) {$ctx2.fillBlock([], {})})}),(smalltalk.Error || Error));
 return self}, function($ctx1) {$ctx1.fill(self,"testCanClearTimeout", [], {}, smalltalk.BlockClosureTest)})}
 }),
 smalltalk.BlockClosureTest);
@@ -38,7 +38,7 @@ fn: function (){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
_st(self)._assert_(_st(_st((function(){
 return smalltalk.withContext(function($ctx2) {
return _st((1)).__plus((1));
-}, function($ctx2) {$ctx2.fill(null, null, {})})}))._compiledSource())._includesSubString_("function"));
+}, function($ctx2) {$ctx2.fillBlock([], {})})}))._compiledSource())._includesSubString_("function"));
 return self}, function($ctx1) {$ctx1.fill(self,"testCompiledSource", [], {}, smalltalk.BlockClosureTest)})}
 }),
 smalltalk.BlockClosureTest);
@@ -51,9 +51,9 @@ fn: function (){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
_st(self)._assert_equals_((3),_st((function(){
 return smalltalk.withContext(function($ctx2) {
return (3);
-}, function($ctx2) {$ctx2.fill(null, null, {})})}))._ensure_((function(){
+}, function($ctx2) {$ctx2.fillBlock([], {})})}))._ensure_((function(){
 return smalltalk.withContext(function($ctx2) {
return (4);
-}, function($ctx2) {$ctx2.fill(null, null, {})})})));
+}, function($ctx2) {$ctx2.fillBlock([], {})})})));
 return self}, function($ctx1) {$ctx1.fill(self,"testEnsure", [], {}, smalltalk.BlockClosureTest)})}
 }),
 smalltalk.BlockClosureTest);
@@ -67,10 +67,10 @@ var self=this;
 return smalltalk.withContext(function($ctx1) { 
_st(self)._should_raise_((function(){
 return smalltalk.withContext(function($ctx2) {
return _st((function(){
 return smalltalk.withContext(function($ctx3) {
return _st(_st((smalltalk.Error || Error))._new())._signal();
-}, function($ctx3) {$ctx3.fill(null, null, {})})}))._ensure_((function(){
+}, function($ctx3) {$ctx3.fillBlock([], {})})}))._ensure_((function(){
 return smalltalk.withContext(function($ctx3) {
return true;
-}, function($ctx3) {$ctx3.fill(null, null, {})})}));
-}, function($ctx2) {$ctx2.fill(null, null, {})})}),(smalltalk.Error || Error));
+}, function($ctx3) {$ctx3.fillBlock([], {})})}));
+}, function($ctx2) {$ctx2.fillBlock([], {})})}),(smalltalk.Error || Error));
 return self}, function($ctx1) {$ctx1.fill(self,"testEnsureRaises", [], {}, smalltalk.BlockClosureTest)})}
 }),
 smalltalk.BlockClosureTest);
@@ -82,9 +82,9 @@ selector: "testNumArgs",
 fn: function (){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
_st(self)._assert_equals_(_st((function(){
-return smalltalk.withContext(function($ctx2) {
}, function($ctx2) {$ctx2.fill(null, null, {})})}))._numArgs(),(0));
+return smalltalk.withContext(function($ctx2) {
}, function($ctx2) {$ctx2.fillBlock([], {})})}))._numArgs(),(0));
 _st(self)._assert_equals_(_st((function(a,b){
-return smalltalk.withContext(function($ctx2) {
}, function($ctx2) {$ctx2.fill(null, null, {})})}))._numArgs(),(2));
+return smalltalk.withContext(function($ctx2) {
}, function($ctx2) {$ctx2.fillBlock([a,b], {})})}))._numArgs(),(2));
 return self}, function($ctx1) {$ctx1.fill(self,"testNumArgs", [], {}, smalltalk.BlockClosureTest)})}
 }),
 smalltalk.BlockClosureTest);
@@ -97,9 +97,9 @@ fn: function (){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
_st(self)._assert_(_st((function(){
 return smalltalk.withContext(function($ctx2) {
return _st(_st((smalltalk.Error || Error))._new())._signal();
-}, function($ctx2) {$ctx2.fill(null, null, {})})}))._on_do_((smalltalk.Error || Error),(function(ex){
+}, function($ctx2) {$ctx2.fillBlock([], {})})}))._on_do_((smalltalk.Error || Error),(function(ex){
 return smalltalk.withContext(function($ctx2) {
return true;
-}, function($ctx2) {$ctx2.fill(null, null, {})})})));
+}, function($ctx2) {$ctx2.fillBlock([ex], {})})})));
 return self}, function($ctx1) {$ctx1.fill(self,"testOnDo", [], {}, smalltalk.BlockClosureTest)})}
 }),
 smalltalk.BlockClosureTest);
@@ -112,16 +112,16 @@ fn: function (){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
_st(self)._assert_equals_(_st((function(){
 return smalltalk.withContext(function($ctx2) {
return _st((1)).__plus((1));
-}, function($ctx2) {$ctx2.fill(null, null, {})})}))._value(),(2));
+}, function($ctx2) {$ctx2.fillBlock([], {})})}))._value(),(2));
 _st(self)._assert_equals_(_st((function(x){
 return smalltalk.withContext(function($ctx2) {
return _st(x).__plus((1));
-}, function($ctx2) {$ctx2.fill(null, null, {})})}))._value_((2)),(3));
+}, function($ctx2) {$ctx2.fillBlock([x], {})})}))._value_((2)),(3));
 _st(self)._assert_equals_(_st((function(x,y){
 return smalltalk.withContext(function($ctx2) {
return _st(x).__star(y);
-}, function($ctx2) {$ctx2.fill(null, null, {})})}))._value_value_((2),(4)),(8));
+}, function($ctx2) {$ctx2.fillBlock([x,y], {})})}))._value_value_((2),(4)),(8));
 _st(self)._assert_equals_(_st((function(a,b,c){
 return smalltalk.withContext(function($ctx2) {
return (1);
-}, function($ctx2) {$ctx2.fill(null, null, {})})}))._value(),(1));
+}, function($ctx2) {$ctx2.fillBlock([a,b,c], {})})}))._value(),(1));
 return self}, function($ctx1) {$ctx1.fill(self,"testValue", [], {}, smalltalk.BlockClosureTest)})}
 }),
 smalltalk.BlockClosureTest);
@@ -134,13 +134,13 @@ fn: function (){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
_st(self)._assert_equals_(_st((function(){
 return smalltalk.withContext(function($ctx2) {
return (1);
-}, function($ctx2) {$ctx2.fill(null, null, {})})}))._valueWithPossibleArguments_([(3), (4)]),(1));
+}, function($ctx2) {$ctx2.fillBlock([], {})})}))._valueWithPossibleArguments_([(3), (4)]),(1));
 _st(self)._assert_equals_(_st((function(a){
 return smalltalk.withContext(function($ctx2) {
return _st(a).__plus((4));
-}, function($ctx2) {$ctx2.fill(null, null, {})})}))._valueWithPossibleArguments_([(3), (4)]),(7));
+}, function($ctx2) {$ctx2.fillBlock([a], {})})}))._valueWithPossibleArguments_([(3), (4)]),(7));
 _st(self)._assert_equals_(_st((function(a,b){
 return smalltalk.withContext(function($ctx2) {
return _st(a).__plus(b);
-}, function($ctx2) {$ctx2.fill(null, null, {})})}))._valueWithPossibleArguments_([(3), (4), (5)]),(7));
+}, function($ctx2) {$ctx2.fillBlock([a,b], {})})}))._valueWithPossibleArguments_([(3), (4), (5)]),(7));
 return self}, function($ctx1) {$ctx1.fill(self,"testValueWithPossibleArguments", [], {}, smalltalk.BlockClosureTest)})}
 }),
 smalltalk.BlockClosureTest);
@@ -155,17 +155,17 @@ var i;
 return smalltalk.withContext(function($ctx1) { 
i=(0);
 _st((function(){
 return smalltalk.withContext(function($ctx2) {
return _st(i).__gt((5));
-}, function($ctx2) {$ctx2.fill(null, null, {})})}))._whileFalse_((function(){
+}, function($ctx2) {$ctx2.fillBlock([], {})})}))._whileFalse_((function(){
 return smalltalk.withContext(function($ctx2) {
i=_st(i).__plus((1));
 return i;
-}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+}, function($ctx2) {$ctx2.fillBlock([], {})})}));
 _st(self)._assert_equals_(i,(6));
 i=(0);
 _st((function(){
 return smalltalk.withContext(function($ctx2) {
i=_st(i).__plus((1));
 i;
 return _st(i).__gt((5));
-}, function($ctx2) {$ctx2.fill(null, null, {})})}))._whileFalse();
+}, function($ctx2) {$ctx2.fillBlock([], {})})}))._whileFalse();
 _st(self)._assert_equals_(i,(6));
 return self}, function($ctx1) {$ctx1.fill(self,"testWhileFalse", [], {i:i}, smalltalk.BlockClosureTest)})}
 }),
@@ -181,17 +181,17 @@ var i;
 return smalltalk.withContext(function($ctx1) { 
i=(0);
 _st((function(){
 return smalltalk.withContext(function($ctx2) {
return _st(i).__lt((5));
-}, function($ctx2) {$ctx2.fill(null, null, {})})}))._whileTrue_((function(){
+}, function($ctx2) {$ctx2.fillBlock([], {})})}))._whileTrue_((function(){
 return smalltalk.withContext(function($ctx2) {
i=_st(i).__plus((1));
 return i;
-}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+}, function($ctx2) {$ctx2.fillBlock([], {})})}));
 _st(self)._assert_equals_(i,(5));
 i=(0);
 _st((function(){
 return smalltalk.withContext(function($ctx2) {
i=_st(i).__plus((1));
 i;
 return _st(i).__lt((5));
-}, function($ctx2) {$ctx2.fill(null, null, {})})}))._whileTrue();
+}, function($ctx2) {$ctx2.fillBlock([], {})})}))._whileTrue();
 _st(self)._assert_equals_(i,(5));
 return self}, function($ctx1) {$ctx1.fill(self,"testWhileTrue", [], {i:i}, smalltalk.BlockClosureTest)})}
 }),
@@ -421,49 +421,49 @@ return smalltalk.withContext(function($ctx1) { 
var $1,$2,$3,$4,$5,$6,$7,$8;
 $1=self;
 _st($1)._assert_(_st(true)._and_((function(){
 return smalltalk.withContext(function($ctx2) {
return true;
-}, function($ctx2) {$ctx2.fill(null, null, {})})})));
+}, function($ctx2) {$ctx2.fillBlock([], {})})})));
 _st($1)._deny_(_st(true)._and_((function(){
 return smalltalk.withContext(function($ctx2) {
return false;
-}, function($ctx2) {$ctx2.fill(null, null, {})})})));
+}, function($ctx2) {$ctx2.fillBlock([], {})})})));
 _st($1)._deny_(_st(false)._and_((function(){
 return smalltalk.withContext(function($ctx2) {
return true;
-}, function($ctx2) {$ctx2.fill(null, null, {})})})));
+}, function($ctx2) {$ctx2.fillBlock([], {})})})));
 $2=_st($1)._deny_(_st(false)._and_((function(){
 return smalltalk.withContext(function($ctx2) {
return false;
-}, function($ctx2) {$ctx2.fill(null, null, {})})})));
+}, function($ctx2) {$ctx2.fillBlock([], {})})})));
 $3=self;
 _st($3)._assert_(_st(true)._or_((function(){
 return smalltalk.withContext(function($ctx2) {
return true;
-}, function($ctx2) {$ctx2.fill(null, null, {})})})));
+}, function($ctx2) {$ctx2.fillBlock([], {})})})));
 _st($3)._assert_(_st(true)._or_((function(){
 return smalltalk.withContext(function($ctx2) {
return false;
-}, function($ctx2) {$ctx2.fill(null, null, {})})})));
+}, function($ctx2) {$ctx2.fillBlock([], {})})})));
 _st($3)._assert_(_st(false)._or_((function(){
 return smalltalk.withContext(function($ctx2) {
return true;
-}, function($ctx2) {$ctx2.fill(null, null, {})})})));
+}, function($ctx2) {$ctx2.fillBlock([], {})})})));
 $4=_st($3)._deny_(_st(false)._or_((function(){
 return smalltalk.withContext(function($ctx2) {
return false;
-}, function($ctx2) {$ctx2.fill(null, null, {})})})));
+}, function($ctx2) {$ctx2.fillBlock([], {})})})));
 $5=self;
 _st($5)._assert_(_st(true)._and_((function(){
 return smalltalk.withContext(function($ctx2) {
return _st((1)).__gt((0));
-}, function($ctx2) {$ctx2.fill(null, null, {})})})));
+}, function($ctx2) {$ctx2.fillBlock([], {})})})));
 _st($5)._deny_(_st(_st((1)).__gt((0)))._and_((function(){
 return smalltalk.withContext(function($ctx2) {
return false;
-}, function($ctx2) {$ctx2.fill(null, null, {})})})));
+}, function($ctx2) {$ctx2.fillBlock([], {})})})));
 $6=_st($5)._deny_(_st(_st((1)).__gt((0)))._and_((function(){
 return smalltalk.withContext(function($ctx2) {
return _st((1)).__gt((2));
-}, function($ctx2) {$ctx2.fill(null, null, {})})})));
+}, function($ctx2) {$ctx2.fillBlock([], {})})})));
 $7=self;
 _st($7)._assert_(_st(false)._or_((function(){
 return smalltalk.withContext(function($ctx2) {
return _st((1)).__gt((0));
-}, function($ctx2) {$ctx2.fill(null, null, {})})})));
+}, function($ctx2) {$ctx2.fillBlock([], {})})})));
 _st($7)._assert_(_st(_st((1)).__gt((0)))._or_((function(){
 return smalltalk.withContext(function($ctx2) {
return false;
-}, function($ctx2) {$ctx2.fill(null, null, {})})})));
+}, function($ctx2) {$ctx2.fillBlock([], {})})})));
 $8=_st($7)._assert_(_st(_st((1)).__gt((0)))._or_((function(){
 return smalltalk.withContext(function($ctx2) {
return _st((1)).__gt((2));
-}, function($ctx2) {$ctx2.fill(null, null, {})})})));
+}, function($ctx2) {$ctx2.fillBlock([], {})})})));
 return self}, function($ctx1) {$ctx1.fill(self,"testLogicKeywords", [], {}, smalltalk.BooleanTest)})}
 }),
 smalltalk.BooleanTest);
@@ -480,7 +480,7 @@ $2=(function(){
 return smalltalk.withContext(function($ctx2) {
if(smalltalk.assert("")){
 } else {
 };
-}, function($ctx2) {$ctx2.fill(null, null, {})})});
+}, function($ctx2) {$ctx2.fillBlock([], {})})});
 _st($1)._should_raise_($2,(smalltalk.NonBooleanReceiver || NonBooleanReceiver));
 return self}, function($ctx1) {$ctx1.fill(self,"testNonBooleanError", [], {}, smalltalk.BooleanTest)})}
 }),
@@ -558,7 +558,7 @@ var self=this;
 return smalltalk.withContext(function($ctx1) { 
_st(self)._assert_(_st(_st(aCollection)._size()).__eq(_st(anotherCollection)._size()));
 _st(aCollection)._do_((function(each){
 return smalltalk.withContext(function($ctx2) {
return _st(self)._assert_(_st(_st(aCollection)._occurrencesOf_(each)).__eq(_st(anotherCollection)._occurrencesOf_(each)));
-}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+}, function($ctx2) {$ctx2.fillBlock([each], {})})}));
 return self}, function($ctx1) {$ctx1.fill(self,"assertSameContents:as:", [aCollection,anotherCollection], {}, smalltalk.CollectionTest)})}
 }),
 smalltalk.CollectionTest);
@@ -658,7 +658,7 @@ set=_st(c)._asSet();
 _st(self)._assert_(_st(_st(set)._size()).__eq((5)));
 _st(c)._do_((function(each){
 return smalltalk.withContext(function($ctx2) {
return _st(self)._assert_(_st(set)._includes_(each));
-}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+}, function($ctx2) {$ctx2.fillBlock([each], {})})}));
 return self}, function($ctx1) {$ctx1.fill(self,"testAsSet", [], {c:c,set:set}, smalltalk.CollectionTest)})}
 }),
 smalltalk.CollectionTest);
@@ -673,7 +673,7 @@ var newCollection;
 return smalltalk.withContext(function($ctx1) { 
newCollection=[(1), (2), (3), (4)];
 _st(self)._assertSameContents_as_(_st(_st(self)._collection())._collect_((function(each){
 return smalltalk.withContext(function($ctx2) {
return _st(each)._abs();
-}, function($ctx2) {$ctx2.fill(null, null, {})})})),newCollection);
+}, function($ctx2) {$ctx2.fillBlock([each], {})})})),newCollection);
 return self}, function($ctx1) {$ctx1.fill(self,"testCollect", [], {newCollection:newCollection}, smalltalk.CollectionTest)})}
 }),
 smalltalk.CollectionTest);
@@ -686,12 +686,12 @@ fn: function (){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
_st(self)._assert_(_st(_st(_st(self)._collection())._detect_((function(each){
 return smalltalk.withContext(function($ctx2) {
return _st(each).__lt((0));
-}, function($ctx2) {$ctx2.fill(null, null, {})})}))).__eq((-4)));
+}, function($ctx2) {$ctx2.fillBlock([each], {})})}))).__eq((-4)));
 _st(self)._should_raise_((function(){
 return smalltalk.withContext(function($ctx2) {
return _st(_st(self)._collection())._detect_((function(each){
 return smalltalk.withContext(function($ctx3) {
return _st(each).__eq((6));
-}, function($ctx3) {$ctx3.fill(null, null, {})})}));
-}, function($ctx2) {$ctx2.fill(null, null, {})})}),(smalltalk.Error || Error));
+}, function($ctx3) {$ctx3.fillBlock([each], {})})}));
+}, function($ctx2) {$ctx2.fillBlock([], {})})}),(smalltalk.Error || Error));
 return self}, function($ctx1) {$ctx1.fill(self,"testDetect", [], {}, smalltalk.CollectionTest)})}
 }),
 smalltalk.CollectionTest);
@@ -706,7 +706,7 @@ var newCollection;
 return smalltalk.withContext(function($ctx1) { 
newCollection=_st((smalltalk.OrderedCollection || OrderedCollection))._new();
 _st(_st(self)._collection())._do_((function(each){
 return smalltalk.withContext(function($ctx2) {
return _st(newCollection)._add_(each);
-}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+}, function($ctx2) {$ctx2.fillBlock([each], {})})}));
 _st(self)._assertSameContents_as_(_st(self)._collection(),newCollection);
 return self}, function($ctx1) {$ctx1.fill(self,"testDo", [], {newCollection:newCollection}, smalltalk.CollectionTest)})}
 }),
@@ -734,7 +734,7 @@ var newCollection;
 return smalltalk.withContext(function($ctx1) { 
newCollection=[(2), (-4)];
 _st(self)._assertSameContents_as_(_st(_st(self)._collection())._select_((function(each){
 return smalltalk.withContext(function($ctx2) {
return _st(each)._even();
-}, function($ctx2) {$ctx2.fill(null, null, {})})})),newCollection);
+}, function($ctx2) {$ctx2.fillBlock([each], {})})})),newCollection);
 return self}, function($ctx1) {$ctx1.fill(self,"testSelect", [], {newCollection:newCollection}, smalltalk.CollectionTest)})}
 }),
 smalltalk.CollectionTest);
@@ -873,10 +873,10 @@ _st(d)._at_put_("hello","world");
 _st(self)._assert_(_st(_st(d)._at_("hello")).__eq("world"));
 _st(self)._assert_(_st(_st(d)._at_ifAbsent_("hello",(function(){
 return smalltalk.withContext(function($ctx2) {
return nil;
-}, function($ctx2) {$ctx2.fill(null, null, {})})}))).__eq("world"));
+}, function($ctx2) {$ctx2.fillBlock([], {})})}))).__eq("world"));
 _st(self)._deny_(_st(_st(d)._at_ifAbsent_("foo",(function(){
 return smalltalk.withContext(function($ctx2) {
return nil;
-}, function($ctx2) {$ctx2.fill(null, null, {})})}))).__eq("world"));
+}, function($ctx2) {$ctx2.fillBlock([], {})})}))).__eq("world"));
 _st(d)._at_put_((1),(2));
 _st(self)._assert_(_st(_st(d)._at_((1))).__eq((2)));
 _st(d)._at_put_(_st((1)).__at((3)),(3));
@@ -946,7 +946,7 @@ d=_st((smalltalk.Dictionary || Dictionary))._new();
 _st(d)._at_ifAbsent_("hello",(function(){
 return smalltalk.withContext(function($ctx2) {
visited=true;
 return visited;
-}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+}, function($ctx2) {$ctx2.fillBlock([], {})})}));
 _st(self)._assert_(visited);
 return self}, function($ctx1) {$ctx1.fill(self,"testIfAbsent", [], {d:d,visited:visited}, smalltalk.DictionaryTest)})}
 }),
@@ -965,12 +965,12 @@ _st(d)._at_put_("hello","world");
 _st(d)._at_ifPresent_("hello",(function(value){
 return smalltalk.withContext(function($ctx2) {
visited=value;
 return visited;
-}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+}, function($ctx2) {$ctx2.fillBlock([value], {})})}));
 _st(self)._assert_(_st(visited).__eq("world"));
 absent=_st(d)._at_ifPresent_("bye",(function(value){
 return smalltalk.withContext(function($ctx2) {
visited=value;
 return visited;
-}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+}, function($ctx2) {$ctx2.fillBlock([value], {})})}));
 _st(self)._assert_(_st(absent)._isNil());
 return self}, function($ctx1) {$ctx1.fill(self,"testIfPresent", [], {d:d,visited:visited,absent:absent}, smalltalk.DictionaryTest)})}
 }),
@@ -989,18 +989,18 @@ _st(d)._at_put_("hello","world");
 _st(d)._at_ifPresent_ifAbsent_("hello",(function(value){
 return smalltalk.withContext(function($ctx2) {
visited=value;
 return visited;
-}, function($ctx2) {$ctx2.fill(null, null, {})})}),(function(){
+}, function($ctx2) {$ctx2.fillBlock([value], {})})}),(function(){
 return smalltalk.withContext(function($ctx2) {
visited=true;
 return visited;
-}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+}, function($ctx2) {$ctx2.fillBlock([], {})})}));
 _st(self)._assert_(_st(visited).__eq("world"));
 _st(d)._at_ifPresent_ifAbsent_("buy",(function(value){
 return smalltalk.withContext(function($ctx2) {
visited=value;
 return visited;
-}, function($ctx2) {$ctx2.fill(null, null, {})})}),(function(){
+}, function($ctx2) {$ctx2.fillBlock([value], {})})}),(function(){
 return smalltalk.withContext(function($ctx2) {
visited=true;
 return visited;
-}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+}, function($ctx2) {$ctx2.fillBlock([], {})})}));
 _st(self)._assert_(visited);
 return self}, function($ctx1) {$ctx1.fill(self,"testIfPresentIfAbsent", [], {d:d,visited:visited}, smalltalk.DictionaryTest)})}
 }),
@@ -1075,11 +1075,11 @@ _st(self)._assert_(_st(_st(d)._removeKey_(key)).__eq((3)));
 key=(3);
 _st(self)._assert_(_st(_st(d)._removeKey_ifAbsent_(key,(function(){
 return smalltalk.withContext(function($ctx2) {
return (42);
-}, function($ctx2) {$ctx2.fill(null, null, {})})}))).__eq((4)));
+}, function($ctx2) {$ctx2.fillBlock([], {})})}))).__eq((4)));
 key="why";
 _st(self)._assert_(_st(_st(d)._removeKey_ifAbsent_(key,(function(){
 return smalltalk.withContext(function($ctx2) {
return (42);
-}, function($ctx2) {$ctx2.fill(null, null, {})})}))).__eq((42)));
+}, function($ctx2) {$ctx2.fillBlock([], {})})}))).__eq((42)));
 return self}, function($ctx1) {$ctx1.fill(self,"testRemoveKeyIfAbsent", [], {d:d,key:key}, smalltalk.DictionaryTest)})}
 }),
 smalltalk.DictionaryTest);
@@ -1142,7 +1142,7 @@ var self=this;
 return smalltalk.withContext(function($ctx1) { 
_st(self)._assert_(_st(_st(_st(self)._collection())._at_((4))).__eq((-4)));
 _st(self)._should_raise_((function(){
 return smalltalk.withContext(function($ctx2) {
return _st(_st(self)._collection())._at_((5));
-}, function($ctx2) {$ctx2.fill(null, null, {})})}),(smalltalk.Error || Error));
+}, function($ctx2) {$ctx2.fillBlock([], {})})}),(smalltalk.Error || Error));
 return self}, function($ctx1) {$ctx1.fill(self,"testAt", [], {}, smalltalk.SequenceableCollectionTest)})}
 }),
 smalltalk.SequenceableCollectionTest);
@@ -1155,7 +1155,7 @@ fn: function (){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
_st(self)._assert_(_st(_st(_st(self)._collection())._at_ifAbsent_(_st(_st(_st(self)._collection())._size()).__plus((1)),(function(){
 return smalltalk.withContext(function($ctx2) {
return "none";
-}, function($ctx2) {$ctx2.fill(null, null, {})})}))).__eq("none"));
+}, function($ctx2) {$ctx2.fillBlock([], {})})}))).__eq("none"));
 return self}, function($ctx1) {$ctx1.fill(self,"testAtIfAbsent", [], {}, smalltalk.SequenceableCollectionTest)})}
 }),
 smalltalk.SequenceableCollectionTest);
@@ -1175,16 +1175,16 @@ _st(self)._assert_equals_(_st(array)._at_((1)),"hello");
 _st(self)._assert_equals_(_st(array)._at_((2)),"world");
 _st(self)._assert_equals_(_st(array)._at_ifAbsent_((2),(function(){
 return smalltalk.withContext(function($ctx2) {
return "not found";
-}, function($ctx2) {$ctx2.fill(null, null, {})})})),"world");
+}, function($ctx2) {$ctx2.fillBlock([], {})})})),"world");
 _st(self)._assert_equals_(_st(array)._at_ifAbsent_((0),(function(){
 return smalltalk.withContext(function($ctx2) {
return "not found";
-}, function($ctx2) {$ctx2.fill(null, null, {})})})),"not found");
+}, function($ctx2) {$ctx2.fillBlock([], {})})})),"not found");
 _st(self)._assert_equals_(_st(array)._at_ifAbsent_((-10),(function(){
 return smalltalk.withContext(function($ctx2) {
return "not found";
-}, function($ctx2) {$ctx2.fill(null, null, {})})})),"not found");
+}, function($ctx2) {$ctx2.fillBlock([], {})})})),"not found");
 _st(self)._assert_equals_(_st(array)._at_ifAbsent_((3),(function(){
 return smalltalk.withContext(function($ctx2) {
return "not found";
-}, function($ctx2) {$ctx2.fill(null, null, {})})})),"not found");
+}, function($ctx2) {$ctx2.fillBlock([], {})})})),"not found");
 return self}, function($ctx1) {$ctx1.fill(self,"testAtIfAbsent", [], {array:array}, smalltalk.ArrayTest)})}
 }),
 smalltalk.ArrayTest);
@@ -1208,7 +1208,7 @@ fn: function (){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
_st(self)._assert_equals_("zork",_st("")._ifEmpty_((function(){
 return smalltalk.withContext(function($ctx2) {
return "zork";
-}, function($ctx2) {$ctx2.fill(null, null, {})})})));
+}, function($ctx2) {$ctx2.fillBlock([], {})})})));
 return self}, function($ctx1) {$ctx1.fill(self,"testIfEmpty", [], {}, smalltalk.ArrayTest)})}
 }),
 smalltalk.ArrayTest);
@@ -1287,10 +1287,10 @@ fn: function (){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
_st(self)._should_raise_((function(){
 return smalltalk.withContext(function($ctx2) {
return _st("hello")._add_("a");
-}, function($ctx2) {$ctx2.fill(null, null, {})})}),(smalltalk.Error || Error));
+}, function($ctx2) {$ctx2.fillBlock([], {})})}),(smalltalk.Error || Error));
 _st(self)._should_raise_((function(){
 return smalltalk.withContext(function($ctx2) {
return _st("hello")._remove_("h");
-}, function($ctx2) {$ctx2.fill(null, null, {})})}),(smalltalk.Error || Error));
+}, function($ctx2) {$ctx2.fillBlock([], {})})}),(smalltalk.Error || Error));
 return self}, function($ctx1) {$ctx1.fill(self,"testAddRemove", [], {}, smalltalk.StringTest)})}
 }),
 smalltalk.StringTest);
@@ -1316,7 +1316,7 @@ return smalltalk.withContext(function($ctx1) { 
_st(self)._assert_(_st(_st("hell
 _st(self)._assert_(_st(_st("hello")._at_((5))).__eq("o"));
 _st(self)._assert_(_st(_st("hello")._at_ifAbsent_((6),(function(){
 return smalltalk.withContext(function($ctx2) {
return nil;
-}, function($ctx2) {$ctx2.fill(null, null, {})})}))).__eq(nil));
+}, function($ctx2) {$ctx2.fillBlock([], {})})}))).__eq(nil));
 return self}, function($ctx1) {$ctx1.fill(self,"testAt", [], {}, smalltalk.StringTest)})}
 }),
 smalltalk.StringTest);
@@ -1329,7 +1329,7 @@ fn: function (){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
_st(self)._should_raise_((function(){
 return smalltalk.withContext(function($ctx2) {
return _st("hello")._at_put_((1),"a");
-}, function($ctx2) {$ctx2.fill(null, null, {})})}),(smalltalk.Error || Error));
+}, function($ctx2) {$ctx2.fillBlock([], {})})}),(smalltalk.Error || Error));
 return self}, function($ctx1) {$ctx1.fill(self,"testAtPut", [], {}, smalltalk.StringTest)})}
 }),
 smalltalk.StringTest);
@@ -1344,7 +1344,7 @@ var newCollection;
 return smalltalk.withContext(function($ctx1) { 
newCollection="hheelllloo";
 _st(self)._assertSameContents_as_(_st(_st(self)._collection())._collect_((function(each){
 return smalltalk.withContext(function($ctx2) {
return _st(each).__comma(each);
-}, function($ctx2) {$ctx2.fill(null, null, {})})})),newCollection);
+}, function($ctx2) {$ctx2.fillBlock([each], {})})})),newCollection);
 return self}, function($ctx1) {$ctx1.fill(self,"testCollect", [], {newCollection:newCollection}, smalltalk.StringTest)})}
 }),
 smalltalk.StringTest);
@@ -1368,12 +1368,12 @@ fn: function (){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
_st(self)._assert_(_st(_st(_st(self)._collection())._detect_((function(each){
 return smalltalk.withContext(function($ctx2) {
return _st(each).__eq("h");
-}, function($ctx2) {$ctx2.fill(null, null, {})})}))).__eq("h"));
+}, function($ctx2) {$ctx2.fillBlock([each], {})})}))).__eq("h"));
 _st(self)._should_raise_((function(){
 return smalltalk.withContext(function($ctx2) {
return _st(_st(self)._collection())._detect_((function(each){
 return smalltalk.withContext(function($ctx3) {
return _st(each).__eq((6));
-}, function($ctx3) {$ctx3.fill(null, null, {})})}));
-}, function($ctx2) {$ctx2.fill(null, null, {})})}),(smalltalk.Error || Error));
+}, function($ctx3) {$ctx3.fillBlock([each], {})})}));
+}, function($ctx2) {$ctx2.fillBlock([], {})})}),(smalltalk.Error || Error));
 return self}, function($ctx1) {$ctx1.fill(self,"testDetect", [], {}, smalltalk.StringTest)})}
 }),
 smalltalk.StringTest);
@@ -1441,7 +1441,7 @@ var newCollection;
 return smalltalk.withContext(function($ctx1) { 
newCollection="o";
 _st(self)._assertSameContents_as_(_st(_st(self)._collection())._select_((function(each){
 return smalltalk.withContext(function($ctx2) {
return _st(each).__eq("o");
-}, function($ctx2) {$ctx2.fill(null, null, {})})})),newCollection);
+}, function($ctx2) {$ctx2.fillBlock([each], {})})})),newCollection);
 return self}, function($ctx1) {$ctx1.fill(self,"testSelect", [], {newCollection:newCollection}, smalltalk.StringTest)})}
 }),
 smalltalk.StringTest);
@@ -1471,7 +1471,7 @@ _st($1)._nextPutAll_("hello");
 _st($1)._space();
 $2=_st($1)._nextPutAll_("world");
 return $2;
-}, function($ctx2) {$ctx2.fill(null, null, {})})})));
+}, function($ctx2) {$ctx2.fillBlock([aStream], {})})})));
 return self}, function($ctx1) {$ctx1.fill(self,"testStreamContents", [], {}, smalltalk.StringTest)})}
 }),
 smalltalk.StringTest);
@@ -1546,7 +1546,7 @@ return smalltalk.withContext(function($ctx1) { 
_st(self)._assert_(_st(_st(small
 _st(self)._assert_(_st(_st(smalltalk.symbolFor("hello"))._at_((5))).__eq("o"));
 _st(self)._assert_(_st(_st(smalltalk.symbolFor("hello"))._at_ifAbsent_((6),(function(){
 return smalltalk.withContext(function($ctx2) {
return nil;
-}, function($ctx2) {$ctx2.fill(null, null, {})})}))).__eq(nil));
+}, function($ctx2) {$ctx2.fillBlock([], {})})}))).__eq(nil));
 return self}, function($ctx1) {$ctx1.fill(self,"testAt", [], {}, smalltalk.SymbolTest)})}
 }),
 smalltalk.SymbolTest);
@@ -1559,7 +1559,7 @@ fn: function (){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
_st(self)._should_raise_((function(){
 return smalltalk.withContext(function($ctx2) {
return _st("hello")._at_put_((1),"a");
-}, function($ctx2) {$ctx2.fill(null, null, {})})}),(smalltalk.Error || Error));
+}, function($ctx2) {$ctx2.fillBlock([], {})})}),(smalltalk.Error || Error));
 return self}, function($ctx1) {$ctx1.fill(self,"testAtPut", [], {}, smalltalk.SymbolTest)})}
 }),
 smalltalk.SymbolTest);
@@ -1574,7 +1574,7 @@ var newCollection;
 return smalltalk.withContext(function($ctx1) { 
newCollection=smalltalk.symbolFor("hheelllloo");
 _st(self)._assertSameContents_as_(_st(_st(self)._collection())._collect_((function(each){
 return smalltalk.withContext(function($ctx2) {
return _st(each).__comma(each);
-}, function($ctx2) {$ctx2.fill(null, null, {})})})),newCollection);
+}, function($ctx2) {$ctx2.fillBlock([each], {})})})),newCollection);
 return self}, function($ctx1) {$ctx1.fill(self,"testCollect", [], {newCollection:newCollection}, smalltalk.SymbolTest)})}
 }),
 smalltalk.SymbolTest);
@@ -1617,12 +1617,12 @@ fn: function (){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
_st(self)._assert_(_st(_st(_st(self)._collection())._detect_((function(each){
 return smalltalk.withContext(function($ctx2) {
return _st(each).__eq("h");
-}, function($ctx2) {$ctx2.fill(null, null, {})})}))).__eq("h"));
+}, function($ctx2) {$ctx2.fillBlock([each], {})})}))).__eq("h"));
 _st(self)._should_raise_((function(){
 return smalltalk.withContext(function($ctx2) {
return _st(_st(self)._collection())._detect_((function(each){
 return smalltalk.withContext(function($ctx3) {
return _st(each).__eq("z");
-}, function($ctx3) {$ctx3.fill(null, null, {})})}));
-}, function($ctx2) {$ctx2.fill(null, null, {})})}),(smalltalk.Error || Error));
+}, function($ctx3) {$ctx3.fillBlock([each], {})})}));
+}, function($ctx2) {$ctx2.fillBlock([], {})})}),(smalltalk.Error || Error));
 return self}, function($ctx1) {$ctx1.fill(self,"testDetect", [], {}, smalltalk.SymbolTest)})}
 }),
 smalltalk.SymbolTest);
@@ -1693,7 +1693,7 @@ var newCollection;
 return smalltalk.withContext(function($ctx1) { 
newCollection="o";
 _st(self)._assertSameContents_as_(_st(_st(self)._collection())._select_((function(each){
 return smalltalk.withContext(function($ctx2) {
return _st(each).__eq("o");
-}, function($ctx2) {$ctx2.fill(null, null, {})})})),newCollection);
+}, function($ctx2) {$ctx2.fillBlock([each], {})})})),newCollection);
 return self}, function($ctx1) {$ctx1.fill(self,"testSelect", [], {newCollection:newCollection}, smalltalk.SymbolTest)})}
 }),
 smalltalk.SymbolTest);
@@ -1745,7 +1745,7 @@ fn: function (){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
_st(self)._should_raise_((function(){
 return smalltalk.withContext(function($ctx2) {
return _st(_st(self)._jsObject())._foo();
-}, function($ctx2) {$ctx2.fill(null, null, {})})}),(smalltalk.MessageNotUnderstood || MessageNotUnderstood));
+}, function($ctx2) {$ctx2.fillBlock([], {})})}),(smalltalk.MessageNotUnderstood || MessageNotUnderstood));
 return self}, function($ctx1) {$ctx1.fill(self,"testDNU", [], {}, smalltalk.JSObjectProxyTest)})}
 }),
 smalltalk.JSObjectProxyTest);
@@ -1810,7 +1810,7 @@ var object;
 return smalltalk.withContext(function($ctx1) { 
object=_st(self)._jsObject();
 _st(self)._shouldnt_raise_((function(){
 return smalltalk.withContext(function($ctx2) {
return _st(object)._e();
-}, function($ctx2) {$ctx2.fill(null, null, {})})}),(smalltalk.MessageNotUnderstood || MessageNotUnderstood));
+}, function($ctx2) {$ctx2.fillBlock([], {})})}),(smalltalk.MessageNotUnderstood || MessageNotUnderstood));
 _st(self)._assert_(_st(_st(object)._e())._isNil());
 return self}, function($ctx1) {$ctx1.fill(self,"testPropertyThatReturnsUndefined", [], {object:object}, smalltalk.JSObjectProxyTest)})}
 }),
@@ -1957,127 +1957,127 @@ fn: function (){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
_st(self)._should_raise_((function(){
 return smalltalk.withContext(function($ctx2) {
return _st((16))._rG();
-}, function($ctx2) {$ctx2.fill(null, null, {})})}),(smalltalk.MessageNotUnderstood || MessageNotUnderstood));
+}, function($ctx2) {$ctx2.fillBlock([], {})})}),(smalltalk.MessageNotUnderstood || MessageNotUnderstood));
 _st(self)._should_raise_((function(){
 return smalltalk.withContext(function($ctx2) {
return _st((16))._rg();
-}, function($ctx2) {$ctx2.fill(null, null, {})})}),(smalltalk.MessageNotUnderstood || MessageNotUnderstood));
+}, function($ctx2) {$ctx2.fillBlock([], {})})}),(smalltalk.MessageNotUnderstood || MessageNotUnderstood));
 _st(self)._should_raise_((function(){
 return smalltalk.withContext(function($ctx2) {
return _st((16))._rH();
-}, function($ctx2) {$ctx2.fill(null, null, {})})}),(smalltalk.MessageNotUnderstood || MessageNotUnderstood));
+}, function($ctx2) {$ctx2.fillBlock([], {})})}),(smalltalk.MessageNotUnderstood || MessageNotUnderstood));
 _st(self)._should_raise_((function(){
 return smalltalk.withContext(function($ctx2) {
return _st((16))._rh();
-}, function($ctx2) {$ctx2.fill(null, null, {})})}),(smalltalk.MessageNotUnderstood || MessageNotUnderstood));
+}, function($ctx2) {$ctx2.fillBlock([], {})})}),(smalltalk.MessageNotUnderstood || MessageNotUnderstood));
 _st(self)._should_raise_((function(){
 return smalltalk.withContext(function($ctx2) {
return _st((16))._rI();
-}, function($ctx2) {$ctx2.fill(null, null, {})})}),(smalltalk.MessageNotUnderstood || MessageNotUnderstood));
+}, function($ctx2) {$ctx2.fillBlock([], {})})}),(smalltalk.MessageNotUnderstood || MessageNotUnderstood));
 _st(self)._should_raise_((function(){
 return smalltalk.withContext(function($ctx2) {
return _st((16))._ri();
-}, function($ctx2) {$ctx2.fill(null, null, {})})}),(smalltalk.MessageNotUnderstood || MessageNotUnderstood));
+}, function($ctx2) {$ctx2.fillBlock([], {})})}),(smalltalk.MessageNotUnderstood || MessageNotUnderstood));
 _st(self)._should_raise_((function(){
 return smalltalk.withContext(function($ctx2) {
return _st((16))._rJ();
-}, function($ctx2) {$ctx2.fill(null, null, {})})}),(smalltalk.MessageNotUnderstood || MessageNotUnderstood));
+}, function($ctx2) {$ctx2.fillBlock([], {})})}),(smalltalk.MessageNotUnderstood || MessageNotUnderstood));
 _st(self)._should_raise_((function(){
 return smalltalk.withContext(function($ctx2) {
return _st((16))._rj();
-}, function($ctx2) {$ctx2.fill(null, null, {})})}),(smalltalk.MessageNotUnderstood || MessageNotUnderstood));
+}, function($ctx2) {$ctx2.fillBlock([], {})})}),(smalltalk.MessageNotUnderstood || MessageNotUnderstood));
 _st(self)._should_raise_((function(){
 return smalltalk.withContext(function($ctx2) {
return _st((16))._rK();
-}, function($ctx2) {$ctx2.fill(null, null, {})})}),(smalltalk.MessageNotUnderstood || MessageNotUnderstood));
+}, function($ctx2) {$ctx2.fillBlock([], {})})}),(smalltalk.MessageNotUnderstood || MessageNotUnderstood));
 _st(self)._should_raise_((function(){
 return smalltalk.withContext(function($ctx2) {
return _st((16))._rk();
-}, function($ctx2) {$ctx2.fill(null, null, {})})}),(smalltalk.MessageNotUnderstood || MessageNotUnderstood));
+}, function($ctx2) {$ctx2.fillBlock([], {})})}),(smalltalk.MessageNotUnderstood || MessageNotUnderstood));
 _st(self)._should_raise_((function(){
 return smalltalk.withContext(function($ctx2) {
return _st((16))._rL();
-}, function($ctx2) {$ctx2.fill(null, null, {})})}),(smalltalk.MessageNotUnderstood || MessageNotUnderstood));
+}, function($ctx2) {$ctx2.fillBlock([], {})})}),(smalltalk.MessageNotUnderstood || MessageNotUnderstood));
 _st(self)._should_raise_((function(){
 return smalltalk.withContext(function($ctx2) {
return _st((16))._rl();
-}, function($ctx2) {$ctx2.fill(null, null, {})})}),(smalltalk.MessageNotUnderstood || MessageNotUnderstood));
+}, function($ctx2) {$ctx2.fillBlock([], {})})}),(smalltalk.MessageNotUnderstood || MessageNotUnderstood));
 _st(self)._should_raise_((function(){
 return smalltalk.withContext(function($ctx2) {
return _st((16))._rM();
-}, function($ctx2) {$ctx2.fill(null, null, {})})}),(smalltalk.MessageNotUnderstood || MessageNotUnderstood));
+}, function($ctx2) {$ctx2.fillBlock([], {})})}),(smalltalk.MessageNotUnderstood || MessageNotUnderstood));
 _st(self)._should_raise_((function(){
 return smalltalk.withContext(function($ctx2) {
return _st((16))._rm();
-}, function($ctx2) {$ctx2.fill(null, null, {})})}),(smalltalk.MessageNotUnderstood || MessageNotUnderstood));
+}, function($ctx2) {$ctx2.fillBlock([], {})})}),(smalltalk.MessageNotUnderstood || MessageNotUnderstood));
 _st(self)._should_raise_((function(){
 return smalltalk.withContext(function($ctx2) {
return _st((16))._rN();
-}, function($ctx2) {$ctx2.fill(null, null, {})})}),(smalltalk.MessageNotUnderstood || MessageNotUnderstood));
+}, function($ctx2) {$ctx2.fillBlock([], {})})}),(smalltalk.MessageNotUnderstood || MessageNotUnderstood));
 _st(self)._should_raise_((function(){
 return smalltalk.withContext(function($ctx2) {
return _st((16))._rn();
-}, function($ctx2) {$ctx2.fill(null, null, {})})}),(smalltalk.MessageNotUnderstood || MessageNotUnderstood));
+}, function($ctx2) {$ctx2.fillBlock([], {})})}),(smalltalk.MessageNotUnderstood || MessageNotUnderstood));
 _st(self)._should_raise_((function(){
 return smalltalk.withContext(function($ctx2) {
return _st((16))._rO();
-}, function($ctx2) {$ctx2.fill(null, null, {})})}),(smalltalk.MessageNotUnderstood || MessageNotUnderstood));
+}, function($ctx2) {$ctx2.fillBlock([], {})})}),(smalltalk.MessageNotUnderstood || MessageNotUnderstood));
 _st(self)._should_raise_((function(){
 return smalltalk.withContext(function($ctx2) {
return _st((16))._ro();
-}, function($ctx2) {$ctx2.fill(null, null, {})})}),(smalltalk.MessageNotUnderstood || MessageNotUnderstood));
+}, function($ctx2) {$ctx2.fillBlock([], {})})}),(smalltalk.MessageNotUnderstood || MessageNotUnderstood));
 _st(self)._should_raise_((function(){
 return smalltalk.withContext(function($ctx2) {
return _st((16))._rP();
-}, function($ctx2) {$ctx2.fill(null, null, {})})}),(smalltalk.MessageNotUnderstood || MessageNotUnderstood));
+}, function($ctx2) {$ctx2.fillBlock([], {})})}),(smalltalk.MessageNotUnderstood || MessageNotUnderstood));
 _st(self)._should_raise_((function(){
 return smalltalk.withContext(function($ctx2) {
return _st((16))._rp();
-}, function($ctx2) {$ctx2.fill(null, null, {})})}),(smalltalk.MessageNotUnderstood || MessageNotUnderstood));
+}, function($ctx2) {$ctx2.fillBlock([], {})})}),(smalltalk.MessageNotUnderstood || MessageNotUnderstood));
 _st(self)._should_raise_((function(){
 return smalltalk.withContext(function($ctx2) {
return _st((16))._rQ();
-}, function($ctx2) {$ctx2.fill(null, null, {})})}),(smalltalk.MessageNotUnderstood || MessageNotUnderstood));
+}, function($ctx2) {$ctx2.fillBlock([], {})})}),(smalltalk.MessageNotUnderstood || MessageNotUnderstood));
 _st(self)._should_raise_((function(){
 return smalltalk.withContext(function($ctx2) {
return _st((16))._rq();
-}, function($ctx2) {$ctx2.fill(null, null, {})})}),(smalltalk.MessageNotUnderstood || MessageNotUnderstood));
+}, function($ctx2) {$ctx2.fillBlock([], {})})}),(smalltalk.MessageNotUnderstood || MessageNotUnderstood));
 _st(self)._should_raise_((function(){
 return smalltalk.withContext(function($ctx2) {
return _st((16))._rR();
-}, function($ctx2) {$ctx2.fill(null, null, {})})}),(smalltalk.MessageNotUnderstood || MessageNotUnderstood));
+}, function($ctx2) {$ctx2.fillBlock([], {})})}),(smalltalk.MessageNotUnderstood || MessageNotUnderstood));
 _st(self)._should_raise_((function(){
 return smalltalk.withContext(function($ctx2) {
return _st((16))._rr();
-}, function($ctx2) {$ctx2.fill(null, null, {})})}),(smalltalk.MessageNotUnderstood || MessageNotUnderstood));
+}, function($ctx2) {$ctx2.fillBlock([], {})})}),(smalltalk.MessageNotUnderstood || MessageNotUnderstood));
 _st(self)._should_raise_((function(){
 return smalltalk.withContext(function($ctx2) {
return _st((16))._rS();
-}, function($ctx2) {$ctx2.fill(null, null, {})})}),(smalltalk.MessageNotUnderstood || MessageNotUnderstood));
+}, function($ctx2) {$ctx2.fillBlock([], {})})}),(smalltalk.MessageNotUnderstood || MessageNotUnderstood));
 _st(self)._should_raise_((function(){
 return smalltalk.withContext(function($ctx2) {
return _st((16))._rs();
-}, function($ctx2) {$ctx2.fill(null, null, {})})}),(smalltalk.MessageNotUnderstood || MessageNotUnderstood));
+}, function($ctx2) {$ctx2.fillBlock([], {})})}),(smalltalk.MessageNotUnderstood || MessageNotUnderstood));
 _st(self)._should_raise_((function(){
 return smalltalk.withContext(function($ctx2) {
return _st((16))._rT();
-}, function($ctx2) {$ctx2.fill(null, null, {})})}),(smalltalk.MessageNotUnderstood || MessageNotUnderstood));
+}, function($ctx2) {$ctx2.fillBlock([], {})})}),(smalltalk.MessageNotUnderstood || MessageNotUnderstood));
 _st(self)._should_raise_((function(){
 return smalltalk.withContext(function($ctx2) {
return _st((16))._rt();
-}, function($ctx2) {$ctx2.fill(null, null, {})})}),(smalltalk.MessageNotUnderstood || MessageNotUnderstood));
+}, function($ctx2) {$ctx2.fillBlock([], {})})}),(smalltalk.MessageNotUnderstood || MessageNotUnderstood));
 _st(self)._should_raise_((function(){
 return smalltalk.withContext(function($ctx2) {
return _st((16))._rU();
-}, function($ctx2) {$ctx2.fill(null, null, {})})}),(smalltalk.MessageNotUnderstood || MessageNotUnderstood));
+}, function($ctx2) {$ctx2.fillBlock([], {})})}),(smalltalk.MessageNotUnderstood || MessageNotUnderstood));
 _st(self)._should_raise_((function(){
 return smalltalk.withContext(function($ctx2) {
return _st((16))._ru();
-}, function($ctx2) {$ctx2.fill(null, null, {})})}),(smalltalk.MessageNotUnderstood || MessageNotUnderstood));
+}, function($ctx2) {$ctx2.fillBlock([], {})})}),(smalltalk.MessageNotUnderstood || MessageNotUnderstood));
 _st(self)._should_raise_((function(){
 return smalltalk.withContext(function($ctx2) {
return _st((16))._rV();
-}, function($ctx2) {$ctx2.fill(null, null, {})})}),(smalltalk.MessageNotUnderstood || MessageNotUnderstood));
+}, function($ctx2) {$ctx2.fillBlock([], {})})}),(smalltalk.MessageNotUnderstood || MessageNotUnderstood));
 _st(self)._should_raise_((function(){
 return smalltalk.withContext(function($ctx2) {
return _st((16))._rv();
-}, function($ctx2) {$ctx2.fill(null, null, {})})}),(smalltalk.MessageNotUnderstood || MessageNotUnderstood));
+}, function($ctx2) {$ctx2.fillBlock([], {})})}),(smalltalk.MessageNotUnderstood || MessageNotUnderstood));
 _st(self)._should_raise_((function(){
 return smalltalk.withContext(function($ctx2) {
return _st((16))._rW();
-}, function($ctx2) {$ctx2.fill(null, null, {})})}),(smalltalk.MessageNotUnderstood || MessageNotUnderstood));
+}, function($ctx2) {$ctx2.fillBlock([], {})})}),(smalltalk.MessageNotUnderstood || MessageNotUnderstood));
 _st(self)._should_raise_((function(){
 return smalltalk.withContext(function($ctx2) {
return _st((16))._rw();
-}, function($ctx2) {$ctx2.fill(null, null, {})})}),(smalltalk.MessageNotUnderstood || MessageNotUnderstood));
+}, function($ctx2) {$ctx2.fillBlock([], {})})}),(smalltalk.MessageNotUnderstood || MessageNotUnderstood));
 _st(self)._should_raise_((function(){
 return smalltalk.withContext(function($ctx2) {
return _st((16))._rX();
-}, function($ctx2) {$ctx2.fill(null, null, {})})}),(smalltalk.MessageNotUnderstood || MessageNotUnderstood));
+}, function($ctx2) {$ctx2.fillBlock([], {})})}),(smalltalk.MessageNotUnderstood || MessageNotUnderstood));
 _st(self)._should_raise_((function(){
 return smalltalk.withContext(function($ctx2) {
return _st((16))._rx();
-}, function($ctx2) {$ctx2.fill(null, null, {})})}),(smalltalk.MessageNotUnderstood || MessageNotUnderstood));
+}, function($ctx2) {$ctx2.fillBlock([], {})})}),(smalltalk.MessageNotUnderstood || MessageNotUnderstood));
 _st(self)._should_raise_((function(){
 return smalltalk.withContext(function($ctx2) {
return _st((16))._rY();
-}, function($ctx2) {$ctx2.fill(null, null, {})})}),(smalltalk.MessageNotUnderstood || MessageNotUnderstood));
+}, function($ctx2) {$ctx2.fillBlock([], {})})}),(smalltalk.MessageNotUnderstood || MessageNotUnderstood));
 _st(self)._should_raise_((function(){
 return smalltalk.withContext(function($ctx2) {
return _st((16))._ry();
-}, function($ctx2) {$ctx2.fill(null, null, {})})}),(smalltalk.MessageNotUnderstood || MessageNotUnderstood));
+}, function($ctx2) {$ctx2.fillBlock([], {})})}),(smalltalk.MessageNotUnderstood || MessageNotUnderstood));
 _st(self)._should_raise_((function(){
 return smalltalk.withContext(function($ctx2) {
return _st((16))._rZ();
-}, function($ctx2) {$ctx2.fill(null, null, {})})}),(smalltalk.MessageNotUnderstood || MessageNotUnderstood));
+}, function($ctx2) {$ctx2.fillBlock([], {})})}),(smalltalk.MessageNotUnderstood || MessageNotUnderstood));
 _st(self)._should_raise_((function(){
 return smalltalk.withContext(function($ctx2) {
return _st((16))._rz();
-}, function($ctx2) {$ctx2.fill(null, null, {})})}),(smalltalk.MessageNotUnderstood || MessageNotUnderstood));
+}, function($ctx2) {$ctx2.fillBlock([], {})})}),(smalltalk.MessageNotUnderstood || MessageNotUnderstood));
 _st(self)._should_raise_((function(){
 return smalltalk.withContext(function($ctx2) {
return _st((11259375))._Z();
-}, function($ctx2) {$ctx2.fill(null, null, {})})}),(smalltalk.MessageNotUnderstood || MessageNotUnderstood));
+}, function($ctx2) {$ctx2.fillBlock([], {})})}),(smalltalk.MessageNotUnderstood || MessageNotUnderstood));
 return self}, function($ctx1) {$ctx1.fill(self,"testInvalidHexNumbers", [], {}, smalltalk.NumberTest)})}
 }),
 smalltalk.NumberTest);
@@ -2176,12 +2176,12 @@ return smalltalk.withContext(function($ctx1) { 
i=(0);
 _st((0))._timesRepeat_((function(){
 return smalltalk.withContext(function($ctx2) {
i=_st(i).__plus((1));
 return i;
-}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+}, function($ctx2) {$ctx2.fillBlock([], {})})}));
 _st(self)._assert_equals_(i,(0));
 _st((5))._timesRepeat_((function(){
 return smalltalk.withContext(function($ctx2) {
i=_st(i).__plus((1));
 return i;
-}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+}, function($ctx2) {$ctx2.fillBlock([], {})})}));
 _st(self)._assert_equals_(i,(5));
 return self}, function($ctx1) {$ctx1.fill(self,"testTimesRepeat", [], {i:i}, smalltalk.NumberTest)})}
 }),
@@ -2207,7 +2207,7 @@ var self=this;
 return smalltalk.withContext(function($ctx1) { 
_st(self)._assert_equals_(_st((0))._to_by_((6),(2)),[(0), (2), (4), (6)]);
 _st(self)._should_raise_((function(){
 return smalltalk.withContext(function($ctx2) {
return _st((1))._to_by_((4),(0));
-}, function($ctx2) {$ctx2.fill(null, null, {})})}),(smalltalk.Error || Error));
+}, function($ctx2) {$ctx2.fillBlock([], {})})}),(smalltalk.Error || Error));
 return self}, function($ctx1) {$ctx1.fill(self,"testToBy", [], {}, smalltalk.NumberTest)})}
 }),
 smalltalk.NumberTest);
@@ -2291,10 +2291,10 @@ var o;
 return smalltalk.withContext(function($ctx1) { 
o=_st((smalltalk.Object || Object))._new();
 _st(o)._basicAt_put_("func",(function(){
 return smalltalk.withContext(function($ctx2) {
return "hello";
-}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+}, function($ctx2) {$ctx2.fillBlock([], {})})}));
 _st(o)._basicAt_put_("func2",(function(a){
 return smalltalk.withContext(function($ctx2) {
return _st(a).__plus((1));
-}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+}, function($ctx2) {$ctx2.fillBlock([a], {})})}));
 _st(self)._assert_equals_(_st(o)._basicPerform_("func"),"hello");
 _st(self)._assert_equals_(_st(o)._basicPerform_withArguments_("func2",[(3)]),(4));
 return self}, function($ctx1) {$ctx1.fill(self,"testBasicPerform", [], {o:o}, smalltalk.ObjectTest)})}
@@ -2309,7 +2309,7 @@ fn: function (){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
_st(self)._should_raise_((function(){
 return smalltalk.withContext(function($ctx2) {
return _st(_st((smalltalk.Object || Object))._new())._foo();
-}, function($ctx2) {$ctx2.fill(null, null, {})})}),(smalltalk.MessageNotUnderstood || MessageNotUnderstood));
+}, function($ctx2) {$ctx2.fillBlock([], {})})}),(smalltalk.MessageNotUnderstood || MessageNotUnderstood));
 return self}, function($ctx1) {$ctx1.fill(self,"testDNU", [], {}, smalltalk.ObjectTest)})}
 }),
 smalltalk.ObjectTest);
@@ -2338,7 +2338,7 @@ fn: function (){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
_st(self)._should_raise_((function(){
 return smalltalk.withContext(function($ctx2) {
return _st(_st((smalltalk.Object || Object))._new())._halt();
-}, function($ctx2) {$ctx2.fill(null, null, {})})}),(smalltalk.Error || Error));
+}, function($ctx2) {$ctx2.fillBlock([], {})})}),(smalltalk.Error || Error));
 return self}, function($ctx1) {$ctx1.fill(self,"testHalt", [], {}, smalltalk.ObjectTest)})}
 }),
 smalltalk.ObjectTest);
@@ -2396,9 +2396,9 @@ $10=_st($11).__eq(true);
 _st($9)._assert_($10);
 _st(self)._assert_(_st(_st(_st((smalltalk.Object || Object))._new())._ifNotNil_ifNil_((function(){
 return smalltalk.withContext(function($ctx2) {
return true;
-}, function($ctx2) {$ctx2.fill(null, null, {})})}),(function(){
+}, function($ctx2) {$ctx2.fillBlock([], {})})}),(function(){
 return smalltalk.withContext(function($ctx2) {
return false;
-}, function($ctx2) {$ctx2.fill(null, null, {})})}))).__eq(true));
+}, function($ctx2) {$ctx2.fillBlock([], {})})}))).__eq(true));
 return self}, function($ctx1) {$ctx1.fill(self,"testIfNil", [], {}, smalltalk.ObjectTest)})}
 }),
 smalltalk.ObjectTest);
@@ -2698,7 +2698,7 @@ _st(self)._assert_(_st(next).__gt_eq((0)));
 _st(self)._assert_(_st(next).__lt((1)));
 _st(self)._deny_(_st(current).__eq(next));
 return _st(next).__eq(current);
-}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+}, function($ctx2) {$ctx2.fillBlock([], {current:current,next:next})})}));
 return self}, function($ctx1) {$ctx1.fill(self,"textNext", [], {}, smalltalk.RandomTest)})}
 }),
 smalltalk.RandomTest);
@@ -2733,7 +2733,7 @@ fn: function (){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
_st(self)._should_raise_((function(){
 return smalltalk.withContext(function($ctx2) {
return _st(_st((smalltalk.Set || Set))._new())._at_put_((1),(2));
-}, function($ctx2) {$ctx2.fill(null, null, {})})}),(smalltalk.Error || Error));
+}, function($ctx2) {$ctx2.fillBlock([], {})})}),(smalltalk.Error || Error));
 return self}, function($ctx1) {$ctx1.fill(self,"testAt", [], {}, smalltalk.SetTest)})}
 }),
 smalltalk.SetTest);
@@ -2854,9 +2854,9 @@ $7=false;
 _st($6)._assert_equals_($7,true);
 _st(self)._deny_(_st(_st(nil)._ifNotNil_ifNil_((function(){
 return smalltalk.withContext(function($ctx2) {
return true;
-}, function($ctx2) {$ctx2.fill(null, null, {})})}),(function(){
+}, function($ctx2) {$ctx2.fillBlock([], {})})}),(function(){
 return smalltalk.withContext(function($ctx2) {
return false;
-}, function($ctx2) {$ctx2.fill(null, null, {})})}))).__eq(true));
+}, function($ctx2) {$ctx2.fillBlock([], {})})}))).__eq(true));
 return self}, function($ctx1) {$ctx1.fill(self,"testIfNil", [], {}, smalltalk.UndefinedTest)})}
 }),
 smalltalk.UndefinedTest);

File diff suppressed because it is too large
+ 128 - 128
js/Kernel-Tests.js


+ 28 - 28
js/SUnit-Tests.deploy.js

@@ -44,10 +44,10 @@ 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));
-}, function($ctx2) {$ctx2.fill(null, null, {})})}),(smalltalk.Error || Error));
+}, function($ctx2) {$ctx2.fillBlock([], {})})}),(smalltalk.Error || Error));
 _st(self)._should_raise_((function(){
 return smalltalk.withContext(function($ctx2) {
return _st(self["@empty"])._at_put_((5),smalltalk.symbolFor("abc"));
-}, function($ctx2) {$ctx2.fill(null, null, {})})}),(smalltalk.Error || Error));
+}, function($ctx2) {$ctx2.fillBlock([], {})})}),(smalltalk.Error || Error));
 return self}, function($ctx1) {$ctx1.fill(self,"testIllegal", [], {}, smalltalk.ExampleSetTest)})}
 }),
 smalltalk.ExampleSetTest);
@@ -106,7 +106,7 @@ self["@flag"]=_st(_st(self)._async_((function(){
 return smalltalk.withContext(function($ctx2) {
self["@flag"]="ok";
 self["@flag"];
 return _st(self)._error_("Intentional");
-}, function($ctx2) {$ctx2.fill(null, null, {})})})))._valueWithTimeout_((5));
+}, function($ctx2) {$ctx2.fillBlock([], {})})})))._valueWithTimeout_((5));
 return self}, function($ctx1) {$ctx1.fill(self,"fakeError", [], {}, smalltalk.SUnitAsyncTest)})}
 }),
 smalltalk.SUnitAsyncTest);
@@ -121,7 +121,7 @@ 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");
-}, function($ctx2) {$ctx2.fill(null, null, {})})})))._valueWithTimeout_((5));
+}, function($ctx2) {$ctx2.fillBlock([], {})})})))._valueWithTimeout_((5));
 return self}, function($ctx1) {$ctx1.fill(self,"fakeErrorFailingInTearDown", [], {}, smalltalk.SUnitAsyncTest)})}
 }),
 smalltalk.SUnitAsyncTest);
@@ -138,7 +138,7 @@ self["@flag"]=_st(_st(self)._async_((function(){
 return smalltalk.withContext(function($ctx2) {
self["@flag"]="ok";
 self["@flag"];
 return _st(self)._assert_(false);
-}, function($ctx2) {$ctx2.fill(null, null, {})})})))._valueWithTimeout_((5));
+}, function($ctx2) {$ctx2.fillBlock([], {})})})))._valueWithTimeout_((5));
 return self}, function($ctx1) {$ctx1.fill(self,"fakeFailure", [], {}, smalltalk.SUnitAsyncTest)})}
 }),
 smalltalk.SUnitAsyncTest);
@@ -154,8 +154,8 @@ _st(_st(self)._async_((function(){
 return smalltalk.withContext(function($ctx2) {
_st(self)._timeout_((5));
 return _st(_st(self)._async_((function(){
 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));
+}, function($ctx3) {$ctx3.fillBlock([], {})})})))._valueWithTimeout_((10));
+}, function($ctx2) {$ctx2.fillBlock([], {})})})))._valueWithTimeout_((5));
 return self}, function($ctx1) {$ctx1.fill(self,"fakeMultipleTimeoutFailing", [], {}, smalltalk.SUnitAsyncTest)})}
 }),
 smalltalk.SUnitAsyncTest);
@@ -171,8 +171,8 @@ _st(_st(self)._async_((function(){
 return smalltalk.withContext(function($ctx2) {
_st(self)._timeout_((20));
 return _st(_st(self)._async_((function(){
 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));
+}, function($ctx3) {$ctx3.fillBlock([], {})})})))._valueWithTimeout_((10));
+}, function($ctx2) {$ctx2.fillBlock([], {})})})))._valueWithTimeout_((5));
 return self}, function($ctx1) {$ctx1.fill(self,"fakeMultipleTimeoutPassing", [], {}, smalltalk.SUnitAsyncTest)})}
 }),
 smalltalk.SUnitAsyncTest);
@@ -186,7 +186,7 @@ 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();
-}, function($ctx2) {$ctx2.fill(null, null, {})})})))._valueWithTimeout_((5));
+}, function($ctx2) {$ctx2.fillBlock([], {})})})))._valueWithTimeout_((5));
 return self}, function($ctx1) {$ctx1.fill(self,"fakeTimeout", [], {}, smalltalk.SUnitAsyncTest)})}
 }),
 smalltalk.SUnitAsyncTest);
@@ -211,7 +211,7 @@ 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();
-}, function($ctx2) {$ctx2.fill(null, null, {})})})))._sorted();
+}, function($ctx2) {$ctx2.fillBlock([each], {})})})))._sorted();
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"sortedSelectors:", [aCollection], {}, smalltalk.SUnitAsyncTest)})}
 }),
@@ -238,7 +238,7 @@ var suite,runner,result,assertBlock;
 return smalltalk.withContext(function($ctx1) { 
var $1,$2,$4,$6,$5,$3;
 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, {})})}));
+}, function($ctx2) {$ctx2.fillBlock([each], {})})}));
 runner=_st((smalltalk.TestSuiteRunner || TestSuiteRunner))._on_(suite);
 _st(self)._timeout_((200));
 result=_st(runner)._result();
@@ -246,7 +246,7 @@ 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();
-}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+}, function($ctx2) {$ctx2.fillBlock([], {})})}));
 $1=_st(runner)._announcer();
 $2=(smalltalk.ResultAnnouncement || ResultAnnouncement);
 $3=(function(ann){
@@ -254,9 +254,9 @@ return smalltalk.withContext(function($ctx2) {
$4=_st(_st(ann)._result()).__eq_e
 $5=(function(){
 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, {})})});
+}, function($ctx3) {$ctx3.fillBlock([], {})})});
 return _st($4)._ifTrue_($5);
-}, function($ctx2) {$ctx2.fill(null, null, {})})});
+}, function($ctx2) {$ctx2.fillBlock([ann], {})})});
 _st($1)._on_do_($2,$3);
 _st(runner)._run();
 return self}, function($ctx1) {$ctx1.fill(self,"testAsyncErrorsAndFailures", [], {suite:suite,runner:runner,result:result,assertBlock:assertBlock}, smalltalk.SUnitAsyncTest)})}
@@ -271,13 +271,13 @@ 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) {
}, function($ctx3) {$ctx3.fill(null, null, {})})}));
-}, function($ctx2) {$ctx2.fill(null, null, {})})}),(smalltalk.Error || Error));
+return smalltalk.withContext(function($ctx3) {
}, function($ctx3) {$ctx3.fillBlock([], {})})}));
+}, function($ctx2) {$ctx2.fillBlock([], {})})}),(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) {
}, function($ctx3) {$ctx3.fill(null, null, {})})}));
-}, function($ctx2) {$ctx2.fill(null, null, {})})}),(smalltalk.Error || Error));
+return smalltalk.withContext(function($ctx3) {
}, function($ctx3) {$ctx3.fillBlock([], {})})}));
+}, function($ctx2) {$ctx2.fillBlock([], {})})}),(smalltalk.Error || Error));
 _st(self)._finished();
 return self}, function($ctx1) {$ctx1.fill(self,"testAsyncNeedsTimeout", [], {}, smalltalk.SUnitAsyncTest)})}
 }),
@@ -291,11 +291,11 @@ fn: function (){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
_st(self)._should_raise_((function(){
 return smalltalk.withContext(function($ctx2) {
return _st(self)._finished();
-}, function($ctx2) {$ctx2.fill(null, null, {})})}),(smalltalk.Error || Error));
+}, function($ctx2) {$ctx2.fillBlock([], {})})}),(smalltalk.Error || Error));
 _st(self)._timeout_((0));
 _st(self)._shouldnt_raise_((function(){
 return smalltalk.withContext(function($ctx2) {
return _st(self)._finished();
-}, function($ctx2) {$ctx2.fill(null, null, {})})}),(smalltalk.Error || Error));
+}, function($ctx2) {$ctx2.fillBlock([], {})})}),(smalltalk.Error || Error));
 return self}, function($ctx1) {$ctx1.fill(self,"testFinishedNeedsTimeout", [], {}, smalltalk.SUnitAsyncTest)})}
 }),
 smalltalk.SUnitAsyncTest);
@@ -328,7 +328,7 @@ return smalltalk.withContext(function($ctx2) {
_st(self)._assert_(true);
 _st(self)._finished();
 self["@flag"]="ok";
 return self["@flag"];
-}, function($ctx2) {$ctx2.fill(null, null, {})})})))._valueWithTimeout_((5));
+}, function($ctx2) {$ctx2.fillBlock([], {})})})))._valueWithTimeout_((5));
 return self}, function($ctx1) {$ctx1.fill(self,"testPass", [], {}, smalltalk.SUnitAsyncTest)})}
 }),
 smalltalk.SUnitAsyncTest);
@@ -343,7 +343,7 @@ var suite,runner,result,assertBlock;
 return smalltalk.withContext(function($ctx1) { 
var $1,$2,$4,$6,$5,$3;
 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, {})})}));
+}, function($ctx2) {$ctx2.fillBlock([each], {})})}));
 runner=_st((smalltalk.TestSuiteRunner || TestSuiteRunner))._on_(suite);
 _st(self)._timeout_((200));
 result=_st(runner)._result();
@@ -351,7 +351,7 @@ 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();
-}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+}, function($ctx2) {$ctx2.fillBlock([], {})})}));
 $1=_st(runner)._announcer();
 $2=(smalltalk.ResultAnnouncement || ResultAnnouncement);
 $3=(function(ann){
@@ -359,9 +359,9 @@ return smalltalk.withContext(function($ctx2) {
$4=_st(_st(ann)._result()).__eq_e
 $5=(function(){
 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, {})})});
+}, function($ctx3) {$ctx3.fillBlock([], {})})});
 return _st($4)._ifTrue_($5);
-}, function($ctx2) {$ctx2.fill(null, null, {})})});
+}, function($ctx2) {$ctx2.fillBlock([ann], {})})});
 _st($1)._on_do_($2,$3);
 _st(runner)._run();
 return self}, function($ctx1) {$ctx1.fill(self,"testTimeouts", [], {suite:suite,runner:runner,result:result,assertBlock:assertBlock}, smalltalk.SUnitAsyncTest)})}
@@ -385,7 +385,7 @@ self["@flag"];
 x=_st(x).__plus((1));
 x;
 return _st(self)._assert_equals_((1),x);
-}, function($ctx2) {$ctx2.fill(null, null, {})})})))._valueWithTimeout_((0));
+}, function($ctx2) {$ctx2.fillBlock([], {})})})))._valueWithTimeout_((0));
 self["@flag"]=_st(_st(self)._async_((function(){
 return smalltalk.withContext(function($ctx2) {
_st(self)._finished();
 self["@flag"]="ok";
@@ -393,7 +393,7 @@ self["@flag"];
 x=_st(x).__plus((1));
 x;
 return _st(self)._assert_equals_((1),x);
-}, function($ctx2) {$ctx2.fill(null, null, {})})})))._valueWithTimeout_((0));
+}, function($ctx2) {$ctx2.fillBlock([], {})})})))._valueWithTimeout_((0));
 return self}, function($ctx1) {$ctx1.fill(self,"testTwoAsyncPassesWithFinishedOnlyOneIsRun", [], {x:x}, smalltalk.SUnitAsyncTest)})}
 }),
 smalltalk.SUnitAsyncTest);

+ 28 - 28
js/SUnit-Tests.js

@@ -61,10 +61,10 @@ 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));
-}, function($ctx2) {$ctx2.fill(null, null, {})})}),(smalltalk.Error || Error));
+}, function($ctx2) {$ctx2.fillBlock([], {})})}),(smalltalk.Error || Error));
 _st(self)._should_raise_((function(){
 return smalltalk.withContext(function($ctx2) {
return _st(self["@empty"])._at_put_((5),smalltalk.symbolFor("abc"));
-}, function($ctx2) {$ctx2.fill(null, null, {})})}),(smalltalk.Error || Error));
+}, function($ctx2) {$ctx2.fillBlock([], {})})}),(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",
@@ -143,7 +143,7 @@ self["@flag"]=_st(_st(self)._async_((function(){
 return smalltalk.withContext(function($ctx2) {
self["@flag"]="ok";
 self["@flag"];
 return _st(self)._error_("Intentional");
-}, function($ctx2) {$ctx2.fill(null, null, {})})})))._valueWithTimeout_((5));
+}, function($ctx2) {$ctx2.fillBlock([], {})})})))._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",
@@ -163,7 +163,7 @@ 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");
-}, function($ctx2) {$ctx2.fill(null, null, {})})})))._valueWithTimeout_((5));
+}, function($ctx2) {$ctx2.fillBlock([], {})})})))._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",
@@ -185,7 +185,7 @@ self["@flag"]=_st(_st(self)._async_((function(){
 return smalltalk.withContext(function($ctx2) {
self["@flag"]="ok";
 self["@flag"];
 return _st(self)._assert_(false);
-}, function($ctx2) {$ctx2.fill(null, null, {})})})))._valueWithTimeout_((5));
+}, function($ctx2) {$ctx2.fillBlock([], {})})})))._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",
@@ -206,8 +206,8 @@ _st(_st(self)._async_((function(){
 return smalltalk.withContext(function($ctx2) {
_st(self)._timeout_((5));
 return _st(_st(self)._async_((function(){
 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));
+}, function($ctx3) {$ctx3.fillBlock([], {})})})))._valueWithTimeout_((10));
+}, function($ctx2) {$ctx2.fillBlock([], {})})})))._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",
@@ -228,8 +228,8 @@ _st(_st(self)._async_((function(){
 return smalltalk.withContext(function($ctx2) {
_st(self)._timeout_((20));
 return _st(_st(self)._async_((function(){
 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));
+}, function($ctx3) {$ctx3.fillBlock([], {})})})))._valueWithTimeout_((10));
+}, function($ctx2) {$ctx2.fillBlock([], {})})})))._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",
@@ -248,7 +248,7 @@ 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();
-}, function($ctx2) {$ctx2.fill(null, null, {})})})))._valueWithTimeout_((5));
+}, function($ctx2) {$ctx2.fillBlock([], {})})})))._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",
@@ -283,7 +283,7 @@ 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();
-}, function($ctx2) {$ctx2.fill(null, null, {})})})))._sorted();
+}, function($ctx2) {$ctx2.fillBlock([each], {})})})))._sorted();
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"sortedSelectors:", [aCollection], {}, smalltalk.SUnitAsyncTest)})},
 args: ["aCollection"],
@@ -320,7 +320,7 @@ var suite,runner,result,assertBlock;
 return smalltalk.withContext(function($ctx1) { 
var $1,$2,$4,$6,$5,$3;
 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, {})})}));
+}, function($ctx2) {$ctx2.fillBlock([each], {})})}));
 runner=_st((smalltalk.TestSuiteRunner || TestSuiteRunner))._on_(suite);
 _st(self)._timeout_((200));
 result=_st(runner)._result();
@@ -328,7 +328,7 @@ 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();
-}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+}, function($ctx2) {$ctx2.fillBlock([], {})})}));
 $1=_st(runner)._announcer();
 $2=(smalltalk.ResultAnnouncement || ResultAnnouncement);
 $3=(function(ann){
@@ -336,9 +336,9 @@ return smalltalk.withContext(function($ctx2) {
$4=_st(_st(ann)._result()).__eq_e
 $5=(function(){
 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, {})})});
+}, function($ctx3) {$ctx3.fillBlock([], {})})});
 return _st($4)._ifTrue_($5);
-}, function($ctx2) {$ctx2.fill(null, null, {})})});
+}, function($ctx2) {$ctx2.fillBlock([ann], {})})});
 _st($1)._on_do_($2,$3);
 _st(runner)._run();
 return self}, function($ctx1) {$ctx1.fill(self,"testAsyncErrorsAndFailures", [], {suite:suite,runner:runner,result:result,assertBlock:assertBlock}, smalltalk.SUnitAsyncTest)})},
@@ -358,13 +358,13 @@ 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) {
}, function($ctx3) {$ctx3.fill(null, null, {})})}));
-}, function($ctx2) {$ctx2.fill(null, null, {})})}),(smalltalk.Error || Error));
+return smalltalk.withContext(function($ctx3) {
}, function($ctx3) {$ctx3.fillBlock([], {})})}));
+}, function($ctx2) {$ctx2.fillBlock([], {})})}),(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) {
}, function($ctx3) {$ctx3.fill(null, null, {})})}));
-}, function($ctx2) {$ctx2.fill(null, null, {})})}),(smalltalk.Error || Error));
+return smalltalk.withContext(function($ctx3) {
}, function($ctx3) {$ctx3.fillBlock([], {})})}));
+}, function($ctx2) {$ctx2.fillBlock([], {})})}),(smalltalk.Error || Error));
 _st(self)._finished();
 return self}, function($ctx1) {$ctx1.fill(self,"testAsyncNeedsTimeout", [], {}, smalltalk.SUnitAsyncTest)})},
 args: [],
@@ -383,11 +383,11 @@ fn: function (){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
_st(self)._should_raise_((function(){
 return smalltalk.withContext(function($ctx2) {
return _st(self)._finished();
-}, function($ctx2) {$ctx2.fill(null, null, {})})}),(smalltalk.Error || Error));
+}, function($ctx2) {$ctx2.fillBlock([], {})})}),(smalltalk.Error || Error));
 _st(self)._timeout_((0));
 _st(self)._shouldnt_raise_((function(){
 return smalltalk.withContext(function($ctx2) {
return _st(self)._finished();
-}, function($ctx2) {$ctx2.fill(null, null, {})})}),(smalltalk.Error || Error));
+}, function($ctx2) {$ctx2.fillBlock([], {})})}),(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.",
@@ -430,7 +430,7 @@ return smalltalk.withContext(function($ctx2) {
_st(self)._assert_(true);
 _st(self)._finished();
 self["@flag"]="ok";
 return self["@flag"];
-}, function($ctx2) {$ctx2.fill(null, null, {})})})))._valueWithTimeout_((5));
+}, function($ctx2) {$ctx2.fillBlock([], {})})})))._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",
@@ -450,7 +450,7 @@ var suite,runner,result,assertBlock;
 return smalltalk.withContext(function($ctx1) { 
var $1,$2,$4,$6,$5,$3;
 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, {})})}));
+}, function($ctx2) {$ctx2.fillBlock([each], {})})}));
 runner=_st((smalltalk.TestSuiteRunner || TestSuiteRunner))._on_(suite);
 _st(self)._timeout_((200));
 result=_st(runner)._result();
@@ -458,7 +458,7 @@ 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();
-}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+}, function($ctx2) {$ctx2.fillBlock([], {})})}));
 $1=_st(runner)._announcer();
 $2=(smalltalk.ResultAnnouncement || ResultAnnouncement);
 $3=(function(ann){
@@ -466,9 +466,9 @@ return smalltalk.withContext(function($ctx2) {
$4=_st(_st(ann)._result()).__eq_e
 $5=(function(){
 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, {})})});
+}, function($ctx3) {$ctx3.fillBlock([], {})})});
 return _st($4)._ifTrue_($5);
-}, function($ctx2) {$ctx2.fill(null, null, {})})});
+}, function($ctx2) {$ctx2.fillBlock([ann], {})})});
 _st($1)._on_do_($2,$3);
 _st(runner)._run();
 return self}, function($ctx1) {$ctx1.fill(self,"testTimeouts", [], {suite:suite,runner:runner,result:result,assertBlock:assertBlock}, smalltalk.SUnitAsyncTest)})},
@@ -497,7 +497,7 @@ self["@flag"];
 x=_st(x).__plus((1));
 x;
 return _st(self)._assert_equals_((1),x);
-}, function($ctx2) {$ctx2.fill(null, null, {})})})))._valueWithTimeout_((0));
+}, function($ctx2) {$ctx2.fillBlock([], {})})})))._valueWithTimeout_((0));
 self["@flag"]=_st(_st(self)._async_((function(){
 return smalltalk.withContext(function($ctx2) {
_st(self)._finished();
 self["@flag"]="ok";
@@ -505,7 +505,7 @@ self["@flag"];
 x=_st(x).__plus((1));
 x;
 return _st(self)._assert_equals_((1),x);
-}, function($ctx2) {$ctx2.fill(null, null, {})})})))._valueWithTimeout_((0));
+}, function($ctx2) {$ctx2.fillBlock([], {})})})))._valueWithTimeout_((0));
 return self}, function($ctx1) {$ctx1.fill(self,"testTwoAsyncPassesWithFinishedOnlyOneIsRun", [], {x:x}, 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.",

+ 26 - 26
js/SUnit.deploy.js

@@ -81,7 +81,7 @@ return smalltalk.withContext(function($ctx2) {
$2=_st(self)._isAsync();
 if(smalltalk.assert($2)){
 return _st(c)._execute_(aBlock);
 };
-}, function($ctx2) {$ctx2.fill(null, null, {})})});
+}, function($ctx2) {$ctx2.fillBlock([], {})})});
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"async:", [aBlock], {c:c}, smalltalk.TestCase)})}
 }),
@@ -226,9 +226,9 @@ var self=this;
 return smalltalk.withContext(function($ctx1) { 
_st(self)._assert_(_st((function(){
 return smalltalk.withContext(function($ctx2) {
_st(aBlock)._value();
 return false;
-}, function($ctx2) {$ctx2.fill(null, null, {})})}))._on_do_(anExceptionClass,(function(ex){
+}, function($ctx2) {$ctx2.fillBlock([], {})})}))._on_do_(anExceptionClass,(function(ex){
 return smalltalk.withContext(function($ctx2) {
return true;
-}, function($ctx2) {$ctx2.fill(null, null, {})})})));
+}, function($ctx2) {$ctx2.fillBlock([ex], {})})})));
 return self}, function($ctx1) {$ctx1.fill(self,"should:raise:", [aBlock,anExceptionClass], {}, smalltalk.TestCase)})}
 }),
 smalltalk.TestCase);
@@ -242,9 +242,9 @@ var self=this;
 return smalltalk.withContext(function($ctx1) { 
_st(self)._assert_(_st((function(){
 return smalltalk.withContext(function($ctx2) {
_st(aBlock)._value();
 return true;
-}, function($ctx2) {$ctx2.fill(null, null, {})})}))._on_do_(anExceptionClass,(function(ex){
+}, function($ctx2) {$ctx2.fillBlock([], {})})}))._on_do_(anExceptionClass,(function(ex){
 return smalltalk.withContext(function($ctx2) {
return false;
-}, function($ctx2) {$ctx2.fill(null, null, {})})})));
+}, function($ctx2) {$ctx2.fillBlock([ex], {})})})));
 return self}, function($ctx1) {$ctx1.fill(self,"shouldnt:raise:", [aBlock,anExceptionClass], {}, smalltalk.TestCase)})}
 }),
 smalltalk.TestCase);
@@ -289,7 +289,7 @@ _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");
-}, function($ctx2) {$ctx2.fill(null, null, {})})})))._valueWithTimeout_(aNumber);
+}, function($ctx2) {$ctx2.fillBlock([], {})})})))._valueWithTimeout_(aNumber);
 return self}, function($ctx1) {$ctx1.fill(self,"timeout:", [aNumber], {}, smalltalk.TestCase)})}
 }),
 smalltalk.TestCase);
@@ -323,7 +323,7 @@ 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);
-}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+}, function($ctx2) {$ctx2.fillBlock([each], {})})}));
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"buildSuite", [], {}, smalltalk.TestCase.klass)})}
 }),
@@ -393,7 +393,7 @@ 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");
-}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+}, function($ctx2) {$ctx2.fillBlock([each], {})})}));
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"testSelectors", [], {}, smalltalk.TestCase.klass)})}
 }),
@@ -416,12 +416,12 @@ failed;
 _st(aBlock)._value();
 failed=false;
 return failed;
-}, function($ctx2) {$ctx2.fill(null, null, {})})});
+}, function($ctx2) {$ctx2.fillBlock([], {})})});
 $2=(function(){
 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, {})})}));
+}, function($ctx3) {$ctx3.fillBlock([], {})})}));
 if(smalltalk.assert($3)){
 _st(self["@testCase"])._finished();
 };
@@ -429,7 +429,7 @@ $4=_st(self["@testCase"])._isAsync();
 if(! smalltalk.assert($4)){
 return _st(self["@testCase"])._tearDown();
 };
-}, function($ctx2) {$ctx2.fill(null, null, {})})});
+}, function($ctx2) {$ctx2.fillBlock([], {})})});
 _st($1)._ensure_($2);
 return self}, function($ctx1) {$ctx1.fill(self,"execute:", [aBlock], {failed:failed}, smalltalk.TestContext)})}
 }),
@@ -444,7 +444,7 @@ var self=this;
 return smalltalk.withContext(function($ctx1) { 
_st(self)._execute_((function(){
 return smalltalk.withContext(function($ctx2) {
_st(self["@testCase"])._setUp();
 return _st(self["@testCase"])._performTest();
-}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+}, function($ctx2) {$ctx2.fillBlock([], {})})}));
 return self}, function($ctx1) {$ctx1.fill(self,"start", [], {}, smalltalk.TestContext)})}
 }),
 smalltalk.TestContext);
@@ -489,15 +489,15 @@ 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]);
-}, function($ctx3) {$ctx3.fill(null, null, {})})}));
-}, function($ctx2) {$ctx2.fill(null, null, {})})});
+}, function($ctx3) {$ctx3.fillBlock([], {})})}));
+}, function($ctx2) {$ctx2.fillBlock([], {})})});
 $2=(function(){
 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, {})})});
+}, function($ctx2) {$ctx2.fillBlock([], {})})});
 _st($1)._ensure_($2);
 return self}, function($ctx1) {$ctx1.fill(self,"execute:", [aBlock], {}, smalltalk.ReportingTestContext)})}
 }),
@@ -534,10 +534,10 @@ 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"]);
-}, function($ctx3) {$ctx3.fill(null, null, {})})}));
-}, function($ctx2) {$ctx2.fill(null, null, {})})}))._on_do_((smalltalk.Error || Error),(function(ex){
+}, function($ctx3) {$ctx3.fillBlock([ex], {})})}));
+}, function($ctx2) {$ctx2.fillBlock([], {})})}))._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, {})})}));
+}, function($ctx2) {$ctx2.fillBlock([ex], {})})}));
 return self}, function($ctx1) {$ctx1.fill(self,"withErrorReporting:", [aBlock], {}, smalltalk.ReportingTestContext)})}
 }),
 smalltalk.ReportingTestContext);
@@ -666,12 +666,12 @@ return smalltalk.withContext(function($ctx1) { 
_st((function(){
 return smalltalk.withContext(function($ctx2) {
return _st((function(){
 return smalltalk.withContext(function($ctx3) {
_st(self)._increaseRuns();
 return _st(aTestCase)._runCase();
-}, function($ctx3) {$ctx3.fill(null, null, {})})}))._on_do_((smalltalk.TestFailure || TestFailure),(function(ex){
+}, function($ctx3) {$ctx3.fillBlock([], {})})}))._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){
+}, function($ctx3) {$ctx3.fillBlock([ex], {})})}));
+}, function($ctx2) {$ctx2.fillBlock([], {})})}))._on_do_((smalltalk.Error || Error),(function(ex){
 return smalltalk.withContext(function($ctx2) {
return _st(self)._addError_(aTestCase);
-}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+}, function($ctx2) {$ctx2.fillBlock([ex], {})})}));
 return self}, function($ctx1) {$ctx1.fill(self,"runCase:", [aTestCase], {}, smalltalk.TestResult)})}
 }),
 smalltalk.TestResult);
@@ -704,10 +704,10 @@ return "success";
 } else {
 return "failure";
 };
-}, function($ctx2) {$ctx2.fill(null, null, {})})});
+}, function($ctx2) {$ctx2.fillBlock([], {})})});
 $1=_st($2)._ifTrue_ifFalse_($3,(function(){
 return smalltalk.withContext(function($ctx2) {
return "error";
-}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+}, function($ctx2) {$ctx2.fillBlock([], {})})}));
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"status", [], {}, smalltalk.TestResult)})}
 }),
@@ -775,7 +775,7 @@ 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();
-}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+}, function($ctx2) {$ctx2.fillBlock([], {})})}));
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"contextOf:", [anInteger], {}, smalltalk.TestSuiteRunner)})}
 }),
@@ -799,7 +799,7 @@ $1=_st(runs).__lt(_st(self["@result"])._total());
 if(smalltalk.assert($1)){
 return _st(_st(self)._contextOf_(_st(runs).__plus((1))))._start();
 };
-}, function($ctx2) {$ctx2.fill(null, null, {})})});
+}, function($ctx2) {$ctx2.fillBlock([], {runs:runs})})});
 return self}, function($ctx1) {$ctx1.fill(self,"initialize", [], {}, smalltalk.TestSuiteRunner)})}
 }),
 smalltalk.TestSuiteRunner);

+ 26 - 26
js/SUnit.js

@@ -108,7 +108,7 @@ return smalltalk.withContext(function($ctx2) {
$2=_st(self)._isAsync();
 if(smalltalk.assert($2)){
 return _st(c)._execute_(aBlock);
 };
-}, function($ctx2) {$ctx2.fill(null, null, {})})});
+}, function($ctx2) {$ctx2.fillBlock([], {})})});
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"async:", [aBlock], {c:c}, smalltalk.TestCase)})},
 args: ["aBlock"],
@@ -313,9 +313,9 @@ var self=this;
 return smalltalk.withContext(function($ctx1) { 
_st(self)._assert_(_st((function(){
 return smalltalk.withContext(function($ctx2) {
_st(aBlock)._value();
 return false;
-}, function($ctx2) {$ctx2.fill(null, null, {})})}))._on_do_(anExceptionClass,(function(ex){
+}, function($ctx2) {$ctx2.fillBlock([], {})})}))._on_do_(anExceptionClass,(function(ex){
 return smalltalk.withContext(function($ctx2) {
return true;
-}, function($ctx2) {$ctx2.fill(null, null, {})})})));
+}, function($ctx2) {$ctx2.fillBlock([ex], {})})})));
 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])",
@@ -334,9 +334,9 @@ var self=this;
 return smalltalk.withContext(function($ctx1) { 
_st(self)._assert_(_st((function(){
 return smalltalk.withContext(function($ctx2) {
_st(aBlock)._value();
 return true;
-}, function($ctx2) {$ctx2.fill(null, null, {})})}))._on_do_(anExceptionClass,(function(ex){
+}, function($ctx2) {$ctx2.fillBlock([], {})})}))._on_do_(anExceptionClass,(function(ex){
 return smalltalk.withContext(function($ctx2) {
return false;
-}, function($ctx2) {$ctx2.fill(null, null, {})})})));
+}, function($ctx2) {$ctx2.fillBlock([ex], {})})})));
 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])",
@@ -396,7 +396,7 @@ _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");
-}, function($ctx2) {$ctx2.fill(null, null, {})})})))._valueWithTimeout_(aNumber);
+}, function($ctx2) {$ctx2.fillBlock([], {})})})))._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",
@@ -440,7 +440,7 @@ 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);
-}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+}, function($ctx2) {$ctx2.fillBlock([each], {})})}));
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"buildSuite", [], {}, smalltalk.TestCase.klass)})},
 args: [],
@@ -535,7 +535,7 @@ 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");
-}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+}, function($ctx2) {$ctx2.fillBlock([each], {})})}));
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"testSelectors", [], {}, smalltalk.TestCase.klass)})},
 args: [],
@@ -564,12 +564,12 @@ failed;
 _st(aBlock)._value();
 failed=false;
 return failed;
-}, function($ctx2) {$ctx2.fill(null, null, {})})});
+}, function($ctx2) {$ctx2.fillBlock([], {})})});
 $2=(function(){
 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, {})})}));
+}, function($ctx3) {$ctx3.fillBlock([], {})})}));
 if(smalltalk.assert($3)){
 _st(self["@testCase"])._finished();
 };
@@ -577,7 +577,7 @@ $4=_st(self["@testCase"])._isAsync();
 if(! smalltalk.assert($4)){
 return _st(self["@testCase"])._tearDown();
 };
-}, function($ctx2) {$ctx2.fill(null, null, {})})});
+}, function($ctx2) {$ctx2.fillBlock([], {})})});
 _st($1)._ensure_($2);
 return self}, function($ctx1) {$ctx1.fill(self,"execute:", [aBlock], {failed:failed}, smalltalk.TestContext)})},
 args: ["aBlock"],
@@ -597,7 +597,7 @@ var self=this;
 return smalltalk.withContext(function($ctx1) { 
_st(self)._execute_((function(){
 return smalltalk.withContext(function($ctx2) {
_st(self["@testCase"])._setUp();
 return _st(self["@testCase"])._performTest();
-}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+}, function($ctx2) {$ctx2.fillBlock([], {})})}));
 return self}, function($ctx1) {$ctx1.fill(self,"start", [], {}, smalltalk.TestContext)})},
 args: [],
 source: "start\x0a\x09self execute: [ \x0a    \x09testCase setUp. \x0a        testCase performTest ]",
@@ -658,15 +658,15 @@ 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]);
-}, function($ctx3) {$ctx3.fill(null, null, {})})}));
-}, function($ctx2) {$ctx2.fill(null, null, {})})});
+}, function($ctx3) {$ctx3.fillBlock([], {})})}));
+}, function($ctx2) {$ctx2.fillBlock([], {})})});
 $2=(function(){
 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, {})})});
+}, function($ctx2) {$ctx2.fillBlock([], {})})});
 _st($1)._ensure_($2);
 return self}, function($ctx1) {$ctx1.fill(self,"execute:", [aBlock], {}, smalltalk.ReportingTestContext)})},
 args: ["aBlock"],
@@ -718,10 +718,10 @@ 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"]);
-}, function($ctx3) {$ctx3.fill(null, null, {})})}));
-}, function($ctx2) {$ctx2.fill(null, null, {})})}))._on_do_((smalltalk.Error || Error),(function(ex){
+}, function($ctx3) {$ctx3.fillBlock([ex], {})})}));
+}, function($ctx2) {$ctx2.fillBlock([], {})})}))._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, {})})}));
+}, function($ctx2) {$ctx2.fillBlock([ex], {})})}));
 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 ]",
@@ -897,12 +897,12 @@ return smalltalk.withContext(function($ctx1) { 
_st((function(){
 return smalltalk.withContext(function($ctx2) {
return _st((function(){
 return smalltalk.withContext(function($ctx3) {
_st(self)._increaseRuns();
 return _st(aTestCase)._runCase();
-}, function($ctx3) {$ctx3.fill(null, null, {})})}))._on_do_((smalltalk.TestFailure || TestFailure),(function(ex){
+}, function($ctx3) {$ctx3.fillBlock([], {})})}))._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){
+}, function($ctx3) {$ctx3.fillBlock([ex], {})})}));
+}, function($ctx2) {$ctx2.fillBlock([], {})})}))._on_do_((smalltalk.Error || Error),(function(ex){
 return smalltalk.withContext(function($ctx2) {
return _st(self)._addError_(aTestCase);
-}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+}, function($ctx2) {$ctx2.fillBlock([ex], {})})}));
 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",
@@ -945,10 +945,10 @@ return "success";
 } else {
 return "failure";
 };
-}, function($ctx2) {$ctx2.fill(null, null, {})})});
+}, function($ctx2) {$ctx2.fillBlock([], {})})});
 $1=_st($2)._ifTrue_ifFalse_($3,(function(){
 return smalltalk.withContext(function($ctx2) {
return "error";
-}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+}, function($ctx2) {$ctx2.fillBlock([], {})})}));
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"status", [], {}, smalltalk.TestResult)})},
 args: [],
@@ -1041,7 +1041,7 @@ 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();
-}, function($ctx2) {$ctx2.fill(null, null, {})})}));
+}, function($ctx2) {$ctx2.fillBlock([], {})})}));
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"contextOf:", [anInteger], {}, smalltalk.TestSuiteRunner)})},
 args: ["anInteger"],
@@ -1070,7 +1070,7 @@ $1=_st(runs).__lt(_st(self["@result"])._total());
 if(smalltalk.assert($1)){
 return _st(_st(self)._contextOf_(_st(runs).__plus((1))))._start();
 };
-}, function($ctx2) {$ctx2.fill(null, null, {})})});
+}, function($ctx2) {$ctx2.fillBlock([], {runs:runs})})});
 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 ]].",

+ 1 - 0
js/boot.js

@@ -766,6 +766,7 @@ SmalltalkMethodContext.prototype.method = function() {
     return method;
 };
 
+// TODO: this is just wrong :)
 SmalltalkMethodContext.prototype.resume = function() {
     //Brutally set the receiver as thisContext, then re-enter the function
     smalltalk.thisContext = this;

+ 19 - 1
st/Compiler-IR.st

@@ -1028,10 +1028,28 @@ nextPutBlockContextFor: anIRClosure during: aBlock
 	self 
     	nextPutAll: 'return smalltalk.withContext(function(', anIRClosure scope alias, ') {'; 
         nextPutAll: String cr.
+    
     aBlock value.
+    
     self 
     	nextPutAll: '}, function(', anIRClosure scope alias, ') {';
-        nextPutAll: anIRClosure scope alias, '.fillBlock()})'
+        nextPutAll: anIRClosure scope alias, '.fillBlock(['.
+    
+    anIRClosure arguments 
+    	do: [ :each | self nextPutAll: each asVariableName ]
+      	separatedBy: [ self nextPutAll: ','  ].
+    self nextPutAll: '], {'.
+    
+    anIRClosure tempDeclarations 
+    	do: [ :each |
+    		self 
+        		nextPutAll: each name asVariableName;
+           	 	nextPutAll: ':';
+        		nextPutAll: each name asVariableName]
+		separatedBy: [ self nextPutAll: ',' ].
+    
+    self
+    	nextPutAll: '})})'
 !
 
 nextPutClosureWith: aBlock arguments: anArray

+ 3 - 1
st/Kernel-Methods.st

@@ -360,7 +360,9 @@ arguments
 !
 
 asString
-	^self receiver class printString, ' >> ', self selector
+	^self isBlockContext 
+    	ifTrue: [ 'a block (in ', self methodContext asString, ')' ]
+      	ifFalse: [ self receiver class printString, ' >> ', self selector ]
 !
 
 home

Some files were not shown because too many files changed in this diff