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

commits at source.squeak.org commits at source.squeak.org
Tue Oct 4 14:43:27 UTC 2011


Eliot Miranda uploaded a new version of VMMaker to project VM Maker:
http://source.squeak.org/VMMaker/VMMaker.oscog-eem.132.mcz

==================== Summary ====================

Name: VMMaker.oscog-eem.132
Author: eem
Time: 4 October 2011, 7:41:37.687 am
UUID: bd35186a-b5f6-490a-ad8b-2a9c487674fa
Ancestors: VMMaker.oscog-eem.131

Fix yet another slip in Cogit>>lookup:for:methodAndErrorSelectorInto:
for cannotInterpret: cases.  Fixes Mariano's crash as of 2011/10/03.

=============== Diff against VMMaker.oscog-eem.131 ===============

Item was changed:
  ----- Method: Cogit>>lookup:for:methodAndErrorSelectorInto: (in category 'in-line cacheing') -----
  lookup: selector for: receiver methodAndErrorSelectorInto: binaryBlock
+ 	"Lookup selector in the class of receiver.  If found, evaluate binaryBlock with the
+ 	 method, cogged if appropriate..  If not found, due to MNU, lookup the DNU selector
+ 	 and evaluate binaryBlock with the MNU method, cogged if appropriate..  If not found
+ 	 due to cannot interpret, evaluate binaryBlock with a nil method and the error selector."
- 	"Lookup selector in the class of receiver.  If found, evaluate binaryBlock with
- 	 the method, cogged if appropriate..  If not found, due to MNU, lookup the DNU
- 	 selector and evaluate binaryBlock with the MNU method, cogged if appropriate..
- 	 If not found due to cannot interpret, evaluate binaryBlock with the error selector
- 	 and a nil method."
  	| methodOrSelectorIndex |
  	<inline: true>
  	methodOrSelectorIndex := coInterpreter
  									lookup: selector
  									receiver: receiver.
  	methodOrSelectorIndex asUnsignedInteger > objectMemory startOfMemory ifTrue:
  		[(objectMemory isOopCompiledMethod: methodOrSelectorIndex) ifFalse:
  			[^binaryBlock value: methodOrSelectorIndex value: SelectorCannotInterpret].
  		 ((coInterpreter methodHasCogMethod: methodOrSelectorIndex) not
  		  and: [coInterpreter methodShouldBeCogged: methodOrSelectorIndex]) ifTrue:
  			["We assume cog:selector: will *not* reclaim the method zone"
  			 self cog: methodOrSelectorIndex selector: selector].
  		^binaryBlock value: methodOrSelectorIndex value: nil].
  	methodOrSelectorIndex = SelectorDoesNotUnderstand ifTrue:
  		[methodOrSelectorIndex := coInterpreter
  										lookup: (objectMemory splObj: SelectorDoesNotUnderstand)
  										receiver: receiver.
  		 methodOrSelectorIndex asUnsignedInteger > objectMemory startOfMemory ifTrue:
  			[self assert: (objectMemory isOopCompiledMethod: methodOrSelectorIndex).
  			 ((coInterpreter methodHasCogMethod: methodOrSelectorIndex) not
  			  and: [coInterpreter methodShouldBeCogged: methodOrSelectorIndex]) ifTrue:
  				["We assume cog:selector: will *not* reclaim the method zone"
  				 self cog: methodOrSelectorIndex selector: selector].
+ 			^binaryBlock value: methodOrSelectorIndex value: SelectorDoesNotUnderstand].
+ 		^binaryBlock value: nil value: SelectorDoesNotUnderstand].
+ 	^binaryBlock value: nil value: methodOrSelectorIndex!
- 			^binaryBlock value: methodOrSelectorIndex value: SelectorDoesNotUnderstand]].
- 	^binaryBlock value: methodOrSelectorIndex value: nil!



More information about the Vm-dev mailing list