[Vm-dev] VM Maker: VMMaker.oscog-cb.1260.mcz
commits at source.squeak.org
commits at source.squeak.org
Mon Apr 27 08:33:19 UTC 2015
Eliot Miranda uploaded a new version of VMMaker to project VM Maker:
http://source.squeak.org/VMMaker/VMMaker.oscog-cb.1260.mcz
==================== Summary ====================
Name: VMMaker.oscog-cb.1260
Author: cb
Time: 27 April 2015, 10:31:56.371 am
UUID: 5727199d-3cf7-4bc6-b881-d17da3761458
Ancestors: VMMaker.oscog-cb.1259
After hours of debugging, I realized an assertion was failing but the SistaVM is working :-/.
I fixed the trap logic. Now I'll compile the VM on linux and see what's going on.
=============== Diff against VMMaker.oscog-cb.1259 ===============
Item was changed:
----- Method: CoInterpreter>>ceSistaTrap (in category 'trampolines') -----
ceSistaTrap
+ "When we arrive here, the value that trapped is pushed on stack"
<api>
<option: #SistaVM>
+ | context |
- | context obj |
instructionPointer := self popStack.
context := self ensureFrameIsMarried: framePointer SP: stackPointer.
- "If there is a trap, the object is supposed to remain on
- the stack, but the cogit always removes it. So restore it here."
- obj := self stackTop.
self push: context.
- self push: obj.
self push: instructionPointer.
^self
ceSendAbort: (objectMemory splObj: SelectorSistaTrap)
to: context
numArgs: 1!
Item was changed:
----- Method: StackInterpreter>>respondToSistaTrap (in category 'sista bytecodes') -----
respondToSistaTrap
+ | ourContext |
- | ourContext tos |
<sharedCodeInCase: #unconditionnalTrapBytecode>
messageSelector := objectMemory splObj: SelectorSistaTrap.
- tos := self internalPopStack.
ourContext := self ensureFrameIsMarried: localFP SP: localSP.
- messageSelector = objectMemory nilObject ifTrue:
- [self error: 'Sista trap but no trap selector installed'].
self internalPush: ourContext.
- self internalPush: tos.
argumentCount := 1.
self normalSend!
More information about the Vm-dev
mailing list