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