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! |
Free forum by Nabble | Edit this page |