Eliot Miranda uploaded a new version of VMMaker to project VM Maker:
http://source.squeak.org/VMMaker/VMMaker.oscog-eem.332.mcz==================== Summary ====================
Name: VMMaker.oscog-eem.332
Author: eem
Time: 21 August 2013, 7:21:26.485 pm
UUID: f7cb4758-7c5c-4617-89dc-9527ab2ee66b
Ancestors: VMMaker.oscog-eem.331
Fix snapshotting in the Newspeak VM. Make removing from the
unpaired method list cope with somethign not on the list.
=============== Diff against VMMaker.oscog-eem.331 ===============
Item was changed:
----- Method: CogMethodZone>>clearCogCompiledCode (in category 'jit - api') -----
clearCogCompiledCode
"Free all methods"
| cogMethod |
<var: #cogMethod type: #'CogMethod *'>
+ self cppIf: NewspeakVM ifTrue: [unpairedMethodList := nil].
+ cogMethod := coInterpreter cCoerceSimple: baseAddress to: #'CogMethod *'.
+ [cogMethod asUnsignedInteger < mzFreeStart] whileTrue:
- cogMethod := coInterpreter cCoerceSimple: baseAddress to: #'CogMethod *'.
- [cogMethod asUnsignedInteger < mzFreeStart] whileTrue:
[cogMethod cmType = CMMethod ifTrue:
[self freeMethod: cogMethod].
cogMethod := self methodAfter: cogMethod].
self manageFrom: baseAddress to: limitAddress!
Item was changed:
----- Method: CogMethodZone>>removeFromUnpairedMethodList: (in category 'accessing') -----
removeFromUnpairedMethodList: aCogMethod
<var: #aCogMethod type: #'CogMethod *'>
| prevMethod |
<var: #prevMethod type: #'CogMethod *'>
self assert: aCogMethod cmType = CMMethod.
aCogMethod = unpairedMethodList ifTrue:
[unpairedMethodList := aCogMethod nextMethod.
^nil].
prevMethod := unpairedMethodList.
+ [prevMethod notNil] whileTrue:
+ [self assert: (prevMethod ~~ nil and: [prevMethod cmType = CMMethod]).
+ prevMethod nextMethod = aCogMethod ifTrue:
+ [prevMethod nextMethod: aCogMethod nextMethod.
+ ^nil].
+ prevMethod := aCogMethod nextMethod]!
- [self assert: (prevMethod ~~ nil
- and: [prevMethod cmType = CMMethod]).
- prevMethod nextMethod = aCogMethod ifTrue:
- [prevMethod nextMethod: aCogMethod nextMethod.
- ^nil].
- prevMethod := aCogMethod nextMethod.
- true] whileTrue!