[Vm-dev] VM Maker: VMMaker.oscog-eem.2887.mcz

commits at source.squeak.org commits at source.squeak.org
Mon Nov 16 07:34:18 UTC 2020


Eliot Miranda uploaded a new version of VMMaker to project VM Maker:
http://source.squeak.org/VMMaker/VMMaker.oscog-eem.2887.mcz

==================== Summary ====================

Name: VMMaker.oscog-eem.2887
Author: eem
Time: 15 November 2020, 11:34:08.438409 pm
UUID: 835695f1-3354-4db4-9d20-dff979802ef4
Ancestors: VMMaker.oscog-eem.2886

...and another one.

=============== Diff against VMMaker.oscog-eem.2886 ===============

Item was changed:
  ----- Method: CoInterpreter>>markCogMethodsAndReferentsOnPage: (in category 'frame access') -----
  markCogMethodsAndReferentsOnPage: thePage
  	<var: #thePage type: #'StackPage *'>
+ 	| theFP callerFP |
+ 	<var: #theFP type: #'char *'>
+ 	<var: #callerFP type: #'char *'>
- 	| theFP callerFP cogMethod theIP |
  	<inline: false>
  	self assert: (stackPages isFree: thePage) not.
  	self assert: (self ifCurrentStackPageHasValidHeadPointers: thePage).
  	theFP := thePage headFP.
+ 	"Skip the instruction pointer on top of stack of inactive pages."
- 
- 	"If a machine code primitive is in progress then there will be a return address on top of stack
- 	 which does not refer to the current frame's method (which is the caller of the primitive), since
- 	 the primitive has not built a frame. It is vital that that method not be reclaimed!!!!"
- 	theIP := (stackPages longAt: thePage headSP) asUnsignedInteger.
- 	(theIP < objectMemory startOfMemory
- 	 and: [theIP ~= cogit ceReturnToInterpreterPC]) ifTrue:
- 		[self assert: (self isMachineCodeFrame: theFP).
- 		 cogMethod := self mframeHomeMethod: theFP.
- 		 (theIP >= cogMethod asUnsignedInteger
- 		  and: [theIP < (cogMethod asUnsignedInteger + cogMethod blockSize)]) ifFalse:
- 			[(cogit cogMethodContaining: theIP) ifNotNil:
- 				[:primCogMethod| cogit markMethodAndReferents: primCogMethod]]].
- 
  	[(self isMachineCodeFrame: theFP) ifTrue:
  		[cogit markMethodAndReferents: (self mframeCogMethod: theFP)].
  	(callerFP := self frameCallerFP: theFP) ~= 0] whileTrue:
  		[theFP := callerFP]!



More information about the Vm-dev mailing list