Update ARM64EHash
authorsbarati@apple.com <sbarati@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Thu, 24 Jan 2019 22:07:33 +0000 (22:07 +0000)
committersbarati@apple.com <sbarati@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Thu, 24 Jan 2019 22:07:33 +0000 (22:07 +0000)
https://bugs.webkit.org/show_bug.cgi?id=193776
<rdar://problem/47526457>

Reviewed by Mark Lam.

See radar for details.

* assembler/AssemblerBuffer.h:
(JSC::ARM64EHash::update):
(JSC::ARM64EHash::finalHash const):

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

Source/JavaScriptCore/ChangeLog
Source/JavaScriptCore/assembler/AssemblerBuffer.h

index bed5aa5..069a673 100644 (file)
@@ -1,5 +1,19 @@
 2019-01-24  Saam Barati  <sbarati@apple.com>
 
+        Update ARM64EHash
+        https://bugs.webkit.org/show_bug.cgi?id=193776
+        <rdar://problem/47526457>
+
+        Reviewed by Mark Lam.
+
+        See radar for details.
+
+        * assembler/AssemblerBuffer.h:
+        (JSC::ARM64EHash::update):
+        (JSC::ARM64EHash::finalHash const):
+
+2019-01-24  Saam Barati  <sbarati@apple.com>
+
         Object Allocation Sinking phase can move a node that walks the stack into a place where the InlineCallFrame is no longer valid
         https://bugs.webkit.org/show_bug.cgi?id=193751
         <rdar://problem/47280215>
index 97f2820..5913132 100644 (file)
@@ -155,14 +155,14 @@ namespace JSC {
             uint64_t input = value ^ m_hash;
             uint64_t a = static_cast<uint32_t>(tagInt(input, static_cast<PtrTag>(0)) >> 39);
             uint64_t b = tagInt(input, static_cast<PtrTag>(0xb7e151628aed2a6a)) >> 23;
-            m_hash = a | b;
+            m_hash = a ^ b;
         }
         uint32_t finalHash() const
         {
             uint64_t hash = m_hash;
             uint64_t a = static_cast<uint32_t>(tagInt(hash, static_cast<PtrTag>(0xbf7158809cf4f3c7)) >> 39);
             uint64_t b = tagInt(hash, static_cast<PtrTag>(0x62e7160f38b4da56)) >> 23;
-            return static_cast<uint32_t>(a | b);
+            return static_cast<uint32_t>(a ^ b);
         }
     private:
         uint32_t m_hash { 0 };