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