2007-12-18 Xan Lopez <xan@gnome.org>
[WebKit-https.git] / JavaScriptCore / ChangeLog
1 2007-12-18  Xan Lopez  <xan@gnome.org>
2
3         Reviewed by Geoff.
4
5         Fix http://bugs.webkit.org/show_bug.cgi?id=14521
6         Bug 14521: JavaScriptCore fails to build on Linux/PPC gcc 4.1.2
7         
8         * wtf/TCSpinLock.h:
9         (TCMalloc_SpinLock::Unlock):
10
11         Use less strict memory operand constraint on inline asm generation.
12         PLATFORM(DARWIN) left unpatched due to Apple's GCC bug.
13
14         Patch by David Kilzer <ddkilzer@webkit.org>
15
16 2007-12-18  Mark Rowe  <mrowe@apple.com>
17
18         Rubber-stamped by Maciej Stachowiak.
19
20         Remove outdated and non-functioning project files for the Apollo port.
21
22         * JavaScriptCore.apolloproj: Removed.
23
24 2007-12-18  Darin Adler  <darin@apple.com>
25
26         - fix Windows build
27
28         * pcre/pcre_exec.cpp:
29         (jsRegExpExecute): Change back from false/true to 0/1 -- I probably should not have
30         deleted MATCH_MATCH and MATCH_NOMATCH, but I'm going to leave them out.
31
32 2007-12-18  Darin Adler  <darin@apple.com>
33
34         Reviewed by Geoff.
35
36         - fix http://bugs.webkit.org/show_bug.cgi?id=16458
37           REGRESSION (r28164): regular expressions can now hang due to lack of a match limit
38           <rdar://problem/5636067>
39
40         Test: fast/regex/slow.html
41
42         Slows down SunSpider a bit (about 1.01x); filed a bug to follow up on that:
43         http://bugs.webkit.org/show_bug.cgi?id=16503
44
45         * pcre/pcre.h: Changed name of error code to not specifically mention "recursion".
46         * pcre/pcre_exec.cpp:
47         (match): Replaced the depth limit, MATCH_RECURSION_LIMIT, with a total match looping
48         limit, matchLimit. Also eliminated the constants for MATCH_MATCH and MATCH_NOMATCH,
49         since they are just true and false (1 and 0).
50         (jsRegExpExecute): More of the MATCH_MATCH change.
51
52 2007-12-17  Darin Adler  <darin@apple.com>
53
54         - speculative build fix for non-gcc platforms
55
56         * pcre/pcre_exec.cpp: (match): Remove unused cases from return switch.
57
58 2007-12-16  Mark Rowe  <mrowe@apple.com>
59
60         Speculative build fix for non-Mac platforms.
61
62         * pcre/pcre_compile.cpp: Include string.h for memset, memmove, etc.
63
64 2007-12-16  Darin Adler  <darin@apple.com>
65
66         Reviewed by Maciej.
67
68         - http://bugs.webkit.org/show_bug.cgi?id=16438
69         - removed some more unused code
70         - changed quite a few more names to WebKit-style
71         - moved more things out of pcre_internal.h
72         - changed some indentation to WebKit-style
73         - improved design of the functions for reading and writing
74           2-byte values from the opcode stream (in pcre_internal.h)
75
76         * pcre/dftables.cpp:
77         (main): Added the kjs prefix a normal way in lieu of using macros.
78
79         * pcre/pcre_compile.cpp: Moved some definitions here from pcre_internal.h.
80         (errorText): Name changes, fewer typedefs.
81         (checkEscape): Ditto. Changed uppercase conversion to use toASCIIUpper.
82         (isCountedRepeat): Name change.
83         (readRepeatCounts): Name change.
84         (firstSignificantOpcode): Got rid of the use of OP_lengths, which is
85         very lightly used here. Hard-coded the length of OP_BRANUMBER.
86         (firstSignificantOpcodeSkippingAssertions): Ditto. Also changed to
87         use the advanceToEndOfBracket function.
88         (getOthercaseRange): Name changes.
89         (encodeUTF8): Ditto.
90         (compileBranch): Name changes. Removed unused after_manual_callout and
91         the code to handle it. Removed code to handle OP_ONCE since we never
92         emit this opcode. Changed to use advanceToEndOfBracket in more places.
93         (compileBracket): Name changes.
94         (branchIsAnchored): Removed code to handle OP_ONCE since we never emit
95         this opcode.
96         (bracketIsAnchored): Name changes.
97         (branchNeedsLineStart): More fo the same.
98         (bracketNeedsLineStart): Ditto.
99         (branchFindFirstAssertedCharacter): Removed OP_ONCE code.
100         (bracketFindFirstAssertedCharacter): More of the same.
101         (calculateCompiledPatternLengthAndFlags): Ditto.
102         (returnError): Name changes.
103         (jsRegExpCompile): Ditto.
104
105         * pcre/pcre_exec.cpp: Moved some definitions here from pcre_internal.h.
106         (matchRef): Updated names.
107         Improved macros to use the do { } while(0) idiom so they expand to single
108         statements rather than to blocks or multiple statements. And refeactored
109         the recursive match macros.
110         (MatchStack::pushNewFrame): Name changes.
111         (getUTF8CharAndIncrementLength): Name changes.
112         (match): Name changes. Removed the ONCE opcode.
113         (jsRegExpExecute): Name changes.
114
115         * pcre/pcre_internal.h: Removed quite a few unneeded includes. Rewrote
116         quite a few comments. Removed the macros that add kjs prefixes to the
117         functions with external linkage; instead renamed the functions. Removed
118         the unneeded typedefs pcre_uint16, pcre_uint32, and uschar. Removed the
119         dead and not-all-working code for LINK_SIZE values other than 2, although
120         we aim to keep the abstraction working. Removed the OP_LENGTHS macro.
121         (put2ByteValue): Replaces put2ByteOpcodeValueAtOffset.
122         (get2ByteValue): Replaces get2ByteOpcodeValueAtOffset.
123         (put2ByteValueAndAdvance): Replaces put2ByteOpcodeValueAtOffsetAndAdvance.
124         (putLinkValueAllowZero): Replaces putOpcodeValueAtOffset; doesn't do the
125         addition, since a comma is really no better than a plus sign. Added an
126         assertion to catch out of range values and changed the parameter type to
127         int rather than unsigned.
128         (getLinkValueAllowZero): Replaces getOpcodeValueAtOffset.
129         (putLinkValue): New function that most former callers of the
130         putOpcodeValueAtOffset function can use; asserts the value that is
131         being stored is non-zero and then calls putLinkValueAllowZero.
132         (getLinkValue): Ditto.
133         (putLinkValueAndAdvance): Replaces putOpcodeValueAtOffsetAndAdvance. No
134         caller was using an offset, which makes sense given the advancing behavior.
135         (putLinkValueAllowZeroAndAdvance): Ditto.
136         (isBracketOpcode): Added. For use in an assertion.
137         (advanceToEndOfBracket): Renamed from moveOpcodePtrPastAnyAlternateBranches,
138         and removed comments about how it's not well designed. This function takes
139         a pointer to the beginning of a bracket and advances to the end of the
140         bracket.
141
142         * pcre/pcre_tables.cpp: Updated names.
143         * pcre/pcre_ucp_searchfuncs.cpp:
144         (kjs_pcre_ucp_othercase): Ditto.
145         * pcre/pcre_xclass.cpp:
146         (getUTF8CharAndAdvancePointer): Ditto.
147         (kjs_pcre_xclass): Ditto.
148         * pcre/ucpinternal.h: Ditto.
149
150         * wtf/ASCIICType.h:
151         (WTF::isASCIIAlpha): Added an int overload, like the one we already have for
152         isASCIIDigit.
153         (WTF::isASCIIAlphanumeric): Ditto.
154         (WTF::isASCIIHexDigit): Ditto.
155         (WTF::isASCIILower): Ditto.
156         (WTF::isASCIISpace): Ditto.
157         (WTF::toASCIILower): Ditto.
158         (WTF::toASCIIUpper): Ditto.
159
160 2007-12-16  Darin Adler  <darin@apple.com>
161
162         Reviewed by Maciej.
163
164         - fix http://bugs.webkit.org/show_bug.cgi?id=16459
165           REGRESSION: assertion failure with regexp with \B in a case-ignoring character range
166           <rdar://problem/5646361>
167
168         The problem was that \B was not handled properly in character classes.
169
170         Test: fast/js/regexp-overflow.html
171
172         * pcre/pcre_compile.cpp:
173         (check_escape): Added handling of ESC_b and ESC_B in character classes here.
174         Allows us to get rid of the handling of \b in character classes from all the
175         call sites that handle it separately and to handle \B properly as well.
176         (compileBranch): Remove the ESC_b handling, since it's not needed any more.
177         (calculateCompiledPatternLengthAndFlags): Ditto.
178
179 2007-12-16  Mark Rowe  <mrowe@apple.com>
180
181         Reviewed by Maciej Stachowiak.
182
183         Fix http://bugs.webkit.org/show_bug.cgi?id=16448
184         Bug 16448: [GTK] Celtic Kane JavaScript performance on Array test is slow relative to Mac
185
186         * kjs/array_instance.cpp:
187         (KJS::compareByStringPairForQSort):
188         (KJS::ArrayInstance::sort): Convert JSValue's to strings once up front and then sort the
189         results.  This avoids calling toString twice per comparison, but requires a temporary buffer
190         so we only use this approach in cases where the array being sorted is not too large.
191
192 2007-12-16  Geoffrey Garen  <ggaren@apple.com>
193
194         Reviewed by Darin Adler and Maciej Stachowiak.
195         
196         More refactoring to support global variable optimization.
197         
198         Changed SymbolTable to use RefPtr<UString::Rep> as its key instead of
199         UString::Rep*. With globals, the symbol table can outlast the
200         declaration node for any given symbol, so the symbol table needs to ref
201         its symbol names.
202         
203         In support, specialized HashMaps with RefPtr keys to allow lookup
204         via raw pointer, avoiding refcount churn.
205         
206         SunSpider reports a .6% speedup (prolly just noise).
207
208         * JavaScriptCore.vcproj/WTF/WTF.vcproj: Added new file: wtf/RefPtrHashMap.h
209         * JavaScriptCore.xcodeproj/project.pbxproj: ditto
210
211         * kjs/JSVariableObject.cpp:
212         (KJS::JSVariableObject::getPropertyNames): Symbol table keys are RefPtrs now.
213
214         * kjs/SymbolTable.h: Modified key traits to match RefPtr. Added a
215         static Rep* for null, which helps compute the deletedValue() trait.
216
217         * wtf/HashMap.h: #include the RefPtr specialization so everyone can use it.
218
219         * wtf/RefPtrHashMap.h: Copied from wtf/HashMap.h. Added overloaded versions
220         of find(), contains(), get(), set(), add(), remove(), and take() that take
221         raw pointers as keys.
222
223 2007-12-16  Alexey Proskuryakov  <ap@webkit.org>
224
225         Reviewed by Darin.
226
227         http://bugs.webkit.org/show_bug.cgi?id=16162
228         Problems with float parsing on Linux (locale-dependent parsing was used).
229
230         * kjs/dtoa.cpp: Removed USE_LOCALE to reduce future confusion.
231         * kjs/lexer.cpp: (KJS::Lexer::lex): Parse with kjs_strtod, not the system one.
232
233 2007-12-14  Alp Toker  <alp@atoker.com>
234
235         Reviewed by Mark Rowe.
236
237         Enable the AllInOneFile.cpp optimization for the GTK+ port.
238
239         * JavaScriptCore.pri:
240
241 2007-12-14  Mark Rowe  <mrowe@apple.com>
242
243         Unreviewed.  Remove commented out fprintf's that were for debugging purposes only.
244
245         * wtf/FastMalloc.cpp:
246         (WTF::TCMalloc_PageHeap::IncrementalScavenge):
247
248 2007-12-14  Mark Rowe  <mrowe@apple.com>
249
250         Reviewed by Maciej Stachowiak.
251
252         Don't use the MADV_DONTNEED code path for now as it has no effect on Mac OS X and is
253         currently untested on other platforms.
254
255         * wtf/TCSystemAlloc.cpp:
256         (TCMalloc_SystemRelease): Return after releasing memory rather than potentially falling
257         through into another mechanism if multiple are supported.
258
259 2007-12-14  Alp Toker  <alp@atoker.com>
260
261         Build fix for GTK+/Qt and ports that don't use AllInOneFile.cpp.
262
263         Include UnusedParam.h.
264
265         * wtf/TCSystemAlloc.cpp:
266
267 2007-12-14  Oliver Hunt  <oliver@apple.com>
268
269         Reviewed by Stephanie.
270
271         Fix build on windows
272
273         * wtf/FastMalloc.cpp:
274         (WTF::TCMalloc_PageHeap::IncrementalScavenge):
275
276 2007-12-14  Dan Bernstein  <mitz@apple.com>
277
278         - try again to fix the Windows build
279
280         * wtf/TCSystemAlloc.cpp:
281         (TCMalloc_SystemRelease):
282
283 2007-12-14  Dan Bernstein  <mitz@apple.com>
284
285         - try to fix the Windows build
286
287         * wtf/TCSystemAlloc.cpp:
288         (TCMalloc_SystemRelease):
289
290 2007-12-14  Mark Rowe <mrowe@apple.com>
291
292         Reviewed by Maciej and Oliver.
293
294         Add final changes to make TCMalloc release memory to the system.
295         This results in a 0.4% regression against ToT, but this is offset
296         against the gains made by the original TCMalloc r38 merge - in fact
297         we retain around 0.3-0.4% progression overall.
298
299         * wtf/FastMalloc.cpp:
300         (WTF::InitSizeClasses):
301         (WTF::TCMalloc_PageHeap::IncrementalScavenge):
302         * wtf/TCSystemAlloc.cpp:
303         (TCMalloc_SystemRelease):
304
305 2007-12-14  Darin Adler  <darin@apple.com>
306
307         Reviewed by Sam.
308
309         - removed unnecessary includes of "Vector.h"
310
311         * wtf/HashMap.h:
312         (WTF::copyKeysToVector): Make the type of the vector be a template parameter.
313         This allows copying keys into a vector of a base class or one with an inline capacity.
314         (WTF::copyValuesToVector): Ditto.
315         * wtf/HashSet.h:
316         (WTF::copyToVector): Ditto.
317
318 2007-12-14  Anders Carlsson  <andersca@apple.com>
319
320         Reviewed by Darin and Geoff.
321
322         <rdar://problem/5619295> 
323         REGRESSION: 303-304: Embedded YouTube video fails to render- JS errors (16150) (Flash 9)
324         
325         Get rid of unnecessary and incorrect security checks for plug-ins accessing JavaScript objects. 
326         
327         The way this used to work was that each NPObject that wrapped a JSObject would have a root object
328         corresponding to the frame object (used for managing the lifecycle) and an origin root object (used for
329         doing security checks). 
330         
331         This would prevent a plug-in from accessing a frame's window object if it's security origin was different
332         (some parts of the window, such as the location object, can be accessed from frames with different security 
333         origins, and those checks are being done in WebCore).
334         
335         Also, if a plug-in were to access a window object of a frame that later went away, it could lead to that
336         Window JSObject being garbage collected and the NPObject pointing to freed memory.
337         
338         How this works now is that there is no origin root object anymore, and all NPObject wrappers that are created
339         for a plug-in will have the root object of the containing frame of that plug-in.
340         
341         * bindings/NP_jsobject.cpp:
342         (jsDeallocate):
343         Don't free the origin root object.
344         
345         (_NPN_CreateScriptObject):
346         Remove the origin root object parameter.
347         
348         (_NPN_InvokeDefault):
349         (_NPN_Invoke):
350         (_NPN_Evaluate):
351         (_NPN_GetProperty):
352         (_NPN_SetProperty):
353         (_NPN_RemoveProperty):
354         (_NPN_HasProperty):
355         (_NPN_HasMethod):
356         (_NPN_Enumerate):
357         Get rid of all security checks.
358         
359         * bindings/NP_jsobject.h:
360         Remove originRootObject from the JavaScriptObject struct.
361         
362         * bindings/c/c_utility.cpp:
363         (KJS::Bindings::convertValueToNPVariant):
364         Always use the root object from the ExecState.
365         
366 2007-12-13  Steve Falkenburg  <sfalken@apple.com>
367
368         Move source file generation into its own vcproj to fix build dependencies.
369
370         Reviewed by Adam.
371
372         * JavaScriptCore.vcproj/JavaScriptCore.sln:
373         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
374         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreGenerated.make: Added.
375         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreGenerated.vcproj: Added.
376         * JavaScriptCore.vcproj/JavaScriptCoreSubmit.sln:
377
378 2007-12-13  Alp Toker  <alp@atoker.com>
379
380         http://bugs.webkit.org/show_bug.cgi?id=16406
381         [Gtk] JavaScriptCore needs -lpthread
382
383         Build fix for Debian and any other platforms that don't implicitly
384         link to pthread.
385
386         Link to pthread on non-Windows platforms until this dependency is
387         removed from JSC.
388
389 2007-12-11  Geoffrey Garen  <ggaren@apple.com>
390
391         Reviewed by Sam Weinig.
392         
393         Build fix: Note some variables that are used only for ASSERTs.
394
395         * API/testapi.c:
396         (Base_finalize):
397         (globalObject_initialize):
398         (testInitializeFinalize):
399
400 2007-12-11  Geoffrey Garen  <ggaren@apple.com>
401
402         Reviewed by Darin Adler.
403         
404         Fixed: All JS tests crash on Windows.
405
406         NDEBUG wasn't defined when compiling testkjs in release builds, so the
407         HashTable definition in HashTable.h included an extra data member.
408
409         The solution was to add NDEBUG to the release testkjs configuration on
410         Windows and Mac.
411         
412         For giggles, I also added other missing #defines to testkjs on Windows.
413
414         * Configurations/Base.xcconfig:
415         * Configurations/JavaScriptCore.xcconfig:
416         * JavaScriptCore.vcproj/testkjs/testkjs.vcproj:
417         * JavaScriptCore.xcodeproj/project.pbxproj:
418         * kjs/testkjs.cpp:
419         (main):
420
421 2007-12-11  Geoffrey Garen  <ggaren@apple.com>
422
423         Reviewed by Darin Adler.
424         
425         Removed bogus ASSERT.
426         
427         ASSERT should only be used when we know that a code path will not be
428         taken. This code path is taken often during the jsFunFuzz test.
429
430         * pcre/pcre_exec.cpp:
431         (jsRegExpExecute):
432
433 2007-12-11  Darin Adler  <darin@apple.com>
434
435         * wtf/unicode/qt4/UnicodeQt4.h: Try to fix Qt build by adding U16_IS_SINGLE.
436
437 2007-12-10  Darin Adler  <darin@apple.com>
438
439         Reviewed by Sam Weinig.
440
441         - fix http://bugs.webkit.org/show_bug.cgi?id=16379
442           REGRESSION(r28525): Failures in http/tests/xmlhttprequest/response-encoding.html and
443           fast/dom/xmlhttprequest-html-response-encoding.html
444           and <rdar://problem/5640230> REGRESSION (306A4-ToT): Access violation in PCRE function
445           find_firstassertedchar
446
447         Test: fast/js/regexp-find-first-asserted.html
448
449         * pcre/pcre_compile.cpp:
450         (compileBracket): Take out unnecessary initialization of out parameters.
451         (branchFindFirstAssertedCharacter): Added. Broke out the half of the function that handles
452         a branch.
453         (bracketFindFirstAssertedCharacter): Renamed from find_firstassertedchar. Also removed the
454         options parameter -- the caller can handle the options.
455         (jsRegExpCompile): Changed call site to call the appropriate bracket or branch version of
456         the find_firstassertedchar function. Also put the REQ_IGNORE_CASE code here instead of
457         passing in the options.
458
459 2007-12-10  Geoffrey Garen  <ggaren@apple.com>
460
461         Reviewed by Sam Weinig.
462
463         Split this:
464         
465                             FunctionBodyNode
466                                     ^
467                                     |
468                                 ProgramNode
469             
470         into this:
471             
472                                 ScopeNode
473                 ^                   ^                   ^
474                 |                   |                   |
475         FunctionBodyNode        ProgramNode         EvalNode
476
477         in preparation for specializing each class more while optimizing global
478         variable access.
479         
480         Also removed some cruft from the FunctionBodyNode interface to simplify
481         things.
482         
483         SunSpider says this patch is a .8% speedup, which seems reasonable,
484         since it eliminates a few branches and adds KJS_FAST_CALL in a few
485         places.
486         
487         Layout tests and JS tests pass. Also, this baby builds on Windows! (Qt
488         mileage may vary...)
489
490 2007-12-10  Geoffrey Garen  <ggaren@apple.com>
491
492         RS by Mark Rowe.
493         
494         Mac build fix: added some exported symbols, now that Parser::parse is
495         defined in the header.
496
497         * JavaScriptCore.exp:
498
499 2007-12-10  Sam Weinig  <sam@webkit.org>
500
501         Build fix.
502
503         Template methods need to be in the header.
504
505         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
506         * kjs/Parser.cpp:
507         * kjs/Parser.h:
508         (KJS::Parser::parse):
509
510 2007-12-10  Geoffrey Garen  <ggaren@apple.com>
511
512         Reviewed by Sam Weinig.
513         
514         Merged different implementations of Parser::parse into a single,
515         templatized implementation, in preparation for adding yet another
516         implementation for "eval" code.
517         
518         JS and layout tests pass.
519
520 2007-12-10  Timothy Hatcher  <timothy@apple.com>
521
522         Reviewed by Mark Rowe
523
524         <rdar://problem/5639463> Bundle versions on Tiger should be 4523.x not 523.x
525
526         * Configurations/Version.xcconfig: Some Tiger versions of Xcode don't set MAC_OS_X_VERSION_MAJOR,
527           so assume Tiger and use a 4 for the SYSTEM_VERSION_PREFIX.
528
529 2007-12-10  Mark Rowe  <mrowe@apple.com>
530
531         Tiger build fix.
532
533         * kjs/grammar.y: Use @1 and @0 in place of @$ where Tiger's bison chokes.
534
535 2007-12-10  Darin Adler  <darin@apple.com>
536
537         Reviewed by Mark Rowe.
538
539         - fix http://bugs.webkit.org/show_bug.cgi?id=16375
540           REGRESSION: Safari crashes on quit
541
542         Probably a debug-only issue.
543
544         * kjs/Parser.cpp:
545         (KJS::parser): Create the parser and never destroy it by using a pointer instead
546         of a global object.
547
548 2007-12-09  Darin Adler  <darin@apple.com>
549
550         Reviewed by Sam Weinig.
551
552         - fix http://bugs.webkit.org/show_bug.cgi?id=16369
553           REGRESSION (r28525): regular expression tests failing due to bad firstByte optimization
554
555         * pcre/pcre_compile.cpp: Changed some names to use interCaps intead of under_scores.
556         (branchIsAnchored): Broke is_anchored into two separate functions; this one works on a
557         branch and the other on an anchor. The old function would only work on a bracket.
558         Also removed unneeded parameters; the anchored check does not require the bracket
559         map or the options any more because we have a reduced set of features.
560         (bracketIsAnchored): Ditto.
561         (branchNeedsLineStart): Broke canApplyFirstCharOptimization into two functions and gave
562         both a better name. This is the function that was returning the wrong value. The failure
563         was beacuse the old function would only work on a bracket.
564         (bracketNeedsLineStart): Ditto.
565         (jsRegExpCompile): Changed to call the appropriate branch or bracket flavor of the
566         functions based on whether we compiled an outer bracket. Also removed inaccurate comments
567         and unneeded parameters.
568
569         - other small changes
570
571         * pcre/pcre.h: Renumbered error codes, in a logical order. First, normal failure, then
572         the recursion limit, then running out of memory, and finally an unexpected internal error.
573
574         * pcre/pcre_exec.cpp: Fixed indentation.
575         (jsRegExpExecute): Corrected an inaccurate comment.
576
577 2007-12-09  Darin Adler  <darin@apple.com>
578
579         Reviewed by Maciej.
580
581         - fix http://bugs.webkit.org/show_bug.cgi?id=16370
582           REGRESSION (r28540): source URL and line number no longer set for outer function/programs
583
584         Test: fast/js/exception-linenums-in-html-1.html
585         Test: fast/js/exception-linenums-in-html-2.html
586         Test: fast/js/exception-linenums.html
587
588         By the time the ProgramNode was constructed, the source URL was empty.
589
590         * kjs/Parser.cpp:
591         (KJS::Parser::parseProgram): Added code to set and clear m_sourceURL, which is now
592         handled here instead of in the lexer; it needs to still be set when we create the
593         program node. Call setLoc to set the first and last line number.
594         (KJS::Parser::parseFunctionBody): Ditto, but for the body.
595         (KJS::Parser::parse): Removed the sourceURL argument.
596
597         * kjs/Parser.h: Added sourceURL(), m_sourceURL, and m_lastLine. Added a lastLine
598         parameter to didFinishParsing, since the bison grammar knows the last line number
599         and we otherwise do not know it. Removed the sourceURL parameter from parse, since
600         that's now handled at a higher level.
601
602         * kjs/grammar.y: Pass the last line number to didFinishParsing.
603
604         * kjs/lexer.cpp:
605         (KJS::Lexer::setCode): Removed the sourceURL argument and the code to set m_sourceURL.
606         (KJS::Lexer::clear): Ditto.
607         * kjs/lexer.h: More of the same.
608
609         * kjs/nodes.cpp:
610         (KJS::FunctionBodyNode::FunctionBodyNode): Get the source URL from the parser rather
611         than from the lexer. Removed unneeded call to setLoc, since the line numbers already
612         both default to -1.
613
614 2007-12-08  Oliver Hunt  <oliver@apple.com>
615
616         Reviewed by Sam W.
617
618         Split the ENABLE_SVG_EXPERIMENTAL_FEATURES flag into separate flags.
619         
620         Fixes <rdar://problem/5620249> Must disable SVG animation
621         <rdar://problem/5612772> Disable SVG filters on Mac to match Windows behavior
622         
623         Minor config changes.
624
625         * Configurations/JavaScriptCore.xcconfig:
626         * JavaScriptCore.xcodeproj/project.pbxproj:
627
628 2007-12-07  Sam Weinig  <sam@webkit.org>
629
630         Reviewed by Darin.
631
632         - Rename isSafeScript to allowsAccessFrom.
633
634         * bindings/NP_jsobject.cpp:
635         (_isSafeScript):
636         * kjs/JSGlobalObject.h:
637         (KJS::JSGlobalObject::allowsAccessFrom): Reverse caller/argument of allowsAccessFrom to match
638         the new call.
639
640 2007-12-07  Geoffrey Garen  <ggaren@apple.com>
641
642         Reviewed by Sam Weinig.
643         
644         Refactored variable access optimization: Removed the assumption that
645         the FunctionBodyNode holds the symbol table.
646         
647 2007-12-07  Geoffrey Garen  <ggaren@apple.com>
648
649         Build fix: added #include.
650
651         * kjs/nodes.cpp:
652
653 2007-12-07  Geoffrey Garen  <ggaren@apple.com>
654
655         Build fix: added #include.
656
657         * kjs/interpreter.cpp:
658
659 2007-12-07  Geoffrey Garen  <ggaren@apple.com>
660
661         Build fix: added #include.
662
663         * kjs/grammar.y:
664
665 2007-12-07  Geoffrey Garen  <ggaren@apple.com>
666
667         Build fix: added #include.
668
669         * kjs/function_object.cpp:
670
671 2007-12-07  Geoffrey Garen  <ggaren@apple.com>
672
673         Reviewed by Sam Weinig.
674         
675         Fixed crash seen running layout tests.
676         
677         Reverted a change I made earlier today. Added a comment to try to
678         discourage myself from making this mistake a third time.
679
680         * kjs/function.cpp:
681         (KJS::ActivationImp::mark):
682         * kjs/function.h:
683         (KJS::ActivationImp::ActivationImpData::ActivationImpData):
684
685 2007-12-07  Geoffrey Garen  <ggaren@apple.com>
686
687         Reviewed by Sam Weinig.
688         
689         Refactored parsing of global code: Removed the assumption that 
690         ProgramNode inherits from FunctionBodyNode from the parser.
691
692         * kjs/Parser.cpp:
693         (KJS::Parser::parseProgram):
694         (KJS::Parser::parseFunctionBody):
695         (KJS::Parser::parse):
696         * kjs/Parser.h:
697         (KJS::Parser::didFinishParsing):
698         * kjs/function.cpp:
699         * kjs/grammar.y:
700         * kjs/nodes.h:
701
702 2007-12-07  Geoffrey Garen  <ggaren@apple.com>
703
704         Build fix: added JSVariableObject.cpp to the .pri file.
705
706         * JavaScriptCore.pri:
707
708 2007-12-07  Geoffrey Garen  <ggaren@apple.com>
709
710         Build fix: added #include.
711
712         * kjs/function.cpp:
713
714 2007-12-07  Steve Falkenburg  <sfalken@apple.com>
715
716         Re-named our B&I flag from BUILDBOT to PRODUCTION.
717
718         Reviewed by Sam Weinig.
719
720         * JavaScriptCore.vcproj/JavaScriptCore.make:
721         * JavaScriptCore.vcproj/testkjs/testkjs.vcproj:
722
723 2007-12-07  Geoffrey Garen  <ggaren@apple.com>
724
725         Build fix: removed stray name qualification.
726
727         * kjs/function.h:
728         (KJS::ActivationImp::ActivationImp):
729
730 2007-12-07  Geoffrey Garen  <ggaren@apple.com>
731
732         Build fix: moved functions with qualified names outside of class
733         declaration.
734
735         * kjs/JSVariableObject.h:
736         (KJS::JSVariableObject::symbolTableGet):
737         (KJS::JSVariableObject::symbolTablePut):
738
739 2007-12-07  Geoffrey Garen  <ggaren@apple.com>
740
741         Reviewed by Sam Weinig.
742
743         Next step in refactoring JSGlobalObject: Added JSVariableObject class,
744         and factored symbol-table-related code into it. (JSGlobalObject doesn't
745         use the symbol table code yet, though.)
746         
747         Layout and JS tests, and testapi, pass. SunSpider reports no regression.
748
749 2007-12-07  Darin Adler  <darin@apple.com>
750
751         Reviewed by Geoff.
752
753         - fix http://bugs.webkit.org/show_bug.cgi?id=16185
754           jsRegExpCompile should not add implicit non-capturing bracket
755
756         While this does not make SunSpider faster, it will make many regular
757         expressions a bit faster.
758
759         * pcre/pcre_compile.cpp: Moved CompileData struct in here from the
760         header since it's private to this file.
761         (compile_branch): Updated for function name change.
762         (compile_bracket): Renamed from compile_regex, since, for one thing,
763         this does not compile an entire regular expression.
764         (calculateCompiledPatternLengthAndFlags): Removed unused item_count
765         local variable. Renamed CompileData to cd instead of compile_block
766         to be consistent with other functions. Added code to set the
767         needOuterBracket flag if there's at least one "|" at the outer level.
768         (jsRegExpCompile): Renamed CompileData to cd instead of compile_block
769         to be consistent with other functions. Removed unneeded "size" field
770         from the compiled regular expression. If no outer bracket is needed,
771         then use compile_branch to compile the regular expression.
772
773         * pcre/pcre_internal.h: Removed the CompileData struct, which is now
774         private to pcre_compile.cpp. Removed the size member from JSRegExp.
775
776 2007-12-06  Kevin Ollivier  <kevino@theolliviers.com>
777
778         MSVC7 build fix due to a compiler bug with placement new and/or
779         templates and casting.
780
781         Reviewed by Darin Adler.
782
783         * wtf/Vector.h:
784         (WTF::::append):
785
786 2007-12-06  Darin Adler  <darin@apple.com>
787
788         Reviewed by Eric Seidel.
789
790         - fix http://bugs.webkit.org/show_bug.cgi?id=16321
791           new RegExp("[\u0097]{4,6}", "gmy") crashes in DEBUG builds
792           <rdar://problem/5632992>
793
794         Test: fast/js/regexp-oveflow.html
795
796         * pcre/pcre_compile.cpp:
797         (calculateCompiledPatternLengthAndFlags): In the case where a single character
798         character class is optimized to not use a character class at all, the preflight
799         code was not setting the lastitemlength variable.
800
801 2007-12-05  Mark Rowe  <mrowe@apple.com>
802
803         Qt Windows build fix.  Include the time-related headers in the correct place.
804
805         * kjs/JSGlobalObject.cpp:
806         * kjs/interpreter.cpp:
807
808 2007-12-05  Darin Adler  <darin@apple.com>
809
810         Not reviewed; just undoing a previous commit.
811
812         - remove earlier incorrect fix for http://bugs.webkit.org/show_bug.cgi?id=16220
813           <rdar://problem/5625221> Crash opening www.news.com (CNet)
814
815         The real bug was the backwards ?: in the compile function, which Geoff just
816         fixed. Rolling out the incorrect earlier fix.
817
818         * pcre/pcre_compile.cpp: (calculateCompiledPatternLengthAndFlags): Take out
819         the unneeded preflight change. The regression test proves this is still working
820         fine, so the bug remains fixed.
821
822 2007-12-01  Mark Rowe  <mrowe@apple.com>
823
824         Build fix.  Include headers before trying to use the things that they declare.
825
826         * kjs/JSImmediate.cpp:
827         * kjs/nodes.cpp:
828         * kjs/object.cpp:
829         * kjs/object_object.cpp:
830         * kjs/regexp_object.cpp:
831         * kjs/string_object.cpp:
832
833 2007-12-05  Geoffrey Garen  <ggaren@apple.com>
834
835         Build fix: added some #includes.
836
837         * kjs/JSImmediate.cpp:
838
839 2007-12-05  Geoffrey Garen  <ggaren@apple.com>
840
841         Build fix: added some #includes.
842
843         * kjs/JSGlobalObject.cpp:
844         * kjs/JSImmediate.cpp:
845
846 2007-12-05  Geoffrey Garen  <ggaren@apple.com>
847
848         Build fix: Fixed #include spelling.
849
850         * kjs/debugger.cpp:
851
852 2007-12-05  Geoffrey Garen  <ggaren@apple.com>
853
854         Build fix: added #include.
855
856         * kjs/debugger.cpp:
857
858 2007-12-05  Geoffrey Garen  <ggaren@apple.com>
859
860         Build fix: added a forward declaration.
861
862         * kjs/debugger.h:
863
864 2007-12-05  Geoffrey Garen  <ggaren@apple.com>
865
866         Build fix: added an #include.
867
868         * kjs/error_object.cpp:
869
870 2007-12-05  Geoffrey Garen  <ggaren@apple.com>
871
872         Build fix: added an #include.
873
874         * kjs/bool_object.cpp:
875
876 2007-12-05  Geoffrey Garen  <ggaren@apple.com>
877
878         Reviewed by Darin Adler.
879
880         Third step in refactoring JSGlobalObject: Moved data members and 
881         functions accessing data members from Interpreter to JSGlobalObject.
882         Changed Interpreter member functions to static functions.
883         
884         This resolves a bug in global object bootstrapping, where the global
885         ExecState could be used when uninitialized.
886         
887         This is a big change, but it's mostly code motion and renaming.
888         
889         Layout and JS tests, and testjsglue and testapi, pass. SunSpider reports
890         a .7% regression, but Shark sees no difference related to this patch,
891         and SunSpider reported a .7% speedup from an earlier step in this 
892         refactoring, so I think it's fair to call that a wash.
893
894 2007-12-05  Geoffrey Garen  <ggaren@apple.com>
895
896         Reviewed by Darin Adler. (Or vice versa.)
897         
898         Fixed ASSERT during run-javascriptcore-tests. (Darin just added the
899         ASSERT, but the bug wasn't new.)
900
901         * pcre/pcre_compile.cpp:
902         (compile_branch): The ?: operator here was backwards, causing us to
903         execute the loop too many times, adding stray KET opcodes to the
904         compiled regular expression.
905
906 2007-12-05  Kevin McCullough  <kmccullough@apple.com>
907
908         Reviewed by Geoff.
909
910         - Wait until local variable data is fully constructed before notifying the debugger of entering
911         or leaving a call frame.
912
913         * kjs/function.cpp:
914         (KJS::FunctionImp::callAsFunction):
915         * kjs/nodes.cpp:
916         (KJS::FunctionBodyNode::execute):
917
918 2007-12-05  Mark Rowe  <mrowe@apple.com>
919
920         Reviewed by Oliver.
921
922         Build fix for GCC 4.2. Cast via a union to avoid strict-aliasing issues.
923
924         * wtf/FastMalloc.cpp:
925         (WTF::):
926         (WTF::getPageHeap):
927
928 2007-12-05  Mark Rowe  <mrowe@apple.com>
929
930         Reviewed by Darin.
931
932         Fix testkjs in 64-bit.
933
934         When built for 64-bit the TCMalloc spin lock uses pthread mutexes rather than a custom spin lock
935         implemented in assembly.  If we fail to initialize the pthread mutex, attempts to lock or unlock
936         it will fail and trigger a call to abort.
937
938         * wtf/FastMalloc.cpp: Initialize the spin lock so that we can later lock and unlock it.
939         * wtf/TCSpinLock.h: Add an Init method to the optimised spin lock.
940
941 2007-12-04  Oliver Hunt  <oliver@apple.com>
942
943         Reviewed by NOBODY (Build fix).
944
945         Fix gtk build.
946
947         * wtf/TCSystemAlloc.cpp:
948
949 2007-12-03  Oliver Hunt  <oliver@apple.com>
950
951         Reviewed by Mark Rowe and Geoff Garen.
952
953         Merge TCMalloc r38
954
955         It also result in a performance progression between 0.5% and 
956         0.9% depending on the test, however most if not all of this 
957         gain will be consumed by the overhead involved in the later
958         change to release memory to the system.
959
960         * JavaScriptCore.vcproj/WTF/WTF.vcproj:
961         * JavaScriptCore.xcodeproj/project.pbxproj:
962         * wtf/FastMalloc.cpp:
963         (WTF::KernelSupportsTLS):
964         (WTF::CheckIfKernelSupportsTLS):
965         (WTF::):
966         (WTF::ClassIndex):
967         (WTF::SLL_Next):
968         (WTF::SLL_SetNext):
969         (WTF::SLL_Push):
970         (WTF::SLL_Pop):
971         (WTF::SLL_PopRange):
972         (WTF::SLL_PushRange):
973         (WTF::SLL_Size):
974         (WTF::SizeClass):
975         (WTF::ByteSizeForClass):
976         (WTF::NumMoveSize):
977         (WTF::InitSizeClasses):
978         (WTF::AllocationSize):
979         (WTF::TCMalloc_PageHeap::GetSizeClassIfCached):
980         (WTF::TCMalloc_PageHeap::CacheSizeClass):
981         (WTF::TCMalloc_PageHeap::init):
982         (WTF::TCMalloc_PageHeap::New):
983         (WTF::TCMalloc_PageHeap::AllocLarge):
984         (WTF::TCMalloc_PageHeap::Carve):
985         (WTF::TCMalloc_PageHeap::Delete):
986         (WTF::TCMalloc_PageHeap::IncrementalScavenge):
987         (WTF::PagesToMB):
988         (WTF::TCMalloc_PageHeap::Dump):
989         (WTF::TCMalloc_PageHeap::GrowHeap):
990         (WTF::TCMalloc_PageHeap::Check):
991         (WTF::ReleaseFreeList):
992         (WTF::TCMalloc_PageHeap::ReleaseFreePages):
993         (WTF::TCMalloc_ThreadCache_FreeList::Push):
994         (WTF::TCMalloc_ThreadCache_FreeList::PushRange):
995         (WTF::TCMalloc_ThreadCache_FreeList::PopRange):
996         (WTF::TCMalloc_ThreadCache_FreeList::Pop):
997         (WTF::TCMalloc_Central_FreeList::length):
998         (WTF::TCMalloc_Central_FreeList::tc_length):
999         (WTF::TCMalloc_Central_FreeList::Init):
1000         (WTF::TCMalloc_Central_FreeList::ReleaseListToSpans):
1001         (WTF::TCMalloc_Central_FreeList::EvictRandomSizeClass):
1002         (WTF::TCMalloc_Central_FreeList::MakeCacheSpace):
1003         (WTF::TCMalloc_Central_FreeList::ShrinkCache):
1004         (WTF::TCMalloc_Central_FreeList::InsertRange):
1005         (WTF::TCMalloc_Central_FreeList::RemoveRange):
1006         (WTF::TCMalloc_Central_FreeList::FetchFromSpansSafe):
1007         (WTF::TCMalloc_Central_FreeList::Populate):
1008         (WTF::TCMalloc_ThreadCache::Init):
1009         (WTF::TCMalloc_ThreadCache::Cleanup):
1010         (WTF::TCMalloc_ThreadCache::Allocate):
1011         (WTF::TCMalloc_ThreadCache::Deallocate):
1012         (WTF::TCMalloc_ThreadCache::FetchFromCentralCache):
1013         (WTF::TCMalloc_ThreadCache::ReleaseToCentralCache):
1014         (WTF::TCMalloc_ThreadCache::Scavenge):
1015         (WTF::TCMalloc_ThreadCache::PickNextSample):
1016         (WTF::TCMalloc_ThreadCache::NewHeap):
1017         (WTF::TCMalloc_ThreadCache::GetThreadHeap):
1018         (WTF::TCMalloc_ThreadCache::GetCache):
1019         (WTF::TCMalloc_ThreadCache::GetCacheIfPresent):
1020         (WTF::TCMalloc_ThreadCache::InitTSD):
1021         (WTF::TCMalloc_ThreadCache::CreateCacheIfNecessary):
1022         (WTF::TCMallocStats::ExtractStats):
1023         (WTF::TCMallocStats::DumpStats):
1024         (WTF::TCMallocStats::DumpStackTraces):
1025         (WTF::TCMallocStats::TCMallocImplementation::MarkThreadIdle):
1026         (WTF::TCMallocStats::TCMallocImplementation::ReleaseFreeMemory):
1027         (WTF::TCMallocStats::TCMallocGuard::TCMallocGuard):
1028         (WTF::TCMallocStats::TCMallocGuard::~TCMallocGuard):
1029         (WTF::TCMallocStats::DoSampledAllocation):
1030         (WTF::TCMallocStats::CheckCachedSizeClass):
1031         (WTF::TCMallocStats::CheckedMallocResult):
1032         (WTF::TCMallocStats::SpanToMallocResult):
1033         (WTF::TCMallocStats::do_malloc):
1034         (WTF::TCMallocStats::do_free):
1035         (WTF::TCMallocStats::do_memalign):
1036         (WTF::TCMallocStats::do_malloc_stats):
1037         (WTF::TCMallocStats::do_mallopt):
1038         (WTF::TCMallocStats::do_mallinfo):
1039         (WTF::TCMallocStats::realloc):
1040         (WTF::TCMallocStats::cpp_alloc):
1041         (WTF::TCMallocStats::operator new):
1042         (WTF::TCMallocStats::):
1043         (WTF::TCMallocStats::operator new[]):
1044         (WTF::TCMallocStats::malloc_stats):
1045         (WTF::TCMallocStats::mallopt):
1046         (WTF::TCMallocStats::mallinfo):
1047         * wtf/TCPackedCache.h: Added.
1048         (PackedCache::PackedCache):
1049         (PackedCache::Put):
1050         (PackedCache::Has):
1051         (PackedCache::GetOrDefault):
1052         (PackedCache::Clear):
1053         (PackedCache::EntryToValue):
1054         (PackedCache::EntryToUpper):
1055         (PackedCache::KeyToUpper):
1056         (PackedCache::UpperToPartialKey):
1057         (PackedCache::Hash):
1058         (PackedCache::KeyMatch):
1059         * wtf/TCPageMap.h:
1060         (TCMalloc_PageMap2::PreallocateMoreMemory):
1061         * wtf/TCSystemAlloc.cpp:
1062         (TCMalloc_SystemRelease):
1063         * wtf/TCSystemAlloc.h:
1064
1065 2007-12-04  Anders Carlsson  <andersca@apple.com>
1066
1067         Reviewed by Sam.
1068
1069         Make isSafeScript const.
1070         
1071         * kjs/JSGlobalObject.h:
1072         (KJS::JSGlobalObject::isSafeScript):
1073
1074 2007-12-04  Darin Adler  <darin@apple.com>
1075
1076         Reviewed by Geoff.
1077
1078         - fix first part of http://bugs.webkit.org/show_bug.cgi?id=16220
1079           <rdar://problem/5625221> Crash opening www.news.com (CNet)
1080
1081         Test: fast/js/regexp-overflow.html
1082
1083         * pcre/pcre_compile.cpp:
1084         (calculateCompiledPatternLengthAndFlags): Add room for the additional BRA/KET that
1085         was generated in the compile code but not taken into account here.
1086
1087 2007-12-03  Darin Adler  <darin@apple.com>
1088
1089         Reviewed by Geoff.
1090
1091         - fix http://bugs.webkit.org/show_bug.cgi?id=15618
1092           <rdar://problem/5619353> REGRESSION: Stack overflow/crash in KJS::equal (15618)
1093
1094         Test: fast/js/recursion-limit-equal.html
1095
1096         * kjs/operations.cpp: (KJS::equal): Check the exception from toPrimitive.
1097
1098 2007-12-03  Dan Bernstein  <mitz@apple.com>
1099
1100         - fix a copy-and-paste-o
1101
1102         * bindings/npruntime.cpp:
1103         (_NPN_GetIntIdentifier):
1104
1105 2007-12-03  Dan Bernstein  <mitz@apple.com>
1106
1107         Reviewed by Darin Adler.
1108
1109         - fix an ASSERT when getIntIdentifier is called with 0 or -1
1110
1111         * bindings/npruntime.cpp:
1112         (_NPN_GetIntIdentifier): We cannot use the hashmap for 0 and -1 since
1113         they are the empty value and the deleted value. Instead, keep the
1114         identifiers for those two integers in a static array.
1115
1116 2007-12-02  Darin Adler  <darin@apple.com>
1117
1118         Reviewed by Mitz.
1119
1120         - fix http://bugs.webkit.org/show_bug.cgi?id=15848
1121           <rdar://problem/5619330> REGRESSION: Assertion failure viewing comments page on digg.com
1122
1123         Test: fast/js/sparse-array.html
1124
1125         * kjs/array_instance.cpp:
1126         (KJS::ArrayInstance::inlineGetOwnPropertySlot): Check sparse array cutoff before looking
1127         in hash map. Can't avoid the branch because we can't look for 0 in the hash.
1128         (KJS::ArrayInstance::deleteProperty): Ditto.
1129
1130 2007-12-02  Geoffrey Garen  <ggaren@apple.com>
1131
1132         Build fix: added an #include.
1133
1134         * kjs/collector.cpp:
1135
1136 2007-12-02  Geoffrey Garen  <ggaren@apple.com>
1137
1138         Reviewed by Eric Seidel.
1139
1140         Second step in refactoring JSGlobalObject: moved virtual functions from
1141         Interpreter to JSGlobalObject.
1142         
1143         Layout and JS tests pass. SunSpider reports a .7% speedup -- don't 
1144         believe his lies.
1145
1146 2007-12-01  Alp Toker  <alp@atoker.com>
1147
1148         Reviewed by Adam Roben.
1149
1150         http://bugs.webkit.org/show_bug.cgi?id=16228
1151         kJSClassDefinitionEmpty is not exported with JS_EXPORT
1152
1153         Add JS_EXPORT to kJSClassDefinitionEmpty.
1154
1155         Make the gcc compiler check take precedence over the WIN32||_WIN32
1156         check to ensure that symbols are exported on Windows when using gcc.
1157
1158         Add a TODO referencing the bug about JS_EXPORT in the Win build
1159         (http://bugs.webkit.org/show_bug.cgi?id=16227)
1160
1161         Don't define JS_EXPORT as 'extern' when the compiler is unknown since
1162         it would result in the incorrect expansion:
1163
1164           extern extern const JSClassDefinition kJSClassDefinitionEmpty;
1165
1166         (This was something we inherited from CFBase.h that doesn't make sense
1167         for JSBase.h)
1168
1169         * API/JSBase.h:
1170         * API/JSObjectRef.h:
1171
1172 2007-11-30  Geoffrey Garen  <ggaren@apple.com>
1173
1174         Reviewed by Beth Dakin.
1175         
1176         Reversed the ownership relationship between Interpreter and JSGlobalObject.
1177         Now, the JSGlobalObject owns the Interpreter, and top-level objects
1178         that need the two to persist just protect the JSGlobalObject from GC.
1179         
1180         Global object bootstrapping looks a little odd right now, but it will
1181         make much more sense soon, after further rounds of refactoring.
1182
1183         * bindings/runtime_root.h: Made this class inherit from RefCounted,
1184         to avoid code duplication.
1185
1186         * kjs/collector.cpp:
1187         (KJS::Collector::collect): No need to give special GC treatment to 
1188         Interpreters, since we mark their global objects, which mark them.
1189
1190         * kjs/interpreter.cpp:
1191         (KJS::Interpreter::mark): No need to mark our global object, since it
1192         marks us.
1193         * kjs/interpreter.h: Don't inherit from RefCounted -- JSGlobalObject 
1194         owns us directly.
1195
1196         * kjs/testkjs.cpp: Modified to follow the new rules.
1197         (createGlobalObject):
1198         (runWithScripts):
1199
1200 2007-11-30  Brent Fulgham  <bfulgham@gmail.com>
1201
1202         Reviewed by Eric.
1203
1204         * ChangeLog:
1205         * pcre/pcre_compile.cpp:
1206         (compile_branch):
1207
1208 2007-11-30  Eric Seidel  <eric@webkit.org>
1209
1210         No review, build fix only.
1211         
1212         Fix uninitialized var warnings in release build.
1213
1214         * JavaScriptCore.xcodeproj/project.pbxproj:
1215         * pcre/pcre_compile.cpp:
1216         (compile_regex):
1217
1218 2007-11-30  Darin Adler  <darin@apple.com>
1219
1220         Reviewed by Adam Roben.
1221
1222         - fix http://bugs.webkit.org/show_bug.cgi?id=16207
1223           JavaScript regular expressions should match UTF-16 code units rather than characters
1224
1225         SunSpider says this is 5.5% faster on the regexp test, 0.4% faste overall.
1226
1227         Test: fast/js/regexp-non-bmp.html
1228
1229         Renamed ANY_CHAR to NOT_NEWLINE to more-accurately reflect its meaning.
1230
1231         * pcre/pcre_compile.cpp:
1232         (compile_branch): Removed calls to the UTF-16 character accessor functions, replacing
1233         them with simple pointer dereferences in some cases, and no code at all in others.
1234         (calculateCompiledPatternLengthAndFlags): Ditto.
1235
1236         * pcre/pcre_exec.cpp:
1237         (match): Fixed indentation of some case labels (including all the BEGIN_OPCODE).
1238         Removed calls to the UTF-16 character accessor functions, replacing them with simple
1239         pointer dereferences in some cases, and no code at all in others. Also removed some
1240         explicit UTF-16 support code in a few cases. Removed the unneeded "UTF-8" code path
1241         in the ANY_CHAR repeat code, and in another case, eliminated the code to check against
1242         end_subject in because it is already done outside the loop.
1243         (jsRegExpExecute):
1244
1245         * pcre/pcre_internal.h: Removed all the UTF-16 helper functions.
1246
1247 2007-11-30  Eric Seidel  <eric@webkit.org>
1248
1249         Reviewed by darin.
1250         
1251         PCRE crashes under GuardMalloc
1252         http://bugs.webkit.org/show_bug.cgi?id=16127
1253         check against patternEnd to make sure we don't walk off the end of the string
1254
1255         * pcre/pcre_compile.cpp:
1256         (compile_branch):
1257         (calculateCompiledPatternLengthAndFlags):
1258
1259 2007-11-30  Eric Seidel  <eric@webkit.org>
1260
1261         Reviewed by Maciej.
1262         
1263         Fix layout test regressions caused by r28186
1264         http://bugs.webkit.org/show_bug.cgi?id=16195
1265         change first_byte and req_byte back to shorts instead of chars
1266         (I think PCRE stuffs information in the high bits) 
1267
1268         * pcre/pcre_internal.h:
1269
1270 2007-11-29  Oliver Hunt  <oliver@apple.com>
1271
1272         Reviewed by Maciej and Darin.
1273
1274         Make the JS collector work with multiple threads 
1275
1276         Under heavy contention it was possible the GC to suspend other
1277         threads inside the pthread spinlock, which could lead to the GC
1278         thread blocking on the pthread spinlock itself.
1279
1280         We now determine and store each thread's stack base when it is
1281         registered, thus removing the need for any calls to pthread_get_stackaddr_np
1282         that needed the pthread spinlock.
1283
1284         * kjs/collector.cpp:
1285         (KJS::Collector::Thread::Thread):
1286         (KJS::Collector::registerThread):
1287         (KJS::Collector::markOtherThreadConservatively):
1288
1289 2007-11-29  Adam Roben  <aroben@apple.com>
1290
1291         Windows build fix
1292
1293         Removed some unreachable code (ironically, the code was some
1294         ASSERT_NOT_REACHED()s).
1295
1296         * pcre/pcre_compile.cpp:
1297         (compile_branch):
1298         * pcre/pcre_exec.cpp:
1299         (match):
1300
1301 2007-11-29  Eric Seidel  <eric@webkit.org>
1302
1303         Reviewed by Mark Rowe.
1304         
1305         Fix for --guard crash of fast/js/regexp-charclass-crash introduced by r28151.
1306
1307         * pcre/pcre_compile.cpp:
1308         (is_anchored):
1309
1310 2007-11-28  Mark Rowe  <mrowe@apple.com>
1311
1312         Gtk build fix.  Rubber-stamped by Eric.
1313
1314         * pcre/pcre_exec.cpp:
1315         (match): Add braces around the body of the case statement to prevent
1316         wanings about jumps across the initialization of a variable.
1317
1318 2007-11-29  Eric Seidel  <eric@webkit.org>
1319
1320         Reviewed by Mark Rowe.
1321         
1322         Attempt to fix non-mac builds after PCRE cleanup.
1323
1324         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
1325         * JavaScriptCoreSources.bkl:
1326         * pcre/pcre.pri:
1327
1328 2007-11-28  Eric Seidel  <eric@webkit.org>
1329
1330         Reviewed by Maciej.
1331
1332         Centralize code for subjectPtr adjustments using inlines, only ever check for a single
1333         trailing surrogate (as UTF16 only allows one), possibly fix PCRE bugs involving char
1334         classes and garbled UTF16 strings.
1335
1336         * pcre/pcre_exec.cpp:
1337         (match):
1338         (jsRegExpExecute):
1339         * pcre/pcre_internal.h:
1340         (getPreviousChar):
1341         (movePtrToPreviousChar):
1342         (movePtrToNextChar):
1343         (movePtrToStartOfCurrentChar):
1344
1345 2007-11-28  Eric Seidel  <eric@webkit.org>
1346
1347         Reviewed by Maciej.
1348
1349         change getChar* functions to return result and push 'c' into local scopes for clarity
1350
1351         * pcre/pcre_compile.cpp:
1352         (compile_branch):
1353         (calculateCompiledPatternLengthAndFlags):
1354         * pcre/pcre_exec.cpp:
1355         (match):
1356         * pcre/pcre_internal.h:
1357         (getChar):
1358         (getCharAndAdvance):
1359         (getCharAndLength):
1360         (getCharAndAdvanceIfSurrogate):
1361
1362 2007-11-28  Eric Seidel  <eric@webkit.org>
1363
1364         Reviewed by Sam.
1365
1366         Comment cleanup
1367
1368         * pcre/pcre_exec.cpp:
1369         (match):
1370
1371 2007-11-26  Eric Seidel  <eric@webkit.org>
1372
1373         Reviewed by Sam.
1374
1375         Further cleanups to calculateCompiledPatternLengthAndFlags
1376
1377         * pcre/pcre_compile.cpp:
1378         (calculateCompiledPatternLengthAndFlags):
1379         * pcre/pcre_internal.h:
1380
1381 2007-11-26  Eric Seidel  <eric@webkit.org>
1382
1383         Reviewed by Sam.
1384
1385         Give consistent naming to the RegExp options/compile flags
1386
1387         * pcre/pcre_compile.cpp:
1388         (compile_branch):
1389         (is_anchored):
1390         (find_firstassertedchar):
1391         (printCompiledRegExp):
1392         (jsRegExpCompile):
1393         * pcre/pcre_exec.cpp:
1394         (jsRegExpExecute):
1395         * pcre/pcre_internal.h:
1396
1397 2007-11-26  Eric Seidel  <eric@webkit.org>
1398
1399         Reviewed by Sam.
1400
1401         Pull first_byte and req_byte optimizations out into separate static funtions, SunSpider reported this as a win.
1402
1403         * pcre/pcre_exec.cpp:
1404         (tryFirstByteOptimization):
1405         (tryRequiredByteOptimization):
1406         (jsRegExpExecute):
1407         * pcre/pcre_internal.h:
1408
1409 2007-11-26  Eric Seidel  <eric@webkit.org>
1410
1411         Reviewed by Maciej.
1412
1413         give PCRE_MULTILINE a better name: OptionMatchAcrossMultipleLines
1414
1415         * pcre/pcre_compile.cpp:
1416         (compile_branch):
1417         (is_anchored):
1418         (printCompiledRegExp):
1419         (jsRegExpCompile):
1420         * pcre/pcre_exec.cpp:
1421         (jsRegExpExecute):
1422         * pcre/pcre_internal.h:
1423
1424 2007-11-26  Eric Seidel  <eric@webkit.org>
1425
1426         Reviewed by Oliver.
1427
1428         Deprecate jsRegExpExecute's offset-vector fallback code
1429
1430         * pcre/pcre_exec.cpp:
1431         (jsRegExpExecute):
1432
1433 2007-11-26  Eric Seidel  <eric@webkit.org>
1434
1435         Reviewed by Maciej.
1436
1437         Make cur_is_word and prev_is_word locals, and change OP_ANY to OP_ANY_CHAR for clarity
1438
1439         * pcre/pcre_compile.cpp:
1440         (find_fixedlength):
1441         (compile_branch):
1442         (canApplyFirstCharOptimization):
1443         * pcre/pcre_exec.cpp:
1444         (match):
1445         * pcre/pcre_internal.h:
1446
1447 2007-11-26  Eric Seidel  <eric@webkit.org>
1448
1449         Reviewed by Mitz & Maciej.
1450
1451         Change _NC operators to use _IGNORING_CASE for clarity
1452
1453         * pcre/pcre_compile.cpp:
1454         (find_fixedlength):
1455         (compile_branch):
1456         (find_firstassertedchar):
1457         * pcre/pcre_exec.cpp:
1458         (match):
1459         * pcre/pcre_internal.h:
1460
1461 2007-11-26  Eric Seidel  <eric@webkit.org>
1462
1463         Reviewed by Mitz.
1464
1465         Remove branch from return
1466
1467         * pcre/pcre_compile.cpp:
1468         (compile_branch):
1469         * pcre/pcre_exec.cpp:
1470         (match):
1471
1472 2007-11-26  Eric Seidel  <eric@webkit.org>
1473
1474         Reviewed by Maciej.
1475
1476         Add repeatInformationFromInstructionOffset inline
1477
1478         * pcre/pcre_exec.cpp:
1479         (repeatInformationFromInstructionOffset):
1480         (match):
1481
1482 2007-11-26  Eric Seidel  <eric@webkit.org>
1483
1484         Reviewed by Maciej.
1485
1486         Remove no longer used error code JSRegExpErrorMatchLimit
1487
1488         * kjs/regexp.cpp:
1489         (KJS::RegExp::match):
1490         * pcre/pcre.h:
1491         * pcre/pcre_internal.h:
1492
1493 2007-11-26  Eric Seidel  <eric@webkit.org>
1494
1495         Reviewed by Sam.
1496
1497         Make i locally scoped for better code clarity
1498
1499         * pcre/pcre_exec.cpp:
1500         (match):
1501
1502 2007-11-26  Eric Seidel  <eric@webkit.org>
1503
1504         Reviewed by Maciej.
1505
1506         Give subjectPtr and instructionPtr sane names, reduce size of MatchFrame for a 0.2% speedup.
1507
1508         * pcre/pcre_compile.cpp:
1509         (compile_branch):
1510         (calculateCompiledPatternLengthAndFlags):
1511         * pcre/pcre_exec.cpp:
1512         (match_ref):
1513         (MatchStack::pushNewFrame):
1514         (getUTF8CharAndIncrementLength):
1515         (match):
1516         * pcre/pcre_internal.h:
1517         (getChar):
1518         (getCharAndAdvance):
1519         (getCharAndLength):
1520         (getCharAndAdvanceIfSurrogate):
1521         * pcre/pcre_xclass.cpp:
1522         (getUTF8CharAndAdvancePointer):
1523
1524 2007-11-26  Eric Seidel  <eric@webkit.org>
1525
1526         Reviewed by Sam.
1527
1528         Small speedup (0.7%) by simplifying canUseStackBufferForNextFrame() check
1529
1530         * pcre/pcre_exec.cpp:
1531         (MatchStack::MatchStack):
1532         (MatchStack::popCurrentFrame):
1533
1534 2007-11-25  Eric Seidel  <eric@webkit.org>
1535
1536         Reviewed by Sam.
1537
1538         Lower MATCH_LIMIT_RECURSION to more sane levels to prevent hangs on run-javascriptcore-tests
1539
1540         * pcre/pcre_internal.h:
1541
1542 2007-11-25  Eric Seidel  <eric@webkit.org>
1543
1544         Reviewed by Maciej.
1545
1546         Remove match_is_group variable for another 5% speedup
1547
1548         * pcre/pcre_compile.cpp:
1549         * pcre/pcre_exec.cpp:
1550         (startNewGroup):
1551         (match):
1552
1553 2007-11-28  Eric Seidel  <eric@webkit.org>
1554
1555         Reviewed by Sam.
1556
1557         Abstract frame variables into locals and args
1558
1559         * pcre/pcre_compile.cpp:
1560         (compile_branch):
1561         * pcre/pcre_exec.cpp:
1562         (match):
1563         * pcre/pcre_internal.h:
1564
1565 2007-11-28  Eric Seidel  <eric@webkit.org>
1566
1567         Reviewed by Sam.
1568
1569         Section off MatchData arguments into args struct
1570
1571         * pcre/pcre_exec.cpp:
1572         (MatchStack::pushNewFrame):
1573         (match):
1574
1575 2007-11-24  Eric Seidel  <eric@webkit.org>
1576
1577         Reviewed by Sam.
1578
1579         Remove redundant eptrblock struct
1580
1581         * pcre/pcre_exec.cpp:
1582         (MatchStack::pushNewFrame):
1583         (match):
1584
1585 2007-11-24  Eric Seidel  <eric@webkit.org>
1586
1587         Reviewed by Maciej.
1588
1589         Remove redundant match_call_count and move recursion check out of super-hot code path
1590         SunSpider says this is at least an 8% speedup for regexp.
1591
1592         * pcre/pcre_exec.cpp:
1593         (MatchStack::MatchStack):
1594         (MatchStack::pushNewFrame):
1595         (MatchStack::popCurrentFrame):
1596         (MatchStack::popAllFrames):
1597         (match):
1598         (jsRegExpExecute):
1599         * pcre/pcre_internal.h:
1600
1601 2007-11-24  Eric Seidel  <eric@webkit.org>
1602
1603         Reviewed by Sam.
1604
1605         Get rid of GETCHAR* macros, replacing them with better named inlines
1606
1607         * pcre/pcre_compile.cpp:
1608         (compile_branch):
1609         (calculateCompiledPatternLengthAndFlags):
1610         * pcre/pcre_exec.cpp:
1611         (match):
1612         * pcre/pcre_internal.h:
1613         (getCharAndAdvance):
1614         (getCharAndLength):
1615         (getCharAndAdvanceIfSurrogate):
1616
1617 2007-11-24  Eric Seidel  <eric@webkit.org>
1618
1619         Reviewed by Sam.
1620
1621         Further cleanup GET/PUT inlines
1622
1623         * pcre/pcre_internal.h:
1624         (putOpcodeValueAtOffset):
1625         (getOpcodeValueAtOffset):
1626         (putOpcodeValueAtOffsetAndAdvance):
1627         (put2ByteOpcodeValueAtOffset):
1628         (get2ByteOpcodeValueAtOffset):
1629         (put2ByteOpcodeValueAtOffsetAndAdvance):
1630
1631 2007-11-24  Eric Seidel  <eric@webkit.org>
1632
1633         Reviewed by Sam.
1634
1635         Give GET, PUT better names, and add (poor) moveOpcodePtrPastAnyAlternateBranches
1636
1637         * pcre/pcre_compile.cpp:
1638         (firstSignificantOpCodeSkippingAssertions):
1639         (find_fixedlength):
1640         (complete_callout):
1641         (compile_branch):
1642         (compile_regex):
1643         (is_anchored):
1644         (canApplyFirstCharOptimization):
1645         (find_firstassertedchar):
1646         * pcre/pcre_exec.cpp:
1647         (match):
1648         * pcre/pcre_internal.h:
1649         (putOpcodeValueAtOffset):
1650         (getOpcodeValueAtOffset):
1651         (putOpcodeValueAtOffsetAndAdvance):
1652         (put2ByteOpcodeValueAtOffset):
1653         (get2ByteOpcodeValueAtOffset):
1654         (moveOpcodePtrPastAnyAlternateBranches):
1655         * pcre/pcre_ucp_searchfuncs.cpp:
1656         (_pcre_ucp_othercase):
1657
1658 2007-11-24  Eric Seidel  <eric@webkit.org>
1659
1660         Reviewed by Sam.
1661
1662         Add inlines for toLowerCase, isWordChar, isSpaceChar for further regexp speedup
1663
1664         * pcre/pcre_compile.cpp:
1665         (compile_branch):
1666         (jsRegExpCompile):
1667         * pcre/pcre_exec.cpp:
1668         (match):
1669         (jsRegExpExecute):
1670         * pcre/pcre_internal.h:
1671         (toLowerCase):
1672         (flipCase):
1673         (classBitmapForChar):
1674         (charTypeForChar):
1675         (isWordChar):
1676         (isSpaceChar):
1677         (CompileData::CompileData):
1678         * pcre/pcre_xclass.cpp:
1679         (_pcre_xclass):
1680
1681 2007-11-24  Eric Seidel  <eric@webkit.org>
1682
1683         Reviewed by Sam.
1684
1685         cleanup _pcre_ucp_othercase
1686
1687         * pcre/pcre_ucp_searchfuncs.cpp:
1688         (_pcre_ucp_othercase):
1689
1690 2007-11-24  Eric Seidel  <eric@webkit.org>
1691
1692         Reviewed by Maciej.
1693
1694         Use better variable names for case ignoring options
1695
1696         * pcre/pcre_compile.cpp:
1697         (compile_branch):
1698         (find_firstassertedchar):
1699         (printCompiledRegExp):
1700         (jsRegExpCompile):
1701         * pcre/pcre_exec.cpp:
1702         (match_ref):
1703         (match):
1704         (jsRegExpExecute):
1705         * pcre/pcre_internal.h:
1706
1707 2007-11-24  Eric Seidel  <eric@webkit.org>
1708
1709         Reviewed by Sam.
1710
1711         split first_significant_code into two simpler functions
1712
1713         * pcre/pcre_compile.cpp:
1714         (firstSignificantOpCode):
1715         (firstSignificantOpCodeSkippingAssertions):
1716         (is_anchored):
1717         (canApplyFirstCharOptimization):
1718         (find_firstassertedchar):
1719
1720 2007-11-24  Eric Seidel  <eric@webkit.org>
1721
1722         Reviewed by Sam.
1723
1724         clean up is_counted_repeat
1725
1726         * pcre/pcre_compile.cpp:
1727         (is_counted_repeat):
1728
1729 2007-11-24  Eric Seidel  <eric@webkit.org>
1730
1731         Reviewed by Sam.
1732
1733         clean up check_escape
1734
1735         * pcre/pcre_compile.cpp:
1736         (check_escape):
1737
1738 2007-11-24  Eric Seidel  <eric@webkit.org>
1739
1740         Reviewed by Sam.
1741
1742         Reformat find_fixedlength
1743
1744         * pcre/pcre_compile.cpp:
1745         (find_fixedlength):
1746
1747 2007-11-24  Eric Seidel  <eric@webkit.org>
1748
1749         Reviewed by Sam.
1750
1751         reformat is_anchored
1752
1753         * pcre/pcre_compile.cpp:
1754         (is_anchored):
1755
1756 2007-11-24  Eric Seidel  <eric@webkit.org>
1757
1758         Reviewed by Maciej.
1759
1760         Remove unused function could_be_empty_branch
1761
1762         * pcre/pcre_compile.cpp:
1763         (first_significant_code):
1764         (find_fixedlength):
1765         (compile_branch):
1766         (canApplyFirstCharOptimization):
1767
1768 2007-11-24  Eric Seidel  <eric@webkit.org>
1769
1770         Reviewed by Sam.
1771
1772         Pass around MatchData objects by reference
1773
1774         * pcre/pcre_exec.cpp:
1775         (pchars):
1776         (match_ref):
1777         (match):
1778         (jsRegExpExecute):
1779
1780 2007-11-24  Eric Seidel  <eric@webkit.org>
1781
1782         Reviewed by Sam.
1783
1784         give PCRE_STARTLINE a better name and rename match_data to MatchData
1785
1786         * pcre/pcre_compile.cpp:
1787         (compile_branch):
1788         (canApplyFirstCharOptimization):
1789         (find_firstassertedchar):
1790         (printCompiledRegExp):
1791         (jsRegExpCompile):
1792         * pcre/pcre_exec.cpp:
1793         (pchars):
1794         (jsRegExpExecute):
1795         * pcre/pcre_internal.h:
1796
1797 2007-11-24  Eric Seidel  <eric@webkit.org>
1798
1799         Reviewed by Sam.
1800
1801         Clean up find_firstassertedchar
1802
1803         * pcre/pcre_compile.cpp:
1804         (get_othercase_range):
1805         (find_firstassertedchar):
1806         (calculateCompiledPatternLengthAndFlags):
1807
1808 2007-11-24  Eric Seidel  <eric@webkit.org>
1809
1810         Reviewed by Tim Hatcher.
1811
1812         Pass around CompileData& instead of CompileData*
1813
1814         * pcre/pcre_compile.cpp:
1815         (compile_branch):
1816         (jsRegExpCompile):
1817
1818 2007-11-24  Eric Seidel  <eric@webkit.org>
1819
1820         Reviewed by Sam.
1821
1822         Clean up compile_branch, move _pcre_ord2utf8, and rename CompileData
1823
1824         * JavaScriptCore.xcodeproj/project.pbxproj:
1825         * pcre/pcre_compile.cpp:
1826         (_pcre_ord2utf8):
1827         (calculateCompiledPatternLengthAndFlags):
1828         (jsRegExpCompile):
1829         * pcre/pcre_internal.h:
1830         * pcre/pcre_ord2utf8.cpp: Removed.
1831
1832 2007-11-24  Eric Seidel  <eric@webkit.org>
1833
1834         Reviewed by Sam.
1835
1836         removing more macros
1837
1838         * pcre/pcre_compile.cpp:
1839         (could_be_empty_branch):
1840         (compile_branch):
1841         (calculateCompiledPatternLengthAndFlags):
1842         * pcre/pcre_exec.cpp:
1843         (match):
1844         (jsRegExpExecute):
1845         * pcre/pcre_internal.h:
1846         * pcre/pcre_xclass.cpp:
1847
1848 2007-11-24  Eric Seidel  <eric@webkit.org>
1849
1850         Reviewed by Maciej.
1851
1852         clean up formating in compile_branch
1853
1854         * pcre/pcre_compile.cpp:
1855         (compile_branch):
1856
1857 2007-11-24  Eric Seidel  <eric@webkit.org>
1858
1859         Reviewed by Sam.
1860
1861         Fix spacing for read_repeat_counts
1862
1863         * pcre/pcre_compile.cpp:
1864         (read_repeat_counts):
1865
1866 2007-11-24  Eric Seidel  <eric@webkit.org>
1867
1868         Reviewed by Sam.
1869
1870         Get rid of PCRE custom char types
1871
1872         * pcre/pcre_compile.cpp:
1873         (check_escape):
1874         (complete_callout):
1875         (compile_branch):
1876         (compile_regex):
1877         (calculateCompiledPatternLengthAndFlags):
1878         (jsRegExpCompile):
1879         * pcre/pcre_exec.cpp:
1880         (match_ref):
1881         (match):
1882         (jsRegExpExecute):
1883         * pcre/pcre_internal.h:
1884
1885 2007-11-24  Eric Seidel  <eric@webkit.org>
1886
1887         Reviewed by Sam.
1888
1889         reformat get_othercase_range
1890
1891         * pcre/pcre_compile.cpp:
1892         (get_othercase_range):
1893
1894 2007-11-24  Eric Seidel  <eric@webkit.org>
1895
1896         Reviewed by Maciej.
1897
1898         Remove register keyword and more cleanup
1899
1900         * pcre/pcre_compile.cpp:
1901         (find_fixedlength):
1902         (compile_branch):
1903         (is_anchored):
1904         (is_startline):
1905         (find_firstassertedchar):
1906         (calculateCompiledPatternLengthAndFlags):
1907         (jsRegExpCompile):
1908         * pcre/pcre_exec.cpp:
1909         (MatchStack::canUseStackBufferForNextFrame):
1910         (MatchStack::allocateNextFrame):
1911         (MatchStack::pushNewFrame):
1912         (MatchStack::frameIsStackAllocated):
1913         (MatchStack::popCurrentFrame):
1914         (MatchStack::unrollAnyHeapAllocatedFrames):
1915         (getUTF8CharAndIncrementLength):
1916         (match):
1917         (jsRegExpExecute):
1918         * pcre/pcre_internal.h:
1919         (PUT2INC):
1920         (isLeadingSurrogate):
1921         (isTrailingSurrogate):
1922         (decodeSurrogatePair):
1923         (getChar):
1924         * pcre/pcre_ord2utf8.cpp:
1925         (_pcre_ord2utf8):
1926         * pcre/pcre_xclass.cpp:
1927         (getUTF8CharAndAdvancePointer):
1928         (_pcre_xclass):
1929
1930 2007-11-24  Eric Seidel  <eric@webkit.org>
1931
1932         Reviewed by Maciej.
1933
1934         Clean up jsRegExpExecute
1935
1936         * pcre/pcre_compile.cpp:
1937         (returnError):
1938         (jsRegExpCompile):
1939         * pcre/pcre_exec.cpp:
1940         (jsRegExpExecute):
1941         * pcre/pcre_internal.h:
1942
1943 2007-11-29  Oliver Hunt  <oliver@apple.com>
1944
1945         Reviewed by Geoff.
1946
1947         Merging updated system alloc and spinlock code from r38 of TCMalloc.
1948
1949         This is needed as a precursor to the merge of TCMalloc proper.
1950
1951         * wtf/FastMalloc.cpp:
1952         (WTF::TCMalloc_PageHeap::GrowHeap):
1953         * wtf/TCSpinLock.h:
1954         (TCMalloc_SpinLock::TCMalloc_SpinLock):
1955         (TCMalloc_SpinLock::):
1956         (TCMalloc_SpinLock::Lock):
1957         (TCMalloc_SpinLock::Unlock):
1958         (TCMalloc_SpinLock::IsHeld):
1959         * wtf/TCSystemAlloc.cpp:
1960         (TrySbrk):
1961         (TryMmap):
1962         (TryVirtualAlloc):
1963         (TryDevMem):
1964         (TCMalloc_SystemAlloc):
1965         * wtf/TCSystemAlloc.h:
1966
1967 2007-11-28  Brady Eidson <beidson@apple.com>
1968
1969         Reviewed by Geoff
1970
1971         Add copyKeysToVector utility, mirroring copyValuesToVector
1972         Also change the copyValuesToVector implementation to be a little more attractive
1973
1974         * wtf/HashMap.h:
1975         (WTF::copyKeysToVector):
1976         (WTF::copyValuesToVector):
1977
1978 2007-11-27  Alp Toker  <alp@atoker.com>
1979
1980         Reviewed by Mark Rowe.
1981
1982         Add a list of public JavaScriptCore headers for installation.
1983
1984         This follows the convention used for the Qt and GTK+ header lists.
1985
1986         * headers.pri: Added.
1987
1988 2007-11-27  Alp Toker  <alp@atoker.com>
1989
1990         Prospective MSVC build fix.
1991
1992         Roll back dllexport/dllimport support for now.
1993
1994         * API/JSBase.h:
1995
1996 2007-11-27  Alp Toker  <alp@atoker.com>
1997
1998         Reviewed by Maciej.
1999
2000         http://bugs.webkit.org/show_bug.cgi?id=15569
2001         [gtk] GTK JavaScriptCore needs to export symbols for JSC API and WTF
2002
2003         Introduce JS_EXPORT to mark symbols to be exported as public API.
2004
2005         Export all public symbols in the JavaScriptCore C API.
2006
2007         This matches conventions for exporting symbols set by the CF and CG
2008         frameworks.
2009
2010         * API/JSBase.h:
2011         * API/JSContextRef.h:
2012         * API/JSObjectRef.h:
2013         * API/JSStringRef.h:
2014         * API/JSStringRefBSTR.h:
2015         * API/JSStringRefCF.h:
2016         * API/JSValueRef.h:
2017
2018 2007-11-27  Anders Carlsson  <andersca@apple.com>
2019
2020         Reviewed by Adam.
2021
2022         Make PropertyNameArray and ScopeChain COMEnumVariant friendly.
2023         
2024         * kjs/PropertyNameArray.cpp:
2025         (KJS::PropertyNameArray::swap):
2026         Implement PropertyNameArray::swap.
2027         
2028         * kjs/PropertyNameArray.h:
2029         Add ValueType typedef. Replace PropertyNameArrayIterator with 
2030         PropertyNameArray::const_iterator.
2031         
2032         * kjs/nodes.cpp:
2033         (KJS::ForInNode::execute):
2034         * kjs/scope_chain.cpp:
2035         (KJS::ScopeChain::print):
2036         Update for changes to PropertyNameArray.
2037         
2038         * kjs/scope_chain.h:
2039         Add const_iterator and ValueType typedef.
2040         
2041 2007-11-27  Anders Carlsson  <andersca@apple.com>
2042
2043         Reviewed by Darin.
2044
2045         Add a ValueType typedef.
2046         
2047         * wtf/Vector.h:
2048
2049 2007-11-26  Darin Adler  <darin@apple.com>
2050
2051         Reviewed by Mitz.
2052
2053         - fix http://bugs.webkit.org/show_bug.cgi?id=16096
2054           REGRESSION (r26653-r26699): Plaxo.com addressbook does not load in webkit nightlies
2055
2056         Test: fast/js/regexp-overflow.html
2057
2058         * pcre/pcre_compile.cpp: (calculateCompiledPatternLengthAndFlags):
2059         Removed a stray "ptr++" that I added by accident when merging the
2060         changes between PCRE 6.4 and 6.5. 
2061
2062 2007-11-26  Geoffrey Garen  <ggaren@apple.com>
2063
2064         Reviewed by Kevin McCullough.
2065         
2066         Fixed <rdar://problem/5597937> REGRESSION (r27126): Drosera does not 
2067         show variables (can't enumerate ActivationImp properties)
2068         
2069         Implemented a custom ActivationImp::getPropertyNames, since 
2070         ActivationImp now uses a custom property storage mechanism for local
2071         variables.
2072
2073         * kjs/function.cpp:
2074         (KJS::ActivationImp::getPropertyNames):
2075         * kjs/function.h:
2076
2077 2007-11-26  Alp Toker  <alp@atoker.com>
2078
2079         GTK+/Qt/Wx build fix for breakage introduced in r28039.
2080
2081         * ForwardingHeaders/JavaScriptCore/JSRetainPtr.h: Added.
2082
2083 2007-11-24  Laszlo Gombos  <laszlo.gombos@gmail.com>
2084
2085         Reviewed by Maciej Stachowiak.
2086
2087         Fix minor compiler warning (GCC 4.1.3)
2088
2089         * pcre/pcre_internal.h:
2090         * pcre/pcre_ucp_searchfuncs.cpp:
2091         (_pcre_ucp_othercase):
2092
2093 2007-11-25  Mark Rowe  <mrowe@apple.com>
2094
2095         Reviewed by Dan Bernstein.
2096
2097         Fix http://bugs.webkit.org/show_bug.cgi?id=16129
2098         Bug 16129: REGRESSION (r27761-r27811): malloc error while visiting http://mysit.es (crashes release build)
2099
2100         * pcre/pcre_compile.cpp: Change errorcode to be passed by reference so that any error code is propagated
2101         to our caller like they expect.
2102
2103 2007-11-23  Kevin Ollivier  <kevino@theolliviers.com>
2104
2105         MSVC7 build fix. (rand_s doesn't exist there)
2106
2107         Reviewed by Adam Roben.
2108
2109         * kjs/config.h:
2110         * wtf/MathExtras.h:
2111
2112 2007-11-23  Kevin Ollivier  <kevino@theolliviers.com>
2113
2114         wx build fix. Move WX_PYTHON logic into project build settings,
2115         add WebKitLibraries dirs on Win, and explicitly include JSCore 
2116         headers in testkjs rather than getting them from a template.
2117         (Include dir order of JSCore/WTF and ICU headers is important due  
2118         to wtf/unicode/utf8.h.)
2119
2120         * jscore.bkl:
2121
2122 2007-11-23  Simon Hausmann  <hausmann@webkit.org>
2123
2124         Reviewed by George Staikos <staikos@kde.org>.
2125
2126         Fix make (dist)clean on Windows.
2127         
2128         OBJECTS_DIR_WTR does not exist anymore, use GENERATED_SOURCES_DIR.
2129         
2130
2131         * JavaScriptCore.pri:
2132         * pcre/pcre.pri:
2133
2134 2007-11-22  Simon Hausmann  <hausmann@kde.org>
2135
2136         Reviewed by George.
2137
2138         Make the directory of where to put the generated sources configurable through the GENERATED_SOURCE_DIR variable
2139
2140         * JavaScriptCore.pri:
2141         * pcre/pcre.pri:
2142
2143 2007-11-22  Simon Hausmann  <hausmann@kde.org>
2144
2145         Reviewed by George.
2146
2147         Centralize the setup for all the extra compilers in a addExtraCompiler function.
2148         
2149         This allows adding a "generated_files" target that builds all generated files using "make generated_files".
2150         For the build inside Qt we do not generate actual rules for the extra compilers but instead
2151         do the variable substitution of compiler.output manually and add the generated sources to SOURCES.
2152
2153         * JavaScriptCore.pri:
2154         * pcre/pcre.pri:
2155
2156 2007-11-20  Mark Rowe  <mrowe@apple.com>
2157
2158         Reviewed by Tim Hatcher.
2159
2160         <rdar://problem/5602936> Need to resolve new GCC 4.2 warnings
2161
2162         Fix all warnings emitted by GCC 4.2 when building JavaScriptCore.  This allows builds with
2163         -Werror to succeed.  At present they will crash when executed due to code that is not safe
2164         under strict aliasing (<rdar://problem/5536806>).
2165
2166         * Configurations/Base.xcconfig: Remove the -Wno-long-double flag.
2167         * kjs/date_object.cpp:
2168         (KJS::formatTime): Test whether the stack-allocated string is empty rather than at a non-null address.
2169         * kjs/dtoa.cpp:
2170         (Bigint::): Tweak formatting to silence warnings.
2171         * pcre/pcre_exec.cpp:
2172         (match): Tweak formatting to silence warnings
2173         * wtf/Assertions.cpp: Add printf format attribute to functions that warrant it.
2174         * wtf/Assertions.h: Ditto.
2175
2176 2007-11-19  Kevin Ollivier  <kevino@theolliviers.com>
2177
2178         wx port build fix (wx headers include ctype functions).
2179
2180         * kjs/config.h:
2181
2182 2007-11-19  Kevin Ollivier  <kevino@theolliviers.com>
2183
2184         Remove outdated and unused Windows port files.
2185
2186         Reviewed by Adam Roben.
2187
2188         * Makefile.vc: Removed.
2189         * README-Win32.txt: Removed.
2190
2191 2007-11-18  Eric Seidel  <eric@webkit.org>
2192
2193         Reviewed by Oliver.
2194
2195         * tests/mozilla/jsDriver.pl: exit non-0 when user aborts test run
2196
2197 2007-11-17  Mark Rowe  <mrowe@apple.com>
2198
2199         Reviewed by Darin Adler.
2200
2201         Fix: <rdar://problem/5607032> REGRESSION: testapi exits with assertion failure in debug build
2202              <rdar://problem/5440659> JSGlobalContextCreate throws away globalObjectClass's prototype
2203              http://bugs.webkit.org/show_bug.cgi?id=16033
2204
2205         Split Interpreter's initialization into two distinct steps:  the creation of the global prototypes
2206         and constructors, and storing them on the global object.  This allows JSClassRef's passed to
2207         JSGlobalContextCreate to be instantiated with the correct prototype.
2208
2209         * API/JSCallbackObject.cpp: Assert at compile-time that the custom global object will fit in a collector cell.
2210         * API/JSCallbackObject.h:
2211         * API/JSCallbackObjectFunctions.h:
2212         (KJS::::JSCallbackObject):
2213         (KJS::::init):
2214         * API/JSContextRef.cpp:
2215         (JSGlobalContextCreate): Construct and set the interpreter's global object separately.  When globalObjectClass
2216         is passed we need to set the interpreter's global object before doing the JSCallbackObject's initialization to
2217         prevent any JSObjectInitializeCallback's being invoked before a global object is set.
2218         * API/testapi.c:
2219         (globalObject_initialize): Test the object passed in is correct and that it has the expected global properties.
2220         (globalObject_get):
2221         (globalObject_set):
2222         (main):
2223         * API/testapi.js: Test that any static properties exposed by the global object's custom class are found.
2224         * JavaScriptCore.exp:
2225         * bindings/testbindings.cpp:
2226         (main): Update for changes in Interpreter method signatures.
2227         * bindings/testbindings.mm:
2228         (main): Ditto.
2229         * kjs/ExecState.cpp:
2230         (KJS::ExecState::ExecState):
2231         (KJS::ExecState::mark):
2232         (KJS::ExecState::setGlobalObject):
2233         * kjs/ExecState.h: Rename scope to m_scopeChain.
2234         * kjs/interpreter.cpp:
2235         (KJS::Interpreter::Interpreter):
2236         (KJS::Interpreter::init):
2237         (KJS::Interpreter::globalObject):
2238         (KJS::Interpreter::setGlobalObject):
2239         (KJS::Interpreter::resetGlobalObjectProperties):
2240         (KJS::Interpreter::createObjectsForGlobalObjectProperties):
2241         (KJS::Interpreter::setGlobalObjectProperties): Switch to using putDirect to ensure that the global object's put method
2242         cannot interfere with setting of the global properties.  This prevents a user-written JSClassRef from attempting to
2243         call back into JavaScript from the initialization of the global object's members.
2244         * kjs/interpreter.h:
2245         * kjs/testkjs.cpp:
2246         (setupInterpreter): Update for changes in Interpreter method signatures.
2247
2248 2007-11-17  Mark Rowe  <mrowe@apple.com>
2249
2250         Reviewed by Sam Weinig.
2251
2252         Prevent testapi from reporting false leaks.  Clear out local variables pointing at
2253         JSObjectRefs to allow their values to be collected.
2254
2255         * API/testapi.c:
2256         (main):
2257
2258 2007-11-17  Mark Rowe  <mrowe@apple.com>
2259
2260         Reviewed by Sam Weinig.
2261
2262         Prevent testapi from crashing if testapi.js can not be found by nil-checking the result of createStringWithContentsOfFile.
2263
2264         * API/testapi.c:
2265         (main):
2266
2267 2007-11-17  Alp Toker  <alp@atoker.com>
2268
2269         Reviewed by Eric.
2270
2271         http://bugs.webkit.org/show_bug.cgi?id=16032
2272         JS minidom is not portable
2273
2274         Use a plain UTF-8 string instead of a CFString.
2275
2276         Print to stdout, not stderr like CFShow() would have done, since that
2277         behaviour seems unintentional.
2278
2279         * API/minidom.c:
2280         (main):
2281
2282 2007-11-17  Steve Falkenburg  <sfalken@apple.com>
2283
2284         Windows build fix.
2285
2286         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
2287
2288 2007-11-16  Mark Rowe  <mrowe@apple.com>
2289
2290         Windows build fix.
2291
2292         * kjs/lexer.cpp:
2293         (KJS::Lexer::record8):
2294
2295 2007-11-16  Mark Rowe  <mrowe@apple.com>
2296
2297         Reviewed by Eric.
2298
2299         Replace strings, identifier, buffer8 and buffer16 members of Lexer with vectors.
2300         SunSpider claims this is a 0.7% speedup.
2301
2302         * kjs/lexer.cpp:
2303         (KJS::Lexer::Lexer):
2304         (KJS::Lexer::lex):
2305         (KJS::Lexer::record8):
2306         (KJS::Lexer::record16):
2307         (KJS::Lexer::scanRegExp):
2308         (KJS::Lexer::clear):
2309         (KJS::Lexer::makeIdentifier):
2310         (KJS::Lexer::makeUString):
2311         * kjs/lexer.h:
2312         * kjs/ustring.cpp:
2313         (KJS::UString::UString): Add a convenience constructor that takes a const Vector<UChar>&.
2314         * kjs/ustring.h:
2315
2316 2007-11-16  Adam Roben  <aroben@apple.com>
2317
2318         Windows build fix
2319
2320         * JavaScriptCore.vcproj/testkjs/testkjs.vcproj: Add a new include path
2321         and ignore the int -> bool conversion warning.
2322
2323 2007-11-16  Alexey Proskuryakov  <ap@webkit.org>
2324
2325         Fix Windows debug build.
2326         Rubber-stamped by Eric
2327
2328         * pcre/pcre_exec.cpp: (match): Removed ASSERT_NOT_REACHED assertions that were making MSVC
2329         complain about unreachable code.
2330
2331 2007-11-15  Mark Rowe  <mrowe@apple.com>
2332
2333         Gtk build fix.
2334
2335         * kjs/Parser.cpp:
2336
2337 2007-11-15  Mark Rowe  <mrowe@apple.com>
2338
2339         Mac build and header search path sanity fix.
2340
2341         Reviewed by Sam Weinig and Tim Hatcher.
2342
2343         Move base setting for HEADER_SEARCH_PATHS into Base.xcconfig, and extend
2344         it in JavaScriptCore.xcconfig.  This removes the need to override it on a
2345         per-target basis inside the .xcodeproj file.
2346
2347         * Configurations/Base.xcconfig:
2348         * Configurations/JavaScriptCore.xcconfig:
2349         * JavaScriptCore.xcodeproj/project.pbxproj:
2350
2351 2007-11-15  Mark Rowe  <mrowe@apple.com>
2352
2353         Qt build fix.
2354
2355         * kjs/Parser.h:
2356
2357 2007-11-15  Geoffrey Garen  <ggaren@apple.com>
2358
2359         Reviewed by Eric Seidel.
2360
2361         Another round of grammar / parsing cleanup.
2362         
2363         1. Created distinct parser calls for parsing function bodies vs
2364         programs. This will help later with optimizing global variable access.
2365         
2366         2. Turned Parser into a singleton. Cleaned up Lexer's singleton 
2367         interface.
2368         
2369         3. Modified Lexer to free a little more memory when done lexing. (Added
2370         FIXMEs for similar issues that I didn't fix.)
2371         
2372         4. Changed Lexer::makeIdentifier and Lexer::makeUString to start 
2373         respecting the arguments passed to them. (No behavior change, but this
2374         problem could have caused serious problems for an unsuspecting user of
2375         these functions.)
2376         
2377         5. Removed KJS_DEBUG_MEM because it was bit-rotted.
2378         
2379         6. Removed Parser::prettyPrint because the same work was simpler to do
2380         at the call site.
2381         
2382         7. Some renames:
2383         
2384             "Parser::accept" => "Parser::didFinishParsing"
2385             "Parser::sid" => "Parser::m_sourceID"
2386             "Lexer::doneParsing" => "Lexer::clear"
2387             "sid" => "sourceId"
2388             "lineno" => "lineNo"
2389         
2390         * JavaScriptCore.exp:
2391         * kjs/Parser.cpp:
2392         (KJS::Parser::Parser):
2393         (KJS::Parser::parseProgram):
2394         (KJS::Parser::parseFunctionBody):
2395         (KJS::Parser::parse):
2396         (KJS::Parser::didFinishParsing):
2397         (KJS::parser):
2398         * kjs/Parser.h:
2399         (KJS::Parser::sourceId):
2400         * kjs/function.cpp:
2401         (KJS::GlobalFuncImp::callAsFunction):
2402         * kjs/function_object.cpp:
2403         (FunctionObjectImp::construct):
2404         * kjs/grammar.y:
2405         * kjs/interpreter.cpp:
2406         (KJS::Interpreter::checkSyntax):
2407         (KJS::Interpreter::evaluate):
2408         * kjs/interpreter.h:
2409         * kjs/lexer.cpp:
2410         (kjsyylex):
2411         (KJS::lexer):
2412         (KJS::Lexer::Lexer):
2413         (KJS::Lexer::~Lexer):
2414         (KJS::Lexer::scanRegExp):
2415         (KJS::Lexer::doneParsing):
2416         (KJS::Lexer::makeIdentifier):
2417         (KJS::Lexer::makeUString):
2418         * kjs/lexer.h:
2419         (KJS::Lexer::pattern):
2420         (KJS::Lexer::flags):
2421         (KJS::Lexer::sawError):
2422         * kjs/nodes.cpp:
2423         (KJS::Node::Node):
2424         (KJS::FunctionBodyNode::FunctionBodyNode):
2425         * kjs/nodes.h:
2426         * kjs/testkjs.cpp:
2427         (prettyPrintScript):
2428         (kjsmain):
2429         * kjs/ustring.cpp:
2430         * kjs/ustring.h:
2431
2432 2007-11-15  Oliver Hunt  <oliver@apple.com>
2433
2434         Reviewed by Darin.
2435
2436         <rdar://problem/5601548> REGRESSION: All SourceElements and their children leak after a syntax error
2437         
2438         Add a stub node to maintain the Vector of SourceElements until assignment.
2439
2440         * kjs/grammar.y:
2441         * kjs/nodes.h:
2442         (KJS::SourceElementsStub::SourceElementsStub):
2443         (KJS::SourceElementsStub::append):
2444         (KJS::SourceElementsStub::release):
2445         (KJS::SourceElementsStub::):
2446         (KJS::SourceElementsStub::precedence):
2447
2448 2007-11-15  Eric Seidel  <eric@webkit.org>
2449
2450         Reviewed by Sam.
2451
2452         Abstract most of RMATCH into MatchStack functions.
2453         
2454         SunSpider claims this, combined with the last 2 patches was a 1% speedup, 10% for dna-regexp.
2455
2456         * pcre/pcre_exec.cpp:
2457         (MatchStack::canUseStackBufferForNextFrame):
2458         (MatchStack::allocateNextFrame):
2459         (MatchStack::pushNewFrame):
2460         (MatchStack::frameIsStackAllocated):
2461         (MatchStack::popCurrentFrame):
2462         (MatchStack::unrollAnyHeapAllocatedFrames):
2463         (match):
2464
2465 2007-11-15  Eric Seidel  <eric@webkit.org>
2466
2467         Reviewed by Sam.
2468
2469         Remove RETURN_ERROR, add MatchStack
2470         
2471         * pcre/pcre_exec.cpp:
2472         (MatchStack::MatchStack):
2473         (MatchStack::unrollAnyHeapAllocatedFrames):
2474         (matchError):
2475         (match):
2476         
2477 2007-11-15  Eric Seidel  <eric@webkit.org>
2478
2479         Reviewed by Sam.
2480
2481         Clean up match function to match WebKit style
2482
2483         * JavaScriptCore.xcodeproj/project.pbxproj:
2484         * pcre/pcre_exec.cpp:
2485         (match):
2486
2487 2007-11-15  Steve Falkenburg  <sfalken@apple.com>
2488
2489         Windows build fix.
2490
2491         * JavaScriptCore.vcproj/JavaScriptCore.make:
2492
2493 2007-11-14  Alexey Proskuryakov  <ap@webkit.org>
2494
2495         Reviewed by Darin.
2496
2497         http://bugs.webkit.org/show_bug.cgi?id=15982
2498         Improve JSString UTF-8 decoding
2499
2500         * API/JSStringRef.cpp:
2501         (JSStringCreateWithUTF8CString): Use strict decoding, return 0 on error.
2502
2503         * wtf/unicode/UTF8.cpp:
2504         (WTF::Unicode::convertUTF16ToUTF8):
2505         (WTF::Unicode::convertUTF8ToUTF16):
2506         * wtf/unicode/UTF8.h:
2507         Made these function names start with a lower case letter.
2508
2509         * kjs/ustring.cpp: (KJS::UString::UTF8String): Updated for the above renaming.
2510
2511         * bindings/c/c_utility.cpp:
2512         (KJS::Bindings::convertUTF8ToUTF16WithLatin1Fallback): Renamed to highlight the difference
2513         from convertUTF8ToUTF16 in wtf/unicode.
2514         (KJS::Bindings::convertNPStringToUTF16): Updated for the above renaming.
2515         (KJS::Bindings::identifierFromNPIdentifier): Ditto.
2516         * bindings/c/c_utility.h: Made convertUTF8ToUTF16WithLatin1Fallback() a file static.
2517
2518 2007-11-14  Sam Weinig  <sam@webkit.org>
2519
2520         Rubber-stamped by Anders.
2521
2522         Fix the Xcode project file after it was messed up in r27402.
2523
2524         * JavaScriptCore.xcodeproj/project.pbxproj:
2525
2526 2007-11-14  Eric Seidel  <eric@webkit.org>
2527
2528         Reviewed by Oliver.
2529         
2530         More PCRE style cleanup.
2531
2532         * pcre/pcre_compile.cpp:
2533         (compile_regex):
2534
2535 2007-11-14  Adam Roben  <aroben@apple.com>
2536
2537         Clean up the bison conflict checking script
2538
2539         Reviewed by Geoff.
2540
2541         * DerivedSources.make:
2542
2543 2007-11-14  Eric Seidel  <eric@webkit.org>
2544
2545         Reviewed by Geoff.
2546
2547         Another round of PCRE cleanups: inlines
2548         
2549         SunSpider claims that this, combined with my previous PCRE cleanup were a 0.7% speedup, go figure.
2550
2551         * pcre/pcre_compile.cpp:
2552         (jsRegExpCompile):
2553         * pcre/pcre_exec.cpp:
2554         (match):
2555         (jsRegExpExecute):
2556         * pcre/pcre_internal.h:
2557         (PUT):
2558         (GET):
2559         (PUT2):
2560         (GET2):
2561         (isNewline):
2562
2563 2007-11-14  Eric Seidel  <eric@webkit.org>
2564
2565         Reviewed by Sam.
2566         
2567         Give PCRE a (small) bath.
2568         Fix some formating and break things off into separate functions
2569         http://bugs.webkit.org/show_bug.cgi?id=15993
2570
2571         * pcre/pcre_compile.cpp:
2572         (calculateCompiledPatternLengthAndFlags):
2573         (printCompiledRegExp):
2574         (returnError):
2575         (jsRegExpCompile):
2576         * pcre/pcre_internal.h:
2577         (compile_data::compile_data):
2578
2579 2007-11-14  Geoffrey Garen  <ggaren@apple.com>
2580
2581         Reviewed by Eric Seidel.
2582         
2583         Cleaned up the JavaScript grammar a bit.
2584         
2585         1. Changed BlockNode to always hold a child vector (which may be empty),
2586         eliminating a few NULL-check branches in the common execution case.
2587         
2588         2. Changed the Block production to correctly report its starting and 
2589         ending line numbers to the debugger. (It used to report its ending line
2590         as its starting line.) Also, removed duplicate line-reporting code
2591         inside the BlockNode constructor.
2592         
2593         3. Moved curly braces up from FunctionBody production into parent
2594         productions. (I had to move the line number reporting code, too, since
2595         it depends on the location of the curly braces.) This matches the ECMA
2596         spec more closely, and makes some future changes I plan easier.
2597         
2598         4. Fixed statementList* convenience functions to deal appropriately with
2599         empty Vectors.
2600
2601         SunSpider reports a small and statistically insignificant speedup.
2602
2603         * kjs/grammar.y:
2604         * kjs/nodes.cpp:
2605         (KJS::statementListPushFIFO):
2606         (KJS::statementListGetDeclarations):
2607         (KJS::statementListInitializeDeclarationStack):
2608         (KJS::statementListInitializeVariableAccessStack):
2609         (KJS::BlockNode::BlockNode):
2610         (KJS::BlockNode::optimizeVariableAccess):
2611         (KJS::BlockNode::getDeclarations):
2612         (KJS::BlockNode::execute):
2613         (KJS::FunctionBodyNode::initializeDeclarationStacks):
2614         (KJS::FunctionBodyNode::optimizeVariableAccess):
2615
2616 2007-11-13  Anders Carlsson  <andersca@apple.com>
2617
2618         Add RefCounted.h (And remove Shared.h)
2619         
2620         * JavaScriptCore.vcproj/WTF/WTF.vcproj:
2621
2622 2007-11-13  Geoffrey Garen  <ggaren@apple.com>
2623
2624         Build fix.
2625
2626         * kjs/regexp.h:
2627
2628 2007-11-13  Geoffrey Garen  <ggaren@apple.com>
2629
2630         Reviewed by Anders Carlsson.
2631
2632         Renamed Shared to RefCounted.
2633
2634         * API/JSClassRef.h:
2635         * JavaScriptCore.xcodeproj/project.pbxproj:
2636         * kjs/interpreter.h:
2637         * kjs/regexp.h:
2638         * wtf/RefCounted.h: Copied from JavaScriptCore/wtf/Shared.h.
2639         (WTF::RefCounted::RefCounted):
2640         * wtf/Shared.h: Removed.
2641
2642 2007-11-13  Adam Roben  <aroben@apple.com>
2643
2644         Build fix
2645
2646         Reviewed by Geoff.
2647
2648         * kjs/regexp.h: Added a missing #include.
2649
2650 2007-11-13  Geoffrey Garen  <ggaren@apple.com>
2651
2652         Reviewed by Sam Weinig.
2653
2654         Moved Shared.h into wtf so it could be used in more places. Deployed
2655         Shared in places where JSCore previously had hand-rolled ref-counting
2656         classes.
2657
2658         * API/JSClassRef.cpp:
2659         (OpaqueJSClass::OpaqueJSClass):
2660         * API/JSClassRef.h:
2661         * API/JSObjectRef.cpp:
2662         (JSClassRetain):
2663         (JSClassRelease):
2664         * JavaScriptCore.vcproj/WTF/WTF.vcproj:
2665         * JavaScriptCore.xcodeproj/project.pbxproj:
2666         * kjs/interpreter.cpp:
2667         (KJS::Interpreter::init):
2668         * kjs/interpreter.h:
2669         * kjs/regexp.cpp:
2670         (KJS::RegExp::RegExp):
2671         * kjs/regexp.h:
2672         * wtf/Shared.h: Copied from WebCore/platform/Shared.h.
2673
2674 2007-11-13  Eric Seidel  <eric@webkit.org>
2675
2676         Reviewed by Maciej.
2677
2678         Add an ASSERT to getTruncatedInt32 to enforce proper usage.
2679         Best part about this patch?  It doesn't break the web!
2680
2681         * kjs/JSImmediate.h:
2682         (KJS::JSImmediate::getTruncatedInt32):
2683         (KJS::JSImmediate::toDouble):
2684         (KJS::JSImmediate::getUInt32):
2685
2686 2007-11-13  Alexey Proskuryakov  <ap@webkit.org>
2687
2688         Windows build fix.
2689
2690         * bindings/c/c_utility.cpp:
2691         (KJS::Bindings::convertUTF8ToUTF16):
2692         * kjs/ustring.cpp:
2693         (KJS::UString::UTF8String):
2694         * wtf/unicode/UTF8.cpp:
2695         (WTF::Unicode::ConvertUTF8ToUTF16):
2696
2697 2007-11-13  Darin Adler  <darin@apple.com>
2698
2699         Reviewed by Geoff.
2700
2701         - fix http://bugs.webkit.org/show_bug.cgi?id=11231
2702           RegExp bug when handling newline characters
2703           and a number of other differences between PCRE behvior
2704           and JavaScript regular expressions:
2705
2706           + single-digit sequences like \4 should be treated as octal
2707             character constants, unless there is a sufficient number
2708             of brackets for them to be treated as backreferences
2709
2710           + \8 turns into the character "8", not a binary zero character
2711             followed by "8" (same for 9)
2712
2713           + only the first 3 digits should be considered part of an
2714             octal character constant (the old behavior was to decode
2715             an arbitrarily long sequence and then mask with 0xFF)
2716
2717           + if \x is followed by anything other than two valid hex digits,
2718             then it should simply be treated a the letter "x"; that includes
2719             not supporting the \x{41} syntax
2720
2721           + if \u is followed by anything less than four valid hex digits,
2722             then it should simply be treated a the letter "u"
2723
2724           + an extra "+" should be a syntax error, rather than being treated
2725             as the "possessive quantifier"
2726
2727           + if a "]" character appears immediately after a "[" character that
2728             starts a character class, then that's an empty character class,
2729             rather than being the start of a character class that includes a
2730             "]" character
2731
2732           + a "$" should not match a terminating newline; we could have gotten
2733             PCRE to handle this the way we wanted by passing an appropriate option
2734
2735         Test: fast/js/regexp-no-extensions.html
2736
2737         * pcre/pcre_compile.cpp:
2738         (check_escape): Check backreferences against bracount to catch both
2739         overflows and things that should be treated as octal. Rewrite octal
2740         loop to not go on indefinitely. Rewrite both hex loops to match and
2741         remove \x{} support.
2742         (compile_branch): Restructure loops so that we don't special-case a "]"
2743         at the beginning of a character class. Remove code that treated "+" as
2744         the possessive quantifier.
2745         (jsRegExpCompile): Change the "]" handling here too.
2746
2747         * pcre/pcre_exec.cpp: (match): Changed CIRC to match the DOLL implementation.
2748         Changed DOLL to remove handling of "terminating newline", a Perl concept
2749         which we don't need.
2750
2751         * tests/mozilla/expected.html: Two tests are fixed now:
2752         ecma_3/RegExp/regress-100199.js and ecma_3/RegExp/regress-188206.js.
2753         One test fails now: ecma_3/RegExp/perlstress-002.js -- our success before
2754         was due to a bug (we treated all 1-character numeric escapes as backreferences).
2755         The date tests also now both expect success -- whatever was making them fail
2756         before was probably due to the time being close to a DST shift; maybe we need
2757         to get rid of those tests.
2758
2759 2007-11-13  Darin Adler  <darin@apple.com>
2760
2761         * kjs/JSImmediate.h: (KJS::JSImmediate::getTruncatedInt32):
2762         Remove too-strong assert that was firing constantly and preventing even basic
2763         web browsing from working in a debug build. This function is used in many
2764         cases where the immediate value is not a number; the assertion could perhaps
2765         be added back later with a bit of reorganization.
2766
2767 2007-11-13  Alp Toker  <alp@atoker.com>
2768
2769         Build fix for breakage to non-Mac builds introduced in r27746.
2770
2771         * kjs/ustring.cpp:
2772
2773 2007-11-13  Eric Seidel  <eric@webkit.org>
2774
2775         Reviewed by Maciej.
2776
2777         Clean up evaluateToBoolean functions to use inlines instead of copy/paste code
2778
2779         * kjs/JSImmediate.h:
2780         * kjs/nodes.cpp:
2781         (KJS::GreaterNode::inlineEvaluateToBoolean):
2782         (KJS::GreaterNode::evaluate):
2783         (KJS::LessEqNode::inlineEvaluateToBoolean):
2784         (KJS::LessEqNode::evaluate):
2785         (KJS::GreaterEqNode::inlineEvaluateToBoolean):
2786         (KJS::GreaterEqNode::evaluate):
2787         (KJS::InNode::evaluateToBoolean):
2788         (KJS::EqualNode::inlineEvaluateToBoolean):
2789         (KJS::EqualNode::evaluate):
2790         (KJS::NotEqualNode::inlineEvaluateToBoolean):
2791         (KJS::NotEqualNode::evaluate):
2792         (KJS::StrictEqualNode::inlineEvaluateToBoolean):
2793         (KJS::StrictEqualNode::evaluate):
2794         (KJS::NotStrictEqualNode::inlineEvaluateToBoolean):
2795         (KJS::NotStrictEqualNode::evaluate):
2796         * kjs/nodes.h:
2797
2798 2007-11-12  Geoffrey Garen  <ggaren@apple.com>
2799
2800         Reviewed by Sam Weinig.
2801         
2802         Fixed http://bugs.webkit.org/show_bug.cgi?id=15958
2803         base64 spends 1.1% of total time checking for special Infinity case
2804         
2805         Use a fast character test instead of calling strncmp.
2806         
2807         1.1% speedup on string-base64. SunSpider reports a .4% speedup overall;
2808         Sharks reports only .1%. Who are you going to believe? Huh?
2809
2810         * kjs/ustring.cpp:
2811         (KJS::UString::toDouble):
2812
2813 2007-11-12  Eric Seidel  <eric@webkit.org>
2814
2815         Reviewed by Oliver.
2816
2817         Add evaluateToInt32 and evaluateUInt32 methods and deploy them.
2818         Fix a few missing evaluateToBoolean methods
2819         Deploy all evaluateTo* functions to more nodes to avoid slowdowns
2820         http://bugs.webkit.org/show_bug.cgi?id=15950
2821         
2822         SunSpider claims this is at least a 1.4% speedup.
2823
2824         * kjs/JSImmediate.h:
2825         (KJS::JSImmediate::getTruncatedInt32):
2826         (KJS::JSImmediate::toDouble):
2827         (KJS::JSImmediate::getUInt32):
2828         * kjs/nodes.cpp:
2829         (KJS::ExpressionNode::evaluateToNumber):
2830         (KJS::ExpressionNode::evaluateToInt32):
2831         (KJS::ExpressionNode::evaluateToUInt32):
2832         (KJS::NumberNode::evaluateToInt32):
2833         (KJS::NumberNode::evaluateToUInt32):
2834         (KJS::ImmediateNumberNode::evaluateToInt32):
2835         (KJS::ImmediateNumberNode::evaluateToUInt32):
2836         (KJS::ResolveNode::evaluate):
2837         (KJS::ResolveNode::evaluateToNumber):
2838         (KJS::ResolveNode::evaluateToBoolean):
2839         (KJS::ResolveNode::evaluateToInt32):
2840         (KJS::ResolveNode::evaluateToUInt32):
2841         (KJS::LocalVarAccessNode::evaluateToInt32):
2842         (KJS::LocalVarAccessNode::evaluateToUInt32):
2843         (KJS::BracketAccessorNode::evaluateToNumber):
2844         (KJS::BracketAccessorNode::evaluateToBoolean):
2845         (KJS::BracketAccessorNode::evaluateToInt32):
2846         (KJS::BracketAccessorNode::evaluateToUInt32):
2847         (KJS::DotAccessorNode::inlineEvaluate):
2848         (KJS::DotAccessorNode::evaluate):
2849         (KJS::DotAccessorNode::evaluateToNumber):
2850         (KJS::DotAccessorNode::evaluateToBoolean):
2851         (KJS::DotAccessorNode::evaluateToInt32):
2852         (KJS::DotAccessorNode::evaluateToUInt32):
2853         (KJS::NewExprNode::inlineEvaluate):
2854         (KJS::NewExprNode::evaluate):
2855         (KJS::NewExprNode::evaluateToNumber):
2856         (KJS::NewExprNode::evaluateToBoolean):
2857         (KJS::NewExprNode::evaluateToInt32):
2858         (KJS::NewExprNode::evaluateToUInt32):
2859         (KJS::FunctionCallResolveNode::inlineEvaluate):
2860         (KJS::FunctionCallResolveNode::evaluate):
2861         (KJS::FunctionCallResolveNode::evaluateToNumber):
2862         (KJS::FunctionCallResolveNode::evaluateToBoolean):
2863         (KJS::FunctionCallResolveNode::evaluateToInt32):
2864         (KJS::FunctionCallResolveNode::evaluateToUInt32):
2865         (KJS::LocalVarFunctionCallNode::evaluate):
2866         (KJS::LocalVarFunctionCallNode::evaluateToNumber):
2867         (KJS::LocalVarFunctionCallNode::evaluateToBoolean):
2868         (KJS::LocalVarFunctionCallNode::evaluateToInt32):
2869         (KJS::LocalVarFunctionCallNode::evaluateToUInt32):
2870         (KJS::FunctionCallDotNode::evaluate):
2871         (KJS::FunctionCallDotNode::evaluateToNumber):
2872         (KJS::FunctionCallDotNode::evaluateToBoolean):
2873         (KJS::FunctionCallDotNode::evaluateToInt32):
2874         (KJS::FunctionCallDotNode::evaluateToUInt32):
2875         (KJS::PostDecLocalVarNode::inlineEvaluateToNumber):
2876         (KJS::PostDecLocalVarNode::evaluateToNumber):
2877         (KJS::PostDecLocalVarNode::evaluateToBoolean):
2878         (KJS::PostDecLocalVarNode::evaluateToInt32):
2879         (KJS::PostDecLocalVarNode::evaluateToUInt32):
2880         (KJS::typeStringForValue):
2881         (KJS::UnaryPlusNode::evaluate):
2882         (KJS::UnaryPlusNode::evaluateToBoolean):
2883         (KJS::UnaryPlusNode::evaluateToNumber):
2884         (KJS::UnaryPlusNode::evaluateToInt32):
2885         (KJS::BitwiseNotNode::inlineEvaluateToInt32):
2886         (KJS::BitwiseNotNode::evaluate):
2887         (KJS::BitwiseNotNode::evaluateToNumber):
2888         (KJS::BitwiseNotNode::evaluateToBoolean):
2889         (KJS::BitwiseNotNode::evaluateToInt32):
2890         (KJS::MultNode::evaluateToBoolean):
2891         (KJS::MultNode::evaluateToInt32):
2892         (KJS::MultNode::evaluateToUInt32):
2893         (KJS::DivNode::evaluateToInt32):
2894         (KJS::DivNode::evaluateToUInt32):
2895         (KJS::ModNode::evaluateToBoolean):
2896         (KJS::ModNode::evaluateToInt32):
2897         (KJS::ModNode::evaluateToUInt32):
2898         (KJS::AddNode::evaluateToNumber):
2899         (KJS::AddNode::evaluateToInt32):
2900         (KJS::AddNode::evaluateToUInt32):
2901         (KJS::AddNumbersNode::evaluateToInt32):
2902         (KJS::AddNumbersNode::evaluateToUInt32):
2903         (KJS::SubNode::evaluateToInt32):
2904         (KJS::SubNode::evaluateToUInt32):
2905         (KJS::LeftShiftNode::inlineEvaluateToInt32):
2906         (KJS::LeftShiftNode::evaluate):
2907         (KJS::LeftShiftNode::evaluateToNumber):
2908         (KJS::LeftShiftNode::evaluateToInt32):
2909         (KJS::RightShiftNode::inlineEvaluateToInt32):
2910         (KJS::RightShiftNode::evaluate):
2911         (KJS::RightShiftNode::evaluateToNumber):
2912         (KJS::RightShiftNode::evaluateToInt32):
2913         (KJS::UnsignedRightShiftNode::inlineEvaluateToUInt32):
2914         (KJS::UnsignedRightShiftNode::evaluate):
2915         (KJS::UnsignedRightShiftNode::evaluateToNumber):
2916         (KJS::UnsignedRightShiftNode::evaluateToInt32):
2917         (KJS::LessNode::inlineEvaluateToBoolean):
2918         (KJS::LessNode::evaluate):
2919         (KJS::LessNode::evaluateToBoolean):
2920         (KJS::LessNumbersNode::inlineEvaluateToBoolean):
2921         (KJS::LessNumbersNode::evaluate):
2922         (KJS::LessNumbersNode::evaluateToBoolean):
2923         (KJS::LessStringsNode::inlineEvaluateToBoolean):
2924         (KJS::LessStringsNode::evaluate):
2925         (KJS::BitAndNode::evaluate):
2926         (KJS::BitAndNode::inlineEvaluateToInt32):
2927         (KJS::BitAndNode::evaluateToNumber):
2928         (KJS::BitAndNode::evaluateToBoolean):
2929         (KJS::BitAndNode::evaluateToInt32):
2930         (KJS::BitXOrNode::inlineEvaluateToInt32):
2931         (KJS::BitXOrNode::evaluate):
2932         (KJS::BitXOrNode::evaluateToNumber):
2933         (KJS::BitXOrNode::evaluateToBoolean):
2934         (KJS::BitXOrNode::evaluateToInt32):
2935         (KJS::BitOrNode::inlineEvaluateToInt32):
2936         (KJS::BitOrNode::evaluate):
2937         (KJS::BitOrNode::evaluateToNumber):
2938         (KJS::BitOrNode::evaluateToBoolean):
2939         (KJS::BitOrNode::evaluateToInt32):
2940         (KJS::ConditionalNode::evaluateToNumber):
2941         (KJS::ConditionalNode::evaluateToInt32):
2942         (KJS::ConditionalNode::evaluateToUInt32):
2943         (KJS::valueForReadModifyAssignment):
2944         (KJS::AssignExprNode::evaluate):
2945         (KJS::AssignExprNode::evaluateToBoolean):
2946         (KJS::AssignExprNode::evaluateToNumber):
2947         (KJS::AssignExprNode::evaluateToInt32):
2948         (KJS::VarDeclNode::handleSlowCase):
2949         * kjs/nodes.h:
2950         (KJS::FunctionCallResolveNode::precedence):
2951         (KJS::AddNode::precedence):
2952         (KJS::AddNode::):
2953         (KJS::LessNumbersNode::):
2954         (KJS::LessStringsNode::):
2955         * kjs/value.cpp:
2956         (KJS::JSValue::toInt32SlowCase):
2957         (KJS::JSValue::toUInt32SlowCase):
2958         * kjs/value.h:
2959         (KJS::JSValue::asCell):
2960         (KJS::JSValue::toInt32):
2961         (KJS::JSValue::toUInt32):
2962
2963 2007-11-12  Alexey Proskuryakov  <ap@webkit.org>
2964
2965         Reviewed by Darin.
2966
2967         http://bugs.webkit.org/show_bug.cgi?id=15953
2968         Add UTF-8 encoding/decoding to WTF
2969
2970         * kjs/ustring.h: Moved UTF8SequenceLength() and decodeUTF8Sequence() to wtf/unicode.
2971         * kjs/ustring.cpp: (KJS::UString::UTF8String): Changed this function to take a strict/lenient
2972         parameter. Callers are not interested in getting decoding results in strict mode, so 
2973         this allows for bailing out as soon as an error is seen.
2974
2975         * kjs/function.cpp:
2976         (KJS::encode): Updated for new UString::UTF8String() signature.
2977
2978         * API/JSStringRef.cpp:
2979         (JSStringCreateWithCharacters): Disambiguate UChar.
2980         (JSStringCreateWithUTF8CString): Actually use UTF-8 when creating the string!
2981         * bindings/c/c_utility.cpp: (KJS::Bindings::convertUTF8ToUTF16): Use ConvertUTF8ToUTF16().
2982
2983         * wtf/unicode/UTF8.cpp: Added.
2984         (WTF::Unicode::inlineUTF8SequenceLengthNonASCII):
2985         (WTF::Unicode::inlineUTF8SequenceLength):
2986         (WTF::Unicode::UTF8SequenceLength):
2987         (WTF::Unicode::decodeUTF8Sequence):
2988         (WTF::Unicode::):
2989         (WTF::Unicode::ConvertUTF16ToUTF8):
2990         (WTF::Unicode::isLegalUTF8):
2991         (WTF::Unicode::ConvertUTF8ToUTF16):
2992         * wtf/unicode/UTF8.h: Added.
2993         (WTF::Unicode::):
2994         Some code moved from ustring.h, some adapted from unicode.org sources.
2995
2996         * JavaScriptCore.exp:
2997         * JavaScriptCore.pri:
2998         * JavaScriptCore.vcproj/WTF/WTF.vcproj:
2999         * JavaScriptCore.xcodeproj/project.pbxproj:
3000         * JavaScriptCoreSources.bkl:
3001         Added UTF8.{h,cpp}
3002
3003 2007-11-12  Josh Aas  <joshmoz@gmail.com>
3004
3005         Reviewed by Darin.
3006
3007         - http://bugs.webkit.org/show_bug.cgi?id=15946
3008           add NPPValue NPPVpluginDrawingModel (Mozilla bug 403418 compat)
3009
3010         * bindings/npapi.h:
3011
3012 2007-11-12  Darin Adler  <darin@apple.com>
3013
3014         Reviewed by Sam.
3015
3016         - http://bugs.webkit.org/show_bug.cgi?id=15951
3017           REGRESSION: assertion failure in regexp match() when running JS tests
3018
3019         Test: fast/js/regexp-many-brackets.html
3020
3021         * pcre/pcre_exec.cpp: (match): Added back accidentally-removed case for
3022         the BRANUMBER opcode.
3023
3024 2007-11-12  Darin Adler  <darin@apple.com>
3025
3026         Reviewed by Geoff.
3027
3028         - fix use of prefix and config.h, got rid of a few unneeded things in
3029           the PCRE code; no behavior changes
3030
3031         * API/JSBase.cpp: Added include of config.h.
3032         * API/JSCallbackConstructor.cpp: Ditto.
3033         * API/JSCallbackFunction.cpp: Ditto.
3034         * API/JSCallbackObject.cpp: Ditto.
3035         * API/JSClassRef.cpp: Ditto.
3036         * API/JSContextRef.cpp: Ditto.
3037         * API/JSObjectRef.cpp: Ditto.
3038         * API/JSStringRef.cpp: Ditto.
3039         * API/JSValueRef.cpp: Ditto.
3040
3041         * JavaScriptCorePrefix.h: Removed obsolete <ctype.h> workaround.
3042         Moved new/delete macros after includes, as they are in WebCore's prefix.
3043         Removed "config.h".
3044
3045         * pcre/dftables.cpp: (main): Changed back to not use a separate maketables
3046         function. This is needed for PCRE, but not helpful for our use. Also changed
3047         the tables to all be 128 entries long instead of 256, since only the first
3048         128 are ever used.
3049
3050         * pcre/pcre_compile.cpp: Added include of config.h. Eliminated digitab,
3051         which was only being used to check hex digits. Changed all uses of TRUE and
3052         FALSE to use the C++ true and false instead.
3053         (check_escape): Just the TRUE/FALSE thing.
3054         (is_counted_repeat): Ditto.
3055         (could_be_empty_branch): Ditto.
3056         (get_othercase_range): Ditto.
3057         (compile_branch): Ditto.
3058         (compile_regex): Ditto.
3059         (is_anchored): Ditto.
3060         (is_startline): Ditto.
3061         (find_firstassertedchar): Ditto.
3062         (jsRegExpCompile): Ditto.
3063
3064         * pcre/pcre_exec.cpp: Added include of config.h. Changed all uses of TRUE and
3065         FALSE to use the C++ true and false instead.
3066         (match_ref): Just the TRUE/FALSE thing.
3067         (match): Ditto. Removed some unneeded braces.
3068         (jsRegExpExecute): Just the TRUE/FALSE thing.
3069
3070         * pcre/pcre_internal.h: Moved the constants needed by dftables.cpp to the top
3071         of the file instead of the bottom, so they can be used. Also changed the table
3072         sizes to 128 instead of 256. Removed macro definitions of FALSE and TRUE.
3073         Set array sizes for all the const arrays. Changed _pcre_utf8_table1_size to
3074         be a macro instead of a extern int.
3075
3076         * pcre/pcre_maketables.cpp: Removed. It's all in dftables.cpp now.
3077
3078         * pcre/pcre_tables.cpp: Made table sizes explicit.
3079
3080         * pcre/pcre_xclass.cpp: Just the TRUE/FALSE thing.
3081
3082 2007-11-12  Adam Roben  <aroben@apple.com>
3083
3084         Build fix
3085
3086         * wtf/FastMalloc.h: Add missing using statement.
3087
3088 2007-11-11  Oliver Hunt  <oliver@apple.com>
3089
3090         Reviewed by Darin.
3091
3092         Add special fastZeroedMalloc function to replace a 
3093         number of fastCalloc calls where one argument was 1.
3094         
3095         This results in a 0.4% progression in SunSpider, more
3096         than making up for the earlier regression caused by 
3097         additional overflow checks.
3098
3099         * JavaScriptCore.exp:
3100         * kjs/array_instance.cpp:
3101         * kjs/property_map.cpp:
3102         * wtf/FastMalloc.cpp:
3103         * wtf/FastMalloc.h:
3104         * wtf/HashTable.h:
3105
3106 2007-11-11  Adam Roben  <aroben@apple.com>
3107
3108         Fix <rdar://5578982> ASSERT in HashTable::checkTableConsistencyExceptSize beneath WebNotificationCenter
3109
3110         The bug was due to a mismatch between HashMap::remove and
3111         HashTable::checkTableConsistency. HashMap::remove can delete the value
3112         stored in the HashTable (by derefing it), which is not normally
3113         allowed by HashTable. It's OK in this case because the value is about
3114         to be removed from the table, but HashTable wasn't aware of this.
3115
3116         HashMap::remove now performs the consistency check itself before
3117         derefing the value.
3118
3119         Darin noticed that the same bug would occur in HashSet, so I've fixed
3120         it there as well.
3121
3122         Reviewed by Darin.
3123
3124         * wtf/HashMap.h:
3125         (WTF::HashMap::remove): Perform the HashTable consistency check
3126         manually before calling deref.
3127         * wtf/HashSet.h:
3128         (WTF::HashSet::remove): Ditto.
3129         * wtf/HashTable.h: Made checkTableConsistency public so that HashMap
3130         and HashSet can call it.
3131         (WTF::HashTable::removeAndInvalidateWithoutEntryConsistencyCheck):
3132         Added.
3133         (WTF::HashTable::removeAndInvalidate): Added.
3134         (WTF::HashTable::remove):
3135         (WTF::HashTable::removeWithoutEntryConsistencyCheck): Added.
3136
3137 2007-11-11  Mark Rowe  <mrowe@apple.com>
3138
3139         Build fix.  Use the correct filename case.
3140
3141         * kjs/nodes.h:
3142
3143 2007-11-11  Geoffrey Garen  <ggaren@apple.com>
3144
3145         Reviewed by Sam Weinig.
3146         
3147         Fixed http://bugs.webkit.org/show_bug.cgi?id=15902
3148         15% of string-validate-input.js is spent compiling the same regular expression
3149         
3150         Store a compiled representation of the regular expression in the AST.
3151         
3152         Only a .2% SunSpider speedup overall, but a 10.6% speedup on 
3153         string-validate-input.js.
3154
3155         * kjs/nodes.cpp:
3156         (KJS::RegExpNode::evaluate):
3157         * kjs/nodes.h:
3158         (KJS::RegExpNode::):
3159         * kjs/nodes2string.cpp:
3160         (KJS::RegExpNode::streamTo):
3161         * kjs/regexp.cpp:
3162         (KJS::RegExp::flags):
3163         * kjs/regexp.h:
3164         (KJS::RegExp::pattern):
3165         * kjs/regexp_object.cpp:
3166         (KJS::RegExpObjectImp::construct):
3167         (KJS::RegExpObjectImp::createRegExpImp):
3168         * kjs/regexp_object.h:
3169
3170 2007-11-11  Oliver Hunt  <oliver@apple.com>
3171
3172         Reviewed by Eric.
3173
3174         Partial fix for <rdar://problem/5585334> numfuzz: integer overflows opening malformed SVG file in WebCore::ImageBuffer::create
3175
3176         Unfortunately this is a very slight regression, but is unavoidable.
3177
3178         * wtf/FastMalloc.cpp:
3179
3180 2007-11-10  Eric Seidel  <eric@webkit.org>
3181
3182         Reviewed by darin.
3183         
3184         Add simple type inferencing to the parser, and create custom
3185         AddNode and LessNode subclasses based on inferred types.
3186         http://bugs.webkit.org/show_bug.cgi?id=15884
3187         
3188         SunSpider claims this is at least a 0.5% speedup.
3189
3190         * JavaScriptCore.exp:
3191         * kjs/grammar.y:
3192         * kjs/internal.cpp:
3193         (KJS::NumberImp::getPrimitiveNumber):
3194         (KJS::GetterSetterImp::getPrimitiveNumber):
3195         * kjs/internal.h:
3196         * kjs/lexer.cpp:
3197         (KJS::Lexer::lex):
3198         * kjs/nodes.cpp:
3199         (KJS::Node::Node):
3200         (KJS::StringNode::evaluate):
3201         (KJS::StringNode::evaluateToNumber):
3202         (KJS::StringNode::evaluateToBoolean):
3203         (KJS::RegExpNode::evaluate):
3204         (KJS::UnaryPlusNode::optimizeVariableAccess):
3205         (KJS::AddNode::evaluate):
3206         (KJS::AddNode::evaluateToNumber):
3207         (KJS::AddNumbersNode::inlineEvaluateToNumber):
3208         (KJS::AddNumbersNode::evaluate):
3209         (KJS::AddNumbersNode::evaluateToNumber):
3210         (KJS::AddStringsNode::evaluate):
3211         (KJS::AddStringLeftNode::evaluate):
3212         (KJS::AddStringRightNode::evaluate):
3213         (KJS::lessThan):
3214         (KJS::lessThanEq):
3215         (KJS::LessNumbersNode::evaluate):
3216         (KJS::LessStringsNode::evaluate):
3217         * kjs/nodes.h:
3218         (KJS::ExpressionNode::):
3219         (KJS::RegExpNode::):
3220         (KJS::RegExpNode::precedence):
3221         (KJS::TypeOfResolveNode::):
3222         (KJS::LocalVarTypeOfNode::):
3223         (KJS::UnaryPlusNode::):
3224         (KJS::UnaryPlusNode::precedence):
3225         (KJS::AddNode::):
3226         (KJS::AddNode::precedence):
3227         (KJS::AddNumbersNode::):
3228         (KJS::AddStringLeftNode::):
3229         (KJS::AddStringRightNode::):
3230         (KJS::AddStringsNode::):
3231         (KJS::LessNode::):
3232         (KJS::LessNode::precedence):
3233         (KJS::LessNumbersNode::):
3234         (KJS::LessStringsNode::):
3235         * kjs/nodes2string.cpp:
3236         (KJS::StringNode::streamTo):
3237         * kjs/object.cpp:
3238         * kjs/object.h:
3239         * kjs/value.h:
3240         (KJS::JSValue::getPrimitiveNumber):
3241
3242 2007-11-11  Darin Adler  <darin@apple.com>
3243
3244         - try another way of fixing dftables builds -- refactor pcre_internal.h a bit
3245
3246         * pcre/pcre_internal.h: Make most of this header do nothing when DFTABLES is set.
3247         Later we can break it into two files.
3248
3249         * JavaScriptCore.vcproj/dftables/dftables.vcproj: Take out now-unneeded include paths.
3250         * pcre/dftables.cpp: Set DFTABLES. Use delete instead of free.
3251         * pcre/dftables.pro: Take out now-unneeded include paths.
3252         * pcre/pcre_maketables.cpp: Use new instead of malloc.
3253
3254 2007-11-11  Darin Adler  <darin@apple.com>
3255
3256         * pcre/dftables.pro: Try fixing Qt builds (I looked at qt-win) by adding
3257         another include path.
3258
3259 2007-11-11  Darin Adler  <darin@apple.com>
3260
3261         * JavaScriptCore.xcodeproj/project.pbxproj: Try fixing Mac Tiger builds
3262         by adding another include path.
3263
3264 2007-11-11  Darin Adler  <darin@apple.com>
3265
3266         Reviewed by Sam.
3267
3268         - http://bugs.webkit.org/show_bug.cgi?id=15924
3269           next round of changes to JSRegExp (formerly PCRE)
3270
3271         This is a combination of converting to C++, tweaking the API, and adding
3272         some additional optimizations.
3273
3274         Future steps will involve getting rid of the use of UTF-8 completely
3275         (we'll use UTF-16 exclusively instead), eliminating more source files,
3276         and some more speed-ups.
3277
3278         SunSpider says the current round is an 0.9% speed-up overall, and a
3279         5.3% speed-up for regexp.
3280
3281         * JavaScriptCore.exp: Updated for new entry points.
3282
3283         * JavaScriptCore.pri:
3284         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
3285         * JavaScriptCore.vcproj/dftables/dftables.vcproj:
3286         * JavaScriptCore.xcodeproj/project.pbxproj:
3287         * JavaScriptCoreSources.bkl:
3288         * jscore.bkl:
3289         Updated for new source file names and ForwardingHeaders.
3290
3291         * kjs/regexp.cpp:
3292         (KJS::RegExp::RegExp): Changed to use the error message without calling
3293         strdup on it and to pass the new types and options.
3294         (KJS::RegExp::~RegExp): Removed the now-unneeded free of the error message.
3295         (KJS::RegExp::match): Pass the new types and options.
3296         * kjs/regexp.h: Update type of m_constructionError.
3297
3298         * pcre/AUTHORS: Update to reflect the status of the project -- we don't include
3299         the Google parts, and this isn't the PCRE library, per se.
3300         * pcre/COPYING: Ditto.
3301
3302         * pcre/dftables.cpp: Copied from JavaScriptCore/pcre/dftables.c.
3303         (main): Removed unneeded ctype_digit.
3304
3305         * pcre/pcre.h: Convert to C++, tweak API a bit. Use UChar instead of JSRegExpChar.
3306
3307         * pcre/pcre_compile.cpp: Copied from JavaScriptCore/pcre/pcre_compile.c.
3308         Moved a lot of private stuff used only within this file here from pcre_internal.h.
3309         Renumbered the error codes.
3310         (error_text): Use a single string with embedded nulls for the error text (I got
3311         this idea from newer versions of PCRE).
3312         (check_escape): Changed return type to be enum instead of int. Replaced ctype_digit
3313         uses with isASCIIDigit.
3314         (is_counted_repeat): Ditto.
3315         (read_repeat_counts): Ditto.
3316         (first_significant_code): Ditto.
3317         (find_fixedlength): Ditto.
3318         (could_be_empty_branch): Ditto.
3319         (compile_branch): Ditto. Also removed some code that handles changing options.
3320         JavaScript doesn't have any of the features that allow options to change.
3321         (compile_regex): Updated for change to options parameter.
3322         (is_anchored): Ditto.
3323         (find_firstassertedchar): Ditto.
3324         (jsRegExpCompile): Changed to take separate flags instead of an options int.
3325         Also changed to call new/delete instead of pcre_malloc/free.
3326         (jsRegExpFree): Ditto.
3327
3328         * pcre/pcre_exec.cpp: Copied from JavaScriptCore/pcre/pcre_exec.c.
3329         Added a case that uses computed goto for the opcode loop, but did not turn it on.
3330         Changed the RMATCH macro to handle returns more efficiently by putting the where
3331         pointer in the new frame instead of the old one, allowing us to branch to the
3332         return with a single statement. Switched to new/delete from pcre_malloc/free.
3333         Changed many RRETURN callers to not set the return value since it's already
3334         set correctly. Replaced the rrc variable with an is_match variable. Values other
3335         than "match" and "no match" are now handled differently. This allows us to remove
3336         the code to check for those cases in various rules.
3337         (match): All the case statements use a macro BEGIN_OPCODE instead. And all the
3338         continue statements, or break statements that break out of the outer case use
3339         a macro NEXT_OPCODE instead. Replaced a few if statements with assertions.
3340         (jsRegExpExecute): Use new/delete instead of pcre_malloc/free. Removed unused
3341         start_match field from the match block.
3342
3343         * pcre/pcre_internal.h: Moved the last few configuration macros from pcre-config.h
3344         in here. Removed various unused types. Converted from JSRegExpChar to UChar.
3345         Eliminated pcre_malloc/free. Replaced the opcode enum with a macro that can be
3346         used in multiple places. Unfortunately we lose the comments for each opcode; we
3347         should find a place to put those back. Removed ctype_digit.
3348
3349         * pcre/pcre_maketables.cpp: Copied from JavaScriptCore/pcre/pcre_maketables.c.
3350         (pcre_maketables): Got rid of the conditional code that allows this to be compiled
3351         in -- it's only used for dftables now (and soon may be obsolete entirely).
3352         Changed code for cbit_digit to not use isdigit, and took the "_" case out of the
3353         loop. Removed ctype_digit.
3354
3355         * pcre/pcre_ord2utf8.cpp: Copied from JavaScriptCore/pcre/pcre_ord2utf8.c.
3356
3357         * pcre/pcre_tables.cpp: Copied from JavaScriptCore/pcre/pcre_tables.c.
3358         Moved _pcre_OP_lengths out of here into pcre_exec.cpp.
3359
3360         * pcre/pcre_ucp_searchfuncs.cpp: Copied from JavaScriptCore/pcre/pcre_ucp_searchfuncs.c.
3361         Updated for other file name changes.
3362
3363         * pcre/pcre_xclass.cpp: Copied from JavaScriptCore/pcre/pcre_xclass.c.
3364
3365         * pcre/ucpinternal.h: Updated header.
3366
3367         * pcre/ucptable.cpp: Copied from JavaScriptCore/pcre/ucptable.c.
3368
3369         * wtf/ASCIICType.h: (WTF::isASCIIDigit): Removed a branch by changing from && to
3370         & for this operation. Also added an overload that takes an int because that's
3371         useful for PCRE. Later we could optimize for int and overload other functions in
3372         this file; stuck to this simple one for now.
3373
3374         * wtf/unicode/icu/UnicodeIcu.h: Removed unused isUpper.
3375         * wtf/unicode/qt4/UnicodeQt4.h: Ditto.
3376
3377         * pcre/LICENCE: Removed.
3378         * pcre/pcre-config.h: Removed.
3379         * wtf/FastMallocPCRE.cpp: Removed.
3380
3381         * pcre/dftables.c: Renamed to cpp.
3382         * pcre/pcre_compile.c: Ditto.
3383         * pcre/pcre_exec.c: Ditto.
3384         * pcre/pcre_maketables.c: Ditto.
3385         * pcre/pcre_ord2utf8.c: Ditto.
3386         * pcre/pcre_tables.c: Ditto.
3387         * pcre/pcre_ucp_searchfuncs.c: Ditto.
3388         * pcre/pcre_xclass.c: Ditto.
3389         * pcre/ucptable.c: Ditto.
3390
3391 2007-11-11  Eric Seidel  <eric@webkit.org>
3392
3393         Reviewed by Oliver.
3394
3395         Add KJS_CHECKEXCEPTIONBOOLEAN to match rest of nodes.cpp
3396
3397         * kjs/nodes.cpp:
3398         (KJS::ExpressionNode::evaluateToBoolean):
3399         (KJS::LessNode::evaluateToBoolean):
3400         (KJS::GreaterNode::evaluateToBoolean):
3401         (KJS::LessEqNode::evaluateToBoolean):
3402         (KJS::GreaterEqNode::evaluateToBoolean):
3403         (KJS::InstanceOfNode::evaluateToBoolean):
3404         (KJS::InNode::evaluateToBoolean):
3405         (KJS::EqualNode::evaluateToBoolean):
3406         (KJS::NotEqualNode::evaluateToBoolean):
3407         (KJS::StrictEqualNode::evaluateToBoolean):
3408         (KJS::NotStrictEqualNode::evaluateToBoolean):
3409         (KJS::LogicalAndNode::evaluateToBoolean):
3410         (KJS::LogicalOrNode::evaluateToBoolean):
3411         (KJS::ConditionalNode::evaluateToBoolean):
3412
3413 2007-11-10  Darin Adler  <darin@apple.com>
3414
3415         Reviewed by Sam.
3416
3417         - fix http://bugs.webkit.org/show_bug.cgi?id=15927
3418           REGRESSION(r27487): delete a.c followed by __defineGetter__("c", ...) incorrectly deletes another property
3419           and <rdar://problem/5586384> REGRESSION (r27487): Can't switch out of Edit HTML Source mode on Leopard Wiki
3420
3421         Test: fast/js/delete-then-put.html
3422
3423         * kjs/property_map.cpp:
3424         (KJS::PropertyMap::put): Added a missing "- 1"; code to find an empty slot was not working.
3425         (KJS::PropertyMap::checkConsistency): Added a missing range check that would have caught this
3426         problem before.
3427
3428         - roll out a last-minute change to my evaluateToBoolean patch that was incorrect.
3429
3430         * kjs/nodes.h: (KJS::ExprStatementNode::ExprStatementNode): Take out call to
3431         optimizeForUnnecessaryResult, since the result is used in some cases.
3432
3433 2007-11-10  Adam Roben  <aroben@apple.com>
3434
3435         Windows build fix
3436
3437         Roll out some changes that were (seemingly accidentally) checked in
3438         with r27664.
3439
3440         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
3441
3442 2007-11-10  Darin Adler  <darin@apple.com>
3443
3444         Reviewed by Sam.
3445
3446         - http://bugs.webkit.org/show_bug.cgi?id=15915
3447           add an evaluation path for booleans like the one we have for numbers
3448
3449         Gives 1.1% on SunSpider.
3450
3451         * kjs/grammar.y: Create TrueNode and FalseNode instead of BooleanNode.
3452
3453         * kjs/nodes.h: Changed to use Noncopyable. Moved optimizeForUnnecessaryResult
3454         down from Node to ExpressionNode. Changed some classes to not inherit from
3455         ExpressionNode where not necessary, and removed unnneeded evaluate functions
3456         as well as evaluate functions that need not be virtual. Call the
3457         optimizeForUnnecessaryResult function on the start of a for loop too.
3458         * kjs/nodes.cpp:
3459         (KJS::ExpressionNode::evaluateToBoolean): Added.
3460         (KJS::FalseNode::evaluate): Added.
3461         (KJS::TrueNode::evaluate): Added.
3462         (KJS::NumberNode::evaluateToBoolean): Added.
3463         (KJS::StringNode::evaluateToBoolean): Added.
3464         (KJS::LocalVarAccessNode::evaluateToBoolean): Added.
3465         (KJS::BracketAccessorNode::evaluateToBoolean): Added.
3466         (KJS::LogicalNotNode::evaluate): Changed to call evaluateToBoolean.
3467         (KJS::LogicalNotNode::evaluateToBoolean): Added.
3468         (KJS::lessThan): Changed to return bool.
3469         (KJS::lessThanEq): Ditto.
3470         (KJS::LessNode::evaluate): Changed since lessThan returns bool.
3471         (KJS::LessNode::evaluateToBoolean): Added.
3472         (KJS::GreaterNode::evaluate): Changed since lessThanEq returns bool.
3473         (KJS::GreaterNode::evaluateToBoolean): Added.
3474         (KJS::LessEqNode::evaluate): Changed since lessThanEq returns bool.
3475         (KJS::LessEqNode::evaluateToBoolean): Added.
3476         (KJS::GreaterEqNode::evaluate): Changed since lessThan returns bool.
3477         (KJS::GreaterEqNode::evaluateToBoolean): Added.
3478         (KJS::InstanceOfNode::evaluateToBoolean): Added.
3479         (KJS::InNode::evaluateToBoolean): Added.
3480         (KJS::EqualNode::evaluateToBoolean): Added.
3481         (KJS::NotEqualNode::evaluateToBoolean): Added.
3482         (KJS::StrictEqualNode::evaluateToBoolean): Added.
3483         (KJS::NotStrictEqualNode::evaluateToBoolean): Added.
3484         (KJS::ConditionalNode::evaluate): Changed to call evaluateToBoolean.
3485         (KJS::IfNode::execute): Ditto.
3486         (KJS::DoWhileNode::execute): Ditto.
3487         (KJS::WhileNode::execute): Ditto.
3488         (KJS::ForNode::execute): Ditto.
3489
3490         * kjs/nodes2string.cpp:
3491         (KJS::FalseNode::streamTo): Added.
3492         (KJS::TrueNode::streamTo): Added.
3493
3494 2007-11-09  Adam Roben  <aroben@apple.com>
3495
3496         Windows build fix
3497
3498         Reviewed by Darin.
3499
3500         * kjs/value.h:
3501         (KJS::jsNumber): Add some explicit casts.
3502
3503 2007-11-08  Darin Adler  <darin@apple.com>
3504
3505         - fix build
3506
3507         * kjs/grammar.y:
3508         * kjs/nodes.h:
3509         * kjs/property_map.cpp:
3510
3511 2007-11-08  Darin Adler  <darin@apple.com>
3512
3513         - roll out accidentally-checked in changes
3514
3515         * kjs/nodes.cpp: Back to previous version.
3516         * kjs/nodes.h: Ditto.
3517         * kjs/grammar.y: Ditto.
3518
3519 2007-11-08  Darin Adler  <darin@apple.com>
3520
3521         Reviewed by Maciej.
3522
3523         - http://bugs.webkit.org/show_bug.cgi?id=15912
3524           fasta spends a lot of time in qsort
3525
3526         * kjs/property_map.cpp:
3527         (KJS::PropertyMap::getEnumerablePropertyNames):
3528         Use insertion sort instead of qsort for small sets of property names.
3529         We can probably do some even-better speedups of for/in, but this nets
3530         0.6% overall and 6.7% on fasta.
3531
3532 2007-11-08  Darin Adler  <darin@apple.com>
3533
3534         Reviewed by Maciej.
3535
3536         - http://bugs.webkit.org/show_bug.cgi?id=15906
3537           getting characters by indexing into a string is very slow
3538
3539         This fixes one source of the slowness -- the conversion to an unused
3540         Identifier as we call the get function from the slot -- but doesn't
3541         fix others, such as the fact that we have to allocate a new UString::Rep
3542         for every single character.
3543
3544         Speeds up string-base64 30%, and at least 0.5% overall.
3545         But does slow down access-fannkuch quite a bit. Might be worth
3546         revisiting in the future to see what we can do about that (although
3547         I did look at a profile for a while).
3548
3549         * kjs/property_slot.h: Add a new marker for "numeric" property slots;
3550         slots where we don't need to pass the identifier to the get function.
3551         (KJS::PropertySlot::getValue): Added code to call the numeric get function.
3552         (KJS::PropertySlot::setCustomNumeric): Added.
3553         * kjs/string_object.cpp:
3554         (KJS::StringInstance::indexGetter): Changed to use substr() instead
3555         of constructing a wholly new UString each time.
3556         (KJS::stringInstanceNumericPropertyGetter): Added. Like indexGetter, but
3557         takes advantage of setCustomNumeric to avoid creating an Identifier.
3558         (KJS::StringInstance::getOwnPropertySlot): Changed to use setCustomNumeric.
3559
3560 2007-11-08  Darin Adler  <darin@apple.com>
3561
3562         Reviewed by Oliver.
3563
3564         - http://bugs.webkit.org/show_bug.cgi?id=15904
3565           more speed-ups possible by tightening up int version of JSImmediate
3566
3567         1% improvement of SunSpider
3568
3569         * kjs/JSImmediate.h: Eliminate the now-unneeded FPBitValues struct template.
3570         (KJS::JSImmediate::from): Overload for most numeric types; many types can
3571         do fewer branches and checks.
3572         (KJS::JSImmediate::getUInt32): Removed unneeded check for undefined.
3573         (KJS::JSImmediate::getTruncatedInt32): Ditto.
3574         (KJS::JSImmediate::getTruncatedUInt32): Ditto. There's no difference any more
3575         between getUInt32 and getTruncatedUInt32, so that's worth a rename and merge later.
3576
3577         * kjs/grammar.y: Update since fromDouble is now just from.
3578         * kjs/nodes.h: Ditto.
3579
3580         * kjs/value.h: (KJS::jsNumber): Overload for most numeric types.
3581
3582 2007-11-08  Kevin Ollivier  <kevino@theolliviers.com>
3583
3584         Bakefiles for building JavaScriptCore, needed by wx port.
3585
3586         Reviewed by Mark Rowe.
3587
3588         * JavaScriptCoreSources.bkl: Added.