summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBalazs Kilvady <kilvadyb@homejinni.com>2013-02-01 22:00:00 +0000
committerThe Qt Project <gerrit-noreply@qt-project.org>2013-05-23 13:39:19 +0200
commit765fd0c6ebdfbd1a0540211bc8b58e46076b41a3 (patch)
tree2cb4cbe7bc5d3e8e7ffb289c4fbe9418e3880e76
parentfee41053a81024e15303ebf68e6a9a029374ce92 (diff)
downloadqtwebkit-765fd0c6ebdfbd1a0540211bc8b58e46076b41a3.tar.gz
offlineasm BaseIndex handling is broken on ARM due to MIPS changes
https://bugs.webkit.org/show_bug.cgi?id=108261 Patch by Balazs Kilvady <kilvadyb@homejinni.com> on 2013-02-01 Reviewed by Filip Pizlo. offlineasm BaseIndex handling fix on MIPS. * offlineasm/mips.rb: * offlineasm/risc.rb: git-svn-id: http://svn.webkit.org/repository/webkit/trunk@141641 268f45cc-cd09-0410-ab3c-d52691b4dbfc Conflicts: Source/JavaScriptCore/ChangeLog Source/JavaScriptCore/offlineasm/mips.rb Change-Id: I7ec4d500e11717e1cb2b6fd7f310e4e66cfa7955 Reviewed-by: Allan Sandfeld Jensen <allan.jensen@digia.com> Reviewed-by: Jocelyn Turcotte <jocelyn.turcotte@digia.com>
-rw-r--r--Source/JavaScriptCore/ChangeLog12
-rw-r--r--Source/JavaScriptCore/offlineasm/mips.rb34
-rw-r--r--Source/JavaScriptCore/offlineasm/risc.rb4
3 files changed, 46 insertions, 4 deletions
diff --git a/Source/JavaScriptCore/ChangeLog b/Source/JavaScriptCore/ChangeLog
index 4d5e69564..5b0cfcbb7 100644
--- a/Source/JavaScriptCore/ChangeLog
+++ b/Source/JavaScriptCore/ChangeLog
@@ -88,6 +88,18 @@
(JSC::ScratchBuffer::allocationSize):
(ScratchBuffer):
+2013-02-01 Balazs Kilvady <kilvadyb@homejinni.com>
+
+ offlineasm BaseIndex handling is broken on ARM due to MIPS changes
+ https://bugs.webkit.org/show_bug.cgi?id=108261
+
+ Reviewed by Filip Pizlo.
+
+ offlineasm BaseIndex handling fix on MIPS.
+
+ * offlineasm/mips.rb:
+ * offlineasm/risc.rb:
+
2013-01-07 Balazs Kilvady <kilvadyb@homejinni.com>
MIPS LLInt implementation.
diff --git a/Source/JavaScriptCore/offlineasm/mips.rb b/Source/JavaScriptCore/offlineasm/mips.rb
index 80aa4fec7..3cb5ce81e 100644
--- a/Source/JavaScriptCore/offlineasm/mips.rb
+++ b/Source/JavaScriptCore/offlineasm/mips.rb
@@ -312,8 +312,23 @@ end
# Specialization of lowering of malformed BaseIndex addresses.
#
+class Node
+ def mipsLowerMalformedAddressesRecurse(list, topLevelNode, &block)
+ mapChildren {
+ | subNode |
+ subNode.mipsLowerMalformedAddressesRecurse(list, topLevelNode, &block)
+ }
+ end
+end
+
+class Address
+ def mipsLowerMalformedAddressesRecurse(list, node, &block)
+ riscLowerMalformedAddressesRecurse(list, node, &block)
+ end
+end
+
class BaseIndex
- def riscLowerMalformedAddressesRecurse(list, node, &block)
+ def mipsLowerMalformedAddressesRecurse(list, node, &block)
if scaleShift == 0
tmp0 = Tmp.new(codeOrigin, :gpr)
list << Instruction.new(codeOrigin, "addp", [base, index, tmp0])
@@ -327,6 +342,21 @@ class BaseIndex
end
end
+class AbsoluteAddress
+ def mipsLowerMalformedAddressesRecurse(list, node, &block)
+ riscLowerMalformedAddressesRecurse(list, node, &block)
+ end
+end
+
+def mipsLowerMalformedAddresses(list, &block)
+ newList = []
+ list.each {
+ | node |
+ newList << node.mipsLowerMalformedAddressesRecurse(newList, node, &block)
+ }
+ newList
+end
+
#
# Lowering of misplaced immediates of MIPS specific instructions. For example:
#
@@ -532,7 +562,7 @@ class Sequence
result = riscLowerSimpleBranchOps(result)
result = riscLowerHardBranchOps(result)
result = riscLowerShiftOps(result)
- result = riscLowerMalformedAddresses(result) {
+ result = mipsLowerMalformedAddresses(result) {
| node, address |
if address.is_a? Address
(-0xffff..0xffff).include? address.offset.value
diff --git a/Source/JavaScriptCore/offlineasm/risc.rb b/Source/JavaScriptCore/offlineasm/risc.rb
index 44b4dbd71..7408253af 100644
--- a/Source/JavaScriptCore/offlineasm/risc.rb
+++ b/Source/JavaScriptCore/offlineasm/risc.rb
@@ -187,7 +187,7 @@ class Node
end
class Address
- def riscLowerMalformedAddressesRecurse(list, node)
+ def riscLowerMalformedAddressesRecurse(list, node, &block)
return self if yield node, self
tmp = Tmp.new(codeOrigin, :gpr)
@@ -208,7 +208,7 @@ class BaseIndex
end
class AbsoluteAddress
- def riscLowerMalformedAddressesRecurse(list, node)
+ def riscLowerMalformedAddressesRecurse(list, node, &block)
return self if yield node, self
tmp = Tmp.new(codeOrigin, :gpr)