Title: [213901] trunk/Source/_javascript_Core
- Revision
- 213901
- Author
- [email protected]
- Date
- 2017-03-14 09:59:37 -0700 (Tue, 14 Mar 2017)
Log Message
[JSC] Drop unnecessary pthread_attr_t for JIT enabled Linux / FreeBSD environment
https://bugs.webkit.org/show_bug.cgi?id=169592
Reviewed by Carlos Garcia Campos.
Since suspended mcontext_t has all the necessary information, we can drop
pthread_attr_t allocation and destroy for JIT enabled Linux / FreeBSD environment.
* heap/MachineStackMarker.cpp:
(JSC::MachineThreads::Thread::getRegisters):
(JSC::MachineThreads::Thread::Registers::stackPointer):
(JSC::MachineThreads::Thread::Registers::framePointer):
(JSC::MachineThreads::Thread::Registers::instructionPointer):
(JSC::MachineThreads::Thread::Registers::llintPC):
(JSC::MachineThreads::Thread::freeRegisters):
* heap/MachineStackMarker.h:
Modified Paths
Diff
Modified: trunk/Source/_javascript_Core/ChangeLog (213900 => 213901)
--- trunk/Source/_javascript_Core/ChangeLog 2017-03-14 16:16:46 UTC (rev 213900)
+++ trunk/Source/_javascript_Core/ChangeLog 2017-03-14 16:59:37 UTC (rev 213901)
@@ -1,3 +1,22 @@
+2017-03-14 Yusuke Suzuki <[email protected]>
+
+ [JSC] Drop unnecessary pthread_attr_t for JIT enabled Linux / FreeBSD environment
+ https://bugs.webkit.org/show_bug.cgi?id=169592
+
+ Reviewed by Carlos Garcia Campos.
+
+ Since suspended mcontext_t has all the necessary information, we can drop
+ pthread_attr_t allocation and destroy for JIT enabled Linux / FreeBSD environment.
+
+ * heap/MachineStackMarker.cpp:
+ (JSC::MachineThreads::Thread::getRegisters):
+ (JSC::MachineThreads::Thread::Registers::stackPointer):
+ (JSC::MachineThreads::Thread::Registers::framePointer):
+ (JSC::MachineThreads::Thread::Registers::instructionPointer):
+ (JSC::MachineThreads::Thread::Registers::llintPC):
+ (JSC::MachineThreads::Thread::freeRegisters):
+ * heap/MachineStackMarker.h:
+
2017-03-14 Zan Dobersek <[email protected]>
[GLib] Use USE(GLIB) guards in _javascript_Core/inspector/EventLoop.cpp
Modified: trunk/Source/_javascript_Core/heap/MachineStackMarker.cpp (213900 => 213901)
--- trunk/Source/_javascript_Core/heap/MachineStackMarker.cpp 2017-03-14 16:16:46 UTC (rev 213900)
+++ trunk/Source/_javascript_Core/heap/MachineStackMarker.cpp 2017-03-14 16:59:37 UTC (rev 213901)
@@ -461,6 +461,9 @@
regs.ContextFlags = CONTEXT_INTEGER | CONTEXT_CONTROL;
GetThreadContext(platformThreadHandle, ®s);
return sizeof(CONTEXT);
+#elif ((OS(FREEBSD) || defined(__GLIBC__)) && ENABLE(JIT))
+ regs = suspendedMachineContext;
+ return sizeof(Registers::PlatformRegisters);
#elif USE(PTHREADS)
pthread_attr_init(®s.attribute);
#if HAVE(PTHREAD_NP_H) || OS(NETBSD)
@@ -472,7 +475,6 @@
// FIXME: this function is non-portable; other POSIX systems may have different np alternatives
pthread_getattr_np(platformThread, ®s.attribute);
#endif
- regs.machineContext = suspendedMachineContext;
return 0;
#else
#error Need a way to get thread registers on this platform
@@ -481,13 +483,9 @@
void* MachineThreads::Thread::Registers::stackPointer() const
{
-#if OS(DARWIN) || OS(WINDOWS)
+#if OS(DARWIN) || OS(WINDOWS) || ((OS(FREEBSD) || defined(__GLIBC__)) && ENABLE(JIT))
return MachineContext::stackPointer(regs);
#elif USE(PTHREADS)
-
-#if (OS(FREEBSD) || defined(__GLIBC__)) && ENABLE(JIT)
- return MachineContext::stackPointer(regs.machineContext);
-#else
void* stackBase = 0;
size_t stackSize = 0;
#if OS(OPENBSD)
@@ -501,8 +499,6 @@
(void)rc; // FIXME: Deal with error code somehow? Seems fatal.
ASSERT(stackBase);
return static_cast<char*>(stackBase) + stackSize;
-#endif
-
#else
#error Need a way to get the stack pointer for another thread on this platform
#endif
@@ -511,10 +507,8 @@
#if ENABLE(SAMPLING_PROFILER)
void* MachineThreads::Thread::Registers::framePointer() const
{
-#if OS(DARWIN) || OS(WINDOWS)
+#if OS(DARWIN) || OS(WINDOWS) || (OS(FREEBSD) || defined(__GLIBC__))
return MachineContext::framePointer(regs);
-#elif OS(FREEBSD) || defined(__GLIBC__)
- return MachineContext::framePointer(regs.machineContext);
#else
#error Need a way to get the frame pointer for another thread on this platform
#endif
@@ -522,10 +516,8 @@
void* MachineThreads::Thread::Registers::instructionPointer() const
{
-#if OS(DARWIN) || OS(WINDOWS)
+#if OS(DARWIN) || OS(WINDOWS) || (OS(FREEBSD) || defined(__GLIBC__))
return MachineContext::instructionPointer(regs);
-#elif OS(FREEBSD) || defined(__GLIBC__)
- return MachineContext::instructionPointer(regs.machineContext);
#else
#error Need a way to get the instruction pointer for another thread on this platform
#endif
@@ -534,10 +526,8 @@
void* MachineThreads::Thread::Registers::llintPC() const
{
// LLInt uses regT4 as PC.
-#if OS(DARWIN) || OS(WINDOWS)
+#if OS(DARWIN) || OS(WINDOWS) || (OS(FREEBSD) || defined(__GLIBC__))
return MachineContext::llintInstructionPointer(regs);
-#elif OS(FREEBSD) || defined(__GLIBC__)
- return MachineContext::llintInstructionPointer(regs.machineContext);
#else
#error Need a way to get the LLIntPC for another thread on this platform
#endif
@@ -547,7 +537,7 @@
void MachineThreads::Thread::freeRegisters(Thread::Registers& registers)
{
Thread::Registers::PlatformRegisters& regs = registers.regs;
-#if USE(PTHREADS) && !OS(WINDOWS) && !OS(DARWIN)
+#if USE(PTHREADS) && !OS(WINDOWS) && !OS(DARWIN) && !((OS(FREEBSD) || defined(__GLIBC__)) && ENABLE(JIT))
pthread_attr_destroy(®s.attribute);
#else
UNUSED_PARAM(regs);
Modified: trunk/Source/_javascript_Core/heap/MachineStackMarker.h (213900 => 213901)
--- trunk/Source/_javascript_Core/heap/MachineStackMarker.h 2017-03-14 16:16:46 UTC (rev 213900)
+++ trunk/Source/_javascript_Core/heap/MachineStackMarker.h 2017-03-14 16:59:37 UTC (rev 213901)
@@ -83,10 +83,11 @@
#if OS(DARWIN) || OS(WINDOWS)
using PlatformRegisters = MachineContext::PlatformRegisters;
+#elif (OS(FREEBSD) || defined(__GLIBC__)) && ENABLE(JIT)
+ using PlatformRegisters = mcontext_t;
#elif USE(PTHREADS)
struct PlatformRegisters {
pthread_attr_t attribute;
- mcontext_t machineContext;
};
#else
#error Need a thread register struct for this platform
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes