Try to fix the Chromium build.
[WebKit-https.git] / JavaScriptCore / ChangeLog
1 2010-12-01  Geoffrey Garen  <ggaren@apple.com>
2
3         Try to fix the Chromium build.
4         
5         * JavaScriptCore.gypi: This is a Windows build file, so use OSAllocatorWin.cpp.
6
7 2010-12-01  Geoffrey Garen  <ggaren@apple.com>
8
9         Try to fix the GTK build.
10
11         * GNUmakefile.am: Added OSAllocator to another project.
12
13 2010-12-01  Geoffrey Garen  <ggaren@apple.com>
14
15         Try to fix the GTK Linux build.
16
17         * JavaScriptCore.gypi: Added OSAllocator to the project.
18
19 2010-12-01  Geoffrey Garen  <ggaren@apple.com>
20
21         Try to fix the Qt Linux build.
22
23         * wtf/OSAllocatorPosix.cpp: Use the right errno.h.
24
25 2010-12-01  Geoffrey Garen  <ggaren@apple.com>
26
27         Try to fix Windows build: export some more symbols.
28
29         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
30
31 2010-12-01  Geoffrey Garen  <ggaren@apple.com>
32
33         Try to fix the Qt Linux build.
34
35         * wtf/wtf.pri: Use the POSIX OSAllocator for Qt Linux.
36
37 2010-12-01  Geoffrey Garen  <ggaren@apple.com>
38
39         Windows build fix: commit doesn't have a return value.
40
41         * wtf/OSAllocatorWin.cpp:
42         (WTF::OSAllocator::commit):
43
44 2010-12-01  Geoffrey Garen  <ggaren@apple.com>
45
46         Build fix: Export some symbols.
47
48         * JavaScriptCore.exp:
49
50 2010-12-01  Geoffrey Garen  <ggaren@apple.com>
51
52         Build fix.
53
54         * JavaScriptCore.xcodeproj/project.pbxproj: Export OSAllocator.h as private
55         so other projects can see it.
56
57         * wtf/OSAllocatorPosix.cpp: #include UnusedParam.h for UNUSED_PARAM.
58
59 2010-12-01  Geoffrey Garen  <ggaren@apple.com>
60
61         Reviewed by Sam Weinig.
62
63         Baby step toward a cross-platform virtual memory abstraction: created
64         an all-static OSAllocator class and changed MarkStack to use it.
65
66         * JavaScriptCore.exp: These functions are inlined now.
67
68         * JavaScriptCore.vcproj/WTF/WTF.vcproj: Added OSAllocatorWin.cpp.
69
70         * JavaScriptCore.xcodeproj/project.pbxproj: Added OSAllocatorPosix.cpp.
71
72         * runtime/MarkStack.h:
73         (JSC::MarkStack::allocateStack):
74         (JSC::MarkStack::releaseStack): Use OSAllocator instead of rolling our
75         own platform-specific code.
76
77         * runtime/MarkStackNone.cpp: Removed. Nothing used this.
78
79         * runtime/MarkStackPosix.cpp: 
80         * runtime/MarkStackSymbian.cpp:
81         * runtime/MarkStackWin.cpp: Removed custom platform-specific code, since
82         we use the OSAllocator abstraction now.
83
84         * wtf/OSAllocator.h: Added.
85         * wtf/OSAllocatorPosix.cpp: Added.
86         (WTF::OSAllocator::reserve):
87         (WTF::OSAllocator::reserveAndCommit):
88         (WTF::OSAllocator::commit):
89         (WTF::OSAllocator::decommit):
90         (WTF::OSAllocator::release):
91         * wtf/OSAllocatorSymbian.cpp: Added.
92         (WTF::OSAllocator::reserve):
93         (WTF::OSAllocator::reserveAndCommit):
94         (WTF::OSAllocator::commit):
95         (WTF::OSAllocator::decommit):
96         (WTF::OSAllocator::release):
97         * wtf/OSAllocatorWin.cpp: Added.
98         (WTF::OSAllocator::reserve):
99         (WTF::OSAllocator::reserveAndCommit):
100         (WTF::OSAllocator::commit):
101         (WTF::OSAllocator::decommit):
102         (WTF::OSAllocator::release): The new OSAllocator abstraction.
103
104         * wtf/wtf.pri: Added OSAllocatorSymbian.cpp.
105
106 2010-12-01  Steve Falkenburg  <sfalken@apple.com>
107
108         Reviewed by Adam Roben.
109
110         WinCairo build should not use link-time code generation (LTCG)
111         https://bugs.webkit.org/show_bug.cgi?id=50353
112
113         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
114         * JavaScriptCore.vcproj/WTF/WTF.vcproj:
115         * JavaScriptCore.vcproj/jsc/jsc.vcproj:
116         * JavaScriptCore.vcproj/testapi/testapi.vcproj:
117
118 010-12-01  Steve Falkenburg  <sfalken@apple.com>
119
120         Reviewed by Adam Roben.
121
122         vcproj changes can't be applied cleanly by the Windows EWS bot
123         https://bugs.webkit.org/show_bug.cgi?id=50328
124
125         * JavaScriptCore.vcproj/JavaScriptCore.sln: Modified property svn:eol-style.
126         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: Modified property svn:eol-style.
127         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreCF.vsprops: Added property svn:eol-style.
128         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreCFLite.vsprops: Added property svn:eol-style.
129         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreCommon.vsprops: Added property svn:eol-style.
130         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreGenerated.vcproj: Modified property svn:eol-style.
131         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreGeneratedCommon.vsprops: Added property svn:eol-style.
132         * JavaScriptCore.vcproj/JavaScriptCoreSubmit.sln: Modified property svn:eol-style.
133         * JavaScriptCore.vcproj/WTF/WTF.vcproj: Modified property svn:eol-style.
134         * JavaScriptCore.vcproj/WTF/WTFCommon.vsprops: Added property svn:eol-style.
135         * JavaScriptCore.vcproj/jsc/jsc.vcproj: Modified property svn:eol-style.
136         * JavaScriptCore.vcproj/jsc/jscCommon.vsprops: Added property svn:eol-style.
137         * JavaScriptCore.vcproj/testapi/testapi.vcproj: Modified property svn:eol-style.
138         * JavaScriptCore.vcproj/testapi/testapiCommon.vsprops: Added property svn:eol-style.
139
140 2010-12-01  Gavin Barraclough  <barraclough@apple.com>
141
142         Reviewed by Sam Weinig.
143
144         Bug 50298 - /()()()()()()()()()(?:(\10a|b)(X|Y))+/.exec("bXXaYYaY") ASSERTs
145
146         For unmatched subpattens we previously used to set the subpattern end to -1,
147         but now we only set the start value. E.g. consider the following:
148             /a(b)?c/.exec("ac");
149         Previously we would generate an internal results array of:
150             [ 0, 2, -1, -1 ]
151         Since fairly recently we have generated results of:
152             [ 0, 2, -1, ??? ]
153         (With the end index of the subpattern uninitialized).
154
155         Update these ASSERTs to account for this.
156
157         Also, when stripping out self-referencing backreferences, (e.g. /(\1)/) we
158         were checking the wrong property on the pattern term. We should have been
159         looking at term.parentheses.subpatternId, but instead were checking
160         term.subpatternId. The latter is actually only the subpatternId for
161         back reference terms. Rename this to backReferenceSubpatternId.
162
163         * yarr/RegexInterpreter.cpp:
164         (JSC::Yarr::Interpreter::matchBackReference):
165         (JSC::Yarr::Interpreter::backtrackBackReference):
166
167 2010-11-30  Gavin Barraclough  <barraclough@apple.com>
168
169         Rubber stamped by Sam Weinig.
170
171         Bug 50297 - \s in YARR should match BOMs.
172
173         From section 15.10.2.12 CharacterClassEscape contains:
174
175         The production CharacterClassEscape :: s evaluates by returning the set of characters containing the
176         characters that are on the right-hand side of the WhiteSpace (7.2) or LineTerminator (7.3) productions.
177
178         Table 2 in section 7.2 contains:
179
180         \uFEFF Byte Order Mark <BOM>
181
182         * create_regex_tables:
183             Add BOM to spaces table.
184
185 2010-11-30  Gavin Barraclough  <barraclough@apple.com>
186
187         Reviewed by Darin Adler.
188
189         Fixed review comments following bug #48101.
190         Mostly typos, plus gave quantifyInfinite a symbolic name.
191
192         * yarr/RegexCompiler.cpp:
193         (JSC::Yarr::RegexPatternConstructor::quantifyAtom):
194         (JSC::Yarr::RegexPatternConstructor::checkForTerminalParentheses):
195         * yarr/RegexInterpreter.cpp:
196         (JSC::Yarr::Interpreter::backtrackParenthesesOnceEnd):
197         (JSC::Yarr::Interpreter::matchParenthesesTerminalBegin):
198         (JSC::Yarr::Interpreter::backtrackParenthesesTerminalBegin):
199         (JSC::Yarr::Interpreter::backtrackParenthesesTerminalEnd):
200         * yarr/RegexJIT.cpp:
201         (JSC::Yarr::RegexGenerator::generatePatternCharacterGreedy):
202         (JSC::Yarr::RegexGenerator::generatePatternCharacterNonGreedy):
203         (JSC::Yarr::RegexGenerator::generateCharacterClassGreedy):
204         * yarr/RegexParser.h:
205         (JSC::Yarr::Parser::parseTokens):
206         (JSC::Yarr::parse):
207
208 2010-11-30  Steve Falkenburg  <sfalken@apple.com>
209
210         Reviewed by Darin Adler.
211
212         WTF project missing build-stopping code from its pre-build event
213         https://bugs.webkit.org/show_bug.cgi?id=50281
214
215         * JavaScriptCore.vcproj/WTF/WTFPreBuild.cmd:
216
217 2010-11-30  Patrick Gansterer  <paroga@webkit.org>
218
219         Reviewed by Darin Adler.
220
221         Cleanup UTF8.cpp
222         https://bugs.webkit.org/show_bug.cgi?id=49581
223
224         Use macros and functions instead of range values directly.
225
226         * wtf/unicode/UTF8.cpp:
227         (WTF::Unicode::inlineUTF8SequenceLength):
228         (WTF::Unicode::UTF8SequenceLength):
229         (WTF::Unicode::convertUTF16ToUTF8):
230         (WTF::Unicode::readUTF8Sequence):
231         (WTF::Unicode::convertUTF8ToUTF16):
232         * wtf/unicode/UnicodeMacrosFromICU.h: Added U_IS_SUPPLEMENTARY macro.
233
234 2010-11-30  Geoffrey Garen  <ggaren@apple.com>
235
236         Reviewed by Gavin Barraclough.
237
238         Fixed a crash seen when using a PageAllocation to store itself.
239
240         * wtf/PageAllocation.h:
241         (WTF::PageAllocation::systemDeallocate): Zero out m_base before unmapping
242         it, in case unmapping m_base unmaps the PageAllocation.
243
244         * wtf/BumpPointerAllocator.h:
245         (WTF::BumpPointerPool::destroy): Now this work-around isn't needed!
246
247 2010-11-30  Xan Lopez  <xlopez@igalia.com>
248
249         Reviewed by Darin Adler.
250
251         m_hasNonEnumerableProperties is never initialized in Structure
252         https://bugs.webkit.org/show_bug.cgi?id=50266
253
254         * runtime/Structure.cpp:
255         (JSC::Structure::Structure): initialize member variable.
256
257 2010-11-29  Steve Falkenburg  <sfalken@apple.com>
258
259         Windows build fix (part 1). Use correct environment variable syntax in cmd files.
260
261         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCorePostBuild.cmd:
262         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCorePreBuild.cmd:
263         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCorePreLink.cmd:
264         * JavaScriptCore.vcproj/WTF/WTFPostBuild.cmd:
265         * JavaScriptCore.vcproj/jsc/jscPostBuild.cmd:
266         * JavaScriptCore.vcproj/jsc/jscPreBuild.cmd:
267         * JavaScriptCore.vcproj/jsc/jscPreLink.cmd:
268         * JavaScriptCore.vcproj/testapi/testapiPostBuild.cmd:
269         * JavaScriptCore.vcproj/testapi/testapiPreBuild.cmd:
270         * JavaScriptCore.vcproj/testapi/testapiPreLink.cmd:
271
272 2010-11-29  Dan Bernstein  <mitz@apple.com>
273
274         Reviewed by Darin Adler.
275
276         WTF support for <rdar://problem/8650085> adding word-prefix search options to the text search API.
277         https://bugs.webkit.org/show_bug.cgi?id=50038
278
279         * wtf/unicode/UnicodeMacrosFromICU.h: Copied additional macros from icu/unicode/utf16.h.
280
281 2010-11-29  Steve Falkenburg  <sfalken@apple.com>
282
283         Reviewed by Darin Adler.
284
285         JavaScriptCore projects on Windows should use cmd files for build events
286         https://bugs.webkit.org/show_bug.cgi?id=50193
287
288         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreCommon.vsprops:
289         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCorePostBuild.cmd: Added.
290         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCorePreBuild.cmd: Added.
291         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCorePreLink.cmd: Added.
292         * JavaScriptCore.vcproj/WTF/WTFPostBuild.cmd: Added property svn:eol-style.
293         * JavaScriptCore.vcproj/WTF/WTFPreBuild.cmd: Added property svn:eol-style.
294         * JavaScriptCore.vcproj/jsc/jscCommon.vsprops:
295         * JavaScriptCore.vcproj/jsc/jscPostBuild.cmd: Added.
296         * JavaScriptCore.vcproj/jsc/jscPreBuild.cmd: Added.
297         * JavaScriptCore.vcproj/jsc/jscPreLink.cmd: Added.
298         * JavaScriptCore.vcproj/testapi/testapiCommon.vsprops:
299         * JavaScriptCore.vcproj/testapi/testapiPostBuild.cmd: Added.
300         * JavaScriptCore.vcproj/testapi/testapiPreBuild.cmd: Added.
301         * JavaScriptCore.vcproj/testapi/testapiPreLink.cmd: Added.
302
303 2010-11-29  Dai Mikurube  <dmikurube@google.com>
304
305         Reviewed by Kent Tamura.
306
307         when empty, clicking "down" on outer-spin-button returns "max value"
308         https://bugs.webkit.org/show_bug.cgi?id=45491
309
310         It is required to calculate UTC/DST offsets to retrieve the current local milliseconds for
311         date/time type inputs. WTF::currentTimeMS() returns a UTC time, and WTF::getLocalTime()
312         returns a struct tm, not milliseconds.
313
314         Calculating milliseconds from a struct tm is not simple since timegm() cannot be used in all
315         environments. This calculation is already done in calculateUTCOffset(), and complicated.
316         Duplicating this complicated calculation is unreasonable because of maintainability.
317         To achieve this without duplication, we must call calculate{UTC|DST}Offset in some way.
318
319         * JavaScriptCore.exp:
320         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
321         * wtf/DateMath.cpp: Changed calculateUTCOffset() and calculateDSTOffset() to external functions.
322         (WTF::calculateUTCOffset):
323         (WTF::calculateDSTOffset):
324         * wtf/DateMath.h:
325
326 2010-11-29  Chris Rogers  <crogers@google.com>
327
328         Reviewed by Kenneth Russell.
329
330         Switch web audio code to use FloatPoint3D instead of Vector3
331         https://bugs.webkit.org/show_bug.cgi?id=50186
332
333         * wtf/Vector3.h: Removed.
334
335 2010-11-29  Steve Falkenburg  <sfalken@apple.com>
336
337         Reviewed by Adam Roben.
338
339         Add a mechanism for Windows pre-build/pre-link/post-build events to be separated into individual cmd files
340         https://bugs.webkit.org/show_bug.cgi?id=49858
341
342         We're migrating our prebuild/prelink/postbuild steps out of vcproj and vsprops files:
343         - To simplify editing (editing vsprops build steps is confusing).
344         - For more readable diffs.
345
346         * JavaScriptCore.vcproj/WTF/WTFCommon.vsprops:
347         * JavaScriptCore.vcproj/WTF/WTFPostBuild.cmd: Added.
348         * JavaScriptCore.vcproj/WTF/WTFPreBuild.cmd: Added.
349
350 2010-11-29  Geoffrey Garen  <ggaren@apple.com>
351
352         Reviewed by Gavin Barraclough.
353
354         Improved accuracy of command-line SunSpider.
355
356         * jsc.cpp:
357         (functionRun): Changed the "run" function to run a given test in
358         its own global object. Previously, all tests ran in the same global
359         object, which created name conflicts, and made globals from previous
360         tests artificially survive into later tests.
361         
362         Also changed "run" to return the elapsed milliseconds when running a
363         given test, for slightly more accurate numbers.
364
365         (functionCheckSyntax): Ditto on returning elapsed milliseconds.
366
367 2010-11-29  Darin Adler  <darin@apple.com>
368
369         Reviewed by Andreas Kling.
370
371         Remove a couple unneeded overflow checks
372         https://bugs.webkit.org/show_bug.cgi?id=49816
373
374         * wtf/text/CString.cpp:
375         (WTF::CString::init): Use an ASSERT instead of
376         an overflow check with CRASH.
377
378 2010-11-29  Adam Roben  <aroben@apple.com>
379
380         Robustify react-to-vsprops-changes.py against changes to its location
381         or the location of the .vsprops files
382
383         Suggested by John Sullivan.
384
385         * JavaScriptCore.vcproj/JavaScriptCore/react-to-vsprops-changes.py:
386         Removed file_modification_times.
387         (main): Use glob.glob to find the .vsprops files and assert that we found some.
388
389 2010-11-29  Adam Roben  <aroben@apple.com>
390
391         Touch wtf/Platform.h whenever any .vsprops file changes
392
393         This will cause all files to be recompiled, which will make changes to
394         preprocessor macros (e.g., ENABLE_*) actually take effect.
395
396         Fixes <http://webkit.org/b/50167> Windows build fails when ENABLE_*
397         macros are changed (because not enough files are rebuilt)
398
399         Reviewed by John Sullivan.
400
401         * JavaScriptCore.vcproj/JavaScriptCore/react-to-vsprops-changes.py:
402         (main): Touch wtf/Platform.h if it's older than any .vsprops file. Also
403         added some comments and logging to make it clearer what the script is
404         doing and why.
405
406 2010-11-29  Adam Roben  <aroben@apple.com>
407
408         Update react-to-vsprops-changes.py after r72555
409
410         .vsprops files are no longer accessed relative to $WebKitLibrariesDir.
411
412         Fixes <http://webkit.org/b/50166> REGRESSION (r72555):
413         react-to-vsprops-changes.py no longer works for people with a
414         non-default $WebKitLibrariesDir
415
416         Reviewed by John Sullivan.
417
418         * JavaScriptCore.vcproj/JavaScriptCore/react-to-vsprops-changes.py:
419         (main): Always look in WebKitLibraries/win for .vsprops files, not in
420         $WebKitLibrariesDir.
421
422 2010-11-28  Gavin Barraclough  <barraclough@apple.com>
423
424         Reviewed by Sam Weinig.
425
426         Bug 48100 - YARR allows what seems like a bogus character-class range
427
428         Per ECMA-262 character classes containing character ranges containing
429         character classes are invalid, eg:
430             /[\d-x]/
431             /[x-\d]/
432             /[\d-\d]/
433         These should throw a syntax error.
434
435         * yarr/RegexParser.h:
436
437 2010-11-27  Gavin Barraclough  <barraclough@apple.com>
438
439         Reviewed by Sam Weinig.
440
441         Bug 48101 - Yarr gives different results for /(?:a*?){2,}/
442
443         The test cases in the linked mozilla bug demonstrate a couple of
444         problems in subpattern matching. These bugs lie in the optimized
445         cases - for matching parentheses with a quantity count of 1, and
446         for matching greedy quantified parentheses at the end of a regex
447         (which do not backtrack).
448
449         In both of these cases we are failing to correctly handle empty
450         matches. In the case of parentheses-single matches (quantity count
451         one) we are failing to test for empty matches at all. In the case
452         of terminal subpattern matches we do currently check, however there
453         is a subtler bug here too. In the case of an empty match we will
454         presently immediately fall through to the next alternative (or
455         complete the regex match), whereas upon a failed match we should
456         be backtracking into the failing alternative, to give it a chance
457         to match further (e.g. consider /a??b?|a/.exec("ab") - upon first
458         attempting to match the first alternative this will match the empty
459         string - since a?? is non-greedy, however rather than moving on to
460         the second alternative we should be re-matching the first one, at
461         which point the non-greedy a?? will match, and as such the result
462         should be "ab", not "a").
463
464         Terminal subpattern matching contains a second bug, too. The frame
465         location values in the subpattern should be being allocated with
466         the outer disjunction's frame (as we do for the parentheses-single
467         optimization). Consider the following three regexes:
468             /a*(?:b*)*c*/
469             /a*(?:b*)c*/
470             /a*(?:b*)*/
471         Considering only the frame location required by the atoms a,b, and
472         c, (ignoring space associated with the nested subpattern) the first
473         regex (a normal subpattern match) requires a frame size of 2 for
474         the outer disjunction, (to backtrack terms a & c), with each
475         iteration of the subpattern requiring a frame of size 1 (in order
476         to backtrack b). In the case of the second regex (where the
477         parentheses-single optimization will kick in) the outer frame must
478         be set up with a frame size of 3, since the outer frame will also
479         be used when running the nested subpattern. We will currently only
480         allocate a farme of size 1 for the outer disjuntion (to contain a),
481         howver the frame size should be 2 (since the subpattern will be
482         evaluated in the outer frame). In addition to failing to allocate
483         frame space the frame offsets are also presently invalid - in the
484         case of the last regex b's frame location will be set assuming it
485         to be the first term in the frame, whereas in this case b lies
486         after the term a, and should be taking a separate frame location.
487
488         In order to correctly allocate the frame for terminal subpattern
489         matches we must move this optimization back up from the JIT into
490         the compiler (and thus interpreter too), since this is where the
491         frame allocation takes place.
492
493         * yarr/RegexCompiler.cpp:
494         (JSC::Yarr::RegexPatternConstructor::setupAlternativeOffsets):
495         (JSC::Yarr::RegexPatternConstructor::checkForTerminalParentheses):
496         (JSC::Yarr::compileRegex):
497         * yarr/RegexInterpreter.cpp:
498         (JSC::Yarr::Interpreter::matchParenthesesOnceBegin):
499         (JSC::Yarr::Interpreter::matchParenthesesOnceEnd):
500         (JSC::Yarr::Interpreter::backtrackParenthesesOnceBegin):
501         (JSC::Yarr::Interpreter::backtrackParenthesesOnceEnd):
502         (JSC::Yarr::Interpreter::matchParenthesesTerminalBegin):
503         (JSC::Yarr::Interpreter::matchParenthesesTerminalEnd):
504         (JSC::Yarr::Interpreter::backtrackParenthesesTerminalBegin):
505         (JSC::Yarr::Interpreter::backtrackParenthesesTerminalEnd):
506         (JSC::Yarr::Interpreter::matchDisjunction):
507         (JSC::Yarr::ByteCompiler::atomParenthesesOnceBegin):
508         (JSC::Yarr::ByteCompiler::atomParenthesesTerminalBegin):
509         (JSC::Yarr::ByteCompiler::atomParenthesesSubpatternBegin):
510         (JSC::Yarr::ByteCompiler::atomParentheticalAssertionEnd):
511         (JSC::Yarr::ByteCompiler::atomParenthesesSubpatternEnd):
512         (JSC::Yarr::ByteCompiler::atomParenthesesOnceEnd):
513         (JSC::Yarr::ByteCompiler::atomParenthesesTerminalEnd):
514         (JSC::Yarr::ByteCompiler::emitDisjunction):
515         * yarr/RegexInterpreter.h:
516         * yarr/RegexJIT.cpp:
517         (JSC::Yarr::RegexGenerator::generateParenthesesSingle):
518         (JSC::Yarr::RegexGenerator::generateParenthesesGreedyNoBacktrack):
519         (JSC::Yarr::RegexGenerator::generateTerm):
520         * yarr/RegexPattern.h:
521         (JSC::Yarr::PatternTerm::PatternTerm):
522
523 2010-11-24  Patrick Gansterer  <paroga@webkit.org>
524
525         Reviewed by Csaba Osztrogonác.
526
527         Remove Bakefile build system files
528         https://bugs.webkit.org/show_bug.cgi?id=49983
529
530         r53757 only removed the content, but not the files.
531         This patch removes that empty files.
532
533         * JavaScriptCoreSources.bkl: Removed.
534         * jscore.bkl: Removed.
535
536 2010-11-24  Gabor Loki  <loki@webkit.org>
537
538         Reviewed by Csaba Osztrogonác.
539
540         Merge the usage of jumps and calls at ARM-JIT
541         https://bugs.webkit.org/show_bug.cgi?id=50008
542
543         Those JmpSrc objects which represent jumps (not calls) should point to
544         after the jump instruction.
545
546         * assembler/ARMAssembler.h:
547         (JSC::ARMAssembler::blx):
548         (JSC::ARMAssembler::loadBranchTarget):
549         (JSC::ARMAssembler::getAbsoluteJumpAddress):
550         (JSC::ARMAssembler::linkJump):
551         (JSC::ARMAssembler::relinkJump):
552         (JSC::ARMAssembler::linkCall):
553         (JSC::ARMAssembler::relinkCall):
554         (JSC::ARMAssembler::getRelocatedAddress):
555         (JSC::ARMAssembler::getDifferenceBetweenLabels):
556         (JSC::ARMAssembler::getCallReturnOffset):
557         * assembler/MacroAssemblerARM.h:
558         (JSC::MacroAssemblerARM::call):
559
560 2010-11-24  Carlos Garcia Campos  <cgarcia@igalia.com>
561
562         Reviewed by Xan Lopez.
563
564         [GTK] Optimize foldCase, toLower and toUpper methods in glib unicode backend
565         https://bugs.webkit.org/show_bug.cgi?id=48625
566
567         GLib methods use UTF-8 strings, so we have to convert from UTF-16 to
568         UTF-8 to perform the case operations and then convert back the result to
569         UTF-16. GLib conversion methods return a new allocated string, so we
570         have to memcpy the result into the destination buffer too. Using our
571         own methods to convert between UTF-8 and UTF-16 from wtf/unicode/UTF8.h
572         we don't need such memcpy, since they take an already allocated buffer
573         rather than returning a new one. There's another optimization for the
574         case when the destination buffer is not large enough. In that case,
575         methods should return the expected destination buffer size and are
576         called again with a new buffer. We can avoid the conversion to UTF-16 by
577         pre-calculating the required size for the destination buffer.
578
579         * wtf/unicode/glib/UnicodeGLib.cpp:
580         (WTF::Unicode::getUTF16LengthFromUTF8):
581         (WTF::Unicode::convertCase):
582         (WTF::Unicode::foldCase):
583         (WTF::Unicode::toLower):
584         (WTF::Unicode::toUpper):
585
586 2010-11-23  Patrick Gansterer  <paroga@webkit.org>
587
588         Reviewed by Sam Weinig.
589
590         Use WTF::StringHasher directly in JavaScriptCore
591         https://bugs.webkit.org/show_bug.cgi?id=49893
592
593         * profiler/CallIdentifier.h:
594         (JSC::CallIdentifier::Hash::hash):
595         * runtime/Identifier.cpp:
596         (JSC::IdentifierCStringTranslator::hash):
597         (JSC::IdentifierUCharBufferTranslator::hash):
598
599 2010-11-22  Patrick Gansterer  <paroga@webkit.org>
600
601         Reviewed by Sam Weinig.
602
603         Add WTF::FixedArray::size()
604         https://bugs.webkit.org/show_bug.cgi?id=49891
605
606         Add a method to get the size of a FixedArray.
607
608         * wtf/FixedArray.h:
609         (WTF::FixedArray::size):
610
611 2010-11-22  Patrick Gansterer  <paroga@webkit.org>
612
613         Reviewed by Adam Roben.
614
615         [WINCE] Set correct preprocessor definitions
616         https://bugs.webkit.org/show_bug.cgi?id=49887
617
618         * wtf/Platform.h:
619
620 2010-11-22  Adam Roben  <aroben@apple.com>
621
622         Use paths relative to $WebKitVSPropsRedirectionDir to access shared .vsprops files
623
624         Apple's Windows build allows placing header files and import libraries for WebKit's
625         dependencies (CoreGraphics, CFNetwork, SQLite, etc.) outside the source tree via the
626         $WebKitLibrariesDir environment variable. This is both required for production builds and
627         convenient for Apple-internal developer builds. Apple's production builds also require that
628         WebKit's shared .vsprops files be accessed relative to $WebKitLibrariesDir. In production
629         builds, the files are copied into that directory tree by the
630         WebKitLibraries/win/tools/WinTools.make file. In Apple-internal developer builds, the
631         copying is done by
632         JavaScriptCore/JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreGenerated.make.
633
634         This .vsprops copying is problematic in one very important case: when a developer updates
635         their source tree and then tries to build. Visual Studio only reads .vsprops files when a
636         project is first loaded. So, when Visual Studio is first opened after the .vsprops files are
637         updated, it reads in the old files that were already residing in $WebKitLibrariesDir. When a
638         build is started, JavaScriptCoreGenerated.make copies the new .vsprops files into
639         $WebKitLibrariesDir, but Visual Studio will not pick up the changes.  The rest of the build
640         will proceed with out-of-date .vsprops files, which will likely result in a build failure.
641
642         To fix this, we now use normal relative paths to access the .vsprops files in the source
643         tree rather than in $WebKitLibrariesDir, but prefix those paths with a new environment
644         variable, $WebKitVSPropsRedirectionDir. In developer builds, this environment variable is
645         unset, so the normal relative paths are used to read the .vsprops files out of the source
646         tree directly. In production builds, this environment variable is set to a fake directory
647         that will cause the .vsprops files in $WebKitLibrariesDir to be found when the relative path
648         is resolved.
649         
650         For example, JavaScriptCore.vcproj uses this path for FeatureDefines.vsprops:
651
652         $(WebKitVSPropsRedirectionDir)..\..\..\WebKitLibraries\win\tools\vsprops\FeatureDefines.vsprops
653
654         In developer builds, where $WebKitVSPropsRedirectionDir is unset, this will point to the
655         files in WebKitLibraries\win\tools\vsprops in the source tree. In production builds,
656         JavaScriptCore.make sets $WebKitVSPropsRedirectionDir to
657         "$(SRCROOT)\AppleInternal\tools\vsprops\OpenSource\1\2\3\", so the full path for
658         FeatureDefines.vsprops becomes:
659
660         $(SRCROOT)\AppleInternal\tools\vsprops\OpenSource\1\2\3\..\..\..\WebKitLibraries\win\tools\vsprops\FeatureDefines.vsprops
661
662         which resolves to:
663
664         $(SRCROOT)\AppleInternal\tools\vsprops\OpenSource\WebKitLibraries\win\tools\vsprops\FeatureDefines.vsprops
665
666         (We rely on the fact that Windows doesn't care whether the directories "1", "2", and "3"
667         actually exist since they are matched by an equal number of ".." path components.)
668
669         Note that Visual Studio still won't pick up changes made to .vsprops files while Visual
670         Studio is open, but that problem hasn't seemed to cause developers many headaches so far.
671
672         Fixes <http://webkit.org/b/49181> Windows build fails mysteriously when .vsprops files are
673         updated
674
675         Reviewed by Dave Hyatt.
676
677         * JavaScriptCore.vcproj/JavaScriptCore.make: Set $WebKitVSPropsRedirectionDir so that
678         production builds can find the .vsprops files.
679
680         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreGenerated.make: Stopy copying the
681         .vsprops files. It isn't needed anymore.
682
683         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
684         * JavaScriptCore.vcproj/WTF/WTF.vcproj:
685         * JavaScriptCore.vcproj/jsc/jsc.vcproj:
686         * JavaScriptCore.vcproj/testapi/testapi.vcproj:
687         Changed to use paths relative to $WebKitVSPropsRedirectionDir to access shared .vsprops
688         files.
689
690 2010-11-19  Peter Varga  <pvarga@inf.u-szeged.hu>
691
692         Reviewed by Gavin Barraclough.
693
694         YARR JIT should fallback to YARR Interpreter instead of PCRE.
695         https://bugs.webkit.org/show_bug.cgi?id=46719
696
697         Remove the ENABLE_YARR macro and the option of matching regular
698         expressions with PCRE from JavaScriptCore.
699
700         * runtime/JSGlobalData.h:
701         * runtime/RegExp.cpp:
702         (JSC::RegExp::compile):
703         (JSC::RegExp::match):
704         * tests/mozilla/expected.html:
705         * wtf/Platform.h:
706         * yarr/RegexCompiler.cpp:
707         * yarr/RegexCompiler.h:
708         * yarr/RegexInterpreter.cpp:
709         (JSC::Yarr::byteCompileRegex):
710         * yarr/RegexInterpreter.h:
711         * yarr/RegexJIT.cpp:
712         (JSC::Yarr::jitCompileRegex):
713         * yarr/RegexJIT.h:
714         (JSC::Yarr::RegexCodeBlock::RegexCodeBlock):
715         (JSC::Yarr::RegexCodeBlock::~RegexCodeBlock):
716         (JSC::Yarr::RegexCodeBlock::getFallback):
717         (JSC::Yarr::RegexCodeBlock::isFallback):
718         (JSC::Yarr::RegexCodeBlock::setFallback):
719         (JSC::Yarr::executeRegex):
720         * yarr/RegexParser.h:
721         * yarr/RegexPattern.h:
722
723 2010-11-20  Kwang Yul Seo  <skyul@company100.net>
724
725         Reviewed by David Kilzer.
726
727         [BREWMP] Replace DBGPRINTF and DBGPRINTF_FATAL with dbg_Message
728         https://bugs.webkit.org/show_bug.cgi?id=49520
729
730         DBGPRINTF and DBGPRINTF_FATAL macros are prohibited in Mod1. Use dbg_Message instead.
731
732         * wtf/Assertions.cpp:
733         * wtf/Assertions.h:
734
735 2010-11-20  Gabor Loki  <loki@webkit.org>
736
737         Reviewed by Gavin Barraclough.
738
739         Support JIT_OPTIMIZE_MOD on Thumb-2
740         https://bugs.webkit.org/show_bug.cgi?id=49432
741
742         Rewrite the soft modulo operation into macroassembler form, and move it
743         to JSValue32_64 section.
744         Add support for soft modulo on Thumb-2 JIT also.
745
746         * assembler/ARMv7Assembler.h:
747         (JSC::ARMv7Assembler::clz):
748         * assembler/MacroAssemblerARM.h:
749         (JSC::MacroAssemblerARM::countLeadingZeros32):
750         (JSC::MacroAssemblerARM::relativeTableJump):
751         * assembler/MacroAssemblerARMv7.h:
752         (JSC::MacroAssemblerARMv7::countLeadingZeros32):
753         (JSC::MacroAssemblerARMv7::relativeTableJump):
754         * jit/JITArithmetic.cpp:
755         (JSC::JIT::emit_op_mod):
756         * jit/JITOpcodes.cpp:
757         (JSC::JIT::privateCompileCTIMachineTrampolines):
758         * jit/JITOpcodes32_64.cpp:
759         (JSC::JIT::softModulo):
760         * jit/JITStubs.cpp:
761         (JSC::JITThunks::JITThunks):
762         * wtf/Platform.h:
763
764 2010-11-20  David Kilzer  <ddkilzer@apple.com>
765
766         <http://webkit.org/b/49848> Make it possible to display the last character of a secure text field unobscured
767
768         Reviewed by Darin Adler.
769
770         * JavaScriptCore.exp:
771         * wtf/text/StringImpl.cpp:
772         (WTF::StringImpl::secure): Added argument that controls whether
773         the last character is obscured or not.  Implemented behavior.
774         * wtf/text/StringImpl.h:
775         (WTF::StringImpl::LastCharacterBehavior): Added enum.
776         (WTF::StringImpl::secure): Updated method signature.
777
778 2010-11-19  William Chan  <willchan@chromium.org>
779
780         Reviewed by David Levin.
781
782         Add USE(CHROMIUM_NET)
783
784         Indicates the use of Chromium's network stack.  Chromium's network
785         stack performs better when it has full view of all resource requests,
786         so USE(CHROMIUM_NET) can be used to bypass throttles.
787
788         https://bugs.webkit.org/show_bug.cgi?id=49778
789
790         * wtf/Platform.h:
791
792 2010-11-19  Steve Falkenburg  <sfalken@apple.com>
793
794         Reviewed by Adam Roben.
795
796         Add Debug_Cairo_CFLite and Release_Cairo_CFLite configurations for all vcproj files
797         https://bugs.webkit.org/show_bug.cgi?id=49819
798
799         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
800         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreGenerated.vcproj:
801         * JavaScriptCore.vcproj/WTF/WTF.vcproj:
802         * JavaScriptCore.vcproj/WTF/WTFCommon.vsprops:
803         * JavaScriptCore.vcproj/jsc/jsc.vcproj:
804         * JavaScriptCore.vcproj/testapi/testapi.vcproj:
805
806 2010-11-19  Oliver Hunt  <oliver@apple.com>
807
808         Reviewed by Geoffrey Garen.
809
810         Don't check for constant registers when we can guarantee that the register won't be in the constant pool
811         https://bugs.webkit.org/show_bug.cgi?id=49814
812
813         Add uncheckedR(int) to CallFrame, and replace all the uses of r() with uncheckedR()
814         when we can guarantee that the register is not referring to a constant.
815         This makes the interpreter about 0.5% faster, and makes the CallFrame initialisation
816         logic correct when we're using a faked callframe (as in the case of the globalExec).
817
818         * bytecode/CodeBlock.cpp:
819         (JSC::CodeBlock::createActivation):
820         * debugger/DebuggerCallFrame.cpp:
821         (JSC::DebuggerCallFrame::thisObject):
822         * interpreter/CallFrame.h:
823         (JSC::ExecState::uncheckedR):
824         * interpreter/Interpreter.cpp:
825         (JSC::Interpreter::resolve):
826         (JSC::Interpreter::resolveSkip):
827         (JSC::Interpreter::resolveGlobal):
828         (JSC::Interpreter::resolveGlobalDynamic):
829         (JSC::Interpreter::resolveBase):
830         (JSC::Interpreter::resolveBaseAndProperty):
831         (JSC::Interpreter::callEval):
832         (JSC::Interpreter::unwindCallFrame):
833         (JSC::Interpreter::throwException):
834         (JSC::Interpreter::execute):
835         (JSC::Interpreter::executeCall):
836         (JSC::Interpreter::executeConstruct):
837         (JSC::Interpreter::prepareForRepeatCall):
838         (JSC::Interpreter::createExceptionScope):
839         (JSC::Interpreter::privateExecute):
840         * jit/JITStubs.cpp:
841         (JSC::DEFINE_STUB_FUNCTION):
842         * runtime/JSActivation.cpp:
843         (JSC::JSActivation::argumentsGetter):
844
845 2010-11-19  Steve Falkenburg  <sfalken@apple.com>
846
847         Reviewed by Darin Adler.
848
849         Normalize Cairo/CFLite project/solution configuration names
850         https://bugs.webkit.org/show_bug.cgi?id=49818
851
852         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
853         * JavaScriptCore.vcproj/jsc/jsc.vcproj:
854         * JavaScriptCore.vcproj/testapi/testapi.vcproj:
855
856 2010-11-18  Steve Falkenburg  <sfalken@apple.com>
857
858         Reviewed by Adam Roben.
859
860         Windows vcproj configuration names should be normalized across projects
861         https://bugs.webkit.org/show_bug.cgi?id=49776
862
863         * JavaScriptCore.vcproj/JavaScriptCore.sln:
864         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreGenerated.vcproj:
865         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreGeneratedCommon.vsprops: Added.
866         * JavaScriptCore.vcproj/JavaScriptCoreSubmit.sln:
867
868 2010-11-19  Patrick Gansterer  <paroga@webkit.org>
869
870         Unreviewed, build fix after r72360.
871
872         * bytecode/CodeBlock.h:
873         (JSC::CodeBlock::bytecodeOffset):
874
875 2010-11-18  Gavin Barraclough  <barraclough@apple.com>
876
877         Rubber stamped by Geoff Garen.
878
879         Bug 49577 - Function.prototype should be non-configurable
880
881         Ooops, Function.prototype should not be enumerable!
882
883         * runtime/JSFunction.cpp:
884         (JSC::JSFunction::getOwnPropertySlot):
885
886 2010-11-18  Gavin Barraclough  <barraclough@apple.com>
887
888         Reviewed by Oliver Hunt.
889
890         Bug 49708 - Stop recompiling functions to regenerate exception info.
891
892         Instead only hold info as necessary – keep divot info is the inspector
893         is enabled, line number info is debugging or profiling, and handler
894         info for functions with try/catch.
895
896         * bytecode/CodeBlock.cpp:
897         (JSC::CodeBlock::dumpStatistics):
898         (JSC::CodeBlock::CodeBlock):
899         (JSC::CodeBlock::lineNumberForBytecodeOffset):
900         (JSC::CodeBlock::expressionRangeForBytecodeOffset):
901         (JSC::CodeBlock::shrinkToFit):
902         * bytecode/CodeBlock.h:
903         (JSC::CodeBlock::bytecodeOffset):
904         (JSC::CodeBlock::addExpressionInfo):
905         (JSC::CodeBlock::addLineInfo):
906         (JSC::CodeBlock::hasExpressionInfo):
907         (JSC::CodeBlock::hasLineInfo):
908         (JSC::CodeBlock::needsCallReturnIndices):
909         (JSC::CodeBlock::callReturnIndexVector):
910         * bytecode/SamplingTool.cpp:
911         (JSC::SamplingTool::dump):
912         * bytecompiler/BytecodeGenerator.cpp:
913         (JSC::BytecodeGenerator::generate):
914         (JSC::BytecodeGenerator::BytecodeGenerator):
915         * bytecompiler/BytecodeGenerator.h:
916         (JSC::BytecodeGenerator::emitNode):
917         (JSC::BytecodeGenerator::emitNodeInConditionContext):
918         (JSC::BytecodeGenerator::emitExpressionInfo):
919         (JSC::BytecodeGenerator::addLineInfo):
920         * interpreter/Interpreter.cpp:
921         (JSC::Interpreter::unwindCallFrame):
922         (JSC::appendSourceToError):
923         (JSC::Interpreter::throwException):
924         (JSC::Interpreter::privateExecute):
925         (JSC::Interpreter::retrieveLastCaller):
926         * interpreter/Interpreter.h:
927         * jit/JIT.cpp:
928         (JSC::JIT::privateCompile):
929         * jit/JITStubs.cpp:
930         (JSC::jitThrow):
931         (JSC::DEFINE_STUB_FUNCTION):
932         * runtime/Collector.cpp:
933         (JSC::Heap::markRoots):
934         * runtime/Executable.cpp:
935         (JSC::EvalExecutable::compileInternal):
936         (JSC::ProgramExecutable::compileInternal):
937         (JSC::FunctionExecutable::compileForCallInternal):
938         (JSC::FunctionExecutable::compileForConstructInternal):
939         * runtime/Executable.h:
940         * runtime/JSGlobalData.cpp:
941         (JSC::JSGlobalData::JSGlobalData):
942         * runtime/JSGlobalData.h:
943         (JSC::JSGlobalData::usingAPI):
944         * runtime/JSGlobalObject.h:
945         (JSC::JSGlobalObject::supportsRichSourceInfo):
946         (JSC::JSGlobalObject::globalData):
947
948 2010-11-18  Adam Roben  <aroben@apple.com>
949
950         Add a script to delete manifest-related files when they are older than
951         any .vsprops file
952
953         Changes to .vsprops files can cause the manifest files to become
954         invalid, and Visual Studio doesn't always figure out that it needs to
955         rebuild them.
956
957         Reviewed by Sam Weinig.
958
959         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreGenerated.make:
960         Call the new script.
961
962         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreGenerated.vcproj:
963         Added the new script.
964
965         * JavaScriptCore.vcproj/JavaScriptCore/react-to-vsprops-changes.py: Added.
966         (file_modification_times): Generator to return the modification time of
967         each file in a directory hierarchy.
968         (main): Get the modification time of the newest vsprops file, then find
969         all manifest-related files in the obj directory. Delete all
970         manifest-related files that are older than the newest vsprops file.
971
972 2010-11-18  Mark Rowe  <mrowe@apple.com>
973
974         Rubber-stamped by Adam Roben.
975
976         <rdar://problem/8602509&8602717&8602724> Enable compaction support.
977
978         * Configurations/JavaScriptCore.xcconfig:
979
980 2010-11-18  Gavin Barraclough  <barraclough@apple.com>
981
982         Reviewed by Oliver Hunt.
983
984         Bug 49635 - Profiler implementation is fragile
985
986         The profile presently requires the exception handling mechanism to explicitly
987         remove all stack frames that are exited during the exception unwind mechanism.
988         This is fragile in a number of ways:
989           * We have to change bytecode register allocation when compiling code to run
990             when profiling, to preserve the callee function (this is also required to
991             call did_call after the call has returned).
992           * In the JIT we have to maintain additional data structures
993             (CodeBlock::RareData::m_functionRegisterInfos) to map back to the register
994             containing the callee.
995           * In the interpreter we use 'magic values' to offset into the instruction
996             stream to rediscover the register containing the function.
997
998         Instead, move profiling into the head and tail of functions.
999           * This correctly accounts the cost of the call itself to the caller.
1000           * This allows us to access the callee function object from the callframe.
1001           * This means that at the point a call is made we can track the stack depth
1002             on the ProfileNode.
1003           * When unwinding we can simply report the depth at which the exception is
1004             being handled - all call frames above this level are freed.
1005
1006         * bytecode/CodeBlock.cpp:
1007         (JSC::CodeBlock::shrinkToFit):
1008         * bytecode/CodeBlock.h:
1009         (JSC::CodeBlock::bytecodeOffset):
1010         (JSC::CodeBlock::methodCallLinkInfo):
1011         * bytecompiler/BytecodeGenerator.cpp:
1012         (JSC::BytecodeGenerator::emitCall):
1013         (JSC::BytecodeGenerator::emitCallVarargs):
1014         * interpreter/Interpreter.cpp:
1015         (JSC::Interpreter::unwindCallFrame):
1016         (JSC::Interpreter::throwException):
1017         (JSC::Interpreter::execute):
1018         (JSC::Interpreter::executeCall):
1019         (JSC::Interpreter::executeConstruct):
1020         (JSC::Interpreter::privateExecute):
1021         * jit/JITStubs.cpp:
1022         (JSC::DEFINE_STUB_FUNCTION):
1023         * profiler/Profile.cpp:
1024         (JSC::Profile::Profile):
1025         * profiler/ProfileGenerator.cpp:
1026         (JSC::ProfileGenerator::addParentForConsoleStart):
1027         (JSC::ProfileGenerator::willExecute):
1028         (JSC::ProfileGenerator::didExecute):
1029         (JSC::ProfileGenerator::exceptionUnwind):
1030         (JSC::ProfileGenerator::stopProfiling):
1031         * profiler/ProfileGenerator.h:
1032         * profiler/ProfileNode.cpp:
1033         (JSC::ProfileNode::ProfileNode):
1034         (JSC::ProfileNode::willExecute):
1035         * profiler/ProfileNode.h:
1036         (JSC::ProfileNode::create):
1037         (JSC::ProfileNode::callerCallFrame):
1038         * profiler/Profiler.cpp:
1039         (JSC::dispatchFunctionToProfiles):
1040         (JSC::Profiler::_willExecute):
1041         (JSC::Profiler::_didExecute):
1042         (JSC::Profiler::exceptionUnwind):
1043         * profiler/Profiler.h:
1044
1045 2010-11-18  Steve Falkenburg  <sfalken@apple.com>
1046
1047         Reviewed by Adam Roben.
1048
1049         Remove leftover Windows Debug_Internal configurations
1050         https://bugs.webkit.org/show_bug.cgi?id=49758
1051
1052         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
1053         * JavaScriptCore.vcproj/WTF/WTF.vcproj:
1054         * JavaScriptCore.vcproj/jsc/jsc.vcproj:
1055         * JavaScriptCore.vcproj/testapi/testapi.vcproj:
1056
1057 2010-11-18  Chao-ying Fu  <fu@mips.com>
1058
1059         Reviewed by Csaba Osztrogonác.
1060
1061         Avoid increasing required alignment of target type warning
1062         https://bugs.webkit.org/show_bug.cgi?id=43963
1063
1064         * runtime/UString.h:
1065         (JSC::UStringHash::equal):
1066         * wtf/StdLibExtras.h:
1067
1068 2010-11-17  Sam Weinig  <sam@webkit.org>
1069
1070         Reviewed by Anders Carlsson.
1071
1072         Add stubbed out ScrollAnimator for the Mac
1073         https://bugs.webkit.org/show_bug.cgi?id=49678
1074
1075         * wtf/Platform.h: Enable SMOOTH_SCROLLING on the Mac, this has no
1076         change in behavior at the moment.
1077
1078 2010-11-17  David Kilzer  <ddkilzer@apple.com>
1079
1080         <http://webkit.org/b/49634> Make overflow guards in WTF::String::utf8 explicit
1081
1082         Reviewed by Darin Adler.
1083
1084         Add an explicit overflow check prior to allocating our buffer,
1085         rather than implicitly relying on the guard in convertUTF16ToUTF8.
1086
1087         * wtf/text/WTFString.cpp:
1088         (WTF::String::utf8):
1089
1090 2010-11-17  Sheriff Bot  <webkit.review.bot@gmail.com>
1091
1092         Unreviewed, rolling out r72197.
1093         http://trac.webkit.org/changeset/72197
1094         https://bugs.webkit.org/show_bug.cgi?id=49661
1095
1096         broke fast/regex/test1.html (Requested by stampho on #webkit).
1097
1098         * runtime/JSGlobalData.h:
1099         * runtime/RegExp.cpp:
1100         (JSC::RegExpRepresentation::~RegExpRepresentation):
1101         (JSC::RegExp::compile):
1102         (JSC::RegExp::match):
1103         * tests/mozilla/expected.html:
1104         * wtf/Platform.h:
1105         * yarr/RegexCompiler.cpp:
1106         * yarr/RegexCompiler.h:
1107         * yarr/RegexInterpreter.cpp:
1108         * yarr/RegexInterpreter.h:
1109         * yarr/RegexJIT.cpp:
1110         (JSC::Yarr::jitCompileRegex):
1111         * yarr/RegexJIT.h:
1112         (JSC::Yarr::RegexCodeBlock::RegexCodeBlock):
1113         (JSC::Yarr::RegexCodeBlock::~RegexCodeBlock):
1114         (JSC::Yarr::RegexCodeBlock::getFallback):
1115         (JSC::Yarr::RegexCodeBlock::setFallback):
1116         (JSC::Yarr::executeRegex):
1117         * yarr/RegexParser.h:
1118         * yarr/RegexPattern.h:
1119
1120 2010-11-17  Peter Varga  <pvarga@inf.u-szeged.hu>
1121
1122         Reviewed by Gavin Barraclough.
1123
1124         YARR JIT should fallback to YARR Interpreter instead of PCRE.
1125         https://bugs.webkit.org/show_bug.cgi?id=46719
1126
1127         Remove the ENABLE_YARR macro and the option of matching regular
1128         expressions with PCRE from JavaScriptCore.
1129
1130         * runtime/JSGlobalData.h:
1131         * runtime/RegExp.cpp:
1132         (JSC::RegExp::compile):
1133         (JSC::RegExp::match):
1134         * tests/mozilla/expected.html:
1135         * wtf/Platform.h:
1136         * yarr/RegexCompiler.cpp:
1137         * yarr/RegexCompiler.h:
1138         * yarr/RegexInterpreter.cpp:
1139         (JSC::Yarr::byteCompileRegex):
1140         * yarr/RegexInterpreter.h:
1141         * yarr/RegexJIT.cpp:
1142         (JSC::Yarr::jitCompileRegex):
1143         * yarr/RegexJIT.h:
1144         (JSC::Yarr::RegexCodeBlock::RegexCodeBlock):
1145         (JSC::Yarr::RegexCodeBlock::~RegexCodeBlock):
1146         (JSC::Yarr::RegexCodeBlock::getFallback):
1147         (JSC::Yarr::RegexCodeBlock::isFallback):
1148         (JSC::Yarr::RegexCodeBlock::setFallback):
1149         (JSC::Yarr::executeRegex):
1150         * yarr/RegexParser.h:
1151         * yarr/RegexPattern.h:
1152
1153 2010-11-17  Peter Varga  <pvarga@inf.u-szeged.hu>
1154
1155         Reviewed by Gavin Barraclough.
1156
1157         Extend YARR Interpreter with beginning character look-up optimization
1158         https://bugs.webkit.org/show_bug.cgi?id=45751
1159
1160         Add beginning character look-up optimization which sets the start
1161         index to the first possible successful pattern match.
1162         Extend YARR Interpreter with lookupForBeginChars function which
1163         implements the beginning character look-up optimization.
1164
1165         * yarr/RegexInterpreter.cpp:
1166         (JSC::Yarr::Interpreter::InputStream::readPair):
1167         (JSC::Yarr::Interpreter::InputStream::isNotAvailableInput):
1168         (JSC::Yarr::Interpreter::lookupForBeginChars):
1169         (JSC::Yarr::Interpreter::matchDisjunction):
1170         (JSC::Yarr::Interpreter::interpret):
1171         * yarr/RegexInterpreter.h:
1172         (JSC::Yarr::BytecodePattern::BytecodePattern):
1173
1174 2010-11-17  Alexis Menard  <alexis.menard@nokia.com>, Simon Hausmann  <simon.hausmann@nokia.com>
1175
1176         Reviewed by Kenneth Christiansen, Tor Arne Vestbø.
1177
1178         [Qt] Add support for use GStreamer with the Qt build
1179
1180         Enable the build/inclusion of the wtf/QObject convenience classes.
1181
1182         * JavaScriptCore.pri:
1183         * wtf/wtf.pri:
1184
1185 2010-11-17  Peter Varga  <pvarga@inf.u-szeged.hu>
1186
1187         Reviewed by Gavin Barraclough.
1188
1189         Collect the beginning characters in a RegExp pattern for look-up
1190         optimization
1191         https://bugs.webkit.org/show_bug.cgi?id=45748
1192
1193         Extend the YARR's parser with an algorithm which collects the potential
1194         beginning characters from a RegExp pattern for later look-up optimization.
1195
1196         * yarr/RegexCompiler.cpp:
1197         (JSC::Yarr::BeginCharHelper::BeginCharHelper):
1198         (JSC::Yarr::BeginCharHelper::addBeginChar):
1199         (JSC::Yarr::BeginCharHelper::merge):
1200         (JSC::Yarr::BeginCharHelper::addCharacter):
1201         (JSC::Yarr::BeginCharHelper::linkHotTerms):
1202         (JSC::Yarr::RegexPatternConstructor::RegexPatternConstructor):
1203         (JSC::Yarr::RegexPatternConstructor::addBeginTerm):
1204         (JSC::Yarr::RegexPatternConstructor::setupDisjunctionBeginTerms):
1205         (JSC::Yarr::RegexPatternConstructor::setupAlternativeBeginTerms):
1206         (JSC::Yarr::RegexPatternConstructor::setupBeginChars):
1207         (JSC::Yarr::compileRegex):
1208         * yarr/RegexPattern.h:
1209         (JSC::Yarr::TermChain::TermChain):
1210         (JSC::Yarr::BeginChar::BeginChar):
1211         (JSC::Yarr::RegexPattern::RegexPattern):
1212         (JSC::Yarr::RegexPattern::reset):
1213
1214 2010-11-17  Sheriff Bot  <webkit.review.bot@gmail.com>
1215
1216         Unreviewed, rolling out r72160.
1217         http://trac.webkit.org/changeset/72160
1218         https://bugs.webkit.org/show_bug.cgi?id=49646
1219
1220         Broke lots of fast/profiler tests, among others (Requested by
1221         aroben on #webkit).
1222
1223         * bytecode/CodeBlock.cpp:
1224         (JSC::CodeBlock::dump):
1225         (JSC::CodeBlock::functionRegisterForBytecodeOffset):
1226         (JSC::CodeBlock::shrinkToFit):
1227         * bytecode/CodeBlock.h:
1228         (JSC::CodeBlock::addFunctionRegisterInfo):
1229         * bytecode/Opcode.h:
1230         * bytecompiler/BytecodeGenerator.cpp:
1231         (JSC::BytecodeGenerator::BytecodeGenerator):
1232         (JSC::BytecodeGenerator::emitCall):
1233         (JSC::BytecodeGenerator::emitCallVarargs):
1234         (JSC::BytecodeGenerator::emitReturn):
1235         (JSC::BytecodeGenerator::emitConstruct):
1236         * bytecompiler/BytecodeGenerator.h:
1237         (JSC::CallArguments::profileHookRegister):
1238         * bytecompiler/NodesCodegen.cpp:
1239         (JSC::CallArguments::CallArguments):
1240         * interpreter/Interpreter.cpp:
1241         (JSC::Interpreter::unwindCallFrame):
1242         (JSC::Interpreter::throwException):
1243         (JSC::Interpreter::execute):
1244         (JSC::Interpreter::executeCall):
1245         (JSC::Interpreter::executeConstruct):
1246         (JSC::Interpreter::privateExecute):
1247         * jit/JIT.cpp:
1248         (JSC::JIT::privateCompileMainPass):
1249         * jit/JIT.h:
1250         * jit/JITOpcodes.cpp:
1251         (JSC::JIT::emit_op_profile_will_call):
1252         (JSC::JIT::emit_op_profile_did_call):
1253         * jit/JITOpcodes32_64.cpp:
1254         (JSC::JIT::emit_op_profile_will_call):
1255         (JSC::JIT::emit_op_profile_did_call):
1256         * jit/JITStubs.cpp:
1257         (JSC::DEFINE_STUB_FUNCTION):
1258         * jit/JITStubs.h:
1259         * profiler/Profile.cpp:
1260         (JSC::Profile::Profile):
1261         * profiler/ProfileGenerator.cpp:
1262         (JSC::ProfileGenerator::addParentForConsoleStart):
1263         (JSC::ProfileGenerator::willExecute):
1264         (JSC::ProfileGenerator::didExecute):
1265         (JSC::ProfileGenerator::stopProfiling):
1266         * profiler/ProfileGenerator.h:
1267         * profiler/ProfileNode.cpp:
1268         (JSC::ProfileNode::ProfileNode):
1269         (JSC::ProfileNode::willExecute):
1270         * profiler/ProfileNode.h:
1271         (JSC::ProfileNode::create):
1272         (JSC::ProfileNode::operator==):
1273         * profiler/Profiler.cpp:
1274         (JSC::dispatchFunctionToProfiles):
1275         (JSC::Profiler::willExecute):
1276         (JSC::Profiler::didExecute):
1277         * profiler/Profiler.h:
1278
1279 2010-11-16  Gavin Barraclough  <barraclough@apple.com>
1280
1281         Reviewed by Sam Weinig.
1282
1283         Bug 49635 - Profiler implementation is fragile
1284
1285         The profile presently requires the exception handling mechanism to explicitly
1286         remove all stack frames that are exited during the exception unwind mechanism.
1287         This is fragile in a number of ways:
1288           * We have to change bytecode register allocation when compiling code to run
1289             when profiling, to preserve the callee function (this is also required to
1290             call did_call after the call has returned).
1291           * In the JIT we have to maintain additional data structures
1292             (CodeBlock::RareData::m_functionRegisterInfos) to map back to the register
1293             containing the callee.
1294           * In the interpreter we use 'magic values' to offset into the instruction
1295             stream to rediscover the register containing the function.
1296
1297         Instead, move profiling into the head and tail of functions.
1298           * This correctly accounts the cost of the call itself to the caller.
1299           * This allows us to access the callee function object from the callframe.
1300           * This means that at the point a call is made we can track the stack depth
1301             on the ProfileNode.
1302           * When unwinding we can simply report the depth at which the exception is
1303             being handled - all call frames above this level are freed.
1304
1305         * JavaScriptCore.xcodeproj/project.pbxproj:
1306         * bytecode/CodeBlock.cpp:
1307         (JSC::CodeBlock::dump):
1308         (JSC::CodeBlock::shrinkToFit):
1309         * bytecode/CodeBlock.h:
1310         (JSC::CodeBlock::bytecodeOffset):
1311         (JSC::CodeBlock::methodCallLinkInfo):
1312         * bytecode/Opcode.h:
1313         * bytecompiler/BytecodeGenerator.cpp:
1314         (JSC::BytecodeGenerator::BytecodeGenerator):
1315         (JSC::BytecodeGenerator::emitCall):
1316         (JSC::BytecodeGenerator::emitCallVarargs):
1317         (JSC::BytecodeGenerator::emitReturn):
1318         (JSC::BytecodeGenerator::emitConstruct):
1319         * bytecompiler/BytecodeGenerator.h:
1320         (JSC::CallArguments::count):
1321         * bytecompiler/NodesCodegen.cpp:
1322         (JSC::CallArguments::CallArguments):
1323         * interpreter/Interpreter.cpp:
1324         (JSC::ProfileHostCall::ProfileHostCall):
1325         (JSC::ProfileHostCall::~ProfileHostCall):
1326         (JSC::Interpreter::unwindCallFrame):
1327         (JSC::Interpreter::throwException):
1328         (JSC::Interpreter::execute):
1329         (JSC::Interpreter::executeCall):
1330         (JSC::Interpreter::executeConstruct):
1331         (JSC::Interpreter::privateExecute):
1332         * jit/JIT.cpp:
1333         (JSC::JIT::privateCompileMainPass):
1334         * jit/JIT.h:
1335         * jit/JITOpcodes.cpp:
1336         (JSC::JIT::emit_op_profile_has_called):
1337         (JSC::JIT::emit_op_profile_will_return):
1338         * jit/JITOpcodes32_64.cpp:
1339         (JSC::JIT::emit_op_profile_has_called):
1340         (JSC::JIT::emit_op_profile_will_return):
1341         * jit/JITStubs.cpp:
1342         (JSC::DEFINE_STUB_FUNCTION):
1343         * jit/JITStubs.h:
1344         * profiler/Profile.cpp:
1345         (JSC::Profile::Profile):
1346         * profiler/ProfileGenerator.cpp:
1347         (JSC::ProfileGenerator::addParentForConsoleStart):
1348         (JSC::ProfileGenerator::willExecute):
1349         (JSC::ProfileGenerator::didExecute):
1350         (JSC::ProfileGenerator::exceptionUnwind):
1351         (JSC::ProfileGenerator::stopProfiling):
1352         * profiler/ProfileGenerator.h:
1353         * profiler/ProfileNode.cpp:
1354         (JSC::ProfileNode::ProfileNode):
1355         (JSC::ProfileNode::willExecute):
1356         * profiler/ProfileNode.h:
1357         (JSC::ProfileNode::create):
1358         (JSC::ProfileNode::operator==):
1359         (JSC::ProfileNode::exec):
1360         * profiler/Profiler.cpp:
1361         (JSC::dispatchFunctionToProfiles):
1362         (JSC::Profiler::hasCalled):
1363         (JSC::Profiler::willEvaluate):
1364         (JSC::Profiler::willReturn):
1365         (JSC::Profiler::didEvaluate):
1366         (JSC::Profiler::exceptionUnwind):
1367         * profiler/Profiler.h:
1368
1369 2010-11-16  Brian Weinstein  <bweinstein@apple.com>
1370
1371         Reviewed by Adam Roben and Steve Falkenburg.
1372
1373         Touch Platform.h to force a rebuild for Windows.
1374
1375         * wtf/Platform.h:
1376
1377 2010-11-16  Steve Falkenburg  <sfalken@apple.com>
1378
1379         Reviewed by Adam Roben.
1380
1381         Disable LTCG for Windows Release builds. Add new Release_LTCG configuration.
1382         https://bugs.webkit.org/show_bug.cgi?id=49632
1383
1384         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
1385         * JavaScriptCore.vcproj/WTF/WTF.vcproj:
1386         * JavaScriptCore.vcproj/jsc/jsc.vcproj:
1387         * JavaScriptCore.vcproj/testapi/testapi.vcproj:
1388
1389 2010-11-16  Peter Varga  <pvarga@inf.u-szeged.hu>
1390
1391         Reviewed by Gavin Barraclough.
1392
1393         The number of recursive match calls isn't limited in YARR Interpreter
1394         https://bugs.webkit.org/show_bug.cgi?id=47906
1395
1396         Check the number of the matchDisjunction recursive calls to avoid unbounded
1397         recursion.
1398         Now the matchDisjunction function returns JSRegExpResult instead of bool.
1399         The JSRegExpResult enum contains the result of matching or the error code
1400         of the failure (like HitLimit) which terminates the matching.
1401         The error codes are based on pcre's jsRegExpExecute error codes.
1402
1403         * yarr/RegexInterpreter.cpp:
1404         (JSC::Yarr::Interpreter::parenthesesDoBacktrack):
1405         (JSC::Yarr::Interpreter::matchParentheses):
1406         (JSC::Yarr::Interpreter::backtrackParentheses):
1407         (JSC::Yarr::Interpreter::matchDisjunction):
1408         (JSC::Yarr::Interpreter::matchNonZeroDisjunction):
1409         (JSC::Yarr::Interpreter::interpret):
1410         (JSC::Yarr::Interpreter::Interpreter):
1411         * yarr/RegexInterpreter.h:
1412
1413 2010-11-16  Brian Weinstein  <bweinstein@apple.com>
1414
1415         Rest of the Windows build fix.
1416
1417         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
1418
1419 2010-11-16  Gavin Barraclough  <barraclough@apple.com>
1420
1421         Windows build fix pt 1.
1422
1423         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
1424
1425 2010-11-16  Gavin Barraclough  <barraclough@apple.com>
1426
1427         Reviewed by Oliver Hunt.
1428
1429         https://bugs.webkit.org/show_bug.cgi?id=49606
1430
1431         The bug here is that we read the prototype from the RHS argument using a regular
1432         op_get_by_id before op_instanceof has checked that this is an object implementing
1433         HasInstance. This incorrect behaviour gives rise to further unnecessary complexity
1434         in the code base, since we have additional logic (implemented using the
1435         GetByIdExceptionInfo data structures on CodeBlock) to convert not an object errors
1436         from the get_by_id into invalid parameter errors. Having fixed this bug this code
1437         is all redundant, since in these cases the get_by_id will never have been reached.
1438
1439         * bytecode/CodeBlock.cpp:
1440         (JSC::CodeBlock::dump):
1441         (JSC::CodeBlock::shrinkToFit):
1442         * bytecode/CodeBlock.h:
1443         (JSC::CodeBlock::addExpressionInfo):
1444         * bytecode/Opcode.h:
1445         * bytecompiler/BytecodeGenerator.cpp:
1446         (JSC::BytecodeGenerator::BytecodeGenerator):
1447         (JSC::BytecodeGenerator::emitCheckHasInstance):
1448         * bytecompiler/BytecodeGenerator.h:
1449         * bytecompiler/NodesCodegen.cpp:
1450         (JSC::InstanceOfNode::emitBytecode):
1451         * interpreter/Interpreter.cpp:
1452         (JSC::Interpreter::throwException):
1453         (JSC::Interpreter::privateExecute):
1454         * jit/JIT.cpp:
1455         (JSC::JIT::privateCompileMainPass):
1456         (JSC::JIT::privateCompileSlowCases):
1457         * jit/JIT.h:
1458         * jit/JITOpcodes.cpp:
1459         (JSC::JIT::emit_op_check_has_instance):
1460         (JSC::JIT::emit_op_instanceof):
1461         (JSC::JIT::emitSlow_op_check_has_instance):
1462         (JSC::JIT::emitSlow_op_instanceof):
1463         * jit/JITOpcodes32_64.cpp:
1464         (JSC::JIT::emit_op_check_has_instance):
1465         (JSC::JIT::emit_op_instanceof):
1466         (JSC::JIT::emitSlow_op_check_has_instance):
1467         (JSC::JIT::emitSlow_op_instanceof):
1468         * jit/JITStubs.cpp:
1469         (JSC::DEFINE_STUB_FUNCTION):
1470         * jit/JITStubs.h:
1471         * runtime/ExceptionHelpers.cpp:
1472         (JSC::createInterruptedExecutionException):
1473         (JSC::createTerminatedExecutionException):
1474         (JSC::createUndefinedVariableError):
1475         (JSC::createNotAFunctionError):
1476         (JSC::createNotAnObjectError):
1477         * runtime/ExceptionHelpers.h:
1478         * runtime/JSGlobalData.cpp:
1479         (JSC::JSGlobalData::JSGlobalData):
1480         * runtime/JSGlobalData.h:
1481         * runtime/JSNotAnObject.cpp:
1482         (JSC::JSNotAnObject::toPrimitive):
1483         (JSC::JSNotAnObject::getPrimitiveNumber):
1484         (JSC::JSNotAnObject::toBoolean):
1485         (JSC::JSNotAnObject::toNumber):
1486         (JSC::JSNotAnObject::toString):
1487         (JSC::JSNotAnObject::toObject):
1488         (JSC::JSNotAnObject::getOwnPropertySlot):
1489         (JSC::JSNotAnObject::getOwnPropertyDescriptor):
1490         (JSC::JSNotAnObject::put):
1491         (JSC::JSNotAnObject::deleteProperty):
1492         (JSC::JSNotAnObject::getOwnPropertyNames):
1493         * runtime/JSNotAnObject.h:
1494         (JSC::JSNotAnObject::JSNotAnObject):
1495         * runtime/JSObject.h:
1496         (JSC::JSObject::isActivationObject):
1497         * runtime/JSValue.cpp:
1498         (JSC::JSValue::toObjectSlowCase):
1499         (JSC::JSValue::synthesizeObject):
1500         (JSC::JSValue::synthesizePrototype):
1501
1502 2010-11-15  Darin Adler  <darin@apple.com>
1503
1504         Reviewed by Sam Weinig.
1505
1506         Harden additional string functions against large lengths
1507         https://bugs.webkit.org/show_bug.cgi?id=49574
1508
1509         * wtf/text/CString.cpp:
1510         (WTF::CString::init): Check for length that is too large for CString.
1511         (WTF::CString::newUninitialized): Ditto.
1512         (WTF::CString::copyBufferIfNeeded): Fix types so the length stays
1513         in a size_t.
1514
1515         * wtf/text/WTFString.cpp:
1516         (WTF::String::append): Check for length that is too large.
1517
1518 2010-11-15  Gavin Barraclough  <barraclough@apple.com>
1519
1520         Reviewed by Sam Weinig.
1521
1522         Bug 49577 - Function.prototype should be non-configurable
1523
1524         JSC lazily allocates the prototype property of Function objects.
1525
1526         We check the prototype exists on 'get', but not on 'put'.
1527         If you 'put' without having first done a 'get' you can end up with a configurable
1528         prototype (prototype should only ever be non-configurable).
1529
1530         This is visible in a couple of ways:
1531           * 'delete' on the property may succeed. (the next access will result in a new,
1532           reset prototype object).
1533           * the prototype may be set to a getter.
1534
1535         * runtime/JSFunction.cpp:
1536         (JSC::JSFunction::getOwnPropertyNames):
1537             Reify the prototype property before allowing an enumerate including don't enum properties.
1538         (JSC::JSFunction::put):
1539             Reify the prototype property before any put to it.
1540
1541 2010-11-15  Gavin Barraclough  <barraclough@apple.com>
1542
1543         Reviewed by Geoff Garen.
1544
1545         Bug 49488 - Only add source specific information to exceptions in Interpreter::throwException
1546
1547         Three types of source location information are added to errors.
1548
1549         (1) Divot information.
1550
1551         This was added with the intention of using it to provide better source highlighting in the inspector.
1552         We may still want to do so, but we probably should not be exposing these values in a manner visible to
1553         user scripts – only through an internal C++ interface. The code adding divot properties to objects has
1554         been removed.
1555
1556         (2) Line number information.
1557
1558         Line number information is presently sometimes added at the point the exception is created, and sometimes
1559         added at the point the exception passes through throwException. Change this so that throwException has
1560         the sole responsibility for adding line number and source file information.
1561
1562         (3) Source snippets in the message of certain type errors (e.g. 'doc' in `Result of expression 'doc' [undefined] is not an object.`).
1563
1564         These messages are currently created at the point the exceptions is raised. Instead reformat the message
1565         such that the source snippet is located at the end (`Result of expression 'b1' [undefined] is not an object.`
1566         becomes `'undefined' is not an object (evaluating 'b1.property')`), and append these to the message at
1567         the in throw Exception. This presents a number of advantages:
1568           * we no longer need to have source location information to create these TypeErrors.
1569           * we can chose to append source location information in other error messages, including those where
1570             passing source location to the point of construction would be inconvenient.
1571           * we can chose in future to omit to append source location information when running in a non-debug mode.
1572
1573         This also cleans up some error output, e.g. removing double brackets ('[[]]') around objects in output,
1574         removing double periods (..) at end of lines, and adding slightly more context to some errors.
1575
1576         * bytecode/CodeBlock.cpp:
1577         (JSC::CodeBlock::expressionRangeForBytecodeOffset):
1578             - Separated called to access line and range information.
1579
1580         * bytecode/CodeBlock.h:
1581             - Separated called to access line and range information.
1582
1583         * interpreter/Interpreter.cpp:
1584         (JSC::Interpreter::resolve):
1585         (JSC::Interpreter::resolveSkip):
1586         (JSC::Interpreter::resolveGlobal):
1587         (JSC::Interpreter::resolveGlobalDynamic):
1588         (JSC::Interpreter::resolveBaseAndProperty):
1589         (JSC::isInvalidParamForIn):
1590         (JSC::isInvalidParamForInstanceOf):
1591             - Update parameters passed to error constructors.
1592         (JSC::appendSourceToError):
1593             - Update message property to add location information (previously added in createErrorMessage, in ExceptionHelpers)
1594         (JSC::Interpreter::throwException):
1595             - Updated to call appendSourceToError. 
1596         (JSC::Interpreter::privateExecute):
1597             - Update parameters passed to error constructors.
1598
1599         * jit/JITStubs.cpp:
1600         (JSC::DEFINE_STUB_FUNCTION):
1601             - Update parameters passed to error constructors.
1602
1603         * runtime/Error.cpp:
1604         (JSC::addErrorInfo):
1605         (JSC::hasErrorInfo):
1606             - Removed divot properties.
1607
1608         * runtime/Error.h:
1609             - Removed divot properties.
1610
1611         * runtime/ErrorInstance.cpp:
1612         (JSC::ErrorInstance::ErrorInstance):
1613             - Initialize new property.
1614
1615         * runtime/ErrorInstance.h:
1616         (JSC::ErrorInstance::appendSourceToMessage):
1617         (JSC::ErrorInstance::setAppendSourceToMessage):
1618         (JSC::ErrorInstance::clearAppendSourceToMessage):
1619             - Added flag to check for errors needing location information appending.
1620         (JSC::ErrorInstance::isErrorInstance):
1621             - Added virtual method to check for ErrorInstances.
1622
1623         * runtime/ExceptionHelpers.cpp:
1624         (JSC::createUndefinedVariableError):
1625         (JSC::createInvalidParamError):
1626         (JSC::createNotAConstructorError):
1627         (JSC::createNotAFunctionError):
1628         (JSC::createNotAnObjectError):
1629             - Update parameters passed to error constructors, stopped adding line number information early, changed TypeError messages.
1630
1631         * runtime/ExceptionHelpers.h:
1632             - Updated function signatures.
1633
1634         * runtime/JSFunction.cpp:
1635         (JSC::callHostFunctionAsConstructor):
1636             - Update parameters passed to error constructors.
1637
1638         * runtime/JSObject.h:
1639         (JSC::JSObject::isErrorInstance):
1640             - Added virtual method to check for ErrorInstances.
1641
1642 2010-11-12  Anders Carlsson  <andersca@apple.com>
1643
1644         Reviewed by Adam Roben.
1645
1646         CString(const char*) crashes when passed a null pointer
1647         https://bugs.webkit.org/show_bug.cgi?id=49450
1648
1649         * wtf/text/CString.cpp:
1650         (WTF::CString::CString):
1651         Return early if str is null.
1652
1653 2010-11-11  Gavin Barraclough  <barraclough@apple.com>
1654
1655         Reviewed by Oliver Hunt.
1656
1657         Bug 49420 - Clean up syntax/reference error throw.
1658
1659         Some errors detected at compile time are thrown at runtime. We currently do so using a op_new_error/op_throw bytecode pair.
1660         This is not ideal. op_throw is used for explicit user throw statements, and has different requirements in terms or meta data
1661         attached to the exception (controlled by the explicitThrow parameter passed to Interpreter::throwException). To work around
1662         this, op_new_error has to add the meta data at an early stage, which is unlike other VM exceptions being raised.
1663
1664         We can simplify this and bring into line with other exception behaviour by changing new_error from just allocating an
1665         Exception instance to also throwing it – but as a regular VM throw, correctly passing explicitThrow as false.
1666
1667         * JavaScriptCore.xcodeproj/project.pbxproj:
1668         * bytecode/CodeBlock.cpp:
1669         (JSC::CodeBlock::dump):
1670         (JSC::CodeBlock::expressionRangeForBytecodeOffset):
1671         * bytecode/Opcode.h:
1672         * bytecompiler/BytecodeGenerator.cpp:
1673         (JSC::BytecodeGenerator::emitThrowReferenceError):
1674         (JSC::BytecodeGenerator::emitThrowSyntaxError):
1675         (JSC::BytecodeGenerator::emitThrowExpressionTooDeepException):
1676         * bytecompiler/BytecodeGenerator.h:
1677         (JSC::BytecodeGenerator::emitNodeInConditionContext):
1678         * bytecompiler/NodesCodegen.cpp:
1679         (JSC::ThrowableExpressionData::emitThrowReferenceError):
1680         (JSC::ThrowableExpressionData::emitThrowSyntaxError):
1681         (JSC::RegExpNode::emitBytecode):
1682         (JSC::PostfixErrorNode::emitBytecode):
1683         (JSC::PrefixErrorNode::emitBytecode):
1684         (JSC::AssignErrorNode::emitBytecode):
1685         (JSC::ForInNode::emitBytecode):
1686         (JSC::ContinueNode::emitBytecode):
1687         (JSC::BreakNode::emitBytecode):
1688         (JSC::ReturnNode::emitBytecode):
1689         (JSC::LabelNode::emitBytecode):
1690         * interpreter/Interpreter.cpp:
1691         (JSC::Interpreter::privateExecute):
1692         * jit/JIT.cpp:
1693         (JSC::JIT::privateCompileMainPass):
1694         * jit/JIT.h:
1695         * jit/JITOpcodes.cpp:
1696         (JSC::JIT::emit_op_throw_reference_error):
1697         (JSC::JIT::emit_op_throw_syntax_error):
1698         * jit/JITOpcodes32_64.cpp:
1699         (JSC::JIT::emit_op_throw_reference_error):
1700         (JSC::JIT::emit_op_throw_syntax_error):
1701         * jit/JITStubs.cpp:
1702         (JSC::DEFINE_STUB_FUNCTION):
1703         * jit/JITStubs.h:
1704         * parser/Nodes.h:
1705
1706 2010-11-11  Darin Adler  <darin@apple.com>
1707
1708         Reviewed by Sam Weinig.
1709
1710         Harden some string functions against large lengths
1711         https://bugs.webkit.org/show_bug.cgi?id=49293
1712
1713         * wtf/text/StringImpl.cpp:
1714         (WTF::StringImpl::create): Fix incorrect use of PassRefPtr. Check for
1715         strlen results that are too large for StringImpl.
1716         (WTF::StringImpl::lower): Check for lengths that are too large for
1717         int32_t.
1718         (WTF::StringImpl::upper): Fix incorrect use of PassRefPtr. Check for
1719         lengths that are too large for int32_t.
1720         (WTF::StringImpl::secure): Fix incorect use of PassRefPtr. Use unsigned
1721         rather than int and int32_t so we can handle any length.
1722         (WTF::StringImpl::foldCase): Fix incorrect use of PassRefPtr. Check for
1723         lengths that are too large for int32_t.
1724         (WTF::StringImpl::find): Check for strlen results that are too large for
1725         StringImpl.
1726         (WTF::StringImpl::findIgnoringCase): Ditto.
1727         (WTF::StringImpl::replace): Fix incorrect use of PassRefPtr.
1728         (WTF::StringImpl::createWithTerminatingNullCharacter): Check before
1729         incrementing length.
1730
1731 2010-11-11  Dan Horák  <dan@danny.cz>
1732
1733         Reviewed by Andreas Kling.
1734
1735         Add support for the s390/s390x architectures, it's big-endian
1736         with s390 being 32-bit and s390x being 64-bit.
1737
1738         https://bugs.webkit.org/show_bug.cgi?id=34786
1739
1740         * wtf/Platform.h:
1741
1742 2010-11-10  Csaba Osztrogonác  <ossy@webkit.org>
1743
1744         Reviewed by David Hyatt.
1745
1746         HTML5 Ruby support should be mandatory feature
1747         https://bugs.webkit.org/show_bug.cgi?id=49272
1748
1749         Remove Ruby as optional feature.
1750
1751         * Configurations/FeatureDefines.xcconfig:
1752         * JavaScriptCorePrefix.h:: Touch it to avoid incremental build failure on Windows.
1753
1754 2010-11-10  Peter Rybin  <peter.rybin@gmail.com>
1755
1756         Reviewed by Adam Barth.
1757
1758         HTML parser should provide script column position within HTML document to JavaScript engine
1759         https://bugs.webkit.org/show_bug.cgi?id=45271
1760
1761         Adds TextPosition* classes -- a structure that stores line/column/generation
1762         level coordinates inside text document. Adds *BasedNumber classes -- typesafe int
1763         wrappers that emphasize whether int number is used as zero-based or
1764         one-based.
1765
1766         * GNUmakefile.am:
1767         * JavaScriptCore.gypi:
1768         * JavaScriptCore.xcodeproj/project.pbxproj:
1769         * wtf/text/TextPosition.h: Added.
1770         (WTF::TextPosition::TextPosition):
1771         (WTF::TextPosition::minimumPosition):
1772         (WTF::TextPosition::belowRangePosition):
1773         (WTF::ZeroBasedNumber::fromZeroBasedInt):
1774         (WTF::ZeroBasedNumber::ZeroBasedNumber):
1775         (WTF::ZeroBasedNumber::zeroBasedInt):
1776         (WTF::ZeroBasedNumber::base):
1777         (WTF::ZeroBasedNumber::belowBase):
1778         (WTF::OneBasedNumber::fromOneBasedInt):
1779         (WTF::OneBasedNumber::OneBasedNumber):
1780         (WTF::OneBasedNumber::oneBasedInt):
1781         (WTF::OneBasedNumber::convertAsZeroBasedInt):
1782         (WTF::OneBasedNumber::convertToZeroBased):
1783         (WTF::OneBasedNumber::base):
1784         (WTF::OneBasedNumber::belowBase):
1785         (WTF::toZeroBasedTextPosition):
1786         (WTF::toOneBasedTextPosition):
1787         (WTF::ZeroBasedNumber::convertToOneBased):
1788
1789 2010-11-09  Gabor Loki  <loki@webkit.org>
1790
1791         Reviewed by Gavin Barraclough.
1792
1793         ARM JIT asserts when loading http://reader.google.com in debug mode
1794         https://bugs.webkit.org/show_bug.cgi?id=48912
1795
1796         There are several cases when the uninterrupted sequence is larger than
1797         maximum required offset for pathing the same sequence. Eg.: if in a
1798         uninterrupted sequence the last macroassembler's instruction is a stub
1799         call, it emits store instruction(s) which should not be included in the
1800         calculation of length of uninterrupted sequence. So, the insnSpace and
1801         constSpace should be upper limit instead of hard limit.
1802
1803         * jit/JIT.h:
1804         * jit/JITInlineMethods.h:
1805         (JSC::JIT::endUninterruptedSequence):
1806
1807 2010-11-09  David Kilzer  <ddkilzer@apple.com>
1808
1809         <http://webkit.org/b/49279> Fix include statements for local headers
1810
1811         Reviewed by Gavin Barraclough.
1812
1813         Use "Foo.h" instead of <Foo.h> for local headers.
1814
1815         * assembler/AbstractMacroAssembler.h: Also fixed sort order.
1816         * assembler/CodeLocation.h:
1817         * yarr/RegexJIT.h:
1818         * yarr/RegexParser.h:
1819
1820 2010-11-08  Adam Roben  <aroben@apple.com>
1821
1822         Roll out r71532
1823
1824         It broke the build for Cygwin 1.7 installs. Cygwin 1.7's default
1825         .bashrc unsets %TEMP%, which broke copy-tools.cmd.
1826
1827         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreGenerated.make:
1828         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreGenerated.vcproj:
1829         * JavaScriptCore.vcproj/JavaScriptCore/copy-tools.cmd: Removed.
1830         * JavaScriptCore.vcproj/JavaScriptCore/show-alert.js: Removed.
1831
1832 2010-11-08  Martin Robinson  <mrobinson@igalia.com>
1833
1834         Reviewed by Xan Lopez.
1835
1836         >=webkitgtk-1.2.5: parallel build fails with libtool: link: cannot find the library `libwebkit-1.0.la' or unhandled argument `libwebkit-1.0.la'
1837         https://bugs.webkit.org/show_bug.cgi?id=49128
1838
1839         r59042 introduced a C++-style comment in Platform.h, which is often
1840         included in C source files. Change it to a C-style comment.
1841
1842         * wtf/Platform.h: Fix the C++-style comment.
1843
1844 2010-11-08  Adam Roben  <aroben@apple.com>
1845
1846         Show a message and cause the build to immediately fail when any
1847         .vsprops files are copied
1848
1849         When $WebKitLibrariesDir is set to a non-standard location, the
1850         .vsprops files have to be copied from WebKitLibraries/win to
1851         $WebKitLibrariesDir. When this happens, Visual Studio doesn't pick up
1852         changes to the .vsprops files until the next time it opens the solution
1853         file. Before this patch, the build would soldier on with the old
1854         .vsprops files, leading to strange build failures. Now we detect that
1855         the .vsprops files have been updated, display a message to the user
1856         telling them what to do, and make the build fail immediately.
1857
1858         Fixes <http://webkit.org/b/49181> Windows build fail mysteriously when
1859         .vsprops files are updated
1860
1861         Reviewed by Steve Falkenburg.
1862
1863         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreGenerated.make:
1864         Moved code to copy the tools directory to the new copy-tools.cmd
1865         script. Moved that after the command that writes the buildfailed file
1866         so the build will be considered a failure if copy-tools.cmd fails.
1867         Changed to write the project name into buildfailed like all our other
1868         projects do, so those other projects will know that the failure was due
1869         to this project.
1870
1871         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreGenerated.vcproj:
1872         Added new scripts.
1873
1874         * JavaScriptCore.vcproj/JavaScriptCore/copy-tools.cmd: Added. Copies
1875         the tools directory to $WebKitLibrariesDir. If any files were copied,
1876         we display a message to the user and exit with error code 1 to cause
1877         the build to fail. In non-interactive builds, we just print the message
1878         to the build log. In interactive builds, we show the message in an
1879         alert.
1880
1881         * JavaScriptCore.vcproj/JavaScriptCore/show-alert.js: Added. Uses
1882         Windows Scripting Host to display a message in an alert.
1883
1884 2010-11-07  Sam Magnuson  <smagnuson@netflix.com>
1885
1886         Reviewed by Andreas Kling.
1887
1888         [Qt] make install does not cause JavaScriptCore to be built
1889         https://bugs.webkit.org/show_bug.cgi?id=49114
1890
1891         * JavaScriptCore.pro:
1892
1893 2010-11-05  Oliver Hunt  <oliver@apple.com>
1894
1895         Reviewed by Gavin Barraclough.
1896
1897         Website consistently crashing TOT in JIT::execute() on news.com.au
1898         https://bugs.webkit.org/show_bug.cgi?id=48954
1899
1900         The problem here was the strict pass of this conversion was loading the
1901         this structure into one register but doing the flags check off a different
1902         register.  This is clearly wrong.  I have been unable to trigger the crash
1903         with a reduction, but I've added an assertion to the this conversion to
1904         attempt to make it more readily catchable in future.
1905
1906         * jit/JITOpcodes.cpp:
1907         (JSC::JIT::emit_op_convert_this_strict):
1908         * jit/JITOpcodes32_64.cpp:
1909         (JSC::JIT::emit_op_convert_this_strict):
1910         * jit/JITStubs.cpp:
1911         (JSC::DEFINE_STUB_FUNCTION):
1912
1913 2010-11-04  Xan Lopez  <xlopez@igalia.com>
1914
1915         Reviewed by Adam Barth.
1916
1917         Use leakRef instead of releaseRef
1918         https://bugs.webkit.org/show_bug.cgi?id=48974
1919
1920         Use leakRef instead of the deprecated releaseRef. This was renamed
1921         some time ago because 'releaseRef' is too close to 'release',
1922         which does something completely different.
1923
1924 2010-11-04  Eric Seidel  <eric@webkit.org>
1925
1926         Reviewed by Gavin Barraclough.
1927
1928         REGRESSION(49798): Crash in HTMLObjectElement::parseMappedAttribute
1929         https://bugs.webkit.org/show_bug.cgi?id=48789
1930
1931         The contract for all String/AtomicString methods seems to be that it's
1932         safe to call them, even when the String is null (impl() returns 0).
1933         This contract was broken by r49798 (unintentionally) when optimizing
1934         for dromeo.
1935         This patch adds a null check to AtomicString::lower() fixing this
1936         crash and preventing future confusion.
1937
1938         * wtf/text/AtomicString.cpp:
1939         (WTF::AtomicString::lower):
1940
1941 2010-11-04  Adam Barth  <abarth@webkit.org>
1942
1943         Enabled ICCJPEG on Chromium Mac
1944         https://bugs.webkit.org/show_bug.cgi?id=48977
1945
1946         * wtf/Platform.h:
1947
1948 2010-11-03  Oliver Hunt  <oliver@apple.com>
1949
1950         Reviewed by Gavin Barraclough.
1951
1952         Crash in Function.prototype.call.apply
1953         https://bugs.webkit.org/show_bug.cgi?id=48485
1954
1955         The problem here was op_load_varargs failing to ensure that
1956         there was sufficient space for the entire callframe prior to
1957         op_call_varargs.  This meant that when we then re-entered the
1958         VM it was possible to stomp over an earlier portion of the
1959         stack, so causing sub-optimal behaviour.
1960
1961         * bytecode/Opcode.h:
1962         * bytecompiler/BytecodeGenerator.cpp:
1963         (JSC::BytecodeGenerator::emitLoadVarargs):
1964         * bytecompiler/BytecodeGenerator.h:
1965         * bytecompiler/NodesCodegen.cpp:
1966         (JSC::ApplyFunctionCallDotNode::emitBytecode):
1967         * jit/JIT.cpp:
1968         (JSC::JIT::privateCompile):
1969         * jit/JITOpcodes.cpp:
1970         (JSC::JIT::emit_op_load_varargs):
1971
1972 2010-11-03  Kenneth Russell  <kbr@google.com>
1973
1974         Reviewed by Chris Marrin.
1975
1976         Redesign extension mechanism in GraphicsContext3D
1977         https://bugs.webkit.org/show_bug.cgi?id=46894
1978
1979         * JavaScriptCore.exp:
1980          - Exposed String::split(const String&, Vector<String>).
1981
1982 2010-11-03  Adam Roben  <aroben@apple.com>
1983
1984         Bring WTF.vcproj up to date
1985
1986         * JavaScriptCore.vcproj/WTF/WTF.vcproj: Added filters for the text and
1987         unicode directories, added new files, removed old files.
1988
1989 2010-11-03  Gabor Loki  <loki@webkit.org>
1990
1991         Reviewed by Andreas Kling.
1992
1993         Remove unused initializeWeakRandomNumberGenerator
1994         https://bugs.webkit.org/show_bug.cgi?id=48899
1995
1996         WeakRandom class is used instead of weakRandomNumber and its initializer.
1997
1998         * wtf/RandomNumberSeed.h:
1999
2000 2010-11-03  Gabor Loki  <loki@webkit.org>
2001
2002         Reviewed by Geoffrey Garen.
2003
2004         Unused class: JSFastMath with JSValue64
2005         https://bugs.webkit.org/show_bug.cgi?id=48835
2006
2007         Remove unused JSFastMath class.
2008
2009         * runtime/JSImmediate.h:
2010
2011 2010-11-02  Adam Roben  <aroben@apple.com>
2012
2013         Windows build fix after r71127
2014
2015         MSVC isn't smart enough to figure out that the definition of the global
2016         nullptr variable isn't needed, so we provide one for it.
2017
2018         Fixes <http://webkit.org/b/48862> Windows build is broken due to
2019         undefined symbol nullptr
2020
2021         Reviewed by Anders Carlsson.
2022
2023         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: Export nullptr.
2024
2025         * JavaScriptCore.vcproj/WTF/WTF.vcproj: Added NullPtr.cpp and let VS
2026         resort the files.
2027
2028         * wtf/NullPtr.cpp: Added.
2029
2030 2010-11-02  Martin Robinson  <mrobinson@igalia.com>
2031
2032         Reviewed by Xan Lopez.
2033
2034         Remove special handling of HashTableDeletedValue in PlatformRefPtr and manually manage memory that cannot be controlled by HashTraits
2035         https://bugs.webkit.org/show_bug.cgi?id=48841
2036
2037         Remove special handling of HashTableDeletedValue in PlatformRefPtr.
2038         This is better handled on a case-by-case basis, when HashTraits
2039         cannot account for it.
2040
2041         * wtf/PlatformRefPtr.h:
2042         (WTF::PlatformRefPtr::~PlatformRefPtr):
2043         (WTF::PlatformRefPtr::clear):
2044         (WTF::::operator):
2045
2046 2010-10-29  Oliver Hunt  <oliver@apple.com>
2047
2048         Reviewed by Gavin Barraclough.
2049
2050         REGRESSION: r69429-r69611: Crash in JSC::Interpreter::privateExecute
2051         https://bugs.webkit.org/show_bug.cgi?id=47573
2052
2053         I think the interpreter portion of this was introduced by
2054         an incorrect but silent merge when I updated prior to committing.
2055         The JIT change is basically just a correctness fix, but it is
2056         needed to prevent the testcase from asserting in debug builds.
2057
2058         The basic problem is incorrectly setting the activation object
2059         on an arguments object.  The crash was due to us setting a null
2060         activation in the interpreter, in the jit we were setting the
2061         activation of a strict mode arguments object.
2062
2063         * interpreter/Interpreter.cpp:
2064         (JSC::Interpreter::privateExecute):
2065         * jit/JITStubs.cpp:
2066         (JSC::DEFINE_STUB_FUNCTION):
2067         * wtf/Platform.h:
2068
2069 2010-10-29  Csaba Osztrogonác  <ossy@webkit.org>
2070
2071         Reviewed by Adam Roben and David Kilzer.
2072
2073         Fix and cleanup of build systems
2074         https://bugs.webkit.org/show_bug.cgi?id=48342
2075
2076         * Configurations/FeatureDefines.xcconfig: Add missing ENABLE_FULLSCREEN_API
2077
2078 2010-10-28  Kwang Yul Seo  <skyul@company100.net>
2079
2080         Reviewed by Darin Adler.
2081
2082         Include stddef.h unconditionally in Assertions.h
2083         https://bugs.webkit.org/show_bug.cgi?id=48573
2084
2085         There is no reason to have stddef.h include be MSVC-only.
2086
2087         * wtf/Assertions.h:
2088
2089 2010-10-28  Herczeg Zoltan  <zherczeg@webkit.org>
2090
2091         Rubber stamped by Csaba Osztrogonác.
2092
2093         Try to fix interpreter build.
2094
2095         Needed parentheses around assignment to avoid GCC warning after
2096         http://trac.webkit.org/changeset/70703
2097
2098         * interpreter/Interpreter.cpp:
2099         (JSC::Interpreter::privateExecute):
2100
2101 2010-10-28  Peter Varga  <pvarga@inf.u-szeged.hu>
2102
2103         Reviewed by Csaba Osztrogonác.
2104
2105         resetAssertionMatches() is an unused function in YARR Interpreter
2106         https://bugs.webkit.org/show_bug.cgi?id=48503
2107
2108         The resetAssertionMatches() function is removed from YARR Interpreter
2109         because it's never called.
2110
2111         * yarr/RegexInterpreter.cpp:
2112         (JSC::Yarr::Interpreter::resetMatches):
2113
2114 2010-10-28  Zoltan Herczeg  <zherczeg@webkit.org>
2115
2116         Reviewed by Andreas Kling.
2117
2118         Wrong instruction form for BKPT
2119         https://bugs.webkit.org/show_bug.cgi?id=48427
2120
2121         One '0' is missing from BKPT instruction.
2122         Thanks for Jacob Bramley for reporting this error.
2123
2124         * assembler/ARMAssembler.h:
2125
2126 2010-10-28  Xan Lopez  <xlopez@igalia.com>
2127
2128         Try to fix Snow Leopard build.
2129
2130         * jit/JITPropertyAccess.cpp:
2131         (JSC::JIT::testPrototype):
2132
2133 2010-10-28  Xan Lopez  <xlopez@igalia.com>
2134
2135         Reviewed by Oliver Hunt.
2136
2137         Do not have two different asCell APIs in JSValue
2138         https://bugs.webkit.org/show_bug.cgi?id=47979
2139
2140         Remove JSCell* asCell(JSValue) in favor of only using
2141         JSValue::asCell().
2142
2143         * API/APICast.h:
2144         (toRef):
2145         * jit/JITPropertyAccess32_64.cpp:
2146         (JSC::JIT::testPrototype):
2147         * jit/JITStubs.cpp:
2148         (JSC::JITThunks::tryCachePutByID):
2149         (JSC::JITThunks::tryCacheGetByID):
2150         (JSC::DEFINE_STUB_FUNCTION):
2151         * runtime/GetterSetter.h:
2152         (JSC::asGetterSetter):
2153         * runtime/JSByteArray.h:
2154         (JSC::asByteArray):
2155         * runtime/JSCell.h:
2156         (JSC::JSCell::getCallData):
2157         (JSC::JSCell::getConstructData):
2158         * runtime/JSString.h:
2159         (JSC::RopeBuilder::appendValueInConstructAndIncrementLength):
2160         (JSC::asString):
2161         * runtime/JSValue.h:
2162         * runtime/Operations.cpp:
2163         (JSC::jsIsObjectType):
2164         * runtime/Operations.h:
2165         (JSC::normalizePrototypeChain):
2166         * runtime/Protect.h:
2167         (JSC::gcProtect):
2168         (JSC::gcUnprotect):
2169
2170 2010-10-27  Chao-ying Fu  <fu@mips.com>
2171
2172         Reviewed by Oliver Hunt.
2173
2174         Support emit_op_mod() for MIPS on JSVALUE32_64
2175         https://bugs.webkit.org/show_bug.cgi?id=46511
2176
2177         This patch uses MIPS div instructions for op_mod to improve performance.
2178
2179         * jit/JITArithmetic32_64.cpp:
2180         (JSC::JIT::emit_op_mod):
2181
2182 2010-10-27  Brent Fulgham  <bfulgham@webkit.org>
2183
2184         Unreviewed build correction.
2185
2186         * wtf/Platform.h: Make sure ACCELERATED_COMPOSITING is
2187         turned off in the WinCairo port.  This isn't supported (yet.)
2188
2189 2010-10-27  Chris Rogers  <crogers@google.com>
2190
2191         Reviewed by Chris Marrin.
2192
2193         Add ENABLE_WEB_AUDIO feature enable flag (initially disabled) to build-webkit
2194         https://bugs.webkit.org/show_bug.cgi?id=48279
2195
2196         * Configurations/FeatureDefines.xcconfig:
2197
2198 2010-10-27  Brian Weinstein  <bweinstein@apple.com>
2199
2200         Windows build fix.
2201
2202         * jit/JITStubs.cpp:
2203         (JSC::jitThrow):
2204
2205 2010-10-27  Gavin Barraclough  <barraclough@apple.com>
2206
2207         Reviewed by Oliver Hunt.
2208
2209         Bug 48365 - Remove output parameters from JITStackFrame
2210
2211         The JIT stub functions presently use the stackframe to provide a couple of additional return values.
2212           * In the case of uncaught exceptions the exception value is returned on the stackframe.exception property.
2213           * In the case of caught exceptions the updated value for the callFrame register is returned on the stackframe.callFrame property.
2214
2215         Change exception returns such that exceptions are always returned on JSGlobalData::exception.
2216         Change op_catch such that the new CallFrame value is returned from op_throw / vm_throw in regT0.
2217
2218         * JavaScriptCore.xcodeproj/project.pbxproj:
2219         * debugger/Debugger.cpp:
2220         (JSC::evaluateInGlobalCallFrame):
2221         * debugger/DebuggerCallFrame.cpp:
2222         (JSC::DebuggerCallFrame::evaluate):
2223         * interpreter/CachedCall.h:
2224         (JSC::CachedCall::CachedCall):
2225         (JSC::CachedCall::call):
2226         * interpreter/CallFrame.h:
2227         (JSC::ExecState::exception):
2228         * interpreter/Interpreter.cpp:
2229         (JSC::Interpreter::callEval):
2230         (JSC::Interpreter::Interpreter):
2231         (JSC::Interpreter::execute):
2232         (JSC::Interpreter::executeCall):
2233         (JSC::Interpreter::executeConstruct):
2234         (JSC::Interpreter::prepareForRepeatCall):
2235         (JSC::Interpreter::privateExecute):
2236         * interpreter/Interpreter.h:
2237         * jit/JITCode.h:
2238         (JSC::JITCode::execute):
2239         * jit/JITOpcodes.cpp:
2240         (JSC::JIT::emit_op_catch):
2241         * jit/JITOpcodes32_64.cpp:
2242         (JSC::JIT::emit_op_catch):
2243         * jit/JITStubs.cpp:
2244         (JSC::ctiTrampoline):
2245         (JSC::jitThrow):
2246         (JSC::DEFINE_STUB_FUNCTION):
2247         * jit/JITStubs.h:
2248         * runtime/ArrayPrototype.cpp:
2249         (JSC::arrayProtoFuncFilter):
2250         (JSC::arrayProtoFuncMap):
2251         (JSC::arrayProtoFuncEvery):
2252         (JSC::arrayProtoFuncForEach):
2253         (JSC::arrayProtoFuncSome):
2254         (JSC::arrayProtoFuncReduce):
2255         (JSC::arrayProtoFuncReduceRight):
2256         * runtime/CallData.cpp:
2257         (JSC::call):
2258         * runtime/Completion.cpp:
2259         (JSC::evaluate):
2260         * runtime/ConstructData.cpp:
2261         (JSC::construct):
2262         * runtime/ExceptionHelpers.cpp:
2263         (JSC::createErrorForInvalidGlobalAssignment):
2264         (JSC::throwOutOfMemoryError):
2265         (JSC::throwStackOverflowError):
2266         * runtime/ExceptionHelpers.h:
2267         * runtime/JSArray.cpp:
2268         (JSC::JSArray::sort):
2269         * runtime/JSGlobalObjectFunctions.cpp:
2270         (JSC::globalFuncEval):
2271         * runtime/StringPrototype.cpp:
2272         (JSC::stringProtoFuncReplace):
2273
2274 2010-10-27  Gabor Loki  <loki@webkit.org>
2275
2276         Reviewed by Oliver Hunt.
2277
2278         https://bugs.webkit.org/show_bug.cgi?id=48060
2279         Speed up op_jeq_null and op_jneq_null.
2280
2281         For both opcodes the NullTag and UndefinedTag are checked to control the
2282         jump. These values can be simply checked by AboveOrEqual or Below
2283         condition if they are the two highest unsigned integers from JSValue's
2284         Tag field.
2285
2286         * jit/JITOpcodes32_64.cpp:
2287         (JSC::JIT::emit_op_jeq_null):
2288         (JSC::JIT::emit_op_jneq_null):
2289         * runtime/JSValue.h:
2290
2291 2010-10-25  Geoffrey Garen  <ggaren@apple.com>
2292
2293         Reviewed by Oliver Hunt.
2294
2295         https://bugs.webkit.org/show_bug.cgi?id=41948
2296         REGRESSION(r60392): Registerfile can be unwound too far following an exception
2297         
2298         SunSpider reports no change.
2299
2300         * interpreter/Interpreter.cpp:
2301         (JSC::Interpreter::throwException): Walk the stack to calculate the high
2302         water mark currently in use. It's not safe to assume that the current
2303         CallFrame's high water mark is the highest high water mark because
2304         calls do not always set up at the end of a CallFrame. A large caller
2305         CallFrame can encompass a small callee CallFrame.
2306
2307         * jit/JITOpcodes.cpp:
2308         (JSC::JIT::privateCompileCTINativeCall):
2309         * jit/JITOpcodes32_64.cpp:
2310         (JSC::JIT::privateCompileCTINativeCall): Make sure to set a 0 CodeBlock
2311         in the CallFrame of a host call, like the Interpreter does, instead of
2312         leaving the CodeBlock field uninitialized. The backtracing code requires
2313         a valid CodeBlock field in each CallFrame.
2314
2315 2010-10-27  Gabor Loki  <loki@webkit.org>
2316
2317         Reviewed by Csaba Osztrogonác.
2318
2319         Add cmn to branch32(reg, imm) on ARM
2320         https://bugs.webkit.org/show_bug.cgi?id=48062
2321
2322         The conditional comparison can be done with cmn if the imm value is
2323         negative and can fit into the cmn instruction.
2324
2325         * assembler/MacroAssemblerARM.h:
2326         (JSC::MacroAssemblerARM::branch32):
2327
2328 2010-10-26  Oliver Hunt  <oliver@apple.com>
2329
2330         Interpreter build fix.
2331
2332         * interpreter/Interpreter.cpp:
2333         (JSC::Interpreter::privateExecute):
2334
2335 2010-10-25  Oliver Hunt  <oliver@apple.com>
2336
2337         Reviewed by Gavin Barraclough.
2338
2339         Remove exec and globalData arguments from jsNumber
2340         https://bugs.webkit.org/show_bug.cgi?id=48270
2341
2342         Remove the now unused exec and globalData arguments from jsNumber
2343         and mechanically update all users of jsNumber.
2344
2345         * API/JSValueRef.cpp:
2346         (JSValueMakeNumber):
2347         * bytecompiler/BytecodeGenerator.cpp:
2348         (JSC::BytecodeGenerator::emitLoad):
2349         * bytecompiler/NodesCodegen.cpp:
2350         (JSC::ArrayNode::emitBytecode):
2351         * jit/JITArithmetic.cpp:
2352         (JSC::JIT::emit_op_mod):
2353         * jit/JITArithmetic32_64.cpp:
2354         (JSC::JIT::emit_op_mod):
2355         * jit/JITOpcodes.cpp:
2356         (JSC::JIT::emit_op_jfalse):
2357         (JSC::JIT::emit_op_jtrue):
2358         * jit/JITStubs.cpp:
2359         (JSC::DEFINE_STUB_FUNCTION):
2360         * jsc.cpp:
2361         (functionRun):
2362         * runtime/Arguments.cpp:
2363         (JSC::Arguments::getOwnPropertySlot):
2364         (JSC::Arguments::getOwnPropertyDescriptor):
2365         * runtime/ArrayConstructor.cpp:
2366         (JSC::ArrayConstructor::ArrayConstructor):
2367         * runtime/ArrayPrototype.cpp:
2368         (JSC::arrayProtoFuncPop):
2369         (JSC::arrayProtoFuncPush):
2370         (JSC::arrayProtoFuncShift):
2371         (JSC::arrayProtoFuncSplice):
2372         (JSC::arrayProtoFuncUnShift):
2373         (JSC::arrayProtoFuncFilter):
2374         (JSC::arrayProtoFuncMap):
2375         (JSC::arrayProtoFuncEvery):
2376         (JSC::arrayProtoFuncForEach):
2377         (JSC::arrayProtoFuncSome):
2378         (JSC::arrayProtoFuncReduce):
2379         (JSC::arrayProtoFuncReduceRight):
2380         (JSC::arrayProtoFuncIndexOf):
2381         (JSC::arrayProtoFuncLastIndexOf):
2382         * runtime/BooleanConstructor.cpp:
2383         (JSC::BooleanConstructor::BooleanConstructor):
2384         * runtime/CachedTranscendentalFunction.h:
2385         (JSC::CachedTranscendentalFunction::operator()):
2386         * runtime/DateConstructor.cpp:
2387         (JSC::DateConstructor::DateConstructor):
2388         (JSC::dateParse):
2389         (JSC::dateNow):
2390         (JSC::dateUTC):
2391         * runtime/DateInstance.cpp:
2392         (JSC::DateInstance::DateInstance):
2393         * runtime/DatePrototype.cpp:
2394         (JSC::dateProtoFuncGetFullYear):
2395         (JSC::dateProtoFuncGetUTCFullYear):
2396         (JSC::dateProtoFuncGetMonth):
2397         (JSC::dateProtoFuncGetUTCMonth):
2398         (JSC::dateProtoFuncGetDate):
2399         (JSC::dateProtoFuncGetUTCDate):
2400         (JSC::dateProtoFuncGetDay):
2401         (JSC::dateProtoFuncGetUTCDay):
2402         (JSC::dateProtoFuncGetHours):
2403         (JSC::dateProtoFuncGetUTCHours):
2404         (JSC::dateProtoFuncGetMinutes):
2405         (JSC::dateProtoFuncGetUTCMinutes):
2406         (JSC::dateProtoFuncGetSeconds):
2407         (JSC::dateProtoFuncGetUTCSeconds):
2408         (JSC::dateProtoFuncGetMilliSeconds):
2409         (JSC::dateProtoFuncGetUTCMilliseconds):
2410         (JSC::dateProtoFuncGetTimezoneOffset):
2411         (JSC::dateProtoFuncSetTime):
2412         (JSC::setNewValueFromTimeArgs):
2413         (JSC::setNewValueFromDateArgs):
2414         (JSC::dateProtoFuncSetYear):
2415         (JSC::dateProtoFuncGetYear):
2416         * runtime/Error.cpp:
2417         (JSC::addErrorSourceInfo):
2418         (JSC::addErrorDivotInfo):
2419         * runtime/ErrorConstructor.cpp:
2420         (JSC::ErrorConstructor::ErrorConstructor):
2421         * runtime/FunctionConstructor.cpp:
2422         (JSC::FunctionConstructor::FunctionConstructor):
2423         * runtime/FunctionPrototype.cpp:
2424         (JSC::FunctionPrototype::FunctionPrototype):
2425         * runtime/JSArray.cpp:
2426         (JSC::JSArray::getOwnPropertySlot):
2427         (JSC::JSArray::getOwnPropertyDescriptor):
2428         * runtime/JSByteArray.cpp:
2429         (JSC::JSByteArray::JSByteArray):
2430         * runtime/JSByteArray.h:
2431         (JSC::JSByteArray::getIndex):
2432         * runtime/JSFunction.cpp:
2433         (JSC::JSFunction::JSFunction):
2434         (JSC::JSFunction::lengthGetter):
2435         (JSC::JSFunction::getOwnPropertyDescriptor):
2436         * runtime/JSGlobalObject.cpp:
2437         (JSC::JSGlobalObject::reset):
2438         * runtime/JSGlobalObjectFunctions.cpp:
2439         (JSC::globalFuncParseInt):
2440         (JSC::globalFuncParseFloat):
2441         * runtime/JSNumberCell.h:
2442         (JSC::JSValue::JSValue):
2443         (JSC::jsNaN):
2444         (JSC::JSValue::toJSNumber):
2445         * runtime/JSONObject.cpp:
2446         (JSC::unwrapBoxedPrimitive):
2447         (JSC::PropertyNameForFunctionCall::value):
2448         (JSC::JSONStringify):
2449         * runtime/JSString.cpp:
2450         (JSC::JSString::getStringPropertyDescriptor):
2451         * runtime/JSString.h:
2452         (JSC::JSString::getStringPropertySlot):
2453         * runtime/JSValue.h:
2454         (JSC::jsDoubleNumber):
2455         (JSC::jsNumber):
2456         (JSC::jsNaN):
2457         (JSC::JSValue::JSValue):
2458         (JSC::JSValue::toJSNumber):
2459         * runtime/LiteralParser.cpp:
2460         (JSC::LiteralParser::parse):
2461         * runtime/MathObject.cpp:
2462         (JSC::MathObject::MathObject):
2463         (JSC::mathProtoFuncAbs):
2464         (JSC::mathProtoFuncACos):
2465         (JSC::mathProtoFuncASin):
2466         (JSC::mathProtoFuncATan):
2467         (JSC::mathProtoFuncATan2):
2468         (JSC::mathProtoFuncCeil):
2469         (JSC::mathProtoFuncCos):
2470         (JSC::mathProtoFuncExp):
2471         (JSC::mathProtoFuncFloor):
2472         (JSC::mathProtoFuncLog):
2473         (JSC::mathProtoFuncMax):
2474         (JSC::mathProtoFuncMin):
2475         (JSC::mathProtoFuncPow):
2476         (JSC::mathProtoFuncRandom):
2477         (JSC::mathProtoFuncRound):
2478         (JSC::mathProtoFuncSin):
2479         (JSC::mathProtoFuncSqrt):
2480         (JSC::mathProtoFuncTan):
2481         * runtime/NativeErrorConstructor.cpp:
2482         (JSC::NativeErrorConstructor::NativeErrorConstructor):
2483         * runtime/NumberConstructor.cpp:
2484         (JSC::NumberConstructor::NumberConstructor):
2485         (JSC::numberConstructorNaNValue):
2486         (JSC::numberConstructorNegInfinity):
2487         (JSC::numberConstructorPosInfinity):
2488         (JSC::numberConstructorMaxValue):
2489         (JSC::numberConstructorMinValue):
2490         (JSC::constructWithNumberConstructor):
2491         (JSC::callNumberConstructor):
2492         * runtime/NumberPrototype.cpp:
2493         (JSC::NumberPrototype::NumberPrototype):
2494         * runtime/ObjectConstructor.cpp:
2495         (JSC::ObjectConstructor::ObjectConstructor):
2496         * runtime/Operations.cpp:
2497         (JSC::jsAddSlowCase):
2498         * runtime/Operations.h:
2499         (JSC::jsAdd):
2500         * runtime/PrototypeFunction.cpp:
2501         (JSC::PrototypeFunction::PrototypeFunction):
2502         * runtime/RegExpConstructor.cpp:
2503         (JSC::RegExpConstructor::RegExpConstructor):
2504         (JSC::RegExpMatchesArray::fillArrayInstance):
2505         * runtime/RegExpObject.cpp:
2506         (JSC::regExpObjectLastIndex):
2507         * runtime/StringConstructor.cpp:
2508         (JSC::StringConstructor::StringConstructor):
2509         * runtime/StringPrototype.cpp:
2510         (JSC::StringPrototype::StringPrototype):
2511         (JSC::stringProtoFuncReplace):
2512         (JSC::stringProtoFuncCharCodeAt):
2513         (JSC::stringProtoFuncIndexOf):
2514         (JSC::stringProtoFuncLastIndexOf):
2515         (JSC::stringProtoFuncSearch):
2516         (JSC::stringProtoFuncLocaleCompare):
2517
2518 2010-10-25  David Tapuska  <dtapuska@rim.com>
2519
2520         Reviewed by David Kilzer.
2521
2522         Enable VFP if our compiler settings indicated we had a hardware
2523         VFP.
2524
2525         https://bugs.webkit.org/show_bug.cgi?id=46096
2526
2527         * assembler/MacroAssemblerARM.cpp:
2528         (JSC::isVFPPresent):
2529
2530 2010-10-25  Sheriff Bot  <webkit.review.bot@gmail.com>
2531
2532         Unreviewed, rolling out r70451.
2533         http://trac.webkit.org/changeset/70451
2534         https://bugs.webkit.org/show_bug.cgi?id=48249
2535
2536         Broke set-unloaded-frame-location.html under Qt (Requested by
2537         caseq on #webkit).
2538
2539         * GNUmakefile.am:
2540         * JavaScriptCore.gypi:
2541         * JavaScriptCore.xcodeproj/project.pbxproj:
2542         * wtf/text/TextPosition.h: Removed.
2543
2544 2010-10-25  Patrick Gansterer  <paroga@webkit.org>
2545
2546         Reviewed by David Kilzer.
2547
2548         Replace _countof with WTF_ARRAY_LENGTH
2549         https://bugs.webkit.org/show_bug.cgi?id=48229
2550
2551         * wtf/Platform.h:
2552
2553 2010-10-25  Peter Rybin  <peter.rybin@gmail.com>
2554
2555         Reviewed by Adam Barth.
2556
2557         HTML parser should provide script column position within HTML document to JavaScript engine
2558         https://bugs.webkit.org/show_bug.cgi?id=45271
2559
2560         Adds TextPosition* classes -- a structure that stores line/column/generation
2561         level coordinates inside text document. Adds *BasedNumber classes -- typesafe int
2562         wrappers that emphasize whether int number is used as zero-based or
2563         one-based.
2564
2565         * GNUmakefile.am:
2566         * JavaScriptCore.gypi:
2567         * JavaScriptCore.xcodeproj/project.pbxproj:
2568         * wtf/text/TextPosition.h: Added.
2569         (WTF::TextPosition::TextPosition):
2570         (WTF::TextPosition::minimumPosition):
2571         (WTF::TextPosition::belowRangePosition):
2572         (WTF::ZeroBasedNumber::fromZeroBasedInt):
2573         (WTF::ZeroBasedNumber::ZeroBasedNumber):
2574         (WTF::ZeroBasedNumber::zeroBasedInt):
2575         (WTF::ZeroBasedNumber::base):
2576         (WTF::ZeroBasedNumber::belowBase):
2577         (WTF::OneBasedNumber::fromOneBasedInt):
2578         (WTF::OneBasedNumber::OneBasedNumber):
2579         (WTF::OneBasedNumber::oneBasedInt):
2580         (WTF::OneBasedNumber::convertAsZeroBasedInt):
2581         (WTF::OneBasedNumber::convertToZeroBased):
2582         (WTF::OneBasedNumber::base):
2583         (WTF::OneBasedNumber::belowBase):
2584         (WTF::toZeroBasedTextPosition):
2585         (WTF::toOneBasedTextPosition):
2586         (WTF::ZeroBasedNumber::convertToOneBased):
2587
2588 2010-10-24  Kwang Yul Seo  <skyul@company100.net>
2589
2590         Reviewed by David Kilzer.
2591
2592         Check endianness with __BIG_ENDIAN in RVCT.
2593         https://bugs.webkit.org/show_bug.cgi?id=46122
2594
2595         RVCT defines __BIG_ENDIAN if compiling for a big-endian target.
2596
2597         * wtf/Platform.h:
2598
2599 2010-10-24  Dan Bernstein  <mitz@apple.com>
2600
2601         Rubber-stamped by Dave Kilzer.
2602
2603         Removed empty directories.
2604
2605         * JavaScriptCore: Removed.
2606         * JavaScriptCore/runtime: Removed.
2607
2608 2010-10-24  Patrick Gansterer  <paroga@webkit.org>
2609
2610         Unreviewed, fix typo of last build fix.
2611
2612         * wtf/DateMath.cpp:
2613
2614 2010-10-24  Patrick Gansterer  <paroga@webkit.org>
2615
2616         Unreviewed build fix for chromium.
2617
2618         * wtf/DateMath.cpp: Added missing include.
2619
2620 2010-10-24  Patrick Gansterer  <paroga@webkit.org>
2621
2622         Reviewed by David Kilzer.
2623
2624         Add WTF_ARRAY_LENGTH macro to WTF
2625         https://bugs.webkit.org/show_bug.cgi?id=32828
2626
2627         Unify the different implementations and usages.
2628
2629         * interpreter/Interpreter.cpp:
2630         (JSC::Interpreter::privateExecute):
2631         * runtime/DatePrototype.cpp:
2632         (JSC::formatLocaleDate):
2633         * runtime/JSGlobalObject.cpp:
2634         (JSC::JSGlobalObject::reset):
2635         * runtime/JSONObject.cpp:
2636         (JSC::Stringifier::appendQuotedString):
2637         (JSC::Stringifier::toJSON):
2638         (JSC::Stringifier::appendStringifiedValue):
2639         * runtime/UString.cpp:
2640         (JSC::UString::number):
2641         * wtf/DateMath.cpp:
2642         (WTF::parseDateFromNullTerminatedCharacters):
2643         * wtf/StdLibExtras.h:
2644
2645 2010-10-24  Dirk Schulze  <krit@webkit.org>
2646
2647         Reviewed by Nikolas Zimmermann.
2648
2649         Filter example Chiseled from SVG Wow! is slow
2650         https://bugs.webkit.org/show_bug.cgi?id=48174
2651
2652         Added 'using WTF::ByteArray;' at the end of ByteArray.h
2653
2654         * wtf/ByteArray.h:
2655
2656 2010-10-24  Patrick Gansterer  <paroga@webkit.org>
2657
2658         Reviewed by David Kilzer.
2659
2660         Inline WTF::bitwise_cast and fix style
2661         https://bugs.webkit.org/show_bug.cgi?id=48208
2662
2663         * wtf/StdLibExtras.h:
2664         (WTF::bitwise_cast):
2665         (WTF::bitCount):
2666
2667 2010-10-23  Xan Lopez  <xlopez@igalia.com>
2668
2669         Reviewed by Sam Weinig.
2670
2671         Unify globalData APIs
2672         https://bugs.webkit.org/show_bug.cgi?id=47969
2673
2674         Make JSGlobalObject::globalData return a reference and adapt
2675         callers. This unifies the API with the existing
2676         CallFrame::globalData, which also returns a reference.
2677
2678         * debugger/Debugger.cpp:
2679         (JSC::evaluateInGlobalCallFrame):
2680         * interpreter/CallFrame.h:
2681         * interpreter/Interpreter.cpp:
2682         (JSC::Interpreter::dumpRegisters):
2683         * jsc.cpp:
2684         (runWithScripts):
2685         * parser/JSParser.cpp:
2686         (JSC::jsParse):
2687         * parser/Parser.cpp:
2688         (JSC::Parser::parse):
2689         * parser/Parser.h:
2690         (JSC::Parser::parse):
2691         * runtime/Error.cpp:
2692         (JSC::createError):
2693         (JSC::createEvalError):
2694         (JSC::createRangeError):
2695         (JSC::createReferenceError):
2696         (JSC::createSyntaxError):
2697         (JSC::createTypeError):
2698         (JSC::createURIError):
2699         * runtime/FunctionConstructor.cpp:
2700         (JSC::constructFunction):
2701         * runtime/JSGlobalObject.cpp:
2702         (JSC::JSGlobalObject::~JSGlobalObject):
2703         (JSC::JSGlobalObject::markChildren):
2704         * runtime/JSGlobalObject.h:
2705         (JSC::JSGlobalObject::globalData):
2706
2707 2010-10-23  Dimitri Glazkov  <dglazkov@chromium.org>
2708
2709         Unreviewed, rolling out r70369.
2710         http://trac.webkit.org/changeset/70369
2711         https://bugs.webkit.org/show_bug.cgi?id=47974
2712
2713         Caused weird artifacts in expected results.
2714
2715         * wtf/Platform.h:
2716
2717 2010-10-23  Martin Robinson  <mrobinson@igalia.com>
2718
2719         Reviewed by Xan Lopez.
2720
2721         Crashes randomly in cairo_scaled_font_destroy
2722         https://bugs.webkit.org/show_bug.cgi?id=46794
2723
2724         Make PlatformRefPtr aware of hashTableDeletedValue. When PlatformRefPtr
2725         goes away this should probably be handled in the future via some special
2726         hooks in RefCounted (or its contained type).
2727
2728         * wtf/PlatformRefPtr.h:
2729         (WTF::PlatformRefPtr::~PlatformRefPtr):
2730         (WTF::PlatformRefPtr::clear):
2731         (WTF::::operator):
2732
2733 2010-10-22  Adam Roben  <aroben@apple.com>
2734
2735         Remove the QuartzCorePresent.h mechanism
2736
2737         This header was used to detect whether QuartzCore headers were present
2738         on the system. Everyone should have these headers now so we no longer
2739         need to detect.
2740
2741         Reviewed by Sam Weinig.
2742
2743         * JavaScriptCore.vcproj/JavaScriptCore/build-generated-files.sh: Remove
2744         code to generate QuartzCorePresent.h.
2745
2746         * wtf/Platform.h: Stop including QuartzCorePresent.h on Windows and
2747         collapse all USE_ACCELERATED_COMPOSITING settings into one #ifdef.
2748
2749 2010-10-22  Adam Barth  <abarth@webkit.org>
2750
2751         Unreviewed, rolling out r70290.
2752         http://trac.webkit.org/changeset/70290
2753         https://bugs.webkit.org/show_bug.cgi?id=48111
2754
2755         Undelete Android build files.
2756
2757         * Android.mk: Added.
2758
2759 2010-10-22  Zoltan Herczeg  <zherczeg@webkit.org>
2760
2761         Reviewed by Csaba Osztrogonác.
2762
2763         JSC interpreter regressions after r69940
2764         https://bugs.webkit.org/show_bug.cgi?id=47839
2765
2766         Wrong "if": It should test whether the result exists,
2767         and not the opposite. It is an interpreter bug, hence
2768         the bots does not capture it.
2769
2770         * interpreter/Interpreter.cpp:
2771         (JSC::Interpreter::resolveBase):
2772
2773 2010-10-21  Adam Barth  <abarth@webkit.org>
2774
2775         Reviewed by David Levin.
2776
2777         Remove Android build system
2778         https://bugs.webkit.org/show_bug.cgi?id=48111
2779
2780         * Android.mk: Removed.
2781
2782 2010-10-21  Kwang Yul Seo  <skyul@company100.net>
2783
2784         Reviewed by Kent Tamura.
2785
2786         [BREWMP] Add a String constructor which takes AECHAR*
2787         https://bugs.webkit.org/show_bug.cgi?id=45043
2788
2789         Add String(const AECHAR*) constructor for convenience.
2790
2791         * wtf/text/WTFString.h:
2792
2793 2010-10-21  Carlos Garcia Campos  <cgarcia@igalia.com>
2794
2795         Reviewed by Martin Robinson.
2796
2797         [GTK] Use GCharsetConverter instead of g_iconv in TextCodecGtk
2798         https://bugs.webkit.org/show_bug.cgi?id=47896
2799
2800         * wtf/gobject/GTypedefs.h:
2801
2802 2010-10-21  Adam Barth  <abarth@webkit.org>
2803
2804         Unreviewed, rolling out r70174.
2805         http://trac.webkit.org/changeset/70174
2806         https://bugs.webkit.org/show_bug.cgi?id=41948
2807
2808         This patch reverts a change that causes
2809         http/tests/xmlhttprequest/origin-whitelisting-removal.html to crash.
2810
2811         * interpreter/Interpreter.cpp:
2812         (JSC::Interpreter::throwException):
2813
2814 2010-10-20  Simon Fraser  <simon.fraser@apple.com>
2815
2816         Fix the EFL build.
2817
2818         * wtf/CMakeLists.txt:
2819
2820 2010-10-20  Simon Fraser  <simon.fraser@apple.com>
2821
2822         Fix Windows build: export needed symbols.
2823
2824         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
2825
2826 2010-10-19  Simon Fraser  <simon.fraser@apple.com>
2827
2828         Reviewed by Gavin Barraclough.
2829
2830         https://bugs.webkit.org/show_bug.cgi?id=47851
2831         
2832         Add methods to DecimalNumber to return the buffer length
2833         required for decimal and exponential output.
2834         
2835         Make some of the DecimalNumber code non-inline (no
2836         effect on Sunspider), adding DecimalNumber.cpp to various
2837         build systems.
2838         
2839         Make some DecimalNumber methods 'const'.
2840
2841         * Android.mk:
2842         * Android.v8.wtf.mk:
2843         * GNUmakefile.am:
2844         * JavaScriptCore.exp:
2845         * JavaScriptCore.gypi:
2846         * JavaScriptCore.vcproj/WTF/WTF.vcproj:
2847         * JavaScriptCore.xcodeproj/project.pbxproj:
2848         * runtime/NumberPrototype.cpp:
2849         (JSC::numberProtoFuncToExponential):
2850         (JSC::numberProtoFuncToFixed):
2851         (JSC::numberProtoFuncToPrecision):
2852         * wtf/DecimalNumber.cpp: Added.
2853         (WTF::DecimalNumber::bufferLengthForStringDecimal):
2854         (WTF::DecimalNumber::bufferLengthForStringExponential):
2855         (WTF::DecimalNumber::toStringDecimal):
2856         (WTF::DecimalNumber::toStringExponential):
2857         * wtf/DecimalNumber.h:
2858         (WTF::DecimalNumber::sign):
2859         (WTF::DecimalNumber::exponent):
2860         (WTF::DecimalNumber::significand):
2861         (WTF::DecimalNumber::precision):
2862         * wtf/dtoa.cpp:
2863         (WTF::dtoa):
2864         * wtf/dtoa.h:
2865         * wtf/wtf.pri:
2866
2867 2010-10-20  Sheriff Bot  <webkit.review.bot@gmail.com>
2868
2869         Unreviewed, rolling out r70165.
2870         http://trac.webkit.org/changeset/70165
2871         https://bugs.webkit.org/show_bug.cgi?id=48007
2872
2873         It broke tests on Qt bot (Requested by Ossy on #webkit).
2874
2875         * GNUmakefile.am:
2876         * JavaScriptCore.gypi:
2877         * JavaScriptCore.xcodeproj/project.pbxproj:
2878         * wtf/text/TextPosition.h: Removed.
2879
2880 2010-10-20  Brian Weinstein  <bweinstein@apple.com>
2881
2882         Reviewed by Adam Roben.
2883
2884         Fix the Windows build after r70165. Move the copying of JavaScript headers from JavaScriptCore's post-build
2885         step to JavaScriptCoreGenerated, so the copying is done even when a cpp file in JavaScriptCore is changed.
2886
2887         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreCommon.vsprops:
2888         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreGenerated.make:
2889
2890 2010-10-20  Dumitru Daniliuc  <dumi@chromium.org>
2891
2892         Unreviewed, fixing the Win build.
2893
2894         * JavaScriptCore.vcproj/WTF/WTF.vcproj:
2895
2896 2010-10-20  Geoffrey Garen  <ggaren@apple.com>
2897
2898         Reviewed by Darin Adler.
2899         
2900         https://bugs.webkit.org/show_bug.cgi?id=41948
2901         REGRESSION(r60392): Registerfile can be unwound too far following an exception
2902
2903         * interpreter/Interpreter.cpp:
2904         (JSC::Interpreter::throwException): Walk the stack to calculate the high
2905         water mark currently in use. It's not safe to assume that the current
2906         CallFrame's high water mark is the highest high water mark because
2907         calls do not always set up at the end of a CallFrame. A large caller
2908         CallFrame can encompass a small callee CallFrame.
2909
2910 2010-10-20  Peter Rybin  <peter.rybin@gmail.com>
2911
2912         Reviewed by Adam Barth.
2913
2914         HTML parser should provide script column position within HTML document to JavaScript engine
2915         https://bugs.webkit.org/show_bug.cgi?id=45271
2916
2917         Adds TextPosition* classes -- a structure that stores line/column/generation
2918         level coordinates inside text document. Adds *BasedNumber classes -- typesafe int
2919         wrappers that emphasize whether int number is used as zero-based or
2920         one-based.
2921
2922         * GNUmakefile.am:
2923         * JavaScriptCore.gypi:
2924         * JavaScriptCore.xcodeproj/project.pbxproj:
2925         * wtf/text/TextPosition.h: Added.
2926         (WTF::TextPosition::TextPosition):
2927         (WTF::TextPosition::minimumPosition):
2928         (WTF::TextPosition::belowRangePosition):
2929         (WTF::ZeroBasedNumber::fromZeroBasedInt):
2930         (WTF::ZeroBasedNumber::ZeroBasedNumber):
2931         (WTF::ZeroBasedNumber::zeroBasedInt):
2932         (WTF::ZeroBasedNumber::base):
2933         (WTF::ZeroBasedNumber::belowBase):
2934         (WTF::OneBasedNumber::fromOneBasedInt):
2935         (WTF::OneBasedNumber::OneBasedNumber):
2936         (WTF::OneBasedNumber::oneBasedInt):
2937         (WTF::OneBasedNumber::convertAsZeroBasedInt):
2938         (WTF::OneBasedNumber::convertToZeroBased):
2939         (WTF::OneBasedNumber::base):
2940         (WTF::OneBasedNumber::belowBase):
2941         (WTF::toZeroBasedTextPosition):
2942         (WTF::toOneBasedTextPosition):
2943         (WTF::ZeroBasedNumber::convertToOneBased):
2944
2945 2010-10-19  Kwang Yul Seo  <skyul@company100.net>
2946
2947         Reviewed by David Kilzer.
2948
2949         [BREWMP] Turn off JIT for simulator build
2950         https://bugs.webkit.org/show_bug.cgi?id=47937
2951
2952         We don't need to test x86 JIT.
2953
2954         * wtf/Platform.h:
2955
2956 2010-10-19  Oliver Hunt  <oliver@apple.com>
2957
2958         Reviewed by Geoffrey Garen.
2959
2960         Remove support for JSVALUE32 from JSC
2961         https://bugs.webkit.org/show_bug.cgi?id=47948
2962
2963         Remove all the code for supporting JSVALUE32 from JSC.
2964
2965         * jit/JIT.cpp:
2966         (JSC::JIT::privateCompileMainPass):
2967         (JSC::JIT::privateCompileSlowCases):
2968         * jit/JIT.h:
2969         * jit/JITArithmetic.cpp:
2970         (JSC::JIT::emit_op_lshift):
2971         (JSC::JIT::emitSlow_op_lshift):
2972         (JSC::JIT::emit_op_rshift):
2973         (JSC::JIT::emitSlow_op_rshift):
2974         (JSC::JIT::emit_op_urshift):
2975         (JSC::JIT::emitSlow_op_urshift):
2976         (JSC::JIT::emit_op_jnless):
2977         (JSC::JIT::emitSlow_op_jnless):
2978         (JSC::JIT::emit_op_jless):
2979         (JSC::JIT::emitSlow_op_jless):
2980         (JSC::JIT::emit_op_jlesseq):
2981         (JSC::JIT::emitSlow_op_jlesseq):
2982         (JSC::JIT::emit_op_bitand):
2983         (JSC::JIT::emit_op_post_inc):
2984         (JSC::JIT::emit_op_post_dec):
2985         (JSC::JIT::emit_op_pre_inc):
2986         (JSC::JIT::emit_op_pre_dec):
2987         (JSC::JIT::emit_op_mod):
2988         (JSC::JIT::emitSlow_op_mod):
2989         * jit/JITCall.cpp:
2990         * jit/JITInlineMethods.h:
2991         (JSC::JIT::emitGetFromCallFrameHeaderPtr):
2992         (JSC::JIT::emitGetFromCallFrameHeader32):
2993         * jit/JITOpcodes.cpp:
2994         (JSC::JIT::emit_op_loop_if_lesseq):
2995         (JSC::JIT::emit_op_bitnot):
2996         (JSC::JIT::emit_op_next_pname):
2997         * jit/JITPropertyAccess.cpp:
2998         (JSC::JIT::emit_op_get_by_val):
2999         (JSC::JIT::emit_op_put_by_val):
3000         * jit/JITStubs.h:
3001         * jit/JSInterfaceJIT.h:
3002         * jit/SpecializedThunkJIT.h:
3003         (JSC::SpecializedThunkJIT::returnDouble):
3004         (JSC::SpecializedThunkJIT::tagReturnAsInt32):
3005         * jit/ThunkGenerators.cpp:
3006         (JSC::sqrtThunkGenerator):
3007         (JSC::powThunkGenerator):
3008         * runtime/Collector.cpp:
3009         (JSC::isPossibleCell):
3010         (JSC::typeName):
3011         * runtime/JSCell.h:
3012         * runtime/JSGlobalData.cpp:
3013         (JSC::JSGlobalData::JSGlobalData):
3014         * runtime/JSGlobalData.h:
3015         * runtime/JSGlobalObject.h:
3016         (JSC::Structure::prototypeForLookup):
3017         * runtime/JSImmediate.h:
3018         (JSC::reinterpretIntptrToDouble):
3019         (JSC::JSImmediate::isIntegerNumber):
3020         (JSC::JSImmediate::isDouble):
3021         (JSC::JSImmediate::areBothImmediateIntegerNumbers):
3022         (JSC::JSImmediate::makeDouble):
3023         (JSC::JSImmediate::doubleValue):
3024         (JSC::JSImmediate::toBoolean):
3025         (JSC::JSImmediate::fromNumberOutsideIntegerRange):
3026         (JSC::JSImmediate::from):
3027         (JSC::JSImmediate::toDouble):
3028         (JSC::JSFastMath::rightShiftImmediateNumbers):
3029         * runtime/JSNumberCell.cpp:
3030         * runtime/JSNumberCell.h:
3031         * runtime/JSObject.h:
3032         (JSC::JSObject::JSObject):
3033         * runtime/JSValue.h:
3034         * runtime/NumberObject.h:
3035         * wtf/Platform.h:
3036
3037 2010-10-19  Csaba Osztrogonác  <ossy@webkit.org>
3038
3039         Reviewed by Geoffrey Garen.
3040
3041         BytecodeGenerator::m_lastOpcodePosition must be initialized in all constructors
3042         https://bugs.webkit.org/show_bug.cgi?id=47920
3043
3044         * bytecompiler/BytecodeGenerator.cpp:
3045         (JSC::BytecodeGenerator::BytecodeGenerator): Add missing member initialization.
3046
3047 2010-10-19  Kwang Yul Seo  <skyul@company100.net>
3048
3049         Reviewed by David Kilzer.
3050
3051         RVCT fails to compile DateMath.cpp due to overloaded function pow
3052         https://bugs.webkit.org/show_bug.cgi?id=47844
3053
3054         Choose std::pow(double, double) among multiple overloaded pow functions
3055         to fix build for RVCT.
3056
3057         * wtf/DateMath.cpp:
3058         (WTF::parseES5DateFromNullTerminatedCharacters):
3059
3060 2010-10-19  Patrick Gansterer  <paroga@webkit.org>
3061
3062         Reviewed by David Kilzer.
3063
3064         Use UChar instead of wchar_t in UnicodeWinCE
3065         https://bugs.webkit.org/show_bug.cgi?id=47904
3066
3067         Make UnicodeWinCE more portable, so we can use it for other ports too.
3068
3069         * wtf/unicode/wince/UnicodeWinCE.cpp:
3070         (WTF::Unicode::toLower):
3071         (WTF::Unicode::toUpper):
3072         (WTF::Unicode::foldCase):
3073         (WTF::Unicode::isPrintableChar):
3074         (WTF::Unicode::isSpace):
3075         (WTF::Unicode::isLetter):
3076         (WTF::Unicode::isUpper):
3077         (WTF::Unicode::isLower):
3078         (WTF::Unicode::isDigit):
3079         (WTF::Unicode::isPunct):
3080         (WTF::Unicode::isAlphanumeric):
3081         (WTF::Unicode::toTitleCase):
3082         (WTF::Unicode::mirroredChar):
3083         (WTF::Unicode::digitValue):
3084         * wtf/unicode/wince/UnicodeWinCE.h:
3085         (WTF::Unicode::isSeparatorSpace):
3086         (WTF::Unicode::isHighSurrogate):
3087         (WTF::Unicode::isLowSurrogate):
3088         (WTF::Unicode::umemcasecmp):
3089         (WTF::Unicode::surrogateToUcs4):
3090
3091 2010-10-19  Patrick Gansterer  <paroga@webkit.org>
3092
3093         Reviewed by Andreas Kling.
3094
3095         Fix style of UnicodeWinCE
3096         https://bugs.webkit.org/show_bug.cgi?id=47818
3097
3098         * wtf/unicode/wince/UnicodeWinCE.cpp:
3099         (WTF::Unicode::toLower):
3100         (WTF::Unicode::toUpper):
3101         * wtf/unicode/wince/UnicodeWinCE.h:
3102
3103 2010-10-18  Xan Lopez  <xlopez@igalia.com>
3104
3105         Reviewed by Martin Robinson.
3106
3107         * GNUmakefile.am: add missing file.
3108
3109 2010-10-18  Oliver Hunt  <oliver@apple.com>
3110
3111         Reviewed by Sam Weinig.
3112
3113         Strict mode: Functions created with the function constructor don't implement strict mode semantics
3114         https://bugs.webkit.org/show_bug.cgi?id=47860
3115
3116         When creating the FunctionExecutable for a new function the function constructor
3117         was always passing false for whether or not a function was strict, rather than
3118         using the information from the freshly parsed function itself.
3119
3120         * runtime/Executable.cpp:
3121         (JSC::FunctionExecutable::fromGlobalCode):
3122
3123 2010-10-18  Oliver Hunt  <oliver@apple.com>
3124
3125         Reviewed by Darin Adler.
3126
3127         Strict mode: |this| should be undefined if it is not explicitly provided
3128         https://bugs.webkit.org/show_bug.cgi?id=47833
3129
3130         To make strict mode behave correctly we want to pass undefined instead of null
3131         as the default this value.  This has no impact on behaviour outside of strict
3132         mode as both values are replaced with the global object if necessary.
3133
3134         * bytecompiler/NodesCodegen.cpp:
3135         (JSC::FunctionCallValueNode::emitBytecode):
3136         (JSC::FunctionCallResolveNode::emitBytecode):
3137         (JSC::CallFunctionCallDotNode::emitBytecode):
3138         (JSC::ApplyFunctionCallDotNode::emitBytecode):
3139
3140
3141 2010-10-18  Darin Adler  <darin@apple.com>
3142
3143         Reviewed by Anders Carlsson.
3144
3145         Make a nullptr that works with OwnPtr and RefPtr
3146         https://bugs.webkit.org/show_bug.cgi?id=47756
3147
3148         * JavaScriptCore.xcodeproj/project.pbxproj: Added NullPtr.h.
3149
3150         * wtf/NullPtr.h: Added.
3151
3152         * wtf/OwnArrayPtr.h: Add an overload of = taking nullptr.
3153         * wtf/OwnPtr.h: Ditto.
3154         * wtf/PassOwnArrayPtr.h: Ditto.
3155         * wtf/PassOwnPtr.h: Ditto.
3156         * wtf/PassRefPtr.h: Ditto.
3157         * wtf/RefPtr.h: Ditto.
3158         * wtf/RetainPtr.h: Ditto.
3159
3160 2010-10-18  Oliver Hunt  <oliver@apple.com>
3161
3162         Reviewed by Sam Weinig.
3163
3164         Strict mode: JIT doesn't check for |this| being an immediate before dereferencing
3165         https://bugs.webkit.org/show_bug.cgi?id=47826
3166
3167         There's no guarantee that |this| will be a cell in a strict mode function, so
3168         don't claim that it is.
3169
3170         * bytecode/CodeBlock.h:
3171         (JSC::CodeBlock::isKnownNotImmediate):
3172
3173 2010-10-18  Zoltan Herczeg  <zherczeg@webkit.org>
3174
3175         Reviewed by Oliver Hunt.
3176
3177         if (0) throw "x" ; else { } throws parse error after r69906
3178         https://bugs.webkit.org/show_bug.cgi?id=47807
3179
3180         r69906 introduced a bug: the semicolon is not parsed after a throw
3181         expression anymore. Thus, the semicolon terminates the "if" parsing
3182         in the example above, and the else token results a parse error.
3183
3184         * parser/JSParser.cpp:
3185         (JSC::JSParser::parseThrowStatement):
3186
3187 2010-10-18  Peter Varga  <pvarga@inf.u-szeged.hu>
3188
3189         Reviewed by Andreas Kling.
3190
3191         Remove some unnecessary lines of code from Parser.cpp
3192         https://bugs.webkit.org/show_bug.cgi?id=47816
3193
3194         * parser/Parser.cpp:
3195
3196 2010-10-18  Xan Lopez  <xlopez@igalia.com>
3197
3198         Reviewed by Csaba Osztrogonác.
3199
3200         Build broken with JIT disabled
3201         https://bugs.webkit.org/show_bug.cgi?id=47801
3202
3203         This is a regression caused by r69940.
3204
3205         * interpreter/Interpreter.cpp:
3206         (JSC::Interpreter::resolveBase):
3207
3208 2010-10-18  Zoltan Horvath  <zoltan@webkit.org>
3209
3210         Reviewed by Darin Adler.
3211
3212         Change FastAllocBase implementation into a macro
3213         https://bugs.webkit.org/show_bug.cgi?id=42998
3214
3215         It was investigated in bug #33896 that inheriting classes from FastAllocBase 
3216         can result in objects getting larger which leads to memory regressions. 
3217         Using a macro instead of inheriting classes from FastAllocBase would solve the issue. 
3218
3219         * wtf/FastAllocBase.h: Add a WTF_MAKE_FAST_ALLOCATED macro
3220
3221 2010-10-17  Oliver Hunt  <oliver@apple.com>
3222
3223         Reviewed by Sam Weinig.
3224
3225         Strict mode: arguments is not valid as the base expression for pre- or post-fix expressions
3226         https://bugs.webkit.org/show_bug.cgi?id=47791
3227
3228         Simple fix, check for arguments in addition to eval.
3229
3230         * parser/JSParser.cpp:
3231         (JSC::JSParser::parseUnaryExpression):
3232
3233 2010-10-17  Oliver Hunt  <oliver@apple.com>
3234
3235         Reviewed by Sam Weinig.
3236
3237         Strict mode: Assignment that would create a global should be a late ReferenceError, not a syntax failure
3238         https://bugs.webkit.org/show_bug.cgi?id=47788
3239
3240         Fixing this required a couple of changes:
3241          * resolve_base now has a flag to indicate whether it is being used for a put in strict mode.
3242            this allows us to throw an exception when we're doing a completely generic resolve for
3243            assignment, and that assignment would create a new global.
3244          * There is a new opcode 'op_ensure_property_exists' that is used to determine whether
3245            the property being assigned to already exists on the global object.  This currently
3246            has no caching, but such caching could be added relatively trivially.  It is only used
3247            in the case where we know that a property will be placed on the global object, and
3248            we cannot verify that the property already exists.
3249
3250         In the jit we plant a call to cti_op_resolve_base_strict_put in the effected case rather
3251         than making op_resolve_base have an additional runtime branch.
3252
3253         There's also a new helper function to create the exception for the invalid assignment.
3254
3255         * bytecode/CodeBlock.cpp:
3256         (JSC::CodeBlock::dump):
3257         * bytecode/Opcode.h:
3258         * bytecompiler/BytecodeGenerator.cpp:
3259         (JSC::BytecodeGenerator::emitResolveBase):
3260         (JSC::BytecodeGenerator::emitResolveBaseForPut):
3261         * bytecompiler/BytecodeGenerator.h:
3262         * bytecompiler/NodesCodegen.cpp:
3263         (JSC::AssignResolveNode::emitBytecode):
3264         (JSC::ForInNode::emitBytecode):
3265         * interpreter/Interpreter.cpp:
3266         (JSC::Interpreter::resolveBase):
3267         (JSC::Interpreter::privateExecute):
3268         * jit/JIT.cpp:
3269         (JSC::JIT::privateCompileMainPass):
3270         * jit/JIT.h:
3271         * jit/JITOpcodes.cpp:
3272         (JSC::JIT::emit_op_resolve_base):
3273         (JSC::JIT::emit_op_ensure_property_exists):
3274         * jit/JITOpcodes32_64.cpp:
3275         (JSC::JIT::emit_op_resolve_base):
3276         (JSC::JIT::emit_op_ensure_property_exists):
3277         * jit/JITStubs.cpp:
3278         (JSC::DEFINE_STUB_FUNCTION):
3279         * jit/JITStubs.h:
3280         * parser/JSParser.cpp:
3281         (JSC::JSParser::parseProgram):
3282         * runtime/ExceptionHelpers.cpp:
3283         (JSC::createErrorForInvalidGlobalAssignment):
3284         * runtime/ExceptionHelpers.h:
3285         * runtime/Operations.h:
3286         (JSC::resolveBase):
3287
3288 2010-10-17  Simon Fraser  <simon.fraser@apple.com>
3289
3290         First part of fix for Windows build failure. Will wait for the
3291         next set of link errors to determine the mangled forms for dtoaRoundSF
3292         and dtoaRoundDP.
3293
3294         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
3295
3296 2010-10-17  Simon Fraser  <simon.fraser@apple.com>
3297
3298         Reviewed by Nikolas Zimmermann.
3299
3300         Very large and small numbers fail to round-trip through CSS
3301         https://bugs.webkit.org/show_bug.cgi?id=20674
3302         
3303         New exports required to use DecimalNumber in WebCore.
3304
3305         * JavaScriptCore.exp:
3306         * JavaScriptCore.xcodeproj/project.pbxproj:
3307
3308 2010-10-16  Kyusun Kim  <maniagoon@company100.net>
3309
3310         Reviewed by Alexey Proskuryakov.
3311
3312         Add using declarations for currentTimeMS() and parseDateFromNullTerminatedCharacters()
3313         https://bugs.webkit.org/show_bug.cgi?id=47758
3314
3315         * wtf/CurrentTime.h:
3316         * wtf/DateMath.h:
3317
3318 2010-10-16  Patrick Gansterer  <paroga@webkit.org>
3319
3320         Reviewed by Adam Barth.
3321
3322         Rename StringHasherFunctions.h to StringHasher.h
3323         https://bugs.webkit.org/show_bug.cgi?id=47200
3324
3325         Now StringHasherFunctions.h only contains the StringHasher class, so rename it to the correct name.
3326
3327         * GNUmakefile.am:
3328         * JavaScriptCore.gypi:
3329         * JavaScriptCore.xcodeproj/project.pbxproj:
3330         * wtf/StringHashFunctions.h: Removed.
3331         * wtf/StringHasher.h: Copied from JavaScriptCore/wtf/StringHashFunctions.h.
3332         * wtf/text/StringHash.h:
3333         * wtf/text/StringImpl.h:
3334
3335 2010-10-15  Oliver Hunt  <oliver@apple.com>
3336
3337         Reviewed by Sam Weinig.
3338
3339         Automatic Semicolon Insertion incorrectly inserts semicolon after break, continue, and return followed by a newline
3340         https://bugs.webkit.org/show_bug.cgi?id=47762
3341
3342         The old YACC parser depended on the lexer for some classes of semicolon insertion.
3343         The new parser handles ASI entirely on its own so when the lexer inserts a semicolon
3344         on its own the net result is a spurious semicolon in the input stream.  This can result
3345         in incorrect parsing in some cases:
3346
3347         if (0)
3348             break
3349         ;else {}
3350
3351         Would result in a parse failure as the output from the lexer is essentially
3352
3353         if (0)
3354              break
3355         ;;else
3356
3357         So the second semicolon is interpreted as a empty statement, which terminates the if,
3358         making the else an error.
3359
3360
3361         * parser/JSParser.cpp:
3362         (JSC::JSParser::parseThrowStatement):
3363           Parsing of throw statement was wrong, and only worked due to the weird behaviour
3364           in the lexer
3365         * parser/Lexer.cpp:
3366         (JSC::Lexer::lex):
3367           Remove bogus semicolon insertion from the newline handling
3368
3369 2010-10-15  Nikolas Zimmermann  <nzimmermann@rim.com>
3370
3371         Reviewed by Dirk Schulze.
3372
3373         Replace some String::format() usages by StringConcatenate in WebKit
3374         https://bugs.webkit.org/show_bug.cgi?id=47714
3375
3376         * wtf/text/StringConcatenate.h: Add UChar specific StringTypeAdapter, to accept single UChars in makeString().
3377
3378 2010-10-15  Ilya Tikhonovsky  <loislo@chromium.org>
3379
3380         Unreviewed build fix for Debug Leopard which is failng to compile after r69842.
3381
3382         * yarr/RegexInterpreter.cpp:
3383         (JSC::Yarr::ByteCompiler::emitDisjunction):
3384
3385 2010-10-15  Peter Varga  <pvarga@inf.u-szeged.hu>
3386
3387         Reviewed by Gavin Barraclough.
3388
3389         The parenthetical assertion checking isn't working in some cases with YARR
3390         Interpreter
3391         https://bugs.webkit.org/show_bug.cgi?id=46893
3392
3393         Calculate the countToCheck value of a TypeParentheticalAssertion by
3394         subtracting the number of characters which follows
3395         a TypeParentheticalAssertion term with the number of characters which should
3396         be matched by terms which are contained
3397         in the TypeParentheticalAssertion term (minimumSize).
3398
3399         * yarr/RegexInterpreter.cpp:
3400         (JSC::Yarr::ByteCompiler::emitDisjunction):
3401
3402 2010-10-14  Nathan Vander Wilt  <nate@andyet.net>
3403
3404         Reviewed by Darin Adler.
3405
3406         Added parser for ECMAScript 5 standard date format, so Date.parse can handle RFC 3339 timestamps: https://bugs.webkit.org/show_bug.cgi?id=44632
3407
3408         * runtime/DateConversion.cpp:
3409         (JSC::parseDate):
3410         * wtf/DateMath.cpp:
3411         (WTF::ymdhmsToSeconds):
3412         (WTF::parseES5DateFromNullTerminatedCharacters):
3413         * wtf/DateMath.h:
3414
3415 2010-10-14  Nikolas Zimmermann  <nzimmermann@rim.com>
3416
3417         Reviewed by Gavin Barraclough.
3418
3419         Replace lots of String::format() usages by StringConcatenate
3420         https://bugs.webkit.org/show_bug.cgi?id=47664
3421
3422         Add StringTypeAdapter<char> to accept single characters for makeString().
3423
3424         * wtf/text/StringConcatenate.h:
3425         (WTF::makeString):
3426
3427 2010-10-14  David Goodwin  <david_goodwin@apple.com>
3428
3429         Reviewed by Darin Adler.
3430
3431         need way to measure size of JITed ARM code
3432         https://bugs.webkit.org/show_bug.cgi?id=47121
3433
3434         * assembler/LinkBuffer.h:
3435         (JSC::LinkBuffer::linkCode):
3436         (JSC::LinkBuffer::dumpLinkStats):
3437         (JSC::LinkBuffer::dumpCode):
3438
3439 2010-10-14  Peter Varga  <pvarga@inf.u-szeged.hu>
3440
3441         Reviewed by Gavin Barraclough.
3442
3443         The backreference checking isn't working in some cases with YARR Interpreter
3444         https://bugs.webkit.org/show_bug.cgi?id=46904
3445
3446         The Interpreter::matchBackReference() function returns true without matching
3447         when a backreference points to the same parentheses where it is.
3448
3449         * yarr/RegexInterpreter.cpp:
3450         (JSC::Yarr::Interpreter::matchBackReference):
3451
3452 2010-10-14  No'am Rosenthal  <noam.rosenthal@nokia.com>
3453
3454         Reviewed by Andreas Kling.
3455
3456         [Qt] Text breaking is slow: enable ICU as an opt-in
3457         https://bugs.webkit.org/show_bug.cgi?id=40332
3458
3459         Added a config flag that enables ICU as an opt-in instead of the Qt specific code.
3460         Because of the inclusion of ICU headers, some explicit casting was necessary in UnicodeQt4.h
3461
3462         * JavaScriptCore.pri:
3463         * wtf/unicode/qt4/UnicodeQt4.h:
3464         (WTF::Unicode::toLower):
3465         (WTF::Unicode::toUpper):
3466         (WTF::Unicode::toTitleCase):
3467         (WTF::Unicode::foldCase):
3468         (WTF::Unicode::isPrintableChar):
3469         (WTF::Unicode::isSeparatorSpace):
3470         (WTF::Unicode::isPunct):
3471         (WTF::Unicode::isLower):
3472         (WTF::Unicode::mirroredChar):
3473         (WTF::Unicode::combiningClass):
3474         (WTF::Unicode::direction):
3475         (WTF::Unicode::category):
3476
3477 2010-10-14  Anton Faern  <anton@bladehawke.com>
3478
3479         Reviewed by Csaba Osztrogonác.
3480
3481         https://bugs.webkit.org/show_bug.cgi?id=47658
3482         NetBSD was not included in the WTF_PLATFORM_FOO to WTF_OS_FOO
3483         change.  This means that OS(NETBSD) is also undefined.
3484
3485         * wtf/Platform.h: s/_PLATFORM_/_OS_/ for NetBSD
3486
3487 2010-10-13  David Goodwin  <david_goodwin@apple.com>
3488
3489         Reviewed by Oliver Hunt.
3490
3491         ARMv7 JIT should generated conditional branches when possible
3492         https://bugs.webkit.org/show_bug.cgi?id=47384
3493
3494         Use different jump padding sizes for conditional and unconditional
3495         jumps (12 bytes and 10 bytes respectively). This allows the JIT to
3496         include the IT instruction as part of the conditional jump sequence
3497         which in turn allows it to optimize away the IT using an ARMv7 
3498         conditional branch instruction. Use 2-byte B(T1) and 4-byte B(T3) for
3499         conditional branches when displacement is in range. Also use IT/B(T4)
3500         for conditional branch when displacement does not fit in B(T3).
3501
3502         For unconditional jump, instruction selection options are:
3503         B(T2), B(T4), MOVW/MOVT/BX. For conditional jump, instruction selection
3504         options are: B(T1), B(T3), IT/B(T4), ITTT/MOVW/MOVT/BX.
3505
3506         * assembler/ARMv7Assembler.cpp:
3507         * assembler/ARMv7Assembler.h:
3508         (JSC::ARMv7Assembler::JmpSrc::JmpSrc):
3509         (JSC::ARMv7Assembler::ifThenElse):
3510         (JSC::ARMv7Assembler::jumpSizeDelta):
3511         (JSC::ARMv7Assembler::canCompact):
3512         (JSC::ARMv7Assembler::computeJumpType):
3513         (JSC::ARMv7Assembler::link):
3514         (JSC::ARMv7Assembler::canBeJumpT1):
3515         (JSC::ARMv7Assembler::canBeJumpT3):
3516         (JSC::ARMv7Assembler::canBeJumpT4):
3517         (JSC::ARMv7Assembler::linkJumpT1):
3518         (JSC::ARMv7Assembler::linkJumpT3):
3519         (JSC::ARMv7Assembler::linkJumpT4):
3520         (JSC::ARMv7Assembler::linkConditionalJumpT4):
3521         (JSC::ARMv7Assembler::linkBX):
3522         (JSC::ARMv7Assembler::linkConditionalBX):
3523         (JSC::ARMv7Assembler::linkJumpAbsolute):
3524         * assembler/LinkBuffer.h:
3525         (JSC::LinkBuffer::linkCode):
3526         * assembler/MacroAssemblerARMv7.h:
3527         (JSC::MacroAssemblerARMv7::canCompact):
3528         (JSC::MacroAssemblerARMv7::computeJumpType):
3529         (JSC::MacroAssemblerARMv7::jumpSizeDelta):
3530         (JSC::MacroAssemblerARMv7::jump):
3531         (JSC::MacroAssemblerARMv7::nearCall):
3532         (JSC::MacroAssemblerARMv7::call):
3533         (JSC::MacroAssemblerARMv7::ret):
3534         (JSC::MacroAssemblerARMv7::tailRecursiveCall):
3535         (JSC::MacroAssemblerARMv7::makeJump):
3536         (JSC::MacroAssemblerARMv7::makeBranch):
3537
3538 2010-10-13  Fridrich Strba  <fridrich.strba@bluewin.ch>
3539
3540         Reviewed by Darin Adler.
3541
3542         Don't depend on Windows on sched_yield and sched.h
3543         https://bugs.webkit.org/show_bug.cgi?id=45543
3544