diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/qml/jit/qv4assembler_p.h | 12 | ||||
-rw-r--r-- | src/qml/jit/qv4isel_masm.cpp | 8 |
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> |