2011-05-30 Hojong Han <hojong.han@samsung.com>
Reviewed by Geoffrey Garen.
[JSC] malfunction during arithmetic condition check with negative number (-2147483648)
https://bugs.webkit.org/show_bug.cgi?id=61416
* assembler/MacroAssemblerARM.h:
(JSC::MacroAssemblerARM::branch32):
* tests/mozilla/ecma/Expressions/11.12-1.js:
(getTestCases):
git-svn-id: http://svn.webkit.org/repository/webkit/trunk@87702 268f45cc-cd09-0410-ab3c-d52691b4dbfc
diff --git a/Source/JavaScriptCore/assembler/MacroAssemblerARM.h b/Source/JavaScriptCore/assembler/MacroAssemblerARM.h
index 7c47461..6d8479f 100644
--- a/Source/JavaScriptCore/assembler/MacroAssemblerARM.h
+++ b/Source/JavaScriptCore/assembler/MacroAssemblerARM.h
@@ -416,7 +416,7 @@
m_assembler.ldr_un_imm(ARMRegisters::S0, right.m_value);
m_assembler.cmp_r(left, ARMRegisters::S0);
} else {
- ARMWord tmp = m_assembler.getOp2(-right.m_value);
+ ARMWord tmp = (right.m_value == 0x80000000) ? ARMAssembler::INVALID_IMM : m_assembler.getOp2(-right.m_value);
if (tmp != ARMAssembler::INVALID_IMM)
m_assembler.cmn_r(left, tmp);
else