The Bataan death march towards a PowerPC Ion backend continues unabated (though IonPower does now run 50% of V8 with --ion-eager --ion-offthread-compile=off, which I consider a hardwon achievement). However, I'm puzzling over this code in CodeGenerator.cpp:


  3882     // Check that we have a valid GC pointer.

  3883     saveVolatile();

  3884

  3885     masm.pushValue(input);

  3886     masm.moveStackPtrTo(temp1);

  3887

  3888     masm.setupUnalignedABICall(2, temp2);

  3889     masm.loadJSContext(temp2);

  3890     masm.passABIArg(temp2);

  3891     masm.passABIArg(temp1);

  3892     masm.callWithABI(JS_FUNC_TO_DATA_PTR(void*, AssertValidValue));

  3893     masm.popValue(input);

  3894     restoreVolatile();


If input is in volatile registers, wouldn't the restoreVolatile at line 3894 clobber it? Or am I misunderstanding this? I reworked this to move the result into temporary registers restoreVolatile doesn't know about, but I have the luxury of 32 GPRs.

I can file the bug (though the proper fix would be to fix saveVolatile/restoreVolatile to know about ValueOperands), just wanted to make sure I wasn't going crazy.

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