Title: [238993] releases/WebKitGTK/webkit-2.22/Source/_javascript_Core
Revision
238993
Author
[email protected]
Date
2018-12-07 16:25:59 -0800 (Fri, 07 Dec 2018)

Log Message

Merge r236587 - ByValInfo should not use integer offsets.
https://bugs.webkit.org/show_bug.cgi?id=190070
<rdar://problem/44803430>

Reviewed by Saam Barati.

Also moved some fields around to allow the ByValInfo struct to be more densely packed.

* bytecode/ByValInfo.h:
(JSC::ByValInfo::ByValInfo):
* jit/JIT.cpp:
(JSC::JIT::link):
* jit/JITOpcodes.cpp:
(JSC::JIT::privateCompileHasIndexedProperty):
* jit/JITOpcodes32_64.cpp:
(JSC::JIT::privateCompileHasIndexedProperty):
* jit/JITPropertyAccess.cpp:
(JSC::JIT::privateCompileGetByVal):
(JSC::JIT::privateCompileGetByValWithCachedId):
(JSC::JIT::privateCompilePutByVal):
(JSC::JIT::privateCompilePutByValWithCachedId):

Modified Paths

Diff

Modified: releases/WebKitGTK/webkit-2.22/Source/_javascript_Core/ChangeLog (238992 => 238993)


--- releases/WebKitGTK/webkit-2.22/Source/_javascript_Core/ChangeLog	2018-12-08 00:25:55 UTC (rev 238992)
+++ releases/WebKitGTK/webkit-2.22/Source/_javascript_Core/ChangeLog	2018-12-08 00:25:59 UTC (rev 238993)
@@ -1,5 +1,29 @@
 2018-09-27  Mark Lam  <[email protected]>
 
+        ByValInfo should not use integer offsets.
+        https://bugs.webkit.org/show_bug.cgi?id=190070
+        <rdar://problem/44803430>
+
+        Reviewed by Saam Barati.
+
+        Also moved some fields around to allow the ByValInfo struct to be more densely packed.
+
+        * bytecode/ByValInfo.h:
+        (JSC::ByValInfo::ByValInfo):
+        * jit/JIT.cpp:
+        (JSC::JIT::link):
+        * jit/JITOpcodes.cpp:
+        (JSC::JIT::privateCompileHasIndexedProperty):
+        * jit/JITOpcodes32_64.cpp:
+        (JSC::JIT::privateCompileHasIndexedProperty):
+        * jit/JITPropertyAccess.cpp:
+        (JSC::JIT::privateCompileGetByVal):
+        (JSC::JIT::privateCompileGetByValWithCachedId):
+        (JSC::JIT::privateCompilePutByVal):
+        (JSC::JIT::privateCompilePutByValWithCachedId):
+
+2018-09-27  Mark Lam  <[email protected]>
+
         DFG::OSREntry::m_machineCodeOffset should be a CodeLocation.
         https://bugs.webkit.org/show_bug.cgi?id=190054
         <rdar://problem/44803543>

Modified: releases/WebKitGTK/webkit-2.22/Source/_javascript_Core/bytecode/ByValInfo.h (238992 => 238993)


