aboutsummaryrefslogtreecommitdiffstats
path: root/src/qml
diff options
context:
space:
mode:
authorErik Verbruggen <erik.verbruggen@digia.com>2016-01-15 11:34:21 +0100
committerErik Verbruggen <erik.verbruggen@theqtcompany.com>2016-01-20 09:10:32 +0000
commitb2a49880317d66418c7d7a6be2e8eee515155213 (patch)
treef1495f7958d7c7a5afd457c8865bb0a4037d7bfa /src/qml
parent68beab39a76d567e153e631838a067db8fb7a7c4 (diff)
Remove a case of type-punning.
This is officially undefined behavior. Change-Id: I74d7d7d6cf6a774bc6f90c5a0362ce5ba07768f8 Reviewed-by: Simon Hausmann <simon.hausmann@theqtcompany.com> Reviewed-by: Lars Knoll <lars.knoll@theqtcompany.com>
Diffstat (limited to 'src/qml')
-rw-r--r--src/qml/jit/qv4assembler_p.h10
1 files changed, 4 insertions, 6 deletions
diff --git a/src/qml/jit/qv4assembler_p.h b/src/qml/jit/qv4assembler_p.h
index e175acbecd..a5028bc683 100644
--- a/src/qml/jit/qv4assembler_p.h
+++ b/src/qml/jit/qv4assembler_p.h
@@ -1084,12 +1084,10 @@ public:
{
if (IR::Const *c = e->asConst()) {
#ifdef QV4_USE_64_BIT_VALUE_ENCODING
- union {
- double d;
- int64_t i;
- } u;
- u.d = c->value;
- move(TrustedImm64(u.i), ReturnValueRegister);
+ 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
JSC::MacroAssembler::loadDouble(constantTable().loadValueAddress(c, ScratchRegister), target);