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