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