Title: [229911] trunk/Source/_javascript_Core
Revision
229911
Author
mark....@apple.com
Date
2018-03-23 11:44:17 -0700 (Fri, 23 Mar 2018)

Log Message

Add more support for pointer profiling.
https://bugs.webkit.org/show_bug.cgi?id=183943
<rdar://problem/38799068>

Reviewed by JF Bastien.

* assembler/ARM64Assembler.h:
(JSC::ARM64Assembler::linkJumpOrCall):
* assembler/AbstractMacroAssembler.h:
(JSC::AbstractMacroAssembler::repatchNearCall):
(JSC::AbstractMacroAssembler::tagReturnAddress):
(JSC::AbstractMacroAssembler::untagReturnAddress):

Modified Paths

Diff

Modified: trunk/Source/_javascript_Core/ChangeLog (229910 => 229911)


--- trunk/Source/_javascript_Core/ChangeLog	2018-03-23 18:34:50 UTC (rev 229910)
+++ trunk/Source/_javascript_Core/ChangeLog	2018-03-23 18:44:17 UTC (rev 229911)
@@ -1,3 +1,18 @@
+2018-03-23  Mark Lam  <mark....@apple.com>
+
+        Add more support for pointer profiling.
+        https://bugs.webkit.org/show_bug.cgi?id=183943
+        <rdar://problem/38799068>
+
+        Reviewed by JF Bastien.
+
+        * assembler/ARM64Assembler.h:
+        (JSC::ARM64Assembler::linkJumpOrCall):
+        * assembler/AbstractMacroAssembler.h:
+        (JSC::AbstractMacroAssembler::repatchNearCall):
+        (JSC::AbstractMacroAssembler::tagReturnAddress):
+        (JSC::AbstractMacroAssembler::untagReturnAddress):
+
 2018-03-23  Yusuke Suzuki  <utatane....@gmail.com>
 
         [WTF] Add standard containers with FastAllocator specialization

Modified: trunk/Source/_javascript_Core/assembler/ARM64Assembler.h (229910 => 229911)


--- trunk/Source/_javascript_Core/assembler/ARM64Assembler.h	2018-03-23 18:34:50 UTC (rev 229910)
+++ trunk/Source/_javascript_Core/assembler/ARM64Assembler.h	2018-03-23 18:44:17 UTC (rev 229911)
@@ -3034,7 +3034,9 @@
         ASSERT_UNUSED(isCall, (link == isCall) || disassembleNop(from));
         ASSERT(!(reinterpret_cast<intptr_t>(from) & 3));
         ASSERT(!(reinterpret_cast<intptr_t>(to) & 3));
-        intptr_t offset = (removeCodePtrTag<intptr_t>(to) - removeCodePtrTag<intptr_t>(fromInstruction)) >> 2;
+        assertIsNotTagged(to);
+        assertIsNotTagged(fromInstruction);
+        intptr_t offset = (reinterpret_cast<intptr_t>(to) - reinterpret_cast<intptr_t>(fromInstruction)) >> 2;
         ASSERT(static_cast<int>(offset) == offset);
 
         int insn = unconditionalBranchImmediate(isCall, static_cast<int>(offset));

Modified: trunk/Source/_javascript_Core/assembler/AbstractMacroAssembler.h (229910 => 229911)


--- trunk/Source/_javascript_Core/assembler/AbstractMacroAssembler.h	2018-03-23 18:34:50 UTC (rev 229910)
+++ trunk/Source/_javascript_Core/assembler/AbstractMacroAssembler.h	2018-03-23 18:44:17 UTC (rev 229911)
@@ -895,6 +895,7 @@
 
     static void repatchNearCall(CodeLocationNearCall nearCall, CodeLocationLabel destination)
     {
+        assertIsTaggedWith(destination.executableAddress(), NearCallPtrTag);
         switch (nearCall.callMode()) {
         case NearCallMode::Tail:
             AssemblerType::relinkJump(nearCall.dataLocation(), destination.dataLocation());
@@ -953,6 +954,9 @@
         buffer.setCodeSize(targetCodeSize);
     }
 
+    ALWAYS_INLINE void tagReturnAddress() { }
+    ALWAYS_INLINE void untagReturnAddress() { }
+
     ALWAYS_INLINE void tagPtr(RegisterID, PtrTag) { }
     ALWAYS_INLINE void tagPtr(RegisterID, RegisterID) { }
     ALWAYS_INLINE void untagPtr(RegisterID, PtrTag) { }
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to