diff options
Diffstat (limited to 'src/qml/jit/qv4assembler_p.h')
-rw-r--r-- | src/qml/jit/qv4assembler_p.h | 21 |
1 files changed, 11 insertions, 10 deletions
diff --git a/src/qml/jit/qv4assembler_p.h b/src/qml/jit/qv4assembler_p.h index 1de7da37b4..a4105550c6 100644 --- a/src/qml/jit/qv4assembler_p.h +++ b/src/qml/jit/qv4assembler_p.h @@ -101,27 +101,27 @@ struct ExceptionCheck { }; // push_catch and pop context methods shouldn't check for exceptions template <> -struct ExceptionCheck<QV4::ExecutionContext *(*)(QV4::ExecutionContext *)> { +struct ExceptionCheck<void (*)(QV4::ExecutionEngine *)> { enum { NeedsCheck = 0 }; }; template <typename A> -struct ExceptionCheck<QV4::ExecutionContext *(*)(QV4::ExecutionContext *, A)> { +struct ExceptionCheck<void (*)(A, QV4::NoThrowEngine)> { enum { NeedsCheck = 0 }; }; template <> -struct ExceptionCheck<QV4::ReturnedValue (*)(QV4::NoThrowContext *)> { +struct ExceptionCheck<QV4::ReturnedValue (*)(QV4::NoThrowEngine *)> { enum { NeedsCheck = 0 }; }; template <typename A> -struct ExceptionCheck<QV4::ReturnedValue (*)(QV4::NoThrowContext *, A)> { +struct ExceptionCheck<QV4::ReturnedValue (*)(QV4::NoThrowEngine *, A)> { enum { NeedsCheck = 0 }; }; template <typename A, typename B> -struct ExceptionCheck<QV4::ReturnedValue (*)(QV4::NoThrowContext *, A, B)> { +struct ExceptionCheck<QV4::ReturnedValue (*)(QV4::NoThrowEngine *, A, B)> { enum { NeedsCheck = 0 }; }; template <typename A, typename B, typename C> -struct ExceptionCheck<void (*)(QV4::NoThrowContext *, A, B, C)> { +struct ExceptionCheck<void (*)(QV4::NoThrowEngine *, A, B, C)> { enum { NeedsCheck = 0 }; }; @@ -797,8 +797,7 @@ public: const RegisterInformation &fpRegistersToSave); void checkException() { - loadPtr(Address(ContextRegister, qOffsetOf(QV4::Heap::ExecutionContext, engine)), ScratchRegister); - load32(Address(ScratchRegister, qOffsetOf(QV4::ExecutionEngine, hasException)), ScratchRegister); + load32(Address(EngineRegister, qOffsetOf(QV4::ExecutionEngine, hasException)), ScratchRegister); Jump exceptionThrown = branch32(NotEqual, ScratchRegister, TrustedImm32(0)); if (catchBlock) addPatch(catchBlock, exceptionThrown); @@ -1226,7 +1225,8 @@ template <typename T> inline bool prepareCall(T &, Assembler *) template <> inline bool prepareCall(RelativeCall &relativeCall, Assembler *as) { - as->loadPtr(Assembler::Address(Assembler::ContextRegister, qOffsetOf(QV4::Heap::ExecutionContext, lookups)), + as->loadPtr(Assembler::Address(Assembler::EngineRegister, qOffsetOf(QV4::ExecutionEngine, current)), Assembler::ScratchRegister); + as->loadPtr(Assembler::Address(Assembler::ScratchRegister, qOffsetOf(QV4::Heap::ExecutionContext, lookups)), relativeCall.addr.base); return true; } @@ -1236,7 +1236,8 @@ template <> inline bool prepareCall(LookupCall &lookupCall, Assembler *as) // IMPORTANT! See generateLookupCall in qv4isel_masm_p.h for details! // same as prepareCall(RelativeCall ....) : load the table from the context - as->loadPtr(Assembler::Address(Assembler::ContextRegister, qOffsetOf(QV4::Heap::ExecutionContext, lookups)), + as->loadPtr(Assembler::Address(Assembler::EngineRegister, qOffsetOf(QV4::ExecutionEngine, current)), Assembler::ScratchRegister); + as->loadPtr(Assembler::Address(Assembler::ScratchRegister, qOffsetOf(QV4::Heap::ExecutionContext, lookups)), lookupCall.addr.base); // pre-calculate the indirect address for the lookupCall table: if (lookupCall.addr.offset) |