Negative zero checks cause unnecessary speculation failures on SunSpider on ARMv7...
authorJeong <jh4u.jeong@samsung.com>
Fri, 26 Apr 2013 02:47:55 +0000 (11:47 +0900)
committerJeong <jh4u.jeong@samsung.com>
Fri, 26 Apr 2013 02:47:55 +0000 (11:47 +0900)
commit32d18ae55904c27d38881105c5fe0764d7c58564
tree61eed71f12c85b578827520ad21db524b7a20604
parentf5a641c892d319bc07e2cdbd63269e0838d53efd
Negative zero checks cause unnecessary speculation failures on SunSpider on ARMv7. (https://bugs.webkit.org/show_bug.cgi?id=113862)

[Title] Negative zero checks cause unnecessary speculation failures on SunSpider on ARMv7.
[Issue#] N/A
[Problem] While testing SunSpider math-spectral-norm on x86-64 and ARMv7 Linux,
          there are a lot of "Speculation failures" on ARM, but not on x86.
[Cause] N/A
[Solution] Check nodeCanIgnoreNegativeZero() for DoubleAsInt32 nodes, and create zero-check only when needed.

Change-Id: I50384d628a7ed8928d1378c52fe100f6de02197d
Source/JavaScriptCore/assembler/MacroAssemblerARM.h
Source/JavaScriptCore/assembler/MacroAssemblerARMv7.h
Source/JavaScriptCore/assembler/MacroAssemblerMIPS.h
Source/JavaScriptCore/assembler/MacroAssemblerSH4.h
Source/JavaScriptCore/assembler/MacroAssemblerX86Common.h
Source/JavaScriptCore/dfg/DFGNode.h
Source/JavaScriptCore/dfg/DFGPredictionPropagationPhase.cpp
Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp