[Vm-dev] Missing method in VMMaker-oscog-IgorStasenko.122
Dimitry Golubovsky
golubovsky at gmail.com
Fri Aug 26 02:11:18 UTC 2011
Hi,
Stack interpreter does not compile because the method
noInlineTemporary: offset in: theFP
defined only in CoIntepreter, yet it is called from StackInterpreter:
------------------------------------------------------------------------------------------
stObject: array at: index
"Return what ST would return for <obj> at: index."
| hdr fmt totalLength fixedFields stSize |
<inline: false>
hdr := objectMemory baseHeader: array.
fmt := objectMemory formatOfHeader: hdr.
totalLength := objectMemory lengthOf: array baseHeader: hdr format: fmt.
fixedFields := objectMemory fixedFieldsOf: array format: fmt length:
totalLength.
(fmt = 3 and: [self isContextHeader: hdr])
ifTrue:
[stSize := self fetchStackPointerOf: array.
((self oop: index isGreaterThanOrEqualTo: 1)
and: [(self oop: index isLessThanOrEqualTo: stSize)
and: [self isStillMarriedContext: array]]) ifTrue:
[^self noInlineTemporary: index - 1 in: (self
frameOfMarriedContext: array)]] " <---- here"
ifFalse: [stSize := totalLength - fixedFields].
((self oop: index isGreaterThanOrEqualTo: 1)
and: [self oop: index isLessThanOrEqualTo: stSize])
ifTrue: [^self subscript: array with: (index + fixedFields) format: fmt]
ifFalse: [self primitiveFailFor: PrimErrBadIndex. ^ 0]
------------------------------------------------------------------------------------------
Thanks.
--
Dimitry Golubovsky
Anywhere on the Web
More information about the Vm-dev
mailing list