Diff
Modified: trunk/Source/_javascript_Core/ChangeLog (267866 => 267867)
--- trunk/Source/_javascript_Core/ChangeLog 2020-10-02 06:06:28 UTC (rev 267866)
+++ trunk/Source/_javascript_Core/ChangeLog 2020-10-02 06:14:25 UTC (rev 267867)
@@ -1,3 +1,20 @@
+2020-10-01 Yusuke Suzuki <[email protected]>
+
+ [JSC] Masm probe should invoke JIT operation function
+ https://bugs.webkit.org/show_bug.cgi?id=217199
+
+ Reviewed by Mark Lam.
+
+ Masm probe function should be invoked via OperationPtrTag since it is invoked from JIT code, and it is native code.
+ And we should register probe trampoline as JIT operation.
+
+ * assembler/MacroAssemblerARM64.cpp:
+ (JSC::MacroAssembler::probe):
+ * assembler/MacroAssemblerARMv7.cpp:
+ * assembler/MacroAssemblerMIPS.cpp:
+ * assembler/MacroAssemblerX86Common.cpp:
+ * runtime/JSCPtrTag.h:
+
2020-10-01 Adrian Perez de Castro <[email protected]> and Don Olmstead <[email protected]>
Non-unified build fixes, early October 2020 edition
Modified: trunk/Source/_javascript_Core/assembler/MacroAssemblerARM64.cpp (267866 => 267867)
--- trunk/Source/_javascript_Core/assembler/MacroAssemblerARM64.cpp 2020-10-02 06:06:28 UTC (rev 267866)
+++ trunk/Source/_javascript_Core/assembler/MacroAssemblerARM64.cpp 2020-10-02 06:14:25 UTC (rev 267867)
@@ -41,7 +41,8 @@
#if ENABLE(MASM_PROBE)
-extern "C" void ctiMasmProbeTrampoline();
+extern "C" JSC_DECLARE_JIT_OPERATION(ctiMasmProbeTrampoline, void, ());
+JSC_ANNOTATE_JIT_OPERATION(ctiMasmProbeTrampoline, ctiMasmProbeTrampoline);
using namespace ARM64Registers;
@@ -541,7 +542,7 @@
storePair64(x24, x25, sp, TrustedImm32(offsetof(IncomingProbeRecord, x24)));
storePair64(x26, x27, sp, TrustedImm32(offsetof(IncomingProbeRecord, x26)));
storePair64(x28, x30, sp, TrustedImm32(offsetof(IncomingProbeRecord, x28))); // Note: x30 is lr.
- move(TrustedImmPtr(tagCFunction<JITProbeTrampolinePtrTag>(ctiMasmProbeTrampoline)), x26);
+ move(TrustedImmPtr(tagCFunction<OperationPtrTag>(ctiMasmProbeTrampoline)), x26);
move(TrustedImmPtr(tagCFunction<JITProbeExecutorPtrTag>(Probe::executeProbe)), x28);
#if CPU(ARM64E)
ASSERT(isTaggedWith(function, JITProbePtrTag));
@@ -548,7 +549,7 @@
#endif
move(TrustedImmPtr(reinterpret_cast<void*>(function)), x24);
move(TrustedImmPtr(arg), x25);
- call(x26, JITProbeTrampolinePtrTag);
+ call(x26, OperationPtrTag);
// ctiMasmProbeTrampoline should have restored every register except for lr and the sp.
load64(Address(sp, offsetof(LRRestorationRecord, lr)), lr);
Modified: trunk/Source/_javascript_Core/assembler/MacroAssemblerARMv7.cpp (267866 => 267867)
--- trunk/Source/_javascript_Core/assembler/MacroAssemblerARMv7.cpp 2020-10-02 06:06:28 UTC (rev 267866)
+++ trunk/Source/_javascript_Core/assembler/MacroAssemblerARMv7.cpp 2020-10-02 06:14:25 UTC (rev 267867)
@@ -35,7 +35,8 @@
#if ENABLE(MASM_PROBE)
-extern "C" void ctiMasmProbeTrampoline();
+extern "C" JSC_DECLARE_JIT_OPERATION(ctiMasmProbeTrampoline, void, ());
+JSC_ANNOTATE_JIT_OPERATION(ctiMasmProbeTrampoline, ctiMasmProbeTrampoline);
using namespace ARMRegisters;
Modified: trunk/Source/_javascript_Core/assembler/MacroAssemblerMIPS.cpp (267866 => 267867)
--- trunk/Source/_javascript_Core/assembler/MacroAssemblerMIPS.cpp 2020-10-02 06:06:28 UTC (rev 267866)
+++ trunk/Source/_javascript_Core/assembler/MacroAssemblerMIPS.cpp 2020-10-02 06:14:25 UTC (rev 267867)
@@ -36,7 +36,8 @@
#if ENABLE(MASM_PROBE)
-extern "C" void ctiMasmProbeTrampoline();
+extern "C" JSC_DECLARE_JIT_OPERATION(ctiMasmProbeTrampoline, void, ());
+JSC_ANNOTATE_JIT_OPERATION(ctiMasmProbeTrampoline, ctiMasmProbeTrampoline);
using namespace MIPSRegisters;
Modified: trunk/Source/_javascript_Core/assembler/MacroAssemblerX86Common.cpp (267866 => 267867)
--- trunk/Source/_javascript_Core/assembler/MacroAssemblerX86Common.cpp 2020-10-02 06:06:28 UTC (rev 267866)
+++ trunk/Source/_javascript_Core/assembler/MacroAssemblerX86Common.cpp 2020-10-02 06:14:25 UTC (rev 267867)
@@ -39,7 +39,8 @@
#if ENABLE(MASM_PROBE)
-extern "C" void ctiMasmProbeTrampoline();
+extern "C" JSC_DECLARE_JIT_OPERATION(ctiMasmProbeTrampoline, void, ());
+JSC_ANNOTATE_JIT_OPERATION(ctiMasmProbeTrampoline, ctiMasmProbeTrampoline);
// The following are offsets for Probe::State fields accessed by the ctiMasmProbeTrampoline stub.
Modified: trunk/Source/_javascript_Core/runtime/JSCPtrTag.h (267866 => 267867)
--- trunk/Source/_javascript_Core/runtime/JSCPtrTag.h 2020-10-02 06:06:28 UTC (rev 267866)
+++ trunk/Source/_javascript_Core/runtime/JSCPtrTag.h 2020-10-02 06:14:25 UTC (rev 267867)
@@ -39,7 +39,6 @@
v(ExceptionHandlerPtrTag) \
v(ExecutableMemoryPtrTag) \
v(JITProbePtrTag) \
- v(JITProbeTrampolinePtrTag) \
v(JITProbeExecutorPtrTag) \
v(JITProbeStackInitializationFunctionPtrTag) \
v(JITThunkPtrTag) \