diff --git a/js/src/methodjit/InvokeHelpers.cpp b/js/src/methodjit/InvokeHelpers.cpp index 25304b5564c..24153ba1dbc 100644 --- a/js/src/methodjit/InvokeHelpers.cpp +++ b/js/src/methodjit/InvokeHelpers.cpp @@ -523,8 +523,7 @@ js_InternalThrow(VMFrame &f) case JSTRAP_RETURN: cx->clearPendingException(); cx->fp()->setReturnValue(rval); - return JS_FUNC_TO_DATA_PTR(void *, - cx->jaegerCompartment()->forceReturnTrampoline()); + return cx->jaegerCompartment()->forceReturnFromExternC(); case JSTRAP_THROW: cx->setPendingException(rval); @@ -1044,10 +1043,7 @@ RunTracer(VMFrame &f) if (FrameIsFinished(cx)) { if (!HandleFinishedFrame(f, entryFrame)) THROWV(NULL); - - void *retPtr = JS_FUNC_TO_DATA_PTR(void *, - cx->jaegerCompartment()->forceReturnTrampoline()); - *f.returnAddressLocation() = retPtr; + *f.returnAddressLocation() = cx->jaegerCompartment()->forceReturnFromFastCall(); return NULL; } diff --git a/js/src/methodjit/MethodJIT.h b/js/src/methodjit/MethodJIT.h index 32e7f75c7ff..54ae53532cb 100644 --- a/js/src/methodjit/MethodJIT.h +++ b/js/src/methodjit/MethodJIT.h @@ -200,15 +200,17 @@ class JaegerCompartment { activeFrame_ = activeFrame_->previous; } - Trampolines::TrampolinePtr forceReturnTrampoline() const { - return trampolines.forceReturn; + void *forceReturnFromExternC() const { + return JS_FUNC_TO_DATA_PTR(void *, trampolines.forceReturn); } + void *forceReturnFromFastCall() const { #if (defined(JS_NO_FASTCALL) && defined(JS_CPU_X86)) || defined(_WIN64) - Trampolines::TrampolinePtr forceReturnFastTrampoline() const { - return trampolines.forceReturnFast; - } + return JS_FUNC_TO_DATA_PTR(void *, trampolines.forceReturnFast); +#else + return JS_FUNC_TO_DATA_PTR(void *, trampolines.forceReturn); #endif + } }; /* diff --git a/js/src/methodjit/StubCalls.cpp b/js/src/methodjit/StubCalls.cpp index b56a8610e9d..fad8baf6c36 100644 --- a/js/src/methodjit/StubCalls.cpp +++ b/js/src/methodjit/StubCalls.cpp @@ -1178,13 +1178,7 @@ stubs::Debugger(VMFrame &f, jsbytecode *pc) case JSTRAP_RETURN: f.cx->clearPendingException(); f.cx->fp()->setReturnValue(rval); -#if (defined(JS_NO_FASTCALL) && defined(JS_CPU_X86)) || defined(_WIN64) - *f.returnAddressLocation() = JS_FUNC_TO_DATA_PTR(void *, - f.cx->jaegerCompartment()->forceReturnFastTrampoline()); -#else - *f.returnAddressLocation() = JS_FUNC_TO_DATA_PTR(void *, - f.cx->jaegerCompartment()->forceReturnTrampoline()); -#endif + *f.returnAddressLocation() = f.cx->jaegerCompartment()->forceReturnFromFastCall(); break; case JSTRAP_ERROR: @@ -1238,13 +1232,7 @@ stubs::Trap(VMFrame &f, uint32 trapTypes) case JSTRAP_RETURN: f.cx->clearPendingException(); f.cx->fp()->setReturnValue(rval); -#if (defined(JS_NO_FASTCALL) && defined(JS_CPU_X86)) || defined(_WIN64) - *f.returnAddressLocation() = JS_FUNC_TO_DATA_PTR(void *, - f.cx->jaegerCompartment()->forceReturnFastTrampoline()); -#else - *f.returnAddressLocation() = JS_FUNC_TO_DATA_PTR(void *, - f.cx->jaegerCompartment()->forceReturnTrampoline()); -#endif + *f.returnAddressLocation() = f.cx->jaegerCompartment()->forceReturnFromFastCall(); break; case JSTRAP_ERROR: