[Vm-dev] VM Maker: VMMaker.oscog-cb.1394.mcz
commits at source.squeak.org
commits at source.squeak.org
Mon Jun 29 10:54:41 UTC 2015
Eliot Miranda uploaded a new version of VMMaker to project VM Maker:
http://source.squeak.org/VMMaker/VMMaker.oscog-cb.1394.mcz
==================== Summary ====================
Name: VMMaker.oscog-cb.1394
Author: cb
Time: 29 June 2015, 12:52:59.639 pm
UUID: bcbb50b5-80d7-4f84-bb1d-48ffc770dae1
Ancestors: VMMaker.oscog-cb.1393
optStatus ssEntry was initialized only in frameless methods, it is now initialized also in frameful methods.
This allows to remove the checks for optStatus ssEntry = (self addressOf: simSelf) at multiple places in the code.
=============== Diff against VMMaker.oscog-cb.1393 ===============
Item was changed:
----- Method: StackToRegisterMappingCogit>>ensureReceiverResultRegContainsSelf (in category 'bytecode generator support') -----
ensureReceiverResultRegContainsSelf
needsFrame
ifTrue:
+ [optStatus isReceiverResultRegLive ifFalse:
- [(optStatus isReceiverResultRegLive
- and: [optStatus ssEntry = (self addressOf: simSelf)]) ifFalse:
[self ssAllocateRequiredReg: ReceiverResultReg.
(self addressOf: simSelf) storeToReg: ReceiverResultReg].
+ optStatus isReceiverResultRegLive: true]
- optStatus
- isReceiverResultRegLive: true;
- ssEntry: (self addressOf: simSelf)]
ifFalse:
[self assert: (simSelf type = SSRegister
and: [simSelf register = ReceiverResultReg]).
self assert: (optStatus isReceiverResultRegLive
and: [optStatus ssEntry = (self addressOf: simSelf)])]!
Item was changed:
----- Method: StackToRegisterMappingCogit>>genPushReceiverBytecode (in category 'bytecode generators') -----
genPushReceiverBytecode
+ optStatus isReceiverResultRegLive ifTrue:
- (optStatus isReceiverResultRegLive
- and: [optStatus ssEntry = (self addressOf: simSelf)]) ifTrue:
[^self ssPushRegister: ReceiverResultReg].
^self ssPushDesc: simSelf!
Item was changed:
----- Method: StackToRegisterMappingCogit>>genReturnReceiver (in category 'bytecode generators') -----
genReturnReceiver
"In a frameless method ReceiverResultReg already contains self.
In a frameful method, ReceiverResultReg /may/ contain self."
needsFrame ifTrue:
+ [ optStatus isReceiverResultRegLive ifFalse:
+ [ (self addressOf: simSelf) storeToReg: ReceiverResultReg]].
- [(optStatus isReceiverResultRegLive
- and: [optStatus ssEntry = (self addressOf: simSelf)]) ifFalse:
- [self MoveMw: FoxMFReceiver r: FPReg R: ReceiverResultReg]].
^self genUpArrowReturn!
Item was changed:
----- Method: StackToRegisterMappingCogit>>initSimStackForFramefulMethod: (in category 'simulation stack') -----
initSimStackForFramefulMethod: startpc
<var: #desc type: #'CogSimStackEntry *'>
- optStatus isReceiverResultRegLive: false.
simSelf
type: SSBaseOffset;
spilled: true;
annotateUse: false;
register: FPReg;
offset: FoxMFReceiver.
+ optStatus
+ isReceiverResultRegLive: false;
+ ssEntry: (self addressOf: simSelf).
simSpillBase := methodOrBlockNumTemps. "N.B. Includes num args"
simStackPtr := simSpillBase - 1.
"args"
0 to: methodOrBlockNumArgs - 1 do:
[:i| | desc |
desc := self simStackAt: i.
desc
type: SSBaseOffset;
spilled: true;
annotateUse: false;
register: FPReg;
offset: FoxCallerSavedIP + ((methodOrBlockNumArgs - i) * objectMemory wordSize);
bcptr: startpc].
"temps"
methodOrBlockNumArgs to: simStackPtr do:
[:i| | desc |
desc := self simStackAt: i.
desc
type: SSBaseOffset;
spilled: true;
annotateUse: false;
register: FPReg;
offset: FoxMFReceiver - (i - methodOrBlockNumArgs + 1 * objectMemory wordSize);
bcptr: startpc]!
More information about the Vm-dev
mailing list