Date: Tuesday, May 9, 2017 @ 21:03:05 Author: heftig Revision: 295511
archrelease: copy trunk to extra-i686, extra-x86_64 Added: webkit2gtk/repos/extra-i686/PKGBUILD (from rev 295510, webkit2gtk/trunk/PKGBUILD) webkit2gtk/repos/extra-i686/icu59.patch (from rev 295510, webkit2gtk/trunk/icu59.patch) webkit2gtk/repos/extra-x86_64/PKGBUILD (from rev 295510, webkit2gtk/trunk/PKGBUILD) webkit2gtk/repos/extra-x86_64/icu59.patch (from rev 295510, webkit2gtk/trunk/icu59.patch) Deleted: webkit2gtk/repos/extra-i686/0001-Merge-r214319-JSC-MachineThreads-does-not-consider-s.patch webkit2gtk/repos/extra-i686/0001-Show-a-log-message-when-an-invalid-message-is-receiv.patch webkit2gtk/repos/extra-i686/PKGBUILD webkit2gtk/repos/extra-i686/icu59.patch webkit2gtk/repos/extra-x86_64/0001-Merge-r214319-JSC-MachineThreads-does-not-consider-s.patch webkit2gtk/repos/extra-x86_64/0001-Show-a-log-message-when-an-invalid-message-is-receiv.patch webkit2gtk/repos/extra-x86_64/PKGBUILD webkit2gtk/repos/extra-x86_64/icu59.patch ------------------------------------------------------------------------------+ /PKGBUILD | 112 ++ /icu59.patch | 76 + extra-i686/0001-Merge-r214319-JSC-MachineThreads-does-not-consider-s.patch | 390 ---------- extra-i686/0001-Show-a-log-message-when-an-invalid-message-is-receiv.patch | 38 extra-i686/PKGBUILD | 62 - extra-i686/icu59.patch | 38 extra-x86_64/0001-Merge-r214319-JSC-MachineThreads-does-not-consider-s.patch | 390 ---------- extra-x86_64/0001-Show-a-log-message-when-an-invalid-message-is-receiv.patch | 38 extra-x86_64/PKGBUILD | 62 - extra-x86_64/icu59.patch | 38 10 files changed, 188 insertions(+), 1056 deletions(-) Deleted: extra-i686/0001-Merge-r214319-JSC-MachineThreads-does-not-consider-s.patch =================================================================== --- extra-i686/0001-Merge-r214319-JSC-MachineThreads-does-not-consider-s.patch 2017-05-09 21:02:09 UTC (rev 295510) +++ extra-i686/0001-Merge-r214319-JSC-MachineThreads-does-not-consider-s.patch 2017-05-09 21:03:05 UTC (rev 295511) @@ -1,390 +0,0 @@ -From 70c605847496766b0ca59bee03ecadb74e54a159 Mon Sep 17 00:00:00 2001 -From: "carlo...@webkit.org" - <carlo...@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc> -Date: Tue, 4 Apr 2017 16:12:17 +0000 -Subject: [PATCH] Merge r214319 - [JSC] MachineThreads does not consider - situation that one thread has multiple VMs - https://bugs.webkit.org/show_bug.cgi?id=169819 - -Reviewed by Mark Lam. - -The Linux port of PlatformThread suspend/resume mechanism relies on having a thread -specific singleton thread data, and was relying on MachineThreads::Thread to be this -thread specific singleton. But because MachineThreads::Thread is not a thread specific -singleton, we can get a deadlock in the GTK port's DatabaseProcess. - -This patch fixes this issue by moving per thread data from MachineThreads::Thread to -MachineThreads::ThreadData, where there will only be one instance of -MachineThreads::ThreadData per thread. Each MachineThreads::Thread will now point to -the same MachineThreads::ThreadData for any given thread. - -* heap/MachineStackMarker.cpp: -(pthreadSignalHandlerSuspendResume): -(JSC::threadData): -(JSC::MachineThreads::Thread::Thread): -(JSC::MachineThreads::Thread::createForCurrentThread): -(JSC::MachineThreads::Thread::operator==): -(JSC::MachineThreads::ThreadData::ThreadData): -(JSC::MachineThreads::ThreadData::~ThreadData): -(JSC::MachineThreads::ThreadData::suspend): -(JSC::MachineThreads::ThreadData::resume): -(JSC::MachineThreads::ThreadData::getRegisters): -(JSC::MachineThreads::ThreadData::Registers::stackPointer): -(JSC::MachineThreads::ThreadData::Registers::framePointer): -(JSC::MachineThreads::ThreadData::Registers::instructionPointer): -(JSC::MachineThreads::ThreadData::Registers::llintPC): -(JSC::MachineThreads::ThreadData::freeRegisters): -(JSC::MachineThreads::ThreadData::captureStack): -(JSC::MachineThreads::tryCopyOtherThreadStacks): -(JSC::MachineThreads::Thread::~Thread): Deleted. -(JSC::MachineThreads::Thread::suspend): Deleted. -(JSC::MachineThreads::Thread::resume): Deleted. -(JSC::MachineThreads::Thread::getRegisters): Deleted. -(JSC::MachineThreads::Thread::Registers::stackPointer): Deleted. -(JSC::MachineThreads::Thread::Registers::framePointer): Deleted. -(JSC::MachineThreads::Thread::Registers::instructionPointer): Deleted. -(JSC::MachineThreads::Thread::Registers::llintPC): Deleted. -(JSC::MachineThreads::Thread::freeRegisters): Deleted. -(JSC::MachineThreads::Thread::captureStack): Deleted. -* heap/MachineStackMarker.h: -(JSC::MachineThreads::Thread::operator!=): -(JSC::MachineThreads::Thread::suspend): -(JSC::MachineThreads::Thread::resume): -(JSC::MachineThreads::Thread::getRegisters): -(JSC::MachineThreads::Thread::freeRegisters): -(JSC::MachineThreads::Thread::captureStack): -(JSC::MachineThreads::Thread::platformThread): -(JSC::MachineThreads::Thread::stackBase): -(JSC::MachineThreads::Thread::stackEnd): -* runtime/SamplingProfiler.cpp: -(JSC::FrameWalker::isValidFramePointer): -* runtime/VMTraps.cpp: -(JSC::findActiveVMAndStackBounds): - -git-svn-id: http://svn.webkit.org/repository/webkit/releases/WebKitGTK/webkit-2.16@214882 268f45cc-cd09-0410-ab3c-d52691b4dbfc ---- - Source/JavaScriptCore/heap/MachineStackMarker.cpp | 73 +++++++++++++--------- - Source/JavaScriptCore/heap/MachineStackMarker.h | 41 +++++++++--- - Source/JavaScriptCore/runtime/SamplingProfiler.cpp | 4 +- - 4 files changed, 137 insertions(+), 41 deletions(-) - -diff --git a/Source/JavaScriptCore/heap/MachineStackMarker.cpp b/Source/JavaScriptCore/heap/MachineStackMarker.cpp -index 65eb0cf0d9b..5fea745d2ad 100644 ---- a/Source/JavaScriptCore/heap/MachineStackMarker.cpp -+++ b/Source/JavaScriptCore/heap/MachineStackMarker.cpp -@@ -33,6 +33,7 @@ - #include <setjmp.h> - #include <stdlib.h> - #include <wtf/MainThread.h> -+#include <wtf/NeverDestroyed.h> - #include <wtf/StdLibExtras.h> - - #if OS(DARWIN) -@@ -69,14 +70,14 @@ - // We use SIGUSR2 to suspend and resume machine threads in JavaScriptCore. - static const int SigThreadSuspendResume = SIGUSR2; - static StaticLock globalSignalLock; --thread_local static std::atomic<JSC::MachineThreads::Thread*> threadLocalCurrentThread; -+thread_local static std::atomic<JSC::MachineThreads::ThreadData*> threadLocalCurrentThread { nullptr }; - - static void pthreadSignalHandlerSuspendResume(int, siginfo_t*, void* ucontext) - { - // Touching thread local atomic types from signal handlers is allowed. -- JSC::MachineThreads::Thread* thread = threadLocalCurrentThread.load(); -+ JSC::MachineThreads::ThreadData* threadData = threadLocalCurrentThread.load(); - -- if (thread->suspended.load(std::memory_order_acquire)) { -+ if (threadData->suspended.load(std::memory_order_acquire)) { - // This is signal handler invocation that is intended to be used to resume sigsuspend. - // So this handler invocation itself should not process. - // -@@ -88,9 +89,9 @@ static void pthreadSignalHandlerSuspendResume(int, siginfo_t*, void* ucontext) - - ucontext_t* userContext = static_cast<ucontext_t*>(ucontext); - #if CPU(PPC) -- thread->suspendedMachineContext = *userContext->uc_mcontext.uc_regs; -+ threadData->suspendedMachineContext = *userContext->uc_mcontext.uc_regs; - #else -- thread->suspendedMachineContext = userContext->uc_mcontext; -+ threadData->suspendedMachineContext = userContext->uc_mcontext; - #endif - - // Allow suspend caller to see that this thread is suspended. -@@ -99,7 +100,7 @@ static void pthreadSignalHandlerSuspendResume(int, siginfo_t*, void* ucontext) - // - // And sem_post emits memory barrier that ensures that suspendedMachineContext is correctly saved. - // http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap04.html#tag_04_11 -- sem_post(&thread->semaphoreForSuspendResume); -+ sem_post(&threadData->semaphoreForSuspendResume); - - // Reaching here, SigThreadSuspendResume is blocked in this handler (this is configured by sigaction's sa_mask). - // So before calling sigsuspend, SigThreadSuspendResume to this thread is deferred. This ensures that the handler is not executed recursively. -@@ -109,7 +110,7 @@ static void pthreadSignalHandlerSuspendResume(int, siginfo_t*, void* ucontext) - sigsuspend(&blockedSignalSet); - - // Allow resume caller to see that this thread is resumed. -- sem_post(&thread->semaphoreForSuspendResume); -+ sem_post(&threadData->semaphoreForSuspendResume); - } - #endif // USE(PTHREADS) && !OS(WINDOWS) && !OS(DARWIN) - -@@ -215,18 +216,29 @@ MachineThreads::~MachineThreads() - } - } - -+static MachineThreads::ThreadData* threadData() -+{ -+ static NeverDestroyed<ThreadSpecific<MachineThreads::ThreadData, CanBeGCThread::True>> threadData; -+ return threadData.get(); -+} -+ -+MachineThreads::Thread::Thread(ThreadData* threadData) -+ : data(threadData) -+{ -+ ASSERT(threadData); -+} -+ - Thread* MachineThreads::Thread::createForCurrentThread() - { -- auto stackBounds = wtfThreadData().stack(); -- return new Thread(getCurrentPlatformThread(), stackBounds.origin(), stackBounds.end()); -+ return new Thread(threadData()); - } - - bool MachineThreads::Thread::operator==(const PlatformThread& other) const - { - #if OS(DARWIN) || OS(WINDOWS) -- return platformThread == other; -+ return data->platformThread == other; - #elif USE(PTHREADS) -- return !!pthread_equal(platformThread, other); -+ return !!pthread_equal(data->platformThread, other); - #else - #error Need a way to compare threads on this platform - #endif -@@ -325,11 +337,13 @@ void MachineThreads::gatherFromCurrentThread(ConservativeRoots& conservativeRoot - conservativeRoots.add(currentThreadState.stackTop, currentThreadState.stackOrigin, jitStubRoutines, codeBlocks); - } - --MachineThreads::Thread::Thread(const PlatformThread& platThread, void* base, void* end) -- : platformThread(platThread) -- , stackBase(base) -- , stackEnd(end) -+MachineThreads::ThreadData::ThreadData() - { -+ auto stackBounds = wtfThreadData().stack(); -+ platformThread = getCurrentPlatformThread(); -+ stackBase = stackBounds.origin(); -+ stackEnd = stackBounds.end(); -+ - #if OS(WINDOWS) - ASSERT(platformThread == GetCurrentThreadId()); - bool isSuccessful = -@@ -362,7 +376,7 @@ MachineThreads::Thread::Thread(const PlatformThread& platThread, void* base, voi - #endif - } - --MachineThreads::Thread::~Thread() -+MachineThreads::ThreadData::~ThreadData() - { - #if OS(WINDOWS) - CloseHandle(platformThreadHandle); -@@ -371,7 +385,7 @@ MachineThreads::Thread::~Thread() - #endif - } - --bool MachineThreads::Thread::suspend() -+bool MachineThreads::ThreadData::suspend() - { - #if OS(DARWIN) - kern_return_t result = thread_suspend(platformThread); -@@ -408,7 +422,7 @@ bool MachineThreads::Thread::suspend() - #endif - } - --void MachineThreads::Thread::resume() -+void MachineThreads::ThreadData::resume() - { - #if OS(DARWIN) - thread_resume(platformThread); -@@ -439,9 +453,9 @@ void MachineThreads::Thread::resume() - #endif - } - --size_t MachineThreads::Thread::getRegisters(Thread::Registers& registers) -+size_t MachineThreads::ThreadData::getRegisters(ThreadData::Registers& registers) - { -- Thread::Registers::PlatformRegisters& regs = registers.regs; -+ ThreadData::Registers::PlatformRegisters& regs = registers.regs; - #if OS(DARWIN) - #if CPU(X86) - unsigned user_count = sizeof(regs)/sizeof(int); -@@ -496,7 +510,7 @@ size_t MachineThreads::Thread::getRegisters(Thread::Registers& registers) - #endif - } - --void* MachineThreads::Thread::Registers::stackPointer() const -+void* MachineThreads::ThreadData::Registers::stackPointer() const - { - #if OS(DARWIN) - -@@ -601,7 +615,7 @@ void* MachineThreads::Thread::Registers::stackPointer() const - } - - #if ENABLE(SAMPLING_PROFILER) --void* MachineThreads::Thread::Registers::framePointer() const -+void* MachineThreads::ThreadData::Registers::framePointer() const - { - #if OS(DARWIN) - -@@ -684,7 +698,7 @@ void* MachineThreads::Thread::Registers::framePointer() const - #endif - } - --void* MachineThreads::Thread::Registers::instructionPointer() const -+void* MachineThreads::ThreadData::Registers::instructionPointer() const - { - #if OS(DARWIN) - -@@ -765,7 +779,8 @@ void* MachineThreads::Thread::Registers::instructionPointer() const - #error Need a way to get the instruction pointer for another thread on this platform - #endif - } --void* MachineThreads::Thread::Registers::llintPC() const -+ -+void* MachineThreads::ThreadData::Registers::llintPC() const - { - // LLInt uses regT4 as PC. - #if OS(DARWIN) -@@ -858,9 +873,9 @@ void* MachineThreads::Thread::Registers::llintPC() const - } - #endif // ENABLE(SAMPLING_PROFILER) - --void MachineThreads::Thread::freeRegisters(Thread::Registers& registers) -+void MachineThreads::ThreadData::freeRegisters(ThreadData::Registers& registers) - { -- Thread::Registers::PlatformRegisters& regs = registers.regs; -+ ThreadData::Registers::PlatformRegisters& regs = registers.regs; - #if USE(PTHREADS) && !OS(WINDOWS) && !OS(DARWIN) - pthread_attr_destroy(®s.attribute); - #else -@@ -883,7 +898,7 @@ static inline int osRedZoneAdjustment() - return redZoneAdjustment; - } - --std::pair<void*, size_t> MachineThreads::Thread::captureStack(void* stackTop) -+std::pair<void*, size_t> MachineThreads::ThreadData::captureStack(void* stackTop) - { - char* begin = reinterpret_cast_ptr<char*>(stackBase); - char* end = bitwise_cast<char*>(WTF::roundUpToMultipleOf<sizeof(void*)>(reinterpret_cast<uintptr_t>(stackTop))); -@@ -971,12 +986,12 @@ bool MachineThreads::tryCopyOtherThreadStacks(LockHolder&, void* buffer, size_t - } - - // Re-do the suspension to get the actual failure result for logging. -- kern_return_t error = thread_suspend(thread->platformThread); -+ kern_return_t error = thread_suspend(thread->platformThread()); - ASSERT(error != KERN_SUCCESS); - - WTFReportError(__FILE__, __LINE__, WTF_PRETTY_FUNCTION, - "JavaScript garbage collection encountered an invalid thread (err 0x%x): Thread [%d/%d: %p] platformThread %p.", -- error, index, numberOfThreads, thread, reinterpret_cast<void*>(thread->platformThread)); -+ error, index, numberOfThreads, thread, reinterpret_cast<void*>(thread->platformThread())); - - // Put the invalid thread on the threadsToBeDeleted list. - // We can't just delete it here because we have suspended other -diff --git a/Source/JavaScriptCore/heap/MachineStackMarker.h b/Source/JavaScriptCore/heap/MachineStackMarker.h -index a5a50870922..da979c582ec 100644 ---- a/Source/JavaScriptCore/heap/MachineStackMarker.h -+++ b/Source/JavaScriptCore/heap/MachineStackMarker.h -@@ -74,14 +74,13 @@ public: - - JS_EXPORT_PRIVATE void addCurrentThread(); // Only needs to be called by clients that can use the same heap from multiple threads. - -- class Thread { -+ class ThreadData { - WTF_MAKE_FAST_ALLOCATED; -- Thread(const PlatformThread& platThread, void* base, void* end); -- - public: -- ~Thread(); -+ ThreadData(); -+ ~ThreadData(); - -- static Thread* createForCurrentThread(); -+ static ThreadData* createForCurrentThread(); - - struct Registers { - void* stackPointer() const; -@@ -118,12 +117,9 @@ public: - #else - #error Need a thread register struct for this platform - #endif -- -+ - PlatformRegisters regs; - }; -- -- bool operator==(const PlatformThread& other) const; -- bool operator!=(const PlatformThread& other) const { return !(*this == other); } - - bool suspend(); - void resume(); -@@ -131,7 +127,6 @@ public: - void freeRegisters(Registers&); - std::pair<void*, size_t> captureStack(void* stackTop); - -- Thread* next; - PlatformThread platformThread; - void* stackBase; - void* stackEnd; -@@ -145,6 +140,32 @@ public: - #endif - }; - -+ class Thread { -+ WTF_MAKE_FAST_ALLOCATED; -+ Thread(ThreadData*); -+ -+ public: -+ using Registers = ThreadData::Registers; -+ -+ static Thread* createForCurrentThread(); -+ -+ bool operator==(const PlatformThread& other) const; -+ bool operator!=(const PlatformThread& other) const { return !(*this == other); } -+ -+ bool suspend() { return data->suspend(); } -+ void resume() { data->resume(); } -+ size_t getRegisters(Registers& regs) { return data->getRegisters(regs); } -+ void freeRegisters(Registers& regs) { data->freeRegisters(regs); } -+ std::pair<void*, size_t> captureStack(void* stackTop) { return data->captureStack(stackTop); } -+ -+ const PlatformThread& platformThread() { return data->platformThread; } -+ void* stackBase() const { return data->stackBase; } -+ void* stackEnd() const { return data->stackEnd; } -+ -+ Thread* next; -+ ThreadData* data; -+ }; -+ - Lock& getLock() { return m_registeredThreadsMutex; } - Thread* threadsListHead(const LockHolder&) const { ASSERT(m_registeredThreadsMutex.isLocked()); return m_registeredThreads; } - Thread* machineThreadForCurrentThread(); -diff --git a/Source/JavaScriptCore/runtime/SamplingProfiler.cpp b/Source/JavaScriptCore/runtime/SamplingProfiler.cpp -index a8d953d6622..9326d7a0fc9 100644 ---- a/Source/JavaScriptCore/runtime/SamplingProfiler.cpp -+++ b/Source/JavaScriptCore/runtime/SamplingProfiler.cpp -@@ -169,8 +169,8 @@ protected: - { - uint8_t* fpCast = bitwise_cast<uint8_t*>(exec); - for (MachineThreads::Thread* thread = m_vm.heap.machineThreads().threadsListHead(m_machineThreadsLocker); thread; thread = thread->next) { -- uint8_t* stackBase = static_cast<uint8_t*>(thread->stackBase); -- uint8_t* stackLimit = static_cast<uint8_t*>(thread->stackEnd); -+ uint8_t* stackBase = static_cast<uint8_t*>(thread->stackBase()); -+ uint8_t* stackLimit = static_cast<uint8_t*>(thread->stackEnd()); - RELEASE_ASSERT(stackBase); - RELEASE_ASSERT(stackLimit); - if (fpCast <= stackBase && fpCast >= stackLimit) --- -2.12.2 - Deleted: extra-i686/0001-Show-a-log-message-when-an-invalid-message-is-receiv.patch =================================================================== --- extra-i686/0001-Show-a-log-message-when-an-invalid-message-is-receiv.patch 2017-05-09 21:02:09 UTC (rev 295510) +++ extra-i686/0001-Show-a-log-message-when-an-invalid-message-is-receiv.patch 2017-05-09 21:03:05 UTC (rev 295511) @@ -1,38 +0,0 @@ -From 7a4822f02bd724c1eb3079158f93331c4090b9ad Mon Sep 17 00:00:00 2001 -From: "commit-qu...@webkit.org" - <commit-qu...@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc> -Date: Wed, 5 Apr 2017 16:50:03 +0000 -Subject: [PATCH] Show a log message when an invalid message is received in non - cocoa ports https://bugs.webkit.org/show_bug.cgi?id=170506 - -Patch by Carlos Garcia Campos <cgar...@igalia.com> on 2017-04-05 -Reviewed by Michael Catanzaro. - -We just crash, but without knowing the details about the message it's impossible to debug. - -* Shared/ChildProcess.cpp: -(WebKit::ChildProcess::didReceiveInvalidMessage): - -git-svn-id: http://svn.webkit.org/repository/webkit/trunk@214947 268f45cc-cd09-0410-ab3c-d52691b4dbfc ---- - Source/WebKit2/Shared/ChildProcess.cpp | 3 ++- - 2 files changed, 14 insertions(+), 1 deletion(-) - -diff --git a/Source/WebKit2/Shared/ChildProcess.cpp b/Source/WebKit2/Shared/ChildProcess.cpp -index 060c63ae792..bc1f2d6ab6a 100644 ---- a/Source/WebKit2/Shared/ChildProcess.cpp -+++ b/Source/WebKit2/Shared/ChildProcess.cpp -@@ -197,8 +197,9 @@ void ChildProcess::initializeSandbox(const ChildProcessInitializationParameters& - { - } - --void ChildProcess::didReceiveInvalidMessage(IPC::Connection&, IPC::StringReference, IPC::StringReference) -+void ChildProcess::didReceiveInvalidMessage(IPC::Connection&, IPC::StringReference messageReceiverName, IPC::StringReference messageName) - { -+ WTFLogAlways("Received invalid message: '%s::%s'", messageReceiverName.toString().data(), messageName.toString().data()); - CRASH(); - } - #endif --- -2.12.2 - Deleted: extra-i686/PKGBUILD =================================================================== --- extra-i686/PKGBUILD 2017-05-09 21:02:09 UTC (rev 295510) +++ extra-i686/PKGBUILD 2017-05-09 21:03:05 UTC (rev 295511) @@ -1,62 +0,0 @@ -# $Id$ -# Contributor: Eric Bélanger <e...@archlinux.org> - -pkgname=webkit2gtk -pkgver=2.16.1 -pkgrel=3 -pkgdesc="GTK+ Web content engine library" -arch=(i686 x86_64) -url="https://webkitgtk.org/" -license=(custom) -depends=(libxt libxslt enchant geoclue2 gst-plugins-base-libs - libsecret libwebp harfbuzz-icu gtk3 libnotify hyphen) -makedepends=(gtk2 gperf gobject-introspection ruby gtk-doc cmake python python2) -optdepends=('gtk2: Netscape plugin support' - 'gst-plugins-base: free media decoding' - 'gst-plugins-good: media decoding' - 'gst-libav: nonfree media decoding') -options=(!emptydirs) -source=(https://webkitgtk.org/releases/webkitgtk-${pkgver}.tar.xz{,.asc} - 0001-Merge-r214319-JSC-MachineThreads-does-not-consider-s.patch - 0001-Show-a-log-message-when-an-invalid-message-is-receiv.patch - icu59.patch) -sha256sums=('eb92383232328ce655b703c64370ed3795662479719ad1b4a869ed46769d2945' - 'SKIP' - '51541d4cb1f58d3b7c7112948ce0588e45ca445434350aec3e47c227651ff19f' - '18219f8a016eeb001efb4788891d18d83804f03bda537da621bcf73615a68e2f' - 'eb791b9c8dcb84996904846dedf8c3ddf1a5fde32330177f3f0071510bd8ca6d') -validpgpkeys=('D7FCF61CF9A2DEAB31D81BD3F3D322D0EC4582C3') - -prepare() { - mkdir build - - cd webkitgtk-$pkgver - sed -i '1s/python$/&2/' Tools/gtk/generate-gtkdoc - rm -r Source/ThirdParty/gtest/ - #rm -r Source/ThirdParty/qunit/ - patch -Np1 -i ../0001-Merge-r214319-JSC-MachineThreads-does-not-consider-s.patch - patch -Np1 -i ../0001-Show-a-log-message-when-an-invalid-message-is-receiv.patch - patch -Np1 -i ../icu59.patch -} - -build() { - cd build - cmake -DPORT=GTK -DCMAKE_BUILD_TYPE=Release \ - -DCMAKE_SKIP_RPATH=ON -DCMAKE_INSTALL_PREFIX=/usr \ - -DLIB_INSTALL_DIR=/usr/lib -DLIBEXEC_INSTALL_DIR=/usr/lib/webkit2gtk-4.0 \ - -DENABLE_GTKDOC=ON -DPYTHON_EXECUTABLE=/usr/bin/python2 ../webkitgtk-$pkgver - make -} - -package() { - cd build - make DESTDIR="$pkgdir" install - - install -m755 -d "$pkgdir/usr/share/licenses/webkit2gtk" - cd "$srcdir/webkitgtk-$pkgver/Source" - for f in $(find -name 'COPYING*' -or -name 'LICENSE*'); do - echo $f >> "$pkgdir/usr/share/licenses/webkit2gtk/LICENSE" - cat $f >> "$pkgdir/usr/share/licenses/webkit2gtk/LICENSE" - echo "" >> "$pkgdir/usr/share/licenses/webkit2gtk/LICENSE" - done -} Copied: webkit2gtk/repos/extra-i686/PKGBUILD (from rev 295510, webkit2gtk/trunk/PKGBUILD) =================================================================== --- extra-i686/PKGBUILD (rev 0) +++ extra-i686/PKGBUILD 2017-05-09 21:03:05 UTC (rev 295511) @@ -0,0 +1,56 @@ +# $Id$ +# Contributor: Eric Bélanger <e...@archlinux.org> + +pkgname=webkit2gtk +pkgver=2.16.2 +pkgrel=1 +pkgdesc="GTK+ Web content engine library" +arch=(i686 x86_64) +url="https://webkitgtk.org/" +license=(custom) +depends=(libxt libxslt enchant geoclue2 gst-plugins-base-libs + libsecret libwebp harfbuzz-icu gtk3 libnotify hyphen) +makedepends=(gtk2 gperf gobject-introspection ruby gtk-doc cmake python python2) +optdepends=('gtk2: Netscape plugin support' + 'gst-plugins-base: free media decoding' + 'gst-plugins-good: media decoding' + 'gst-libav: nonfree media decoding') +options=(!emptydirs) +source=(https://webkitgtk.org/releases/webkitgtk-${pkgver}.tar.xz{,.asc} + icu59.patch) +sha256sums=('5ef689a202eb2b71141efbe8b7b53288adced90790f9f08df6e0a2ec1809f252' + 'SKIP' + 'eb791b9c8dcb84996904846dedf8c3ddf1a5fde32330177f3f0071510bd8ca6d') +validpgpkeys=('D7FCF61CF9A2DEAB31D81BD3F3D322D0EC4582C3') + +prepare() { + mkdir build + + cd webkitgtk-$pkgver + sed -i '1s/python$/&2/' Tools/gtk/generate-gtkdoc + rm -r Source/ThirdParty/gtest/ + #rm -r Source/ThirdParty/qunit/ + patch -Np1 -i ../icu59.patch +} + +build() { + cd build + cmake -DPORT=GTK -DCMAKE_BUILD_TYPE=Release \ + -DCMAKE_SKIP_RPATH=ON -DCMAKE_INSTALL_PREFIX=/usr \ + -DLIB_INSTALL_DIR=/usr/lib -DLIBEXEC_INSTALL_DIR=/usr/lib/webkit2gtk-4.0 \ + -DENABLE_GTKDOC=ON -DPYTHON_EXECUTABLE=/usr/bin/python2 ../webkitgtk-$pkgver + make +} + +package() { + cd build + make DESTDIR="$pkgdir" install + + install -m755 -d "$pkgdir/usr/share/licenses/webkit2gtk" + cd "$srcdir/webkitgtk-$pkgver/Source" + for f in $(find -name 'COPYING*' -or -name 'LICENSE*'); do + echo $f >> "$pkgdir/usr/share/licenses/webkit2gtk/LICENSE" + cat $f >> "$pkgdir/usr/share/licenses/webkit2gtk/LICENSE" + echo "" >> "$pkgdir/usr/share/licenses/webkit2gtk/LICENSE" + done +} Deleted: extra-i686/icu59.patch =================================================================== --- extra-i686/icu59.patch 2017-05-09 21:02:09 UTC (rev 295510) +++ extra-i686/icu59.patch 2017-05-09 21:03:05 UTC (rev 295511) @@ -1,38 +0,0 @@ ---- webkitgtk-2.16.1/Source/JavaScriptCore/API/JSStringRef.h.orig 2017-02-20 17:20:08.000000000 +0100 -+++ webkitgtk-2.16.1/Source/JavaScriptCore/API/JSStringRef.h 2017-04-22 14:35:00.926530142 +0200 -@@ -32,6 +32,7 @@ - #include <stdbool.h> - #endif - #include <stddef.h> /* for size_t */ -+#include <uchar.h> - - #ifdef __cplusplus - extern "C" { -@@ -46,7 +47,7 @@ - character. As with all scalar types, endianness depends on the underlying - architecture. - */ -- typedef unsigned short JSChar; -+ typedef char16_t JSChar; - #else - typedef wchar_t JSChar; - #endif ---- webkitgtk-2.16.1/Source/WebKit2/Shared/API/c/WKString.h.orig 2017-02-20 17:20:17.000000000 +0100 -+++ webkitgtk-2.16.1/Source/WebKit2/Shared/API/c/WKString.h 2017-04-22 14:35:56.853196170 +0200 -@@ -28,6 +28,7 @@ - - #include <WebKit/WKBase.h> - #include <stddef.h> -+#include <uchar.h> - - #ifndef __cplusplus - #include <stdbool.h> -@@ -39,7 +40,7 @@ - - #if !defined(WIN32) && !defined(_WIN32) \ - && !((defined(__CC_ARM) || defined(__ARMCC__)) && !defined(__linux__)) /* RVCT */ -- typedef unsigned short WKChar; -+ typedef char16_t WKChar; - #else - typedef wchar_t WKChar; - #endif Copied: webkit2gtk/repos/extra-i686/icu59.patch (from rev 295510, webkit2gtk/trunk/icu59.patch) =================================================================== --- extra-i686/icu59.patch (rev 0) +++ extra-i686/icu59.patch 2017-05-09 21:03:05 UTC (rev 295511) @@ -0,0 +1,38 @@ +--- webkitgtk-2.16.1/Source/JavaScriptCore/API/JSStringRef.h.orig 2017-02-20 17:20:08.000000000 +0100 ++++ webkitgtk-2.16.1/Source/JavaScriptCore/API/JSStringRef.h 2017-04-22 14:35:00.926530142 +0200 +@@ -32,6 +32,7 @@ + #include <stdbool.h> + #endif + #include <stddef.h> /* for size_t */ ++#include <uchar.h> + + #ifdef __cplusplus + extern "C" { +@@ -46,7 +47,7 @@ + character. As with all scalar types, endianness depends on the underlying + architecture. + */ +- typedef unsigned short JSChar; ++ typedef char16_t JSChar; + #else + typedef wchar_t JSChar; + #endif +--- webkitgtk-2.16.1/Source/WebKit2/Shared/API/c/WKString.h.orig 2017-02-20 17:20:17.000000000 +0100 ++++ webkitgtk-2.16.1/Source/WebKit2/Shared/API/c/WKString.h 2017-04-22 14:35:56.853196170 +0200 +@@ -28,6 +28,7 @@ + + #include <WebKit/WKBase.h> + #include <stddef.h> ++#include <uchar.h> + + #ifndef __cplusplus + #include <stdbool.h> +@@ -39,7 +40,7 @@ + + #if !defined(WIN32) && !defined(_WIN32) \ + && !((defined(__CC_ARM) || defined(__ARMCC__)) && !defined(__linux__)) /* RVCT */ +- typedef unsigned short WKChar; ++ typedef char16_t WKChar; + #else + typedef wchar_t WKChar; + #endif Deleted: extra-x86_64/0001-Merge-r214319-JSC-MachineThreads-does-not-consider-s.patch =================================================================== --- extra-x86_64/0001-Merge-r214319-JSC-MachineThreads-does-not-consider-s.patch 2017-05-09 21:02:09 UTC (rev 295510) +++ extra-x86_64/0001-Merge-r214319-JSC-MachineThreads-does-not-consider-s.patch 2017-05-09 21:03:05 UTC (rev 295511) @@ -1,390 +0,0 @@ -From 70c605847496766b0ca59bee03ecadb74e54a159 Mon Sep 17 00:00:00 2001 -From: "carlo...@webkit.org" - <carlo...@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc> -Date: Tue, 4 Apr 2017 16:12:17 +0000 -Subject: [PATCH] Merge r214319 - [JSC] MachineThreads does not consider - situation that one thread has multiple VMs - https://bugs.webkit.org/show_bug.cgi?id=169819 - -Reviewed by Mark Lam. - -The Linux port of PlatformThread suspend/resume mechanism relies on having a thread -specific singleton thread data, and was relying on MachineThreads::Thread to be this -thread specific singleton. But because MachineThreads::Thread is not a thread specific -singleton, we can get a deadlock in the GTK port's DatabaseProcess. - -This patch fixes this issue by moving per thread data from MachineThreads::Thread to -MachineThreads::ThreadData, where there will only be one instance of -MachineThreads::ThreadData per thread. Each MachineThreads::Thread will now point to -the same MachineThreads::ThreadData for any given thread. - -* heap/MachineStackMarker.cpp: -(pthreadSignalHandlerSuspendResume): -(JSC::threadData): -(JSC::MachineThreads::Thread::Thread): -(JSC::MachineThreads::Thread::createForCurrentThread): -(JSC::MachineThreads::Thread::operator==): -(JSC::MachineThreads::ThreadData::ThreadData): -(JSC::MachineThreads::ThreadData::~ThreadData): -(JSC::MachineThreads::ThreadData::suspend): -(JSC::MachineThreads::ThreadData::resume): -(JSC::MachineThreads::ThreadData::getRegisters): -(JSC::MachineThreads::ThreadData::Registers::stackPointer): -(JSC::MachineThreads::ThreadData::Registers::framePointer): -(JSC::MachineThreads::ThreadData::Registers::instructionPointer): -(JSC::MachineThreads::ThreadData::Registers::llintPC): -(JSC::MachineThreads::ThreadData::freeRegisters): -(JSC::MachineThreads::ThreadData::captureStack): -(JSC::MachineThreads::tryCopyOtherThreadStacks): -(JSC::MachineThreads::Thread::~Thread): Deleted. -(JSC::MachineThreads::Thread::suspend): Deleted. -(JSC::MachineThreads::Thread::resume): Deleted. -(JSC::MachineThreads::Thread::getRegisters): Deleted. -(JSC::MachineThreads::Thread::Registers::stackPointer): Deleted. -(JSC::MachineThreads::Thread::Registers::framePointer): Deleted. -(JSC::MachineThreads::Thread::Registers::instructionPointer): Deleted. -(JSC::MachineThreads::Thread::Registers::llintPC): Deleted. -(JSC::MachineThreads::Thread::freeRegisters): Deleted. -(JSC::MachineThreads::Thread::captureStack): Deleted. -* heap/MachineStackMarker.h: -(JSC::MachineThreads::Thread::operator!=): -(JSC::MachineThreads::Thread::suspend): -(JSC::MachineThreads::Thread::resume): -(JSC::MachineThreads::Thread::getRegisters): -(JSC::MachineThreads::Thread::freeRegisters): -(JSC::MachineThreads::Thread::captureStack): -(JSC::MachineThreads::Thread::platformThread): -(JSC::MachineThreads::Thread::stackBase): -(JSC::MachineThreads::Thread::stackEnd): -* runtime/SamplingProfiler.cpp: -(JSC::FrameWalker::isValidFramePointer): -* runtime/VMTraps.cpp: -(JSC::findActiveVMAndStackBounds): - -git-svn-id: http://svn.webkit.org/repository/webkit/releases/WebKitGTK/webkit-2.16@214882 268f45cc-cd09-0410-ab3c-d52691b4dbfc ---- - Source/JavaScriptCore/heap/MachineStackMarker.cpp | 73 +++++++++++++--------- - Source/JavaScriptCore/heap/MachineStackMarker.h | 41 +++++++++--- - Source/JavaScriptCore/runtime/SamplingProfiler.cpp | 4 +- - 4 files changed, 137 insertions(+), 41 deletions(-) - -diff --git a/Source/JavaScriptCore/heap/MachineStackMarker.cpp b/Source/JavaScriptCore/heap/MachineStackMarker.cpp -index 65eb0cf0d9b..5fea745d2ad 100644 ---- a/Source/JavaScriptCore/heap/MachineStackMarker.cpp -+++ b/Source/JavaScriptCore/heap/MachineStackMarker.cpp -@@ -33,6 +33,7 @@ - #include <setjmp.h> - #include <stdlib.h> - #include <wtf/MainThread.h> -+#include <wtf/NeverDestroyed.h> - #include <wtf/StdLibExtras.h> - - #if OS(DARWIN) -@@ -69,14 +70,14 @@ - // We use SIGUSR2 to suspend and resume machine threads in JavaScriptCore. - static const int SigThreadSuspendResume = SIGUSR2; - static StaticLock globalSignalLock; --thread_local static std::atomic<JSC::MachineThreads::Thread*> threadLocalCurrentThread; -+thread_local static std::atomic<JSC::MachineThreads::ThreadData*> threadLocalCurrentThread { nullptr }; - - static void pthreadSignalHandlerSuspendResume(int, siginfo_t*, void* ucontext) - { - // Touching thread local atomic types from signal handlers is allowed. -- JSC::MachineThreads::Thread* thread = threadLocalCurrentThread.load(); -+ JSC::MachineThreads::ThreadData* threadData = threadLocalCurrentThread.load(); - -- if (thread->suspended.load(std::memory_order_acquire)) { -+ if (threadData->suspended.load(std::memory_order_acquire)) { - // This is signal handler invocation that is intended to be used to resume sigsuspend. - // So this handler invocation itself should not process. - // -@@ -88,9 +89,9 @@ static void pthreadSignalHandlerSuspendResume(int, siginfo_t*, void* ucontext) - - ucontext_t* userContext = static_cast<ucontext_t*>(ucontext); - #if CPU(PPC) -- thread->suspendedMachineContext = *userContext->uc_mcontext.uc_regs; -+ threadData->suspendedMachineContext = *userContext->uc_mcontext.uc_regs; - #else -- thread->suspendedMachineContext = userContext->uc_mcontext; -+ threadData->suspendedMachineContext = userContext->uc_mcontext; - #endif - - // Allow suspend caller to see that this thread is suspended. -@@ -99,7 +100,7 @@ static void pthreadSignalHandlerSuspendResume(int, siginfo_t*, void* ucontext) - // - // And sem_post emits memory barrier that ensures that suspendedMachineContext is correctly saved. - // http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap04.html#tag_04_11 -- sem_post(&thread->semaphoreForSuspendResume); -+ sem_post(&threadData->semaphoreForSuspendResume); - - // Reaching here, SigThreadSuspendResume is blocked in this handler (this is configured by sigaction's sa_mask). - // So before calling sigsuspend, SigThreadSuspendResume to this thread is deferred. This ensures that the handler is not executed recursively. -@@ -109,7 +110,7 @@ static void pthreadSignalHandlerSuspendResume(int, siginfo_t*, void* ucontext) - sigsuspend(&blockedSignalSet); - - // Allow resume caller to see that this thread is resumed. -- sem_post(&thread->semaphoreForSuspendResume); -+ sem_post(&threadData->semaphoreForSuspendResume); - } - #endif // USE(PTHREADS) && !OS(WINDOWS) && !OS(DARWIN) - -@@ -215,18 +216,29 @@ MachineThreads::~MachineThreads() - } - } - -+static MachineThreads::ThreadData* threadData() -+{ -+ static NeverDestroyed<ThreadSpecific<MachineThreads::ThreadData, CanBeGCThread::True>> threadData; -+ return threadData.get(); -+} -+ -+MachineThreads::Thread::Thread(ThreadData* threadData) -+ : data(threadData) -+{ -+ ASSERT(threadData); -+} -+ - Thread* MachineThreads::Thread::createForCurrentThread() - { -- auto stackBounds = wtfThreadData().stack(); -- return new Thread(getCurrentPlatformThread(), stackBounds.origin(), stackBounds.end()); -+ return new Thread(threadData()); - } - - bool MachineThreads::Thread::operator==(const PlatformThread& other) const - { - #if OS(DARWIN) || OS(WINDOWS) -- return platformThread == other; -+ return data->platformThread == other; - #elif USE(PTHREADS) -- return !!pthread_equal(platformThread, other); -+ return !!pthread_equal(data->platformThread, other); - #else - #error Need a way to compare threads on this platform - #endif -@@ -325,11 +337,13 @@ void MachineThreads::gatherFromCurrentThread(ConservativeRoots& conservativeRoot - conservativeRoots.add(currentThreadState.stackTop, currentThreadState.stackOrigin, jitStubRoutines, codeBlocks); - } - --MachineThreads::Thread::Thread(const PlatformThread& platThread, void* base, void* end) -- : platformThread(platThread) -- , stackBase(base) -- , stackEnd(end) -+MachineThreads::ThreadData::ThreadData() - { -+ auto stackBounds = wtfThreadData().stack(); -+ platformThread = getCurrentPlatformThread(); -+ stackBase = stackBounds.origin(); -+ stackEnd = stackBounds.end(); -+ - #if OS(WINDOWS) - ASSERT(platformThread == GetCurrentThreadId()); - bool isSuccessful = -@@ -362,7 +376,7 @@ MachineThreads::Thread::Thread(const PlatformThread& platThread, void* base, voi - #endif - } - --MachineThreads::Thread::~Thread() -+MachineThreads::ThreadData::~ThreadData() - { - #if OS(WINDOWS) - CloseHandle(platformThreadHandle); -@@ -371,7 +385,7 @@ MachineThreads::Thread::~Thread() - #endif - } - --bool MachineThreads::Thread::suspend() -+bool MachineThreads::ThreadData::suspend() - { - #if OS(DARWIN) - kern_return_t result = thread_suspend(platformThread); -@@ -408,7 +422,7 @@ bool MachineThreads::Thread::suspend() - #endif - } - --void MachineThreads::Thread::resume() -+void MachineThreads::ThreadData::resume() - { - #if OS(DARWIN) - thread_resume(platformThread); -@@ -439,9 +453,9 @@ void MachineThreads::Thread::resume() - #endif - } - --size_t MachineThreads::Thread::getRegisters(Thread::Registers& registers) -+size_t MachineThreads::ThreadData::getRegisters(ThreadData::Registers& registers) - { -- Thread::Registers::PlatformRegisters& regs = registers.regs; -+ ThreadData::Registers::PlatformRegisters& regs = registers.regs; - #if OS(DARWIN) - #if CPU(X86) - unsigned user_count = sizeof(regs)/sizeof(int); -@@ -496,7 +510,7 @@ size_t MachineThreads::Thread::getRegisters(Thread::Registers& registers) - #endif - } - --void* MachineThreads::Thread::Registers::stackPointer() const -+void* MachineThreads::ThreadData::Registers::stackPointer() const - { - #if OS(DARWIN) - -@@ -601,7 +615,7 @@ void* MachineThreads::Thread::Registers::stackPointer() const - } - - #if ENABLE(SAMPLING_PROFILER) --void* MachineThreads::Thread::Registers::framePointer() const -+void* MachineThreads::ThreadData::Registers::framePointer() const - { - #if OS(DARWIN) - -@@ -684,7 +698,7 @@ void* MachineThreads::Thread::Registers::framePointer() const - #endif - } - --void* MachineThreads::Thread::Registers::instructionPointer() const -+void* MachineThreads::ThreadData::Registers::instructionPointer() const - { - #if OS(DARWIN) - -@@ -765,7 +779,8 @@ void* MachineThreads::Thread::Registers::instructionPointer() const - #error Need a way to get the instruction pointer for another thread on this platform - #endif - } --void* MachineThreads::Thread::Registers::llintPC() const -+ -+void* MachineThreads::ThreadData::Registers::llintPC() const - { - // LLInt uses regT4 as PC. - #if OS(DARWIN) -@@ -858,9 +873,9 @@ void* MachineThreads::Thread::Registers::llintPC() const - } - #endif // ENABLE(SAMPLING_PROFILER) - --void MachineThreads::Thread::freeRegisters(Thread::Registers& registers) -+void MachineThreads::ThreadData::freeRegisters(ThreadData::Registers& registers) - { -- Thread::Registers::PlatformRegisters& regs = registers.regs; -+ ThreadData::Registers::PlatformRegisters& regs = registers.regs; - #if USE(PTHREADS) && !OS(WINDOWS) && !OS(DARWIN) - pthread_attr_destroy(®s.attribute); - #else -@@ -883,7 +898,7 @@ static inline int osRedZoneAdjustment() - return redZoneAdjustment; - } - --std::pair<void*, size_t> MachineThreads::Thread::captureStack(void* stackTop) -+std::pair<void*, size_t> MachineThreads::ThreadData::captureStack(void* stackTop) - { - char* begin = reinterpret_cast_ptr<char*>(stackBase); - char* end = bitwise_cast<char*>(WTF::roundUpToMultipleOf<sizeof(void*)>(reinterpret_cast<uintptr_t>(stackTop))); -@@ -971,12 +986,12 @@ bool MachineThreads::tryCopyOtherThreadStacks(LockHolder&, void* buffer, size_t - } - - // Re-do the suspension to get the actual failure result for logging. -- kern_return_t error = thread_suspend(thread->platformThread); -+ kern_return_t error = thread_suspend(thread->platformThread()); - ASSERT(error != KERN_SUCCESS); - - WTFReportError(__FILE__, __LINE__, WTF_PRETTY_FUNCTION, - "JavaScript garbage collection encountered an invalid thread (err 0x%x): Thread [%d/%d: %p] platformThread %p.", -- error, index, numberOfThreads, thread, reinterpret_cast<void*>(thread->platformThread)); -+ error, index, numberOfThreads, thread, reinterpret_cast<void*>(thread->platformThread())); - - // Put the invalid thread on the threadsToBeDeleted list. - // We can't just delete it here because we have suspended other -diff --git a/Source/JavaScriptCore/heap/MachineStackMarker.h b/Source/JavaScriptCore/heap/MachineStackMarker.h -index a5a50870922..da979c582ec 100644 ---- a/Source/JavaScriptCore/heap/MachineStackMarker.h -+++ b/Source/JavaScriptCore/heap/MachineStackMarker.h -@@ -74,14 +74,13 @@ public: - - JS_EXPORT_PRIVATE void addCurrentThread(); // Only needs to be called by clients that can use the same heap from multiple threads. - -- class Thread { -+ class ThreadData { - WTF_MAKE_FAST_ALLOCATED; -- Thread(const PlatformThread& platThread, void* base, void* end); -- - public: -- ~Thread(); -+ ThreadData(); -+ ~ThreadData(); - -- static Thread* createForCurrentThread(); -+ static ThreadData* createForCurrentThread(); - - struct Registers { - void* stackPointer() const; -@@ -118,12 +117,9 @@ public: - #else - #error Need a thread register struct for this platform - #endif -- -+ - PlatformRegisters regs; - }; -- -- bool operator==(const PlatformThread& other) const; -- bool operator!=(const PlatformThread& other) const { return !(*this == other); } - - bool suspend(); - void resume(); -@@ -131,7 +127,6 @@ public: - void freeRegisters(Registers&); - std::pair<void*, size_t> captureStack(void* stackTop); - -- Thread* next; - PlatformThread platformThread; - void* stackBase; - void* stackEnd; -@@ -145,6 +140,32 @@ public: - #endif - }; - -+ class Thread { -+ WTF_MAKE_FAST_ALLOCATED; -+ Thread(ThreadData*); -+ -+ public: -+ using Registers = ThreadData::Registers; -+ -+ static Thread* createForCurrentThread(); -+ -+ bool operator==(const PlatformThread& other) const; -+ bool operator!=(const PlatformThread& other) const { return !(*this == other); } -+ -+ bool suspend() { return data->suspend(); } -+ void resume() { data->resume(); } -+ size_t getRegisters(Registers& regs) { return data->getRegisters(regs); } -+ void freeRegisters(Registers& regs) { data->freeRegisters(regs); } -+ std::pair<void*, size_t> captureStack(void* stackTop) { return data->captureStack(stackTop); } -+ -+ const PlatformThread& platformThread() { return data->platformThread; } -+ void* stackBase() const { return data->stackBase; } -+ void* stackEnd() const { return data->stackEnd; } -+ -+ Thread* next; -+ ThreadData* data; -+ }; -+ - Lock& getLock() { return m_registeredThreadsMutex; } - Thread* threadsListHead(const LockHolder&) const { ASSERT(m_registeredThreadsMutex.isLocked()); return m_registeredThreads; } - Thread* machineThreadForCurrentThread(); -diff --git a/Source/JavaScriptCore/runtime/SamplingProfiler.cpp b/Source/JavaScriptCore/runtime/SamplingProfiler.cpp -index a8d953d6622..9326d7a0fc9 100644 ---- a/Source/JavaScriptCore/runtime/SamplingProfiler.cpp -+++ b/Source/JavaScriptCore/runtime/SamplingProfiler.cpp -@@ -169,8 +169,8 @@ protected: - { - uint8_t* fpCast = bitwise_cast<uint8_t*>(exec); - for (MachineThreads::Thread* thread = m_vm.heap.machineThreads().threadsListHead(m_machineThreadsLocker); thread; thread = thread->next) { -- uint8_t* stackBase = static_cast<uint8_t*>(thread->stackBase); -- uint8_t* stackLimit = static_cast<uint8_t*>(thread->stackEnd); -+ uint8_t* stackBase = static_cast<uint8_t*>(thread->stackBase()); -+ uint8_t* stackLimit = static_cast<uint8_t*>(thread->stackEnd()); - RELEASE_ASSERT(stackBase); - RELEASE_ASSERT(stackLimit); - if (fpCast <= stackBase && fpCast >= stackLimit) --- -2.12.2 - Deleted: extra-x86_64/0001-Show-a-log-message-when-an-invalid-message-is-receiv.patch =================================================================== --- extra-x86_64/0001-Show-a-log-message-when-an-invalid-message-is-receiv.patch 2017-05-09 21:02:09 UTC (rev 295510) +++ extra-x86_64/0001-Show-a-log-message-when-an-invalid-message-is-receiv.patch 2017-05-09 21:03:05 UTC (rev 295511) @@ -1,38 +0,0 @@ -From 7a4822f02bd724c1eb3079158f93331c4090b9ad Mon Sep 17 00:00:00 2001 -From: "commit-qu...@webkit.org" - <commit-qu...@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc> -Date: Wed, 5 Apr 2017 16:50:03 +0000 -Subject: [PATCH] Show a log message when an invalid message is received in non - cocoa ports https://bugs.webkit.org/show_bug.cgi?id=170506 - -Patch by Carlos Garcia Campos <cgar...@igalia.com> on 2017-04-05 -Reviewed by Michael Catanzaro. - -We just crash, but without knowing the details about the message it's impossible to debug. - -* Shared/ChildProcess.cpp: -(WebKit::ChildProcess::didReceiveInvalidMessage): - -git-svn-id: http://svn.webkit.org/repository/webkit/trunk@214947 268f45cc-cd09-0410-ab3c-d52691b4dbfc ---- - Source/WebKit2/Shared/ChildProcess.cpp | 3 ++- - 2 files changed, 14 insertions(+), 1 deletion(-) - -diff --git a/Source/WebKit2/Shared/ChildProcess.cpp b/Source/WebKit2/Shared/ChildProcess.cpp -index 060c63ae792..bc1f2d6ab6a 100644 ---- a/Source/WebKit2/Shared/ChildProcess.cpp -+++ b/Source/WebKit2/Shared/ChildProcess.cpp -@@ -197,8 +197,9 @@ void ChildProcess::initializeSandbox(const ChildProcessInitializationParameters& - { - } - --void ChildProcess::didReceiveInvalidMessage(IPC::Connection&, IPC::StringReference, IPC::StringReference) -+void ChildProcess::didReceiveInvalidMessage(IPC::Connection&, IPC::StringReference messageReceiverName, IPC::StringReference messageName) - { -+ WTFLogAlways("Received invalid message: '%s::%s'", messageReceiverName.toString().data(), messageName.toString().data()); - CRASH(); - } - #endif --- -2.12.2 - Deleted: extra-x86_64/PKGBUILD =================================================================== --- extra-x86_64/PKGBUILD 2017-05-09 21:02:09 UTC (rev 295510) +++ extra-x86_64/PKGBUILD 2017-05-09 21:03:05 UTC (rev 295511) @@ -1,62 +0,0 @@ -# $Id$ -# Contributor: Eric Bélanger <e...@archlinux.org> - -pkgname=webkit2gtk -pkgver=2.16.1 -pkgrel=3 -pkgdesc="GTK+ Web content engine library" -arch=(i686 x86_64) -url="https://webkitgtk.org/" -license=(custom) -depends=(libxt libxslt enchant geoclue2 gst-plugins-base-libs - libsecret libwebp harfbuzz-icu gtk3 libnotify hyphen) -makedepends=(gtk2 gperf gobject-introspection ruby gtk-doc cmake python python2) -optdepends=('gtk2: Netscape plugin support' - 'gst-plugins-base: free media decoding' - 'gst-plugins-good: media decoding' - 'gst-libav: nonfree media decoding') -options=(!emptydirs) -source=(https://webkitgtk.org/releases/webkitgtk-${pkgver}.tar.xz{,.asc} - 0001-Merge-r214319-JSC-MachineThreads-does-not-consider-s.patch - 0001-Show-a-log-message-when-an-invalid-message-is-receiv.patch - icu59.patch) -sha256sums=('eb92383232328ce655b703c64370ed3795662479719ad1b4a869ed46769d2945' - 'SKIP' - '51541d4cb1f58d3b7c7112948ce0588e45ca445434350aec3e47c227651ff19f' - '18219f8a016eeb001efb4788891d18d83804f03bda537da621bcf73615a68e2f' - 'eb791b9c8dcb84996904846dedf8c3ddf1a5fde32330177f3f0071510bd8ca6d') -validpgpkeys=('D7FCF61CF9A2DEAB31D81BD3F3D322D0EC4582C3') - -prepare() { - mkdir build - - cd webkitgtk-$pkgver - sed -i '1s/python$/&2/' Tools/gtk/generate-gtkdoc - rm -r Source/ThirdParty/gtest/ - #rm -r Source/ThirdParty/qunit/ - patch -Np1 -i ../0001-Merge-r214319-JSC-MachineThreads-does-not-consider-s.patch - patch -Np1 -i ../0001-Show-a-log-message-when-an-invalid-message-is-receiv.patch - patch -Np1 -i ../icu59.patch -} - -build() { - cd build - cmake -DPORT=GTK -DCMAKE_BUILD_TYPE=Release \ - -DCMAKE_SKIP_RPATH=ON -DCMAKE_INSTALL_PREFIX=/usr \ - -DLIB_INSTALL_DIR=/usr/lib -DLIBEXEC_INSTALL_DIR=/usr/lib/webkit2gtk-4.0 \ - -DENABLE_GTKDOC=ON -DPYTHON_EXECUTABLE=/usr/bin/python2 ../webkitgtk-$pkgver - make -} - -package() { - cd build - make DESTDIR="$pkgdir" install - - install -m755 -d "$pkgdir/usr/share/licenses/webkit2gtk" - cd "$srcdir/webkitgtk-$pkgver/Source" - for f in $(find -name 'COPYING*' -or -name 'LICENSE*'); do - echo $f >> "$pkgdir/usr/share/licenses/webkit2gtk/LICENSE" - cat $f >> "$pkgdir/usr/share/licenses/webkit2gtk/LICENSE" - echo "" >> "$pkgdir/usr/share/licenses/webkit2gtk/LICENSE" - done -} Copied: webkit2gtk/repos/extra-x86_64/PKGBUILD (from rev 295510, webkit2gtk/trunk/PKGBUILD) =================================================================== --- extra-x86_64/PKGBUILD (rev 0) +++ extra-x86_64/PKGBUILD 2017-05-09 21:03:05 UTC (rev 295511) @@ -0,0 +1,56 @@ +# $Id$ +# Contributor: Eric Bélanger <e...@archlinux.org> + +pkgname=webkit2gtk +pkgver=2.16.2 +pkgrel=1 +pkgdesc="GTK+ Web content engine library" +arch=(i686 x86_64) +url="https://webkitgtk.org/" +license=(custom) +depends=(libxt libxslt enchant geoclue2 gst-plugins-base-libs + libsecret libwebp harfbuzz-icu gtk3 libnotify hyphen) +makedepends=(gtk2 gperf gobject-introspection ruby gtk-doc cmake python python2) +optdepends=('gtk2: Netscape plugin support' + 'gst-plugins-base: free media decoding' + 'gst-plugins-good: media decoding' + 'gst-libav: nonfree media decoding') +options=(!emptydirs) +source=(https://webkitgtk.org/releases/webkitgtk-${pkgver}.tar.xz{,.asc} + icu59.patch) +sha256sums=('5ef689a202eb2b71141efbe8b7b53288adced90790f9f08df6e0a2ec1809f252' + 'SKIP' + 'eb791b9c8dcb84996904846dedf8c3ddf1a5fde32330177f3f0071510bd8ca6d') +validpgpkeys=('D7FCF61CF9A2DEAB31D81BD3F3D322D0EC4582C3') + +prepare() { + mkdir build + + cd webkitgtk-$pkgver + sed -i '1s/python$/&2/' Tools/gtk/generate-gtkdoc + rm -r Source/ThirdParty/gtest/ + #rm -r Source/ThirdParty/qunit/ + patch -Np1 -i ../icu59.patch +} + +build() { + cd build + cmake -DPORT=GTK -DCMAKE_BUILD_TYPE=Release \ + -DCMAKE_SKIP_RPATH=ON -DCMAKE_INSTALL_PREFIX=/usr \ + -DLIB_INSTALL_DIR=/usr/lib -DLIBEXEC_INSTALL_DIR=/usr/lib/webkit2gtk-4.0 \ + -DENABLE_GTKDOC=ON -DPYTHON_EXECUTABLE=/usr/bin/python2 ../webkitgtk-$pkgver + make +} + +package() { + cd build + make DESTDIR="$pkgdir" install + + install -m755 -d "$pkgdir/usr/share/licenses/webkit2gtk" + cd "$srcdir/webkitgtk-$pkgver/Source" + for f in $(find -name 'COPYING*' -or -name 'LICENSE*'); do + echo $f >> "$pkgdir/usr/share/licenses/webkit2gtk/LICENSE" + cat $f >> "$pkgdir/usr/share/licenses/webkit2gtk/LICENSE" + echo "" >> "$pkgdir/usr/share/licenses/webkit2gtk/LICENSE" + done +} Deleted: extra-x86_64/icu59.patch =================================================================== --- extra-x86_64/icu59.patch 2017-05-09 21:02:09 UTC (rev 295510) +++ extra-x86_64/icu59.patch 2017-05-09 21:03:05 UTC (rev 295511) @@ -1,38 +0,0 @@ ---- webkitgtk-2.16.1/Source/JavaScriptCore/API/JSStringRef.h.orig 2017-02-20 17:20:08.000000000 +0100 -+++ webkitgtk-2.16.1/Source/JavaScriptCore/API/JSStringRef.h 2017-04-22 14:35:00.926530142 +0200 -@@ -32,6 +32,7 @@ - #include <stdbool.h> - #endif - #include <stddef.h> /* for size_t */ -+#include <uchar.h> - - #ifdef __cplusplus - extern "C" { -@@ -46,7 +47,7 @@ - character. As with all scalar types, endianness depends on the underlying - architecture. - */ -- typedef unsigned short JSChar; -+ typedef char16_t JSChar; - #else - typedef wchar_t JSChar; - #endif ---- webkitgtk-2.16.1/Source/WebKit2/Shared/API/c/WKString.h.orig 2017-02-20 17:20:17.000000000 +0100 -+++ webkitgtk-2.16.1/Source/WebKit2/Shared/API/c/WKString.h 2017-04-22 14:35:56.853196170 +0200 -@@ -28,6 +28,7 @@ - - #include <WebKit/WKBase.h> - #include <stddef.h> -+#include <uchar.h> - - #ifndef __cplusplus - #include <stdbool.h> -@@ -39,7 +40,7 @@ - - #if !defined(WIN32) && !defined(_WIN32) \ - && !((defined(__CC_ARM) || defined(__ARMCC__)) && !defined(__linux__)) /* RVCT */ -- typedef unsigned short WKChar; -+ typedef char16_t WKChar; - #else - typedef wchar_t WKChar; - #endif Copied: webkit2gtk/repos/extra-x86_64/icu59.patch (from rev 295510, webkit2gtk/trunk/icu59.patch) =================================================================== --- extra-x86_64/icu59.patch (rev 0) +++ extra-x86_64/icu59.patch 2017-05-09 21:03:05 UTC (rev 295511) @@ -0,0 +1,38 @@ +--- webkitgtk-2.16.1/Source/JavaScriptCore/API/JSStringRef.h.orig 2017-02-20 17:20:08.000000000 +0100 ++++ webkitgtk-2.16.1/Source/JavaScriptCore/API/JSStringRef.h 2017-04-22 14:35:00.926530142 +0200 +@@ -32,6 +32,7 @@ + #include <stdbool.h> + #endif + #include <stddef.h> /* for size_t */ ++#include <uchar.h> + + #ifdef __cplusplus + extern "C" { +@@ -46,7 +47,7 @@ + character. As with all scalar types, endianness depends on the underlying + architecture. + */ +- typedef unsigned short JSChar; ++ typedef char16_t JSChar; + #else + typedef wchar_t JSChar; + #endif +--- webkitgtk-2.16.1/Source/WebKit2/Shared/API/c/WKString.h.orig 2017-02-20 17:20:17.000000000 +0100 ++++ webkitgtk-2.16.1/Source/WebKit2/Shared/API/c/WKString.h 2017-04-22 14:35:56.853196170 +0200 +@@ -28,6 +28,7 @@ + + #include <WebKit/WKBase.h> + #include <stddef.h> ++#include <uchar.h> + + #ifndef __cplusplus + #include <stdbool.h> +@@ -39,7 +40,7 @@ + + #if !defined(WIN32) && !defined(_WIN32) \ + && !((defined(__CC_ARM) || defined(__ARMCC__)) && !defined(__linux__)) /* RVCT */ +- typedef unsigned short WKChar; ++ typedef char16_t WKChar; + #else + typedef wchar_t WKChar; + #endif