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