--- releases/WebKitGTK/webkit-2.22/Source/_javascript_Core/bytecode/ByValInfo.h	2018-12-08 00:25:55 UTC (rev 238992)
+++ releases/WebKitGTK/webkit-2.22/Source/_javascript_Core/bytecode/ByValInfo.h	2018-12-08 00:25:59 UTC (rev 238993)
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2012, 2015 Apple Inc. All rights reserved.
+ * Copyright (C) 2012-2018 Apple Inc. All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions
@@ -226,37 +226,37 @@
 struct ByValInfo {
     ByValInfo() { }
 
-    ByValInfo(unsigned bytecodeIndex, CodeLocationJump<JSInternalPtrTag> notIndexJump, CodeLocationJump<JSInternalPtrTag> badTypeJump, CodeLocationLabel<ExceptionHandlerPtrTag> exceptionHandler, JITArrayMode arrayMode, ArrayProfile* arrayProfile, int16_t badTypeJumpToDone, int16_t badTypeJumpToNextHotPath, int16_t returnAddressToSlowPath)
-        : bytecodeIndex(bytecodeIndex)
-        , notIndexJump(notIndexJump)
+    ByValInfo(unsigned bytecodeIndex, CodeLocationJump<JSInternalPtrTag> notIndexJump, CodeLocationJump<JSInternalPtrTag> badTypeJump, CodeLocationLabel<ExceptionHandlerPtrTag> exceptionHandler, JITArrayMode arrayMode, ArrayProfile* arrayProfile, CodeLocationLabel<JSInternalPtrTag> badTypeDoneTarget, CodeLocationLabel<JSInternalPtrTag> badTypeNextHotPathTarget, CodeLocationLabel<JSInternalPtrTag> slowPathTarget)
+        : notIndexJump(notIndexJump)
         , badTypeJump(badTypeJump)
         , exceptionHandler(exceptionHandler)
-        , arrayMode(arrayMode)
+        , badTypeDoneTarget(badTypeDoneTarget)
+        , badTypeNextHotPathTarget(badTypeNextHotPathTarget)
+        , slowPathTarget(slowPathTarget)
         , arrayProfile(arrayProfile)
-        , badTypeJumpToDone(badTypeJumpToDone)
-        , badTypeJumpToNextHotPath(badTypeJumpToNextHotPath)
-        , returnAddressToSlowPath(returnAddressToSlowPath)
+        , bytecodeIndex(bytecodeIndex)
         , slowPathCount(0)
         , stubInfo(nullptr)
+        , arrayMode(arrayMode)
         , tookSlowPath(false)
         , seen(false)
     {
     }
 
-    unsigned bytecodeIndex;
     CodeLocationJump<JSInternalPtrTag> notIndexJump;
     CodeLocationJump<JSInternalPtrTag> badTypeJump;
     CodeLocationLabel<ExceptionHandlerPtrTag> exceptionHandler;
-    JITArrayMode arrayMode; // The array mode that was baked into the inline JIT code.
+    CodeLocationLabel<JSInternalPtrTag> badTypeDoneTarget;
+    CodeLocationLabel<JSInternalPtrTag> badTypeNextHotPathTarget;
+    CodeLocationLabel<JSInternalPtrTag> slowPathTarget;
     ArrayProfile* arrayProfile;
-    int16_t badTypeJumpToDone;
-    int16_t badTypeJumpToNextHotPath;
-    int16_t returnAddressToSlowPath;
+    unsigned bytecodeIndex;
     unsigned slowPathCount;
     RefPtr<JITStubRoutine> stubRoutine;
     Identifier cachedId;
     WriteBarrier<Symbol> cachedSymbol;
     StructureStubInfo* stubInfo;
+    JITArrayMode arrayMode; // The array mode that was baked into the inline JIT code.
     bool tookSlowPath : 1;
     bool seen : 1;
 };

Modified: releases/WebKitGTK/webkit-2.22/Source/_javascript_Core/jit/JIT.cpp (238992 => 238993)


--- releases/WebKitGTK/webkit-2.22/Source/_javascript_Core/jit/JIT.cpp	2018-12-08 00:25:55 UTC (rev 238992)
+++ releases/WebKitGTK/webkit-2.22/Source/_javascript_Core/jit/JIT.cpp	2018-12-08 00:25:59 UTC (rev 238993)
@@ -853,10 +853,9 @@
             if (Jump(patchableNotIndexJump).isSet())
                 notIndexJump = CodeLocationJump<JSInternalPtrTag>(patchBuffer.locationOf<JSInternalPtrTag>(patchableNotIndexJump));
             auto badTypeJump = CodeLocationJump<JSInternalPtrTag>(patchBuffer.locationOf<JSInternalPtrTag>(byValCompilationInfo.badTypeJump));
-            CodeLocationLabel<NoPtrTag> doneTarget = patchBuffer.locationOf<NoPtrTag>(byValCompilationInfo.doneTarget);
-            CodeLocationLabel<NoPtrTag> nextHotPathTarget = patchBuffer.locationOf<NoPtrTag>(byValCompilationInfo.nextHotPathTarget);
-            CodeLocationLabel<NoPtrTag> slowPathTarget = patchBuffer.locationOf<NoPtrTag>(byValCompilationInfo.slowPathTarget);
-            CodeLocationCall<NoPtrTag> returnAddress = patchBuffer.locationOf<NoPtrTag>(byValCompilationInfo.returnAddress);
+            auto doneTarget = CodeLocationLabel<JSInternalPtrTag>(patchBuffer.locationOf<JSInternalPtrTag>(byValCompilationInfo.doneTarget));
+            auto nextHotPathTarget = CodeLocationLabel<JSInternalPtrTag>(patchBuffer.locationOf<JSInternalPtrTag>(byValCompilationInfo.nextHotPathTarget));
+            auto slowPathTarget = CodeLocationLabel<JSInternalPtrTag>(patchBuffer.locationOf<JSInternalPtrTag>(byValCompilationInfo.slowPathTarget));
 
             *byValCompilationInfo.byValInfo = ByValInfo(
                 byValCompilationInfo.bytecodeIndex,
@@ -865,9 +864,9 @@
                 exceptionHandler,
                 byValCompilationInfo.arrayMode,
                 byValCompilationInfo.arrayProfile,
-                differenceBetweenCodePtr(badTypeJump, doneTarget),
-                differenceBetweenCodePtr(badTypeJump, nextHotPathTarget),
-                differenceBetweenCodePtr(returnAddress, slowPathTarget));
+                doneTarget,
+                nextHotPathTarget,
+                slowPathTarget);
         }
     }
 

