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