|
@@ -15,7 +15,7 @@ function $IRVariable(){return smalltalk.IRVariable||(typeof IRVariable=="undefin
|
|
|
function $AliasVar(){return smalltalk.AliasVar||(typeof AliasVar=="undefined"?nil:AliasVar)}
|
|
|
function $IRAssignment(){return smalltalk.IRAssignment||(typeof IRAssignment=="undefined"?nil:IRAssignment)}
|
|
|
return smalltalk.withContext(function($ctx1) {
|
|
|
-var $1,$2,$3,$4,$6,$5,$7,$8,$10,$11,$12,$13,$9,$14;
|
|
|
+var $1,$2,$3,$4,$6,$5,$7,$8,$10,$11,$9,$12;
|
|
|
$1=_st(aNode)._isImmutable();
|
|
|
if(smalltalk.assert($1)){
|
|
|
$2=self._visit_(aNode);
|
|
@@ -36,17 +36,15 @@ $8=self._sequence();
|
|
|
$10=_st($IRAssignment())._new();
|
|
|
_st($10)._add_(variable);
|
|
|
$ctx1.sendIdx["add:"]=2;
|
|
|
-$11=$10;
|
|
|
-$12=self._visit_(aNode);
|
|
|
-_st($11)._add_($12);
|
|
|
+_st($10)._add_(self._visit_(aNode));
|
|
|
$ctx1.sendIdx["add:"]=3;
|
|
|
-$13=_st($10)._yourself();
|
|
|
-$9=$13;
|
|
|
+$11=_st($10)._yourself();
|
|
|
+$9=$11;
|
|
|
_st($8)._add_($9);
|
|
|
$ctx1.sendIdx["add:"]=1;
|
|
|
_st(_st(self._method())._internalVariables())._add_(variable);
|
|
|
-$14=variable;
|
|
|
-return $14;
|
|
|
+$12=variable;
|
|
|
+return $12;
|
|
|
}, function($ctx1) {$ctx1.fill(self,"alias:",{aNode:aNode,variable:variable},smalltalk.IRASTTranslator)})},
|
|
|
args: ["aNode"],
|
|
|
source: "alias: aNode\x0a\x09| variable |\x0a\x0a\x09aNode isImmutable ifTrue: [ ^ self visit: aNode ].\x0a\x0a\x09variable := IRVariable new\x0a\x09\x09variable: (AliasVar new name: '$', self nextAlias);\x0a\x09\x09yourself.\x0a\x0a\x09self sequence add: (IRAssignment new\x0a\x09\x09add: variable;\x0a\x09\x09add: (self visit: aNode);\x0a\x09\x09yourself).\x0a\x0a\x09self method internalVariables add: variable.\x0a\x0a\x09^ variable",
|
|
@@ -91,7 +89,7 @@ $5=result;
|
|
|
return $5;
|
|
|
}, function($ctx1) {$ctx1.fill(self,"aliasTemporally:",{aCollection:aCollection,threshold:threshold,result:result},smalltalk.IRASTTranslator)})},
|
|
|
args: ["aCollection"],
|
|
|
-source: "aliasTemporally: aCollection\x0a\x09\x22https://github.com/NicolasPetton/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 result |\x0a\x09threshold := 0.\x0a\x09\x0a\x09aCollection withIndexDo: [ :each :i |\x0a\x09\x09each subtreeNeedsAliasing\x0a\x09\x09\x09ifTrue: [ threshold := i ]].\x0a\x0a\x09result := OrderedCollection new.\x0a\x09aCollection withIndexDo: [ :each :i |\x0a\x09\x09result add: (i <= threshold\x0a\x09\x09\x09ifTrue: [ self alias: each ]\x0a\x09\x09\x09ifFalse: [ self visit: each ])].\x0a\x0a\x09^result",
|
|
|
+source: "aliasTemporally: aCollection\x0a\x09\x22https://github.com/NicolasPetton/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 result |\x0a\x09threshold := 0.\x0a\x09\x0a\x09aCollection withIndexDo: [ :each :i |\x0a\x09\x09each subtreeNeedsAliasing\x0a\x09\x09\x09ifTrue: [ threshold := i ] ].\x0a\x0a\x09result := OrderedCollection new.\x0a\x09aCollection withIndexDo: [ :each :i |\x0a\x09\x09result add: (i <= threshold\x0a\x09\x09\x09ifTrue: [ self alias: each ]\x0a\x09\x09\x09ifFalse: [ self visit: each ]) ].\x0a\x0a\x09^ result",
|
|
|
messageSends: ["withIndexDo:", "ifTrue:", "subtreeNeedsAliasing", "new", "add:", "ifTrue:ifFalse:", "<=", "alias:", "visit:"],
|
|
|
referencedClasses: ["OrderedCollection"]
|
|
|
}),
|
|
@@ -301,7 +299,7 @@ var closure;
|
|
|
function $IRClosure(){return smalltalk.IRClosure||(typeof IRClosure=="undefined"?nil:IRClosure)}
|
|
|
function $IRTempDeclaration(){return smalltalk.IRTempDeclaration||(typeof IRTempDeclaration=="undefined"?nil:IRTempDeclaration)}
|
|
|
return smalltalk.withContext(function($ctx1) {
|
|
|
-var $1,$2,$3,$4,$6,$5,$7,$9,$10,$11,$12,$8,$13;
|
|
|
+var $1,$2,$3,$4,$6,$5,$7,$8,$9;
|
|
|
$1=_st($IRClosure())._new();
|
|
|
$ctx1.sendIdx["new"]=1;
|
|
|
_st($1)._arguments_(_st(aNode)._parameters());
|
|
@@ -318,15 +316,11 @@ $ctx1.sendIdx["scope"]=2;
|
|
|
$5=_st($6)._temps();
|
|
|
_st($5)._do_((function(each){
|
|
|
return smalltalk.withContext(function($ctx2) {
|
|
|
-$7=closure;
|
|
|
-$9=_st($IRTempDeclaration())._new();
|
|
|
-_st($9)._name_(_st(each)._name());
|
|
|
-$10=$9;
|
|
|
-$11=_st(aNode)._scope();
|
|
|
-_st($10)._scope_($11);
|
|
|
-$12=_st($9)._yourself();
|
|
|
-$8=$12;
|
|
|
-return _st($7)._add_($8);
|
|
|
+$7=_st($IRTempDeclaration())._new();
|
|
|
+_st($7)._name_(_st(each)._name());
|
|
|
+_st($7)._scope_(_st(aNode)._scope());
|
|
|
+$8=_st($7)._yourself();
|
|
|
+return _st(closure)._add_($8);
|
|
|
$ctx2.sendIdx["add:"]=1;
|
|
|
}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)})}));
|
|
|
$ctx1.sendIdx["do:"]=1;
|
|
@@ -334,8 +328,8 @@ _st(_st(aNode)._nodes())._do_((function(each){
|
|
|
return smalltalk.withContext(function($ctx2) {
|
|
|
return _st(closure)._add_(self._visit_(each));
|
|
|
}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,2)})}));
|
|
|
-$13=closure;
|
|
|
-return $13;
|
|
|
+$9=closure;
|
|
|
+return $9;
|
|
|
}, function($ctx1) {$ctx1.fill(self,"visitBlockNode:",{aNode:aNode,closure:closure},smalltalk.IRASTTranslator)})},
|
|
|
args: ["aNode"],
|
|
|
source: "visitBlockNode: aNode\x0a\x09| closure |\x0a\x09closure := IRClosure new\x0a\x09\x09arguments: aNode parameters;\x0a\x09\x09scope: aNode scope;\x0a\x09\x09yourself.\x0a\x09aNode scope temps do: [ :each |\x0a\x09\x09closure add: (IRTempDeclaration new\x0a\x09\x09\x09name: each name;\x0a\x09\x09\x09scope: aNode scope;\x0a\x09\x09\x09yourself) ].\x0a\x09aNode nodes do: [ :each | closure add: (self visit: each) ].\x0a\x09^ closure",
|
|
@@ -353,7 +347,7 @@ var self=this;
|
|
|
function $IRBlockSequence(){return smalltalk.IRBlockSequence||(typeof IRBlockSequence=="undefined"?nil:IRBlockSequence)}
|
|
|
function $IRBlockReturn(){return smalltalk.IRBlockReturn||(typeof IRBlockReturn=="undefined"?nil:IRBlockReturn)}
|
|
|
return smalltalk.withContext(function($ctx1) {
|
|
|
-var $2,$3,$5,$4,$6,$7,$10,$9,$8,$11,$13,$14,$17,$16,$15,$18,$12,$19,$22,$21,$20,$1;
|
|
|
+var $2,$3,$5,$4,$6,$7,$10,$9,$8,$11,$13,$14,$17,$16,$15,$18,$12,$1;
|
|
|
$2=_st($IRBlockSequence())._new();
|
|
|
$ctx1.sendIdx["new"]=1;
|
|
|
$1=self._withSequence_do_($2,(function(){
|
|
@@ -380,11 +374,7 @@ $9=_st($10)._last();
|
|
|
$ctx3.sendIdx["last"]=1;
|
|
|
$8=_st($9)._isReturnNode();
|
|
|
if(smalltalk.assert($8)){
|
|
|
-$19=self._sequence();
|
|
|
-$22=_st(aNode)._nodes();
|
|
|
-$21=_st($22)._last();
|
|
|
-$20=self._visitOrAlias_($21);
|
|
|
-return _st($19)._add_($20);
|
|
|
+return _st(self._sequence())._add_(self._visitOrAlias_(_st(_st(aNode)._nodes())._last()));
|
|
|
} else {
|
|
|
$11=self._sequence();
|
|
|
$ctx3.sendIdx["sequence"]=2;
|
|
@@ -408,7 +398,7 @@ $ctx3.sendIdx["add:"]=2;
|
|
|
return $1;
|
|
|
}, function($ctx1) {$ctx1.fill(self,"visitBlockSequenceNode:",{aNode:aNode},smalltalk.IRASTTranslator)})},
|
|
|
args: ["aNode"],
|
|
|
-source: "visitBlockSequenceNode: aNode\x0a\x09^ self\x0a\x09\x09withSequence: IRBlockSequence new\x0a\x09\x09do: [\x0a\x09\x09\x09aNode nodes ifNotEmpty: [\x0a\x09\x09\x09\x09aNode nodes allButLast do: [ :each |\x0a\x09\x09\x09\x09\x09self sequence add: (self visitOrAlias: each) ].\x0a\x09\x09\x09\x09aNode nodes last isReturnNode\x0a\x09\x09\x09\x09\x09ifFalse: [ self sequence add: (IRBlockReturn new add: (self visitOrAlias: aNode nodes last); yourself) ]\x0a\x09\x09\x09\x09\x09ifTrue: [ self sequence add: (self visitOrAlias: aNode nodes last) ]]]",
|
|
|
+source: "visitBlockSequenceNode: aNode\x0a\x09^ self\x0a\x09\x09withSequence: IRBlockSequence new\x0a\x09\x09do: [\x0a\x09\x09\x09aNode nodes ifNotEmpty: [\x0a\x09\x09\x09\x09aNode nodes allButLast do: [ :each |\x0a\x09\x09\x09\x09\x09self sequence add: (self visitOrAlias: each) ].\x0a\x09\x09\x09\x09aNode nodes last isReturnNode\x0a\x09\x09\x09\x09\x09ifFalse: [ self sequence add: (IRBlockReturn new add: (self visitOrAlias: aNode nodes last); yourself) ]\x0a\x09\x09\x09\x09\x09ifTrue: [ self sequence add: (self visitOrAlias: aNode nodes last) ] ]]",
|
|
|
messageSends: ["withSequence:do:", "new", "ifNotEmpty:", "nodes", "do:", "allButLast", "add:", "sequence", "visitOrAlias:", "ifFalse:ifTrue:", "isReturnNode", "last", "yourself"],
|
|
|
referencedClasses: ["IRBlockSequence", "IRBlockReturn"]
|
|
|
}),
|
|
@@ -423,7 +413,7 @@ var self=this;
|
|
|
var alias,receiver;
|
|
|
function $VariableNode(){return smalltalk.VariableNode||(typeof VariableNode=="undefined"?nil:VariableNode)}
|
|
|
return smalltalk.withContext(function($ctx1) {
|
|
|
-var $2,$1,$3,$4,$6,$5,$9,$8,$7;
|
|
|
+var $2,$1,$3,$5,$4,$6;
|
|
|
$2=_st(aNode)._receiver();
|
|
|
$ctx1.sendIdx["receiver"]=1;
|
|
|
$1=_st($2)._isImmutable();
|
|
@@ -432,31 +422,28 @@ receiver=_st(aNode)._receiver();
|
|
|
$ctx1.sendIdx["receiver"]=2;
|
|
|
receiver;
|
|
|
} else {
|
|
|
-$3=_st(aNode)._receiver();
|
|
|
-alias=self._alias_($3);
|
|
|
+alias=self._alias_(_st(aNode)._receiver());
|
|
|
$ctx1.sendIdx["alias:"]=1;
|
|
|
alias;
|
|
|
receiver=_st(_st($VariableNode())._new())._binding_(_st(alias)._variable());
|
|
|
receiver;
|
|
|
};
|
|
|
-$4=_st(aNode)._nodes();
|
|
|
+$3=_st(aNode)._nodes();
|
|
|
$ctx1.sendIdx["nodes"]=1;
|
|
|
-_st($4)._do_((function(each){
|
|
|
+_st($3)._do_((function(each){
|
|
|
return smalltalk.withContext(function($ctx2) {
|
|
|
return _st(each)._receiver_(receiver);
|
|
|
}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,3)})}));
|
|
|
$ctx1.sendIdx["do:"]=1;
|
|
|
-$6=_st(aNode)._nodes();
|
|
|
+$5=_st(aNode)._nodes();
|
|
|
$ctx1.sendIdx["nodes"]=2;
|
|
|
-$5=_st($6)._allButLast();
|
|
|
-_st($5)._do_((function(each){
|
|
|
+$4=_st($5)._allButLast();
|
|
|
+_st($4)._do_((function(each){
|
|
|
return smalltalk.withContext(function($ctx2) {
|
|
|
return _st(self._sequence())._add_(self._visit_(each));
|
|
|
}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,4)})}));
|
|
|
-$9=_st(aNode)._nodes();
|
|
|
-$8=_st($9)._last();
|
|
|
-$7=self._alias_($8);
|
|
|
-return $7;
|
|
|
+$6=self._alias_(_st(_st(aNode)._nodes())._last());
|
|
|
+return $6;
|
|
|
}, function($ctx1) {$ctx1.fill(self,"visitCascadeNode:",{aNode:aNode,alias:alias,receiver:receiver},smalltalk.IRASTTranslator)})},
|
|
|
args: ["aNode"],
|
|
|
source: "visitCascadeNode: aNode\x0a\x09| alias receiver |\x0a\x0a\x09aNode receiver isImmutable \x0a\x09\x09ifTrue: [ receiver := aNode receiver ]\x0a\x09\x09ifFalse: [\x0a\x09\x09\x09alias := self alias: aNode receiver.\x0a\x09\x09\x09receiver := VariableNode new binding: alias variable ].\x0a\x09\x0a\x09aNode nodes do: [ :each |\x0a\x09\x09\x09each receiver: receiver ].\x0a\x0a\x09aNode nodes allButLast do: [ :each |\x0a\x09\x09self sequence add: (self visit: each) ].\x0a\x0a\x09^ self alias: aNode nodes last",
|
|
@@ -484,7 +471,7 @@ $1=array;
|
|
|
return $1;
|
|
|
}, function($ctx1) {$ctx1.fill(self,"visitDynamicArrayNode:",{aNode:aNode,array:array},smalltalk.IRASTTranslator)})},
|
|
|
args: ["aNode"],
|
|
|
-source: "visitDynamicArrayNode: aNode\x0a\x09| array |\x0a\x09array := IRDynamicArray new.\x0a\x09(self aliasTemporally: aNode nodes) do: [:each | array add: each].\x0a\x09^ array",
|
|
|
+source: "visitDynamicArrayNode: aNode\x0a\x09| array |\x0a\x09array := IRDynamicArray new.\x0a\x09(self aliasTemporally: aNode nodes) do: [ :each | array add: each ].\x0a\x09^ array",
|
|
|
messageSends: ["new", "do:", "aliasTemporally:", "nodes", "add:"],
|
|
|
referencedClasses: ["IRDynamicArray"]
|
|
|
}),
|
|
@@ -509,7 +496,7 @@ $1=dictionary;
|
|
|
return $1;
|
|
|
}, function($ctx1) {$ctx1.fill(self,"visitDynamicDictionaryNode:",{aNode:aNode,dictionary:dictionary},smalltalk.IRASTTranslator)})},
|
|
|
args: ["aNode"],
|
|
|
-source: "visitDynamicDictionaryNode: aNode\x0a\x09| dictionary |\x0a\x09dictionary := IRDynamicDictionary new.\x0a\x09(self aliasTemporally: aNode nodes) do: [:each | dictionary add: each].\x0a\x09^ dictionary",
|
|
|
+source: "visitDynamicDictionaryNode: aNode\x0a\x09| dictionary |\x0a\x09dictionary := IRDynamicDictionary new.\x0a\x09(self aliasTemporally: aNode nodes) do: [ :each | dictionary add: each ].\x0a\x09^ dictionary",
|
|
|
messageSends: ["new", "do:", "aliasTemporally:", "nodes", "add:"],
|
|
|
referencedClasses: ["IRDynamicDictionary"]
|
|
|
}),
|
|
@@ -548,7 +535,7 @@ function $IRTempDeclaration(){return smalltalk.IRTempDeclaration||(typeof IRTemp
|
|
|
function $IRReturn(){return smalltalk.IRReturn||(typeof IRReturn=="undefined"?nil:IRReturn)}
|
|
|
function $IRVariable(){return smalltalk.IRVariable||(typeof IRVariable=="undefined"?nil:IRVariable)}
|
|
|
return smalltalk.withContext(function($ctx1) {
|
|
|
-var $2,$3,$4,$5,$1,$7,$6,$8,$10,$11,$12,$13,$9,$14,$16,$15,$18,$19,$17,$21,$22,$25,$24,$23,$26,$20,$27;
|
|
|
+var $2,$3,$4,$5,$1,$7,$6,$8,$10,$11,$12,$13,$9,$14,$16,$15,$18,$19,$17,$20,$21,$22;
|
|
|
$2=_st($IRMethod())._new();
|
|
|
$ctx1.sendIdx["new"]=1;
|
|
|
_st($2)._source_(_st(self._source())._crlfSanitized());
|
|
@@ -604,19 +591,14 @@ $ctx1.sendIdx["method"]=3;
|
|
|
$19=_st($IRReturn())._new();
|
|
|
$ctx1.sendIdx["new"]=3;
|
|
|
$17=_st($18)._add_($19);
|
|
|
-$21=_st($IRVariable())._new();
|
|
|
-$22=$21;
|
|
|
-$25=_st(aNode)._scope();
|
|
|
-$24=_st($25)._pseudoVars();
|
|
|
-$23=_st($24)._at_("self");
|
|
|
-_st($22)._variable_($23);
|
|
|
-$26=_st($21)._yourself();
|
|
|
-$20=$26;
|
|
|
-_st($17)._add_($20);
|
|
|
+$20=_st($IRVariable())._new();
|
|
|
+_st($20)._variable_(_st(_st(_st(aNode)._scope())._pseudoVars())._at_("self"));
|
|
|
+$21=_st($20)._yourself();
|
|
|
+_st($17)._add_($21);
|
|
|
$ctx1.sendIdx["add:"]=3;
|
|
|
};
|
|
|
-$27=self._method();
|
|
|
-return $27;
|
|
|
+$22=self._method();
|
|
|
+return $22;
|
|
|
}, function($ctx1) {$ctx1.fill(self,"visitMethodNode:",{aNode:aNode},smalltalk.IRASTTranslator)})},
|
|
|
args: ["aNode"],
|
|
|
source: "visitMethodNode: aNode\x0a\x0a\x09self method: (IRMethod new\x0a\x09\x09source: self source crlfSanitized;\x0a\x09\x09theClass: self theClass;\x0a\x09\x09arguments: aNode arguments;\x0a\x09\x09selector: aNode selector;\x0a\x09\x09sendIndexes: aNode sendIndexes;\x0a\x09\x09superSends: aNode superSends;\x0a\x09\x09classReferences: aNode classReferences;\x0a\x09\x09scope: aNode scope;\x0a\x09\x09yourself).\x0a\x0a\x09aNode scope temps do: [ :each |\x0a\x09\x09self method add: (IRTempDeclaration new\x0a\x09\x09\x09name: each name;\x0a\x09\x09\x09scope: aNode scope;\x0a\x09\x09\x09yourself) ].\x0a\x0a\x09aNode nodes do: [ :each | self method add: (self visit: each) ].\x0a\x0a\x09aNode scope hasLocalReturn ifFalse: [\x0a\x09\x09(self method add: IRReturn new) add: (IRVariable new\x0a\x09\x09\x09variable: (aNode scope pseudoVars at: 'self');\x0a\x09\x09\x09yourself) ].\x0a\x0a\x09^ self method",
|
|
@@ -743,7 +725,7 @@ return _st(self._sequence())._add_(instruction);
|
|
|
return $1;
|
|
|
}, function($ctx1) {$ctx1.fill(self,"visitSequenceNode:",{aNode:aNode},smalltalk.IRASTTranslator)})},
|
|
|
args: ["aNode"],
|
|
|
-source: "visitSequenceNode: aNode\x0a\x09^ self\x0a\x09\x09withSequence: IRSequence new\x0a\x09\x09do: [\x0a\x09\x09\x09aNode nodes do: [ :each | | instruction |\x0a\x09\x09\x09\x09instruction := self visitOrAlias: each.\x0a\x09\x09\x09\x09instruction isVariable ifFalse: [\x0a\x09\x09\x09\x09\x09self sequence add: instruction ]]]",
|
|
|
+source: "visitSequenceNode: aNode\x0a\x09^ self\x0a\x09\x09withSequence: IRSequence new\x0a\x09\x09do: [\x0a\x09\x09\x09aNode nodes do: [ :each | | instruction |\x0a\x09\x09\x09\x09instruction := self visitOrAlias: each.\x0a\x09\x09\x09\x09instruction isVariable ifFalse: [\x0a\x09\x09\x09\x09\x09self sequence add: instruction ] ]]",
|
|
|
messageSends: ["withSequence:do:", "new", "do:", "nodes", "visitOrAlias:", "ifFalse:", "isVariable", "add:", "sequence"],
|
|
|
referencedClasses: ["IRSequence"]
|
|
|
}),
|
|
@@ -1148,13 +1130,11 @@ category: 'building',
|
|
|
fn: function (anIRInstruction,anotherIRInstruction){
|
|
|
var self=this;
|
|
|
return smalltalk.withContext(function($ctx1) {
|
|
|
-var $1,$3,$2;
|
|
|
+var $1;
|
|
|
_st(anotherIRInstruction)._parent_(self);
|
|
|
$1=self._instructions();
|
|
|
$ctx1.sendIdx["instructions"]=1;
|
|
|
-$3=self._instructions();
|
|
|
-$2=_st($3)._indexOf_(anIRInstruction);
|
|
|
-_st($1)._at_put_($2,anotherIRInstruction);
|
|
|
+_st($1)._at_put_(_st(self._instructions())._indexOf_(anIRInstruction),anotherIRInstruction);
|
|
|
return self}, function($ctx1) {$ctx1.fill(self,"replace:with:",{anIRInstruction:anIRInstruction,anotherIRInstruction:anotherIRInstruction},smalltalk.IRInstruction)})},
|
|
|
args: ["anIRInstruction", "anotherIRInstruction"],
|
|
|
source: "replace: anIRInstruction with: anotherIRInstruction\x0a\x09anotherIRInstruction parent: self.\x0a\x09self instructions\x0a\x09\x09at: (self instructions indexOf: anIRInstruction)\x0a\x09\x09put: anotherIRInstruction",
|
|
@@ -2307,7 +2287,7 @@ $1=self["@value"];
|
|
|
return $1;
|
|
|
}, function($ctx1) {$ctx1.fill(self,"value",{},smalltalk.IRValue)})},
|
|
|
args: [],
|
|
|
-source: "value\x0a\x09^value",
|
|
|
+source: "value\x0a\x09^ value",
|
|
|
messageSends: [],
|
|
|
referencedClasses: []
|
|
|
}),
|
|
@@ -2953,16 +2933,14 @@ category: 'visiting',
|
|
|
fn: function (anIRAssignment){
|
|
|
var self=this;
|
|
|
return smalltalk.withContext(function($ctx1) {
|
|
|
-var $2,$1,$4,$3;
|
|
|
+var $2,$1;
|
|
|
$2=_st(anIRAssignment)._instructions();
|
|
|
$ctx1.sendIdx["instructions"]=1;
|
|
|
$1=_st($2)._first();
|
|
|
self._visit_($1);
|
|
|
$ctx1.sendIdx["visit:"]=1;
|
|
|
_st(self._stream())._nextPutAssignment();
|
|
|
-$4=_st(anIRAssignment)._instructions();
|
|
|
-$3=_st($4)._last();
|
|
|
-self._visit_($3);
|
|
|
+self._visit_(_st(_st(anIRAssignment)._instructions())._last());
|
|
|
return self}, function($ctx1) {$ctx1.fill(self,"visitIRAssignment:",{anIRAssignment:anIRAssignment},smalltalk.IRJSTranslator)})},
|
|
|
args: ["anIRAssignment"],
|
|
|
source: "visitIRAssignment: anIRAssignment\x0a\x09self visit: anIRAssignment instructions first.\x0a\x09self stream nextPutAssignment.\x0a\x09self visit: anIRAssignment instructions last.",
|
|
@@ -2978,7 +2956,7 @@ category: 'visiting',
|
|
|
fn: function (anIRClosure){
|
|
|
var self=this;
|
|
|
return smalltalk.withContext(function($ctx1) {
|
|
|
-var $1,$2,$3;
|
|
|
+var $1,$2;
|
|
|
$1=self._stream();
|
|
|
$ctx1.sendIdx["stream"]=1;
|
|
|
_st($1)._nextPutClosureWith_arguments_((function(){
|
|
@@ -2989,8 +2967,7 @@ _st($2)._nextPutVars_(_st(_st(anIRClosure)._tempDeclarations())._collect_((funct
|
|
|
return smalltalk.withContext(function($ctx3) {
|
|
|
return _st(_st(each)._name())._asVariableName();
|
|
|
}, function($ctx3) {$ctx3.fillBlock({each:each},$ctx2,2)})})));
|
|
|
-$3=self._stream();
|
|
|
-return _st($3)._nextPutBlockContextFor_during_(anIRClosure,(function(){
|
|
|
+return _st(self._stream())._nextPutBlockContextFor_during_(anIRClosure,(function(){
|
|
|
return smalltalk.withContext(function($ctx3) {
|
|
|
return smalltalk.IRJSTranslator.superclass.fn.prototype._visitIRClosure_.apply(_st(self), [anIRClosure]);
|
|
|
}, function($ctx3) {$ctx3.fillBlock({},$ctx2,3)})}));
|
|
@@ -3010,7 +2987,7 @@ category: 'visiting',
|
|
|
fn: function (anIRDynamicArray){
|
|
|
var self=this;
|
|
|
return smalltalk.withContext(function($ctx1) {
|
|
|
-var $1,$2;
|
|
|
+var $1;
|
|
|
$1=self._stream();
|
|
|
$ctx1.sendIdx["stream"]=1;
|
|
|
_st($1)._nextPutAll_("[");
|
|
@@ -3020,8 +2997,7 @@ return smalltalk.withContext(function($ctx2) {
|
|
|
return self._visit_(each);
|
|
|
}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)})}),(function(){
|
|
|
return smalltalk.withContext(function($ctx2) {
|
|
|
-$2=self._stream();
|
|
|
-return _st($2)._nextPutAll_(",");
|
|
|
+return _st(self._stream())._nextPutAll_(",");
|
|
|
$ctx2.sendIdx["nextPutAll:"]=2;
|
|
|
}, function($ctx2) {$ctx2.fillBlock({},$ctx1,2)})}));
|
|
|
_st(self["@stream"])._nextPutAll_("]");
|
|
@@ -3040,7 +3016,7 @@ category: 'visiting',
|
|
|
fn: function (anIRDynamicDictionary){
|
|
|
var self=this;
|
|
|
return smalltalk.withContext(function($ctx1) {
|
|
|
-var $1,$2,$3;
|
|
|
+var $1,$2;
|
|
|
$1=self._stream();
|
|
|
$ctx1.sendIdx["stream"]=1;
|
|
|
_st($1)._nextPutAll_("smalltalk.HashedCollection._from_([");
|
|
@@ -3055,11 +3031,10 @@ $ctx2.sendIdx["stream"]=2;
|
|
|
return _st($2)._nextPutAll_(",");
|
|
|
$ctx2.sendIdx["nextPutAll:"]=2;
|
|
|
}, function($ctx2) {$ctx2.fillBlock({},$ctx1,2)})}));
|
|
|
-$3=self._stream();
|
|
|
-_st($3)._nextPutAll_("])");
|
|
|
+_st(self._stream())._nextPutAll_("])");
|
|
|
return self}, function($ctx1) {$ctx1.fill(self,"visitIRDynamicDictionary:",{anIRDynamicDictionary:anIRDynamicDictionary},smalltalk.IRJSTranslator)})},
|
|
|
args: ["anIRDynamicDictionary"],
|
|
|
-source: "visitIRDynamicDictionary: anIRDynamicDictionary\x0a\x09self stream nextPutAll: 'smalltalk.HashedCollection._from_(['.\x0a\x09\x09anIRDynamicDictionary instructions\x0a\x09\x09\x09do: [ :each | self visit: each ]\x0a\x09\x09\x09separatedBy: [self stream nextPutAll: ',' ].\x0a\x09self stream nextPutAll: '])'",
|
|
|
+source: "visitIRDynamicDictionary: anIRDynamicDictionary\x0a\x09self stream nextPutAll: 'smalltalk.HashedCollection._from_(['.\x0a\x09\x09anIRDynamicDictionary instructions\x0a\x09\x09\x09do: [ :each | self visit: each ]\x0a\x09\x09\x09separatedBy: [ self stream nextPutAll: ',' ].\x0a\x09self stream nextPutAll: '])'",
|
|
|
messageSends: ["nextPutAll:", "stream", "do:separatedBy:", "instructions", "visit:"],
|
|
|
referencedClasses: []
|
|
|
}),
|
|
@@ -3072,7 +3047,7 @@ category: 'visiting',
|
|
|
fn: function (anIRMethod){
|
|
|
var self=this;
|
|
|
return smalltalk.withContext(function($ctx1) {
|
|
|
-var $1,$2,$3,$4,$5,$6,$8,$7,$9,$12,$11,$10,$13,$14;
|
|
|
+var $1,$2,$3,$4,$5,$6,$8,$7,$9,$10;
|
|
|
$1=self._stream();
|
|
|
$ctx1.sendIdx["stream"]=1;
|
|
|
_st($1)._nextPutMethodDeclaration_with_(anIRMethod,(function(){
|
|
@@ -3106,18 +3081,14 @@ $7=_st($8)._notEmpty();
|
|
|
if(smalltalk.assert($7)){
|
|
|
$9=self._stream();
|
|
|
$ctx4.sendIdx["stream"]=6;
|
|
|
-$12=_st(anIRMethod)._internalVariables();
|
|
|
-$11=_st($12)._asArray();
|
|
|
-$10=_st($11)._collect_((function(each){
|
|
|
+_st($9)._nextPutVars_(_st(_st(_st(anIRMethod)._internalVariables())._asArray())._collect_((function(each){
|
|
|
return smalltalk.withContext(function($ctx5) {
|
|
|
return _st(_st(each)._variable())._alias();
|
|
|
-}, function($ctx5) {$ctx5.fillBlock({each:each},$ctx4,7)})}));
|
|
|
-_st($9)._nextPutVars_($10);
|
|
|
+}, function($ctx5) {$ctx5.fillBlock({each:each},$ctx4,7)})})));
|
|
|
};
|
|
|
-$13=_st(_st(anIRMethod)._scope())._hasNonLocalReturn();
|
|
|
-if(smalltalk.assert($13)){
|
|
|
-$14=self._stream();
|
|
|
-return _st($14)._nextPutNonLocalReturnHandlingWith_((function(){
|
|
|
+$10=_st(_st(anIRMethod)._scope())._hasNonLocalReturn();
|
|
|
+if(smalltalk.assert($10)){
|
|
|
+return _st(self._stream())._nextPutNonLocalReturnHandlingWith_((function(){
|
|
|
return smalltalk.withContext(function($ctx5) {
|
|
|
return smalltalk.IRJSTranslator.superclass.fn.prototype._visitIRMethod_.apply(_st(self), [anIRMethod]);
|
|
|
$ctx5.sendIdx["visitIRMethod:"]=1;
|
|
@@ -3130,7 +3101,7 @@ return smalltalk.IRJSTranslator.superclass.fn.prototype._visitIRMethod_.apply(_s
|
|
|
}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)})}));
|
|
|
return self}, function($ctx1) {$ctx1.fill(self,"visitIRMethod:",{anIRMethod:anIRMethod},smalltalk.IRJSTranslator)})},
|
|
|
args: ["anIRMethod"],
|
|
|
-source: "visitIRMethod: anIRMethod\x0a\x0a\x09self stream\x0a\x09\x09nextPutMethodDeclaration: anIRMethod\x0a\x09\x09with: [ self stream\x0a\x09\x09\x09nextPutFunctionWith: [\x0a\x09\x09\x09\x09self stream nextPutVars: (anIRMethod tempDeclarations collect: [ :each |\x0a\x09\x09\x09\x09\x09each name asVariableName ]).\x0a\x09\x09\x09\x09anIRMethod classReferences do: [ :each | self stream nextPutClassRefFunction: each ].\x0a\x09\x09\x09\x09self stream nextPutContextFor: anIRMethod during: [\x0a\x09\x09\x09\x09anIRMethod internalVariables notEmpty ifTrue: [\x0a\x09\x09\x09\x09\x09self stream nextPutVars: (anIRMethod internalVariables asArray collect: [ :each |\x0a\x09\x09\x09\x09\x09\x09each variable alias ]) ].\x0a\x09\x09\x09\x09anIRMethod scope hasNonLocalReturn\x0a\x09\x09\x09\x09\x09ifTrue: [\x0a\x09\x09\x09\x09\x09\x09self stream nextPutNonLocalReturnHandlingWith: [\x0a\x09\x09\x09\x09\x09\x09\x09super visitIRMethod: anIRMethod ]]\x0a\x09\x09\x09\x09\x09ifFalse: [ super visitIRMethod: anIRMethod ]]]\x0a\x09\x09\x09arguments: anIRMethod arguments ]",
|
|
|
+source: "visitIRMethod: anIRMethod\x0a\x0a\x09self stream\x0a\x09\x09nextPutMethodDeclaration: anIRMethod\x0a\x09\x09with: [ self stream\x0a\x09\x09\x09nextPutFunctionWith: [\x0a\x09\x09\x09\x09self stream nextPutVars: (anIRMethod tempDeclarations collect: [ :each |\x0a\x09\x09\x09\x09\x09each name asVariableName ]).\x0a\x09\x09\x09\x09anIRMethod classReferences do: [ :each | self stream nextPutClassRefFunction: each ].\x0a\x09\x09\x09\x09self stream nextPutContextFor: anIRMethod during: [\x0a\x09\x09\x09\x09anIRMethod internalVariables notEmpty ifTrue: [\x0a\x09\x09\x09\x09\x09self stream nextPutVars: (anIRMethod internalVariables asArray collect: [ :each |\x0a\x09\x09\x09\x09\x09\x09each variable alias ]) ].\x0a\x09\x09\x09\x09anIRMethod scope hasNonLocalReturn\x0a\x09\x09\x09\x09\x09ifTrue: [\x0a\x09\x09\x09\x09\x09\x09self stream nextPutNonLocalReturnHandlingWith: [\x0a\x09\x09\x09\x09\x09\x09\x09super visitIRMethod: anIRMethod ] ]\x0a\x09\x09\x09\x09\x09ifFalse: [ super visitIRMethod: anIRMethod ] ]]\x0a\x09\x09\x09arguments: anIRMethod arguments ]",
|
|
|
messageSends: ["nextPutMethodDeclaration:with:", "stream", "nextPutFunctionWith:arguments:", "nextPutVars:", "collect:", "tempDeclarations", "asVariableName", "name", "do:", "classReferences", "nextPutClassRefFunction:", "nextPutContextFor:during:", "ifTrue:", "notEmpty", "internalVariables", "asArray", "alias", "variable", "ifTrue:ifFalse:", "hasNonLocalReturn", "scope", "nextPutNonLocalReturnHandlingWith:", "visitIRMethod:", "arguments"],
|
|
|
referencedClasses: []
|
|
|
}),
|
|
@@ -3212,20 +3183,19 @@ category: 'visiting',
|
|
|
fn: function (anIRSequence){
|
|
|
var self=this;
|
|
|
return smalltalk.withContext(function($ctx1) {
|
|
|
-var $1,$2;
|
|
|
+var $1;
|
|
|
$1=self._stream();
|
|
|
$ctx1.sendIdx["stream"]=1;
|
|
|
_st($1)._nextPutSequenceWith_((function(){
|
|
|
return smalltalk.withContext(function($ctx2) {
|
|
|
return _st(_st(anIRSequence)._instructions())._do_((function(each){
|
|
|
return smalltalk.withContext(function($ctx3) {
|
|
|
-$2=self._stream();
|
|
|
-return _st($2)._nextPutStatementWith_(self._visit_(each));
|
|
|
+return _st(self._stream())._nextPutStatementWith_(self._visit_(each));
|
|
|
}, function($ctx3) {$ctx3.fillBlock({each:each},$ctx2,2)})}));
|
|
|
}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)})}));
|
|
|
return self}, function($ctx1) {$ctx1.fill(self,"visitIRSequence:",{anIRSequence: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) ]]",
|
|
|
+source: "visitIRSequence: anIRSequence\x0a\x09self stream nextPutSequenceWith: [\x0a\x09\x09anIRSequence instructions do: [ :each |\x0a\x09\x09\x09self stream nextPutStatementWith: (self visit: each) ] ]",
|
|
|
messageSends: ["nextPutSequenceWith:", "stream", "do:", "instructions", "nextPutStatementWith:", "visit:"],
|
|
|
referencedClasses: []
|
|
|
}),
|
|
@@ -3269,7 +3239,7 @@ category: 'visiting',
|
|
|
fn: function (anIRVariable){
|
|
|
var self=this;
|
|
|
return smalltalk.withContext(function($ctx1) {
|
|
|
-var $3,$2,$1,$4,$5,$7,$6;
|
|
|
+var $3,$2,$1,$4;
|
|
|
$3=_st(anIRVariable)._variable();
|
|
|
$ctx1.sendIdx["variable"]=1;
|
|
|
$2=_st($3)._name();
|
|
@@ -3280,10 +3250,7 @@ $ctx1.sendIdx["stream"]=1;
|
|
|
_st($4)._nextPutAll_("smalltalk.getThisContext()");
|
|
|
$ctx1.sendIdx["nextPutAll:"]=1;
|
|
|
} else {
|
|
|
-$5=self._stream();
|
|
|
-$7=_st(anIRVariable)._variable();
|
|
|
-$6=_st($7)._alias();
|
|
|
-_st($5)._nextPutAll_($6);
|
|
|
+_st(self._stream())._nextPutAll_(_st(_st(anIRVariable)._variable())._alias());
|
|
|
};
|
|
|
return self}, function($ctx1) {$ctx1.fill(self,"visitIRVariable:",{anIRVariable:anIRVariable},smalltalk.IRJSTranslator)})},
|
|
|
args: ["anIRVariable"],
|
|
@@ -3300,13 +3267,12 @@ category: 'visiting',
|
|
|
fn: function (anIRVerbatim){
|
|
|
var self=this;
|
|
|
return smalltalk.withContext(function($ctx1) {
|
|
|
-var $1,$2;
|
|
|
+var $1;
|
|
|
$1=self._stream();
|
|
|
$ctx1.sendIdx["stream"]=1;
|
|
|
_st($1)._nextPutStatementWith_((function(){
|
|
|
return smalltalk.withContext(function($ctx2) {
|
|
|
-$2=self._stream();
|
|
|
-return _st($2)._nextPutAll_(_st(anIRVerbatim)._source());
|
|
|
+return _st(self._stream())._nextPutAll_(_st(anIRVerbatim)._source());
|
|
|
}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)})}));
|
|
|
return self}, function($ctx1) {$ctx1.fill(self,"visitIRVerbatim:",{anIRVerbatim:anIRVerbatim},smalltalk.IRJSTranslator)})},
|
|
|
args: ["anIRVerbatim"],
|
|
@@ -3323,7 +3289,7 @@ category: 'visiting',
|
|
|
fn: function (anIRInstruction){
|
|
|
var self=this;
|
|
|
return smalltalk.withContext(function($ctx1) {
|
|
|
-var $1,$2,$3,$4;
|
|
|
+var $1,$2,$3;
|
|
|
$1=_st(anIRInstruction)._needsBoxingAsReceiver();
|
|
|
if(! smalltalk.assert($1)){
|
|
|
$2=self._visit_(anIRInstruction);
|
|
@@ -3335,8 +3301,7 @@ $ctx1.sendIdx["stream"]=1;
|
|
|
_st($3)._nextPutAll_("_st(");
|
|
|
$ctx1.sendIdx["nextPutAll:"]=1;
|
|
|
self._visit_(anIRInstruction);
|
|
|
-$4=self._stream();
|
|
|
-_st($4)._nextPutAll_(")");
|
|
|
+_st(self._stream())._nextPutAll_(")");
|
|
|
return self}, function($ctx1) {$ctx1.fill(self,"visitReceiver:",{anIRInstruction:anIRInstruction},smalltalk.IRJSTranslator)})},
|
|
|
args: ["anIRInstruction"],
|
|
|
source: "visitReceiver: anIRInstruction\x0a\x09anIRInstruction needsBoxingAsReceiver ifFalse: [ ^ self visit: anIRInstruction ].\x0a\x09\x0a\x09self stream nextPutAll: '_st('.\x0a\x09self visit: anIRInstruction.\x0a\x09self stream nextPutAll: ')'",
|
|
@@ -3352,32 +3317,28 @@ category: 'visiting',
|
|
|
fn: function (anIRSend){
|
|
|
var self=this;
|
|
|
return smalltalk.withContext(function($ctx1) {
|
|
|
-var $2,$1,$3,$5,$4,$7,$6,$8,$9;
|
|
|
+var $2,$1,$3,$4,$5;
|
|
|
$2=_st(anIRSend)._instructions();
|
|
|
$ctx1.sendIdx["instructions"]=1;
|
|
|
$1=_st($2)._first();
|
|
|
self._visitReceiver_($1);
|
|
|
$3=self._stream();
|
|
|
$ctx1.sendIdx["stream"]=1;
|
|
|
-$5=".".__comma(_st(_st(anIRSend)._selector())._asSelector());
|
|
|
-$4=_st($5).__comma("(");
|
|
|
+$4=_st(".".__comma(_st(_st(anIRSend)._selector())._asSelector())).__comma("(");
|
|
|
$ctx1.sendIdx[","]=1;
|
|
|
_st($3)._nextPutAll_($4);
|
|
|
$ctx1.sendIdx["nextPutAll:"]=1;
|
|
|
-$7=_st(anIRSend)._instructions();
|
|
|
-$6=_st($7)._allButFirst();
|
|
|
-_st($6)._do_separatedBy_((function(each){
|
|
|
+_st(_st(_st(anIRSend)._instructions())._allButFirst())._do_separatedBy_((function(each){
|
|
|
return smalltalk.withContext(function($ctx2) {
|
|
|
return self._visit_(each);
|
|
|
}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)})}),(function(){
|
|
|
return smalltalk.withContext(function($ctx2) {
|
|
|
-$8=self._stream();
|
|
|
+$5=self._stream();
|
|
|
$ctx2.sendIdx["stream"]=2;
|
|
|
-return _st($8)._nextPutAll_(",");
|
|
|
+return _st($5)._nextPutAll_(",");
|
|
|
$ctx2.sendIdx["nextPutAll:"]=2;
|
|
|
}, function($ctx2) {$ctx2.fillBlock({},$ctx1,2)})}));
|
|
|
-$9=self._stream();
|
|
|
-_st($9)._nextPutAll_(")");
|
|
|
+_st(self._stream())._nextPutAll_(")");
|
|
|
return self}, function($ctx1) {$ctx1.fill(self,"visitSend:",{anIRSend:anIRSend},smalltalk.IRJSTranslator)})},
|
|
|
args: ["anIRSend"],
|
|
|
source: "visitSend: anIRSend\x0a\x09self visitReceiver: anIRSend instructions first.\x0a\x09self stream nextPutAll: '.', anIRSend selector asSelector, '('.\x0a\x09anIRSend instructions allButFirst\x0a\x09\x09do: [ :each | self visit: each ]\x0a\x09\x09separatedBy: [ self stream nextPutAll: ',' ].\x0a\x09self stream nextPutAll: ')'",
|
|
@@ -3393,7 +3354,7 @@ category: 'visiting',
|
|
|
fn: function (anIRSend){
|
|
|
var self=this;
|
|
|
return smalltalk.withContext(function($ctx1) {
|
|
|
-var $1,$2,$4,$3,$5,$7,$6,$8,$9;
|
|
|
+var $1,$2,$4,$3,$5,$6;
|
|
|
$1=self._stream();
|
|
|
$ctx1.sendIdx["stream"]=1;
|
|
|
_st($1)._nextPutAll_(_st(self._currentClass())._asJavascript());
|
|
@@ -3413,20 +3374,17 @@ $5=self._stream();
|
|
|
$ctx1.sendIdx["stream"]=2;
|
|
|
_st($5)._nextPutAll_("), [");
|
|
|
$ctx1.sendIdx["nextPutAll:"]=5;
|
|
|
-$7=_st(anIRSend)._instructions();
|
|
|
-$6=_st($7)._allButFirst();
|
|
|
-_st($6)._do_separatedBy_((function(each){
|
|
|
+_st(_st(_st(anIRSend)._instructions())._allButFirst())._do_separatedBy_((function(each){
|
|
|
return smalltalk.withContext(function($ctx2) {
|
|
|
return self._visit_(each);
|
|
|
}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)})}),(function(){
|
|
|
return smalltalk.withContext(function($ctx2) {
|
|
|
-$8=self._stream();
|
|
|
+$6=self._stream();
|
|
|
$ctx2.sendIdx["stream"]=3;
|
|
|
-return _st($8)._nextPutAll_(",");
|
|
|
+return _st($6)._nextPutAll_(",");
|
|
|
$ctx2.sendIdx["nextPutAll:"]=6;
|
|
|
}, function($ctx2) {$ctx2.fillBlock({},$ctx1,2)})}));
|
|
|
-$9=self._stream();
|
|
|
-_st($9)._nextPutAll_("])");
|
|
|
+_st(self._stream())._nextPutAll_("])");
|
|
|
return self}, function($ctx1) {$ctx1.fill(self,"visitSuperSend:",{anIRSend:anIRSend},smalltalk.IRJSTranslator)})},
|
|
|
args: ["anIRSend"],
|
|
|
source: "visitSuperSend: anIRSend\x0a\x09self stream\x0a\x09\x09nextPutAll: self currentClass asJavascript;\x0a\x09\x09nextPutAll: '.superclass.fn.prototype.';\x0a\x09\x09nextPutAll: anIRSend selector asSelector, '.apply(';\x0a\x09\x09nextPutAll: '_st('.\x0a\x09self visit: anIRSend instructions first.\x0a\x09self stream nextPutAll: '), ['.\x0a\x09anIRSend instructions allButFirst\x0a\x09\x09do: [ :each | self visit: each ]\x0a\x09\x09separatedBy: [ self stream nextPutAll: ',' ].\x0a\x09self stream nextPutAll: '])'",
|
|
@@ -3544,7 +3502,7 @@ category: 'streaming',
|
|
|
fn: function (anIRClosure,aBlock){
|
|
|
var self=this;
|
|
|
return smalltalk.withContext(function($ctx1) {
|
|
|
-var $4,$3,$2,$1,$5,$9,$8,$7,$6,$13,$12,$11,$10,$14,$16,$15,$23,$22,$21,$20,$26,$25,$24,$19,$18,$17;
|
|
|
+var $4,$3,$2,$1,$5,$9,$8,$7,$6,$13,$12,$11,$10,$14,$15,$22,$21,$20,$19,$18,$17,$16;
|
|
|
$4=_st(anIRClosure)._scope();
|
|
|
$ctx1.sendIdx["scope"]=1;
|
|
|
$3=_st($4)._alias();
|
|
@@ -3583,8 +3541,7 @@ self._nextPutAll_($14);
|
|
|
$ctx2.sendIdx["nextPutAll:"]=4;
|
|
|
self._nextPutAll_(":");
|
|
|
$ctx2.sendIdx["nextPutAll:"]=5;
|
|
|
-$16=_st(each)._asVariableName();
|
|
|
-$15=self._nextPutAll_($16);
|
|
|
+$15=self._nextPutAll_(_st(each)._asVariableName());
|
|
|
$ctx2.sendIdx["nextPutAll:"]=6;
|
|
|
return $15;
|
|
|
}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)})}),(function(){
|
|
@@ -3594,22 +3551,19 @@ $ctx2.sendIdx["nextPutAll:"]=7;
|
|
|
}, function($ctx2) {$ctx2.fillBlock({},$ctx1,2)})}));
|
|
|
self._nextPutAll_("},");
|
|
|
$ctx1.sendIdx["nextPutAll:"]=8;
|
|
|
-$23=_st(anIRClosure)._scope();
|
|
|
+$22=_st(anIRClosure)._scope();
|
|
|
$ctx1.sendIdx["scope"]=4;
|
|
|
-$22=_st($23)._outerScope();
|
|
|
-$21=_st($22)._alias();
|
|
|
-$20=_st($21).__comma(",");
|
|
|
-$26=_st(anIRClosure)._scope();
|
|
|
-$25=_st($26)._blockIndex();
|
|
|
-$24=_st($25)._asString();
|
|
|
-$19=_st($20).__comma($24);
|
|
|
+$21=_st($22)._outerScope();
|
|
|
+$20=_st($21)._alias();
|
|
|
+$19=_st($20).__comma(",");
|
|
|
+$18=_st($19).__comma(_st(_st(_st(anIRClosure)._scope())._blockIndex())._asString());
|
|
|
$ctx1.sendIdx[","]=7;
|
|
|
-$18=_st($19).__comma(")})");
|
|
|
+$17=_st($18).__comma(")})");
|
|
|
$ctx1.sendIdx[","]=6;
|
|
|
-$17=self._nextPutAll_($18);
|
|
|
+$16=self._nextPutAll_($17);
|
|
|
return self}, function($ctx1) {$ctx1.fill(self,"nextPutBlockContextFor:during:",{anIRClosure:anIRClosure,aBlock:aBlock},smalltalk.JSStream)})},
|
|
|
args: ["anIRClosure", "aBlock"],
|
|
|
-source: "nextPutBlockContextFor: anIRClosure during: aBlock\x0a\x09self\x0a\x09\x09nextPutAll: 'return smalltalk.withContext(function(', anIRClosure scope alias, ') {'; lf.\x0a\x09\x0a\x09aBlock value.\x0a\x09\x0a\x09self\x0a\x09\x09nextPutAll: '}, function(', anIRClosure scope alias, ') {';\x0a\x09\x09nextPutAll: anIRClosure scope alias, '.fillBlock({'.\x0a\x09\x0a\x09anIRClosure locals\x0a\x09\x09do: [ :each |\x0a\x09\x09\x09self\x0a\x09\x09\x09\x09nextPutAll: each asVariableName;\x0a\x09\x09\x09\x09nextPutAll: ':';\x0a\x09\x09\x09\x09nextPutAll: each asVariableName]\x0a\x09\x09separatedBy: [ self nextPutAll: ',' ].\x0a\x09\x0a\x09self\x0a\x09\x09nextPutAll: '},';\x0a\x09\x09nextPutAll: anIRClosure scope outerScope alias, ',', anIRClosure scope blockIndex asString, ')})'",
|
|
|
+source: "nextPutBlockContextFor: anIRClosure during: aBlock\x0a\x09self\x0a\x09\x09nextPutAll: 'return smalltalk.withContext(function(', anIRClosure scope alias, ') {'; lf.\x0a\x09\x0a\x09aBlock value.\x0a\x09\x0a\x09self\x0a\x09\x09nextPutAll: '}, function(', anIRClosure scope alias, ') {';\x0a\x09\x09nextPutAll: anIRClosure scope alias, '.fillBlock({'.\x0a\x09\x0a\x09anIRClosure locals\x0a\x09\x09do: [ :each |\x0a\x09\x09\x09self\x0a\x09\x09\x09\x09nextPutAll: each asVariableName;\x0a\x09\x09\x09\x09nextPutAll: ':';\x0a\x09\x09\x09\x09nextPutAll: each asVariableName ]\x0a\x09\x09separatedBy: [ self nextPutAll: ',' ].\x0a\x09\x0a\x09self\x0a\x09\x09nextPutAll: '},';\x0a\x09\x09nextPutAll: anIRClosure scope outerScope alias, ',', anIRClosure scope blockIndex asString, ')})'",
|
|
|
messageSends: ["nextPutAll:", ",", "alias", "scope", "lf", "value", "do:separatedBy:", "locals", "asVariableName", "outerScope", "asString", "blockIndex"],
|
|
|
referencedClasses: []
|
|
|
}),
|
|
@@ -3689,7 +3643,7 @@ category: 'streaming',
|
|
|
fn: function (aMethod,aBlock){
|
|
|
var self=this;
|
|
|
return smalltalk.withContext(function($ctx1) {
|
|
|
-var $4,$3,$2,$1,$5,$10,$9,$8,$7,$12,$11,$6,$16,$15,$14,$13,$17,$19,$18,$20,$21;
|
|
|
+var $4,$3,$2,$1,$5,$10,$9,$8,$7,$6,$14,$13,$12,$11,$15,$16,$17;
|
|
|
$4=_st(aMethod)._scope();
|
|
|
$ctx1.sendIdx["scope"]=1;
|
|
|
$3=_st($4)._alias();
|
|
@@ -3710,31 +3664,28 @@ $8="}, function(".__comma($9);
|
|
|
$ctx1.sendIdx[","]=5;
|
|
|
$7=_st($8).__comma(") {");
|
|
|
$ctx1.sendIdx[","]=4;
|
|
|
-$12=_st(aMethod)._scope();
|
|
|
-$11=_st($12)._alias();
|
|
|
-$6=_st($7).__comma($11);
|
|
|
+$6=_st($7).__comma(_st(_st(aMethod)._scope())._alias());
|
|
|
$ctx1.sendIdx[","]=3;
|
|
|
self._nextPutAll_($6);
|
|
|
$ctx1.sendIdx["nextPutAll:"]=2;
|
|
|
-$16=_st(_st(aMethod)._selector())._asJavascript();
|
|
|
+$14=_st(_st(aMethod)._selector())._asJavascript();
|
|
|
$ctx1.sendIdx["asJavascript"]=1;
|
|
|
-$15=".fill(self,".__comma($16);
|
|
|
-$14=_st($15).__comma(",{");
|
|
|
+$13=".fill(self,".__comma($14);
|
|
|
+$12=_st($13).__comma(",{");
|
|
|
$ctx1.sendIdx[","]=6;
|
|
|
-$13=self._nextPutAll_($14);
|
|
|
+$11=self._nextPutAll_($12);
|
|
|
$ctx1.sendIdx["nextPutAll:"]=3;
|
|
|
_st(_st(aMethod)._locals())._do_separatedBy_((function(each){
|
|
|
return smalltalk.withContext(function($ctx2) {
|
|
|
-$17=_st(each)._asVariableName();
|
|
|
+$15=_st(each)._asVariableName();
|
|
|
$ctx2.sendIdx["asVariableName"]=1;
|
|
|
-self._nextPutAll_($17);
|
|
|
+self._nextPutAll_($15);
|
|
|
$ctx2.sendIdx["nextPutAll:"]=4;
|
|
|
self._nextPutAll_(":");
|
|
|
$ctx2.sendIdx["nextPutAll:"]=5;
|
|
|
-$19=_st(each)._asVariableName();
|
|
|
-$18=self._nextPutAll_($19);
|
|
|
+$16=self._nextPutAll_(_st(each)._asVariableName());
|
|
|
$ctx2.sendIdx["nextPutAll:"]=6;
|
|
|
-return $18;
|
|
|
+return $16;
|
|
|
}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)})}),(function(){
|
|
|
return smalltalk.withContext(function($ctx2) {
|
|
|
return self._nextPutAll_(",");
|
|
@@ -3742,13 +3693,12 @@ $ctx2.sendIdx["nextPutAll:"]=7;
|
|
|
}, function($ctx2) {$ctx2.fillBlock({},$ctx1,2)})}));
|
|
|
self._nextPutAll_("},");
|
|
|
$ctx1.sendIdx["nextPutAll:"]=8;
|
|
|
-$20=_st(_st(aMethod)._theClass())._asJavascript();
|
|
|
-self._nextPutAll_($20);
|
|
|
+self._nextPutAll_(_st(_st(aMethod)._theClass())._asJavascript());
|
|
|
$ctx1.sendIdx["nextPutAll:"]=9;
|
|
|
-$21=self._nextPutAll_(")})");
|
|
|
+$17=self._nextPutAll_(")})");
|
|
|
return self}, function($ctx1) {$ctx1.fill(self,"nextPutContextFor:during:",{aMethod:aMethod,aBlock:aBlock},smalltalk.JSStream)})},
|
|
|
args: ["aMethod", "aBlock"],
|
|
|
-source: "nextPutContextFor: aMethod during: aBlock\x0a\x09self\x0a\x09\x09nextPutAll: 'return smalltalk.withContext(function(', aMethod scope alias, ') { '; lf.\x0a\x09aBlock value.\x0a\x09\x0a\x09self\x0a\x09\x09nextPutAll: '}, function(', aMethod scope alias, ') {', aMethod scope alias;\x0a\x09\x09nextPutAll: '.fill(self,', aMethod selector asJavascript, ',{'.\x0a\x0a\x09aMethod locals\x0a\x09\x09do: [ :each |\x0a\x09\x09\x09self\x0a\x09\x09\x09\x09nextPutAll: each asVariableName;\x0a\x09\x09\x09\x09nextPutAll: ':';\x0a\x09\x09\x09\x09nextPutAll: each asVariableName]\x0a\x09\x09separatedBy: [ self nextPutAll: ',' ].\x0a\x09\x0a\x09self\x0a\x09\x09nextPutAll: '},';\x0a\x09\x09nextPutAll: aMethod theClass asJavascript;\x0a\x09\x09nextPutAll: ')})'",
|
|
|
+source: "nextPutContextFor: aMethod during: aBlock\x0a\x09self\x0a\x09\x09nextPutAll: 'return smalltalk.withContext(function(', aMethod scope alias, ') { '; lf.\x0a\x09aBlock value.\x0a\x09\x0a\x09self\x0a\x09\x09nextPutAll: '}, function(', aMethod scope alias, ') {', aMethod scope alias;\x0a\x09\x09nextPutAll: '.fill(self,', aMethod selector asJavascript, ',{'.\x0a\x0a\x09aMethod locals\x0a\x09\x09do: [ :each |\x0a\x09\x09\x09self\x0a\x09\x09\x09\x09nextPutAll: each asVariableName;\x0a\x09\x09\x09\x09nextPutAll: ':';\x0a\x09\x09\x09\x09nextPutAll: each asVariableName ]\x0a\x09\x09separatedBy: [ self nextPutAll: ',' ].\x0a\x09\x0a\x09self\x0a\x09\x09nextPutAll: '},';\x0a\x09\x09nextPutAll: aMethod theClass asJavascript;\x0a\x09\x09nextPutAll: ')})'",
|
|
|
messageSends: ["nextPutAll:", ",", "alias", "scope", "lf", "value", "asJavascript", "selector", "do:separatedBy:", "locals", "asVariableName", "theClass"],
|
|
|
referencedClasses: []
|
|
|
}),
|
|
@@ -3858,7 +3808,7 @@ fn: function (aMethod,aBlock){
|
|
|
var self=this;
|
|
|
function $String(){return smalltalk.String||(typeof String=="undefined"?nil:String)}
|
|
|
return smalltalk.withContext(function($ctx1) {
|
|
|
-var $1,$2,$5,$4,$3,$6,$9,$8,$7,$10,$11,$12,$15,$14,$13,$16,$19,$18,$17,$20,$24,$23,$22,$21,$25,$26,$27,$28,$29;
|
|
|
+var $1,$2,$5,$4,$3,$6,$9,$8,$7,$10,$11,$12,$15,$14,$13,$16,$19,$18,$17,$20,$23,$22,$21,$24,$25,$26;
|
|
|
$1=self["@stream"];
|
|
|
_st($1)._nextPutAll_("smalltalk.method({");
|
|
|
$ctx1.sendIdx["nextPutAll:"]=1;
|
|
@@ -3910,11 +3860,10 @@ $ctx1.sendIdx["nextPutAll:"]=5;
|
|
|
_st($11)._lf();
|
|
|
$ctx1.sendIdx["lf"]=5;
|
|
|
$20=$11;
|
|
|
-$24=_st(_st(_st(aMethod)._arguments())._collect_((function(each){
|
|
|
+$23=_st(_st(_st(_st(aMethod)._arguments())._collect_((function(each){
|
|
|
return smalltalk.withContext(function($ctx2) {
|
|
|
return _st(each)._value();
|
|
|
-}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)})})))._asArray();
|
|
|
-$23=_st($24)._asJavascript();
|
|
|
+}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)})})))._asArray())._asJavascript();
|
|
|
$ctx1.sendIdx["asJavascript"]=4;
|
|
|
$22="args: ".__comma($23);
|
|
|
$21=_st($22).__comma(",");
|
|
@@ -3922,26 +3871,24 @@ $ctx1.sendIdx[","]=8;
|
|
|
_st($20)._nextPutAll_($21);
|
|
|
$ctx1.sendIdx["nextPutAll:"]=6;
|
|
|
_st($11)._lf();
|
|
|
-$25=_st($11)._nextPutAll_("referencedClasses: [");
|
|
|
+$24=_st($11)._nextPutAll_("referencedClasses: [");
|
|
|
$ctx1.sendIdx["nextPutAll:"]=7;
|
|
|
_st(_st(aMethod)._classReferences())._do_separatedBy_((function(each){
|
|
|
return smalltalk.withContext(function($ctx2) {
|
|
|
-$26=self["@stream"];
|
|
|
-$27=_st(each)._asJavascript();
|
|
|
-return _st($26)._nextPutAll_($27);
|
|
|
+return _st(self["@stream"])._nextPutAll_(_st(each)._asJavascript());
|
|
|
$ctx2.sendIdx["nextPutAll:"]=8;
|
|
|
}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,2)})}),(function(){
|
|
|
return smalltalk.withContext(function($ctx2) {
|
|
|
return _st(self["@stream"])._nextPutAll_(",");
|
|
|
$ctx2.sendIdx["nextPutAll:"]=9;
|
|
|
}, function($ctx2) {$ctx2.fillBlock({},$ctx1,3)})}));
|
|
|
-$28=self["@stream"];
|
|
|
-_st($28)._nextPutAll_("]");
|
|
|
+$25=self["@stream"];
|
|
|
+_st($25)._nextPutAll_("]");
|
|
|
$ctx1.sendIdx["nextPutAll:"]=10;
|
|
|
-$29=_st($28)._nextPutAll_("})");
|
|
|
+$26=_st($25)._nextPutAll_("})");
|
|
|
return self}, function($ctx1) {$ctx1.fill(self,"nextPutMethodDeclaration:with:",{aMethod:aMethod,aBlock:aBlock},smalltalk.JSStream)})},
|
|
|
args: ["aMethod", "aBlock"],
|
|
|
-source: "nextPutMethodDeclaration: aMethod with: aBlock\x0a\x09stream\x0a\x09\x09nextPutAll: 'smalltalk.method({'; lf;\x0a\x09\x09nextPutAll: 'selector: ', aMethod selector asJavascript, ','; lf;\x0a\x09\x09nextPutAll: 'source: ', aMethod source asJavascript, ',';lf.\x0a\x09aBlock value.\x0a\x09stream\x0a\x09\x09nextPutAll: ',', String lf, 'messageSends: ';\x0a\x09\x09nextPutAll: aMethod messageSends asArray asJavascript, ','; lf;\x0a\x09\x09nextPutAll: 'args: ', (aMethod arguments collect: [ :each | each value ]) asArray asJavascript, ','; lf;\x0a\x09\x09nextPutAll: 'referencedClasses: ['.\x0a\x09aMethod classReferences\x0a\x09\x09do: [:each | stream nextPutAll: each asJavascript]\x0a\x09\x09separatedBy: [stream nextPutAll: ','].\x0a\x09stream\x0a\x09\x09nextPutAll: ']';\x0a\x09\x09nextPutAll: '})'",
|
|
|
+source: "nextPutMethodDeclaration: aMethod with: aBlock\x0a\x09stream\x0a\x09\x09nextPutAll: 'smalltalk.method({'; lf;\x0a\x09\x09nextPutAll: 'selector: ', aMethod selector asJavascript, ','; lf;\x0a\x09\x09nextPutAll: 'source: ', aMethod source asJavascript, ',';lf.\x0a\x09aBlock value.\x0a\x09stream\x0a\x09\x09nextPutAll: ',', String lf, 'messageSends: ';\x0a\x09\x09nextPutAll: aMethod messageSends asArray asJavascript, ','; lf;\x0a\x09\x09nextPutAll: 'args: ', (aMethod arguments collect: [ :each | each value ]) asArray asJavascript, ','; lf;\x0a\x09\x09nextPutAll: 'referencedClasses: ['.\x0a\x09aMethod classReferences\x0a\x09\x09do: [ :each | stream nextPutAll: each asJavascript ]\x0a\x09\x09separatedBy: [ stream nextPutAll: ',' ].\x0a\x09stream\x0a\x09\x09nextPutAll: ']';\x0a\x09\x09nextPutAll: '})'",
|
|
|
messageSends: ["nextPutAll:", "lf", ",", "asJavascript", "selector", "source", "value", "asArray", "messageSends", "collect:", "arguments", "do:separatedBy:", "classReferences"],
|
|
|
referencedClasses: ["String"]
|
|
|
}),
|
|
@@ -4128,7 +4075,7 @@ return self}
|
|
|
catch(e) {if(e===$early)return e[0]; throw e}
|
|
|
}, function($ctx1) {$ctx1.fill(self,"nextPutVars:",{aCollection:aCollection},smalltalk.JSStream)})},
|
|
|
args: ["aCollection"],
|
|
|
-source: "nextPutVars: aCollection\x0a\x09aCollection ifEmpty: [ ^self ].\x0a\x09\x0a\x09stream nextPutAll: 'var '.\x0a\x09aCollection\x0a\x09\x09do: [ :each | stream nextPutAll: each ]\x0a\x09\x09separatedBy: [ stream nextPutAll: ',' ].\x0a\x09stream nextPutAll: ';'; lf",
|
|
|
+source: "nextPutVars: aCollection\x0a\x09aCollection ifEmpty: [ ^ self ].\x0a\x09\x0a\x09stream nextPutAll: 'var '.\x0a\x09aCollection\x0a\x09\x09do: [ :each | stream nextPutAll: each ]\x0a\x09\x09separatedBy: [ stream nextPutAll: ',' ].\x0a\x09stream nextPutAll: ';'; lf",
|
|
|
messageSends: ["ifEmpty:", "nextPutAll:", "do:separatedBy:", "lf"],
|
|
|
referencedClasses: []
|
|
|
}),
|