[Vm-dev] VM Maker: VMMaker.oscog-eem.322.mcz

commits at source.squeak.org commits at source.squeak.org
Thu Aug 15 18:52:47 UTC 2013


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

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

Name: VMMaker.oscog-eem.322
Author: eem
Time: 15 August 2013, 11:50:09.807 am
UUID: 15da84de-4866-48ae-b478-c2c96002c5eb
Ancestors: VMMaker.oscog-eem.321

Tweak frameless inst var store to avoid a register copy from Arg0Reg.

Upgrade CurrentImageCoInterpreterFacade to cope with the scan for
clean blocks.

=============== Diff against VMMaker.oscog-eem.321 ===============

Item was added:
+ ----- Method: CurrentImageCoInterpreterFacade>>fetchPointer:ofObject: (in category 'accessing') -----
+ fetchPointer: index ofObject: anOop
+ 	| obj |
+ 	obj := (objectMap keyAtValue: anOop).
+ 	^obj isCompiledMethod
+ 		ifTrue: [obj objectAt: index + 1]
+ 		ifFalse: [obj instVarAt: index + 1]!

Item was added:
+ ----- Method: CurrentImageCoInterpreterFacade>>literalCountOf: (in category 'accessing') -----
+ literalCountOf: anOop
+ 	^(objectMap keyAtValue: anOop) numLiterals!

Item was added:
+ ----- Method: CurrentImageCoInterpreterFacade>>startPCOrNilOfLiteral:in: (in category 'accessing') -----
+ startPCOrNilOfLiteral: literalOop in: methodOop
+ 	^(literalOop isClosure
+ 	   and: [literalOop method == (objectMap keyAtValue: methodOop)]) ifTrue:
+ 		[literalOop startpc]!

Item was changed:
  ----- Method: StackToRegisterMappingCogit>>genFramelessStorePop:ReceiverVariable: (in category 'bytecode generators') -----
  genFramelessStorePop: popBoolean ReceiverVariable: slotIndex
  	<inline: false>
  	| topReg valueReg constVal |
  	self assert: needsFrame not.
  	self ssFlushUpThroughReceiverVariable: slotIndex.
  	"Avoid store check for immediate values"
  	constVal := self ssTop maybeConstant.
  	(self ssTop type = SSConstant
  	 and: [(objectRepresentation shouldAnnotateObjectReference: constVal) not]) ifTrue:
  		[self ensureReceiverResultRegContainsSelf.
  		 self ssStorePop: popBoolean toPreferredReg: TempReg.
  		 traceStores > 0 ifTrue:
  			[self CallRT: ceTraceStoreTrampoline].
  		 ^objectRepresentation
  			genStoreImmediateInSourceReg: TempReg
  			slotIndex: slotIndex
  			destReg: ReceiverResultReg].
+ 	(topReg := self ssTop registerOrNil) isNil ifTrue:
+ 		[topReg := ClassReg].
- 	topReg := ClassReg.
- 	self ssPop: 1.
- 	self ssAllocateCallReg: topReg. "for the ceStoreCheck call in genStoreSourceReg:... below"
- 	self ssPush: 1.
  	valueReg := self ssStorePop: popBoolean toPreferredReg: topReg.
- 	valueReg ~= topReg ifTrue:
- 		[self MoveR: valueReg R: topReg].
  	"Note that ReceiverResultReg remains live after ceStoreCheckTrampoline."
  	self ensureReceiverResultRegContainsSelf.
  	 traceStores > 0 ifTrue:
+ 		[self MoveR: valueReg R: TempReg.
- 		[self MoveR: topReg R: TempReg.
  		 self CallRT: ceTraceStoreTrampoline].
  	^objectRepresentation
+ 		genStoreSourceReg: valueReg
- 		genStoreSourceReg: topReg
  		slotIndex: slotIndex
  		destReg: ReceiverResultReg
  		scratchReg: TempReg!



More information about the Vm-dev mailing list