Unreviewed, rolling out r239825.
authorcommit-queue@webkit.org <commit-queue@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Thu, 10 Jan 2019 20:04:32 +0000 (20:04 +0000)
committercommit-queue@webkit.org <commit-queue@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Thu, 10 Jan 2019 20:04:32 +0000 (20:04 +0000)
https://bugs.webkit.org/show_bug.cgi?id=193330

Broke tests on armv7/linux bots (Requested by guijemont on
#webkit).

Reverted changeset:

"Enable DFG on ARM/Linux again"
https://bugs.webkit.org/show_bug.cgi?id=192496
https://trac.webkit.org/changeset/239825

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

23 files changed:
JSTests/ChangeLog
JSTests/stress/regress-192717.js
LayoutTests/ChangeLog
LayoutTests/js/script-tests/dfg-float32array.js
LayoutTests/js/script-tests/dfg-float64array.js
LayoutTests/js/script-tests/dfg-int16array.js
LayoutTests/js/script-tests/dfg-int32array-overflow-values.js
LayoutTests/js/script-tests/dfg-int32array.js
LayoutTests/js/script-tests/dfg-int8array.js
LayoutTests/js/script-tests/dfg-uint16array.js
LayoutTests/js/script-tests/dfg-uint32array.js
LayoutTests/js/script-tests/dfg-uint8array.js
Source/JavaScriptCore/ChangeLog
Source/JavaScriptCore/assembler/AbstractMacroAssembler.h
Source/JavaScriptCore/dfg/DFGOSRExit.cpp
Source/JavaScriptCore/jit/CallFrameShuffler.cpp
Source/JavaScriptCore/jit/GPRInfo.h
Source/JavaScriptCore/llint/LowLevelInterpreter32_64.asm
Source/JavaScriptCore/offlineasm/arm.rb
Source/WTF/ChangeLog
Source/WTF/wtf/Platform.h
Tools/ChangeLog
Tools/Scripts/run-jsc-stress-tests

index 851e546..742dd3f 100644 (file)
@@ -1,3 +1,17 @@
+2019-01-10  Commit Queue  <commit-queue@webkit.org>
+
+        Unreviewed, rolling out r239825.
+        https://bugs.webkit.org/show_bug.cgi?id=193330
+
+        Broke tests on armv7/linux bots (Requested by guijemont on
+        #webkit).
+
+        Reverted changeset:
+
+        "Enable DFG on ARM/Linux again"
+        https://bugs.webkit.org/show_bug.cgi?id=192496
+        https://trac.webkit.org/changeset/239825
+
 2019-01-10  Dominik Infuehr  <dinfuehr@igalia.com>
 
         Enable DFG on ARM/Linux again
index f941a85..91a1ed8 100644 (file)
@@ -1,5 +1,5 @@
-//@ skip if $memoryLimited or $buildType == "debug"
 //@ runDefault("--useLLInt=false", "--forceCodeBlockToJettisonDueToOldAge=true", "--maxPerThreadStackUsage=200000", "--exceptionStackTraceLimit=1", "--defaultErrorStackTraceLimit=1")
+//@ skip if $memoryLimited or $buildType == "debug"
 
 let foo = 'let a';
 for (let i = 0; i < 400000; i++)
index 166bd73..21f7788 100644 (file)
@@ -1,3 +1,17 @@
+2019-01-10  Commit Queue  <commit-queue@webkit.org>
+
+        Unreviewed, rolling out r239825.
+        https://bugs.webkit.org/show_bug.cgi?id=193330
+
+        Broke tests on armv7/linux bots (Requested by guijemont on
+        #webkit).
+
+        Reverted changeset:
+
+        "Enable DFG on ARM/Linux again"
+        https://bugs.webkit.org/show_bug.cgi?id=192496
+        https://trac.webkit.org/changeset/239825
+
 2019-01-10  Justin Fan  <justin_fan@apple.com>
 
         [WebGPU] Fix vertex-buffer-triangle-strip test and small update to GPURenderPipeline
index 1fef877..4211465 100644 (file)
@@ -1,4 +1,4 @@
-//@ noNoLLIntRunLayoutTest if $architecture == "arm"
+//@ noNoLLIntRunLayoutTest if $architecture == "arm" and $hostOS == "darwin"
 
 description(
 "This tests that float32 arrays work in the DFG."
index b712bd2..d58990e 100644 (file)
@@ -1,4 +1,4 @@
-//@ noNoLLIntRunLayoutTest if $architecture == "arm"
+//@ noNoLLIntRunLayoutTest if $architecture == "arm" and $hostOS == "darwin"
 
 description(
 "This tests that float64 arrays work in the DFG."
index 19ad96f..3e1efc3 100644 (file)
@@ -1,4 +1,4 @@
-//@ noNoLLIntRunLayoutTest if $architecture == "arm"
+//@ noNoLLIntRunLayoutTest if $architecture == "arm" and $hostOS == "darwin"
 
 description(
 "This tests that int16 arrays work in the DFG."
index bf551c3..2edd518 100644 (file)
@@ -1,4 +1,4 @@
-//@ noNoLLIntRunLayoutTest if $architecture == "arm"
+//@ noNoLLIntRunLayoutTest if $architecture == "arm" and $hostOS == "darwin"
 
 description(
 "This tests that int32 arrays work in the DFG."
index 6627129..490c6a3 100644 (file)
@@ -1,4 +1,4 @@
-//@ noNoLLIntRunLayoutTest if $architecture == "arm"
+//@ noNoLLIntRunLayoutTest if $architecture == "arm" and $hostOS == "darwin"
 
 description(
 "This tests that int32 arrays work in the DFG."
index 05f69e3..feb83e3 100644 (file)
@@ -1,4 +1,4 @@
-//@ noNoLLIntRunLayoutTest if $architecture == "arm"
+//@ noNoLLIntRunLayoutTest if $architecture == "arm" and $hostOS == "darwin"
 
 description(
 "This tests that int8 arrays work in the DFG."
index 234e897..ba53b7b 100644 (file)
@@ -1,4 +1,4 @@
-//@ noNoLLIntRunLayoutTest if $architecture == "arm"
+//@ noNoLLIntRunLayoutTest if $architecture == "arm" and $hostOS == "darwin"
 
 description(
 "This tests that uint16 arrays work in the DFG."
index bea38e0..f1c48ab 100644 (file)
@@ -1,4 +1,4 @@
-//@ noNoLLIntRunLayoutTest if $architecture == "arm"
+//@ noNoLLIntRunLayoutTest if $architecture == "arm" and $hostOS == "darwin"
 
 description(
 "This tests that uint32 arrays work in the DFG."
index 339d855..95e8bcb 100644 (file)
@@ -1,4 +1,4 @@
-//@ noNoLLIntRunLayoutTest if $architecture == "arm"
+//@ noNoLLIntRunLayoutTest if $architecture == "arm" and $hostOS == "darwin"
 
 description(
 "This tests that uint8 arrays work in the DFG."
index 65a5e57..416edca 100644 (file)
@@ -1,3 +1,17 @@
+2019-01-10  Commit Queue  <commit-queue@webkit.org>
+
+        Unreviewed, rolling out r239825.
+        https://bugs.webkit.org/show_bug.cgi?id=193330
+
+        Broke tests on armv7/linux bots (Requested by guijemont on
+        #webkit).
+
+        Reverted changeset:
+
+        "Enable DFG on ARM/Linux again"
+        https://bugs.webkit.org/show_bug.cgi?id=192496
+        https://trac.webkit.org/changeset/239825
+
 2019-01-10  Dominik Infuehr  <dinfuehr@igalia.com>
 
         Enable DFG on ARM/Linux again
index f9d0030..1378540 100644 (file)
@@ -749,7 +749,7 @@ public:
             m_jumps.append(other.m_jumps.begin(), other.m_jumps.size());
         }
 
-        bool empty() const
+        bool empty()
         {
             return !m_jumps.size();
         }
index 6d464f3..069cf85 100644 (file)
@@ -75,6 +75,8 @@ 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)
 {
@@ -135,14 +137,8 @@ static void restoreCalleeSavesFromVMEntryFrameCalleeSavesBuffer(Context& context
         size_t uintptrOffset = entry.offset() / sizeof(UCPURegister);
         if (entry.reg().isGPR())
             context.gpr(entry.reg().gpr()) = calleeSaveBuffer[uintptrOffset];
-        else {
-#if USE(JSVALUE64)
+        else
             context.fpr(entry.reg().fpr()) = bitwise_cast<double>(calleeSaveBuffer[uintptrOffset]);
-#else
-            // FIXME: <https://webkit.org/b/193275> support callee-saved floating point registers on 32-bit architectures
-            RELEASE_ASSERT_NOT_REACHED();
-#endif
-        }
     }
 }
 
@@ -165,14 +161,8 @@ static void copyCalleeSavesToVMEntryFrameCalleeSavesBuffer(Context& context)
             continue;
         if (entry.reg().isGPR())
             stack.set(calleeSaveBuffer, entry.offset(), context.gpr<UCPURegister>(entry.reg().gpr()));
-        else {
-#if USE(JSVALUE64)
+        else
             stack.set(calleeSaveBuffer, entry.offset(), context.fpr<UCPURegister>(entry.reg().fpr()));
-#else
-            // FIXME: <https://webkit.org/b/193275> support callee-saved floating point registers on 32-bit architectures
-            RELEASE_ASSERT_NOT_REACHED();
-#endif
-        }
     }
 }
 
index 81c3e2d..6df81e1 100644 (file)
@@ -51,14 +51,8 @@ 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 on 64-bit architectures.
-    // However do not use these registers on 32-bit architectures since
-    // saving and restoring callee-saved registers in CallFrameShuffler isn't supported
-    // on 32-bit architectures yet.
+    // ... 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);
index 175d530..1a0a5c9 100644 (file)
@@ -526,9 +526,13 @@ public:
 
 #endif // CPU(X86_64)
 
-#if CPU(ARM_THUMB2)
+#if CPU(ARM)
 #define NUMBER_OF_ARGUMENT_REGISTERS 4u
+#if CPU(ARM_THUMB2)
 #define NUMBER_OF_CALLEE_SAVES_REGISTERS 1u
+#else
+#define NUMBER_OF_CALLEE_SAVES_REGISTERS 0u
+#endif
 
 class GPRInfo {
 public:
@@ -544,7 +548,11 @@ public:
     static const GPRReg regT4 = ARMRegisters::r8;
     static const GPRReg regT5 = ARMRegisters::r9;
     static const GPRReg regT6 = ARMRegisters::r10;
-    static const GPRReg regT7 = ARMRegisters::r5;
+#if CPU(ARM_THUMB2)
+    static const GPRReg regT7 = ARMRegisters::r11;
+#else 
+    static const GPRReg regT7 = ARMRegisters::r7;
+#endif
     static const GPRReg regT8 = ARMRegisters::r4;
     static const GPRReg regCS0 = ARMRegisters::r11;
     // These registers match the baseline JIT.
@@ -579,7 +587,11 @@ public:
         ASSERT(reg != InvalidGPRReg);
         ASSERT(static_cast<int>(reg) < 16);
         static const unsigned indexForRegister[16] =
-            { 0, 1, 2, 3, 8, 7, InvalidIndex, InvalidIndex, 4, 5, 6, InvalidIndex, InvalidIndex, InvalidIndex, InvalidIndex, InvalidIndex };
+#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
         unsigned result = indexForRegister[reg];
         return result;
     }
index a505a55..05b3a69 100644 (file)
@@ -2012,11 +2012,6 @@ 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
@@ -2025,6 +2020,7 @@ 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)
 
index 85e0b8e..d78b82e 100644 (file)
@@ -34,7 +34,7 @@ require "risc"
 #  x2 => t2, a2, r2
 #  x3 => t3, a3, r3
 #  x6 =>            (callee-save scratch)
-#  x7 => cfr
+#  x7 => cfr        (ARMv7 only)
 #  x8 => t4         (callee-save)
 #  x9 => t5         (callee-save)
 # x10 =>            (callee-save scratch)
@@ -55,6 +55,15 @@ require "risc"
 # d6 =>              (scratch)
 # d7 =>              (scratch)
 
+def isARMv7
+    case $activeBackend
+    when "ARMv7"
+        true
+    else
+        raise "bad value for $activeBackend: #{$activeBackend}"
+    end
+end
+
 class Node
     def armSingle
         doubleOperand = armOperand
@@ -82,11 +91,13 @@ def armMoveImmediate(value, register)
         $asm.puts "mov #{register.armOperand}, \##{value}"
     elsif (~value) >= 0 && (~value) < 256
         $asm.puts "mvn #{register.armOperand}, \##{~value}"
-    else
+    elsif isARMv7
         $asm.puts "movw #{register.armOperand}, \##{value & 0xffff}"
         if (value & 0xffff0000) != 0
             $asm.puts "movt #{register.armOperand}, \##{(value >> 16) & 0xffff}"
         end
+    else
+        $asm.puts "ldr #{register.armOperand}, =#{value}"
     end
 end
 
@@ -108,7 +119,7 @@ class RegisterID
         when "t5"
             "r9"
         when "cfr"
-            "r7"
+            isARMv7 ?  "r7" : "r11"
         when "csr0"
             "r11"
         when "lr"
@@ -598,6 +609,9 @@ class Instruction
             else
                 $asm.puts "mov pc, #{operands[0].armOperand}"
             end
+            if not isARMv7 and not isARMv7Traditional
+                $asm.puts ".ltorg"
+            end
         when "call"
             if operands[0].label?
                 if OS_DARWIN
@@ -678,7 +692,7 @@ class Instruction
             $asm.puts "add #{dest.armOperand}, pc, #{dest.armOperand}"
             $asm.puts "ldr #{dest.armOperand}, [#{dest.armOperand}, #{temp.armOperand}]"
 
-            offset = 4
+            offset = $activeBackend == "ARMv7" ? 4 : 8
 
             $asm.deferNextLabelAction {
                 $asm.puts "#{gotLabel}:"
index 786ba97..324ee66 100644 (file)
@@ -1,3 +1,17 @@
+2019-01-10  Commit Queue  <commit-queue@webkit.org>
+
+        Unreviewed, rolling out r239825.
+        https://bugs.webkit.org/show_bug.cgi?id=193330
+
+        Broke tests on armv7/linux bots (Requested by guijemont on
+        #webkit).
+
+        Reverted changeset:
+
+        "Enable DFG on ARM/Linux again"
+        https://bugs.webkit.org/show_bug.cgi?id=192496
+        https://trac.webkit.org/changeset/239825
+
 2019-01-10  John Wilander  <wilander@apple.com>
 
         Override the session configuration for cookieAcceptPolicy
index a574b04..8e1aa52 100644 (file)
 #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
index f0adc25..cd5f8e9 100644 (file)
@@ -1,3 +1,17 @@
+2019-01-10  Commit Queue  <commit-queue@webkit.org>
+
+        Unreviewed, rolling out r239825.
+        https://bugs.webkit.org/show_bug.cgi?id=193330
+
+        Broke tests on armv7/linux bots (Requested by guijemont on
+        #webkit).
+
+        Reverted changeset:
+
+        "Enable DFG on ARM/Linux again"
+        https://bugs.webkit.org/show_bug.cgi?id=192496
+        https://trac.webkit.org/changeset/239825
+
 2019-01-10  Zhifei Fang  <zhifei_fang@apple.com>
 
         Disable the run-jsc-stress-test remote host key check.
index 632940b..1df9301 100755 (executable)
@@ -449,7 +449,7 @@ $hostOS = determineOS unless $hostOS
 $architecture = determineArchitecture unless $architecture
 $isFTLPlatform = !($architecture == "x86" || $architecture == "arm" || $architecture == "mips" || $hostOS == "windows")
 
-if ["mips", "x86"].include?($architecture)
+if ["arm", "mips", "x86"].include?($architecture)
     # The JIT is temporarily disabled on these platforms since
     # https://trac.webkit.org/changeset/237547
     $jitTests = false