aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/qml/jit/qv4assembler_p.h12
-rw-r--r--src/qml/jit/qv4isel_masm.cpp8
2 files changed, 13 insertions, 7 deletions
diff --git a/src/qml/jit/qv4assembler_p.h b/src/qml/jit/qv4assembler_p.h
index ff3f287c8d..f063593ecf 100644
--- a/src/qml/jit/qv4assembler_p.h
+++ b/src/qml/jit/qv4assembler_p.h
@@ -287,6 +287,13 @@ struct RegisterSizeDependentAssembler<JITAssembler, MacroAssembler, TargetPlatfo
intDone.link(as);
}
+
+ static void loadManagedPointer(JITAssembler *as, RegisterID registerWithPtr, Pointer destAddr)
+ {
+ as->store32(registerWithPtr, destAddr);
+ destAddr.offset += 4;
+ as->store32(TrustedImm32(QV4::Value::Managed_Type_Internal_32), destAddr);
+ }
};
template <typename JITAssembler, typename MacroAssembler, typename TargetPlatform>
@@ -486,6 +493,11 @@ struct RegisterSizeDependentAssembler<JITAssembler, MacroAssembler, TargetPlatfo
as->storeInt32(TargetPlatform::ReturnValueRegister, target);
}
}
+
+ static void loadManagedPointer(JITAssembler *as, RegisterID registerWithPtr, Pointer destAddr)
+ {
+ as->store64(registerWithPtr, destAddr);
+ }
};
template <typename TargetConfiguration>
diff --git a/src/qml/jit/qv4isel_masm.cpp b/src/qml/jit/qv4isel_masm.cpp
index dcb10f95a2..7a051067f3 100644
--- a/src/qml/jit/qv4isel_masm.cpp
+++ b/src/qml/jit/qv4isel_masm.cpp
@@ -535,13 +535,7 @@ void InstructionSelection<JITAssembler>::loadString(const QString &str, IR::Expr
Pointer srcAddr = _as->loadStringAddress(JITTargetPlatform::ReturnValueRegister, str);
_as->loadPtr(srcAddr, JITTargetPlatform::ReturnValueRegister);
Pointer destAddr = _as->loadAddress(JITTargetPlatform::ScratchRegister, target);
-#ifdef QV4_USE_64_BIT_VALUE_ENCODING
- _as->store64(JITTargetPlatform::ReturnValueRegister, destAddr);
-#else
- _as->store32(JITTargetPlatform::ReturnValueRegister, destAddr);
- destAddr.offset += 4;
- _as->store32(TrustedImm32(QV4::Value::Managed_Type_Internal), destAddr);
-#endif
+ JITAssembler::RegisterSizeDependentOps::loadManagedPointer(_as, JITTargetPlatform::ReturnValueRegister, destAddr);
}
template <typename JITAssembler>