Modified: releases/WebKitGTK/webkit-2.22/Source/_javascript_Core/jit/JITOpcodes.cpp (238992 => 238993)


--- releases/WebKitGTK/webkit-2.22/Source/_javascript_Core/jit/JITOpcodes.cpp	2018-12-08 00:25:55 UTC (rev 238992)
+++ releases/WebKitGTK/webkit-2.22/Source/_javascript_Core/jit/JITOpcodes.cpp	2018-12-08 00:25:59 UTC (rev 238993)
@@ -1142,11 +1142,11 @@
 
     LinkBuffer patchBuffer(*this, m_codeBlock);
     
-    patchBuffer.link(badType, CodeLocationLabel<NoPtrTag>(MacroAssemblerCodePtr<NoPtrTag>::createFromExecutableAddress(returnAddress.value())).labelAtOffset(byValInfo->returnAddressToSlowPath));
-    patchBuffer.link(slowCases, CodeLocationLabel<NoPtrTag>(MacroAssemblerCodePtr<NoPtrTag>::createFromExecutableAddress(returnAddress.value())).labelAtOffset(byValInfo->returnAddressToSlowPath));
-    
-    patchBuffer.link(done, byValInfo->badTypeJump.labelAtOffset(byValInfo->badTypeJumpToDone));
-    
+    patchBuffer.link(badType, byValInfo->slowPathTarget);
+    patchBuffer.link(slowCases, byValInfo->slowPathTarget);
+
+    patchBuffer.link(done, byValInfo->badTypeDoneTarget);
+
     byValInfo->stubRoutine = FINALIZE_CODE_FOR_STUB(
         m_codeBlock, patchBuffer, JITStubRoutinePtrTag,
         "Baseline has_indexed_property stub for %s, return point %p", toCString(*m_codeBlock).data(), returnAddress.value());

Modified: releases/WebKitGTK/webkit-2.22/Source/_javascript_Core/jit/JITOpcodes32_64.cpp (238992 => 238993)


--- releases/WebKitGTK/webkit-2.22/Source/_javascript_Core/jit/JITOpcodes32_64.cpp	2018-12-08 00:25:55 UTC (rev 238992)
+++ releases/WebKitGTK/webkit-2.22/Source/_javascript_Core/jit/JITOpcodes32_64.cpp	2018-12-08 00:25:59 UTC (rev 238993)
@@ -1022,11 +1022,11 @@
 
     LinkBuffer patchBuffer(*this, m_codeBlock);
     
-    patchBuffer.link(badType, CodeLocationLabel<NoPtrTag>(MacroAssemblerCodePtr<NoPtrTag>::createFromExecutableAddress(returnAddress.value())).labelAtOffset(byValInfo->returnAddressToSlowPath));
-    patchBuffer.link(slowCases, CodeLocationLabel<NoPtrTag>(MacroAssemblerCodePtr<NoPtrTag>::createFromExecutableAddress(returnAddress.value())).labelAtOffset(byValInfo->returnAddressToSlowPath));
-    
-    patchBuffer.link(done, byValInfo->badTypeJump.labelAtOffset(byValInfo->badTypeJumpToDone));
+    patchBuffer.link(badType, byValInfo->slowPathTarget);
+    patchBuffer.link(slowCases, byValInfo->slowPathTarget);
 
+    patchBuffer.link(done, byValInfo->badTypeDoneTarget);
+
     byValInfo->stubRoutine = FINALIZE_CODE_FOR_STUB(
         m_codeBlock, patchBuffer, JITStubRoutinePtrTag,
         "Baseline has_indexed_property stub for %s, return point %p", toCString(*m_codeBlock).data(), returnAddress.value());

Modified: releases/WebKitGTK/webkit-2.22/Source/_javascript_Core/jit/JITPropertyAccess.cpp (238992 => 238993)


--- releases/WebKitGTK/webkit-2.22/Source/_javascript_Core/jit/JITPropertyAccess.cpp	2018-12-08 00:25:55 UTC (rev 238992)
+++ releases/WebKitGTK/webkit-2.22/Source/_javascript_Core/jit/JITPropertyAccess.cpp	2018-12-08 00:25:59 UTC (rev 238993)
@@ -1211,12 +1211,12 @@
     Jump done = jump();
 
     LinkBuffer patchBuffer(*this, m_codeBlock);
