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

commits at source.squeak.org commits at source.squeak.org
Thu Jan 23 00:59:02 UTC 2014


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

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

Name: VMMaker.oscog-eem.590
Author: eem
Time: 22 January 2014, 4:55:18.788 pm
UUID: 8f6d2060-b948-464c-89d9-341f775e8662
Ancestors: VMMaker.oscog-eem.589

Fix CoInterpreter's validInstructionPointer

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

Item was changed:
  ----- Method: CoInterpreter>>validInstructionPointer:inMethod:framePointer: (in category 'debug support') -----
  validInstructionPointer: instrPointer inMethod: aMethod framePointer: fp
  	<var: #instrPointer type: #usqInt>
  	<var: #aMethod type: #usqInt>
  	<var: #fp type: #'char *'>
  	| theInstrPointer cogMethod |
  	<var: #theInstrPointer type: #usqInt>
  	<var: #cogMethod type: #'CogMethod *'>
  	instrPointer = cogit ceCannotResumePC ifTrue:
  		[^self isMachineCodeFrame: fp].
  	instrPointer = cogit ceReturnToInterpreterPC
  		ifTrue:
  			[(self isMachineCodeFrame: fp) ifTrue:
  				[^false].
  			 theInstrPointer := self iframeSavedIP: fp]
  		ifFalse:
+ 			[theInstrPointer := instrPointer + 1.
- 			[theInstrPointer := instrPointer.
  			self cppIf: NewspeakVM
  				ifTrue:
  					[(self isMachineCodeFrame: fp) ifTrue:
  						[cogMethod := self mframeHomeMethod: fp.
  						 ^theInstrPointer >= (cogMethod asUnsignedInteger + (cogit sizeof: CogMethod))
  						   and: [theInstrPointer < (cogMethod asUnsignedInteger + cogMethod blockSize)]]]
  				ifFalse:
  					[| header |
  					 header := self rawHeaderOf: aMethod.
  					 ((self isCogMethodReference: header)
  					   and: [theInstrPointer < objectMemory startOfMemory]) ifTrue:
  					 	[cogMethod := self cCoerceSimple: header to: #'CogMethod *'.
  					 	 ^theInstrPointer >= (header + (cogit sizeof: CogMethod))
  					 	 and: [theInstrPointer < (header + cogMethod blockSize)]]]].
  	^super validInstructionPointer: theInstrPointer inMethod: aMethod framePointer: fp!



More information about the Vm-dev mailing list