Interpreter fix for <rdar://problem/7728196> REGRESSION (r46701): -(-2147483648)
authorggaren@apple.com <ggaren@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Tue, 23 Mar 2010 17:09:31 +0000 (17:09 +0000)
committerggaren@apple.com <ggaren@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Tue, 23 Mar 2010 17:09:31 +0000 (17:09 +0000)
commite38cd1c9f5244c8a6cc7d4740933f150873bd199
tree3d038432b1e037ef85b4a9ab6731fd440d0e5bd1
parent704bcbbfa5b6f205a620836a73c6c7de8bbf58a4
Interpreter fix for <rdar://problem/7728196> REGRESSION (r46701): -(-2147483648)
evaluates to -2147483648 on 32 bit (35842)

Reviewed by Mark Rowe.

* interpreter/Interpreter.cpp:
(JSC::Interpreter::privateExecute): Only take the fast negate path if
a bit other than bit 31 is set. If none of bits 0-30 are set, then the
value we're negating can only be 0 or -2147483648, and neither can be
negated in int space.

* jit/JITArithmetic.cpp:
(JSC::JIT::emit_op_negate):
(JSC::JIT::emitSlow_op_negate): Updated the JIT implementation to match
the interpreter, since it's slightly simpler.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@56400 268f45cc-cd09-0410-ab3c-d52691b4dbfc
JavaScriptCore/ChangeLog
JavaScriptCore/interpreter/Interpreter.cpp
JavaScriptCore/jit/JITArithmetic.cpp