Title: [226840] trunk/Source/_javascript_Core
Revision
226840
Author
msab...@apple.com
Date
2018-01-11 19:30:40 -0800 (Thu, 11 Jan 2018)

Log Message

REGRESSION(226788): AppStore Crashed @ _javascript_Core: JSC::MacroAssemblerARM64::pushToSaveImmediateWithoutTouchingRegisters
https://bugs.webkit.org/show_bug.cgi?id=181570

Reviewed by Keith Miller.

* assembler/MacroAssemblerARM64.h:
(JSC::MacroAssemblerARM64::abortWithReason):
Reverting these functions to use dataTempRegister and memoryTempRegister as they are
JIT release asserts that will crash the program.

(JSC::MacroAssemblerARM64::pushToSaveImmediateWithoutTouchingRegisters):
Changed this so that it invalidates any cached dataTmpRegister contents if temp register
caching is enabled.

Modified Paths

Diff

Modified: trunk/Source/_javascript_Core/ChangeLog (226839 => 226840)


--- trunk/Source/_javascript_Core/ChangeLog	2018-01-12 03:16:52 UTC (rev 226839)
+++ trunk/Source/_javascript_Core/ChangeLog	2018-01-12 03:30:40 UTC (rev 226840)
@@ -1,3 +1,19 @@
+2018-01-11  Michael Saboff  <msab...@apple.com>
+
+        REGRESSION(226788): AppStore Crashed @ _javascript_Core: JSC::MacroAssemblerARM64::pushToSaveImmediateWithoutTouchingRegisters
+        https://bugs.webkit.org/show_bug.cgi?id=181570
+
+        Reviewed by Keith Miller.
+
+        * assembler/MacroAssemblerARM64.h:
+        (JSC::MacroAssemblerARM64::abortWithReason):
+        Reverting these functions to use dataTempRegister and memoryTempRegister as they are
+        JIT release asserts that will crash the program.
+
+        (JSC::MacroAssemblerARM64::pushToSaveImmediateWithoutTouchingRegisters):
+        Changed this so that it invalidates any cached dataTmpRegister contents if temp register
+        caching is enabled.
+
 2018-01-11  Filip Pizlo  <fpi...@apple.com>
 
         Rename MarkedAllocator to BlockDirectory and AllocatorAttributes to CellAttributes

Modified: trunk/Source/_javascript_Core/assembler/MacroAssemblerARM64.h (226839 => 226840)


--- trunk/Source/_javascript_Core/assembler/MacroAssemblerARM64.h	2018-01-12 03:16:52 UTC (rev 226839)
+++ trunk/Source/_javascript_Core/assembler/MacroAssemblerARM64.h	2018-01-12 03:30:40 UTC (rev 226840)
@@ -1105,13 +1105,15 @@
 
     void abortWithReason(AbortReason reason)
     {
-        move(TrustedImm32(reason), getCachedDataTempRegisterIDAndInvalidate());
+        // It is safe to use dataTempRegister directly since this is a crashing JIT Assert.
+        move(TrustedImm32(reason), dataTempRegister);
         breakpoint();
     }
 
     void abortWithReason(AbortReason reason, intptr_t misc)
     {
-        move(TrustedImm64(misc), getCachedMemoryTempRegisterIDAndInvalidate());
+        // It is safe to use memoryTempRegister directly since this is a crashing JIT Assert.
+        move(TrustedImm64(misc), memoryTempRegister);
         abortWithReason(reason);
     }
 
@@ -2201,7 +2203,8 @@
     
     void pushToSaveImmediateWithoutTouchingRegisters(TrustedImm32 imm)
     {
-        RegisterID reg = getCachedDataTempRegisterIDAndInvalidate();
+        // We invalidate any cached values in dataTempRegister if temp register caching is enabled.
+        RegisterID reg = m_allowScratchRegister ? getCachedDataTempRegisterIDAndInvalidate() : dataTempRegister;
         pushPair(reg, reg);
         move(imm, reg);
         store64(reg, stackPointerRegister);
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to