-    
-    patchBuffer.link(badType, CodeLocationLabel<NoPtrTag>(MacroAssemblerCodePtr<NoPtrTag>::createFromExecutableAddress(returnAddress.value())).labelAtOffset(byValInfo->returnAddressToSlowPath));
-    patchBuffer.link(slowCases, CodeLocationLabel<NoPtrTag>(MacroAssemblerCodePtr<NoPtrTag>::createFromExecutableAddress(returnAddress.value())).labelAtOffset(byValInfo->returnAddressToSlowPath));
-    
-    patchBuffer.link(done, byValInfo->badTypeJump.labelAtOffset(byValInfo->badTypeJumpToDone));
-    
+
+    patchBuffer.link(badType, byValInfo->slowPathTarget);
+    patchBuffer.link(slowCases, byValInfo->slowPathTarget);
+
+    patchBuffer.link(done, byValInfo->badTypeDoneTarget);
+
     byValInfo->stubRoutine = FINALIZE_CODE_FOR_STUB(
         m_codeBlock, patchBuffer, JITStubRoutinePtrTag,
         "Baseline get_by_val stub for %s, return point %p", toCString(*m_codeBlock).data(), returnAddress.value());
@@ -1237,9 +1237,9 @@
 
     ConcurrentJSLocker locker(m_codeBlock->m_lock);
     LinkBuffer patchBuffer(*this, m_codeBlock);
-    patchBuffer.link(slowCases, CodeLocationLabel<NoPtrTag>(MacroAssemblerCodePtr<NoPtrTag>::createFromExecutableAddress(returnAddress.value())).labelAtOffset(byValInfo->returnAddressToSlowPath));
-    patchBuffer.link(fastDoneCase, byValInfo->badTypeJump.labelAtOffset(byValInfo->badTypeJumpToDone));
-    patchBuffer.link(slowDoneCase, byValInfo->badTypeJump.labelAtOffset(byValInfo->badTypeJumpToNextHotPath));
+    patchBuffer.link(slowCases, byValInfo->slowPathTarget);
+    patchBuffer.link(fastDoneCase, byValInfo->badTypeDoneTarget);
+    patchBuffer.link(slowDoneCase, byValInfo->badTypeNextHotPathTarget);
     if (!m_exceptionChecks.empty())
         patchBuffer.link(m_exceptionChecks, byValInfo->exceptionHandler);
 
@@ -1294,9 +1294,9 @@
     Jump done = jump();
 
     LinkBuffer patchBuffer(*this, m_codeBlock);
-    patchBuffer.link(badType, CodeLocationLabel<NoPtrTag>(MacroAssemblerCodePtr<NoPtrTag>::createFromExecutableAddress(returnAddress.value())).labelAtOffset(byValInfo->returnAddressToSlowPath));
-    patchBuffer.link(slowCases, CodeLocationLabel<NoPtrTag>(MacroAssemblerCodePtr<NoPtrTag>::createFromExecutableAddress(returnAddress.value())).labelAtOffset(byValInfo->returnAddressToSlowPath));
-    patchBuffer.link(done, byValInfo->badTypeJump.labelAtOffset(byValInfo->badTypeJumpToDone));
+    patchBuffer.link(badType, byValInfo->slowPathTarget);
+    patchBuffer.link(slowCases, byValInfo->slowPathTarget);
+    patchBuffer.link(done, byValInfo->badTypeDoneTarget);
     if (needsLinkForWriteBarrier) {
         ASSERT(removeCodePtrTag(m_calls.last().callee.executableAddress()) == removeCodePtrTag(operationWriteBarrierSlowPath));
         patchBuffer.link(m_calls.last().from, m_calls.last().callee);
@@ -1328,8 +1328,8 @@
 
     ConcurrentJSLocker locker(m_codeBlock->m_lock);
     LinkBuffer patchBuffer(*this, m_codeBlock);
-    patchBuffer.link(slowCases, CodeLocationLabel<NoPtrTag>(MacroAssemblerCodePtr<NoPtrTag>::createFromExecutableAddress(returnAddress.value())).labelAtOffset(byValInfo->returnAddressToSlowPath));
-    patchBuffer.link(doneCases, byValInfo->badTypeJump.labelAtOffset(byValInfo->badTypeJumpToDone));
+    patchBuffer.link(slowCases, byValInfo->slowPathTarget);
+    patchBuffer.link(doneCases, byValInfo->badTypeDoneTarget);
     if (!m_exceptionChecks.empty())
         patchBuffer.link(m_exceptionChecks, byValInfo->exceptionHandler);
 
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to