Title: [229911] trunk/Source/_javascript_Core
- Revision
- 229911
- Author
- [email protected]
- 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 <[email protected]>
+
+ 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 <[email protected]>
[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
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes