5857648ad6bc401a2986676522fd1a95e5cdd1c7
[WebKit-https.git] / JavaScriptCore / ChangeLog
1 2007-07-16  Sam Weinig  <sam@webkit.org>
2
3         Reviewed by Oliver.
4
5         Turn of -Wshorten-64-to-32 warning for 64-bit builds.
6
7         * Configurations/Base.xcconfig:
8
9 2007-07-14  Brady Eidson  <beidson@apple.com>
10
11         Reviewed by Sam Weinig
12
13         Initial check-in for <rdar://problem/3154486> - Supporting FTP directory listings in the browser
14
15         * wtf/Platform.h: Add ENABLE_FTPDIR feature to handle building on platforms that don't have the
16           proper network-layer support
17
18 2007-07-14  Cameron Zwarich  <cwzwarich@uwaterloo.ca>
19
20         Reviewed by Darin.
21
22         Fixes http://bugs.webkit.org/show_bug.cgi?id=13517,
23               http://bugs.webkit.org/show_bug.cgi?id=14237, and
24               the failure of test js1_5/Scope/regress-185485.js
25
26         Bug 13517: DOM Exception 8 in finance.aol.com sub-page
27         Bug 14237: Javascript "var" statement interprets initialization in the topmost function scope
28
29         * kjs/nodes.cpp:
30         (VarDeclNode::evaluate):
31         * tests/mozilla/expected.html:
32
33 2007-07-12  Alexey Proskuryakov  <ap@webkit.org>
34
35         Reviewed by Mitz.
36
37         http://bugs.webkit.org/show_bug.cgi?id=14596
38         Fix JSC compilation with KJS_VERBOSE.
39
40         * kjs/function.cpp:
41         (KJS::FunctionImp::passInParameters):
42
43 2007-07-11  George Staikos  <staikos@kde.org>
44
45         Make it compile.
46
47         * ForwardingHeaders: Added.
48         * ForwardingHeaders/JavaScriptCore: Added.
49         * ForwardingHeaders/JavaScriptCore/APICast.h: Added.
50         * ForwardingHeaders/JavaScriptCore/JSBase.h: Added.
51         * ForwardingHeaders/JavaScriptCore/JSContextRef.h: Added.
52         * ForwardingHeaders/JavaScriptCore/JSLock.h: Added.
53         * ForwardingHeaders/JavaScriptCore/JSObjectRef.h: Added.
54         * ForwardingHeaders/JavaScriptCore/JSStringRef.h: Added.
55         * ForwardingHeaders/JavaScriptCore/JSStringRefCF.h: Added.
56         * ForwardingHeaders/JavaScriptCore/JSValueRef.h: Added.
57         * ForwardingHeaders/JavaScriptCore/JavaScriptCore.h: Added.
58
59 2007-07-11  Holger Hans Peter Freyther  <zecke@selfish.org>
60
61         Reviewed by Darin.
62
63         As of http://bugs.webkit.org/show_bug.cgi?id=14527 move the
64         WebCore/ForwardingHeader/JavaScriptCore to JavaScriptCore
65
66         * ForwardingHeaders: Added.
67         * ForwardingHeaders/JavaScriptCore: Copied from WebCore/ForwardingHeaders/JavaScriptCore.
68
69 2007-07-11  Nikolas Zimmermann  <zimmermann@kde.org>
70
71         Reviewed by Mark.
72
73         Forwardport the hash table fix from CodeGeneratorJS.pm to create_hash_table.
74         Reran run-jsc-tests, couldn't find any regressions. Suggested by Darin.
75
76         * kjs/create_hash_table:
77
78 2007-07-09  Maciej Stachowiak  <mjs@apple.com>
79
80         Reviewed by Oliver.
81         
82         - JavaScriptCore part of fix for: <rdar://problem/5295734> Repro crash closing tab/window @ maps.google.com in WTF::HashSet<KJS::RuntimeObjectImp*, WTF::PtrHash<KJS::RuntimeObjectImp*>, WTF::HashTraits<KJS::RuntimeObjectImp*> >::add + 11
83         
84         * JavaScriptCore.exp: Added needed export.
85
86 2007-07-06  Maciej Stachowiak  <mjs@apple.com>
87
88         Reviewed by Antti.
89
90         - <rdar://problem/5311093> JavaScriptCore fails to build with strict-aliasing warnings
91         
92         * Configurations/Base.xcconfig: Re-enable -Wstrict-aliasing
93         * bindings/jni/jni_utility.cpp:
94         (KJS::Bindings::getJNIEnv): Type-pun via a union instead of a pointer cast.
95         * wtf/HashMap.h:
96         (WTF::): Instead of doing type-punned assignments via pointer cast, do one of three things:
97         (1) assign directly w/o cast if storage type matches real type; (2) assign using cast
98         via union if type does not need reffing; (3) copy with memcpy and ref/deref manually if type
99         needs reffing. This is ok peref-wise because memcpy of a constant length gets optomized.
100         HashTraits are now expected to make ref()/deref() take the storage type, not the true type.
101         * wtf/HashSet.h:
102         (WTF::): Same basic idea.
103         * wtf/HashTable.h:
104         (WTF::): Added Assigner template for use by HashMap/HashSet. Change RefCounter to call ref()
105         and deref() via storage type, avoiding the need to
106         type-pun.
107         (WTF::RefCounter::ref): ditto
108         (WTF::RefCounter::deref): ditto
109         * wtf/HashTraits.h:
110         (WTF::): Change ref() and deref() for RefPtr HashTraits to take the storage type; cast
111         via union to pointer type.
112         * wtf/FastMalloc.cpp:
113         (WTF::TCMalloc_PageHeap::init): Changed from constructor to init function so this can go in a union.
114         (WTF::): redefine pageheap macro in terms of getPageHeap().
115         (WTF::getPageHeap): new inline function, helper for pageheap macro. This hides the cast in a union.
116         (WTF::TCMalloc_ThreadCache::InitModule): Call init() instead of using placement new to initialize page
117         heap.
118         * wtf/TCPageMap.h:
119         (TCMalloc_PageMap1::init): Changed from constructor to init function.
120         (TCMalloc_PageMap2::init): ditto
121         (TCMalloc_PageMap3::init): ditto
122
123
124 2007-07-06  George Staikos  <staikos@kde.org>
125
126         Reviewed by Maciej.
127
128         Switch USE(ICONDATABASE) to ENABLE(ICONDATABASE)
129
130         * wtf/Platform.h:
131
132 2007-07-03  Sam Weinig  <sam@webkit.org>
133
134         Reviewed by Darin.
135
136         Eleventh round of fixes for implicit 64-32 bit conversion errors.
137         <rdar://problem/5292262>
138
139         - Fixes a real bug where where we were setting long long and unsigned long long
140           values to a long field.
141
142         * bindings/objc/objc_utility.mm:
143         (KJS::Bindings::convertValueToObjcValue):
144
145 2007-07-03  Sam Weinig  <sam@webkit.org>
146
147         Reviewed by Brady Eidson.
148
149         Tenth round of fixes for implicit 64-32 bit conversion errors.
150         <rdar://problem/5292262>
151
152         - Add explicit casts.
153
154         * kjs/dtoa.cpp:
155         (Bigint::):
156
157 2007-07-02  Sam Weinig  <sam@webkit.org>
158
159         Reviewed by Kevin McCullough.
160
161         Fourth round of fixes for implicit 64-32 bit conversion errors.
162         <rdar://problem/5292262>
163
164         Add custom piDouble and piFloat constants to use instead of M_PI.
165
166         * kjs/math_object.cpp:
167         (MathObjectImp::getValueProperty):
168         * wtf/MathExtras.h:
169         (wtf_atan2):
170
171 2007-06-29  Sam Weinig  <sam@webkit.org>
172
173         Reviewed by Darin.
174
175         Second pass at fixing implicit 64-32 bit conversion errors.
176         <rdar://problem/5292262>
177
178         - Add a toFloat() method to JSValue for float conversion.
179
180         * JavaScriptCore.exp:
181         * kjs/value.cpp:
182         (KJS::JSValue::toFloat):
183         * kjs/value.h:
184
185 2007-06-27  Kevin McCullough  <kmccullough@apple.com>
186
187         Reviewed by Darin.
188
189         - <rdar://problem/5271937> REGRESSION: Apparent WebKit JavaScript memory smasher when submitting comment to iWeb site (crashes in kjs_pcre_compile2)
190         - Correctly evaluate the return value of _pcre_ucp_findchar.
191
192         * pcre/pcre_compile.c:
193         (compile_branch):
194         * pcre/pcre_exec.c:
195         (match):
196
197 2007-06-27  Sam Weinig  <sam@webkit.org>
198
199         Reviewed by Darin.
200
201         First pass at fixing implicit 64-32 bit conversion errors.
202         <rdar://problem/5292262>
203
204         - Add 'f' suffix where necessary.
205
206         * kjs/testkjs.cpp:
207         (StopWatch::getElapsedMS):
208
209 2007-06-26  Geoffrey Garen  <ggaren@apple.com>
210
211         Reviewed by Maciej Stachowiak.
212         
213         Fixed <rdar://problem/5296627> JSGarbageCollect headerdoc suggests that 
214         using JavaScriptCore requires leaking memory
215
216         * API/JSBase.h: Changed documentation to explain that you can pass NULL
217         to JSGarbageCollect.
218
219 2007-06-26  Adam Treat  <adam@staikos.net>
220
221         Reviewed by Adam Roben.
222
223         Make the SQLite icon database optional.
224
225         * wtf/Platform.h:
226
227 2007-06-15  George Staikos  <staikos@kde.org>
228
229         More missing files for Qt.
230
231         * JavaScriptCore.pri:
232         * kjs/testkjs.pro:
233
234 2007-06-15  George Staikos  <staikos@kde.org>
235
236         Another Qt build fix.
237
238         * JavaScriptCore.pri:
239         * kjs/testkjs.pro:
240
241 2007-06-15  George Staikos  <staikos@kde.org>
242
243         Fixing Qt build.
244
245         * JavaScriptCore.pri:
246
247 2007-06-20  Mark Rowe  <mrowe@apple.com>
248
249         Reviewed by Mitz.
250
251         Fix http://bugs.webkit.org/show_bug.cgi?id=14244
252         Bug 14244: Data corruption when using a replace() callback function with data containing "$"
253
254         * kjs/string_object.cpp:
255         (KJS::replace):  When 'replacement' is a function, do not replace $n placeholders in its return value.
256         This matches the behaviour described in ECMA 262 3rd Ed section 15.5.4.1, and as implemented in Firefox.
257
258 2007-06-14  Anders Carlsson  <andersca@apple.com>
259
260         Fix Windows build.
261         
262         * bindings/runtime_object.cpp:
263         (RuntimeObjectImp::canPut):
264
265 2007-06-14  Anders Carlsson  <andersca@apple.com>
266
267         Reviewed by Darin.
268
269         <rdar://problem/5103077> 
270         Crash at _NPN_ReleaseObject when quitting page at http://eshop.macsales.com/shop/ModBook
271         
272         <rdar://problem/5183692>
273         http://bugs.webkit.org/show_bug.cgi?id=13547
274         REGRESSION: Crash in _NPN_ReleaseObject when closing Safari on nba.com (13547)
275         
276         <rdar://problem/5261499>
277         CrashTracer: [USER] 75 crashes in Safari at com.apple.JavaScriptCore: KJS::Bindings::CInstance::~CInstance + 40
278         
279         Have the root object track all live instances of RuntimeObjectImp. When invalidating 
280         the root object, also invalidate all live runtime objects by zeroing out their instance ivar.
281         This prevents instances from outliving their plug-ins which lead to crashes.
282         
283         * bindings/c/c_utility.cpp:
284         (KJS::Bindings::convertValueToNPVariant):
285         * bindings/jni/jni_jsobject.cpp:
286         (JavaJSObject::convertValueToJObject):
287         * bindings/jni/jni_utility.cpp:
288         (KJS::Bindings::convertValueToJValue):
289         * bindings/objc/objc_runtime.mm:
290         (ObjcFallbackObjectImp::callAsFunction):
291         * bindings/runtime_array.cpp:
292         (RuntimeArray::RuntimeArray):
293         * bindings/runtime_array.h:
294         (KJS::RuntimeArray::getConcreteArray):
295         * bindings/runtime_method.cpp:
296         (RuntimeMethod::callAsFunction):
297         * bindings/runtime_method.h:
298         * bindings/runtime_object.cpp:
299         (RuntimeObjectImp::RuntimeObjectImp):
300         (RuntimeObjectImp::~RuntimeObjectImp):
301         (RuntimeObjectImp::invalidate):
302         (RuntimeObjectImp::fallbackObjectGetter):
303         (RuntimeObjectImp::fieldGetter):
304         (RuntimeObjectImp::methodGetter):
305         (RuntimeObjectImp::getOwnPropertySlot):
306         (RuntimeObjectImp::put):
307         (RuntimeObjectImp::canPut):
308         (RuntimeObjectImp::defaultValue):
309         (RuntimeObjectImp::implementsCall):
310         (RuntimeObjectImp::callAsFunction):
311         (RuntimeObjectImp::getPropertyNames):
312         (RuntimeObjectImp::throwInvalidAccessError):
313         * bindings/runtime_object.h:
314         * bindings/runtime_root.cpp:
315         (KJS::Bindings::RootObject::invalidate):
316         (KJS::Bindings::RootObject::addRuntimeObject):
317         (KJS::Bindings::RootObject::removeRuntimeObject):
318         * bindings/runtime_root.h:
319
320 2007-06-14  Anders Carlsson  <andersca@apple.com>
321
322         Reviewed by Mitz.
323
324         <rdar://problem/5244948>
325         Safari keeps on complaining about slow script playing NBC TV video (14133)
326
327         http://bugs.webkit.org/show_bug.cgi?id=14133
328         Runaway JavaScript timer fires when spinning around in Google Maps street view
329
330         Make sure to start and stop the timeout checker around calls to JS.
331         
332         * bindings/NP_jsobject.cpp:
333         (_NPN_InvokeDefault):
334         (_NPN_Invoke):
335         (_NPN_Evaluate):
336         * bindings/jni/jni_jsobject.cpp:
337         (JavaJSObject::call):
338         (JavaJSObject::eval):
339
340 2007-06-13  Darin Adler  <darin@apple.com>
341
342         Reviewed by Mark Rowe.
343
344         - fix http://bugs.webkit.org/show_bug.cgi?id=14132
345           array sort with > 10000 elements sets elements > 10000 undefined
346
347         Test: fast/js/sort-large-array.html
348
349         * kjs/array_instance.h: Replaced pushUndefinedObjectsToEnd with
350         compactForSorting, and removed ExecState parameters.
351
352         * kjs/array_object.cpp:
353         (ArrayInstance::sort): Changed to call compactForSorting.
354         (ArrayInstance::compactForSorting): Do the get and delete of the
355         properties directly on the property map instead of using public
356         calls from JSObject. The public calls would just read the undefined
357         values from the compacted sort results array!
358
359 2007-06-13  George Staikos  <staikos@kde.org>
360
361         Reviewed by Lars.
362
363         Fix Mac OS X build after last checkin.
364
365         * wtf/FastMalloc.h:
366
367 2007-06-14  Lars Knoll <lars@trolltech.com>
368
369         Reviewed by Maciej.
370
371         Disable FastMalloc for the Qt build and make sure we
372         don't reimplement the global new/delete operators
373         when using the system malloc.
374
375         * wtf/FastMalloc.cpp:
376         * wtf/FastMalloc.h:
377         * wtf/Platform.h:
378
379 2007-06-13  Anders Carlsson  <andersca@apple.com>
380
381         Reviewed by Geoff.
382
383         Make sure that bindings instances get correct root objects.
384         
385         * JavaScriptCore.exp:
386         * bindings/NP_jsobject.cpp:
387         (listFromVariantArgs):
388         (_NPN_InvokeDefault):
389         (_NPN_Invoke):
390         (_NPN_SetProperty):
391         * bindings/c/c_instance.cpp:
392         (KJS::Bindings::CInstance::invokeMethod):
393         (KJS::Bindings::CInstance::invokeDefaultMethod):
394         * bindings/c/c_runtime.cpp:
395         (KJS::Bindings::CField::valueFromInstance):
396         * bindings/c/c_utility.cpp:
397         (KJS::Bindings::convertNPVariantToValue):
398         * bindings/c/c_utility.h:
399         * bindings/objc/objc_instance.mm:
400         (ObjcInstance::invokeMethod):
401         (ObjcInstance::invokeDefaultMethod):
402         (ObjcInstance::getValueOfUndefinedField):
403         * bindings/objc/objc_runtime.mm:
404         (ObjcField::valueFromInstance):
405         (ObjcArray::valueAt):
406         * bindings/objc/objc_utility.h:
407         * bindings/objc/objc_utility.mm:
408         (KJS::Bindings::convertObjcValueToValue):
409         * bindings/runtime.h:
410
411 2007-06-13  Simon Hausmann  <hausmann@kde.org>
412
413         Reviewed by Lars.
414
415         * kjs/testkjs.pro: WebKitQt is now called QtWebKit.
416
417 2007-06-12  Anders Carlsson  <andersca@apple.com>
418
419         Another build fix.
420         
421         * bindings/qt/qt_instance.cpp:
422         (KJS::Bindings::QtInstance::invokeMethod):
423
424 2007-06-12  Anders Carlsson  <andersca@apple.com>
425
426         Reviewed by Geoff.
427
428         Move the notion of field type to the JNI runtime since that's the only 
429         one that was actually using it.
430         
431         * bindings/c/c_runtime.h:
432         (KJS::Bindings::CField::CField):
433         * bindings/jni/jni_runtime.h:
434         * bindings/objc/objc_runtime.h:
435         * bindings/objc/objc_runtime.mm:
436         * bindings/qt/qt_runtime.h:
437         * bindings/runtime.h:
438         * bindings/runtime_method.cpp:
439
440 2007-06-12  Anders Carlsson  <andersca@apple.com>
441
442         Build fix.
443         
444         * bindings/qt/qt_class.cpp:
445         (KJS::Bindings::QtClass::methodsNamed):
446         * bindings/qt/qt_instance.cpp:
447         (KJS::Bindings::QtInstance::invokeMethod):
448
449 2007-06-12  Anders Carlsson  <andersca@apple.com>
450
451         Reviewed by Oliver.
452         
453         Get rid of the MethodList class and use a good ol' Vector instead.
454
455         * bindings/c/c_class.cpp:
456         (KJS::Bindings::CClass::methodsNamed):
457         * bindings/c/c_instance.cpp:
458         (KJS::Bindings::CInstance::invokeMethod):
459         * bindings/jni/jni_class.cpp:
460         (JavaClass::JavaClass):
461         (JavaClass::~JavaClass):
462         * bindings/jni/jni_instance.cpp:
463         (JavaInstance::invokeMethod):
464         * bindings/objc/objc_class.mm:
465         (KJS::Bindings::ObjcClass::methodsNamed):
466         * bindings/objc/objc_instance.mm:
467         (ObjcInstance::invokeMethod):
468         * bindings/objc/objc_runtime.mm:
469         (ObjcFallbackObjectImp::callAsFunction):
470         * bindings/runtime.cpp:
471         * bindings/runtime.h:
472         * bindings/runtime_method.cpp:
473         (RuntimeMethod::lengthGetter):
474         (RuntimeMethod::callAsFunction):
475         * bindings/runtime_object.cpp:
476         (RuntimeObjectImp::getOwnPropertySlot):
477
478 2007-06-12  Anders Carlsson  <andersca@apple.com>
479
480         Reviewed by Geoff.
481
482         Make RuntimeMethod's method list a pointer so that the object size doesn't
483         grow beyond 32 bytes when we later will replace MethodList with a Vector.
484         
485         * bindings/runtime_method.cpp:
486         (RuntimeMethod::RuntimeMethod):
487         (RuntimeMethod::lengthGetter):
488         (RuntimeMethod::callAsFunction):
489         * bindings/runtime_method.h:
490
491 2007-06-12  Anders Carlsson  <andersca@apple.com>
492
493         Reviewed by Geoff.
494
495         Get rid of the Parameter class.
496         
497         * bindings/jni/jni_instance.cpp:
498         (JavaInstance::invokeMethod):
499         * bindings/jni/jni_runtime.cpp:
500         (JavaMethod::signature):
501         * bindings/jni/jni_runtime.h:
502         (KJS::Bindings::JavaParameter::JavaParameter):
503         (KJS::Bindings::JavaParameter::~JavaParameter):
504         (KJS::Bindings::JavaParameter::type):
505         (KJS::Bindings::JavaMethod::parameterAt):
506         (KJS::Bindings::JavaMethod::numParameters):
507         * bindings/runtime.h:
508
509 2007-06-12  Anders Carlsson  <andersca@apple.com>
510
511         Build fix.
512         
513         * bindings/qt/qt_class.h:
514
515 2007-06-12  Mark Rowe  <mrowe@apple.com>
516
517         Build fix.
518
519         * bindings/objc/objc_runtime.h:
520
521 2007-06-12  Anders Carlsson  <andersca@apple.com>
522
523         Reviewed by Geoff.
524
525         Get rid of Constructor and its only subclass JavaConstructor.
526         
527         * bindings/c/c_class.h:
528         * bindings/jni/jni_class.cpp:
529         (JavaClass::JavaClass):
530         (JavaClass::~JavaClass):
531         * bindings/jni/jni_class.h:
532         * bindings/jni/jni_runtime.cpp:
533         * bindings/jni/jni_runtime.h:
534         * bindings/objc/objc_class.h:
535         * bindings/runtime.h:
536
537 2007-06-12  Anders Carlsson  <andersca@apple.com>
538
539         Reviewed by Geoff.
540
541         Use RetainPtr throughout the bindings code.
542         
543         * bindings/objc/objc_class.h:
544         * bindings/objc/objc_class.mm:
545         (KJS::Bindings::ObjcClass::ObjcClass):
546         (KJS::Bindings::ObjcClass::methodsNamed):
547         (KJS::Bindings::ObjcClass::fieldNamed):
548         * bindings/objc/objc_instance.h:
549         (KJS::Bindings::ObjcInstance::getObject):
550         * bindings/objc/objc_instance.mm:
551         (ObjcInstance::ObjcInstance):
552         (ObjcInstance::~ObjcInstance):
553         (ObjcInstance::implementsCall):
554         (ObjcInstance::invokeMethod):
555         (ObjcInstance::invokeDefaultMethod):
556         (ObjcInstance::defaultValue):
557         * bindings/objc/objc_runtime.h:
558         (KJS::Bindings::ObjcMethod::setJavaScriptName):
559         (KJS::Bindings::ObjcMethod::javaScriptName):
560         (KJS::Bindings::ObjcArray::getObjcArray):
561         * bindings/objc/objc_runtime.mm:
562         (ObjcField::name):
563         (ObjcArray::ObjcArray):
564         (ObjcArray::setValueAt):
565         (ObjcArray::valueAt):
566         (ObjcArray::getLength):
567         * wtf/RetainPtr.h:
568
569 2007-06-12  Anders Carlsson  <andersca@apple.com>
570
571         Reviewed by Maciej.
572
573         Have JSCell inherit from Noncopyable.
574         
575         * bindings/objc/objc_runtime.h:
576         * bindings/runtime_object.h:
577         * kjs/value.h:
578
579 2007-06-12  Anders Carlsson  <andersca@apple.com>
580
581         Reviewed by Darin and Maciej.
582
583         More cleanup. Use our Noncopyable WTF class, add a root object member
584         to the Array class.
585         
586         * bindings/c/c_class.h:
587         * bindings/jni/jni_class.h:
588         * bindings/jni/jni_instance.h:
589         * bindings/jni/jni_runtime.cpp:
590         (JavaArray::JavaArray):
591         * bindings/jni/jni_runtime.h:
592         * bindings/objc/objc_class.h:
593         * bindings/objc/objc_runtime.h:
594         * bindings/objc/objc_runtime.mm:
595         (ObjcArray::ObjcArray):
596         * bindings/objc/objc_utility.mm:
597         (KJS::Bindings::convertObjcValueToValue):
598         * bindings/runtime.cpp:
599         (KJS::Bindings::Array::Array):
600         (KJS::Bindings::Array::~Array):
601         * bindings/runtime.h:
602         * bindings/runtime_object.h:
603         * bindings/runtime_root.h:
604
605 2007-06-08  Zack Rusin  <zrusin@trolltech.com>
606
607         Fix the Qt build
608
609         * bindings/qt/qt_instance.cpp:
610         (KJS::Bindings::QtInstance::QtInstance):
611         * bindings/qt/qt_instance.h:
612
613 2007-06-07  Anders Carlsson  <andersca@apple.com>
614
615         Reviewed by Geoff.
616
617         Get rid of Instance::setRootObject and pass the root object to the instance constructor instead.
618         
619         * bindings/c/c_instance.cpp:
620         (KJS::Bindings::CInstance::CInstance):
621         * bindings/c/c_instance.h:
622         * bindings/jni/jni_instance.cpp:
623         (JavaInstance::JavaInstance):
624         * bindings/jni/jni_instance.h:
625         * bindings/jni/jni_jsobject.cpp:
626         (JavaJSObject::convertJObjectToValue):
627         * bindings/objc/objc_instance.h:
628         * bindings/objc/objc_instance.mm:
629         (ObjcInstance::ObjcInstance):
630         * bindings/runtime.cpp:
631         (KJS::Bindings::Instance::Instance):
632         (KJS::Bindings::Instance::createBindingForLanguageInstance):
633         * bindings/runtime.h:
634
635 2007-06-07  Anders Carlsson  <andersca@apple.com>
636
637         Reviewed by Adam.
638
639         Don't use a JavaInstance to store the field when all we want to do is to keep the field
640         from being garbage collected. Instead, use a JObjectWrapper.
641         
642         * bindings/jni/jni_instance.h:
643         * bindings/jni/jni_runtime.cpp:
644         (JavaField::JavaField):
645         (JavaField::dispatchValueFromInstance):
646         (JavaField::dispatchSetValueToInstance):
647         * bindings/jni/jni_runtime.h:
648         (KJS::Bindings::JavaField::JavaField):
649         (KJS::Bindings::JavaField::operator=):
650
651 2007-05-30  Alp Toker  <alp.toker@collabora.co.uk>
652
653         Reviewed by Brady.
654
655         Enable logging in the Gdk port.
656         http://bugs.webkit.org/show_bug.cgi?id=13936
657
658         * wtf/Assertions.cpp:
659         * wtf/Assertions.h: Add WTFLogVerbose which also logs
660         the file, line number and function.
661
662 2007-05-30  Mark Rowe  <mrowe@apple.com>
663
664         Mac build fix.  Update #include.
665
666         * API/JSCallbackFunction.h:
667
668 2007-05-30  Luciano Montanaro  <mikelima@cirulla.net>
669
670         Reviewed by Maciej.
671
672         - cross-port Harri Porten's commits 636099 and 636108 from KJS: 
673         "publish a class anyway public already" and "class is being used from
674         outside for quite some time" in preparation for further syncronizations
675
676         * kjs/context.h:
677         * kjs/date_object.cpp:
678         * kjs/date_object.h:
679         * kjs/function.h:
680         (KJS::):
681         (KJS::InternalFunctionImp::classInfo):
682         (KJS::InternalFunctionImp::functionName):
683         * kjs/function_object.h:
684         * kjs/internal.h:
685         * kjs/lookup.h:
686         (KJS::getStaticPropertySlot):
687         (KJS::getStaticFunctionSlot):
688         (KJS::getStaticValueSlot):
689         * kjs/object_object.h:
690
691 2007-05-29  Sam Weinig  <sam@webkit.org>
692
693         Reviewed by Adam Roben.
694
695         Cleanup function and fix to match comparison API.
696
697         * kjs/string_object.cpp:
698         (KJS::substituteBackreferences):
699         (KJS::localeCompare):
700
701 2007-05-28  Geoffrey Garen  <ggaren@apple.com>
702
703         Slight clarification to an exception message.
704
705         * API/JSCallbackObject.cpp:
706         (KJS::JSCallbackObject::put):
707
708 2007-05-27  Holger Freyther  <zecke@selfish.org>
709
710         Reviewed by Mark Rowe.
711
712         * wtf/Platform.h: Move Gdk up to allow building WebKit/Gdk on Darwin
713
714 2007-05-27  Darin Adler  <darin@apple.com>
715
716         - fix a couple ifdefs that said WIN instead of WIN_OS
717
718         * kjs/collector.cpp:
719         (KJS::allocateBlock): WIN -> WIN_OS
720         (KJS::freeBlock): Ditto.
721
722 2007-05-26  Sam Weinig  <sam@webkit.org>
723
724         Reviewed by Darin.
725
726         Patch for http://bugs.webkit.org/show_bug.cgi?id=13854
727         Port of commit 667785 from kjs
728
729         - special case calling String.localeCompare() with no parameters to return 0.
730
731         * kjs/string_object.cpp:
732         (KJS::StringProtoFunc::callAsFunction):
733
734 2007-05-25  Kimmo Kinnunen  <kimmok@iki.fi>
735
736         Reviewed by Darin.
737
738         - Fix for http://bugs.webkit.org/show_bug.cgi?id=13456
739         REGRESSION: setTimeout "arguments" object gets shadowed by a local variable
740
741         - Add a explicit check for arguments. Previously check was done with getDirect,
742         but since the arguments is created on-demand in ActivationImp, it doesn't
743         show up in the test. 'arguments' should always be in the VarDeclNode's
744         evaluation scope.
745
746         * kjs/nodes.cpp:
747         (VarDeclNode::evaluate): Additional check if the var decl identifier is 'arguments'
748
749 2007-05-25  George Staikos  <staikos@kde.org>
750
751         Reviewed by Maciej.
752
753         - Use COMPILER(GCC), not PLATFORM(GCC) - as Platform.h defines
754
755         * wtf/FastMalloc.h:
756
757 2007-05-25  Kimmo Kinnunen  <kimmok@iki.fi>
758
759         Reviewed by Darin.
760
761         - http://bugs.webkit.org/show_bug.cgi?id=13623 (Decompilation of function
762           doesn't compile with "++(x,y)")
763         - Create the error node based on the actual node, not the node inside
764           parenthesis
765         - Fix applies to postfix, prefix and typeof operators
766         - Produces run-time ReferenceError like other non-lvalue assignments etc.
767
768         * kjs/grammar.y: Create {Prefix,Postfix}ErrorNode based on the actual node,
769         not the based on the node returned by "nodeInsideAllParens()". Same for
770         TypeOfValueNode.
771
772 2007-05-25  Simon Hausmann  <hausmann@kde.org>
773
774         Reviewed by Zack.
775
776         Fix crash in Qt JavaScript bindings when the arguments used on the Qt side are not
777         registered with QMetaType.
778
779         * bindings/qt/qt_instance.cpp:
780         (KJS::Bindings::QtInstance::invokeMethod):
781         * bindings/qt/qt_runtime.cpp:
782
783 2007-05-24  Luciano Montanaro  <mikelima@cirulla.net>
784
785         Reviewed by Darin
786
787         Patch for http://bugs.webkit.org/show_bug.cgi?id=13855
788         Port patch 666176 to JavaScriptCore
789
790         - Renamed JSValue::downcast() to JSValue::asCell() which makes the
791         function meaning cleaner. It's modeled after Harri Porten change in 
792         KDE trunk.
793
794         * kjs/collector.cpp:
795         (KJS::Collector::protect):
796         (KJS::Collector::unprotect):
797         (KJS::Collector::collectOnMainThreadOnly):
798         * kjs/object.h:
799         (KJS::JSValue::isObject):
800         * kjs/string_object.cpp:
801         (KJS::StringProtoFunc::callAsFunction):
802         * kjs/value.h:
803         (KJS::JSValue::asCell):
804         (KJS::JSValue::isNumber):
805         (KJS::JSValue::isString):
806         (KJS::JSValue::isObject):
807         (KJS::JSValue::getNumber):
808         (KJS::JSValue::getString):
809         (KJS::JSValue::getObject):
810         (KJS::JSValue::getUInt32):
811         (KJS::JSValue::mark):
812         (KJS::JSValue::marked):
813         (KJS::JSValue::type):
814         (KJS::JSValue::toPrimitive):
815         (KJS::JSValue::toBoolean):
816         (KJS::JSValue::toNumber):
817         (KJS::JSValue::toString):
818         (KJS::JSValue::toObject):
819
820 2007-05-18  Holger Hans Peter Freyther  <zecke@selfish.org>
821
822         Reviewed by Mark Rowe.
823
824         * kjs/testkjs.pro: Make the Gdk port link to icu
825
826 2007-05-15  Geoffrey Garen  <ggaren@apple.com>
827
828         Reviewed by Adele Peterson.
829         
830         It helps if you swap the right variable.
831
832         * wtf/HashSet.h:
833         (WTF::::operator):
834
835 2007-05-15  Lars Knoll <lars@trolltech.com>
836
837         Reviewed by Zack
838
839         Extend the QObject JavaScript bindings to work for slots with
840         arguments.
841
842         * bindings/qt/qt_instance.cpp:
843         (KJS::Bindings::QtInstance::invokeMethod):
844
845 2007-05-14  Kimmo Kinnunen  <kimmok@iki.fi>
846
847         Reviewed by Darin.
848
849         - Fixes http://bugs.webkit.org/show_bug.cgi?id=13622 (Decompiler
850           omits trailing comma in array literal)
851
852          * kjs/nodes2string.cpp:
853          (ArrayNode::streamTo): print extra ',' in case there was elision
854          commas (check opt member var) and array elements present
855          in the array expression
856
857 2007-05-14  Geoffrey Garen  <ggaren@apple.com>
858
859         Reviewed by Oliver Hunt.
860         
861         Added HashMap::swap and HashSet::swap. WebCore now uses HashSet::swap.
862         I figured while I was in the neighborhood I might as well add HashMap::swap,
863         too.
864
865         * wtf/HashMap.h:
866         (WTF::::operator):
867         (WTF::::swap):
868         * wtf/HashSet.h:
869         (WTF::::operator):
870         (WTF::::swap):
871
872 2007-05-11  Kimmo Kinnunen  <kimmok@iki.fi>
873
874         Reviewed by Darin.
875
876         - Fix for bug http://bugs.webkit.org/show_bug.cgi?id=13620
877           Bogus decompilation of "for (var j = 1 in [])"
878         - ForInNode toString()'ed to syntax error if there was var decl
879           and initializer
880         - ForNode toStringed()'ed lost 'var ' if it was present
881
882         * kjs/nodes2string.cpp:
883         (VarDeclListNode::streamTo): Print "var " here
884         (VarStatementNode::streamTo): Don't print "var " here
885         (ForNode::streamTo): Remove TODO comment, VarDeclListNode will
886         stream the "var "
887         (ForInNode::streamTo): ForIn initializer is printed by VarDeclNode
888
889 2007-05-11  Kimmo Kinnunen  <kimmok@iki.fi>
890
891         Reviewed by Darin.
892
893         - Fixes http://bugs.webkit.org/show_bug.cgi?id=10878
894           (Incorrect decompilation for "4..x")
895         - Group numbers in dotted expressions in toString() output, so we
896           avoid the 4.x constructs  when the original input is 4..x.
897           4..x means the same as 4. .x or (4).x or Number(4).x
898
899         * kjs/nodes2string.cpp:
900         (KJS::SourceStream::):
901         Add boolean flag to indicate that if next item is a number, it should be grouped.
902         Add new formatting enum which turns on the boolean flag.
903         (KJS::SourceStream::SourceStream): Added. Initialize the flag.
904         (SourceStream::operator<<): Added. New overloaded operator with double value as parameter.
905         (NumberNode::streamTo): Use the double operator
906         (ArrayNode::streamTo):
907         (DotAccessorNode::streamTo):
908         (FunctionCallDotNode::streamTo):
909         (FunctionCallParenDotNode::streamTo):
910         (PostfixDotNode::streamTo):
911         (DeleteDotNode::streamTo):
912         (PrefixDotNode::streamTo):
913         (AssignDotNode::streamTo): Use the new formatting enum to turn on the grouping flag.
914
915 2007-05-10  Lars Knoll <lars@trolltech.com>
916
917         Reviewed by Zack
918
919         Fix our last three test failures in the JavaScript
920         tests.
921
922         * wtf/unicode/qt4/UnicodeQt4.h:
923         (WTF::Unicode::toLower):
924         (WTF::Unicode::toUpper):
925
926 2007-05-08  Geoffrey Garen  <ggaren@apple.com>
927
928         Reviewed by Darin Adler.
929         
930         Fixed #includes of JSStringRefCF.h and use of CF datatypes. I think I 
931         misunderstood this issue before.
932
933         * API/JavaScriptCore.h: #include JSStringRefCF.h. Platforms that don't
934         want this behavior can just #include individual headers, instead of the
935         umbrella framework header. But we definitely want Mac OS X clients to
936         get the #include of JSStringRefCF.h "for free."
937         * API/minidom.c: Don't #include JSStringRefCF.h. (Don't need to #include
938         JavaScriptCore.h, either.)
939         * API/testapi.c: Don't #include JSStringRefCF.h. Do use CF datatypes
940         regardless of whether __APPLE__ is defined. Platforms that don't support
941         CF just shouldn't compile this file.
942         (main):
943
944 2007-05-09  Eric Seidel  <eric@webkit.org>
945
946         Reviewed by mjs.
947         
948         http://bugs.webkit.org/show_bug.cgi?id=6985
949         Cyclic __proto__ values cause WebKit to hang
950
951         * kjs/object.cpp:
952         (KJS::JSObject::put): do a cycle check before setting __proto__
953
954 2007-05-08  Kimmo Kinnunen  <kimmok@iki.fi>
955
956         Reviewed by darin.  Landed by eseidel.
957
958         - http://bugs.webkit.org/show_bug.cgi?id=10880 (Do..while loop gains 
959         a semicolon each time it is toStringed)
960         Grammar in Ecma-66262, 12.6: "do Statement while ( Expression );"
961         EmptyStatement was created after every do..while(expr) which
962         had semicolon at the end.
963
964         * kjs/grammar.y: Require semicolon at the end of do..while
965
966 2007-05-08  Geoffrey Garen  <ggaren@apple.com>
967
968         Build fix -- this time for sure.
969         
970         APICast.h, being private, ends up in a different folder than JSValueRef.h,
971         so we can't include one from the other using "". Instead, just forward
972         declare the relevant data types.
973
974         * API/APICast.h:
975
976 2007-05-08  Geoffrey Garen  <ggaren@apple.com>
977
978         Build fix: export APICast.h for WebCore and WebKit.
979
980         * JavaScriptCore.xcodeproj/project.pbxproj:
981
982 2007-05-04  Darin Adler  <darin@apple.com>
983
984         Reviewed by Adele.
985
986         - fix http://bugs.webkit.org/show_bug.cgi?id=12821
987           <rdar://problem/5007921> Number.toExponential doesn't work for negative numbers
988
989         * kjs/number_object.cpp: (NumberProtoFunc::callAsFunction):
990         Added a call to fabs before calling log10.
991
992 2007-05-03  Holger Freyther <freyther@kde.org>
993
994         Reviewed by Zack, landed by Simon.
995         This is bugzilla bug 13499.
996
997         * JavaScriptCore.pri: Place Qt into the qt-port scope
998         * bindings/testbindings.pro: Place Qt into the qt-port scope
999         * kjs/testkjs.pro: Place Qt into the qt-port scope
1000         * pcre/pcre.pri: Place Qt into the qt-port scope
1001
1002 2007-05-02  David Harrison  <harrison@apple.com>
1003
1004         Reviewed by Antti.
1005
1006         <rdar://problem/5174862> Crash resulting from DeprecatedString::insert()
1007
1008         Added insertion support for more than one value.
1009         
1010         * wtf/Vector.h:
1011         (WTF::::insert):
1012         Added support for inserting multiple values.
1013         
1014         (WTF::::prepend):
1015         New. Insert at the start of vectors. Convenient for vectors used as strings.
1016
1017 2007-05-01  Jungshik Shin  <jungshik.shin@gmail.com>
1018
1019         Reviewed by Alexey.
1020
1021         - get rid of non-ASCII lteral characters : suppress compiler warnings
1022         http://bugs.webkit.org/show_bug.cgi?id=13551
1023          
1024         * kjs/testkjs.cpp:
1025         * pcre/pcre_compile.c:
1026
1027 2007-04-28  Jungshik Shin  <jungshik.shin@gmail.com>
1028
1029         Reviewed by Sam Weinig.
1030
1031         - Replace copyright sign in Latin-1 (0xA9) with '(C)'
1032         http://bugs.webkit.org/show_bug.cgi?id=13531
1033
1034         * bindings/npruntime.h:
1035     
1036 2007-04-28  Darin Adler  <darin@apple.com>
1037
1038         Reviewed by Maciej.
1039
1040         - fix <rdar://problem/5154144> Hamachi test fails: assertion failure in ListHashSet
1041
1042         Test: fast/forms/add-remove-form-elements-stress-test.html
1043
1044         * wtf/ListHashSet.h:
1045         (WTF::ListHashSetNodeAllocator::ListHashSetNodeAllocator): Initialize
1046         m_isDoneWithInitialFreeList to false.
1047         (WTF::ListHashSetNodeAllocator::allocate): Added assertions based on a debug-only
1048         m_isAllocated flag that make sure we don't allocate a block that's already allocated.
1049         These assertions helped pinpoint the bug. Set m_isDoneWithInitialFreeList when we
1050         allocate the last block of the initial free list. Once we're done with the initial
1051         free list, turn off the rule that says that the next node in the pool after the last
1052         node in the free list is also free. This rule works because any free nodes are added
1053         to the head of the free list, so a node that hasn't been allocated even once is always
1054         at the tail of the free list and all the nodes after it also haven't been allocated
1055         even once. But it doesn't work any longer once the entire pool has been used at least
1056         once, because there's nothing special about the last node on the free list any more.
1057         (WTF::ListHashSetNodeAllocator::deallocate): Set the node's m_isAllocated to false.
1058         (WTF::ListHashSetNodeAllocator::pastPool): Added. Used above.
1059         (WTF::ListHashSetNodeAllocator::inPool): Changed to use the pastPool function.
1060         (WTF::ListHashSetNode::ListHashSetNode): Initialize m_isAllocated to true.
1061         (WTF::ListHashSetNode::operator new): Removed variable name for unused size
1062         parameter.
1063         (WTF::ListHashSetNode::destroy): Changed to call the destructor rather than
1064         delete -- this gets rid of the need to define an operator delete.
1065
1066 2007-04-27  Christopher Brichford  <chrisb@adobe.com>
1067
1068         Reviewed by Timothy Hatcher.
1069
1070         Fix for: Bug 13211: Move JavaScriptCore mac project files for apollo port
1071         http://bugs.webkit.org/show_bug.cgi?id=13211
1072
1073         * JavaScriptCore.apolloproj/mac/JavaScriptCore.Debug.xcconfig: Added.
1074         * JavaScriptCore.apolloproj/mac/JavaScriptCore.Release.xcconfig: Added.
1075         * JavaScriptCore.apolloproj/mac/JavaScriptCore.xcconfig: Added.
1076         * JavaScriptCore.apolloproj/mac/JavaScriptCore.xcodeproj/project.pbxproj: Added.
1077         * JavaScriptCore.apolloproj/mac/JavaScriptCore/JavaScriptCore.Debug.xcconfig: Removed.
1078         * JavaScriptCore.apolloproj/mac/JavaScriptCore/JavaScriptCore.Release.xcconfig: Removed.
1079         * JavaScriptCore.apolloproj/mac/JavaScriptCore/JavaScriptCore.xcconfig: Removed.
1080         * JavaScriptCore.apolloproj/mac/JavaScriptCore/JavaScriptCore.xcodeproj/project.pbxproj: Removed.
1081
1082 2007-04-27  Holger Freyther <freyther@kde.org>
1083
1084         Reviewed by Maciej.
1085
1086         Remove unmaintained CMake build system.
1087
1088         * CMakeLists.txt: Removed.
1089         * pcre/CMakeLists.txt: Removed.
1090
1091 2007-04-27  Mark Rowe  <mrowe@apple.com>
1092
1093         Reviewed by Oliver.
1094
1095         * JavaScriptCore.xcodeproj/project.pbxproj: Improve dependencies in Xcode project
1096         by marking dftables as a dependency of Generate Derived Sources rather than of
1097         JavaScriptCore itself.
1098
1099 2007-04-26  Geoffrey Garen  <ggaren@apple.com>
1100
1101         Build fix -- added #includes that we used to get implicitly through
1102         JSStringRef.h.
1103
1104         * API/JSNode.c:
1105         * API/JSNodeList.c:
1106         * API/minidom.c:
1107         * API/testapi.c:
1108
1109 2007-04-26  Geoffrey Garen  <ggaren@apple.com>
1110
1111         Reviewed by Maciej Stachowiak, Adam Roben.
1112         
1113         Fixed 
1114         <rdar://problem/4885130> Remove #include of JSStringRefCF.h from JSStringRef.h
1115         <rdar://problem/4885123> JavaScriptCore is not cross-platform -- JSStringRef.h references CF datatypes
1116
1117         * API/JSStringRef.h: Removed #include -- no clients need it anymore.
1118
1119 2007-04-25  David Kilzer  <ddkilzer@apple.com>
1120
1121         Reviewed by Maciej.
1122
1123         Add assertions for debug builds.
1124
1125         * kjs/JSLock.cpp:
1126         (KJS::JSLock::lock): Assert the return value of pthread_mutex_lock() in debug builds.
1127         (KJS::JSLock::unlock): Assert the return value of pthread_mutex_unlock() in debug builds.
1128
1129 2007-04-25  Maciej Stachowiak  <mjs@apple.com>
1130
1131         Reviewed by Anders.
1132         
1133         - fix build problems
1134
1135         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: Disable warning that
1136         gives often downright incorrect results based on guessing what will happen in 64-bit.
1137
1138 2007-04-25  Darin Adler  <darin@apple.com>
1139
1140         Reviewed by Geoff.
1141
1142         - tweak the allocator for a small speedup -- Shark showed this was a win, but I can't
1143           measure an improvement right now, but it's also clear these changes do no harm
1144
1145         * wtf/FastMalloc.cpp:
1146         (WTF::LgFloor): Use ALWAYS_INLINE here; in testing I did a while back this was necessary
1147         to get this single-instruction function to be inlined.
1148         (WTF::SizeClass): Use ALWAYS_INLINE here too for the same reason. Also change the special
1149         case for a size of 0 to work without a branch for a bit of extra speed.
1150         (WTF::ByteSizeForClass): Use ALWAYS_INLINE here too for the same reason.
1151
1152 2007-04-24  Maciej Stachowiak  <mjs@apple.com>
1153
1154         Reviewed by Oliver.
1155         
1156         - use custom calling convention for everything in nodes.cpp on intel gcc for 1.5% speed boost
1157
1158         Nearly all functions in nodes.cpp were marked up to use the
1159         regparm(3) calling convention under GCC for x86, since this is
1160         faster and they are all guaranteed to be called only internally to
1161         kjs.
1162         
1163         The only exception is destructors, since delete doesn't know how to use a custom calling convention.
1164         
1165         * kjs/nodes.cpp:
1166         (dotExprDoesNotAllowCallsString):
1167         * kjs/nodes.h:
1168         (KJS::Node::):
1169         (KJS::StatementNode::):
1170         (KJS::NullNode::):
1171         (KJS::BooleanNode::):
1172         (KJS::NumberNode::):
1173         (KJS::StringNode::):
1174         (KJS::RegExpNode::):
1175         (KJS::ThisNode::):
1176         (KJS::ResolveNode::):
1177         (KJS::GroupNode::):
1178         (KJS::ElementNode::):
1179         (KJS::ArrayNode::):
1180         (KJS::PropertyNameNode::):
1181         (KJS::PropertyNode::):
1182         (KJS::PropertyListNode::):
1183         (KJS::ObjectLiteralNode::):
1184         (KJS::BracketAccessorNode::):
1185         (KJS::DotAccessorNode::):
1186         (KJS::ArgumentListNode::):
1187         (KJS::ArgumentsNode::):
1188         (KJS::NewExprNode::):
1189         (KJS::FunctionCallValueNode::):
1190         (KJS::FunctionCallResolveNode::):
1191         (KJS::FunctionCallBracketNode::):
1192         (KJS::FunctionCallParenBracketNode::):
1193         (KJS::FunctionCallDotNode::):
1194         (KJS::FunctionCallParenDotNode::):
1195         (KJS::PostfixResolveNode::):
1196         (KJS::PostfixBracketNode::):
1197         (KJS::PostfixDotNode::):
1198         (KJS::PostfixErrorNode::):
1199         (KJS::DeleteResolveNode::):
1200         (KJS::DeleteBracketNode::):
1201         (KJS::DeleteDotNode::):
1202         (KJS::DeleteValueNode::):
1203         (KJS::VoidNode::):
1204         (KJS::TypeOfResolveNode::):
1205         (KJS::TypeOfValueNode::):
1206         (KJS::PrefixResolveNode::):
1207         (KJS::PrefixBracketNode::):
1208         (KJS::PrefixDotNode::):
1209         (KJS::PrefixErrorNode::):
1210         (KJS::UnaryPlusNode::):
1211         (KJS::NegateNode::):
1212         (KJS::BitwiseNotNode::):
1213         (KJS::LogicalNotNode::):
1214         (KJS::MultNode::):
1215         (KJS::AddNode::):
1216         (KJS::ShiftNode::):
1217         (KJS::RelationalNode::):
1218         (KJS::EqualNode::):
1219         (KJS::BitOperNode::):
1220         (KJS::BinaryLogicalNode::):
1221         (KJS::ConditionalNode::):
1222         (KJS::AssignResolveNode::):
1223         (KJS::AssignBracketNode::):
1224         (KJS::AssignDotNode::):
1225         (KJS::AssignErrorNode::):
1226         (KJS::CommaNode::):
1227         (KJS::AssignExprNode::):
1228         (KJS::VarDeclListNode::):
1229         (KJS::VarStatementNode::):
1230         (KJS::EmptyStatementNode::):
1231         (KJS::ExprStatementNode::):
1232         (KJS::IfNode::):
1233         (KJS::DoWhileNode::):
1234         (KJS::WhileNode::):
1235         (KJS::ForNode::):
1236         (KJS::ContinueNode::):
1237         (KJS::BreakNode::):
1238         (KJS::ReturnNode::):
1239         (KJS::WithNode::):
1240         (KJS::LabelNode::):
1241         (KJS::ThrowNode::):
1242         (KJS::TryNode::):
1243         (KJS::ParameterNode::):
1244         (KJS::Parameter::):
1245         (KJS::FunctionBodyNode::):
1246         (KJS::FuncExprNode::):
1247         (KJS::FuncDeclNode::):
1248         (KJS::SourceElementsNode::):
1249         (KJS::CaseClauseNode::):
1250         (KJS::ClauseListNode::):
1251         (KJS::SwitchNode::):
1252
1253 2007-04-24  Oliver Hunt  <oliver@apple.com>
1254
1255         GTK Build fix, ::findEntry->KJS::findEntry
1256
1257         * kjs/lookup.cpp:
1258         (KJS::Lookup::findEntry):
1259         (KJS::Lookup::find):
1260
1261 2007-04-23  Maciej Stachowiak  <mjs@apple.com>
1262
1263         Reviewed by Geoff.
1264         
1265         - compile most of JavaScriptCore as one file for 4% JS iBench speed improvement 
1266
1267         * JavaScriptCore.xcodeproj/project.pbxproj: Add AllInOneFile.cpp, and remove files it includes
1268         from the build.
1269         * kjs/AllInOneFile.cpp: Added.
1270         * kjs/dtoa.cpp: Renamed CONST to CONST_ to avoid conflict.
1271         (Bigint::):
1272         (Bigint::nrv_alloc):
1273         * kjs/lookup.cpp: Use "namspace KJS { ... }" instead of "using namespace KJS;" 
1274
1275 2007-04-23  Maciej Stachowiak  <mjs@apple.com>
1276
1277         Build fix, not reviewed.
1278
1279         * kjs/collector.h: Fix struct/class mismatch.
1280
1281 2007-04-23  Maciej Stachowiak  <mjs@apple.com>
1282
1283         Reviewed by Darin.
1284
1285         - raise ALLOCATIONS_PER_COLLECTION to 4000, for 3.7% iBench speed improvement
1286          
1287         Now that the cell size is smaller and the block size is bigger, we can fit 4000 objects in
1288         the two spare cells the collector is willing to keep around, so collect a bit less often.
1289         
1290         * kjs/collector.cpp:
1291
1292 2007-04-23  Maciej Stachowiak  <mjs@apple.com>
1293
1294         Reviewed by Darin and Geoff.
1295         
1296         - move mark and collectOnMainThreadOnly bits into separate bitmaps
1297         
1298         This saves 4 bytes per cell, allowing shrink of cell size to 32,
1299         which leads to a .8% speed improvement on iBench.
1300         
1301         This is only feasible because of all the previous changes on the branch.
1302
1303         * kjs/collector.cpp:
1304         (KJS::allocateBlock): Adjust for some renames of constants. 
1305         (KJS::Collector::markStackObjectsConservatively): Now that cells are 32 bytes (64 
1306         bytes on 64-bit) the cell alignment check can be made much more strict, and also
1307         obsoletes the need for a % sizeof(CollectorCell) check. Also, we can mask off the low
1308         bits of the pointer to have a potential block pointer to look for.
1309         (KJS::Collector::collectOnMainThreadOnly): Use bitmap.
1310         (KJS::Collector::markMainThreadOnlyObjects): Use bitmap.
1311         (KJS::Collector::collect): When sweeping, use bitmaps directly to find mark bits.
1312         * kjs/collector.h:
1313         (KJS::): Move needed constants and type declarations here.
1314         (KJS::CollectorBitmap::get): Bit twiddling to get a bitmap value.
1315         (KJS::CollectorBitmap::set): Bit twiddling to set a bitmap bit to true.
1316         (KJS::CollectorBitmap::clear): Bit twiddling to set a bitmap bit to false.
1317         (KJS::CollectorBitmap::clearAll): Clear whole bitmap at one go.
1318         (KJS::Collector::cellBlock): New operation, compute the block pointer for
1319         a cell by masking off low bits.
1320         (KJS::Collector::cellOffset): New operation, compute the cell offset for a
1321         cell by masking off high bits and dividing (actually a shift).
1322         (KJS::Collector::isCellMarked): Check mark bit in bitmap
1323         (KJS::Collector::markCell): Set mark bit in bitmap.
1324         * kjs/value.h:
1325         (KJS::JSCell::JSCell): No more bits.
1326         (KJS::JSCell::marked): Let collector handle it.
1327         (KJS::JSCell::mark): Let collector handle it.
1328
1329 2007-04-23  Anders Carlsson  <andersca@apple.com>
1330
1331         Build fix.
1332         
1333         * kjs/regexp_object.h:
1334         RegExpObjectImpPrivate is a struct, not a class.
1335         
1336 2007-04-23  Maciej Stachowiak  <mjs@apple.com>
1337
1338         Reviewed by Darin.
1339         
1340         - shrink FunctionImp / DeclaredFunctionImp by 4 bytes, by moving parameter list to function body
1341         
1342         I reconciled this with a similar change in KDE kjs by Maks Orlovich <maksim@kde.org>.
1343
1344         * kjs/function.cpp:
1345         (KJS::FunctionImp::callAsFunction):
1346         (KJS::FunctionImp::passInParameters):
1347         (KJS::FunctionImp::lengthGetter):
1348         (KJS::FunctionImp::getParameterName):
1349         * kjs/function.h:
1350         * kjs/function_object.cpp:
1351         (FunctionProtoFunc::callAsFunction):
1352         (FunctionObjectImp::construct):
1353         * kjs/nodes.cpp:
1354         (FunctionBodyNode::addParam):
1355         (FunctionBodyNode::paramString):
1356         (FuncDeclNode::addParams):
1357         (FuncDeclNode::processFuncDecl):
1358         (FuncExprNode::addParams):
1359         (FuncExprNode::evaluate):
1360         * kjs/nodes.h:
1361         (KJS::Parameter::Parameter):
1362         (KJS::FunctionBodyNode::numParams):
1363         (KJS::FunctionBodyNode::paramName):
1364         (KJS::FunctionBodyNode::parameters):
1365         (KJS::FuncExprNode::FuncExprNode):
1366         (KJS::FuncDeclNode::FuncDeclNode):
1367         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: Disable 64-bit warnings because
1368         they handle size_t badly.
1369
1370 2007-04-23  Maciej Stachowiak  <mjs@apple.com>
1371  
1372         Reviewed by Darin.
1373
1374         - shrink RegexpObjectImp by 4 bytes
1375         
1376         Somewhat inexplicably, this seems to be a .33% speedup on JS iBench.
1377         
1378         * kjs/regexp_object.cpp:
1379         (KJS::RegExpObjectImpPrivate::RegExpObjectImpPrivate):
1380         (RegExpObjectImp::RegExpObjectImp):
1381         (RegExpObjectImp::performMatch):
1382         (RegExpObjectImp::arrayOfMatches):
1383         (RegExpObjectImp::getBackref):
1384         (RegExpObjectImp::getLastMatch):
1385         (RegExpObjectImp::getLastParen):
1386         (RegExpObjectImp::getLeftContext):
1387         (RegExpObjectImp::getRightContext):
1388         (RegExpObjectImp::getValueProperty):
1389         (RegExpObjectImp::putValueProperty):
1390         * kjs/regexp_object.h:
1391
1392 2007-04-23  Maciej Stachowiak  <mjs@apple.com>
1393
1394         Reviewed by Oliver.
1395         
1396         - change to 1-bit bitfields instead of 8-bit, this turns out to lead to a .51% speedup on JS iBench
1397         
1398         The 1-bit bitfields are actually faster than just plain bools, at least on Intel (go figure).
1399
1400         * kjs/property_map.h:
1401
1402 2007-04-23  Maciej Stachowiak  <mjs@apple.com>
1403
1404         Reviewed by Darin.
1405        
1406         - shrink ArrayInstance objects by 4 bytes
1407         http://bugs.webkit.org/show_bug.cgi?id=13386
1408         
1409         I did this by storing the capacity before the beginning of the storage array. It turns out
1410         it is rarely needed and is by definition 0 when the storage array is null.
1411  
1412         * kjs/array_instance.h:
1413         (KJS::ArrayInstance::capacity): Get it from the secret stash
1414         * kjs/array_object.cpp:
1415         (allocateStorage): New function to encapsulate allocating the storage with extra space ahead
1416         for the capacity.
1417         (reallocateStorage): ditto for realloc
1418         (ArrayInstance::ArrayInstance):
1419         (ArrayInstance::~ArrayInstance):
1420         (ArrayInstance::resizeStorage):
1421
1422 2007-04-23  Darin Adler  <darin@apple.com>
1423
1424         Reviewed by Maciej.
1425
1426         - fix <rdar://problem/4840688> REGRESSION (r10588, r10621): JavaScript won't parse
1427           modifications of non-references (breaks 300themovie.warnerbros.com, fedex.com)
1428
1429         Despite the ECMAScript specification's claim that you can treat these as syntax
1430         errors, doing so creates some website incompatibilities. So this patch turns them back
1431         into evaluation errors instead.
1432
1433         Test: fast/js/modify-non-references.html
1434
1435         * kjs/grammar.y: Change makeAssignNode, makePrefixNode, and makePostfixNode so that they
1436         never fail to parse. Update rules that use them. Fix a little bit of indenting. Use
1437         new PostfixErrorNode, PrefixErrorNode, and AssignErrorNode classes.
1438
1439         * kjs/nodes.h: Added an overload of throwError that takes a char* argument.
1440         Replaced setExceptionDetailsIfNeeded and debugExceptionIfNeeded with handleException,
1441         which does both. Added PostfixErrorNode, PrefixErrorNode, and AssignErrorNode classes.
1442
1443         * kjs/nodes.cpp: Changed exception macros to use handleException; simpler and smaller
1444         code size than the two functions that we used before.
1445         (Node::throwError): Added the overload mentioned above.
1446         (Node::handleException): Added. Contains the code from both setExceptionDetailsIfNeeded
1447         and debugExceptionIfNeeded.
1448         (PostfixErrorNode::evaluate): Added. Throws an exception.
1449         (PrefixErrorNode::evaluate): Ditto.
1450         (AssignErrorNode::evaluate): Ditto.
1451         (ThrowNode::execute): Call handleException instead of debugExceptionIfNeeded; this
1452         effectively adds a call to setExceptionDetailsIfNeeded, which may help with getting
1453         the correct file and line number for these exceptions.
1454
1455         * kjs/nodes2string.cpp:
1456         (PostfixErrorNode::streamTo): Added.
1457         (PrefixErrorNode::streamTo): Added.
1458         (AssignErrorNode::streamTo): Added.
1459
1460 2007-04-23  Maciej Stachowiak  <mjs@apple.com>
1461
1462         Reviewed by Darin.
1463         
1464         - fix test failures / crashes on PPC
1465
1466         * kjs/property_map.h: Make the bool fields explicitly 8-bit bitfields, since bool is a full
1467         word there otherwise :-(
1468
1469 2007-04-23  Maciej Stachowiak  <mjs@apple.com>
1470
1471         Reviewed by Darin.
1472         
1473         - fix more test case failures
1474
1475         * bindings/runtime_array.cpp:
1476         (RuntimeArray::RuntimeArray): inherit from JSObject instead of ArrayInstance; it turns
1477         out that this class only needs the prototype and classInfo from ArrayInstance, not the
1478         actual class itself, and it was too big otherwise.
1479         (RuntimeArray::getOwnPropertySlot):
1480         * bindings/runtime_array.h:
1481
1482 2007-04-23  Maciej Stachowiak  <mjs@apple.com>
1483
1484         Reviewed by Darin.
1485         
1486         - fix some test failures
1487
1488         * bindings/runtime_method.cpp:
1489         (RuntimeMethod::RuntimeMethod): inherit from InternalFunctionImp instead of FunctionImpl,
1490         otherwise this is too big
1491         (RuntimeMethod::getOwnPropertySlot):
1492         * bindings/runtime_method.h:
1493
1494 2007-04-22  Maciej Stachowiak  <mjs@apple.com>
1495
1496         Reviewed by Darin.
1497         
1498         - discard the arguments List for an ActivationImp when the corresponding Context is destroyed (1.7% speedup)
1499         http://bugs.webkit.org/show_bug.cgi?id=13385
1500
1501         Based an idea by Christopher E. Hyde <C.Hyde@parableuk.force9.co.uk>. His patch to do 
1502         this also had many other List changes and I found this much simpler subset of the changes
1503         was actually a hair faster.
1504         
1505         This optimization is valid because the arguments list is only kept around to
1506         lazily make the arguments object. If it's not made by the time the function
1507         exits, it never will be, since any function that captures the continuation will
1508         have its own local arguments variable in scope.
1509         
1510         Besides the 1.7% speed improvement, it shrinks List by 4 bytes
1511         (which in turn shrinks ActivationImp by 4 bytes).
1512         
1513         * kjs/Context.cpp:
1514         (KJS::Context::~Context): Clear the activation's arguments list.
1515         * kjs/function.cpp:
1516         (KJS::ActivationImp::ActivationImp): Adjusted for list changes.
1517         (KJS::ActivationImp::mark): No need to mark, lists are always protected (this doesn't
1518         cause a ref-cycle for reasons stated above).
1519         (KJS::ActivationImp::createArgumentsObject): Clear arguments list.
1520         * kjs/function.h:
1521         * kjs/list.cpp:
1522         (KJS::List::List): No more needsMarking boolean
1523         (KJS::List::operator=): ditto
1524         * kjs/list.h:
1525         (KJS::List::List): ditto
1526         (KJS::List::reset): ditto
1527         (KJS::List::deref): ditto
1528
1529 2007-04-22  Maciej Stachowiak  <mjs@apple.com>
1530
1531         Reviewed by Darin.
1532         
1533         - shrink PropertyMap by 8 bytes and therefore shrink CELL_SIZE to 40 (for 32-bit; 
1534         similar shrinkage for 64-bit)
1535         http://bugs.webkit.org/show_bug.cgi?id=13384
1536
1537         Inspired by similar changes by Christopher E. Hyde <C.Hyde@parableuk.force9.co.uk>
1538         done in the kjs-tweaks branch of KDE's kjs. However, this version is somewhat 
1539         cleaner style-wise and avoids some of the negative speed impact (at least on gcc/x86) 
1540         of his version.
1541         
1542         This is nearly a wash performance-wise, maybe a slight slowdown, but worth doing
1543         to eventually reach cell size 32.
1544         
1545         * kjs/collector.cpp:
1546         (KJS::):
1547         * kjs/property_map.cpp:
1548         (KJS::PropertyMap::~PropertyMap):
1549         (KJS::PropertyMap::clear):
1550         (KJS::PropertyMap::get):
1551         (KJS::PropertyMap::getLocation):
1552         (KJS::PropertyMap::put):
1553         (KJS::PropertyMap::insert):
1554         (KJS::PropertyMap::expand):
1555         (KJS::PropertyMap::rehash):
1556         (KJS::PropertyMap::remove):
1557         (KJS::PropertyMap::mark):
1558         (KJS::PropertyMap::containsGettersOrSetters):
1559         (KJS::PropertyMap::getEnumerablePropertyNames):
1560         (KJS::PropertyMap::getSparseArrayPropertyNames):
1561         (KJS::PropertyMap::save):
1562         (KJS::PropertyMap::checkConsistency):
1563         * kjs/property_map.h:
1564         (KJS::PropertyMap::hasGetterSetterProperties):
1565         (KJS::PropertyMap::setHasGetterSetterProperties):
1566         (KJS::PropertyMap::):
1567         (KJS::PropertyMap::PropertyMap):
1568
1569 2007-04-22  Maciej Stachowiak  <mjs@apple.com>
1570
1571         Reviewed by Darin.
1572         
1573         - change blocks to 64k in size, and use various platform-specific calls to allocate at 64k-aligned addresses
1574         http://bugs.webkit.org/show_bug.cgi?id=13383
1575         
1576         * kjs/collector.cpp:
1577         (KJS::allocateBlock): New function to allocate 64k of 64k-aligned memory
1578         (KJS::freeBlock): Corresponding free
1579         (KJS::Collector::allocate):
1580         (KJS::Collector::collect):
1581
1582 2007-04-22  Maciej Stachowiak  <mjs@apple.com>
1583
1584         Reviewed by Darin and Geoff.
1585         
1586         - remove the concept of oversize objects, now that there aren't any (for now
1587         only enforced with an assert).
1588         http://bugs.webkit.org/show_bug.cgi?id=13382
1589
1590         This change is a .66% speedup on JS iBench for 32-bit platforms, probably much more
1591         for 64-bit since it finally gives a reasonable cell size, but I did not test that.
1592         
1593         * kjs/collector.cpp:
1594         (KJS::): Use different cell size for 32-bit and 64-bit, now that there is no
1595         oversize allocation.
1596         (KJS::Collector::allocate): Remove oversize allocator.
1597         (KJS::Collector::markStackObjectsConservatively): Don't check oversize objects.
1598         (KJS::Collector::markMainThreadOnlyObjects): Ditto.
1599         (KJS::Collector::collect): Ditto.
1600
1601 2007-04-21  Mitz Pettel  <mitz@webkit.org>
1602
1603         Reviewed by Adam.
1604
1605         - fix http://bugs.webkit.org/show_bug.cgi?id=13428
1606           REGRESSION (r20973-r20976): Failing ecma/Array/15.4.4.5-3.js
1607
1608         - fix http://bugs.webkit.org/show_bug.cgi?id=13429
1609           REGRESSION (r20973-r20976): Crashing in fast/dom/plugin-attributes-enumeration.html
1610
1611         * kjs/array_object.cpp:
1612         (ArrayInstance::sort): Free the old storage, not the new one.
1613
1614 2007-04-20  Maciej Stachowiak  <mjs@apple.com>
1615
1616         Not reviewed, build fix.
1617
1618         - fix build problem with last change - -O3 complains more about uninitialized variables
1619         
1620         * pcre/pcre_compile.c:
1621         (compile_branch):
1622         (pcre_compile2):
1623
1624 2007-04-20  Maciej Stachowiak  <mjs@apple.com>
1625
1626         Reviewed by Darin.
1627         
1628         - <rdar://problem/5149915> use mergesort when possible, since it leads to fewer compares (2% JS iBench speedup)
1629
1630         * kjs/array_object.cpp:
1631         (ArrayInstance::sort): Use mergesort(3) on platforms that have it, since it tends
1632         to do fewer compares than qsort; but avoid it very on large arrays since it uses extra
1633         memory. Also added comments identifying possibly even better sorting algorithms
1634         for sort by string value and sort by compare function.
1635         * kjs/config.h:
1636
1637 2007-04-20  Maciej Stachowiak  <mjs@apple.com>
1638
1639         Reviewed by Darin.
1640         
1641         - bump optimization flags up to -O3 for 1% JS iBench speed improvement 
1642
1643         * Configurations/Base.xcconfig:
1644
1645 2007-04-20  Mark Rowe  <mrowe@apple.com>
1646
1647         Reviewed by Maciej.
1648
1649         Fix bogus optimisation in the generic pthread code path.
1650
1651         * kjs/collector.cpp:
1652         (KJS::currentThreadStackBase):
1653
1654 2007-04-20  Mark Rowe  <mrowe@apple.com>
1655
1656         Reviewed by Anders.
1657
1658         Improve FreeBSD compatibility, as suggested by Alexander Botero-Lowry.
1659
1660         * kjs/collector.cpp:
1661         (KJS::currentThreadStackBase): FreeBSD requires that pthread_attr_t's are
1662         initialized via pthread_attr_init before being used in any context.
1663
1664 2007-04-19  Mark Rowe  <mrowe@apple.com>
1665
1666         Reviewed by Darin.
1667
1668         Fix http://bugs.webkit.org/show_bug.cgi?id=13401
1669         Bug 13401: Reproducible crash calling myArray.sort(compareFn) from within
1670         a sort comparison function
1671
1672         * kjs/array_object.cpp:
1673         (ArrayInstance::sort): Save/restore the static variables around calls to qsort
1674         to ensure nested calls to ArrayInstance::sort behave correctly.
1675
1676 2007-04-12  Deneb Meketa  <dmeketa@adobe.com>
1677
1678         Reviewed by Darin Adler.
1679
1680         http://bugs.webkit.org/show_bug.cgi?id=13029
1681         rdar://problem/4994849
1682         Bug 13029: Permit NPAPI plug-ins to see HTTP response headers.
1683         This doesn't actually change JavaScriptCore, but that's where npapi.h is.
1684
1685         * bindings/npapi.h:
1686         Add headers member to NPStream struct.  Also increase NP_VERSION_MINOR to 18.
1687         Increasing to >= 17 allows plug-ins to safely detect whether to look for
1688         NPStream::headers.  Increasing from 17 to 18 reflects presence of NPObject
1689         enumeration, which was added in a prior patch, and which has been agreed to
1690         constitute version 18 by the plugin-futures list.  Also add other missing
1691         bits of npapi.h to catch up from 14 to 18.  This includes features that are
1692         not implemented in WebKit, but those are safely stubbed.
1693
1694 2007-04-10  Geoffrey Garen  <ggaren@apple.com>
1695
1696         Reviewed by Mark Rowe.
1697         
1698         Fixed last check-in to print in release builds, too.
1699
1700         * kjs/collector.cpp:
1701         (KJS::getPlatformThreadRegisters):
1702
1703 2007-04-10  Geoffrey Garen  <ggaren@apple.com>
1704
1705         Reviewed by John Sullivan, Darin Adler.
1706         
1707         Fixed <rdar://problem/5121899> JavaScript garbage collection leads to 
1708         later crash under Rosetta (should abort or leak instead?)
1709         
1710         Log an error message and crash if the kernel reports failure during GC.
1711         We decided to do this instead of just leaking because we don't want people
1712         to get the mistaken impression that running in Rosetta is a supported
1713         configurtion.
1714         
1715         The CRASH macro will also hook into CrashReporter, which will tell us if 
1716         many (any?) users run into this issue.
1717
1718         * kjs/collector.cpp:
1719         (KJS::getPlatformThreadRegisters):
1720
1721 2007-04-06  Krzysztof Kowalczyk  <kkowalczyk@gmail.com>
1722
1723         Reviewed by darin.
1724
1725         Coverity fix. Coverity says:
1726         "Event var_deref_model: Variable "sourceRanges" tracked as NULL was passed to a
1727         function that dereferences it"
1728
1729         * kjs/string_object.cpp:
1730         (KJS::replace):
1731
1732 2007-04-06  Geoffrey Garen  <ggaren@apple.com>
1733
1734         Rubber stamped by Adele Peterson.
1735
1736         * kjs/ExecState.h: Removed obsolete forward/friend declaration of 
1737         RuntimeMethodImp.
1738
1739 2007-04-05  Krzysztof Kowalczyk  <kkowalczyk@gmail.com>
1740
1741         Reviewed by darin.
1742
1743         Coverity fix. Coverity says:
1744         "Event check_after_deref: Pointer "dateString" dereferenced before NULL check"
1745
1746         * kjs/date_object.cpp:
1747         (KJS::parseDate):
1748
1749 2007-04-05  Krzysztof Kowalczyk  <kkowalczyk@gmail.com>
1750
1751         Reviewed by darin.
1752
1753         Coverity fix. Coverity says:
1754         "Event check_after_deref: Pointer "re" dereferenced before NULL check"
1755
1756         * pcre/pcre_study.c:
1757         (pcre_study):
1758
1759 2007-04-05  Krzysztof Kowalczyk  <kkowalczyk@gmail.com>
1760
1761         Reviewed by darin.
1762
1763         Coverity fixes. Coverity says:
1764         "Event leaked_storage: Returned without freeing storage "buffer""
1765         and:
1766         "Event leaked_storage: Returned without freeing storage "script""
1767
1768         * kjs/testkjs.cpp:
1769         (doIt):
1770         (createStringWithContentsOfFile):
1771
1772 2007-04-05  Krzysztof Kowalczyk  <kkowalczyk@gmail.com>
1773
1774         Reviewed by darin.
1775
1776         Coverity fix: in single-threaded case currentThreadIsMainThread is always true
1777         so the code in if (!currentThreadIsMainThread) cannot possibly be reached
1778         and Coverity complains about dead code.
1779
1780         * kjs/collector.cpp:
1781         (KJS::Collector::collect):
1782
1783 === Safari-5522.6 ===
1784
1785 2007-04-03  Kevin McCullough  <kmccullough@apple.com>
1786
1787         Reviewed by Adam.
1788
1789         - Testing a post-commit hook.
1790
1791         * JavaScriptCore.vcproj/testkjs/testkjs.vcproj:
1792
1793 2007-04-03  Anders Carlsson  <andersca@apple.com>
1794
1795         Reviewed by Adam.
1796
1797         <rdar://problem/5107534>
1798         http://bugs.webkit.org/show_bug.cgi?id=13265
1799         REGRESSION: Crash in KJS::Bindings::convertValueToNPVariant
1800         
1801         * bindings/NP_jsobject.cpp:
1802         (_NPN_InvokeDefault):
1803         Return false if the object isn't a function. Set the return value to undefined by default
1804         (to match Firefox).
1805         
1806 2007-03-30  Anders Carlsson <andersca@apple.com>
1807
1808         Build fix.
1809         
1810         * bindings/NP_jsobject.cpp:
1811         (_NPN_Enumerate):
1812
1813 2007-03-30  Anders Carlsson  <andersca@apple.com>
1814
1815         Reviewed by Geoff.
1816
1817         Implement _NPN_Enumerate support.
1818         
1819         * JavaScriptCore.exp:
1820         * bindings/NP_jsobject.cpp:
1821         (_NPN_Enumerate):
1822         * bindings/c/c_instance.cpp:
1823         (KJS::Bindings::CInstance::getPropertyNames):
1824         * bindings/c/c_instance.h:
1825         * bindings/npapi.h:
1826         * bindings/npruntime.h:
1827         * bindings/npruntime_impl.h:
1828         * bindings/runtime.h:
1829         (KJS::Bindings::Instance::getPropertyNames):
1830         * bindings/runtime_object.cpp:
1831         (RuntimeObjectImp::getPropertyNames):
1832         * bindings/runtime_object.h:
1833         (KJS::RuntimeObjectImp::getInternalInstance):
1834
1835 2007-03-28  Jeff Walden  <jwalden+code@mit.edu>
1836
1837         Reviewed by Darin.
1838
1839         http://bugs.webkit.org/show_bug.cgi?id=12963
1840         Fix some inconsistencies in the Mozilla JS Array extras implementations
1841         with respect to the Mozilla implementation:
1842
1843           - holes in arrays should be skipped, not treated as undefined,
1844             by all such methods
1845           - an element with value undefined is not a hole
1846           - Array.prototype.forEach should return undefined
1847
1848         * kjs/array_object.cpp:
1849         (ArrayInstance::getOwnPropertySlot):
1850         (ArrayProtoFunc::callAsFunction):
1851
1852 2007-03-27  Anders Carlsson  <acarlsson@apple.com>
1853
1854         Reviewed by Geoff.
1855
1856         * bindings/NP_jsobject.cpp:
1857         (_NPN_InvokeDefault):
1858         Call JSObject:call for native JavaScript objects.
1859
1860 2007-03-26  David Carson  <dacarson@gmail.com>
1861
1862         Reviewed by Darin, landed by Anders.
1863
1864         Fix for: REGRESSION (r19559): Java applet crash
1865         http://bugs.webkit.org/show_bug.cgi?id=13142
1866         <rdar://problem/5080340>
1867
1868         The previous fix http://bugs.webkit.org/show_bug.cgi?id=12636 
1869         introduced new JNIType to enum in jni_utility.h This is a 
1870         problem on the Mac as it seems that the JNIType enum is also
1871         used in the JVM, it is used to specify the return type in
1872         jni_objc.mm
1873         Corrected the fix by moving type to the end, and changing
1874         jni_objc.mm to convert the new type to an old compatible
1875         type.
1876
1877         * bindings/jni/jni_objc.mm:
1878         (KJS::Bindings::dispatchJNICall):
1879         * bindings/jni/jni_utility.h:
1880
1881 2007-03-26  Christopher Brichford  <chrisb@adobe.com>
1882
1883         Reviewed/landed by Adam.
1884
1885         Bug 13198: Move build settings from project file to xcconfig file for apollo
1886         port JSCore
1887         http://bugs.webkit.org/show_bug.cgi?id=13198
1888
1889         - Moving build settings from xcode project file to xcconfig files.
1890
1891         * JavaScriptCore.apolloproj/mac/JavaScriptCore/JavaScriptCore.Debug.xcconfig:
1892         * JavaScriptCore.apolloproj/mac/JavaScriptCore/JavaScriptCore.Release.xcconfig:
1893         * JavaScriptCore.apolloproj/mac/JavaScriptCore/JavaScriptCore.xcconfig:
1894         * JavaScriptCore.apolloproj/mac/JavaScriptCore/JavaScriptCore.xcodeproj/project.pbxproj:
1895
1896 2007-03-26  Brady Eidson  <beidson@apple.com>
1897
1898         Rubberstamped by Anders and Maciej aand Geoff (oh my!)
1899         
1900         Since CFTypeRef is really void*, a RetainPtr couldn't be used. 
1901         RefType was "void", which doesn't actually exist as a type.
1902         Since RefType only existed for operator*(), and since that operator
1903         doesn't make any sense for RetainPtr, I removed them!
1904
1905         * kjs/nodes.cpp: Touch this to force a rebuild and (hopefully) help the
1906           compiler with dependencies
1907         * wtf/RetainPtr.h: Nuke RefType and operator*()
1908
1909 2007-03-26  Geoffrey Garen  <ggaren@apple.com>
1910
1911         Touched a file to (hopefully) help the compiler with RetainPtr dependencies.
1912
1913         * kjs/nodes.cpp:
1914         (Node::deref):
1915
1916 2007-03-24  Brady Eidson  <beidson@apple.com>
1917
1918         Reviewed by Adam
1919
1920         Whoops, RetainPtr should be in the WTF namespace
1921
1922         * wtf/RetainPtr.h:
1923
1924 2007-03-24  Brady Eidson  <beidson@apple.com>
1925
1926         Reviewed by Adam
1927         
1928         <rdar://problem/5086210> - Move RetainPtr to WTF
1929
1930         * wtf/RetainPtr.h: Added
1931         * JavaScriptCore.xcodeproj/project.pbxproj: Add it to the project file
1932         * JavaScriptCore.vcproj/WTF/WTF.vcproj: Ditto
1933
1934
1935 2007-03-23  Christopher Brichford  <chrisb@adobe.com>
1936
1937         Reviewed/landed by Adam.
1938
1939         Bug 13175: Make apollo mac project files for JavaScriptCore actually
1940         build something
1941         http://bugs.webkit.org/show_bug.cgi?id=13175
1942
1943         - Changing apollo mac project files for JavaScriptCore such that they actually build
1944         JavaScriptCore source code.
1945
1946         * JavaScriptCore.apolloproj/ForwardingSources/grammar.cpp: Added.
1947         * JavaScriptCore.apolloproj/mac/JavaScriptCore/JavaScriptCore.xcconfig:
1948         * JavaScriptCore.apolloproj/mac/JavaScriptCore/JavaScriptCore.xcodeproj/project.pbxproj:
1949
1950 2007-03-24  Mark Rowe  <mrowe@apple.com>
1951
1952         Rubber-stamped by Darin.
1953
1954         * Configurations/JavaScriptCore.xcconfig: Remove unnecessary INFOPLIST_PREPROCESS.
1955
1956 2007-03-22  Christopher Brichford  <chrisb@adobe.com>
1957
1958         Reviewed/landed by Adam.
1959
1960         Bug 13164: Initial version of mac JavaScriptCore project files for
1961         apollo port 
1962         http://bugs.webkit.org/show_bug.cgi?id=13164
1963
1964         - Adding mac project files for apollo port of JavaScriptCore. Currently project
1965         just builds dftables.
1966
1967         * JavaScriptCore.apolloproj/mac/JavaScriptCore/JavaScriptCore.Debug.xcconfig: Added.
1968         * JavaScriptCore.apolloproj/mac/JavaScriptCore/JavaScriptCore.Release.xcconfig: Added.
1969         * JavaScriptCore.apolloproj/mac/JavaScriptCore/JavaScriptCore.xcconfig: Added.
1970         * JavaScriptCore.apolloproj/mac/JavaScriptCore/JavaScriptCore.xcodeproj/project.pbxproj: Added.
1971
1972 2007-03-21  Timothy Hatcher  <timothy@apple.com>
1973
1974         Reviewed by Darin.
1975
1976         <rdar://problem/5076599> JavaScriptCore has a weak export (vtable for KJS::JSCell)
1977
1978         * JavaScriptCore.exp: Remove __ZTVN3KJS6JSCellE.
1979
1980 2007-03-21  Adele Peterson  <adele@apple.com>
1981
1982         Reviewed by Geoff.
1983
1984         * API/JSStringRef.cpp: (JSStringIsEqual): Added JSLock.
1985
1986 2007-03-21  Zack Rusin  <zrusin@trolltech.com>
1987
1988         Fix the compile when USE(MULTIPLE_THREADS) isn't
1989         defined
1990
1991         * kjs/JSLock.cpp:
1992         (KJS::JSLock::currentThreadIsHoldingLock):
1993
1994 2007-03-20  Maciej Stachowiak  <mjs@apple.com>
1995
1996         Reviewed by Geoff and Adam.
1997         
1998         - make USE(MULTIPLE_THREADS) support more portable
1999         http://bugs.webkit.org/show_bug.cgi?id=13069
2000         
2001         - fixed a threadsafety bug discovered by testing this
2002         
2003         - enhanced threadsafety assertions in collector
2004
2005         * API/JSCallbackObject.cpp:
2006         (KJS::JSCallbackObject::~JSCallbackObject): This destructor can't
2007         DropAllLocks around the finalize callback, because it gets called
2008         from garbage collection and we can't let other threads collect!
2009
2010         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
2011         * kjs/JSLock.cpp:
2012         (KJS::JSLock::currentThreadIsHoldingLock): Added new function
2013         to allow stronger assertions than just that the lock is held
2014         by some thread (you can now assert that the current thread is
2015         holding it, given the new JSLock design).
2016         * kjs/JSLock.h:
2017         * kjs/collector.cpp: Refactored for portability plus added some
2018         stronger assertions.
2019         (KJS::Collector::allocate):
2020         (KJS::currentThreadStackBase):
2021         (KJS::Collector::registerAsMainThread):
2022         (KJS::onMainThread):
2023         (KJS::PlatformThread::PlatformThread):
2024         (KJS::getCurrentPlatformThread):
2025         (KJS::Collector::Thread::Thread):
2026         (KJS::destroyRegisteredThread):
2027         (KJS::Collector::registerThread):
2028         (KJS::Collector::markCurrentThreadConservatively):
2029         (KJS::suspendThread):
2030         (KJS::resumeThread):
2031         (KJS::getPlatformThreadRegisters):
2032         (KJS::otherThreadStackPointer):
2033         (KJS::otherThreadStackBase):
2034         (KJS::Collector::markOtherThreadConservatively):
2035         (KJS::Collector::markStackObjectsConservatively):
2036         (KJS::Collector::protect):
2037         (KJS::Collector::unprotect):
2038         (KJS::Collector::collectOnMainThreadOnly):
2039         (KJS::Collector::markMainThreadOnlyObjects):
2040         (KJS::Collector::collect):
2041         * kjs/collector.h:
2042         * wtf/FastMalloc.cpp:
2043         (WTF::fastMallocSetIsMultiThreaded):
2044         * wtf/FastMallocInternal.h:
2045         * wtf/Platform.h:
2046
2047 2007-03-19  Darin Adler  <darin@apple.com>
2048
2049         * kjs/value.h: Roll ~JSValue change out. It was causing problems. I'll do it right later.
2050
2051 2007-03-19  Geoffrey Garen  <ggaren@apple.com>
2052
2053         Reviewed by John Sullivan.
2054
2055         Fixed <rdar://problem/5073380> REGRESSION: Crash occurs at WTF::fastFree() 
2056         when reloading liveconnect page (applet)
2057         
2058         Best to use free when you use malloc, especially when malloc and delete
2059         use completely different libraries.
2060
2061         * bindings/jni/jni_runtime.cpp:
2062         (JavaMethod::~JavaMethod):
2063
2064 2007-03-19  Andrew Wellington  <proton@wiretapped.net>
2065
2066         Reviewed by Maciej.
2067
2068         Really set Xcode editor to use 4 space indentation (http://webkit.org/coding/coding-style.html)
2069
2070         * JavaScriptCore.xcodeproj/project.pbxproj:
2071
2072 2007-03-19  Darin Adler  <darin@apple.com>
2073
2074         Reviewed by Geoff.
2075
2076         - Changed list size threshold to 5 based on testing.
2077
2078         I was testing the i-Bench JavaScript with the list statistics
2079         dumping on, and discovered that there were many 5-element lists.
2080         The fast case for lists was for 4 elements and fewer. By changing
2081         the threshold to 5 elements we get a measurable speedup. I believe
2082         this will help real web pages too, not just the benchmark.
2083
2084         * kjs/list.cpp: Change constant from 4 to 5.
2085
2086 2007-03-19  Darin Adler  <darin@apple.com>
2087
2088         * kjs/value.h: Oops, fix build.
2089
2090 2007-03-19  Darin Adler  <darin@apple.com>
2091
2092         Reviewed by Geoff.
2093
2094         - remove ~JSValue; tiny low-risk performance boost
2095
2096         * kjs/value.h: Remove unneeded empty virtual destructor from JSValue.
2097         The only class derived from JSValue is JSCell and it already has a
2098         virtual destructor. Declaring an empty constructor in JSValue had one
2099         good effect: it marked the destructor private, making it a compile
2100         time error to try to destroy a JSValue; but that's not a likely
2101         mistake for someone to make. It had two bad effects: (1) it caused gcc,
2102         at least, to generate code to fix up the virtual table pointer to
2103         point to the JSValue version of the virtual table inside the destructor
2104         of all classes derived from JSValue directly or indirectly; (2) it
2105         caused JSValue to be a polymorphic class so required a virtual table for
2106         it. It's cleaner to not have either of those.
2107
2108 2007-03-18  Maciej Stachowiak  <mjs@apple.com>
2109
2110         Reviewed by Mark.
2111         
2112         - avoid static construction (and global variable access) in a smarter, more portable way,
2113         to later enable MUTLI_THREAD mode to work on other platforms and compilers.
2114         
2115         * kjs/CommonIdentifiers.cpp: Added. New class to hold all the shared identifiers.
2116         (KJS::CommonIdentifiers::CommonIdentifiers):
2117         (KJS::CommonIdentifiers::shared):
2118         * kjs/CommonIdentifiers.h: Added.
2119
2120         * kjs/ExecState.h:
2121         (KJS::ExecState::propertyNames): Hand the CommonIdentifiers instance here for easy access.
2122         (KJS::ExecState::ExecState):
2123
2124         * API/JSObjectRef.cpp:
2125         (JSObjectMakeConstructor):
2126         * CMakeLists.txt:
2127         * JavaScriptCore.exp:
2128         * JavaScriptCore.pri:
2129         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
2130         * JavaScriptCore.xcodeproj/project.pbxproj:
2131         * JavaScriptCoreSources.bkl:
2132         * bindings/runtime_array.cpp:
2133         (RuntimeArray::getOwnPropertySlot):
2134         (RuntimeArray::put):
2135         * bindings/runtime_method.cpp:
2136         (RuntimeMethod::getOwnPropertySlot):
2137         * kjs/array_object.cpp:
2138         (ArrayInstance::getOwnPropertySlot):
2139         (ArrayInstance::put):
2140         (ArrayInstance::deleteProperty):
2141         (ArrayProtoFunc::ArrayProtoFunc):
2142         (ArrayProtoFunc::callAsFunction):
2143         (ArrayObjectImp::ArrayObjectImp):
2144         * kjs/bool_object.cpp:
2145         (BooleanPrototype::BooleanPrototype):
2146         (BooleanProtoFunc::BooleanProtoFunc):
2147         (BooleanProtoFunc::callAsFunction):
2148         (BooleanObjectImp::BooleanObjectImp):
2149         * kjs/completion.h:
2150         (KJS::Completion::Completion):
2151         * kjs/date_object.cpp:
2152         (KJS::DateProtoFunc::DateProtoFunc):
2153         (KJS::DateObjectImp::DateObjectImp):
2154         (KJS::DateObjectFuncImp::DateObjectFuncImp):
2155         * kjs/error_object.cpp:
2156         (ErrorPrototype::ErrorPrototype):
2157         (ErrorProtoFunc::ErrorProtoFunc):
2158         (ErrorProtoFunc::callAsFunction):
2159         (ErrorObjectImp::ErrorObjectImp):
2160         (ErrorObjectImp::construct):
2161         (NativeErrorPrototype::NativeErrorPrototype):
2162         (NativeErrorImp::NativeErrorImp):
2163         (NativeErrorImp::construct):
2164         (NativeErrorImp::callAsFunction):
2165         * kjs/function.cpp:
2166         (KJS::FunctionImp::getOwnPropertySlot):
2167         (KJS::FunctionImp::put):
2168         (KJS::FunctionImp::deleteProperty):
2169         (KJS::FunctionImp::getParameterName):
2170         (KJS::DeclaredFunctionImp::construct):
2171         (KJS::IndexToNameMap::unMap):
2172         (KJS::Arguments::Arguments):
2173         (KJS::ActivationImp::getOwnPropertySlot):
2174         (KJS::ActivationImp::deleteProperty):
2175         (KJS::GlobalFuncImp::GlobalFuncImp):
2176         * kjs/function_object.cpp:
2177         (FunctionPrototype::FunctionPrototype):
2178         (FunctionProtoFunc::FunctionProtoFunc):
2179         (FunctionProtoFunc::callAsFunction):
2180         (FunctionObjectImp::FunctionObjectImp):
2181         (FunctionObjectImp::construct):
2182         * kjs/grammar.y:
2183         * kjs/identifier.cpp:
2184         * kjs/identifier.h:
2185         * kjs/interpreter.cpp:
2186         (KJS::Interpreter::init):
2187         (KJS::Interpreter::initGlobalObject):
2188         * kjs/interpreter.h:
2189         * kjs/lookup.h:
2190         * kjs/math_object.cpp:
2191         (MathFuncImp::MathFuncImp):
2192         * kjs/nodes.cpp:
2193         (ArrayNode::evaluate):
2194         (FuncDeclNode::processFuncDecl):
2195         (FuncExprNode::evaluate):
2196         * kjs/number_object.cpp:
2197         (NumberPrototype::NumberPrototype):
2198         (NumberProtoFunc::NumberProtoFunc):
2199         (NumberObjectImp::NumberObjectImp):
2200         * kjs/object.cpp:
2201         (KJS::JSObject::put):
2202         (KJS::JSObject::defaultValue):
2203         (KJS::JSObject::hasInstance):
2204         * kjs/object.h:
2205         (KJS::JSObject::getOwnPropertySlot):
2206         * kjs/object_object.cpp:
2207         (ObjectPrototype::ObjectPrototype):
2208         (ObjectProtoFunc::ObjectProtoFunc):
2209         (ObjectObjectImp::ObjectObjectImp):
2210         * kjs/regexp_object.cpp:
2211         (RegExpPrototype::RegExpPrototype):
2212         (RegExpProtoFunc::RegExpProtoFunc):
2213         (RegExpObjectImp::RegExpObjectImp):
2214         * kjs/string_object.cpp:
2215         (KJS::StringInstance::getOwnPropertySlot):
2216         (KJS::StringInstance::put):
2217         (KJS::StringInstance::deleteProperty):
2218         (KJS::StringPrototype::StringPrototype):
2219         (KJS::StringProtoFunc::StringProtoFunc):
2220         (KJS::StringProtoFunc::callAsFunction):
2221         (KJS::StringObjectImp::StringObjectImp):
2222         (KJS::StringObjectFuncImp::StringObjectFuncImp):
2223         * kjs/testkjs.cpp:
2224         (TestFunctionImp::TestFunctionImp):
2225
2226 2007-03-18  Andrew Wellington  <proton@wiretapped.net>
2227
2228         Reviewed by Mark Rowe
2229         
2230         Set Xcode editor to use 4 space indentation (http://webkit.org/coding/coding-style.html) 
2231
2232         * JavaScriptCore.xcodeproj/project.pbxproj:
2233
2234 2007-03-19  Mark Rowe  <mrowe@apple.com>
2235
2236         Rubber-stamped by Brady.
2237
2238         Update references to bugzilla.opendarwin.org with bugs.webkit.org.
2239
2240         * bindings/c/c_utility.cpp:
2241         (KJS::Bindings::convertUTF8ToUTF16):
2242         * kjs/function.cpp:
2243         (KJS::FunctionImp::callAsFunction):
2244         * kjs/grammar.y:
2245         * kjs/keywords.table:
2246         * kjs/lexer.cpp:
2247         (KJS::Lexer::shift):
2248
2249 2007-03-18  Geoffrey Garen  <ggaren@apple.com>
2250
2251         Reviewed by Oliver Hunt.
2252         
2253         Exposed some extra toUInt32 functionality, as part of the fix for
2254         REGRESSION: Incomplete document.all implementation breaks abtelectronics.com 
2255         (Style Change Through JavaScript Blanks Content)
2256
2257         * JavaScriptCore.exp:
2258         * kjs/identifier.h:
2259         (KJS::Identifier::toUInt32):
2260
2261 2007-03-18  Geoffrey Garen  <ggaren@apple.com>
2262
2263         Removed duplicate export name.
2264         
2265         * JavaScriptCore.exp:
2266
2267 2007-03-15  Geoffrey Garen  <ggaren@apple.com>
2268
2269         Reviewed by Maciej Stachowiak.
2270         
2271         Fixed <rdar://problem/5064964> Repro ASSERT failure in JS Bindings when 
2272         closing window @ lowtrades.bptrade.com
2273         
2274         Unfortunately, the bindings depend on UString and Identifier as string 
2275         representations. So, they need to acquire the JSLock when doing something
2276         that will ref/deref their strings.
2277
2278         Layout tests, the original site, and Java, Flash, and Quicktime on the 
2279         web work. No leaks reported. No automated test for this because testing 
2280         the Java bindings, like math, is hard.
2281         
2282         * bindings/runtime.h: Made Noncopyable, just to be sure.
2283         
2284         * bindings/c/c_class.cpp: 
2285         (KJS::Bindings::CClass::~CClass): Acquire the JSLock and explicitly clear the keys
2286         in our hashtable, since they're UString::Reps, and ref/deref aren't thread-safe.
2287         (KJS::Bindings::CClass::methodsNamed): Also acquire the JSLock when adding
2288         keys to the table, since the table ref's them.
2289         (KJS::Bindings::CClass::fieldNamed): ditto.
2290
2291         * bindings/c/c_utility.cpp: Removed dead function.
2292         (KJS::Bindings::convertValueToNPVariant): Acquire the JSLock because doing
2293         it recursively is pretty cheap, and it's just too confusing to tell whether
2294         all our callers do it for us.
2295         (KJS::Bindings::convertNPVariantToValue): ditto
2296         * bindings/c/c_utility.h:
2297
2298         * bindings/jni/jni_class.cpp: Same deal as c_class.cpp.
2299         (JavaClass::JavaClass):
2300         (JavaClass::~JavaClass):
2301
2302         * bindings/jni/jni_instance.cpp: Same deal as c_utility.cpp.
2303         (JavaInstance::stringValue):
2304         * bindings/jni/jni_jsobject.cpp:
2305         (JavaJSObject::convertValueToJObject):
2306
2307         * bindings/jni/jni_runtime.cpp:
2308         (JavaMethod::~JavaMethod): Moved from header, for clarity.
2309         (appendClassName): Made this static, so the set of callers is known, and
2310         we can assert that we hold the JSLock. Also changed it to take a UString
2311         reference, which makes the calling code simpler.
2312         (JavaMethod::signature): Store the ASCII value we care about instead of
2313         a UString, since UString is so much more hassle. Hold the JSLock while
2314         building up the temporary UString.
2315
2316         * bindings/jni/jni_runtime.h: Nixed dead code in JavaMethod.
2317         (KJS::Bindings::JavaString::JavaString): Hold a UString::Rep instead of
2318         a UString, so we can acquire the JSLock and explicitly release it.
2319         (KJS::Bindings::JavaString::_commonInit):
2320         (KJS::Bindings::JavaString::~JavaString):
2321         (KJS::Bindings::JavaString::UTF8String):
2322         (KJS::Bindings::JavaString::uchars):
2323         (KJS::Bindings::JavaString::length):
2324         (KJS::Bindings::JavaString::ustring):
2325
2326         * bindings/jni/jni_utility.cpp:
2327         (KJS::Bindings::convertArrayInstanceToJavaArray): Made this static, so 
2328         the set of callers is known, and we can assert that we hold the JSLock. 
2329         (KJS::Bindings::convertValueToJValue): Acquire the JSLock because doing
2330         it recursively is pretty cheap, and it's just too confusing to tell whether
2331         all our callers do it for us.
2332
2333         * bindings/objc/objc_runtime.h: Nixed some dead code.
2334         * bindings/objc/objc_utility.mm:
2335         (KJS::Bindings::convertNSStringToString): Same drill as above.
2336
2337 2007-03-18  Alexey Proskuryakov  <ap@webkit.org>
2338
2339         Reviewed by Geoff.
2340
2341         http://bugs.webkit.org/show_bug.cgi?id=13105
2342         REGRESSION: an exception raised when calculating base value of a dot expression is not returned
2343
2344         Test: fast/js/dot-node-base-exception.html
2345
2346         * kjs/nodes.cpp:
2347         (FunctionCallDotNode::evaluate): Added the necessary KJS_CHECKEXCEPTIONVALUE.
2348
2349 2007-03-18  Steve Falkenburg  <sfalken@apple.com>
2350
2351         Build fix.
2352
2353         * JavaScriptCore.vcproj/testkjs/testkjs.vcproj:
2354
2355 2007-03-17  Timothy Hatcher  <timothy@apple.com>
2356
2357         Reviewed by Mark Rowe.
2358
2359         Made Version.xcconfig smarter when building for different configurations.
2360         Now uses the 522+ OpenSource version for Debug and Release, while using the
2361         full 522.4 version for Production builds. The system prefix is also computed
2362         based on the current system, so 4522.4 on Tiger and 5522.4 on Leopard.
2363
2364         * Configurations/JavaScriptCore.xcconfig:
2365         * Configurations/Version.xcconfig:
2366
2367 2007-03-15  Maciej Stachowiak  <mjs@apple.com>
2368
2369         Not reviewed.
2370         
2371         - build fix
2372
2373         * wtf/TCSystemAlloc.cpp:
2374
2375 2007-03-15  Maciej Stachowiak  <mjs@apple.com>
2376
2377         Reviewed by Geoff and Steve.
2378         
2379         - fix some portability issues with TCMalloc.
2380
2381         * JavaScriptCore.vcproj/WTF/WTF.vcproj:
2382         * kjs/config.h:
2383         * wtf/FastMalloc.cpp:
2384         (WTF::SizeClass):
2385         (WTF::InitSizeClasses):
2386         (WTF::TCMalloc_PageHeap::Split):
2387         (WTF::TCMalloc_PageHeap::RegisterSizeClass):
2388         (WTF::TCMalloc_Central_FreeList::length):
2389         (WTF::TCMalloc_ThreadCache::InitTSD):
2390         (WTF::TCMalloc_ThreadCache::CreateCacheIfNecessary):
2391         * wtf/TCSpinLock.h:
2392         * wtf/TCSystemAlloc.cpp:
2393         (TryVirtualAlloc):
2394         (TCMalloc_SystemAlloc):
2395
2396 2007-03-15  Timothy Hatcher  <timothy@apple.com>
2397
2398         Reviewed by John.
2399
2400         * Factored out most of our common build settings into .xcconfig files. Anything that was common in
2401           each build configuration was factored out into the shared .xcconfig file.
2402         * Adds a Version.xcconfig file to define the current framework version, to be used in other places.
2403         * Use the new $(BUNDLE_VERSION) (defined in Version.xcconfig) in the preprocessed Info.plist.
2404         * Use the versions defined in Version.xcconfig to set $(DYLIB_CURRENT_VERSION).
2405
2406         * Configurations/Base.xcconfig: Added.
2407         * Configurations/DebugRelease.xcconfig: Added.
2408         * Configurations/JavaScriptCore.xcconfig: Added.
2409         * Configurations/Version.xcconfig: Added.
2410         * Info.plist:
2411         * JavaScriptCore.xcodeproj/project.pbxproj:
2412
2413 2007-03-16  Shrikant Gangoda  <shrikant.gangoda@celunite.com>
2414
2415         Gdk build fix.
2416
2417         * kjs/DateMath.cpp:  gettimeofday comes from <sys/time.h> on Linux.
2418
2419 2007-03-14  Kevin McCullough  <kmccullough@apple.com>
2420
2421         Reviewed by .
2422
2423         - Fixed one more build breakage
2424
2425         * kjs/date_object.cpp:
2426         (KJS::formatLocaleDate):
2427
2428 2007-03-14  Kevin McCullough  <kmccullough@apple.com>
2429
2430         Reviewed by .
2431
2432         - Fixed a build breakage.
2433
2434         * kjs/DateMath.cpp:
2435         * kjs/date_object.cpp:
2436         (KJS::formatLocaleDate):
2437         (KJS::DateObjectImp::construct):
2438
2439 2007-03-14  Kevin McCullough  <kmccullough@apple.com>
2440
2441         Reviewed by Geoff.
2442
2443         - rdar://problem/5045720
2444         - DST changes in US affect JavaScript date calculations (12975)
2445         This fix was to ensure we properly test for the new changes to DST in the US.
2446         Also this fixes when we apply DST, now we correctly map most past years to current
2447         DST rules.  We still have a small issue with years before 1900 or after 2100.
2448         rdar://problem/5055038
2449
2450         * kjs/DateMath.cpp: Fix DST to match spec better.
2451         (KJS::getCurrentUTCTime):
2452         (KJS::mimimumYearForDST):
2453         (KJS::maximumYearForDST):
2454         (KJS::equivalentYearForDST):
2455         (KJS::getDSTOffset):
2456         * kjs/DateMath.h: Consolodated common funtionality.
2457         * kjs/date_object.cpp: Consolodated common functionality.
2458         (KJS::formatLocaleDate):
2459         (KJS::DateObjectImp::construct):
2460         * tests/mozilla/ecma/jsref.js: Added functions for finding the correct days when DST starts and ends.
2461         * tests/mozilla/ecma/shell.js: Added back in the old DST functions for ease of merging with mozilla if needed.
2462         * tests/mozilla/ecma_2/jsref.js: Added functions for finding the correct days when DST starts and ends.
2463         * tests/mozilla/ecma_3/Date/shell.js: Added functions for finding the correct days when DST starts and ends.
2464         * tests/mozilla/expected.html: Updated to show all date tests passing.
2465
2466 === Safari-5522.4 ===
2467
2468 2007-03-13  Kevin McCullough  <kmccullough@apple.com>
2469
2470         Reviewed by .
2471
2472         - Adding expected failures until the are truly fixed. 
2473         - rdar://problem/5060302
2474
2475         * tests/mozilla/expected.html:
2476
2477 2007-03-12  Kevin McCullough  <kmccullough@apple.com>
2478
2479         Reviewed by .
2480
2481         - Actually update tests for new DST rules.
2482
2483         * tests/mozilla/ecma/Date/15.9.3.1-1.js:
2484         * tests/mozilla/ecma/Date/15.9.3.1-2.js:
2485         * tests/mozilla/ecma/Date/15.9.3.1-3.js:
2486         * tests/mozilla/ecma/Date/15.9.3.1-4.js:
2487         * tests/mozilla/ecma/Date/15.9.3.1-5.js:
2488         * tests/mozilla/ecma/Date/15.9.3.2-1.js:
2489         * tests/mozilla/ecma/Date/15.9.3.2-2.js:
2490         * tests/mozilla/ecma/Date/15.9.3.2-3.js:
2491         * tests/mozilla/ecma/Date/15.9.3.2-4.js:
2492         * tests/mozilla/ecma/Date/15.9.3.2-5.js:
2493         * tests/mozilla/ecma/Date/15.9.3.8-1.js:
2494         * tests/mozilla/ecma/Date/15.9.3.8-2.js:
2495         * tests/mozilla/ecma/Date/15.9.3.8-3.js:
2496         * tests/mozilla/ecma/Date/15.9.3.8-4.js:
2497         * tests/mozilla/ecma/Date/15.9.3.8-5.js:
2498         * tests/mozilla/ecma/Date/15.9.5.10-1.js:
2499         * tests/mozilla/ecma/Date/15.9.5.10-10.js:
2500         * tests/mozilla/ecma/Date/15.9.5.10-11.js:
2501         * tests/mozilla/ecma/Date/15.9.5.10-12.js:
2502         * tests/mozilla/ecma/Date/15.9.5.10-13.js:
2503         * tests/mozilla/ecma/Date/15.9.5.10-2.js:
2504         * tests/mozilla/ecma/Date/15.9.5.10-3.js:
2505         * tests/mozilla/ecma/Date/15.9.5.10-4.js:
2506         * tests/mozilla/ecma/Date/15.9.5.10-5.js:
2507         * tests/mozilla/ecma/Date/15.9.5.10-6.js:
2508         * tests/mozilla/ecma/Date/15.9.5.10-7.js:
2509         * tests/mozilla/ecma/Date/15.9.5.10-8.js:
2510         * tests/mozilla/ecma/Date/15.9.5.10-9.js:
2511         * tests/mozilla/ecma/jsref.js:
2512         * tests/mozilla/ecma_2/jsref.js:
2513         * tests/mozilla/ecma_3/Date/shell.js:
2514
2515 2007-03-12  Kevin McCullough  <kmccullough@apple.com>
2516
2517         Reviewed by .
2518
2519         - Update tests for new DST rules.
2520
2521         * tests/mozilla/ecma/shell.js:
2522
2523 2007-03-11  Geoffrey Garen  <ggaren@apple.com>
2524
2525         Reviewed by Oliver Hunt.
2526         
2527         Fixed <rdar://problem/4681051> Installer crashes in KJS::Collector::
2528         markOtherThreadConservatively(KJS::Collector::Thread*) trying to install 
2529         iLife 06 using Rosetta on an Intel Machine
2530         
2531         The problem was that our thread-specific data destructor would modify the
2532         list of active JavaScript threads without holding the JSLock, corrupting
2533         the list. Corruption was especially likely if one JavaScript thread exited 
2534         while another was starting up.
2535
2536         * JavaScriptCore.exp:
2537         * kjs/JSLock.cpp: Don't conflate locking the JSLock with registering a
2538         thread, since the thread-specific data destructor needs to lock
2539         without registering a thread. Instead, treat thread registration as a
2540         part of the convenience of the JSLock object, and whittle down JSLock::lock()
2541         to just the bits that actually do the locking.
2542         (KJS::JSLock::lock):
2543         (KJS::JSLock::registerThread):
2544         * kjs/JSLock.h: Updated comments to mention the new behavior above, and
2545         other recent changes.
2546         (KJS::JSLock::JSLock):
2547         * kjs/collector.cpp:
2548         (KJS::destroyRegisteredThread): Lock here.
2549         (KJS::Collector::registerThread): To match, assert that we're locked here.
2550
2551 2007-03-10  Geoffrey Garen  <ggaren@apple.com>
2552
2553         Reviewed by Darin Adler.
2554
2555         Fixed <rdar://problem/4587763> PAC file: lock inversion between QT and 
2556         JSCore causes a hang @ www.panoramas.dk
2557         
2558         With a PAC file, run-webkit-tests --threaded passes, the reported site
2559         works, and all the Quicktime/JavaScript and Flash/JavaScript examples
2560         I found through Google work, too.
2561         
2562         Any time JavaScript causes arbitrary non-JavaScript code to execute, it 
2563         risks deadlock, because that code may block, trying to acquire a lock 
2564         owned by a thread that is waiting to execute JavaScript. In this case,
2565         the thread was a networking thread that was waiting to interpret a PAC file.
2566         
2567         Because non-JavaScript code may execute in response to, well, anything,
2568         a perfect solution to this problem is impossible. I've implemented an
2569         optimistic solution, instead: JavaScript will drop its lock whenever it
2570         makes a direct call to non-JavaScript code through a bridging/plug-in API,
2571         but will blissfully ignore the indirect ways it may cause non-JavaScript 
2572         code to run (resizing a window, for example). 
2573         
2574         Unfortunately, this solution introduces significant locking overhead in 
2575         the bridging APIs. I don't see a way around that.
2576
2577         This patch includes some distinct bug fixes I saw along the way:
2578         
2579         * bindings/objc/objc_instance.mm: Fixed a bug where a nested begin() call
2580         would leak its autorelease pool, because it would NULL out _pool without
2581         draining it.
2582
2583         * bindings/runtime_object.cpp:
2584         (RuntimeObjectImp::methodGetter): Don't copy an Identifier to ASCII only
2585         to turn around and make an Identifier from the ASCII. In an earlier 
2586         version of this patch, the copy caused an assertion failure. Now it's 
2587         just unnecessary work.
2588         (RuntimeObjectImp::getOwnPropertySlot): ditto
2589
2590         * bindings/objc/objc_instance.h: Removed overrides of setVAlueOfField and
2591         getValueOfField, because they did exactly what the base class versions did.
2592         Removed overrides of Noncopyable declarations for the same reason.
2593
2594         * bindings/runtime.h: Inherit from Noncopyable instead of rolling our own.
2595         * bindings/c/c_instance.h: ditto
2596
2597         And the actual patch:
2598         
2599         * API/JSCallbackConstructor.cpp: Drop all locks when calling out to C.
2600         (KJS::JSCallbackConstructor::construct):
2601         * API/JSCallbackFunction.cpp: ditto
2602         (KJS::JSCallbackFunction::callAsFunction):
2603         * API/JSCallbackObject.cpp: ditto
2604         (KJS::JSCallbackObject::init):
2605         (KJS::JSCallbackObject::~JSCallbackObject):
2606         (KJS::JSCallbackObject::getOwnPropertySlot):
2607         (KJS::JSCallbackObject::put):
2608         (KJS::JSCallbackObject::deleteProperty):
2609         (KJS::JSCallbackObject::construct):
2610         (KJS::JSCallbackObject::hasInstance):
2611         (KJS::JSCallbackObject::callAsFunction):
2612         (KJS::JSCallbackObject::getPropertyNames):
2613         (KJS::JSCallbackObject::toNumber):
2614         (KJS::JSCallbackObject::toString):
2615         (KJS::JSCallbackObject::staticValueGetter):
2616         (KJS::JSCallbackObject::callbackGetter):
2617         
2618         * bindings/c/c_instance.cpp: Drop all locks when calling out to C.
2619         (KJS::Bindings::CInstance::invokeMethod):
2620         (KJS::Bindings::CInstance::invokeDefaultMethod):
2621         * bindings/c/c_runtime.cpp: Drop all locks when calling out to C.
2622         (KJS::Bindings::CField::valueFromInstance):
2623         (KJS::Bindings::CField::setValueToInstance):
2624         * bindings/jni/jni_objc.mm:
2625         (KJS::Bindings::dispatchJNICall): Drop all locks when calling out to Java.
2626
2627         * bindings/objc/objc_instance.mm: The changes here are to accomodate the
2628         fact that C++ unwinding of DropAllLocks goes crazy when you put it inside
2629         a @try block. I moved all JavaScript stuff outside of the @try blocks, and 
2630         then prefixed the whole blocks with DropAllLocks objects. This required some
2631         supporting changes in other functions, which now acquire the JSLock for
2632         themselves, intead of relying on their callers to do so.
2633         (ObjcInstance::end):
2634         (ObjcInstance::invokeMethod):
2635         (ObjcInstance::invokeDefaultMethod):
2636         (ObjcInstance::setValueOfUndefinedField):
2637         (ObjcInstance::getValueOfUndefinedField):
2638         * bindings/objc/objc_runtime.mm: Same as above, except I didn't want to
2639         change throwError to acquire the JSLock for itself.
2640         (ObjcField::valueFromInstance):
2641         (ObjcField::setValueToInstance):
2642         * bindings/objc/objc_utility.mm: Supporting changes mentioned above.
2643         (KJS::Bindings::convertValueToObjcValue):
2644         (KJS::Bindings::convertObjcValueToValue):
2645
2646         * kjs/JSLock.cpp: 
2647         (1) Fixed DropAllLocks to behave as advertised, and drop the JSLock only 
2648         if the current thread actually acquired it in the first place. This is 
2649         important because WebKit needs to ensure that the JSLock has been 
2650         dropped before it makes a plug-in call, even though it doesn't know if 
2651         the current thread actually acquired the JSLock. (We don't want WebKit
2652         to accidentally drop a lock belonging to *another thread*.)
2653         (2) Used the new per-thread code written for (1) to make recursive calls
2654         to JSLock very cheap. JSLock now knows to call pthread_mutext_lock/ 
2655         pthread_mutext_unlock only at nesting level 0.
2656         (KJS::createDidLockJSMutex):
2657         (KJS::JSLock::lock):
2658         (KJS::JSLock::unlock):
2659         (KJS::DropAllLocks::DropAllLocks):
2660         (KJS::DropAllLocks::~DropAllLocks):
2661         (KJS::JSLock::lockCount):
2662         * kjs/JSLock.h: Don't duplicate Noncopyable.
2663         (KJS::JSLock::~JSLock):
2664
2665         * wtf/Assertions.h: Blind attempt at helping the Windows build.
2666
2667 2007-03-08  MorganL  <morganl.webkit@yahoo.com>
2668
2669         Reviewed by Darin.
2670
2671         http://bugs.webkit.org/show_bug.cgi?id=13018
2672         Bug 13018: allow embedders to override the definition of CRASH.
2673
2674         * wtf/Assertions.h: make it possible to override CRASH.
2675
2676 2007-03-07  Anrong Hu  <huanr@yahoo.com>
2677
2678         Reviewed by Maciej.
2679
2680         Fix http://bugs.webkit.org/show_bug.cgi?id=12535
2681         Bug 12535: Stack-optimizing compilers can trick GC into freeing in-use objects
2682
2683         * kjs/internal.cpp:
2684         (KJS::StringImp::toObject): Copy val onto the stack so it is not subject to garbage collection.
2685
2686 2007-03-07  Geoffrey Garen  <ggaren@apple.com>
2687
2688         Build fix for non-multiple-thread folks.
2689         
2690         Use a shared global in the non-multiple-thread case.
2691
2692         * wtf/FastMalloc.cpp:
2693         (WTF::isForbidden):
2694         (WTF::fastMallocForbid):
2695         (WTF::fastMallocAllow):
2696
2697 2007-03-07  Geoffrey Garen  <ggaren@apple.com>
2698
2699         Reviewed by Darin Adler.
2700         
2701         Fixed ASSERT failure I just introduced.
2702         
2703         Made the fastMalloc isForbidden flag per thread. (Oops!) We expect that
2704         other threads will malloc while we're marking -- we just want to prevent
2705         our own marking from malloc'ing.
2706
2707         * wtf/FastMalloc.cpp:
2708         (WTF::initializeIsForbiddenKey):
2709         (WTF::isForbidden):
2710         (WTF::fastMallocForbid):
2711         (WTF::fastMallocAllow):
2712         (WTF::fastMalloc):
2713         (WTF::fastCalloc):
2714         (WTF::fastFree):
2715         (WTF::fastRealloc):
2716         (WTF::do_malloc):
2717
2718 2007-03-07  Shrikant Gangoda  <shrikant.gangoda@celunite.com>
2719
2720         Reviewed by Maciej.
2721
2722         http://bugs.webkit.org/show_bug.cgi?id=12997
2723
2724         Wrap pthread-specific assertion in #if USE(MULTIPLE_THREADS).
2725
2726         * kjs/collector.cpp:
2727         (KJS::Collector::markMainThreadOnlyObjects):
2728
2729 2007-03-06  Geoffrey Garen  <ggaren@apple.com>
2730
2731         Reviewed by Maciej Stachowiak.
2732         
2733         Fixed <rdar://problem/4576242> | http://bugs.webkit.org/show_bug.cgi?id=12586
2734         PAC file: malloc deadlock sometimes causes a hang @ www.apple.com/pro/profiles/ (12586)
2735         
2736         This is a modified version of r14752 on the branch.
2737         
2738         These changes just add debugging functionality. They ASSERT that we don't 
2739         malloc during the mark phase of a garbage collection, which can cause a
2740         deadlock.
2741
2742         * kjs/collector.cpp:
2743         (KJS::Collector::collect):
2744         * wtf/FastMalloc.cpp:
2745         (WTF::fastMallocForbid):
2746         (WTF::fastMallocAllow):
2747         (WTF::fastMalloc):
2748         (WTF::fastCalloc):
2749         (WTF::fastFree):
2750         (WTF::fastRealloc):
2751         (WTF::do_malloc):
2752         * wtf/FastMalloc.h:
2753
2754 2007-03-06  Geoffrey Garen  <ggaren@apple.com>
2755
2756         Reviewed by Maciej Stachowiak.
2757         
2758         Fixed all known crashers exposed by run-webkit-tests --threaded. This covers:
2759
2760         <rdar://problem/4565394> | http://bugs.webkit.org/show_bug.cgi?id=12585 
2761             PAC file: after closing a window that contains macworld.com, new window 
2762             crashes (KJS::PropertyMap::mark()) (12585)
2763         <rdar://problem/4571215> | http://bugs.webkit.org/show_bug.cgi?id=9211
2764             PAC file: Crash occurs when clicking on the navigation tabs at http://www.businessweek.com/ (9211)
2765         <rdar://problem/4557926> 
2766             PAC file: Crash occurs when attempting to view image in slideshow mode 
2767             at http://d.smugmug.com/gallery/581716 ( KJS::IfNode::execute (KJS::
2768             ExecState*) + 312) if you use a PAC file
2769
2770         (1) Added some missing JSLocks, along with related ASSERTs.
2771         
2772         (2) Fully implemented support for objects that can only be garbage collected
2773         on the main thread. So far, only WebCore uses this. We can add it to API
2774         later if we learn that it's needed. 
2775         
2776         The implementation uses a "main thread only" flag inside each object. When 
2777         collecting on a secondary thread, the Collector does an extra pass through 
2778         the heap to mark all flagged objects before sweeping. This solution makes
2779         the common case -- flag lots of objects, but never collect on a secondary 
2780         thread -- very fast, even though the uncommon case of garbage collecting
2781         on a secondary thread isn't as fast as it could be. I left some notes 
2782         about how to speed it up, if we ever care.
2783         
2784         For posterity, here are some things I learned about GC while investigating:
2785         
2786         * Each collect must either mark or delete every heap object. "Zombie" 
2787         objects, which are neither marked nor deleted, raise these issues:
2788
2789             * On the next pass, the conservative marking algorithm might mark a 
2790             zombie, causing it to mark freed objects.
2791
2792             * The client might try to use a zombie, which would seem live because 
2793             its finalizer had not yet run.
2794
2795         * A collect on the main thread is free to delete any object. Presumably, 
2796         objects allocated on secondary threads have thread-safe finalizers.
2797
2798         * A collect on a secondary thread must not delete thread-unsafe objects.
2799
2800         * The mark function must be thread-safe.
2801         
2802         Line by line comments:
2803
2804         * API/JSObjectRef.h: Added comment specifying that the finalize callback 
2805         may run on any thread.
2806
2807         * JavaScriptCore.exp: Nothing to see here.
2808
2809         * bindings/npruntime.cpp:
2810         (_NPN_GetStringIdentifier): Added JSLock.
2811
2812         * bindings/objc/objc_instance.h:
2813         * bindings/objc/objc_instance.mm:
2814         (ObjcInstance::~ObjcInstance): Use an autorelease pool. The other callers 
2815         to CFRelease needed one, too, but they were dead code, so I removed them 
2816         instead. (This fixes a leak seen while running run-webkit-tests --threaded,
2817         although I don't think it's specifically a threading issue.) 
2818         
2819         * kjs/collector.cpp:
2820         (KJS::Collector::collectOnMainThreadOnly): New function. Tells the collector
2821         to collect a value only if it's collecting on the main thread.
2822         (KJS::Collector::markMainThreadOnlyObjects): New function. Scans the heap
2823         for "main thread only" objects and marks them.
2824
2825         * kjs/date_object.cpp: 
2826         (KJS::DateObjectImp::DateObjectImp): To make the new ASSERTs happy, allocate 
2827         our globals on the heap, avoiding a seemingly unsafe destructor call at 
2828         program exit time.
2829         * kjs/function_object.cpp:
2830         (FunctionPrototype::FunctionPrototype): ditto
2831
2832         * kjs/interpreter.cpp:
2833         (KJS::Interpreter::mark): Removed boolean parameter, which was an incomplete
2834         and arguably hackish way to implement markMainThreadOnlyObjects() inside WebCore.
2835         * kjs/interpreter.h:
2836
2837         * kjs/identifier.cpp:
2838         (KJS::identifierTable): Added some ASSERTs to check for thread safety 
2839         problems.
2840
2841         * kjs/list.cpp: Added some ASSERTs to check for thread safety problems.
2842         (KJS::allocateListImp):
2843         (KJS::List::release):
2844         (KJS::List::append):
2845         (KJS::List::empty): Make the new ASSERTs happy.
2846
2847         * kjs/object.h:
2848         (KJS::JSObject::JSObject): "m_destructorIsThreadSafe" => "m_collectOnMainThreadOnly".
2849         I removed the constructor parameter because m_collectOnMainThreadOnly,
2850         like m_marked, is a Collector bit, so only the Collector should set or get it.
2851
2852         * kjs/object_object.cpp:
2853         (ObjectPrototype::ObjectPrototype): Make the ASSERTs happy.
2854         * kjs/regexp_object.cpp:
2855         (RegExpPrototype::RegExpPrototype): ditto
2856
2857         * kjs/ustring.cpp: Added some ASSERTs to check for thread safety problems.
2858         (KJS::UCharReference::ref): 
2859         (KJS::UString::Rep::createCopying):
2860         (KJS::UString::Rep::create):
2861         (KJS::UString::Rep::destroy):
2862         (KJS::UString::null): Make the new ASSERTs happy.
2863         * kjs/ustring.h:
2864         (KJS::UString::Rep::ref): Added some ASSERTs to check for thread safety problems.
2865         (KJS::UString::Rep::deref):
2866
2867         * kjs/value.h:
2868         (KJS::JSCell::JSCell):
2869
2870 2007-03-06  Geoffrey Garen  <ggaren@apple.com>
2871
2872         Reviewed by Maciej Stachowiak.
2873         
2874         2% speedup on super accurate JS iBench.
2875
2876         (KJS::Collector::collect): Removed anti-optimization to call
2877         pthread_is_threaded_np() before calling pthread_main_np(). Almost all 
2878         apps have more than one thread, so the extra call is actually worse.
2879         Interestingly, even the single-threaded testkjs shows a speed gain
2880         from removing the pthread_is_threaded_np() short-circuit. Not sure why.
2881
2882 2007-03-04  Don Gibson  <dgibson77@gmail.com>
2883
2884         Reviewed by Nikolas Zimmermann.
2885
2886         - fix http://bugs.webkit.org/show_bug.cgi?id=12950
2887           Assertions.cpp should not #define macros that are already defined
2888
2889         * wtf/Assertions.cpp: Don't #define WINVER and _WIN32_WINNT if they
2890         are already defined.
2891
2892 2007-03-02  Steve Falkenburg  <sfalken@apple.com>
2893
2894         Reviewed by Anders.
2895         
2896         Add unsigned int hash traits (matches existing unsigned long version)
2897
2898         * wtf/HashTraits.h:
2899         (WTF::):
2900
2901 2007-03-02  Adam Roben  <aroben@apple.com>
2902
2903         Reviewed by Kevin M.
2904
2905         Try to fix the Qt build.
2906
2907         * kjs/DateMath.cpp:
2908         (KJS::msToGregorianDateTime): Removed unnecessary "struct" keyword.
2909         * kjs/DateMath.h: Moved forward declarations to the top of the file
2910         before they are used.
2911         * kjs/date_object.cpp:
2912         (KJS::formatLocaleDate): Changed to take a const GregorianDateTime&
2913         since GregorianDateTime is Noncopyable.
2914
2915 2007-03-02  Darin Adler  <darin@apple.com>
2916
2917         Reviewed by Kevin McCullough.
2918
2919         - fix http://bugs.webkit.org/show_bug.cgi?id=12867
2920           REGRESSION: BenchJS test 7 (dates) is 220% slower than in Safari 2.0.4
2921
2922         * kjs/DateMath.h: Marked GregorianDateTime as noncopyable, since it has a non-trivial
2923         destructor and not the correspoding copy constructor or assignment operator.
2924         Changed the GregorianDateTime constructor to use member initialization syntax.
2925         Fixed the destructor to use the array delete operator, since timeZone is an array.
2926
2927         * kjs/DateMath.cpp:
2928         (KJS::daysInYear): Changed to call isLeapYear so the rule is not repeated twice.
2929         (KJS::getUTCOffset): Added caching on PLATFORM(DARWIN), since we can rely on the
2930         notify_check function and "com.apple.system.timezone" to let us know when the
2931         offset has changed.
2932
2933 2007-02-27  Geoffrey Garen  <ggaren@apple.com>
2934
2935         Reviewed by Darin Adler.
2936         
2937         Follow-up to fixing http://bugs.webkit.org/show_bug.cgi?id=12659 | <rdar://problem/4954306>
2938         JS objects not collected after closing window @ ebay.com/maps.google.com
2939         
2940         Changed Interpreter cache of global constructors and prototypes from
2941         ProtectedPtrs to bare, marked pointers. ProtectedPtrs are inefficient,
2942         and they increase the risk of reference cycles. Also, Darin said something
2943         about ProtectedPtrs giving him warts.
2944         
2945         Also changed data members to precise types from generic JSObject*'s.
2946         
2947         Layout tests and JS tests pass.
2948
2949         * kjs/SavedBuiltins.h:
2950         * kjs/interpreter.cpp:
2951         (KJS::Interpreter::init):
2952         (KJS::Interpreter::~Interpreter):
2953         (KJS::Interpreter::initGlobalObject): Moved Identifier::init() call to
2954         constructor, for clarity.
2955         (KJS::Interpreter::mark):
2956         * kjs/interpreter.h:
2957
2958 2007-02-27  Geoffrey Garen  <ggaren@apple.com>
2959
2960         Reviewed by Maciej Stachowiak.
2961         
2962         Fixed http://bugs.webkit.org/show_bug.cgi?id=12659 | <rdar://problem/4954306>
2963         JS objects not collected after closing window @ ebay.com/maps.google.com
2964
2965         Don't GC in the Interpreter destructor. For that to work, the Interpreter
2966         would have to NULL out all of its ProtectedPtrs before calling collect(). But 
2967         we've decided that we don't want things to work that way, anyway. We want the
2968         client to be in charge of manual GC so that it can optimize cases when
2969         it will be destroying many interpreters at once
2970         (e.g., http://bugs.webkit.org/show_bug.cgi?id=12900).
2971         
2972         Also removed Interpreter::collect() because it was redundant with 
2973         Collector::collect().
2974
2975         * JavaScriptCore.exp:
2976         * kjs/interpreter.cpp:
2977         (KJS::Interpreter::~Interpreter):
2978         * kjs/testkjs.cpp:
2979         (TestFunctionImp::callAsFunction):
2980
2981 2007-02-26  Krzysztof Kowalczyk  <kkowalczyk@gmail.com>
2982
2983         Reviewed by Adam Roben.
2984
2985         Rename *_SUPPORT defines to ENABLE_*.
2986
2987         * jscore.bkl:
2988
2989 2007-02-26  Maciej Stachowiak  <mjs@apple.com>
2990
2991         Reviewed by Lars.
2992         
2993         - <rdar://problem/5021698> Disable experimental SVG features (12883)
2994
2995         * wtf/Platform.h: Add ENABLE() macro similar to HAVE() and USE(), to
2996         allow nicer handling of optional WebKit features.
2997
2998 2007-02-22  George Staikos  <staikos@kde.org>
2999
3000         Reviewed by Lars.
3001
3002         Add return values
3003
3004         * wtf/unicode/qt4/UnicodeQt4.h:
3005         (WTF::Unicode::toLower):
3006         (WTF::Unicode::toUpper):
3007
3008 2007-02-22  Oscar Cwajbaum  <public@oscarc.net>
3009
3010         Reviewed by Maciej.
3011
3012         Fix ARM-specific alignment problem in FastMalloc
3013         http://bugs.webkit.org/show_bug.cgi?id=12841
3014
3015         * wtf/FastMalloc.cpp:
3016         Modify how pageheap_memory is declared to ensure proper alignment
3017         on architectures such as ARM
3018
3019 2007-02-20  Zack Rusin  <zrusin@trolltech.com>
3020
3021         Reviewed by Lars
3022
3023         Make sure that non-void methods always return something.
3024
3025         * wtf/unicode/qt4/UnicodeQt4.h:
3026         (WTF::Unicode::toLower):
3027         (WTF::Unicode::toUpper):
3028         (WTF::Unicode::foldCase):
3029
3030 2007-02-18  Kevin Ollivier  <kevino@theolliviers.com>
3031
3032         Reviewed by Adam Roben.
3033
3034         Fix cases where MSVC-specific code was identified as Win32 platform
3035         code. (as it should be compiled for e.g. wx port when using MSVC too)
3036         
3037         * wtf/Assertions.h: 
3038         * wtf/MathExtras.h:
3039         * wtf/StringExtras.h:
3040         changed PLATFORM(WIN) sections to COMPILER(MSVC) as necessary
3041
3042 2007-02-17  Krzysztof Kowalczyk  <kkowalczyk@gmail.com>
3043
3044         Reviewed by Adam Roben.
3045
3046         Fix crashes on ARM due to different struct packing. Based on a patch
3047         by Mike Emmel.
3048         * kjs/ustring.cpp: compile-time assert to make sure sizeof(UChar) == 2
3049         * kjs/ustring.h: pack UChar struct to ensure that sizeof(UChar) == 2
3050         * wtf/Assertions.h: add COMPILE_ASSERT macro for compile-time assertions
3051
3052 2007-02-16  George Staikos  <staikos@kde.org>
3053
3054         Reviewed by Maciej.
3055
3056         Fix uninitialized variable
3057
3058         * bindings/testbindings.cpp:
3059         (myAllocate):
3060
3061 2007-02-16  Anders Carlsson  <acarlsson@apple.com>
3062
3063         Reviewed by Mitz.
3064
3065         http://bugs.webkit.org/show_bug.cgi?id=12788
3066         REGRESSION: Going back one page in history has a noticeable delay
3067         
3068         Um...if all elements in two vectors are equal, then I guess we could say that
3069         the two vectors are equal too.
3070         
3071         * wtf/Vector.h:
3072         (WTF::):
3073
3074 2007-02-14  Anders Carlsson  <acarlsson@apple.com>
3075
3076         Reviewed by Darin.
3077
3078         Add new canCompareWithMemcmp vector trait and use it to determine whether
3079         operator== can use memcmp.
3080         
3081         * wtf/Vector.h:
3082         (WTF::):
3083         (WTF::VectorTypeOperations::compare):
3084         (WTF::operator==):
3085         * wtf/VectorTraits.h:
3086         (WTF::):
3087
3088 2007-02-13  Brady Eidson  <beidson@apple.com>
3089
3090         Reviewed by Darin
3091         
3092         Tweaked vector a bit
3093
3094         * wtf/Vector.h:
3095         (WTF::operator==):
3096
3097 2007-02-13  Dex Deacon  <occupant4@gmail.com>
3098
3099         Reviewed by Darin.
3100
3101         - fix for http://bugs.webkit.org/show_bug.cgi?id=12750
3102           Vector operator== was not defined correctly. It returned void,
3103           did not accept const Vectors, and used an int instead of size_t. 
3104
3105         * wtf/Vector.h: fixed comparison operators
3106         (WTF::operator==):
3107         (WTF::operator!=):
3108
3109 2007-02-10  David Carson  <dacarson@gmail.com>
3110
3111         Reviewed by Maciej.
3112
3113         - fix for http://bugs.webkit.org/show_bug.cgi?id=12636
3114         Corrected the generation of method signatures when the parameter
3115         is an Array. 
3116         Added support for converting a Javascript array to a Java array.
3117
3118         * bindings/jni/jni_utility.h: added new type for array, array_type
3119         * bindings/jni/jni_runtime.cpp: add support for new array type
3120         (JavaField::valueFromInstance):
3121         (JavaField::setValueToInstance):
3122         (JavaMethod::JavaMethod):
3123         (JavaMethod::signature):
3124         * bindings/jni/jni_utility.cpp: add support for new array type
3125         (KJS::Bindings::callJNIMethod):
3126         (KJS::Bindings::callJNIStaticMethod):
3127         (KJS::Bindings::callJNIMethodIDA):
3128         (KJS::Bindings::JNITypeFromClassName):
3129         (KJS::Bindings::signatureFromPrimitiveType):
3130         (KJS::Bindings::JNITypeFromPrimitiveType):
3131         (KJS::Bindings::getJNIField):
3132         (KJS::Bindings::convertArrayInstanceToJavaArray): new method
3133         converts the Javascript array to the requested Java array.
3134         (KJS::Bindings::convertValueToJValue):
3135
3136 2007-02-08  Anders Carlsson  <acarlsson@apple.com>
3137
3138         Reviewed by Geoff.
3139
3140         <rdar://problem/4930614>
3141         Safari complains about "Slow Script" if GMail is left open and machine is busy
3142         
3143         <rdar://problem/4649516>
3144         Turn off slow script dialog or crank up time that makes it come up
3145         
3146         <rdar://problem/4963589>
3147         Slow script warning is displayed after closing of PROMPT or PRINT dialog
3148         
3149         Re-do the way script timeouts are handled. No longer use a unix timer that sends signals. Instead, add a 
3150         tick count and increment it in loop bodies. If the tick count reaches a threshold, do a timeout check. If the total time executing
3151         is higher than the timeout value, (possibly) interrupt the script. The timeout checker also adjusts the threshold dynamically
3152         to prevent doing the timeout check too often.
3153          
3154         * JavaScriptCore.exp:
3155         Remove pause and resume calls.
3156         
3157         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
3158         Add winmm.lib.
3159
3160         * kjs/interpreter.cpp:
3161         (KJS::Interpreter::init):
3162         (KJS::Interpreter::~Interpreter):
3163         (KJS::Interpreter::startTimeoutCheck):
3164         (KJS::Interpreter::stopTimeoutCheck):
3165         (KJS::Interpreter::resetTimeoutCheck):
3166         (KJS::getCurrentTime):
3167         (KJS::Interpreter::checkTimeout):
3168         * kjs/interpreter.h:
3169         (KJS::Interpreter::timedOut):
3170         * kjs/nodes.cpp:
3171         (DoWhileNode::execute):
3172         (WhileNode::execute):
3173         (ForNode::execute):
3174
3175 2007-02-07  Darin Adler  <darin@apple.com>
3176
3177         * JavaScriptCore.vcproj/JavaScriptCore.sln: Reenable testkjs.
3178
3179 2007-02-07  Darin Adler  <darin@apple.com>
3180
3181         Reviewed by Geoff.
3182
3183         - another build fix; this time for sure
3184
3185         * pcre/pcre_exec.c: (match):
3186         The compiler caught an incorrect use of the othercase variable across
3187         a call to RMATCH in character repeat processing. Local variables can
3188         change in the crazy NO_RECURSE mode that we use, so we instead need
3189         the value in othercase to be in one of the special stack frame variables.
3190         Added a new stack frame variable for this purpose named repeat_othercase.
3191         Also noted a similar error in the non-UTF-16 side of the #ifdef, but
3192         didn't try to fix that one. Also removed a SUPPORT_UCP #ifdef from the
3193         PCRE_UTF16 side; that code doesn't work without the Unicde properties
3194         table, and we don't try to use it that way.
3195
3196 2007-02-06  Steve Falkenburg  <sfalken@apple.com>
3197
3198         Disable testkjs in sln until we figure out mysterious compiler warning.
3199
3200         * JavaScriptCore.vcproj/JavaScriptCore.sln:
3201
3202 2007-02-06  Steve Falkenburg  <sfalken@apple.com>
3203
3204         Build fix by ggaren
3205
3206         * pcre/pcre_exec.c:
3207         (match):
3208
3209 2007-02-06  Darin Adler  <darin@apple.com>
3210
3211         Reviewed by Geoff.
3212
3213         - fix <rdar://problem/4979089> PCRE should avoid setjmp/longjmp even when compiler
3214           is not GCC
3215
3216         Added a new code path that's slower and way uglier but doesn't rely on GCC's
3217         computed gotos.
3218
3219         * pcre/pcre_exec.c: Added a numeric parameter to the RMATCH function. It must be
3220         different at every RMATCH call site. Changed the non-GCC NO_RECURSE version of
3221         the macro to use a label incorporating the number. Changed the RRETURN macro to
3222         use a goto instead of longjmp.
3223         (match): Added a different number at each callsite, using a perl script for the
3224         first-time task. Going forward it should be easy to maintain by hand. Added a
3225         switch statement at the bottom of the function. We'll get compile time errors
3226         if we have anything in the switch statement that's never used in an RMATCH,
3227         but errors in the other direction are silent except at runtime.
3228
3229 2007-02-06  Darin Adler  <darin@apple.com>
3230
3231         Reviewed by John.
3232
3233         - fix <rdar://problem/4687840> 9A241: JavaScript RegExp 25-30x slower than on 10.4.7
3234
3235         I used Shark to figure out what to do. The test case is now 15% faster than with
3236         stock Safari. Some other regular expression cases might still be a few % slower
3237         than before, but the >10x slowdown is now completely gone.
3238
3239         1) Fix slowness caused by setjmp/longjmp by using computed goto instead.
3240
3241         Use GCC extensions - locally declared labels, labels as values, and computed goto -
3242         instead of using setjmp/longjmp to implemement non-recursive version of the regular
3243         expression system. We could probably make this even faster if we reduced the use
3244         of malloc a bit too.
3245
3246         2) Fix slowness caused by allocating heapframe objects by allocating the first
3247            16 of them from the stack.
3248
3249         3) Speed up use of malloc and free in PCRE by making it use fastMalloc and fastFree.
3250
3251         4) Speed up the test case by adding a special case to a UString function.
3252
3253         5) Made a small improvement to the innermost hottest loop of match by hoisting
3254            the conversion from int to pcre_uchar out of the loop.
3255
3256         * JavaScriptCore.xcodeproj/project.pbxproj: Compile FastMallocPCRE.cpp, and don't
3257         compile pcre_globals.c.
3258
3259         * wtf/FastMallocPCRE.cpp: Added. A copy of pcre_globals.c that uses FastMalloc.h.
3260         This is better than code that sets the PCRE allocation globals because by doing it
3261         this way there's guaranteed to be no problem with order of initialization.
3262
3263         * kjs/ustring.cpp: (KJS::UString::spliceSubstringsWithSeparators): Add a fast
3264         special case when this is called for only one subrange and no seaprators. This
3265         was happening a lot in the test case and it seems quite reasonable to optimize this.
3266
3267         * pcre/pcre_exec.c: Create a copy of the RMATCH and RRETURN macros that use goto
3268         instead of setjmp/longjmp. Change code that calls pcre_stack_malloc to first use
3269         storage on the stack inside the match function.
3270         (match): Move initialization of utf8 up a couple lines to avoid "possibly used
3271         uninitialized" warning. Use a local variable so we compare with pcre_uchar instead
3272         of with int inside the inner "find a character" loop.
3273
3274 2007-02-03  George Staikos  <staikos@kde.org>
3275
3276         Reviewed by Alexey.
3277
3278         -1 is not a valid point.  We can't handle anything > 0xffff anyway.
3279         Fixes crash on cases like eval("x");
3280
3281         * wtf/unicode/qt4/UnicodeQt4.h:
3282         (WTF::Unicode::category):
3283
3284 2007-02-02  Darin Adler  <darin@apple.com>
3285
3286         Reviewed by Anders.
3287
3288         - fix copying and assigning a ListHashSet
3289
3290         No test because the code path with bugs I am fixing is not used yet.
3291
3292         * wtf/ListHashSet.h: Tweaked ListHashSetNodeAllocator a little bit for clarity.
3293         Changed m_allocator to be an OwnPtr instead of doing an explicit delete.
3294         Fixed bug in copy constructor where we'd have an uninitialized m_allocator.
3295         Fixed bug in assignment operator where it would swap only the hash table, and
3296         not the head, tail, and allocator pointers.
3297
3298 2007-02-02  Geoffrey Garen  <ggaren@apple.com>
3299
3300         Reviewed by Maciej Stachowiak.
3301         
3302         Use WTFLog instead of fprintf for logging KJS::Node leaks.
3303
3304         * kjs/nodes.cpp:
3305         (NodeCounter::~NodeCounter): Changed count to unsigned, updated
3306         to match style guidelines.
3307
3308 2007-02-02  Maciej Stachowiak  <mjs@apple.com>
3309
3310         - not reviewed, build fix
3311
3312         * wtf/ListHashSet.h:
3313         (WTF::ListHashSetNodeAllocator::ListHashSetNodeAllocator): ummm, use union correctly
3314
3315 2007-02-01  Maciej Stachowiak  <mjs@apple.com>
3316
3317         Reviewed by Darin.
3318         
3319         - use a custom allocator for ListHashSet, to fix ~1% perf regression using it for form control
3320
3321         * wtf/ListHashSet.h:
3322         (WTF::ListHashSetNodeAllocator::ListHashSetNodeAllocator):
3323         (WTF::ListHashSetNodeAllocator::allocate):
3324         (WTF::ListHashSetNodeAllocator::deallocate):
3325         (WTF::ListHashSetNode::operator new):
3326         (WTF::ListHashSetNode::operator delete):
3327         (WTF::ListHashSetNode::destroy):
3328         (WTF::ListHashSetTranslator::translate):
3329         (WTF::::ListHashSet):
3330         (WTF::::~ListHashSet):
3331         (WTF::::add):
3332         (WTF::::unlinkAndDelete):
3333         (WTF::::deleteAllNodes):
3334
3335 2007-01-31  Maciej Stachowiak  <mjs@apple.com>
3336
3337         Reviewed by Adam.
3338         
3339         - fix sporadic crash
3340
3341         * wtf/ListHashSet.h:
3342         (WTF::::remove): remove before deleting
3343
3344 2007-01-31  Maciej Stachowiak  <mjs@apple.com>
3345
3346         Reviewed by Mark with help from Lars.
3347         
3348         - added new ListHashSet class, which combines a hashtable and a linked list to provide a set
3349         that keeps elements in inserted order
3350         
3351         This is to assist in fixing the following:
3352         <rdar://problem/4751164> REGRESSION: Safari places text on incorrect button when returning to a page via back [10541]
3353         http://bugs.webkit.org/show_bug.cgi?id=10541
3354
3355         * JavaScriptCore.vcproj/WTF/WTF.vcproj:
3356         * JavaScriptCore.xcodeproj/project.pbxproj:
3357         * wtf/HashTable.h:
3358         (WTF::HashTable::find):
3359         (WTF::HashTable::contains):
3360         (WTF::::find):
3361         (WTF::::contains):
3362         * wtf/ListHashSet.h: Added.
3363         (WTF::ListHashSetNode::ListHashSetNode):
3364         (WTF::ListHashSetNodeHashFunctions::hash):
3365         (WTF::ListHashSetNodeHashFunctions::equal):
3366         (WTF::ListHashSetIterator::ListHashSetIterator):
3367         (WTF::ListHashSetIterator::get):
3368         (WTF::ListHashSetIterator::operator*):
3369         (WTF::ListHashSetIterator::operator->):
3370         (WTF::ListHashSetIterator::operator++):
3371         (WTF::ListHashSetIterator::operator--):
3372         (WTF::ListHashSetIterator::operator==):
3373         (WTF::ListHashSetIterator::operator!=):
3374         (WTF::ListHashSetIterator::operator const_iterator):
3375         (WTF::ListHashSetIterator::node):
3376         (WTF::ListHashSetConstIterator::ListHashSetConstIterator):
3377         (WTF::ListHashSetConstIterator::get):
3378         (WTF::ListHashSetConstIterator::operator*):
3379         (WTF::ListHashSetConstIterator::operator->):
3380         (WTF::ListHashSetConstIterator::operator++):
3381         (WTF::ListHashSetConstIterator::operator--):
3382         (WTF::ListHashSetConstIterator::operator==):
3383         (WTF::ListHashSetConstIterator::operator!=):
3384         (WTF::ListHashSetConstIterator::node):
3385         (WTF::ListHashSetTranslator::hash):
3386         (WTF::ListHashSetTranslator::equal):
3387         (WTF::ListHashSetTranslator::translate):
3388         (WTF::::ListHashSet):
3389         (WTF::::operator):
3390         (WTF::::~ListHashSet):
3391         (WTF::::size):
3392         (WTF::::capacity):
3393         (WTF::::isEmpty):
3394         (WTF::::begin):
3395         (WTF::::end):
3396         (WTF::::find):
3397         (WTF::::contains):
3398         (WTF::::add):
3399         (WTF::::remove):
3400         (WTF::::clear):
3401         (WTF::::unlinkAndDelete):
3402         (WTF::::appendNode):
3403         (WTF::::deleteAllNodes):
3404         (WTF::::makeIterator):
3405         (WTF::::makeConstIterator):
3406         (WTF::deleteAllValues):
3407
3408 2007-01-30  Darin Adler  <darin@apple.com>
3409
3410         * kjs/DateMath.cpp: Fix license header to reflect LGPL as the first license
3411         mentioned. We still mention the option of using under MPL or GPL since some
3412         of this code came from the Mozilla project with those license terms.
3413
3414 2007-01-30  Simon Hausmann  <hausmann@kde.org>
3415
3416         Reviewed by Zack.
3417
3418         Turned JavaScriptCore from a separate library into an includable
3419         project, to combine it all into libWebKitQt.
3420
3421         * JavaScriptCore.pri: Added.
3422         * JavaScriptCore.pro: Removed.
3423         * kjs/testkjs.pro:
3424
3425 2007-01-29  Geoffrey Garen  <ggaren@apple.com>
3426
3427         Reviewed by Maciej Stachowiak.
3428
3429         Fixed <rdar://problem/4485644> REGRESSION: JavaScriptCore has init routines
3430         
3431         The TCMalloc module now initializes, if needed, inside GetCache() and 
3432         fastMallocSetIsMultiThreaded(). We leverage the same synchronization 
3433         technique used for enabling / disabling the single-threaded optimization 
3434         to synchronize initialization of the library without requiring a lock 
3435         for every malloc.
3436         
3437         1,251 runs of tcmalloc_unittest, 2 runs of a custom, massively multi-threaded 
3438         tcmalloc_unittest, and my custom version of the PLT show no regressions.
3439         Super-accurate JS iBench reports a .24% regression, which is right at the
3440         limit of its error range, so I'm declaring victory.
3441
3442         * wtf/FastMalloc.cpp:
3443         (WTF::fastMallocSetIsMultiThreaded): Initialize, if needed. (InitModule()
3444         checks the "if needed" part.)
3445         (WTF::TCMalloc_ThreadCache::GetCache): Restored original TCMalloc code
3446         inside #ifdef, for posterity. Added new initialization logic.
3447         (WTF::TCMalloc_ThreadCache::InitModule): Call InitTSD(), since we don't
3448         have a static initializer to call it for us, now. This means that fastMalloc
3449         is not usable as a general libc allocator, but it never was, and if it were
3450         the general libc allocator, we wouldn't be here in the first place, so whatever.
3451         (WTF::TCMalloc_ThreadCache::InitTSD): Don't try to take the pageheap_lock, 
3452         since InitModule already has it.
3453
3454 2007-01-29  Kevin McCullough  <KMcCullough@apple.com>
3455
3456         Reviewed by Geoff and Oliver.
3457
3458         - rdar://problem/4955561
3459         - missusing JavaScript shouldn't crash webkit.  Now it doesn't, in this case.
3460
3461         * bindings/objc/objc_runtime.mm:
3462         (ObjcFallbackObjectImp::callAsFunction):
3463         * bindings/runtime_method.cpp:
3464         (RuntimeMethod::callAsFunction):
3465         * bindings/runtime_object.cpp:
3466         (RuntimeObjectImp::callAsFunction):
3467
3468 2007-01-28  Geoffrey Garen  <ggaren@apple.com>
3469
3470         Reviewed by Maciej Stachowiak.
3471         
3472         First step in fixing <rdar://problem/4485644> REGRESSION: JavaScriptCore 
3473         has init routines
3474         
3475         Don't rely on a static initializer to store the main thread's ID (which
3476         we would use to detect allocations on secondary threads). Instead, require 
3477         the caller to notify fastMalloc if it might allocate on a secondary thread.
3478         
3479         Also fixed what seemed like a race condition in do_malloc.
3480         
3481         tcmalloc_unittest and my custom versions of JS iBench and PLT show no
3482         regressions.
3483
3484         * wtf/FastMalloc.cpp:
3485         (WTF::fastMallocSetIsMultiThreaded): 
3486         (1) Renamed from "fastMallocRegisterThread", which was a misleading name because 
3487         not all threads need to register with fastMalloc -- only secondary threads 
3488         need to, and only for the purpose of disabling its single-threaded optimization. 
3489
3490         (2) Use the pageheap_lock instead of a custom one, since we need to synchronize
3491         with the read of isMultiThreaded inside CreateCacheIfNecessary. This is a new
3492         requirement, now that we can't guarantee that the first call to CreateCacheIfNecessary
3493         will occur on the main thread at init time, before any other threads have been created.
3494
3495         (WTF::TCMalloc_ThreadCache::CreateCacheIfNecessary):
3496         (WTF::do_malloc): Reverted WTF change only to call GetCache() if size <= kMaxSize.
3497         The WTF code would read phinited without holding the pageheap_lock, which
3498         seemed like a race condition. Regardless, calling GetCache reduces the number 
3499         of code paths to module initialization, which will help in writing the 
3500         final fix for this bug.
3501
3502 2007-01-28  David Kilzer  <ddkilzer@webkit.org>
3503
3504         Reviewed by Darin.
3505
3506         - fix http://bugs.webkit.org/show_bug.cgi?id=9815
3507           JavaScript TypeError loading Dean Edwards' JS compressor/obfuscator
3508
3509         Creating a function using 'new Function()' was not setting its prototype with the
3510         same flags as 'function() { }'.
3511
3512         Test: fast/js/function-prototype.html
3513
3514         * kjs/function_object.cpp:
3515         (FunctionObjectImp::construct): Change flags from DontEnum|DontDelete|ReadOnly to
3516         Internal|DontDelete to match FuncDeclNode::processFuncDecl() and
3517         FuncExprNode::evaluate() in kjs/nodes.cpp.
3518
3519 2007-01-27  Geoffrey Garen  <ggaren@apple.com>
3520
3521         Reviewed by Beth Dakin.
3522         
3523         Added some missing JSLocks, which might fix <rdar://problem/4889707>.
3524
3525         We need to lock whenever we might allocate memory because our FastMalloc
3526         implementation requires clients to register their threads, which we do
3527         through JSLock. 
3528         
3529         We also need to lock whenever modifying ref-counts because they're not 
3530         thread-safe.
3531
3532         * API/JSObjectRef.cpp:
3533         (JSClassCreate): Allocates memory
3534         (JSClassRetain): Modifies a ref-count
3535         (JSClassRelease): Modifies a ref-count
3536         (JSPropertyNameArrayRetain): Modifies a ref-count
3537         (JSPropertyNameArrayRelease): Modifies a ref-count
3538         * API/JSStringRef.cpp:
3539         (JSStringRetain): Modifies a ref-count
3540         * API/JSValueRef.cpp:
3541         (JSValueIsInstanceOfConstructor): Might allocate memory if an exception
3542         is thrown.
3543
3544 2007-01-27  Lars Knoll <lars@trolltech.com>
3545
3546         Fix the Qt build.
3547
3548         * bindings/qt/qt_instance.h:
3549
3550 2007-01-25  Geoffrey Garen  <ggaren@apple.com>
3551
3552         Reviewed by Maciej Stachowiak.
3553         
3554         Fixed <rdar://problem/4608404> WebScriptObject's _rootObject lack 
3555         of ownership policy causes crashes (e.g., in Dashcode)
3556         
3557         The old model for RootObject ownership was either to (1) leak them or (2) assign
3558         them to a single owner -- the WebCore::Frame -- which would destroy them 
3559         when it believed that all of its plug-ins had unloaded.
3560         
3561         This model was broken because of (1) and also because plug-ins are not the only 
3562         RootObject clients. All Bindings clients are RootObjects clients, including 
3563         applications, which outlive any particular WebCore::Frame.
3564         
3565         The new model for RootObject ownership is to reference-count them, with a
3566         throw-back to the old model: The WebCore::Frame tracks the RootObjects
3567         it creates, and invalidates them when it believes that all of its plug-ins 
3568         have unloaded.
3569         
3570         We maintain this throw-back to avoid plug-in leaks, particularly from Java.
3571         Java is completely broken when it comes to releasing JavaScript objects. 
3572         Comments in our code allege that Java does not always call finalize when 
3573         collecting objects. Moreoever, my own testing reveals that, when Java does 
3574         notify JavaScript of a finalize, the data it provides is totally bogus.
3575         
3576         This setup is far from ideal, but I don't think we can do better without
3577         completely rewriting the bindings code, and possibly part of the Java
3578         plug-in / VM.
3579         
3580         Layout tests pass. No additional leaks reported. WebCore/manual-tests/*liveconnect*
3581         and a few LiveConnect demos on the web also run without a hitch.
3582         
3583         const RootObject* => RootObject*, since we need to ref/deref
3584         
3585         * bindings/NP_jsobject.cpp:
3586         (jsDeallocate): deref our RootObjects. Also unprotect or JSObject, instead
3587         of just relying on the RootObject to do it for us when it's invalidated.
3588         (_isSafeScript): Check RootObject validity.
3589         (_NPN_CreateScriptObject): ditto
3590         (_NPN_Invoke): ditto
3591         (_NPN_Evaluate): ditto
3592         (_NPN_GetProperty): ditto
3593         (_NPN_SetProperty): ditto
3594         (_NPN_RemoveProperty): ditto
3595         (_NPN_HasProperty): ditto
3596         (_NPN_HasMethod): ditto
3597         (_NPN_SetException): ditto
3598
3599         * bindings/runtime_root.cpp: 
3600         Revived bit-rotted LIAR LIAR LIAR comment.
3601         
3602         LOOK: Added support for invalidating RootObjects without deleting them, 
3603         which is the main goal of this patch. 
3604
3605         Moved protect counting into the RootObject class, to emphasize that 
3606         the RootObject protects the JSObject, and unprotects it upon being invalidated.
3607             addNativeReference => RootObject::gcProtect
3608             removeNativeReference => RootObject::gcUnprotect
3609             ProtectCountSet::contains => RootObject::gcIsProtected
3610             
3611         I know we'll all be sad to see the word "native" go.
3612         
3613         * bindings/runtime_root.h: Added ref-counting support to RootObject, with
3614         all the standard accoutrements.
3615
3616         * bindings/c/c_utility.cpp:
3617         (KJS::Bindings::convertValueToNPVariant): If we can't find a valid RootObject,
3618         return void instead of just leaking.
3619
3620         * bindings/jni/jni_instance.cpp:
3621         (JavaInstance::JavaInstance): Don't take a RootObject in our constructor;
3622         be like other Instances and require the caller to call setRootObject. This
3623         reduces the number of ownership code paths.
3624         (JavaInstance::invokeMethod): Check RootObject for validity.
3625         * bindings/jni/jni_instance.h: Removed private no-arg constructor. Having
3626         an arg constructor accomplishes the same thing.
3627
3628         * bindings/jni/jni_jsobject.cpp:
3629         (JavaJSObject::invoke): No need to call findProtectCountSet, because finalize()
3630         checks for RootObject validity.
3631         (JavaJSObject::JavaJSObject): check RootObject for validity
3632         (JavaJSObject::call): ditto
3633         (JavaJSObject::eval): ditto
3634         (JavaJSObject::getMember): ditto
3635         (JavaJSObject::setMember): ditto
3636         (JavaJSObject::removeMember): ditto
3637         (JavaJSObject::getSlot): ditto
3638         (JavaJSObject::setSlot): ditto
3639         (JavaJSObject::toString): ditto
3640         (JavaJSObject::finalize): ditto
3641         (JavaJSObject::createNative): No need to tell the RootObject to protect 
3642         the global object, since the RootObject already owns the interpreter.
3643
3644         * bindings/jni/jni_runtime.cpp:
3645         (JavaArray::JavaArray): Removed copy construcutor becaue it was unused.
3646         Dead code is dangerous code.
3647
3648         * bindings/objc/objc_runtime.mm: Added WebUndefined protocol. Previous use
3649         of WebScriptObject was bogus, because WebUndefined is not a subclass of
3650         WebScriptObject.
3651         (convertValueToObjcObject): If we can't find a valid RootObject,
3652         return nil instead of just leaking.
3653
3654         * bindings/objc/objc_utility.mm:
3655         (KJS::Bindings::convertValueToObjcValue): If we can't find a valid RootObject,
3656         return nil instead of just leaking.
3657
3658 2007-01-27  Andrew Wellington  <proton@wiretapped.net>
3659
3660         Reviewed by Maciej.
3661         
3662         Fix for Repeated string concatenation results in OOM crash
3663         http://bugs.webkit.org/show_bug.cgi?id=11131
3664
3665         * kjs/operations.cpp:
3666         (KJS::add): Throw exception if string addition result is null
3667         * kjs/ustring.cpp:
3668         (KJS::UString::UString): Don't call memcpy when malloc failed
3669
3670 2007-01-25  Jan Kraemer  <camel@gmx.de>
3671
3672         Reviewed by Maciej
3673
3674         Fix for http://bugs.webkit.org/show_bug.cgi?id=12382
3675
3676         Fix crash on architectures with 32 bit ints and
3677         64 bit longs (For example Linux on AMD64)
3678
3679         * kjs/dtoa.cpp: #define Long int as suggested in comment
3680
3681 2007-01-24  Geoffrey Garen  <ggaren@apple.com>
3682
3683         Fixed up #include order for style. No review necessary.
3684
3685         * API/JSStringRef.cpp:
3686
3687 2007-01-24  Geoffrey Garen  <ggaren@apple.com>
3688
3689         Reviewed by Maciej Stachowiak.
3690
3691         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
3692         Copy JSStringRefCF, in case anybody wants to use it. (I just added
3693         it recently.)
3694
3695 2007-01-24  Maciej Stachowiak  <mjs@apple.com>
3696
3697         Not reviewed, trivial property change.
3698         
3699         * JavaScriptCore.vcproj/JavaScriptCore.sln: remove svn:mime-type
3700         property which made this binary.
3701
3702 2007-01-25  Mark Rowe  <mrowe@apple.com>
3703
3704         Reviewed by Darin.
3705
3706         * Info.plist: Update copyright string.
3707
3708 2007-01-24  Darin Adler  <darin@apple.com>
3709
3710         Reviewed by Mark Rowe.
3711
3712         * JavaScriptCore.xcodeproj/project.pbxproj: Changed to /usr/sbin/sysctl
3713         so we don't rely on people's paths.
3714
3715 2007-01-23  Alice Liu  <alice.liu@apple.com>
3716
3717         release build fix
3718
3719         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
3720         Copy APICasts.h
3721
3722 2007-01-23  Geoffrey Garen  <ggaren@apple.com>
3723
3724         build fix
3725
3726         * API/JSStringRef.h:
3727         * JavaScriptCore.xcodeproj/project.pbxproj:
3728
3729 2007-01-24  Mark Rowe  <mrowe@apple.com>
3730
3731         Build fix for DumpRenderTree.
3732
3733         * JavaScriptCore.xcodeproj/project.pbxproj: Make JSStringRefCF.h public so it's copied into built framework.
3734
3735 2007-01-23  Anders Carlsson  <acarlsson@apple.com>
3736
3737         Reviewed by Darin.
3738
3739         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
3740         Copy APICasts.h
3741
3742 2007-01-23  Geoffrey Garen  <ggaren@apple.com>
3743
3744         Reviewed by Maciej Stachowiak.
3745         
3746         Fixed <rdar://problem/4885131> Move CFString function declarations from 
3747         JSStringRef.h to JSStringRefCF.h
3748         
3749         Also removed remaining API FIXMEs and changed them into Radars.
3750
3751         * API/JSClassRef.cpp:
3752         (OpaqueJSClass::OpaqueJSClass): Added Radar numbers for UTF8 conversion.
3753
3754         * API/JSContextRef.cpp:
3755         (JSGlobalContextCreate): Replaced FIXME for NULL JSContextRef with Radar number.
3756
3757         * API/JSObjectRef.h: Removed FIXME, which is unprofessional in a public header.
3758
3759         * API/JSStringRef.cpp: Moved CF related implementations to JSStringRefCF.cpp.
3760         (JSStringCreateWithUTF8CString): Replaced FIXME with Radar number.
3761         * API/JSStringRef.h: Moved CF related declarations to JSStringRefCF.h. Added
3762         #include of JSStringRefCF.h as a stopgap until clients start #including
3763         it as needed by themselves.
3764
3765         * API/JSStringRefCF.cpp: Added.
3766         (JSStringCreateWithCFString):
3767         (JSStringCopyCFString): Replaced JSChar cast with UniChar cast, which is 
3768         more appropriate for a CF call.
3769         * API/JSStringRefCF.h: Added.
3770         * JavaScriptCore.xcodeproj/project.pbxproj:
3771
3772 2007-01-18  Sanjay Madhav  <sanjay12@gmail.com>
3773
3774         Reviewed by Darin.
3775
3776         Add JavaScriptCore define to help with tracing of when objects are marked.
3777
3778         * kjs/object.cpp:
3779         (KJS::JSObject::mark):
3780
3781 2007-01-18  Simon Hausmann  <hausmann@kde.org>
3782
3783         Reviewed by Zack.
3784
3785         * JavaScriptCore.pro: Remove generated files on make clean.
3786         * pcre/pcre.pri:
3787
3788 2007-01-16  Alexey Proskuryakov  <ap@webkit.org>
3789
3790         Reviewed by Maciej.
3791
3792         http://bugs.webkit.org/show_bug.cgi?id=12268
3793         Give object prototypes their own names
3794
3795         * kjs/lookup.h: Append "Prototype" to ClassName in KJS_IMPLEMENT_PROTOTYPE.
3796
3797 2007-01-16  Geoffrey Garen  <ggaren@apple.com>
3798
3799         Reviewed by Darin Adler.
3800         
3801         Added re-entrency checking to GC allocation and collection. It is an error
3802         to allocate or collect from within a collection. We've had at least one 
3803         case of each bug in the past.
3804         
3805         Added a comment to the API header, explaining that API clients must not
3806         make this mistake, either.
3807         
3808         Layout tests and JS tests pass.
3809
3810         * API/JSObjectRef.h:
3811         * kjs/collector.cpp:
3812         (KJS::GCLock::GCLock):
3813         (KJS::GCLock::~GCLock):
3814         (KJS::Collector::allocate):
3815         (KJS::Collector::collect):
3816
3817 2007-01-14  Mark Rowe  <mrowe@apple.com>
3818
3819         Reviewed by Mitz.
3820
3821         Minor fixes to JavaScript pretty-printing.
3822
3823         * JavaScriptCore.exp:
3824         * kjs/Parser.cpp:
3825         (KJS::Parser::prettyPrint): Return line number and error message if parsing fails.
3826         * kjs/Parser.h:
3827         * kjs/nodes2string.cpp:
3828         (ElementNode::streamTo): Include comma delimiters in array literals.
3829         (PropertyNameNode::streamTo): Quote property names in object literals to handle the case when the property name is not a valid identifier.
3830         * kjs/testkjs.cpp:
3831         (doIt): Print any errors encountered while pretty-printing.
3832
3833 2007-01-12  Anders Carlsson  <acarlsson@apple.com>
3834
3835         Reviewed by Darin.
3836
3837         * wtf/HashTraits.h:
3838         Add hash traits for unsigned long and unsigned long long.
3839
3840 2007-01-12  Geoffrey Garen  <ggaren@apple.com>
3841
3842         RS by Brady Eidson.
3843         
3844         Rolling back in r18786 with leaks fixed, and these renames slightly reworked:
3845
3846         Because they can return 0:
3847         rootObjectForImp => findRootObject (overloaded for JSObject* and Interpreter*)
3848         rootObjectForInterpreter => findRootObject (ditto)
3849         findReferenceSet => findProtectCountSet
3850
3851 2007-01-11  Geoffrey Garen  <ggaren@apple.com>
3852
3853         RS by Brady Eidson.
3854         
3855         Rolling out r18786 because it caused leaks.
3856
3857 2007-01-11  Geoffrey Garen  <ggaren@apple.com>
3858
3859         Reviewed by Anders Carlsson.
3860
3861         Even more cleanup in preparation for fixing <rdar://problem/4608404> 
3862         WebScriptObject's _executionContext lack of ownership policy causes 
3863         crashes (e.g., in Dashcode)
3864         
3865         Layout tests pass.
3866         
3867         Renames:
3868             ReferencesSet | ProtectCounts => ProtectCountSet (because it's a typename for a set of GC protect counts)
3869             ReferencesByRootMap => RootObjectMap (because RootObjectToProtectCountSetMap would have been confusing)
3870             pv => protectedValues
3871             rootObjectForImp => getRootObject (overloaded for JSObject* and Interpreter*)
3872             rootObjectForInterpreter => getRootObject (ditto)
3873             findReferenceSet => getProtectCountSet
3874             imp => jsObject
3875         
3876         (KJS::Bindings::getRootObjectMap): Changed to take advantage of built-in
3877         facility for initializing static variables.
3878
3879         (KJS::Bindings::getProtectCountSet):
3880         (KJS::Bindings::destroyProtectCountSet): Added. Helps encapsulate the fact
3881         that getting a ProtectCountSet entails adding a RootObject to a hash table,
3882         and destroying one entails the reverse.
3883
3884         (KJS::Bindings::getRootObject): Removed spurious NULL check.
3885         
3886         (KJS::Bindings::findReferenceSet): Renamed. Changed to use getRootObject()
3887         instead of iterating on its own.
3888
3889         (KJS::Bindings::addNativeReference): Changed to use an early return instead
3890         of indenting the whole function.
3891         (KJS::Bindings::removeNativeReference): Ditto.
3892
3893 2007-01-11  Geoffrey Garen  <ggaren@apple.com>
3894
3895         Reviewed by Anders Carlsson.
3896
3897         Even more cleanup in preparation for fixing <rdar://problem/4608404> 
3898         WebScriptObject's _executionContext lack of ownership policy causes 
3899         crashes (e.g., in Dashcode)
3900         
3901         Layout tests pass.
3902         
3903         Renames:
3904             findRootObjectForNativeHandleFunction => createRootObject
3905             FindRootObjectForNativeHandleFunctionPtr => CreateRootObjectFunction
3906             
3907         Also removed unnecessary use of "Bindings::" prefix.
3908
3909         * JavaScriptCore.exp:
3910         * bindings/jni/jni_jsobject.cpp:
3911         (JavaJSObject::createNative):
3912         (JavaJSObject::convertValueToJObject):
3913         (JavaJSObject::convertJObjectToValue):
3914         * bindings/runtime_root.cpp:
3915         (KJS::Bindings::RootObject::setCreateRootObject):
3916         * bindings/runtime_root.h:
3917         (KJS::Bindings::RootObject::createRootObject):
3918
3919 2007-01-11  George Staikos  <staikos@kde.org>
3920
3921         Reviewed by Maciej
3922
3923         Appears to be Mac specific right now.
3924
3925         * kjs/config.h:
3926
3927 2007-01-10  Lars Knoll <lars@trolltech.com>
3928
3929         Reviewed by Zack
3930
3931         Use the new functionality in Qt 4.3, to make
3932         the methods closer compliant with the Unicode
3933         spec.
3934
3935         Keep the old code so that it still compiles against
3936         Qt 4.2.
3937
3938         * wtf/unicode/qt4/UnicodeQt4.h:
3939         (WTF::Unicode::toLower):
3940         (WTF::Unicode::toUpper):
3941         (WTF::Unicode::toTitleCase):
3942         (WTF::Unicode::foldCase):
3943         (WTF::Unicode::isFormatChar):
3944         (WTF::Unicode::isPrintableChar):
3945         (WTF::Unicode::isSeparatorSpace):
3946         (WTF::Unicode::isPunct):
3947         (WTF::Unicode::isDigit):
3948         (WTF::Unicode::isLower):
3949         (WTF::Unicode::isUpper):
3950         (WTF::Unicode::digitValue):
3951         (WTF::Unicode::mirroredChar):
3952         (WTF::Unicode::combiningClass):
3953         (WTF::Unicode::decompositionType):
3954         (WTF::Unicode::umemcasecmp):
3955         (WTF::Unicode::direction):
3956         (WTF::Unicode::category):
3957
3958 2007-01-09  Darin Adler  <darin@apple.com>
3959
3960         - update 2007 Apple copyright for the new company name
3961
3962         * kjs/DateMath.cpp:
3963
3964 2007-01-09  Darin Adler  <darin@apple.com>
3965
3966         - fix build
3967
3968         * kjs/string_object.cpp: (KJS::StringProtoFunc::callAsFunction):
3969         Actually compile it this time.
3970
3971 2007-01-09  Darin Adler  <darin@apple.com>
3972
3973         - fix build
3974
3975         * kjs/string_object.cpp: (KJS::StringProtoFunc::callAsFunction):
3976         Change types.
3977
3978 2007-01-09  Darin Adler  <darin@apple.com>
3979
3980         - fix build on platforms where Unicode::UChar is != uint16_t
3981
3982         * kjs/string_object.cpp: (KJS::StringProtoFunc::callAsFunction):
3983         Change types.
3984
3985 2007-01-09  Mitz Pettel  <mitz@webkit.org>
3986
3987         Reviewed by Darin.
3988
3989         - changes for http://bugs.webkit.org/show_bug.cgi?id=11078
3990           Forms Don't Submit (ASP Pages)
3991
3992         * JavaScriptCore.exp:
3993         * kjs/value.cpp:
3994         (KJS::JSValue::toInt32): Folded toInt32Inline into this method, which was its
3995         only caller.
3996         (KJS::JSValue::toUInt32): Added a variant that reports if the conversion has
3997         succeeded.
3998         * kjs/value.h:
3999
4000 2007-01-09  Darin Adler  <darin@apple.com>
4001
4002         Reviewed by Maciej.
4003
4004         - fix http://bugs.webkit.org/show_bug.cgi?id=12174
4005           improve Unicode use (less WTF::Unicode:: prefix, centralized character names)
4006
4007         * wtf/unicode/icu/UnicodeIcu.h: Change parameter and return types
4008         to UChar32 and UChar. Removed unneeded type casts and added some
4009         const to functions that lacked it. Removed WTF::Unicode::memcmp.
4010         (WTF::Unicode::umemcasecmp): Renamed from strcasecmp since this
4011         doesn't work on 0-terminated strings as the str functions do.
4012         * wtf/unicode/qt4/UnicodeQt4.h: Ditto.
4013
4014         - got rid of namespace prefixes from most uses of WTF::Unicode
4015
4016         * kjs/function.cpp:
4017         (KJS::isStrWhiteSpace):
4018         (KJS::escapeStringForPrettyPrinting):
4019         * kjs/lexer.cpp:
4020         (KJS::Lexer::isWhiteSpace):
4021         (KJS::Lexer::isIdentStart):
4022         (KJS::Lexer::isIdentPart):
4023         * kjs/string_object.cpp:
4024         (KJS::StringProtoFunc::callAsFunction):
4025
4026 2007-01-07  David Kilzer  <ddkilzer@webkit.org>
4027
4028         Reviewed by Darin.
4029
4030         - fix http://bugs.webkit.org/show_bug.cgi?id=11917
4031           setlocale() can return null
4032
4033         * kjs/date_object.cpp:
4034         (KJS::DateProtoFunc::callAsFunction): Removed dead code.
4035
4036 2007-01-07  David Carson  <dacarson@gmail.com>
4037
4038         Reviewed by Darin.
4039
4040         - fix http://bugs.webkit.org/show_bug.cgi?id=12100
4041           JNI bindings should be available to non-Mac platforms that have JNI
4042
4043         Change JNI so that it is not wrapped in the PLATFORM(MAC) ifdef, enabling
4044         other platforms who have JNI to use it.
4045
4046         * bindings/jni/jni_instance.h:  
4047           Removed unnecessary include of <CoreFoundation/CoreFoundation.h>
4048         * bindings/jni/jni_utility.cpp:
4049         (KJS::Bindings::setJavaVM):
4050         * bindings/jni/jni_utility.h:
4051           Added new method for clients to set the JavaVM
4052         * bindings/runtime.cpp:
4053         (KJS::Bindings::Instance::createBindingForLanguageInstance):
4054           Changed code to utilize new #if HAVE(JNI)
4055         * kjs/config.h:
4056           Added new #define for JNI, ie HAVE_JNI
4057
4058 2007-01-07  David Carson  <dacarson@gmail.com>
4059
4060         Reviewed by Darin.
4061
4062         Fix http://bugs.webkit.org/show_bug.cgi?id=11431
4063         ARM platform has some byte alignment issues
4064
4065         Fix for NaN being 4 bytes and it must start on a byte boundary
4066         for ARM architectures.
4067
4068         * kjs/fpconst.cpp:
4069         (KJS::):
4070
4071 2007-01-04  David Kilzer  <ddkilzer@webkit.org>
4072
4073         Reviewed by Kevin McCullough.
4074
4075         - fix http://bugs.webkit.org/show_bug.cgi?id=12070
4076           REGRESSION: KJS::getUTCOffset() caches UTC offset but ignores time zone changes
4077
4078         * kjs/DateMath.cpp:
4079         (KJS::getUTCOffset): Don't cache UTC offset.
4080
4081 2007-01-02  Darin Adler  <darin@apple.com>
4082
4083         - minor tweak (hope this doesn't re-break Windows)
4084
4085         * pcre/pcre_compile.c: Removed use of const pcre_uchar const * -- Mitz probably
4086         meant const pcre_uchar *const, but I think we can do without the explicit const here.
4087
4088         * pcre/pcre_internal.h: Re-enabled warning C4114.
4089
4090 2007-01-02  David Kilzer  <ddkilzer@webkit.org>
4091
4092         Reviewed by NOBODY (Windows build fix).
4093
4094         The MSVC compiler requires variables to be declared at the top of the enclosing block in C source.
4095
4096         Disable this warning to prevent MSVC from complaining about the 'const pcre_uchar const *' type:
4097         warning C4114: same type qualifier used more than once
4098
4099         * pcre/pcre_compile.c:
4100         (pcre_compile2): Moved variable declarations to top of their respective enclosing blocks.
4101         * pcre/pcre_internal.h: Added pragma to disable compiler warning.
4102
4103 2007-01-01  Mitz Pettel  <mitz@webkit.org>
4104
4105         Reviewed by Darin.
4106
4107         - fix http://bugs.webkit.org/show_bug.cgi?id=11849
4108           REGRESSION (r18182): Google Calendar is broken (a regular expression containing a null character is not parsed correctly)
4109
4110         Modified pcre_compile() (and the functions that it calls) to work with patterns
4111         containing null characters.
4112
4113         Covered by JavaScriptCore tests ecma_3/RegExp/octal-002.js and ecma_3/RegExp/regress-85721.js
4114
4115         * kjs/regexp.cpp:
4116         (KJS::RegExp::RegExp): Changed to not null-terminate the pattern string and instead
4117         pass its length to pcre_compile.
4118         * pcre/pcre.h:
4119         * pcre/pcre_compile.c:
4120         (check_escape):
4121         (get_ucp):
4122         (is_counted_repeat):
4123         (check_posix_syntax):
4124         (compile_branch):
4125         (compile_regex):
4126         (pcre_compile): Added a parameter specifying the length of the pattern, which
4127         is no longer required to be null-terminated and may contain null characters. 
4128         (pcre_compile2):
4129         * pcre/pcre_internal.h:
4130         * tests/mozilla/expected.html: Updated for the two tests that this patch
4131         fixes. Also updated failing results for ecma_3/RegExp/regress-100199.js
4132         which were not updated after bug 6257 was fixed.
4133
4134 2007-01-01  David Kilzer  <ddkilzer@webkit.org>
4135
4136         Reviewed by Darin.
4137
4138         - fix http://bugs.webkit.org/show_bug.cgi?id=12057
4139           REGRESSION: JavaScript Date Is One Day In The Future in GMT time zone
4140
4141         Because Mac OS X returns geographically and historically accurate time zone information,
4142         converting Jan 02, 1970 12:00:00 AM to local time then subtracting 24 hours did not work
4143         in GMT (London - England) since it was in BST (+0100) all year in 1970[1].  Instead, the
4144         UTC offset is calculated by converting Jan 01, 2000 12:00:00 AM to local time then
4145         subtracting that from the same date in UTC.
4146