REGRESSION(r148790) Made 7 tests fail on x86 32bit
authorallan.jensen@digia.com <allan.jensen@digia.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Thu, 15 Aug 2013 11:28:55 +0000 (11:28 +0000)
committerallan.jensen@digia.com <allan.jensen@digia.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Thu, 15 Aug 2013 11:28:55 +0000 (11:28 +0000)
https://bugs.webkit.org/show_bug.cgi?id=114913

Reviewed by Filip Pizlo.

Source/JavaScriptCore:

The X87 register was not freed before some calls. Instead
of inserting resetX87Registers to the last call sites,
the two X87 registers are now freed in every call.

* llint/LowLevelInterpreter32_64.asm:
* llint/LowLevelInterpreter64.asm:
* offlineasm/instructions.rb:
* offlineasm/x86.rb:

LayoutTests:

Unskip the five tests now passsing again.

* platform/qt/TestExpectations:

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

LayoutTests/ChangeLog
LayoutTests/platform/qt/TestExpectations
Source/JavaScriptCore/ChangeLog
Source/JavaScriptCore/llint/LowLevelInterpreter32_64.asm
Source/JavaScriptCore/llint/LowLevelInterpreter64.asm
Source/JavaScriptCore/offlineasm/instructions.rb
Source/JavaScriptCore/offlineasm/x86.rb

index f636fcb..f478cb0 100644 (file)
@@ -1,3 +1,14 @@
+2013-08-15  Allan Sandfeld Jensen  <allan.jensen@digia.com>
+
+        REGRESSION(r148790) Made 7 tests fail on x86 32bit
+        https://bugs.webkit.org/show_bug.cgi?id=114913
+
+        Reviewed by Filip Pizlo.
+
+        Unskip the five tests now passsing again.
+
+        * platform/qt/TestExpectations:
+
 2013-08-15  Simon Pena  <simon.pena@samsung.com>
 
         [GTK] Unreviewed gardening. Rebaseline after r154057.
index cd531d9..93407fa 100644 (file)
@@ -1385,11 +1385,6 @@ webkit.org/b/112680 jquery/manipulation.html [ Skip ]
 inspector/console/console-filter-test.html
 
 # REGRESSION(r148790) Made 7 tests fail on x86 32bit
-webkit.org/b/114913 fast/canvas/canvas-arc-360-winding.html [ Skip ]
-webkit.org/b/114913 fast/canvas/canvas-fillPath-alpha-shadow.html [ Skip ]
-webkit.org/b/114913 fast/canvas/canvas-fillPath-gradient-shadow.html [ Skip ]
-webkit.org/b/114913 fast/canvas/canvas-fillPath-pattern-shadow.html [ Skip ]
-webkit.org/b/114913 fast/canvas/canvas-strokePath-alpha-shadow.html [ Skip ]
 webkit.org/b/114913 sputnik/Conformance/15_Native_Objects/15.8_Math/15.8.2/15.8.2.13_pow/S15.8.2.13_A24.html [ Skip ]
 webkit.org/b/114913 sputnik/Conformance/15_Native_Objects/15.8_Math/15.8.2/15.8.2.8_exp/S15.8.2.8_A6.html [ Skip ]
 
index ef2fb16..1cf69ed 100644 (file)
@@ -1,3 +1,19 @@
+2013-08-15  Allan Sandfeld Jensen  <allan.jensen@digia.com>
+
+        REGRESSION(r148790) Made 7 tests fail on x86 32bit
+        https://bugs.webkit.org/show_bug.cgi?id=114913
+
+        Reviewed by Filip Pizlo.
+
+        The X87 register was not freed before some calls. Instead
+        of inserting resetX87Registers to the last call sites,
+        the two X87 registers are now freed in every call.
+
+        * llint/LowLevelInterpreter32_64.asm:
+        * llint/LowLevelInterpreter64.asm:
+        * offlineasm/instructions.rb:
+        * offlineasm/x86.rb:
+
 2013-08-14  Michael Saboff  <msaboff@apple.com>
 
         Fixed jit on Win64.
index ceadb29..3a92950 100644 (file)
@@ -102,7 +102,6 @@ macro cCall2(function, arg1, arg2)
         move arg2, t1
         call function
     elsif X86
-        resetX87Stack
         poke arg1, 0
         poke arg2, 1
         call function
@@ -126,7 +125,6 @@ macro cCall4(function, arg1, arg2, arg3, arg4)
         move arg4, t3
         call function
     elsif X86
-        resetX87Stack
         poke arg1, 0
         poke arg2, 1
         poke arg3, 2
index 4fc32b9..1c4a490 100644 (file)
@@ -81,9 +81,6 @@ end
 macro prepareStateForCCall()
     leap [PB, PC, 8], PC
     move PB, t3
-    if X86_64
-        resetX87Stack
-    end
 end
 
 macro restoreStateAfterCCall()
index 05d4b4d..eb394af 100644 (file)
@@ -254,8 +254,7 @@ MACRO_INSTRUCTIONS =
 X86_INSTRUCTIONS =
     [
      "cdqi",
-     "idivi",
-     "resetX87Stack"
+     "idivi"
     ]
 
 ARM_INSTRUCTIONS =
index e1a1389..4e2015b 100644 (file)
@@ -1149,6 +1149,12 @@ class Instruction
         when "break"
             $asm.puts "int $3"
         when "call"
+            if useX87
+                2.times {
+                    | offset |
+                    $asm.puts "ffree %st(#{offset})"
+                }
+            end
             $asm.puts "call #{operands[0].x86CallOperand(:ptr)}"
         when "ret"
             $asm.puts "ret"
@@ -1336,13 +1342,6 @@ class Instruction
             $asm.puts "leal #{operands[0].x86AddressOperand(:int)}, #{operands[1].x86Operand(:int)}"
         when "leap"
             $asm.puts "lea#{x86Suffix(:ptr)} #{operands[0].x86AddressOperand(:ptr)}, #{operands[1].x86Operand(:ptr)}"
-        when "resetX87Stack"
-            if useX87
-                2.times {
-                    | offset |
-                    $asm.puts "ffree %st(#{offset})"
-                }
-            end
         else
             lowerDefault
         end