| 
					
				 | 
			
			
				@@ -637,7 +637,7 @@ inlineLiteral: aSelector receiverNode: anObject argumentNodes: aCollection 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				           		self visit: anObject. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				           		stream nextPutAll: ') == nil || $receiver == undefined) ? '. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                   	self visit: aCollection first. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                  	stream nextPutAll: '() : nil'. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                  	stream nextPutAll: '() : $receiver'. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                   	inlined := true]]. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	(aSelector = 'ifNotNil:') ifTrue: [ 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -781,6 +781,12 @@ inline: aSelector receiver: receiver argumentNodes: aCollection 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         ^inlined 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 ! ! 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+!Compiler methodsFor: 'testing'! 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+performOptimizations 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	^self class performOptimizations 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+! ! 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 !Compiler methodsFor: 'visiting'! 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 visit: aNode 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -903,11 +909,14 @@ visitSendNode: aNode 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         superSend := stream contents = 'super'. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         receiver := superSend ifTrue: ['self'] ifFalse: [stream contents]. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         stream := str. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	(self inlineLiteral: aNode selector receiverNode: aNode receiver argumentNodes: aNode arguments) ifFalse: [ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		(self inline: aNode selector receiver: receiver argumentNodes: aNode arguments) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                	ifTrue: [stream nextPutAll: ' : ', (self send: aNode selector to: '$receiver' arguments: aNode arguments superSend: superSend)] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                	ifFalse: [stream nextPutAll: (self send: aNode selector to: receiver arguments: aNode arguments superSend: superSend)]] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	self performOptimizations  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		ifTrue: [ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			(self inlineLiteral: aNode selector receiverNode: aNode receiver argumentNodes: aNode arguments) ifFalse: [ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				(self inline: aNode selector receiver: receiver argumentNodes: aNode arguments) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                			ifTrue: [stream nextPutAll: ' : ', (self send: aNode selector to: '$receiver' arguments: aNode arguments superSend: superSend)] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                			ifFalse: [stream nextPutAll: (self send: aNode selector to: receiver arguments: aNode arguments superSend: superSend)]]] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		ifFalse: [stream nextPutAll: (self send: aNode selector to: receiver arguments: aNode arguments superSend: superSend)] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 ! 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 visitCascadeNode: aNode 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -981,6 +990,18 @@ send: aSelector to: aReceiver arguments: aCollection superSend: aBoolean 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		str nextPutAll: ')'] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 ! ! 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+Compiler class instanceVariableNames: 'performOptimizations'! 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+!Compiler class methodsFor: 'accessing'! 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+performOptimizations 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	^performOptimizations ifNil: [true] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+! 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+performOptimizations: aBoolean 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	performOptimizations := aBoolean 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+! ! 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 !Compiler class methodsFor: 'compiling'! 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 recompile: aClass 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -1002,6 +1023,6 @@ Object subclass: #DoIt 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 !DoIt methodsFor: ''! 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-doIt ^[Date millisecondsToRun: [Compiler new compile: (SmalltalkParser methodDictionary at: 'parser') source forClass: SmalltalkParser]] value 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+doIt ^[Compiler performOptimizations: false.] value 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 ! ! 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 |