From 84fb07ce1b9fb9c44ff5d50b195654d11ccf8763 Mon Sep 17 00:00:00 2001 From: Allan Sandfeld Jensen Date: Tue, 14 Oct 2014 16:33:13 +0200 Subject: 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 --- Source/JavaScriptCore/llint/LLIntData.cpp | 4 ++++ Source/JavaScriptCore/llint/LLIntOfflineAsmConfig.h | 6 ++++++ Source/JavaScriptCore/llint/LowLevelInterpreter.asm | 4 +++- 3 files changed, 13 insertions(+), 1 deletion(-) (limited to 'Source/JavaScriptCore') 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 testVector; testVector.resize(42); +#if USE(JSVALUE64) && OS(WINDOWS) + ASSERT(bitwise_cast(&testVector)[4] == 42); +#else ASSERT(bitwise_cast(&testVector)[sizeof(void*)/sizeof(uint32_t) + 1] == 42); +#endif ASSERT(bitwise_cast(&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 -- cgit v1.2.1