WebKit Bugzilla
Attachment 356799 Details for
Bug 192496
: Enable DFG on ARM/Linux again
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Requests
|
Help
|
New Account
|
Log In
Remember
[x]
|
Forgot Password
Login:
[x]
[patch]
Patch
bug-192496-20181207133253.patch (text/plain), 14.62 KB, created by
Dominik Inführ
on 2018-12-07 04:32:55 PST
(
hide
)
Description:
Patch
Filename:
MIME Type:
Creator:
Dominik Inführ
Created:
2018-12-07 04:32:55 PST
Size:
14.62 KB
patch
obsolete
>Subversion Revision: 238950 >diff --git a/Source/JavaScriptCore/ChangeLog b/Source/JavaScriptCore/ChangeLog >index ac53c4cf7c1eb23870742f6de68a16f3b43f3bbd..986670d3cb8fbd391151a5224e59aec0fd866155 100644 >--- a/Source/JavaScriptCore/ChangeLog >+++ b/Source/JavaScriptCore/ChangeLog >@@ -1,3 +1,25 @@ >+2018-12-07 Dominik Infuehr <dinfuehr@igalia.com> >+ >+ Enable DFG on ARM/Linux again >+ https://bugs.webkit.org/show_bug.cgi?id=192496 >+ >+ Reviewed by NOBODY (OOPS!). >+ >+ After changing the bytecode format DFG was disabled on all 32-bit >+ architectures. Enable DFG now again on ARM/Linux. Do not use register r11 >+ in compiled DFG code. >+ >+ * dfg/DFGOSRExit.cpp: >+ (JSC::DFG::restoreCalleeSavesFromVMEntryFrameCalleeSavesBuffer): >+ (JSC::DFG::copyCalleeSavesToVMEntryFrameCalleeSavesBuffer): >+ * jit/CallFrameShuffler.cpp: >+ (JSC::CallFrameShuffler::CallFrameShuffler): >+ * jit/GPRInfo.h: >+ (JSC::GPRInfo::toIndex): >+ * jit/RegisterSet.cpp: >+ (JSC::RegisterSet::dfgCalleeSaveRegisters): >+ * llint/LowLevelInterpreter32_64.asm: >+ > 2018-12-05 Mark Lam <mark.lam@apple.com> > > speculationFromCell() should speculate non-Identifier strings as SpecString instead of SpecStringVar. >diff --git a/Source/WTF/ChangeLog b/Source/WTF/ChangeLog >index d493a4e9beb2d1a08aa1f3685c740302ba16b965..55054c09171480b91e2fcb87fecd6afaedfcef3b 100644 >--- a/Source/WTF/ChangeLog >+++ b/Source/WTF/ChangeLog >@@ -1,3 +1,15 @@ >+2018-12-07 Dominik Infuehr <dinfuehr@igalia.com> >+ >+ Enable DFG on ARM/Linux again >+ https://bugs.webkit.org/show_bug.cgi?id=192496 >+ >+ Reviewed by NOBODY (OOPS!). >+ >+ After changing the bytecode format DFG was disabled on all 32-bit >+ architectures. Enable DFG now again on ARM/Linux. >+ >+ * wtf/Platform.h: >+ > 2018-12-06 Alexey Proskuryakov <ap@apple.com> > > Move USE_NEW_THEME out of WebCore's config.h >diff --git a/Source/JavaScriptCore/dfg/DFGOSRExit.cpp b/Source/JavaScriptCore/dfg/DFGOSRExit.cpp >index 6ea97769c09d32b936e04c87e84c8c8deed4a0a4..c86f54a8a6a49baeddc25676d9a6cab926810550 100644 >--- a/Source/JavaScriptCore/dfg/DFGOSRExit.cpp >+++ b/Source/JavaScriptCore/dfg/DFGOSRExit.cpp >@@ -75,8 +75,6 @@ static JSValue jsValueFor(CPUState& cpu, JSValueSource source) > > #if NUMBER_OF_CALLEE_SAVES_REGISTERS > 0 > >-static_assert(is64Bit(), "we only support callee save registers on 64-bit"); >- > // Based on AssemblyHelpers::emitRestoreCalleeSavesFor(). > static void restoreCalleeSavesFor(Context& context, CodeBlock* codeBlock) > { >@@ -138,7 +136,11 @@ static void restoreCalleeSavesFromVMEntryFrameCalleeSavesBuffer(Context& context > if (entry.reg().isGPR()) > context.gpr(entry.reg().gpr()) = calleeSaveBuffer[uintptrOffset]; > else >+#if USE(JSVALUE64) > context.fpr(entry.reg().fpr()) = bitwise_cast<double>(calleeSaveBuffer[uintptrOffset]); >+#else >+ RELEASE_ASSERT_NOT_REACHED(); >+#endif > } > } > >@@ -162,7 +164,11 @@ static void copyCalleeSavesToVMEntryFrameCalleeSavesBuffer(Context& context) > if (entry.reg().isGPR()) > stack.set(calleeSaveBuffer, entry.offset(), context.gpr<UCPURegister>(entry.reg().gpr())); > else >+#if USE(JSVALUE64) > stack.set(calleeSaveBuffer, entry.offset(), context.fpr<UCPURegister>(entry.reg().fpr())); >+#else >+ RELEASE_ASSERT_NOT_REACHED(); >+#endif > } > } > >diff --git a/Source/JavaScriptCore/jit/CallFrameShuffler.cpp b/Source/JavaScriptCore/jit/CallFrameShuffler.cpp >index 6df81e1a9cb89d66569f57cc90b78d4660235782..a77ba9eb87d11c42b57e7e1814095a51173a1014 100644 >--- a/Source/JavaScriptCore/jit/CallFrameShuffler.cpp >+++ b/Source/JavaScriptCore/jit/CallFrameShuffler.cpp >@@ -51,8 +51,11 @@ CallFrameShuffler::CallFrameShuffler(CCallHelpers& jit, const CallFrameShuffleDa > m_lockedRegisters.clear(GPRInfo::toRegister(i)); > for (unsigned i = FPRInfo::numberOfRegisters; i--; ) > m_lockedRegisters.clear(FPRInfo::toRegister(i)); >+ >+#if USE(JSVALUE64) > // ... as well as the runtime registers. > m_lockedRegisters.exclude(RegisterSet::vmCalleeSaveRegisters()); >+#endif > > ASSERT(!data.callee.isInJSStack() || data.callee.virtualRegister().isLocal()); > addNew(VirtualRegister(CallFrameSlot::callee), data.callee); >diff --git a/Source/JavaScriptCore/jit/GPRInfo.h b/Source/JavaScriptCore/jit/GPRInfo.h >index 1a0a5c9742b4db7cdea8c8965536c30e9b9fa765..64997e8c6bcaea79220cca248adc161973bddd4c 100644 >--- a/Source/JavaScriptCore/jit/GPRInfo.h >+++ b/Source/JavaScriptCore/jit/GPRInfo.h >@@ -548,11 +548,7 @@ public: > static const GPRReg regT4 = ARMRegisters::r8; > static const GPRReg regT5 = ARMRegisters::r9; > static const GPRReg regT6 = ARMRegisters::r10; >-#if CPU(ARM_THUMB2) >- static const GPRReg regT7 = ARMRegisters::r11; >-#else >- static const GPRReg regT7 = ARMRegisters::r7; >-#endif >+ static const GPRReg regT7 = ARMRegisters::r5; > static const GPRReg regT8 = ARMRegisters::r4; > static const GPRReg regCS0 = ARMRegisters::r11; > // These registers match the baseline JIT. >@@ -587,11 +583,7 @@ public: > ASSERT(reg != InvalidGPRReg); > ASSERT(static_cast<int>(reg) < 16); > static const unsigned indexForRegister[16] = >-#if CPU(ARM_THUMB2) >- { 0, 1, 2, 3, 8, InvalidIndex, InvalidIndex, InvalidIndex, 4, 5, 6, 7, InvalidIndex, InvalidIndex, InvalidIndex, InvalidIndex }; >-#else >- { 0, 1, 2, 3, 8, InvalidIndex, InvalidIndex, 7, 4, 5, 6, InvalidIndex, InvalidIndex, InvalidIndex, InvalidIndex, InvalidIndex }; >-#endif >+ { 0, 1, 2, 3, 8, 7, InvalidIndex, InvalidIndex, 4, 5, 6, InvalidIndex, InvalidIndex, InvalidIndex, InvalidIndex, InvalidIndex }; > unsigned result = indexForRegister[reg]; > return result; > } >diff --git a/Source/JavaScriptCore/jit/RegisterSet.cpp b/Source/JavaScriptCore/jit/RegisterSet.cpp >index 7c94804a1341af86973cb89bce52d9565c8f8c37..26561acc63a5f4165893c7d8f7b17d5a7c8827a5 100644 >--- a/Source/JavaScriptCore/jit/RegisterSet.cpp >+++ b/Source/JavaScriptCore/jit/RegisterSet.cpp >@@ -266,6 +266,7 @@ RegisterSet RegisterSet::dfgCalleeSaveRegisters() > result.set(GPRInfo::regCS6); > #endif > #elif CPU(ARM_THUMB2) >+ // result.set(GPRInfo::regCS0); > #elif CPU(ARM64) > ASSERT(GPRInfo::regCS8 == GPRInfo::tagTypeNumberRegister); > ASSERT(GPRInfo::regCS9 == GPRInfo::tagMaskRegister); >diff --git a/Source/JavaScriptCore/llint/LowLevelInterpreter32_64.asm b/Source/JavaScriptCore/llint/LowLevelInterpreter32_64.asm >index bb22057deaddb2c865e26965a3750a535c3549c3..e80a3842b74d05fe43ec0f4182287dbed772531f 100644 >--- a/Source/JavaScriptCore/llint/LowLevelInterpreter32_64.asm >+++ b/Source/JavaScriptCore/llint/LowLevelInterpreter32_64.asm >@@ -2002,6 +2002,11 @@ end) > > > op(llint_throw_from_slow_path_trampoline, macro() >+ loadp Callee[cfr], t1 >+ andp MarkedBlockMask, t1 >+ loadp MarkedBlockFooterOffset + MarkedBlock::Footer::m_vm[t1], t1 >+ copyCalleeSavesToVMEntryFrameCalleeSavesBuffer(t1, t2) >+ > callSlowPath(_llint_slow_path_handle_exception) > > # When throwing from the interpreter (i.e. throwing from LLIntSlowPaths), so >@@ -2010,7 +2015,6 @@ op(llint_throw_from_slow_path_trampoline, macro() > loadp Callee[cfr], t1 > andp MarkedBlockMask, t1 > loadp MarkedBlockFooterOffset + MarkedBlock::Footer::m_vm[t1], t1 >- copyCalleeSavesToVMEntryFrameCalleeSavesBuffer(t1, t2) > jmp VM::targetMachinePCForThrow[t1] > end) > >diff --git a/Source/WTF/wtf/Platform.h b/Source/WTF/wtf/Platform.h >index 54efd1d336ed267d840282c2c1f22afcb357fb9e..8afb4e6b54fbefccb1e786f54c4d52e4594ae925 100644 >--- a/Source/WTF/wtf/Platform.h >+++ b/Source/WTF/wtf/Platform.h >@@ -764,9 +764,6 @@ > #if !defined(ENABLE_JIT) > #define ENABLE_JIT 1 > #endif >-/* But still disable DFG for now. */ >-#undef ENABLE_DFG_JIT >-#define ENABLE_DFG_JIT 0 > #else > /* Disable JIT and force C_LOOP on all 32bit-architectures but ARMv7-Thumb2/Linux. */ > #undef ENABLE_JIT >diff --git a/Tools/ChangeLog b/Tools/ChangeLog >index 97a692bad01dc317e908b26f01318ba7eb506a64..da8993fa6163c1caae8c8ecb74bb1df33fc39379 100644 >--- a/Tools/ChangeLog >+++ b/Tools/ChangeLog >@@ -1,3 +1,16 @@ >+2018-12-07 Dominik Infuehr <dinfuehr@igalia.com> >+ >+ Enable DFG on ARM/Linux again >+ https://bugs.webkit.org/show_bug.cgi?id=192496 >+ >+ Reviewed by NOBODY (OOPS!). >+ >+ After changing the bytecode format DFG was disabled on all 32-bit >+ architectures. Enable DFG now again on ARM/Linux. Run again JIT-tests >+ on ARM by default. >+ >+ * Scripts/run-jsc-stress-tests: >+ > 2018-12-06 Jonathan Bedard <jbedard@apple.com> > > Consecutive DumpRenderTree crashes are happening again on WinCairo BuildBots since r238903 >diff --git a/Tools/Scripts/run-jsc-stress-tests b/Tools/Scripts/run-jsc-stress-tests >index 35a9eb1c55e102b52dd4557023d92d1603e0c5a1..62fa70fc78088ccea9295c29d46401f975fca18c 100755 >--- a/Tools/Scripts/run-jsc-stress-tests >+++ b/Tools/Scripts/run-jsc-stress-tests >@@ -449,7 +449,7 @@ $hostOS = determineOS unless $hostOS > $architecture = determineArchitecture unless $architecture > $isFTLPlatform = !($architecture == "x86" || $architecture == "arm" || $architecture == "mips" || $hostOS == "windows") > >-if ["arm", "mips", "x86"].include?($architecture) >+if ["mips", "x86"].include?($architecture) > # The JIT is temporarily disabled on these platforms since > # https://trac.webkit.org/changeset/237547 > $jitTests = false >diff --git a/LayoutTests/ChangeLog b/LayoutTests/ChangeLog >index df26188882f06e3503f3f784b2d21f82cd6cfb67..62f06be33599974f47e30effc3574eb46f21440c 100644 >--- a/LayoutTests/ChangeLog >+++ b/LayoutTests/ChangeLog >@@ -1,3 +1,23 @@ >+2018-12-07 Dominik Infuehr <dinfuehr@igalia.com> >+ >+ Enable DFG on ARM/Linux again >+ https://bugs.webkit.org/show_bug.cgi?id=192496 >+ >+ Reviewed by NOBODY (OOPS!). >+ >+ After changing the bytecode format DFG was disabled on all 32-bit >+ architectures. Enable DFG now again on ARM/Linux. Disable tests >+ that run out of executable memory with LLInt disabled. >+ >+ * js/script-tests/dfg-float32array.js: >+ * js/script-tests/dfg-int16array.js: >+ * js/script-tests/dfg-int32array-overflow-values.js: >+ * js/script-tests/dfg-int32array.js: >+ * js/script-tests/dfg-int8array.js: >+ * js/script-tests/dfg-uint16array.js: >+ * js/script-tests/dfg-uint32array.js: >+ * js/script-tests/dfg-uint8array.js: >+ > 2018-12-06 Yongjun Zhang <yongjun_zhang@apple.com> > > We should ignore minimumEffectiveDeviceWidth if the page specifies device-width in viewport meta-tag. >diff --git a/LayoutTests/js/script-tests/dfg-float32array.js b/LayoutTests/js/script-tests/dfg-float32array.js >index 4211465d6de2322a67750abb0e5540c570dfafe3..1fef87726cce52b8579ba199ed01feaf7e8b66fa 100644 >--- a/LayoutTests/js/script-tests/dfg-float32array.js >+++ b/LayoutTests/js/script-tests/dfg-float32array.js >@@ -1,4 +1,4 @@ >-//@ noNoLLIntRunLayoutTest if $architecture == "arm" and $hostOS == "darwin" >+//@ noNoLLIntRunLayoutTest if $architecture == "arm" > > description( > "This tests that float32 arrays work in the DFG." >diff --git a/LayoutTests/js/script-tests/dfg-int16array.js b/LayoutTests/js/script-tests/dfg-int16array.js >index 3e1efc3a0b918df1eb1fb48304a8d514e11d1793..19ad96fc0d62a017ce2604450c1fdb0e03901f2d 100644 >--- a/LayoutTests/js/script-tests/dfg-int16array.js >+++ b/LayoutTests/js/script-tests/dfg-int16array.js >@@ -1,4 +1,4 @@ >-//@ noNoLLIntRunLayoutTest if $architecture == "arm" and $hostOS == "darwin" >+//@ noNoLLIntRunLayoutTest if $architecture == "arm" > > description( > "This tests that int16 arrays work in the DFG." >diff --git a/LayoutTests/js/script-tests/dfg-int32array-overflow-values.js b/LayoutTests/js/script-tests/dfg-int32array-overflow-values.js >index 2edd518a8811d53fa1e147f8d2c11569987fabf3..bf551c3e912196aa3d8acee2728ea71f23a2ce2e 100644 >--- a/LayoutTests/js/script-tests/dfg-int32array-overflow-values.js >+++ b/LayoutTests/js/script-tests/dfg-int32array-overflow-values.js >@@ -1,4 +1,4 @@ >-//@ noNoLLIntRunLayoutTest if $architecture == "arm" and $hostOS == "darwin" >+//@ noNoLLIntRunLayoutTest if $architecture == "arm" > > description( > "This tests that int32 arrays work in the DFG." >diff --git a/LayoutTests/js/script-tests/dfg-int32array.js b/LayoutTests/js/script-tests/dfg-int32array.js >index 490c6a3da86fa86dcada83a3ca157759b450b3af..66271290e1aa1df9b764cd4a48b74e9b622ee69d 100644 >--- a/LayoutTests/js/script-tests/dfg-int32array.js >+++ b/LayoutTests/js/script-tests/dfg-int32array.js >@@ -1,4 +1,4 @@ >-//@ noNoLLIntRunLayoutTest if $architecture == "arm" and $hostOS == "darwin" >+//@ noNoLLIntRunLayoutTest if $architecture == "arm" > > description( > "This tests that int32 arrays work in the DFG." >diff --git a/LayoutTests/js/script-tests/dfg-int8array.js b/LayoutTests/js/script-tests/dfg-int8array.js >index feb83e3f0fde205d61582e3b183cc0728daaebcf..05f69e36e8867e4bcc3b1b8c09ba44b06ae31049 100644 >--- a/LayoutTests/js/script-tests/dfg-int8array.js >+++ b/LayoutTests/js/script-tests/dfg-int8array.js >@@ -1,4 +1,4 @@ >-//@ noNoLLIntRunLayoutTest if $architecture == "arm" and $hostOS == "darwin" >+//@ noNoLLIntRunLayoutTest if $architecture == "arm" > > description( > "This tests that int8 arrays work in the DFG." >diff --git a/LayoutTests/js/script-tests/dfg-uint16array.js b/LayoutTests/js/script-tests/dfg-uint16array.js >index ba53b7b0bbf36ffac0239f3279ae6c15a3cceed6..234e897affc63f273c95baa3ef6ef5fe5524daac 100644 >--- a/LayoutTests/js/script-tests/dfg-uint16array.js >+++ b/LayoutTests/js/script-tests/dfg-uint16array.js >@@ -1,4 +1,4 @@ >-//@ noNoLLIntRunLayoutTest if $architecture == "arm" and $hostOS == "darwin" >+//@ noNoLLIntRunLayoutTest if $architecture == "arm" > > description( > "This tests that uint16 arrays work in the DFG." >diff --git a/LayoutTests/js/script-tests/dfg-uint32array.js b/LayoutTests/js/script-tests/dfg-uint32array.js >index f1c48ab5db3175d6c35bcc41ee0e9e491d703b9c..bea38e00e2cf6671683978485a2f1be370dbd50e 100644 >--- a/LayoutTests/js/script-tests/dfg-uint32array.js >+++ b/LayoutTests/js/script-tests/dfg-uint32array.js >@@ -1,4 +1,4 @@ >-//@ noNoLLIntRunLayoutTest if $architecture == "arm" and $hostOS == "darwin" >+//@ noNoLLIntRunLayoutTest if $architecture == "arm" > > description( > "This tests that uint32 arrays work in the DFG." >diff --git a/LayoutTests/js/script-tests/dfg-uint8array.js b/LayoutTests/js/script-tests/dfg-uint8array.js >index 95e8bcbc89339801243dc22b0c45ccc38f873041..339d85554e75b820cc2a3c1a9eedae3d9b99b9e1 100644 >--- a/LayoutTests/js/script-tests/dfg-uint8array.js >+++ b/LayoutTests/js/script-tests/dfg-uint8array.js >@@ -1,4 +1,4 @@ >-//@ noNoLLIntRunLayoutTest if $architecture == "arm" and $hostOS == "darwin" >+//@ noNoLLIntRunLayoutTest if $architecture == "arm" > > description( > "This tests that uint8 arrays work in the DFG."
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Formatted Diff
|
Diff
Attachments on
bug 192496
:
356799
|
356800
|
357221
|
358603
|
358683