Eliot Miranda uploaded a new version of Cog to project VM Maker: http://source.squeak.org/VMMaker/Cog-eem.102.mcz ==================== Summary ==================== Name: Cog-eem.102 Author: eem Time: 1 October 2013, 2:46:06.275 pm UUID: daf20775-e09f-46a3-9382-fd3732f16597 Ancestors: Cog-eem.101 Change the bootstrap to leave room for JIT structures, i.e. the stackZone and rump C stack. Refactor launch:headerFlags: into launch:simulatorClass:headerFlags: allowing launching a CoInterpreter/Cogit on the bootstrap image. =============== Diff against Cog-eem.101 =============== Item was added: + ----- Method: SpurBootstrap>>coHeapFrom: (in category 'testing') ----- + coHeapFrom: aSpur32BitMMLESimulator + | coHeap | + coHeap := Spur32BitMMLECoSimulator new. + aSpur32BitMMLESimulator class allInstVarNames do: + [:ivn| + coHeap instVarNamed: ivn put: (aSpur32BitMMLESimulator instVarNamed: ivn)]. + coHeap scavenger instVarNamed: 'manager' put: coHeap. + ^coHeap! Item was changed: ----- Method: SpurBootstrap>>launch (in category 'testing') ----- launch + self launch: newHeap + simulatorClass: StackInterpreterSimulator + headerFlags: oldInterpreter getImageHeaderFlags! - self launch: newHeap headerFlags: oldInterpreter getImageHeaderFlags! Item was removed: - ----- Method: SpurBootstrap>>launch:headerFlags: (in category 'testing') ----- - launch: heap headerFlags: headerFlags - | sim | - sim := StackInterpreterSimulator onObjectMemory: heap. - heap coInterpreter: sim. - sim - initializeInterpreter: 0; - setImageHeaderFlagsFrom: headerFlags; - imageName: ImageName; - flushExternalPrimitives; - openAsMorph; - transcript: Transcript. "deep copy copies this" - "sim - instVarNamed: 'printSends' put: true; - instVarNamed: 'printReturns' put: true; - instVarNamed: 'methodDictLinearSearchLimit' put: SmallInteger maxVal." "for now" - heap - setCheckForLeaks: 15; - runLeakCheckerForFullGC: true. - - sim halt; run! Item was added: + ----- Method: SpurBootstrap>>launch:simulatorClass:headerFlags: (in category 'testing') ----- + launch: heap simulatorClass: simulatorClass headerFlags: headerFlags + | sim | + sim := simulatorClass onObjectMemory: heap. + heap coInterpreter: sim. + (sim class allInstVarNames includes: 'cogCodeSize') + ifTrue: + [sim + initializeInterpreter: 0; + instVarNamed: 'heapBase' put: heap startOfMemory; + instVarNamed: 'numStackPages' put: 8; + instVarNamed: 'cogCodeSize' put: 1024*1024; + moveMethodCacheToMemoryAt: sim cogCodeSize + sim computeStackZoneSize; + initializeCodeGenerator] + ifFalse: + [sim initializeInterpreter: 0]. + sim + setImageHeaderFlagsFrom: headerFlags; + imageName: ImageName; + flushExternalPrimitives; + openAsMorph; + transcript: Transcript. "deep copy copies this" + "sim + instVarNamed: 'printSends' put: true; + instVarNamed: 'printReturns' put: true; + instVarNamed: 'methodDictLinearSearchLimit' put: SmallInteger maxVal." "for now" + heap + setCheckForLeaks: 15; + runLeakCheckerForFullGC: true. + + sim halt; run! Item was changed: ----- Method: SpurBootstrap>>launchSaved (in category 'testing') ----- launchSaved + self launch: TransformedImage veryDeepCopy + simulatorClass: StackInterpreterSimulator + headerFlags: ImageHeaderFlags! - self launch: TransformedImage veryDeepCopy headerFlags: ImageHeaderFlags! Item was added: + ----- Method: SpurBootstrap>>launchSavedWithJIT (in category 'testing') ----- + launchSavedWithJIT + self launch: (self coHeapFrom: TransformedImage veryDeepCopy) + simulatorClass: CogVMSimulator + headerFlags: ImageHeaderFlags! Item was changed: ----- Method: SpurBootstrap>>on: (in category 'initialize-release') ----- on: imageName StackInterpreter initializeWithOptions: Dictionary new. oldInterpreter := StackInterpreterSimulator new. oldInterpreter openOn: imageName extraMemory: 0. oldHeap := oldInterpreter objectMemory. newHeap := Spur32BitMMLESimulator new. newHeap allocateMemoryOfSize: (oldHeap youngStart * 3 / 2 roundUpTo: 1024 * 1024) newSpaceSize: 1024 * 1024 + stackSize: 1024 * 1024 codeSize: 1024 * 1024. newHeap setCheckForLeaks: 15 - 4. "don't check become; soooo many rehashes in bootstrap" map := Dictionary new: oldHeap memory size // 4. reverseMap := Dictionary new: oldHeap memory size // 4. classToIndex := Dictionary new: 1024. literalMap := IdentityDictionary new. methodClasses := Set new. installedPrototypes := Set new! |
Free forum by Nabble | Edit this page |