|  | @@ -162,14 +162,12 @@ selector: "temporallyDependentList:",
 | 
	
		
			
				|  |  |  category: 'visiting',
 | 
	
		
			
				|  |  |  fn: function (nodes){
 | 
	
		
			
				|  |  |  var self=this;
 | 
	
		
			
				|  |  | -var $1,$3,$2;
 | 
	
		
			
				|  |  | +var $1,$2,$4,$3,$5;
 | 
	
		
			
				|  |  |  var threshold;
 | 
	
		
			
				|  |  |  var result;
 | 
	
		
			
				|  |  |  threshold=(0);
 | 
	
		
			
				|  |  |  smalltalk.send(nodes,"_withIndexDo_",[(function(each,i){
 | 
	
		
			
				|  |  | -$1=smalltalk.send(smalltalk.send(each,"_shouldBeInlined",[]),"_or_",[(function(){
 | 
	
		
			
				|  |  | -return smalltalk.send(each,"_shouldBeAliased",[]);
 | 
	
		
			
				|  |  | -})]);
 | 
	
		
			
				|  |  | +$1=smalltalk.send(each,"_subtreeNeedsAliasing",[]);
 | 
	
		
			
				|  |  |  if(smalltalk.assert($1)){
 | 
	
		
			
				|  |  |  threshold=i;
 | 
	
		
			
				|  |  |  return threshold;
 | 
	
	
		
			
				|  | @@ -177,19 +175,21 @@ return threshold;
 | 
	
		
			
				|  |  |  })]);
 | 
	
		
			
				|  |  |  result=smalltalk.send((smalltalk.OrderedCollection || OrderedCollection),"_new",[]);
 | 
	
		
			
				|  |  |  smalltalk.send(nodes,"_withIndexDo_",[(function(each,i){
 | 
	
		
			
				|  |  | -$3=smalltalk.send(i,"__lt_eq",[threshold]);
 | 
	
		
			
				|  |  | -if(smalltalk.assert($3)){
 | 
	
		
			
				|  |  | -$2=smalltalk.send(self,"_alias_",[each]);
 | 
	
		
			
				|  |  | +$2=result;
 | 
	
		
			
				|  |  | +$4=smalltalk.send(i,"__lt_eq",[threshold]);
 | 
	
		
			
				|  |  | +if(smalltalk.assert($4)){
 | 
	
		
			
				|  |  | +$3=smalltalk.send(self,"_alias_",[each]);
 | 
	
		
			
				|  |  |  } else {
 | 
	
		
			
				|  |  | -$2=smalltalk.send(self,"_visit_",[each]);
 | 
	
		
			
				|  |  | +$3=smalltalk.send(self,"_visit_",[each]);
 | 
	
		
			
				|  |  |  };
 | 
	
		
			
				|  |  | -return smalltalk.send(result,"_add_",[$2]);
 | 
	
		
			
				|  |  | +return smalltalk.send($2,"_add_",[$3]);
 | 
	
		
			
				|  |  |  })]);
 | 
	
		
			
				|  |  | -return result;
 | 
	
		
			
				|  |  | +$5=result;
 | 
	
		
			
				|  |  | +return $5;
 | 
	
		
			
				|  |  |  },
 | 
	
		
			
				|  |  |  args: ["nodes"],
 | 
	
		
			
				|  |  | -source: "temporallyDependentList: nodes\x0a\x09| threshold result |\x0a    threshold := 0.\x0a    \x0a    nodes withIndexDo: [ :each :i |\x0a        (each shouldBeInlined or: [ each shouldBeAliased ])\x0a\x09\x09    ifTrue: [ threshold := i ]].\x0a\x0a\x09result := OrderedCollection new.\x0a\x09nodes 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    ^result\x0a",
 | 
	
		
			
				|  |  | -messageSends: ["withIndexDo:", "ifTrue:", "or:", "shouldBeAliased", "shouldBeInlined", "new", "add:", "ifTrue:ifFalse:", "alias:", "visit:", "<="],
 | 
	
		
			
				|  |  | +source: "temporallyDependentList: nodes\x0a\x09| threshold result |\x0a    threshold := 0.\x0a    \x0a    nodes withIndexDo: [ :each :i |\x0a        each subtreeNeedsAliasing\x0a\x09\x09    ifTrue: [ threshold := i ]].\x0a\x0a\x09result := OrderedCollection new.\x0a\x09nodes 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    ^result\x0a",
 | 
	
		
			
				|  |  | +messageSends: ["withIndexDo:", "ifTrue:", "subtreeNeedsAliasing", "new", "add:", "ifTrue:ifFalse:", "alias:", "visit:", "<="],
 | 
	
		
			
				|  |  |  referencedClasses: ["OrderedCollection"]
 | 
	
		
			
				|  |  |  }),
 | 
	
		
			
				|  |  |  smalltalk.IRASTTranslator);
 | 
	
	
		
			
				|  | @@ -355,16 +355,18 @@ selector: "visitDynamicArrayNode:",
 | 
	
		
			
				|  |  |  category: 'visiting',
 | 
	
		
			
				|  |  |  fn: function (aNode){
 | 
	
		
			
				|  |  |  var self=this;
 | 
	
		
			
				|  |  | +var $1;
 | 
	
		
			
				|  |  |  var array;
 | 
	
		
			
				|  |  |  array=smalltalk.send((smalltalk.IRDynamicArray || IRDynamicArray),"_new",[]);
 | 
	
		
			
				|  |  | -smalltalk.send(smalltalk.send(aNode,"_nodes",[]),"_do_",[(function(each){
 | 
	
		
			
				|  |  | -return smalltalk.send(array,"_add_",[smalltalk.send(self,"_visit_",[each])]);
 | 
	
		
			
				|  |  | +smalltalk.send(smalltalk.send(self,"_temporallyDependentList_",[smalltalk.send(aNode,"_nodes",[])]),"_do_",[(function(each){
 | 
	
		
			
				|  |  | +return smalltalk.send(array,"_add_",[each]);
 | 
	
		
			
				|  |  |  })]);
 | 
	
		
			
				|  |  | -return array;
 | 
	
		
			
				|  |  | +$1=array;
 | 
	
		
			
				|  |  | +return $1;
 | 
	
		
			
				|  |  |  },
 | 
	
		
			
				|  |  |  args: ["aNode"],
 | 
	
		
			
				|  |  | -source: "visitDynamicArrayNode: aNode\x0a\x09| array |\x0a\x09array := IRDynamicArray new.\x0a\x09aNode nodes do: [ :each | array add: (self visit: each) ].\x0a\x09^ array",
 | 
	
		
			
				|  |  | -messageSends: ["new", "do:", "add:", "visit:", "nodes"],
 | 
	
		
			
				|  |  | +source: "visitDynamicArrayNode: aNode\x0a\x09| array |\x0a\x09array := IRDynamicArray new.\x0a\x09(self temporallyDependentList: aNode nodes) do: [:each | array add: each].\x0a\x09^ array",
 | 
	
		
			
				|  |  | +messageSends: ["new", "do:", "add:", "temporallyDependentList:", "nodes"],
 | 
	
		
			
				|  |  |  referencedClasses: ["IRDynamicArray"]
 | 
	
		
			
				|  |  |  }),
 | 
	
		
			
				|  |  |  smalltalk.IRASTTranslator);
 | 
	
	
		
			
				|  | @@ -376,16 +378,18 @@ selector: "visitDynamicDictionaryNode:",
 | 
	
		
			
				|  |  |  category: 'visiting',
 | 
	
		
			
				|  |  |  fn: function (aNode){
 | 
	
		
			
				|  |  |  var self=this;
 | 
	
		
			
				|  |  | +var $1;
 | 
	
		
			
				|  |  |  var dictionary;
 | 
	
		
			
				|  |  |  dictionary=smalltalk.send((smalltalk.IRDynamicDictionary || IRDynamicDictionary),"_new",[]);
 | 
	
		
			
				|  |  | -smalltalk.send(smalltalk.send(aNode,"_nodes",[]),"_do_",[(function(each){
 | 
	
		
			
				|  |  | -return smalltalk.send(dictionary,"_add_",[smalltalk.send(self,"_visit_",[each])]);
 | 
	
		
			
				|  |  | +smalltalk.send(smalltalk.send(self,"_temporallyDependentList_",[smalltalk.send(aNode,"_nodes",[])]),"_do_",[(function(each){
 | 
	
		
			
				|  |  | +return smalltalk.send(dictionary,"_add_",[each]);
 | 
	
		
			
				|  |  |  })]);
 | 
	
		
			
				|  |  | -return dictionary;
 | 
	
		
			
				|  |  | +$1=dictionary;
 | 
	
		
			
				|  |  | +return $1;
 | 
	
		
			
				|  |  |  },
 | 
	
		
			
				|  |  |  args: ["aNode"],
 | 
	
		
			
				|  |  | -source: "visitDynamicDictionaryNode: aNode\x0a\x09| dictionary |\x0a\x09dictionary := IRDynamicDictionary new.\x0a\x09aNode nodes do: [ :each | dictionary add: (self visit: each) ].\x0a\x09^ dictionary",
 | 
	
		
			
				|  |  | -messageSends: ["new", "do:", "add:", "visit:", "nodes"],
 | 
	
		
			
				|  |  | +source: "visitDynamicDictionaryNode: aNode\x0a\x09| dictionary |\x0a\x09dictionary := IRDynamicDictionary new.\x0a    (self temporallyDependentList: aNode nodes) do: [:each | dictionary add: each].\x0a\x09^ dictionary",
 | 
	
		
			
				|  |  | +messageSends: ["new", "do:", "add:", "temporallyDependentList:", "nodes"],
 | 
	
		
			
				|  |  |  referencedClasses: ["IRDynamicDictionary"]
 | 
	
		
			
				|  |  |  }),
 | 
	
		
			
				|  |  |  smalltalk.IRASTTranslator);
 |