summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJulien Brianceau <jbriance@cisco.com>2013-10-16 16:07:42 +0200
committerThe Qt Project <gerrit-noreply@qt-project.org>2013-10-21 12:31:21 +0200
commit8591d128294798ddff8a2ed8a717ea2645b983a2 (patch)
tree075ceb46d05b16b6407c9b9283e6342136e7baa1
parent2e6916aa0627bd4369366827ef915041df71fee7 (diff)
[sh4] Jump over maxJumpReplacementSize in revertJumpToMove.
https://bugs.webkit.org/show_bug.cgi?id=120007 Patch by Julien Brianceau <jbriance@cisco.com> on 2013-10-07 Reviewed by Oliver Hunt. Jump over maxJumpReplacementSize in revertJumpToMove, even if there is no constant value within the area. This patch fixes debug ASSERTs failures for sh4 architecture. * assembler/SH4Assembler.h: (JSC::SH4Assembler::revertJumpToMove): Change-Id: Ice297393b167eace620ace8d8957014f0b3945c8 git-svn-id: http://svn.webkit.org/repository/webkit/trunk@157046 268f45cc-cd09-0410-ab3c-d52691b4dbfc Reviewed-by: Allan Sandfeld Jensen <allan.jensen@digia.com>
-rw-r--r--Source/JavaScriptCore/assembler/SH4Assembler.h14
1 files changed, 4 insertions, 10 deletions
diff --git a/Source/JavaScriptCore/assembler/SH4Assembler.h b/Source/JavaScriptCore/assembler/SH4Assembler.h
index fded7df89..55f974a29 100644
--- a/Source/JavaScriptCore/assembler/SH4Assembler.h
+++ b/Source/JavaScriptCore/assembler/SH4Assembler.h
@@ -1545,17 +1545,11 @@ public:
insn[0] = getOpcodeGroup3(MOVL_READ_OFFPC_OPCODE, SH4Registers::r13, insn[0] & 0x00ff);
insn[1] = (insn[1] & 0xf00f) | (rd << 8) | (SH4Registers::r13 << 4);
cacheFlush(insn, 2 * sizeof(SH4Word));
- changePCrelativeAddress(insn[0] & 0x00ff, insn, imm);
- return;
- }
-
- if ((insn[0] & 0x00ff) == 1)
+ } else {
insn[1] = getOpcodeGroup6(BRA_OPCODE, 3);
- else
- insn[1] = NOP_OPCODE;
-
- insn[2] = NOP_OPCODE;
- cacheFlush(&insn[1], 2 * sizeof(SH4Word));
+ insn[2] = NOP_OPCODE;
+ cacheFlush(&insn[1], 2 * sizeof(SH4Word));
+ }
changePCrelativeAddress(insn[0] & 0x00ff, insn, imm);
}