Title: [199365] releases/WebKitGTK/webkit-2.12/Source/_javascript_Core
Revision
199365
Author
[email protected]
Date
2016-04-12 09:41:29 -0700 (Tue, 12 Apr 2016)

Log Message

Merge r198173 - [mips] Fix unaligned access in LLINT.
https://bugs.webkit.org/show_bug.cgi?id=153228

Address loads used with btbxx opcodes were wrongly converted to lw
instruction instead of lbu, leading to unaligned access on mips
platforms. This is not a bug as it's silently fixed up by kernel,
but it's more efficient to avoid unaligned accesses for mips.

Reviewed by Geoffrey Garen.

* offlineasm/mips.rb:

Modified Paths

Diff

Modified: releases/WebKitGTK/webkit-2.12/Source/_javascript_Core/ChangeLog (199364 => 199365)


--- releases/WebKitGTK/webkit-2.12/Source/_javascript_Core/ChangeLog	2016-04-12 16:40:27 UTC (rev 199364)
+++ releases/WebKitGTK/webkit-2.12/Source/_javascript_Core/ChangeLog	2016-04-12 16:41:29 UTC (rev 199365)
@@ -1,3 +1,17 @@
+2016-03-14  Julien Brianceau  <[email protected]>
+
+        [mips] Fix unaligned access in LLINT.
+        https://bugs.webkit.org/show_bug.cgi?id=153228
+
+        Address loads used with btbxx opcodes were wrongly converted to lw
+        instruction instead of lbu, leading to unaligned access on mips
+        platforms. This is not a bug as it's silently fixed up by kernel,
+        but it's more efficient to avoid unaligned accesses for mips.
+
+        Reviewed by Geoffrey Garen.
+
+        * offlineasm/mips.rb:
+
 2016-03-17  Yusuke Suzuki  <[email protected]>
 
         REGRESSION(r197380): Build fails with new GCC and Clang

Modified: releases/WebKitGTK/webkit-2.12/Source/_javascript_Core/offlineasm/mips.rb (199364 => 199365)


--- releases/WebKitGTK/webkit-2.12/Source/_javascript_Core/offlineasm/mips.rb	2016-04-12 16:40:27 UTC (rev 199364)
+++ releases/WebKitGTK/webkit-2.12/Source/_javascript_Core/offlineasm/mips.rb	2016-04-12 16:41:29 UTC (rev 199365)
@@ -265,9 +265,10 @@
                                 [node.operands[0], MIPS_ZERO_REG, node.operands[-1]],
                                 node.annotation)
     elsif node.operands.size == 3
+        tl = condOp[-1, 1]
         tmp = Tmp.new(node.codeOrigin, :gpr)
         list << Instruction.new(node.codeOrigin,
-                                "andi",
+                                "and" + tl,
                                 [node.operands[0], node.operands[1], tmp],
                                 node.annotation)
         list << Instruction.new(node.codeOrigin,
@@ -588,6 +589,10 @@
                 newList << Instruction.new(node.codeOrigin,
                                            node.opcode,
                                            riscAsRegisters(newList, [], node.operands, "b"))
+            when "andb"
+                newList << Instruction.new(node.codeOrigin,
+                                           "andi",
+                                           riscAsRegisters(newList, [], node.operands, "b"))
             when /^(bz|bnz|bs|bo)/
                 tl = $~.post_match == "" ? "i" : $~.post_match
                 newList << Instruction.new(node.codeOrigin,
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to