f910b38871360339f515bc1b4f47dc327186ef3f
[WebKit-https.git] / JavaScriptCore / ChangeLog
1 2006-07-21  Geoffrey Garen  <ggaren@apple.com>
2
3         Reviewed by Darin.
4
5         - Added support for strings that masquerade as undefined. Currently used
6         by WebCore to implement undetectable style.filter.
7         
8         The name is a little long, but it's only used in one line of code, so I
9         thought clarity should win over brevity.
10
11         * JavaScriptCore.exp:
12         * JavaScriptCore.xcodeproj/project.pbxproj:
13         * kjs/object.h:
14         * kjs/string_object.h:
15         (KJS::StringInstanceThatMasqueradesAsUndefined::StringInstanceThatMasqueradesAsUndefined):
16         (KJS::StringInstanceThatMasqueradesAsUndefined::masqueradeAsUndefined):
17         (KJS::StringInstanceThatMasqueradesAsUndefined::toBoolean):
18
19 2006-07-20  Steve Falkenburg  <sfalken@apple.com>
20
21         Fix the build
22
23         * kjs/function.cpp:
24         (KJS::escapeStringForPrettyPrinting):
25
26 2006-07-19  Anders Carlsson  <acarlsson@apple.com>
27
28         Reviewed by Darin.
29
30         <rdar://problem/4620655> REGRESSION(10.4.7-10.5): preview button for a blogger.com post doesn't work
31         
32         * kjs/nodes2string.cpp:
33         (StringNode::streamTo):
34         Return the escaped string.
35         
36         (RegExpNode::streamTo):
37         Use the correct syntax.
38         
39         * kjs/function.cpp:
40         (KJS::escapeStringForPrettyPrinting):
41         * kjs/function.h:
42         Add escape function which escapes a string for pretty-printing so it can be parsed again.
43         
44         * wtf/unicode/icu/UnicodeIcu.h:
45         (WTF::Unicode::isPrintableChar):
46         New function.
47
48 === Safari-521.19 ===
49
50 2006-07-18  Maciej Stachowiak  <mjs@apple.com>
51
52         Reviewed by Adele Peterson.
53         
54         <rdar://problem/4589530> REGRESSION: null character in JS string causes parse error (works in Tiger and in other browsers)
55
56         * kjs/lexer.cpp:
57         (Lexer::shift):
58         (Lexer::lex):
59         (Lexer::record16):
60         (Lexer::scanRegExp):
61         * kjs/lexer.h:
62
63 2006-07-18  Tim Omernick  <timo@apple.com>
64
65         Reviewed by Tim Hatcher.
66
67         Removed a misleading comment; we recently added support for the NPNVPluginElementNPObject
68         variable.
69
70         * bindings/npapi.h:
71
72 === Safari-521.18 ===
73
74 2006-07-18  Timothy Hatcher  <timothy@apple.com>
75
76         Made the following headers public:
77
78         * JavaScriptCore.h
79         * JSBase.h
80         * JSContextRef.h
81         * JSObjectRef.h
82         * JSStringRef.h
83         * JSValueRef.h
84
85         * JavaScriptCore.xcodeproj/project.pbxproj:
86
87 2006-07-17  Geoffrey Garen  <ggaren@apple.com>
88
89         Reviewed by Maciej.
90         
91         - Added automatic prototype creation for classes.
92         
93         A class stores a weak reference to a prototype, which is cleared when
94         the prototype is garbage collected, to avoid a reference cycle.
95         
96         We now have an attributes field in JSClassDefinition, that currently is
97         used only to override automatic prototype creation when you want to manage your
98         own prototypes, but can be extended in the future for other nefarious purposes.
99         
100         Similarly, we have JSObjectMake and JSObjectMakeWithPrototype, the latter
101         allowing you to manage your own prototypes.
102         
103         JSObjectMakeConstructor is more interesting now, able to make a constructor
104         on your behalf if you just give it a class.
105         
106         - Removed bogus old code from minidom.js.
107         
108         - Tweaked the headerdocs.
109         
110         - Added more GC testing, which caught some leaks, and tested more funny 
111         edge cases in lookup, which caught a lookup bug. Removed some testing 
112         we used to do with MyObject because it was redundant with the new, cool 
113         stuff.
114         
115         While fixing the lookup bug I retracted this change:
116         
117             "If a static setProperty callback returns 'false', to indicate that the
118             property was not set, we no longer forward the set request up the class
119             chain, because that's almost certainly not what the programmer expected."
120
121         Returning false when setting a static property is a little silly, but you can see
122         it being useful when shadowing a base class's static properties, and, regardless
123         of usefullness, this is the defined behavior of the setProperty callback.
124         
125         - Plus a little ASCII art, for the kids.
126
127 2006-07-17  Timothy Hatcher  <timothy@apple.com>
128
129         Reviewed by Maciej.
130
131         <rdar://problem/4634874> WebScriptObject and WebUndefined are no longer defined by WebKit
132
133         Moves WebScriptObject and WebUndefined up to WebCore.
134         This change does create an upwards-dependancy on WebScriptObject existing
135         in the loaded process, but this code path in JavaScriptCore does not get used
136         unless it is through WebKit/WebCore. Moving all of the binding code out of
137         JavaScriptCore might make sense in the future.
138
139         * JavaScriptCore.exp:
140         * JavaScriptCore.xcodeproj/project.pbxproj:
141         * bindings/objc/WebScriptObject.h: Replaced.
142         * bindings/objc/WebScriptObject.mm: Removed.
143         * bindings/objc/WebScriptObjectPrivate.h: Removed.
144         * bindings/objc/objc_class.h:
145         * bindings/objc/objc_instance.h:
146         * bindings/objc/objc_instance.mm:
147         (ObjcInstance::~ObjcInstance):
148         * bindings/objc/objc_runtime.h:
149         * bindings/objc/objc_runtime.mm:
150         (convertValueToObjcObject):
151         * bindings/objc/objc_utility.mm:
152         (KJS::Bindings::convertValueToObjcValue):
153         (KJS::Bindings::convertObjcValueToValue):
154         (KJS::Bindings::createObjcInstanceForValue):
155
156 2006-07-17  Darin Adler  <darin@apple.com>
157
158         * API/JSBase.h: Fix comment formatting where things used to be lined up but
159         are now ragged. Got rid of spaces that attempted to line things up.
160         * API/JSObjectRef.h: Ditto. Also add missing periods for a couple of comments.
161
162 2006-07-17  Geoffrey Garen  <ggaren@apple.com>
163
164         Reviewed by Maciej.
165         
166         - Removed the exception parameter from the initialize callback and, by extension,
167         JSObjectMake. We have never had a need for exceptions when iniitializing,
168         so the parameter seemed likely to "get in the way." 
169         
170         Also, an exception in JavaScript is thrown in response to input -- 
171         "invalid URL", "index not a number", etc., so it's the job of the 
172         constructor function, not the initialize method, to throw.
173         
174         If initialize *really* wants to throw, it can communicate the throw to
175         the constructor through the constructed object's private data (e.g., set
176         it to NULL, signaling to the consntructor that initialization failed.)
177         
178         - Added JSObjectMakeWithData, which enables a constructor to set private
179         data on an object *before* it has been initialized. That way, the initialize
180         methods can properly operate on the data. 
181
182         * API/JSNode.c: Moved ref into the initialize method, for better encapsulation,
183         now that it's possible.
184         * API/JSNodeList.c: ditto
185         * API/minidom.c:
186         (main): Do more aggressive garbage collection to test ref/deref and 
187         initialize/finalize.
188         * API/minidom.js: store childNodes in a temporary so it doesn't get re-created
189         like a thousand times. This makes debugging ref/deref easier
190
191 2006-07-17  Geoffrey Garen  <ggaren@apple.com>
192
193         Reviewed by Maciej.
194         
195         - Changed the initialize callback to run from least derived class (parent
196         class) to most derived class. This enables C++ style initialization,
197         and derived class overriding of member data.
198         
199         - Added excpetion propopgation to JSObjectMake, to support initialize
200         exceptions, and generally round out our policy of making function
201         signatures as long as possible.
202
203         * API/JSCallbackObject.h: Use ExecState instead of ContextRef, cuz we're
204         in C++ land now.
205
206 2006-07-17  Geoffrey Garen  <ggaren@apple.com>
207
208         Reviewed by Maciej.
209         
210         - Changed JSObjectMakeConstructor to JSObjectMakeConstructorWithCallback,
211         to match JSObjectMakeFunctionWithCallback.
212         
213         - Added prototype parameter, so the generated constructor
214         automatically works with hasInstance / instanceof
215         
216         - Moved hasInstance implementation from InternalFunctionImp to JSObject
217         so that subclasses can inherit it without inheriting function-related baggage.
218         More refactoring here would be good, but this seems like a good short-term
219         solution.
220
221         (KJS::JSCallbackFunction::implementsHasInstance): override and return false,
222         because callback functions aren't constructors.
223
224 2006-07-17  Maciej Stachowiak  <mjs@apple.com>
225
226         Reviewed by Geoff.
227         
228         - add a JSContextRef parameter to all JSValueRef, JSObjectRef, and JSContextRef operations;
229         except JSObject{Get,Set}PrivateData which can be assumed to be simple pure accessors.
230         
231         Also renamed the parameter "context" to "ctx" because it makes the code read better with this pervasive
232         but usually uninteresting parameter.
233
234         * API/JSBase.cpp:
235         (JSEvaluateScript):
236         (JSCheckScriptSyntax):
237         (JSGarbageCollect):
238         * API/JSBase.h:
239         * API/JSCallbackObject.cpp:
240         (KJS::JSCallbackObject::JSCallbackObject):
241         (KJS::JSCallbackObject::init):
242         (KJS::JSCallbackObject::getOwnPropertySlot):
243         (KJS::JSCallbackObject::put):
244         (KJS::JSCallbackObject::deleteProperty):
245         (KJS::JSCallbackObject::toNumber):
246         (KJS::JSCallbackObject::toString):
247         * API/JSContextRef.cpp:
248         (JSGlobalContextCreate):
249         (JSGlobalContextRetain):
250         (JSGlobalContextRelease):
251         (JSContextGetGlobalObject):
252         * API/JSContextRef.h:
253         * API/JSNode.c:
254         (JSNodePrototype_appendChild):
255         (JSNodePrototype_removeChild):
256         (JSNodePrototype_replaceChild):
257         (JSNode_getNodeType):
258         (JSNode_getFirstChild):
259         (JSNode_prototype):
260         * API/JSNodeList.c:
261         (JSNodeListPrototype_item):
262         (JSNodeList_length):
263         (JSNodeList_getProperty):
264         (JSNodeList_prototype):
265         * API/JSObjectRef.cpp:
266         (JSObjectMake):
267         (JSObjectMakeFunctionWithCallback):
268         (JSObjectMakeConstructor):
269         (JSObjectMakeFunction):
270         (JSObjectGetPrototype):
271         (JSObjectSetPrototype):
272         (JSObjectHasProperty):
273         (JSObjectGetProperty):
274         (JSObjectSetProperty):
275         (JSObjectGetPropertyAtIndex):
276         (JSObjectSetPropertyAtIndex):
277         (JSObjectDeleteProperty):
278         (JSObjectIsFunction):
279         (JSObjectCallAsFunction):
280         (JSObjectIsConstructor):
281         (JSObjectCallAsConstructor):
282         (JSObjectCopyPropertyNames):
283         * API/JSObjectRef.h:
284         * API/JSStringRef.cpp:
285         * API/JSValueRef.cpp:
286         (JSValueGetType):
287         (JSValueIsUndefined):
288         (JSValueIsNull):
289         (JSValueIsBoolean):
290         (JSValueIsNumber):
291         (JSValueIsString):
292         (JSValueIsObject):
293         (JSValueIsObjectOfClass):
294         (JSValueIsEqual):
295         (JSValueIsStrictEqual):
296         (JSValueIsInstanceOfConstructor):
297         (JSValueMakeUndefined):
298         (JSValueMakeNull):
299         (JSValueMakeBoolean):
300         (JSValueMakeNumber):
301         (JSValueMakeString):
302         (JSValueToBoolean):
303         (JSValueToNumber):
304         (JSValueToStringCopy):
305         (JSValueToObject):
306         (JSValueProtect):
307         (JSValueUnprotect):
308         * API/JSValueRef.h:
309         * API/minidom.c:
310         (print):
311         * API/testapi.c:
312         (MyObject_getProperty):
313         (MyObject_deleteProperty):
314         (MyObject_callAsFunction):
315         (MyObject_callAsConstructor):
316         (MyObject_convertToType):
317         (print_callAsFunction):
318         (main):
319
320 2006-07-16  Geoffrey Garen  <ggaren@apple.com>
321
322         Approved by Maciej, RS by Beth.
323         
324         JSObjectMakeFunction -> JSObjectMakeFunctionWithCallback
325         JSObjectMakeFunctionWithBody -> JSObjectMakeFunction
326         
327         because the latter is more common, and more fundamental, than the former.
328
329         * API/APICast.h:
330         (toJS):
331         * API/JSBase.h:
332         * API/JSCallbackObject.cpp:
333         (KJS::JSCallbackObject::getOwnPropertySlot):
334         (KJS::JSCallbackObject::put):
335         (KJS::JSCallbackObject::deleteProperty):
336         (KJS::JSCallbackObject::getPropertyNames):
337         (KJS::JSCallbackObject::staticValueGetter):
338         (KJS::JSCallbackObject::staticFunctionGetter):
339         * API/JSClassRef.cpp:
340         (OpaqueJSClass::OpaqueJSClass):
341         (OpaqueJSClass::~OpaqueJSClass):
342         * API/JSClassRef.h:
343         * API/JSObjectRef.cpp:
344         (JSClassCreate):
345         (JSObjectMakeFunctionWithCallback):
346         (JSObjectMakeFunction):
347         (OpaqueJSPropertyNameArray::OpaqueJSPropertyNameArray):
348         (JSObjectCopyPropertyNames):
349         * API/JSObjectRef.h:
350         * API/minidom.c:
351         (main):
352         * API/testapi.c:
353         (main):
354         * ChangeLog:
355         * JavaScriptCore.exp:
356
357 2006-07-16  Geoffrey Garen  <ggaren@apple.com>
358
359         Laughed at by Beth.
360         
361         Replace __JS with OpaqueJS because the former, while used by CF, is
362         a prefix that's triply-reserved by the compiler. (_* is reserved in global 
363         names, _[A-Z] is reserved in all names, and __ is reserved in all names 
364         in C++.)
365         
366         Opaque is an alternative used by other Mac OS X framewokrs.
367
368         * API/APICast.h:
369         (toJS):
370         * API/JSBase.h:
371         * API/JSCallbackObject.cpp:
372         (KJS::JSCallbackObject::getOwnPropertySlot):
373         (KJS::JSCallbackObject::put):
374         (KJS::JSCallbackObject::deleteProperty):
375         (KJS::JSCallbackObject::getPropertyNames):
376         (KJS::JSCallbackObject::staticValueGetter):
377         (KJS::JSCallbackObject::staticFunctionGetter):
378         * API/JSClassRef.cpp:
379         (OpaqueJSClass::OpaqueJSClass):
380         (OpaqueJSClass::~OpaqueJSClass):
381         * API/JSClassRef.h:
382         * API/JSObjectRef.cpp:
383         (JSClassCreate):
384         (OpaqueJSPropertyNameArray::OpaqueJSPropertyNameArray):
385         (JSObjectCopyPropertyNames):
386
387 2006-07-16  Darin Adler  <darin@apple.com>
388
389         - try to fix Windows build
390
391         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
392         Added some recently added files, removed some recently removed.
393
394 2006-07-16  Geoffrey Garen  <ggaren@apple.com>
395
396         Reviewed by Maciej.
397         
398         - Change getProperty* to return undefined, rather than NULL, for missing
399         properties, since that's what the spec says. Also added exception out
400         parameters to the *Index functions, because they can call through to the
401         regular functions, which can throw for custom objects.
402
403         * API/JSObjectRef.cpp:
404         (JSObjectGetProperty):
405         (JSObjectGetPropertyAtIndex):
406         (JSObjectSetPropertyAtIndex):
407         * API/JSObjectRef.h:
408         * API/testapi.c:
409         (main):
410
411 2006-07-16  Geoffrey Garen  <ggaren@apple.com>
412
413         Reviewed by Maciej.
414         
415         - Properly document and handle NULL callbacks for static properties. We
416         throw an exception in any case other than a ReadOnly property with a NULL
417         setProperty callback, because a NULL callback almost certainly indicates 
418         a programming error. Also throw an exception if hasProperty returns true
419         for a property that getProperty can't get.
420         
421         - If a static setProperty callback returns 'false', to indicate that the
422         property was not set, we no longer forward the set request up the class
423         chain, because that's almost certainly not what the programmer expected.
424
425         * API/JSCallbackObject.cpp:
426         (KJS::JSCallbackObject::getOwnPropertySlot):
427         (KJS::JSCallbackObject::put):
428         (KJS::JSCallbackObject::staticValueGetter):
429         (KJS::JSCallbackObject::staticFunctionGetter):
430         (KJS::JSCallbackObject::callbackGetter):
431         * API/JSObjectRef.h:
432         * API/minidom.js:
433         * API/testapi.c:
434         (MyObject_hasProperty):
435         * API/testapi.js:
436
437 2006-07-16  Geoffrey Garen  <ggaren@apple.com>
438
439         Reviewed by Maciej.
440         
441         - Added names to functions.
442         
443         - Removed GetPrivate/SetPrivate from callbackFunctions and callbackConstructors.
444         The private data idiom is that a JS object stores its native implementation
445         as private data. For functions and constructors, the native implementation is nothing
446         more than the callback they already store, so supporting private data, too,
447         confuses the idiom. If you *really* want, you can still create a custom 
448         function with private data.
449
450         * API/JSCallbackConstructor.cpp:
451         * API/JSCallbackConstructor.h:
452         * API/JSCallbackFunction.cpp:
453         (KJS::JSCallbackFunction::JSCallbackFunction):
454         * API/JSCallbackFunction.h:
455         * API/JSCallbackObject.cpp:
456         (KJS::JSCallbackObject::staticFunctionGetter):
457         * API/JSObjectRef.cpp:
458         (JSObjectMakeFunction):
459         (JSObjectMakeFunctionWithBody):
460         (JSObjectGetPrivate):
461         (JSObjectSetPrivate):
462         * API/JSObjectRef.h:
463         * API/minidom.c:
464         (main):
465         * API/testapi.c:
466         (main):
467
468 2006-07-15  Maciej Stachowiak  <mjs@apple.com>
469
470         Reviewed by Darin.
471         
472         - switch property lists to be vector+set of Identifiers instead of list of References
473         
474         This has the following benefits:
475         
476         - no duplicates in property lists
477         - simplifies API calls
478         - probably more efficient, since linked list is gone
479         - entirely removed Reference, ReferenceList and ProtectedReference types from the API
480
481         * kjs/PropertyNameArray.cpp: Added.
482         (KJS::PropertyNameArray::add): Check set, if not already there, add to
483         vector.
484         * kjs/PropertyNameArray.h: Added.
485         (KJS::PropertyNameArray::PropertyNameArray): Newly added type, combines
486         a set and a vector to make a unique but ordered list of identifiers.
487         (KJS::PropertyNameArray::begin): ditto
488         (KJS::PropertyNameArray::end): ditto
489         (KJS::PropertyNameArray::size): ditto
490         (KJS::PropertyNameArray::operator[]): ditto
491         * kjs/array_instance.h:
492         * kjs/array_object.cpp:
493         (ArrayInstance::getPropertyNames): renamed from getPropertyList, updated
494         for PropertyNameArray
495         (ArrayInstance::setLength): updated for PropertyNameArray
496         (ArrayInstance::pushUndefinedObjectsToEnd): ditto
497         * kjs/nodes.cpp:
498         (ForInNode::execute): updated for PropertyNameArray
499         * kjs/nodes.h:
500         * kjs/object.cpp:
501         (KJS::JSObject::getPropertyNames): renamed from getPropertyList, updated
502         for PropertyNameArray
503         * kjs/object.h:
504         * kjs/property_map.cpp:
505         (KJS::PropertyMap::getEnumerablePropertyNames): updated for PropertyNameArray
506         (KJS::PropertyMap::getSparseArrayPropertyNames): ditto
507         * kjs/property_map.h:
508         * kjs/protected_reference.h: Removed.
509         * kjs/reference.cpp: Removed.
510         * kjs/reference.h: Removed.
511         * kjs/reference_list.cpp: Removed.
512         * kjs/reference_list.h: Removed.
513         * kjs/scope_chain.cpp:
514         (KJS::ScopeChain::print): Use PropertyNamesArray instead of ReferenceList.
515         * kjs/string_object.cpp:
516         (StringInstance::getPropertyNames): Updated for new approach.
517         * kjs/string_object.h:
518         * kjs/ustring.h:
519         * API/APICast.h:
520         (toJS): Added overload for PropertyNameAccumulatorRef / PropertyNameArray*
521         (toRef): ditto
522         * API/JSBase.h:
523         * API/JSCallbackObject.cpp:
524         (KJS::JSCallbackObject::getPropertyNames): Fixed for new API.
525         * API/JSCallbackObject.h:
526         * API/JSObjectRef.cpp:
527         (__JSPropertyNameArray::__JSPropertyNameArray): Type used for a publicly vended
528         JSPropertyNameArrayRef.
529         (JSObjectCopyPropertyNames): New API call - renamed / refactored from 
530         JSObjectCreatePropertyList
531         (JSPropertyNameArrayRetain): new retain call for JSPropertyNameArray.
532         (JSPropertyNameArrayRelease): new release call for - " -.
533         (JSPropertyNameArrayGetCount): Instead of having to use a stateful enumerator you
534         can now get the count and items in any order.
535         (JSPropertyNameArrayGetNameAtIndex): See above.
536         (JSPropertyNameAccumulatorAddName): What you add properties to is now an opaque 
537         accumulator object.
538         * API/JSObjectRef.h: Prototyped new functions, removed old ones
539         * JavaScriptCore.exp: Updated exported symbols.
540         * JavaScriptCore.xcodeproj/project.pbxproj: Added new files, removed old.
541         * API/testapi.c:
542         (MyObject_getPropertyNames): Renamed / fixed callback to fit new paradigm.
543         (main): Updated for new API.
544
545 2006-07-15  Darin Adler  <darin@apple.com>
546
547         - oops, missed a few more arrays that had to be const
548
549         * API/JSNode.c:
550         (JSNodePrototype_appendChild): Added const.
551         (JSNodePrototype_removeChild): Ditto.
552         (JSNodePrototype_replaceChild): Ditto.
553         (JSNode_construct): Ditto.
554         * API/JSNodeList.c:
555         (JSNodeListPrototype_item): Ditto.
556         * API/JSObjectRef.cpp:
557         (JSObjectMakeFunctionWithBody): Ditto.
558         (JSObjectCallAsFunction): Ditto.
559         (JSObjectCallAsConstructor): Ditto.
560         * API/minidom.c:
561         (print): Ditto.
562         * API/testapi.c:
563         (MyObject_callAsFunction): Ditto.
564         (MyObject_callAsConstructor): Ditto.
565         (print_callAsFunction): Ditto.
566         (myConstructor_callAsConstructor): Ditto.
567
568 2006-07-15  Darin Adler  <darin@apple.com>
569
570         Reviewed by Maciej.
571
572         * API/JSNode.h: Made an array parameter const.
573         * API/JSObjectRef.h: Made array parameters const. Fixed a comment.
574
575 2006-07-15  Geoffrey Garen  <ggaren@apple.com>
576
577         Reviewed by Maciej.
578         
579         - JSObjectMakeFunctionWithBody includes a function name and named parameters now.
580
581         * API/JSObjectRef.cpp:
582         (JSObjectMakeFunctionWithBody):
583         * API/JSObjectRef.h:
584         * API/testapi.c:
585         (assertEqualsAsUTF8String): More informative failure reporting.
586         (main): Test more function cases.
587
588 2006-07-15  Geoffrey Garen  <ggaren@apple.com>
589
590         Reviewed by Maciej.
591
592         - Moved the arguments passed to JSClassCreate into a single structure,
593         called JSClassDefinition. This will enable easier structure 
594         migration/versioning in the future, if necessary.
595         
596         - Added support for class names.
597         
598         - kJSClassDefinitionNull replaces kJSObjectCallbacksNone.
599         
600         - JSClass is becoming a fairly complex struct, so I migrated all of its
601         implementation other than reference counting to the sruct.
602         
603         - Also moved JSClass* functions in the API to JSObjectRef.cpp, since they're
604         declared in JSObjectRef.h
605         
606         - Also added some more informative explanation to the class structure doc.
607         
608 2006-07-15  Darin Adler  <darin@apple.com>
609
610         Reviewed by Geoff.
611
612         - fix http://bugzilla.opendarwin.org/show_bug.cgi?id=8395
613           <rdar://problem/4613467>
614           REGRESSION: RegEx seems broken for hex escaped non breaking space
615
616         Test: fast/js/regexp-extended-characters-more.html
617
618         * pcre/pcre_exec.c:
619         (match): Got rid of utf16Length local variable to guarantee there's no
620         extra stack usage in recursive calls. Fixed two places in the PCRE_UTF16
621         code that were using the length variable, which is the UTF-8 length of
622         a character in the pattern, to move in the UTF-16 subject string. Instead
623         they hardcode lengths of 1 and 2 since the code already handles BMP
624         characters and surrogate pairs separately. Also fixed some DPRINTF so
625         I could compile with DEBUG on.
626         (pcre_exec): Changed a place that was checking for multibyte characters
627         in the subject string to use ISMIDCHAR. Instead it was using hardcoded
628         logic that was right for UTF-8 but wrong for UTF-16.
629
630         * pcre/pcre_compile.c: (pcre_compile2): Fixed a DPRINTF so I could compile
631         with DEBUG on.
632
633 2006-07-14  Geoffrey Garen  <ggaren@apple.com>
634
635         RS by Maciej.
636         
637         Global replace in the API of argc/argv with argumentCount/arguments.
638
639 2006-07-14  Geoffrey Garen  <ggaren@apple.com>
640
641         Reviewed by Maciej.
642         
643         - Finalized exception handling in the API.
644         
645         setProperty can throw because it throws for built-in arrays. getProperty
646         and deleteProperty can throw because setProperty can throw and we want
647         to be consistent, and also because they seem like "actions." callAsFunction,
648         callAsConstructor, and hasInstance can throw, because they caan throw for
649         all built-ins.
650         
651         toBoolean can't throw because it's defined that way in the spec.
652         
653         - Documented that toBoolean and toObject can't be overridden by custom 
654         objects because they're defined that way in the spec.
655
656 === Safari-521.17 ===
657
658 2006-07-14  Geoffrey Garen  <ggaren@apple.com>
659
660         Reviewed by Maciej.
661         
662         - Implemented ref-counting of JSContexts by splitting into two datatypes:
663         JSGlobalContext, which you can create/retain/release, and JSContext, which
664         you can't.
665         
666         Internally, you retain a JSGlobalContext/ExecState by retaining its
667         interpreter, which, in the case of a global ExecState, owns it.
668         
669         - Also made ~Interpreter() protected to catch places where Interpreter
670         is manually deleted. (Can't make it private because some crazy fool
671         decided it would be a good idea to subclass Interpreter in other frameworks.
672         I pity da fool.)
673
674         * API/APICast.h: 
675         (toJS): Added cast for new JSGlobalContext
676         * API/JSStringRef.h: Changed vague "you must" language to more specific
677         (but, ultimately, equally vague) "behavior is undefined if you don't" 
678         language.
679         (KJS::Interpreter::Interpreter): Factored more common initialization into
680         init()
681         * kjs/interpreter.h:
682         (KJS::Interpreter::ref): new
683         (KJS::Interpreter::deref): new
684         (KJS::Interpreter::refCount): new
685         * kjs/testkjs.cpp: 
686         (doIt): Ref-count the interpreter.
687
688 2006-07-14  Maciej Stachowiak  <mjs@apple.com>
689
690         Reviewed by Geoff.
691         
692         - removed bool return value from JSObjectSetProperty, since it is inefficient and
693         also doesn't work quite right
694         - added JSObjectGetPropertyAtIndex and JSObjectSetPropertyAtIndex
695
696         * API/JSObjectRef.cpp:
697         (JSObjectSetProperty): Removed return value and canPut stuff.
698         (JSObjectGetPropertyAtIndex): Added.
699         (JSObjectSetPropertyAtIndex): Added.
700         * API/JSObjectRef.h: Prototyped and documented new functions.
701
702 2006-07-14  Geoffrey Garen  <ggaren@apple.com>
703
704         Reviewed by Beth.
705         
706         Moved JSCheckScriptSyntax, JSEvaluateScript, and JSGarbageCollect into
707         JSBase.h/.cpp. They don't belong in the value-specific or context-specific 
708         files because they're not part of the value or context implementations.
709
710         * API/JSBase.h:
711         * API/JSContextRef.cpp:
712         (JSContextGetGlobalObject):
713         * API/JSContextRef.h:
714         * API/JSValueRef.cpp:
715         (JSValueUnprotect):
716         * API/JSValueRef.h:
717         * JavaScriptCore.xcodeproj/project.pbxproj:
718
719 2006-07-13  Timothy Hatcher  <timothy@apple.com>
720
721         Reviewed by Maciej.
722
723         Moved JavaScriptCore to be a public framework.
724
725         * JavaScriptCore.xcodeproj/project.pbxproj:
726
727 2006-07-13  Mark Rowe  <opendarwin.org@bdash.net.nz>
728
729         Reviewed by Geoffrey.
730
731         http://bugzilla.opendarwin.org/show_bug.cgi?id=9742
732         Bug 9742: REGRESSION: WebKit hangs when loading <http://www.vtbook.com>
733
734         * kjs/value.h:
735         (KJS::JSValue::getUInt32): Only types tagged as numeric can be converted to UInt32.
736
737 2006-07-13  Geoffrey Garen  <ggaren@apple.com>
738
739         Pleasing to Maciej.
740         
741         - Renamed JSEvaluate -> JSEvaluateScript, JSCheckSyntax -> JSCheckScriptSyntax
742         - Added exception out parameters to JSValueTo* and JSValueIsEqual because
743         they can throw
744         - Removed JSObjectGetDescription because it's useless and vague, and 
745         JSValueToString/JSValueIsObjectOfClass do a better job, anyway
746         - Clarified comments about "IsFunction/Constructor" to indicate that they
747         are true of all functions/constructors, not just those created by JSObjectMake*
748
749 2006-07-12  Geoffrey Garen  <ggaren@apple.com>
750
751         RS by Beth.
752         
753         Finished previously approved JSInternalString -> JSString conversion 
754         by renaming the files.
755
756         * API/JSCallbackObject.cpp:
757         * API/JSInternalStringRef.cpp: Removed.
758         * API/JSInternalStringRef.h: Removed.
759         * API/JSStringRef.cpp: Added.
760         * API/JSStringRef.h: Added.
761         * API/JavaScriptCore.h:
762         * JavaScriptCore.xcodeproj/project.pbxproj:
763
764 2006-07-12  Geoffrey Garen  <ggaren@apple.com>
765
766         Reviewed by Maciej.
767         
768         - Removed context and exception parameters from JSObjectGetPropertyEnumerator,
769         removing the spurious use of ExecState inside JavaScriptCore that made
770         us think this was necessary in the first place.
771
772         (StringInstance::getPropertyList): Use getString instead of toString because
773         we know we're dealing with a string -- we put it there in the first place.
774         While we're at it, store the string's size instead of retrieving it each time 
775         through the loop, to avoid the unnecessary killing of puppies.
776         * kjs/string_object.h:
777
778 2006-07-12  Maciej Stachowiak  <mjs@apple.com>
779
780         Reviewed by Geoff.
781         
782         - add handling of hasInstance callback for API objects
783
784         * API/JSCallbackObject.cpp:
785         (KJS::JSCallbackObject::implementsHasInstance): Check if callback is present.
786         (KJS::JSCallbackObject::hasInstance): Invoke appropriate callback.
787         * API/JSCallbackObject.h:
788         * API/JSClassRef.cpp:
789         * API/JSObjectRef.h:
790         * API/testapi.c:
791         (MyObject_hasInstance): Test case; should match what construct would do.
792         * API/testapi.js:
793
794 2006-07-11  Geoffrey Garen  <ggaren@apple.com>
795
796         Reviewed by Maciej.
797         
798         - Implemented a vast number of renames and comment clarifications 
799         suggested during API review.
800         
801         JSInternalString -> JSString
802         JS*Make -> JSValueMake*, JSObjectMake*
803         JSTypeCode -> JSType
804         JSValueIsInstanceOf -> JSValueIsInstanceOfConstructor (reads strangely well in client code)
805         JSGC*Protect -> JSValue*Protect
806         JS*Callback -> JSObject*Callback
807         JSGetPropertyListCallback -> JSObjectAddPropertiesToListCallback
808         JSPropertyEnumeratorGetNext -> JSPropertyEnumeratorGetNextName
809         JSString* -> 
810             JSStringCreateWithUTF8CString, JSStringGetUTF8CString,
811             JSStringGetMaximumUTF8CStringSize JSStringIsEqualToUTF8CString, 
812             JSStringCreateWithCFString, JSStringCopyCFString, JSStringCreateWithCharacters.
813         
814         - Changed functions taking a JSValue out arg and returning a bool indicating
815         whether it was set to simply return a JSValue or NULL.
816         
817         - Removed JSStringGetCharacters because it's more documentation than code,
818         and it's just a glorified memcpy built on existing API functionality.
819         
820         - Moved standard library includes into the headers that actually require them.
821         
822         - Standardized use of the phrase "Create Rule."
823         
824         - Removed JSLock from make functions that don't allocate.
825         
826         - Added exception handling to JSValueToBoolean, since we now allow
827         callback objects to throw exceptions upon converting to boolean.
828         
829         - Renamed JSGCCollect to JSGarbageCollect.
830
831 2006-07-10  Geoffrey Garen  <ggaren@apple.com>
832
833         Reviewed by Darin.
834         
835         - Changed public header includes to the <JavaScriptCore/ style.
836         - Changed instances of 'buffer' to 'string' since we decided on
837         JSInternalString instead of JSStringBuffer.
838
839         * API/JSContextRef.h:
840         * API/JSInternalStringRef.cpp:
841         (JSStringMake):
842         (JSInternalStringRetain):
843         (JSInternalStringRelease):
844         (JSValueCopyStringValue):
845         (JSInternalStringGetLength):
846         (JSInternalStringGetCharactersPtr):
847         (JSInternalStringGetCharacters):
848         (JSInternalStringGetMaxLengthUTF8):
849         (JSInternalStringGetCharactersUTF8):
850         (CFStringCreateWithJSInternalString):
851         * API/JSInternalStringRef.h:
852         * API/JSNode.c:
853         (JSNodePrototype_appendChild):
854         (JSNode_getNodeType):
855         * API/JSObjectRef.cpp:
856         (JSObjectCallAsConstructor):
857         * API/JSValueRef.h:
858         * API/JavaScriptCore.h:
859         * API/minidom.c:
860         (main):
861         (print):
862         * API/testapi.c:
863         (MyObject_getPropertyList):
864         (myConstructor_callAsConstructor):
865         (main): I noticed that we were prematurely releasing some string buffers,
866         so I moved their release calls to the end of main(). I got rid of 'Buf' in *Buf
867         (sometimes changing to 'IString', when necessary to differentiate a variable) 
868         to match the buffer->string change.
869
870 === Safari-521.16 ===
871
872 2006-07-10  Darin Adler  <darin@apple.com>
873
874         * kjs/value.cpp: (KJS::JSValue::toInt32Inline): Added inline keyword one more place.
875         Just in case.
876
877 2006-07-10  Darin Adler  <darin@apple.com>
878
879         - fix the release build
880
881         * kjs/value.h:
882         * kjs/value.cpp:
883         (KJS::JSValue::toInt32Inline): Move the code here to an inline.
884         (KJS::JSValue::toInt32): Call the inline from both overloaded toInt32 functions.
885
886 2006-07-10  David Kilzer  <ddkilzer@kilzer.net>
887
888         Reviewed by Darin.
889
890         - fix http://bugzilla.opendarwin.org/show_bug.cgi?id=9179
891           Implement select.options.add() method
892
893         * JavaScriptCore.exp: Added overloaded KJS::JSValue::toInt32() method.
894         * JavaScriptCore.xcodeproj/project.pbxproj: Altered attributes metadata for
895         kjs/value.h to make it available as a forwarded header.
896         * kjs/lookup.h:
897         (KJS::lookupPut): Extracted a lookupPut() method from the existing lookupPut() method.
898         The new method returns a boolean value if no entry is found in the lookup table.
899         * kjs/value.cpp:
900         (KJS::JSValue::toInt32): Overloaded toInt32() method with boolean "Ok" argument.
901         * kjs/value.h: Ditto.
902
903 2006-07-10  Geoffrey Garen  <ggaren@apple.com>
904
905         No review necessary. Removed bogus file I accidentally checked in before.
906
907         * API/JSInternalSringRef.h: Removed.
908
909 2006-07-10  Geoffrey Garen  <ggaren@apple.com>
910
911         Reviewed by Darin.
912         
913         Added exception out parameter to API object callbacks, removed semi-bogus
914         JSContext(.*)Exception functions.
915         
916         To make these calls syntactically simple, I added an exceptionSlot()
917         method to the ExecState class, which provides a JSValue** slot in which to 
918         store a JSValue* exception.
919
920         * API/APICast.h:
921         (toRef):
922         * API/JSCallbackConstructor.cpp:
923         (KJS::JSCallbackConstructor::construct):
924         * API/JSCallbackFunction.cpp:
925         (KJS::JSCallbackFunction::callAsFunction):
926         * API/JSCallbackObject.cpp:
927         (KJS::JSCallbackObject::init):
928         (KJS::JSCallbackObject::getOwnPropertySlot):
929         (KJS::JSCallbackObject::put):
930         (KJS::JSCallbackObject::deleteProperty):
931         (KJS::JSCallbackObject::construct):
932         (KJS::JSCallbackObject::callAsFunction):
933         (KJS::JSCallbackObject::getPropertyList):
934         (KJS::JSCallbackObject::toBoolean):
935         (KJS::JSCallbackObject::toNumber):
936         (KJS::JSCallbackObject::toString):
937         (KJS::JSCallbackObject::staticValueGetter):
938         (KJS::JSCallbackObject::callbackGetter):
939         * API/JSContextRef.cpp:
940         (JSCheckSyntax):
941         * API/JSContextRef.h:
942         * API/JSNode.c:
943         (JSNodePrototype_appendChild):
944         (JSNodePrototype_removeChild):
945         (JSNodePrototype_replaceChild):
946         (JSNode_getNodeType):
947         (JSNode_getChildNodes):
948         (JSNode_getFirstChild):
949         (JSNode_construct):
950         * API/JSNode.h:
951         * API/JSNodeList.c:
952         (JSNodeListPrototype_item):
953         (JSNodeList_length):
954         (JSNodeList_getProperty):
955         * API/JSObjectRef.h:
956         * API/minidom.c:
957         (print):
958         * API/testapi.c:
959         (MyObject_initialize):
960         (MyObject_hasProperty):
961         (MyObject_getProperty):
962         (MyObject_setProperty):
963         (MyObject_deleteProperty):
964         (MyObject_getPropertyList):
965         (MyObject_callAsFunction):
966         (MyObject_callAsConstructor):
967         (MyObject_convertToType):
968         (print_callAsFunction):
969         (myConstructor_callAsConstructor):
970         (main):
971         * JavaScriptCore.exp:
972         * kjs/ExecState.h:
973         (KJS::ExecState::exceptionHandle):
974
975 2006-07-10  Geoffrey Garen  <ggaren@apple.com>
976
977         Reviewed by Darin.
978
979         Improved type safety by implementing opaque JSValue/JSObject typing through 
980         abuse of 'const', not void*. Also fixed an alarming number of bugs
981         exposed by this new type safety.
982         
983         I made one design change in JavaScriptCore, which is that the JSObject
984         constructor should take a JSValue* as its prototype argument, not a JSObject*,
985         since we allow the prototype to be any JSValue*, including jsNull(), for
986         example.
987         
988         * API/APICast.h:
989         (toJS):
990         * API/JSBase.h:
991         * API/JSCallbackConstructor.cpp:
992         (KJS::JSCallbackConstructor::construct):
993         * API/JSCallbackFunction.cpp:
994         (KJS::JSCallbackFunction::callAsFunction):
995         * API/JSCallbackObject.cpp:
996         (KJS::JSCallbackObject::JSCallbackObject):
997         (KJS::JSCallbackObject::getOwnPropertySlot):
998         (KJS::JSCallbackObject::put):
999         (KJS::JSCallbackObject::construct):
1000         (KJS::JSCallbackObject::callAsFunction):
1001         (KJS::JSCallbackObject::staticFunctionGetter):
1002         * API/JSCallbackObject.h:
1003         * API/JSContextRef.cpp:
1004         (JSEvaluate):
1005         * API/JSNode.c:
1006         (JSNodePrototype_appendChild):
1007         (JSNodePrototype_removeChild):
1008         (JSNodePrototype_replaceChild):
1009         * API/JSObjectRef.cpp:
1010         (JSObjectMake):
1011         (JSFunctionMakeWithBody):
1012         (JSObjectGetProperty):
1013         (JSObjectCallAsFunction):
1014         (JSObjectCallAsConstructor):
1015         * API/JSObjectRef.h:
1016         * API/testapi.c:
1017         (main):
1018         * ChangeLog:
1019         * kjs/object.h:
1020         (KJS::JSObject::JSObject):
1021
1022 2006-07-10  Geoffrey Garen  <ggaren@apple.com>
1023
1024         Approved by Maciej, Darin.
1025         
1026         Renamed JSStringBufferRef to JSInternalStringRef. "Internal string" means the 
1027         JavaScript engine's internal string representation, which is the most 
1028         low-level and efficient representation to use when interfacing with JavaScript.
1029
1030         * API/APICast.h:
1031         (toJS):
1032         (toRef):
1033         * API/JSBase.h:
1034         * API/JSCallbackObject.cpp:
1035         (KJS::JSCallbackObject::getOwnPropertySlot):
1036         (KJS::JSCallbackObject::put):
1037         (KJS::JSCallbackObject::deleteProperty):
1038         (KJS::JSCallbackObject::staticValueGetter):
1039         (KJS::JSCallbackObject::callbackGetter):
1040         * API/JSContextRef.cpp:
1041         (JSEvaluate):
1042         (JSCheckSyntax):
1043         * API/JSContextRef.h:
1044         * API/JSInternalStringRef.cpp: Added.
1045         (JSStringMake):
1046         (JSInternalStringCreate):
1047         (JSInternalStringCreateUTF8):
1048         (JSInternalStringRetain):
1049         (JSInternalStringRelease):
1050         (JSValueCopyStringValue):
1051         (JSInternalStringGetLength):
1052         (JSInternalStringGetCharactersPtr):
1053         (JSInternalStringGetCharacters):
1054         (JSInternalStringGetMaxLengthUTF8):
1055         (JSInternalStringGetCharactersUTF8):
1056         (JSInternalStringIsEqual):
1057         (JSInternalStringIsEqualUTF8):
1058         (JSInternalStringCreateCF):
1059         (CFStringCreateWithJSInternalString):
1060         * API/JSInternalStringRef.h: Added.
1061         * API/JSNode.c:
1062         (JSNodePrototype_appendChild):
1063         (JSNode_getNodeType):
1064         (JSNode_getChildNodes):
1065         (JSNode_getFirstChild):
1066         * API/JSNodeList.c:
1067         (JSNodeList_length):
1068         (JSNodeList_getProperty):
1069         * API/JSObjectRef.cpp:
1070         (JSFunctionMakeWithBody):
1071         (JSObjectGetDescription):
1072         (JSObjectHasProperty):
1073         (JSObjectGetProperty):
1074         (JSObjectSetProperty):
1075         (JSObjectDeleteProperty):
1076         (JSPropertyEnumeratorGetNext):
1077         (JSPropertyListAdd):
1078         * API/JSObjectRef.h:
1079         * API/JSStringBufferRef.cpp: Removed.
1080         * API/JSStringBufferRef.h: Removed.
1081         * API/JSValueRef.h:
1082         * API/JavaScriptCore.h:
1083         * API/minidom.c:
1084         (main):
1085         (print):
1086         * API/testapi.c:
1087         (assertEqualsAsUTF8String):
1088         (assertEqualsAsCharactersPtr):
1089         (assertEqualsAsCharacters):
1090         (MyObject_hasProperty):
1091         (MyObject_getProperty):
1092         (MyObject_setProperty):
1093         (MyObject_deleteProperty):
1094         (MyObject_getPropertyList):
1095         (print_callAsFunction):
1096         (myConstructor_callAsConstructor):
1097         (main):
1098         * JavaScriptCore.exp:
1099         * JavaScriptCore.xcodeproj/project.pbxproj:
1100
1101 2006-07-08  Tim Omernick  <timo@apple.com>
1102
1103         Reviewed by Maciej.
1104
1105         Added an OpenGL drawing model to the Netscape Plug-in API.
1106
1107         * bindings/npapi.h:
1108
1109 2006-07-08  Timothy Hatcher  <timothy@apple.com>
1110
1111         Reviewed by Maciej.
1112
1113         Moved KJS_GetCreatedJavaVMs to jni_utility.cpp.
1114         Switched KJS_GetCreatedJavaVMs over to use dlopen and dlsym
1115         now that NSAddImage, NSLookupSymbolInImage and NSAddressOfSymbol
1116         are deprecated in Leopard.
1117
1118         * JavaScriptCore.exp:
1119         * JavaScriptCore.xcodeproj/project.pbxproj:
1120         * bindings/jni/jni_utility.cpp:
1121         (KJS::Bindings::KJS_GetCreatedJavaVMs):
1122         * bindings/softlinking.c: Removed.
1123         * bindings/softlinking.h: Removed.
1124
1125 2006-07-08  Geoffrey Garen  <ggaren@apple.com>
1126
1127         Reviewed by Anders.
1128         
1129         - Make JSObjectGetProperty return a JSValue or NULL, like JSEvaluate does.
1130
1131         * API/JSObjectRef.cpp:
1132         (JSObjectGetProperty):
1133         * API/JSObjectRef.h:
1134         * API/testapi.c:
1135         (main):
1136
1137 2006-07-08  Geoffrey Garen  <ggaren@apple.com>
1138
1139         Style change -- no review necessary.
1140         
1141         Use 0 instead of NULL in API .cpp files, to match our style guidelines.
1142
1143         * API/JSContextRef.cpp:
1144         (JSEvaluate):
1145         * API/JSObjectRef.cpp:
1146         (JSFunctionMakeWithBody):
1147         (JSObjectCallAsFunction):
1148         (JSObjectCallAsConstructor):
1149         * API/JSValueRef.cpp:
1150         (JSValueToObject):
1151
1152 2006-07-08  Geoffrey Garen  <ggaren@apple.com>
1153
1154         Reviewed by TimO.
1155
1156         - Added ability to pass NULL for thisObject when calling JSObjectCallAsFunction,
1157         to match JSEvaluate.
1158         
1159         * API/JSObjectRef.cpp:
1160         (JSObjectCallAsFunction):
1161         * API/JSObjectRef.h:
1162         * API/testapi.c:
1163         (main):
1164
1165 === Safari-521.15 ===
1166
1167 2006-07-07  Geoffrey Garen  <ggaren@apple.com>
1168
1169         Reviewed by Maciej.
1170         
1171         - Standardized which functions take a JSContext as an argument. The rule is:
1172         if you might execute JavaScript, you take a JSContext, otherwise you don't.
1173         
1174         The FIXME in JSObjectRef.h requires refactoring some parts of Interpreter,
1175         but not API changes, so I'm putting it off until later.
1176
1177         * API/JSCallbackObject.cpp:
1178         (KJS::JSCallbackObject::JSCallbackObject):
1179         (KJS::JSCallbackObject::init):
1180         * API/JSCallbackObject.h:
1181         * API/JSContextRef.cpp:
1182         (JSContextCreate):
1183         * API/JSContextRef.h:
1184         * API/JSObjectRef.cpp:
1185         (JSObjectMake):
1186         (JSPropertyEnumeratorGetNext):
1187         * API/JSObjectRef.h:
1188         * API/testapi.c:
1189         (MyObject_initialize):
1190         (main):
1191         * JavaScriptCore.exp:
1192         * kjs/array_object.cpp:
1193         (ArrayInstance::setLength):
1194         (ArrayInstance::pushUndefinedObjectsToEnd):
1195         * kjs/nodes.cpp:
1196         (ForInNode::execute):
1197         * kjs/reference.cpp:
1198         (KJS::Reference::getPropertyName):
1199         (KJS::Reference::getValue):
1200         * kjs/reference.h:
1201         * kjs/scope_chain.cpp:
1202         (KJS::ScopeChain::print):
1203
1204 2006-07-06  Geoffrey Garen  <ggaren@apple.com>
1205
1206         Reviewed by Maciej.
1207         
1208         More API action.
1209         
1210         - Headerdoc finished
1211
1212         Semantic Changes:
1213         - Added a JSContextRef argument to many functions, because you need a 
1214         JSContextRef for doing virtually anything. I expect to add this argument
1215         to even more functions in a future patch.
1216         
1217         - Removed the globalObjectPrototype argument to JSContextCreate because
1218         you can't create an object until you have a context, so it's impossible
1219         to pass a prototype object to JSContextCreate. That's OK because (1) there's
1220         no reason to give the global object a prototype and (2) if you really want
1221         to, you can just use a separate call to JSObjectSetPrototype.
1222         
1223         - Removed the JSClassRef argument to JSClassCreate because it was unnecessary,
1224         and you need to be able to make the global object's class before you've
1225         created a JSContext.
1226         
1227         - Added an optional exception parameter to JSFunctionMakeWithBody because anything
1228         less would be uncivilized.
1229         
1230         - Made the return value parameter to JSObjectGetProperty optional to match
1231         all other return value parameters in the API.
1232         
1233         - Made JSObjectSetPrivate/JSObjectGetPrivate work on JSCallbackFunctions
1234         and JSCallbackConstructors. You could use an abstract base class or strategic
1235         placement of m_privateData in the class structure to implement this, but 
1236         the former seemed like overkill, and the latter seemed too dangerous.
1237         
1238         - Fixed a bug where JSPropertyEnumeratorGetNext would skip the first property.
1239
1240         Cosmetic Changes:
1241         - Reversed the logic of the JSChar #ifdef to avoid confusing headerdoc
1242         
1243         - Removed function names from @function declarations because headeroc
1244         can parse them automatically, and I wanted to rule out manual mismatch.
1245
1246         - Changed Error::create to take a const UString& instead of a UString*
1247         because it was looking at me funny.
1248         
1249         - Renamed JSStringBufferCreateWithCFString to JSStringBufferCreateCF
1250         because the latter is more concise and it matches JSStringBufferCreateUTF8.
1251         
1252         * API/JSCallbackObject.cpp:
1253         (KJS::JSCallbackObject::getOwnPropertySlot):
1254         (KJS::JSCallbackObject::put):
1255         (KJS::JSCallbackObject::deleteProperty):
1256         (KJS::JSCallbackObject::getPropertyList):
1257         (KJS::JSCallbackObject::toBoolean):
1258         (KJS::JSCallbackObject::toNumber):
1259         (KJS::JSCallbackObject::toString):
1260         * API/JSClassRef.cpp:
1261         (JSClassCreate):
1262         * API/JSContextRef.cpp:
1263         (JSContextCreate):
1264         (JSContextSetException):
1265         * API/JSContextRef.h:
1266         * API/JSNode.c:
1267         (JSNodePrototype_class):
1268         (JSNode_class):
1269         * API/JSNodeList.c:
1270         (JSNodeListPrototype_class):
1271         (JSNodeList_class):
1272         * API/JSObjectRef.cpp:
1273         (JSObjectGetProperty):
1274         (JSObjectGetPrivate):
1275         (JSObjectSetPrivate):
1276         (JSObjectCallAsFunction):
1277         (JSObjectCallAsConstructor):
1278         (JSPropertyEnumeratorGetNext):
1279         * API/JSObjectRef.h:
1280         * API/JSStringBufferRef.cpp:
1281         (JSStringBufferCreateCF):
1282         * API/JSStringBufferRef.h:
1283         * API/JSValueRef.cpp:
1284         (JSValueIsInstanceOf):
1285         * API/JSValueRef.h:
1286         * API/minidom.c:
1287         (main):
1288         * API/minidom.js:
1289         * API/testapi.c:
1290         (MyObject_hasProperty):
1291         (MyObject_setProperty):
1292         (MyObject_deleteProperty):
1293         (MyObject_getPropertyList):
1294         (MyObject_convertToType):
1295         (MyObject_class):
1296         (main):
1297         * JavaScriptCore.exp:
1298
1299 2006-07-07  Geoffrey Garen  <ggaren@apple.com>
1300
1301         Reviewed by John.
1302         
1303         - Fixed a few crashes resulting from NULL parameters to JSClassCreate.
1304
1305         * API/JSClassRef.cpp:
1306         (JSClassCreate):
1307         (JSClassRelease):
1308         * API/testapi.c: Added test for NULL parameters.
1309         (main):
1310
1311 2006-07-07  Geoffrey Garen  <ggaren@apple.com>
1312
1313         Reviewed by John, mocked by Darin.
1314         
1315         - Changed JSEvaluate to take a JSObjectRef instead of a JSValueRef as
1316         "this," since "this" must be an object.
1317
1318         * API/JSContextRef.cpp:
1319         (JSEvaluate):
1320         * API/JSContextRef.h:
1321
1322 2006-07-07  Geoffrey Garen  <ggaren@apple.com>
1323
1324         Reviewed by John.
1325         
1326         - More headerdoc
1327
1328         * API/JSBase.h:
1329         * JavaScriptCore.xcodeproj/project.pbxproj:
1330
1331 2006-07-05  Geoffrey Garen  <ggaren@apple.com>
1332
1333         RS by Beth.
1334         
1335         Renamed JSCharBufferRef, which was universally unpopular, to JSStringBufferRef,
1336         which, hopefully, will be less unpopular.
1337
1338         * API/APICast.h:
1339         (toJS):
1340         (toRef):
1341         * API/JSBase.h:
1342         * API/JSCallbackObject.cpp:
1343         (KJS::JSCallbackObject::getOwnPropertySlot):
1344         (KJS::JSCallbackObject::put):
1345         (KJS::JSCallbackObject::deleteProperty):
1346         (KJS::JSCallbackObject::staticValueGetter):
1347         (KJS::JSCallbackObject::callbackGetter):
1348         * API/JSCharBufferRef.cpp: Removed.
1349         * API/JSCharBufferRef.h: Removed.
1350         * API/JSContextRef.cpp:
1351         (JSEvaluate):
1352         (JSCheckSyntax):
1353         * API/JSContextRef.h:
1354         * API/JSNode.c:
1355         (JSNodePrototype_appendChild):
1356         (JSNode_getNodeType):
1357         (JSNode_getChildNodes):
1358         (JSNode_getFirstChild):
1359         * API/JSNodeList.c:
1360         (JSNodeList_length):
1361         (JSNodeList_getProperty):
1362         * API/JSObjectRef.cpp:
1363         (JSFunctionMakeWithBody):
1364         (JSObjectGetDescription):
1365         (JSObjectHasProperty):
1366         (JSObjectGetProperty):
1367         (JSObjectSetProperty):
1368         (JSObjectDeleteProperty):
1369         (JSPropertyEnumeratorGetNext):
1370         (JSPropertyListAdd):
1371         * API/JSObjectRef.h:
1372         * API/JSStringBufferRef.cpp: Added.
1373         (JSStringMake):
1374         (JSStringBufferCreate):
1375         (JSStringBufferCreateUTF8):
1376         (JSStringBufferRetain):
1377         (JSStringBufferRelease):
1378         (JSValueCopyStringValue):
1379         (JSStringBufferGetLength):
1380         (JSStringBufferGetCharactersPtr):
1381         (JSStringBufferGetCharacters):
1382         (JSStringBufferGetMaxLengthUTF8):
1383         (JSStringBufferGetCharactersUTF8):
1384         (JSStringBufferIsEqual):
1385         (JSStringBufferIsEqualUTF8):
1386         (JSStringBufferCreateWithCFString):
1387         (CFStringCreateWithJSStringBuffer):
1388         * API/JSStringBufferRef.h: Added.
1389         * API/JSValueRef.h:
1390         * API/JavaScriptCore.h:
1391         * API/minidom.c:
1392         (main):
1393         (print):
1394         * API/testapi.c:
1395         (assertEqualsAsUTF8String):
1396         (assertEqualsAsCharactersPtr):
1397         (assertEqualsAsCharacters):
1398         (MyObject_hasProperty):
1399         (MyObject_getProperty):
1400         (MyObject_setProperty):
1401         (MyObject_deleteProperty):
1402         (MyObject_getPropertyList):
1403         (print_callAsFunction):
1404         (myConstructor_callAsConstructor):
1405         (main):
1406         * JavaScriptCore.exp:
1407         * JavaScriptCore.xcodeproj/project.pbxproj:
1408
1409 2006-07-05  Geoffrey Garen  <ggaren@apple.com>
1410
1411         RS by Beth.
1412         
1413         Moved some code around for more logical file separation.
1414
1415         * API/JSBase.h:
1416         * API/JSContextRef.h:
1417         * API/JSObjectRef.cpp:
1418         * API/JSValueRef.cpp:
1419         (JSValueToObject):
1420         * API/JSValueRef.h:
1421
1422 2006-07-03  Geoffrey Garen  <ggaren@apple.com>
1423
1424         Reviewed by Maciej.
1425         
1426         Implemented JSFunctionMakeWithBody, which parses a script as a function body
1427         in the global scope, and returns the resulting anonymous function.
1428         
1429         I also removed private data from JSCallbackFunction. It never worked,
1430         since JSCallbackFunction doesn't inherit from JSCallbackObject.
1431
1432         * API/JSCallbackConstructor.cpp: Removed.
1433         * API/JSCallbackConstructor.h: Removed.
1434         * API/JSCallbackFunction.cpp:
1435         (KJS::JSCallbackFunction::JSCallbackFunction):
1436         (KJS::JSCallbackFunction::implementsConstruct):
1437         (KJS::JSCallbackFunction::construct):
1438         (KJS::JSCallbackFunction::implementsCall):
1439         (KJS::JSCallbackFunction::callAsFunction):
1440         * API/JSCallbackFunction.h:
1441         * API/JSCallbackObject.cpp:
1442         (KJS::JSCallbackObject::staticFunctionGetter):
1443         * API/JSObjectRef.cpp:
1444         (JSFunctionMake):
1445         (JSFunctionMakeWithCallbacks):
1446         * API/JSObjectRef.h:
1447         * API/JSValueRef.h:
1448         * API/minidom.c:
1449         (main):
1450         * API/testapi.c:
1451         (main):
1452         * JavaScriptCore.exp: Programmatically added all symbols exported by
1453         API object files, and sorted results
1454         * JavaScriptCore.xcodeproj/project.pbxproj:
1455
1456 2006-07-03  Geoffrey Garen  <ggaren@apple.com>
1457
1458         Reviewed by Maciej.
1459
1460         - Return syntax error in JSCheckSyntax through a JSValueRef* exception
1461         argument
1462         
1463         * API/JSBase.h:
1464         * API/JSContextRef.cpp:
1465         (JSCheckSyntax):
1466         * API/testapi.c:
1467         (main):
1468         * JavaScriptCore.exp:
1469         * kjs/interpreter.cpp:
1470         (KJS::Interpreter::checkSyntax):
1471         * kjs/interpreter.h:
1472
1473 2006-07-04  Darin Adler  <darin@apple.com>
1474
1475         - fixed build
1476
1477         * wtf/MathExtras.h: Oops. Added missing #endif.
1478
1479 2006-07-04  Bjoern Graf  <bjoern.graf@gmail.com>
1480
1481         Reviewed by Maciej.
1482         Tweaked a bit by Darin.
1483
1484         - http://bugzilla.opendarwin.org/show_bug.cgi?id=9678
1485           work around MSVCRT's fmod function returning NaN for fmod(x, infinity) instead of x
1486
1487         * wtf/MathExtras.h: Added include of <float.h>.
1488         (isinf): Fix to return false for NAN.
1489         (wtf_fmod): Added. An inline that works around the bug.
1490
1491         * kjs/nodes.cpp:
1492         * kjs/number_object.cpp:
1493         * kjs/operations.cpp:
1494         * kjs/value.cpp:
1495         Added includes of MathExtras.h to all files using fmod.
1496
1497         * JavaScriptCore.xcodeproj/project.pbxproj: Let Xcode 2.3 have its way with
1498         the project.
1499
1500 2006-07-01  Geoffrey Garen  <ggaren@apple.com>
1501
1502         Reviewed by Darin.
1503         
1504         - Refined value conversions in the API:
1505             - failed toNumber returns NaN
1506             - failed toObject returns NULL
1507             - failed toString returns empty string
1508         
1509         - Refined excpetion handling in the API:
1510             - failed value conversions do not throw exceptions
1511             - uncaught exceptions in JSEvaluate, JSObjectCallAsFunction, and 
1512               JSObjectCallAsConstructor are returned through a JSValueRef* exception
1513               argument
1514             - removed JSContextHasException, because JSContextGetException does
1515               the same job
1516             
1517         * API/JSBase.h:
1518         * API/JSCharBufferRef.cpp:
1519         (JSValueCopyStringValue):
1520         * API/JSContextRef.cpp:
1521         (JSEvaluate):
1522         * API/JSContextRef.h:
1523         * API/JSNodeList.c: Added test code demonstrating how you would use
1524         toNumber, and why you probably don't need toUInt32, etc.
1525         (JSNodeListPrototype_item):
1526         (JSNodeList_getProperty):
1527         * API/JSObjectRef.cpp:
1528         (JSValueToObject):
1529         (JSObjectCallAsFunction):
1530         (JSObjectCallAsConstructor):
1531         * API/JSObjectRef.h:
1532         * API/JSValueRef.cpp:
1533         (JSValueToNumber):
1534         * API/JSValueRef.h:
1535         * API/minidom.c:
1536         (main):
1537         * API/testapi.c:
1538         (main): Added tests for new rules, and call to JSGCProtect to fix Intel 
1539         crash
1540         * JavaScriptCore.exp:
1541
1542 2006-07-03  Darin Adler  <darin@apple.com>
1543
1544         - Rolled out HashMap implementation of NPRuntime, at least temporarily.
1545
1546         Fixes hang in the bindings section of layout tests seen on the
1547         buildbot.
1548
1549         This code was using HashMap<const char*, PrivateIdentifier*>.
1550         But that hashes based on pointer identity, not string value.
1551         The default hash for any pointer type is to hash based on the pointer.
1552         And WTF doesn't currently have a string hash for char*.
1553         We'll need to fix that before re-landing this patch.
1554
1555         (Formatting was also incorrect -- extra spaces in parentheses.)
1556
1557         * bindings/npruntime.cpp: Rolled out last change.
1558
1559 2006-07-02  Justin Haygood  <jhaygood@spsu.edu>
1560
1561         Reviewed, tweaked, landed by ggaren.
1562
1563         - Port NPRuntime from CFDictionary to HashMap.
1564
1565         * bindings/npruntime.cpp:
1566         (getStringIdentifierDictionary):
1567         (getIntIdentifierDictionary):
1568         (_NPN_GetStringIdentifier):
1569         (_NPN_GetIntIdentifier):
1570         * bindings/npruntime.h:
1571
1572 2006-07-01  Geoffrey Garen  <ggaren@apple.com>
1573
1574         Reviewed by Adele.
1575         
1576         - Fixed <rdar://problem/4611197> REGRESSION: Liveconnect with Java test 
1577         fails at http://www-sor.inria.fr/~dedieu/notes/liveconnect/simple_example.html
1578
1579         * JavaScriptCore.exp: Export symbols used by liveconnect
1580
1581 2006-06-29  Geoffrey Garen  <ggaren@apple.com>
1582
1583         Reviewed by Maciej.
1584         
1585         - Phase 2 in the JS API.
1586         
1587         - Added support for specifying static tables of values -- this should
1588         obviate the need for using complicated callbacks for most lookups.
1589         
1590         -  API objects are now created with classes (JSClassRef) -- in order to support
1591         static values, and in order to prevent API objects from storing their
1592         data inline, and thus falling into the oversized (read: slow and prone to
1593         giving Maciej the frowny face) heap.
1594         
1595         - Added two specialized JSObject subclasses -- JSCallbackFunction and JSCallbackConstructor -- 
1596         to allow JSFunctionMake and JSConstructorMake to continue to work with
1597         the new class model. Another solution to this problem would be to create
1598         a custom class object for each function and constructor you make. This
1599         solution is more code but also more efficient.
1600         
1601         - Substantially beefed up the minidom example to demonstrate and test a
1602         lot of these techniques. Its output is still pretty haphazard, though.
1603         
1604         - Gave the <kjs/ preface to some includes -- I'm told this matters to
1605         building on some versions of Linux.
1606         
1607         - Implemented JSValueIsInstanceOf and JSValueIsObjectOfClass
1608         
1609         - Removed GetDescription callback. Something in the class datastructure
1610         should take care of this.
1611
1612         * API/JSBase.h:
1613         * API/JSCallbackConstructor.cpp: Added.
1614         (KJS::):
1615         (KJS::JSCallbackConstructor::JSCallbackConstructor):
1616         (KJS::JSCallbackConstructor::implementsConstruct):
1617         (KJS::JSCallbackConstructor::construct):
1618         (KJS::JSCallbackConstructor::setPrivate):
1619         (KJS::JSCallbackConstructor::getPrivate):
1620         * API/JSCallbackConstructor.h: Added.
1621         (KJS::JSCallbackConstructor::classInfo):
1622         * API/JSCallbackFunction.cpp: Added.
1623         (KJS::):
1624         (KJS::JSCallbackFunction::JSCallbackFunction):
1625         (KJS::JSCallbackFunction::implementsCall):
1626         (KJS::JSCallbackFunction::callAsFunction):
1627         (KJS::JSCallbackFunction::setPrivate):
1628         (KJS::JSCallbackFunction::getPrivate):
1629         * API/JSCallbackFunction.h: Added.
1630         (KJS::JSCallbackFunction::classInfo):
1631         * API/JSCallbackObject.cpp:
1632         (KJS::):
1633         (KJS::JSCallbackObject::JSCallbackObject):
1634         (KJS::JSCallbackObject::init):
1635         (KJS::JSCallbackObject::~JSCallbackObject):
1636         (KJS::JSCallbackObject::className):
1637         (KJS::JSCallbackObject::getOwnPropertySlot):
1638         (KJS::JSCallbackObject::put):
1639         (KJS::JSCallbackObject::deleteProperty):
1640         (KJS::JSCallbackObject::implementsConstruct):
1641         (KJS::JSCallbackObject::construct):
1642         (KJS::JSCallbackObject::implementsCall):
1643         (KJS::JSCallbackObject::callAsFunction):
1644         (KJS::JSCallbackObject::getPropertyList):
1645         (KJS::JSCallbackObject::toBoolean):
1646         (KJS::JSCallbackObject::toNumber):
1647         (KJS::JSCallbackObject::toString):
1648         (KJS::JSCallbackObject::inherits):
1649         (KJS::JSCallbackObject::staticValueGetter):
1650         (KJS::JSCallbackObject::staticFunctionGetter):
1651         (KJS::JSCallbackObject::callbackGetter):
1652         * API/JSCallbackObject.h:
1653         * API/JSCharBufferRef.cpp:
1654         * API/JSClassRef.cpp: Added.
1655         (JSClassCreate):
1656         (JSClassRetain):
1657         (JSClassRelease):
1658         * API/JSClassRef.h: Added.
1659         (StaticValueEntry::StaticValueEntry):
1660         (StaticFunctionEntry::StaticFunctionEntry):
1661         (__JSClass::__JSClass):
1662         * API/JSContextRef.cpp:
1663         (JSContextCreate):
1664         (JSEvaluate):
1665         * API/JSContextRef.h:
1666         * API/JSNode.c: Added.
1667         (JSNodePrototype_appendChild):
1668         (JSNodePrototype_removeChild):
1669         (JSNodePrototype_replaceChild):
1670         (JSNodePrototype_class):
1671         (JSNode_getNodeType):
1672         (JSNode_getChildNodes):
1673         (JSNode_getFirstChild):
1674         (JSNode_finalize):
1675         (JSNode_class):
1676         (JSNode_prototype):
1677         (JSNode_new):
1678         (JSNode_construct):
1679         * API/JSNode.h: Added.
1680         * API/JSNodeList.c: Added.
1681         (JSNodeListPrototype_item):
1682         (JSNodeListPrototype_class):
1683         (JSNodeList_length):
1684         (JSNodeList_getProperty):
1685         (JSNodeList_finalize):
1686         (JSNodeList_class):
1687         (JSNodeList_prototype):
1688         (JSNodeList_new):
1689         * API/JSNodeList.h: Added.
1690         * API/JSObjectRef.cpp:
1691         (JSObjectMake):
1692         (JSFunctionMake):
1693         (JSConstructorMake):
1694         (__JSPropertyEnumerator::__JSPropertyEnumerator):
1695         (JSObjectCreatePropertyEnumerator):
1696         (JSPropertyEnumeratorGetNext):
1697         (JSPropertyEnumeratorRetain):
1698         (JSPropertyEnumeratorRelease):
1699         * API/JSObjectRef.h:
1700         (__JSObjectCallbacks::):
1701         * API/JSValueRef.cpp:
1702         (JSValueIsObjectOfClass):
1703         (JSValueIsInstanceOf):
1704         * API/JSValueRef.h:
1705         * API/Node.c: Added.
1706         (Node_new):
1707         (Node_appendChild):
1708         (Node_removeChild):
1709         (Node_replaceChild):
1710         (Node_ref):
1711         (Node_deref):
1712         * API/Node.h: Added.
1713         * API/NodeList.c: Added.
1714         (NodeList_new):
1715         (NodeList_length):
1716         (NodeList_item):
1717         (NodeList_ref):
1718         (NodeList_deref):
1719         * API/NodeList.h: Added.
1720         * API/minidom.c:
1721         (main):
1722         (print):
1723         (createStringWithContentsOfFile):
1724         * API/minidom.js:
1725         * API/testapi.c:
1726         (assertEqualsAsCharacters):
1727         (MyObject_getProperty):
1728         (MyObject_class):
1729         (myConstructor_callAsConstructor):
1730         (main):
1731         * API/testapi.js:
1732         * JavaScriptCore.xcodeproj/project.pbxproj:
1733
1734 2006-06-26  Kevin Ollivier  <kevino@theolliviers.com>
1735         
1736         Reviewed and tweaked by Darin.
1737
1738         - Compile fixes for wx port / gcc 4.0.2
1739
1740         * kjs/array_object.cpp:
1741         Added missing headers. 
1742
1743         * kjs/ExecState.h:
1744         gcc needs class prototypes before defining those classes as friend classes
1745
1746 2006-06-30  Mike Emmel  <mike.emmel@gmail.com>
1747
1748         Reviewed by Darin.
1749
1750         Compilation fixes for Linux/Gdk.
1751
1752         * JavaScriptCore/kjs/interpreter.cpp: added include of signal.h
1753         * JavaScriptCore/kjs/ExecState.h: added missing class declaration 
1754         * JavaScriptCore/kjs/ExecState.cpp: case wrong on include of context.h 
1755         * JavaScriptCore/JavaScriptCoreSources.bkl: added Context.cpp and ExecState.cpp
1756
1757 === Safari-521.14 ===
1758
1759 2006-06-29  Maciej Stachowiak  <mjs@apple.com>
1760
1761         Reviewed by Geoff.
1762         
1763         - add headerdoc comments to some of the new JS API headers
1764
1765         * API/JSBase.h:
1766         * API/JSValueRef.h:
1767
1768 2006-06-28  Timothy Hatcher  <timothy@apple.com>
1769
1770         Prefer the Stabs debugging symbols format until DWARF bugs are fixed.
1771
1772         * JavaScriptCore.xcodeproj/project.pbxproj:
1773
1774 2006-06-27  Timothy Hatcher  <timothy@apple.com>
1775
1776         Reviewed by Tim O.
1777
1778         <rdar://problem/4448350> Deprecated ObjC language API used in JavaScriptCore, WebCore, WebKit and WebBrowser
1779
1780         Switch to the new ObjC 2 API, ifdefed the old code around OBJC_API_VERSION so it still works on Tiger.
1781         Removed the use of the old stringWithCString, switched to the new Tiger version that accepts an encoding.
1782         Lots of code style cleanup.
1783
1784         * JavaScriptCore.xcodeproj/project.pbxproj:
1785         * bindings/objc/objc_class.h:
1786         * bindings/objc/objc_class.mm:
1787         (KJS::Bindings::ObjcClass::~ObjcClass):
1788         (KJS::Bindings::_createClassesByIsAIfNecessary):
1789         (KJS::Bindings::ObjcClass::classForIsA):
1790         (KJS::Bindings::ObjcClass::name):
1791         (KJS::Bindings::ObjcClass::methodsNamed):
1792         (KJS::Bindings::ObjcClass::fieldNamed):
1793         (KJS::Bindings::ObjcClass::fallbackObject):
1794         * bindings/objc/objc_header.h:
1795         * bindings/objc/objc_instance.h:
1796         * bindings/objc/objc_instance.mm:
1797         (ObjcInstance::ObjcInstance):
1798         (ObjcInstance::~ObjcInstance):
1799         (ObjcInstance::operator=):
1800         (ObjcInstance::begin):
1801         (ObjcInstance::end):
1802         (ObjcInstance::getClass):
1803         (ObjcInstance::invokeMethod):
1804         (ObjcInstance::invokeDefaultMethod):
1805         (ObjcInstance::setValueOfField):
1806         (ObjcInstance::supportsSetValueOfUndefinedField):
1807         (ObjcInstance::setValueOfUndefinedField):
1808         (ObjcInstance::getValueOfField):
1809         (ObjcInstance::getValueOfUndefinedField):
1810         (ObjcInstance::defaultValue):
1811         (ObjcInstance::stringValue):
1812         (ObjcInstance::numberValue):
1813         (ObjcInstance::booleanValue):
1814         (ObjcInstance::valueOf):
1815         * bindings/objc/objc_runtime.h:
1816         * bindings/objc/objc_runtime.mm:
1817         (ObjcMethod::ObjcMethod):
1818         (ObjcMethod::name):
1819         (ObjcMethod::getMethodSignature):
1820         (ObjcMethod::setJavaScriptName):
1821         (ObjcField::name):
1822         (ObjcField::type):
1823         (ObjcField::valueFromInstance):
1824         (convertValueToObjcObject):
1825         (ObjcField::setValueToInstance):
1826         (ObjcArray::operator=):
1827         (ObjcArray::setValueAt):
1828         (ObjcArray::valueAt):
1829         (ObjcFallbackObjectImp::ObjcFallbackObjectImp):
1830         (ObjcFallbackObjectImp::callAsFunction):
1831         (ObjcFallbackObjectImp::defaultValue):
1832
1833 2006-06-28  Anders Carlsson  <acarlsson@apple.com>
1834
1835         Reviewed by Geoff.
1836
1837         http://bugzilla.opendarwin.org/show_bug.cgi?id=8636
1838         REGRESSION: JavaScript access to Java applet causes hang (_webViewURL not implemented)
1839
1840         * bindings/jni/jni_objc.mm:
1841         (KJS::Bindings::dispatchJNICall):
1842         Just pass nil as the calling URL. This will cause the Java plugin to use the URL of the page
1843         containing the applet (which is what we used to do).
1844
1845 2006-06-27  Timothy Hatcher  <timothy@apple.com>
1846
1847         Reviewed by Darin.
1848
1849         <rdar://problem/4406785> Add an export file to TOT JavaScriptCore like the Safari-2-0-branch
1850
1851         * JavaScriptCore.exp: Added.
1852         * JavaScriptCore.xcodeproj/project.pbxproj:
1853
1854 2006-06-25  Geoffrey Garen  <ggaren@apple.com>
1855
1856         Reviewed by Adele.
1857         
1858         - Added JSConstructorMake to match JSFunctionMake, along with test code.
1859         
1860         [ I checked in the ChangeLog before without the actual files. ]
1861
1862         * API/JSObjectRef.cpp:
1863         (JSConstructorMake):
1864         * API/JSObjectRef.h:
1865         * API/testapi.c:
1866         (myConstructor_callAsConstructor):
1867         (main):
1868         * API/testapi.js:
1869         * ChangeLog:
1870         * JavaScriptCore.xcodeproj/project.pbxproj: Moved testapi.c to the testapi
1871         target -- this was an oversight in my earlier check-in.
1872
1873 2006-06-25  Timothy Hatcher  <timothy@apple.com>
1874
1875         Reviewed by Darin.
1876
1877         Bug 9574: Drosera should show inline scripts within the original HTML
1878         http://bugzilla.opendarwin.org/show_bug.cgi?id=9574
1879
1880         Pass the starting line number and error message to the debugger.
1881
1882         * kjs/debugger.cpp:
1883         (Debugger::sourceParsed):
1884         * kjs/debugger.h:
1885         * kjs/function.cpp:
1886         (KJS::GlobalFuncImp::callAsFunction):
1887         * kjs/function_object.cpp:
1888         (FunctionObjectImp::construct):
1889         * kjs/interpreter.cpp:
1890         (KJS::Interpreter::evaluate):
1891
1892 2006-06-24  Alexey Proskuryakov  <ap@nypop.com>
1893
1894         Rubber-stamped by Eric.
1895
1896         Add a -h (do not follow symlinks) option to ln in derived sources build script (without it,
1897         a symlink was created inside the source directory on second build).
1898
1899         * JavaScriptCore.xcodeproj/project.pbxproj:
1900
1901 2006-06-24  David Kilzer  <ddkilzer@kilzer.net>
1902
1903         Reviewed by Timothy.
1904
1905         * Info.plist: Fixed copyright to include 2003-2006.
1906
1907 2006-06-24  Alexey Proskuryakov  <ap@nypop.com>
1908
1909         Reviewed by Darin.
1910
1911         - http://bugzilla.opendarwin.org/show_bug.cgi?id=9418
1912         WebKit will not build when Space exists in path
1913
1914         * JavaScriptCore.xcodeproj/project.pbxproj: Enclose search paths in quotes; create symlinks to 
1915         avoid passing paths with spaces to make.
1916
1917 2006-06-23  Timothy Hatcher  <timothy@apple.com>
1918
1919         Reviewed by Darin.
1920
1921         Adding more operator[] overloads for long and short types.
1922
1923         * wtf/Vector.h:
1924         (WTF::Vector::operator[]):
1925
1926 === JavaScriptCore-521.13 ===
1927
1928 2006-06-22  Alexey Proskuryakov  <ap@nypop.com>
1929
1930         Build fix.
1931
1932         - http://bugzilla.opendarwin.org/show_bug.cgi?id=9539
1933         Another case error preventing build
1934
1935         * API/JSObjectRef.cpp: Changed "identifier.h" to "Identifier.h"
1936         
1937 2006-06-22  David Kilzer  <ddkilzer@kilzer.net>
1938
1939         Build fix.
1940
1941         http://bugzilla.opendarwin.org/show_bug.cgi?id=9539
1942         Another case error preventing build
1943
1944         * API/APICast.h: Changed "UString.h" to "ustring.h".
1945
1946 2006-06-21  Geoffrey Garen  <ggaren@apple.com>
1947
1948         Fixed release build, fixed accidental infinite recursion due to
1949         last minute global replace gone awry.
1950         
1951         * API/APICast.h:
1952         (toRef):
1953         * API/testapi.c:
1954         (assertEqualsAsBoolean):
1955         (assertEqualsAsNumber):
1956         (assertEqualsAsUTF8String):
1957         (assertEqualsAsCharactersPtr):
1958         * JavaScriptCore.xcodeproj/project.pbxproj:
1959
1960 2006-06-21  Geoffrey Garen  <ggaren@apple.com>
1961
1962         Reviewed by Anders.
1963         
1964         - First cut at C API to JavaScript. Includes a unit test, 'testapi.c', 
1965         and the outline of a test app, 'minidom.c'.
1966         
1967         Includes one change to JSC internals: Rename propList to getPropertyList and have it
1968         take its target property list by reference so that subclasses can
1969         add properties to the list before calling through to their superclasses.
1970         
1971         Also, I just ran prepare-ChangeLog in about 10 seconds, and I would like
1972         to give a shout-out to that.
1973         
1974         * API/APICast.h: Added.
1975         (toJS):
1976         (toRef):
1977         * API/JSBase.h: Added.
1978         * API/JSCallbackObject.cpp: Added.
1979         (KJS::):
1980         (KJS::JSCallbackObject::JSCallbackObject):
1981         (KJS::JSCallbackObject::~JSCallbackObject):
1982         (KJS::JSCallbackObject::className):
1983         (KJS::JSCallbackObject::getOwnPropertySlot):
1984         (KJS::JSCallbackObject::put):
1985         (KJS::JSCallbackObject::deleteProperty):
1986         (KJS::JSCallbackObject::implementsConstruct):
1987         (KJS::JSCallbackObject::construct):
1988         (KJS::JSCallbackObject::implementsCall):
1989         (KJS::JSCallbackObject::callAsFunction):
1990         (KJS::JSCallbackObject::getPropertyList):
1991         (KJS::JSCallbackObject::toBoolean):
1992         (KJS::JSCallbackObject::toNumber):
1993         (KJS::JSCallbackObject::toString):
1994         (KJS::JSCallbackObject::setPrivate):
1995         (KJS::JSCallbackObject::getPrivate):
1996         (KJS::JSCallbackObject::cachedValueGetter):
1997         (KJS::JSCallbackObject::callbackGetter):
1998         * API/JSCallbackObject.h: Added.
1999         (KJS::JSCallbackObject::classInfo):
2000         * API/JSCharBufferRef.cpp: Added.
2001         (JSStringMake):
2002         (JSCharBufferCreate):
2003         (JSCharBufferCreateUTF8):
2004         (JSCharBufferRetain):
2005         (JSCharBufferRelease):
2006         (JSValueCopyStringValue):
2007         (JSCharBufferGetLength):
2008         (JSCharBufferGetCharactersPtr):
2009         (JSCharBufferGetCharacters):
2010         (JSCharBufferGetMaxLengthUTF8):
2011         (JSCharBufferGetCharactersUTF8):
2012         (JSCharBufferIsEqual):
2013         (JSCharBufferIsEqualUTF8):
2014         (JSCharBufferCreateWithCFString):
2015         (CFStringCreateWithJSCharBuffer):
2016         * API/JSCharBufferRef.h: Added.
2017         * API/JSContextRef.cpp: Added.
2018         (JSContextCreate):
2019         (JSContextDestroy):
2020         (JSContextGetGlobalObject):
2021         (JSEvaluate):
2022         (JSCheckSyntax):
2023         (JSContextHasException):
2024         (JSContextGetException):
2025         (JSContextClearException):
2026         (JSContextSetException):
2027         * API/JSContextRef.h: Added.
2028         * API/JSObjectRef.cpp: Added.
2029         (JSValueToObject):
2030         (JSObjectMake):
2031         (JSFunctionMake):
2032         (JSObjectGetDescription):
2033         (JSObjectGetPrototype):
2034         (JSObjectSetPrototype):
2035         (JSObjectHasProperty):
2036         (JSObjectGetProperty):
2037         (JSObjectSetProperty):
2038         (JSObjectDeleteProperty):
2039         (JSObjectGetPrivate):
2040         (JSObjectSetPrivate):
2041         (JSObjectIsFunction):
2042         (JSObjectCallAsFunction):
2043         (JSObjectIsConstructor):
2044         (JSObjectCallAsConstructor):
2045         (__JSPropertyListEnumerator::__JSPropertyListEnumerator):
2046         (JSObjectCreatePropertyEnumerator):
2047         (JSPropertyEnumeratorGetNext):
2048         (JSPropertyEnumeratorRetain):
2049         (JSPropertyEnumeratorRelease):
2050         (JSPropertyListAdd):
2051         * API/JSObjectRef.h: Added.
2052         * API/JSValueRef.cpp: Added.
2053         (JSValueGetType):
2054         (JSValueIsUndefined):
2055         (JSValueIsNull):
2056         (JSValueIsBoolean):
2057         (JSValueIsNumber):
2058         (JSValueIsString):
2059         (JSValueIsObject):
2060         (JSValueIsEqual):
2061         (JSValueIsStrictEqual):
2062         (JSUndefinedMake):
2063         (JSNullMake):
2064         (JSBooleanMake):
2065         (JSNumberMake):
2066         (JSValueToBoolean):
2067         (JSValueToNumber):
2068         (JSGCProtect):
2069         (JSGCUnprotect):
2070         (JSGCCollect):
2071         * API/JSValueRef.h: Added.
2072         * API/JavaScriptCore.h: Added.
2073         * API/minidom.c: Added.
2074         (main):
2075         * API/minidom.html: Added.
2076         * API/minidom.js: Added.
2077         * API/testapi.c: Added.
2078         (assertEqualsAsBoolean):
2079         (assertEqualsAsNumber):
2080         (assertEqualsAsUTF8String):
2081         (assertEqualsAsCharactersPtr):
2082         (assertEqualsAsCharacters):
2083         (MyObject_initialize):
2084         (MyObject_copyDescription):
2085         (MyObject_hasProperty):
2086         (MyObject_getProperty):
2087         (MyObject_setProperty):
2088         (MyObject_deleteProperty):
2089         (MyObject_getPropertyList):
2090         (MyObject_callAsFunction):
2091         (MyObject_callAsConstructor):
2092         (MyObject_convertToType):
2093         (MyObject_finalize):
2094         (print_callAsFunction):
2095         (main):
2096         (createStringWithContentsOfFile):
2097         * API/testapi.js: Added.
2098         * ChangeLog:
2099         * JavaScriptCore.xcodeproj/project.pbxproj:
2100         * bindings/npruntime_impl.h:
2101         * kjs/array_instance.h:
2102         * kjs/array_object.cpp:
2103         (ArrayInstance::getPropertyList):
2104         * kjs/interpreter.cpp:
2105         (KJS::Interpreter::evaluate):
2106         * kjs/nodes.cpp:
2107         (ForInNode::execute):
2108         * kjs/object.cpp:
2109         (KJS::JSObject::put):
2110         (KJS::JSObject::canPut):
2111         (KJS::JSObject::deleteProperty):
2112         (KJS::JSObject::propertyIsEnumerable):
2113         (KJS::JSObject::getPropertyAttributes):
2114         (KJS::JSObject::getPropertyList):
2115         * kjs/object.h:
2116         * kjs/property_map.cpp:
2117         (KJS::PropertyMap::get):
2118         * kjs/property_map.h:
2119         * kjs/scope_chain.cpp:
2120         (KJS::ScopeChain::print):
2121         * kjs/string_object.cpp:
2122         (StringInstance::getPropertyList):
2123         * kjs/string_object.h:
2124         * kjs/ustring.h:
2125         (KJS::UString::Rep::ref):
2126
2127 2006-06-20  Timothy Hatcher  <timothy@apple.com>
2128
2129         Reviewed by Geoff.
2130
2131         Make sure we clear the exception before returning so
2132         that future calls will not fail because of an earlier
2133         exception state. Assert on entry that the WebScriptObject
2134         is working with an ExecState that dose not have an exception. 
2135         Document that evaluateWebScript and callWebScriptMethod return
2136         WebUndefined when an exception is thrown.
2137
2138         * bindings/objc/WebScriptObject.h:
2139         * bindings/objc/WebScriptObject.mm:
2140         (-[WebScriptObject callWebScriptMethod:withArguments:]):
2141         (-[WebScriptObject evaluateWebScript:]):
2142         (-[WebScriptObject setValue:forKey:]):
2143         (-[WebScriptObject valueForKey:]):
2144         (-[WebScriptObject removeWebScriptKey:]):
2145         (-[WebScriptObject webScriptValueAtIndex:]):
2146         (-[WebScriptObject setWebScriptValueAtIndex:value:]):
2147
2148 2006-06-19  Anders Carlsson  <acarlsson@apple.com>
2149
2150         Reviewed by John.
2151
2152         * kjs/interpreter.cpp:
2153         (KJS::TimeoutChecker::pauseTimeoutCheck):
2154         (KJS::TimeoutChecker::resumeTimeoutCheck):
2155         Fix argument order in setitimer calls.
2156
2157 2006-06-18  Anders Carlsson  <acarlsson@apple.com>
2158
2159         Reviewed by Geoff.
2160
2161         * kjs/interpreter.cpp:
2162         (KJS::TimeoutChecker::pauseTimeoutCheck):
2163         Do nothing if the timeout check hasn't been started.
2164         
2165         (KJS::TimeoutChecker::resumeTimeoutCheck):
2166         Do nothing if the timeout check hasn't been started.
2167         Use the right signal handler when unblocking.
2168         
2169         (KJS::Interpreter::handleTimeout):
2170         pause/resume the timeout check around the call to
2171         shouldInterruptScript().
2172         
2173 2006-06-16  Ben Goodger <beng@google.com>
2174         
2175         Reviewed by Maciej
2176
2177         http://bugzilla.opendarwin.org/show_bug.cgi?id=9491
2178         Windows build breaks in interpreter.cpp 
2179
2180         * kjs/interpreter.cpp
2181         (KJS::TimeoutChecker::pauseTimeoutCheck):
2182         (KJS::TimeoutChecker::resumeTimeoutCheck):
2183         Make sure to only assert equality with s_executingInterpreter when it 
2184         is being used (i.e. when HAVE(SYS_TIME_H) == true)
2185
2186 2006-06-17  David Kilzer  <ddkilzer@kilzer.net>
2187
2188         Reviewed by darin.
2189
2190         http://bugzilla.opendarwin.org/show_bug.cgi?id=9477
2191         REGRESSION: fast/dom/replaceChild.html crashes on WebKit ToT in debug build
2192
2193         * kjs/function.cpp:
2194         (KJS::FunctionImp::callAsFunction): Refetch the debugger after executing the function
2195         in case the WebFrame it was running in has since been destroyed.
2196
2197 2006-06-17  David Kilzer  <ddkilzer@kilzer.net>
2198
2199         Reviewed by ggaren.
2200
2201         http://bugzilla.opendarwin.org/show_bug.cgi?id=9476
2202         REGRESSION: Reproducible crash after closing window after viewing
2203         css2.1/t0803-c5501-imrgn-t-00-b-ag.html
2204
2205         * kjs/debugger.cpp:
2206         (Debugger::detach): Call setDebugger(0) for all interpreters removed from
2207         the 'attached to a debugger' list.
2208
2209 2006-06-17  Anders Carlsson  <acarlsson@apple.com>
2210
2211         Reviewed by Maciej and Geoff.
2212
2213         http://bugzilla.opendarwin.org/show_bug.cgi?id=7080
2214         Provide some way to stop a JavaScript infinite loop
2215         
2216         * kjs/completion.h:
2217         (KJS::):
2218         Add Interrupted completion type.
2219         
2220         * kjs/function.cpp:
2221         (KJS::FunctionImp::callAsFunction):
2222         (KJS::GlobalFuncImp::callAsFunction):
2223         Only set the exception on the new ExecState if the current one has had one.
2224         
2225         * kjs/interpreter.cpp:
2226         (KJS::TimeoutChecker::startTimeoutCheck):
2227         (KJS::TimeoutChecker::stopTimeoutCheck):
2228         (KJS::TimeoutChecker::alarmHandler):
2229         (KJS::TimeoutChecker::pauseTimeoutCheck):
2230         (KJS::TimeoutChecker::resumeTimeoutCheck):
2231         New TimeoutChecker class which handles setting Interpreter::m_timedOut flag after a given
2232         period of time. This currently only works on Unix platforms where setitimer and signals are used.
2233         
2234         (KJS::Interpreter::Interpreter):
2235         Initialize new member variables.
2236         
2237         (KJS::Interpreter::~Interpreter):
2238         Destroy the timeout checker.
2239         
2240         (KJS::Interpreter::startTimeoutCheck):
2241         (KJS::Interpreter::stopTimeoutCheck):
2242         (KJS::Interpreter::pauseTimeoutCheck):
2243         (KJS::Interpreter::resumeTimeoutCheck):
2244         Call the timeout checker.
2245         
2246         (KJS::Interpreter::handleTimeout):
2247         Called on timeout. Resets the m_timedOut flag and calls shouldInterruptScript.
2248         
2249         * kjs/interpreter.h:
2250         (KJS::Interpreter::setTimeoutTime):
2251         New function for setting the timeout time.
2252         
2253         (KJS::Interpreter::shouldInterruptScript):
2254         New function. The idea is that this should be overridden by subclasses in order to for example
2255         pop up a dialog asking the user if the script should be interrupted.
2256         
2257         (KJS::Interpreter::checkTimeout):
2258         New function which checks the m_timedOut flag and calls handleTimeout if it's set.
2259         
2260         * kjs/nodes.cpp:
2261         (DoWhileNode::execute):
2262         (WhileNode::execute):
2263         (ForNode::execute):
2264         Call Interpreter::checkTimeout after each iteration of the loop.
2265
2266 2006-06-15  Timothy Hatcher  <timothy@apple.com>
2267
2268         Reviewed by Geoff and Darin.
2269         
2270         Prefer the DWARF debugging symbols format for use in Xcode 2.3.
2271
2272         * JavaScriptCore.xcodeproj/project.pbxproj:
2273
2274 2006-06-14  Geoffrey Garen  <ggaren@apple.com>
2275
2276         Reviewed by Beth.
2277         
2278         - fixed http://bugzilla.opendarwin.org/show_bug.cgi?id=9438
2279         Someone broke ToT: cannot build
2280
2281         * JavaScriptCore.xcodeproj/project.pbxproj:
2282         * bindings/runtime_root.h: Changed "Interpreter.h" to "interpreter.h"
2283
2284 2006-06-12  Geoffrey Garen  <ggaren@apple.com>
2285
2286         build fix
2287         
2288         * bindings/objc/WebScriptObject.mm:
2289         (+[WebScriptObject throwException:]): Restore assignment I accidentally
2290         deleted in previous commit
2291
2292 2006-06-12  Geoffrey Garen  <ggaren@apple.com>
2293
2294         Reviewed by TimO, Maciej.
2295         
2296         - Merged InterpreterImp code into Interpreter, which implements
2297         all interpreter functionality now. This is part of my continuing quest
2298         to create an external notion of JS "execution context" that is unified and simple --
2299         something to replace the mix of Context, ContextImp, ExecState, Interpreter,
2300         InterpreterImp, and JSRun.
2301         
2302         All tests pass. Leaks test has not regressed from its baseline ~207 leaks
2303         with ~3460 leaked nodes.
2304
2305         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
2306         * JavaScriptCore.xcodeproj/project.pbxproj:
2307         * bindings/NP_jsobject.cpp:
2308         * bindings/objc/WebScriptObject.mm:
2309         (+[WebScriptObject throwException:]):
2310         * bindings/runtime_root.cpp:
2311         * bindings/runtime_root.h:
2312         * kjs/Context.cpp:
2313         (KJS::Context::Context):
2314         * kjs/ExecState.cpp: Added.
2315         (KJS::ExecState::lexicalInterpreter):
2316         * kjs/ExecState.h: Added.
2317         (KJS::ExecState::dynamicInterpreter):
2318         * kjs/SavedBuiltins.h: Added.
2319         * kjs/bool_object.cpp:
2320         (BooleanPrototype::BooleanPrototype):
2321         * kjs/collector.cpp:
2322         (KJS::Collector::collect):
2323         (KJS::Collector::numInterpreters):
2324         * kjs/context.h:
2325         * kjs/debugger.cpp:
2326         (Debugger::attach):
2327         (Debugger::detach):
2328         * kjs/function.cpp:
2329         (KJS::FunctionImp::callAsFunction):
2330         (KJS::GlobalFuncImp::callAsFunction):
2331         * kjs/function_object.cpp:
2332         (FunctionObjectImp::construct):
2333         * kjs/internal.cpp:
2334         * kjs/internal.h:
2335         * kjs/interpreter.cpp:
2336         (KJS::interpreterMap):
2337         (KJS::Interpreter::Interpreter):
2338         (KJS::Interpreter::init):
2339         (KJS::Interpreter::~Interpreter):
2340         (KJS::Interpreter::globalObject):
2341         (KJS::Interpreter::initGlobalObject):
2342         (KJS::Interpreter::globalExec):
2343         (KJS::Interpreter::checkSyntax):
2344         (KJS::Interpreter::evaluate):
2345         (KJS::Interpreter::builtinObject):
2346         (KJS::Interpreter::builtinFunction):
2347         (KJS::Interpreter::builtinArray):
2348         (KJS::Interpreter::builtinBoolean):
2349         (KJS::Interpreter::builtinString):
2350         (KJS::Interpreter::builtinNumber):
2351         (KJS::Interpreter::builtinDate):
2352         (KJS::Interpreter::builtinRegExp):
2353         (KJS::Interpreter::builtinError):
2354         (KJS::Interpreter::builtinObjectPrototype):
2355         (KJS::Interpreter::builtinFunctionPrototype):
2356         (KJS::Interpreter::builtinArrayPrototype):
2357         (KJS::Interpreter::builtinBooleanPrototype):
2358         (KJS::Interpreter::builtinStringPrototype):
2359         (KJS::Interpreter::builtinNumberPrototype):
2360         (KJS::Interpreter::builtinDatePrototype):
2361         (KJS::Interpreter::builtinRegExpPrototype):
2362         (KJS::Interpreter::builtinErrorPrototype):
2363         (KJS::Interpreter::builtinEvalError):
2364         (KJS::Interpreter::builtinRangeError):
2365         (KJS::Interpreter::builtinReferenceError):
2366         (KJS::Interpreter::builtinSyntaxError):
2367         (KJS::Interpreter::builtinTypeError):
2368         (KJS::Interpreter::builtinURIError):
2369         (KJS::Interpreter::builtinEvalErrorPrototype):
2370         (KJS::Interpreter::builtinRangeErrorPrototype):
2371         (KJS::Interpreter::builtinReferenceErrorPrototype):
2372         (KJS::Interpreter::builtinSyntaxErrorPrototype):
2373         (KJS::Interpreter::builtinTypeErrorPrototype):
2374         (KJS::Interpreter::builtinURIErrorPrototype):
2375         (KJS::Interpreter::mark):
2376         (KJS::Interpreter::interpreterWithGlobalObject):
2377         (KJS::Interpreter::saveBuiltins):
2378         (KJS::Interpreter::restoreBuiltins):
2379         * kjs/interpreter.h:
2380         (KJS::Interpreter::setCompatMode):
2381         (KJS::Interpreter::compatMode):
2382         (KJS::Interpreter::firstInterpreter):
2383         (KJS::Interpreter::nextInterpreter):
2384         (KJS::Interpreter::prevInterpreter):
2385         (KJS::Interpreter::debugger):
2386         (KJS::Interpreter::setDebugger):
2387         (KJS::Interpreter::setContext):
2388         (KJS::Interpreter::context):
2389         * kjs/nodes.cpp:
2390         (StatementNode::hitStatement):
2391         (RegExpNode::evaluate):
2392         * kjs/protect.h:
2393
2394 2006-06-12  Geoffrey Garen  <ggaren@apple.com>
2395
2396         Reviewed by Maciej.
2397         
2398         - Have *.lut.h files #include lookup.h to eliminate surprising header
2399         include order dependency.
2400
2401         * DerivedSources.make:
2402         * kjs/array_object.cpp:
2403         * kjs/date_object.cpp:
2404         * kjs/date_object.h:
2405         (KJS::DateProtoFunc::):
2406         * kjs/lexer.cpp:
2407         * kjs/math_object.cpp:
2408         * kjs/number_object.cpp:
2409         * kjs/regexp_object.cpp:
2410         * kjs/string_object.cpp:
2411
2412 2006-06-10  Geoffrey Garen  <ggaren@apple.com>
2413
2414         - http://bugzilla.opendarwin.org/show_bug.cgi?id=8515
2415         Linux porting compile bug
2416         
2417         Fix by Mike Emmel, Reviewed by Darin.
2418
2419         * JavaScriptCoreSources.bkl:
2420         * jscore.bkl:
2421         * wtf/Platform.h:
2422
2423 2006-06-09  Geoffrey Garen  <ggaren@apple.com>
2424
2425         Build fix -- I think :).
2426
2427         * JavaScriptCore.xcodeproj/project.pbxproj:
2428         * kjs/context.h:
2429
2430 2006-06-09  Geoffrey Garen  <ggaren@apple.com>
2431
2432         Reviewed by Eric (yay!).
2433         
2434         - Removed Context wrapper for ContextImp, renamed ContextImp to Context,
2435         split Context into its own file -- Context.cpp -- renamed _var to m_var,
2436         change ' *' to '* '.
2437
2438         * JavaScriptCore.xcodeproj/project.pbxproj:
2439         * kjs/Context.cpp: Added.
2440         (KJS::Context::Context):
2441         (KJS::Context::~Context):
2442         (KJS::Context::mark):
2443         * kjs/context.h:
2444         (KJS::Context::scopeChain):
2445         (KJS::Context::variableObject):
2446         (KJS::Context::setVariableObject):
2447         (KJS::Context::thisValue):
2448         (KJS::Context::callingContext):
2449         (KJS::Context::activationObject):
2450         (KJS::Context::currentBody):
2451         (KJS::Context::function):
2452         (KJS::Context::arguments):
2453         (KJS::Context::pushScope):
2454         (KJS::Context::seenLabels):
2455         * kjs/function.cpp:
2456         (KJS::FunctionImp::callAsFunction):
2457         (KJS::FunctionImp::processParameters):
2458         (KJS::FunctionImp::argumentsGetter):
2459         (KJS::GlobalFuncImp::callAsFunction):
2460         * kjs/internal.cpp:
2461         (KJS::InterpreterImp::evaluate):
2462         * kjs/internal.h:
2463         (KJS::InterpreterImp::setContext):
2464         (KJS::InterpreterImp::context):
2465         * kjs/interpreter.cpp:
2466         * kjs/interpreter.h:
2467         (KJS::ExecState::context):
2468         (KJS::ExecState::ExecState):
2469         * kjs/nodes.cpp:
2470         (currentSourceId):
2471         (currentSourceURL):
2472         (ThisNode::evaluate):
2473         (ResolveNode::evaluate):
2474         (FunctionCallResolveNode::evaluate):
2475         (PostfixResolveNode::evaluate):
2476         (DeleteResolveNode::evaluate):
2477         (TypeOfResolveNode::evaluate):
2478         (PrefixResolveNode::evaluate):
2479         (AssignResolveNode::evaluate):
2480         (VarDeclNode::evaluate):
2481         (VarDeclNode::processVarDecls):
2482         (DoWhileNode::execute):
2483         (WhileNode::execute):
2484         (ForNode::execute):
2485         (ForInNode::execute):
2486         (ContinueNode::execute):
2487         (BreakNode::execute):
2488         (ReturnNode::execute):
2489         (WithNode::execute):
2490         (SwitchNode::execute):
2491         (LabelNode::execute):
2492         (TryNode::execute):
2493         (FuncDeclNode::processFuncDecl):
2494         (FuncExprNode::evaluate):
2495
2496 2006-06-07  Geoffrey Garen  <ggaren@apple.com>
2497
2498         Removed API directory I prematurely/accidentally added.
2499
2500         * API: Removed.
2501
2502 2006-06-05  Mitz Pettel  <opendarwin.org@mitzpettel.com>
2503
2504         Reviewed and landed by Geoff.
2505
2506         - fix a regression in ecma_3/String/regress-104375.js
2507
2508         * kjs/string_object.cpp:
2509         (substituteBackreferences): If a 2-digit back reference is out of range,
2510         parse it as a 1-digit reference (followed by the other digit). This matches
2511         Firefox's behavior.
2512
2513 2006-06-05  Geoffrey Garen  <ggaren@apple.com>
2514
2515         Reviewed By Maciej.
2516         Darin already reviewed this change on the branch. See <rdar://problem/4317701>.
2517         
2518         - Fixed <rdar://problem/4291345> PCRE overflow in Safari JavaScriptCore
2519
2520         No test case because there's no behavior change.
2521         
2522         * pcre/pcre_compile.c:
2523         (read_repeat_counts): Check for integer overflow / out of bounds
2524
2525 2006-06-05  Geoffrey Garen  <ggaren@apple.com>
2526
2527         Reviewed by aliu.
2528
2529         - Changed CString length from int to size_t. We sould probably do this
2530         for UString, too. (Darin, if you're reading this: Maciej said so.)
2531         
2532         * kjs/function.cpp:
2533         (KJS::encode):
2534         * kjs/ustring.cpp:
2535         (KJS::CString::CString):
2536         (KJS::operator==):
2537         * kjs/ustring.h:
2538         (KJS::CString::size):
2539
2540 2006-06-04  Geoffrey Garen  <ggaren@apple.com>
2541
2542         Reviewed by Maciej.
2543         
2544         - http://bugzilla.opendarwin.org/show_bug.cgi?id=9304
2545         Minor cleanup in JavaScriptCore
2546
2547         * kjs/value.h: Removed redundant declarations
2548
2549 2006-06-04  Darin Adler  <darin@apple.com>
2550
2551         Reviewed by Anders.
2552
2553         - changed deleteAllValues so it can work on "const" collections
2554           Deleting the values affects the values, not the pointers in the
2555           collection, so it's legitimate to do it to a const collection,
2556           and a case of that actually came up in the XPath code.
2557
2558         * wtf/HashMap.h:
2559         (WTF::deleteAllPairSeconds): Use const iterators.
2560         (WTF::deleteAllValues): Take const HashMap reference as a parameter.
2561         * wtf/HashSet.h:
2562         (WTF::deleteAllValues): Take const HashSet reference as a parameter,
2563         and use const iterators.
2564         * wtf/Vector.h:
2565         (WTF::deleteAllValues): Take const Vector reference as a parameter.
2566
2567         - added more functions that are present in <math.h> on some platforms,
2568           but not on others; moved here from various files in WebCore
2569
2570         * wtf/MathExtras.h:
2571         (isinf): Added.
2572         (isnan): Added.
2573         (lround): Added.
2574         (lroundf): Tweaked.
2575         (round): Added.
2576         (roundf): Tweaked.
2577         (signbit): Added.
2578
2579 2006-06-02  Mitz Pettel  <opendarwin.org@mitzpettel.com>
2580
2581         Reviewed by ggaren.
2582
2583         - http://bugzilla.opendarwin.org/show_bug.cgi?id=9234
2584           Implement $&, $' and $` replacement codes in String.prototype.replace
2585
2586         Test: fast/js/string-replace-3.html
2587
2588         * kjs/string_object.cpp:
2589         (substituteBackreferences): Added support for $& (matched substring),
2590         $` (everything preceding matched substring), $' (everything following
2591         matched substring) and 2-digit back references, and cleaned up a little.
2592
2593 2006-06-02 Adele Peterson  <adele@apple.com>
2594
2595         Reviewed by Darin.
2596
2597         Set incremental linking to no. This seems to fix a build problem I was seeing
2598         where dftables couldn't find a dll. 
2599
2600         * JavaScriptCore.vcproj/dftables/dftables.vcproj:
2601
2602 2006-05-26  Steve Falkenburg  <sfalken@apple.com>
2603
2604         Build fixes/tweaks
2605
2606         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
2607
2608 === JavaScriptCore-521.11 ===
2609
2610 2006-05-24  Geoffrey Garen  <ggaren@apple.com>
2611
2612         Reviewed by mjs.
2613         
2614         - JSC half of fix for <rdar://problem/4557926> TOT REGRESSSION: Crash
2615         occurs when attempting to view image in slideshow mode at
2616         http://d.smugmug.com/gallery/581716 ( KJS::IfNode::execute
2617         (KJS::ExecState*) + 312)
2618
2619         On alternate threads, DOMObjects remain in the
2620         ScriptInterpreter's cache because they're not collected. So, they
2621         need an opportunity to mark their children.
2622         
2623         I'm not particularly happy with this solution because it fails to
2624         resolve many outstanding issues with the DOM object cache. Since none
2625         of those issues is a crasher or a serious compatibility concern,
2626         and since the behavior of other browsers is not much to go on in this
2627         case, I've filed <rdar://problem/4561439> about that, and I'm moving on 
2628         with my life.
2629
2630         * JavaScriptCore.xcodeproj/project.pbxproj:
2631         * kjs/collector.cpp:
2632         (KJS::Collector::collect):
2633         * kjs/internal.cpp:
2634         (KJS::InterpreterImp::mark):
2635         * kjs/internal.h:
2636         * kjs/interpreter.cpp:
2637         (KJS::Interpreter::mark):
2638         * kjs/interpreter.h:
2639
2640 === JavaScriptCore-521.10 ===
2641
2642 2006-05-22  Timothy Hatcher  <timothy@apple.com>
2643
2644         Reviewed by Eric, Kevin and Geoff.
2645
2646         Merge open source build fixes. <rdar://problem/4555500>
2647
2648         * kjs/collector.cpp: look at the rsp register in x86_64 
2649         (KJS::Collector::markOtherThreadConservatively):
2650         * wtf/Platform.h: add x86_64 to the platform list
2651
2652 2006-05-19  Anders Carlsson  <acarlsson@apple.com>
2653
2654         Reviewed by Geoff.
2655
2656         http://bugzilla.opendarwin.org/show_bug.cgi?id=8993
2657         Support function declaration in case statements
2658         
2659         * kjs/grammar.y: Get rid of StatementList and use SourceElements instead.
2660         
2661         * kjs/nodes.cpp:
2662         (CaseClauseNode::evalStatements):
2663         (CaseClauseNode::processVarDecls):
2664         (CaseClauseNode::processFuncDecl):
2665         (ClauseListNode::processFuncDecl):
2666         (CaseBlockNode::processFuncDecl):
2667         (SwitchNode::processFuncDecl):
2668         * kjs/nodes.h:
2669         (KJS::CaseClauseNode::CaseClauseNode):
2670         (KJS::ClauseListNode::ClauseListNode):
2671         (KJS::ClauseListNode::getClause):
2672         (KJS::ClauseListNode::getNext):
2673         (KJS::ClauseListNode::releaseNext):
2674         (KJS::SwitchNode::SwitchNode):
2675         Add processFuncDecl for the relevant nodes.        
2676
2677         * kjs/nodes2string.cpp:
2678         (CaseClauseNode::streamTo):
2679         next got renamed to source.
2680
2681 2006-05-17  George Staikos <staikos@kde.org>
2682
2683         Reviewed by Maciej, Alexey, and Eric.
2684
2685         * pcre/pcre_compile.c:
2686         * pcre/pcre_get.c:
2687         * pcre/pcre_exec.c:
2688         * wtf/UnusedParam.h:
2689         Use /**/ in .c files to compile with non-C99 and non-GCC compilers.
2690
2691         * kjs/testkjs.cpp:
2692         Change include to <wtf/HashTraits.h> from "HashTraits.h" to avoid -I
2693
2694         * wtf/unicode/qt4/UnicodeQt4.h:
2695         Use correct parentheses and correct mask for utf-32 support.
2696
2697 2006-05-17  Alexey Proskuryakov  <ap@nypop.com>
2698
2699         Reviewed by Darin.
2700
2701         - fix http://bugzilla.opendarwin.org/show_bug.cgi?id=8870
2702         Crash typing in Yahoo auto-complete widget.
2703
2704         Test: fast/js/regexp-stack-overflow.html
2705
2706         * pcre/pcre-config.h: Define NO_RECURSE.
2707
2708 2006-05-16  George Staikos <staikos@kde.org>
2709
2710         Reviewed by Maciej.
2711
2712         Fix some warnings and strict compilation errors.
2713
2714         * kjs/nodes.cpp: 
2715         * kjs/value.cpp: 
2716
2717 2006-05-15  Alexey Proskuryakov  <ap@nypop.com>
2718
2719         * make-generated-sources.sh: Changed to be executable and removed
2720         text in the file generated by "svn diff".
2721
2722 2006-05-15  Geoffrey Garen  <ggaren@apple.com>
2723
2724         Reviewed by Maciej.
2725
2726         - Fixed <rdar://problem/4534904> please do not treat "debugger" as
2727         a reserved word while parsing JavaScript (and other ECMA reserved
2728         words) 
2729
2730         AKA 
2731
2732         http://bugzilla.opendarwin.org/show_bug.cgi?id=6179 
2733         We treat "char" as a reserved word in JavaScript and firefox/IE do
2734         not
2735
2736         (1) I unreserved most of the spec's "future reserved words" because 
2737         they're not reserved in IE or FF. (Most, but not all, because IE
2738         somewhat randomly *does* reserve a few of them.)
2739         (2) I made 'debugger' a legitimate statement that acts like an empty
2740         statement because FF and IE support it.
2741         
2742         * kjs/grammar.y:
2743         * kjs/keywords.table:
2744
2745 2006-05-15  Tim Omernick  <timo@apple.com>
2746
2747         Reviewed by John Sullivan.
2748
2749         Part of <rdar://problem/4466508> Add 64-bit support to the Netscape Plugin API
2750
2751         Added to the Netscape Plugin API the concept of "plugin drawing models".  The drawing model
2752         determines the kind of graphics context created by the browser for the plugin, as well as 
2753         the Mac types of various Netscape Plugin API data structures.
2754
2755         There is a drawing model to represent the old QuickDraw-based API.  It is used by default
2756         if QuickDraw is available on the system, unless the plugin specifies another drawing model.
2757
2758         The big change is the addition of the CoreGraphics drawing model.  A plugin may request this
2759         drawing model to obtain access to a CGContextRef for drawing, instead of a QuickDraw CGrafPtr.
2760
2761         * bindings/npapi.h:
2762         Define NP_NO_QUICKDRAW when compiling 64-bit; there is no 64-bit QuickDraw.
2763         Added NPNVpluginDrawingModel, NPNVsupportsQuickDrawBool, and NPNVsupportsCoreGraphicsBool
2764         variables.
2765         Added NPDrawingModel enumeration.  Currently the only drawing models are QuickDraw and
2766         CoreGraphics.
2767         NPRegion's type now depends on the drawing model specified by the plugin.
2768         NP_Port is now only defined when QuickDraw is available.
2769         Added NP_CGContext, which is the type of the NPWindow's "window" member in CoreGraphics mode.
2770
2771 2006-05-13  Kevin M. Ollivier  <kevino@theolliviers.com>
2772
2773         Reviewed by Darin, landed by ap.
2774
2775         - http://bugzilla.opendarwin.org/show_bug.cgi?id=8528
2776           Bakefiles (and generated Makefiles) for wx and gdk ports
2777
2778         * make-generated-sources.sh: 
2779         Added script to configure environment to run DerivedSources.make
2780         
2781         * JavaScriptCoreSources.bkl:
2782         Added JavaScriptCore sources list for Bakefile.
2783         
2784         * jscore.bkl:
2785         Bakefile used to generate JavaScriptCore project files 
2786         (currently only used by wx and gdk ports)
2787
2788 2006-05-09  Steve Falkenburg  <sfalken@apple.com>
2789
2790         Fix Windows build.
2791         Minor fixes to WTF headers.
2792         
2793         Reviewed by kevin.
2794
2795         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: Fix include dirs, paths to files. 
2796         * JavaScriptCore.vcproj/testkjs/testkjs.vcproj: Fix include dirs.
2797         * wtf/Assertions.h: include Platform.h to get definition for COMPILER()
2798         * wtf/Vector.h: include FastMalloc.h for definition of fastMalloc, fastFree
2799
2800 2006-05-09  Maciej Stachowiak  <mjs@apple.com>
2801
2802         Rubber stamped by Anders.
2803         
2804         - renamed kxmlcore to wtf
2805         
2806         kxmlcore --> wtf
2807         KXMLCore --> WTF
2808         KXC --> WTF
2809
2810         * JavaScriptCore.xcodeproj/project.pbxproj:
2811         * bindings/c/c_instance.cpp:
2812         * bindings/objc/WebScriptObject.mm:
2813         * kjs/JSImmediate.h:
2814         * kjs/Parser.cpp:
2815         * kjs/Parser.h:
2816         * kjs/array_object.cpp:
2817         * kjs/collector.cpp:
2818         (KJS::Collector::registerThread):
2819         * kjs/collector.h:
2820         * kjs/config.h:
2821         * kjs/function.cpp:
2822         (KJS::isStrWhiteSpace):
2823         * kjs/function.h:
2824         * kjs/identifier.cpp:
2825         * kjs/internal.cpp:
2826         * kjs/internal.h:
2827         * kjs/lexer.cpp:
2828         (Lexer::shift):
2829         (Lexer::isWhiteSpace):
2830         (Lexer::isIdentStart):
2831         (Lexer::isIdentPart):
2832         * kjs/lookup.cpp:
2833         * kjs/nodes.cpp:
2834         * kjs/nodes.h:
2835         * kjs/number_object.cpp:
2836         * kjs/object.h:
2837         * kjs/property_map.cpp:
2838         * kjs/property_map.h:
2839         * kjs/string_object.cpp:
2840         (StringProtoFunc::callAsFunction):
2841         * kjs/testkjs.cpp:
2842         (testIsInteger):
2843         * kjs/ustring.cpp:
2844         * kjs/ustring.h:
2845         * kxmlcore: Removed.
2846         * kxmlcore/AlwaysInline.h: Removed.
2847         * kxmlcore/Assertions.cpp: Removed.
2848         * kxmlcore/Assertions.h: Removed.
2849         * kxmlcore/FastMalloc.cpp: Removed.
2850         * kxmlcore/FastMalloc.h: Removed.
2851         * kxmlcore/FastMallocInternal.h: Removed.
2852         * kxmlcore/Forward.h: Removed.
2853         * kxmlcore/HashCountedSet.h: Removed.
2854         * kxmlcore/HashFunctions.h: Removed.
2855         * kxmlcore/HashMap.h: Removed.
2856         * kxmlcore/HashSet.h: Removed.
2857         * kxmlcore/HashTable.cpp: Removed.
2858         * kxmlcore/HashTable.h: Removed.
2859         * kxmlcore/HashTraits.h: Removed.
2860         * kxmlcore/ListRefPtr.h: Removed.
2861         * kxmlcore/Noncopyable.h: Removed.
2862         * kxmlcore/OwnArrayPtr.h: Removed.
2863         * kxmlcore/OwnPtr.h: Removed.
2864         * kxmlcore/PassRefPtr.h: Removed.
2865         * kxmlcore/Platform.h: Removed.
2866         * kxmlcore/RefPtr.h: Removed.
2867         * kxmlcore/TCPageMap.h: Removed.
2868         * kxmlcore/TCSpinLock.h: Removed.
2869         * kxmlcore/TCSystemAlloc.cpp: Removed.
2870         * kxmlcore/TCSystemAlloc.h: Removed.
2871         * kxmlcore/UnusedParam.h: Removed.
2872         * kxmlcore/Vector.h: Removed.
2873         * kxmlcore/VectorTraits.h: Removed.
2874         * kxmlcore/unicode: Removed.
2875         * kxmlcore/unicode/Unicode.h: Removed.
2876         * kxmlcore/unicode/UnicodeCategory.h: Removed.
2877         * kxmlcore/unicode/icu: Removed.
2878         * kxmlcore/unicode/icu/UnicodeIcu.h: Removed.
2879         * kxmlcore/unicode/posix: Removed.
2880         * kxmlcore/unicode/qt3: Removed.
2881         * kxmlcore/unicode/qt4: Removed.
2882         * kxmlcore/unicode/qt4/UnicodeQt4.h: Removed.
2883         * pcre/pcre_get.c:
2884         * wtf: Added.
2885         * wtf/Assertions.cpp:
2886         * wtf/Assertions.h:
2887         * wtf/FastMalloc.cpp:
2888         (WTF::TCMalloc_ThreadCache::Scavenge):
2889         (WTF::do_malloc):
2890         (WTF::do_free):
2891         (WTF::TCMallocGuard::TCMallocGuard):
2892         (WTF::malloc):
2893         (WTF::free):
2894         (WTF::calloc):
2895         (WTF::cfree):
2896         (WTF::realloc):
2897         * wtf/FastMalloc.h:
2898         * wtf/FastMallocInternal.h:
2899         * wtf/Forward.h:
2900         * wtf/HashCountedSet.h:
2901         * wtf/HashFunctions.h:
2902         * wtf/HashMap.h:
2903         * wtf/HashSet.h:
2904         * wtf/HashTable.cpp:
2905         * wtf/HashTable.h:
2906         * wtf/HashTraits.h:
2907         * wtf/ListRefPtr.h:
2908         * wtf/Noncopyable.h:
2909         * wtf/OwnArrayPtr.h:
2910         * wtf/OwnPtr.h:
2911         * wtf/PassRefPtr.h:
2912         * wtf/RefPtr.h:
2913         * wtf/TCSystemAlloc.cpp:
2914         (TCMalloc_SystemAlloc):
2915         * wtf/Vector.h:
2916         * wtf/VectorTraits.h:
2917         * wtf/unicode/UnicodeCategory.h:
2918         * wtf/unicode/icu/UnicodeIcu.h:
2919
2920 2006-05-08  Timothy Hatcher  <timothy@apple.com>
2921
2922         Reviewed by Tim O.
2923
2924         * bindings/npapi.h: do not define #pragma options align=mac68k if we are 64-bit
2925
2926 2006-05-07  Darin Adler  <darin@apple.com>
2927
2928         Reviewed and landed by Maciej.
2929
2930         - fix http://bugzilla.opendarwin.org/show_bug.cgi?id=8765
2931         Random crashes on TOT since the form state change
2932         
2933         I haven't figured out how to construct a test for this, but this does seem to fix the
2934         problem; Mitz mentioned that a double-destroy was occurring in these functions.
2935         
2936         * kxmlcore/HashMap.h: (KXMLCore::HashMap::remove): Use RefCounter::deref instead of calling
2937         ~ValueType, because ~ValueType often results in a double-destroy, since the HashTable also
2938         destroys the element based on the storage type. The RefCounter template correctly does work
2939         only in cases where ValueType and ValueStorageType differ and this class is what's used
2940         elsewhere for the same purpose; I somehow missed this case when optimizing HashMap.
2941         * kxmlcore/HashSet.h: (KXMLCore::HashSet::remove): Ditto.
2942         
2943 2006-05-05  Darin Adler  <darin@apple.com>
2944
2945         - http://bugzilla.opendarwin.org/show_bug.cgi?id=8722
2946           IE compatibility fix in date parsing
2947
2948         * kjs/date_object.cpp: (KJS::parseDate): Merged change that George Staikos provided
2949         from KDE 3.4.3 branch that allows day values of 0 and values that are > 1000.
2950
2951 2006-05-04  Anders Carlsson  <andersca@mac.com>
2952
2953         Reviewed by Maciej.
2954
2955         http://bugzilla.opendarwin.org/show_bug.cgi?id=8734
2956         Would like a Vector::append that takes another Vector
2957         
2958         * kxmlcore/Vector.h:
2959         (KXMLCore::::append):
2960         New function that takes another array.
2961
2962 2006-05-02  Steve Falkenburg  <sfalken@apple.com>
2963
2964         Reviewed by eric.
2965
2966         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: set NDEBUG for release build
2967         * kxmlcore/FastMalloc.cpp: Prevent USE_SYSTEM_MALLOC from being defined twice
2968
2969 2006-05-02  Anders Carlsson  <andersca@mac.com>
2970
2971         Reviewed by Maciej.
2972
2973         * kxmlcore/HashMap.h:
2974         (KXMLCore::::operator):
2975         Return *this
2976
2977 2006-05-01  Tim Omernick  <timo@apple.com>
2978
2979         Reviewed by Tim Hatcher.
2980
2981         <rdar://problem/4476875> Support printing for embedded Netscape plugins
2982
2983         * bindings/npapi.h:
2984         Fixed struct alignment problem in our npapi.h.  Structs must be 68k-aligned on both pre-Mac OS X
2985         and Mac OS X systems, as this is what plugins expect.
2986
2987 2006-05-01  Timothy Hatcher  <timothy@apple.com>
2988
2989         Reviewed by Maciej.
2990         
2991         <rdar://problem/4308243> 8F36 Regression: crash in malloc_consolidate if you use a .PAC file
2992
2993         The original fix missed the oversized cell case. Added a test for "currentThreadIsMainThread || 
2994         imp->m_destructorIsThreadSafe" where we collect oversized cells.
2995
2996         We don't have a way to test PAC files yet, so there's no test attached.
2997
2998         * kjs/collector.cpp:
2999         (KJS::Collector::collect): test the thread when we collect oversized cells
3000
3001 2006-05-01  Tim Omernick  <timo@apple.com>
3002
3003         Reviewed by Adele.
3004
3005         <rdar://problem/4526114> REGRESSION (two days ago): LOG() just prints @ for NSObject substitutions
3006
3007         * kxmlcore/Assertions.cpp:
3008         Changed sense of strstr("%@") check.  I already made the same fix to the WebBrowser assertions.
3009
3010 2006-04-28  Steve Falkenburg  <sfalken@apple.com>
3011
3012         Reviewed by kdecker
3013         
3014         Actually apply the change that was reviewed insted of checking it in with an #if 0 (oops).
3015
3016         * kjs/testkjs.cpp:
3017         (main): Suppress C runtime alerts
3018
3019 2006-04-28  Steve Falkenburg  <sfalken@apple.com>
3020
3021         Reviewed by kdecker
3022
3023         Suppress error reporting dialog that blocks Javascript tests from completing.
3024         
3025         Real error is due to an overflow in the date/time handling functions that needs
3026         to be addressed, but this will prevent the hang running the Javascript tests
3027         on the build bot (along with the related changes).
3028         
3029         * kjs/testkjs.cpp:
3030         (main): Suppress C runtime alerts
3031
3032 2006-04-27  Geoffrey Garen  <ggaren@apple.com>
3033
3034         Reviewed by Maciej
3035
3036         - Minor fixups I discovered while working on the autogenerator.
3037         
3038         * kjs/lookup.cpp:
3039         (findEntry): ASSERT that size is not 0, because otherwise we'll % by 0,
3040         compute a garbage address, and possibly crash.
3041         * kjs/lookup.h:
3042         (cacheGlobalObject): Don't enumerate cached objects -- ideally, they
3043         would be hidden entirely.
3044
3045 2006-04-21  Kevin M. Ollivier  <kevino@theolliviers.com>
3046
3047         Reviewed by Darin.
3048
3049         - http://bugzilla.opendarwin.org/show_bug.cgi?id=8507
3050           Compilation fixes for building on gcc 4.0.2, and without precomp headers
3051
3052         * kjs/operations.h:
3053         * kxmlcore/Assertions.cpp:
3054         * kxmlcore/FastMalloc.cpp:
3055         Added necessary headers to resolve compilation issues when not using
3056         precompiled headers.
3057         
3058         * kjs/value.h: Declare the JSCell class before friend declaration  
3059         to resolve compilation issues with gcc 4.0.2.
3060         
3061         * kxmlcore/Platform.h: Set Unicode support to use ICU on platforms
3062         other than KDE (previously only defined for Win and Mac OS)
3063                 
3064 2006-04-18  Eric Seidel  <eseidel@apple.com>
3065
3066         Reviewed by ggaren.
3067
3068         Fix "new Function()" to correctly use lexical scoping.
3069         Add ScopeChain::print() function for debugging.
3070         <rdar://problem/4067864> REGRESSION (125-407): JavaScript failure on PeopleSoft REN Server
3071
3072         * kjs/function_object.cpp:
3073         (FunctionObjectImp::construct):
3074         * kjs/scope_chain.cpp:
3075         (KJS::ScopeChain::print):
3076         * kjs/scope_chain.h:
3077
3078 2006-04-14  James G. Speth  <speth@end.com>
3079
3080         Reviewed by Timothy.
3081
3082         Bug 8389: support for Cocoa bindings - binding an NSTreeController to the WebView's DOM
3083         http://bugzilla.opendarwin.org/show_bug.cgi?id=8389
3084
3085         Adds a category to WebScriptObject with array accessors for KVC/KVO.
3086
3087         If super valueForKey: fails it will call valueForUndefinedKey:, which is
3088         important because it causes the right behavior to happen with bindings using
3089         the "Raises for Not Applicable Keys" flag and the "Not Applicable Placeholder"
3090
3091         * bindings/objc/WebScriptObject.mm:
3092         (-[WebScriptObject valueForKey:]):
3093         (-[WebScriptObject count]):
3094         (-[WebScriptObject objectAtIndex:]):
3095         (-[WebUndefined description]): return "undefined"
3096
3097 2006-04-13  Geoffrey Garen  <ggaren@apple.com>
3098
3099         Reviewed by Darin.
3100
3101         * kjs/internal.cpp:
3102         (KJS::InterpreterImp::initGlobalObject): Add the built-in object
3103         prototype to the end of the global object's prototype chain instead of
3104         just blowing away its existing prototype. We need to do this because
3105         the window object has a meaningful prototype now.
3106
3107 2006-04-13  Maciej Stachowiak  <mjs@apple.com>
3108
3109         Reviewed by Geoff.
3110         
3111         - fix testkjs to not show false-positive KJS::Node leaks in debug builds
3112
3113         * kjs/testkjs.cpp:
3114         (doIt):
3115         (kjsmain):
3116
3117 2006-04-11  Geoffrey Garen  <ggaren@apple.com>
3118
3119         Reviewed by Maciej.
3120
3121         Minor code cleanup -- passes all the JS tests.
3122
3123         * kjs/object_object.cpp:
3124         (ObjectObjectImp::construct):
3125         (ObjectObjectImp::callAsFunction):
3126
3127 2006-04-11  Darin Adler  <darin@apple.com>
3128
3129         - another attempt to fix Windows build -- Vector in Forward.h was not working
3130
3131         * kxmlcore/Forward.h: Remove Vector.
3132         * kxmlcore/Vector.h: Add back default arguments, remove include of
3133         Forward.h.
3134
3135 2006-04-11  Darin Adler  <darin@apple.com>
3136
3137         - try to fix Windows build -- HashForward.h was not working
3138
3139         * kxmlcore/HashForward.h: Removed.
3140
3141         * JavaScriptCore.xcodeproj/project.pbxproj: Remove HashForward.h.
3142         * kjs/collector.h: Remove use of HashForward.h.
3143         * kxmlcore/HashCountedSet.h: Remove include of HashForward.h, restore
3144         default arguments.
3145         * kxmlcore/HashMap.h: Ditto.
3146         * kxmlcore/HashSet.h: Ditto.
3147
3148 2006-04-11  David Harrison  <harrison@apple.com>
3149
3150         Reviewed by Darin.
3151
3152         - fixed clean build, broken by Darin's check-in
3153
3154         * kjs/date_object.cpp: Add needed include of lookup.h.
3155         * kjs/regexp_object.cpp: Move include of .lut.h file below other includes.
3156
3157 2006-04-10  Darin Adler  <darin@apple.com>
3158
3159         Rubber-stamped by John Sullivan.
3160
3161         - switched from a shell script to a makefile for generated files
3162         - removed lots of unneeded includes
3163         - added new Forward.h and HashForward.h headers that allow compiling with
3164           fewer unneeded templates
3165
3166         * DerivedSources.make: Added.
3167         * generate-derived-sources: Removed.
3168         * JavaScriptCore.xcodeproj/project.pbxproj: Added new files, changed to use
3169         DerivedSources.make.
3170
3171         * kxmlcore/Forward.h: Added.
3172         * kxmlcore/HashForward.h: Added.
3173
3174         * kxmlcore/HashCountedSet.h: Include HashForward for default args.
3175         * kxmlcore/HashMap.h: Ditto.
3176         * kxmlcore/HashSet.h: Ditto.
3177
3178         * kjs/object.h:
3179         * kjs/object.cpp:
3180         Moved KJS_MAX_STACK into the .cpp file.
3181
3182         * bindings/NP_jsobject.cpp:
3183         * bindings/c/c_instance.h:
3184         * bindings/jni/jni_class.h:
3185         * bindings/jni/jni_runtime.h:
3186         * bindings/jni/jni_utility.h:
3187         * bindings/objc/WebScriptObject.mm:
3188         * bindings/objc/WebScriptObjectPrivate.h:
3189         * bindings/objc/objc_class.h:
3190         * bindings/objc/objc_class.mm:
3191         * bindings/objc/objc_instance.h:
3192         * bindings/objc/objc_instance.mm:
3193         * bindings/objc/objc_runtime.mm:
3194         * bindings/objc/objc_utility.mm:
3195         * bindings/runtime.h:
3196         * bindings/runtime_array.cpp:
3197         * bindings/runtime_array.h:
3198         * bindings/runtime_method.cpp:
3199         * bindings/runtime_method.h:
3200         * bindings/runtime_object.cpp:
3201         * bindings/runtime_root.h:
3202         * kjs/JSImmediate.cpp:
3203         * kjs/Parser.h:
3204         * kjs/array_object.cpp:
3205         * kjs/array_object.h:
3206         * kjs/bool_object.cpp:
3207         * kjs/bool_object.h:
3208         * kjs/collector.h:
3209         * kjs/context.h:
3210         * kjs/debugger.cpp:
3211         * kjs/error_object.h:
3212         * kjs/function_object.h:
3213         * kjs/internal.h:
3214         * kjs/lexer.cpp:
3215         * kjs/math_object.cpp:
3216         * kjs/math_object.h:
3217         * kjs/nodes.cpp:
3218         * kjs/nodes.h:
3219         * kjs/number_object.cpp:
3220         * kjs/number_object.h:
3221         * kjs/object_object.cpp:
3222         * kjs/operations.cpp:
3223         * kjs/protected_reference.h:
3224         * kjs/reference.h:
3225         * kjs/reference_list.h:
3226         * kjs/regexp_object.h:
3227         * kjs/string_object.cpp:
3228         * kjs/string_object.h:
3229         * kjs/testkjs.cpp:
3230         * kjs/value.cpp:
3231         * kjs/value.h:
3232         * kxmlcore/HashTable.h:
3233         * kxmlcore/ListRefPtr.h:
3234         * kxmlcore/TCPageMap.h:
3235         * kxmlcore/Vector.h:
3236         Removed unneeded header includes.
3237
3238 2006-04-09  Geoffrey Garen  <ggaren@apple.com>
3239
3240         Reviewed by eric.
3241
3242         - Fixed http://bugzilla.opendarwin.org/show_bug.cgi?id=8284
3243         prevent unnecessary entries in the "nodes with extra refs" hash table
3244
3245         This patch switches manually RefPtr exchange with use of
3246         RefPtr::release to ensure that a node's ref count never tops 1
3247         (in the normal case).
3248
3249         * kjs/nodes.cpp:
3250         (BlockNode::BlockNode):
3251         (CaseBlockNode::CaseBlockNode):
3252         * kjs/nodes.h:
3253         (KJS::ArrayNode::ArrayNode):
3254         (KJS::ObjectLiteralNode::ObjectLiteralNode):
3255         (KJS::ArgumentsNode::ArgumentsNode):
3256         (KJS::VarStatementNode::VarStatementNode):
3257         (KJS::ForNode::ForNode):
3258         (KJS::CaseClauseNode::CaseClauseNode):
3259         (KJS::FuncExprNode::FuncExprNode):
3260         (KJS::FuncDeclNode::FuncDeclNode):
3261
3262 2006-04-08  Alexey Proskuryakov  <ap@nypop.com>
3263
3264         Reviewed by Darin.
3265
3266         One more attempt - use reinterpret_cast, rather than static_cast.
3267
3268 2006-04-08  Alexey Proskuryakov  <ap@nypop.com>
3269
3270         Reviewed by Darin.
3271
3272         An attempt to fix Win32 build - ICU uses wchar_t on Windows, so we need a type cast.
3273
3274         * kxmlcore/unicode/icu/UnicodeIcu.h:
3275         (KXMLCore::Unicode::toLower):
3276         (KXMLCore::Unicode::toUpper):
3277
3278 2006-04-08  Alexey Proskuryakov  <ap@nypop.com>
3279
3280         Reviewed by Darin.
3281
3282         - fix http://bugzilla.opendarwin.org/show_bug.cgi?id=8264
3283         toLowerCase and toUpperCase don't honor special mappings
3284
3285         Test: fast/js/string-capitalization.html
3286
3287         * JavaScriptCore.xcodeproj/project.pbxproj: Added KXMLCore::Unicode headers to the project.
3288         * icu/unicode/putil.h: Added (copied from WebCore).
3289         * icu/unicode/uiter.h: Ditto.
3290         * icu/unicode/ustring.h: Ditto.
3291         * kjs/string_object.cpp:
3292         (StringProtoFunc::callAsFunction): Use the new KXMLCore::Unicode::toUpper() and toLower().
3293         * kjs/ustring.cpp: Removed unused (and evil) UChar::toLower() and toUpper().
3294         * kjs/ustring.h: Ditto.
3295
3296         * kxmlcore/unicode/Unicode.h: Corrected capitalization of the word Unicode.
3297         * kxmlcore/unicode/UnicodeCategory.h: Renamed include guard macro to match file name.
3298
3299         * kxmlcore/unicode/icu/UnicodeIcu.h:
3300         (KXMLCore::Unicode::toLower): Work on strings, not individual characters. Use ICU root locale.
3301         (KXMLCore::Unicode::toUpper): Ditto.
3302         (KXMLCore::Unicode::isFormatChar): Use int32_t, which can hold a complete code point.
3303         (KXMLCore::Unicode::isSeparatorSpace): Ditto.
3304         (KXMLCore::Unicode::category): Ditto.
3305         * kxmlcore/unicode/qt4/UnicodeQt4.h:
3306         (KXMLCore::Unicode::toLower): Work on strings, not individual characters.
3307         (KXMLCore::Unicode::toUpper): Ditto.
3308         (KXMLCore::Unicode::isFormatChar): Use int32_t, which can hold a complete code point.
3309         (KXMLCore::Unicode::isSeparatorSpace): Ditto.
3310         (KXMLCore::Unicode::category): Ditto.
3311
3312         * tests/mozilla/ecma/String/15.5.4.12-1.js: Corrected expected results.
3313         * tests/mozilla/ecma/String/15.5.4.12-5.js: Corrected expected results.
3314
3315 2006-04-05  Darin Adler  <darin@apple.com>
3316
3317         - attempt to fix Windows build
3318
3319         * kxmlcore/HashMap.h: (KXMLCore::HashMap::remove): Use (*it). instead of it->.
3320         * kxmlcore/HashSet.h: (KXMLCore::HashSet::remove): Ditto.
3321
3322 2006-04-05  Darin Adler  <darin@apple.com>
3323
3324         - attempt to fix Windows build
3325
3326         * os-win32/stdint.h: Add int8_t, uint8_t, int64_t.
3327
3328 2006-04-05  Darin Adler  <darin@apple.com>
3329
3330         Reviewed by Maciej.
3331
3332         - fix memory leak introduced by the previous change
3333
3334         * kxmlcore/HashTable.h: Specialize NeedsRef so that it correctly returns true when
3335         the value in question is a pair where one of the pair needs a ref and the other
3336         of the pair does not.
3337
3338 2006-04-05  Darin Adler  <darin@apple.com>
3339
3340         Reviewed by Maciej.
3341
3342         - JavaScriptCore part of fix for http://bugzilla.opendarwin.org/show_bug.cgi?id=8049
3343           StringImpl hash traits deleted value creates an init routine for WebCore
3344           <rdar://problem/4442248> REGRESSION: WebCore has init routines (8049)
3345
3346         Change HashMap and HashSet implementation so they fold various types together.
3347         This allows us to implement maps and sets that use RefPtr<WebCore::StringImpl>
3348         and WebCore::String in terms of the underlying raw pointer type, and hence use
3349         -1 for the deleted value.
3350
3351         * kxmlcore/HashTraits.h: Added a new type to HashTraits, StorageTraits, which is a
3352         type to be used when storing a value that has the same layout as the type itself.
3353         This is used only for non-key cases. In the case of keys, the hash function must also
3354         be considered. Moved emptyValue out of GenericHashTraitsBase into GenericHashTraits.
3355         Added a new bool to HashTraits, needsRef, which indicates whether the type needs
3356         explicit reference counting. If the type itself has needsRef true, but the storage
3357         type has needsRef false, then the HashSet or HashMap has to handle the reference
3358         counting explicitly. Added hash trait specializations for all signed integer values
3359         that give -1 as the deleted value. Gave all integers StorageTraits of the canonical
3360         integer type of the same size so int and long will share code. Gave all pointers and
3361         RefPtrs StorageTraits of the appropriately sized integer type. Removed redundant
3362         TraitType and emptyValue definitions in the pointer specialization for HashTraits.
3363         Added PairBaseHashTraits, which doesn't try to set up needsDestruction and deletedValue.
3364         Useful for types where we don't want to force the existence of deletedValue, such as
3365         the type of a pair in a HashMap which is not the actual storage type. Removed an
3366         unneeded parameter from the DeletedValueAssigner template. Added HashKeyStorageTraits
3367         template, which determines what type can be used to store a given hash key type with
3368         a given hash function, and specialized it for pointers and RefPtr so that pointer
3369         hash tables share an underlying HashTable that uses IntHash.
3370
3371         * kxmlcore/HashTable.h: Added HashTableConstIteratorAdapter, HashTableIteratorAdapter,
3372         NeedsRef, RefCountManagerBase, RefCountManager, HashTableRefCountManagerBase, and
3373         HashTableRefCountManager. All are used by both HashSet and HashMap to handle hash
3374         tables where the type stored is not the same as the real value type.
3375         
3376         * kxmlcore/HashFunctions.h: Added a new struct named IntTypes that finds an
3377         integer type given a sizeof value. Renamed pointerHash to intHash and made it
3378         use overloading and take integer parameters. Added an IntHash struct which is
3379         a hash function that works for integers. Changed PtrHash to call IntHash with
3380         an appropriately sized integer. Made IntHash the default hash function for
3381         many integer types. Made PtrHash the default hash function for RefPtr as well
3382         as for raw pointers.
3383
3384         * kxmlcore/HashSet.h: Changed implementation to use a separate "storage type"
3385         derived from the new traits. The HashTable will use the storage type and all
3386         necessary translation and ref/deref is done at the HashSet level. Also reorganized
3387         the file so that the HashSet is at the top and has no inline implementation inside
3388         it so it's easy to read the interface to HashSet.
3389
3390         * kxmlcore/HashMap.h: Changed implementation to use a separate "storage type"
3391         derived from the new traits. The HashTable will use the storage type and all
3392         necessary translation and ref/deref is done at the HashMap level. Also reorganized
3393         the file so that the HashMap is at the top and has no inline implementation inside
3394         it so it's easy to read the interface to HashMap.
3395
3396         * kxmlcore/HashMapPtrSpec.h: Removed. Superceded by optimizations in HashMap itself.
3397
3398         * JavaScriptCore.xcodeproj/project.pbxproj: Remove HashMapPtrSpec.h, resort files,
3399         and also remove some unnecessary build settings from the aggregate target that
3400         generates derived sources.
3401         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: Ditto.
3402
3403 2006-04-04  Timothy Hatcher  <timothy@apple.com>
3404
3405         Reviewed by Darin.
3406
3407         The Debug and Release frameworks are now built with install paths relative to the build products directory.
3408         This removes the need for other projects to build with -framework WebCore and -framework JavaScriptCore. 
3409
3410         * JavaScriptCore.xcodeproj/project.pbxproj:
3411
3412 2006-04-04  Eric Seidel  <eseidel@apple.com>
3413
3414         Reviewed by ggaren.
3415
3416         Fix win32 build.
3417         Disable ASSERT redefinition warnings for now.
3418
3419         * JavaScriptCore.vcproj/testkjs/testkjs.vcproj:
3420         * kxmlcore/Assertions.h:
3421
3422 2006-04-04  Bjrn Graf  <bjoern.graf@gmail.com>
3423
3424         Reviewed by ggaren & darin.  Landed by eseidel.
3425
3426         Integrate CURL version of gettimeofday
3427         http://bugzilla.opendarwin.org/show_bug.cgi?id=7399
3428         Disable crash report dialogs for testkjs.exe in Release mode
3429         http://bugzilla.opendarwin.org/show_bug.cgi?id=8113
3430
3431         * kjs/testkjs.cpp:
3432         (StopWatch::start):
3433         (StopWatch::stop):
3434         (StopWatch::getElapsedMS):
3435         (main):
3436         (kjsmain):
3437
3438 2006-04-04  Eric Seidel  <eseidel@apple.com>
3439
3440         Reviewed by mjs.
3441
3442         * kjs/number_object.cpp:
3443         (NumberProtoFunc::callAsFunction): remove trunc() to fix win32.
3444
3445 2006-03-12  Maciej Stachowiak  <mjs@apple.com>
3446
3447         Reviewed by Darin.
3448         
3449         - fixed "toPrecision sometimes messes up the last digit on intel Macs"
3450         http://bugzilla.opendarwin.org/show_bug.cgi?id=7748
3451
3452         * kjs/number_object.cpp:
3453         (intPow10): Compute integer powers of 10 using exponentiation by squaring.
3454         (NumberProtoFunc::callAsFunction): Use intPow10(n) in place of all pow(10.0, n),
3455         plus a bit of refactoring.
3456
3457 2006-04-03  Darin Adler  <darin@apple.com>
3458
3459         - tweak config.h and Platform.h to try to get buildbot working
3460           (making some small changes at the same time)
3461
3462         * kjs/config.h: Removed now-unneeded HAVE_ICU.
3463         * kxmlcore/Platform.h: Tweak how platform gets set up. Move all the
3464         USE stuff to the end.
3465
3466 2006-04-03  George Staikos   <staikos@opensource.apple.com>
3467
3468         Reviewed by Maciej.
3469
3470         Fix Win32 build breakage from previous commit, remove unused forward.
3471
3472 2006-04-03  George Staikos   <staikos@opensource.apple.com>
3473
3474         Reviewed by Maciej.
3475
3476         Implement a unicode abstraction layer to make JavaScriptCore much more
3477         easily ported to other platforms without having to take in libicu.  Also
3478         makes the unicode related code easier to understand.
3479
3480 2006-04-03  Timothy Hatcher  <timothy@apple.com>
3481
3482         Reviewed by Adele.
3483
3484         Fixes <rdar://problem/4498338> JavaScriptCore fails to compile for ppc64
3485         Other 64 bit build fixes.
3486
3487         * kjs/collector.cpp:
3488         (KJS::Collector::markOtherThreadConservatively): test for __DARWIN_UNIX03 and use __r1
3489         * kjs/dtoa.cpp:
3490         (Bigint::): cast PRIVATE_mem to unsigned to prevent warning
3491         * bindings/jni/jni_utility.cpp:
3492         (KJS::Bindings::getJavaVM): cast jniError to long to prevent format warning
3493         (KJS::Bindings::getJNIEnv): cast jniError to long to prevent format warning
3494         * bindings/runtime_root.cpp:
3495         (KJS::Bindings::addNativeReference): cast CFDictionaryGetValue to unsigned long to prevent warning
3496         (KJS::Bindings::removeNativeReference): cast CFDictionaryGetValue to unsigned long to prevent warning
3497
3498 2006-03-31  Darin Adler  <darin@apple.com>
3499
3500         Reviewed by Geoff.
3501
3502         - <rdar://problem/4395622> API: WebScriptObject.h incorrectly reports that -isSelectorExcludedFromWebScript returns NO by default
3503
3504         * bindings/objc/WebScriptObject.h: Fixed comment.
3505
3506 2006-03-31  Eric Seidel  <eseidel@apple.com>
3507
3508         Reviewed by mjs.
3509
3510         A bit more code cleanup.
3511
3512         * bindings/c/c_utility.cpp:
3513         (KJS::Bindings::convertValueToNPVariant):
3514         * bindings/objc/objc_runtime.mm:
3515         (convertValueToObjcObject):
3516         * bindings/objc/objc_utility.mm:
3517         (KJS::Bindings::convertValueToObjcValue):
3518         * kjs/function.cpp:
3519         (KJS::GlobalFuncImp::callAsFunction):
3520         * kjs/interpreter.cpp:
3521         (KJS::ExecState::lexicalInterpreter):
3522         * kjs/interpreter.h:
3523         * kjs/operations.cpp:
3524         (KJS::equal):
3525
3526 2006-03-30  Eric Seidel  <eseidel@apple.com>
3527
3528         Reviewed by anders.
3529
3530         Small code-style update.
3531
3532         * kjs/operations.cpp:
3533         (KJS::isNaN):
3534         (KJS::isInf):
3535         (KJS::isPosInf):
3536         (KJS::isNegInf):
3537         (KJS::equal):
3538         (KJS::strictEqual):
3539         (KJS::relation):
3540         (KJS::maxInt):
3541         (KJS::minInt):
3542         (KJS::add):
3543         (KJS::mult):
3544
3545 2006-03-31  Anders Carlsson  <andersca@mac.com>
3546
3547         Reviewed by Maciej.
3548
3549         Make sure the GetterSetterImp objects are marked as well.
3550         
3551         * kjs/internal.cpp:
3552         (KJS::GetterSetterImp::mark):
3553         Call JSCell::mark().
3554
3555 2006-03-30  Eric Seidel  <eseidel@apple.com>
3556
3557         Reviewed by ggaren.
3558
3559         * kjs/nodes.h: Some various small style fixes.
3560
3561 2006-03-30  Eric Seidel  <eseidel@apple.com>
3562
3563         Reviewed by ggaren.
3564
3565         Clean-up style issues in node.h, remove redundant initializations.
3566
3567         * kjs/nodes.h:
3568         (KJS::StatementNode::evaluate):
3569         (KJS::ArrayNode::ArrayNode):
3570         (KJS::ObjectLiteralNode::ObjectLiteralNode):
3571         (KJS::ArgumentsNode::ArgumentsNode):
3572         (KJS::NewExprNode::NewExprNode):
3573         (KJS::CaseClauseNode::CaseClauseNode):
3574         (KJS::FuncDeclNode::FuncDeclNode):
3575
3576 2006-03-30  Tim Omernick  <timo@apple.com>
3577
3578         Reviewed by Geoff.
3579
3580         <rdar://problem/4212626> REGRESSION: LIVECONNECT: JavaScript type for Java Strings is function,
3581         not object
3582
3583         * bindings/runtime.h:
3584         (KJS::Bindings::Instance::implementsCall):
3585         New method.  Returns false by default.  Concrete subclasses can override this return true when
3586         the bound object may be called as a function.
3587         (KJS::Bindings::Instance::invokeDefaultMethod):
3588         Since bound objects are no longer treated as functions by default, we can return jsUndefined()
3589         here instead of in concrete subclasses that decide not to implement the default method
3590         functionality.
3591
3592         * bindings/runtime_object.cpp:
3593         (RuntimeObjectImp::implementsCall):
3594         Don't assume that the bound object is a function; instead, let the object instance decide whether
3595         it is callable.
3596
3597         * bindings/c/c_instance.h:
3598         * bindings/c/c_instance.cpp:
3599         (KJS::Bindings::CInstance::implementsCall):
3600         The object is callable if its class has an invokeDefault function.
3601
3602         * bindings/objc/objc_instance.h:
3603         * bindings/objc/objc_instance.mm:
3604         (ObjcInstance::implementsCall):
3605         The object is callable if the ObjC instance responds to -invokeDefaultMethodWithArguments:.
3606
3607         * bindings/jni/jni_instance.h:
3608         * bindings/jni/jni_instance.cpp:
3609         Moved bogus invokeDefaultMethod() to superclass.
3610
3611 2006-03-29  Geoffrey Garen  <ggaren@apple.com>
3612
3613         Reviewed by Darin.
3614
3615         - JavaScriptCore side of fix for <rdar://problem/4308243> 8F36 
3616         Regression: crash in malloc_consolidate if you use a .PAC file
3617
3618         The crash was a result of threaded deallocation of thread-unsafe
3619         objects. Pure JS objects are thread-safe because all JS execution
3620         is synchronized through JSLock. However, JS objects that wrap WebCore 
3621         objects are thread-unsafe because JS and WebCore execution are not 
3622         synchronized.  That unsafety comes into play when the collector 
3623         deallocates a JS object that wraps a WebCore object, thus causing the 
3624         WebCore object to be deallocated.
3625
3626         The solution here is to have each JSCell know whether it is safe to
3627         collect on a non-main thread, and to avoid collecting unsafe cells
3628         when on a non-main thread.
3629
3630         We don't have a way to test PAC files yet, so there's no test
3631         attached to this patch.
3632
3633         * kjs/collector.cpp:
3634         (KJS::Collector::collect):
3635         (1) Added the test "currentThreadIsMainThread || 
3636         imp->m_destructorIsThreadSafe". 
3637
3638         * kjs/protect.h:
3639         (KJS::gcProtectNullTolerant):
3640         (KJS::gcUnprotectNullTolerant):
3641         * kjs/value.h:
3642         (KJS::JSCell::JSCell): The bools here must be bitfields, otherwise
3643         m_destructorIsThreadSafe becomes another whole word, ruining the
3644         collector optimizations we've made based on the size of a JSObject.
3645         * kxmlcore/FastMalloc.cpp:
3646         (KXMLCore::currentThreadIsMainThread):
3647         (KXMLCore::fastMallocRegisterThread):
3648         * kxmlcore/FastMalloc.h:
3649
3650 2006-03-28  Darin Adler  <darin@apple.com>
3651
3652         Reviewed by Geoff.
3653
3654         - change some code that resulted in init routines on Mac OS X -- if the framework has
3655           init routines it will use memory and slow down applications that link with WebKit
3656           even in cases where those applications don't use WebKit
3657
3658         * kjs/date_object.cpp: Changed constants that were derived by multiplying other constants
3659         to use immediate numbers instead. Apparently, double constant expressions of the type we
3660         had here are evaluated at load time.
3661
3662         * kjs/list.cpp: Can't use OwnArrayPtr in ListImp because of the global instances of
3663         ListImp, so go back to using a plain old pointer.
3664         (KJS::List::List): Set overflow to 0 when initializing ListImp.
3665         (KJS::List::release): Replace a clear call with a delete and explicit set to 0.
3666         (KJS::List::append): Use raw pointers, and do a delete [] instead of finessing it with
3667         a swap of OwnArrayPtr.
3668         (KJS::List::copyFrom): Remove now-unneeded get().
3669         (KJS::List::copyTail): Ditto.
3670
3671         * kjs/ustring.cpp: Changed UString::Rep::empty initializer a bit so that it doesn't get
3672         a static initializer routine. Had to get rid of one level of constant to get the compiler
3673         to understand it could initialize without any code.
3674
3675         - added a build step that checks for init routines
3676
3677         * JavaScriptCore.xcodeproj/project.pbxproj: Deleted now-unused custom build rule that
3678         was replaced by the generate-derived-sources script a while back. Added a custom build
3679         phase that invokes the check-for-global-initializers script.
3680
3681 2006-03-28  Timothy Hatcher  <timothy@apple.com>
3682
3683         Reviewed by Eric.
3684
3685         fixes <rdar://problem/4458539> Unable to include Security(public) and WebKit(private) headers
3686
3687         * bindings/npapi.h: added #defines after the #ifndefs
3688
3689 2006-03-27  Maciej Stachowiak  <mjs@apple.com>
3690
3691         Reviewed by Anders.
3692         
3693         - fixed <rdar://problem/4489745> REGRESSION: Safari crashes at to display http://www.lgphilips-lcd.com/
3694
3695         * kjs/nodes.cpp:
3696         (Node::deref): take into account the case where the extra refcount table was never created
3697
3698 2006-03-23  David Carson <dacarson@gmail.com>
3699
3700         Reviewed by Darin.
3701         
3702         - JSObject in LiveConnect not working.
3703         http://bugzilla.opendarwin.org/show_bug.cgi?id=7917
3704
3705         * bindings/jni_jsobject.cpp:
3706         (JavaJSObject::convertJObjectToValue): Was trying to retrieve the native pointer from the wrong base
3707         class, and the GetFieldID was using the wrong signature.
3708
3709 2006-03-23  Darin Adler  <darin@apple.com>
3710
3711         Reviewed by Maciej.
3712
3713         - fix buildbot
3714
3715         * JavaScriptCore.xcodeproj/project.pbxproj: Change target name to JavaScriptCore (it was "include"!?).
3716         Also add -Y 3 option for linker.
3717
3718 2006-03-23  Darin Adler  <darin@apple.com>
3719
3720         Reviewed by Maciej.
3721
3722         - fix http://bugzilla.opendarwin.org/show_bug.cgi?id=7726
3723           REGRESSION: orbitz calendar fails (JavaScript function serialization/parsing)
3724
3725         * kjs/object.h: Take function name, as well as source URL and line number, when
3726         using the special overloaded construct for making functions.
3727         * kjs/object.cpp: (KJS::JSObject::construct): Ditto.
3728         * kjs/function_object.h: Ditto.
3729         * kjs/function_object.cpp: (FunctionObjectImp::construct): Pass a name when
3730         constructing the function rather than null. Use "anonymous" when making a
3731         function using the default function constructor.
3732
3733         * kjs/nodes2string.cpp: (FuncDeclNode::streamTo): Put a line break just before
3734         a function declaration.
3735
3736         - unrelated fix
3737
3738         * kxmlcore/HashMapPtrSpec.h: Add missing needed friend declaration.
3739
3740 2006-03-23  Darin Adler  <darin@apple.com>
3741
3742         Reviewed by Maciej.
3743
3744         - fix http://bugzilla.opendarwin.org/show_bug.cgi?id=7805
3745           LEAK: method name leaks in KJS::Bindings::CInstance::invokeMethod
3746
3747         * bindings/c/c_utility.h: Remove NPN_UTF16FromString declaration (not implemented).
3748         * bindings/c/c_utility.cpp:
3749         (KJS::Bindings::convertValueToNPVariant): Use DOUBLE_TO_NPVARIANT,
3750         BOOLEAN_TO_NPVARIANT, VOID_TO_NPVARIANT, NULL_TO_NPVARIANT, and
3751         OBJECT_TO_NPVARIANT. In the case of OBJECT, call _NPN_RetainObject in
3752         one case and remove a _NPN_ReleaseObject in another because this
3753         should return a retained value.
3754         (KJS::Bindings::convertNPVariantToValue): Use NPVARIANT_TO_BOOLEAN,
3755         NPVARIANT_TO_INT32, and NPVARIANT_TO_DOUBLE.
3756
3757         * bindings/c/c_runtime.h: Removed implementations of CMethod::name and
3758         CField::name that called _NPN_UTF8FromIdentifier and hence leaked.
3759         * bindings/c/c_runtime.cpp:
3760         (KJS::Bindings::CMethod::name): Added. Returns the string from inside the
3761         method object.
3762         (KJS::Bindings::CField::name): Added. Returns the string from inside the
3763         field object.
3764         (KJS::Bindings::CField::valueFromInstance): Added call to _NPN_ReleaseVariantValue
3765         on the result of getProperty after using it to fix a storage leak.
3766         (KJS::Bindings::CField::setValueToInstance): Added call to _NPN_ReleaseVariantValue
3767         after pasing a value to setProperty now that the conversion function does a retain.
3768
3769         * bindings/c/c_instance.cpp:
3770         (KJS::Bindings::CInstance::invokeMethod): Changed to use Vector for a local
3771         stack buffer. Removed special case for NPVARIANT_IS_VOID because the
3772         convertNPVariantToValue function handles that properly.
3773         (KJS::Bindings::CInstance::invokeDefaultMethod): Ditto.
3774
3775         * bindings/NP_jsobject.h: Formatting changes only.
3776         * bindings/NP_jsobject.cpp:
3777         (jsDeallocate): Changed parameter type so we don't need a function cast.
3778         (_NPN_InvokeDefault): Use VOID_TO_NPVARIANT.
3779         (_NPN_Invoke): Use NULL_TO_NPVARIANT and VOID_TO_NPVARIANT.
3780         (_NPN_Evaluate): Use VOID_TO_NPVARIANT.
3781         (_NPN_GetProperty): Use NULL_TO_NPVARIANT and VOID_TO_NPVARIANT.
3782
3783         * bindings/c/c_class.cpp: Formatting changes only.
3784         * bindings/c/c_class.h: Formatting changes only.
3785
3786         * bindings/npruntime_priv.h: Removed obsolete and now-unused functions:
3787         NPN_VariantIsVoid, NPN_VariantIsNull, NPN_VariantIsUndefined,
3788         NPN_VariantIsBool, NPN_VariantIsInt32, NPN_VariantIsDouble,
3789         NPN_VariantIsString, NPN_VariantIsObject, NPN_VariantToBool,
3790         NPN_VariantToInt32, NPN_VariantToDouble, NPN_VariantToString,
3791         NPN_VariantToStringCopy, NPN_VariantToObject, NPN_InitializeVariantAsVoid,
3792         NPN_InitializeVariantAsNull, NPN_InitializeVariantAsUndefined,
3793         NPN_InitializeVariantWithBool, NPN_InitializeVariantWithInt32,
3794         NPN_InitializeVariantWithDouble, NPN_InitializeVariantWithString,
3795         NPN_InitializeVariantWithObject, and NPN_InitializeVariantWithVariant.
3796         * bindings/npruntime.cpp:
3797         (getIntIdentifierDictionary): Don't bother creating custom callbacks for the
3798         integer dictionary since the default behavior is fine for integers.
3799
3800 2006-03-23  Mark Rowe  <opendarwin.org@bdash.net.nz>
3801
3802         Reviewed and landed by Maciej.
3803
3804         - WebKit no longer builds with bison 2.1
3805         http://bugzilla.opendarwin.org/show_bug.cgi?id=7923
3806
3807         * generate-derived-sources:  Handle generated header named either grammar.cpp.h
3808         or grammar.hpp.
3809
3810 2006-03-22  Maciej Stachowiak  <mjs@apple.com>
3811
3812         - fix the build
3813
3814         * JavaScriptCore.xcodeproj/project.pbxproj:
3815
3816 2006-03-21  Maciej Stachowiak  <mjs@apple.com>
3817
3818         * kjs/generate-derived-sources: Set executable property.
3819
3820 2006-03-21  Maciej Stachowiak  <mjs@apple.com>
3821
3822         Reviewed by Darin.
3823         
3824         Ensure that generated source dependencies are handled properly, as follows:
3825         
3826         - Made an external script that generates the sources into a
3827           DerivedSources dir in the build products directory.
3828         - Added a new build target that builds all the generated sources
3829           if needed. Sadly it has to be a target, not a phase for Xcode to notice changes.
3830         - Added the DerivedSources dir in question to the include path.
3831         - Added the new DerivedSources dir and its contents to the project as build-relative.
3832         
3833         * JavaScriptCore.xcodeproj/project.pbxproj:
3834         * kjs/generate-derived-sources: Added. Based on the windows version - maybe someday they
3835         can share more.
3836
3837 2006-03-11  Maciej Stachowiak  <mjs@apple.com>
3838
3839         Reviewed by Darin.
3840         
3841         - fixed "charAt layout test fails on intel macs; some NaNs are printed as -NaN"
3842         http://bugzilla.opendarwin.org/show_bug.cgi?id=7745
3843
3844         * kjs/ustring.cpp:
3845         (KJS::UString::from): Use "NaN" for all NaN values, regardless of sign.
3846
3847 2006-03-16  Maciej Stachowiak  <mjs@apple.com>
3848
3849         Reviewed by Darin.
3850         
3851         - tweaks to my change to redo KJS::Node refcounting
3852
3853         * kjs/nodes.cpp:
3854         (Node::ref):
3855         (Node::deref):
3856         (Node::refcount):
3857         (Node::clearNewNodes):
3858         * kjs/nodes.h:
3859
3860 2006-03-16  Darin Adler  <darin@apple.com>
3861
3862         Reviewed by Maciej.
3863
3864         - fixed Vector so that you can pass a reference to something in the vector
3865           to the append or insert functions
3866
3867         * kxmlcore/Vector.h:
3868         (KXMLCore::Vector::expandCapacity): Added new overloads that take a pointer to adjust
3869         and return the adjusted value of the pointer.
3870         (KXMLCore::Vector::append): Pass a pointer when expanding the vector, and use it when
3871         adding the new element. Makes the case where the element moves when the vector
3872         is expanded work.
3873         (KXMLCore::Vector::insert): Ditto.
3874
3875 2006-03-15  Eric Seidel  <eseidel@apple.com>
3876
3877         Reviewed by adele.
3878
3879         Build fix.
3880
3881         * kjs/date_object.cpp:
3882         (KJS::DateProtoFunc::callAsFunction): use size() not "len()"
3883
3884 2006-03-15  Eric Seidel  <eseidel@apple.com>
3885
3886         Reviewed by mjs.
3887
3888         Fix CString copy constructor, fixes Date.parse("") on Win32.
3889
3890         * kjs/date_object.cpp:
3891         (KJS::DateProtoFunc::callAsFunction):
3892         * kjs/ustring.cpp:
3893         (KJS::CString::CString):
3894         (KJS::CString::operator=):
3895
3896 2006-03-13  Maciej Stachowiak  <mjs@apple.com>
3897
3898         Reviewed by Anders.
3899         
3900         - KJS::Node and KJS::StatementNode are bigger than they need to be
3901         http://bugzilla.opendarwin.org/show_bug.cgi?id=7775
3902
3903         The memory usage of Node was reduced by 2 machine words per node:
3904
3905         - sourceURL was removed and only kept on FunctionBodyNode. The
3906         source URL can only be distinct per function or top-level program node, 
3907         and you always have one.
3908         
3909         - refcount was removed and kept in a separate hashtable when
3910         greater than 1. newNodes set represents floating nodes with
3911         refcount of 0. This helps because almost all nodes have a refcount of 1
3912         for almost all of their lifetime.
3913         
3914         * bindings/runtime_method.cpp:
3915         (RuntimeMethod::RuntimeMethod): Pass null body, added FIXME.
3916         * kjs/Parser.cpp:
3917         (KJS::clearNewNodes): New nodes are tracked in nodes.cpp now, but still clear
3918         them at the appropriate time.
3919         * kjs/context.h:
3920         (KJS::ContextImp::currentBody): added; used to retrieve source URL and sid
3921         for current code.
3922         (KJS::ContextImp::pushIteration): moved here from LabelStack
3923         (KJS::ContextImp::popIteration): ditto
3924         (KJS::ContextImp::inIteration): ditto
3925         (KJS::ContextImp::pushSwitch): ditto
3926         (KJS::ContextImp::popSwitch): ditto
3927         (KJS::ContextImp::inSwitch): ditto
3928         * kjs/function.cpp:
3929         (KJS::FunctionImp::FunctionImp): Add FunctionBodyNode* parameter.
3930         (KJS::FunctionImp::callAsFunction): Pass body to ContextImp.
3931         (KJS::FunctionImp::argumentsGetter): _context renamed to m_context.
3932         (KJS::DeclaredFunctionImp::DeclaredFunctionImp): Pass body to superclass
3933         constructor.
3934         (KJS::GlobalFuncImp::callAsFunction): Pass progNode as body for ContextImp in
3935         eval.
3936         * kjs/function.h: Move body field from DeclaredFunctionImp to
3937         FunctionImp.
3938         * kjs/grammar.y: Change DBG; statements no longer have a sourceid.
3939         * kjs/internal.cpp:
3940         (KJS::ContextImp::ContextImp): Initialize new m_currentBody, m_iterationDepth
3941         and m_switchDepth data members. New FunctionBodyNode* parameter - the
3942         function body provides source URL and SourceId.
3943         (KJS::InterpreterImp::mark): Use exception() function, not _exception directly.
3944         (KJS::InterpreterImp::evaluate): Pass progNode to ContextImp constructor
3945         to use as the body.
3946         * kjs/internal.h:
3947         (KJS::LabelStack::LabelStack): Remove iteration depth and switch depth;
3948         statement label stacks don't need these and it bloats their size. Put them
3949         in the ContextImp instead.
3950         * kjs/interpreter.cpp:
3951         (KJS::ExecState::lexicalInterpreter): Renamed _context to m_context.
3952         * kjs/interpreter.h:
3953         (KJS::ExecState::dynamicInterpreter): Renamed _context to m_context.
3954         (KJS::ExecState::context): ditto
3955         (KJS::ExecState::setException): Renamed _exception to m_exception
3956         (KJS::ExecState::clearException): ditto
3957         (KJS::ExecState::exception): ditto
3958         (KJS::ExecState::hadException): ditto
3959         (KJS::ExecState::ExecState): ditto both above renames
3960         * kjs/nodes.cpp:
3961         (Node::Node): Removed initialization of line, source URL and refcount. Add to
3962         local newNodes set instead of involving parser.
3963         (Node::ref): Instead of managing refcount directly, story refcount over 1 in a
3964         HashCountedSet, and keep a separate HashSet of "floating" nodes with refcount
3965         0.
3966         (Node::deref): ditto
3967         (Node::refcount): ditto
3968         (Node::clearNewNodes): Destroy anything left in the new nodes set.
3969         (currentSourceId): Inline helper to get sourceId from function body via context.
3970         (currentSourceURL): ditto for sourceURL.
3971         (Node::createErrorCompletion): use new helper
3972         (Node::throwError): ditto
3973         (Node::setExceptionDetailsIfNeeded): ditto
3974         (StatementNode::StatementNode): remove initialization of l0 and sid, rename
3975         l1 to m_lastLine.
3976         (StatementNode::setLoc): Set own m_lastLine and Node's m_line.
3977         (StatementNode::hitStatement): Get sid, first line, last line in the proper new ways.
3978         (StatListNode::StatListNode): updated for setLoc changes
3979         (BlockNode::BlockNode): ditto
3980         (DoWhileNode::execute): excpect iteraton counts on ContextImp, not LabelStack
3981         (WhileNode::execute): ditto
3982         (ForNode::execute): ditto
3983         (ForInNode::execute): ditto
3984         (ContinueNode::execute): excpect inIteration on ContextImp, not LabelStack
3985         (BreakNode::execute): excpect inIteration and inSwitch on ContextImp, not LabelStack
3986         (SwitchNode::execute): expect switch counts on ContextImp, not LabelStack
3987         (FunctionBodyNode::FunctionBodyNode): update for new setLoc
3988         (FunctionBodyNode::processFuncDecl): reindent
3989         (SourceElementsNode::SourceElementsNode): update for new setLoc
3990         * kjs/nodes.h:
3991         (KJS::Node::lineNo): Renamed _line to m_line
3992         (KJS::StatementNode::firstLine): Use lineNo()
3993         (KJS::StatementNode::lastLine): Renamed l1 to m_lastLine
3994         (KJS::FunctionBodyNode::sourceId): added
3995         (KJS::FunctionBodyNode::sourceURL): added
3996         * kjs/testkjs.cpp:
3997
3998 2006-03-14  Geoffrey Garen  <ggaren@apple.com>
3999
4000         - Fixed <rdar://problem/4478239> string sort puts "closed" before 
4001         "close"
4002
4003         Reviewed by Eric.
4004
4005         * kjs/ustring.cpp:
4006         (KJS::compare): Inverted a < in order to treat the longer string as > 
4007         the shorter string.
4008
4009 2006-03-12  Alexey Proskuryakov  <ap@nypop.com>
4010
4011         Reviewed by Maciej.
4012
4013         - fix http://bugzilla.opendarwin.org/show_bug.cgi?id=7708
4014         REGRESSION: Flash callback to JavaScript function not working.
4015
4016         Test: plugins/invoke.html
4017
4018         * bindings/c/c_utility.cpp:
4019         (KJS::Bindings::convertUTF8ToUTF16): Return a correct string length.
4020
4021 2006-03-08  Eric Seidel  <eseidel@apple.com>
4022
4023         Reviewed by darin.
4024
4025         Partially fix JS on win32 by fixing hash table generation.
4026
4027         * kjs/create_hash_table: limit << results to 32 bits.
4028         * kjs/testkjs.cpp:
4029         (TestFunctionImp::callAsFunction):
4030
4031 2006-03-07  Darin Adler  <darin@apple.com>
4032
4033         * kxmlcore/Vector.h: Quick fix to try to get Windows compiling again.
4034
4035 2006-03-07  Darin Adler  <darin@apple.com>
4036
4037         Reviewed by Anders.
4038
4039         - fix http://bugzilla.opendarwin.org/show_bug.cgi?id=7655
4040           unwanted output while running layout tests
4041
4042         * kjs/lexer.cpp: (Lexer::lex): Turn off the "yylex: ERROR" message.
4043         * kjs/regexp.cpp: (KJS::RegExp::RegExp): Remove the code to log errors from PCRE
4044         to standard output. I think we should arrange for the error text to be in JavaScript
4045         exceptions instead at some point.
4046         * kxmlcore/Vector.h: Add a check for overflow so that we'll abort if we pass a
4047         too-large size rather than allocating a buffer smaller than requested.
4048
4049 2006-03-06  David Carson <dacarson@gmail.com>
4050
4051         Reviewed by Darin, landed by ap.
4052
4053         - Fixed http://bugzilla.opendarwin.org/show_bug.cgi?id=7582
4054         c_utility.cpp contains CFString OS X platform-dependent code; should use ICU
4055
4056         Tested with test case from:
4057         http://bugzilla.opendarwin.org/show_bug.cgi?id=5163
4058
4059         * bindings/c_utility.cpp
4060         (convertUTF8ToUTF16): Changed to using Unicode converter from ICU, and manual Latin-1 conversion.
4061         * icu/unicode/ucnv.h: Copied from WebCore.
4062         * icu/unicode/ucnv_err.h: Ditto.
4063         * icu/unicode/uenum.h: Ditto.
4064
4065 2006-03-05  Darin Adler  <darin@apple.com>
4066
4067         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: Updated.
4068
4069 2006-03-06  Mitz Pettel  <opendarwin.org@mitzpettel.com>
4070
4071         Fix suggested by Alexey Proskuryakov <ap@nypop.com>, reviewed by Maciej and Hyatt.
4072         
4073         - fix http://bugzilla.opendarwin.org/show_bug.cgi?id=7601
4074           REGRESSION (r13089): Reproducible crash dereferencing a deallocated element on google image search
4075
4076         * kxmlcore/Platform.h: Corrected the define to enable USE(MULTIPLE_THREADS) on Mac OS X.
4077
4078 2006-03-05  Darin Adler  <darin@apple.com>
4079
4080         Reviewed by Maciej.
4081
4082         - http://bugzilla.opendarwin.org/show_bug.cgi?id=7616
4083           get all references to KJS::Node out of internal.h
4084
4085         * JavaScriptCore.xcodeproj/project.pbxproj: Updated for file changes.
4086
4087         * kjs/Parser.cpp: Added.
4088         * kjs/Parser.h: Added.
4089
4090         * kjs/internal.cpp: Removed the Parser class.
4091         * kjs/internal.h: Ditto. Also removed unnecessary declarations of classes
4092         not used in this header.
4093
4094         * kjs/nodes.h: Added an include of "Parser.h".
4095         * kjs/function.h: Added a declaration of FunctionBodyNode.
4096
4097 2006-03-05  Geoffrey Garen  <ggaren@apple.com>
4098
4099         Reviewed by Maciej.
4100
4101         - JSC support for the fix for <rdar://problem/4467143> JavaScript 
4102         enumeration of HTML element properties skips DOM node properties
4103
4104         * kjs/lookup.h: 
4105         (1) Added the KJS_DEFINE_PROTOTYPE_WITH_PROTOTYPE macro. The 
4106         class definiton macro needs to know about the prototype's prototype so 
4107         that the class constructor properly sets it. 
4108         (2) Removed the KJS_IMPLEMENT_PROTOTYPE_WITH_PARENT macro. The class
4109         implementation macro does not need to know about the prototype's
4110         prototype, since getOwnPropertySlot should only look in the current 
4111         object's property map, and not its prototype's.
4112
4113 2006-03-05  Andrew Wellington  <proton@wiretapped.net>
4114
4115         Reviewed by Eric, landed by ap.
4116         
4117         - Remove unused breakpoint bool from StatementNodes. No test provided as
4118         there is no functionality change.
4119
4120         * kjs/nodes.cpp:
4121         (StatementNode::StatementNode):
4122         * kjs/nodes.h:
4123
4124 2006-03-03  Geoffrey Garen  <ggaren@apple.com>
4125
4126         Reviewed by Darin.
4127
4128         - Fixed <rdar://problem/4465598> REGRESSION (TOT): Crash occurs at 
4129         http://maps.google.com/?output=html ( KJS::Identifier::add(KJS::UString::Rep*)
4130
4131         This regression was caused by my fix for