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