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