REGRESSION(r137994): Random crashes occur with SH4 JSC.
[WebKit-https.git] / Source / JavaScriptCore / ChangeLog
1 2013-04-25  Julien Brianceau  <jbrianceau@nds.com>
2
3         REGRESSION(r137994): Random crashes occur with SH4 JSC.
4         https://bugs.webkit.org/show_bug.cgi?id=115167.
5
6         Reviewed by Oliver Hunt.
7
8         Since r137994, uncommited pages could be inside the area of memory in
9         parameter of the cacheFlush function. That's why we have to flush each
10         page separately to avoid a fail of the whole flush, if an uncommited page
11         is in the area.
12
13         This patch is very similar to changeset 145194 made for ARMv7 architecture,
14         see https://bugs.webkit.org/show_bug.cgi?id=111441 for further information.
15
16         * assembler/SH4Assembler.h:
17         (JSC::SH4Assembler::cacheFlush):
18
19 2013-04-24  Mark Lam  <mark.lam@apple.com>
20
21         Add watchdog timer polling for the DFG.
22         https://bugs.webkit.org/show_bug.cgi?id=115134.
23
24         Reviewed by Geoffrey Garen.
25
26         The strategy is to add a speculation check to the DFG generated code to
27         test if the watchdog timer has fired or not. If the watchdog timer has
28         fired, the generated code will do an OSR exit to the baseline JIT, and
29         let it handle servicing the watchdog timer.
30
31         If the watchdog is not enabled, this speculation check will not be
32         emitted.
33
34         * API/tests/testapi.c:
35         (currentCPUTime_callAsFunction):
36         (extendTerminateCallback):
37         (main):
38         - removed try/catch statements so that we can test the watchdog on the DFG.
39         - added JS bindings to a native currentCPUTime() function so that the timeout
40           tests can be more accurate.
41         - also shortened the time values so that the tests can complete sooner.
42
43         * bytecode/ExitKind.h:
44         * dfg/DFGAbstractState.cpp:
45         (JSC::DFG::AbstractState::executeEffects):
46         * dfg/DFGByteCodeParser.cpp:
47         (JSC::DFG::ByteCodeParser::parseBlock):
48         * dfg/DFGFixupPhase.cpp:
49         (JSC::DFG::FixupPhase::fixupNode):
50         * dfg/DFGNodeType.h:
51         * dfg/DFGPredictionPropagationPhase.cpp:
52         (JSC::DFG::PredictionPropagationPhase::propagate):
53         * dfg/DFGSpeculativeJIT32_64.cpp:
54         (JSC::DFG::SpeculativeJIT::compile):
55         * dfg/DFGSpeculativeJIT64.cpp:
56         (JSC::DFG::SpeculativeJIT::compile):
57         * runtime/Watchdog.cpp:
58         (JSC::Watchdog::setTimeLimit):
59
60 2013-04-24  Filip Pizlo  <fpizlo@apple.com>
61
62         Special thunks for math functions should work on ARMv7
63         https://bugs.webkit.org/show_bug.cgi?id=115144
64
65         Reviewed by Gavin Barraclough and Oliver Hunt.
66         
67         The only hard bit here was ensuring that we implemented the very special
68         "cheap C call" convention on ARMv7.
69
70         * assembler/AbstractMacroAssembler.h:
71         (JSC::isARMv7s):
72         (JSC):
73         (JSC::isX86):
74         * dfg/DFGCommon.h:
75         * jit/SpecializedThunkJIT.h:
76         (SpecializedThunkJIT):
77         (JSC::SpecializedThunkJIT::callDoubleToDoublePreservingReturn):
78         * jit/ThunkGenerators.cpp:
79         (JSC::floorThunkGenerator):
80         (JSC::ceilThunkGenerator):
81         (JSC::roundThunkGenerator):
82         (JSC::expThunkGenerator):
83         (JSC::logThunkGenerator):
84
85 2013-04-24  Julien Brianceau  <jbrianceau@nds.com>
86
87         Misc bugfix and cleaning in sh4 base JIT.
88         https://bugs.webkit.org/show_bug.cgi?id=115022.
89
90         Reviewed by Oliver Hunt.
91
92         Remove unused add32() and sub32() with scratchreg parameter to avoid
93         confusion as this function prototype means another behaviour.
94         Remove unused "void push(Address)" function which seems quite buggy.
95
96         * assembler/MacroAssemblerSH4.h:
97         (JSC::MacroAssemblerSH4::and32): Cosmetic change.
98         (JSC::MacroAssemblerSH4::lshift32): Cosmetic change.
99         (JSC::MacroAssemblerSH4::or32): Cosmetic change.
100         (JSC::MacroAssemblerSH4::xor32): Cosmetic change.
101         (MacroAssemblerSH4):
102         (JSC::MacroAssemblerSH4::load32): Cosmetic change.
103         (JSC::MacroAssemblerSH4::load8Signed): Fix invalid offset upper limit
104         when using r0 register and cosmetic changes.
105         (JSC::MacroAssemblerSH4::load8): Reuse load8Signed to avoid duplication.
106         (JSC::MacroAssemblerSH4::load16): Fix invalid offset upper limit when
107         using r0 register, fix missing offset shift and cosmetic changes.
108         (JSC::MacroAssemblerSH4::store32): Cosmetic change.
109         (JSC::MacroAssemblerSH4::branchAdd32): Store result value before branch.
110
111 2013-04-24  Patrick Gansterer  <paroga@webkit.org>
112
113         [WIN] Remove pthread from Visual Studio files in JavaScriptCore
114         https://bugs.webkit.org/show_bug.cgi?id=114864
115
116         Reviewed by Brent Fulgham.
117
118         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreCommon.vsprops:
119         * JavaScriptCore.vcproj/LLIntOffsetsExtractor/LLIntOffsetsExtractorCommon.vsprops:
120         * JavaScriptCore.vcproj/jsc/jscCommon.vsprops:
121         * JavaScriptCore.vcproj/testRegExp/testRegExpCommon.vsprops:
122         * JavaScriptCore.vcproj/testapi/testapiCommon.vsprops:
123         * JavaScriptCore.vcxproj/JavaScriptCoreCommon.props:
124         * JavaScriptCore.vcxproj/JavaScriptCoreExportGenerator/JavaScriptCoreExportGeneratorCommon.props:
125         * JavaScriptCore.vcxproj/LLInt/LLIntOffsetsExtractor/LLIntOffsetsExtractorCommon.props:
126         * JavaScriptCore.vcxproj/jsc/jscCommon.props:
127         * JavaScriptCore.vcxproj/testRegExp/testRegExpCommon.props:
128         * JavaScriptCore.vcxproj/testapi/testapiCommon.props:
129         * JavaScriptCore.vcxproj/testapi/testapiCommonCFLite.props:
130
131 2013-04-24  Filip Pizlo  <fpizlo@apple.com>
132
133         DFG should keep the operand to create_this alive if it's emitting code for create_this
134         https://bugs.webkit.org/show_bug.cgi?id=115133
135
136         Reviewed by Mark Hahnenberg.
137         
138         The DFG must model bytecode liveness, or else OSR exit is going to have a really bad time.
139
140         * dfg/DFGByteCodeParser.cpp:
141         (JSC::DFG::ByteCodeParser::parseBlock):
142
143 2013-04-24  Roger Fong  <roger_fong@apple.com>
144
145         Have VS2010 WebKit solution look in WebKit_Libraries/lib32 for dependencies.
146
147         * JavaScriptCore.vcxproj/JavaScriptCoreExportGenerator/JavaScriptCoreExportGeneratorPostBuild.cmd:
148         * JavaScriptCore.vcxproj/JavaScriptCorePreLink.cmd:
149         * JavaScriptCore.vcxproj/jsc/jscPostBuild.cmd:
150         * JavaScriptCore.vcxproj/jsc/jscPreLink.cmd:
151         * JavaScriptCore.vcxproj/testRegExp/testRegExp.vcxproj.filters:
152         * JavaScriptCore.vcxproj/testRegExp/testRegExpPostBuild.cmd:
153         * JavaScriptCore.vcxproj/testRegExp/testRegExpPreLink.cmd:
154         * JavaScriptCore.vcxproj/testapi/testapiPreLink.cmd:
155
156 2013-04-24  Geoffrey Garen  <ggaren@apple.com>
157
158         32-bit build fix.
159
160         Unreviewed.
161
162         * dfg/DFGSpeculativeJIT.cpp:
163         (JSC::DFG::SpeculativeJIT::compilePeepHoleBooleanBranch): Explicitly
164         truncate to 32-bit to avoid compiler warnings. It's safe to truncate
165         because the payload of a boolean is the low bits on both 64-bit and 32-bit.
166
167 2013-04-23  Geoffrey Garen  <ggaren@apple.com>
168
169         Filled out more cases of branch folding in the DFG
170         https://bugs.webkit.org/show_bug.cgi?id=115088
171
172         Reviewed by Oliver Hunt.
173
174         No change on the benchmarks we track, but a 3X speedup on a
175         microbenchmark that uses these techniques.
176
177         * dfg/DFGByteCodeParser.cpp:
178         (JSC::DFG::ByteCodeParser::parseBlock): (!/=)= and (!/=)== can constant
179         fold all types, not just numbers, because true constants have no
180         side effects when type-converted at runtime.
181
182         * dfg/DFGFixupPhase.cpp:
183         (JSC::DFG::FixupPhase::fixupNode):
184         * dfg/DFGNode.h:
185         (JSC::DFG::Node::shouldSpeculateBoolean): Added support for fixing up
186         boolean uses, like we do for other types like number.
187
188         * dfg/DFGSpeculativeJIT.cpp:
189         (JSC::DFG::SpeculativeJIT::compilePeepHoleBooleanBranch):
190         (JSC::DFG::SpeculativeJIT::compilePeepHoleBranch):
191         (JSC::DFG::SpeculativeJIT::compare):
192         (JSC::DFG::SpeculativeJIT::compileStrictEq):
193         (JSC::DFG::SpeculativeJIT::compileBooleanCompare): Peephole fuse
194         boolean compare and/or compare-branch, now that we have the types for
195         them.
196
197         * dfg/DFGSpeculativeJIT.h: Updated declarations.
198
199 == Rolled over to ChangeLog-2013-04-24 ==