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!
vm-dev@lists.squeakfoundation.org