aboutsummaryrefslogtreecommitdiffstats
path: root/src/qml/jit/qv4assembler_p.h
diff options
context:
space:
mode:
authorSimon Hausmann <simon.hausmann@qt.io>2017-01-17 16:32:47 +0100
committerSimon Hausmann <simon.hausmann@qt.io>2017-01-31 13:40:14 +0000
commit5a65944ce1398e9950a05355344f7054404b6a51 (patch)
tree94d0d55601a4390da89ca8080d4e7605b30dc9ab /src/qml/jit/qv4assembler_p.h
parent7d2811bec813f2323c5af9fc44d15f43d9f21d2a (diff)
Replace ifdefs with templates when loading double constants
Change-Id: I33155d8071d03250edefaf93f769c9629a5f827f Reviewed-by: Lars Knoll <lars.knoll@qt.io>
Diffstat (limited to 'src/qml/jit/qv4assembler_p.h')
-rw-r--r--src/qml/jit/qv4assembler_p.h25
1 files changed, 15 insertions, 10 deletions
diff --git a/src/qml/jit/qv4assembler_p.h b/src/qml/jit/qv4assembler_p.h
index 814ab67698..73e5243a20 100644
--- a/src/qml/jit/qv4assembler_p.h
+++ b/src/qml/jit/qv4assembler_p.h
@@ -160,6 +160,11 @@ struct RegisterSizeDependentAssembler<JITAssembler, MacroAssembler, TargetPlatfo
as->storeDouble(TargetPlatform::FPGpr0, destination);
}
+ static void loadDoubleConstant(JITAssembler *as, IR::Const *c, FPRegisterID target)
+ {
+ as->MacroAssembler::loadDouble(as->loadConstant(c, TargetPlatform::ScratchRegister), target);
+ }
+
static void storeReturnValue(JITAssembler *as, FPRegisterID dest)
{
as->moveIntsToDouble(TargetPlatform::LowReturnValueRegister, TargetPlatform::HighReturnValueRegister, dest, TargetPlatform::FPGpr0);
@@ -250,6 +255,15 @@ struct RegisterSizeDependentAssembler<JITAssembler, MacroAssembler, TargetPlatfo
as->storeReturnValue(destination);
}
+ static void loadDoubleConstant(JITAssembler *as, IR::Const *c, FPRegisterID target)
+ {
+ Q_STATIC_ASSERT(sizeof(int64_t) == sizeof(double));
+ int64_t i;
+ memcpy(&i, &c->value, sizeof(double));
+ as->move(TrustedImm64(i), TargetPlatform::ReturnValueRegister);
+ as->move64ToDouble(TargetPlatform::ReturnValueRegister, target);
+ }
+
static void generateCJumpOnCompare(JITAssembler *as,
RelationalCondition cond,
RegisterID left,
@@ -294,7 +308,6 @@ public:
using MacroAssembler::move;
using MacroAssembler::jump;
#ifdef QV4_USE_64_BIT_VALUE_ENCODING
- using MacroAssembler::move64ToDouble;
using MacroAssembler::load64;
#endif
using MacroAssembler::add32;
@@ -1172,15 +1185,7 @@ public:
FPRegisterID toDoubleRegister(IR::Expr *e, FPRegisterID target = FPGpr0)
{
if (IR::Const *c = e->asConst()) {
-#ifdef QV4_USE_64_BIT_VALUE_ENCODING
- Q_STATIC_ASSERT(sizeof(int64_t) == sizeof(double));
- int64_t i;
- memcpy(&i, &c->value, sizeof(double));
- move(TrustedImm64(i), ReturnValueRegister);
- move64ToDouble(ReturnValueRegister, target);
-#else
- MacroAssembler::loadDouble(loadConstant(c, ScratchRegister), target);
-#endif
+ RegisterSizeDependentOps::loadDoubleConstant(this, c, target);
return target;
}