diff options
author | Allan Sandfeld Jensen <allan.jensen@digia.com> | 2014-10-14 16:33:13 +0200 |
---|---|---|
committer | Allan Sandfeld Jensen <allan.jensen@digia.com> | 2014-10-15 11:26:22 +0200 |
commit | 84fb07ce1b9fb9c44ff5d50b195654d11ccf8763 (patch) | |
tree | d86670054a53818da5c0c938c068874171cdf623 /Source/JavaScriptCore | |
parent | f4f6ca3c19dcea8160044b0aec87e59bfaf8d5c5 (diff) | |
download | qtwebkit-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>
Diffstat (limited to 'Source/JavaScriptCore')
-rw-r--r-- | Source/JavaScriptCore/llint/LLIntData.cpp | 4 | ||||
-rw-r--r-- | Source/JavaScriptCore/llint/LLIntOfflineAsmConfig.h | 6 | ||||
-rw-r--r-- | Source/JavaScriptCore/llint/LowLevelInterpreter.asm | 4 |
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 |