[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