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

commits at source.squeak.org commits at source.squeak.org
Thu Dec 14 20:47:00 UTC 2017


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

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

Name: VMMaker.oscog-eem.2295
Author: eem
Time: 14 December 2017, 12:46:34.493554 pm
UUID: de695ed3-1ddf-4936-a415-aa207ab3605d
Ancestors: VMMaker.oscog-eem.2294

Spur Image Segments: The short cut in ensureNoNewObjectsIn: was wrong.  Best not take any short cuts here at all.

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

Item was changed:
- SystemOrganization addCategory: #VMMaker!
  SystemOrganization addCategory: #'VMMaker-Building'!
  SystemOrganization addCategory: #'VMMaker-Interpreter'!
  SystemOrganization addCategory: #'VMMaker-InterpreterSimulation'!
  SystemOrganization addCategory: #'VMMaker-InterpreterSimulation-Morphic'!
  SystemOrganization addCategory: #'VMMaker-JIT'!
  SystemOrganization addCategory: #'VMMaker-JITSimulation'!
  SystemOrganization addCategory: #'VMMaker-Multithreading'!
  SystemOrganization addCategory: #'VMMaker-Plugins'!
  SystemOrganization addCategory: #'VMMaker-Plugins-FFI'!
  SystemOrganization addCategory: #'VMMaker-Plugins-IOS'!
  SystemOrganization addCategory: #'VMMaker-PostProcessing'!
  SystemOrganization addCategory: #'VMMaker-SmartSyntaxPlugins'!
  SystemOrganization addCategory: #'VMMaker-SpurMemoryManager'!
  SystemOrganization addCategory: #'VMMaker-SpurMemoryManagerSimulation'!
  SystemOrganization addCategory: #'VMMaker-Support'!
  SystemOrganization addCategory: #'VMMaker-Tests'!
  SystemOrganization addCategory: #'VMMaker-Translation to C'!

Item was changed:
  ----- Method: SpurMemoryManager>>ensureNoNewObjectsIn: (in category 'image segment in/out') -----
  ensureNoNewObjectsIn: outPointerArray
  	"This is part of loadImageSegmentFrom:outPointers:.
+ 	 Since the remembered bit is currently used to identify classes in the segment, setting remembered bits
- 	 Since the reembered bit is currently used to identify classes in the segment, setting remembered bits
  	 in new objects in the segment is difficult.  Instead simply arrange that there are no new objects in
  	 outPointerArray, obviating the need to remember any of the loaded objects in the segment."
  	| scanClassTable |
- 	(self isRemembered: outPointerArray) ifFalse: [^0].
  	scanClassTable := false.
  	0 to: (self numSlotsOf: outPointerArray) - 1 do:
  		[:i| | oop clone hash |
  		 oop := self fetchPointer: i ofObject: outPointerArray.
  		 (self isYoung: oop) ifTrue:
  			[clone := self cloneInOldSpace: oop forPinning: false.
  			 clone = 0 ifTrue:
  				[^PrimErrNoMemory halt].
  			 ((hash := self rawHashBitsOf: oop) ~= 0
  			  and: [(self classOrNilAtIndex: hash) = oop]) ifTrue:
  				[scanClassTable := true].
  			 self forward: oop to: clone.
  			 self storePointerUnchecked: i ofObject: outPointerArray withValue: clone]].
- 	scavenger forgetObject: outPointerArray.
  	scanClassTable ifTrue:
  		[self postBecomeScanClassTable: BecamePointerObjectFlag].
  	^0!



More information about the Vm-dev mailing list