[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