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