[Vm-dev] VM Maker: VMMaker.oscog-cb.1394.mcz

commits at source.squeak.org commits at source.squeak.org
Mon Jun 29 10:54:41 UTC 2015


Eliot Miranda uploaded a new version of VMMaker to project VM Maker:
http://source.squeak.org/VMMaker/VMMaker.oscog-cb.1394.mcz

==================== Summary ====================

Name: VMMaker.oscog-cb.1394
Author: cb
Time: 29 June 2015, 12:52:59.639 pm
UUID: bcbb50b5-80d7-4f84-bb1d-48ffc770dae1
Ancestors: VMMaker.oscog-cb.1393

optStatus ssEntry was initialized only in frameless methods, it is now initialized also in frameful methods.

This allows to remove the checks for optStatus ssEntry = (self addressOf: simSelf) at multiple places in the code.

=============== Diff against VMMaker.oscog-cb.1393 ===============

Item was changed:
  ----- Method: StackToRegisterMappingCogit>>ensureReceiverResultRegContainsSelf (in category 'bytecode generator support') -----
  ensureReceiverResultRegContainsSelf
  	needsFrame
  		ifTrue:
+ 			[optStatus isReceiverResultRegLive ifFalse:
- 			[(optStatus isReceiverResultRegLive
- 			 and: [optStatus ssEntry = (self addressOf: simSelf)]) ifFalse:
  				[self ssAllocateRequiredReg: ReceiverResultReg.
  				 (self addressOf: simSelf) storeToReg: ReceiverResultReg].
+ 			optStatus isReceiverResultRegLive: true]
- 			optStatus
- 				isReceiverResultRegLive: true;
- 				ssEntry: (self addressOf: simSelf)]
  		ifFalse:
  			[self assert: (simSelf type = SSRegister
  						  and: [simSelf register = ReceiverResultReg]).
  			self assert: (optStatus isReceiverResultRegLive
  						  and: [optStatus ssEntry = (self addressOf: simSelf)])]!

Item was changed:
  ----- Method: StackToRegisterMappingCogit>>genPushReceiverBytecode (in category 'bytecode generators') -----
  genPushReceiverBytecode
+ 	optStatus isReceiverResultRegLive ifTrue:
- 	(optStatus isReceiverResultRegLive
- 	  and: [optStatus ssEntry = (self addressOf: simSelf)]) ifTrue:
  		[^self ssPushRegister: ReceiverResultReg].
  	^self ssPushDesc: simSelf!

Item was changed:
  ----- Method: StackToRegisterMappingCogit>>genReturnReceiver (in category 'bytecode generators') -----
  genReturnReceiver
  	"In a frameless method ReceiverResultReg already contains self.
  	 In a frameful method, ReceiverResultReg /may/ contain self."
  	needsFrame ifTrue:
+ 		[ optStatus isReceiverResultRegLive ifFalse:
+ 			[ (self addressOf: simSelf) storeToReg: ReceiverResultReg]].
- 		[(optStatus isReceiverResultRegLive
- 		  and: [optStatus ssEntry = (self addressOf: simSelf)]) ifFalse:
- 			[self MoveMw: FoxMFReceiver r: FPReg R: ReceiverResultReg]].
  	^self genUpArrowReturn!

Item was changed:
  ----- Method: StackToRegisterMappingCogit>>initSimStackForFramefulMethod: (in category 'simulation stack') -----
  initSimStackForFramefulMethod: startpc
  	<var: #desc type: #'CogSimStackEntry *'>
- 	optStatus isReceiverResultRegLive: false.
  	simSelf
  		type: SSBaseOffset;
  		spilled: true;
  		annotateUse: false;
  		register: FPReg;
  		offset: FoxMFReceiver.
+ 	optStatus 
+ 		isReceiverResultRegLive: false;
+ 		ssEntry: (self addressOf: simSelf).
  	simSpillBase := methodOrBlockNumTemps. "N.B. Includes num args"
  	simStackPtr := simSpillBase - 1.
  	"args"
  	0 to: methodOrBlockNumArgs - 1 do:
  		[:i| | desc |
  		desc := self simStackAt: i.
  		desc
  			type: SSBaseOffset;
  			spilled: true;
  			annotateUse: false;
  			register: FPReg;
  			offset: FoxCallerSavedIP + ((methodOrBlockNumArgs - i) * objectMemory wordSize);
  			bcptr: startpc].
  	"temps"
  	methodOrBlockNumArgs to: simStackPtr do:
  		[:i| | desc |
  		desc := self simStackAt: i.
  		desc
  			type: SSBaseOffset;
  			spilled: true;
  			annotateUse: false;
  			register: FPReg;
  			offset: FoxMFReceiver - (i - methodOrBlockNumArgs + 1 * objectMemory wordSize);
  			bcptr: startpc]!



More information about the Vm-dev mailing list