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