Replace tools32 folder with tools and update WebKit Windows solution accordingly.
[WebKit-https.git] / Source / JavaScriptCore / ChangeLog
1 2013-06-18  Roger Fong  <roger_fong@apple.com>
2
3         Replace tools32 folder with tools and update WebKit Windows solution accordingly.
4         <rdar://problem/14118143>.
5
6         Rubberstamped by Brent Fulgham.
7
8         * JavaScriptCore.vcxproj/JavaScriptCore.vcxproj:
9         * JavaScriptCore.vcxproj/JavaScriptCoreDebug.props:
10         * JavaScriptCore.vcxproj/JavaScriptCoreDebugCFLite.props:
11         * JavaScriptCore.vcxproj/JavaScriptCoreGenerated.vcxproj:
12         * JavaScriptCore.vcxproj/JavaScriptCoreGeneratedDebug.props:
13         * JavaScriptCore.vcxproj/JavaScriptCoreGeneratedProduction.props:
14         * JavaScriptCore.vcxproj/JavaScriptCoreGeneratedRelease.props:
15         * JavaScriptCore.vcxproj/JavaScriptCorePostBuild.cmd:
16         * JavaScriptCore.vcxproj/JavaScriptCoreProduction.props:
17         * JavaScriptCore.vcxproj/JavaScriptCoreRelease.props:
18         * JavaScriptCore.vcxproj/JavaScriptCoreReleaseCFLite.props:
19         * JavaScriptCore.vcxproj/LLInt/LLIntAssembly/LLIntAssembly.vcxproj:
20         * JavaScriptCore.vcxproj/LLInt/LLIntDesiredOffsets/LLIntDesiredOffsets.vcxproj:
21         * JavaScriptCore.vcxproj/LLInt/LLIntOffsetsExtractor/LLIntOffsetsExtractor.vcxproj:
22         * JavaScriptCore.vcxproj/LLInt/LLIntOffsetsExtractor/LLIntOffsetsExtractorDebug.props:
23         * JavaScriptCore.vcxproj/LLInt/LLIntOffsetsExtractor/LLIntOffsetsExtractorProduction.props:
24         * JavaScriptCore.vcxproj/LLInt/LLIntOffsetsExtractor/LLIntOffsetsExtractorRelease.props:
25         * JavaScriptCore.vcxproj/jsc/jsc.vcxproj:
26         * JavaScriptCore.vcxproj/jsc/jscDebug.props:
27         * JavaScriptCore.vcxproj/jsc/jscProduction.props:
28         * JavaScriptCore.vcxproj/jsc/jscRelease.props:
29         * JavaScriptCore.vcxproj/testRegExp/testRegExp.vcxproj:
30         * JavaScriptCore.vcxproj/testRegExp/testRegExpDebug.props:
31         * JavaScriptCore.vcxproj/testRegExp/testRegExpProduction.props:
32         * JavaScriptCore.vcxproj/testRegExp/testRegExpRelease.props:
33         * JavaScriptCore.vcxproj/testapi/testapi.vcxproj:
34         * JavaScriptCore.vcxproj/testapi/testapiDebug.props:
35         * JavaScriptCore.vcxproj/testapi/testapiDebugCFLite.props:
36         * JavaScriptCore.vcxproj/testapi/testapiProduction.props:
37         * JavaScriptCore.vcxproj/testapi/testapiRelease.props:
38         * JavaScriptCore.vcxproj/testapi/testapiReleaseCFLite.props:
39
40 2013-06-17  Roger Fong  <roger_fong@apple.com>
41
42         Modify Windows makefiles to copy some bin output into Program Files.
43         https://bugs.webkit.org/show_bug.cgi?id=117714.
44         <rdar://problem/14179054>
45
46         Reviewed by Brent Fulgham.
47
48         * JavaScriptCore.vcxproj/JavaScriptCore.make:
49
50 2013-06-14  Ryosuke Niwa  <rniwa@webkit.org>
51
52         Function names on Object.prototype should be common identifiers
53         https://bugs.webkit.org/show_bug.cgi?id=117614
54
55         Reviewed by Darin Adler.
56
57         Patch written by Sam Weinig. Make Object's prototype function names common identififers since they're used frequently.
58
59         * runtime/CommonIdentifiers.h:
60         * runtime/FunctionConstructor.cpp:
61         (JSC::constructFunction):
62         * runtime/JSGlobalObject.cpp:
63         (JSC::JSGlobalObject::reset):
64         * runtime/JSObject.h:
65         * runtime/ObjectPrototype.cpp:
66         (JSC::ObjectPrototype::finishCreation):
67         * runtime/StringPrototype.cpp:
68         (JSC::StringPrototype::finishCreation):
69
70 2013-06-13  Ryosuke Niwa  <rniwa@webkit.org>
71
72         Remove LiteralIdentifierTable
73         https://bugs.webkit.org/show_bug.cgi?id=117613
74
75         Reviewed by Geoffrey Garen.
76
77         Removed LiteralIdentifierTable since it doesn't seem to have any perf. impact now.
78
79         * runtime/Identifier.cpp:
80         (JSC::Identifier::add):
81
82 2013-06-12  Conrad Shultz  <conrad_shultz@apple.com>
83
84         JSExport header documentation substitutes "semicolon" for "colon"
85         https://bugs.webkit.org/show_bug.cgi?id=117552
86
87         Reviewed by Mark Hahnenberg.
88
89         * API/JSExport.h:
90         Fix a couple typos.
91
92 2013-06-10  Raphael Kubo da Costa  <raphael.kubo.da.costa@intel.com>
93
94         [JSC] Remove a vestige of wxWidgets support.
95         https://bugs.webkit.org/show_bug.cgi?id=117419
96
97         Reviewed by Benjamin Poulain.
98
99         * runtime/JSExportMacros.h: Remove a check for BUILDING_WX__ that
100         seems to have gone unnoticed when the wxWidgets port was removed.
101
102 2013-06-06  Roger Fong  <roger_fong@apple.com>
103
104         Stop copying AAS binaries into build folder.
105         https://bugs.webkit.org/show_bug.cgi?id=117319.
106
107         Rubberstamped by Darin Adler.
108
109         * JavaScriptCore.vcxproj/JavaScriptCorePreLink.cmd:
110         * JavaScriptCore.vcxproj/jsc/jscPostBuild.cmd:
111         * JavaScriptCore.vcxproj/jsc/jscPreLink.cmd:
112         * JavaScriptCore.vcxproj/testRegExp/testRegExpPostBuild.cmd:
113         * JavaScriptCore.vcxproj/testRegExp/testRegExpPreLink.cmd:
114         * JavaScriptCore.vcxproj/testapi/testapiPreLink.cmd:
115
116 2013-06-05  Filip Pizlo  <fpizlo@apple.com>
117
118         DFG CFA shouldn't filter ArrayModes with ALL_NON_ARRAY_ARRAY_MODES if the speculated type is not SpecArray
119         https://bugs.webkit.org/show_bug.cgi?id=117279
120         <rdar://problem/14078025>        
121
122         Reviewed by Mark Hahnenberg.
123
124         * dfg/DFGAbstractValue.h:
125         (JSC::DFG::AbstractValue::filterArrayModesByType):
126
127 2013-06-05  Michael Saboff  <msaboff@apple.com>
128
129         JSC: Crash beneath cti_op_div @ http://gmailblog.blogspot.com
130         https://bugs.webkit.org/show_bug.cgi?id=117280
131
132         Reviewed by Filip Pizlo.
133
134         Updated the merging of VariableAccessData nodes in ArgumentPosition lists
135         to find the unified VariableAccessData node that is the root of the
136         current node instead of using the current node directly when merging
137         attributes.
138         Added new dump code to dump the ArgumentPosition list.
139
140         * dfg/DFGArgumentPosition.h:
141         (JSC::DFG::rgumentPosition::mergeArgumentPredictionAwareness):
142         (JSC::DFG::ArgumentPosition::mergeArgumentUnboxingAwareness):
143         (JSC::DFG::ArgumentPosition::dump):
144         * dfg/DFGGraph.cpp:
145         (JSC::DFG::Graph::dump):
146
147 2013-06-05  Bear Travis  <betravis@adobe.com>
148
149         [CSS Exclusions][CSS Shapes] Split CSS Exclusions & Shapes compile & runtime flags
150         https://bugs.webkit.org/show_bug.cgi?id=117172
151
152         Reviewed by Alexandru Chiculita.
153
154         Adding the CSS_SHAPES compile flag.
155
156         * Configurations/FeatureDefines.xcconfig:
157
158 2013-06-05  Balazs Kilvady  <kilvadyb@homejinni.com>
159
160         JSC Assertion tests failures on MIPS.
161         https://bugs.webkit.org/show_bug.cgi?id=116552
162
163         Reviewed by Geoffrey Garen.
164
165         Fix condition handlig in branchAdd32 implemetations.
166
167         * assembler/MacroAssemblerMIPS.h:
168         (JSC::MacroAssemblerMIPS::branchAdd32):
169
170 2013-06-04  Julien Brianceau  <jbrianceau@nds.com>
171
172         [sh4] Add floating point absolute function support in baseline JIT.
173         https://bugs.webkit.org/show_bug.cgi?id=117147
174
175         Reviewed by Geoffrey Garen.
176
177         * assembler/MacroAssemblerSH4.h:
178         (JSC::MacroAssemblerSH4::supportsFloatingPointAbs):
179         (JSC::MacroAssemblerSH4::absDouble):
180         * assembler/SH4Assembler.h:
181         (JSC::SH4Assembler::dabs):
182         (JSC::SH4Assembler::printInstr):
183
184 2013-06-04  Zan Dobersek  <zdobersek@igalia.com>
185
186         [JSC] Test262 15.5.4.9_3 test is failing
187         https://bugs.webkit.org/show_bug.cgi?id=116789
188
189         Reviewed by Geoffrey Garen.
190
191         Bring the String.prototype.localeCompare behavior in line wit ES5 15.9.4.9.
192         If method is not given enough arguments, the minimal amount of arguments must be assumed, with their value being undefined.
193         The first argument to localeCompare, in its string form, is used as the 'that' string that's used in the comparison.
194         Therefor, when calling str.localeCompare() or str.localeCompare(undefined), the first argument is `undefined` and the
195         string "undefined" is used as the string to which value of str is compared.
196
197         * runtime/StringPrototype.cpp:
198         (JSC::stringProtoFuncLocaleCompare): Remove the early return in case of no given arguments to achieve the desired behavior.
199
200 2013-06-03  Hojong Han  <hojong.han@samsung.com>
201
202         [EFL] Implement GCActivityCallback
203         https://bugs.webkit.org/show_bug.cgi?id=95923
204
205         Reviewed by Geoffrey Garen.
206
207         Implements the activity triggered garbage collector.
208         Additional GCs can be triggered by platfrom timer.
209         It has sort of compaction effect not to make JSC heap grow fast
210         so that memory usage becomes lower than usual.
211
212         * PlatformEfl.cmake: Added.
213         * heap/HeapTimer.cpp:
214         (JSC):
215         (JSC::HeapTimer::HeapTimer):
216         (JSC::HeapTimer::~HeapTimer):
217         (JSC::HeapTimer::add):
218         (JSC::HeapTimer::stop):
219         (JSC::HeapTimer::timerEvent):
220         * heap/HeapTimer.h:
221         (HeapTimer):
222         * jsc.cpp:
223         (main):
224         * runtime/GCActivityCallback.cpp:
225         (JSC):
226         (JSC::DefaultGCActivityCallback::DefaultGCActivityCallback):
227         (JSC::DefaultGCActivityCallback::scheduleTimer):
228         (JSC::DefaultGCActivityCallback::cancelTimer):
229         (JSC::DefaultGCActivityCallback::didAllocate):
230         * runtime/GCActivityCallback.h:
231         (GCActivityCallback):
232         (JSC::GCActivityCallback::GCActivityCallback):
233         (DefaultGCActivityCallback):
234
235 2013-06-03  Roger Fong  <roger_fong@apple.com>
236
237         Nuke VS2005 files from the tree.
238         <rdar://problem/14042021>.
239
240         Rubberstamped by Brent Fulgham.
241
242         * JavaScriptCore.vcproj: Removed.
243         * JavaScriptCore.vcproj/JavaScriptCore: Removed.
244         * JavaScriptCore.vcproj/JavaScriptCore.make: Removed.
245         * JavaScriptCore.vcproj/JavaScriptCore.resources: Removed.
246         * JavaScriptCore.vcproj/JavaScriptCore.resources/Info.plist: Removed.
247         * JavaScriptCore.vcproj/JavaScriptCore.sln: Removed.
248         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: Removed.
249         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreCF.vsprops: Removed.
250         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreCFLite.vsprops: Removed.
251         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreCommon.vsprops: Removed.
252         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreDebug.vsprops: Removed.
253         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreDebugAll.vsprops: Removed.
254         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreDebugCairoCFLite.vsprops: Removed.
255         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreExports.def: Removed.
256         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreGenerated.make: Removed.
257         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreGenerated.vcproj: Removed.
258         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreGeneratedCommon.vsprops: Removed.
259         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreGeneratedDebug.vsprops: Removed.
260         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreGeneratedDebugAll.vsprops: Removed.
261         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreGeneratedDebugCairoCFLite.vsprops: Removed.
262         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreGeneratedProduction.vsprops: Removed.
263         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreGeneratedRelease.vsprops: Removed.
264         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreGeneratedReleaseCairoCFLite.vsprops: Removed.
265         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreGeneratedReleasePGO.vsprops: Removed.
266         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCorePGOOptimize.vsprops: Removed.
267         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCorePostBuild.cmd: Removed.
268         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCorePreBuild.cmd: Removed.
269         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCorePreLink.cmd: Removed.
270         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreProduction.vsprops: Removed.
271         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreRelease.vsprops: Removed.
272         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreReleaseCairoCFLite.vsprops: Removed.
273         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreReleasePGO.vsprops: Removed.
274         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreReleasePGOOptimize.vsprops: Removed.
275         * JavaScriptCore.vcproj/JavaScriptCore/build-generated-files.sh: Removed.
276         * JavaScriptCore.vcproj/JavaScriptCore/copy-files.cmd: Removed.
277         * JavaScriptCore.vcproj/JavaScriptCoreSubmit.sln: Removed.
278         * JavaScriptCore.vcproj/LLIntAssembly: Removed.
279         * JavaScriptCore.vcproj/LLIntAssembly/LLIntAssembly.make: Removed.
280         * JavaScriptCore.vcproj/LLIntAssembly/LLIntAssembly.vcproj: Removed.
281         * JavaScriptCore.vcproj/LLIntAssembly/build-LLIntAssembly.sh: Removed.
282         * JavaScriptCore.vcproj/LLIntDesiredOffsets: Removed.
283         * JavaScriptCore.vcproj/LLIntDesiredOffsets/LLIntDesiredOffsets.make: Removed.
284         * JavaScriptCore.vcproj/LLIntDesiredOffsets/LLIntDesiredOffsets.vcproj: Removed.
285         * JavaScriptCore.vcproj/LLIntDesiredOffsets/build-LLIntDesiredOffsets.sh: Removed.
286         * JavaScriptCore.vcproj/LLIntOffsetsExtractor: Removed.
287         * JavaScriptCore.vcproj/LLIntOffsetsExtractor/LLIntOffsetsExtractor.vcproj: Removed.
288         * JavaScriptCore.vcproj/LLIntOffsetsExtractor/LLIntOffsetsExtractorCommon.vsprops: Removed.
289         * JavaScriptCore.vcproj/LLIntOffsetsExtractor/LLIntOffsetsExtractorDebug.vsprops: Removed.
290         * JavaScriptCore.vcproj/LLIntOffsetsExtractor/LLIntOffsetsExtractorDebugAll.vsprops: Removed.
291         * JavaScriptCore.vcproj/LLIntOffsetsExtractor/LLIntOffsetsExtractorDebugCairoCFLite.vsprops: Removed.
292         * JavaScriptCore.vcproj/LLIntOffsetsExtractor/LLIntOffsetsExtractorProduction.vsprops: Removed.
293         * JavaScriptCore.vcproj/LLIntOffsetsExtractor/LLIntOffsetsExtractorRelease.vsprops: Removed.
294         * JavaScriptCore.vcproj/LLIntOffsetsExtractor/LLIntOffsetsExtractorReleaseCairoCFLite.vsprops: Removed.
295         * JavaScriptCore.vcproj/LLIntOffsetsExtractor/LLIntOffsetsExtractorReleasePGO.vsprops: Removed.
296         * JavaScriptCore.vcproj/jsc: Removed.
297         * JavaScriptCore.vcproj/jsc/jsc.vcproj: Removed.
298         * JavaScriptCore.vcproj/jsc/jscCommon.vsprops: Removed.
299         * JavaScriptCore.vcproj/jsc/jscDebug.vsprops: Removed.
300         * JavaScriptCore.vcproj/jsc/jscDebugAll.vsprops: Removed.
301         * JavaScriptCore.vcproj/jsc/jscDebugCairoCFLite.vsprops: Removed.
302         * JavaScriptCore.vcproj/jsc/jscPostBuild.cmd: Removed.
303         * JavaScriptCore.vcproj/jsc/jscPreBuild.cmd: Removed.
304         * JavaScriptCore.vcproj/jsc/jscPreLink.cmd: Removed.
305         * JavaScriptCore.vcproj/jsc/jscProduction.vsprops: Removed.
306         * JavaScriptCore.vcproj/jsc/jscRelease.vsprops: Removed.
307         * JavaScriptCore.vcproj/jsc/jscReleaseCairoCFLite.vsprops: Removed.
308         * JavaScriptCore.vcproj/jsc/jscReleasePGO.vsprops: Removed.
309         * JavaScriptCore.vcproj/testRegExp: Removed.
310         * JavaScriptCore.vcproj/testRegExp/testRegExp.vcproj: Removed.
311         * JavaScriptCore.vcproj/testRegExp/testRegExpCommon.vsprops: Removed.
312         * JavaScriptCore.vcproj/testRegExp/testRegExpDebug.vsprops: Removed.
313         * JavaScriptCore.vcproj/testRegExp/testRegExpDebugAll.vsprops: Removed.
314         * JavaScriptCore.vcproj/testRegExp/testRegExpDebugCairoCFLite.vsprops: Removed.
315         * JavaScriptCore.vcproj/testRegExp/testRegExpPostBuild.cmd: Removed.
316         * JavaScriptCore.vcproj/testRegExp/testRegExpPreBuild.cmd: Removed.
317         * JavaScriptCore.vcproj/testRegExp/testRegExpPreLink.cmd: Removed.
318         * JavaScriptCore.vcproj/testRegExp/testRegExpProduction.vsprops: Removed.
319         * JavaScriptCore.vcproj/testRegExp/testRegExpRelease.vsprops: Removed.
320         * JavaScriptCore.vcproj/testRegExp/testRegExpReleaseCairoCFLite.vsprops: Removed.
321         * JavaScriptCore.vcproj/testRegExp/testRegExpReleasePGO.vsprops: Removed.
322         * JavaScriptCore.vcproj/testapi: Removed.
323         * JavaScriptCore.vcproj/testapi/testapi.vcproj: Removed.
324         * JavaScriptCore.vcproj/testapi/testapiCommon.vsprops: Removed.
325         * JavaScriptCore.vcproj/testapi/testapiDebug.vsprops: Removed.
326         * JavaScriptCore.vcproj/testapi/testapiDebugAll.vsprops: Removed.
327         * JavaScriptCore.vcproj/testapi/testapiDebugCairoCFLite.vsprops: Removed.
328         * JavaScriptCore.vcproj/testapi/testapiPostBuild.cmd: Removed.
329         * JavaScriptCore.vcproj/testapi/testapiPreBuild.cmd: Removed.
330         * JavaScriptCore.vcproj/testapi/testapiPreLink.cmd: Removed.
331         * JavaScriptCore.vcproj/testapi/testapiProduction.vsprops: Removed.
332         * JavaScriptCore.vcproj/testapi/testapiRelease.vsprops: Removed.
333         * JavaScriptCore.vcproj/testapi/testapiReleaseCairoCFLite.vsprops: Removed.
334
335 2013-05-31  Filip Pizlo  <fpizlo@apple.com>
336
337         Incorrect assertion in DFG::Graph::uncheckedActivationRegisterFor()
338         <rdar://problem/13989324>
339
340         Rubber stamped by Mark Hahnenberg.
341         
342         This has a bogus assertion that checks that the passed CodeOrigin doesn't have
343         an inline call frame. This was well intentioned in the sense that it is true
344         that inlined call frames wouldn't have an activation register. But that doesn't
345         mean that people won't ask. Removing the assertion fixes a debug-only crash and
346         has no impact on production code. This change adds a comment to that effect.
347
348         * dfg/DFGGraph.h:
349         (JSC::DFG::Graph::uncheckedActivationRegisterFor):
350
351 2013-05-31  Julien Brianceau  <jbrianceau@nds.com>
352
353         [sh4] Fix Overflow case of branchMul32 in baseline JIT.
354         https://bugs.webkit.org/show_bug.cgi?id=117057
355
356         Reviewed by Oliver Hunt.
357
358         Current implementation of Overflow case in branchMul32 performs an
359         unsigned multiplication whereas a signed multiplication is expected.
360
361         * assembler/MacroAssemblerSH4.h:
362         (JSC::MacroAssemblerSH4::branchMul32):
363
364 2013-05-31  Julien Brianceau  <jbrianceau@nds.com>
365
366         [sh4] Fix floating point comparisons in baseline JIT.
367         https://bugs.webkit.org/show_bug.cgi?id=117066.
368
369         Reviewed by Oliver Hunt.
370
371         Current implementation of branchDouble function in baseline JIT is wrong
372         for some conditions and overkill for others. For instance:
373         - With DoubleGreaterThanOrEqual condition, branch will be taken if either
374           operand is NaN with current implementation whereras it should not.
375         - With DoubleNotEqualOrUnordered condition, performed NaN checks are
376           useless (because comparison result is false if either operand is NaN).
377
378         * assembler/MacroAssemblerSH4.h:
379         (JSC::MacroAssemblerSH4::branchDouble):
380
381 2013-05-31  Julien Brianceau  <jbrianceau@nds.com>
382
383         [sh4] Fix double floating point transfer in baseline JIT.
384         https://bugs.webkit.org/show_bug.cgi?id=117054
385
386         Reviewed by Oliver Hunt.
387
388         In current implementation, dmovRegReg function transfers only one single
389         FPRegister as PR=1 and SZ=0 in floating point status/control register.
390         Double transfers must be performed with two fmov.s opcodes.
391
392         * assembler/MacroAssemblerSH4.h:
393         (JSC::MacroAssemblerSH4::moveDouble):
394         (JSC::MacroAssemblerSH4::addDouble): Handle (op2==dest) case properly.
395         (JSC::MacroAssemblerSH4::sqrtDouble):
396         * assembler/SH4Assembler.h:
397         (JSC::SH4Assembler::fmovsRegReg):
398
399 2013-05-31  Julien Brianceau  <jbrianceau@nds.com>
400
401         [sh4] Handle branchType properly in branchTruncateDoubleToInt32.
402         https://bugs.webkit.org/show_bug.cgi?id=117062
403
404         Reviewed by Oliver Hunt.
405
406         Current implementation of branchTruncateDoubleToInt32 is incorrect
407         when branchType == BranchIfTruncateSuccessful in sh4 baseline JIT.
408
409         * assembler/MacroAssemblerSH4.h:
410         (JSC::MacroAssemblerSH4::branchTruncateDoubleToInt32):
411
412 2013-05-31  Brent Fulgham  <bfulgham@apple.com>
413
414         [Windows] Unreviewed build fix for VS2005 builders.
415
416         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreExports.def: Add
417         missing export for WTF::SHA1::computeHexDigest
418
419 2013-05-30  David Farler  <dfarler@apple.com>
420
421         Fix jscore-test when not using --sdk option with jsDriver.pl
422         https://bugs.webkit.org/show_bug.cgi?id=116339
423
424         Reviewed by Joe Pecoraro.
425
426         * tests/mozilla/jsDriver.pl:
427         (execute_tests):
428         With each test, the shell_command needs to be started from scratch.
429
430         This fix will clear the shell_command and start over as before with
431         the opt_arch option when not using --sdk with jsDriver.pl.
432
433 2013-05-30  Roger Fong  <roger_fong@apple.com>
434
435         Get rid of JavaScript exports file on AppleWin port.
436         https://bugs.webkit.org/show_bug.cgi?id=117050.
437
438         Reviewed by Darin Adler.
439
440         Delete the JavaScriptCoreExportGenerator folder and remove dependencies.
441         Start linking in WTF.lib now that it's a shared library.
442
443         * JavaScriptCore.vcxproj/JavaScriptCore.submit.sln:
444         * JavaScriptCore.vcxproj/JavaScriptCore.vcxproj.filters:
445         * JavaScriptCore.vcxproj/JavaScriptCoreCommon.props:
446         * JavaScriptCore.vcxproj/JavaScriptCoreExportGenerator: Removed.
447         * JavaScriptCore.vcxproj/JavaScriptCoreExportGenerator/JavaScriptCoreExportGenerator.vcxproj: Removed.
448         * JavaScriptCore.vcxproj/JavaScriptCoreExportGenerator/JavaScriptCoreExportGenerator.vcxproj.filters: Removed.
449         * JavaScriptCore.vcxproj/JavaScriptCoreExportGenerator/JavaScriptCoreExportGeneratorBuildCmd.cmd: Removed.
450         * JavaScriptCore.vcxproj/JavaScriptCoreExportGenerator/JavaScriptCoreExportGeneratorCommon.props: Removed.
451         * JavaScriptCore.vcxproj/JavaScriptCoreExportGenerator/JavaScriptCoreExportGeneratorDebug.props: Removed.
452         * JavaScriptCore.vcxproj/JavaScriptCoreExportGenerator/JavaScriptCoreExportGeneratorPostBuild.cmd: Removed.
453         * JavaScriptCore.vcxproj/JavaScriptCoreExportGenerator/JavaScriptCoreExportGeneratorPreBuild.cmd: Removed.
454         * JavaScriptCore.vcxproj/JavaScriptCoreExportGenerator/JavaScriptCoreExportGeneratorProduction.props: Removed.
455         * JavaScriptCore.vcxproj/JavaScriptCoreExportGenerator/JavaScriptCoreExportGeneratorRelease.props: Removed.
456         * JavaScriptCore.vcxproj/JavaScriptCoreExportGenerator/JavaScriptCoreExports.def.in: Removed.
457         * JavaScriptCore.vcxproj/JavaScriptCoreExportGenerator/make-export-file-generator: Removed.
458         * JavaScriptCore.vcxproj/jsc/jscCommon.props:
459         * JavaScriptCore.vcxproj/testRegExp/testRegExp.vcxproj:
460         * JavaScriptCore.vcxproj/testRegExp/testRegExp.vcxproj.filters:
461         * JavaScriptCore.vcxproj/testRegExp/testRegExpCommon.props:
462         * JavaScriptCore.vcxproj/testapi/testapiCommon.props:
463
464 2013-05-22  David Farler  <dfarler@apple.com>
465
466         Add --sdk option to jsDriver.pl to run with iOS Simulator
467         https://bugs.webkit.org/show_bug.cgi?id=116339
468
469         Reviewed by David Kilzer.
470
471         * tests/mozilla/jsDriver.pl:
472         (execute_tests):
473         Prefix shell command with the path to the "sim" tool.
474         (parse_args):
475         Add -d / --sdk option.
476         (usage):
477         Help message for -d / --sdk option.
478
479 2013-05-30  Julien Brianceau  <jbrianceau@nds.com>
480
481         [sh4] Optimize NaN checks in LLINT for floating point comparisons.
482         https://bugs.webkit.org/show_bug.cgi?id=117049
483
484         Reviewed by Oliver Hunt.
485
486         Use the fcmp/eq opcode in sh4 LLINT to test if a double is NaN.
487         This is more efficient, doesn't require two tmp registers and requires
488         less code than current implementation (which converts double to float,
489         then checks 'E = Emax + 1' and 'f != 0').
490
491         * offlineasm/sh4.rb:
492
493 2013-05-30  Oliver Hunt  <oliver@apple.com>
494
495         JSCallbackObject does not correctly initialise the PropertySlot for getOwnPropertyDescriptor
496         https://bugs.webkit.org/show_bug.cgi?id=117053
497
498         Reviewed by Mark Hahnenberg.
499
500         Set appropriate thisValue on the PropertySlot
501
502         * API/JSCallbackObjectFunctions.h:
503         (JSC::::getOwnPropertyDescriptor):
504         * API/tests/testapi.mm:
505
506 2013-05-29  Jeffrey Pfau  <jpfau@apple.com>
507
508         [Mac] Enable cache partitioning and the public suffix list on 10.8
509         <rdar://problem/13679019>
510
511         Rubber-stamped by David Kilzer.
512
513         * Configurations/FeatureDefines.xcconfig:
514
515 2013-05-28  Brent Fulgham  <bfulgham@apple.com>
516
517         [Windows] Put correct byteCompile symbol in file. Previous version
518         had an extra 'i' appended to the end.
519
520         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreExports.def:
521         * JavaScriptCore.vcxproj/JavaScriptCoreExportGenerator/JavaScriptCoreExports.def.in:
522
523 2013-05-28  Brent Fulgham  <bfulgham@apple.com>
524
525         [Windows] Unreviewed build fix.  Remove ?byteCompile symbol that
526         is no longer accessible during link.
527
528         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreExports.def:
529         * JavaScriptCore.vcxproj/JavaScriptCoreExportGenerator/JavaScriptCoreExports.def.in:
530
531 2013-05-28  Gavin Barraclough  <barraclough@apple.com>
532
533         String(new Date(2010,10,1)) is wrong in KRAT, YAKT
534         https://bugs.webkit.org/show_bug.cgi?id=106750
535
536         Reviewed by Darin Adler.
537
538         * runtime/JSDateMath.cpp:
539         (JSC::msToGregorianDateTime):
540             - Additional review comment fix.
541
542 2013-05-28  Brent Fulgham  <bfulgham@apple.com>
543
544         [Windows] Unreviewed build fix after r150833
545
546         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreExports.def:
547         A CR/LF combination was lost in the file, combining two symbols.
548
549 2013-05-27  Gavin Barraclough  <barraclough@apple.com>
550
551         String(new Date(2010,10,1)) is wrong in KRAT, YAKT
552         https://bugs.webkit.org/show_bug.cgi?id=106750
553
554         Reviewed by Darin Adler.
555
556         First part of a fix, simplfy date handling code, instead of operating separately
557         on the UTC-standard and standard-DST offsets, just generate a combined UTC-local
558         offset (this is what we actually need, and what the OS gives us).
559
560         * runtime/JSDateMath.cpp:
561         (JSC::getLocalTimeOffset):
562             - removed getUTCOffset, converted getDSTOffset -> getLocalTimeOffset
563         (JSC::gregorianDateTimeToMS):
564         (JSC::msToGregorianDateTime):
565         (JSC::parseDateFromNullTerminatedCharacters):
566             - call getLocalTimeOffset instead of getUTCOffset/getDSTOffset
567         * runtime/VM.cpp:
568         (JSC::VM::resetDateCache):
569             - removed cachedUTCOffset, converted DSTOffsetCache -> LocalTimeOffsetCache
570         * runtime/VM.h:
571         (JSC::LocalTimeOffsetCache::LocalTimeOffsetCache):
572         (JSC::LocalTimeOffsetCache::reset):
573         (LocalTimeOffsetCache):
574             - removed cachedUTCOffset, converted DSTOffsetCache -> LocalTimeOffsetCache
575
576 2013-05-28  Mark Hahnenberg  <mhahnenberg@apple.com>
577
578         r150199 is very wrong
579         https://bugs.webkit.org/show_bug.cgi?id=116876
580
581         JSValue needs to protect its internal JSValueRef.
582
583         Reviewed by Darin Adler.
584
585         * API/JSValue.mm:
586         (-[JSValue initWithValue:inContext:]):
587         (-[JSValue dealloc]):
588         * API/tests/testapi.mm: Added a simple test to make sure that we protect the
589         underlying JavaScript value across garbage collections.
590
591 2013-05-27  Patrick Gansterer  <paroga@webkit.org>
592
593         Use ICU_INCLUDE_DIRS in BlackBerry CMake files
594         https://bugs.webkit.org/show_bug.cgi?id=116210
595
596         Reviewed by Rob Buis.
597
598         Set and use the ICU_INCLUDE_DIRS variable to avoid
599         duplicated adding of the ICU include directory.
600
601         * PlatformBlackBerry.cmake:
602
603 2013-05-27  Gabor Rapcsanyi  <rgabor@webkit.org>
604
605         MacroAssemblerARM should use xor to swap registers instead of move
606         https://bugs.webkit.org/show_bug.cgi?id=116306
607
608         Reviewed by Zoltan Herczeg.
609
610         Change register swapping to xor from move and this way we don't need
611         temporary register anymore.
612
613         * assembler/MacroAssemblerARM.h:
614         (JSC::MacroAssemblerARM::swap):
615
616 2013-05-25  Filip Pizlo  <fpizlo@apple.com>
617
618         We broke (-2^31/-1)|0 in the DFG
619         https://bugs.webkit.org/show_bug.cgi?id=116767
620
621         Reviewed by Andreas Kling.
622         
623         The bug is that we were assuming that in the -2^31 case, we already had -2^31
624         in the result register. This was a wrong assumption.
625
626         * dfg/DFGSpeculativeJIT.cpp:
627         (JSC::DFG::SpeculativeJIT::compileIntegerArithDivForX86):
628
629 2013-05-24  Filip Pizlo  <fpizlo@apple.com>
630
631         We broke !(0/0)
632         https://bugs.webkit.org/show_bug.cgi?id=116736
633
634         Reviewed by Gavin Barraclough.
635
636         * parser/ASTBuilder.h:
637         (JSC::ASTBuilder::createLogicalNot):
638         * runtime/JSCJSValueInlines.h:
639         (JSC::JSValue::pureToBoolean):
640
641 2013-05-24  Julien Brianceau  <jbrianceau@nds.com>
642
643         [sh4] Optimize LLINT generated code and fix few bugs in baseline JIT.
644         https://bugs.webkit.org/show_bug.cgi?id=116716
645
646         Reviewed by Geoffrey Garen.
647
648         * assembler/MacroAssemblerSH4.h:
649         (JSC::MacroAssemblerSH4::mul32): Cosmetic changes.
650         (JSC::MacroAssemblerSH4::convertInt32ToDouble): Absolute address was not dereferenced.
651         (JSC::MacroAssemblerSH4::branch32): Absolute address was not dereferenced.
652         (JSC::MacroAssemblerSH4::revertJumpReplacementToBranchPtrWithPatch): Use all 32 bits of pointer for revertJump call.
653         * assembler/SH4Assembler.h:
654         (JSC::SH4Assembler::revertJump): Use changePCrelativeAddress to patch the whole pointer.
655         (JSC::SH4Assembler::linkJump): Cosmetic change.
656         * offlineasm/sh4.rb: Optimize LLINT generated code.
657
658 2013-05-23  Peter Wang  <peter.wang@torchmobile.com.cn>
659
660         CLoop llint backend should not use the d8 register as scratch register
661         https://bugs.webkit.org/show_bug.cgi?id=116019
662
663         Reviewed by Csaba Osztrogonác.
664
665         * offlineasm/cloop.rb:
666
667 2013-05-22  Peter Wang  <peter.wang@torchmobile.com.cn>
668
669         Use uninitialized register in "JIT::emit_op_neq_null" and "emit_op_eq_null"
670         https://bugs.webkit.org/show_bug.cgi?id=116593
671
672         Reviewed by Filip Pizlo.
673
674         Generated instructions using uninitialized register. It's caused by a mistake of r126494.
675
676         * jit/JITOpcodes32_64.cpp:
677         (JSC::JIT::emit_op_eq_null):
678         (JSC::JIT::emit_op_neq_null):
679
680 2013-05-22  Filip Pizlo  <fpizlo@apple.com>
681
682         Fix indentation of CodeBlock.h
683
684         Rubber stampted by Mark Hahnenberg.
685
686         * bytecode/CodeBlock.h:
687
688 2013-05-22  Julien Brianceau  <jbrianceau@nds.com>
689
690         [sh4] Remove MacroAssemblerSH4.cpp file.
691         https://bugs.webkit.org/show_bug.cgi?id=116596.
692
693         Reviewed by Geoffrey Garen.
694
695         Move linkCall and repatchCall implementations from MacroAssemblerSH4.cpp
696         to MacroAssemblerSH4.h and remove MacroAssemblerSH4.cpp, as it is done
697         for other architectures.
698
699         * GNUmakefile.list.am:
700         * JavaScriptCore.xcodeproj/project.pbxproj:
701         * Target.pri:
702         * assembler/MacroAssemblerSH4.cpp: Removed.
703         * assembler/MacroAssemblerSH4.h:
704         (JSC::MacroAssemblerSH4::linkCall):
705         (MacroAssemblerSH4):
706         (JSC::MacroAssemblerSH4::repatchCall):
707
708 2013-05-21  Brent Fulgham  <bfulgham@apple.com>
709
710         [Windows] Unreviewed speculative fix for test-bots.
711
712         Add export declaration for WTFInvokeCrashHook to avoid runtime
713         load error on test bots.
714
715         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreExports.def:
716         * JavaScriptCore.vcxproj/JavaScriptCoreExportGenerator/JavaScriptCoreExports.def.in:
717
718 2013-05-21  Mark Lam  <mark.lam@apple.com>
719
720         Added missing assert condition for PositiveOrZero in ARM branch32().
721         https://bugs.webkit.org/show_bug.cgi?id=116538.
722
723         Reviewed by Geoffrey Garen.
724
725         * assembler/MacroAssemblerARM.h:
726         (JSC::MacroAssemblerARM::branchAdd32):
727
728 2013-05-20  Mark Hahnenberg  <mhahnenberg@apple.com>
729
730         Disable SuperRegion
731         https://bugs.webkit.org/show_bug.cgi?id=116362
732
733         Rubber stamped by Geoff Garen.
734
735         * heap/Region.h:
736
737 2013-05-20  Oliver Hunt  <oliver@apple.com>
738
739         Make C API more robust against null contexts
740         https://bugs.webkit.org/show_bug.cgi?id=116462
741
742         Reviewed by Anders Carlsson.
743
744         Handle null contexts in a non-crashy way.  It's a bug to ever call the
745         API with a null context, and the absence of a context means we can't
746         produce a meaningful result, so we still assert in debug builds.
747
748         Now where possible we detect and early return, returning null for any
749         pointer type, NaN for doubles, and false for any boolean result.
750
751         * API/JSBase.cpp:
752         (JSEvaluateScript):
753         (JSCheckScriptSyntax):
754         (JSReportExtraMemoryCost):
755         * API/JSContextRef.cpp:
756         (JSContextGetGlobalObject):
757         (JSContextGetGroup):
758         (JSContextGetGlobalContext):
759         (JSContextCreateBacktrace):
760         * API/JSObjectRef.cpp:
761         (JSObjectMake):
762         (JSObjectMakeFunctionWithCallback):
763         (JSObjectMakeConstructor):
764         (JSObjectMakeFunction):
765         (JSObjectMakeArray):
766         (JSObjectMakeDate):
767         (JSObjectMakeError):
768         (JSObjectMakeRegExp):
769         (JSObjectGetPrototype):
770         (JSObjectSetPrototype):
771         (JSObjectHasProperty):
772         (JSObjectGetProperty):
773         (JSObjectSetProperty):
774         (JSObjectGetPropertyAtIndex):
775         (JSObjectSetPropertyAtIndex):
776         (JSObjectDeleteProperty):
777         (JSObjectCopyPropertyNames):
778         * API/JSValueRef.cpp:
779         (JSValueGetType):
780         (JSValueIsUndefined):
781         (JSValueIsNull):
782         (JSValueIsBoolean):
783         (JSValueIsNumber):
784         (JSValueIsString):
785         (JSValueIsObject):
786         (JSValueIsObjectOfClass):
787         (JSValueIsEqual):
788         (JSValueIsStrictEqual):
789         (JSValueIsInstanceOfConstructor):
790         (JSValueMakeUndefined):
791         (JSValueMakeNull):
792         (JSValueMakeBoolean):
793         (JSValueMakeNumber):
794         (JSValueMakeString):
795         (JSValueMakeFromJSONString):
796         (JSValueCreateJSONString):
797         (JSValueToBoolean):
798         (JSValueToNumber):
799         (JSValueToStringCopy):
800         (JSValueToObject):
801         (JSValueProtect):
802         * API/JSWeakObjectMapRefPrivate.cpp:
803
804 2013-05-20  David Kilzer  <ddkilzer@apple.com>
805
806         Synchronize FeatureDefines.xcconfig
807
808         * Configurations/FeatureDefines.xcconfig: Remove
809         ENABLE_LINK_PRERENDER.  This was missed in r150356.
810
811 2013-05-19  Anders Carlsson  <andersca@apple.com>
812
813         Remove link prerendering code
814         https://bugs.webkit.org/show_bug.cgi?id=116415
815
816         Reviewed by Darin Adler.
817
818         This code was only used by Chromium and is dead now.
819
820         * Configurations/FeatureDefines.xcconfig:
821
822 2013-05-18  Patrick Gansterer  <paroga@webkit.org>
823
824         [CMake] Replace *_LIBRARY_NAME with *_OUTPUT_NAME
825         https://bugs.webkit.org/show_bug.cgi?id=114554
826
827         Reviewed by Gyuyoung Kim.
828
829         Using variables as target names is very uncommon in CMake.
830         The usual way to specify the name of the resulting binary
831         is to set the OUTPUT_NAME target property.
832
833         * CMakeLists.txt:
834         * shell/CMakeLists.txt:
835
836 2013-05-17  Patrick Gansterer  <paroga@webkit.org>
837
838         [CMake] Remove invalid include paths
839         https://bugs.webkit.org/show_bug.cgi?id=116213
840
841         Reviewed by Gyuyoung Kim.
842
843         Since "${JAVASCRIPTCORE_DIR}/wtf" does not exist, it is safe
844         to remove them from the list of include directories.
845
846         * PlatformEfl.cmake: Removed.
847         * PlatformGTK.cmake: Removed.
848
849 2013-05-16  Patrick Gansterer  <paroga@webkit.org>
850
851         Consolidate lists in JavaScriptCore CMake files
852         https://bugs.webkit.org/show_bug.cgi?id=115992
853
854         Reviewed by Gyuyoung Kim.
855
856         Move common files into the CMakeLists.txt to avoid duplicating the list of files.
857         Also rebase the recently added GTK files to match the other CMake ports, since
858         the submitted patch was based on an older version of the source tree.
859
860         * CMakeLists.txt:
861         * PlatformEfl.cmake:
862         * PlatformGTK.cmake:
863         * shell/CMakeLists.txt:
864         * shell/PlatformEfl.cmake:
865         * shell/PlatformGTK.cmake:
866
867 2013-05-16  Geoffrey Garen  <ggaren@apple.com>
868
869         JSValue shouldn't protect/unprotect its context
870         https://bugs.webkit.org/show_bug.cgi?id=116234
871
872         Reviewed by Mark Hahnenberg.
873
874         Our retain on _context is sufficient.
875
876         * API/JSValue.mm:
877         (-[JSValue initWithValue:inContext:]):
878         (-[JSValue dealloc]):
879
880 2013-05-15  Ryosuke Niwa  <rniwa@webkit.org>
881
882         Another Windows build fix attempt after r150160.
883
884         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreExports.def:
885         * JavaScriptCore.vcxproj/JavaScriptCoreExportGenerator/JavaScriptCoreExports.def.in:
886
887 2013-05-15  Oliver Hunt  <oliver@apple.com>
888
889         RefCountedArray needs to use vector initialisers for its backing store
890         https://bugs.webkit.org/show_bug.cgi?id=116194
891
892         Reviewed by Gavin Barraclough.
893
894         Use an out of line function to clear the exception stack to avoid
895         needing to include otherwise unnecessary headers all over the place.
896
897         Everything else is just being updated to use that.
898
899         * bytecompiler/BytecodeGenerator.cpp:
900         * interpreter/CallFrame.h:
901         (JSC::ExecState::clearSupplementaryExceptionInfo):
902         * interpreter/Interpreter.cpp:
903         (JSC::Interpreter::addStackTraceIfNecessary):
904         (JSC::Interpreter::throwException):
905         * runtime/JSGlobalObject.cpp:
906         (JSC::DynamicGlobalObjectScope::DynamicGlobalObjectScope):
907         * runtime/VM.cpp:
908         (JSC):
909         (JSC::VM::clearExceptionStack):
910         * runtime/VM.h:
911         (VM):
912         (JSC::VM::exceptionStack):
913
914 2013-05-15  Commit Queue  <commit-queue@webkit.org>
915
916         Unreviewed, rolling out r150051.
917         http://trac.webkit.org/changeset/150051
918         https://bugs.webkit.org/show_bug.cgi?id=116186
919
920         Broke all JSC tests on Mac and the author is unresponsive
921         (Requested by rniwa on #webkit).
922
923         * JavaScriptCore.xcodeproj/project.pbxproj:
924
925 2013-05-15  Julien Brianceau  <jbrianceau@nds.com>
926
927         Remove savedTimeoutReg from JITStackFrame for sh4 base JIT.
928         https://bugs.webkit.org/show_bug.cgi?id=116143
929
930         Reviewed by Geoffrey Garen.
931
932         Since r148119, timeoutCheckRegister is removed from baseline JIT.
933         So we don't need to save r8 register in JITStackFrame anymore for sh4.
934
935         * jit/JITStubs.cpp:
936         * jit/JITStubs.h:
937         (JITStackFrame):
938
939 2013-05-15  Nico Weber  <thakis@chromium.org>
940
941         WebKit doesn't support MSVS2003 any more, remove preprocessor checks for older versions.
942         https://bugs.webkit.org/show_bug.cgi?id=116157
943
944         Reviewed by Anders Carlsson.
945
946         Also remove a gcc3.2 workaround.
947
948         Merges parts of these two commits by the talented Nico Weber:
949         https://chromium.googlesource.com/chromium/blink/+/3677e2f47348daeff405a40b6f90fbdf0654c2f5
950         https://chromium.googlesource.com/chromium/blink/+/0fcd96c448dc30be1416dcc15713c53710c1a312
951
952         * os-win32/inttypes.h:
953
954 2013-05-13  Alvaro Lopez Ortega  <alvaro@alobbs.com>
955
956         Nightly build's jsc doesn't work without DYLD_FRAMEWORK...
957         https://bugs.webkit.org/show_bug.cgi?id=79065
958
959         Reviewed by Darin Adler.
960
961         Fixes the build process so the depencencies of the jsc binary are
962         modified before its copied to its target directory. In this way
963         jsc should always use relative reference to the JavaScriptCore
964         libraries.
965
966         * JavaScriptCore.xcodeproj/project.pbxproj: Fixes the commands in
967         the "Copy Into Framework" target.
968
969 2013-05-13  Mark Hahnenberg  <mhahnenberg@apple.com>
970
971         Objective-C API: scanExternalObjectGraph should not create new JSVirtualMachine wrappers
972         https://bugs.webkit.org/show_bug.cgi?id=116074
973
974         If scanExternalObjectGraph creates a new JSVirtualMachine wrapper during collection, when the 
975         scanExternalObjectGraph call finishes and the autorelease pool is drained we will dealloc the 
976         JSVirtualMachine which will cause us to try to take the API lock for the corresponding VM. 
977         If this happens on a GC thread other than the "main" thread, we will deadlock. The solution 
978         is to just check the VM cache, and if there is no JSVirtualMachine wrapper, return early.
979
980         Reviewed by Darin Adler.
981
982         * API/JSVirtualMachine.mm:
983         (scanExternalObjectGraph):
984
985 2013-05-13  Benjamin Poulain  <benjamin@webkit.org>
986
987         Improve stringProtoFuncLastIndexOf for the prefix case
988         https://bugs.webkit.org/show_bug.cgi?id=115952
989
990         Reviewed by Geoffrey Garen.
991
992         * runtime/StringPrototype.cpp:
993         (JSC::stringProtoFuncLastIndexOf):
994         Use the optimized string search when possible.
995
996         On Joseph Pecoraro's tests, this gives a ~30% speed improvement.
997
998 2013-05-13  Zalan Bujtas  <zalan@apple.com>
999
1000         WebProcess consuming very high CPU on linkedin.com
1001         https://bugs.webkit.org/show_bug.cgi?id=115601
1002
1003         Reviewed by Andreas Kling.
1004
1005         Disable WEB_TIMING_MINIMAL.
1006         Turn off window.performance and performance.now(). Some JS frameworks expect
1007         additional Web Timing APIs, when performance.now() is available.
1008
1009         * Configurations/FeatureDefines.xcconfig:
1010
1011 2013-05-12  Anders Carlsson  <andersca@apple.com>
1012
1013         Stop including UnusedParam.h
1014         https://bugs.webkit.org/show_bug.cgi?id=116003
1015
1016         Reviewed by Sam Weinig.
1017
1018         UnusedParam.h is empty now so there's no need to include it anymore.
1019
1020         * API/APICast.h:
1021         * API/tests/JSNode.c:
1022         * API/tests/JSNodeList.c:
1023         * API/tests/minidom.c:
1024         * API/tests/testapi.c:
1025         * assembler/AbstractMacroAssembler.h:
1026         * assembler/MacroAssemblerCodeRef.h:
1027         * bytecode/CodeBlock.cpp:
1028         * heap/HandleStack.h:
1029         * interpreter/JSStackInlines.h:
1030         * jit/CompactJITCodeMap.h:
1031         * jit/ExecutableAllocator.h:
1032         * parser/SourceProvider.h:
1033         * runtime/DatePrototype.cpp:
1034         * runtime/JSNotAnObject.cpp:
1035         * runtime/JSSegmentedVariableObject.h:
1036         * runtime/JSVariableObject.h:
1037         * runtime/Options.cpp:
1038         * runtime/PropertyOffset.h:
1039
1040 2013-05-11  Martin Robinson  <mrobinson@igalia.com>
1041
1042         [GTK] Add a basic cmake build for WTF and JavaScriptCore
1043         https://bugs.webkit.org/show_bug.cgi?id=115967
1044
1045         Reviewed by Laszlo Gombos.
1046
1047         * PlatformGTK.cmake: Added.
1048         * shell/PlatformGTK.cmake: Added.
1049
1050 2013-05-10  Laszlo Gombos  <l.gombos@samsung.com>
1051
1052         Remove USE(OS_RANDOMNESS)
1053         https://bugs.webkit.org/show_bug.cgi?id=108095
1054
1055         Reviewed by Darin Adler.
1056
1057         Remove the USE(OS_RANDOMNESS) guard as it is turned on for all
1058         ports.
1059
1060         * jit/JIT.cpp:
1061         (JSC::JIT::JIT):
1062
1063 2013-05-10  Mark Hahnenberg  <mhahnenberg@apple.com>
1064
1065         Rename StructureCheckHoistingPhase to TypeCheckHoistingPhase
1066         https://bugs.webkit.org/show_bug.cgi?id=115938
1067
1068         We're going to add some more types of check hoisting soon, so let's have the right name here.
1069
1070         Rubber stamped by Filip Pizlo.
1071         
1072         * CMakeLists.txt:
1073         * GNUmakefile.list.am:
1074         * JavaScriptCore.xcodeproj/project.pbxproj:
1075         * Target.pri:
1076         * dfg/DFGDriver.cpp:
1077         (JSC::DFG::compile):
1078         * dfg/DFGStructureCheckHoistingPhase.cpp: Removed.
1079         * dfg/DFGStructureCheckHoistingPhase.h: Removed.
1080         * dfg/DFGTypeCheckHoistingPhase.cpp: Copied from Source/JavaScriptCore/dfg/DFGStructureCheckHoistingPhase.cpp.
1081         (JSC::DFG::TypeCheckHoistingPhase::TypeCheckHoistingPhase):
1082         (JSC::DFG::performTypeCheckHoisting):
1083         * dfg/DFGTypeCheckHoistingPhase.h: Copied from Source/JavaScriptCore/dfg/DFGStructureCheckHoistingPhase.h.
1084
1085 2013-05-09  Christophe Dumez  <ch.dumez@sisa.samsung.com>
1086
1087         Unreviewed build fix after r149836.
1088
1089         It broke at least EFL and GTK builds. Move new static members initialization
1090         outside the class. Those need to have a definition outside the class because
1091         their address is used (e.g. CodeCacheMap::nonGlobalWorkingSetMaxEntries).
1092
1093         * runtime/CodeCache.cpp:
1094         (JSC):
1095         * runtime/CodeCache.h:
1096         (CodeCacheMap):
1097
1098 2013-05-08  Oliver Hunt  <oliver@apple.com>
1099
1100         Code cache stores bogus var references for functions in eval code
1101         https://bugs.webkit.org/show_bug.cgi?id=115747
1102
1103         Reviewed by Mark Hahnenberg.
1104
1105         Non-global eval now uses a per-CodeBlock cache, and only use it
1106         when we're at the top of a function's scope.  This means that we
1107         will no longer cache the parsing of a single string across
1108         multiple functions, and we won't cache when we're nested inside
1109         constructs like |with| and |catch| where previously we would, which
1110         is good because caching in those cases is unsound.
1111
1112         * bytecode/EvalCodeCache.h:
1113         (JSC):
1114         (JSC::EvalCodeCache::getSlow):
1115         (JSC::EvalCodeCache::get):
1116         * bytecode/UnlinkedCodeBlock.h:
1117         (JSC::UnlinkedCodeBlock::codeCacheForEval):
1118         (UnlinkedCodeBlock):
1119         (RareData):
1120         * debugger/Debugger.cpp:
1121         (JSC::evaluateInGlobalCallFrame):
1122         * debugger/DebuggerCallFrame.cpp:
1123         (JSC::DebuggerCallFrame::evaluate):
1124         * interpreter/Interpreter.cpp:
1125         (JSC::eval):
1126         * runtime/CodeCache.cpp:
1127         (JSC::CodeCache::CodeCache):
1128         (JSC::CodeCache::generateBytecode):
1129         (JSC):
1130         (JSC::CodeCache::getCodeBlock):
1131         * runtime/CodeCache.h:
1132         (JSC::CodeCacheMap::CodeCacheMap):
1133         (CodeCacheMap):
1134         (JSC::CodeCacheMap::canPruneQuickly):
1135         (JSC::CodeCacheMap::prune):
1136         (JSC::CodeCache::create):
1137         (CodeCache):
1138         * runtime/Executable.cpp:
1139         (JSC::EvalExecutable::EvalExecutable):
1140         (JSC::EvalExecutable::compileInternal):
1141         * runtime/Executable.h:
1142         (JSC::EvalExecutable::create):
1143         (EvalExecutable):
1144         * runtime/JSGlobalObject.cpp:
1145         (JSC::JSGlobalObject::createEvalCodeBlock):
1146         * runtime/JSGlobalObject.h:
1147         (JSGlobalObject):
1148         * runtime/JSGlobalObjectFunctions.cpp:
1149         (JSC::globalFuncEval):
1150         * runtime/VM.cpp:
1151         (JSC::VM::VM):
1152         * runtime/VM.h:
1153         (VM):
1154
1155 2013-05-08  Mark Hahnenberg  <mhahnenberg@apple.com>
1156
1157         DFGArrayMode::fromObserved is too liberal when it sees different Array and NonArray shapes
1158         https://bugs.webkit.org/show_bug.cgi?id=115805
1159
1160         Reviewed by Geoffrey Garen.
1161
1162         It checks the observed ArrayModes to see if we have seen any ArrayWith* first. If so, it assumes it's 
1163         an Array::Array, even if we've also observed any NonArrayWith* in the ArrayProfile. This leads to the 
1164         code generated by jumpSlowForUnwantedArrayMode to check the indexing type against (shape | IsArray) 
1165         instead of just shape, which can cause us to exit a lot in the case that we saw a NonArray.
1166
1167         To fix this we need to add a case that checks for both ArrayWith* and NonArrayWith* cases first, which 
1168         should then use Array::PossiblyArray, then do the checks we were already doing.
1169
1170         * bytecode/ArrayProfile.h:
1171         (JSC::hasSeenArray):
1172         (JSC::hasSeenNonArray):
1173         * dfg/DFGArrayMode.cpp:
1174         (JSC::DFG::ArrayMode::fromObserved):
1175
1176 2013-05-09  Joe Mason  <jmason@blackberry.com>
1177
1178         [BlackBerry] Set up logging buffer on start of jsc executable
1179         https://bugs.webkit.org/show_bug.cgi?id=114688
1180
1181         Reviewed by Rob Buis.
1182
1183         Internal PR: 322715
1184         Internally Reviewed By: Jeff Rogers
1185
1186         * jsc.cpp:
1187         (main): call BB::Platform::setupApplicationLogging
1188
1189 2013-05-08  Michael Saboff  <msaboff@apple.com>
1190
1191         JSC: There should be a disassembler for ARM Thumb 2
1192         https://bugs.webkit.org/show_bug.cgi?id=115827
1193
1194         Reviewed by Filip Pizlo.
1195
1196         Added a new disassembler for ARMv7 Thumb2 instructions for use by the JSC debugging
1197         and profiling code.  The opcode coverage is currently not complete.  It covers all
1198         of the integer instructions JSC currently emits, but only a limited number of
1199         floating point opcodes.  Currently that is just the 64 bit vmov and vmsr instructions.
1200
1201         The disassembler is structured as a base opcode class ARMv7DOpcode with sub-classes
1202         for each instruction group.  There is a public format method that does the bulk of
1203         the disassembly work.  There are two broad sub-classes, ARMv7D16BitOpcode and
1204         ARMv7D32BitOpcode, for the 16 bit and 32 bit opcodes.  There are sub-classes under
1205         those two classes for individual and related groups of opcodes.  Instructions are
1206         "dispatched" to the right subclass via two arrays of linked lists in the inner classes
1207         OpcodeGroup.  There is one such inner class for each ARMv7D16BitOpcode and ARMv7D32BitOpcode.
1208         Each OpcodeGroup has a mask and a pattern that it applies to the instruction to determine
1209         that it matches a particular group.  OpcodeGroup uses a static method to reinterpret_cast
1210         the Opcode object to the right base class for the instruction group for formatting.
1211         The cast eliminates the need of allocating an object for each decoded instruction.
1212         Unknown instructions are formatted as ".word 1234" or ".long 12345678" depending whether
1213         the instruction is 16 or 32 bit.
1214
1215         * JavaScriptCore.xcodeproj/project.pbxproj:
1216         * disassembler/ARMv7: Added.
1217         * disassembler/ARMv7/ARMv7DOpcode.cpp: Added.
1218         (ARMv7Disassembler):
1219         (OpcodeGroupInitializer):
1220         (JSC::ARMv7Disassembler::ARMv7DOpcode::init):
1221         (JSC::ARMv7Disassembler::ARMv7DOpcode::startITBlock):
1222         (JSC::ARMv7Disassembler::ARMv7DOpcode::saveITConditionAt):
1223         (JSC::ARMv7Disassembler::ARMv7DOpcode::fetchOpcode):
1224         (JSC::ARMv7Disassembler::ARMv7DOpcode::disassemble):
1225         (JSC::ARMv7Disassembler::ARMv7DOpcode::bufferPrintf):
1226         (JSC::ARMv7Disassembler::ARMv7DOpcode::appendInstructionName):
1227         (JSC::ARMv7Disassembler::ARMv7DOpcode::appendRegisterName):
1228         (JSC::ARMv7Disassembler::ARMv7DOpcode::appendRegisterList):
1229         (JSC::ARMv7Disassembler::ARMv7DOpcode::appendFPRegisterName):
1230         (JSC::ARMv7Disassembler::ARMv7D16BitOpcode::init):
1231         (JSC::ARMv7Disassembler::ARMv7D16BitOpcode::doDisassemble):
1232         (JSC::ARMv7Disassembler::ARMv7D16BitOpcode::defaultFormat):
1233         (JSC::ARMv7Disassembler::ARMv7DOpcodeAddRegisterT2::format):
1234         (JSC::ARMv7Disassembler::ARMv7DOpcodeAddSPPlusImmediate::format):
1235         (JSC::ARMv7Disassembler::ARMv7DOpcodeAddSubtractT1::format):
1236         (JSC::ARMv7Disassembler::ARMv7DOpcodeAddSubtractImmediate3::format):
1237         (JSC::ARMv7Disassembler::ARMv7DOpcodeAddSubtractImmediate8::format):
1238         (JSC::ARMv7Disassembler::ARMv7DOpcodeBranchConditionalT1::format):
1239         (JSC::ARMv7Disassembler::ARMv7DOpcodeBranchExchangeT1::format):
1240         (JSC::ARMv7Disassembler::ARMv7DOpcodeBranchT2::format):
1241         (JSC::ARMv7Disassembler::ARMv7DOpcodeCompareImmediateT1::format):
1242         (JSC::ARMv7Disassembler::ARMv7DOpcodeCompareRegisterT1::format):
1243         (JSC::ARMv7Disassembler::ARMv7DOpcodeCompareRegisterT2::format):
1244         (JSC::ARMv7Disassembler::ARMv7DOpcodeDataProcessingRegisterT1::format):
1245         (JSC::ARMv7Disassembler::ARMv7DOpcodeGeneratePCRelativeAddress::format):
1246         (JSC::ARMv7Disassembler::ARMv7DOpcodeLoadFromLiteralPool::format):
1247         (JSC::ARMv7Disassembler::ARMv7DOpcodeLoadStoreRegisterImmediate::format):
1248         (JSC::ARMv7Disassembler::ARMv7DOpcodeLoadStoreRegisterOffsetT1::format):
1249         (JSC::ARMv7Disassembler::ARMv7DOpcodeLoadStoreRegisterSPRelative::format):
1250         (JSC::ARMv7Disassembler::ARMv7DOpcodeLogicalImmediateT1::format):
1251         (JSC::ARMv7Disassembler::ARMv7DOpcodeMiscAddSubSP::format):
1252         (JSC::ARMv7Disassembler::ARMv7DOpcodeMiscBreakpointT1::format):
1253         (JSC::ARMv7Disassembler::ARMv7DOpcodeMiscByteHalfwordOps::format):
1254         (JSC::ARMv7Disassembler::ARMv7DOpcodeMiscCompareAndBranch::format):
1255         (JSC::ARMv7Disassembler::ARMv7DOpcodeMiscHint16::format):
1256         (JSC::ARMv7Disassembler::ARMv7DOpcodeMiscIfThenT1::format):
1257         (JSC::ARMv7Disassembler::ARMv7DOpcodeMiscPushPop::format):
1258         (JSC::ARMv7Disassembler::ARMv7DOpcodeMoveImmediateT1::format):
1259         (JSC::ARMv7Disassembler::ARMv7DOpcodeMoveRegisterT1::format):
1260         (JSC::ARMv7Disassembler::ARMv7D32BitOpcode::init):
1261         (JSC::ARMv7Disassembler::ARMv7D32BitOpcode::doDisassemble):
1262         (JSC::ARMv7Disassembler::ARMv7D32BitOpcode::defaultFormat):
1263         (JSC::ARMv7Disassembler::ARMv7DOpcodeConditionalBranchT3::format):
1264         (JSC::ARMv7Disassembler::ARMv7DOpcodeBranchOrBranchLink::format):
1265         (JSC::ARMv7Disassembler::ARMv7DOpcodeDataProcessingModifiedImmediate::appendModifiedImmediate):
1266         (JSC::ARMv7Disassembler::ARMv7DOpcodeDataProcessingModifiedImmediate::format):
1267         (JSC::ARMv7Disassembler::ARMv7DOpcodeDataProcessingShiftedReg::appendImmShift):
1268         (JSC::ARMv7Disassembler::ARMv7DOpcodeDataProcessingShiftedReg::format):
1269         (JSC::ARMv7Disassembler::ARMv7DOpcodeFPTransfer::format):
1270         (JSC::ARMv7Disassembler::ARMv7DOpcodeFPTransfer::appendFPRegister):
1271         (JSC::ARMv7Disassembler::ARMv7DOpcodeDataProcessingRegShift::format):
1272         (JSC::ARMv7Disassembler::ARMv7DOpcodeDataProcessingRegExtend::format):
1273         (JSC::ARMv7Disassembler::ARMv7DOpcodeDataProcessingRegParallel::format):
1274         (JSC::ARMv7Disassembler::ARMv7DOpcodeDataProcessingRegMisc::format):
1275         (JSC::ARMv7Disassembler::ARMv7DOpcodeHint32::format):
1276         (JSC::ARMv7Disassembler::ARMv7DOpcodeLoadRegister::format):
1277         (JSC::ARMv7Disassembler::ARMv7DOpcodeLoadSignedImmediate::format):
1278         (JSC::ARMv7Disassembler::ARMv7DOpcodeLoadUnsignedImmediate::format):
1279         (JSC::ARMv7Disassembler::ARMv7DOpcodeLongMultipleDivide::format):
1280         (JSC::ARMv7Disassembler::ARMv7DOpcodeUnmodifiedImmediate::format):
1281         (JSC::ARMv7Disassembler::ARMv7DOpcodeDataPushPopSingle::format):
1282         (JSC::ARMv7Disassembler::ARMv7DOpcodeStoreSingleImmediate12::format):
1283         (JSC::ARMv7Disassembler::ARMv7DOpcodeStoreSingleImmediate8::format):
1284         (JSC::ARMv7Disassembler::ARMv7DOpcodeStoreSingleRegister::format):
1285         (JSC::ARMv7Disassembler::ARMv7DOpcodeVMOVDoublePrecision::format):
1286         (JSC::ARMv7Disassembler::ARMv7DOpcodeVMOVSinglePrecision::format):
1287         (JSC::ARMv7Disassembler::ARMv7DOpcodeVMSR::format):
1288         * disassembler/ARMv7/ARMv7DOpcode.h: Added.
1289         (ARMv7Disassembler):
1290         (ARMv7DOpcode):
1291         (JSC::ARMv7Disassembler::ARMv7DOpcode::ARMv7DOpcode):
1292         (JSC::ARMv7Disassembler::ARMv7DOpcode::is32BitInstruction):
1293         (JSC::ARMv7Disassembler::ARMv7DOpcode::isFPInstruction):
1294         (JSC::ARMv7Disassembler::ARMv7DOpcode::conditionName):
1295         (JSC::ARMv7Disassembler::ARMv7DOpcode::shiftName):
1296         (JSC::ARMv7Disassembler::ARMv7DOpcode::inITBlock):
1297         (JSC::ARMv7Disassembler::ARMv7DOpcode::startingITBlock):
1298         (JSC::ARMv7Disassembler::ARMv7DOpcode::endITBlock):
1299         (JSC::ARMv7Disassembler::ARMv7DOpcode::appendInstructionNameNoITBlock):
1300         (JSC::ARMv7Disassembler::ARMv7DOpcode::appendSeparator):
1301         (JSC::ARMv7Disassembler::ARMv7DOpcode::appendCharacter):
1302         (JSC::ARMv7Disassembler::ARMv7DOpcode::appendString):
1303         (JSC::ARMv7Disassembler::ARMv7DOpcode::appendShiftType):
1304         (JSC::ARMv7Disassembler::ARMv7DOpcode::appendSignedImmediate):
1305         (JSC::ARMv7Disassembler::ARMv7DOpcode::appendUnsignedImmediate):
1306         (JSC::ARMv7Disassembler::ARMv7DOpcode::appendPCRelativeOffset):
1307         (JSC::ARMv7Disassembler::ARMv7DOpcode::appendShiftAmount):
1308         (ARMv7D16BitOpcode):
1309         (OpcodeGroup):
1310         (JSC::ARMv7Disassembler::ARMv7D16BitOpcode::OpcodeGroup::OpcodeGroup):
1311         (JSC::ARMv7Disassembler::ARMv7D16BitOpcode::OpcodeGroup::setNext):
1312         (JSC::ARMv7Disassembler::ARMv7D16BitOpcode::OpcodeGroup::next):
1313         (JSC::ARMv7Disassembler::ARMv7D16BitOpcode::OpcodeGroup::matches):
1314         (JSC::ARMv7Disassembler::ARMv7D16BitOpcode::OpcodeGroup::format):
1315         (JSC::ARMv7Disassembler::ARMv7D16BitOpcode::rm):
1316         (JSC::ARMv7Disassembler::ARMv7D16BitOpcode::rd):
1317         (JSC::ARMv7Disassembler::ARMv7D16BitOpcode::opcodeGroupNumber):
1318         (ARMv7DOpcodeAddRegisterT2):
1319         (JSC::ARMv7Disassembler::ARMv7DOpcodeAddRegisterT2::rdn):
1320         (JSC::ARMv7Disassembler::ARMv7DOpcodeAddRegisterT2::rm):
1321         (ARMv7DOpcodeAddSPPlusImmediate):
1322         (JSC::ARMv7Disassembler::ARMv7DOpcodeAddSPPlusImmediate::rd):
1323         (JSC::ARMv7Disassembler::ARMv7DOpcodeAddSPPlusImmediate::immediate8):
1324         (ARMv7DOpcodeAddSubtract):
1325         (ARMv7DOpcodeAddSubtractT1):
1326         (JSC::ARMv7Disassembler::ARMv7DOpcodeAddSubtractT1::opName):
1327         (JSC::ARMv7Disassembler::ARMv7DOpcodeAddSubtractT1::op):
1328         (JSC::ARMv7Disassembler::ARMv7DOpcodeAddSubtractT1::rm):
1329         (JSC::ARMv7Disassembler::ARMv7DOpcodeAddSubtractT1::rn):
1330         (ARMv7DOpcodeAddSubtractImmediate3):
1331         (JSC::ARMv7Disassembler::ARMv7DOpcodeAddSubtractImmediate3::opName):
1332         (JSC::ARMv7Disassembler::ARMv7DOpcodeAddSubtractImmediate3::op):
1333         (JSC::ARMv7Disassembler::ARMv7DOpcodeAddSubtractImmediate3::immediate3):
1334         (JSC::ARMv7Disassembler::ARMv7DOpcodeAddSubtractImmediate3::rn):
1335         (ARMv7DOpcodeAddSubtractImmediate8):
1336         (JSC::ARMv7Disassembler::ARMv7DOpcodeAddSubtractImmediate8::opName):
1337         (JSC::ARMv7Disassembler::ARMv7DOpcodeAddSubtractImmediate8::op):
1338         (JSC::ARMv7Disassembler::ARMv7DOpcodeAddSubtractImmediate8::rdn):
1339         (JSC::ARMv7Disassembler::ARMv7DOpcodeAddSubtractImmediate8::immediate8):
1340         (ARMv7DOpcodeBranchConditionalT1):
1341         (JSC::ARMv7Disassembler::ARMv7DOpcodeBranchConditionalT1::condition):
1342         (JSC::ARMv7Disassembler::ARMv7DOpcodeBranchConditionalT1::offset):
1343         (ARMv7DOpcodeBranchExchangeT1):
1344         (JSC::ARMv7Disassembler::ARMv7DOpcodeBranchExchangeT1::opName):
1345         (JSC::ARMv7Disassembler::ARMv7DOpcodeBranchExchangeT1::rm):
1346         (ARMv7DOpcodeBranchT2):
1347         (JSC::ARMv7Disassembler::ARMv7DOpcodeBranchT2::immediate11):
1348         (ARMv7DOpcodeCompareImmediateT1):
1349         (JSC::ARMv7Disassembler::ARMv7DOpcodeCompareImmediateT1::rn):
1350         (JSC::ARMv7Disassembler::ARMv7DOpcodeCompareImmediateT1::immediate8):
1351         (ARMv7DOpcodeCompareRegisterT1):
1352         (JSC::ARMv7Disassembler::ARMv7DOpcodeCompareRegisterT1::rn):
1353         (ARMv7DOpcodeCompareRegisterT2):
1354         (JSC::ARMv7Disassembler::ARMv7DOpcodeCompareRegisterT2::rn):
1355         (JSC::ARMv7Disassembler::ARMv7DOpcodeCompareRegisterT2::rm):
1356         (ARMv7DOpcodeDataProcessingRegisterT1):
1357         (JSC::ARMv7Disassembler::ARMv7DOpcodeDataProcessingRegisterT1::opName):
1358         (JSC::ARMv7Disassembler::ARMv7DOpcodeDataProcessingRegisterT1::op):
1359         (JSC::ARMv7Disassembler::ARMv7DOpcodeDataProcessingRegisterT1::rm):
1360         (JSC::ARMv7Disassembler::ARMv7DOpcodeDataProcessingRegisterT1::rdn):
1361         (ARMv7DOpcodeGeneratePCRelativeAddress):
1362         (JSC::ARMv7Disassembler::ARMv7DOpcodeGeneratePCRelativeAddress::rd):
1363         (JSC::ARMv7Disassembler::ARMv7DOpcodeGeneratePCRelativeAddress::immediate8):
1364         (ARMv7DOpcodeLoadFromLiteralPool):
1365         (JSC::ARMv7Disassembler::ARMv7DOpcodeLoadFromLiteralPool::rt):
1366         (JSC::ARMv7Disassembler::ARMv7DOpcodeLoadFromLiteralPool::immediate8):
1367         (ARMv7DOpcodeLoadStoreRegisterImmediate):
1368         (JSC::ARMv7Disassembler::ARMv7DOpcodeLoadStoreRegisterImmediate::opName):
1369         (JSC::ARMv7Disassembler::ARMv7DOpcodeLoadStoreRegisterImmediate::op):
1370         (JSC::ARMv7Disassembler::ARMv7DOpcodeLoadStoreRegisterImmediate::immediate5):
1371         (JSC::ARMv7Disassembler::ARMv7DOpcodeLoadStoreRegisterImmediate::rn):
1372         (JSC::ARMv7Disassembler::ARMv7DOpcodeLoadStoreRegisterImmediate::rt):
1373         (JSC::ARMv7Disassembler::ARMv7DOpcodeLoadStoreRegisterImmediate::scale):
1374         (ARMv7DOpcodeLoadStoreRegisterImmediateWordAndByte):
1375         (ARMv7DOpcodeLoadStoreRegisterImmediateHalfWord):
1376         (ARMv7DOpcodeLoadStoreRegisterOffsetT1):
1377         (JSC::ARMv7Disassembler::ARMv7DOpcodeLoadStoreRegisterOffsetT1::opName):
1378         (JSC::ARMv7Disassembler::ARMv7DOpcodeLoadStoreRegisterOffsetT1::opB):
1379         (JSC::ARMv7Disassembler::ARMv7DOpcodeLoadStoreRegisterOffsetT1::rm):
1380         (JSC::ARMv7Disassembler::ARMv7DOpcodeLoadStoreRegisterOffsetT1::rn):
1381         (JSC::ARMv7Disassembler::ARMv7DOpcodeLoadStoreRegisterOffsetT1::rt):
1382         (ARMv7DOpcodeLoadStoreRegisterSPRelative):
1383         (JSC::ARMv7Disassembler::ARMv7DOpcodeLoadStoreRegisterSPRelative::opName):
1384         (JSC::ARMv7Disassembler::ARMv7DOpcodeLoadStoreRegisterSPRelative::op):
1385         (JSC::ARMv7Disassembler::ARMv7DOpcodeLoadStoreRegisterSPRelative::rt):
1386         (JSC::ARMv7Disassembler::ARMv7DOpcodeLoadStoreRegisterSPRelative::immediate8):
1387         (ARMv7DOpcodeLogicalImmediateT1):
1388         (JSC::ARMv7Disassembler::ARMv7DOpcodeLogicalImmediateT1::opName):
1389         (JSC::ARMv7Disassembler::ARMv7DOpcodeLogicalImmediateT1::op):
1390         (JSC::ARMv7Disassembler::ARMv7DOpcodeLogicalImmediateT1::immediate5):
1391         (ARMv7DOpcodeMiscAddSubSP):
1392         (JSC::ARMv7Disassembler::ARMv7DOpcodeMiscAddSubSP::opName):
1393         (JSC::ARMv7Disassembler::ARMv7DOpcodeMiscAddSubSP::op):
1394         (JSC::ARMv7Disassembler::ARMv7DOpcodeMiscAddSubSP::immediate7):
1395         (ARMv7DOpcodeMiscByteHalfwordOps):
1396         (JSC::ARMv7Disassembler::ARMv7DOpcodeMiscByteHalfwordOps::opName):
1397         (JSC::ARMv7Disassembler::ARMv7DOpcodeMiscByteHalfwordOps::op):
1398         (ARMv7DOpcodeMiscBreakpointT1):
1399         (JSC::ARMv7Disassembler::ARMv7DOpcodeMiscBreakpointT1::immediate8):
1400         (ARMv7DOpcodeMiscCompareAndBranch):
1401         (JSC::ARMv7Disassembler::ARMv7DOpcodeMiscCompareAndBranch::opName):
1402         (JSC::ARMv7Disassembler::ARMv7DOpcodeMiscCompareAndBranch::op):
1403         (JSC::ARMv7Disassembler::ARMv7DOpcodeMiscCompareAndBranch::immediate6):
1404         (JSC::ARMv7Disassembler::ARMv7DOpcodeMiscCompareAndBranch::rn):
1405         (ARMv7DOpcodeMiscHint16):
1406         (JSC::ARMv7Disassembler::ARMv7DOpcodeMiscHint16::opName):
1407         (JSC::ARMv7Disassembler::ARMv7DOpcodeMiscHint16::opA):
1408         (ARMv7DOpcodeMiscIfThenT1):
1409         (JSC::ARMv7Disassembler::ARMv7DOpcodeMiscIfThenT1::firstCondition):
1410         (JSC::ARMv7Disassembler::ARMv7DOpcodeMiscIfThenT1::mask):
1411         (ARMv7DOpcodeMiscPushPop):
1412         (JSC::ARMv7Disassembler::ARMv7DOpcodeMiscPushPop::opName):
1413         (JSC::ARMv7Disassembler::ARMv7DOpcodeMiscPushPop::op):
1414         (JSC::ARMv7Disassembler::ARMv7DOpcodeMiscPushPop::registerMask):
1415         (ARMv7DOpcodeMoveImmediateT1):
1416         (JSC::ARMv7Disassembler::ARMv7DOpcodeMoveImmediateT1::rd):
1417         (JSC::ARMv7Disassembler::ARMv7DOpcodeMoveImmediateT1::immediate8):
1418         (ARMv7DOpcodeMoveRegisterT1):
1419         (JSC::ARMv7Disassembler::ARMv7DOpcodeMoveRegisterT1::rd):
1420         (JSC::ARMv7Disassembler::ARMv7DOpcodeMoveRegisterT1::rm):
1421         (ARMv7D32BitOpcode):
1422         (JSC::ARMv7Disassembler::ARMv7D32BitOpcode::OpcodeGroup::OpcodeGroup):
1423         (JSC::ARMv7Disassembler::ARMv7D32BitOpcode::OpcodeGroup::setNext):
1424         (JSC::ARMv7Disassembler::ARMv7D32BitOpcode::OpcodeGroup::next):
1425         (JSC::ARMv7Disassembler::ARMv7D32BitOpcode::OpcodeGroup::matches):
1426         (JSC::ARMv7Disassembler::ARMv7D32BitOpcode::OpcodeGroup::format):
1427         (JSC::ARMv7Disassembler::ARMv7D32BitOpcode::rd):
1428         (JSC::ARMv7Disassembler::ARMv7D32BitOpcode::rm):
1429         (JSC::ARMv7Disassembler::ARMv7D32BitOpcode::rn):
1430         (JSC::ARMv7Disassembler::ARMv7D32BitOpcode::rt):
1431         (JSC::ARMv7Disassembler::ARMv7D32BitOpcode::opcodeGroupNumber):
1432         (ARMv7DOpcodeBranchRelative):
1433         (JSC::ARMv7Disassembler::ARMv7DOpcodeBranchRelative::sBit):
1434         (JSC::ARMv7Disassembler::ARMv7DOpcodeBranchRelative::j1):
1435         (JSC::ARMv7Disassembler::ARMv7DOpcodeBranchRelative::j2):
1436         (JSC::ARMv7Disassembler::ARMv7DOpcodeBranchRelative::immediate11):
1437         (ARMv7DOpcodeConditionalBranchT3):
1438         (JSC::ARMv7Disassembler::ARMv7DOpcodeConditionalBranchT3::offset):
1439         (JSC::ARMv7Disassembler::ARMv7DOpcodeConditionalBranchT3::condition):
1440         (JSC::ARMv7Disassembler::ARMv7DOpcodeConditionalBranchT3::immediate6):
1441         (ARMv7DOpcodeBranchOrBranchLink):
1442         (JSC::ARMv7Disassembler::ARMv7DOpcodeBranchOrBranchLink::offset):
1443         (JSC::ARMv7Disassembler::ARMv7DOpcodeBranchOrBranchLink::immediate10):
1444         (JSC::ARMv7Disassembler::ARMv7DOpcodeBranchOrBranchLink::isBL):
1445         (ARMv7DOpcodeDataProcessingLogicalAndRithmetic):
1446         (ARMv7DOpcodeDataProcessingModifiedImmediate):
1447         (JSC::ARMv7Disassembler::ARMv7DOpcodeDataProcessingModifiedImmediate::opName):
1448         (JSC::ARMv7Disassembler::ARMv7DOpcodeDataProcessingModifiedImmediate::op):
1449         (JSC::ARMv7Disassembler::ARMv7DOpcodeDataProcessingModifiedImmediate::sBit):
1450         (JSC::ARMv7Disassembler::ARMv7DOpcodeDataProcessingModifiedImmediate::immediate12):
1451         (ARMv7DOpcodeDataProcessingShiftedReg):
1452         (JSC::ARMv7Disassembler::ARMv7DOpcodeDataProcessingShiftedReg::opName):
1453         (JSC::ARMv7Disassembler::ARMv7DOpcodeDataProcessingShiftedReg::sBit):
1454         (JSC::ARMv7Disassembler::ARMv7DOpcodeDataProcessingShiftedReg::op):
1455         (JSC::ARMv7Disassembler::ARMv7DOpcodeDataProcessingShiftedReg::immediate5):
1456         (JSC::ARMv7Disassembler::ARMv7DOpcodeDataProcessingShiftedReg::type):
1457         (JSC::ARMv7Disassembler::ARMv7DOpcodeDataProcessingShiftedReg::tbBit):
1458         (JSC::ARMv7Disassembler::ARMv7DOpcodeDataProcessingShiftedReg::tBit):
1459         (ARMv7DOpcodeDataProcessingReg):
1460         (JSC::ARMv7Disassembler::ARMv7DOpcodeDataProcessingReg::op1):
1461         (JSC::ARMv7Disassembler::ARMv7DOpcodeDataProcessingReg::op2):
1462         (ARMv7DOpcodeDataProcessingRegShift):
1463         (JSC::ARMv7Disassembler::ARMv7DOpcodeDataProcessingRegShift::opName):
1464         (ARMv7DOpcodeDataProcessingRegExtend):
1465         (JSC::ARMv7Disassembler::ARMv7DOpcodeDataProcessingRegExtend::opExtendName):
1466         (JSC::ARMv7Disassembler::ARMv7DOpcodeDataProcessingRegExtend::opExtendAndAddName):
1467         (JSC::ARMv7Disassembler::ARMv7DOpcodeDataProcessingRegExtend::rotate):
1468         (ARMv7DOpcodeDataProcessingRegParallel):
1469         (JSC::ARMv7Disassembler::ARMv7DOpcodeDataProcessingRegParallel::opName):
1470         (ARMv7DOpcodeDataProcessingRegMisc):
1471         (JSC::ARMv7Disassembler::ARMv7DOpcodeDataProcessingRegMisc::opName):
1472         (ARMv7DOpcodeHint32):
1473         (JSC::ARMv7Disassembler::ARMv7DOpcodeHint32::opName):
1474         (JSC::ARMv7Disassembler::ARMv7DOpcodeHint32::isDebugHint):
1475         (JSC::ARMv7Disassembler::ARMv7DOpcodeHint32::debugOption):
1476         (JSC::ARMv7Disassembler::ARMv7DOpcodeHint32::op):
1477         (ARMv7DOpcodeFPTransfer):
1478         (JSC::ARMv7Disassembler::ARMv7DOpcodeFPTransfer::opH):
1479         (JSC::ARMv7Disassembler::ARMv7DOpcodeFPTransfer::opL):
1480         (JSC::ARMv7Disassembler::ARMv7DOpcodeFPTransfer::rt):
1481         (JSC::ARMv7Disassembler::ARMv7DOpcodeFPTransfer::opC):
1482         (JSC::ARMv7Disassembler::ARMv7DOpcodeFPTransfer::opB):
1483         (JSC::ARMv7Disassembler::ARMv7DOpcodeFPTransfer::vd):
1484         (JSC::ARMv7Disassembler::ARMv7DOpcodeFPTransfer::vn):
1485         (ARMv7DOpcodeDataLoad):
1486         (JSC::ARMv7Disassembler::ARMv7DOpcodeDataLoad::opName):
1487         (JSC::ARMv7Disassembler::ARMv7DOpcodeDataLoad::op):
1488         (ARMv7DOpcodeLoadRegister):
1489         (JSC::ARMv7Disassembler::ARMv7DOpcodeLoadRegister::immediate2):
1490         (ARMv7DOpcodeLoadSignedImmediate):
1491         (JSC::ARMv7Disassembler::ARMv7DOpcodeLoadSignedImmediate::pBit):
1492         (JSC::ARMv7Disassembler::ARMv7DOpcodeLoadSignedImmediate::uBit):
1493         (JSC::ARMv7Disassembler::ARMv7DOpcodeLoadSignedImmediate::wBit):
1494         (JSC::ARMv7Disassembler::ARMv7DOpcodeLoadSignedImmediate::immediate8):
1495         (ARMv7DOpcodeLoadUnsignedImmediate):
1496         (JSC::ARMv7Disassembler::ARMv7DOpcodeLoadUnsignedImmediate::immediate12):
1497         (ARMv7DOpcodeLongMultipleDivide):
1498         (JSC::ARMv7Disassembler::ARMv7DOpcodeLongMultipleDivide::opName):
1499         (JSC::ARMv7Disassembler::ARMv7DOpcodeLongMultipleDivide::smlalOpName):
1500         (JSC::ARMv7Disassembler::ARMv7DOpcodeLongMultipleDivide::smlaldOpName):
1501         (JSC::ARMv7Disassembler::ARMv7DOpcodeLongMultipleDivide::smlsldOpName):
1502         (JSC::ARMv7Disassembler::ARMv7DOpcodeLongMultipleDivide::rdLo):
1503         (JSC::ARMv7Disassembler::ARMv7DOpcodeLongMultipleDivide::rdHi):
1504         (JSC::ARMv7Disassembler::ARMv7DOpcodeLongMultipleDivide::op1):
1505         (JSC::ARMv7Disassembler::ARMv7DOpcodeLongMultipleDivide::op2):
1506         (JSC::ARMv7Disassembler::ARMv7DOpcodeLongMultipleDivide::nBit):
1507         (JSC::ARMv7Disassembler::ARMv7DOpcodeLongMultipleDivide::mBit):
1508         (ARMv7DOpcodeDataPushPopSingle):
1509         (JSC::ARMv7Disassembler::ARMv7DOpcodeDataPushPopSingle::opName):
1510         (JSC::ARMv7Disassembler::ARMv7DOpcodeDataPushPopSingle::op):
1511         (ARMv7DOpcodeDataStoreSingle):
1512         (JSC::ARMv7Disassembler::ARMv7DOpcodeDataStoreSingle::opName):
1513         (JSC::ARMv7Disassembler::ARMv7DOpcodeDataStoreSingle::op):
1514         (ARMv7DOpcodeStoreSingleImmediate12):
1515         (JSC::ARMv7Disassembler::ARMv7DOpcodeStoreSingleImmediate12::immediate12):
1516         (ARMv7DOpcodeStoreSingleImmediate8):
1517         (JSC::ARMv7Disassembler::ARMv7DOpcodeStoreSingleImmediate8::pBit):
1518         (JSC::ARMv7Disassembler::ARMv7DOpcodeStoreSingleImmediate8::uBit):
1519         (JSC::ARMv7Disassembler::ARMv7DOpcodeStoreSingleImmediate8::wBit):
1520         (JSC::ARMv7Disassembler::ARMv7DOpcodeStoreSingleImmediate8::immediate8):
1521         (ARMv7DOpcodeStoreSingleRegister):
1522         (JSC::ARMv7Disassembler::ARMv7DOpcodeStoreSingleRegister::immediate2):
1523         (ARMv7DOpcodeUnmodifiedImmediate):
1524         (JSC::ARMv7Disassembler::ARMv7DOpcodeUnmodifiedImmediate::opName):
1525         (JSC::ARMv7Disassembler::ARMv7DOpcodeUnmodifiedImmediate::op):
1526         (JSC::ARMv7Disassembler::ARMv7DOpcodeUnmodifiedImmediate::shBit):
1527         (JSC::ARMv7Disassembler::ARMv7DOpcodeUnmodifiedImmediate::bitNumOrSatImmediate):
1528         (JSC::ARMv7Disassembler::ARMv7DOpcodeUnmodifiedImmediate::immediate5):
1529         (JSC::ARMv7Disassembler::ARMv7DOpcodeUnmodifiedImmediate::immediate12):
1530         (JSC::ARMv7Disassembler::ARMv7DOpcodeUnmodifiedImmediate::immediate16):
1531         (ARMv7DOpcodeVMOVDoublePrecision):
1532         (JSC::ARMv7Disassembler::ARMv7DOpcodeVMOVDoublePrecision::op):
1533         (JSC::ARMv7Disassembler::ARMv7DOpcodeVMOVDoublePrecision::rt2):
1534         (JSC::ARMv7Disassembler::ARMv7DOpcodeVMOVDoublePrecision::rt):
1535         (JSC::ARMv7Disassembler::ARMv7DOpcodeVMOVDoublePrecision::vm):
1536         (ARMv7DOpcodeVMOVSinglePrecision):
1537         (JSC::ARMv7Disassembler::ARMv7DOpcodeVMOVSinglePrecision::op):
1538         (JSC::ARMv7Disassembler::ARMv7DOpcodeVMOVSinglePrecision::rt2):
1539         (JSC::ARMv7Disassembler::ARMv7DOpcodeVMOVSinglePrecision::rt):
1540         (JSC::ARMv7Disassembler::ARMv7DOpcodeVMOVSinglePrecision::vm):
1541         (ARMv7DOpcodeVMSR):
1542         (JSC::ARMv7Disassembler::ARMv7DOpcodeVMSR::opL):
1543         (JSC::ARMv7Disassembler::ARMv7DOpcodeVMSR::rt):
1544         * disassembler/ARMv7Disassembler.cpp: Added.
1545         (JSC::tryToDisassemble):
1546
1547 2013-05-07  Julien Brianceau  <jbrianceau@nds.com>
1548
1549         Take advantage of pre-decrement and post-increment opcodes for sh4 base JIT.
1550         https://bugs.webkit.org/show_bug.cgi?id=115722
1551
1552         Reviewed by Oliver Hunt.
1553
1554         * assembler/MacroAssemblerSH4.h:
1555         (JSC::MacroAssemblerSH4::load8PostInc):
1556         (MacroAssemblerSH4):
1557         (JSC::MacroAssemblerSH4::load16Unaligned):
1558         (JSC::MacroAssemblerSH4::load16PostInc):
1559         (JSC::MacroAssemblerSH4::storeDouble):
1560         (JSC::MacroAssemblerSH4::load32WithUnalignedHalfWords):
1561         * assembler/SH4Assembler.h:
1562         (JSC::SH4Assembler::movwMemRegIn):
1563         (SH4Assembler):
1564         (JSC::SH4Assembler::movbMemRegIn):
1565         (JSC::SH4Assembler::printInstr):
1566
1567 2013-05-07  Anders Carlsson  <andersca@apple.com>
1568
1569         Remove AlwaysInline.h from WTF
1570         https://bugs.webkit.org/show_bug.cgi?id=115727
1571
1572         Reviewed by Brent Fulgham.
1573
1574         The macro that used to be in AlwaysInline.h is now in Compiler.h so there's no reason
1575         to keep AlwaysInline.h around anymore.
1576
1577         * jit/JSInterfaceJIT.h:
1578         * parser/Lexer.h:
1579         * runtime/JSCJSValue.h:
1580         * runtime/SymbolTable.h:
1581
1582 2013-05-07  Mikhail Pozdnyakov  <mikhail.pozdnyakov@intel.com>
1583
1584         HashTraits<RefPtr<P> >::PeekType should be raw pointer for better performance
1585         https://bugs.webkit.org/show_bug.cgi?id=115646
1586
1587         Reviewed by Darin Adler.
1588
1589         * bytecompiler/StaticPropertyAnalyzer.h:
1590         (JSC::StaticPropertyAnalyzer::putById):
1591             Updated accordingly to new HashMap<.., RefPtr>::get() semantics.
1592
1593 2013-05-06  Julien Brianceau  <jbrianceau@nds.com>
1594
1595         Misc bugfix and cleaning in sh4 base JIT.
1596         https://bugs.webkit.org/show_bug.cgi?id=115627
1597
1598         Reviewed by Oliver Hunt.
1599
1600         Get rid of loadX(RegisterID r0, RegisterID src, RegisterID dest) functions.
1601         Remove misplaced extuw() implementation from MacroAssemblerSH4.
1602         Add movbRegMemr0 and movwRegMemr0 functions in SH4Assembler.
1603
1604         * assembler/MacroAssemblerSH4.h:
1605         (JSC::MacroAssemblerSH4::add32): Skip operation when first operand is a zero immediate.
1606         (JSC::MacroAssemblerSH4::sub32): Skip operation when first operand is a zero immediate.
1607         (JSC::MacroAssemblerSH4::load32): Fix wrong usage of r0 register.
1608         (JSC::MacroAssemblerSH4::load8Signed): Handle "base == r0" case.
1609         (MacroAssemblerSH4):
1610         (JSC::MacroAssemblerSH4::load16): Handle "base == r0" case.
1611         (JSC::MacroAssemblerSH4::load16Unaligned): Use extuw() implementation from SH4Assembler.
1612         (JSC::MacroAssemblerSH4::load16Signed): Cosmetic change.
1613         (JSC::MacroAssemblerSH4::store8): Fix unhandled BaseIndex offset and handle (base == r0) case.
1614         (JSC::MacroAssemblerSH4::store16): Fix unhandled BaseIndex offset and handle (base == r0) case.
1615         (JSC::MacroAssemblerSH4::store32):
1616         * assembler/SH4Assembler.h:
1617         (JSC::SH4Assembler::movwRegMemr0):
1618         (SH4Assembler):
1619         (JSC::SH4Assembler::movbRegMemr0):
1620         (JSC::SH4Assembler::placeConstantPoolBarrier): Cosmetic change.
1621         (JSC::SH4Assembler::maxJumpReplacementSize):
1622         (JSC::SH4Assembler::replaceWithJump): Correct branch range and save an opcode.
1623         (JSC::SH4Assembler::printInstr):
1624
1625 2013-05-06  Anders Carlsson  <andersca@apple.com>
1626
1627         Stop using WTF::deleteAllValues in JavaScriptCore
1628         https://bugs.webkit.org/show_bug.cgi?id=115670
1629
1630         Reviewed by Oliver Hunt.
1631
1632         Change the Vectors used to Vectors of OwnPtrs instead.
1633
1634         * heap/DFGCodeBlocks.cpp:
1635         (JSC::DFGCodeBlocks::~DFGCodeBlocks):
1636         (JSC::DFGCodeBlocks::deleteUnmarkedJettisonedCodeBlocks):
1637
1638 2013-05-06  Andras Becsi  <andras.becsi@digia.com>
1639
1640         Build with GCC 4.8 fails because of -Wmaybe-uninitialized
1641         https://bugs.webkit.org/show_bug.cgi?id=115648
1642
1643         Reviewed by Michael Saboff.
1644
1645         Initialize values in Options::setOption since from
1646         there we end up calling OptionRange::init with
1647         uninitialized members.
1648
1649         * runtime/Options.cpp:
1650
1651 2013-05-06  Gabor Rapcsanyi  <rgabor@webkit.org>
1652
1653         JSC ARM traditional failing on Octane NavierStokes test
1654         https://bugs.webkit.org/show_bug.cgi?id=115626
1655
1656         Reviewed by Zoltan Herczeg.
1657
1658         Change the ARM traditional assembler to use double precision on value
1659         conversions.
1660
1661         * assembler/ARMAssembler.h:
1662
1663 2013-05-03  Michael Saboff  <msaboff@apple.com>
1664
1665         There should be a runtime option to constrain what functions get DFG compiled
1666         https://bugs.webkit.org/show_bug.cgi?id=115576
1667
1668         Reviewed by Mark Hahnenberg.
1669
1670         Added OptionRange to Options to allow checking that something is within an option
1671         or not.  The new OptionClass supports range strings in the form of [!]<low>[:<high>].
1672         If only one value is given, then it will be used for both low and high.  A leading
1673         '!' inverts the check.  If no range is given, then checking for a value within a range
1674         will always return true.  Added the option "bytecodeRangeToDFGCompile" that takes an
1675         OptionRange string to select the bytecode range of code blocks to DFG compile.
1676
1677         * dfg/DFGDriver.cpp:
1678         (JSC::DFG::compile): Added new check for bytecode count within bytecodeRangeToDFGCompile
1679         range.
1680         * runtime/Options.cpp:
1681         (JSC::parse): Added overloaded parse() for OptionRange.
1682         (JSC::OptionRange::init): Parse range string and then initialize the range.
1683         (JSC::OptionRange::isInRange): Function used by consumer to check if a value is within
1684         the specified range.
1685         (JSC::Options::dumpOption): Added code to dump OptionRange options.
1686         * runtime/Options.h:
1687         (OptionRange): New class.
1688         (JSC::OptionRange::operator= ): This is really used as a default ctor for use within
1689         the Option static array initialization.
1690         (JSC::OptionRange::rangeString): This is used for debug.  It assumes that the char*
1691         passed into OptionRange::init is valid when this function is called.
1692
1693 2013-05-02  Oliver Hunt  <oliver@apple.com>
1694
1695         Fix potential bug in lookup logic
1696         https://bugs.webkit.org/show_bug.cgi?id=115522
1697
1698         Reviewed by Mark Hahnenberg.
1699
1700         Though not a problem in practise, it is technically possible
1701         to inject an un-proxied global object into the scope chain
1702         via the C API.  This change makes sure that the scope walk
1703         in BytecodeGenerator actually limits itself to scopes that
1704         are statically bindable.
1705
1706         * bytecompiler/BytecodeGenerator.cpp:
1707         (JSC::BytecodeGenerator::resolve):
1708         * runtime/JSObject.h:
1709         (JSObject):
1710         (JSC):
1711         (JSC::JSObject::isStaticScopeObject):
1712
1713 2013-05-01  Roger Fong  <roger_fong@apple.com>
1714
1715         Set Path in makefile for AppleWin.
1716
1717         * JavaScriptCore.vcxproj/JavaScriptCore.make:
1718
1719 2013-05-01  Benjamin Poulain  <benjamin@webkit.org>
1720
1721         Remove the remaining wscript
1722         https://bugs.webkit.org/show_bug.cgi?id=115459
1723
1724         Reviewed by Andreas Kling.
1725
1726         * wscript: Removed.
1727
1728 2013-04-30  Mark Lam  <mark.lam@apple.com>
1729
1730         JSContextGroupSetExecutionTimeLimit() should not pass a callback to the
1731         VM watchdog if its client did not pass one in.
1732         https://bugs.webkit.org/show_bug.cgi?id=115461.
1733
1734         Reviewed by Geoffrey Garen.
1735
1736         * API/JSContextRef.cpp:
1737         (internalScriptTimeoutCallback):
1738         (JSContextGroupSetExecutionTimeLimit):
1739         * API/tests/testapi.c:
1740         (main):
1741         - Added test case when the time limit callback is 0.
1742         - Also updated a check to verify that a TerminatedExecutionException is
1743           thrown when the time out is cancelled.
1744         - Also fixed some cosmetic typos.
1745
1746 2013-04-30  Geoffrey Garen  <ggaren@apple.com>
1747
1748         Removed op_ensure_property_exists
1749         https://bugs.webkit.org/show_bug.cgi?id=115460
1750
1751         Reviewed by Mark Hahnenberg.
1752
1753         It was unused, and whatever it was once used for was not optimized.
1754
1755         * JavaScriptCore.order:
1756         * bytecode/CodeBlock.cpp:
1757         (JSC::CodeBlock::dumpBytecode):
1758         * bytecode/Opcode.h:
1759         (JSC::padOpcodeName):
1760         * jit/JIT.cpp:
1761         (JSC::JIT::privateCompileMainPass):
1762         * jit/JIT.h:
1763         * jit/JITOpcodes.cpp:
1764         * jit/JITOpcodes32_64.cpp:
1765         * jit/JITStubs.cpp:
1766         * jit/JITStubs.h:
1767         * llint/LLIntSlowPaths.cpp:
1768         * llint/LLIntSlowPaths.h:
1769         * llint/LowLevelInterpreter.asm:
1770
1771 2013-04-30  Oliver Hunt  <oliver@apple.com>
1772
1773         JSC Stack walking logic craches in the face of inlined functions triggering VM re-entry
1774         https://bugs.webkit.org/show_bug.cgi?id=115449
1775
1776         Reviewed by Geoffrey Garen.
1777
1778         Rename callframeishost to something that makes sense, and fix
1779         getCallerInfo to correctly handle inline functions calling into
1780         the VM.
1781
1782         * bytecode/CodeBlock.cpp:
1783         (JSC::CodeBlock::codeOriginForReturn):
1784           Make this more robust in the face of incorrect stack walking
1785         * interpreter/CallFrame.cpp:
1786         (JSC::CallFrame::trueCallerFrame):
1787           Everyone has to perform a codeblock() check before calling this
1788           so we might as well just do it here.
1789         * interpreter/Interpreter.cpp:
1790         (JSC::getCallerInfo):
1791
1792 2013-04-30  Julien Brianceau  <jbrianceau@nds.com>
1793
1794         Bug fixing in sh4 base JIT and LLINT.
1795         https://bugs.webkit.org/show_bug.cgi?id=115420
1796
1797         Reviewed by Oliver Hunt.
1798
1799         * assembler/MacroAssemblerSH4.h:
1800         (JSC::MacroAssemblerSH4::lshift32):
1801         (JSC::MacroAssemblerSH4::rshift32):
1802         (JSC::MacroAssemblerSH4::branchMul32):
1803         (JSC::MacroAssemblerSH4::urshift32):
1804         (JSC::MacroAssemblerSH4::replaceWithJump):
1805         (JSC::MacroAssemblerSH4::maxJumpReplacementSize):
1806         * assembler/SH4Assembler.h:
1807         (JSC::SH4Assembler::shldRegReg):
1808         (JSC::SH4Assembler::shadRegReg):
1809         (JSC::SH4Assembler::shalImm8r):
1810         (SH4Assembler):
1811         (JSC::SH4Assembler::sharImm8r):
1812         (JSC::SH4Assembler::maxJumpReplacementSize):
1813         (JSC::SH4Assembler::replaceWithJump):
1814         * offlineasm/sh4.rb:
1815
1816 2013-04-30  Geoffrey Garen  <ggaren@apple.com>
1817
1818         Objective-C JavaScriptCore API should publicly support bridging to C
1819         https://bugs.webkit.org/show_bug.cgi?id=115447
1820
1821         Reviewed by Mark Hahnenberg.
1822
1823         For consistency, I renamed
1824
1825             +[JSValue valueWithValue:] => +[JSValue valueWithJSValueRef]
1826             +[JSContext contextWithGlobalContextRef] => +[JSContext contextWithJSGlobalContextRef]
1827             -[JSContext globalContext] => -[JSContext JSGlobalContextRef]
1828
1829         I searched svn to verify that these functions don't have clients yet,
1830         so we won't break anything.
1831
1832         I also exported as public API
1833
1834             +[JSValue valueWithJSValueRef:]
1835             +[JSContext contextWithJSGlobalContextRef:]
1836
1837         It's hard to integrate with the C API without these.
1838
1839 2013-04-30  Commit Queue  <rniwa@webkit.org>
1840
1841         Unreviewed, rolling out r149349 and r149354.
1842         http://trac.webkit.org/changeset/149349
1843         http://trac.webkit.org/changeset/149354
1844         https://bugs.webkit.org/show_bug.cgi?id=115444
1845
1846          The Thumb version of compileSoftModulo make invalid use of
1847         registers (Requested by benjaminp on #webkit).
1848
1849         * CMakeLists.txt:
1850         * GNUmakefile.list.am:
1851         * JavaScriptCore.xcodeproj/project.pbxproj:
1852         * assembler/ARMv7Assembler.h:
1853         (ARMv7Assembler):
1854         * assembler/AbstractMacroAssembler.h:
1855         (JSC::isARMv7s):
1856         (JSC):
1857         * assembler/MacroAssemblerARMv7.cpp: Removed.
1858         * assembler/MacroAssemblerARMv7.h:
1859         (MacroAssemblerARMv7):
1860         * dfg/DFGFixupPhase.cpp:
1861         (JSC::DFG::FixupPhase::fixupNode):
1862         * dfg/DFGOperations.cpp:
1863         * dfg/DFGOperations.h:
1864         * dfg/DFGSpeculativeJIT.cpp:
1865         (JSC::DFG::SpeculativeJIT::compileSoftModulo):
1866         (DFG):
1867         (JSC::DFG::SpeculativeJIT::compileIntegerArithDivForARMv7s):
1868         * dfg/DFGSpeculativeJIT.h:
1869         (JSC::DFG::SpeculativeJIT::callOperation):
1870         (SpeculativeJIT):
1871         * dfg/DFGSpeculativeJIT32_64.cpp:
1872         (JSC::DFG::SpeculativeJIT::compile):
1873
1874 2013-04-30  Zalan Bujtas  <zalan@apple.com>
1875
1876         Animations fail to start on http://www.google.com/insidesearch/howsearchworks/thestory/
1877         https://bugs.webkit.org/show_bug.cgi?id=111244
1878
1879         Reviewed by David Kilzer.
1880         
1881         Enable performance.now() as a minimal subset of Web Timing API. 
1882         It returns DOMHighResTimeStamp, a monotonically increasing value representing the 
1883         number of milliseconds from the start of the navigation of the current document.
1884         JS libraries use this API to check against the requestAnimationFrame() timestamp.
1885
1886         * Configurations/FeatureDefines.xcconfig:
1887
1888 2013-04-30  Zoltan Arvai  <zarvai@inf.u-szeged.hu>
1889
1890         Unreviewed. Speculative build fix on Qt Arm and Mips after r149349.
1891
1892         * dfg/DFGSpeculativeJIT.cpp:
1893         (JSC::DFG::SpeculativeJIT::compileSoftModulo):
1894
1895 2013-04-29  Cosmin Truta  <ctruta@blackberry.com>
1896
1897         [ARM] Expand the use of integer division
1898         https://bugs.webkit.org/show_bug.cgi?id=115138
1899
1900         Reviewed by Benjamin Poulain.
1901
1902         If availability of hardware integer division isn't known at compile
1903         time, check the CPU flags and decide at runtime whether to fall back
1904         to software. Currently, this OS-specific check is implemented on QNX.
1905
1906         Moreover, use operator % instead of fmod() in the calculation of the
1907         software modulo. Even when it's software-emulated, operator % is faster
1908         than fmod(): on ARM v7 QNX, without hardware division, we noticed
1909         >3% speedup on SunSpider.
1910
1911         * CMakeLists.txt:
1912         * GNUmakefile.list.am:
1913         * JavaScriptCore.xcodeproj/project.pbxproj:
1914         * assembler/ARMv7Assembler.h:
1915         (JSC::ARMv7Assembler::sdiv): Did not compile conditionally.
1916         (JSC::ARMv7Assembler::udiv): Ditto.
1917         * assembler/AbstractMacroAssembler.h:
1918         (JSC::isARMv7s): Removed.
1919         * assembler/MacroAssemblerARMv7.cpp: Added.
1920         (JSC::isIntegerDivSupported): Added.
1921         * assembler/MacroAssemblerARMv7.h:
1922         (JSC::MacroAssemblerARMv7::supportsIntegerDiv): Added.
1923         * dfg/DFGFixupPhase.cpp:
1924         (JSC::DFG::FixupPhase::fixupNode): Checked MacroAssembler::supportsIntegerDiv() in ArithDiv case.
1925         * dfg/DFGOperations.cpp:
1926         (JSC::DFG::operationModOnInts): Added.
1927         * dfg/DFGOperations.h:
1928         (JSC::DFG::Z_DFGOperation_ZZ): Added.
1929         * dfg/DFGSpeculativeJIT.cpp:
1930         (JSC::DFG::SpeculativeJIT::compileSoftModulo): Separated the X86-specific and ARM-specific codegen
1931         from the common implementation; used operationModOnInts on ARM.
1932         (JSC::DFG::SpeculativeJIT::compileIntegerArithDivForARM): Renamed from compileIntegerArithDivForARMv7.
1933         (JSC::DFG::SpeculativeJIT::compileArithMod): Allowed run-time detection of integer div on ARM.
1934         * dfg/DFGSpeculativeJIT.h:
1935         (JSC::DFG::SpeculativeJIT::callOperation): Added overloads with Z_DFGOperation_ZZ arguments.
1936         * dfg/DFGSpeculativeJIT32_64.cpp:
1937         (JSC::DFG::SpeculativeJIT::compile): Used compileIntegerArithDivForARM.
1938
1939 2013-04-29  Benjamin Poulain  <benjamin@webkit.org>
1940
1941         Unify the data access of StringImpl members from JavaScriptCore
1942         https://bugs.webkit.org/show_bug.cgi?id=115320
1943
1944         Reviewed by Andreas Kling.
1945
1946         DFG accesses the member infos by directly calling the methods on StringImpl,
1947         while the baseline JIT was using helper methods on ThunkHelpers.
1948
1949         Cut the middle man, and use StringImpl directly everywhere.
1950
1951         * jit/JITInlines.h:
1952         (JSC::JIT::emitLoadCharacterString):
1953         * jit/JITPropertyAccess.cpp:
1954         (JSC::JIT::stringGetByValStubGenerator):
1955         * jit/JITPropertyAccess32_64.cpp:
1956         (JSC::JIT::stringGetByValStubGenerator):
1957         * jit/JSInterfaceJIT.h:
1958         * jit/ThunkGenerators.cpp:
1959         (JSC::stringCharLoad):
1960
1961 2013-04-29  Benjamin Poulain  <bpoulain@apple.com>
1962
1963         Use push and pop for iOS math function thunks
1964         https://bugs.webkit.org/show_bug.cgi?id=115215
1965
1966         Reviewed by Filip Pizlo.
1967
1968         The iOS ABI is a little different than regular ARM ABI regarding stack alignment.
1969         The requirement is 4 bytes:
1970         "The ARM environment uses a stack that—at the point of function calls—is 4-byte aligned,
1971          grows downward, and contains local variables and a function’s parameters."
1972
1973         Subsequently, we can just use push and pop to preserve the link register.
1974
1975         * jit/ThunkGenerators.cpp:
1976
1977 2013-04-29  Brent Fulgham  <bfulgham@webkit.org>
1978
1979         [Windows, WinCairo] Get rid of last few pthread include/link references.
1980         https://bugs.webkit.org/show_bug.cgi?id=115375
1981
1982         Reviewed by Tim Horton.
1983
1984         * JavaScriptCore.vcproj/jsc/jscPostBuild.cmd:
1985         * JavaScriptCore.vcxproj/JavaScriptCoreCommon.props:
1986         * JavaScriptCore.vcxproj/LLInt/LLIntOffsetsExtractor/LLIntOffsetsExtractorCommon.props:
1987         * JavaScriptCore.vcxproj/jsc/jscCommon.props:
1988         * JavaScriptCore.vcxproj/testRegExp/testRegExpCommon.props:
1989         * JavaScriptCore.vcxproj/testapi/testapiCommon.props:
1990
1991 2013-04-29  Roger Fong  <roger_fong@apple.com>
1992
1993         Unreviewed. AppleWin VS2010 build fix.
1994
1995         * JavaScriptCore.vcxproj/JavaScriptCoreExportGenerator/JavaScriptCoreExports.def.in:
1996
1997 2013-04-26  Mark Hahnenberg  <mhahnenberg@apple.com>
1998
1999         ~BlockAllocator should ASSERT that it has no more Regions left
2000         https://bugs.webkit.org/show_bug.cgi?id=115287
2001
2002         Reviewed by Andreas Kling.
2003
2004         * heap/BlockAllocator.cpp:
2005         (JSC::BlockAllocator::~BlockAllocator):
2006         (JSC::BlockAllocator::allRegionSetsAreEmpty):
2007         * heap/BlockAllocator.h:
2008         (RegionSet):
2009         (JSC::BlockAllocator::RegionSet::isEmpty):
2010         (BlockAllocator):
2011
2012 2013-04-29  Mark Hahnenberg  <mhahnenberg@apple.com>
2013
2014         IndexingTypes should use hex
2015         https://bugs.webkit.org/show_bug.cgi?id=115286
2016
2017         Decimal is kind of confusing/hard to read because they're used as bit masks. Hex seems more appropriate.
2018
2019         Reviewed by Geoffrey Garen.
2020
2021         * runtime/IndexingType.h:
2022
2023 2013-04-29  Carlos Garcia Campos  <cgarcia@igalia.com>
2024
2025         Unreviewed. Fix make distcheck.
2026
2027         * GNUmakefile.list.am: Add missing headers files to compilation
2028         and offlineasm/sh4.rb script.
2029
2030 2013-04-28  Dean Jackson  <dino@apple.com>
2031
2032         [Mac] Disable canvas backing store scaling (HIGH_DPI_CANVAS)
2033         https://bugs.webkit.org/show_bug.cgi?id=115310
2034
2035         Reviewed by Simon Fraser.
2036
2037         Remove ENABLE_HIGH_DPI_CANVAS_macosx.
2038
2039         * Configurations/FeatureDefines.xcconfig:
2040
2041 2013-04-27  Darin Adler  <darin@apple.com>
2042
2043         Move from constructor and member function adoptCF/NS to free function adoptCF/NS.
2044         https://bugs.webkit.org/show_bug.cgi?id=115307
2045
2046         Reviewed by Geoffrey Garen.
2047
2048         * heap/HeapTimer.cpp:
2049         (JSC::HeapTimer::HeapTimer):
2050         * runtime/VM.cpp:
2051         (JSC::enableAssembler):
2052         Use adoptCF free function.
2053
2054 2013-04-27  Anders Carlsson  <andersca@apple.com>
2055
2056         Try to fix the Windows build.
2057
2058         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreExports.def:
2059
2060 2013-04-25  Geoffrey Garen  <ggaren@apple.com>
2061
2062         Cleaned up pre/post inc/dec in bytecode
2063         https://bugs.webkit.org/show_bug.cgi?id=115222
2064
2065         Reviewed by Filip Pizlo.
2066
2067         A few related changes here:
2068
2069         (*) Removed post_inc and post_dec. The two-result form was awkward to
2070         reason about. Being explicit about the intermediate mov and to_number
2071         reduces DFG overhead, removes some fragile ASSERTs from the DFG, and
2072         fixes a const bug. Plus, we get to blow away 262 lines of code.
2073
2074         (*) Renamed pre_inc and pre_dec to inc and dec, since there's only one
2075         version now.
2076
2077         (*) Renamed to_jsnumber to to_number, to match the ECMA name.
2078
2079         (*) Tightened up the codegen and runtime support for to_number.
2080
2081
2082         * JavaScriptCore.order: Order!
2083
2084         * bytecode/CodeBlock.cpp:
2085         (JSC::CodeBlock::dumpBytecode):
2086         * bytecode/Opcode.h:
2087         (JSC::padOpcodeName):
2088         * bytecompiler/BytecodeGenerator.cpp:
2089         (JSC::BytecodeGenerator::emitInc):
2090         (JSC::BytecodeGenerator::emitDec):
2091         * bytecompiler/BytecodeGenerator.h:
2092         (JSC::BytecodeGenerator::emitToNumber):
2093         (BytecodeGenerator): Removed post_inc and post_dec.
2094
2095         * bytecompiler/NodesCodegen.cpp:
2096         (JSC::emitPreIncOrDec): Updated for rename.
2097
2098         (JSC::emitPostIncOrDec): Issue an explicit mov and to_number when needed.
2099         These are rare, and they boil away in the DFG.
2100
2101         (JSC::PostfixNode::emitResolve):
2102         (JSC::PrefixNode::emitResolve): For const, use an explicit mov instead
2103         of any special forms. This fixes a bug where we would do string
2104         add/subtract instead of number.
2105
2106         * dfg/DFGByteCodeParser.cpp:
2107         (JSC::DFG::ByteCodeParser::parseBlock):
2108         * dfg/DFGCapabilities.h:
2109         (JSC::DFG::canCompileOpcode):
2110         * jit/JIT.cpp:
2111         (JSC::JIT::privateCompileMainPass):
2112         (JSC::JIT::privateCompileSlowCases):
2113         * jit/JIT.h:
2114         * jit/JITArithmetic.cpp:
2115         (JSC::JIT::emit_op_inc):
2116         (JSC::JIT::emitSlow_op_inc):
2117         (JSC::JIT::emit_op_dec):
2118         (JSC::JIT::emitSlow_op_dec):
2119         * jit/JITArithmetic32_64.cpp:
2120         (JSC::JIT::emit_op_inc):
2121         (JSC::JIT::emitSlow_op_inc):
2122         (JSC::JIT::emit_op_dec):
2123         (JSC::JIT::emitSlow_op_dec): Removed post_inc/dec, and updated for renames.
2124
2125         * jit/JITOpcodes.cpp:
2126         (JSC::JIT::emit_op_to_number):
2127         (JSC::JIT::emitSlow_op_to_number): Removed a test for number cells. There's
2128         no such thing!
2129
2130         * jit/JITOpcodes32_64.cpp:
2131         (JSC::JIT::emit_op_to_number): Use LowestTag to avoid making assumptions
2132         about the lowest valued tag.
2133
2134         (JSC::JIT::emitSlow_op_to_number): Updated for renames.
2135
2136         * jit/JITStubs.cpp:
2137         (JSC::DEFINE_STUB_FUNCTION):
2138         * jit/JITStubs.h:
2139         * llint/LLIntSlowPaths.cpp:
2140         (JSC::LLInt::LLINT_SLOW_PATH_DECL):
2141         * llint/LLIntSlowPaths.h:
2142         * llint/LowLevelInterpreter32_64.asm:
2143         * llint/LowLevelInterpreter64.asm:
2144         * parser/NodeConstructors.h:
2145         (JSC::UnaryPlusNode::UnaryPlusNode): Removed post_inc/dec, and updated for renames.
2146
2147         * runtime/Operations.cpp:
2148         (JSC::jsIsObjectType): Removed a test for number cells. There's
2149         no such thing!
2150
2151 2013-04-27  Julien Brianceau  <jbrianceau@nds.com>
2152
2153         REGRESSION(r149114): cache flush for SH4 arch may flush an extra page.
2154         https://bugs.webkit.org/show_bug.cgi?id=115305
2155
2156         Reviewed by Andreas Kling.
2157
2158         * assembler/SH4Assembler.h:
2159         (JSC::SH4Assembler::cacheFlush):
2160
2161 2013-04-26  Geoffrey Garen  <ggaren@apple.com>
2162
2163         Re-landing <http://trac.webkit.org/changeset/148999>
2164
2165             Filled out more cases of branch folding in bytecode when emitting
2166             expressions into a branching context
2167             https://bugs.webkit.org/show_bug.cgi?id=115057
2168
2169             Reviewed by Phil Pizlo.
2170
2171         We can't fold the number == 1 case to boolean because all non-zero numbers
2172         down-cast to true, but only 1 is == to true.
2173
2174 2013-04-26  Filip Pizlo  <fpizlo@apple.com>
2175
2176         Correct indentation of SymbolTable.h
2177         
2178         Rubber stamped by Mark Hahnenberg.
2179
2180         * runtime/SymbolTable.h:
2181
2182 2013-04-26  Roger Fong  <roger_fong@apple.com>
2183
2184         Make Apple Windows VS2010 build results into and get dependencies from __32 suffixed folders.
2185         Make the DebugSuffix configuration use _debug dependencies.
2186
2187         * JavaScriptCore.vcxproj/JavaScriptCore.make:
2188         * JavaScriptCore.vcxproj/JavaScriptCore.vcxproj:
2189         * JavaScriptCore.vcxproj/JavaScriptCore.vcxproj.filters:
2190         * JavaScriptCore.vcxproj/JavaScriptCoreCF.props:
2191         * JavaScriptCore.vcxproj/JavaScriptCoreCommon.props:
2192         * JavaScriptCore.vcxproj/JavaScriptCoreDebug.props:
2193         * JavaScriptCore.vcxproj/JavaScriptCoreDebugCFLite.props:
2194         * JavaScriptCore.vcxproj/JavaScriptCoreExportGenerator/JavaScriptCoreExportGenerator.vcxproj:
2195         * JavaScriptCore.vcxproj/JavaScriptCoreExportGenerator/JavaScriptCoreExportGenerator.vcxproj.filters:
2196         * JavaScriptCore.vcxproj/JavaScriptCoreExportGenerator/JavaScriptCoreExportGeneratorBuildCmd.cmd:
2197         * JavaScriptCore.vcxproj/JavaScriptCoreExportGenerator/JavaScriptCoreExportGeneratorCommon.props:
2198         * JavaScriptCore.vcxproj/JavaScriptCoreExportGenerator/JavaScriptCoreExportGeneratorDebug.props:
2199         * JavaScriptCore.vcxproj/JavaScriptCoreExportGenerator/JavaScriptCoreExportGeneratorPostBuild.cmd:
2200         * JavaScriptCore.vcxproj/JavaScriptCoreExportGenerator/JavaScriptCoreExportGeneratorPreBuild.cmd:
2201         * JavaScriptCore.vcxproj/JavaScriptCoreExportGenerator/JavaScriptCoreExportGeneratorProduction.props:
2202         * JavaScriptCore.vcxproj/JavaScriptCoreExportGenerator/JavaScriptCoreExportGeneratorRelease.props:
2203         * JavaScriptCore.vcxproj/JavaScriptCoreGenerated.make:
2204         * JavaScriptCore.vcxproj/JavaScriptCoreGenerated.vcxproj:
2205         * JavaScriptCore.vcxproj/JavaScriptCoreGeneratedCommon.props:
2206         * JavaScriptCore.vcxproj/JavaScriptCoreGeneratedDebug.props:
2207         * JavaScriptCore.vcxproj/JavaScriptCoreGeneratedProduction.props:
2208         * JavaScriptCore.vcxproj/JavaScriptCoreGeneratedRelease.props:
2209         * JavaScriptCore.vcxproj/JavaScriptCorePostBuild.cmd:
2210         * JavaScriptCore.vcxproj/JavaScriptCorePreLink.cmd:
2211         * JavaScriptCore.vcxproj/JavaScriptCoreProduction.props:
2212         * JavaScriptCore.vcxproj/JavaScriptCoreRelease.props:
2213         * JavaScriptCore.vcxproj/JavaScriptCoreReleaseCFLite.props:
2214         * JavaScriptCore.vcxproj/LLInt/LLIntAssembly/LLIntAssembly.make:
2215         * JavaScriptCore.vcxproj/LLInt/LLIntAssembly/LLIntAssembly.vcxproj:
2216         * JavaScriptCore.vcxproj/LLInt/LLIntAssembly/build-LLIntAssembly.sh:
2217         * JavaScriptCore.vcxproj/LLInt/LLIntDesiredOffsets/LLIntDesiredOffsets.make:
2218         * JavaScriptCore.vcxproj/LLInt/LLIntDesiredOffsets/LLIntDesiredOffsets.vcxproj:
2219         * JavaScriptCore.vcxproj/LLInt/LLIntDesiredOffsets/build-LLIntDesiredOffsets.sh:
2220         * JavaScriptCore.vcxproj/LLInt/LLIntOffsetsExtractor/LLIntOffsetsExtractor.vcxproj:
2221         * JavaScriptCore.vcxproj/LLInt/LLIntOffsetsExtractor/LLIntOffsetsExtractorCommon.props:
2222         * JavaScriptCore.vcxproj/LLInt/LLIntOffsetsExtractor/LLIntOffsetsExtractorDebug.props:
2223         * JavaScriptCore.vcxproj/LLInt/LLIntOffsetsExtractor/LLIntOffsetsExtractorProduction.props:
2224         * JavaScriptCore.vcxproj/LLInt/LLIntOffsetsExtractor/LLIntOffsetsExtractorRelease.props:
2225         * JavaScriptCore.vcxproj/build-generated-files.sh:
2226         * JavaScriptCore.vcxproj/copy-files.cmd:
2227         * JavaScriptCore.vcxproj/jsc/jsc.vcxproj:
2228         * JavaScriptCore.vcxproj/jsc/jscCommon.props:
2229         * JavaScriptCore.vcxproj/jsc/jscDebug.props:
2230         * JavaScriptCore.vcxproj/jsc/jscPostBuild.cmd:
2231         * JavaScriptCore.vcxproj/jsc/jscPreLink.cmd:
2232         * JavaScriptCore.vcxproj/jsc/jscProduction.props:
2233         * JavaScriptCore.vcxproj/jsc/jscRelease.props:
2234         * JavaScriptCore.vcxproj/testRegExp/testRegExp.vcxproj:
2235         * JavaScriptCore.vcxproj/testRegExp/testRegExp.vcxproj.filters:
2236         * JavaScriptCore.vcxproj/testRegExp/testRegExpCommon.props:
2237         * JavaScriptCore.vcxproj/testRegExp/testRegExpDebug.props:
2238         * JavaScriptCore.vcxproj/testRegExp/testRegExpPostBuild.cmd:
2239         * JavaScriptCore.vcxproj/testRegExp/testRegExpPreLink.cmd:
2240         * JavaScriptCore.vcxproj/testRegExp/testRegExpProduction.props:
2241         * JavaScriptCore.vcxproj/testRegExp/testRegExpRelease.props:
2242         * JavaScriptCore.vcxproj/testapi/testapi.vcxproj:
2243         * JavaScriptCore.vcxproj/testapi/testapiCommon.props:
2244         * JavaScriptCore.vcxproj/testapi/testapiCommonCFLite.props:
2245         * JavaScriptCore.vcxproj/testapi/testapiDebug.props:
2246         * JavaScriptCore.vcxproj/testapi/testapiDebugCFLite.props:
2247         * JavaScriptCore.vcxproj/testapi/testapiPreLink.cmd:
2248         * JavaScriptCore.vcxproj/testapi/testapiProduction.props:
2249         * JavaScriptCore.vcxproj/testapi/testapiRelease.props:
2250         * JavaScriptCore.vcxproj/testapi/testapiReleaseCFLite.props:
2251
2252 2013-04-26  Roger Fong  <roger_fong@apple.com>
2253
2254         Disable sub-pixel layout on mac.
2255         https://bugs.webkit.org/show_bug.cgi?id=114999.
2256
2257         Reviewed by Simon Fraser.
2258
2259         * Configurations/FeatureDefines.xcconfig:
2260
2261 2013-04-26  Oliver Hunt  <oliver@apple.com>
2262
2263         Make stack tracing more robust
2264         https://bugs.webkit.org/show_bug.cgi?id=115272
2265
2266         Reviewed by Geoffrey Garen.
2267
2268         CallFrame already handles stack walking confusion robustly,
2269         so we should make sure that the actual walk handles that as well.
2270
2271         * interpreter/Interpreter.cpp:
2272         (JSC::getCallerInfo):
2273
2274 2013-04-26  Mark Hahnenberg  <mhahnenberg@apple.com>
2275
2276         REGRESSION(r149165): It made many tests crash on 32 bit
2277         https://bugs.webkit.org/show_bug.cgi?id=115227
2278
2279         Reviewed by Csaba Osztrogonác.
2280
2281         m_reservation is uninitialized when ENABLE(SUPER_REGION) is false.
2282
2283         * heap/SuperRegion.cpp:
2284         (JSC::SuperRegion::~SuperRegion):
2285
2286 2013-04-26  Julien Brianceau  <jbrianceau@nds.com>
2287
2288         Fix SH4 build broken since r149159.
2289         https://bugs.webkit.org/show_bug.cgi?id=115229
2290
2291         Add BranchTruncateType enum in SH4 port and handle it in branchTruncateDoubleToInt32.
2292
2293         Reviewed by Allan Sandfeld Jensen.
2294
2295         * assembler/MacroAssemblerSH4.h:
2296         (JSC::MacroAssemblerSH4::branchTruncateDoubleToInt32):
2297
2298 2013-04-25  Mark Hahnenberg  <mhahnenberg@apple.com>
2299
2300         SuperRegion doesn't call deallocate() on its PageReservation
2301         https://bugs.webkit.org/show_bug.cgi?id=115208
2302
2303         Reviewed by Geoffrey Garen.
2304
2305         It should. This doesn't cause us to leak physical memory, but it does cause us to leak virtual 
2306         address space (and probably mach ports), which is also bad :-( FixedVMPoolExecutableAllocator 
2307         also has this bug, but it doesn't matter much because there's only one instance of that class 
2308         throughout the entire lifetime of the process, whereas each VM has its own SuperRegion. 
2309
2310         * heap/SuperRegion.cpp:
2311         (JSC::SuperRegion::~SuperRegion):
2312         * heap/SuperRegion.h:
2313         (SuperRegion):
2314         * jit/ExecutableAllocatorFixedVMPool.cpp:
2315         (FixedVMPoolExecutableAllocator):
2316         (JSC::FixedVMPoolExecutableAllocator::~FixedVMPoolExecutableAllocator):
2317
2318 2013-04-25  Filip Pizlo  <fpizlo@apple.com>
2319
2320         DFG doesn't support to_jsnumber
2321         https://bugs.webkit.org/show_bug.cgi?id=115129
2322
2323         Reviewed by Geoffrey Garen.
2324         
2325         Based on Oliver's patch. Implements to_jsnumber as Identity(Number:@thingy), and then does
2326         an optimization in Fixup to turn Identity(Number:) into Identity(Int32:) if the predictions
2327         tell us to. Identity is later turned into Phantom.
2328         
2329         Also fixed BackPropMask, which appeared to have NodeDoesNotExit included in it. That's
2330         wrong; NodeDoesNotExit is not a backward propagation property.
2331         
2332         Also fixed Identity to be marked as CanExit (i.e. not NodeDoesNotExit).
2333         
2334         This more than doubles the FPS on ammo.
2335
2336         * dfg/DFGByteCodeParser.cpp:
2337         (JSC::DFG::ByteCodeParser::parseBlock):
2338         * dfg/DFGCapabilities.h:
2339         (JSC::DFG::canCompileOpcode):
2340         * dfg/DFGFixupPhase.cpp:
2341         (JSC::DFG::FixupPhase::fixupNode):
2342         (FixupPhase):
2343         (JSC::DFG::FixupPhase::observeUseKindOnNode):
2344         (JSC::DFG::FixupPhase::observeUseKindOnEdge):
2345         * dfg/DFGNodeFlags.h:
2346         (DFG):
2347         * dfg/DFGNodeType.h:
2348         (DFG):
2349         * dfg/DFGPredictionPropagationPhase.cpp:
2350         (JSC::DFG::PredictionPropagationPhase::propagate):
2351
2352 2013-04-24  Oliver Hunt  <oliver@apple.com>
2353
2354         Add support for Math.imul
2355         https://bugs.webkit.org/show_bug.cgi?id=115143
2356
2357         Reviewed by Filip Pizlo.
2358
2359         Add support for Math.imul, a thunk generator for Math.imul,
2360         and an intrinsic.
2361
2362         Fairly self explanatory set of changes, DFG intrinsics simply
2363         leverages the existing ValueToInt32 nodes.
2364
2365         * create_hash_table:
2366         * dfg/DFGAbstractState.cpp:
2367         (JSC::DFG::AbstractState::executeEffects):
2368         * dfg/DFGBackwardsPropagationPhase.cpp:
2369         (JSC::DFG::BackwardsPropagationPhase::propagate):
2370         * dfg/DFGByteCodeParser.cpp:
2371         (JSC::DFG::ByteCodeParser::handleIntrinsic):
2372         * dfg/DFGCSEPhase.cpp:
2373         (JSC::DFG::CSEPhase::performNodeCSE):
2374         * dfg/DFGFixupPhase.cpp:
2375         (JSC::DFG::FixupPhase::fixupNode):
2376         * dfg/DFGNodeType.h:
2377         (DFG):
2378         * dfg/DFGPredictionPropagationPhase.cpp:
2379         (JSC::DFG::PredictionPropagationPhase::propagate):
2380         * dfg/DFGSpeculativeJIT.cpp:
2381         (JSC::DFG::SpeculativeJIT::compileArithIMul):
2382         * dfg/DFGSpeculativeJIT.h:
2383         (SpeculativeJIT):
2384         * dfg/DFGSpeculativeJIT32_64.cpp:
2385         (JSC::DFG::SpeculativeJIT::compile):
2386         * dfg/DFGSpeculativeJIT64.cpp:
2387         (JSC::DFG::SpeculativeJIT::compile):
2388         * jit/ThunkGenerators.cpp:
2389         (JSC::imulThunkGenerator):
2390         (JSC):
2391         * jit/ThunkGenerators.h:
2392         (JSC):
2393         * runtime/Intrinsic.h:
2394         * runtime/MathObject.cpp:
2395         (JSC):
2396         (JSC::mathProtoFuncIMul):
2397         * runtime/VM.cpp:
2398         (JSC::thunkGeneratorForIntrinsic):
2399
2400 2013-04-25  Filip Pizlo  <fpizlo@apple.com>
2401
2402         Unreviewed, roll out http://trac.webkit.org/changeset/148999
2403         It broke http://kripken.github.io/ammo.js/examples/new/ammo.html
2404
2405         * JavaScriptCore.order:
2406         * bytecompiler/BytecodeGenerator.cpp:
2407         (JSC::BytecodeGenerator::emitNewArray):
2408         (JSC::BytecodeGenerator::emitThrowReferenceError):
2409         (JSC::BytecodeGenerator::emitReadOnlyExceptionIfNeeded):
2410         * bytecompiler/BytecodeGenerator.h:
2411         (JSC::BytecodeGenerator::shouldEmitProfileHooks):
2412         (BytecodeGenerator):
2413         * bytecompiler/NodesCodegen.cpp:
2414         (JSC):
2415         (JSC::NullNode::emitBytecode):
2416         (JSC::BooleanNode::emitBytecode):
2417         (JSC::NumberNode::emitBytecode):
2418         (JSC::StringNode::emitBytecode):
2419         (JSC::IfNode::emitBytecode):
2420         (JSC::IfElseNode::emitBytecode):
2421         * parser/ASTBuilder.h:
2422         (JSC::ASTBuilder::createIfStatement):
2423         (ASTBuilder):
2424         * parser/NodeConstructors.h:
2425         (JSC):
2426         (JSC::NullNode::NullNode):
2427         (JSC::BooleanNode::BooleanNode):
2428         (JSC::NumberNode::NumberNode):
2429         (JSC::StringNode::StringNode):
2430         (JSC::IfNode::IfNode):
2431         (JSC::IfElseNode::IfElseNode):
2432         * parser/Nodes.h:
2433         (JSC::ExpressionNode::isPure):
2434         (JSC::ExpressionNode::isSubtract):
2435         (StatementNode):
2436         (NullNode):
2437         (JSC::NullNode::isNull):
2438         (BooleanNode):
2439         (JSC::BooleanNode::isPure):
2440         (NumberNode):
2441         (JSC::NumberNode::value):
2442         (JSC::NumberNode::isPure):
2443         (StringNode):
2444         (JSC::StringNode::isPure):
2445         (JSC::StringNode::isString):
2446         (BinaryOpNode):
2447         (IfNode):
2448         (JSC):
2449         (IfElseNode):
2450         (ContinueNode):
2451         (BreakNode):
2452         * parser/Parser.cpp:
2453         (JSC::::parseIfStatement):
2454         * parser/ResultType.h:
2455         (ResultType):
2456         * runtime/JSCJSValueInlines.h:
2457         (JSC::JSValue::pureToBoolean):
2458         * runtime/JSCell.h:
2459         (JSCell):
2460         * runtime/JSCellInlines.h:
2461         (JSC):
2462
2463 2013-04-25  Filip Pizlo  <fpizlo@apple.com>
2464
2465         PreciseJumpTargets should treat loop_hint as a jump target
2466         https://bugs.webkit.org/show_bug.cgi?id=115209
2467
2468         Reviewed by Mark Hahnenberg.
2469         
2470         I didn't add a test but I turned this into a release assertion. Running Octane is enough
2471         to trigger it.
2472
2473         * bytecode/PreciseJumpTargets.cpp:
2474         (JSC::computePreciseJumpTargets):
2475         * dfg/DFGByteCodeParser.cpp:
2476         (JSC::DFG::ByteCodeParser::parseBlock):
2477
2478 2013-04-25  Roman Zhuykov  <zhroma@ispras.ru>
2479
2480         Fix problems with processing negative zero on DFG.
2481         https://bugs.webkit.org/show_bug.cgi?id=113862
2482
2483         Reviewed by Filip Pizlo.
2484
2485         Fix NodeNeedsNegZero flag propagation in BackwardPropagationPhase.
2486         Function arithNodeFlags should not mask NodeNeedsNegZero flag for ArithNegate and DoubleAsInt32
2487         nodes and this flag should be always used to decide where we need to generate nezative-zero checks.
2488         Remove unnecessary negative-zero checks from integer ArithDiv on ARM.
2489         Also remove such checks from integer ArithMod on ARM and X86, and make them always to
2490         check not only "modulo_result == 0" but also "dividend < 0".
2491         Generate faster code for case when ArithMod operation divisor is constant power of 2 on ARMv7
2492         in the same way as on ARMv7s, and add negative-zero checks into this code when needed.
2493         Change speculationCheck ExitKind from Overflow to NegativeZero where applicable.
2494  
2495         This shows 30% speedup of math-spectral-norm, and 5% speedup
2496         on SunSpider overall on ARMv7 Linux.
2497
2498         * assembler/MacroAssemblerARM.h:
2499         (JSC::MacroAssemblerARM::branchConvertDoubleToInt32):
2500         * assembler/MacroAssemblerARMv7.h:
2501         (JSC::MacroAssemblerARMv7::branchConvertDoubleToInt32):
2502         * assembler/MacroAssemblerMIPS.h:
2503         (JSC::MacroAssemblerMIPS::branchConvertDoubleToInt32):
2504         * assembler/MacroAssemblerSH4.h:
2505         (JSC::MacroAssemblerSH4::branchConvertDoubleToInt32):
2506         * assembler/MacroAssemblerX86Common.h:
2507         (JSC::MacroAssemblerX86Common::branchConvertDoubleToInt32):
2508         * dfg/DFGBackwardsPropagationPhase.cpp:
2509         (JSC::DFG::BackwardsPropagationPhase::isNotNegZero):
2510         (JSC::DFG::BackwardsPropagationPhase::isNotPosZero):
2511         (JSC::DFG::BackwardsPropagationPhase::propagate):
2512         * dfg/DFGNode.h:
2513         (JSC::DFG::Node::arithNodeFlags):
2514         * dfg/DFGSpeculativeJIT.cpp:
2515         (JSC::DFG::SpeculativeJIT::compileDoubleAsInt32):
2516         (JSC::DFG::SpeculativeJIT::compileSoftModulo):
2517         (JSC::DFG::SpeculativeJIT::compileArithNegate):
2518
2519 2013-04-25  Oliver Hunt  <oliver@apple.com>
2520
2521         Stack guards are too conservative
2522         https://bugs.webkit.org/show_bug.cgi?id=115147
2523
2524         Reviewed by Mark Hahnenberg.
2525
2526         Increase stack guard to closer to old size.
2527
2528         * interpreter/Interpreter.cpp:
2529         (JSC::Interpreter::StackPolicy::StackPolicy):
2530
2531 2013-04-25  Oliver Hunt  <oliver@apple.com>
2532
2533         Stack guards are too conservative
2534         https://bugs.webkit.org/show_bug.cgi?id=115147
2535
2536         Reviewed by Geoffrey Garen.
2537
2538         Reduce the limits and simplify the decision making.
2539
2540         * interpreter/Interpreter.cpp:
2541         (JSC::Interpreter::StackPolicy::StackPolicy):
2542
2543 2013-04-25  Nick Diego Yamane  <nick.yamane@openbossa.org>
2544
2545         JSC: Fix interpreter misbehavior in builds with JIT disabled
2546         https://bugs.webkit.org/show_bug.cgi?id=115190
2547
2548         Reviewed by Oliver Hunt.
2549
2550         Commit http://trac.webkit.org/changeset/147858 modified
2551         some details on how JS stack traces are built. The method
2552         "getLineNumberForCallFrame", renamed in that changeset to
2553         "getBytecodeOffsetForCallFrame" is always returning `0' when
2554         JIT is disabled
2555
2556         How to reproduce:
2557          - Build webkit with JIT disabled
2558          - Open MiniBrowser, for example, with http://google.com
2559          - In a debug build, WebProcess will hit the following ASSERT:
2560            Source/JavaScriptCore/bytecode/UnlinkedCodeBlock.cpp:279 ASSERT(low);
2561
2562         * interpreter/Interpreter.cpp:
2563         (JSC::getBytecodeOffsetForCallFrame):
2564
2565 2013-04-25  Oliver Hunt  <oliver@apple.com>
2566
2567         Make checkSyntax take a VM instead of an ExecState
2568
2569         RS=Tim
2570
2571         * jsc.cpp:
2572         (runInteractive):
2573         * runtime/Completion.cpp:
2574         (JSC::checkSyntax):
2575         * runtime/Completion.h:
2576         (JSC):
2577
2578 2013-04-25  Michael Saboff  <msaboff@apple.com>
2579
2580         32 Bit: Crash due to RegExpTest nodes not setting result type to Boolean
2581         https://bugs.webkit.org/show_bug.cgi?id=115188
2582
2583         Reviewed by Geoffrey Garen.
2584
2585         Changed the RegExpTest node to set the AbstractValue to boolean, since that
2586         what it is.
2587
2588         * dfg/DFGAbstractState.cpp:
2589         (JSC::DFG::AbstractState::executeEffects):
2590
2591 2013-04-25  Julien Brianceau  <jbrianceau@nds.com>
2592
2593         REGRESSION(r137994): Random crashes occur with SH4 JSC.
2594         https://bugs.webkit.org/show_bug.cgi?id=115167.
2595
2596         Reviewed by Oliver Hunt.
2597
2598         Since r137994, uncommited pages could be inside the area of memory in
2599         parameter of the cacheFlush function. That's why we have to flush each
2600         page separately to avoid a fail of the whole flush, if an uncommited page
2601         is in the area.
2602
2603         This patch is very similar to changeset 145194 made for ARMv7 architecture,
2604         see https://bugs.webkit.org/show_bug.cgi?id=111441 for further information.
2605
2606         * assembler/SH4Assembler.h:
2607         (JSC::SH4Assembler::cacheFlush):
2608
2609 2013-04-24  Mark Lam  <mark.lam@apple.com>
2610
2611         Add watchdog timer polling for the DFG.
2612         https://bugs.webkit.org/show_bug.cgi?id=115134.
2613
2614         Reviewed by Geoffrey Garen.
2615
2616         The strategy is to add a speculation check to the DFG generated code to
2617         test if the watchdog timer has fired or not. If the watchdog timer has
2618         fired, the generated code will do an OSR exit to the baseline JIT, and
2619         let it handle servicing the watchdog timer.
2620
2621         If the watchdog is not enabled, this speculation check will not be
2622         emitted.
2623
2624         * API/tests/testapi.c:
2625         (currentCPUTime_callAsFunction):
2626         (extendTerminateCallback):
2627         (main):
2628         - removed try/catch statements so that we can test the watchdog on the DFG.
2629         - added JS bindings to a native currentCPUTime() function so that the timeout
2630           tests can be more accurate.
2631         - also shortened the time values so that the tests can complete sooner.
2632
2633         * bytecode/ExitKind.h:
2634         * dfg/DFGAbstractState.cpp:
2635         (JSC::DFG::AbstractState::executeEffects):
2636         * dfg/DFGByteCodeParser.cpp:
2637         (JSC::DFG::ByteCodeParser::parseBlock):
2638         * dfg/DFGFixupPhase.cpp:
2639         (JSC::DFG::FixupPhase::fixupNode):
2640         * dfg/DFGNodeType.h:
2641         * dfg/DFGPredictionPropagationPhase.cpp:
2642         (JSC::DFG::PredictionPropagationPhase::propagate):
2643         * dfg/DFGSpeculativeJIT32_64.cpp:
2644         (JSC::DFG::SpeculativeJIT::compile):
2645         * dfg/DFGSpeculativeJIT64.cpp:
2646         (JSC::DFG::SpeculativeJIT::compile):
2647         * runtime/Watchdog.cpp:
2648         (JSC::Watchdog::setTimeLimit):
2649
2650 2013-04-24  Filip Pizlo  <fpizlo@apple.com>
2651
2652         Special thunks for math functions should work on ARMv7
2653         https://bugs.webkit.org/show_bug.cgi?id=115144
2654
2655         Reviewed by Gavin Barraclough and Oliver Hunt.
2656         
2657         The only hard bit here was ensuring that we implemented the very special
2658         "cheap C call" convention on ARMv7.
2659
2660         * assembler/AbstractMacroAssembler.h:
2661         (JSC::isARMv7s):
2662         (JSC):
2663         (JSC::isX86):
2664         * dfg/DFGCommon.h:
2665         * jit/SpecializedThunkJIT.h:
2666         (SpecializedThunkJIT):
2667         (JSC::SpecializedThunkJIT::callDoubleToDoublePreservingReturn):
2668         * jit/ThunkGenerators.cpp:
2669         (JSC::floorThunkGenerator):
2670         (JSC::ceilThunkGenerator):
2671         (JSC::roundThunkGenerator):
2672         (JSC::expThunkGenerator):
2673         (JSC::logThunkGenerator):
2674
2675 2013-04-24  Julien Brianceau  <jbrianceau@nds.com>
2676
2677         Misc bugfix and cleaning in sh4 base JIT.
2678         https://bugs.webkit.org/show_bug.cgi?id=115022.
2679
2680         Reviewed by Oliver Hunt.
2681
2682         Remove unused add32() and sub32() with scratchreg parameter to avoid
2683         confusion as this function prototype means another behaviour.
2684         Remove unused "void push(Address)" function which seems quite buggy.
2685
2686         * assembler/MacroAssemblerSH4.h:
2687         (JSC::MacroAssemblerSH4::and32): Cosmetic change.
2688         (JSC::MacroAssemblerSH4::lshift32): Cosmetic change.
2689         (JSC::MacroAssemblerSH4::or32): Cosmetic change.
2690         (JSC::MacroAssemblerSH4::xor32): Cosmetic change.
2691         (MacroAssemblerSH4):
2692         (JSC::MacroAssemblerSH4::load32): Cosmetic change.
2693         (JSC::MacroAssemblerSH4::load8Signed): Fix invalid offset upper limit
2694         when using r0 register and cosmetic changes.
2695         (JSC::MacroAssemblerSH4::load8): Reuse load8Signed to avoid duplication.
2696         (JSC::MacroAssemblerSH4::load16): Fix invalid offset upper limit when
2697         using r0 register, fix missing offset shift and cosmetic changes.
2698         (JSC::MacroAssemblerSH4::store32): Cosmetic change.
2699         (JSC::MacroAssemblerSH4::branchAdd32): Store result value before branch.
2700
2701 2013-04-24  Patrick Gansterer  <paroga@webkit.org>
2702
2703         [WIN] Remove pthread from Visual Studio files in JavaScriptCore
2704         https://bugs.webkit.org/show_bug.cgi?id=114864
2705
2706         Reviewed by Brent Fulgham.
2707
2708         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreCommon.vsprops:
2709         * JavaScriptCore.vcproj/LLIntOffsetsExtractor/LLIntOffsetsExtractorCommon.vsprops:
2710         * JavaScriptCore.vcproj/jsc/jscCommon.vsprops:
2711         * JavaScriptCore.vcproj/testRegExp/testRegExpCommon.vsprops:
2712         * JavaScriptCore.vcproj/testapi/testapiCommon.vsprops:
2713         * JavaScriptCore.vcxproj/JavaScriptCoreCommon.props:
2714         * JavaScriptCore.vcxproj/JavaScriptCoreExportGenerator/JavaScriptCoreExportGeneratorCommon.props:
2715         * JavaScriptCore.vcxproj/LLInt/LLIntOffsetsExtractor/LLIntOffsetsExtractorCommon.props:
2716         * JavaScriptCore.vcxproj/jsc/jscCommon.props:
2717         * JavaScriptCore.vcxproj/testRegExp/testRegExpCommon.props:
2718         * JavaScriptCore.vcxproj/testapi/testapiCommon.props:
2719         * JavaScriptCore.vcxproj/testapi/testapiCommonCFLite.props:
2720
2721 2013-04-24  Filip Pizlo  <fpizlo@apple.com>
2722
2723         DFG should keep the operand to create_this alive if it's emitting code for create_this
2724         https://bugs.webkit.org/show_bug.cgi?id=115133
2725
2726         Reviewed by Mark Hahnenberg.
2727         
2728         The DFG must model bytecode liveness, or else OSR exit is going to have a really bad time.
2729
2730         * dfg/DFGByteCodeParser.cpp:
2731         (JSC::DFG::ByteCodeParser::parseBlock):
2732
2733 2013-04-24  Roger Fong  <roger_fong@apple.com>
2734
2735         Have VS2010 WebKit solution look in WebKit_Libraries/lib32 for dependencies.
2736
2737         * JavaScriptCore.vcxproj/JavaScriptCoreExportGenerator/JavaScriptCoreExportGeneratorPostBuild.cmd:
2738         * JavaScriptCore.vcxproj/JavaScriptCorePreLink.cmd:
2739         * JavaScriptCore.vcxproj/jsc/jscPostBuild.cmd:
2740         * JavaScriptCore.vcxproj/jsc/jscPreLink.cmd:
2741         * JavaScriptCore.vcxproj/testRegExp/testRegExp.vcxproj.filters:
2742         * JavaScriptCore.vcxproj/testRegExp/testRegExpPostBuild.cmd:
2743         * JavaScriptCore.vcxproj/testRegExp/testRegExpPreLink.cmd:
2744         * JavaScriptCore.vcxproj/testapi/testapiPreLink.cmd:
2745
2746 2013-04-24  Geoffrey Garen  <ggaren@apple.com>
2747
2748         32-bit build fix.
2749
2750         Unreviewed.
2751
2752         * dfg/DFGSpeculativeJIT.cpp:
2753         (JSC::DFG::SpeculativeJIT::compilePeepHoleBooleanBranch): Explicitly
2754         truncate to 32-bit to avoid compiler warnings. It's safe to truncate
2755         because the payload of a boolean is the low bits on both 64-bit and 32-bit.
2756
2757 2013-04-23  Geoffrey Garen  <ggaren@apple.com>
2758
2759         Filled out more cases of branch folding in the DFG
2760         https://bugs.webkit.org/show_bug.cgi?id=115088
2761
2762         Reviewed by Oliver Hunt.
2763
2764         No change on the benchmarks we track, but a 3X speedup on a
2765         microbenchmark that uses these techniques.
2766
2767         * dfg/DFGByteCodeParser.cpp:
2768         (JSC::DFG::ByteCodeParser::parseBlock): (!/=)= and (!/=)== can constant
2769         fold all types, not just numbers, because true constants have no
2770         side effects when type-converted at runtime.
2771
2772         * dfg/DFGFixupPhase.cpp:
2773         (JSC::DFG::FixupPhase::fixupNode):
2774         * dfg/DFGNode.h:
2775         (JSC::DFG::Node::shouldSpeculateBoolean): Added support for fixing up
2776         boolean uses, like we do for other types like number.
2777
2778         * dfg/DFGSpeculativeJIT.cpp:
2779         (JSC::DFG::SpeculativeJIT::compilePeepHoleBooleanBranch):
2780         (JSC::DFG::SpeculativeJIT::compilePeepHoleBranch):
2781         (JSC::DFG::SpeculativeJIT::compare):
2782         (JSC::DFG::SpeculativeJIT::compileStrictEq):
2783         (JSC::DFG::SpeculativeJIT::compileBooleanCompare): Peephole fuse
2784         boolean compare and/or compare-branch, now that we have the types for
2785         them.
2786
2787         * dfg/DFGSpeculativeJIT.h: Updated declarations.
2788
2789 == Rolled over to ChangeLog-2013-04-24 ==