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

commits at source.squeak.org commits at source.squeak.org
Fri Jun 18 23:25:00 UTC 2021

Eliot Miranda uploaded a new version of VMMaker to project VM Maker:

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

Name: VMMaker.oscog-eem.2968
Author: eem
Time: 18 June 2021, 4:24:48.734961 pm
UUID: f7018c3a-ddc0-4f70-aa66-8f8f6b17f40f
Ancestors: VMMaker.oscog-eem.2967

In rare circumstances the Display bits oop can be nil post GC.  Avoid an assert failure and unnecessary work if it is.

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

Item was changed:
  ----- Method: StackInterpreter>>postGCUpdateDisplayBits (in category 'object memory support') -----
  	"Update the displayBits after a GC may have moved it.
  	 Answer if the displayBits appear valid.  The wrinkle here is that the displayBits could be a surface handle."
  	<inline: false>
  	| displayObj bitsOop bitsNow |
  	displayObj := objectMemory splObj: TheDisplay.
  	((objectMemory isPointers: displayObj)
  	 and: [(objectMemory lengthOf: displayObj) >= 4]) ifFalse:
  	bitsOop := objectMemory fetchPointer: 0 ofObject: displayObj.
+ 	(bitsOop = objectMemory nilObject "it ain't yet set"
+ 	 or: [objectMemory isIntegerObject: bitsOop]) ifTrue: "It's a surface; our work here is done..."
- 	(objectMemory isIntegerObject: bitsOop) ifTrue: "It's a surface; our work here is done..."
  	self assert: ((objectMemory addressCouldBeObj: bitsOop)
  				 and: [objectMemory isWordsOrBytes: bitsOop]).
  	(objectMemory hasSpurMemoryManagerAPI
  	 and: [objectMemory isPinned: bitsOop]) ifFalse:
  		[bitsNow := self cCode: [objectMemory firstIndexableField: bitsOop]
  					inSmalltalk: [(objectMemory firstIndexableField: bitsOop) asInteger].
  		 displayBits ~= bitsNow ifTrue:
  			[displayBits := bitsNow.
  			 self ioNoteDisplayChanged: displayBits width: displayWidth height: displayHeight depth: displayDepth].
  		 (objectMemory hasSpurMemoryManagerAPI
  		  and: [stackPage ~= 0]) ifTrue: "If stackPage is zero we're snapshotting and now is not the time to pin."
  			[objectMemory pinObject: bitsOop]].

More information about the Vm-dev mailing list