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