Title: [234667] branches/safari-606.1.36.0-branch/Source/_javascript_Core
Revision
234667
Author
[email protected]
Date
2018-08-07 12:34:23 -0700 (Tue, 07 Aug 2018)

Log Message

Cherry-pick r234649. rdar://problem/43009914

    Use a more specific PtrTag for PlatformRegisters PC and LR.
    https://bugs.webkit.org/show_bug.cgi?id=188366
    <rdar://problem/42984123>

    Reviewed by Keith Miller.

    Also fixed a bug in linkRegister(), which was previously returning the PC instead
    of LR.  It now returns LR.

    * runtime/JSCPtrTag.h:
    * runtime/MachineContext.h:
    (JSC::MachineContext::instructionPointer):
    (JSC::MachineContext::linkRegister):
    * runtime/VMTraps.cpp:
    (JSC::SignalContext::SignalContext):
    * tools/SigillCrashAnalyzer.cpp:
    (JSC::SignalContext::SignalContext):

    git-svn-id: https://svn.webkit.org/repository/webkit/trunk@234649 268f45cc-cd09-0410-ab3c-d52691b4dbfc

Modified Paths

Diff

Modified: branches/safari-606.1.36.0-branch/Source/_javascript_Core/ChangeLog (234666 => 234667)


--- branches/safari-606.1.36.0-branch/Source/_javascript_Core/ChangeLog	2018-08-07 19:28:00 UTC (rev 234666)
+++ branches/safari-606.1.36.0-branch/Source/_javascript_Core/ChangeLog	2018-08-07 19:34:23 UTC (rev 234667)
@@ -1,3 +1,49 @@
+2018-08-07  Kocsen Chung  <[email protected]>
+
+        Cherry-pick r234649. rdar://problem/43009914
+
+    Use a more specific PtrTag for PlatformRegisters PC and LR.
+    https://bugs.webkit.org/show_bug.cgi?id=188366
+    <rdar://problem/42984123>
+    
+    Reviewed by Keith Miller.
+    
+    Also fixed a bug in linkRegister(), which was previously returning the PC instead
+    of LR.  It now returns LR.
+    
+    * runtime/JSCPtrTag.h:
+    * runtime/MachineContext.h:
+    (JSC::MachineContext::instructionPointer):
+    (JSC::MachineContext::linkRegister):
+    * runtime/VMTraps.cpp:
+    (JSC::SignalContext::SignalContext):
+    * tools/SigillCrashAnalyzer.cpp:
+    (JSC::SignalContext::SignalContext):
+    
+    
+    
+    git-svn-id: https://svn.webkit.org/repository/webkit/trunk@234649 268f45cc-cd09-0410-ab3c-d52691b4dbfc
+
+    2018-08-07  Mark Lam  <[email protected]>
+
+            Use a more specific PtrTag for PlatformRegisters PC and LR.
+            https://bugs.webkit.org/show_bug.cgi?id=188366
+            <rdar://problem/42984123>
+
+            Reviewed by Keith Miller.
+
+            Also fixed a bug in linkRegister(), which was previously returning the PC instead
+            of LR.  It now returns LR.
+
+            * runtime/JSCPtrTag.h:
+            * runtime/MachineContext.h:
+            (JSC::MachineContext::instructionPointer):
+            (JSC::MachineContext::linkRegister):
+            * runtime/VMTraps.cpp:
+            (JSC::SignalContext::SignalContext):
+            * tools/SigillCrashAnalyzer.cpp:
+            (JSC::SignalContext::SignalContext):
+
 2018-08-02  Babak Shafiei  <[email protected]>
 
         Cherry-pick r234528. rdar://problem/42883788

Modified: branches/safari-606.1.36.0-branch/Source/_javascript_Core/runtime/JSCPtrTag.h (234666 => 234667)


--- branches/safari-606.1.36.0-branch/Source/_javascript_Core/runtime/JSCPtrTag.h	2018-08-07 19:28:00 UTC (rev 234666)
+++ branches/safari-606.1.36.0-branch/Source/_javascript_Core/runtime/JSCPtrTag.h	2018-08-07 19:34:23 UTC (rev 234667)
@@ -46,6 +46,8 @@
     v(LinkBufferPtrTag) \
     v(OperationPtrTag) \
     v(OSRExitPtrTag) \
+    v(PlatformRegistersLRPtrTag) \
+    v(PlatformRegistersPCPtrTag) \
     v(SlowPathPtrTag) \
     v(WasmEntryPtrTag) \
     v(Yarr8BitPtrTag) \

