[Vm-dev] VM Maker: VMMaker.oscog-cb.1264.mcz
commits at source.squeak.org
commits at source.squeak.org
Mon Apr 27 13:45:16 UTC 2015
ClementBera uploaded a new version of VMMaker to project VM Maker:
http://source.squeak.org/VMMaker/VMMaker.oscog-cb.1264.mcz
==================== Summary ====================
Name: VMMaker.oscog-cb.1264
Author: cb
Time: 27 April 2015, 3:43:21.287 pm
UUID: 85bfc943-a124-4ba4-ab44-c117ce807cce
Ancestors: VMMaker.oscog-cb.1263
Rewrote the method to be correctly inlined by slang. It generated '... , l1:...' instead of '...; l1:...'. I guess I could improve slang to crrectly inline the method instead of rewriting it, but I tried and failed.
=============== Diff against VMMaker.oscog-cb.1263 ===============
Item was changed:
----- Method: StackToRegisterMappingCogit>>genStorePop:ReceiverVariable:traceBlock:inFrame: (in category 'bytecode generator support') -----
genStorePop: popBoolean ReceiverVariable: slotIndex traceBlock: block inFrame: inFrame
<inline: true>
| topReg |
self ssFlushUpThroughReceiverVariable: slotIndex.
"Avoid store check for immediate values"
+ ^ (objectRepresentation isUnannotatableConstant: self ssTop)
+ ifTrue:
+ [self ensureReceiverResultRegContainsSelf.
+ self ssStorePop: popBoolean toReg: TempReg.
+ traceStores > 0 ifTrue: [block value].
+ objectRepresentation
+ genStoreImmediateInSourceReg: TempReg
+ slotIndex: slotIndex
+ destReg: ReceiverResultReg]
+ ifFalse:
+ [topReg := self allocateRegForStackEntryAt: 0 notConflictingWith: (self registerMaskFor: ReceiverResultReg).
+ self ssStorePop: popBoolean toReg: topReg.
+ "Note that ReceiverResultReg remains live after ceStoreCheckTrampoline."
+ self ensureReceiverResultRegContainsSelf.
+ traceStores > 0 ifTrue: [self MoveR: topReg R: TempReg. block value].
+ objectRepresentation
+ genStoreSourceReg: topReg
+ slotIndex: slotIndex
+ destReg: ReceiverResultReg
+ scratchReg: TempReg
+ inFrame: inFrame ]!
- (objectRepresentation isUnannotatableConstant: self ssTop) ifTrue:
- [self ensureReceiverResultRegContainsSelf.
- self ssStorePop: popBoolean toReg: TempReg.
- traceStores > 0 ifTrue: [block value].
- ^objectRepresentation
- genStoreImmediateInSourceReg: TempReg
- slotIndex: slotIndex
- destReg: ReceiverResultReg].
- topReg := self allocateRegForStackEntryAt: 0 notConflictingWith: (self registerMaskFor: ReceiverResultReg).
- self ssStorePop: popBoolean toReg: topReg.
- "Note that ReceiverResultReg remains live after ceStoreCheckTrampoline."
- self ensureReceiverResultRegContainsSelf.
- traceStores > 0 ifTrue:
- [self MoveR: topReg R: TempReg.
- block value].
- ^objectRepresentation
- genStoreSourceReg: topReg
- slotIndex: slotIndex
- destReg: ReceiverResultReg
- scratchReg: TempReg
- inFrame: inFrame!
More information about the Vm-dev
mailing list