Browse Source

Split different aliasing needs.

Some elements need to alias things before them,
because they have opening statements (assignment, cascade).

Some elements need to alias themselves
(cascade receivers, inline send receivers).

This is now split between
#hasOpeningStatements and #subtreeNeedsAliasing.

Result is less aliasing in compiled js.
Herby Vojčík 4 years ago
parent
commit
f6a76689c1

+ 2 - 3
lang/src/Compiler-AST.js

@@ -2542,7 +2542,7 @@ var self=this,$self=this;
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 return $core.withContext(function($ctx1) {
 //>>excludeEnd("ctx");
-var $1,$2,$3;
+var $1,$2;
 $recv($recv([$recv([$self._methodNode()
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 ,$ctx1.sendIdx["methodNode"]=1
@@ -2563,8 +2563,7 @@ return $recv($globals.CompilerError)._signal_("There must be no other code or co
 $1=$recv($self._methodNode())._sequenceNode();
 $2=$recv($globals.JSStatementNode)._new();
 $recv($2)._source_(aString);
-$3=$recv($2)._yourself();
-$recv($1)._addDagChild_($3);
+$recv($1)._addDagChild_($recv($2)._yourself());
 return self;
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 }, function($ctx1) {$ctx1.fill(self,"inlineJS:",{aString:aString})});

+ 2 - 3
lang/src/Compiler-Core.js

@@ -1144,7 +1144,7 @@ var package_;
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 return $core.withContext(function($ctx1) {
 //>>excludeEnd("ctx");
-var $1,$2;
+var $1;
 package_=$recv(aClass)._packageOfProtocol_(anotherString);
 [$self._currentPackage_(package_)
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
@@ -1155,8 +1155,7 @@ $1=$recv($self._codeGeneratorClass())._new();
 $recv($1)._source_(aString);
 $recv($1)._currentClass_(aClass);
 $recv($1)._currentPackage_(package_);
-$2=$recv($1)._yourself();
-$self._codeGenerator_($2);
+$self._codeGenerator_($recv($1)._yourself());
 return self;
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 }, function($ctx1) {$ctx1.fill(self,"start:forClass:protocol:",{aString:aString,aClass:aClass,anotherString:anotherString,package_:package_})});

+ 105 - 55
lang/src/Compiler-IR.js

@@ -81,23 +81,34 @@ selector: "aliasTemporally:",
 protocol: "visiting",
 //>>excludeStart("ide", pragmas.excludeIdeData);
 args: ["aCollection"],
-source: "aliasTemporally: aCollection\x0a\x09\x22https://lolg.it/amber/amber/issues/296\x0a\x09\x0a\x09If a node is aliased, all preceding ones are aliased as well.\x0a\x09The tree is iterated twice. First we get the aliasing dependency,\x0a\x09then the aliasing itself is done\x22\x0a\x0a\x09| threshold shouldAlias |\x0a\x09threshold := aCollection reversed\x0a\x09\x09detect: [ :each | each subtreeNeedsAliasing ] ifNone: [ nil ].\x0a\x09threshold ifNil: [ ^ self visitAll: aCollection ].\x0a\x0a\x09shouldAlias := true.\x0a\x09^ aCollection collect: [ :each |\x0a\x09\x09shouldAlias\x0a\x09\x09\x09ifTrue: [ each == threshold ifTrue: [ shouldAlias := false ]. self alias: each ]\x0a\x09\x09\x09ifFalse: [ self visit: each ] ]",
+source: "aliasTemporally: aCollection\x0a\x09\x22https://lolg.it/amber/amber/issues/296\x0a\x09\x0a\x09If a node is aliased, all preceding ones are aliased as well.\x0a\x09The tree is iterated twice. First we get the aliasing dependency,\x0a\x09then the aliasing itself is done\x22\x0a\x0a\x09| threshold shouldAlias |\x0a\x09shouldAlias := false.\x0a\x09threshold := aCollection reversed\x0a\x09\x09detect: [ :each |\x0a\x09\x09\x09shouldAlias\x0a\x09\x09\x09\x09ifTrue: [ true ]\x0a\x09\x09\x09\x09ifFalse: [\x0a\x09\x09\x09\x09\x09each hasOpeningStatements ifTrue: [ shouldAlias := true ].\x0a\x09\x09\x09\x09\x09each subtreeNeedsAliasing ] ]\x0a\x09\x09ifNone: [ nil ].\x0a\x09threshold ifNil: [ ^ self visitAll: aCollection ].\x0a\x0a\x09shouldAlias := true.\x0a\x09^ aCollection collect: [ :each |\x0a\x09\x09shouldAlias\x0a\x09\x09\x09ifTrue: [ each == threshold ifTrue: [ shouldAlias := false ]. self alias: each ]\x0a\x09\x09\x09ifFalse: [ self visit: each ] ]",
 referencedClasses: [],
 //>>excludeEnd("ide");
 pragmas: [],
-messageSends: ["detect:ifNone:", "reversed", "subtreeNeedsAliasing", "ifNil:", "visitAll:", "collect:", "ifTrue:ifFalse:", "ifTrue:", "==", "alias:", "visit:"]
+messageSends: ["detect:ifNone:", "reversed", "ifTrue:ifFalse:", "ifTrue:", "hasOpeningStatements", "subtreeNeedsAliasing", "ifNil:", "visitAll:", "collect:", "==", "alias:", "visit:"]
 }, function ($methodClass){ return function (aCollection){
 var self=this,$self=this;
 var threshold,shouldAlias;
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 return $core.withContext(function($ctx1) {
 //>>excludeEnd("ctx");
-var $1,$2,$3;
+var $1,$2,$3,$4,$5;
+shouldAlias=false;
 threshold=$recv($recv(aCollection)._reversed())._detect_ifNone_((function(each){
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 return $core.withContext(function($ctx2) {
 //>>excludeEnd("ctx");
+$1=shouldAlias;
+if($core.assert($1)){
+return true;
+} else {
+$2=$recv(each)._hasOpeningStatements();
+if($core.assert($2)){
+shouldAlias=true;
+shouldAlias;
+}
 return $recv(each)._subtreeNeedsAliasing();
+}
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
 //>>excludeEnd("ctx");
@@ -105,21 +116,21 @@ return $recv(each)._subtreeNeedsAliasing();
 return nil;
 
 }));
-$1=threshold;
-if($1 == null || $1.a$nil){
+$3=threshold;
+if($3 == null || $3.a$nil){
 return $self._visitAll_(aCollection);
 } else {
-$1;
+$3;
 }
 shouldAlias=true;
 return $recv(aCollection)._collect_((function(each){
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 return $core.withContext(function($ctx2) {
 //>>excludeEnd("ctx");
-$2=shouldAlias;
-if($core.assert($2)){
-$3=$recv(each).__eq_eq(threshold);
-if($core.assert($3)){
+$4=shouldAlias;
+if($core.assert($4)){
+$5=$recv(each).__eq_eq(threshold);
+if($core.assert($5)){
 shouldAlias=false;
 shouldAlias;
 }
@@ -128,7 +139,7 @@ return $self._alias_(each);
 return $self._visit_(each);
 }
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
-}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,4)});
+}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,7)});
 //>>excludeEnd("ctx");
 }));
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
@@ -302,7 +313,7 @@ var left,right,assignment;
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 return $core.withContext(function($ctx1) {
 //>>excludeEnd("ctx");
-var $1,$2;
+var $1;
 right=[$self._visit_($recv(aNode)._right())
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 ,$ctx1.sendIdx["visit:"]=1
@@ -316,8 +327,7 @@ $1=$recv($globals.IRAssignment)._new();
 //>>excludeEnd("ctx");
 ][0];
 $recv($1)._add_(right);
-$2=$recv($1)._yourself();
-$self._addToSequence_($2);
+$self._addToSequence_($recv($1)._yourself());
 return left;
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 }, function($ctx1) {$ctx1.fill(self,"visitAssignmentNode:",{aNode:aNode,left:left,right:right,assignment:assignment})});
@@ -342,7 +352,7 @@ var closure;
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 return $core.withContext(function($ctx1) {
 //>>excludeEnd("ctx");
-var $1,$2,$3,$4;
+var $1,$2,$3;
 $1=[$recv($globals.IRClosure)._new()
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 ,$ctx1.sendIdx["new"]=1
@@ -376,8 +386,7 @@ $2=closure;
 $3=$recv($globals.IRTempDeclaration)._new();
 $recv($3)._name_($recv(each)._name());
 $recv($3)._scope_($recv(aNode)._scope());
-$4=$recv($3)._yourself();
-return [$recv($2)._add_($4)
+return [$recv($2)._add_($recv($3)._yourself())
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 ,$ctx2.sendIdx["add:"]=1
 //>>excludeEnd("ctx");
@@ -410,7 +419,7 @@ var self=this,$self=this;
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 return $core.withContext(function($ctx1) {
 //>>excludeEnd("ctx");
-var $1,$2,$3;
+var $1,$2;
 return $self._withSequence_do_([$recv($globals.IRBlockSequence)._new()
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 ,$ctx1.sendIdx["new"]=1
@@ -470,8 +479,7 @@ $recv($2)._add_($self._visitOrAlias_([$recv([$recv(aNode)._dagChildren()
 ,$ctx3.sendIdx["last"]=2
 //>>excludeEnd("ctx");
 ][0]));
-$3=$recv($2)._yourself();
-return [$self._addToSequence_($3)
+return [$self._addToSequence_($recv($2)._yourself())
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 ,$ctx3.sendIdx["addToSequence:"]=2
 //>>excludeEnd("ctx");
@@ -665,7 +673,7 @@ var irSequence;
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 return $core.withContext(function($ctx1) {
 //>>excludeEnd("ctx");
-var $1,$2,$3,$4,$5,$6,$7,$8,$9,$10,$11,$12,$13,$14;
+var $1,$2,$3,$4,$5,$6,$7,$8,$9;
 $1=[$recv($globals.IRMethod)._new()
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 ,$ctx1.sendIdx["new"]=1
@@ -725,12 +733,11 @@ $recv($1)._classReferences_($recv(aNode)._classReferences());
 ,$ctx1.sendIdx["scope:"]=1
 //>>excludeEnd("ctx");
 ][0];
-$3=[$recv($1)._yourself()
+$self._method_([$recv($1)._yourself()
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 ,$ctx1.sendIdx["yourself"]=1
 //>>excludeEnd("ctx");
-][0];
-$self._method_($3);
+][0]);
 $recv($recv([$recv(aNode)._scope()
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 ,$ctx1.sendIdx["scope"]=2
@@ -739,28 +746,27 @@ $recv($recv([$recv(aNode)._scope()
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 return $core.withContext(function($ctx2) {
 //>>excludeEnd("ctx");
-$4=[$self._method()
+$3=[$self._method()
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 ,$ctx2.sendIdx["method"]=1
 //>>excludeEnd("ctx");
 ][0];
-$5=[$recv($globals.IRTempDeclaration)._new()
+$4=[$recv($globals.IRTempDeclaration)._new()
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 ,$ctx2.sendIdx["new"]=2
 //>>excludeEnd("ctx");
 ][0];
-$recv($5)._name_($recv(each)._name());
-$recv($5)._scope_([$recv(aNode)._scope()
+$recv($4)._name_($recv(each)._name());
+$recv($4)._scope_([$recv(aNode)._scope()
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 ,$ctx2.sendIdx["scope"]=3
 //>>excludeEnd("ctx");
 ][0]);
-$6=[$recv($5)._yourself()
+return [$recv($3)._add_([$recv($4)._yourself()
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 ,$ctx2.sendIdx["yourself"]=2
 //>>excludeEnd("ctx");
-][0];
-return [$recv($4)._add_($6)
+][0])
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 ,$ctx2.sendIdx["add:"]=1
 //>>excludeEnd("ctx");
@@ -769,40 +775,37 @@ return [$recv($4)._add_($6)
 }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,5)});
 //>>excludeEnd("ctx");
 }));
-$7=[$self._method()
+$5=[$self._method()
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 ,$ctx1.sendIdx["method"]=2
 //>>excludeEnd("ctx");
 ][0];
 irSequence=$self._visit_($recv(aNode)._sequenceNode());
-$8=irSequence;
-[$recv($7)._add_($8)
+[$recv($5)._add_(irSequence)
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 ,$ctx1.sendIdx["add:"]=2
 //>>excludeEnd("ctx");
 ][0];
-$9=$recv([$recv(aNode)._scope()
+$6=$recv([$recv(aNode)._scope()
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 ,$ctx1.sendIdx["scope"]=4
 //>>excludeEnd("ctx");
 ][0])._hasLocalReturn();
-if(!$core.assert($9)){
-$10=irSequence;
-$11=[$recv($globals.IRReturn)._new()
+if(!$core.assert($6)){
+$7=irSequence;
+$8=[$recv($globals.IRReturn)._new()
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 ,$ctx1.sendIdx["new"]=3
 //>>excludeEnd("ctx");
 ][0];
-$12=$recv($globals.IRVariable)._new();
-$recv($12)._variable_($recv($recv($recv(aNode)._scope())._pseudoVars())._at_("self"));
-$13=[$recv($12)._yourself()
+$9=$recv($globals.IRVariable)._new();
+$recv($9)._variable_($recv($recv($recv(aNode)._scope())._pseudoVars())._at_("self"));
+$recv($8)._add_([$recv($9)._yourself()
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 ,$ctx1.sendIdx["yourself"]=3
 //>>excludeEnd("ctx");
-][0];
-$recv($11)._add_($13);
-$14=$recv($11)._yourself();
-[$recv($10)._add_($14)
+][0]);
+[$recv($7)._add_($recv($8)._yourself())
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 ,$ctx1.sendIdx["add:"]=3
 //>>excludeEnd("ctx");
@@ -3357,11 +3360,10 @@ var self=this,$self=this;
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 return $core.withContext(function($ctx1) {
 //>>excludeEnd("ctx");
-var $1,$2;
+var $1;
 $1=$recv($globals.IRJSSuperSendVisitor)._new();
 $recv($1)._property_(aString);
-$2=$recv($1)._yourself();
-$recv($2)._visit_([$self._irMethod()
+$recv($recv($1)._yourself())._visit_([$self._irMethod()
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 ,$ctx1.sendIdx["irMethod"]=1
 //>>excludeEnd("ctx");
@@ -3898,7 +3900,7 @@ var receiver;
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 return $core.withContext(function($ctx1) {
 //>>excludeEnd("ctx");
-var $1,$2,$3,$4,$5;
+var $1,$2,$3,$4;
 receiver=$recv(anIRSend)._receiver();
 $1=$recv(receiver)._isSuper();
 if($core.assert($1)){
@@ -3914,8 +3916,7 @@ $3=receiver;
 $4=$recv($globals.JavaScriptSuperVar)._new();
 $recv($4)._scope_($recv(old)._scope());
 $recv($4)._name_($recv(old)._name());
-$5=$recv($4)._yourself();
-$recv($3)._variable_($5);
+$recv($3)._variable_($recv($4)._yourself());
 $recv(anIRSend)._javaScriptSelector_($self._property());
 }
 }
@@ -6054,11 +6055,11 @@ $globals.ASTNode);
 
 $core.addMethod(
 $core.method({
-selector: "subtreeNeedsAliasing",
+selector: "hasOpeningStatements",
 protocol: "*Compiler-IR",
 //>>excludeStart("ide", pragmas.excludeIdeData);
 args: [],
-source: "subtreeNeedsAliasing\x0a\x09^ true",
+source: "hasOpeningStatements\x0a\x09^ true",
 referencedClasses: [],
 //>>excludeEnd("ide");
 pragmas: [],
@@ -6070,6 +6071,24 @@ return true;
 }; }),
 $globals.AssignmentNode);
 
+$core.addMethod(
+$core.method({
+selector: "hasOpeningStatements",
+protocol: "*Compiler-IR",
+//>>excludeStart("ide", pragmas.excludeIdeData);
+args: [],
+source: "hasOpeningStatements\x0a\x09^ false",
+referencedClasses: [],
+//>>excludeEnd("ide");
+pragmas: [],
+messageSends: []
+}, function ($methodClass){ return function (){
+var self=this,$self=this;
+return false;
+
+}; }),
+$globals.BlockNode);
+
 $core.addMethod(
 $core.method({
 selector: "subtreeNeedsAliasing",
@@ -6095,11 +6114,11 @@ $globals.BlockNode);
 
 $core.addMethod(
 $core.method({
-selector: "subtreeNeedsAliasing",
+selector: "hasOpeningStatements",
 protocol: "*Compiler-IR",
 //>>excludeStart("ide", pragmas.excludeIdeData);
 args: [],
-source: "subtreeNeedsAliasing\x0a\x09^ true",
+source: "hasOpeningStatements\x0a\x09^ true",
 referencedClasses: [],
 //>>excludeEnd("ide");
 pragmas: [],
@@ -6111,6 +6130,37 @@ return true;
 }; }),
 $globals.CascadeNode);
 
+$core.addMethod(
+$core.method({
+selector: "hasOpeningStatements",
+protocol: "*Compiler-IR",
+//>>excludeStart("ide", pragmas.excludeIdeData);
+args: [],
+source: "hasOpeningStatements\x0a\x09^ self dagChildren anySatisfy: [ :each | each hasOpeningStatements ]",
+referencedClasses: [],
+//>>excludeEnd("ide");
+pragmas: [],
+messageSends: ["anySatisfy:", "dagChildren", "hasOpeningStatements"]
+}, function ($methodClass){ return function (){
+var self=this,$self=this;
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
+return $core.withContext(function($ctx1) {
+//>>excludeEnd("ctx");
+return $recv($self._dagChildren())._anySatisfy_((function(each){
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
+return $core.withContext(function($ctx2) {
+//>>excludeEnd("ctx");
+return $recv(each)._hasOpeningStatements();
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
+}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
+//>>excludeEnd("ctx");
+}));
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
+}, function($ctx1) {$ctx1.fill(self,"hasOpeningStatements",{})});
+//>>excludeEnd("ctx");
+}; }),
+$globals.ExpressionNode);
+
 $core.addMethod(
 $core.method({
 selector: "subtreeNeedsAliasing",

+ 18 - 3
lang/src/Compiler-IR.st

@@ -76,8 +76,15 @@ aliasTemporally: aCollection
 	then the aliasing itself is done"
 
 	| threshold shouldAlias |
+	shouldAlias := false.
 	threshold := aCollection reversed
-		detect: [ :each | each subtreeNeedsAliasing ] ifNone: [ nil ].
+		detect: [ :each |
+			shouldAlias
+				ifTrue: [ true ]
+				ifFalse: [
+					each hasOpeningStatements ifTrue: [ shouldAlias := true ].
+					each subtreeNeedsAliasing ] ]
+		ifNone: [ nil ].
 	threshold ifNil: [ ^ self visitAll: aCollection ].
 
 	shouldAlias := true.
@@ -1400,24 +1407,32 @@ requiresSmalltalkContext
 
 !AssignmentNode methodsFor: '*Compiler-IR'!
 
-subtreeNeedsAliasing
+hasOpeningStatements
 	^ true
 ! !
 
 !BlockNode methodsFor: '*Compiler-IR'!
 
+hasOpeningStatements
+	^ false
+!
+
 subtreeNeedsAliasing
 	^ self shouldBeAliased
 ! !
 
 !CascadeNode methodsFor: '*Compiler-IR'!
 
-subtreeNeedsAliasing
+hasOpeningStatements
 	^ true
 ! !
 
 !ExpressionNode methodsFor: '*Compiler-IR'!
 
+hasOpeningStatements
+	^ self dagChildren anySatisfy: [ :each | each hasOpeningStatements ]
+!
+
 subtreeNeedsAliasing
 	^ self shouldBeAliased or: [
 		self dagChildren anySatisfy: [ :each | each subtreeNeedsAliasing ] ]

+ 25 - 34
lang/src/Compiler-Inlining.js

@@ -1169,7 +1169,7 @@ var self=this,$self=this;
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 return $core.withContext(function($ctx1) {
 //>>excludeEnd("ctx");
-var $1,$2,$3,$4,$5;
+var $1,$2,$3;
 $1=[$recv($globals.IRInlinedIfNilIfNotNil)._new()
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 ,$ctx1.sendIdx["new"]=1
@@ -1183,18 +1183,16 @@ $2=[$recv($globals.IRClosure)._new()
 $recv($2)._scope_($recv($recv(anIRInstruction)._scope())._copy());
 $3=$recv($globals.IRBlockSequence)._new();
 $recv($3)._add_($recv($self._send())._receiver());
-$4=[$recv($3)._yourself()
+[$recv($2)._add_([$recv($3)._yourself()
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 ,$ctx1.sendIdx["yourself"]=1
 //>>excludeEnd("ctx");
-][0];
-[$recv($2)._add_($4)
+][0])
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 ,$ctx1.sendIdx["add:"]=1
 //>>excludeEnd("ctx");
 ][0];
-$5=$recv($2)._yourself();
-return $self._inlinedSend_withBlock_withBlock_($1,anIRInstruction,$5);
+return $self._inlinedSend_withBlock_withBlock_($1,anIRInstruction,$recv($2)._yourself());
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 }, function($ctx1) {$ctx1.fill(self,"ifNil:",{anIRInstruction:anIRInstruction})});
 //>>excludeEnd("ctx");
@@ -1240,7 +1238,7 @@ var self=this,$self=this;
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 return $core.withContext(function($ctx1) {
 //>>excludeEnd("ctx");
-var $1,$2,$3,$4,$5;
+var $1,$2,$3;
 $1=[$recv($globals.IRInlinedIfNilIfNotNil)._new()
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 ,$ctx1.sendIdx["new"]=1
@@ -1254,18 +1252,16 @@ $2=[$recv($globals.IRClosure)._new()
 $recv($2)._scope_($recv($recv(anIRInstruction)._scope())._copy());
 $3=$recv($globals.IRBlockSequence)._new();
 $recv($3)._add_($recv($self._send())._receiver());
-$4=[$recv($3)._yourself()
+[$recv($2)._add_([$recv($3)._yourself()
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 ,$ctx1.sendIdx["yourself"]=1
 //>>excludeEnd("ctx");
-][0];
-[$recv($2)._add_($4)
+][0])
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 ,$ctx1.sendIdx["add:"]=1
 //>>excludeEnd("ctx");
 ][0];
-$5=$recv($2)._yourself();
-return $self._inlinedSend_withBlock_withBlock_($1,$5,anIRInstruction);
+return $self._inlinedSend_withBlock_withBlock_($1,$recv($2)._yourself(),anIRInstruction);
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 }, function($ctx1) {$ctx1.fill(self,"ifNotNil:",{anIRInstruction:anIRInstruction})});
 //>>excludeEnd("ctx");
@@ -1358,7 +1354,7 @@ var inlinedClosure,sequence,statements;
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 return $core.withContext(function($ctx1) {
 //>>excludeEnd("ctx");
-var $1,$2,$3,$4,$5,$6,$7,$8,$9,$10,$11;
+var $1,$2,$3,$4,$5,$6,$7;
 inlinedClosure=$self._inlinedClosure();
 $1=inlinedClosure;
 [$recv($1)._scope_([$recv(anIRClosure)._scope()
@@ -1404,48 +1400,44 @@ $3=[$recv($globals.IRTempDeclaration)._new()
 ,$ctx2.sendIdx["name:"]=1
 //>>excludeEnd("ctx");
 ][0];
-$4=[$recv($3)._yourself()
+[$recv($2)._add_([$recv($3)._yourself()
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 ,$ctx2.sendIdx["yourself"]=1
 //>>excludeEnd("ctx");
-][0];
-[$recv($2)._add_($4)
+][0])
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 ,$ctx2.sendIdx["add:"]=2
 //>>excludeEnd("ctx");
 ][0];
-$5=sequence;
-$6=[$recv($globals.IRAssignment)._new()
+$4=sequence;
+$5=[$recv($globals.IRAssignment)._new()
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 ,$ctx2.sendIdx["new"]=2
 //>>excludeEnd("ctx");
 ][0];
-$7=[$recv($globals.IRVariable)._new()
+$6=[$recv($globals.IRVariable)._new()
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 ,$ctx2.sendIdx["new"]=3
 //>>excludeEnd("ctx");
 ][0];
-$8=$recv($globals.ArgVar)._new();
-$recv($8)._scope_($recv(inlinedClosure)._scope());
-$recv($8)._name_(each);
-$9=[$recv($8)._yourself()
+$7=$recv($globals.ArgVar)._new();
+$recv($7)._scope_($recv(inlinedClosure)._scope());
+$recv($7)._name_(each);
+[$recv($5)._add_($recv($6)._variable_([$recv($7)._yourself()
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 ,$ctx2.sendIdx["yourself"]=2
 //>>excludeEnd("ctx");
-][0];
-$10=$recv($7)._variable_($9);
-[$recv($6)._add_($10)
+][0]))
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 ,$ctx2.sendIdx["add:"]=4
 //>>excludeEnd("ctx");
 ][0];
-[$recv($6)._add_($recv($self._send())._receiver())
+[$recv($5)._add_($recv($self._send())._receiver())
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 ,$ctx2.sendIdx["add:"]=5
 //>>excludeEnd("ctx");
 ][0];
-$11=$recv($6)._yourself();
-return [$recv($5)._add_($11)
+return [$recv($4)._add_($recv($5)._yourself())
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 ,$ctx2.sendIdx["add:"]=3
 //>>excludeEnd("ctx");
@@ -1585,7 +1577,7 @@ var sequence,final;
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 return $core.withContext(function($ctx1) {
 //>>excludeEnd("ctx");
-var $1,$2,$3,$4;
+var $1,$2,$3;
 sequence=$recv(closure)._sequence();
 $recv([$recv(sequence)._dagChildren()
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
@@ -1598,15 +1590,14 @@ return $core.withContext(function($ctx2) {
 $1=sequence;
 $2=$recv($globals.IRVariable)._new();
 $recv($2)._variable_($recv($recv($recv(closure)._scope())._pseudoVars())._at_("nil"));
-$3=$recv($2)._yourself();
-return $recv($1)._add_($3);
+return $recv($1)._add_($recv($2)._yourself());
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
 //>>excludeEnd("ctx");
 }));
 final=$recv($recv(sequence)._dagChildren())._last();
-$4=$recv(final)._yieldsValue();
-if($core.assert($4)){
+$3=$recv(final)._yieldsValue();
+if($core.assert($3)){
 $recv(sequence)._replace_with_(final,$recv(aBlock)._value_(final));
 }
 return closure;

+ 2 - 3
lang/src/Compiler-Semantic.js

@@ -986,7 +986,7 @@ var self=this,$self=this;
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 return $core.withContext(function($ctx1) {
 //>>excludeEnd("ctx");
-var $1,$2,$3,$4;
+var $1,$2,$3;
 $1=$self.pseudoVars;
 if($1 == null || $1.a$nil){
 $self.pseudoVars=$recv($globals.Dictionary)._new();
@@ -997,8 +997,7 @@ return $core.withContext(function($ctx2) {
 $2=$self.pseudoVars;
 $3=$recv(impl)._on_(each);
 $recv($3)._scope_($self._methodScope());
-$4=$recv($3)._yourself();
-return $recv($2)._at_put_(each,$4);
+return $recv($2)._at_put_(each,$recv($3)._yourself());
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 }, function($ctx2) {$ctx2.fillBlock({each:each,impl:impl},$ctx1,2)});
 //>>excludeEnd("ctx");

+ 27 - 43
lang/src/Compiler-Tests.js

@@ -1881,13 +1881,12 @@ var self=this,$self=this;
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 return $core.withContext(function($ctx1) {
 //>>excludeEnd("ctx");
-var $2,$1;
+var $1;
 $self.theClass=$recv($globals.ObjectMock)._subclass_slots_package_("ObjectMock2",[],"Compiler-Tests");
 $recv($self.theClass)._beJavaScriptSubclassOf_($self._jsConstructor());
-$2=$recv($globals.ObjectMock2)._new();
-$recv($2)._foo_("should be shadowed");
-$1=$recv($2)._yourself();
-$self._should_receiver_return_("foo <jsOverride: #foo> ^ super foo",$1,"undefined,undefined");
+$1=$recv($globals.ObjectMock2)._new();
+$recv($1)._foo_("should be shadowed");
+$self._should_receiver_return_("foo <jsOverride: #foo> ^ super foo",$recv($1)._yourself(),"undefined,undefined");
 return self;
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 }, function($ctx1) {$ctx1.fill(self,"testNiladicSuper",{})});
@@ -1962,13 +1961,12 @@ var self=this,$self=this;
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 return $core.withContext(function($ctx1) {
 //>>excludeEnd("ctx");
-var $1,$2;
+var $1;
 $self.theClass=$recv($globals.ObjectMock)._subclass_slots_package_("ObjectMock2",[],"Compiler-Tests");
 $recv($self.theClass)._beJavaScriptSubclassOf_($self._jsConstructor());
 $1=$recv($globals.ObjectMock2)._new();
 $recv($1)._foo_("should be shadowed");
-$2=$recv($1)._yourself();
-$self._should_receiver_return_("foo <jsOverride: #foo> ^ [ super foo ] value",$2,"undefined,undefined");
+$self._should_receiver_return_("foo <jsOverride: #foo> ^ [ super foo ] value",$recv($1)._yourself(),"undefined,undefined");
 return self;
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 }, function($ctx1) {$ctx1.fill(self,"testNiladicSuperNested",{})});
@@ -2011,12 +2009,11 @@ var self=this,$self=this;
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 return $core.withContext(function($ctx1) {
 //>>excludeEnd("ctx");
-var $1;
-$1=$self._name();
+return $recv([$self._name()
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
-$ctx1.sendIdx["name"]=1;
+,$ctx1.sendIdx["name"]=1
 //>>excludeEnd("ctx");
-return $recv($1).__eq($recv($globals.AbstractJavaScriptGatewayTest)._name());
+][0]).__eq($recv($globals.AbstractJavaScriptGatewayTest)._name());
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 }, function($ctx1) {$ctx1.fill(self,"isAbstract",{})});
 //>>excludeEnd("ctx");
@@ -2137,7 +2134,7 @@ var ast,result;
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 return $core.withContext(function($ctx1) {
 //>>excludeEnd("ctx");
-var $1,$2,$3,$4;
+var $1,$2;
 ast=$self._parse_forClass_("foo <inlineJS: 'consolee.log(1)'>",$globals.Object);
 $1=$self._astPCNodeVisitor();
 [$recv($1)._visit_(ast)
@@ -2148,9 +2145,7 @@ $1=$self._astPCNodeVisitor();
 result=$recv($1)._currentNode();
 $2=$self._newTeachableVisitor();
 $recv($2)._whenSend_return_("visitJSStatementNode:","JS");
-$3=$recv($2)._yourself();
-$4=$recv($3)._visit_(result);
-$self._assert_equals_($4,"JS");
+$self._assert_equals_($recv($recv($2)._yourself())._visit_(result),"JS");
 return self;
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 }, function($ctx1) {$ctx1.fill(self,"testJSStatementNode",{ast:ast,result:result})});
@@ -2175,13 +2170,11 @@ var ast;
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 return $core.withContext(function($ctx1) {
 //>>excludeEnd("ctx");
-var $1,$2,$3;
+var $1;
 ast=$self._parse_forClass_("foo self asString yourself. ^ self asBoolean",$globals.Object);
 $1=$self._astPCNodeVisitorForSelector_("yourself");
 $recv($1)._visit_(ast);
-$2=$recv($1)._currentNode();
-$3=$recv($2)._selector();
-$self._assert_equals_($3,"yourself");
+$self._assert_equals_($recv($recv($1)._currentNode())._selector(),"yourself");
 return self;
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 }, function($ctx1) {$ctx1.fill(self,"testMessageSend",{ast:ast})});
@@ -2206,13 +2199,11 @@ var ast;
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 return $core.withContext(function($ctx1) {
 //>>excludeEnd("ctx");
-var $1,$2,$3;
+var $1;
 ast=$self._parse_forClass_("foo true ifTrue: [ [ self asString yourself ] value.  ]. ^ self asBoolean",$globals.Object);
 $1=$self._astPCNodeVisitorForSelector_("yourself");
 $recv($1)._visit_(ast);
-$2=$recv($1)._currentNode();
-$3=$recv($2)._selector();
-$self._assert_equals_($3,"yourself");
+$self._assert_equals_($recv($recv($1)._currentNode())._selector(),"yourself");
 return self;
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 }, function($ctx1) {$ctx1.fill(self,"testMessageSendWithBlocks",{ast:ast})});
@@ -2237,7 +2228,7 @@ var ast;
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 return $core.withContext(function($ctx1) {
 //>>excludeEnd("ctx");
-var $1,$2,$3,$4,$5,$6;
+var $1,$2;
 ast=[$self._parse_forClass_("foo true ifTrue: [ self asString yourself ]. ^ self asBoolean",$globals.Object)
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 ,$ctx1.sendIdx["parse:forClass:"]=1
@@ -2253,27 +2244,23 @@ $1=[$self._astPCNodeVisitorForSelector_("yourself")
 ,$ctx1.sendIdx["visit:"]=1
 //>>excludeEnd("ctx");
 ][0];
-$2=[$recv($1)._currentNode()
+[$self._assert_equals_([$recv([$recv($1)._currentNode()
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 ,$ctx1.sendIdx["currentNode"]=1
 //>>excludeEnd("ctx");
-][0];
-$3=[$recv($2)._selector()
+][0])._selector()
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 ,$ctx1.sendIdx["selector"]=1
 //>>excludeEnd("ctx");
-][0];
-[$self._assert_equals_($3,"yourself")
+][0],"yourself")
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 ,$ctx1.sendIdx["assert:equals:"]=1
 //>>excludeEnd("ctx");
 ][0];
 ast=$self._parse_forClass_("foo true ifTrue: [ self asString yourself ]. ^ self asBoolean",$globals.Object);
-$4=$self._astPCNodeVisitorForSelector_("asBoolean");
-$recv($4)._visit_(ast);
-$5=$recv($4)._currentNode();
-$6=$recv($5)._selector();
-$self._assert_equals_($6,"asBoolean");
+$2=$self._astPCNodeVisitorForSelector_("asBoolean");
+$recv($2)._visit_(ast);
+$self._assert_equals_($recv($recv($2)._currentNode())._selector(),"asBoolean");
 return self;
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 }, function($ctx1) {$ctx1.fill(self,"testMessageSendWithInlining",{ast:ast})});
@@ -2298,13 +2285,11 @@ var ast;
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 return $core.withContext(function($ctx1) {
 //>>excludeEnd("ctx");
-var $1,$2,$3;
+var $1;
 ast=$self._parse_forClass_("foo ^ self",$globals.Object);
 $1=$self._astPCNodeVisitor();
 $recv($1)._visit_(ast);
-$2=$recv($1)._currentNode();
-$3=$recv($2)._isNil();
-$self._assert_($3);
+$self._assert_($recv($recv($1)._currentNode())._isNil());
 return self;
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 }, function($ctx1) {$ctx1.fill(self,"testNoMessageSend",{ast:ast})});
@@ -3693,17 +3678,16 @@ var self=this,$self=this;
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 return $core.withContext(function($ctx1) {
 //>>excludeEnd("ctx");
-var $1,$2,$3;
+var $1,$2;
 $1=$recv($globals.AISemanticAnalyzer)._on_($globals.Object);
 $2=$recv($globals.AIContext)._new();
 $recv($2)._defineLocal_("local");
 $recv($2)._localAt_put_("local",(3));
-$3=[$recv($2)._yourself()
+$recv($1)._context_([$recv($2)._yourself()
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 ,$ctx1.sendIdx["yourself"]=1
 //>>excludeEnd("ctx");
-][0];
-$recv($1)._context_($3);
+][0]);
 $self.analyzer=$recv($1)._yourself();
 return self;
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);

+ 8 - 12
lang/src/Kernel-Announcements.js

@@ -398,7 +398,7 @@ var self=this,$self=this;
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 return $core.withContext(function($ctx1) {
 //>>excludeEnd("ctx");
-var $1,$2,$3,$4,$5;
+var $1,$2,$3;
 $1=$self.subscriptions;
 $2=[$recv($globals.AnnouncementSubscription)._new()
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
@@ -408,19 +408,17 @@ $2=[$recv($globals.AnnouncementSubscription)._new()
 $3=$recv($globals.AnnouncementValuable)._new();
 $recv($3)._valuable_(aBlock);
 $recv($3)._receiver_(aReceiver);
-$4=[$recv($3)._yourself()
+[$recv($2)._valuable_([$recv($3)._yourself()
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 ,$ctx1.sendIdx["yourself"]=1
 //>>excludeEnd("ctx");
-][0];
-[$recv($2)._valuable_($4)
+][0])
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 ,$ctx1.sendIdx["valuable:"]=1
 //>>excludeEnd("ctx");
 ][0];
 $recv($2)._announcementClass_(aClass);
-$5=$recv($2)._yourself();
-$recv($1)._add_($5);
+$recv($1)._add_($recv($2)._yourself());
 return self;
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 }, function($ctx1) {$ctx1.fill(self,"on:do:for:",{aClass:aClass,aBlock:aBlock,aReceiver:aReceiver})});
@@ -483,7 +481,7 @@ var self=this,$self=this;
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 return $core.withContext(function($ctx1) {
 //>>excludeEnd("ctx");
-var $1,$2,$3,$4,$5;
+var $1,$2,$3;
 $1=$self.subscriptions;
 $2=[$recv($globals.AnnouncementSubscription)._new()
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
@@ -493,15 +491,13 @@ $2=[$recv($globals.AnnouncementSubscription)._new()
 $3=$recv($globals.MessageSend)._new();
 $recv($3)._receiver_(anObject);
 $recv($3)._selector_(aSelector);
-$4=[$recv($3)._yourself()
+$recv($2)._valuable_([$recv($3)._yourself()
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 ,$ctx1.sendIdx["yourself"]=1
 //>>excludeEnd("ctx");
-][0];
-$recv($2)._valuable_($4);
+][0]);
 $recv($2)._announcementClass_(aClass);
-$5=$recv($2)._yourself();
-$recv($1)._add_($5);
+$recv($1)._add_($recv($2)._yourself());
 return self;
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 }, function($ctx1) {$ctx1.fill(self,"on:send:to:",{aClass:aClass,aSelector:aSelector,anObject:anObject})});

+ 16 - 24
lang/src/Kernel-Classes.js

@@ -1651,13 +1651,12 @@ var self=this,$self=this;
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 return $core.withContext(function($ctx1) {
 //>>excludeEnd("ctx");
-var $1,$2,$3;
+var $1,$2;
 $self._basicClass_instanceVariables_(aClass,aCollection);
 $1=$recv($globals.SystemAnnouncer)._current();
 $2=$recv($globals.ClassDefinitionChanged)._new();
 $recv($2)._theClass_(aClass);
-$3=$recv($2)._yourself();
-$recv($1)._announce_($3);
+$recv($1)._announce_($recv($2)._yourself());
 return self;
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 }, function($ctx1) {$ctx1.fill(self,"class:slots:",{aClass:aClass,aCollection:aCollection})});
@@ -1682,14 +1681,13 @@ var newClass;
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 return $core.withContext(function($ctx1) {
 //>>excludeEnd("ctx");
-var $1,$2,$3;
+var $1,$2;
 newClass=$self._addSubclassOf_named_instanceVariableNames_package_($recv(aClass)._superclass(),className,$recv(aClass)._instanceVariableNames(),$recv($recv(aClass)._package())._name());
 $self._copyClass_to_(aClass,newClass);
 $1=$recv($globals.SystemAnnouncer)._current();
 $2=$recv($globals.ClassAdded)._new();
 $recv($2)._theClass_(newClass);
-$3=$recv($2)._yourself();
-$recv($1)._announce_($3);
+$recv($1)._announce_($recv($2)._yourself());
 return newClass;
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 }, function($ctx1) {$ctx1.fill(self,"copyClass:named:",{aClass:aClass,className:className,newClass:newClass})});
@@ -1857,7 +1855,7 @@ var oldClass,newClass,tmp;
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 return $core.withContext(function($ctx1) {
 //>>excludeEnd("ctx");
-var $1,$2,$3;
+var $1,$2;
 tmp="new*".__comma(className);
 oldClass=$recv($recv($globals.Smalltalk)._globals())._at_(className);
 newClass=$self._addSubclassOf_named_instanceVariableNames_package_(aClass,tmp,aCollection,packageName);
@@ -1909,8 +1907,7 @@ $1=$recv($globals.SystemAnnouncer)._current();
 $2=$recv($globals.ClassMigrated)._new();
 $recv($2)._theClass_(newClass);
 $recv($2)._oldClass_(oldClass);
-$3=$recv($2)._yourself();
-$recv($1)._announce_($3);
+$recv($1)._announce_($recv($2)._yourself());
 return newClass;
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 }, function($ctx1) {$ctx1.fill(self,"migrateClassNamed:superclass:instanceVariableNames:package:",{className:className,aClass:aClass,aCollection:aCollection,packageName:packageName,oldClass:oldClass,newClass:newClass,tmp:tmp})});
@@ -1960,14 +1957,13 @@ var self=this,$self=this;
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 return $core.withContext(function($ctx1) {
 //>>excludeEnd("ctx");
-var $1,$2,$3;
+var $1,$2;
 $self._basicRenameClass_to_(aClass,className);
 $recv(aClass)._recompile();
 $1=$recv($globals.SystemAnnouncer)._current();
 $2=$recv($globals.ClassRenamed)._new();
 $recv($2)._theClass_(aClass);
-$3=$recv($2)._yourself();
-$recv($1)._announce_($3);
+$recv($1)._announce_($recv($2)._yourself());
 return self;
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 }, function($ctx1) {$ctx1.fill(self,"renameClass:to:",{aClass:aClass,className:className})});
@@ -2015,7 +2011,7 @@ var newClass;
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 return $core.withContext(function($ctx1) {
 //>>excludeEnd("ctx");
-var $1,$2,$3,$4;
+var $1,$2,$3;
 if(packageName == null || packageName.a$nil){
 $1="unclassified";
 } else {
@@ -2025,8 +2021,7 @@ newClass=$self._addSubclassOf_named_instanceVariableNames_package_(aClass,classN
 $2=$recv($globals.SystemAnnouncer)._current();
 $3=$recv($globals.ClassAdded)._new();
 $recv($3)._theClass_(newClass);
-$4=$recv($3)._yourself();
-$recv($2)._announce_($4);
+$recv($2)._announce_($recv($3)._yourself());
 return newClass;
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 }, function($ctx1) {$ctx1.fill(self,"superclass:subclass:slots:package:",{aClass:aClass,className:className,aCollection:aCollection,packageName:packageName,newClass:newClass})});
@@ -2963,13 +2958,12 @@ var self=this,$self=this;
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 return $core.withContext(function($ctx1) {
 //>>excludeEnd("ctx");
-var $1,$2,$3;
+var $1,$2;
 $self._basicRemoveCompiledMethod_(aMethod);
 $1=$recv($globals.SystemAnnouncer)._current();
 $2=$recv($globals.MethodRemoved)._new();
 $recv($2)._method_(aMethod);
-$3=$recv($2)._yourself();
-$recv($1)._announce_($3);
+$recv($1)._announce_($recv($2)._yourself());
 return self;
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 }, function($ctx1) {$ctx1.fill(self,"removeCompiledMethod:",{aMethod:aMethod})});
@@ -3325,13 +3319,12 @@ var self=this,$self=this;
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 return $core.withContext(function($ctx1) {
 //>>excludeEnd("ctx");
-var $1,$2,$3;
+var $1,$2;
 $self._basicAt_put_("comment",aString);
 $1=$recv($globals.SystemAnnouncer)._current();
 $2=$recv($globals.ClassCommentChanged)._new();
 $recv($2)._theClass_(self);
-$3=$recv($2)._yourself();
-$recv($1)._announce_($3);
+$recv($1)._announce_($recv($2)._yourself());
 return self;
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 }, function($ctx1) {$ctx1.fill(self,"comment:",{aString:aString})});
@@ -3490,7 +3483,7 @@ var oldPackage;
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 return $core.withContext(function($ctx1) {
 //>>excludeEnd("ctx");
-var $1,$2,$3,$4;
+var $1,$2,$3;
 $1=$recv([$self._package()
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 ,$ctx1.sendIdx["package"]=1
@@ -3507,8 +3500,7 @@ $2=$recv($globals.SystemAnnouncer)._current();
 $3=$recv($globals.ClassMoved)._new();
 $recv($3)._theClass_(self);
 $recv($3)._oldPackage_(oldPackage);
-$4=$recv($3)._yourself();
-$recv($2)._announce_($4);
+$recv($2)._announce_($recv($3)._yourself());
 return self;
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 }, function($ctx1) {$ctx1.fill(self,"package:",{aPackage:aPackage,oldPackage:oldPackage})});

+ 3 - 4
lang/src/Kernel-Collections.js

@@ -6337,7 +6337,7 @@ var lineCount;
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 return $core.withContext(function($ctx1) {
 //>>excludeEnd("ctx");
-var $1,$2;
+var $1;
 var $early={};
 try {
 lineCount=(0);
@@ -6346,9 +6346,8 @@ $self._lineIndicesDo_((function(start,endWithoutDelimiters,end){
 return $core.withContext(function($ctx2) {
 //>>excludeEnd("ctx");
 lineCount=$recv(lineCount).__plus((1));
-$1=lineCount;
-$2=$recv($1).__eq(anIndex);
-if($core.assert($2)){
+$1=$recv(lineCount).__eq(anIndex);
+if($core.assert($1)){
 throw $early=[$self._copyFrom_to_(start,endWithoutDelimiters)];
 }
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);

+ 10 - 15
lang/src/Kernel-Infrastructure.js

@@ -948,7 +948,7 @@ var self=this,$self=this;
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 return $core.withContext(function($ctx1) {
 //>>excludeEnd("ctx");
-var $1,$2,$3;
+var $1,$2;
 [(
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 $ctx1.supercall = true,
@@ -962,8 +962,7 @@ $1=$recv($globals.SystemAnnouncer)._current();
 $2=$recv($globals.ProtocolAdded)._new();
 $recv($2)._protocol_(aString);
 $recv($2)._theClass_($self._theClass());
-$3=$recv($2)._yourself();
-$recv($1)._announce_($3);
+$recv($1)._announce_($recv($2)._yourself());
 return self;
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 }, function($ctx1) {$ctx1.fill(self,"addElement:",{aString:aString})});
@@ -987,7 +986,7 @@ var self=this,$self=this;
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 return $core.withContext(function($ctx1) {
 //>>excludeEnd("ctx");
-var $1,$2,$3;
+var $1,$2;
 [(
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 $ctx1.supercall = true,
@@ -1001,8 +1000,7 @@ $1=$recv($globals.SystemAnnouncer)._current();
 $2=$recv($globals.ProtocolRemoved)._new();
 $recv($2)._protocol_(aString);
 $recv($2)._theClass_($self._theClass());
-$3=$recv($2)._yourself();
-$recv($1)._announce_($3);
+$recv($1)._announce_($recv($2)._yourself());
 return self;
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 }, function($ctx1) {$ctx1.fill(self,"removeElement:",{aString:aString})});
@@ -1119,13 +1117,12 @@ var self=this,$self=this;
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 return $core.withContext(function($ctx1) {
 //>>excludeEnd("ctx");
-var $1,$2,$3;
+var $1,$2;
 $self.dirty=false;
 $1=$recv($globals.SystemAnnouncer)._current();
 $2=$recv($globals.PackageClean)._new();
 $recv($2)._package_(self);
-$3=$recv($2)._yourself();
-$recv($1)._announce_($3);
+$recv($1)._announce_($recv($2)._yourself());
 return self;
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 }, function($ctx1) {$ctx1.fill(self,"beClean",{})});
@@ -1149,13 +1146,12 @@ var self=this,$self=this;
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 return $core.withContext(function($ctx1) {
 //>>excludeEnd("ctx");
-var $1,$2,$3;
+var $1,$2;
 $self.dirty=true;
 $1=$recv($globals.SystemAnnouncer)._current();
 $2=$recv($globals.PackageDirty)._new();
 $recv($2)._package_(self);
-$3=$recv($2)._yourself();
-$recv($1)._announce_($3);
+$recv($1)._announce_($recv($2)._yourself());
 return self;
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 }, function($ctx1) {$ctx1.fill(self,"beDirty",{})});
@@ -3674,7 +3670,7 @@ var self=this,$self=this;
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 return $core.withContext(function($ctx1) {
 //>>excludeEnd("ctx");
-var $1,$2,$3,$4;
+var $1,$2,$3;
 $1=$recv(aClass)._isMetaclass();
 if($core.assert($1)){
 [$self._error_([$recv($recv(aClass)._asString()).__comma(" is a Metaclass and cannot be removed!")
@@ -3738,8 +3734,7 @@ return $recv(each)._setTraitComposition_([]);
 $2=$recv($globals.SystemAnnouncer)._current();
 $3=$recv($globals.ClassRemoved)._new();
 $recv($3)._theClass_(aClass);
-$4=$recv($3)._yourself();
-$recv($2)._announce_($4);
+$recv($2)._announce_($recv($3)._yourself());
 return self;
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 }, function($ctx1) {$ctx1.fill(self,"removeClass:",{aClass:aClass})});

+ 6 - 7
lang/src/Kernel-Methods.js

@@ -1440,7 +1440,7 @@ var oldProtocol;
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 return $core.withContext(function($ctx1) {
 //>>excludeEnd("ctx");
-var $1,$2,$3,$4,$5;
+var $1,$2,$3,$4;
 oldProtocol=$self._protocol();
 $self.protocol=aString;
 $1=oldProtocol;
@@ -1451,15 +1451,14 @@ $2=$recv($globals.SystemAnnouncer)._current();
 $3=$recv($globals.MethodMoved)._new();
 $recv($3)._method_(self);
 $recv($3)._oldProtocol_(oldProtocol);
-$4=$recv($3)._yourself();
-$recv($2)._announce_($4);
+$recv($2)._announce_($recv($3)._yourself());
 }
-$5=$self._origin();
-if($5 == null || $5.a$nil){
-$5;
+$4=$self._origin();
+if($4 == null || $4.a$nil){
+$4;
 } else {
 var origin;
-origin=$5;
+origin=$4;
 $recv($recv(origin)._organization())._addElement_(aString);
 $recv(origin)._removeProtocolIfEmpty_(oldProtocol);
 }

+ 3 - 4
lang/src/Kernel-Objects.js

@@ -5432,7 +5432,7 @@ var n,d;
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 return $core.withContext(function($ctx1) {
 //>>excludeEnd("ctx");
-var $1,$2;
+var $1;
 n=[$recv($recv($self.y)._negated()).__at($self.x)
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 ,$ctx1.sendIdx["@"]=1
@@ -5451,9 +5451,8 @@ d=$recv([$recv([$recv(n)._x()
 ,$ctx1.sendIdx["y"]=1
 //>>excludeEnd("ctx");
 ][0]).__star($recv(n)._y()));
-$1=d;
-$2=$recv($1).__eq((0));
-if($core.assert($2)){
+$1=$recv(d).__eq((0));
+if($core.assert($1)){
 return (-1).__at((0));
 }
 return $recv(n).__slash($recv(d)._sqrt());

+ 54 - 75
lang/src/Kernel-Tests.js

@@ -3332,7 +3332,7 @@ var self=this,$self=this;
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 return $core.withContext(function($ctx1) {
 //>>excludeEnd("ctx");
-var $1,$2,$3,$4,$5,$6,$7,$8,$9,$10;
+var $1,$2,$3,$4,$5;
 $1=[$self._collection()
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 ,$ctx1.sendIdx["collection"]=1
@@ -3351,12 +3351,11 @@ $1=[$self._collection()
 ,$ctx1.sendIdx["addAll:"]=1
 //>>excludeEnd("ctx");
 ][0];
-$2=[$recv($1)._yourself()
+[$self._assert_equals_([$recv($1)._yourself()
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 ,$ctx1.sendIdx["yourself"]=1
 //>>excludeEnd("ctx");
-][0];
-[$self._assert_equals_($2,[$self._collection()
+][0],[$self._collection()
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 ,$ctx1.sendIdx["collection"]=2
 //>>excludeEnd("ctx");
@@ -3365,7 +3364,7 @@ $2=[$recv($1)._yourself()
 ,$ctx1.sendIdx["assert:equals:"]=1
 //>>excludeEnd("ctx");
 ][0];
-$3=[$recv([$self._collectionClass()
+$2=[$recv([$self._collectionClass()
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 ,$ctx1.sendIdx["collectionClass"]=2
 //>>excludeEnd("ctx");
@@ -3374,7 +3373,7 @@ $3=[$recv([$self._collectionClass()
 ,$ctx1.sendIdx["new"]=2
 //>>excludeEnd("ctx");
 ][0];
-[$recv($3)._addAll_([$self._collection()
+[$recv($2)._addAll_([$self._collection()
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 ,$ctx1.sendIdx["collection"]=3
 //>>excludeEnd("ctx");
@@ -3383,12 +3382,11 @@ $3=[$recv([$self._collectionClass()
 ,$ctx1.sendIdx["addAll:"]=2
 //>>excludeEnd("ctx");
 ][0];
-$4=[$recv($3)._yourself()
+[$self._assert_equals_([$recv($2)._yourself()
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 ,$ctx1.sendIdx["yourself"]=2
 //>>excludeEnd("ctx");
-][0];
-[$self._assert_equals_($4,[$self._collection()
+][0],[$self._collection()
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 ,$ctx1.sendIdx["collection"]=4
 //>>excludeEnd("ctx");
@@ -3397,7 +3395,7 @@ $4=[$recv($3)._yourself()
 ,$ctx1.sendIdx["assert:equals:"]=2
 //>>excludeEnd("ctx");
 ][0];
-$5=[$recv([$self._collectionClass()
+$3=[$recv([$self._collectionClass()
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 ,$ctx1.sendIdx["collectionClass"]=3
 //>>excludeEnd("ctx");
@@ -3406,7 +3404,7 @@ $5=[$recv([$self._collectionClass()
 ,$ctx1.sendIdx["new"]=3
 //>>excludeEnd("ctx");
 ][0];
-[$recv($5)._addAll_([$recv([$self._collectionClass()
+[$recv($3)._addAll_([$recv([$self._collectionClass()
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 ,$ctx1.sendIdx["collectionClass"]=4
 //>>excludeEnd("ctx");
@@ -3419,22 +3417,21 @@ $5=[$recv([$self._collectionClass()
 ,$ctx1.sendIdx["addAll:"]=3
 //>>excludeEnd("ctx");
 ][0];
-$6=[$recv($5)._yourself()
+[$self._assert_equals_([$recv($3)._yourself()
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 ,$ctx1.sendIdx["yourself"]=3
 //>>excludeEnd("ctx");
-][0];
-[$self._assert_equals_($6,$recv($self._collectionClass())._new())
+][0],$recv($self._collectionClass())._new())
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 ,$ctx1.sendIdx["assert:equals:"]=3
 //>>excludeEnd("ctx");
 ][0];
-$7=[$self._collection()
+$4=[$self._collection()
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 ,$ctx1.sendIdx["collection"]=5
 //>>excludeEnd("ctx");
 ][0];
-[$recv($7)._addAll_([$self._sampleNewValueAsCollection()
+[$recv($4)._addAll_([$self._sampleNewValueAsCollection()
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 ,$ctx1.sendIdx["sampleNewValueAsCollection"]=1
 //>>excludeEnd("ctx");
@@ -3443,20 +3440,18 @@ $7=[$self._collection()
 ,$ctx1.sendIdx["addAll:"]=4
 //>>excludeEnd("ctx");
 ][0];
-$8=[$recv($7)._yourself()
+$self._assert_equals_([$recv($4)._yourself()
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 ,$ctx1.sendIdx["yourself"]=4
 //>>excludeEnd("ctx");
-][0];
-$self._assert_equals_($8,[$self._collectionWithNewValue()
+][0],[$self._collectionWithNewValue()
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 ,$ctx1.sendIdx["collectionWithNewValue"]=1
 //>>excludeEnd("ctx");
 ][0]);
-$9=$self._sampleNewValueAsCollection();
-$recv($9)._addAll_($self._collection());
-$10=$recv($9)._yourself();
-$self._assertSameContents_as_($10,$self._collectionWithNewValue());
+$5=$self._sampleNewValueAsCollection();
+$recv($5)._addAll_($self._collection());
+$self._assertSameContents_as_($recv($5)._yourself(),$self._collectionWithNewValue());
 return self;
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 }, function($ctx1) {$ctx1.fill(self,"testAddAll",{})});
@@ -4845,14 +4840,12 @@ var self=this,$self=this;
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 return $core.withContext(function($ctx1) {
 //>>excludeEnd("ctx");
-var $1,$2,$3;
+var $1;
 $1=$recv($self._collectionClass())._new();
 $recv($1)._remove_ifAbsent_($self._sampleNewValue(),(function(){
 
 }));
-$2=$recv($1)._yourself();
-$3=$recv($2)._size();
-$self._assert_equals_($3,(0));
+$self._assert_equals_($recv($recv($1)._yourself())._size(),(0));
 return self;
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 }, function($ctx1) {$ctx1.fill(self,"testRegression1224",{})});
@@ -4876,11 +4869,10 @@ var self=this,$self=this;
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 return $core.withContext(function($ctx1) {
 //>>excludeEnd("ctx");
-var $1,$2;
+var $1;
 $1=$self._collection();
 $recv($1)._removeAll();
-$2=$recv($1)._yourself();
-$self._assert_equals_($2,$recv($self._collectionClass())._new());
+$self._assert_equals_($recv($1)._yourself(),$recv($self._collectionClass())._new());
 return self;
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 }, function($ctx1) {$ctx1.fill(self,"testRemoveAll",{})});
@@ -5441,7 +5433,7 @@ var self=this,$self=this;
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 return $core.withContext(function($ctx1) {
 //>>excludeEnd("ctx");
-var $1,$2,$3,$4,$5,$6;
+var $1,$2,$3;
 [(
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 $ctx1.supercall = true,
@@ -5465,12 +5457,11 @@ $1=[$self._collection()
 ,$ctx1.sendIdx["addAll:"]=1
 //>>excludeEnd("ctx");
 ][0];
-$2=[$recv($1)._yourself()
+[$self._assert_equals_([$recv($1)._yourself()
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 ,$ctx1.sendIdx["yourself"]=1
 //>>excludeEnd("ctx");
-][0];
-[$self._assert_equals_($2,[$self._collection()
+][0],[$self._collection()
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 ,$ctx1.sendIdx["collection"]=3
 //>>excludeEnd("ctx");
@@ -5479,12 +5470,12 @@ $2=[$recv($1)._yourself()
 ,$ctx1.sendIdx["assert:equals:"]=1
 //>>excludeEnd("ctx");
 ][0];
-$3=[$self._collection()
+$2=[$self._collection()
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 ,$ctx1.sendIdx["collection"]=4
 //>>excludeEnd("ctx");
 ][0];
-[$recv($3)._addAll_([$self._collectionWithNewValue()
+[$recv($2)._addAll_([$self._collectionWithNewValue()
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 ,$ctx1.sendIdx["collectionWithNewValue"]=1
 //>>excludeEnd("ctx");
@@ -5493,12 +5484,11 @@ $3=[$self._collection()
 ,$ctx1.sendIdx["addAll:"]=2
 //>>excludeEnd("ctx");
 ][0];
-$4=[$recv($3)._yourself()
+[$self._assert_equals_([$recv($2)._yourself()
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 ,$ctx1.sendIdx["yourself"]=2
 //>>excludeEnd("ctx");
-][0];
-[$self._assert_equals_($4,[$self._collectionWithNewValue()
+][0],[$self._collectionWithNewValue()
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 ,$ctx1.sendIdx["collectionWithNewValue"]=2
 //>>excludeEnd("ctx");
@@ -5507,14 +5497,13 @@ $4=[$recv($3)._yourself()
 ,$ctx1.sendIdx["assert:equals:"]=2
 //>>excludeEnd("ctx");
 ][0];
-$5=[$self._collectionWithNewValue()
+$3=[$self._collectionWithNewValue()
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 ,$ctx1.sendIdx["collectionWithNewValue"]=3
 //>>excludeEnd("ctx");
 ][0];
-$recv($5)._addAll_($self._collection());
-$6=$recv($5)._yourself();
-$self._assert_equals_($6,$self._collectionWithNewValue());
+$recv($3)._addAll_($self._collection());
+$self._assert_equals_($recv($3)._yourself(),$self._collectionWithNewValue());
 return self;
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 }, function($ctx1) {$ctx1.fill(self,"testAddAll",{})});
@@ -5763,7 +5752,7 @@ var self=this,$self=this;
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 return $core.withContext(function($ctx1) {
 //>>excludeEnd("ctx");
-var $1,$2;
+var $1;
 $1=$recv([$self._collectionClass()
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 ,$ctx1.sendIdx["collectionClass"]=1
@@ -5775,8 +5764,7 @@ $1=$recv([$self._collectionClass()
 //>>excludeEnd("ctx");
 ][0];
 $recv($1)._at_put_("lastname","Bond");
-$2=$recv($1)._printString();
-$self._assert_equals_($2,[$recv("a ".__comma($recv($self._collectionClass())._name())).__comma(" ('firstname' -> 'James' , 'lastname' -> 'Bond')")
+$self._assert_equals_($recv($1)._printString(),[$recv("a ".__comma($recv($self._collectionClass())._name())).__comma(" ('firstname' -> 'James' , 'lastname' -> 'Bond')")
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 ,$ctx1.sendIdx[","]=1
 //>>excludeEnd("ctx");
@@ -5804,7 +5792,7 @@ var self=this,$self=this;
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 return $core.withContext(function($ctx1) {
 //>>excludeEnd("ctx");
-var $1,$2;
+var $1;
 $self._nonIndexesDo_((function(each){
 var collection;
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
@@ -5871,8 +5859,7 @@ return $self._deny_($recv(collection).__eq([$self._collection()
 }));
 $1=$self._collectionWithNewValue();
 $recv($1)._removeKey_($self._sampleNewIndex());
-$2=$recv($1)._yourself();
-$self._assert_equals_($2,$self._collection());
+$self._assert_equals_($recv($1)._yourself(),$self._collection());
 return self;
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 }, function($ctx1) {$ctx1.fill(self,"testRemoveKey",{})});
@@ -5896,7 +5883,7 @@ var self=this,$self=this;
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 return $core.withContext(function($ctx1) {
 //>>excludeEnd("ctx");
-var $1,$2;
+var $1;
 $self._nonIndexesDo_((function(each){
 var collection;
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
@@ -5991,8 +5978,7 @@ return $self._assert_(false);
 }, function($ctx2) {$ctx2.fillBlock({},$ctx1,5)});
 //>>excludeEnd("ctx");
 }));
-$2=$recv($1)._yourself();
-$self._assert_equals_($2,$self._collection());
+$self._assert_equals_($recv($1)._yourself(),$self._collection());
 return self;
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 }, function($ctx1) {$ctx1.fill(self,"testRemoveKeyIfAbsent",{})});
@@ -7655,12 +7641,10 @@ var self=this,$self=this;
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 return $core.withContext(function($ctx1) {
 //>>excludeEnd("ctx");
-var $1,$2,$3;
+var $1;
 $1=$self._collection();
 $recv($1)._addFirst_((0));
-$2=$recv($1)._yourself();
-$3=$recv($2)._first();
-$self._assert_equals_($3,(0));
+$self._assert_equals_($recv($recv($1)._yourself())._first(),(0));
 return self;
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 }, function($ctx1) {$ctx1.fill(self,"testAddFirst",{})});
@@ -8971,7 +8955,7 @@ var self=this,$self=this;
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 return $core.withContext(function($ctx1) {
 //>>excludeEnd("ctx");
-var $1,$2;
+var $1;
 $self._should_raise_((function(){
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 return $core.withContext(function($ctx2) {
@@ -8980,8 +8964,7 @@ $1=$recv($self._collectionClass())._new();
 $recv($1)._remove_ifAbsent_($self._sampleNewValue(),(function(){
 
 }));
-$2=$recv($1)._yourself();
-return $recv($2)._size();
+return $recv($recv($1)._yourself())._size();
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
 //>>excludeEnd("ctx");
@@ -9393,7 +9376,7 @@ var self=this,$self=this;
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 return $core.withContext(function($ctx1) {
 //>>excludeEnd("ctx");
-var $1,$2,$3,$4,$5,$6;
+var $1,$2,$3;
 [(
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 $ctx1.supercall = true,
@@ -9417,12 +9400,11 @@ $1=[$self._collection()
 ,$ctx1.sendIdx["addAll:"]=1
 //>>excludeEnd("ctx");
 ][0];
-$2=[$recv($1)._yourself()
+[$self._assert_equals_([$recv($1)._yourself()
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 ,$ctx1.sendIdx["yourself"]=1
 //>>excludeEnd("ctx");
-][0];
-[$self._assert_equals_($2,[$self._collection()
+][0],[$self._collection()
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 ,$ctx1.sendIdx["collection"]=3
 //>>excludeEnd("ctx");
@@ -9431,12 +9413,12 @@ $2=[$recv($1)._yourself()
 ,$ctx1.sendIdx["assert:equals:"]=1
 //>>excludeEnd("ctx");
 ][0];
-$3=[$self._collection()
+$2=[$self._collection()
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 ,$ctx1.sendIdx["collection"]=4
 //>>excludeEnd("ctx");
 ][0];
-[$recv($3)._addAll_([$self._collectionWithNewValue()
+[$recv($2)._addAll_([$self._collectionWithNewValue()
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 ,$ctx1.sendIdx["collectionWithNewValue"]=1
 //>>excludeEnd("ctx");
@@ -9445,12 +9427,11 @@ $3=[$self._collection()
 ,$ctx1.sendIdx["addAll:"]=2
 //>>excludeEnd("ctx");
 ][0];
-$4=[$recv($3)._yourself()
+[$self._assert_equals_([$recv($2)._yourself()
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 ,$ctx1.sendIdx["yourself"]=2
 //>>excludeEnd("ctx");
-][0];
-[$self._assert_equals_($4,[$self._collectionWithNewValue()
+][0],[$self._collectionWithNewValue()
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 ,$ctx1.sendIdx["collectionWithNewValue"]=2
 //>>excludeEnd("ctx");
@@ -9459,14 +9440,13 @@ $4=[$recv($3)._yourself()
 ,$ctx1.sendIdx["assert:equals:"]=2
 //>>excludeEnd("ctx");
 ][0];
-$5=[$self._collectionWithNewValue()
+$3=[$self._collectionWithNewValue()
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 ,$ctx1.sendIdx["collectionWithNewValue"]=3
 //>>excludeEnd("ctx");
 ][0];
-$recv($5)._addAll_($self._collection());
-$6=$recv($5)._yourself();
-$self._assert_equals_($6,$self._collectionWithNewValue());
+$recv($3)._addAll_($self._collection());
+$self._assert_equals_($recv($3)._yourself(),$self._collectionWithNewValue());
 return self;
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 }, function($ctx1) {$ctx1.fill(self,"testAddAll",{})});
@@ -17266,7 +17246,7 @@ var jsNull;
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 return $core.withContext(function($ctx1) {
 //>>excludeEnd("ctx");
-var $1,$2;
+var $1;
 jsNull=$recv($globals.JSON)._parse_("null");
 $self._samplesDo_((function(index,value){
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
@@ -17274,8 +17254,7 @@ return $core.withContext(function($ctx2) {
 //>>excludeEnd("ctx");
 $1=$self._collection();
 $recv($1)._at_put_(index,jsNull);
-$2=$recv($1)._indexOf_(jsNull);
-return $self._assert_equals_($2,index);
+return $self._assert_equals_($recv($1)._indexOf_(jsNull),index);
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 }, function($ctx2) {$ctx2.fillBlock({index:index,value:value},$ctx1,1)});
 //>>excludeEnd("ctx");