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

commits at source.squeak.org commits at source.squeak.org
Sat Jan 16 05:24:50 UTC 2016


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

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

Name: VMMaker.oscog-eem.1641
Author: eem
Time: 16 January 2016, 9:23:06.807672 pm
UUID: a1fef138-fa26-4a09-b0c1-1e7be82e14a8
Ancestors: VMMaker.oscog-eem.1640

Spur:
Follow the stacked receiver (closure) of a block activation qwhen handling send faults so that forwarded copied values are unforwarded for subsequent activations of the same closure.

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

Item was changed:
  ----- Method: StackInterpreter>>followForwardedFrameContents:stackPointer: (in category 'lazy become') -----
  followForwardedFrameContents: theFP stackPointer: theSP
  	"follow pointers in the current stack frame up to theSP."
  	<var: #theFP type: #'char *'>
  	<var: #theSP type: #'char *'>
  	<inline: false>
+ 	 | oop |
  	<var: #ptr type: #'char *'>
  	theSP
  		to: (self frameReceiverLocation: theFP)
  		by: objectMemory wordSize
+ 		do: [:ptr|
- 		do: [:ptr| | oop |
  			oop := stackPages longAt: ptr.
  			((objectMemory isNonImmediate: oop)
  			 and: [objectMemory isForwarded: oop]) ifTrue:
  				[stackPages longAt: ptr put: (objectMemory followForwarded: oop)]].
  	theFP + FoxCallerSavedIP + objectMemory wordSize
  		to: theFP + (self frameStackedReceiverOffset: theFP)
  		by: objectMemory wordSize
+ 		do: [:ptr|
- 		do: [:ptr| | oop |
  			oop := stackPages longAt: ptr.
  			((objectMemory isNonImmediate: oop)
  			 and: [objectMemory isForwarded: oop]) ifTrue:
+ 				[oop := objectMemory followForwarded: oop.
+ 				 stackPages longAt: ptr put: oop]].
+ 	"If we're in a block then also follow fields in the stacked closure as it may be activated again."
+ 	(self frameIsBlockActivation: theFP) ifTrue:
+ 		[self assert: oop = (stackPages longAt: theFP + (self frameStackedReceiverOffset: theFP)).
+ 		 self followForwardedObjectFields: oop toDepth: 0].
- 				[stackPages longAt: ptr put: (objectMemory followForwarded: oop)]].
  	self assert: (objectMemory isForwarded: (self frameMethodObject: theFP)) not.
  	(self frameHasContext: theFP) ifTrue:
  		[self assert: (objectMemory isForwarded: (self frameContext: theFP)) not]!



More information about the Vm-dev mailing list