| 
					
				 | 
			
			
				@@ -221,26 +221,26 @@ selector: "visitBlockNode:", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 category: 'visiting', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 fn: function (aNode){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 var self=this; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-return smalltalk.withContext(function($ctx) { var $1,$2,$3,$4; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-var closure; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+return smalltalk.withContext(function($ctx1) { var $1,$2,$3,$4; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 $1=_st((smalltalk.IRClosure || IRClosure))._new(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 _st($1)._arguments_(_st(aNode)._parameters()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 _st($1)._scope_(_st(aNode)._scope()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 $2=_st($1)._yourself(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-closure=$2; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+$ctx1.closure=$2; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 _st(_st(_st(aNode)._scope())._temps())._do_((function(each){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 $3=_st((smalltalk.IRTempDeclaration || IRTempDeclaration))._new(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 _st($3)._name_(_st(each)._name()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+_st($3)._scope_(_st(aNode)._scope()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 $4=_st($3)._yourself(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-return _st(closure)._add_($4); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+return _st($ctx1.closure)._add_($4); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 })); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 _st(_st(aNode)._nodes())._do_((function(each){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-return _st(closure)._add_(_st(self)._visit_(each)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+return _st($ctx1.closure)._add_(_st(self)._visit_(each)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 })); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-return closure; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+return $ctx1.closure; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 }, self, "visitBlockNode:", [aNode], 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\x09yourself) ].\x0a\x09aNode nodes do: [ :each | closure add: (self visit: each) ].\x0a\x09^ closure", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+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            scope: aNode scope;\x0a\x09\x09\x09yourself) ].\x0a\x09aNode nodes do: [ :each | closure add: (self visit: each) ].\x0a\x09^ closure", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 messageSends: ["arguments:", "parameters", "new", "scope:", "scope", "yourself", "do:", "add:", "name:", "name", "temps", "visit:", "nodes"], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 referencedClasses: ["IRClosure", "IRTempDeclaration"] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 }), 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -379,7 +379,7 @@ selector: "visitMethodNode:", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 category: 'visiting', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 fn: function (aNode){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 var self=this; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-return smalltalk.withContext(function($ctx) { var $1,$2,$3,$4,$5,$6,$7,$8; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+return smalltalk.withContext(function($ctx1) { var $1,$2,$3,$4,$5,$6,$7,$8; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 $1=_st((smalltalk.IRMethod || IRMethod))._new(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 _st($1)._source_(_st(self)._source()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 _st($1)._theClass_(_st(self)._theClass()); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -394,6 +394,7 @@ _st(self)._method_($2); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 _st(_st(_st(aNode)._scope())._temps())._do_((function(each){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 $3=_st((smalltalk.IRTempDeclaration || IRTempDeclaration))._new(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 _st($3)._name_(_st(each)._name()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+_st($3)._scope_(_st(aNode)._scope()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 $4=_st($3)._yourself(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 return _st(_st(self)._method())._add_($4); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 })); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -411,7 +412,7 @@ $8=_st(self)._method(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 return $8; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 }, self, "visitMethodNode:", [aNode], smalltalk.IRASTTranslator)}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 args: ["aNode"], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-source: "visitMethodNode: aNode\x0a\x0a\x09self method: (IRMethod new\x0a\x09\x09source: self source;\x0a        theClass: self theClass;\x0a\x09\x09arguments: aNode arguments;\x0a\x09\x09selector: aNode selector;\x0a\x09\x09messageSends: aNode messageSends;\x0a        superSends: 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\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", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+source: "visitMethodNode: aNode\x0a\x0a\x09self method: (IRMethod new\x0a\x09\x09source: self source;\x0a        theClass: self theClass;\x0a\x09\x09arguments: aNode arguments;\x0a\x09\x09selector: aNode selector;\x0a\x09\x09messageSends: aNode messageSends;\x0a        superSends: 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            scope: 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", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 messageSends: ["method:", "source:", "source", "new", "theClass:", "theClass", "arguments:", "arguments", "selector:", "selector", "messageSends:", "messageSends", "superSends:", "superSends", "classReferences:", "classReferences", "scope:", "scope", "yourself", "do:", "add:", "name:", "name", "method", "temps", "visit:", "nodes", "ifFalse:", "variable:", "at:", "pseudoVars", "hasLocalReturn"], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 referencedClasses: ["IRMethod", "IRTempDeclaration", "IRVariable", "IRReturn"] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 }), 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -1585,6 +1586,59 @@ smalltalk.IRNonLocalReturn); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+smalltalk.addClass('IRTempDeclaration', smalltalk.IRScopedInstruction, ['name'], 'Compiler-IR'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+smalltalk.addMethod( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+"_accept_", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+smalltalk.method({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+selector: "accept:", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+category: 'visiting', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+fn: function (aVisitor){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+var self=this; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+return smalltalk.withContext(function($ctx1) { 
var $1; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+$1=_st(aVisitor)._visitIRTempDeclaration_(self); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+return $1; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+}, self, "accept:", [aVisitor], smalltalk.IRTempDeclaration)}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+args: ["aVisitor"], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+source: "accept: aVisitor\x0a\x09^ aVisitor visitIRTempDeclaration: self", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+messageSends: ["visitIRTempDeclaration:"], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+referencedClasses: [] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+}), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+smalltalk.IRTempDeclaration); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+smalltalk.addMethod( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+"_name", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+smalltalk.method({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+selector: "name", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+category: 'accessing', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+fn: function (){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+var self=this; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+return smalltalk.withContext(function($ctx1) { return self["@name"]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+}, self, "name", [], smalltalk.IRTempDeclaration)}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+args: [], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+source: "name\x0a\x09^ name", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+messageSends: [], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+referencedClasses: [] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+}), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+smalltalk.IRTempDeclaration); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+smalltalk.addMethod( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+"_name_", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+smalltalk.method({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+selector: "name:", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+category: 'accessing', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+fn: function (aString){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+var self=this; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+return smalltalk.withContext(function($ctx1) { self["@name"]=aString; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+return self}, self, "name:", [aString], smalltalk.IRTempDeclaration)}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+args: ["aString"], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+source: "name: aString\x0a\x09name := aString", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+messageSends: [], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+referencedClasses: [] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+}), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+smalltalk.IRTempDeclaration); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 smalltalk.addClass('IRSend', smalltalk.IRInstruction, ['selector', 'classSend', 'index'], 'Compiler-IR'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 smalltalk.IRSend.comment="I am a message send instruction. " 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 smalltalk.addMethod( 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -1800,76 +1854,6 @@ smalltalk.IRBlockSequence); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-smalltalk.addClass('IRTempDeclaration', smalltalk.IRInstruction, ['name'], 'Compiler-IR'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-smalltalk.IRTempDeclaration.comment="I am a temporary variable declaration instruction" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-smalltalk.addMethod( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-"_accept_", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-smalltalk.method({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-selector: "accept:", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-category: 'visiting', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-fn: function (aVisitor){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-var self=this; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-return smalltalk.withContext(function($ctx) { var $1; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-$1=_st(aVisitor)._visitIRTempDeclaration_(self); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-return $1; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-}, self, "accept:", [aVisitor], smalltalk.IRTempDeclaration)}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-args: ["aVisitor"], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-source: "accept: aVisitor\x0a\x09^ aVisitor visitIRTempDeclaration: self", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-messageSends: ["visitIRTempDeclaration:"], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-referencedClasses: [] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-}), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-smalltalk.IRTempDeclaration); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-smalltalk.addMethod( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-"_isTempDeclaration", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-smalltalk.method({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-selector: "isTempDeclaration", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-category: 'visiting', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-fn: function (){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-var self=this; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-return smalltalk.withContext(function($ctx) { return true; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-}, self, "isTempDeclaration", [], smalltalk.IRTempDeclaration)}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-args: [], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-source: "isTempDeclaration\x0a\x09^ true", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-messageSends: [], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-referencedClasses: [] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-}), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-smalltalk.IRTempDeclaration); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-smalltalk.addMethod( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-"_name", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-smalltalk.method({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-selector: "name", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-category: 'accessing', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-fn: function (){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-var self=this; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-return smalltalk.withContext(function($ctx) { return self["@name"]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-}, self, "name", [], smalltalk.IRTempDeclaration)}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-args: [], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-source: "name\x0a\x09^ name", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-messageSends: [], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-referencedClasses: [] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-}), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-smalltalk.IRTempDeclaration); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-smalltalk.addMethod( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-"_name_", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-smalltalk.method({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-selector: "name:", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-category: 'accessing', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-fn: function (aString){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-var self=this; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-return smalltalk.withContext(function($ctx) { self["@name"]=aString; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-return self}, self, "name:", [aString], smalltalk.IRTempDeclaration)}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-args: ["aString"], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-source: "name: aString\x0a\x09name := aString", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-messageSends: [], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-referencedClasses: [] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-}), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-smalltalk.IRTempDeclaration); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 smalltalk.addClass('IRValue', smalltalk.IRInstruction, ['value'], 'Compiler-IR'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 smalltalk.IRValue.comment="I am the simplest possible instruction. I represent a value." 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 smalltalk.addMethod( 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -2504,13 +2488,15 @@ selector: "visitIRClosure:", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 category: 'visiting', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 fn: function (anIRClosure){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 var self=this; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-return smalltalk.withContext(function($ctx) { _st(_st(self)._stream())._nextPutClosureWith_arguments_((function(){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+return smalltalk.withContext(function($ctx1) { 
_st(_st(self)._stream())._nextPutClosureWith_arguments_((function(){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+return _st(_st(self)._stream())._nextPutBlockContextFor_during_(anIRClosure,(function(){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 return smalltalk.IRVisitor.fn.prototype._visitIRClosure_.apply(_st(self), [anIRClosure]); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+})); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 }),_st(anIRClosure)._arguments()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 return self}, self, "visitIRClosure:", [anIRClosure], smalltalk.IRJSTranslator)}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 args: ["anIRClosure"], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-source: "visitIRClosure: anIRClosure\x0a\x09self stream \x0a\x09\x09nextPutClosureWith: [ super visitIRClosure: anIRClosure ] \x0a\x09\x09arguments: anIRClosure arguments", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-messageSends: ["nextPutClosureWith:arguments:", "visitIRClosure:", "arguments", "stream"], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+source: "visitIRClosure: anIRClosure\x0a\x09self stream \x0a\x09\x09nextPutClosureWith: [ \x0a        \x09self stream \x0a            \x09nextPutBlockContextFor: anIRClosure\x0a                during: [ super visitIRClosure: anIRClosure ] ]\x0a\x09\x09arguments: anIRClosure arguments", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+messageSends: ["nextPutClosureWith:arguments:", "nextPutBlockContextFor:during:", "visitIRClosure:", "stream", "arguments"], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 referencedClasses: [] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 }), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 smalltalk.IRJSTranslator); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -2732,11 +2718,14 @@ selector: "visitIRTempDeclaration:", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 category: 'visiting', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 fn: function (anIRTempDeclaration){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 var self=this; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-return smalltalk.withContext(function($ctx) { _st(_st(self)._stream())._nextPutVar_(_st(_st(anIRTempDeclaration)._name())._asVariableName()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+return smalltalk.withContext(function($ctx1) { 
var $1,$2; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+$1=_st(self)._stream(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+_st($1)._nextPutAll_(_st(_st(_st(_st(_st(anIRTempDeclaration)._scope())._alias()).__comma(".")).__comma(_st(anIRTempDeclaration)._name())).__comma("=nil;")); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+$2=_st($1)._lf(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 return self}, self, "visitIRTempDeclaration:", [anIRTempDeclaration], smalltalk.IRJSTranslator)}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 args: ["anIRTempDeclaration"], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-source: "visitIRTempDeclaration: anIRTempDeclaration\x0a\x09self stream nextPutVar: anIRTempDeclaration name asVariableName", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-messageSends: ["nextPutVar:", "asVariableName", "name", "stream"], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+source: "visitIRTempDeclaration: anIRTempDeclaration\x0a\x09self stream \x0a    \x09nextPutAll: anIRTempDeclaration scope alias, '.', anIRTempDeclaration name, '=nil;'; \x0a        lf", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+messageSends: ["nextPutAll:", ",", "name", "alias", "scope", "stream", "lf"], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 referencedClasses: [] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 }), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 smalltalk.IRJSTranslator); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -2899,6 +2888,26 @@ referencedClasses: [] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 }), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 smalltalk.JSStream); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+smalltalk.addMethod( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+"_nextPutBlockContextFor_during_", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+smalltalk.method({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+selector: "nextPutBlockContextFor:during:", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+category: 'streaming', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+fn: function (anIRClosure,aBlock){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+var self=this; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+return smalltalk.withContext(function($ctx1) { 
var $1; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+_st(self)._nextPutAll_(_st(_st("return smalltalk.withContext(function(").__comma(_st(_st(anIRClosure)._scope())._alias())).__comma(") { ")); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+$1=_st(self)._nextPutAll_(_st((smalltalk.String || String))._cr()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+_st(aBlock)._value(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+_st(self)._nextPutAll_("})"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+return self}, self, "nextPutBlockContextFor:during:", [anIRClosure,aBlock], smalltalk.JSStream)}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+args: ["anIRClosure", "aBlock"], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+source: "nextPutBlockContextFor: anIRClosure during: aBlock\x0a\x09self \x0a    \x09nextPutAll: 'return smalltalk.withContext(function(', anIRClosure scope alias, ') { '; \x0a        nextPutAll: String cr.\x0a    aBlock value.\x0a    self nextPutAll: '})'", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+messageSends: ["nextPutAll:", ",", "alias", "scope", "cr", "value"], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+referencedClasses: ["String"] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+}), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+smalltalk.JSStream); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 smalltalk.addMethod( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 "_nextPutClosureWith_arguments_", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 smalltalk.method({ 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -2932,11 +2941,12 @@ selector: "nextPutContextFor:during:", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 category: 'streaming', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 fn: function (aMethod,aBlock){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 var self=this; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-return smalltalk.withContext(function($ctx) { var $1,$2; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-_st(self)._nextPutAll_("return smalltalk.withContext(function($ctx) { "); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+return smalltalk.withContext(function($ctx1) { var $1,$2,$3; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+_st(self)._nextPutAll_(_st(_st("return smalltalk.withContext(function(").__comma(_st(_st(aMethod)._scope())._alias())).__comma(") { ")); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+$1=_st(self)._nextPutAll_(_st((smalltalk.String || String))._cr()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 _st(aBlock)._value(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 _st(self)._nextPutAll_("}, self, "); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-$1=_st(self)._nextPutAll_(_st(_st(_st(aMethod)._selector())._asJavascript()).__comma(", [")); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+$2=_st(self)._nextPutAll_(_st(_st(_st(aMethod)._selector())._asJavascript()).__comma(", [")); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 _st(_st(aMethod)._arguments())._do_separatedBy_((function(each){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 return _st(self)._nextPutAll_(each); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 }),(function(){ 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -2944,12 +2954,12 @@ return _st(self)._nextPutAll_(","); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 })); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 _st(self)._nextPutAll_("], "); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 _st(self)._nextPutAll_(_st(_st(aMethod)._theClass())._asJavascript()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-$2=_st(self)._nextPutAll_(")"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+$3=_st(self)._nextPutAll_(")"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 return self}, self, "nextPutContextFor:during:", [aMethod,aBlock], smalltalk.JSStream)}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 args: ["aMethod", "aBlock"], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-source: "nextPutContextFor: aMethod during: aBlock\x0a\x09self nextPutAll: 'return smalltalk.withContext(function($ctx) { '.\x0a    aBlock value.\x0a    self \x0a    \x09nextPutAll: '}, self, ';\x0a        nextPutAll: aMethod selector asJavascript, ', ['.\x0a    aMethod arguments \x0a    \x09do: [ :each | self nextPutAll: each ]\x0a      \x09separatedBy: [ self nextPutAll: ','  ].\x0a    self nextPutAll: '], ';\x0a        nextPutAll: aMethod theClass asJavascript;\x0a        nextPutAll: ')'", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-messageSends: ["nextPutAll:", "value", ",", "asJavascript", "selector", "do:separatedBy:", "arguments", "theClass"], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-referencedClasses: [] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+source: "nextPutContextFor: aMethod during: aBlock\x0a\x09self \x0a    \x09nextPutAll: 'return smalltalk.withContext(function(', aMethod scope alias, ') { '; \x0a        nextPutAll: String cr.\x0a    aBlock value.\x0a    self \x0a    \x09nextPutAll: '}, self, ';\x0a        nextPutAll: aMethod selector asJavascript, ', ['.\x0a    aMethod arguments \x0a    \x09do: [ :each | self nextPutAll: each ]\x0a      \x09separatedBy: [ self nextPutAll: ','  ].\x0a    self nextPutAll: '], ';\x0a        nextPutAll: aMethod theClass asJavascript;\x0a        nextPutAll: ')'", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+messageSends: ["nextPutAll:", ",", "alias", "scope", "cr", "value", "asJavascript", "selector", "do:separatedBy:", "arguments", "theClass"], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+referencedClasses: ["String"] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 }), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 smalltalk.JSStream); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 |