aboutsummaryrefslogtreecommitdiffstats
path: root/src/qml/jit/qv4isel_masm.cpp
diff options
context:
space:
mode:
authorSimon Hausmann <simon.hausmann@qt.io>2017-02-06 10:57:36 +0100
committerSimon Hausmann <simon.hausmann@qt.io>2017-02-06 18:09:26 +0000
commit9e926ddbf985f8d41747ae8a89ee3752a11011e4 (patch)
tree61864cc3a79e046b220040bfb264d79bfc4a0024 /src/qml/jit/qv4isel_masm.cpp
parentf89e7596b76ea4d3444f187e425ce7fec9d3a635 (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.cpp34
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>