diff options
author | Simon Hausmann <simon.hausmann@qt.io> | 2017-02-06 10:57:36 +0100 |
---|---|---|
committer | Simon Hausmann <simon.hausmann@qt.io> | 2017-02-06 18:09:26 +0000 |
commit | 9e926ddbf985f8d41747ae8a89ee3752a11011e4 (patch) | |
tree | 61864cc3a79e046b220040bfb264d79bfc4a0024 /src/qml/jit/qv4isel_masm.cpp | |
parent | f89e7596b76ea4d3444f187e425ce7fec9d3a635 (diff) |
Eliminate VALUE_FITS_IN_REGISTER #ifdef
These macros do not apply anymore when cross-compiling. This patch
replaces the macro use for locals JS stack initialization with register
size dependent operations as well as when loading the this object into a
stack slot.
Change-Id: Ia986f6dbfa37c6d6ce2f1de6253e7008e4aa87dd
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
Diffstat (limited to 'src/qml/jit/qv4isel_masm.cpp')
-rw-r--r-- | src/qml/jit/qv4isel_masm.cpp | 34 |
1 files changed, 2 insertions, 32 deletions
diff --git a/src/qml/jit/qv4isel_masm.cpp b/src/qml/jit/qv4isel_masm.cpp index b1134d2bec..11e1c6c726 100644 --- a/src/qml/jit/qv4isel_masm.cpp +++ b/src/qml/jit/qv4isel_masm.cpp @@ -120,31 +120,7 @@ void InstructionSelection<JITAssembler>::run(int functionIndex) _as->loadPtr(addressForArgument(0), JITTargetPlatform::EngineRegister); #endif - const int locals = _as->stackLayout().calculateJSStackFrameSize(); - if (locals > 0) { - _as->loadPtr(Address(JITTargetPlatform::EngineRegister, qOffsetOf(ExecutionEngine, jsStackTop)), JITTargetPlatform::LocalsRegister); -#ifdef VALUE_FITS_IN_REGISTER - _as->move(TrustedImm64(0), JITTargetPlatform::ReturnValueRegister); - _as->move(TrustedImm32(locals), JITTargetPlatform::ScratchRegister); - Label loop = _as->label(); - _as->store64(JITTargetPlatform::ReturnValueRegister, Address(JITTargetPlatform::LocalsRegister)); - _as->add64(TrustedImm32(8), JITTargetPlatform::LocalsRegister); - Jump jump = _as->branchSub32(ResultCondition::NonZero, TrustedImm32(1), JITTargetPlatform::ScratchRegister); - jump.linkTo(loop, _as); -#else - _as->move(TrustedImm32(0), JITTargetPlatform::ReturnValueRegister); - _as->move(TrustedImm32(locals), JITTargetPlatform::ScratchRegister); - Label loop = _as->label(); - _as->store32(JITTargetPlatform::ReturnValueRegister, Address(JITTargetPlatform::LocalsRegister)); - _as->add32(TrustedImm32(4), JITTargetPlatform::LocalsRegister); - _as->store32(JITTargetPlatform::ReturnValueRegister, Address(JITTargetPlatform::LocalsRegister)); - _as->add32(TrustedImm32(4), JITTargetPlatform::LocalsRegister); - Jump jump = _as->branchSub32(ResultCondition::NonZero, TrustedImm32(1), JITTargetPlatform::ScratchRegister); - jump.linkTo(loop, _as); -#endif - _as->storePtr(JITTargetPlatform::LocalsRegister, Address(JITTargetPlatform::EngineRegister, qOffsetOf(ExecutionEngine, jsStackTop))); - } - + _as->initializeLocalVariables(); int lastLine = 0; for (int i = 0, ei = _function->basicBlockCount(); i != ei; ++i) { @@ -474,13 +450,7 @@ void InstructionSelection<JITAssembler>::loadThisObject(IR::Expr *temp) { _as->loadPtr(Address(JITTargetPlatform::EngineRegister, qOffsetOf(QV4::ExecutionEngine, current)), JITTargetPlatform::ScratchRegister); _as->loadPtr(Address(JITTargetPlatform::ScratchRegister, qOffsetOf(ExecutionContext::Data, callData)), JITTargetPlatform::ScratchRegister); -#if defined(VALUE_FITS_IN_REGISTER) - _as->load64(Pointer(JITTargetPlatform::ScratchRegister, qOffsetOf(CallData, thisObject)), - JITTargetPlatform::ReturnValueRegister); - _as->storeReturnValue(temp); -#else - _as->copyValue(temp, Pointer(JITTargetPlatform::ScratchRegister, qOffsetOf(CallData, thisObject))); -#endif + _as->copyValue(temp, Address(JITTargetPlatform::ScratchRegister, qOffsetOf(CallData, thisObject))); } template <typename JITAssembler> |