[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