diff options
author | Balazs Kilvady <kilvadyb@homejinni.com> | 2013-02-01 22:00:00 +0000 |
---|---|---|
committer | The Qt Project <gerrit-noreply@qt-project.org> | 2013-05-23 13:39:19 +0200 |
commit | 765fd0c6ebdfbd1a0540211bc8b58e46076b41a3 (patch) | |
tree | 2cb4cbe7bc5d3e8e7ffb289c4fbe9418e3880e76 /Source/JavaScriptCore/offlineasm/mips.rb | |
parent | fee41053a81024e15303ebf68e6a9a029374ce92 (diff) | |
download | qtwebkit-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>
Diffstat (limited to 'Source/JavaScriptCore/offlineasm/mips.rb')
-rw-r--r-- | Source/JavaScriptCore/offlineasm/mips.rb | 34 |
1 files changed, 32 insertions, 2 deletions
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 |