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