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

commits at source.squeak.org commits at source.squeak.org
Thu Aug 22 02:23:55 UTC 2013


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!



More information about the Vm-dev mailing list