From e62a61cdbc22dcf0dd2c6c8c22b06be897577ec0 Mon Sep 17 00:00:00 2001 From: Erik Verbruggen Date: Wed, 25 Sep 2013 11:58:03 +0200 Subject: [PATCH] V4 JIT: optimize constant-to-register loading. Change-Id: I02e3cdd5f9a68fbf6bfd7805c385d807b344155b Reviewed-by: Lars Knoll --- src/qml/compiler/qv4isel_masm_p.h | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/src/qml/compiler/qv4isel_masm_p.h b/src/qml/compiler/qv4isel_masm_p.h index 86a4dd6..a9355bd 100644 --- a/src/qml/compiler/qv4isel_masm_p.h +++ b/src/qml/compiler/qv4isel_masm_p.h @@ -1224,9 +1224,12 @@ public: { if (V4IR::Const *c = e->asConst()) { #if QT_POINTER_SIZE == 8 - load64(constantTable().loadValueAddress(c, ScratchRegister), ReturnValueRegister); - move(TrustedImm64(QV4::Value::NaNEncodeMask), ScratchRegister); - xor64(ScratchRegister, ReturnValueRegister); + union { + double d; + int64_t i; + } u; + u.d = c->value; + move(TrustedImm64(u.i), ReturnValueRegister); move64ToDouble(ReturnValueRegister, target); #else JSC::MacroAssembler::loadDouble(constantTable().loadValueAddress(c, ScratchRegister), target); -- 2.7.4