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