On 3/23/15 1:12 AM, Jan de Mooij wrote:
Ok, I just tried this on x86 and 2704 is the dynamic slot offset of your
"i" or "j" Value, they are stored in slots on the global object, not on the
stack (the offset seemed pretty big for a stack slot..)

I see (r1 is the stack pointer on Power).

So the relevant code is CodeGenerator::visitLoadSlotT and
CodeGenerator::visitStoreSlotT. The MacroAssembler's loadUnboxedValue
method probably has to add the payload offset, at least our x86/x64/arm
implementations aren't doing that..

That makes sense and is straightforward enough to add. But how is the store already correct? My storeUnboxedValue doesn't have an offset. Did this get picked up somewhere else?

That said, it still asserts without the change. What does the assertion

Assertion failure: safepoint->hasNunboxPayload(alloc)

actually mean? Do I need to change something else? The value slot is 8, but payload()->toStackSlot->slot() returns 4. (On PPC we're storing the return address at offset 0, same as x86, so payload()->toStackSlot->slot() is pointing at the type also.)

Thanks very much,
Cameron Kaiser


_______________________________________________
dev-tech-js-engine-internals mailing list
dev-tech-js-engine-internals@lists.mozilla.org
https://lists.mozilla.org/listinfo/dev-tech-js-engine-internals

Reply via email to