Diff
Modified: trunk/Source/_javascript_Core/ChangeLog (220822 => 220823)
--- trunk/Source/_javascript_Core/ChangeLog 2017-08-17 03:32:13 UTC (rev 220822)
+++ trunk/Source/_javascript_Core/ChangeLog 2017-08-17 05:09:06 UTC (rev 220823)
@@ -1,3 +1,30 @@
+2017-08-16 Mark Lam <[email protected]>
+
+ Add back the ability to disable MASM_PROBE from the build.
+ https://bugs.webkit.org/show_bug.cgi?id=175656
+ <rdar://problem/33933720>
+
+ Reviewed by Yusuke Suzuki.
+
+ This is needed for ports that the existing MASM_PROBE implementation doesn't work
+ well with e.g. GTK with ARM_THUMB2. Note that if the DFG_JIT will be disabled by
+ default if !ENABLE(MASM_PROBE).
+
+ * assembler/AbstractMacroAssembler.h:
+ * assembler/MacroAssembler.cpp:
+ * assembler/MacroAssembler.h:
+ * assembler/MacroAssemblerARM.cpp:
+ * assembler/MacroAssemblerARM64.cpp:
+ * assembler/MacroAssemblerARMv7.cpp:
+ * assembler/MacroAssemblerPrinter.cpp:
+ * assembler/MacroAssemblerPrinter.h:
+ * assembler/MacroAssemblerX86Common.cpp:
+ * assembler/testmasm.cpp:
+ (JSC::run):
+ * b3/B3LowerToAir.cpp:
+ * b3/air/AirPrintSpecial.cpp:
+ * b3/air/AirPrintSpecial.h:
+
2017-08-16 Dan Bernstein <[email protected]>
[Cocoa] Older-iOS install name symbols are being exported on other platforms
Modified: trunk/Source/_javascript_Core/assembler/AbstractMacroAssembler.h (220822 => 220823)
--- trunk/Source/_javascript_Core/assembler/AbstractMacroAssembler.h 2017-08-17 03:32:13 UTC (rev 220822)
+++ trunk/Source/_javascript_Core/assembler/AbstractMacroAssembler.h 2017-08-17 05:09:06 UTC (rev 220823)
@@ -43,8 +43,10 @@
#if ENABLE(ASSEMBLER)
+#if ENABLE(MASM_PROBE)
struct ProbeContext;
typedef void (*ProbeFunction)(struct ProbeContext*);
+#endif
class AllowMacroScratchRegisterUsage;
class DisallowMacroScratchRegisterUsage;
Modified: trunk/Source/_javascript_Core/assembler/MacroAssembler.cpp (220822 => 220823)
--- trunk/Source/_javascript_Core/assembler/MacroAssembler.cpp 2017-08-17 03:32:13 UTC (rev 220822)
+++ trunk/Source/_javascript_Core/assembler/MacroAssembler.cpp 2017-08-17 05:09:06 UTC (rev 220823)
@@ -34,6 +34,7 @@
const double MacroAssembler::twoToThe32 = (double)0x100000000ull;
+#if ENABLE(MASM_PROBE)
static void stdFunctionCallback(ProbeContext* context)
{
auto func = static_cast<const std::function<void(ProbeContext*)>*>(context->arg);
@@ -44,6 +45,7 @@
{
probe(stdFunctionCallback, new std::function<void(ProbeContext*)>(func));
}
+#endif // ENABLE(MASM_PROBE)
} // namespace JSC
Modified: trunk/Source/_javascript_Core/assembler/MacroAssembler.h (220822 => 220823)
--- trunk/Source/_javascript_Core/assembler/MacroAssembler.h 2017-08-17 03:32:13 UTC (rev 220822)
+++ trunk/Source/_javascript_Core/assembler/MacroAssembler.h 2017-08-17 05:09:06 UTC (rev 220823)
@@ -1824,6 +1824,7 @@
urshift32(src, trustedImm32ForShift(amount), dest);
}
+#if ENABLE(MASM_PROBE)
struct CPUState;
// This function emits code to preserve the CPUState (e.g. registers),
@@ -1885,8 +1886,10 @@
void print(Arguments&&... args);
void print(Printer::PrintRecordList*);
+#endif // ENABLE(MASM_PROBE)
};
+#if ENABLE(MASM_PROBE)
struct MacroAssembler::CPUState {
static inline const char* gprName(RegisterID id) { return MacroAssembler::gprName(id); }
static inline const char* sprName(SPRegisterID id) { return MacroAssembler::sprName(id); }
@@ -2046,7 +2049,8 @@
template<typename T> T fp() { return cpu.fp<T>(); }
template<typename T> T sp() { return cpu.sp<T>(); }
};
-
+#endif // ENABLE(MASM_PROBE)
+
} // namespace JSC
namespace WTF {
Modified: trunk/Source/_javascript_Core/assembler/MacroAssemblerARM.cpp (220822 => 220823)
--- trunk/Source/_javascript_Core/assembler/MacroAssemblerARM.cpp 2017-08-17 03:32:13 UTC (rev 220822)
+++ trunk/Source/_javascript_Core/assembler/MacroAssemblerARM.cpp 2017-08-17 05:09:06 UTC (rev 220823)
@@ -96,6 +96,8 @@
}
#endif // CPU(ARMV5_OR_LOWER)
+#if ENABLE(MASM_PROBE)
+
extern "C" void ctiMasmProbeTrampoline();
#if COMPILER(GCC_OR_CLANG)
@@ -393,6 +395,7 @@
m_assembler.blx(RegisterID::S0);
}
+#endif // ENABLE(MASM_PROBE)
} // namespace JSC
Modified: trunk/Source/_javascript_Core/assembler/MacroAssemblerARM64.cpp (220822 => 220823)
--- trunk/Source/_javascript_Core/assembler/MacroAssemblerARM64.cpp 2017-08-17 03:32:13 UTC (rev 220822)
+++ trunk/Source/_javascript_Core/assembler/MacroAssemblerARM64.cpp 2017-08-17 05:09:06 UTC (rev 220823)
@@ -32,6 +32,8 @@
namespace JSC {
+#if ENABLE(MASM_PROBE)
+
extern "C" void ctiMasmProbeTrampoline();
using namespace ARM64Registers;
@@ -556,6 +558,8 @@
add64(TrustedImm32(sizeof(OutgoingProbeRecord)), sp);
}
+#endif // ENABLE(MASM_PROBE)
+
} // namespace JSC
#endif // ENABLE(ASSEMBLER) && CPU(ARM64)
Modified: trunk/Source/_javascript_Core/assembler/MacroAssemblerARMv7.cpp (220822 => 220823)
--- trunk/Source/_javascript_Core/assembler/MacroAssemblerARMv7.cpp 2017-08-17 03:32:13 UTC (rev 220822)
+++ trunk/Source/_javascript_Core/assembler/MacroAssemblerARMv7.cpp 2017-08-17 05:09:06 UTC (rev 220823)
@@ -32,6 +32,8 @@
namespace JSC {
+#if ENABLE(MASM_PROBE)
+
extern "C" void ctiMasmProbeTrampoline();
#if COMPILER(GCC_OR_CLANG)
@@ -336,6 +338,7 @@
move(trustedImm32FromPtr(ctiMasmProbeTrampoline), RegisterID::ip);
m_assembler.blx(RegisterID::ip);
}
+#endif // ENABLE(MASM_PROBE)
} // namespace JSC
Modified: trunk/Source/_javascript_Core/assembler/MacroAssemblerPrinter.cpp (220822 => 220823)
--- trunk/Source/_javascript_Core/assembler/MacroAssemblerPrinter.cpp 2017-08-17 03:32:13 UTC (rev 220822)
+++ trunk/Source/_javascript_Core/assembler/MacroAssemblerPrinter.cpp 2017-08-17 05:09:06 UTC (rev 220823)
@@ -27,6 +27,7 @@
#include "MacroAssemblerPrinter.h"
#if ENABLE(ASSEMBLER)
+#if ENABLE(MASM_PROBE)
#include "MacroAssembler.h"
#include <inttypes.h>
@@ -184,4 +185,5 @@
} // namespace Printer
} // namespace JSC
+#endif // ENABLE(MASM_PROBE)
#endif // ENABLE(ASSEMBLER)
Modified: trunk/Source/_javascript_Core/assembler/MacroAssemblerPrinter.h (220822 => 220823)
--- trunk/Source/_javascript_Core/assembler/MacroAssemblerPrinter.h 2017-08-17 03:32:13 UTC (rev 220822)
+++ trunk/Source/_javascript_Core/assembler/MacroAssemblerPrinter.h 2017-08-17 05:09:06 UTC (rev 220823)
@@ -31,6 +31,7 @@
namespace JSC {
#if ENABLE(ASSEMBLER)
+#if ENABLE(MASM_PROBE)
// What is MacroAssembler::print()?
// ===============================
@@ -238,6 +239,7 @@
probe(Printer::printCallback, printRecordList);
}
+#endif // ENABLE(MASM_PROBE)
#endif // ENABLE(ASSEMBLER)
} // namespace JSC
Modified: trunk/Source/_javascript_Core/assembler/MacroAssemblerX86Common.cpp (220822 => 220823)
--- trunk/Source/_javascript_Core/assembler/MacroAssemblerX86Common.cpp 2017-08-17 03:32:13 UTC (rev 220822)
+++ trunk/Source/_javascript_Core/assembler/MacroAssemblerX86Common.cpp 2017-08-17 05:09:06 UTC (rev 220823)
@@ -32,6 +32,8 @@
namespace JSC {
+#if ENABLE(MASM_PROBE)
+
extern "C" void ctiMasmProbeTrampoline();
#if COMPILER(GCC_OR_CLANG)
@@ -575,6 +577,7 @@
move(TrustedImmPtr(reinterpret_cast<void*>(ctiMasmProbeTrampoline)), RegisterID::eax);
call(RegisterID::eax);
}
+#endif // ENABLE(MASM_PROBE)
#if CPU(X86) && !OS(MAC_OS_X)
MacroAssemblerX86Common::SSE2CheckState MacroAssemblerX86Common::s_sse2CheckState = NotCheckedSSE2;
Modified: trunk/Source/_javascript_Core/assembler/testmasm.cpp (220822 => 220823)
--- trunk/Source/_javascript_Core/assembler/testmasm.cpp 2017-08-17 03:32:13 UTC (rev 220822)
+++ trunk/Source/_javascript_Core/assembler/testmasm.cpp 2017-08-17 05:09:06 UTC (rev 220823)
@@ -50,6 +50,7 @@
#if ENABLE(JIT)
+#if ENABLE(MASM_PROBE)
namespace WTF {
static void printInternal(PrintStream& out, void* value)
@@ -58,12 +59,15 @@
}
} // namespace WTF
+#endif // ENABLE(MASM_PROBE)
using namespace JSC;
namespace {
+#if ENABLE(MASM_PROBE)
using CPUState = MacroAssembler::CPUState;
+#endif
StaticLock crashLock;
@@ -93,6 +97,7 @@
CRASH(); \
} while (false)
+#if ENABLE(MASM_PROBE)
bool isPC(MacroAssembler::RegisterID id)
{
#if CPU(ARM_THUMB2) || CPU(ARM_TRADITIONAL)
@@ -123,6 +128,7 @@
#endif
return false;
}
+#endif // ENABLE(MASM_PROBE)
MacroAssemblerCodeRef compile(Generator&& generate)
{
@@ -155,6 +161,7 @@
}), 42);
}
+#if ENABLE(MASM_PROBE)
void testProbeReadsArgumentRegisters()
{
bool probeWasCalled = false;
@@ -661,6 +668,7 @@
CHECK_EQ(probeCallCount, 3);
}
+#endif // ENABLE(MASM_PROBE)
#define RUN(test) do { \
if (!shouldRun(#test)) \
@@ -688,6 +696,7 @@
RUN(testSimple());
+#if ENABLE(MASM_PROBE)
RUN(testProbeReadsArgumentRegisters());
RUN(testProbeWritesArgumentRegisters());
RUN(testProbePreservesGPRS());
@@ -695,6 +704,7 @@
RUN(testProbeModifiesStackPointerToNBytesBelowSP());
RUN(testProbeModifiesProgramCounter());
RUN(testProbeModifiesStackWithCallback());
+#endif // ENABLE(MASM_PROBE)
if (tasks.isEmpty())
usage();
Modified: trunk/Source/_javascript_Core/b3/B3LowerToAir.cpp (220822 => 220823)
--- trunk/Source/_javascript_Core/b3/B3LowerToAir.cpp 2017-08-17 03:32:13 UTC (rev 220822)
+++ trunk/Source/_javascript_Core/b3/B3LowerToAir.cpp 2017-08-17 05:09:06 UTC (rev 220823)
@@ -1150,6 +1150,7 @@
return Air::Oops;
}
+#if ENABLE(MASM_PROBE)
template<typename... Arguments>
void print(Arguments&&... arguments)
{
@@ -1166,6 +1167,7 @@
Printer::appendAirArgs(inst, std::forward<Arguments>(arguments)...);
append(WTFMove(inst));
}
+#endif // ENABLE(MASM_PROBE)
template<typename... Arguments>
void append(Air::Kind kind, Arguments&&... arguments)
Modified: trunk/Source/_javascript_Core/b3/air/AirPrintSpecial.cpp (220822 => 220823)
--- trunk/Source/_javascript_Core/b3/air/AirPrintSpecial.cpp 2017-08-17 03:32:13 UTC (rev 220822)
+++ trunk/Source/_javascript_Core/b3/air/AirPrintSpecial.cpp 2017-08-17 05:09:06 UTC (rev 220823)
@@ -27,6 +27,7 @@
#include "AirPrintSpecial.h"
#if ENABLE(B3_JIT)
+#if ENABLE(MASM_PROBE)
#include "MacroAssemblerPrinter.h"
@@ -124,4 +125,5 @@
} // namespace JSC
+#endif // ENABLE(MASM_PROBE)
#endif // ENABLE(B3_JIT)
Modified: trunk/Source/_javascript_Core/b3/air/AirPrintSpecial.h (220822 => 220823)
--- trunk/Source/_javascript_Core/b3/air/AirPrintSpecial.h 2017-08-17 03:32:13 UTC (rev 220822)
+++ trunk/Source/_javascript_Core/b3/air/AirPrintSpecial.h 2017-08-17 05:09:06 UTC (rev 220823)
@@ -26,6 +26,7 @@
#pragma once
#if ENABLE(B3_JIT)
+#if ENABLE(MASM_PROBE)
#include "AirInst.h"
#include "AirSpecial.h"
@@ -128,4 +129,5 @@
} } } // namespace JSC::B3::Air
+#endif // ENABLE(MASM_PROBE)
#endif // ENABLE(B3_JIT)
Modified: trunk/Source/WTF/ChangeLog (220822 => 220823)
--- trunk/Source/WTF/ChangeLog 2017-08-17 03:32:13 UTC (rev 220822)
+++ trunk/Source/WTF/ChangeLog 2017-08-17 05:09:06 UTC (rev 220823)
@@ -1,5 +1,15 @@
2017-08-16 Mark Lam <[email protected]>
+ Add back the ability to disable MASM_PROBE from the build.
+ https://bugs.webkit.org/show_bug.cgi?id=175656
+ <rdar://problem/33933720>
+
+ Reviewed by Yusuke Suzuki.
+
+ * wtf/Platform.h:
+
+2017-08-16 Mark Lam <[email protected]>
+
Gardening: fix GTK ARM_THUMB2 build.
https://bugs.webkit.org/show_bug.cgi?id=175446
Modified: trunk/Source/WTF/wtf/Platform.h (220822 => 220823)
--- trunk/Source/WTF/wtf/Platform.h 2017-08-17 03:32:13 UTC (rev 220822)
+++ trunk/Source/WTF/wtf/Platform.h 2017-08-17 05:09:06 UTC (rev 220823)
@@ -805,8 +805,25 @@
#define ENABLE_FAST_TLS_JIT 1
#endif
-/* If the baseline jit is not available, then disable upper tiers as well: */
-#if !ENABLE(JIT)
+#if CPU(X86) || CPU(X86_64) || CPU(ARM_THUMB2) || CPU(ARM64) || CPU(ARM_TRADITIONAL)
+#define ENABLE_MASM_PROBE 1
+#else
+#define ENABLE_MASM_PROBE 0
+#endif
+
+#if OS(WINDOW)
+#undef ENABLE_MASM_PROBE
+#define ENABLE_MASM_PROBE 0
+#endif
+#if PLATFORM(GTK) && CPU(ARM_THUMB2)
+/* FIXME: https://bugs.webkit.org/show_bug.cgi?id=175514 */
+#undef ENABLE_MASM_PROBE
+#define ENABLE_MASM_PROBE 0
+#endif
+
+/* If the baseline jit is not available, then disable upper tiers as well.
+ The MacroAssembler::probe() is also required for supporting the upper tiers. */
+#if !ENABLE(JIT) || !ENABLE(MASM_PROBE)
#undef ENABLE_DFG_JIT
#undef ENABLE_FTL_JIT
#define ENABLE_DFG_JIT 0