From 332de746f32edbb3dfc1cd4b39d8c815fd47b28e Mon Sep 17 00:00:00 2001 From: Kai Koehne Date: Tue, 15 Oct 2013 16:48:14 +0200 Subject: Fix undefined reference linker errors with MinGW Make sure the inline methods are defined whereever referenced. This fixes 'undefined reference' errors when linking with MinGW-builds 4.8.2 32 bit posix dwarf rev2. Task-number: QTBUG-34083 Change-Id: Iadc7300634780741be9d97bc889290cd113181e1 Reviewed-by: Allan Sandfeld Jensen --- Source/JavaScriptCore/bytecode/ArrayProfile.cpp | 1 + Source/JavaScriptCore/bytecode/PreciseJumpTargets.cpp | 1 + Source/JavaScriptCore/heap/CopyVisitor.cpp | 1 + Source/JavaScriptCore/runtime/FunctionExecutableDump.cpp | 1 + Source/JavaScriptCore/runtime/JSCellInlines.h | 1 + Source/JavaScriptCore/runtime/StructureInlines.h | 1 + Source/JavaScriptCore/runtime/SymbolTable.cpp | 2 ++ 7 files changed, 8 insertions(+) (limited to 'Source/JavaScriptCore') diff --git a/Source/JavaScriptCore/bytecode/ArrayProfile.cpp b/Source/JavaScriptCore/bytecode/ArrayProfile.cpp index ae3c8f94a..7ea31da10 100644 --- a/Source/JavaScriptCore/bytecode/ArrayProfile.cpp +++ b/Source/JavaScriptCore/bytecode/ArrayProfile.cpp @@ -24,6 +24,7 @@ */ #include "config.h" +#include "JSCellInlines.h" #include "ArrayProfile.h" #include "CodeBlock.h" diff --git a/Source/JavaScriptCore/bytecode/PreciseJumpTargets.cpp b/Source/JavaScriptCore/bytecode/PreciseJumpTargets.cpp index 0cdf51a98..b789da104 100644 --- a/Source/JavaScriptCore/bytecode/PreciseJumpTargets.cpp +++ b/Source/JavaScriptCore/bytecode/PreciseJumpTargets.cpp @@ -24,6 +24,7 @@ */ #include "config.h" +#include "JSCellInlines.h" #include "PreciseJumpTargets.h" namespace JSC { diff --git a/Source/JavaScriptCore/heap/CopyVisitor.cpp b/Source/JavaScriptCore/heap/CopyVisitor.cpp index 281d4bd3b..2e2172f76 100644 --- a/Source/JavaScriptCore/heap/CopyVisitor.cpp +++ b/Source/JavaScriptCore/heap/CopyVisitor.cpp @@ -30,6 +30,7 @@ #include "CopyWorkList.h" #include "GCThreadSharedData.h" #include "JSCell.h" +#include "JSCellInlines.h" #include "JSObject.h" #include diff --git a/Source/JavaScriptCore/runtime/FunctionExecutableDump.cpp b/Source/JavaScriptCore/runtime/FunctionExecutableDump.cpp index 1577ed57a..f4ba3e98c 100644 --- a/Source/JavaScriptCore/runtime/FunctionExecutableDump.cpp +++ b/Source/JavaScriptCore/runtime/FunctionExecutableDump.cpp @@ -24,6 +24,7 @@ */ #include "config.h" +#include "JSCellInlines.h" #include "FunctionExecutableDump.h" namespace JSC { diff --git a/Source/JavaScriptCore/runtime/JSCellInlines.h b/Source/JavaScriptCore/runtime/JSCellInlines.h index 5312cae35..1b2d13ada 100644 --- a/Source/JavaScriptCore/runtime/JSCellInlines.h +++ b/Source/JavaScriptCore/runtime/JSCellInlines.h @@ -32,6 +32,7 @@ #include "JSObject.h" #include "JSString.h" #include "Structure.h" +#include "StructureInlines.h" namespace JSC { diff --git a/Source/JavaScriptCore/runtime/StructureInlines.h b/Source/JavaScriptCore/runtime/StructureInlines.h index 75ca40dd7..8407ca791 100644 --- a/Source/JavaScriptCore/runtime/StructureInlines.h +++ b/Source/JavaScriptCore/runtime/StructureInlines.h @@ -26,6 +26,7 @@ #ifndef StructureInlines_h #define StructureInlines_h +#include "JSGlobalObject.h" #include "PropertyMapHashTable.h" #include "Structure.h" diff --git a/Source/JavaScriptCore/runtime/SymbolTable.cpp b/Source/JavaScriptCore/runtime/SymbolTable.cpp index 8c5a00b03..f70fb4e5b 100644 --- a/Source/JavaScriptCore/runtime/SymbolTable.cpp +++ b/Source/JavaScriptCore/runtime/SymbolTable.cpp @@ -27,6 +27,8 @@ */ #include "config.h" +#include "JSDestructibleObject.h" +#include "JSCellInlines.h" #include "SymbolTable.h" namespace JSC { -- cgit v1.2.1 From 6d6a120fd6d80f8ebae638a118e0727a4b04253b Mon Sep 17 00:00:00 2001 From: Mark Hahnenberg Date: Wed, 16 Oct 2013 16:01:27 +0200 Subject: 32-bit code gen for TypeOf doesn't properly update the AbstractInterpreter state https://bugs.webkit.org/show_bug.cgi?id=119555 Reviewed by Geoffrey Garen. It uses a speculationCheck where it should be using a DFG_TYPE_CHECK like the 64-bit backend does. This was causing crashes on maps.google.com in 32-bit debug builds. * dfg/DFGSpeculativeJIT32_64.cpp: (JSC::DFG::SpeculativeJIT::compile): Change-Id: Icdcfe0719d22df7db6dc7ffcee309b75b63914df git-svn-id: http://svn.webkit.org/repository/webkit/trunk@153793 268f45cc-cd09-0410-ab3c-d52691b4dbfc Reviewed-by: Simon Hausmann --- Source/JavaScriptCore/dfg/DFGSpeculativeJIT32_64.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'Source/JavaScriptCore') diff --git a/Source/JavaScriptCore/dfg/DFGSpeculativeJIT32_64.cpp b/Source/JavaScriptCore/dfg/DFGSpeculativeJIT32_64.cpp index 1d213c6fe..de4ca9674 100644 --- a/Source/JavaScriptCore/dfg/DFGSpeculativeJIT32_64.cpp +++ b/Source/JavaScriptCore/dfg/DFGSpeculativeJIT32_64.cpp @@ -4399,7 +4399,7 @@ void SpeculativeJIT::compile(Node* node) JITCompiler::Jump isNotCell = m_jit.branch32(JITCompiler::NotEqual, tagGPR, JITCompiler::TrustedImm32(JSValue::CellTag)); if (node->child1().useKind() != UntypedUse) - speculationCheck(BadType, JSValueRegs(tagGPR, payloadGPR), node->child1(), isNotCell); + DFG_TYPE_CHECK(JSValueRegs(tagGPR, payloadGPR), node->child1(), SpecCell, isNotCell); if (!node->child1()->shouldSpeculateObject() || node->child1().useKind() == StringUse) { m_jit.loadPtr(JITCompiler::Address(payloadGPR, JSCell::structureOffset()), tempGPR); -- cgit v1.2.1 From 3909ae8f4ee3f21045087865587947d6da510551 Mon Sep 17 00:00:00 2001 From: Allan Sandfeld Jensen Date: Thu, 17 Oct 2013 14:00:45 +0200 Subject: Revert r152209 Revert another fixup patch for one of the commits we reverted in our branch. Change-Id: I423969481d398df7f334ba4fbf2f2e466ff418fb Reviewed-by: Julien Brianceau Reviewed-by: Simon Hausmann --- Source/JavaScriptCore/llint/LowLevelInterpreter.asm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'Source/JavaScriptCore') diff --git a/Source/JavaScriptCore/llint/LowLevelInterpreter.asm b/Source/JavaScriptCore/llint/LowLevelInterpreter.asm index 85917a512..2b5a23c24 100644 --- a/Source/JavaScriptCore/llint/LowLevelInterpreter.asm +++ b/Source/JavaScriptCore/llint/LowLevelInterpreter.asm @@ -118,7 +118,7 @@ const FunctionCode = 2 const LLIntReturnPC = ArgumentCount + TagOffset # String flags. -const HashFlags8BitBuffer = 32 +const HashFlags8BitBuffer = 64 # Copied from PropertyOffset.h const firstOutOfLineOffset = 100 -- cgit v1.2.1 From 2e6916aa0627bd4369366827ef915041df71fee7 Mon Sep 17 00:00:00 2001 From: Julien Brianceau Date: Wed, 16 Oct 2013 16:04:05 +0200 Subject: [arm] Inverted src and dest FP registers in DFG speculative JIT when using hardfp. https://bugs.webkit.org/show_bug.cgi?id=122555 Patch by Julien Brianceau on 2013-10-09 Reviewed by Michael Saboff. * dfg/DFGSpeculativeJIT.h: (JSC::DFG::SpeculativeJIT::appendCallWithExceptionCheckSetResult): (JSC::DFG::SpeculativeJIT::appendCallSetResult): Change-Id: Ib633513948031702efd5ca0d4b89920e99979755 git-svn-id: http://svn.webkit.org/repository/webkit/trunk@157173 268f45cc-cd09-0410-ab3c-d52691b4dbfc Reviewed-by: Allan Sandfeld Jensen --- Source/JavaScriptCore/dfg/DFGSpeculativeJIT.h | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) (limited to 'Source/JavaScriptCore') diff --git a/Source/JavaScriptCore/dfg/DFGSpeculativeJIT.h b/Source/JavaScriptCore/dfg/DFGSpeculativeJIT.h index c6fd0d4d6..54f736600 100644 --- a/Source/JavaScriptCore/dfg/DFGSpeculativeJIT.h +++ b/Source/JavaScriptCore/dfg/DFGSpeculativeJIT.h @@ -1675,13 +1675,15 @@ public: JITCompiler::Call appendCallWithExceptionCheckSetResult(const FunctionPtr& function, FPRReg result) { JITCompiler::Call call = appendCallWithExceptionCheck(function); - m_jit.moveDouble(result, FPRInfo::argumentFPR0); + if (result != InvalidFPRReg) + m_jit.moveDouble(FPRInfo::argumentFPR0, result); return call; } JITCompiler::Call appendCallSetResult(const FunctionPtr& function, FPRReg result) { JITCompiler::Call call = m_jit.appendCall(function); - m_jit.moveDouble(result, FPRInfo::argumentFPR0); + if (result != InvalidFPRReg) + m_jit.moveDouble(FPRInfo::argumentFPR0, result); return call; } #else -- cgit v1.2.1 From 8591d128294798ddff8a2ed8a717ea2645b983a2 Mon Sep 17 00:00:00 2001 From: Julien Brianceau Date: Wed, 16 Oct 2013 16:07:42 +0200 Subject: [sh4] Jump over maxJumpReplacementSize in revertJumpToMove. https://bugs.webkit.org/show_bug.cgi?id=120007 Patch by Julien Brianceau on 2013-10-07 Reviewed by Oliver Hunt. Jump over maxJumpReplacementSize in revertJumpToMove, even if there is no constant value within the area. This patch fixes debug ASSERTs failures for sh4 architecture. * assembler/SH4Assembler.h: (JSC::SH4Assembler::revertJumpToMove): Change-Id: Ice297393b167eace620ace8d8957014f0b3945c8 git-svn-id: http://svn.webkit.org/repository/webkit/trunk@157046 268f45cc-cd09-0410-ab3c-d52691b4dbfc Reviewed-by: Allan Sandfeld Jensen --- Source/JavaScriptCore/assembler/SH4Assembler.h | 14 ++++---------- 1 file changed, 4 insertions(+), 10 deletions(-) (limited to 'Source/JavaScriptCore') diff --git a/Source/JavaScriptCore/assembler/SH4Assembler.h b/Source/JavaScriptCore/assembler/SH4Assembler.h index fded7df89..55f974a29 100644 --- a/Source/JavaScriptCore/assembler/SH4Assembler.h +++ b/Source/JavaScriptCore/assembler/SH4Assembler.h @@ -1545,17 +1545,11 @@ public: insn[0] = getOpcodeGroup3(MOVL_READ_OFFPC_OPCODE, SH4Registers::r13, insn[0] & 0x00ff); insn[1] = (insn[1] & 0xf00f) | (rd << 8) | (SH4Registers::r13 << 4); cacheFlush(insn, 2 * sizeof(SH4Word)); - changePCrelativeAddress(insn[0] & 0x00ff, insn, imm); - return; - } - - if ((insn[0] & 0x00ff) == 1) + } else { insn[1] = getOpcodeGroup6(BRA_OPCODE, 3); - else - insn[1] = NOP_OPCODE; - - insn[2] = NOP_OPCODE; - cacheFlush(&insn[1], 2 * sizeof(SH4Word)); + insn[2] = NOP_OPCODE; + cacheFlush(&insn[1], 2 * sizeof(SH4Word)); + } changePCrelativeAddress(insn[0] & 0x00ff, insn, imm); } -- cgit v1.2.1 From d4a6abc1b18d65a2bd665cdda10cedd97a98c249 Mon Sep 17 00:00:00 2001 From: Allan Sandfeld Jensen Date: Fri, 18 Oct 2013 18:14:17 +0200 Subject: Fix build for boot2qt eAndroid Reverts the removal of Android support in WTF, and brings the support up to date. Merged change to MacroAssemblerARM.cpp from QtScript. Replaces use of statvfs with statfs in one place. Replaces shm-based shared memory with ashmem-based in WebKit2. Change-Id: I440b1fbd94bb4148f7ba764d77de65230d13ed90 Reviewed-by: Simon Hausmann --- Source/JavaScriptCore/assembler/MacroAssemblerARM.cpp | 14 +++++++++++++- Source/JavaScriptCore/tools/CodeProfiling.cpp | 8 ++++---- 2 files changed, 17 insertions(+), 5 deletions(-) (limited to 'Source/JavaScriptCore') diff --git a/Source/JavaScriptCore/assembler/MacroAssemblerARM.cpp b/Source/JavaScriptCore/assembler/MacroAssemblerARM.cpp index 98dc3e987..a523939b7 100644 --- a/Source/JavaScriptCore/assembler/MacroAssemblerARM.cpp +++ b/Source/JavaScriptCore/assembler/MacroAssemblerARM.cpp @@ -36,7 +36,19 @@ #include #include #include -#include +#if !OS(ANDROID) && !PLATFORM(QT) +# include +# else +# include +typedef struct +{ + uint32_t a_type; + union + { + uint32_t a_val; + } a_un; +} Elf32_auxv_t; +# endif #endif namespace JSC { diff --git a/Source/JavaScriptCore/tools/CodeProfiling.cpp b/Source/JavaScriptCore/tools/CodeProfiling.cpp index 740595e3e..f545be903 100644 --- a/Source/JavaScriptCore/tools/CodeProfiling.cpp +++ b/Source/JavaScriptCore/tools/CodeProfiling.cpp @@ -48,7 +48,7 @@ WTF::MetaAllocatorTracker* CodeProfiling::s_tracker = 0; #pragma clang diagnostic ignored "-Wmissing-noreturn" #endif -#if (PLATFORM(MAC) && CPU(X86_64)) || (OS(LINUX) && CPU(X86)) +#if (PLATFORM(MAC) && CPU(X86_64)) || (OS(LINUX) && CPU(X86) && !OS(ANDROID)) // Helper function to start & stop the timer. // Presently we're using the wall-clock timer, since this seems to give the best results. static void setProfileTimer(unsigned usec) @@ -73,7 +73,7 @@ static void profilingTimer(int, siginfo_t*, void* uap) CodeProfiling::sample(reinterpret_cast(context->__ss.__rip), reinterpret_cast(context->__ss.__rbp)); } -#elif OS(LINUX) && CPU(X86) +#elif OS(LINUX) && CPU(X86) && !OS(ANDROID) static void profilingTimer(int, siginfo_t*, void* uap) { mcontext_t context = static_cast(uap)->uc_mcontext; @@ -143,7 +143,7 @@ void CodeProfiling::begin(const SourceCode& source) if (alreadyProfiling) return; -#if (PLATFORM(MAC) && CPU(X86_64)) || (OS(LINUX) && CPU(X86)) +#if (PLATFORM(MAC) && CPU(X86_64)) || (OS(LINUX) && CPU(X86) && !OS(ANDROID)) // Regsiter a signal handler & itimer. struct sigaction action; action.sa_sigaction = reinterpret_cast(profilingTimer); @@ -167,7 +167,7 @@ void CodeProfiling::end() if (s_profileStack) return; -#if (PLATFORM(MAC) && CPU(X86_64)) || (OS(LINUX) && CPU(X86)) +#if (PLATFORM(MAC) && CPU(X86_64)) || (OS(LINUX) && CPU(X86) && !OS(ANDROID)) // Stop profiling setProfileTimer(0); #endif -- cgit v1.2.1 From 92a17ec3ed87d86eee5dbea238bab3c3a00396e0 Mon Sep 17 00:00:00 2001 From: Allan Sandfeld Jensen Date: Wed, 23 Oct 2013 14:24:27 +0200 Subject: Only use 64bit atomics when supported To support Windows XP we must avoid using the 64bit variants of the atomicIncrement/atomicDecrement operations which are only supported from Windows 2003 and up. This patch rolls back the minimum Win32 API version to WinNT 5.1 (32bit WinXP), and adds a new flag to indicate the support of 64bit atomics. The new flag is now also used to support MIPS and other architectures without 64bit intrinsics, instead of hacking in poor support. This also extends the atomic operations to sparc64 which was previously skipped because it did not work with __exchange_and_add. Task-number: QTBUG-34271 Change-Id: I21b09df3cafb7f0987a2f44c89036ff34ed34aa0 Reviewed-by: Jocelyn Turcotte Reviewed-by: Kai Koehne --- Source/JavaScriptCore/config.h | 9 --------- 1 file changed, 9 deletions(-) (limited to 'Source/JavaScriptCore') diff --git a/Source/JavaScriptCore/config.h b/Source/JavaScriptCore/config.h index 4e1d2b91c..a5df3aa7a 100644 --- a/Source/JavaScriptCore/config.h +++ b/Source/JavaScriptCore/config.h @@ -34,15 +34,6 @@ #endif #if OS(WINDOWS) - -#ifndef _WIN32_WINNT -#define _WIN32_WINNT 0x0502 -#endif - -#ifndef WINVER -#define WINVER 0x0502 -#endif - // If we don't define these, they get defined in windef.h. // We want to use std::min and std::max #define max max -- cgit v1.2.1