[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