summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAllan Sandfeld Jensen <allan.jensen@digia.com>2014-10-14 16:33:13 +0200
committerAllan Sandfeld Jensen <allan.jensen@digia.com>2014-10-15 11:26:22 +0200
commit84fb07ce1b9fb9c44ff5d50b195654d11ccf8763 (patch)
treed86670054a53818da5c0c938c068874171cdf623
parentf4f6ca3c19dcea8160044b0aec87e59bfaf8d5c5 (diff)
downloadqtwebkit-84fb07ce1b9fb9c44ff5d50b195654d11ccf8763.tar.gz
Fix LLInt vector offsets on Windows 64
Derived classes on Windows x64 are 64bit aligned placing the m_size property of Vector slightly differently than on other platforms. Change-Id: I186de5ea200abfbdd3bdf7502f3f427cb6890f3c Reviewed-by: Jocelyn Turcotte <jocelyn.turcotte@digia.com>
-rw-r--r--Source/JavaScriptCore/llint/LLIntData.cpp4
-rw-r--r--Source/JavaScriptCore/llint/LLIntOfflineAsmConfig.h6
-rw-r--r--Source/JavaScriptCore/llint/LowLevelInterpreter.asm4
3 files changed, 13 insertions, 1 deletions
diff --git a/Source/JavaScriptCore/llint/LLIntData.cpp b/Source/JavaScriptCore/llint/LLIntData.cpp
index f91da9c0a..f1e367510 100644
--- a/Source/JavaScriptCore/llint/LLIntData.cpp
+++ b/Source/JavaScriptCore/llint/LLIntData.cpp
@@ -116,7 +116,11 @@ void Data::performAssertions(VM& vm)
#if !ASSERT_DISABLED
Vector<int> testVector;
testVector.resize(42);
+#if USE(JSVALUE64) && OS(WINDOWS)
+ ASSERT(bitwise_cast<uint32_t*>(&testVector)[4] == 42);
+#else
ASSERT(bitwise_cast<uint32_t*>(&testVector)[sizeof(void*)/sizeof(uint32_t) + 1] == 42);
+#endif
ASSERT(bitwise_cast<int**>(&testVector)[0] == testVector.begin());
#endif
diff --git a/Source/JavaScriptCore/llint/LLIntOfflineAsmConfig.h b/Source/JavaScriptCore/llint/LLIntOfflineAsmConfig.h
index bad62ddf8..9010757b4 100644
--- a/Source/JavaScriptCore/llint/LLIntOfflineAsmConfig.h
+++ b/Source/JavaScriptCore/llint/LLIntOfflineAsmConfig.h
@@ -104,6 +104,12 @@
#define OFFLINE_ASM_JSVALUE64 0
#endif
+#if USE(JSVALUE64) && OS(WINDOWS)
+#define OFFLINE_ASM_WIN64 1
+#else
+#define OFFLINE_ASM_WIN64 0
+#endif
+
#if !ASSERT_DISABLED
#define OFFLINE_ASM_ASSERT_ENABLED 1
#else
diff --git a/Source/JavaScriptCore/llint/LowLevelInterpreter.asm b/Source/JavaScriptCore/llint/LowLevelInterpreter.asm
index c4d86ee3f..22ba11164 100644
--- a/Source/JavaScriptCore/llint/LowLevelInterpreter.asm
+++ b/Source/JavaScriptCore/llint/LowLevelInterpreter.asm
@@ -161,7 +161,9 @@ end
# This must match wtf/Vector.h
const VectorBufferOffset = 0
-if JSVALUE64
+if WIN64
+ const VectorSizeOffset = 16
+elsif JSVALUE64
const VectorSizeOffset = 12
else
const VectorSizeOffset = 8