Modified: branches/safari-606.1.36.0-branch/Source/_javascript_Core/runtime/MachineContext.h (234666 => 234667)


--- branches/safari-606.1.36.0-branch/Source/_javascript_Core/runtime/MachineContext.h	2018-08-07 19:28:00 UTC (rev 234666)
+++ branches/safari-606.1.36.0-branch/Source/_javascript_Core/runtime/MachineContext.h	2018-08-07 19:34:23 UTC (rev 234667)
@@ -43,9 +43,9 @@
 template<typename T = void*> void setStackPointer(PlatformRegisters&, T);
 template<typename T = void*> T framePointer(const PlatformRegisters&);
 template<typename T = void*> void setFramePointer(PlatformRegisters&, T);
-inline MacroAssemblerCodePtr<CFunctionPtrTag> linkRegister(const PlatformRegisters&);
+inline MacroAssemblerCodePtr<PlatformRegistersLRPtrTag> linkRegister(const PlatformRegisters&);
 inline void setLinkRegister(PlatformRegisters&, MacroAssemblerCodePtr<CFunctionPtrTag>);
-inline std::optional<MacroAssemblerCodePtr<CFunctionPtrTag>> instructionPointer(const PlatformRegisters&);
+inline std::optional<MacroAssemblerCodePtr<PlatformRegistersPCPtrTag>> instructionPointer(const PlatformRegisters&);
 inline void setInstructionPointer(PlatformRegisters&, MacroAssemblerCodePtr<CFunctionPtrTag>);
 
 template<size_t N> void*& argumentPointer(PlatformRegisters&);
@@ -67,7 +67,7 @@
 template<typename T = void*> void setStackPointer(mcontext_t&, T);
 template<typename T = void*> T framePointer(const mcontext_t&);
 template<typename T = void*> void setFramePointer(mcontext_t&, T);
-inline MacroAssemblerCodePtr<CFunctionPtrTag> instructionPointer(const mcontext_t&);
+inline MacroAssemblerCodePtr<PlatformRegistersPCPtrTag> instructionPointer(const mcontext_t&);
 inline void setInstructionPointer(mcontext_t&, MacroAssemblerCodePtr<CFunctionPtrTag>);
 
 template<size_t N> void*& argumentPointer(mcontext_t&);
@@ -432,7 +432,7 @@
 }
 #endif // !USE(PLATFORM_REGISTERS_WITH_PROFILE)
 
-inline std::optional<MacroAssemblerCodePtr<CFunctionPtrTag>> instructionPointer(const PlatformRegisters& regs)
+inline std::optional<MacroAssemblerCodePtr<PlatformRegistersPCPtrTag>> instructionPointer(const PlatformRegisters& regs)
 {
 #if USE(PLATFORM_REGISTERS_WITH_PROFILE)
     void* value = WTF_READ_PLATFORM_REGISTERS_PC_WITH_PROFILE(regs);
@@ -440,11 +440,11 @@
     void* value = instructionPointerImpl(const_cast<PlatformRegisters&>(regs));
 #endif
     if (!value)
-        return MacroAssemblerCodePtr<CFunctionPtrTag>(nullptr);
+        return MacroAssemblerCodePtr<PlatformRegistersPCPtrTag>(nullptr);
     if (!usesPointerTagging())
-        return MacroAssemblerCodePtr<CFunctionPtrTag>(value);
-    if (isTaggedWith(value, CFunctionPtrTag))
-        return MacroAssemblerCodePtr<CFunctionPtrTag>(value);
+        return MacroAssemblerCodePtr<PlatformRegistersPCPtrTag>(value);
+    if (isTaggedWith(value, PlatformRegistersPCPtrTag))
+        return MacroAssemblerCodePtr<PlatformRegistersPCPtrTag>(value);
     return std::nullopt;
 }
 
@@ -505,7 +505,7 @@
 }
 #endif // !USE(PLATFORM_REGISTERS_WITH_PROFILE)
 
-inline MacroAssemblerCodePtr<CFunctionPtrTag> instructionPointer(const mcontext_t& machineContext)
+inline MacroAssemblerCodePtr<PlatformRegistersPCPtrTag> instructionPointer(const mcontext_t& machineContext)
 {
 #if USE(PLATFORM_REGISTERS_WITH_PROFILE)
     void* value = WTF_READ_MACHINE_CONTEXT_PC_WITH_PROFILE(machineContext);
@@ -512,7 +512,7 @@
 #else
     void* value = instructionPointerImpl(const_cast<mcontext_t&>(machineContext));
 #endif
-    return MacroAssemblerCodePtr<CFunctionPtrTag>(value);
+    return MacroAssemblerCodePtr<PlatformRegistersPCPtrTag>(value);
 }
 
 inline void setInstructionPointer(mcontext_t& machineContext, MacroAssemblerCodePtr<CFunctionPtrTag> value)
