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