<div dir="ltr">cool, thanks! :)<div>(will continue tomorrow with this)</div></div><div class="gmail_extra"><br><div class="gmail_quote">On Wed, Oct 15, 2014 at 8:43 PM, <span dir="ltr"><<a href="mailto:commits@source.squeak.org" target="_blank">commits@source.squeak.org</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><br>
Eliot Miranda uploaded a new version of Cog to project VM Maker:<br>
<a href="http://source.squeak.org/VMMaker/Cog-eem.210.mcz" target="_blank">http://source.squeak.org/VMMaker/Cog-eem.210.mcz</a><br>
<br>
==================== Summary ====================<br>
<br>
Name: Cog-eem.210<br>
Author: eem<br>
Time: 15 October 2014, 11:42:52.194 am<br>
UUID: 8ffc4e21-a5b2-4526-abec-324772d765d7<br>
Ancestors: Cog-eem.209<br>
<br>
Fix bootstrap given addition of remapBuffer assert<br>
check in slowPrmitiveResponse in VMMaker.oscog-eem.897.<br>
<br>
=============== Diff against Cog-eem.209 ===============<br>
<br>
Item was changed:<br>
----- Method: SimulatorHarness>>withExecutableInterpreter:do: (in category 'bootstrap methods') -----<br>
withExecutableInterpreter: sim do: aBlock<br>
"With the oldInterpreter ready to execute code, evaluate aBlock,<br>
then return the interpreter (and the heap) to the ``just snapshotted'' state."<br>
+ | savedpc savedfp initialContext finalContext |<br>
- | savedpc initialContext finalContext |<br>
sim<br>
initStackPages;<br>
loadInitialContext;<br>
internalizeIPandSP.<br>
- initialContext := sim frameContext: sim localFP.<br>
savedpc := sim localIP.<br>
+ savedfp := sim localFP.<br>
- sim objectMemory hasSpurMemoryManagerAPI ifFalse:<br>
- [sim objectMemory pushRemappableOop: initialContext].<br>
"sim printHeadFrame."<br>
aBlock value.<br>
"sim printHeadFrame."<br>
sim<br>
internalPush: sim localIP;<br>
externalizeIPandSP.<br>
"now undo the execution state"<br>
+ self assert: sim localFP = savedfp.<br>
+ initialContext := sim frameContext: savedfp.<br>
finalContext := sim voidVMStateForSnapshotFlushingExternalPrimitivesIf: false.<br>
- sim objectMemory hasSpurMemoryManagerAPI ifFalse:<br>
- [initialContext := sim objectMemory popRemappableOop].<br>
self assert: initialContext = finalContext.<br>
self assert: sim localIP = savedpc.<br>
sim objectMemory<br>
storePointer: SuspendedContextIndex<br>
ofObject: sim activeProcess<br>
withValue: finalContext!<br>
<br>
Item was changed:<br>
----- Method: SpurBootstrap>>allocateClassTable (in category 'bootstrap image') -----<br>
allocateClassTable<br>
"Allocate the root of the classTable plus enough pages to accomodate all classes in<br>
the classToIndex map. Don't fill in the entries yet; the classes have yet to be cloned."<br>
| tableRoot page maxSize numPages |<br>
tableRoot := newHeap<br>
allocateSlots: newHeap classTableRootSlots + newHeap hiddenRootSlots<br>
format: newHeap arrayFormat<br>
classIndex: newHeap arrayClassIndexPun.<br>
self assert: (newHeap numSlotsOf: tableRoot) = (newHeap classTableRootSlots + newHeap hiddenRootSlots).<br>
self assert: (newHeap formatOf: tableRoot) = newHeap arrayFormat.<br>
self assert: (newHeap classIndexOf: tableRoot) = newHeap arrayClassIndexPun.<br>
newHeap nilFieldsOf: tableRoot.<br>
"first page is strong"<br>
page := newHeap<br>
allocateSlots: newHeap classTablePageSize<br>
format: newHeap arrayFormat<br>
classIndex: newHeap arrayClassIndexPun.<br>
self assert: (newHeap numSlotsOf: page) = newHeap classTablePageSize.<br>
self assert: (newHeap formatOf: tableRoot) = newHeap arrayFormat.<br>
self assert: (newHeap classIndexOf: tableRoot) = newHeap arrayClassIndexPun.<br>
self assert: (newHeap objectAfter: tableRoot limit: newHeap freeStart) = page.<br>
lastClassTablePage := page.<br>
newHeap nilFieldsOf: page.<br>
newHeap storePointer: 0 ofObject: tableRoot withValue: page.<br>
+ newHeap setHiddenRootsObj: tableRoot.<br>
- newHeap hiddenRootsObj: tableRoot.<br>
maxSize := classToIndex inject: 0 into: [:a :b| a max: b].<br>
numPages := (maxSize + newHeap classTableMinorIndexMask / newHeap classTablePageSize) truncated.<br>
2 to: numPages do:<br>
[:i|<br>
page := newHeap<br>
allocateSlots: newHeap classTablePageSize<br>
format: newHeap arrayFormat<br>
classIndex: newHeap arrayClassIndexPun.<br>
self assert: (newHeap numSlotsOf: page) = newHeap classTablePageSize.<br>
self assert: (newHeap formatOf: page) = newHeap arrayFormat.<br>
self assert: (newHeap classIndexOf: page) = newHeap arrayClassIndexPun.<br>
newHeap fillObj: page numSlots: newHeap classTablePageSize with: newHeap nilObject.<br>
newHeap storePointer: i - 1 ofObject: tableRoot withValue: page.<br>
self assert: (newHeap objectAfter: (newHeap fetchPointer: i - 2 ofObject: tableRoot) limit: newHeap freeStart) = page.<br>
lastClassTablePage := page].<br>
"and once again to recompute numClassTablePages post building the class table."<br>
newHeap instVarNamed: 'numClassTablePages' put: nil.<br>
+ newHeap setHiddenRootsObj: tableRoot!<br>
- newHeap hiddenRootsObj: tableRoot!<br>
<br>
</blockquote></div><br></div>