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