@@ -537,14 +537,14 @@
 #endif // USE(PLATFORM_REGISTERS_WITH_PROFILE)
 
 
-inline MacroAssemblerCodePtr<CFunctionPtrTag> linkRegister(const PlatformRegisters& regs)
+inline MacroAssemblerCodePtr<PlatformRegistersLRPtrTag> linkRegister(const PlatformRegisters& regs)
 {
 #if USE(PLATFORM_REGISTERS_WITH_PROFILE)
-    void* value = WTF_READ_PLATFORM_REGISTERS_PC_WITH_PROFILE(regs);
+    void* value = WTF_READ_PLATFORM_REGISTERS_LR_WITH_PROFILE(regs);
 #else
     void* value = linkRegisterImpl(const_cast<PlatformRegisters&>(regs));
 #endif
-    return MacroAssemblerCodePtr<CFunctionPtrTag>(value);
+    return MacroAssemblerCodePtr<PlatformRegistersLRPtrTag>(value);
 }
 
 inline void setLinkRegister(PlatformRegisters& regs, MacroAssemblerCodePtr<CFunctionPtrTag> value)

Modified: branches/safari-606.1.36.0-branch/Source/_javascript_Core/runtime/VMTraps.cpp (234666 => 234667)


--- branches/safari-606.1.36.0-branch/Source/_javascript_Core/runtime/VMTraps.cpp	2018-08-07 19:28:00 UTC (rev 234666)
+++ branches/safari-606.1.36.0-branch/Source/_javascript_Core/runtime/VMTraps.cpp	2018-08-07 19:34:23 UTC (rev 234667)
@@ -56,7 +56,7 @@
 
 struct SignalContext {
 private:
-    SignalContext(PlatformRegisters& registers, MacroAssemblerCodePtr<CFunctionPtrTag> trapPC)
+    SignalContext(PlatformRegisters& registers, MacroAssemblerCodePtr<PlatformRegistersPCPtrTag> trapPC)
         : registers(registers)
         , trapPC(trapPC)
         , stackPointer(MachineContext::stackPointer(registers))
@@ -73,7 +73,7 @@
     }
 
     PlatformRegisters& registers;
-    MacroAssemblerCodePtr<CFunctionPtrTag> trapPC;
+    MacroAssemblerCodePtr<PlatformRegistersPCPtrTag> trapPC;
     void* stackPointer;
     void* framePointer;
 };

Modified: branches/safari-606.1.36.0-branch/Source/_javascript_Core/tools/SigillCrashAnalyzer.cpp (234666 => 234667)


--- branches/safari-606.1.36.0-branch/Source/_javascript_Core/tools/SigillCrashAnalyzer.cpp	2018-08-07 19:28:00 UTC (rev 234666)
+++ branches/safari-606.1.36.0-branch/Source/_javascript_Core/tools/SigillCrashAnalyzer.cpp	2018-08-07 19:34:23 UTC (rev 234667)
@@ -79,7 +79,7 @@
 
 struct SignalContext {
 private:
-    SignalContext(PlatformRegisters& registers, MacroAssemblerCodePtr<CFunctionPtrTag> machinePC)
+    SignalContext(PlatformRegisters& registers, MacroAssemblerCodePtr<PlatformRegistersPCPtrTag> machinePC)
         : registers(registers)
         , machinePC(machinePC)
         , stackPointer(MachineContext::stackPointer(registers))
@@ -148,7 +148,7 @@
     }
 
     PlatformRegisters& registers;
-    MacroAssemblerCodePtr<CFunctionPtrTag> machinePC;
+    MacroAssemblerCodePtr<PlatformRegistersPCPtrTag> machinePC;
     void* stackPointer;
     void* framePointer;
 };
@@ -181,7 +181,7 @@
 
     void dump() { }
 
-    MacroAssemblerCodePtr<CFunctionPtrTag> machinePC;
+    MacroAssemblerCodePtr<PlatformRegistersPCPtrTag> machinePC;
     void* stackPointer;
     void* framePointer;
 };
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to