[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