1 === Start merge of feature-branch 2007-10-12 ===
3 2007-10-11 Andrew Wellington <proton@wiretapped.net>
5 Reviewed by Eric Seidel.
7 Fix for http://bugs.webkit.org/show_bug.cgi?id=15076
8 "deg2rad has multiple definitions"
10 Define deg2rad, rad2deg, deg2grad, grad2deg, rad2grad, grad2rad
11 These are used through WebKit.
13 Change based on original patch by Rob Buis.
23 2007-10-10 Maciej Stachowiak <mjs@apple.com>
27 - fix assertion failures on quit.
29 * kjs/array_object.cpp:
30 (ArrayProtoFunc::callAsFunction): Dynamically alocate function-scope static
31 UStrings to avoid the static destructor getting called later.
32 * kjs/lookup.h: Dynamically alocate function-scope static
33 Identifiers to avoid the static destructor getting called later.
35 2007-10-07 Ed Schouten <ed@fxq.nl>
37 Reviewed and landed by Alexey Proskuryakov.
39 Add PLATFORM(FREEBSD), so we can fix the build on FreeBSD-like
40 systems by including <pthread_np.h>. Also fix some (disabled)
41 regcomp()/regexec() code; it seems some variable names have
46 (KJS::RegExp::RegExp):
49 2007-10-02 Alexey Proskuryakov <ap@webkit.org>
53 http://bugs.webkit.org/show_bug.cgi?id=10370
54 RegExp fails to match non-ASCII characters against [\S\s]
56 Test: fast/js/regexp-negative-special-characters.html
58 * pcre/pcre_compile.c:
59 (compile_branch): Adjust opcode and bitmap as necessary to include (or exclude)
60 character codes >255. Fix suggested by Philip Hazel.
63 (match): Merged fix for PCRE bug 580 (\S\S vs. \S{2}).
65 * tests/mozilla/expected.html: One test was fixed.
66 * pcre/MERGING: Added information about this fix.
68 2007-10-02 Maciej Stachowiak <mjs@apple.com>
72 - skip extra hash lookup and avoid converting char* to UString for 19% speedup on CK JS array test
73 http://bugs.webkit.org/show_bug.cgi?id=15350
75 * kjs/array_object.cpp:
76 (ArrayProtoFunc::callAsFunction): Implement the two mentioned optimizations.
78 2007-10-02 Maciej Stachowiak <mjs@apple.com>
82 - Efficiently handle regexp property identifiers for 19% speedup on Celtic Kane regexp test
83 http://bugs.webkit.org/show_bug.cgi?id=15337
85 * kjs/CommonIdentifiers.h:
86 * kjs/regexp_object.cpp:
87 (RegExpProtoFunc::callAsFunction):
88 (RegExpObjectImp::arrayOfMatches):
89 (RegExpObjectImp::construct):
91 2007-10-02 Maciej Stachowiak <mjs@apple.com>
95 - Cache global prorotypes more efficiently for 10% speedup on CK AJAX benchmark
96 http://bugs.webkit.org/show_bug.cgi?id=15335
100 2007-10-01 Oliver Hunt <oliver@apple.com>
104 Enable Experimental SVG features by default when building from Xcode
106 * Configurations/JavaScriptCore.xcconfig:
108 2007-09-29 Rob Buis <buis@kde.org>
112 http://bugs.webkit.org/show_bug.cgi?id=13472
113 Misparsing date in javascript leads to year value of -1
114 http://bugs.webkit.org/show_bug.cgi?id=14176
115 Some date values not handled consistently with IE/Firefox
117 Allow an optional comma between month and year, and year and time.
119 * kjs/date_object.cpp:
122 2007-07-11 Nikolas Zimmermann <zimmermann@kde.org>
126 Forwardport the hash table fix from CodeGeneratorJS.pm to create_hash_table.
127 Reran run-jsc-tests, couldn't find any regressions. Suggested by Darin.
129 * kjs/create_hash_table:
131 2007-06-25 Antti Koivisto <antti@apple.com>
135 Use intHash to hash floats and doubles too.
138 * wtf/HashFunctions.h:
139 (WTF::FloatHash::hash):
140 (WTF::FloatHash::equal):
143 (WTF::FloatHashTraits::emptyValue):
144 (WTF::FloatHashTraits::deletedValue):
147 === End merge of feature-branch 2007-10-12 ===
149 2007-10-11 Mark Rowe <mrowe@apple.com>
151 Reviewed by Tim Hatcher.
153 Fix for <rdar://problem/5488678>. Disable debugging symbols in production builds for 10.4
154 PowerPC to prevent a huge STABS section from being generated.
156 * Configurations/Base.xcconfig:
158 2007-10-08 George Staikos <staikos@kde.org>
160 Reviewed by Adam Roben.
162 Fix Qt build on Win32.
167 2007-10-10 Simon Hausmann <hausmann@kde.org>
171 Fix compilation using gcc 4.3. Header files have been reorganized and as a result some extra
172 includes are needed for INT_MAX, std::auto_ptr and the like.
177 * kjs/scope_chain.cpp:
181 2007-10-09 Lars Knoll <lars@trolltech.com>
185 fix the invokation of slots with return types. Add a JSLock around the conversion from QVariant to JSValue.
187 * bindings/qt/qt_instance.cpp:
188 (KJS::Bindings::QtInstance::invokeMethod):
189 * bindings/qt/qt_runtime.cpp:
190 (KJS::Bindings::convertValueToQVariant):
191 (KJS::Bindings::convertQVariantToValue):
193 2007-10-05 Geoffrey Garen <ggaren@apple.com>
195 Reviewed by Sam Weinig.
197 Added JSObject::removeDirect, to support the fix for
198 <rdar://problem/5522487> REGRESSION: With JavaScript disabled, any
199 page load causes a crash in PropertyMap::put
202 (KJS::JSObject::removeDirect):
205 2007-10-04 Mark Rowe <mrowe@apple.com>
209 Switch to default level of debugging symbols to resolve <rdar://problem/5488678>.
210 The "full" level appears to offer no observable benefits even though the documentation
211 suggests it be used for dead code stripping. This should also decrease link times.
213 * Configurations/Base.xcconfig:
215 2007-10-03 Lars Knoll <lars@trolltech.com>
219 Fix a stupid bug in Unicode::toUpper/toLower.
220 Fixes all three test failures in the JavaScriptCore test
223 * wtf/unicode/qt4/UnicodeQt4.h:
224 (WTF::Unicode::toLower):
225 (WTF::Unicode::toUpper):
227 2007-10-02 Darin Adler <darin@apple.com>
231 - add support for GDI objects to OwnPtr; I plan to use this
232 to fix some GDI handle leaks
234 * kjs/grammar.y: Change parser to avoid macros that conflict
235 with macros defined in Windows system headers: THIS, DELETE,
236 VOID, IN, and CONST. This is needed because OwnPtr.h will now
238 * kjs/keywords.table: Ditto.
240 * wtf/OwnPtr.h: For PLATFORM(WIN), add support so that OwnPtr can be
241 a GDI handle, and it will call DeleteObject. Also change to use the
242 RemovePointer technique used by RetainPtr, so you can say OwnPtr<HBITMAP>
243 rather than having to pass in the type pointed to by HBITMAP.
245 * wtf/OwnPtrWin.cpp: Added.
246 (WebCore::deleteOwnedPtr): Put this in a separate file so that we
247 don't have to include <windows.h> in OwnPtr.h.
249 * JavaScriptCore.vcproj/WTF/WTF.vcproj: Added OwnPtrWin.cpp.
251 2007-09-29 Holger Hans Peter Freyther <zecke@selfish.org>
255 -Fix http://bugs.webkit.org/show_bug.cgi?id=13226.
256 Remove Bakefiles from svn.
258 * JavaScriptCoreSources.bkl: Removed.
259 * jscore.bkl: Removed.
261 2007-09-27 Kevin Decker <kdecker@apple.com>
263 Rubber stamped by John Sullivan.
265 <rdar://problem/5493093>
267 * JavaScriptCore.order: Added.
268 * JavaScriptCore.xcodeproj/project.pbxproj: We're changing from using an order file built by
269 another team to using one we actually check into our project repository. Linker settings for
270 Symbol Ordering Flags have been updated accordingly.
272 2007-09-26 Adam Roben <aroben@apple.com>
274 Make testkjs delay-load WebKit.dll so WebKitInitializer can work its magic
276 Rubberstamped by Anders.
278 * JavaScriptCore.vcproj/testkjs/testkjs.vcproj:
280 2007-09-25 Adam Roben <aroben@apple.com>
282 Make testkjs delay-load its dependencies
284 This lets WebKitInitializer re-route the dependencies to be loaded out
285 of the Safari installation directory.
287 Rubberstamped by Sam.
289 * JavaScriptCore.vcproj/testkjs/testkjs.vcproj:
291 2007-09-25 David Kilzer <ddkilzer@webkit.org>
295 - Fix http://bugs.webkit.org/show_bug.cgi?id=14885
296 LGPL'ed files contain incorrect FSF address
299 * bindings/testbindings.cpp:
300 * kjs/AllInOneFile.cpp:
302 * kjs/PropertyNameArray.cpp:
303 * kjs/PropertyNameArray.h:
306 2007-09-25 Sam Weinig <sam@webkit.org>
308 Fix location for build products for Debug_Internal.
310 Reviewed by Adam Roben.
312 * JavaScriptCore.vcproj/testkjs/testkjs.vcproj:
314 2007-09-25 Adam Roben <aroben@apple.com>
316 Make testkjs use WebKitInitializer
320 * JavaScriptCore.vcproj/JavaScriptCore.sln: Add WebKitInitializer and
321 make testkjs depend on it.
322 * JavaScriptCore.vcproj/testkjs/testkjs.vcproj: Link against
323 WebKitInitializer.lib.
325 (main): Call initializeWebKit.
327 2007-09-24 Kevin McCullough <kmccullough@apple.com>
331 - Continued to update project files to not use Edit and Continue for Debug Information since it doesn't work and breaks some functionality.
333 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
334 * JavaScriptCore.vcproj/WTF/WTF.vcproj:
336 2007-09-21 Kevin McCullough <kmccullough@apple.com>
340 - Updated project files to not use Edit and Continue for Debug Information since it doesn't work and breaks some functionality.
342 * JavaScriptCore.vcproj/dftables/dftables.vcproj:
343 * JavaScriptCore.vcproj/testkjs/testkjs.vcproj:
345 2007-09-20 Holger Hans Peter Freyther <zecke@selfish.org>
347 Rubber stamped by Adam.
349 Renamed files from *Gdk to *Gtk (see #14732) using the
350 work of Juan A. Suarez Romero as a base.
354 * JavaScriptCore.pri:
357 * wtf/Platform.h: PLATFORM(GDK) to PLATFORM(GTK)
359 2007-09-21 Mark Rowe <mrowe@apple.com>
361 Reviewed by Antti Koivisto.
363 http://bugs.webkit.org/show_bug.cgi?id=15250
364 <rdar://problem/5496942> REGRESSION: Reproducible crash in Safari when evaluating script in Drosera console (15250)
367 (KJS::GlobalFuncImp::callAsFunction): Null-check thisObj before passing it to interpreterForGlobalObject.
369 2007-09-19 Holger Hans Peter Freyther <zecke@selfish.org>
371 Rubber stamped by Adam.
373 Make the guard/#if use the same name (ENABLE_FTPDIR) as the #define. This follows
374 the ENABLE_ICONDATABASE example from a couple of lines above.
378 2007-09-19 Mark Rowe <mrowe@apple.com>
382 <rdar://problem/5487107> NULL dereference crash in FastMallocZone::enumerate when running leaks against Safari
384 Storing remote pointers to their local equivalents in mapped memory was leading to the local pointer being
385 interpreted as a remote pointer. This caused a crash when using the result of mapping this invalid remote pointer.
386 The fix is to follow the pattern used elsewhere in FastMallocZone by always doing the mapping after reading and
387 never storing the mapped pointer.
389 * wtf/FastMalloc.cpp:
390 (WTF::FastMallocZone::enumerate):
392 2007-09-15 Darin Adler <darin@apple.com>
396 * JavaScriptCore.exp: Export WTFLogVerbose.
398 2007-09-14 Kevin McCullough <kmccullough@apple.com>
402 - Copy JSRetainPtr to include folder.
404 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
406 2007-09-13 Geoffrey Garen <ggaren@apple.com>
408 Try to fix GDK build.
413 2007-09-12 Geoff Garen <ggaren@apple.com>
415 Reviewed by Sam Weinig.
417 Fixed <rdar://problem/5429064> 141885 Safari JavaScript: Math.random() slightly less randomly distributed than on Safari / Mac
419 Math.random was skewed slightly upward because it assumed that RAND_MAX was outside the range of
420 values that rand() might return. This problem was particularly pronounced on Windows because
421 the range of values returned by rand() on Windows is 2^16 smaller than the range of values
422 return by rand() on Mac.
424 Fixed by accounting for RAND_MAX return values. Also, switched Windows over to rand_s, which has
425 a range that's equal to rand()'s range on Mac.
429 * kjs/math_object.cpp:
430 (MathFuncImp::callAsFunction): Use the new new thing.
432 * wtf/MathExtras.h: Platform abstraction for random numbers, to cover over differences on Windows.
436 2007-09-13 Antti Koivisto <antti@apple.com>
440 Small addition to previous path to cover
441 http://bugs.webkit.org/show_bug.cgi?id=11399
442 window.eval runs in the global scope of the calling window
444 Switch variable scope as well.
447 (KJS::GlobalFuncImp::callAsFunction):
449 2007-09-12 Antti Koivisto <antti@apple.com>
451 Reviewed by Geoff, Maciej.
453 Fix <rdar://problem/5445058>
454 REGRESSION: Unable to upload picture to eBay auction due to domain security check
456 eBay uses window.eval() between windows. In Firefox window.eval() switches execution
457 and security context to the target window, something WebKit did not do. With WebKit
458 security tightening in r24781, this broke picture uploads.
460 Fix by making WebKit switch context in window.eval().
463 (KJS::Context::Context):
464 (KJS::Context::~Context):
466 Save and restore interpreter context independently from calling context.
469 (KJS::GlobalFuncImp::callAsFunction):
470 If eval is called for global object different than current one, switch execution context
471 to that object and push it to scope.
473 2007-09-12 Sam Weinig <sam@webkit.org>
475 Reviewed by Geoffrey Garen.
477 <rdar://problem/5478717> JSStringCreateWithCFString leaks when passed a zero length CFStringRef
479 * API/JSStringRefCF.cpp:
480 (JSStringCreateWithCFString): Special case the zero length string and remove the
481 UTF16 optimized path since it will always leak due to the fact that we won't be
482 able to free the backing store that the CFStringRef provides.
484 2007-09-10 Timothy Hatcher <timothy@apple.com>
486 Reviewed by Darin Adler.
488 <rdar://problem/5456224> CrashTracer: [USER] 2 crashes in Toast Titanium at com.apple.CoreServices.CarbonCore: CSMemDisposePtr + 37
490 Removed the implementation of these malloc zone functions. We do not have the ability to
491 check if a pointer is valid or not, so we can't correctly implement them. The system free
492 does not fail if you pass in a bad pointer.
494 * wtf/FastMalloc.cpp:
495 (WTF::FastMallocZone::size):
496 (WTF::FastMallocZone::zoneMalloc):
497 (WTF::FastMallocZone::zoneCalloc):
498 (WTF::FastMallocZone::zoneFree):
499 (WTF::FastMallocZone::zoneRealloc):
501 2007-09-07 Darin Adler <darin@apple.com>
503 Reviewed by Steve Falkenburg.
505 - fix crash seen on Windows release builds
507 * wtf/FastMalloc.cpp: Change pthread_getspecific optimization to be done only
508 on the DARWIN platform. Also correct a couple reinterpret_cast that should be
511 2007-09-06 Kevin McCullough <kmccullough@apple.com>
515 - Moved JSRetainPtr to the API.
517 * API/JSRetainPtr.h: Copied from kjs/JSRetainPtr.h.
520 (JSRetainPtr::JSRetainPtr):
521 (JSRetainPtr::~JSRetainPtr):
523 (JSRetainPtr::releaseRef):
524 (JSRetainPtr::operator->):
525 (JSRetainPtr::operator!):
526 (JSRetainPtr::operator UnspecifiedBoolType):
533 * JavaScriptCore.xcodeproj/project.pbxproj:
534 * kjs/JSRetainPtr.h: Removed.
536 2007-09-05 Maciej Stachowiak <mjs@apple.com>
540 - Remove single-threaded optimization for FastMalloc.
542 It does not appear to help anywhere but Mac OS X on PPC, due to
543 pthread_getspecific being slow there. On Intel, removing the
544 optimization results in a ~1.5% PLT speedup, a ~1-5% JS iBench
545 speedup, and a ~1.5% HTML iBench speedup. On PPC this change is a
546 speedup on some benchmarks, a slight hit on others.
548 * JavaScriptCore.xcodeproj/project.pbxproj:
550 (KJS::Collector::registerThread):
551 * wtf/FastMalloc.cpp:
552 (WTF::TCMalloc_ThreadCache::GetCache):
553 (WTF::TCMalloc_ThreadCache::GetCacheIfPresent):
554 (WTF::TCMalloc_ThreadCache::CreateCacheIfNecessary):
556 * wtf/FastMallocInternal.h: Removed.
558 2007-09-05 Kevin McCullough <kmccullough@apple.com>
560 Reviewed by Adam, Sam, Darin.
562 - Created a JSRetainPtr specifically for JSStringRefs so they can be automatically refed and derefed.
564 * JavaScriptCore.xcodeproj/project.pbxproj:
565 * kjs/JSRetainPtr.h: Copied from wtf/RetainPtr.h.
569 (KJS::JSRetainPtr::JSRetainPtr):
570 (KJS::JSRetainPtr::~JSRetainPtr):
571 (KJS::JSRetainPtr::get):
572 (KJS::JSRetainPtr::releaseRef):
573 (KJS::JSRetainPtr::operator->):
574 (KJS::JSRetainPtr::operator UnspecifiedBoolType):
582 2007-09-05 Mark Rowe <mrowe@apple.com>
584 Unreviewed Qt build fix.
586 * wtf/unicode/qt4/UnicodeQt4.h: Fix the constness of the src argument to toUpper to prevent build failures.
588 2007-09-04 Maciej Stachowiak <mjs@apple.com>
590 Back out accidentally committed change.
592 * JavaScriptCore.xcodeproj/project.pbxproj:
594 (KJS::Collector::registerThread):
595 * wtf/FastMalloc.cpp:
596 (WTF::fastMallocSetIsMultiThreaded):
597 (WTF::TCMalloc_ThreadCache::GetCache):
598 (WTF::TCMalloc_ThreadCache::GetCacheIfPresent):
599 (WTF::TCMalloc_ThreadCache::CreateCacheIfNecessary):
601 * wtf/FastMallocInternal.h: Added.
603 2007-09-04 Maciej Stachowiak <mjs@apple.com>
607 - Added Vector::appendRange(), which appends to a vector based on a given start and end iterator
608 - Added keys() and values() functions to HashMap iterators, which give keys-only and values-only iterators
610 Together, these allow easy copying of a set, or the keys or values of a map, into a Vector. Examples:
612 HashMap<int, int> map;
616 vec.appendRange(set.begin(), set.end());
617 vec.appendRange(map.begin().keys(), map.end().keys());
618 vec.appendRange(map.begin().values(), map.end().values());
620 This also allows for a slightly nicer syntax when iterating a map. Instead of saying
621 (*it)->first, you can say *it.values(). Similarly for keys. Example:
623 HashMap<int, int>::const_iterator end = map.end();
624 for (HashMap<int, int>::const_iterator it = map.begin(); it != end; ++it)
625 printf(" [%d => %d]", *it.keys(), *it.values());
627 * JavaScriptCore.xcodeproj/project.pbxproj:
628 * wtf/HashIterators.h: Added.
630 (WTF::HashTableConstKeysIterator::HashTableConstKeysIterator):
631 (WTF::HashTableConstKeysIterator::get):
632 (WTF::HashTableConstKeysIterator::operator*):
633 (WTF::HashTableConstKeysIterator::operator->):
634 (WTF::HashTableConstKeysIterator::operator++):
635 (WTF::HashTableConstValuesIterator::HashTableConstValuesIterator):
636 (WTF::HashTableConstValuesIterator::get):
637 (WTF::HashTableConstValuesIterator::operator*):
638 (WTF::HashTableConstValuesIterator::operator->):
639 (WTF::HashTableConstValuesIterator::operator++):
640 (WTF::HashTableKeysIterator::HashTableKeysIterator):
641 (WTF::HashTableKeysIterator::get):
642 (WTF::HashTableKeysIterator::operator*):
643 (WTF::HashTableKeysIterator::operator->):
644 (WTF::HashTableKeysIterator::operator++):
645 (WTF::HashTableKeysIterator::operator HashTableConstKeysIterator<HashTableType, KeyType, MappedType>):
646 (WTF::HashTableValuesIterator::HashTableValuesIterator):
647 (WTF::HashTableValuesIterator::get):
648 (WTF::HashTableValuesIterator::operator*):
649 (WTF::HashTableValuesIterator::operator->):
650 (WTF::HashTableValuesIterator::operator++):
651 (WTF::HashTableValuesIterator::operator HashTableConstValuesIterator<HashTableType, KeyType, MappedType>):
656 (WTF::::appendRange):
658 2007-09-04 Maciej Stachowiak <mjs@apple.com>
662 - Remove single-threaded optimization for FastMalloc.
664 It does not appear to help anywhere but Mac OS X on PPC, due to
665 pthread_getspecific being slow there. On Intel, removing the
666 optimization results in a 1% PLT speedup, a 2% JS iBench speedup,
667 and no measurable effect on HTML iBench (maybe a slight speedup).
669 * JavaScriptCore.xcodeproj/project.pbxproj:
671 (KJS::Collector::registerThread):
672 * wtf/FastMalloc.cpp:
673 (WTF::TCMalloc_ThreadCache::GetCache):
674 (WTF::TCMalloc_ThreadCache::GetCacheIfPresent):
675 (WTF::TCMalloc_ThreadCache::CreateCacheIfNecessary):
677 * wtf/FastMallocInternal.h: Removed.
679 2007-09-03 Mark Rowe <mrowe@apple.com>
681 Reviewed by Tim Hatcher.
683 <rdar://problem/5452164> Production build with in symbols directory has no debug info
685 Enable debug symbol generation on all build configurations. Production builds are stripped
686 of symbols by Xcode during deployment post-processing.
688 * Configurations/Base.xcconfig:
689 * JavaScriptCore.xcodeproj/project.pbxproj:
691 2007-08-30 Riku Voipio <riku.voipio@iki.fi>
693 Reviewed by Dave Kilzer.
697 * kjs/ustring.h: Update comments to reflect the change and update test
698 to fit changes to Platform.h.
699 * wtf/Platform.h: Forced packing is only needed on oldabi ARM.
700 Set middle-endian floats only for little-endian oldabi ARM.
701 Set big-endian define for big-endian ARM.
703 2007-08-29 Ryan Leavengood <leavengood@gmail.com>
707 http://bugs.webkit.org/show_bug.cgi?id=15043
708 - posix_memalign takes a void** as its first parameter. My port makes use of this function call.
711 (KJS::allocateBlock):
713 2007-08-26 Darin Adler <darin@apple.com>
715 - quick follow on to that last check-in
717 * API/JSCallbackObject.cpp: (KJS::JSCallbackObject::JSCallbackObject):
718 Need to initialize m_class to 0.
720 2007-08-26 Mark Rowe <mrowe@apple.com>
722 Reviewed by Darin Adler.
724 <rdar://problem/4949002> JSGlobalContextCreate can cause crashes because it passes a NULL JSContextRef to the globalObjectClass's initialize callback
726 JSCallbackObject now tracks whether it was constructed with a null ExecState. This will happen when the object is being used as the global object,
727 as the Interpreter needs to be created after the global object. In this situation the initialization is deferred until after the Interpreter's
728 ExecState is available to be passed down to the initialize callbacks.
730 * API/JSCallbackObject.cpp:
731 (KJS::JSCallbackObject::init): Track whether we successfully initialized.
732 (KJS::JSCallbackObject::initializeIfNeeded): Attempt to initialize with the new ExecState.
733 * API/JSCallbackObject.h:
734 * API/JSContextRef.cpp:
735 (JSGlobalContextCreate): Initialize the JSCallbackObject with the Interpreter's ExecState.
737 (testInitializeOfGlobalObjectClassHasNonNullContext):
738 (main): Verify that the context passed to the initialize callback is non-null.
740 2007-08-26 Mark Rowe <mrowe@apple.com>
742 Reviewed by Darin Adler.
744 <rdar://problem/5438496> JSGlobalContextCreate crashes when passed a custom class
746 * API/JSContextRef.cpp:
747 (JSGlobalContextCreate): Specify jsNull() as the prototype and let Interpreter's constructor fix it up to point at builtinObjectPrototype().
749 (main): Use an instance of a custom class as the global object to ensure the code path is exercised in the test.
751 2007-08-26 Mike Hommey <glandium@debian.org>
753 Reviewed by Mark Rowe and David Kilzer.
755 Fix build failure on arm.
757 * wtf/Platform.h: Also test if __arm__ is defined.
759 2007-08-25 Peter Kasting <pkasting@google.com>
761 Reviewed by Maciej Stachowiak.
763 Part 3 of http://bugs.webkit.org/show_bug.cgi?id=14967
764 Bug 14967: Reduce wtf::Vector::operator[]() overloads
767 (WTF::Vector::operator[]): Only provide versions of operator[] that takes a size_t argument.
769 2007-08-25 Peter Kasting <pkasting@google.com>
771 Reviewed by Sam Weinig.
773 Part 2 of http://bugs.webkit.org/show_bug.cgi?id=14967.
774 Eliminate all remaining implicit conversions of wtf::Vector<T> to T*. Where code was
775 previously checking that the Vector's data pointer was non-NULL, check !Vector::isEmpty()
781 2007-08-16 Kevin McCullough <kmccullough@apple.com>
783 Reviewed by Geoff and Adam.
785 - Changing stack depth to 500 (from 100 on mac and win) to help out some apps specifically gmail. <rdar://problem/3590522> JavaScript call stack limit of 99 is too small for some applications; needs to be closer to 500 (4045)
789 2007-08-15 Peter Kasting <pkasting@google.com>
793 http://bugs.webkit.org/show_bug.cgi?id=14967 part 1 - Eliminate most implicit
794 conversions of wtf::Vector<T> to T* by explicitly calling .data()
796 * API/JSCallbackConstructor.cpp:
797 (KJS::JSCallbackConstructor::construct):
798 * API/JSCallbackFunction.cpp:
799 (KJS::JSCallbackFunction::callAsFunction):
800 * API/JSCallbackObject.cpp:
801 (KJS::JSCallbackObject::construct):
802 (KJS::JSCallbackObject::callAsFunction):
803 * bindings/c/c_instance.cpp:
804 (KJS::Bindings::CInstance::invokeMethod):
805 (KJS::Bindings::CInstance::invokeDefaultMethod):
806 * kjs/number_object.cpp:
807 (integer_part_noexp):
810 (KJS::UString::UTF8String):
812 2007-08-14 Darin Adler <darin@apple.com>
816 - fix <rdar://problem/5410570> Global initializer introduced by use of std::numeric_limits in r24919
819 (KJS::overflowIndicator): Turned into a function.
820 (KJS::maxUChars): Ditto.
821 (KJS::allocChars): Use the functions.
822 (KJS::reallocChars): Ditto.
823 (KJS::UString::expandedSize): Ditto.
825 2007-08-12 Darin Adler <darin@apple.com>
829 - fix http://bugs.webkit.org/show_bug.cgi?id=14931
830 <rdar://problem/5403816> JavaScript regular expression non-participating capturing parentheses
831 fail in 3 different ways
833 Test: fast/js/regexp-non-capturing-groups.html
835 * kjs/string_object.cpp:
836 (KJS::replace): Add missing code to handle undefined backreferences; before we'd get the empty string
837 instead of a JavaScript "undefined" value.
838 (KJS::StringProtoFunc::callAsFunction): Implemented backreference support for split.
839 * pcre/pcre_exec.c: (match): Made backreferences to undefined groups match the empty string instead
840 of always failing. Only in JAVASCRIPT mode.
842 * tests/mozilla/expected.html: Add a new expected test success, since this fixed one test result.
844 2007-08-10 Timothy Hatcher <timothy@apple.com>
848 <rdar://problem/5394449> Stop using some Carbon UI APIs for 64 bit
850 Disable the NPAPI for 64-bit on Mac OS X.
852 * Configurations/JavaScriptCore.xcconfig: Use the 64-bit export file.
853 * JavaScriptCore.xcodeproj/project.pbxproj: Create a 64-bit export file
854 that filters out the NPN fnctions.
855 * bindings/NP_jsobject.cpp: #ifdef out this for 64-bit on Mac OS X
856 * bindings/NP_jsobject.h: Ditto.
857 * bindings/c/c_class.cpp: Ditto.
858 * bindings/c/c_class.h: Ditto.
859 * bindings/c/c_instance.cpp: Ditto.
860 * bindings/c/c_instance.h: Ditto.
861 * bindings/c/c_runtime.cpp: Ditto.
862 * bindings/c/c_runtime.h: Ditto.
863 * bindings/c/c_utility.cpp: Ditto.
864 * bindings/c/c_utility.h: Ditto.
865 * bindings/npapi.h: Ditto.
866 * bindings/npruntime.cpp: Ditto.
867 * bindings/npruntime.h: Ditto.
868 * bindings/npruntime_impl.h: Ditto.
869 * bindings/npruntime_priv.h: Ditto.
870 * bindings/runtime.cpp:
871 (KJS::Bindings::Instance::createBindingForLanguageInstance):
872 don't creat an NPObject on Mac OS X in 64-bit.
874 2007-08-09 Mark Rowe <mrowe@apple.com>
878 <rdar://problem/5400709> Versioning in debug and release builds should include minor and tiny version before +
880 * Configurations/Version.xcconfig:
881 * JavaScriptCore.xcodeproj/project.pbxproj: Add a shell script phase to make to dependency between
882 Version.xcconfig and Info.plist explicit to Xcode.
884 2007-08-08 George Staikos <staikos@kde.org>
886 Make it compile with Qt again.
888 * wtf/unicode/qt4/UnicodeQt4.h:
889 (WTF::Unicode::toUpper):
891 2007-08-07 Sam Weinig <sam@webkit.org>
895 Fix for http://bugs.webkit.org/show_bug.cgi?id=14897
896 Decompilation of double negation fails and produces invalid or incorrect code
898 Test: fast/js/function-decompilation-operators.html
900 * kjs/nodes2string.cpp:
901 (UnaryPlusNode::streamTo): Put space after unary operator. Matches Firefox.
902 (NegateNode::streamTo): Diito.
903 (MultNode::streamTo): Put spaces around binary operator. Matches Firefox.
904 (AddNode::streamTo): Ditto.
906 2007-08-07 Darin Adler <darin@apple.com>
910 - fix <rdar://problem/5383104> REGRESSION: XHR.responseText is null instead of empty string
911 in http/tests/xmlhttprequest/zero-length-response.html
913 The new code to handle out of memory conditions was turning a "" into a null string.
915 * kjs/ustring.h: Removed UCharReference, which has long been obsolete and unused.
916 Removed copyForWriting, which was only used for the upper/lowercasing code and for
919 (KJS::allocChars): Removed special case that made this fail (return 0) when passed 0.
920 Instead assert that we're not passed 0. Also added an overflow check for two reasons:
921 1) for sizes that aren't checked this prevents us from allocating a buffer that's too
922 small, and 2) for sizes where we overflowed in the expandedSize function and returned
923 overflowIndicator, it guarantees we fail.
924 (KJS::reallocChars): Ditto.
925 (KJS::UString::expandedSize): Return a large number, overflowIndicator, rather than 0
926 for cases where we overflow.
927 (KJS::UString::spliceSubstringsWithSeparators): Added a special case for empty string so
928 we don't call allocChars with a length of 0.
929 (KJS::UString::operator=): Added special characters for both 0 and empty string so we
930 match the behavior of the constructor. This avoids calling allocChars with a length of 0
931 and making a null string rather than an empty string in that case, and also matches the
932 pattern used in the rest of the functions.
933 (KJS::UString::operator[]): Made the return value const so code that tries to use the
934 operator to modify the string will fail.
936 * kjs/string_object.cpp: (KJS::StringProtoFunc::callAsFunction): Rewrote uppercasing and
937 lowercasing functions so they don't need copyForWriting any more -- it wasn't really doing
938 any good for optimization purposes. Instead use a Vector and releaseBuffer.
940 * wtf/unicode/icu/UnicodeIcu.h: Eliminate one of the versions of toLower/toUpper -- we now
941 only need the version where both a source and destination buffer is passed in, not the one
943 * wtf/unicode/qt4/UnicodeQt4.h: Ditto.
945 2007-08-06 Sam Weinig <sam@webkit.org>
949 Fix for http://bugs.webkit.org/show_bug.cgi?id=14891
950 Decompilation of try block immediately following "else" fails
952 Test: fast/js/toString-try-else.html
954 * kjs/nodes2string.cpp:
955 (TryNode::streamTo): Add newline before "try".
957 2007-08-07 Mark Rowe <mrowe@apple.com>
961 <rdar://problem/5388774> REGRESSION: Hang occurs after clicking "Attach a file " link in a new .Mac message
963 Attempting to acquire the JSLock inside CollectorHeap::forceLock can lead to a deadlock if the thread currently
964 holding the lock is waiting on the thread that is forking. It is not considered safe to use system frameworks
965 after a fork without first execing[*] so it is not particularly important to ensure that the collector and
966 fastMalloc allocators are unlocked in the child process. If the child process wishes to use JavaScriptCore it
967 should exec after forking like it would to use any other system framework.
968 [*]: <http://lists.apple.com/archives/Cocoa-dev/2005/Jan/msg00676.html>
970 * kjs/CollectorHeapIntrospector.cpp: Remove forceLock and forceUnlock implementations.
971 * kjs/CollectorHeapIntrospector.h: Stub out forceLock and forceUnlock methods.
972 * wtf/FastMalloc.cpp: Ditto.
974 2007-08-06 Darin Adler <darin@apple.com>
976 Rubber stamped by Geoff.
978 * kjs/ustring.h: Added an assertion which would have helped us find the
979 previous bug more easily.
981 2007-08-06 Darin Adler <darin@apple.com>
985 - fix <rdar://problem/5387589> 9A514: Quartz Composer crash on launch in KJS::jsString
988 (JSEvaluateScript): Turn NULL for sourceURL into UString::null(), just as JSObjectMakeFunction already does.
989 (JSCheckScriptSyntax): Ditto.
991 2007-08-06 Matt Lilek <pewtermoose@gmail.com>
993 Not reviewed, build fix.
995 * kjs/string_object.cpp:
996 (KJS::StringProtoFunc::callAsFunction):
998 2007-08-04 Darin Adler <darin@apple.com>
1002 - fix <rdar://problem/5371862> crash in Dashcode due to Quartz Composer JavaScript garbage collector reentrancy
1004 * API/JSBase.cpp: (JSGarbageCollect): Don't call collector() if isBusy() returns true.
1006 * kjs/collector.h: Added isBusy(), removed the unused return value from collect()
1007 * kjs/collector.cpp: Added an "operation in progress" flag to the allocator.
1008 (KJS::Collector::allocate): Call abort() if an operation is already in progress. Set the new flag instead
1009 of using the debug-only GCLock.
1010 (KJS::Collector::collect): Ditto.
1011 (KJS::Collector::isBusy): Added.
1013 2007-08-04 Maciej Stachowiak <mjs@apple.com>
1015 Reviewed by Darin and Adam.
1017 <rdar://problem/5368990> REGRESSION: newsgator.com sign-on 6x slower than Safari 3 beta due to GC changes (14808)
1019 * kjs/string_object.cpp:
1020 (KJS::replace): if the string didn't change (very common in some cases) reuse the original string value.
1021 (KJS::StringProtoFunc::callAsFunction): Pass in the StringImp* when replacing, not just the UString.
1022 * kjs/string_object.h:
1023 (KJS::StringInstance::internalValue): covariant override to return StringImp for convenience
1025 2007-08-04 Mark Rowe <mrowe@apple.com>
1027 Reviewed by Oliver Hunt.
1029 <rdar://problem/5385145> r24843 introduces a crash on calling fork() (14878)
1030 http://bugs.webkit.org/show_bug.cgi?id=14878
1032 Provide no-op functions for all members of the malloc_zone_t and malloc_introspection_t structures that we
1033 register to avoid crashes in system code that assumes they will be non-null.
1035 * kjs/CollectorHeapIntrospector.cpp:
1036 (KJS::CollectorHeapIntrospector::CollectorHeapIntrospector):
1037 (KJS::CollectorHeapIntrospector::forceLock): Grab the lock.
1038 (KJS::CollectorHeapIntrospector::forceUnlock): Release the lock.
1039 * kjs/CollectorHeapIntrospector.h:
1040 (KJS::CollectorHeapIntrospector::goodSize):
1041 (KJS::CollectorHeapIntrospector::check):
1042 (KJS::CollectorHeapIntrospector::print):
1043 (KJS::CollectorHeapIntrospector::log):
1044 (KJS::CollectorHeapIntrospector::statistics):
1045 (KJS::CollectorHeapIntrospector::size):
1046 (KJS::CollectorHeapIntrospector::zoneMalloc):
1047 (KJS::CollectorHeapIntrospector::zoneCalloc):
1048 (KJS::CollectorHeapIntrospector::zoneFree):
1049 * wtf/FastMalloc.cpp:
1050 (WTF::FastMallocZone::goodSize):
1051 (WTF::FastMallocZone::check):
1052 (WTF::FastMallocZone::print):
1053 (WTF::FastMallocZone::log):
1054 (WTF::FastMallocZone::forceLock): Grab the TCMalloc locks.
1055 (WTF::FastMallocZone::forceUnlock): Release the TCMalloc locks.
1056 (WTF::FastMallocZone::FastMallocZone):
1058 2007-08-04 Mark Rowe <mrowe@apple.com>
1060 Rubber-stamped by Anders.
1062 * pcre/pcre_compile.c: Remove non-ASCII character from a comment.
1064 2007-08-02 Mark Rowe <mrowe@apple.com>
1066 Reviewed by Geoff Garen.
1068 <rdar://problem/4212199> 'leaks' reports false leaks in WebKit (because the WTF allocator uses mmap?)
1070 Implement malloc zone introspection routines to allow leaks, heap, and friends to request information
1071 about specific memory regions that were allocated by FastMalloc or the JavaScriptCore collector.
1073 This requires tool-side support before the regions will be displayed. The addition of that support is
1074 tracked by <rdar://problems/5353057&5353060>.
1076 * JavaScriptCore.exp: Export the two variables that are used by leaks to introspect the allocators.
1077 * JavaScriptCore.xcodeproj/project.pbxproj:
1078 * kjs/AllInOneFile.cpp:
1079 * kjs/CollectorHeapIntrospector.cpp: Added.
1081 (KJS::CollectorHeapIntrospector::init):
1082 (KJS::CollectorHeapIntrospector::CollectorHeapIntrospector): Create and register our zone with the system.
1083 (KJS::CollectorHeapIntrospector::enumerate): Iterate over the CollectorBlocks that are in use and report them to the caller as being used.
1084 * kjs/CollectorHeapIntrospector.h: Added.
1085 (KJS::CollectorHeapIntrospector::size): Return zero to indicate the specified pointer does not belong to this zone.
1086 * kjs/collector.cpp:
1087 (KJS::Collector::registerThread): Register the CollectorHeapIntrospector with the system when the first thread is registered with the collector.
1088 * wtf/FastMalloc.cpp:
1089 (WTF::TCMalloc_PageHeap::GetDescriptorEnsureSafe):
1090 (WTF::TCMalloc_ThreadCache_FreeList::enumerateFreeObjects): Enumerate the objects on the free list.
1091 (WTF::TCMalloc_ThreadCache::enumerateFreeObjects): Ditto.
1092 (WTF::TCMalloc_Central_FreeList::enumerateFreeObjects): Ditto.
1093 (WTF::TCMalloc_ThreadCache::InitModule): Register the FastMallocZone with the system when initializing TCMalloc.
1094 (WTF::FreeObjectFinder::FreeObjectFinder):
1095 (WTF::FreeObjectFinder::visit): Add an object to the free list.
1096 (WTF::FreeObjectFinder::isFreeObject):
1097 (WTF::FreeObjectFinder::freeObjectCount):
1098 (WTF::FreeObjectFinder::findFreeObjects): Find the free objects within a thread cache or free list.
1099 (WTF::PageMapFreeObjectFinder::PageMapFreeObjectFinder): Find the free objects within a TC_PageMap.
1100 (WTF::PageMapFreeObjectFinder::visit): Called once per allocated span. Record whether the span or any subobjects are free.
1101 (WTF::PageMapMemoryUsageRecorder::PageMapMemoryUsageRecorder):
1102 (WTF::PageMapMemoryUsageRecorder::visit): Called once per allocated span. Report the range of memory as being allocated, and the span or
1103 its subobjects as being used if they do not appear on the free list.
1104 (WTF::FastMallocZone::enumerate): Map the key remote TCMalloc data structures into our address space. We then locate all free memory ranges
1105 before reporting the other ranges as being in use.
1106 (WTF::FastMallocZone::size): Determine whether the given pointer originates from within our allocation zone. If so,
1107 we return its allocation size.
1108 (WTF::FastMallocZone::zoneMalloc):
1109 (WTF::FastMallocZone::zoneCalloc):
1110 (WTF::FastMallocZone::zoneFree):
1111 (WTF::FastMallocZone::zoneRealloc):
1113 (WTF::FastMallocZone::FastMallocZone): Create and register our zone with the system.
1114 (WTF::FastMallocZone::init):
1115 * wtf/MallocZoneSupport.h: Added.
1116 (WTF::RemoteMemoryReader::RemoteMemoryReader): A helper class to ease the process of mapping memory in a different process into
1117 our local address space
1118 (WTF::RemoteMemoryReader::operator()):
1120 (TCMalloc_PageMap2::visit): Walk over the heap and visit each allocated span.
1121 (TCMalloc_PageMap3::visit): Ditto.
1123 2007-08-02 Mark Rowe <mrowe@apple.com>
1128 (KJS::UString::expandedSize): Use std::numeric_limits<size_t>::max() rather than the non-portable SIZE_T_MAX.
1130 2007-08-02 Mark Rowe <mrowe@apple.com>
1134 <rdar://problem/5352887> "Out of memory" error during repeated JS string concatenation leaks hundreds of MBs of RAM
1136 A call to fastRealloc was failing which lead to UString::expandCapacity leaking the buffer it was trying to reallocate.
1137 It also resulted in the underlying UString::rep having both a null baseString and buf field, which meant that attempting
1138 to access the contents of the string after the failed memory reallocation would crash.
1140 A third issue is that expandedSize size was calculating the new length in a way that led to an integer overflow occurring.
1141 Attempting to allocate a string more than 190,000,000 characters long would fail a the integer overflow would lead to a
1142 memory allocation of around 3.6GB being attempted rather than the expected 390MB. Sizes that would lead to an overflow
1143 are now returned as zero and callers are updated to treat this as though the memory allocation has failed.
1145 * kjs/array_object.cpp:
1146 (ArrayProtoFunc::callAsFunction): Check whether the append failed and raise an "Out of memory" exception if it did.
1148 (KJS::allocChars): Wrapper around fastMalloc that takes a length in characters. It will return 0 when asked to allocate a zero-length buffer.
1149 (KJS::reallocChars): Wrapper around fastRealloc that takes a length in characters. It will return 0 when asked to allocate a zero-length buffer.
1150 (KJS::UString::expandedSize): Split the size calculation in two and guard against overflow during each step.
1151 (KJS::UString::expandCapacity): Don't leak r->buf if reallocation fails. Instead free the memory and use the null representation.
1152 (KJS::UString::expandPreCapacity): If fastMalloc fails then use the null representation rather than crashing in memcpy.
1153 (KJS::UString::UString): If calls to expandCapacity, expandPreCapacity or fastMalloc fail then use the null representation rather than crashing in memcpy.
1154 (KJS::UString::append): Ditto.
1155 (KJS::UString::operator=): Ditto.
1156 * kjs/ustring.h: Change return type of expandedSize from int to size_t.
1158 2007-08-01 Darin Adler <darin@apple.com>
1160 Reviewed by Kevin McCullough.
1162 - fix <rdar://problem/5375186> pointers to pieces of class definition passed to JSClassCreate should all be const
1164 * API/JSObjectRef.h: Added const.
1166 * API/JSClassRef.cpp:
1167 (OpaqueJSClass::OpaqueJSClass): Added const.
1168 (OpaqueJSClass::create): Added const.
1169 * API/JSObjectRef.cpp:
1170 (JSClassCreate): Added const.
1172 2007-08-01 Steve Falkenburg <sfalken@apple.com>
1174 Build mod: Fix sln to match configs in vcproj.
1178 * JavaScriptCore.vcproj/JavaScriptCore.make:
1179 * JavaScriptCore.vcproj/JavaScriptCore.sln:
1181 2007-07-30 Simon Hausmann <hausmann@kde.org>
1183 Done with and reviewed by Lars.
1185 Removed the __BUILDING_QT ifdef in JSStringRef.h and changed UChar for the Qt build to use wchar_t on Windows.
1187 * API/JSStringRef.h:
1188 * wtf/unicode/qt4/UnicodeQt4.h:
1190 2007-07-27 Simon Hausmann <hausmann@kde.org>
1192 Done with and reviewed by Lars and Zack.
1194 Always define JSChar to be unsigned short for the Qt builds, to ensure compatibility with UChar.
1196 * API/JSStringRef.h:
1198 2007-07-27 Simon Hausmann <hausmann@kde.org>
1200 Done with and reviewed by Lars and Zack.
1202 Fix compilation with Qt on Windows with MingW: Implemented currentThreadStackBase() for this platform.
1204 * kjs/collector.cpp:
1205 (KJS::currentThreadStackBase):
1207 2007-07-27 Simon Hausmann <hausmann@kde.org>
1209 Done with and reviewed by Lars and Zack.
1211 Fix compilation with Qt on Windows with MingW: The MingW headers do not provide a prototype for a reentrant version of localtime. But since we don't use multiple threads for the Qt build we can use the plain localtime() function.
1214 (KJS::getDSTOffsetSimple):
1216 2007-07-27 Simon Hausmann <hausmann@kde.org>
1218 Done with and reviewed by Lars and Zack.
1220 Use $(MOVE) instead of mv to eliminated the shell dependency and replaced the long shell line to call bison and modify the css grammar file with a few lines of portable perl code.
1222 * JavaScriptCore.pri:
1224 2007-07-27 Simon Hausmann <hausmann@kde.org>
1226 Done with and reviewed by Lars and Zack.
1228 Implemented currentTime() in the interpreter by using QDateTime, so that we don't need timeGetTime() on Windows and therefore also don't need to link against Winmm.dll.
1230 * kjs/interpreter.cpp:
1231 (KJS::getCurrentTime):
1236 2007-07-27 Simon Hausmann <hausmann@kde.org>
1238 Done with and reviewed by Lars and Zack.
1240 Replace the use of snprintf with QByteArray to compile under msvc 2005 express.
1242 * bindings/qt/qt_instance.cpp:
1243 (KJS::Bindings::QtInstance::stringValue):
1245 2007-07-27 Simon Hausmann <hausmann@kde.org>
1247 Done with and reviewed by Lars and Zack.
1249 Don't use pthread.h unless thread support is enabled.
1251 * kjs/collector.cpp:
1252 (KJS::Collector::registerAsMainThread):
1253 (KJS::onMainThread):
1255 2007-07-27 Simon Hausmann <hausmann@kde.org>
1257 Done with and reviewed by Lars and Zack.
1259 Removed TCSystemMalloc from the Qt build, it's not necessary it seems.
1261 * JavaScriptCore.pri:
1263 2007-07-27 Simon Hausmann <hausmann@kde.org>
1265 Done with and reviewed by Lars and Zack.
1267 Added os-win32 to the include search path for the Qt windows build in order to provide the fake stdint.h header file.
1269 * JavaScriptCore.pri:
1271 2007-07-25 Maciej Stachowiak <mjs@apple.com>
1275 - follow-up to previous change
1278 (KJS::UString::operator=): Make sure to reset the length when
1279 replacing the buffer contents for a single-owned string.
1281 2007-07-25 Maciej Stachowiak <mjs@apple.com>
1285 - JavaScriptCore part of fix for <rdar://problem/5300291> Optimize GC to reclaim big, temporary objects (like XMLHttpRequest.responseXML) quickly
1287 Also, as a side effect of optimizations included in this patch:
1288 - 7% speedup on JavaScript iBench
1289 - 4% speedup on "Celtic Kane" JS benchmark
1291 The basic idea is explained in a big comment in collector.cpp. When unusually
1292 large objecs are allocated, we push the next GC closer on the assumption that
1293 most objects are short-lived.
1295 I also did the following two optimizations in the course of tuning
1296 this not to be a performance regression:
1298 1) Change UString::Rep to hold a self-pointer as the baseString in
1299 the unshared case, instead of a null pointer; this removes a
1300 number of null checks in hot code because many places already
1301 wanted to use the rep itself or the baseString as appropriate.
1303 2) Avoid creating duplicate StringImpls when creating a
1304 StringInstance (the object wrapper for a JS string) or calling
1305 their methods. Since a temporary wrapper object is made every time
1306 a string method is called, this resulted in two useless extra
1307 StringImpls being allocated for no reason whenever a String method
1308 was invoked on a string value. Now we bypass those.
1310 * kjs/collector.cpp:
1312 (KJS::Collector::recordExtraCost): Basics of the extra cost mechanism.
1313 (KJS::Collector::allocate): ditto
1314 (KJS::Collector::collect): ditto
1316 (KJS::Collector::reportExtraMemoryCost): ditto
1317 * kjs/array_object.cpp:
1318 (ArrayInstance::ArrayInstance): record extra cost
1320 (KJS::StringImp::toObject): don't create a whole new StringImpl just
1321 to be the internal value of a StringInstance! StringImpls are immutable
1322 so there's no point tot his.
1324 (KJS::StringImp::StringImp): report extra cost
1325 * kjs/string_object.cpp:
1326 (KJS::StringInstance::StringInstance): new version that takes a StringImp
1327 (KJS::StringProtoFunc::callAsFunction): don't create a whole new StringImpl
1328 just to convert self to string! we already have one in the internal value
1329 * kjs/string_object.h: report extra cost
1330 * kjs/ustring.cpp: All changes to handle baseString being self instead of null in the
1333 (KJS::UString::Rep::create):
1334 (KJS::UString::Rep::destroy):
1335 (KJS::UString::usedCapacity):
1336 (KJS::UString::usedPreCapacity):
1337 (KJS::UString::expandCapacity):
1338 (KJS::UString::expandPreCapacity):
1339 (KJS::UString::UString):
1340 (KJS::UString::append):
1341 (KJS::UString::operator=):
1342 (KJS::UString::copyForWriting):
1344 (KJS::UString::Rep::baseIsSelf): new method, now that baseString is
1345 self instead of null in the unshared case we can't just null check.
1346 (KJS::UString::Rep::data): adjusted as mentioned above
1347 (KJS::UString::cost): new method to compute the cost for a UString, for
1351 (KJS::jsString): style fixups.
1352 (KJS::jsOwnedString): new method, use this for strings allocated from UStrings
1353 held by the parse tree. Tracking their cost as part of string cost is pointless,
1354 because garbage collecting them will not actually free the relevant string buffer.
1355 * kjs/value.h: prototyped jsOwnedString.
1357 (StringNode::evaluate): use jsOwnedString as appropriate
1358 (RegExpNode::evaluate): ditto
1359 (PropertyNameNode::evaluate): ditto
1360 (ForInNode::execute): ditto
1362 * JavaScriptCore.exp: Exported some new symbols.
1364 2007-07-23 Anders Carlsson <andersca@apple.com>
1368 <rdar://problem/5121461> REGRESSION: Unable to load JigZone puzzle
1370 * bindings/jni/jni_jsobject.cpp:
1371 (JavaJSObject::createNative):
1373 Call RootObject::gcProtect on the global object, thereby putting it in the
1374 "protect count" set which is used for checking if a native handle is valid.
1376 2007-07-23 Darin Adler <darin@apple.com>
1378 * pcre/pcre_compile.c: Roll back a tiny accidental change in the unused !JAVASCRIPT
1379 side of an #ifdef. This has no effect when using PCRE in JAVASCRIPT mode as we do,
1380 but seems worth rolling back.
1382 2007-07-23 Maciej Stachowiak <mjs@apple.com>
1386 - fix remaining problems with Window shadowing
1389 (VarDeclNode::evaluate): Tweak the special case a little.
1391 2007-07-23 Maciej Stachowiak <mjs@apple.com>
1395 - fix Window shadowing regressions caused by the previous commit.
1398 (VarDeclNode::evaluate): Handle the case of global scope specially.
1400 2007-07-22 Maciej Stachowiak <mjs@apple.com>
1404 -fixed <rdar://problem/5353293> REGRESSION (r24287): 1% i-Bench JS slowdown from JavaScript compatibility fix (14719)
1405 http://bugs.webkit.org/show_bug.cgi?id=14719
1407 My fix for this actually resulted in JS iBench being 1% faster than before the regression
1408 and the Celtic Kane benchmark being 5% faster than before the regression.
1411 (VarDeclNode::handleSlowCase): factored out the slow code path to be out of line.
1412 (VarDeclNode::evaluate): I did a couple of things:
1413 (1) Don't check if the variable is already declared by looking for the property in
1414 the variable object, that code path was dead code.
1415 (2) Special-case the common case where the top of the scope and the variable object
1416 are the same; in that case the variable must always be in the variable object.
1417 (3) Don't return a jsString() of the variable name, nothing uses the return value
1418 from this node types evaluate method.
1421 2007-07-22 Darin Adler <darin@apple.com>
1423 Reviewed by Kevin Decker.
1425 - fix <rdar://problem/5126394> REGRESSION: Crash after clicking back button in test application (13250)
1426 http://bugs.webkit.org/show_bug.cgi?id=13250
1428 * bindings/objc/objc_utility.mm: (KJS::Bindings::convertObjcValueToValue):
1429 If the object returns 0 for _imp, convert that to "undefined", since callers
1430 can't cope with a JSValue of 0.
1432 2007-07-19 Geoffrey Garen <ggaren@apple.com>
1434 Reviewed by Darin Adler.
1436 Fixed http://bugs.webkit.org/show_bug.cgi?id=10880 | <rdar://problem/5335694>
1437 REGRESSION: JavaScript menu doesn't appear on pricepoint.com (14595)
1439 Though the ECMA spec says auto-semicolon insertion should not occur
1440 without a newline or '}', Firefox treats do-while specially, and the
1441 library used by pricepoint.com requires that special treatment.
1443 * JavaScriptCore.xcodeproj/project.pbxproj:
1446 2007-07-19 Darin Adler <darin@apple.com>
1450 - fix <rdar://problem/5345440> PCRE computes wrong length for expressions with quantifiers
1451 on named recursion or subexpressions
1453 It's challenging to implement proper preflighting for compiling these advanced features.
1454 But we don't want them in the JavaScript engine anyway.
1456 Turned off the following features of PCRE (some of these are simply parsed and not implemented):
1458 \C \E \G \L \N \P \Q \U \X \Z
1461 (?#) (?<=) (?<!) (?>)
1466 Added the following:
1470 Because of \v, the js1_2/regexp/special_characters.js test now passes.
1472 To be conservative, I left some features that JavaScript doesn't want, such as
1473 \012 and \x{2013}, in place. We can revisit these later; they're not directly-enough
1474 related to avoiding the incorrect preflighting.
1476 I also didn't try to remove unused opcodes and remove code from the execution engine.
1477 That could save code size and speed things up a bit, but it would require more changes.
1480 * kjs/regexp.cpp: (KJS::RegExp::RegExp): Remove the sanitizePattern workaround for
1481 lack of \u support, since the PCRE code now has \u support.
1483 * pcre/pcre-config.h: Set JAVASCRIPT to 1.
1484 * pcre/pcre_internal.h: Added ESC_v.
1486 * pcre/pcre_compile.c: Added a different escape table for when JAVASCRIPT is set that
1487 omits all the escapes we don't want interpreted and includes '\v'.
1488 (check_escape): Put !JAVASCRIPT around the code for '\l', '\L', '\N', '\u', and '\U',
1489 and added code to handle '\u2013' inside JAVASCRIPT.
1490 (compile_branch): Put !JAVASCRIPT if around all the code implementing the features we
1492 (pcre_compile2): Ditto.
1494 * tests/mozilla/expected.html: Updated since js1_2/regexp/special_characters.js now
1497 2007-07-18 Darin Adler <darin@apple.com>
1499 Reviewed by Oliver Hunt.
1501 - fix <rdar://problem/5345432> PCRE computes length wrong for expressions such as "[**]"
1503 Test: fast/js/regexp-charclass-crash.html
1505 * pcre/pcre_compile.c: (pcre_compile2): Fix the preflight code that calls
1506 check_posix_syntax to match the actual regular expression compilation code;
1507 before it was missing the check of the first character.
1509 2007-07-19 Holger Hans Peter Freyther <zecke@selfish.org>
1513 Define __BUILDING_GDK when building for Gdk to fix building testkjs on OSX.
1515 * JavaScriptCore.pri:
1517 2007-07-18 Simon Hausmann <hausmann@kde.org>
1519 * Fix the Qt build, call dftables from the right directory.
1521 Reviewed by Adam Treat.
1525 2007-07-18 Simon Hausmann <hausmann@kde.org>
1529 Don't call gcc directly when building the dftables tool but use a separate .pro file for the Qt build.
1531 * pcre/dftables.pro: Added.
1534 2007-07-17 Cameron Zwarich <cwzwarich@uwaterloo.ca>
1536 Reviewed by Darin, Maciej, and Adam.
1538 Fixes <http://bugs.webkit.org/show_bug.cgi?id=9697>,
1539 the failure of ecma/GlobalObject/15.1.2.2-2.js,
1540 the failure of ecma/LexicalConventions/7.7.3-1.js,
1541 and most of the failures of tests in ecma/TypeConversion/9.3.1-3.js.
1543 Bug 9697: parseInt results may be inaccurate for numbers greater than 2^53
1545 This patch also fixes similar issues in the lexer and UString::toDouble().
1548 (KJS::parseIntOverflow):
1554 (KJS::UString::toDouble):
1555 * tests/mozilla/expected.html:
1557 2007-07-16 Sam Weinig <sam@webkit.org>
1561 Turn off -Wshorten-64-to-32 warning for 64-bit builds.
1563 * Configurations/Base.xcconfig:
1565 2007-07-14 Brady Eidson <beidson@apple.com>
1567 Reviewed by Sam Weinig
1569 Initial check-in for <rdar://problem/3154486> - Supporting FTP directory listings in the browser
1571 * wtf/Platform.h: Add ENABLE_FTPDIR feature to handle building on platforms that don't have the
1572 proper network-layer support
1574 2007-07-14 Cameron Zwarich <cwzwarich@uwaterloo.ca>
1578 Fixes http://bugs.webkit.org/show_bug.cgi?id=13517,
1579 http://bugs.webkit.org/show_bug.cgi?id=14237, and
1580 the failure of test js1_5/Scope/regress-185485.js
1582 Bug 13517: DOM Exception 8 in finance.aol.com sub-page
1583 Bug 14237: Javascript "var" statement interprets initialization in the topmost function scope
1586 (VarDeclNode::evaluate):
1587 * tests/mozilla/expected.html:
1589 2007-07-12 Alexey Proskuryakov <ap@webkit.org>
1593 http://bugs.webkit.org/show_bug.cgi?id=14596
1594 Fix JSC compilation with KJS_VERBOSE.
1597 (KJS::FunctionImp::passInParameters):
1599 2007-07-11 George Staikos <staikos@kde.org>
1603 * ForwardingHeaders: Added.
1604 * ForwardingHeaders/JavaScriptCore: Added.
1605 * ForwardingHeaders/JavaScriptCore/APICast.h: Added.
1606 * ForwardingHeaders/JavaScriptCore/JSBase.h: Added.
1607 * ForwardingHeaders/JavaScriptCore/JSContextRef.h: Added.
1608 * ForwardingHeaders/JavaScriptCore/JSLock.h: Added.
1609 * ForwardingHeaders/JavaScriptCore/JSObjectRef.h: Added.
1610 * ForwardingHeaders/JavaScriptCore/JSStringRef.h: Added.
1611 * ForwardingHeaders/JavaScriptCore/JSStringRefCF.h: Added.
1612 * ForwardingHeaders/JavaScriptCore/JSValueRef.h: Added.
1613 * ForwardingHeaders/JavaScriptCore/JavaScriptCore.h: Added.
1615 2007-07-11 Holger Hans Peter Freyther <zecke@selfish.org>
1619 As of http://bugs.webkit.org/show_bug.cgi?id=14527 move the
1620 WebCore/ForwardingHeader/JavaScriptCore to JavaScriptCore
1622 * ForwardingHeaders: Added.
1623 * ForwardingHeaders/JavaScriptCore: Copied from WebCore/ForwardingHeaders/JavaScriptCore.
1625 2007-07-11 Nikolas Zimmermann <zimmermann@kde.org>
1629 Forwardport the hash table fix from CodeGeneratorJS.pm to create_hash_table.
1630 Reran run-jsc-tests, couldn't find any regressions. Suggested by Darin.
1632 * kjs/create_hash_table:
1634 2007-07-09 Maciej Stachowiak <mjs@apple.com>
1638 - JavaScriptCore part of fix for: <rdar://problem/5295734> Repro crash closing tab/window @ maps.google.com in WTF::HashSet<KJS::RuntimeObjectImp*, WTF::PtrHash<KJS::RuntimeObjectImp*>, WTF::HashTraits<KJS::RuntimeObjectImp*> >::add + 11
1640 * JavaScriptCore.exp: Added needed export.
1642 2007-07-06 Maciej Stachowiak <mjs@apple.com>
1646 - <rdar://problem/5311093> JavaScriptCore fails to build with strict-aliasing warnings
1648 * Configurations/Base.xcconfig: Re-enable -Wstrict-aliasing
1649 * bindings/jni/jni_utility.cpp:
1650 (KJS::Bindings::getJNIEnv): Type-pun via a union instead of a pointer cast.
1652 (WTF::): Instead of doing type-punned assignments via pointer cast, do one of three things:
1653 (1) assign directly w/o cast if storage type matches real type; (2) assign using cast
1654 via union if type does not need reffing; (3) copy with memcpy and ref/deref manually if type
1655 needs reffing. This is ok peref-wise because memcpy of a constant length gets optomized.
1656 HashTraits are now expected to make ref()/deref() take the storage type, not the true type.
1658 (WTF::): Same basic idea.
1660 (WTF::): Added Assigner template for use by HashMap/HashSet. Change RefCounter to call ref()
1661 and deref() via storage type, avoiding the need to
1663 (WTF::RefCounter::ref): ditto
1664 (WTF::RefCounter::deref): ditto
1666 (WTF::): Change ref() and deref() for RefPtr HashTraits to take the storage type; cast
1667 via union to pointer type.
1668 * wtf/FastMalloc.cpp:
1669 (WTF::TCMalloc_PageHeap::init): Changed from constructor to init function so this can go in a union.
1670 (WTF::): redefine pageheap macro in terms of getPageHeap().
1671 (WTF::getPageHeap): new inline function, helper for pageheap macro. This hides the cast in a union.
1672 (WTF::TCMalloc_ThreadCache::InitModule): Call init() instead of using placement new to initialize page
1675 (TCMalloc_PageMap1::init): Changed from constructor to init function.
1676 (TCMalloc_PageMap2::init): ditto
1677 (TCMalloc_PageMap3::init): ditto
1680 2007-07-06 George Staikos <staikos@kde.org>
1684 Switch USE(ICONDATABASE) to ENABLE(ICONDATABASE)
1688 2007-07-03 Sam Weinig <sam@webkit.org>
1692 Eleventh round of fixes for implicit 64-32 bit conversion errors.
1693 <rdar://problem/5292262>
1695 - Fixes a real bug where where we were setting long long and unsigned long long
1696 values to a long field.
1698 * bindings/objc/objc_utility.mm:
1699 (KJS::Bindings::convertValueToObjcValue):
1701 2007-07-03 Sam Weinig <sam@webkit.org>
1703 Reviewed by Brady Eidson.
1705 Tenth round of fixes for implicit 64-32 bit conversion errors.
1706 <rdar://problem/5292262>
1708 - Add explicit casts.
1713 2007-07-02 Sam Weinig <sam@webkit.org>
1715 Reviewed by Kevin McCullough.
1717 Fourth round of fixes for implicit 64-32 bit conversion errors.
1718 <rdar://problem/5292262>
1720 Add custom piDouble and piFloat constants to use instead of M_PI.
1722 * kjs/math_object.cpp:
1723 (MathObjectImp::getValueProperty):
1727 2007-06-29 Sam Weinig <sam@webkit.org>
1731 Second pass at fixing implicit 64-32 bit conversion errors.
1732 <rdar://problem/5292262>
1734 - Add a toFloat() method to JSValue for float conversion.
1736 * JavaScriptCore.exp:
1738 (KJS::JSValue::toFloat):
1741 2007-06-27 Kevin McCullough <kmccullough@apple.com>
1745 - <rdar://problem/5271937> REGRESSION: Apparent WebKit JavaScript memory smasher when submitting comment to iWeb site (crashes in kjs_pcre_compile2)
1746 - Correctly evaluate the return value of _pcre_ucp_findchar.
1748 * pcre/pcre_compile.c:
1753 2007-06-27 Sam Weinig <sam@webkit.org>
1757 First pass at fixing implicit 64-32 bit conversion errors.
1758 <rdar://problem/5292262>
1760 - Add 'f' suffix where necessary.
1763 (StopWatch::getElapsedMS):
1765 2007-06-26 Geoffrey Garen <ggaren@apple.com>
1767 Reviewed by Maciej Stachowiak.
1769 Fixed <rdar://problem/5296627> JSGarbageCollect headerdoc suggests that
1770 using JavaScriptCore requires leaking memory
1772 * API/JSBase.h: Changed documentation to explain that you can pass NULL
1773 to JSGarbageCollect.
1775 2007-06-26 Adam Treat <adam@staikos.net>
1777 Reviewed by Adam Roben.
1779 Make the SQLite icon database optional.
1783 2007-06-15 George Staikos <staikos@kde.org>
1785 More missing files for Qt.
1787 * JavaScriptCore.pri:
1790 2007-06-15 George Staikos <staikos@kde.org>
1792 Another Qt build fix.
1794 * JavaScriptCore.pri:
1797 2007-06-15 George Staikos <staikos@kde.org>
1801 * JavaScriptCore.pri:
1803 2007-06-20 Mark Rowe <mrowe@apple.com>
1807 Fix http://bugs.webkit.org/show_bug.cgi?id=14244
1808 Bug 14244: Data corruption when using a replace() callback function with data containing "$"
1810 * kjs/string_object.cpp:
1811 (KJS::replace): When 'replacement' is a function, do not replace $n placeholders in its return value.
1812 This matches the behaviour described in ECMA 262 3rd Ed section 15.5.4.1, and as implemented in Firefox.
1814 2007-06-14 Anders Carlsson <andersca@apple.com>
1818 * bindings/runtime_object.cpp:
1819 (RuntimeObjectImp::canPut):
1821 2007-06-14 Anders Carlsson <andersca@apple.com>
1825 <rdar://problem/5103077>
1826 Crash at _NPN_ReleaseObject when quitting page at http://eshop.macsales.com/shop/ModBook
1828 <rdar://problem/5183692>
1829 http://bugs.webkit.org/show_bug.cgi?id=13547
1830 REGRESSION: Crash in _NPN_ReleaseObject when closing Safari on nba.com (13547)
1832 <rdar://problem/5261499>
1833 CrashTracer: [USER] 75 crashes in Safari at com.apple.JavaScriptCore: KJS::Bindings::CInstance::~CInstance + 40
1835 Have the root object track all live instances of RuntimeObjectImp. When invalidating
1836 the root object, also invalidate all live runtime objects by zeroing out their instance ivar.
1837 This prevents instances from outliving their plug-ins which lead to crashes.
1839 * bindings/c/c_utility.cpp:
1840 (KJS::Bindings::convertValueToNPVariant):
1841 * bindings/jni/jni_jsobject.cpp:
1842 (JavaJSObject::convertValueToJObject):
1843 * bindings/jni/jni_utility.cpp:
1844 (KJS::Bindings::convertValueToJValue):
1845 * bindings/objc/objc_runtime.mm:
1846 (ObjcFallbackObjectImp::callAsFunction):
1847 * bindings/runtime_array.cpp:
1848 (RuntimeArray::RuntimeArray):
1849 * bindings/runtime_array.h:
1850 (KJS::RuntimeArray::getConcreteArray):
1851 * bindings/runtime_method.cpp:
1852 (RuntimeMethod::callAsFunction):
1853 * bindings/runtime_method.h:
1854 * bindings/runtime_object.cpp:
1855 (RuntimeObjectImp::RuntimeObjectImp):
1856 (RuntimeObjectImp::~RuntimeObjectImp):
1857 (RuntimeObjectImp::invalidate):
1858 (RuntimeObjectImp::fallbackObjectGetter):
1859 (RuntimeObjectImp::fieldGetter):
1860 (RuntimeObjectImp::methodGetter):
1861 (RuntimeObjectImp::getOwnPropertySlot):
1862 (RuntimeObjectImp::put):
1863 (RuntimeObjectImp::canPut):
1864 (RuntimeObjectImp::defaultValue):
1865 (RuntimeObjectImp::implementsCall):
1866 (RuntimeObjectImp::callAsFunction):
1867 (RuntimeObjectImp::getPropertyNames):
1868 (RuntimeObjectImp::throwInvalidAccessError):
1869 * bindings/runtime_object.h:
1870 * bindings/runtime_root.cpp:
1871 (KJS::Bindings::RootObject::invalidate):
1872 (KJS::Bindings::RootObject::addRuntimeObject):
1873 (KJS::Bindings::RootObject::removeRuntimeObject):
1874 * bindings/runtime_root.h:
1876 2007-06-14 Anders Carlsson <andersca@apple.com>
1880 <rdar://problem/5244948>
1881 Safari keeps on complaining about slow script playing NBC TV video (14133)
1883 http://bugs.webkit.org/show_bug.cgi?id=14133
1884 Runaway JavaScript timer fires when spinning around in Google Maps street view
1886 Make sure to start and stop the timeout checker around calls to JS.
1888 * bindings/NP_jsobject.cpp:
1889 (_NPN_InvokeDefault):
1892 * bindings/jni/jni_jsobject.cpp:
1893 (JavaJSObject::call):
1894 (JavaJSObject::eval):
1896 2007-06-13 Darin Adler <darin@apple.com>
1898 Reviewed by Mark Rowe.
1900 - fix http://bugs.webkit.org/show_bug.cgi?id=14132
1901 array sort with > 10000 elements sets elements > 10000 undefined
1903 Test: fast/js/sort-large-array.html
1905 * kjs/array_instance.h: Replaced pushUndefinedObjectsToEnd with
1906 compactForSorting, and removed ExecState parameters.
1908 * kjs/array_object.cpp:
1909 (ArrayInstance::sort): Changed to call compactForSorting.
1910 (ArrayInstance::compactForSorting): Do the get and delete of the
1911 properties directly on the property map instead of using public
1912 calls from JSObject. The public calls would just read the undefined
1913 values from the compacted sort results array!
1915 2007-06-13 George Staikos <staikos@kde.org>
1919 Fix Mac OS X build after last checkin.
1923 2007-06-14 Lars Knoll <lars@trolltech.com>
1927 Disable FastMalloc for the Qt build and make sure we
1928 don't reimplement the global new/delete operators
1929 when using the system malloc.
1931 * wtf/FastMalloc.cpp:
1935 2007-06-13 Anders Carlsson <andersca@apple.com>
1939 Make sure that bindings instances get correct root objects.
1941 * JavaScriptCore.exp:
1942 * bindings/NP_jsobject.cpp:
1943 (listFromVariantArgs):
1944 (_NPN_InvokeDefault):
1947 * bindings/c/c_instance.cpp:
1948 (KJS::Bindings::CInstance::invokeMethod):
1949 (KJS::Bindings::CInstance::invokeDefaultMethod):
1950 * bindings/c/c_runtime.cpp:
1951 (KJS::Bindings::CField::valueFromInstance):
1952 * bindings/c/c_utility.cpp:
1953 (KJS::Bindings::convertNPVariantToValue):
1954 * bindings/c/c_utility.h:
1955 * bindings/objc/objc_instance.mm:
1956 (ObjcInstance::invokeMethod):
1957 (ObjcInstance::invokeDefaultMethod):
1958 (ObjcInstance::getValueOfUndefinedField):
1959 * bindings/objc/objc_runtime.mm:
1960 (ObjcField::valueFromInstance):
1961 (ObjcArray::valueAt):
1962 * bindings/objc/objc_utility.h:
1963 * bindings/objc/objc_utility.mm:
1964 (KJS::Bindings::convertObjcValueToValue):
1965 * bindings/runtime.h:
1967 2007-06-13 Simon Hausmann <hausmann@kde.org>
1971 * kjs/testkjs.pro: WebKitQt is now called QtWebKit.
1973 2007-06-12 Anders Carlsson <andersca@apple.com>
1977 * bindings/qt/qt_instance.cpp:
1978 (KJS::Bindings::QtInstance::invokeMethod):
1980 2007-06-12 Anders Carlsson <andersca@apple.com>
1984 Move the notion of field type to the JNI runtime since that's the only
1985 one that was actually using it.
1987 * bindings/c/c_runtime.h:
1988 (KJS::Bindings::CField::CField):
1989 * bindings/jni/jni_runtime.h:
1990 * bindings/objc/objc_runtime.h:
1991 * bindings/objc/objc_runtime.mm:
1992 * bindings/qt/qt_runtime.h:
1993 * bindings/runtime.h:
1994 * bindings/runtime_method.cpp:
1996 2007-06-12 Anders Carlsson <andersca@apple.com>
2000 * bindings/qt/qt_class.cpp:
2001 (KJS::Bindings::QtClass::methodsNamed):
2002 * bindings/qt/qt_instance.cpp:
2003 (KJS::Bindings::QtInstance::invokeMethod):
2005 2007-06-12 Anders Carlsson <andersca@apple.com>
2009 Get rid of the MethodList class and use a good ol' Vector instead.
2011 * bindings/c/c_class.cpp:
2012 (KJS::Bindings::CClass::methodsNamed):
2013 * bindings/c/c_instance.cpp:
2014 (KJS::Bindings::CInstance::invokeMethod):
2015 * bindings/jni/jni_class.cpp:
2016 (JavaClass::JavaClass):
2017 (JavaClass::~JavaClass):
2018 * bindings/jni/jni_instance.cpp:
2019 (JavaInstance::invokeMethod):
2020 * bindings/objc/objc_class.mm:
2021 (KJS::Bindings::ObjcClass::methodsNamed):
2022 * bindings/objc/objc_instance.mm:
2023 (ObjcInstance::invokeMethod):
2024 * bindings/objc/objc_runtime.mm:
2025 (ObjcFallbackObjectImp::callAsFunction):
2026 * bindings/runtime.cpp:
2027 * bindings/runtime.h:
2028 * bindings/runtime_method.cpp:
2029 (RuntimeMethod::lengthGetter):
2030 (RuntimeMethod::callAsFunction):
2031 * bindings/runtime_object.cpp:
2032 (RuntimeObjectImp::getOwnPropertySlot):
2034 2007-06-12 Anders Carlsson <andersca@apple.com>
2038 Make RuntimeMethod's method list a pointer so that the object size doesn't
2039 grow beyond 32 bytes when we later will replace MethodList with a Vector.
2041 * bindings/runtime_method.cpp:
2042 (RuntimeMethod::RuntimeMethod):
2043 (RuntimeMethod::lengthGetter):
2044 (RuntimeMethod::callAsFunction):
2045 * bindings/runtime_method.h:
2047 2007-06-12 Anders Carlsson <andersca@apple.com>
2051 Get rid of the Parameter class.
2053 * bindings/jni/jni_instance.cpp:
2054 (JavaInstance::invokeMethod):
2055 * bindings/jni/jni_runtime.cpp:
2056 (JavaMethod::signature):
2057 * bindings/jni/jni_runtime.h:
2058 (KJS::Bindings::JavaParameter::JavaParameter):
2059 (KJS::Bindings::JavaParameter::~JavaParameter):
2060 (KJS::Bindings::JavaParameter::type):
2061 (KJS::Bindings::JavaMethod::parameterAt):
2062 (KJS::Bindings::JavaMethod::numParameters):
2063 * bindings/runtime.h:
2065 2007-06-12 Anders Carlsson <andersca@apple.com>
2069 * bindings/qt/qt_class.h:
2071 2007-06-12 Mark Rowe <mrowe@apple.com>
2075 * bindings/objc/objc_runtime.h:
2077 2007-06-12 Anders Carlsson <andersca@apple.com>
2081 Get rid of Constructor and its only subclass JavaConstructor.
2083 * bindings/c/c_class.h:
2084 * bindings/jni/jni_class.cpp:
2085 (JavaClass::JavaClass):
2086 (JavaClass::~JavaClass):
2087 * bindings/jni/jni_class.h:
2088 * bindings/jni/jni_runtime.cpp:
2089 * bindings/jni/jni_runtime.h:
2090 * bindings/objc/objc_class.h:
2091 * bindings/runtime.h:
2093 2007-06-12 Anders Carlsson <andersca@apple.com>
2097 Use RetainPtr throughout the bindings code.
2099 * bindings/objc/objc_class.h:
2100 * bindings/objc/objc_class.mm:
2101 (KJS::Bindings::ObjcClass::ObjcClass):
2102 (KJS::Bindings::ObjcClass::methodsNamed):
2103 (KJS::Bindings::ObjcClass::fieldNamed):
2104 * bindings/objc/objc_instance.h:
2105 (KJS::Bindings::ObjcInstance::getObject):
2106 * bindings/objc/objc_instance.mm:
2107 (ObjcInstance::ObjcInstance):
2108 (ObjcInstance::~ObjcInstance):
2109 (ObjcInstance::implementsCall):
2110 (ObjcInstance::invokeMethod):
2111 (ObjcInstance::invokeDefaultMethod):
2112 (ObjcInstance::defaultValue):
2113 * bindings/objc/objc_runtime.h:
2114 (KJS::Bindings::ObjcMethod::setJavaScriptName):
2115 (KJS::Bindings::ObjcMethod::javaScriptName):
2116 (KJS::Bindings::ObjcArray::getObjcArray):
2117 * bindings/objc/objc_runtime.mm:
2119 (ObjcArray::ObjcArray):
2120 (ObjcArray::setValueAt):
2121 (ObjcArray::valueAt):
2122 (ObjcArray::getLength):
2125 2007-06-12 Anders Carlsson <andersca@apple.com>
2129 Have JSCell inherit from Noncopyable.
2131 * bindings/objc/objc_runtime.h:
2132 * bindings/runtime_object.h:
2135 2007-06-12 Anders Carlsson <andersca@apple.com>
2137 Reviewed by Darin and Maciej.
2139 More cleanup. Use our Noncopyable WTF class, add a root object member
2142 * bindings/c/c_class.h:
2143 * bindings/jni/jni_class.h:
2144 * bindings/jni/jni_instance.h:
2145 * bindings/jni/jni_runtime.cpp:
2146 (JavaArray::JavaArray):
2147 * bindings/jni/jni_runtime.h:
2148 * bindings/objc/objc_class.h:
2149 * bindings/objc/objc_runtime.h:
2150 * bindings/objc/objc_runtime.mm:
2151 (ObjcArray::ObjcArray):
2152 * bindings/objc/objc_utility.mm:
2153 (KJS::Bindings::convertObjcValueToValue):
2154 * bindings/runtime.cpp:
2155 (KJS::Bindings::Array::Array):
2156 (KJS::Bindings::Array::~Array):
2157 * bindings/runtime.h:
2158 * bindings/runtime_object.h:
2159 * bindings/runtime_root.h:
2161 2007-06-08 Zack Rusin <zrusin@trolltech.com>
2165 * bindings/qt/qt_instance.cpp:
2166 (KJS::Bindings::QtInstance::QtInstance):
2167 * bindings/qt/qt_instance.h:
2169 2007-06-07 Anders Carlsson <andersca@apple.com>
2173 Get rid of Instance::setRootObject and pass the root object to the instance constructor instead.
2175 * bindings/c/c_instance.cpp:
2176 (KJS::Bindings::CInstance::CInstance):
2177 * bindings/c/c_instance.h:
2178 * bindings/jni/jni_instance.cpp:
2179 (JavaInstance::JavaInstance):
2180 * bindings/jni/jni_instance.h:
2181 * bindings/jni/jni_jsobject.cpp:
2182 (JavaJSObject::convertJObjectToValue):
2183 * bindings/objc/objc_instance.h:
2184 * bindings/objc/objc_instance.mm:
2185 (ObjcInstance::ObjcInstance):
2186 * bindings/runtime.cpp:
2187 (KJS::Bindings::Instance::Instance):
2188 (KJS::Bindings::Instance::createBindingForLanguageInstance):
2189 * bindings/runtime.h:
2191 2007-06-07 Anders Carlsson <andersca@apple.com>
2195 Don't use a JavaInstance to store the field when all we want to do is to keep the field
2196 from being garbage collected. Instead, use a JObjectWrapper.
2198 * bindings/jni/jni_instance.h:
2199 * bindings/jni/jni_runtime.cpp:
2200 (JavaField::JavaField):
2201 (JavaField::dispatchValueFromInstance):
2202 (JavaField::dispatchSetValueToInstance):
2203 * bindings/jni/jni_runtime.h:
2204 (KJS::Bindings::JavaField::JavaField):
2205 (KJS::Bindings::JavaField::operator=):
2207 2007-05-30 Alp Toker <alp.toker@collabora.co.uk>
2211 Enable logging in the Gdk port.
2212 http://bugs.webkit.org/show_bug.cgi?id=13936
2214 * wtf/Assertions.cpp:
2215 * wtf/Assertions.h: Add WTFLogVerbose which also logs
2216 the file, line number and function.
2218 2007-05-30 Mark Rowe <mrowe@apple.com>
2220 Mac build fix. Update #include.
2222 * API/JSCallbackFunction.h:
2224 2007-05-30 Luciano Montanaro <mikelima@cirulla.net>
2228 - cross-port Harri Porten's commits 636099 and 636108 from KJS:
2229 "publish a class anyway public already" and "class is being used from
2230 outside for quite some time" in preparation for further syncronizations
2233 * kjs/date_object.cpp:
2234 * kjs/date_object.h:
2237 (KJS::InternalFunctionImp::classInfo):
2238 (KJS::InternalFunctionImp::functionName):
2239 * kjs/function_object.h:
2242 (KJS::getStaticPropertySlot):
2243 (KJS::getStaticFunctionSlot):
2244 (KJS::getStaticValueSlot):
2245 * kjs/object_object.h:
2247 2007-05-29 Sam Weinig <sam@webkit.org>
2249 Reviewed by Adam Roben.
2251 Cleanup function and fix to match comparison API.
2253 * kjs/string_object.cpp:
2254 (KJS::substituteBackreferences):
2255 (KJS::localeCompare):
2257 2007-05-28 Geoffrey Garen <ggaren@apple.com>
2259 Slight clarification to an exception message.
2261 * API/JSCallbackObject.cpp:
2262 (KJS::JSCallbackObject::put):
2264 2007-05-27 Holger Freyther <zecke@selfish.org>
2266 Reviewed by Mark Rowe.
2268 * wtf/Platform.h: Move Gdk up to allow building WebKit/Gdk on Darwin
2270 2007-05-27 Darin Adler <darin@apple.com>
2272 - fix a couple ifdefs that said WIN instead of WIN_OS
2274 * kjs/collector.cpp:
2275 (KJS::allocateBlock): WIN -> WIN_OS
2276 (KJS::freeBlock): Ditto.
2278 2007-05-26 Sam Weinig <sam@webkit.org>
2282 Patch for http://bugs.webkit.org/show_bug.cgi?id=13854
2283 Port of commit 667785 from kjs
2285 - special case calling String.localeCompare() with no parameters to return 0.
2287 * kjs/string_object.cpp:
2288 (KJS::StringProtoFunc::callAsFunction):
2290 2007-05-25 Kimmo Kinnunen <kimmok@iki.fi>
2294 - Fix for http://bugs.webkit.org/show_bug.cgi?id=13456
2295 REGRESSION: setTimeout "arguments" object gets shadowed by a local variable
2297 - Add a explicit check for arguments. Previously check was done with getDirect,
2298 but since the arguments is created on-demand in ActivationImp, it doesn't
2299 show up in the test. 'arguments' should always be in the VarDeclNode's
2303 (VarDeclNode::evaluate): Additional check if the var decl identifier is 'arguments'
2305 2007-05-25 George Staikos <staikos@kde.org>
2309 - Use COMPILER(GCC), not PLATFORM(GCC) - as Platform.h defines
2313 2007-05-25 Kimmo Kinnunen <kimmok@iki.fi>
2317 - http://bugs.webkit.org/show_bug.cgi?id=13623 (Decompilation of function
2318 doesn't compile with "++(x,y)")
2319 - Create the error node based on the actual node, not the node inside
2321 - Fix applies to postfix, prefix and typeof operators
2322 - Produces run-time ReferenceError like other non-lvalue assignments etc.
2324 * kjs/grammar.y: Create {Prefix,Postfix}ErrorNode based on the actual node,
2325 not the based on the node returned by "nodeInsideAllParens()". Same for
2328 2007-05-25 Simon Hausmann <hausmann@kde.org>
2332 Fix crash in Qt JavaScript bindings when the arguments used on the Qt side are not
2333 registered with QMetaType.
2335 * bindings/qt/qt_instance.cpp:
2336 (KJS::Bindings::QtInstance::invokeMethod):
2337 * bindings/qt/qt_runtime.cpp:
2339 2007-05-24 Luciano Montanaro <mikelima@cirulla.net>
2343 Patch for http://bugs.webkit.org/show_bug.cgi?id=13855
2344 Port patch 666176 to JavaScriptCore
2346 - Renamed JSValue::downcast() to JSValue::asCell() which makes the
2347 function meaning cleaner. It's modeled after Harri Porten change in
2350 * kjs/collector.cpp:
2351 (KJS::Collector::protect):
2352 (KJS::Collector::unprotect):
2353 (KJS::Collector::collectOnMainThreadOnly):
2355 (KJS::JSValue::isObject):
2356 * kjs/string_object.cpp:
2357 (KJS::StringProtoFunc::callAsFunction):
2359 (KJS::JSValue::asCell):
2360 (KJS::JSValue::isNumber):
2361 (KJS::JSValue::isString):
2362 (KJS::JSValue::isObject):
2363 (KJS::JSValue::getNumber):
2364 (KJS::JSValue::getString):
2365 (KJS::JSValue::getObject):
2366 (KJS::JSValue::getUInt32):
2367 (KJS::JSValue::mark):
2368 (KJS::JSValue::marked):
2369 (KJS::JSValue::type):
2370 (KJS::JSValue::toPrimitive):
2371 (KJS::JSValue::toBoolean):
2372 (KJS::JSValue::toNumber):
2373 (KJS::JSValue::toString):
2374 (KJS::JSValue::toObject):
2376 2007-05-18 Holger Hans Peter Freyther <zecke@selfish.org>
2378 Reviewed by Mark Rowe.
2380 * kjs/testkjs.pro: Make the Gdk port link to icu
2382 2007-05-15 Geoffrey Garen <ggaren@apple.com>
2384 Reviewed by Adele Peterson.
2386 It helps if you swap the right variable.
2391 2007-05-15 Lars Knoll <lars@trolltech.com>
2395 Extend the QObject JavaScript bindings to work for slots with
2398 * bindings/qt/qt_instance.cpp:
2399 (KJS::Bindings::QtInstance::invokeMethod):
2401 2007-05-14 Kimmo Kinnunen <kimmok@iki.fi>
2405 - Fixes http://bugs.webkit.org/show_bug.cgi?id=13622 (Decompiler
2406 omits trailing comma in array literal)
2408 * kjs/nodes2string.cpp:
2409 (ArrayNode::streamTo): print extra ',' in case there was elision
2410 commas (check opt member var) and array elements present
2411 in the array expression
2413 2007-05-14 Geoffrey Garen <ggaren@apple.com>
2415 Reviewed by Oliver Hunt.
2417 Added HashMap::swap and HashSet::swap. WebCore now uses HashSet::swap.
2418 I figured while I was in the neighborhood I might as well add HashMap::swap,
2428 2007-05-11 Kimmo Kinnunen <kimmok@iki.fi>
2432 - Fix for bug http://bugs.webkit.org/show_bug.cgi?id=13620
2433 Bogus decompilation of "for (var j = 1 in [])"
2434 - ForInNode toString()'ed to syntax error if there was var decl
2436 - ForNode toStringed()'ed lost 'var ' if it was present
2438 * kjs/nodes2string.cpp:
2439 (VarDeclListNode::streamTo): Print "var " here
2440 (VarStatementNode::streamTo): Don't print "var " here
2441 (ForNode::streamTo): Remove TODO comment, VarDeclListNode will
2443 (ForInNode::streamTo): ForIn initializer is printed by VarDeclNode
2445 2007-05-11 Kimmo Kinnunen <kimmok@iki.fi>
2449 - Fixes http://bugs.webkit.org/show_bug.cgi?id=10878
2450 (Incorrect decompilation for "4..x")
2451 - Group numbers in dotted expressions in toString() output, so we
2452 avoid the 4.x constructs when the original input is 4..x.
2453 4..x means the same as 4. .x or (4).x or Number(4).x
2455 * kjs/nodes2string.cpp:
2456 (KJS::SourceStream::):
2457 Add boolean flag to indicate that if next item is a number, it should be grouped.
2458 Add new formatting enum which turns on the boolean flag.
2459 (KJS::SourceStream::SourceStream): Added. Initialize the flag.
2460 (SourceStream::operator<<): Added. New overloaded operator with double value as parameter.
2461 (NumberNode::streamTo): Use the double operator
2462 (ArrayNode::streamTo):
2463 (DotAccessorNode::streamTo):
2464 (FunctionCallDotNode::streamTo):
2465 (FunctionCallParenDotNode::streamTo):
2466 (PostfixDotNode::streamTo):
2467 (DeleteDotNode::streamTo):
2468 (PrefixDotNode::streamTo):
2469 (AssignDotNode::streamTo): Use the new formatting enum to turn on the grouping flag.
2471 2007-05-10 Lars Knoll <lars@trolltech.com>
2475 Fix our last three test failures in the JavaScript
2478 * wtf/unicode/qt4/UnicodeQt4.h:
2479 (WTF::Unicode::toLower):
2480 (WTF::Unicode::toUpper):
2482 2007-05-08 Geoffrey Garen <ggaren@apple.com>
2484 Reviewed by Darin Adler.
2486 Fixed #includes of JSStringRefCF.h and use of CF datatypes. I think I
2487 misunderstood this issue before.
2489 * API/JavaScriptCore.h: #include JSStringRefCF.h. Platforms that don't
2490 want this behavior can just #include individual headers, instead of the
2491 umbrella framework header. But we definitely want Mac OS X clients to
2492 get the #include of JSStringRefCF.h "for free."
2493 * API/minidom.c: Don't #include JSStringRefCF.h. (Don't need to #include
2494 JavaScriptCore.h, either.)
2495 * API/testapi.c: Don't #include JSStringRefCF.h. Do use CF datatypes
2496 regardless of whether __APPLE__ is defined. Platforms that don't support
2497 CF just shouldn't compile this file.
2500 2007-05-09 Eric Seidel <eric@webkit.org>
2504 http://bugs.webkit.org/show_bug.cgi?id=6985
2505 Cyclic __proto__ values cause WebKit to hang
2508 (KJS::JSObject::put): do a cycle check before setting __proto__
2510 2007-05-08 Kimmo Kinnunen <kimmok@iki.fi>
2512 Reviewed by darin. Landed by eseidel.
2514 - http://bugs.webkit.org/show_bug.cgi?id=10880 (Do..while loop gains
2515 a semicolon each time it is toStringed)
2516 Grammar in Ecma-66262, 12.6: "do Statement while ( Expression );"
2517 EmptyStatement was created after every do..while(expr) which
2518 had semicolon at the end.
2520 * kjs/grammar.y: Require semicolon at the end of do..while
2522 2007-05-08 Geoffrey Garen <ggaren@apple.com>
2524 Build fix -- this time for sure.
2526 APICast.h, being private, ends up in a different folder than JSValueRef.h,
2527 so we can't include one from the other using "". Instead, just forward
2528 declare the relevant data types.
2532 2007-05-08 Geoffrey Garen <ggaren@apple.com>
2534 Build fix: export APICast.h for WebCore and WebKit.
2536 * JavaScriptCore.xcodeproj/project.pbxproj:
2538 2007-05-04 Darin Adler <darin@apple.com>
2542 - fix http://bugs.webkit.org/show_bug.cgi?id=12821
2543 <rdar://problem/5007921> Number.toExponential doesn't work for negative numbers
2545 * kjs/number_object.cpp: (NumberProtoFunc::callAsFunction):
2546 Added a call to fabs before calling log10.
2548 2007-05-03 Holger Freyther <freyther@kde.org>
2550 Reviewed by Zack, landed by Simon.
2551 This is bugzilla bug 13499.
2553 * JavaScriptCore.pri: Place Qt into the qt-port scope
2554 * bindings/testbindings.pro: Place Qt into the qt-port scope
2555 * kjs/testkjs.pro: Place Qt into the qt-port scope
2556 * pcre/pcre.pri: Place Qt into the qt-port scope
2558 2007-05-02 David Harrison <harrison@apple.com>
2562 <rdar://problem/5174862> Crash resulting from DeprecatedString::insert()
2564 Added insertion support for more than one value.
2568 Added support for inserting multiple values.
2571 New. Insert at the start of vectors. Convenient for vectors used as strings.
2573 2007-05-01 Jungshik Shin <jungshik.shin@gmail.com>
2577 - get rid of non-ASCII lteral characters : suppress compiler warnings
2578 http://bugs.webkit.org/show_bug.cgi?id=13551
2581 * pcre/pcre_compile.c:
2583 2007-04-28 Jungshik Shin <jungshik.shin@gmail.com>
2585 Reviewed by Sam Weinig.
2587 - Replace copyright sign in Latin-1 (0xA9) with '(C)'
2588 http://bugs.webkit.org/show_bug.cgi?id=13531
2590 * bindings/npruntime.h:
2592 2007-04-28 Darin Adler <darin@apple.com>
2596 - fix <rdar://problem/5154144> Hamachi test fails: assertion failure in ListHashSet
2598 Test: fast/forms/add-remove-form-elements-stress-test.html
2600 * wtf/ListHashSet.h:
2601 (WTF::ListHashSetNodeAllocator::ListHashSetNodeAllocator): Initialize
2602 m_isDoneWithInitialFreeList to false.
2603 (WTF::ListHashSetNodeAllocator::allocate): Added assertions based on a debug-only
2604 m_isAllocated flag that make sure we don't allocate a block that's already allocated.
2605 These assertions helped pinpoint the bug. Set m_isDoneWithInitialFreeList when we
2606 allocate the last block of the initial free list. Once we're done with the initial
2607 free list, turn off the rule that says that the next node in the pool after the last
2608 node in the free list is also free. This rule works because any free nodes are added
2609 to the head of the free list, so a node that hasn't been allocated even once is always
2610 at the tail of the free list and all the nodes after it also haven't been allocated
2611 even once. But it doesn't work any longer once the entire pool has been used at least
2612 once, because there's nothing special about the last node on the free list any more.
2613 (WTF::ListHashSetNodeAllocator::deallocate): Set the node's m_isAllocated to false.
2614 (WTF::ListHashSetNodeAllocator::pastPool): Added. Used above.
2615 (WTF::ListHashSetNodeAllocator::inPool): Changed to use the pastPool function.
2616 (WTF::ListHashSetNode::ListHashSetNode): Initialize m_isAllocated to true.
2617 (WTF::ListHashSetNode::operator new): Removed variable name for unused size
2619 (WTF::ListHashSetNode::destroy): Changed to call the destructor rather than
2620 delete -- this gets rid of the need to define an operator delete.
2622 2007-04-27 Christopher Brichford <chrisb@adobe.com>
2624 Reviewed by Timothy Hatcher.
2626 Fix for: Bug 13211: Move JavaScriptCore mac project files for apollo port
2627 http://bugs.webkit.org/show_bug.cgi?id=13211
2629 * JavaScriptCore.apolloproj/mac/JavaScriptCore.Debug.xcconfig: Added.
2630 * JavaScriptCore.apolloproj/mac/JavaScriptCore.Release.xcconfig: Added.
2631 * JavaScriptCore.apolloproj/mac/JavaScriptCore.xcconfig: Added.
2632 * JavaScriptCore.apolloproj/mac/JavaScriptCore.xcodeproj/project.pbxproj: Added.
2633 * JavaScriptCore.apolloproj/mac/JavaScriptCore/JavaScriptCore.Debug.xcconfig: Removed.
2634 * JavaScriptCore.apolloproj/mac/JavaScriptCore/JavaScriptCore.Release.xcconfig: Removed.
2635 * JavaScriptCore.apolloproj/mac/JavaScriptCore/JavaScriptCore.xcconfig: Removed.
2636 * JavaScriptCore.apolloproj/mac/JavaScriptCore/JavaScriptCore.xcodeproj/project.pbxproj: Removed.
2638 2007-04-27 Holger Freyther <freyther@kde.org>
2642 Remove unmaintained CMake build system.
2644 * CMakeLists.txt: Removed.
2645 * pcre/CMakeLists.txt: Removed.
2647 2007-04-27 Mark Rowe <mrowe@apple.com>
2651 * JavaScriptCore.xcodeproj/project.pbxproj: Improve dependencies in Xcode project
2652 by marking dftables as a dependency of Generate Derived Sources rather than of
2653 JavaScriptCore itself.
2655 2007-04-26 Geoffrey Garen <ggaren@apple.com>
2657 Build fix -- added #includes that we used to get implicitly through
2665 2007-04-26 Geoffrey Garen <ggaren@apple.com>
2667 Reviewed by Maciej Stachowiak, Adam Roben.
2670 <rdar://problem/4885130> Remove #include of JSStringRefCF.h from JSStringRef.h
2671 <rdar://problem/4885123> JavaScriptCore is not cross-platform -- JSStringRef.h references CF datatypes
2673 * API/JSStringRef.h: Removed #include -- no clients need it anymore.
2675 2007-04-25 David Kilzer <ddkilzer@apple.com>
2679 Add assertions for debug builds.
2682 (KJS::JSLock::lock): Assert the return value of pthread_mutex_lock() in debug builds.
2683 (KJS::JSLock::unlock): Assert the return value of pthread_mutex_unlock() in debug builds.
2685 2007-04-25 Maciej Stachowiak <mjs@apple.com>
2689 - fix build problems
2691 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: Disable warning that
2692 gives often downright incorrect results based on guessing what will happen in 64-bit.
2694 2007-04-25 Darin Adler <darin@apple.com>
2698 - tweak the allocator for a small speedup -- Shark showed this was a win, but I can't
2699 measure an improvement right now, but it's also clear these changes do no harm
2701 * wtf/FastMalloc.cpp:
2702 (WTF::LgFloor): Use ALWAYS_INLINE here; in testing I did a while back this was necessary
2703 to get this single-instruction function to be inlined.
2704 (WTF::SizeClass): Use ALWAYS_INLINE here too for the same reason. Also change the special
2705 case for a size of 0 to work without a branch for a bit of extra speed.
2706 (WTF::ByteSizeForClass): Use ALWAYS_INLINE here too for the same reason.
2708 2007-04-24 Maciej Stachowiak <mjs@apple.com>
2712 - use custom calling convention for everything in nodes.cpp on intel gcc for 1.5% speed boost
2714 Nearly all functions in nodes.cpp were marked up to use the
2715 regparm(3) calling convention under GCC for x86, since this is
2716 faster and they are all guaranteed to be called only internally to
2719 The only exception is destructors, since delete doesn't know how to use a custom calling convention.
2722 (dotExprDoesNotAllowCallsString):
2725 (KJS::StatementNode::):
2727 (KJS::BooleanNode::):
2728 (KJS::NumberNode::):
2729 (KJS::StringNode::):
2730 (KJS::RegExpNode::):
2732 (KJS::ResolveNode::):
2734 (KJS::ElementNode::):
2736 (KJS::PropertyNameNode::):
2737 (KJS::PropertyNode::):
2738 (KJS::PropertyListNode::):
2739 (KJS::ObjectLiteralNode::):
2740 (KJS::BracketAccessorNode::):
2741 (KJS::DotAccessorNode::):
2742 (KJS::ArgumentListNode::):
2743 (KJS::ArgumentsNode::):
2744 (KJS::NewExprNode::):
2745 (KJS::FunctionCallValueNode::):
2746 (KJS::FunctionCallResolveNode::):
2747 (KJS::FunctionCallBracketNode::):
2748 (KJS::FunctionCallParenBracketNode::):
2749 (KJS::FunctionCallDotNode::):
2750 (KJS::FunctionCallParenDotNode::):
2751 (KJS::PostfixResolveNode::):
2752 (KJS::PostfixBracketNode::):
2753 (KJS::PostfixDotNode::):
2754 (KJS::PostfixErrorNode::):
2755 (KJS::DeleteResolveNode::):
2756 (KJS::DeleteBracketNode::):
2757 (KJS::DeleteDotNode::):
2758 (KJS::DeleteValueNode::):
2760 (KJS::TypeOfResolveNode::):
2761 (KJS::TypeOfValueNode::):
2762 (KJS::PrefixResolveNode::):
2763 (KJS::PrefixBracketNode::):
2764 (KJS::PrefixDotNode::):
2765 (KJS::PrefixErrorNode::):
2766 (KJS::UnaryPlusNode::):
2767 (KJS::NegateNode::):
2768 (KJS::BitwiseNotNode::):
2769 (KJS::LogicalNotNode::):
2773 (KJS::RelationalNode::):
2775 (KJS::BitOperNode::):
2776 (KJS::BinaryLogicalNode::):
2777 (KJS::ConditionalNode::):
2778 (KJS::AssignResolveNode::):
2779 (KJS::AssignBracketNode::):
2780 (KJS::AssignDotNode::):
2781 (KJS::AssignErrorNode::):
2783 (KJS::AssignExprNode::):
2784 (KJS::VarDeclListNode::):
2785 (KJS::VarStatementNode::):
2786 (KJS::EmptyStatementNode::):
2787 (KJS::ExprStatementNode::):
2789 (KJS::DoWhileNode::):
2792 (KJS::ContinueNode::):
2794 (KJS::ReturnNode::):
2799 (KJS::ParameterNode::):
2801 (KJS::FunctionBodyNode::):
2802 (KJS::FuncExprNode::):
2803 (KJS::FuncDeclNode::):
2804 (KJS::SourceElementsNode::):
2805 (KJS::CaseClauseNode::):
2806 (KJS::ClauseListNode::):
2807 (KJS::SwitchNode::):
2809 2007-04-24 Oliver Hunt <oliver@apple.com>
2811 GTK Build fix, ::findEntry->KJS::findEntry
2814 (KJS::Lookup::findEntry):
2815 (KJS::Lookup::find):
2817 2007-04-23 Maciej Stachowiak <mjs@apple.com>
2821 - compile most of JavaScriptCore as one file for 4% JS iBench speed improvement
2823 * JavaScriptCore.xcodeproj/project.pbxproj: Add AllInOneFile.cpp, and remove files it includes
2825 * kjs/AllInOneFile.cpp: Added.
2826 * kjs/dtoa.cpp: Renamed CONST to CONST_ to avoid conflict.
2828 (Bigint::nrv_alloc):
2829 * kjs/lookup.cpp: Use "namspace KJS { ... }" instead of "using namespace KJS;"
2831 2007-04-23 Maciej Stachowiak <mjs@apple.com>
2833 Build fix, not reviewed.
2835 * kjs/collector.h: Fix struct/class mismatch.
2837 2007-04-23 Maciej Stachowiak <mjs@apple.com>
2841 - raise ALLOCATIONS_PER_COLLECTION to 4000, for 3.7% iBench speed improvement
2843 Now that the cell size is smaller and the block size is bigger, we can fit 4000 objects in
2844 the two spare cells the collector is willing to keep around, so collect a bit less often.
2846 * kjs/collector.cpp:
2848 2007-04-23 Maciej Stachowiak <mjs@apple.com>
2850 Reviewed by Darin and Geoff.
2852 - move mark and collectOnMainThreadOnly bits into separate bitmaps
2854 This saves 4 bytes per cell, allowing shrink of cell size to 32,
2855 which leads to a .8% speed improvement on iBench.
2857 This is only feasible because of all the previous changes on the branch.
2859 * kjs/collector.cpp:
2860 (KJS::allocateBlock): Adjust for some renames of constants.
2861 (KJS::Collector::markStackObjectsConservatively): Now that cells are 32 bytes (64
2862 bytes on 64-bit) the cell alignment check can be made much more strict, and also
2863 obsoletes the need for a % sizeof(CollectorCell) check. Also, we can mask off the low
2864 bits of the pointer to have a potential block pointer to look for.
2865 (KJS::Collector::collectOnMainThreadOnly): Use bitmap.
2866 (KJS::Collector::markMainThreadOnlyObjects): Use bitmap.
2867 (KJS::Collector::collect): When sweeping, use bitmaps directly to find mark bits.
2869 (KJS::): Move needed constants and type declarations here.
2870 (KJS::CollectorBitmap::get): Bit twiddling to get a bitmap value.
2871 (KJS::CollectorBitmap::set): Bit twiddling to set a bitmap bit to true.
2872 (KJS::CollectorBitmap::clear): Bit twiddling to set a bitmap bit to false.
2873 (KJS::CollectorBitmap::clearAll): Clear whole bitmap at one go.
2874 (KJS::Collector::cellBlock): New operation, compute the block pointer for
2875 a cell by masking off low bits.
2876 (KJS::Collector::cellOffset): New operation, compute the cell offset for a
2877 cell by masking off high bits and dividing (actually a shift).
2878 (KJS::Collector::isCellMarked): Check mark bit in bitmap
2879 (KJS::Collector::markCell): Set mark bit in bitmap.
2881 (KJS::JSCell::JSCell): No more bits.
2882 (KJS::JSCell::marked): Let collector handle it.
2883 (KJS::JSCell::mark): Let collector handle it.
2885 2007-04-23 Anders Carlsson <andersca@apple.com>
2889 * kjs/regexp_object.h:
2890 RegExpObjectImpPrivate is a struct, not a class.
2892 2007-04-23 Maciej Stachowiak <mjs@apple.com>
2896 - shrink FunctionImp / DeclaredFunctionImp by 4 bytes, by moving parameter list to function body
2898 I reconciled this with a similar change in KDE kjs by Maks Orlovich <maksim@kde.org>.
2901 (KJS::FunctionImp::callAsFunction):
2902 (KJS::FunctionImp::passInParameters):
2903 (KJS::FunctionImp::lengthGetter):
2904 (KJS::FunctionImp::getParameterName):
2906 * kjs/function_object.cpp:
2907 (FunctionProtoFunc::callAsFunction):
2908 (FunctionObjectImp::construct):
2910 (FunctionBodyNode::addParam):
2911 (FunctionBodyNode::paramString):
2912 (FuncDeclNode::addParams):
2913 (FuncDeclNode::processFuncDecl):
2914 (FuncExprNode::addParams):
2915 (FuncExprNode::evaluate):
2917 (KJS::Parameter::Parameter):
2918 (KJS::FunctionBodyNode::numParams):
2919 (KJS::FunctionBodyNode::paramName):
2920 (KJS::FunctionBodyNode::parameters):
2921 (KJS::FuncExprNode::FuncExprNode):
2922 (KJS::FuncDeclNode::FuncDeclNode):
2923 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: Disable 64-bit warnings because
2924 they handle size_t badly.
2926 2007-04-23 Maciej Stachowiak <mjs@apple.com>
2930 - shrink RegexpObjectImp by 4 bytes
2932 Somewhat inexplicably, this seems to be a .33% speedup on JS iBench.
2934 * kjs/regexp_object.cpp:
2935 (KJS::RegExpObjectImpPrivate::RegExpObjectImpPrivate):
2936 (RegExpObjectImp::RegExpObjectImp):
2937 (RegExpObjectImp::performMatch):
2938 (RegExpObjectImp::arrayOfMatches):
2939 (RegExpObjectImp::getBackref):
2940 (RegExpObjectImp::getLastMatch):
2941 (RegExpObjectImp::getLastParen):
2942 (RegExpObjectImp::getLeftContext):
2943 (RegExpObjectImp::getRightContext):
2944 (RegExpObjectImp::getValueProperty):
2945 (RegExpObjectImp::putValueProperty):
2946 * kjs/regexp_object.h:
2948 2007-04-23 Maciej Stachowiak <mjs@apple.com>
2952 - change to 1-bit bitfields instead of 8-bit, this turns out to lead to a .51% speedup on JS iBench
2954 The 1-bit bitfields are actually faster than just plain bools, at least on Intel (go figure).
2956 * kjs/property_map.h:
2958 2007-04-23 Maciej Stachowiak <mjs@apple.com>
2962 - shrink ArrayInstance objects by 4 bytes
2963 http://bugs.webkit.org/show_bug.cgi?id=13386
2965 I did this by storing the capacity before the beginning of the storage array. It turns out
2966 it is rarely needed and is by definition 0 when the storage array is null.
2968 * kjs/array_instance.h:
2969 (KJS::ArrayInstance::capacity): Get it from the secret stash
2970 * kjs/array_object.cpp:
2971 (allocateStorage): New function to encapsulate allocating the storage with extra space ahead
2973 (reallocateStorage): ditto for realloc
2974 (ArrayInstance::ArrayInstance):
2975 (ArrayInstance::~ArrayInstance):
2976 (ArrayInstance::resizeStorage):
2978 2007-04-23 Darin Adler <darin@apple.com>
2982 - fix <rdar://problem/4840688> REGRESSION (r10588, r10621): JavaScript won't parse
2983 modifications of non-references (breaks 300themovie.warnerbros.com, fedex.com)
2985 Despite the ECMAScript specification's claim that you can treat these as syntax
2986 errors, doing so creates some website incompatibilities. So this patch turns them back
2987 into evaluation errors instead.
2989 Test: fast/js/modify-non-references.html
2991 * kjs/grammar.y: Change makeAssignNode, makePrefixNode, and makePostfixNode so that they
2992 never fail to parse. Update rules that use them. Fix a little bit of indenting. Use
2993 new PostfixErrorNode, PrefixErrorNode, and AssignErrorNode classes.
2995 * kjs/nodes.h: Added an overload of throwError that takes a char* argument.
2996 Replaced setExceptionDetailsIfNeeded and debugExceptionIfNeeded with handleException,
2997 which does both. Added PostfixErrorNode, PrefixErrorNode, and AssignErrorNode classes.
2999 * kjs/nodes.cpp: Changed exception macros to use handleException; simpler and smaller
3000 code size than the two functions that we used before.
3001 (Node::throwError): Added the overload mentioned above.
3002 (Node::handleException): Added. Contains the code from both setExceptionDetailsIfNeeded
3003 and debugExceptionIfNeeded.
3004 (PostfixErrorNode::evaluate): Added. Throws an exception.
3005 (PrefixErrorNode::evaluate): Ditto.
3006 (AssignErrorNode::evaluate): Ditto.
3007 (ThrowNode::execute): Call handleException instead of debugExceptionIfNeeded; this
3008 effectively adds a call to setExceptionDetailsIfNeeded, which may help with getting
3009 the correct file and line number for these exceptions.
3011 * kjs/nodes2string.cpp:
3012 (PostfixErrorNode::streamTo): Added.
3013 (PrefixErrorNode::streamTo): Added.
3014 (AssignErrorNode::streamTo): Added.
3016 2007-04-23 Maciej Stachowiak <mjs@apple.com>
3020 - fix test failures / crashes on PPC
3022 * kjs/property_map.h: Make the bool fields explicitly 8-bit bitfields, since bool is a full
3023 word there otherwise :-(
3025 2007-04-23 Maciej Stachowiak <mjs@apple.com>
3029 - fix more test case failures
3031 * bindings/runtime_array.cpp:
3032 (RuntimeArray::RuntimeArray): inherit from JSObject instead of ArrayInstance; it turns
3033 out that this class only needs the prototype and classInfo from ArrayInstance, not the
3034 actual class itself, and it was too big otherwise.
3035 (RuntimeArray::getOwnPropertySlot):
3036 * bindings/runtime_array.h:
3038 2007-04-23 Maciej Stachowiak <mjs@apple.com>
3042 - fix some test failures
3044 * bindings/runtime_method.cpp:
3045 (RuntimeMethod::RuntimeMethod): inherit from InternalFunctionImp instead of FunctionImpl,
3046 otherwise this is too big
3047 (RuntimeMethod::getOwnPropertySlot):
3048 * bindings/runtime_method.h:
3050 2007-04-22 Maciej Stachowiak <mjs@apple.com>
3054 - discard the arguments List for an ActivationImp when the corresponding Context is destroyed (1.7% speedup)
3055 http://bugs.webkit.org/show_bug.cgi?id=13385
3057 Based an idea by Christopher E. Hyde <C.Hyde@parableuk.force9.co.uk>. His patch to do
3058 this also had many other List changes and I found this much simpler subset of the changes
3059 was actually a hair faster.
3061 This optimization is valid because the arguments list is only kept around to
3062 lazily make the arguments object. If it's not made by the time the function
3063 exits, it never will be, since any function that captures the continuation will
3064 have its own local arguments variable in scope.
3066 Besides the 1.7% speed improvement, it shrinks List by 4 bytes
3067 (which in turn shrinks ActivationImp by 4 bytes).
3070 (KJS::Context::~Context): Clear the activation's arguments list.
3072 (KJS::ActivationImp::ActivationImp): Adjusted for list changes.
3073 (KJS::ActivationImp::mark): No need to mark, lists are always protected (this doesn't
3074 cause a ref-cycle for reasons stated above).
3075 (KJS::ActivationImp::createArgumentsObject): Clear arguments list.
3078 (KJS::List::List): No more needsMarking boolean
3079 (KJS::List::operator=): ditto
3081 (KJS::List::List): ditto
3082 (KJS::List::reset): ditto
3083 (KJS::List::deref): ditto
3085 2007-04-22 Maciej Stachowiak <mjs@apple.com>
3089 - shrink PropertyMap by 8 bytes and therefore shrink CELL_SIZE to 40 (for 32-bit;
3090 similar shrinkage for 64-bit)
3091 http://bugs.webkit.org/show_bug.cgi?id=13384
3093 Inspired by similar changes by Christopher E. Hyde <C.Hyde@parableuk.force9.co.uk>
3094 done in the kjs-tweaks branch of KDE's kjs. However, this version is somewhat
3095 cleaner style-wise and avoids some of the negative speed impact (at least on gcc/x86)
3098 This is nearly a wash performance-wise, maybe a slight slowdown, but worth doing
3099 to eventually reach cell size 32.
3101 * kjs/collector.cpp:
3103 * kjs/property_map.cpp:
3104 (KJS::PropertyMap::~PropertyMap):
3105 (KJS::PropertyMap::clear):
3106 (KJS::PropertyMap::get):
3107 (KJS::PropertyMap::getLocation):
3108 (KJS::PropertyMap::put):
3109 (KJS::PropertyMap::insert):
3110 (KJS::PropertyMap::expand):
3111 (KJS::PropertyMap::rehash):
3112 (KJS::PropertyMap::remove):
3113 (KJS::PropertyMap::mark):
3114 (KJS::PropertyMap::containsGettersOrSetters):
3115 (KJS::PropertyMap::getEnumerablePropertyNames):
3116 (KJS::PropertyMap::getSparseArrayPropertyNames):
3117 (KJS::PropertyMap::save):
3118 (KJS::PropertyMap::checkConsistency):
3119 * kjs/property_map.h:
3120 (KJS::PropertyMap::hasGetterSetterProperties):
3121 (KJS::PropertyMap::setHasGetterSetterProperties):
3122 (KJS::PropertyMap::):
3123 (KJS::PropertyMap::PropertyMap):
3125 2007-04-22 Maciej Stachowiak <mjs@apple.com>
3129 - change blocks to 64k in size, and use various platform-specific calls to allocate at 64k-aligned addresses
3130 http://bugs.webkit.org/show_bug.cgi?id=13383
3132 * kjs/collector.cpp:
3133 (KJS::allocateBlock): New function to allocate 64k of 64k-aligned memory
3134 (KJS::freeBlock): Corresponding free
3135 (KJS::Collector::allocate):
3136 (KJS::Collector::collect):
3138 2007-04-22 Maciej Stachowiak <mjs@apple.com>
3140 Reviewed by Darin and Geoff.
3142 - remove the concept of oversize objects, now that there aren't any (for now
3143 only enforced with an assert).
3144 http://bugs.webkit.org/show_bug.cgi?id=13382
3146 This change is a .66% speedup on JS iBench for 32-bit platforms, probably much more
3147 for 64-bit since it finally gives a reasonable cell size, but I did not test that.
3149 * kjs/collector.cpp:
3150 (KJS::): Use different cell size for 32-bit and 64-bit, now that there is no
3151 oversize allocation.
3152 (KJS::Collector::allocate): Remove oversize allocator.
3153 (KJS::Collector::markStackObjectsConservatively): Don't check oversize objects.
3154 (KJS::Collector::markMainThreadOnlyObjects): Ditto.
3155 (KJS::Collector::collect): Ditto.
3157 2007-04-21 Mitz Pettel <mitz@webkit.org>
3161 - fix http://bugs.webkit.org/show_bug.cgi?id=13428
3162 REGRESSION (r20973-r20976): Failing ecma/Array/15.4.4.5-3.js
3164 - fix http://bugs.webkit.org/show_bug.cgi?id=13429
3165 REGRESSION (r20973-r20976): Crashing in fast/dom/plugin-attributes-enumeration.html
3167 * kjs/array_object.cpp:
3168 (ArrayInstance::sort): Free the old storage, not the new one.
3170 2007-04-20 Maciej Stachowiak <mjs@apple.com>
3172 Not reviewed, build fix.
3174 - fix build problem with last change - -O3 complains more about uninitialized variables
3176 * pcre/pcre_compile.c:
3180 2007-04-20 Maciej Stachowiak <mjs@apple.com>
3184 - <rdar://problem/5149915> use mergesort when possible, since it leads to fewer compares (2% JS iBench speedup)
3186 * kjs/array_object.cpp:
3187 (ArrayInstance::sort): Use mergesort(3) on platforms that have it, since it tends
3188 to do fewer compares than qsort; but avoid it very on large arrays since it uses extra
3189 memory. Also added comments identifying possibly even better sorting algorithms
3190 for sort by string value and sort by compare function.
3193 2007-04-20 Maciej Stachowiak <mjs@apple.com>
3197 - bump optimization flags up to -O3 for 1% JS iBench speed improvement
3199 * Configurations/Base.xcconfig:
3201 2007-04-20 Mark Rowe <mrowe@apple.com>
3205 Fix bogus optimisation in the generic pthread code path.
3207 * kjs/collector.cpp:
3208 (KJS::currentThreadStackBase):
3210 2007-04-20 Mark Rowe <mrowe@apple.com>
3214 Improve FreeBSD compatibility, as suggested by Alexander Botero-Lowry.
3216 * kjs/collector.cpp:
3217 (KJS::currentThreadStackBase): FreeBSD requires that pthread_attr_t's are
3218 initialized via pthread_attr_init before being used in any context.
3220 2007-04-19 Mark Rowe <mrowe@apple.com>
3224 Fix http://bugs.webkit.org/show_bug.cgi?id=13401
3225 Bug 13401: Reproducible crash calling myArray.sort(compareFn) from within
3226 a sort comparison function
3228 * kjs/array_object.cpp:
3229 (ArrayInstance::sort): Save/restore the static variables around calls to qsort
3230 to ensure nested calls to ArrayInstance::sort behave correctly.
3232 2007-04-12 Deneb Meketa <dmeketa@adobe.com>
3234 Reviewed by Darin Adler.
3236 http://bugs.webkit.org/show_bug.cgi?id=13029
3237 rdar://problem/4994849
3238 Bug 13029: Permit NPAPI plug-ins to see HTTP response headers.
3239 This doesn't actually change JavaScriptCore, but that's where npapi.h is.
3242 Add headers member to NPStream struct. Also increase NP_VERSION_MINOR to 18.
3243 Increasing to >= 17 allows plug-ins to safely detect whether to look for
3244 NPStream::headers. Increasing from 17 to 18 reflects presence of NPObject
3245 enumeration, which was added in a prior patch, and which has been agreed to
3246 constitute version 18 by the plugin-futures list. Also add other missing
3247 bits of npapi.h to catch up from 14 to 18. This includes features that are
3248 not implemented in WebKit, but those are safely stubbed.
3250 2007-04-10 Geoffrey Garen <ggaren@apple.com>
3252 Reviewed by Mark Rowe.
3254 Fixed last check-in to print in release builds, too.
3256 * kjs/collector.cpp:
3257 (KJS::getPlatformThreadRegisters):
3259 2007-04-10 Geoffrey Garen <ggaren@apple.com>
3261 Reviewed by John Sullivan, Darin Adler.
3263 Fixed <rdar://problem/5121899> JavaScript garbage collection leads to
3264 later crash under Rosetta (should abort or leak instead?)
3266 Log an error message and crash if the kernel reports failure during GC.
3267 We decided to do this instead of just leaking because we don't want people
3268 to get the mistaken impression that running in Rosetta is a supported
3271 The CRASH macro will also hook into CrashReporter, which will tell us if
3272 many (any?) users run into this issue.
3274 * kjs/collector.cpp:
3275 (KJS::getPlatformThreadRegisters):
3277 2007-04-06 Krzysztof Kowalczyk <kkowalczyk@gmail.com>
3281 Coverity fix. Coverity says:
3282 "Event var_deref_model: Variable "sourceRanges" tracked as NULL was passed to a
3283 function that dereferences it"
3285 * kjs/string_object.cpp:
3288 2007-04-06 Geoffrey Garen <ggaren@apple.com>
3290 Rubber stamped by Adele Peterson.
3292 * kjs/ExecState.h: Removed obsolete forward/friend declaration of
3295 2007-04-05 Krzysztof Kowalczyk <kkowalczyk@gmail.com>
3299 Coverity fix. Coverity says:
3300 "Event check_after_deref: Pointer "dateString" dereferenced before NULL check"
3302 * kjs/date_object.cpp:
3305 2007-04-05 Krzysztof Kowalczyk <kkowalczyk@gmail.com>
3309 Coverity fix. Coverity says:
3310 "Event check_after_deref: Pointer "re" dereferenced before NULL check"
3312 * pcre/pcre_study.c:
3315 2007-04-05 Krzysztof Kowalczyk <kkowalczyk@gmail.com>
3319 Coverity fixes. Coverity says:
3320 "Event leaked_storage: Returned without freeing storage "buffer""
3322 "Event leaked_storage: Returned without freeing storage "script""
3326 (createStringWithContentsOfFile):
3328 2007-04-05 Krzysztof Kowalczyk <kkowalczyk@gmail.com>
3332 Coverity fix: in single-threaded case currentThreadIsMainThread is always true
3333 so the code in if (!currentThreadIsMainThread) cannot possibly be reached
3334 and Coverity complains about dead code.
3336 * kjs/collector.cpp:
3337 (KJS::Collector::collect):
3339 === Safari-5522.6 ===
3341 2007-04-03 Kevin McCullough <kmccullough@apple.com>
3345 - Testing a post-commit hook.
3347 * JavaScriptCore.vcproj/testkjs/testkjs.vcproj:
3349 2007-04-03 Anders Carlsson <andersca@apple.com>
3353 <rdar://problem/5107534>
3354 http://bugs.webkit.org/show_bug.cgi?id=13265
3355 REGRESSION: Crash in KJS::Bindings::convertValueToNPVariant
3357 * bindings/NP_jsobject.cpp:
3358 (_NPN_InvokeDefault):
3359 Return false if the object isn't a function. Set the return value to undefined by default
3362 2007-03-30 Anders Carlsson <andersca@apple.com>
3366 * bindings/NP_jsobject.cpp:
3369 2007-03-30 Anders Carlsson <andersca@apple.com>
3373 Implement _NPN_Enumerate support.
3375 * JavaScriptCore.exp:
3376 * bindings/NP_jsobject.cpp:
3378 * bindings/c/c_instance.cpp:
3379 (KJS::Bindings::CInstance::getPropertyNames):
3380 * bindings/c/c_instance.h:
3382 * bindings/npruntime.h:
3383 * bindings/npruntime_impl.h:
3384 * bindings/runtime.h:
3385 (KJS::Bindings::Instance::getPropertyNames):
3386 * bindings/runtime_object.cpp:
3387 (RuntimeObjectImp::getPropertyNames):
3388 * bindings/runtime_object.h:
3389 (KJS::RuntimeObjectImp::getInternalInstance):
3391 2007-03-28 Jeff Walden <jwalden+code@mit.edu>
3395 http://bugs.webkit.org/show_bug.cgi?id=12963
3396 Fix some inconsistencies in the Mozilla JS Array extras implementations
3397 with respect to the Mozilla implementation:
3399 - holes in arrays should be skipped, not treated as undefined,
3401 - an element with value undefined is not a hole
3402 - Array.prototype.forEach should return undefined
3404 * kjs/array_object.cpp:
3405 (ArrayInstance::getOwnPropertySlot):
3406 (ArrayProtoFunc::callAsFunction):
3408 2007-03-27 Anders Carlsson <acarlsson@apple.com>
3412 * bindings/NP_jsobject.cpp:
3413 (_NPN_InvokeDefault):
3414 Call JSObject:call for native JavaScript objects.
3416 2007-03-26 David Carson <dacarson@gmail.com>
3418 Reviewed by Darin, landed by Anders.
3420 Fix for: REGRESSION (r19559): Java applet crash
3421 http://bugs.webkit.org/show_bug.cgi?id=13142
3422 <rdar://problem/5080340>
3424 The previous fix http://bugs.webkit.org/show_bug.cgi?id=12636
3425 introduced new JNIType to enum in jni_utility.h This is a
3426 problem on the Mac as it seems that the JNIType enum is also
3427 used in the JVM, it is used to specify the return type in
3429 Corrected the fix by moving type to the end, and changing
3430 jni_objc.mm to convert the new type to an old compatible
3433 * bindings/jni/jni_objc.mm:
3434 (KJS::Bindings::dispatchJNICall):
3435 * bindings/jni/jni_utility.h:
3437 2007-03-26 Christopher Brichford <chrisb@adobe.com>
3439 Reviewed/landed by Adam.
3441 Bug 13198: Move build settings from project file to xcconfig file for apollo
3443 http://bugs.webkit.org/show_bug.cgi?id=13198
3445 - Moving build settings from xcode project file to xcconfig files.
3447 * JavaScriptCore.apolloproj/mac/JavaScriptCore/JavaScriptCore.Debug.xcconfig:
3448 * JavaScriptCore.apolloproj/mac/JavaScriptCore/JavaScriptCore.Release.xcconfig:
3449 * JavaScriptCore.apolloproj/mac/JavaScriptCore/JavaScriptCore.xcconfig:
3450 * JavaScriptCore.apolloproj/mac/JavaScriptCore/JavaScriptCore.xcodeproj/project.pbxproj:
3452 2007-03-26 Brady Eidson <beidson@apple.com>
3454 Rubberstamped by Anders and Maciej aand Geoff (oh my!)
3456 Since CFTypeRef is really void*, a RetainPtr couldn't be used.
3457 RefType was "void", which doesn't actually exist as a type.
3458 Since RefType only existed for operator*(), and since that operator
3459 doesn't make any sense for RetainPtr, I removed them!
3461 * kjs/nodes.cpp: Touch this to force a rebuild and (hopefully) help the
3462 compiler with dependencies
3463 * wtf/RetainPtr.h: Nuke RefType and operator*()
3465 2007-03-26 Geoffrey Garen <ggaren@apple.com>
3467 Touched a file to (hopefully) help the compiler with RetainPtr dependencies.
3472 2007-03-24 Brady Eidson <beidson@apple.com>
3476 Whoops, RetainPtr should be in the WTF namespace
3480 2007-03-24 Brady Eidson <beidson@apple.com>
3484 <rdar://problem/5086210> - Move RetainPtr to WTF
3486 * wtf/RetainPtr.h: Added
3487 * JavaScriptCore.xcodeproj/project.pbxproj: Add it to the project file
3488 * JavaScriptCore.vcproj/WTF/WTF.vcproj: Ditto
3491 2007-03-23 Christopher Brichford <chrisb@adobe.com>
3493 Reviewed/landed by Adam.
3495 Bug 13175: Make apollo mac project files for JavaScriptCore actually
3497 http://bugs.webkit.org/show_bug.cgi?id=13175
3499 - Changing apollo mac project files for JavaScriptCore such that they actually build
3500 JavaScriptCore source code.
3502 * JavaScriptCore.apolloproj/ForwardingSources/grammar.cpp: Added.
3503 * JavaScriptCore.apolloproj/mac/JavaScriptCore/JavaScriptCore.xcconfig:
3504 * JavaScriptCore.apolloproj/mac/JavaScriptCore/JavaScriptCore.xcodeproj/project.pbxproj:
3506 2007-03-24 Mark Rowe <mrowe@apple.com>
3508 Rubber-stamped by Darin.
3510 * Configurations/JavaScriptCore.xcconfig: Remove unnecessary INFOPLIST_PREPROCESS.
3512 2007-03-22 Christopher Brichford <chrisb@adobe.com>
3514 Reviewed/landed by Adam.
3516 Bug 13164: Initial version of mac JavaScriptCore project files for
3518 http://bugs.webkit.org/show_bug.cgi?id=13164
3520 - Adding mac project files for apollo port of JavaScriptCore. Currently project
3521 just builds dftables.
3523 * JavaScriptCore.apolloproj/mac/JavaScriptCore/JavaScriptCore.Debug.xcconfig: Added.
3524 * JavaScriptCore.apolloproj/mac/JavaScriptCore/JavaScriptCore.Release.xcconfig: Added.
3525 * JavaScriptCore.apolloproj/mac/JavaScriptCore/JavaScriptCore.xcconfig: Added.
3526 * JavaScriptCore.apolloproj/mac/JavaScriptCore/JavaScriptCore.xcodeproj/project.pbxproj: Added.
3528 2007-03-21 Timothy Hatcher <timothy@apple.com>
3532 <rdar://problem/5076599> JavaScriptCore has a weak export (vtable for KJS::JSCell)
3534 * JavaScriptCore.exp: Remove __ZTVN3KJS6JSCellE.
3536 2007-03-21 Adele Peterson <adele@apple.com>
3540 * API/JSStringRef.cpp: (JSStringIsEqual): Added JSLock.
3542 2007-03-21 Zack Rusin <zrusin@trolltech.com>
3544 Fix the compile when USE(MULTIPLE_THREADS) isn't
3548 (KJS::JSLock::currentThreadIsHoldingLock):
3550 2007-03-20 Maciej Stachowiak <mjs@apple.com>
3552 Reviewed by Geoff and Adam.
3554 - make USE(MULTIPLE_THREADS) support more portable
3555 http://bugs.webkit.org/show_bug.cgi?id=13069
3557 - fixed a threadsafety bug discovered by testing this
3559 - enhanced threadsafety assertions in collector
3561 * API/JSCallbackObject.cpp:
3562 (KJS::JSCallbackObject::~JSCallbackObject): This destructor can't
3563 DropAllLocks around the finalize callback, because it gets called
3564 from garbage collection and we can't let other threads collect!
3566 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
3568 (KJS::JSLock::currentThreadIsHoldingLock): Added new function
3569 to allow stronger assertions than just that the lock is held
3570 by some thread (you can now assert that the current thread is
3571 holding it, given the new JSLock design).
3573 * kjs/collector.cpp: Refactored for portability plus added some
3574 stronger assertions.
3575 (KJS::Collector::allocate):
3576 (KJS::currentThreadStackBase):
3577 (KJS::Collector::registerAsMainThread):
3578 (KJS::onMainThread):
3579 (KJS::PlatformThread::PlatformThread):
3580 (KJS::getCurrentPlatformThread):
3581 (KJS::Collector::Thread::Thread):
3582 (KJS::destroyRegisteredThread):
3583 (KJS::Collector::registerThread):
3584 (KJS::Collector::markCurrentThreadConservatively):
3585 (KJS::suspendThread):
3586 (KJS::resumeThread):
3587 (KJS::getPlatformThreadRegisters):
3588 (KJS::otherThreadStackPointer):
3589 (KJS::otherThreadStackBase):
3590 (KJS::Collector::markOtherThreadConservatively):
3591 (KJS::Collector::markStackObjectsConservatively):
3592 (KJS::Collector::protect):
3593 (KJS::Collector::unprotect):
3594 (KJS::Collector::collectOnMainThreadOnly):
3595 (KJS::Collector::markMainThreadOnlyObjects):
3596 (KJS::Collector::collect):
3598 * wtf/FastMalloc.cpp:
3599 (WTF::fastMallocSetIsMultiThreaded):
3600 * wtf/FastMallocInternal.h:
3603 2007-03-19 Darin Adler <darin@apple.com>
3605 * kjs/value.h: Roll ~JSValue change out. It was causing problems. I'll do it right later.
3607 2007-03-19 Geoffrey Garen <ggaren@apple.com>
3609 Reviewed by John Sullivan.
3611 Fixed <rdar://problem/5073380> REGRESSION: Crash occurs at WTF::fastFree()
3612 when reloading liveconnect page (applet)
3614 Best to use free when you use malloc, especially when malloc and delete
3615 use completely different libraries.
3617 * bindings/jni/jni_runtime.cpp:
3618 (JavaMethod::~JavaMethod):
3620 2007-03-19 Andrew Wellington <proton@wiretapped.net>
3624 Really set Xcode editor to use 4 space indentation (http://webkit.org/coding/coding-style.html)
3626 * JavaScriptCore.xcodeproj/project.pbxproj:
3628 2007-03-19 Darin Adler <darin@apple.com>
3632 - Changed list size threshold to 5 based on testing.
3634 I was testing the i-Bench JavaScript with the list statistics
3635 dumping on, and discovered that there were many 5-element lists.
3636 The fast case for lists was for 4 elements and fewer. By changing
3637 the threshold to 5 elements we get a measurable speedup. I believe
3638 this will help real web pages too, not just the benchmark.
3640 * kjs/list.cpp: Change constant from 4 to 5.
3642 2007-03-19 Darin Adler <darin@apple.com>
3644 * kjs/value.h: Oops, fix build.
3646 2007-03-19 Darin Adler <darin@apple.com>
3650 - remove ~JSValue; tiny low-risk performance boost
3652 * kjs/value.h: Remove unneeded empty virtual destructor from JSValue.
3653 The only class derived from JSValue is JSCell and it already has a
3654 virtual destructor. Declaring an empty constructor in JSValue had one
3655 good effect: it marked the destructor private, making it a compile
3656 time error to try to destroy a JSValue; but that's not a likely
3657 mistake for someone to make. It had two bad effects: (1) it caused gcc,
3658 at least, to generate code to fix up the virtual table pointer to
3659 point to the JSValue version of the virtual table inside the destructor
3660 of all classes derived from JSValue directly or indirectly; (2) it
3661 caused JSValue to be a polymorphic class so required a virtual table for
3662 it. It's cleaner to not have either of those.
3664 2007-03-18 Maciej Stachowiak <mjs@apple.com>
3668 - avoid static construction (and global variable access) in a smarter, more portable way,
3669 to later enable MUTLI_THREAD mode to work on other platforms and compilers.
3671 * kjs/CommonIdentifiers.cpp: Added. New class to hold all the shared identifiers.
3672 (KJS::CommonIdentifiers::CommonIdentifiers):
3673 (KJS::CommonIdentifiers::shared):
3674 * kjs/CommonIdentifiers.h: Added.
3677 (KJS::ExecState::propertyNames): Hand the CommonIdentifiers instance here for easy access.
3678 (KJS::ExecState::ExecState):
3680 * API/JSObjectRef.cpp:
3681 (JSObjectMakeConstructor):
3683 * JavaScriptCore.exp:
3684 * JavaScriptCore.pri:
3685 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
3686 * JavaScriptCore.xcodeproj/project.pbxproj:
3687 * JavaScriptCoreSources.bkl:
3688 * bindings/runtime_array.cpp:
3689 (RuntimeArray::getOwnPropertySlot):
3690 (RuntimeArray::put):
3691 * bindings/runtime_method.cpp:
3692 (RuntimeMethod::getOwnPropertySlot):
3693 * kjs/array_object.cpp:
3694 (ArrayInstance::getOwnPropertySlot):
3695 (ArrayInstance::put):
3696 (ArrayInstance::deleteProperty):
3697 (ArrayProtoFunc::ArrayProtoFunc):
3698 (ArrayProtoFunc::callAsFunction):
3699 (ArrayObjectImp::ArrayObjectImp):
3700 * kjs/bool_object.cpp:
3701 (BooleanPrototype::BooleanPrototype):
3702 (BooleanProtoFunc::BooleanProtoFunc):
3703 (BooleanProtoFunc::callAsFunction):
3704 (BooleanObjectImp::BooleanObjectImp):
3706 (KJS::Completion::Completion):
3707 * kjs/date_object.cpp:
3708 (KJS::DateProtoFunc::DateProtoFunc):
3709 (KJS::DateObjectImp::DateObjectImp):
3710 (KJS::DateObjectFuncImp::DateObjectFuncImp):
3711 * kjs/error_object.cpp:
3712 (ErrorPrototype::ErrorPrototype):
3713 (ErrorProtoFunc::ErrorProtoFunc):
3714 (ErrorProtoFunc::callAsFunction):
3715 (ErrorObjectImp::ErrorObjectImp):
3716 (ErrorObjectImp::construct):
3717 (NativeErrorPrototype::NativeErrorPrototype):
3718 (NativeErrorImp::NativeErrorImp):
3719 (NativeErrorImp::construct):
3720 (NativeErrorImp::callAsFunction):
3722 (KJS::FunctionImp::getOwnPropertySlot):
3723 (KJS::FunctionImp::put):
3724 (KJS::FunctionImp::deleteProperty):
3725 (KJS::FunctionImp::getParameterName):
3726 (KJS::DeclaredFunctionImp::construct):
3727 (KJS::IndexToNameMap::unMap):
3728 (KJS::Arguments::Arguments):
3729 (KJS::ActivationImp::getOwnPropertySlot):
3730 (KJS::ActivationImp::deleteProperty):
3731 (KJS::GlobalFuncImp::GlobalFuncImp):
3732 * kjs/function_object.cpp:
3733 (FunctionPrototype::FunctionPrototype):
3734 (FunctionProtoFunc::FunctionProtoFunc):
3735 (FunctionProtoFunc::callAsFunction):
3736 (FunctionObjectImp::FunctionObjectImp):
3737 (FunctionObjectImp::construct):
3739 * kjs/identifier.cpp:
3741 * kjs/interpreter.cpp:
3742 (KJS::Interpreter::init):
3743 (KJS::Interpreter::initGlobalObject):
3744 * kjs/interpreter.h:
3746 * kjs/math_object.cpp:
3747 (MathFuncImp::MathFuncImp):
3749 (ArrayNode::evaluate):
3750 (FuncDeclNode::processFuncDecl):
3751 (FuncExprNode::evaluate):
3752 * kjs/number_object.cpp:
3753 (NumberPrototype::NumberPrototype):
3754 (NumberProtoFunc::NumberProtoFunc):
3755 (NumberObjectImp::NumberObjectImp):
3757 (KJS::JSObject::put):
3758 (KJS::JSObject::defaultValue):
3759 (KJS::JSObject::hasInstance):
3761 (KJS::JSObject::getOwnPropertySlot):
3762 * kjs/object_object.cpp:
3763 (ObjectPrototype::ObjectPrototype):
3764 (ObjectProtoFunc::ObjectProtoFunc):
3765 (ObjectObjectImp::ObjectObjectImp):
3766 * kjs/regexp_object.cpp:
3767 (RegExpPrototype::RegExpPrototype):
3768 (RegExpProtoFunc::RegExpProtoFunc):
3769 (RegExpObjectImp::RegExpObjectImp):
3770 * kjs/string_object.cpp:
3771 (KJS::StringInstance::getOwnPropertySlot):
3772 (KJS::StringInstance::put):
3773 (KJS::StringInstance::deleteProperty):
3774 (KJS::StringPrototype::StringPrototype):
3775 (KJS::StringProtoFunc::StringProtoFunc):
3776 (KJS::StringProtoFunc::callAsFunction):
3777 (KJS::StringObjectImp::StringObjectImp):
3778 (KJS::StringObjectFuncImp::StringObjectFuncImp):
3780 (TestFunctionImp::TestFunctionImp):
3782 2007-03-18 Andrew Wellington <proton@wiretapped.net>
3784 Reviewed by Mark Rowe
3786 Set Xcode editor to use 4 space indentation (http://webkit.org/coding/coding-style.html)
3788 * JavaScriptCore.xcodeproj/project.pbxproj:
3790 2007-03-19 Mark Rowe <mrowe@apple.com>
3792 Rubber-stamped by Brady.
3794 Update references to bugzilla.opendarwin.org with bugs.webkit.org.
3796 * bindings/c/c_utility.cpp:
3797 (KJS::Bindings::convertUTF8ToUTF16):
3799 (KJS::FunctionImp::callAsFunction):
3801 * kjs/keywords.table:
3803 (KJS::Lexer::shift):
3805 2007-03-18 Geoffrey Garen <ggaren@apple.com>
3807 Reviewed by Oliver Hunt.
3809 Exposed some extra toUInt32 functionality, as part of the fix for
3810 REGRESSION: Incomplete document.all implementation breaks abtelectronics.com
3811 (Style Change Through JavaScript Blanks Content)
3813 * JavaScriptCore.exp:
3815 (KJS::Identifier::toUInt32):
3817 2007-03-18 Geoffrey Garen <ggaren@apple.com>
3819 Removed duplicate export name.
3821 * JavaScriptCore.exp:
3823 2007-03-15 Geoffrey Garen <ggaren@apple.com>
3825 Reviewed by Maciej Stachowiak.
3827 Fixed <rdar://problem/5064964> Repro ASSERT failure in JS Bindings when
3828 closing window @ lowtrades.bptrade.com
3830 Unfortunately, the bindings depend on UString and Identifier as string
3831 representations. So, they need to acquire the JSLock when doing something
3832 that will ref/deref their strings.
3834 Layout tests, the original site, and Java, Flash, and Quicktime on the
3835 web work. No leaks reported. No automated test for this because testing
3836 the Java bindings, like math, is hard.
3838 * bindings/runtime.h: Made Noncopyable, just to be sure.
3840 * bindings/c/c_class.cpp:
3841 (KJS::Bindings::CClass::~CClass): Acquire the JSLock and explicitly clear the keys
3842 in our hashtable, since they're UString::Reps, and ref/deref aren't thread-safe.
3843 (KJS::Bindings::CClass::methodsNamed): Also acquire the JSLock when adding
3844 keys to the table, since the table ref's them.
3845 (KJS::Bindings::CClass::fieldNamed): ditto.
3847 * bindings/c/c_utility.cpp: Removed dead function.
3848 (KJS::Bindings::convertValueToNPVariant): Acquire the JSLock because doing
3849 it recursively is pretty cheap, and it's just too confusing to tell whether
3850 all our callers do it for us.
3851 (KJS::Bindings::convertNPVariantToValue): ditto
3852 * bindings/c/c_utility.h:
3854 * bindings/jni/jni_class.cpp: Same deal as c_class.cpp.
3855 (JavaClass::JavaClass):
3856 (JavaClass::~JavaClass):
3858 * bindings/jni/jni_instance.cpp: Same deal as c_utility.cpp.
3859 (JavaInstance::stringValue):
3860 * bindings/jni/jni_jsobject.cpp:
3861 (JavaJSObject::convertValueToJObject):
3863 * bindings/jni/jni_runtime.cpp:
3864 (JavaMethod::~JavaMethod): Moved from header, for clarity.
3865 (appendClassName): Made this static, so the set of callers is known, and
3866 we can assert that we hold the JSLock. Also changed it to take a UString
3867 reference, which makes the calling code simpler.
3868 (JavaMethod::signature): Store the ASCII value we care about instead of
3869 a UString, since UString is so much more hassle. Hold the JSLock while
3870 building up the temporary UString.
3872 * bindings/jni/jni_runtime.h: Nixed dead code in JavaMethod.
3873 (KJS::Bindings::JavaString::JavaString): Hold a UString::Rep instead of
3874 a UString, so we can acquire the JSLock and explicitly release it.
3875 (KJS::Bindings::JavaString::_commonInit):
3876 (KJS::Bindings::JavaString::~JavaString):
3877 (KJS::Bindings::JavaString::UTF8String):
3878 (KJS::Bindings::JavaString::uchars):
3879 (KJS::Bindings::JavaString::length):
3880 (KJS::Bindings::JavaString::ustring):
3882 * bindings/jni/jni_utility.cpp:
3883 (KJS::Bindings::convertArrayInstanceToJavaArray): Made this static, so
3884 the set of callers is known, and we can assert that we hold the JSLock.
3885 (KJS::Bindings::convertValueToJValue): Acquire the JSLock because doing
3886 it recursively is pretty cheap, and it's just too confusing to tell whether
3887 all our callers do it for us.
3889 * bindings/objc/objc_runtime.h: Nixed some dead code.
3890 * bindings/objc/objc_utility.mm:
3891 (KJS::Bindings::convertNSStringToString): Same drill as above.
3893 2007-03-18 Alexey Proskuryakov <ap@webkit.org>
3897 http://bugs.webkit.org/show_bug.cgi?id=13105
3898 REGRESSION: an exception raised when calculating base value of a dot expression is not returned
3900 Test: fast/js/dot-node-base-exception.html
3903 (FunctionCallDotNode::evaluate): Added the necessary KJS_CHECKEXCEPTIONVALUE.
3905 2007-03-18 Steve Falkenburg <sfalken@apple.com>
3909 * JavaScriptCore.vcproj/testkjs/testkjs.vcproj:
3911 2007-03-17 Timothy Hatcher <timothy@apple.com>
3913 Reviewed by Mark Rowe.
3915 Made Version.xcconfig smarter when building for different configurations.
3916 Now uses the 522+ OpenSource version for Debug and Release, while using the
3917 full 522.4 version for Production builds. The system prefix is also computed
3918 based on the current system, so 4522.4 on Tiger and 5522.4 on Leopard.
3920 * Configurations/JavaScriptCore.xcconfig:
3921 * Configurations/Version.xcconfig:
3923 2007-03-15 Maciej Stachowiak <mjs@apple.com>
3929 * wtf/TCSystemAlloc.cpp:
3931 2007-03-15 Maciej Stachowiak <mjs@apple.com>
3933 Reviewed by Geoff and Steve.
3935 - fix some portability issues with TCMalloc.
3937 * JavaScriptCore.vcproj/WTF/WTF.vcproj:
3939 * wtf/FastMalloc.cpp:
3941 (WTF::InitSizeClasses):
3942 (WTF::TCMalloc_PageHeap::Split):
3943 (WTF::TCMalloc_PageHeap::RegisterSizeClass):
3944 (WTF::TCMalloc_Central_FreeList::length):
3945 (WTF::TCMalloc_ThreadCache::InitTSD):
3946 (WTF::TCMalloc_ThreadCache::CreateCacheIfNecessary):
3948 * wtf/TCSystemAlloc.cpp:
3950 (TCMalloc_SystemAlloc):
3952 2007-03-15 Timothy Hatcher <timothy@apple.com>
3956 * Factored out most of our common build settings into .xcconfig files. Anything that was common in
3957 each build configuration was factored out into the shared .xcconfig file.
3958 * Adds a Version.xcconfig file to define the current framework version, to be used in other places.
3959 * Use the new $(BUNDLE_VERSION) (defined in Version.xcconfig) in the preprocessed Info.plist.
3960 * Use the versions defined in Version.xcconfig to set $(DYLIB_CURRENT_VERSION).
3962 * Configurations/Base.xcconfig: Added.
3963 * Configurations/DebugRelease.xcconfig: Added.
3964 * Configurations/JavaScriptCore.xcconfig: Added.
3965 * Configurations/Version.xcconfig: Added.
3967 * JavaScriptCore.xcodeproj/project.pbxproj:
3969 2007-03-16 Shrikant Gangoda <shrikant.gangoda@celunite.com>
3973 * kjs/DateMath.cpp: gettimeofday comes from <sys/time.h> on Linux.
3975 2007-03-14 Kevin McCullough <kmccullough@apple.com>
3979 - Fixed one more build breakage
3981 * kjs/date_object.cpp:
3982 (KJS::formatLocaleDate):
3984 2007-03-14 Kevin McCullough <kmccullough@apple.com>
3988 - Fixed a build breakage.
3991 * kjs/date_object.cpp:
3992 (KJS::formatLocaleDate):
3993 (KJS::DateObjectImp::construct):
3995 2007-03-14 Kevin McCullough <kmccullough@apple.com>
3999 - rdar://problem/5045720
4000 - DST changes in US affect JavaScript date calculations (12975)
4001 This fix was to ensure we properly test for the new changes to DST in the US.
4002 Also this fixes when we apply DST, now we correctly map most past years to current
4003 DST rules. We still have a small issue with years before 1900 or after 2100.
4004 rdar://problem/5055038
4006 * kjs/DateMath.cpp: Fix DST to match spec better.
4007 (KJS::getCurrentUTCTime):
4008 (KJS::mimimumYearForDST):
4009 (KJS::maximumYearForDST):
4010 (KJS::equivalentYearForDST):
4011 (KJS::getDSTOffset):
4012 * kjs/DateMath.h: Consolodated common funtionality.
4013 * kjs/date_object.cpp: Consolodated common functionality.
4014 (KJS::formatLocaleDate):
4015 (KJS::DateObjectImp::construct):
4016 * tests/mozilla/ecma/jsref.js: Added functions for finding the correct days when DST starts and ends.
4017 * tests/mozilla/ecma/shell.js: Added back in the old DST functions for ease of merging with mozilla if needed.
4018 * tests/mozilla/ecma_2/jsref.js: Added functions for finding the correct days when DST starts and ends.
4019 * tests/mozilla/ecma_3/Date/shell.js: Added functions for finding the correct days when DST starts and ends.
4020 * tests/mozilla/expected.html: Updated to show all date tests passing.
4022 === Safari-5522.4 ===
4024 2007-03-13 Kevin McCullough <kmccullough@apple.com>
4028 - Adding expected failures until the are truly fixed.
4029 - rdar://problem/5060302
4031 * tests/mozilla/expected.html:
4033 2007-03-12 Kevin McCullough <kmccullough@apple.com>
4037 - Actually update tests for new DST rules.
4039 * tests/mozilla/ecma/Date/15.9.3.1-1.js:
4040 * tests/mozilla/ecma/Date/15.9.3.1-2.js:
4041 * tests/mozilla/ecma/Date/15.9.3.1-3.js:
4042 * tests/mozilla/ecma/Date/15.9.3.1-4.js:
4043 * tests/mozilla/ecma/Date/15.9.3.1-5.js:
4044 * tests/mozilla/ecma/Date/15.9.3.2-1.js:
4045 * tests/mozilla/ecma/Date/15.9.3.2-2.js:
4046 * tests/mozilla/ecma/Date/15.9.3.2-3.js:
4047 * tests/mozilla/ecma/Date/15.9.3.2-4.js:
4048 * tests/mozilla/ecma/Date/15.9.3.2-5.js:
4049 * tests/mozilla/ecma/Date/15.9.3.8-1.js:
4050 * tests/mozilla/ecma/Date/15.9.3.8-2.js:
4051 * tests/mozilla/ecma/Date/15.9.3.8-3.js:
4052 * tests/mozilla/ecma/Date/15.9.3.8-4.js:
4053 * tests/mozilla/ecma/Date/15.9.3.8-5.js:
4054 * tests/mozilla/ecma/Date/15.9.5.10-1.js:
4055 * tests/mozilla/ecma/Date/15.9.5.10-10.js:
4056 * tests/mozilla/ecma/Date/15.9.5.10-11.js:
4057 * tests/mozilla/ecma/Date/15.9.5.10-12.js:
4058 * tests/mozilla/ecma/Date/15.9.5.10-13.js:
4059 * tests/mozilla/ecma/Date/15.9.5.10-2.js:
4060 * tests/mozilla/ecma/Date/15.9.5.10-3.js:
4061 * tests/mozilla/ecma/Date/15.9.5.10-4.js:
4062 * tests/mozilla/ecma/Date/15.9.5.10-5.js:
4063 * tests/mozilla/ecma/Date/15.9.5.10-6.js:
4064 * tests/mozilla/ecma/Date/15.9.5.10-7.js:
4065 * tests/mozilla/ecma/Date/15.9.5.10-8.js:
4066 * tests/mozilla/ecma/Date/15.9.5.10-9.js:
4067 * tests/mozilla/ecma/jsref.js:
4068 * tests/mozilla/ecma_2/jsref.js:
4069 * tests/mozilla/ecma_3/Date/shell.js:
4071 2007-03-12 Kevin McCullough <kmccullough@apple.com>
4075 - Update tests for new DST rules.
4077 * tests/mozilla/ecma/shell.js:
4079 2007-03-11 Geoffrey Garen <ggaren@apple.com>
4081 Reviewed by Oliver Hunt.
4083 Fixed <rdar://problem/4681051> Installer crashes in KJS::Collector::
4084 markOtherThreadConservatively(KJS::Collector::Thread*) trying to install
4085 iLife 06 using Rosetta on an Intel Machine
4087 The problem was that our thread-specific data destructor would modify the
4088 list of active JavaScript threads without holding the JSLock, corrupting
4089 the list. Corruption was especially likely if one JavaScript thread exited
4090 while another was starting up.
4092 * JavaScriptCore.exp:
4093 * kjs/JSLock.cpp: Don't conflate locking the JSLock with registering a
4094 thread, since the thread-specific data destructor needs to lock
4095 without registering a thread. Instead, treat thread registration as a
4096 part of the convenience of the JSLock object, and whittle down JSLock::lock()
4097 to just the bits that actually do the locking.
4098 (KJS::JSLock::lock):
4099 (KJS::JSLock::registerThread):
4100 * kjs/JSLock.h: Updated comments to mention the new behavior above, and
4101 other recent changes.
4102 (KJS::JSLock::JSLock):
4103 * kjs/collector.cpp:
4104 (KJS::destroyRegisteredThread): Lock here.
4105 (KJS::Collector::registerThread): To match, assert that we're locked here.
4107 2007-03-10 Geoffrey Garen <ggaren@apple.com>
4109 Reviewed by Darin Adler.
4111 Fixed <rdar://problem/4587763> PAC file: lock inversion between QT and
4112 JSCore causes a hang @ www.panoramas.dk
4114 With a PAC file, run-webkit-tests --threaded passes, the reported site
4115 works, and all the Quicktime/JavaScript and Flash/JavaScript examples
4116 I found through Google work, too.
4118 Any time JavaScript causes arbitrary non-JavaScript code to execute, it
4119 risks deadlock, because that code may block, trying to acquire a lock
4120 owned by a thread that is waiting to execute JavaScript. In this case,
4121 the thread was a networking thread that was waiting to interpret a PAC file.
4123 Because non-JavaScript code may execute in response to, well, anything,
4124 a perfect solution to this problem is impossible. I've implemented an
4125 optimistic solution, instead: JavaScript will drop its lock whenever it
4126 makes a direct call to non-JavaScript code through a bridging/plug-in API,
4127 but will blissfully ignore the indirect ways it may cause non-JavaScript
4128 code to run (resizing a window, for example).
4130 Unfortunately, this solution introduces significant locking overhead in
4131 the bridging APIs. I don't see a way around that.
4133 This patch includes some distinct bug fixes I saw along the way:
4135 * bindings/objc/objc_instance.mm: Fixed a bug where a nested begin() call
4136 would leak its autorelease pool, because it would NULL out _pool without
4139 * bindings/runtime_object.cpp:
4140 (RuntimeObjectImp::methodGetter): Don't copy an Identifier to ASCII only
4141 to turn around and make an Identifier from the ASCII. In an earlier
4142 version of this patch, the copy caused an assertion failure. Now it's
4143 just unnecessary work.
4144 (RuntimeObjectImp::getOwnPropertySlot): ditto
4146 * bindings/objc/objc_instance.h: Removed overrides of setVAlueOfField and
4147 getValueOfField, because they did exactly what the base class versions did.
4148 Removed overrides of Noncopyable declarations for the same reason.
4150 * bindings/runtime.h: Inherit from Noncopyable instead of rolling our own.
4151 * bindings/c/c_instance.h: ditto
4153 And the actual patch:
4155 * API/JSCallbackConstructor.cpp: Drop all locks when calling out to C.
4156 (KJS::JSCallbackConstructor::construct):
4157 * API/JSCallbackFunction.cpp: ditto
4158 (KJS::JSCallbackFunction::callAsFunction):
4159 * API/JSCallbackObject.cpp: ditto
4160 (KJS::JSCallbackObject::init):
4161 (KJS::JSCallbackObject::~JSCallbackObject):
4162 (KJS::JSCallbackObject::getOwnPropertySlot):
4163 (KJS::JSCallbackObject::put):
4164 (KJS::JSCallbackObject::deleteProperty):
4165 (KJS::JSCallbackObject::construct):
4166 (KJS::JSCallbackObject::hasInstance):
4167 (KJS::JSCallbackObject::callAsFunction):
4168 (KJS::JSCallbackObject::getPropertyNames):
4169 (KJS::JSCallbackObject::toNumber):
4170 (KJS::JSCallbackObject::toString):
4171 (KJS::JSCallbackObject::staticValueGetter):
4172 (KJS::JSCallbackObject::callbackGetter):
4174 * bindings/c/c_instance.cpp: Drop all locks when calling out to C.
4175 (KJS::Bindings::CInstance::invokeMethod):
4176 (KJS::Bindings::CInstance::invokeDefaultMethod):
4177 * bindings/c/c_runtime.cpp: Drop all locks when calling out to C.
4178 (KJS::Bindings::CField::valueFromInstance):
4179 (KJS::Bindings::CField::setValueToInstance):
4180 * bindings/jni/jni_objc.mm:
4181 (KJS::Bindings::dispatchJNICall): Drop all locks when calling out to Java.
4183 * bindings/objc/objc_instance.mm: The changes here are to accomodate the
4184 fact that C++ unwinding of DropAllLocks goes crazy when you put it inside
4185 a @try block. I moved all JavaScript stuff outside of the @try blocks, and
4186 then prefixed the whole blocks with DropAllLocks objects. This required some
4187 supporting changes in other functions, which now acquire the JSLock for
4188 themselves, intead of relying on their callers to do so.
4189 (ObjcInstance::end):
4190 (ObjcInstance::invokeMethod):
4191 (ObjcInstance::invokeDefaultMethod):
4192 (ObjcInstance::setValueOfUndefinedField):
4193 (ObjcInstance::getValueOfUndefinedField):
4194 * bindings/objc/objc_runtime.mm: Same as above, except I didn't want to
4195 change throwError to acquire the JSLock for itself.
4196 (ObjcField::valueFromInstance):
4197 (ObjcField::setValueToInstance):
4198 * bindings/objc/objc_utility.mm: Supporting changes mentioned above.
4199 (KJS::Bindings::convertValueToObjcValue):
4200 (KJS::Bindings::convertObjcValueToValue):
4203 (1) Fixed DropAllLocks to behave as advertised, and drop the JSLock only
4204 if the current thread actually acquired it in the first place. This is
4205 important because WebKit needs to ensure that the JSLock has been
4206 dropped before it makes a plug-in call, even though it doesn't know if
4207 the current thread actually acquired the JSLock. (We don't want WebKit
4208 to accidentally drop a lock belonging to *another thread*.)
4209 (2) Used the new per-thread code written for (1) to make recursive calls
4210 to JSLock very cheap. JSLock now knows to call pthread_mutext_lock/
4211 pthread_mutext_unlock only at nesting level 0.
4212 (KJS::createDidLockJSMutex):
4213 (KJS::JSLock::lock):
4214 (KJS::JSLock::unlock):
4215 (KJS::DropAllLocks::DropAllLocks):
4216 (KJS::DropAllLocks::~DropAllLocks):
4217 (KJS::JSLock::lockCount):
4218 * kjs/JSLock.h: Don't duplicate Noncopyable.
4219 (KJS::JSLock::~JSLock):
4221 * wtf/Assertions.h: Blind attempt at helping the Windows build.
4223 2007-03-08 Darin Fisher <darin@chromium.org>
4227 http://bugs.webkit.org/show_bug.cgi?id=13018
4228 Bug 13018: allow embedders to override the definition of CRASH.
4230 * wtf/Assertions.h: make it possible to override CRASH.
4232 2007-03-07 Huan Ren <huanr@chromium.org>
4236 Fix http://bugs.webkit.org/show_bug.cgi?id=12535
4237 Bug 12535: Stack-optimizing compilers can trick GC into freeing in-use objects
4240 (KJS::StringImp::toObject): Copy val onto the stack so it is not subject to garbage collection.
4242 2007-03-07 Geoffrey Garen <ggaren@apple.com>
4244 Build fix for non-multiple-thread folks.
4246 Use a shared global in the non-multiple-thread case.
4248 * wtf/FastMalloc.cpp:
4250 (WTF::fastMallocForbid):
4251 (WTF::fastMallocAllow):
4253 2007-03-07 Geoffrey Garen <ggaren@apple.com>
4255 Reviewed by Darin Adler.
4257 Fixed ASSERT failure I just introduced.
4259 Made the fastMalloc isForbidden flag per thread. (Oops!) We expect that
4260 other threads will malloc while we're marking -- we just want to prevent
4261 our own marking from malloc'ing.
4263 * wtf/FastMalloc.cpp:
4264 (WTF::initializeIsForbiddenKey):
4266 (WTF::fastMallocForbid):
4267 (WTF::fastMallocAllow):
4274 2007-03-07 Shrikant Gangoda <shrikant.gangoda@celunite.com>
4278 http://bugs.webkit.org/show_bug.cgi?id=12997
4280 Wrap pthread-specific assertion in #if USE(MULTIPLE_THREADS).
4282 * kjs/collector.cpp:
4283 (KJS::Collector::markMainThreadOnlyObjects):
4285 2007-03-06 Geoffrey Garen <ggaren@apple.com>
4287 Reviewed by Maciej Stachowiak.
4289 Fixed <rdar://problem/4576242> | http://bugs.webkit.org/show_bug.cgi?id=12586
4290 PAC file: malloc deadlock sometimes causes a hang @ www.apple.com/pro/profiles/ (12586)
4292 This is a modified version of r14752 on the branch.
4294 These changes just add debugging functionality. They ASSERT that we don't
4295 malloc during the mark phase of a garbage collection, which can cause a
4298 * kjs/collector.cpp:
4299 (KJS::Collector::collect):
4300 * wtf/FastMalloc.cpp:
4301 (WTF::fastMallocForbid):
4302 (WTF::fastMallocAllow):
4310 2007-03-06 Geoffrey Garen <ggaren@apple.com>
4312 Reviewed by Maciej Stachowiak.
4314 Fixed all known crashers exposed by run-webkit-tests --threaded. This covers:
4316 <rdar://problem/4565394> | http://bugs.webkit.org/show_bug.cgi?id=12585
4317 PAC file: after closing a window that contains macworld.com, new window
4318 crashes (KJS::PropertyMap::mark()) (12585)
4319 <rdar://problem/4571215> | http://bugs.webkit.org/show_bug.cgi?id=9211
4320 PAC file: Crash occurs when clicking on the navigation tabs at http://www.businessweek.com/ (9211)
4321 <rdar://problem/4557926>
4322 PAC file: Crash occurs when attempting to view image in slideshow mode
4323 at http://d.smugmug.com/gallery/581716 ( KJS::IfNode::execute (KJS::
4324 ExecState*) + 312) if you use a PAC file
4326 (1) Added some missing JSLocks, along with related ASSERTs.
4328 (2) Fully implemented support for objects that can only be garbage collected
4329 on the main thread. So far, only WebCore uses this. We can add it to API
4330 later if we learn that it's needed.
4332 The implementation uses a "main thread only" flag inside each object. When
4333 collecting on a secondary thread, the Collector does an extra pass through
4334 the heap to mark all flagged objects before sweeping. This solution makes
4335 the common case -- flag lots of objects, but never collect on a secondary
4336 thread -- very fast, even though the uncommon case of garbage collecting
4337 on a secondary thread isn't as fast as it could be. I left some notes
4338 about how to speed it up, if we ever care.
4340 For posterity, here are some things I learned about GC while investigating:
4342 * Each collect must either mark or delete every heap object. "Zombie"
4343 objects, which are neither marked nor deleted, raise these issues:
4345 * On the next pass, the conservative marking algorithm might mark a
4346 zombie, causing it to mark freed objects.
4348 * The client might try to use a zombie, which would seem live because
4349 its finalizer had not yet run.
4351 * A collect on the main thread is free to delete any object. Presumably,
4352 objects allocated on secondary threads have thread-safe finalizers.
4354 * A collect on a secondary thread must not delete thread-unsafe objects.
4356 * The mark function must be thread-safe.
4358 Line by line comments:
4360 * API/JSObjectRef.h: Added comment specifying that the finalize callback
4361 may run on any thread.
4363 * JavaScriptCore.exp: Nothing to see here.
4365 * bindings/npruntime.cpp:
4366 (_NPN_GetStringIdentifier): Added JSLock.
4368 * bindings/objc/objc_instance.h:
4369 * bindings/objc/objc_instance.mm:
4370 (ObjcInstance::~ObjcInstance): Use an autorelease pool. The other callers
4371 to CFRelease needed one, too, but they were dead code, so I removed them
4372 instead. (This fixes a leak seen while running run-webkit-tests --threaded,
4373 although I don't think it's specifically a threading issue.)
4375 * kjs/collector.cpp:
4376 (KJS::Collector::collectOnMainThreadOnly): New function. Tells the collector
4377 to collect a value only if it's collecting on the main thread.
4378 (KJS::Collector::markMainThreadOnlyObjects): New function. Scans the heap
4379 for "main thread only" objects and marks them.
4381 * kjs/date_object.cpp:
4382 (KJS::DateObjectImp::DateObjectImp): To make the new ASSERTs happy, allocate
4383 our globals on the heap, avoiding a seemingly unsafe destructor call at
4385 * kjs/function_object.cpp:
4386 (FunctionPrototype::FunctionPrototype): ditto
4388 * kjs/interpreter.cpp:
4389 (KJS::Interpreter::mark): Removed boolean parameter, which was an incomplete
4390 and arguably hackish way to implement markMainThreadOnlyObjects() inside WebCore.
4391 * kjs/interpreter.h:
4393 * kjs/identifier.cpp:
4394 (KJS::identifierTable): Added some ASSERTs to check for thread safety
4397 * kjs/list.cpp: Added some ASSERTs to check for thread safety problems.
4398 (KJS::allocateListImp):
4399 (KJS::List::release):
4400 (KJS::List::append):
4401 (KJS::List::empty): Make the new ASSERTs happy.
4404 (KJS::JSObject::JSObject): "m_destructorIsThreadSafe" => "m_collectOnMainThreadOnly".
4405 I removed the constructor parameter because m_collectOnMainThreadOnly,
4406 like m_marked, is a Collector bit, so only the Collector should set or get it.
4408 * kjs/object_object.cpp:
4409 (ObjectPrototype::ObjectPrototype): Make the ASSERTs happy.
4410 * kjs/regexp_object.cpp:
4411 (RegExpPrototype::RegExpPrototype): ditto
4413 * kjs/ustring.cpp: Added some ASSERTs to check for thread safety problems.
4414 (KJS::UCharReference::ref):
4415 (KJS::UString::Rep::createCopying):
4416 (KJS::UString::Rep::create):
4417 (KJS::UString::Rep::destroy):
4418 (KJS::UString::null): Make the new ASSERTs happy.
4420 (KJS::UString::Rep::ref): Added some ASSERTs to check for thread safety problems.
4421 (KJS::UString::Rep::deref):
4424 (KJS::JSCell::JSCell):
4426 2007-03-06 Geoffrey Garen <ggaren@apple.com>
4428 Reviewed by Maciej Stachowiak.
4430 2% speedup on super accurate JS iBench.
4432 (KJS::Collector::collect): Removed anti-optimization to call
4433 pthread_is_threaded_np() before calling pthread_main_np(). Almost all
4434 apps have more than one thread, so the extra call is actually worse.
4435 Interestingly, even the single-threaded testkjs shows a speed gain
4436 from removing the pthread_is_threaded_np() short-circuit. Not sure why.
4438 2007-03-04 Peter Kasting <pkasting@google.com>
4440 Reviewed by Nikolas Zimmermann.
4442 - fix http://bugs.webkit.org/show_bug.cgi?id=12950
4443 Assertions.cpp should not #define macros that are already defined
4445 * wtf/Assertions.cpp: Don't #define WINVER and _WIN32_WINNT if they
4446 are already defined.
4448 2007-03-02 Steve Falkenburg <sfalken@apple.com>
4452 Add unsigned int hash traits (matches existing unsigned long version)
4457 2007-03-02 Adam Roben <aroben@apple.com>
4459 Reviewed by Kevin M.
4461 Try to fix the Qt build.
4464 (KJS::msToGregorianDateTime): Removed unnecessary "struct" keyword.
4465 * kjs/DateMath.h: Moved forward declarations to the top of the file
4466 before they are used.
4467 * kjs/date_object.cpp:
4468 (KJS::formatLocaleDate): Changed to take a const GregorianDateTime&
4469 since GregorianDateTime is Noncopyable.
4471 2007-03-02 Darin Adler <darin@apple.com>
4473 Reviewed by Kevin McCullough.
4475 - fix http://bugs.webkit.org/show_bug.cgi?id=12867
4476 REGRESSION: BenchJS test 7 (dates) is 220% slower than in Safari 2.0.4
4478 * kjs/DateMath.h: Marked GregorianDateTime as noncopyable, since it has a non-trivial
4479 destructor and not the correspoding copy constructor or assignment operator.
4480 Changed the GregorianDateTime constructor to use member initialization syntax.
4481 Fixed the destructor to use the array delete operator, since timeZone is an array.
4484 (KJS::daysInYear): Changed to call isLeapYear so the rule is not repeated twice.
4485 (KJS::getUTCOffset): Added caching on PLATFORM(DARWIN), since we can rely on the
4486 notify_check function and "com.apple.system.timezone" to let us know when the
4489 2007-02-27 Geoffrey Garen <ggaren@apple.com>
4491 Reviewed by Darin Adler.
4493 Follow-up to fixing http://bugs.webkit.org/show_bug.cgi?id=12659 | <rdar://problem/4954306>
4494 JS objects not collected after closing window @ ebay.com/maps.google.com
4496 Changed Interpreter cache of global constructors and prototypes from
4497 ProtectedPtrs to bare, marked pointers. ProtectedPtrs are inefficient,
4498 and they increase the risk of reference cycles. Also, Darin said something
4499 about ProtectedPtrs giving him warts.
4501 Also changed data members to precise types from generic JSObject*'s.
4503 Layout tests and JS tests pass.
4505 * kjs/SavedBuiltins.h:
4506 * kjs/interpreter.cpp:
4507 (KJS::Interpreter::init):
4508 (KJS::Interpreter::~Interpreter):
4509 (KJS::Interpreter::initGlobalObject): Moved Identifier::init() call to
4510 constructor, for clarity.
4511 (KJS::Interpreter::mark):
4512 * kjs/interpreter.h:
4514 2007-02-27 Geoffrey Garen <ggaren@apple.com>
4516 Reviewed by Maciej Stachowiak.
4518 Fixed http://bugs.webkit.org/show_bug.cgi?id=12659 | <rdar://problem/4954306>
4519 JS objects not collected after closing window @ ebay.com/maps.google.com
4521 Don't GC in the Interpreter destructor. For that to work, the Interpreter
4522 would have to NULL out all of its ProtectedPtrs before calling collect(). But
4523 we've decided that we don't want things to work that way, anyway. We want the
4524 client to be in charge of manual GC so that it can optimize cases when
4525 it will be destroying many interpreters at once
4526 (e.g., http://bugs.webkit.org/show_bug.cgi?id=12900).
4528 Also removed Interpreter::collect() because it was redundant with
4529 Collector::collect().
4531 * JavaScriptCore.exp:
4532 * kjs/interpreter.cpp:
4533 (KJS::Interpreter::~Interpreter):
4535 (TestFunctionImp::callAsFunction):
4537 2007-02-26 Krzysztof Kowalczyk <kkowalczyk@gmail.com>
4539 Reviewed by Adam Roben.
4541 Rename *_SUPPORT defines to ENABLE_*.
4545 2007-02-26 Maciej Stachowiak <mjs@apple.com>
4549 - <rdar://problem/5021698> Disable experimental SVG features (12883)
4551 * wtf/Platform.h: Add ENABLE() macro similar to HAVE() and USE(), to
4552 allow nicer handling of optional WebKit features.
4554 2007-02-22 George Staikos <staikos@kde.org>
4560 * wtf/unicode/qt4/UnicodeQt4.h:
4561 (WTF::Unicode::toLower):
4562 (WTF::Unicode::toUpper):
4564 2007-02-22 Oscar Cwajbaum <public@oscarc.net>
4568 Fix ARM-specific alignment problem in FastMalloc
4569 http://bugs.webkit.org/show_bug.cgi?id=12841
4571 * wtf/FastMalloc.cpp:
4572 Modify how pageheap_memory is declared to ensure proper alignment
4573 on architectures such as ARM
4575 2007-02-20 Zack Rusin <zrusin@trolltech.com>
4579 Make sure that non-void methods always return something.
4581 * wtf/unicode/qt4/UnicodeQt4.h:
4582 (WTF::Unicode::toLower):
4583 (WTF::Unicode::toUpper):
4584 (WTF::Unicode::foldCase):
4586 2007-02-18 Kevin Ollivier <kevino@theolliviers.com>
4588 Reviewed by Adam Roben.
4590 Fix cases where MSVC-specific code was identified as Win32 platform
4591 code. (as it should be compiled for e.g. wx port when using MSVC too)
4595 * wtf/StringExtras.h:
4596 changed PLATFORM(WIN) sections to COMPILER(MSVC) as necessary
4598 2007-02-17 Krzysztof Kowalczyk <kkowalczyk@gmail.com>
4600 Reviewed by Adam Roben.
4602 Fix crashes on ARM due to different struct packing. Based on a patch
4604 * kjs/ustring.cpp: compile-time assert to make sure sizeof(UChar) == 2
4605 * kjs/ustring.h: pack UChar struct to ensure that sizeof(UChar) == 2
4606 * wtf/Assertions.h: add COMPILE_ASSERT macro for compile-time assertions
4608 2007-02-16 George Staikos <staikos@kde.org>
4612 Fix uninitialized variable
4614 * bindings/testbindings.cpp:
4617 2007-02-16 Anders Carlsson <acarlsson@apple.com>
4621 http://bugs.webkit.org/show_bug.cgi?id=12788
4622 REGRESSION: Going back one page in history has a noticeable delay
4624 Um...if all elements in two vectors are equal, then I guess we could say that
4625 the two vectors are equal too.
4630 2007-02-14 Anders Carlsson <acarlsson@apple.com>
4634 Add new canCompareWithMemcmp vector trait and use it to determine whether
4635 operator== can use memcmp.
4639 (WTF::VectorTypeOperations::compare):
4641 * wtf/VectorTraits.h:
4644 2007-02-13 Brady Eidson <beidson@apple.com>
4648 Tweaked vector a bit
4653 2007-02-13 Matt Perry <mpcomplete@chromium.org>
4657 - fix for http://bugs.webkit.org/show_bug.cgi?id=12750
4658 Vector operator== was not defined correctly. It returned void,
4659 did not accept const Vectors, and used an int instead of size_t.
4661 * wtf/Vector.h: fixed comparison operators
4665 2007-02-10 David Carson <dacarson@gmail.com>
4669 - fix for http://bugs.webkit.org/show_bug.cgi?id=12636
4670 Corrected the generation of method signatures when the parameter
4672 Added support for converting a Javascript array to a Java array.
4674 * bindings/jni/jni_utility.h: added new type for array, array_type
4675 * bindings/jni/jni_runtime.cpp: add support for new array type
4676 (JavaField::valueFromInstance):
4677 (JavaField::setValueToInstance):
4678 (JavaMethod::JavaMethod):
4679 (JavaMethod::signature):
4680 * bindings/jni/jni_utility.cpp: add support for new array type
4681 (KJS::Bindings::callJNIMethod):
4682 (KJS::Bindings::callJNIStaticMethod):
4683 (KJS::Bindings::callJNIMethodIDA):
4684 (KJS::Bindings::JNITypeFromClassName):
4685 (KJS::Bindings::signatureFromPrimitiveType):
4686 (KJS::Bindings::JNITypeFromPrimitiveType):
4687 (KJS::Bindings::getJNIField):
4688 (KJS::Bindings::convertArrayInstanceToJavaArray): new method
4689 converts the Javascript array to the requested Java array.
4690 (KJS::Bindings::convertValueToJValue):
4692 2007-02-08 Anders Carlsson <acarlsson@apple.com>
4696 <rdar://problem/4930614>
4697 Safari complains about "Slow Script" if GMail is left open and machine is busy
4699 <rdar://problem/4649516>
4700 Turn off slow script dialog or crank up time that makes it come up
4702 <rdar://problem/4963589>
4703 Slow script warning is displayed after closing of PROMPT or PRINT dialog
4705 Re-do the way script timeouts are handled. No longer use a unix timer that sends signals. Instead, add a
4706 tick count and increment it in loop bodies. If the tick count reaches a threshold, do a timeout check. If the total time executing
4707 is higher than the timeout value, (possibly) interrupt the script. The timeout checker also adjusts the threshold dynamically
4708 to prevent doing the timeout check too often.
4710 * JavaScriptCore.exp:
4711 Remove pause and resume calls.
4713 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
4716 * kjs/interpreter.cpp:
4717 (KJS::Interpreter::init):
4718 (KJS::Interpreter::~Interpreter):
4719 (KJS::Interpreter::startTimeoutCheck):
4720 (KJS::Interpreter::stopTimeoutCheck):
4721 (KJS::Interpreter::resetTimeoutCheck):
4722 (KJS::getCurrentTime):
4723 (KJS::Interpreter::checkTimeout):
4724 * kjs/interpreter.h:
4725 (KJS::Interpreter::timedOut):
4727 (DoWhileNode::execute):
4728 (WhileNode::execute):
4731 2007-02-07 Darin Adler <darin@apple.com>
4733 * JavaScriptCore.vcproj/JavaScriptCore.sln: Reenable testkjs.
4735 2007-02-07 Darin Adler <darin@apple.com>
4739 - another build fix; this time for sure
4741 * pcre/pcre_exec.c: (match):
4742 The compiler caught an incorrect use of the othercase variable across
4743 a call to RMATCH in character repeat processing. Local variables can
4744 change in the crazy NO_RECURSE mode that we use, so we instead need
4745 the value in othercase to be in one of the special stack frame variables.
4746 Added a new stack frame variable for this purpose named repeat_othercase.
4747 Also noted a similar error in the non-UTF-16 side of the #ifdef, but
4748 didn't try to fix that one. Also removed a SUPPORT_UCP #ifdef from the
4749 PCRE_UTF16 side; that code doesn't work without the Unicde properties
4750 table, and we don't try to use it that way.
4752 2007-02-06 Steve Falkenburg <sfalken@apple.com>
4754 Disable testkjs in sln until we figure out mysterious compiler warning.
4756 * JavaScriptCore.vcproj/JavaScriptCore.sln:
4758 2007-02-06 Steve Falkenburg <sfalken@apple.com>
4765 2007-02-06 Darin Adler <darin@apple.com>
4769 - fix <rdar://problem/4979089> PCRE should avoid setjmp/longjmp even when compiler
4772 Added a new code path that's slower and way uglier but doesn't rely on GCC's
4775 * pcre/pcre_exec.c: Added a numeric parameter to the RMATCH function. It must be
4776 different at every RMATCH call site. Changed the non-GCC NO_RECURSE version of
4777 the macro to use a label incorporating the number. Changed the RRETURN macro to
4778 use a goto instead of longjmp.
4779 (match): Added a different number at each callsite, using a perl script for the
4780 first-time task. Going forward it should be easy to maintain by hand. Added a
4781 switch statement at the bottom of the function. We'll get compile time errors
4782 if we have anything in the switch statement that's never used in an RMATCH,
4783 but errors in the other direction are silent except at runtime.
4785 2007-02-06 Darin Adler <darin@apple.com>
4789 - fix <rdar://problem/4687840> 9A241: JavaScript RegExp 25-30x slower than on 10.4.7
4791 I used Shark to figure out what to do. The test case is now 15% faster than with
4792 stock Safari. Some other regular expression cases might still be a few % slower
4793 than before, but the >10x slowdown is now completely gone.
4795 1) Fix slowness caused by setjmp/longjmp by using computed goto instead.
4797 Use GCC extensions - locally declared labels, labels as values, and computed goto -
4798 instead of using setjmp/longjmp to implemement non-recursive version of the regular
4799 expression system. We could probably make this even faster if we reduced the use
4800 of malloc a bit too.
4802 2) Fix slowness caused by allocating heapframe objects by allocating the first
4803 16 of them from the stack.
4805 3) Speed up use of malloc and free in PCRE by making it use fastMalloc and fastFree.
4807 4) Speed up the test case by adding a special case to a UString function.
4809 5) Made a small improvement to the innermost hottest loop of match by hoisting
4810 the conversion from int to pcre_uchar out of the loop.
4812 * JavaScriptCore.xcodeproj/project.pbxproj: Compile FastMallocPCRE.cpp, and don't
4813 compile pcre_globals.c.
4815 * wtf/FastMallocPCRE.cpp: Added. A copy of pcre_globals.c that uses FastMalloc.h.
4816 This is better than code that sets the PCRE allocation globals because by doing it
4817 this way there's guaranteed to be no problem with order of initialization.
4819 * kjs/ustring.cpp: (KJS::UString::spliceSubstringsWithSeparators): Add a fast
4820 special case when this is called for only one subrange and no seaprators. This
4821 was happening a lot in the test case and it seems quite reasonable to optimize this.
4823 * pcre/pcre_exec.c: Create a copy of the RMATCH and RRETURN macros that use goto
4824 instead of setjmp/longjmp. Change code that calls pcre_stack_malloc to first use
4825 storage on the stack inside the match function.
4826 (match): Move initialization of utf8 up a couple lines to avoid "possibly used
4827 uninitialized" warning. Use a local variable so we compare with pcre_uchar instead
4828 of with int inside the inner "find a character" loop.
4830 2007-02-03 George Staikos <staikos@kde.org>
4834 -1 is not a valid point. We can't handle anything > 0xffff anyway.
4835 Fixes crash on cases like eval("x");
4837 * wtf/unicode/qt4/UnicodeQt4.h:
4838 (WTF::Unicode::category):
4840 2007-02-02 Darin Adler <darin@apple.com>
4844 - fix copying and assigning a ListHashSet
4846 No test because the code path with bugs I am fixing is not used yet.
4848 * wtf/ListHashSet.h: Tweaked ListHashSetNodeAllocator a little bit for clarity.
4849 Changed m_allocator to be an OwnPtr instead of doing an explicit delete.
4850 Fixed bug in copy constructor where we'd have an uninitialized m_allocator.
4851 Fixed bug in assignment operator where it would swap only the hash table, and
4852 not the head, tail, and allocator pointers.
4854 2007-02-02 Geoffrey Garen <ggaren@apple.com>
4856 Reviewed by Maciej Stachowiak.
4858 Use WTFLog instead of fprintf for logging KJS::Node leaks.
4861 (NodeCounter::~NodeCounter): Changed count to unsigned, updated
4862 to match style guidelines.
4864 2007-02-02 Maciej Stachowiak <mjs@apple.com>
4866 - not reviewed, build fix
4868 * wtf/ListHashSet.h:
4869 (WTF::ListHashSetNodeAllocator::ListHashSetNodeAllocator): ummm, use union correctly
4871 2007-02-01 Maciej Stachowiak <mjs@apple.com>
4875 - use a custom allocator for ListHashSet, to fix ~1% perf regression using it for form control
4877 * wtf/ListHashSet.h:
4878 (WTF::ListHashSetNodeAllocator::ListHashSetNodeAllocator):
4879 (WTF::ListHashSetNodeAllocator::allocate):
4880 (WTF::ListHashSetNodeAllocator::deallocate):
4881 (WTF::ListHashSetNode::operator new):
4882 (WTF::ListHashSetNode::operator delete):
4883 (WTF::ListHashSetNode::destroy):
4884 (WTF::ListHashSetTranslator::translate):
4885 (WTF::::ListHashSet):
4886 (WTF::::~ListHashSet):
4888 (WTF::::unlinkAndDelete):
4889 (WTF::::deleteAllNodes):
4891 2007-01-31 Maciej Stachowiak <mjs@apple.com>
4895 - fix sporadic crash
4897 * wtf/ListHashSet.h:
4898 (WTF::::remove): remove before deleting
4900 2007-01-31 Maciej Stachowiak <mjs@apple.com>
4902 Reviewed by Mark with help from Lars.
4904 - added new ListHashSet class, which combines a hashtable and a linked list to provide a set
4905 that keeps elements in inserted order
4907 This is to assist in fixing the following:
4908 <rdar://problem/4751164> REGRESSION: Safari places text on incorrect button when returning to a page via back [10541]
4909 http://bugs.webkit.org/show_bug.cgi?id=10541
4911 * JavaScriptCore.vcproj/WTF/WTF.vcproj:
4912 * JavaScriptCore.xcodeproj/project.pbxproj:
4914 (WTF::HashTable::find):
4915 (WTF::HashTable::contains):
4918 * wtf/ListHashSet.h: Added.
4919 (WTF::ListHashSetNode::ListHashSetNode):
4920 (WTF::ListHashSetNodeHashFunctions::hash):
4921 (WTF::ListHashSetNodeHashFunctions::equal):
4922 (WTF::ListHashSetIterator::ListHashSetIterator):
4923 (WTF::ListHashSetIterator::get):
4924 (WTF::ListHashSetIterator::operator*):
4925 (WTF::ListHashSetIterator::operator->):
4926 (WTF::ListHashSetIterator::operator++):
4927 (WTF::ListHashSetIterator::operator--):
4928 (WTF::ListHashSetIterator::operator==):
4929 (WTF::ListHashSetIterator::operator!=):
4930 (WTF::ListHashSetIterator::operator const_iterator):
4931 (WTF::ListHashSetIterator::node):
4932 (WTF::ListHashSetConstIterator::ListHashSetConstIterator):
4933 (WTF::ListHashSetConstIterator::get):
4934 (WTF::ListHashSetConstIterator::operator*):
4935 (WTF::ListHashSetConstIterator::operator->):
4936 (WTF::ListHashSetConstIterator::operator++):
4937 (WTF::ListHashSetConstIterator::operator--):
4938 (WTF::ListHashSetConstIterator::operator==):
4939 (WTF::ListHashSetConstIterator::operator!=):
4940 (WTF::ListHashSetConstIterator::node):
4941 (WTF::ListHashSetTranslator::hash):
4942 (WTF::ListHashSetTranslator::equal):
4943 (WTF::ListHashSetTranslator::translate):
4944 (WTF::::ListHashSet):
4946 (WTF::::~ListHashSet):
4957 (WTF::::unlinkAndDelete):
4958 (WTF::::appendNode):
4959 (WTF::::deleteAllNodes):
4960 (WTF::::makeIterator):
4961 (WTF::::makeConstIterator):
4962 (WTF::deleteAllValues):
4964 2007-01-30 Darin Adler <darin@apple.com>
4966 * kjs/DateMath.cpp: Fix license header to reflect LGPL as the first license
4967 mentioned. We still mention the option of using under MPL or GPL since some
4968 of this code came from the Mozilla project with those license terms.
4970 2007-01-30 Simon Hausmann <hausmann@kde.org>
4974 Turned JavaScriptCore from a separate library into an includable
4975 project, to combine it all into libWebKitQt.
4977 * JavaScriptCore.pri: Added.
4978 * JavaScriptCore.pro: Removed.
4981 2007-01-29 Geoffrey Garen <ggaren@apple.com>
4983 Reviewed by Maciej Stachowiak.
4985 Fixed <rdar://problem/4485644> REGRESSION: JavaScriptCore has init routines
4987 The TCMalloc module now initializes, if needed, inside GetCache() and
4988 fastMallocSetIsMultiThreaded(). We leverage the same synchronization
4989 technique used for enabling / disabling the single-threaded optimization
4990 to synchronize initialization of the library without requiring a lock
4993 1,251 runs of tcmalloc_unittest, 2 runs of a custom, massively multi-threaded
4994 tcmalloc_unittest, and my custom version of the PLT show no regressions.
4995 Super-accurate JS iBench reports a .24% regression, which is right at the
4996 limit of its error range, so I'm declaring victory.
4998 * wtf/FastMalloc.cpp:
4999 (WTF::fastMallocSetIsMultiThreaded): Initialize, if needed. (InitModule()
5000 checks the "if needed" part.)
5001 (WTF::TCMalloc_ThreadCache::GetCache): Restored original TCMalloc code
5002 inside #ifdef, for posterity. Added new initialization logic.
5003 (WTF::TCMalloc_ThreadCache::InitModule): Call InitTSD(), since we don't
5004 have a static initializer to call it for us, now. This means that fastMalloc
5005 is not usable as a general libc allocator, but it never was, and if it were
5006 the general libc allocator, we wouldn't be here in the first place, so whatever.
5007 (WTF::TCMalloc_ThreadCache::InitTSD): Don't try to take the pageheap_lock,
5008 since InitModule already has it.
5010 2007-01-29 Kevin McCullough <KMcCullough@apple.com>
5012 Reviewed by Geoff and Oliver.
5014 - rdar://problem/4955561
5015 - missusing JavaScript shouldn't crash webkit. Now it doesn't, in this case.
5017 * bindings/objc/objc_runtime.mm:
5018 (ObjcFallbackObjectImp::callAsFunction):
5019 * bindings/runtime_method.cpp:
5020 (RuntimeMethod::callAsFunction):
5021 * bindings/runtime_object.cpp:
5022 (RuntimeObjectImp::callAsFunction):
5024 2007-01-28 Geoffrey Garen <ggaren@apple.com>
5026 Reviewed by Maciej Stachowiak.
5028 First step in fixing <rdar://problem/4485644> REGRESSION: JavaScriptCore
5031 Don't rely on a static initializer to store the main thread's ID (which
5032 we would use to detect allocations on secondary threads). Instead, require
5033 the caller to notify fastMalloc if it might allocate on a secondary thread.
5035 Also fixed what seemed like a race condition in do_malloc.
5037 tcmalloc_unittest and my custom versions of JS iBench and PLT show no
5040 * wtf/FastMalloc.cpp:
5041 (WTF::fastMallocSetIsMultiThreaded):
5042 (1) Renamed from "fastMallocRegisterThread", which was a misleading name because
5043 not all threads need to register with fastMalloc -- only secondary threads
5044 need to, and only for the purpose of disabling its single-threaded optimization.
5046 (2) Use the pageheap_lock instead of a custom one, since we need to synchronize
5047 with the read of isMultiThreaded inside CreateCacheIfNecessary. This is a new
5048 requirement, now that we can't guarantee that the first call to CreateCacheIfNecessary
5049 will occur on the main thread at init time, before any other threads have been created.
5051 (WTF::TCMalloc_ThreadCache::CreateCacheIfNecessary):
5052 (WTF::do_malloc): Reverted WTF change only to call GetCache() if size <= kMaxSize.
5053 The WTF code would read phinited without holding the pageheap_lock, which
5054 seemed like a race condition. Regardless, calling GetCache reduces the number
5055 of code paths to module initialization, which will help in writing the
5056 final fix for this bug.
5058 2007-01-28 David Kilzer <ddkilzer@webkit.org>
5062 - fix http://bugs.webkit.org/show_bug.cgi?id=9815
5063 JavaScript TypeError loading Dean Edwards' JS compressor/obfuscator
5065 Creating a function using 'new Function()' was not setting its prototype with the
5066 same flags as 'function() { }'.
5068 Test: fast/js/function-prototype.html
5070 * kjs/function_object.cpp:
5071 (FunctionObjectImp::construct): Change flags from DontEnum|DontDelete|ReadOnly to
5072 Internal|DontDelete to match FuncDeclNode::processFuncDecl() and
5073 FuncExprNode::evaluate() in kjs/nodes.cpp.
5075 2007-01-27 Geoffrey Garen <ggaren@apple.com>
5077 Reviewed by Beth Dakin.
5079 Added some missing JSLocks, which might fix <rdar://problem/4889707>.
5081 We need to lock whenever we might allocate memory because our FastMalloc
5082 implementation requires clients to register their threads, which we do
5085 We also need to lock whenever modifying ref-counts because they're not
5088 * API/JSObjectRef.cpp:
5089 (JSClassCreate): Allocates memory
5090 (JSClassRetain): Modifies a ref-count
5091 (JSClassRelease): Modifies a ref-count
5092 (JSPropertyNameArrayRetain): Modifies a ref-count
5093 (JSPropertyNameArrayRelease): Modifies a ref-count
5094 * API/JSStringRef.cpp:
5095 (JSStringRetain): Modifies a ref-count
5096 * API/JSValueRef.cpp:
5097 (JSValueIsInstanceOfConstructor): Might allocate memory if an exception
5100 2007-01-27 Lars Knoll <lars@trolltech.com>
5104 * bindings/qt/qt_instance.h:
5106 2007-01-25 Geoffrey Garen <ggaren@apple.com>
5108 Reviewed by Maciej Stachowiak.
5110 Fixed <rdar://problem/4608404> WebScriptObject's _rootObject lack
5111 of ownership policy causes crashes (e.g., in Dashcode)
5113 The old model for RootObject ownership was either to (1) leak them or (2) assign
5114 them to a single owner -- the WebCore::Frame -- which would destroy them
5115 when it believed that all of its plug-ins had unloaded.
5117 This model was broken because of (1) and also because plug-ins are not the only
5118 RootObject clients. All Bindings clients are RootObjects clients, including
5119 applications, which outlive any particular WebCore::Frame.
5121 The new model for RootObject ownership is to reference-count them, with a
5122 throw-back to the old model: The WebCore::Frame tracks the RootObjects
5123 it creates, and invalidates them when it believes that all of its plug-ins
5126 We maintain this throw-back to avoid plug-in leaks, particularly from Java.
5127 Java is completely broken when it comes to releasing JavaScript objects.
5128 Comments in our code allege that Java does not always call finalize when
5129 collecting objects. Moreoever, my own testing reveals that, when Java does
5130 notify JavaScript of a finalize, the data it provides is totally bogus.
5132 This setup is far from ideal, but I don't think we can do better without
5133 completely rewriting the bindings code, and possibly part of the Java
5136 Layout tests pass. No additional leaks reported. WebCore/manual-tests/*liveconnect*
5137 and a few LiveConnect demos on the web also run without a hitch.
5139 const RootObject* => RootObject*, since we need to ref/deref
5141 * bindings/NP_jsobject.cpp:
5142 (jsDeallocate): deref our RootObjects. Also unprotect or JSObject, instead
5143 of just relying on the RootObject to do it for us when it's invalidated.
5144 (_isSafeScript): Check RootObject validity.
5145 (_NPN_CreateScriptObject): ditto
5146 (_NPN_Invoke): ditto
5147 (_NPN_Evaluate): ditto
5148 (_NPN_GetProperty): ditto
5149 (_NPN_SetProperty): ditto
5150 (_NPN_RemoveProperty): ditto
5151 (_NPN_HasProperty): ditto
5152 (_NPN_HasMethod): ditto
5153 (_NPN_SetException): ditto
5155 * bindings/runtime_root.cpp:
5156 Revived bit-rotted LIAR LIAR LIAR comment.
5158 LOOK: Added support for invalidating RootObjects without deleting them,
5159 which is the main goal of this patch.
5161 Moved protect counting into the RootObject class, to emphasize that
5162 the RootObject protects the JSObject, and unprotects it upon being invalidated.
5163 addNativeReference => RootObject::gcProtect
5164 removeNativeReference => RootObject::gcUnprotect
5165 ProtectCountSet::contains => RootObject::gcIsProtected
5167 I know we'll all be sad to see the word "native" go.
5169 * bindings/runtime_root.h: Added ref-counting support to RootObject, with
5170 all the standard accoutrements.
5172 * bindings/c/c_utility.cpp:
5173 (KJS::Bindings::convertValueToNPVariant): If we can't find a valid RootObject,
5174 return void instead of just leaking.
5176 * bindings/jni/jni_instance.cpp:
5177 (JavaInstance::JavaInstance): Don't take a RootObject in our constructor;
5178 be like other Instances and require the caller to call setRootObject. This
5179 reduces the number of ownership code paths.
5180 (JavaInstance::invokeMethod): Check RootObject for validity.
5181 * bindings/jni/jni_instance.h: Removed private no-arg constructor. Having
5182 an arg constructor accomplishes the same thing.
5184 * bindings/jni/jni_jsobject.cpp:
5185 (JavaJSObject::invoke): No need to call findProtectCountSet, because finalize()
5186 checks for RootObject validity.
5187 (JavaJSObject::JavaJSObject): check RootObject for validity
5188 (JavaJSObject::call): ditto
5189 (JavaJSObject::eval): ditto
5190 (JavaJSObject::getMember): ditto
5191 (JavaJSObject::setMember): ditto
5192 (JavaJSObject::removeMember): ditto
5193 (JavaJSObject::getSlot): ditto
5194 (JavaJSObject::setSlot): ditto
5195 (JavaJSObject::toString): ditto
5196 (JavaJSObject::finalize): ditto
5197 (JavaJSObject::createNative): No need to tell the RootObject to protect
5198 the global object, since the RootObject already owns the interpreter.
5200 * bindings/jni/jni_runtime.cpp:
5201 (JavaArray::JavaArray): Removed copy construcutor becaue it was unused.
5202 Dead code is dangerous code.
5204 * bindings/objc/objc_runtime.mm: Added WebUndefined protocol. Previous use
5205 of WebScriptObject was bogus, because WebUndefined is not a subclass of
5207 (convertValueToObjcObject): If we can't find a valid RootObject,
5208 return nil instead of just leaking.
5210 * bindings/objc/objc_utility.mm:
5211 (KJS::Bindings::convertValueToObjcValue): If we can't find a valid RootObject,
5212 return nil instead of just leaking.
5214 2007-01-27 Andrew Wellington <proton@wiretapped.net>
5218 Fix for Repeated string concatenation results in OOM crash
5219 http://bugs.webkit.org/show_bug.cgi?id=11131
5221 * kjs/operations.cpp:
5222 (KJS::add): Throw exception if string addition result is null
5224 (KJS::UString::UString): Don't call memcpy when malloc failed
5226 2007-01-25 Jan Kraemer <camel@gmx.de>
5230 Fix for http://bugs.webkit.org/show_bug.cgi?id=12382
5232 Fix crash on architectures with 32 bit ints and
5233 64 bit longs (For example Linux on AMD64)
5235 * kjs/dtoa.cpp: #define Long int as suggested in comment
5237 2007-01-24 Geoffrey Garen <ggaren@apple.com>
5239 Fixed up #include order for style. No review necessary.
5241 * API/JSStringRef.cpp:
5243 2007-01-24 Geoffrey Garen <ggaren@apple.com>
5245 Reviewed by Maciej Stachowiak.
5247 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
5248 Copy JSStringRefCF, in case anybody wants to use it. (I just added
5251 2007-01-24 Maciej Stachowiak <mjs@apple.com>
5253 Not reviewed, trivial property change.
5255 * JavaScriptCore.vcproj/JavaScriptCore.sln: remove svn:mime-type
5256 property which made this binary.
5258 2007-01-25 Mark Rowe <mrowe@apple.com>
5262 * Info.plist: Update copyright string.
5264 2007-01-24 Darin Adler <darin@apple.com>
5266 Reviewed by Mark Rowe.
5268 * JavaScriptCore.xcodeproj/project.pbxproj: Changed to /usr/sbin/sysctl
5269 so we don't rely on people's paths.
5271 2007-01-23 Alice Liu <alice.liu@apple.com>
5275 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
5278 2007-01-23 Geoffrey Garen <ggaren@apple.com>
5282 * API/JSStringRef.h:
5283 * JavaScriptCore.xcodeproj/project.pbxproj:
5285 2007-01-24 Mark Rowe <mrowe@apple.com>
5287 Build fix for DumpRenderTree.
5289 * JavaScriptCore.xcodeproj/project.pbxproj: Make JSStringRefCF.h public so it's copied into built framework.
5291 2007-01-23 Anders Carlsson <acarlsson@apple.com>
5295 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
5298 2007-01-23 Geoffrey Garen <ggaren@apple.com>
5300 Reviewed by Maciej Stachowiak.
5302 Fixed <rdar://problem/4885131> Move CFString function declarations from
5303 JSStringRef.h to JSStringRefCF.h
5305 Also removed remaining API FIXMEs and changed them into Radars.
5307 * API/JSClassRef.cpp:
5308 (OpaqueJSClass::OpaqueJSClass): Added Radar numbers for UTF8 conversion.
5310 * API/JSContextRef.cpp:
5311 (JSGlobalContextCreate): Replaced FIXME for NULL JSContextRef with Radar number.
5313 * API/JSObjectRef.h: Removed FIXME, which is unprofessional in a public header.
5315 * API/JSStringRef.cpp: Moved CF related implementations to JSStringRefCF.cpp.
5316 (JSStringCreateWithUTF8CString): Replaced FIXME with Radar number.
5317 * API/JSStringRef.h: Moved CF related declarations to JSStringRefCF.h. Added
5318 #include of JSStringRefCF.h as a stopgap until clients start #including
5319 it as needed by themselves.
5321 * API/JSStringRefCF.cpp: Added.
5322 (JSStringCreateWithCFString):
5323 (JSStringCopyCFString): Replaced JSChar cast with UniChar cast, which is
5324 more appropriate for a CF call.
5325 * API/JSStringRefCF.h: Added.
5326 * JavaScriptCore.xcodeproj/project.pbxproj:
5328 2007-01-18 Sanjay Madhav <sanjay12@gmail.com>
5332 Add JavaScriptCore define to help with tracing of when objects are marked.
5335 (KJS::JSObject::mark):
5337 2007-01-18 Simon Hausmann <hausmann@kde.org>
5341 * JavaScriptCore.pro: Remove generated files on make clean.
5344 2007-01-16 Alexey Proskuryakov <ap@webkit.org>
5348 http://bugs.webkit.org/show_bug.cgi?id=12268
5349 Give object prototypes their own names
5351 * kjs/lookup.h: Append "Prototype" to ClassName in KJS_IMPLEMENT_PROTOTYPE.
5353 2007-01-16 Geoffrey Garen <ggaren@apple.com>
5355 Reviewed by Darin Adler.
5357 Added re-entrency checking to GC allocation and collection. It is an error
5358 to allocate or collect from within a collection. We've had at least one
5359 case of each bug in the past.
5361 Added a comment to the API header, explaining that API clients must not
5362 make this mistake, either.
5364 Layout tests and JS tests pass.
5366 * API/JSObjectRef.h:
5367 * kjs/collector.cpp:
5368 (KJS::GCLock::GCLock):
5369 (KJS::GCLock::~GCLock):
5370 (KJS::Collector::allocate):
5371 (KJS::Collector::collect):
5373 2007-01-14 Mark Rowe <mrowe@apple.com>
5377 Minor fixes to JavaScript pretty-printing.
5379 * JavaScriptCore.exp:
5381 (KJS::Parser::prettyPrint): Return line number and error message if parsing fails.
5383 * kjs/nodes2string.cpp:
5384 (ElementNode::streamTo): Include comma delimiters in array literals.
5385 (PropertyNameNode::streamTo): Quote property names in object literals to handle the case when the property name is not a valid identifier.
5387 (doIt): Print any errors encountered while pretty-printing.
5389 2007-01-12 Anders Carlsson <acarlsson@apple.com>
5394 Add hash traits for unsigned long and unsigned long long.
5396 2007-01-12 Geoffrey Garen <ggaren@apple.com>
5400 Rolling back in r18786 with leaks fixed, and these renames slightly reworked:
5402 Because they can return 0:
5403 rootObjectForImp => findRootObject (overloaded for JSObject* and Interpreter*)
5404 rootObjectForInterpreter => findRootObject (ditto)
5405 findReferenceSet => findProtectCountSet
5407 2007-01-11 Geoffrey Garen <ggaren@apple.com>
5411 Rolling out r18786 because it caused leaks.
5413 2007-01-11 Geoffrey Garen <ggaren@apple.com>
5415 Reviewed by Anders Carlsson.
5417 Even more cleanup in preparation for fixing <rdar://problem/4608404>
5418 WebScriptObject's _executionContext lack of ownership policy causes
5419 crashes (e.g., in Dashcode)
5424 ReferencesSet | ProtectCounts => ProtectCountSet (because it's a typename for a set of GC protect counts)
5425 ReferencesByRootMap => RootObjectMap (because RootObjectToProtectCountSetMap would have been confusing)
5426 pv => protectedValues
5427 rootObjectForImp => getRootObject (overloaded for JSObject* and Interpreter*)
5428 rootObjectForInterpreter => getRootObject (ditto)
5429 findReferenceSet => getProtectCountSet
5432 (KJS::Bindings::getRootObjectMap): Changed to take advantage of built-in
5433 facility for initializing static variables.
5435 (KJS::Bindings::getProtectCountSet):
5436 (KJS::Bindings::destroyProtectCountSet): Added. Helps encapsulate the fact
5437 that getting a ProtectCountSet entails adding a RootObject to a hash table,
5438 and destroying one entails the reverse.
5440 (KJS::Bindings::getRootObject): Removed spurious NULL check.
5442 (KJS::Bindings::findReferenceSet): Renamed. Changed to use getRootObject()
5443 instead of iterating on its own.
5445 (KJS::Bindings::addNativeReference): Changed to use an early return instead
5446 of indenting the whole function.
5447 (KJS::Bindings::removeNativeReference): Ditto.
5449 2007-01-11 Geoffrey Garen <ggaren@apple.com>
5451 Reviewed by Anders Carlsson.
5453 Even more cleanup in preparation for fixing <rdar://problem/4608404>
5454 WebScriptObject's _executionContext lack of ownership policy causes
5455 crashes (e.g., in Dashcode)
5460 findRootObjectForNativeHandleFunction => createRootObject
5461 FindRootObjectForNativeHandleFunctionPtr => CreateRootObjectFunction
5463 Also removed unnecessary use of "Bindings::" prefix.
5465 * JavaScriptCore.exp:
5466 * bindings/jni/jni_jsobject.cpp:
5467 (JavaJSObject::createNative):
5468 (JavaJSObject::convertValueToJObject):
5469 (JavaJSObject::convertJObjectToValue):
5470 * bindings/runtime_root.cpp:
5471 (KJS::Bindings::RootObject::setCreateRootObject):
5472 * bindings/runtime_root.h:
5473 (KJS::Bindings::RootObject::createRootObject):
5475 2007-01-11 George Staikos <staikos@kde.org>
5479 Appears to be Mac specific right now.
5483 2007-01-10 Lars Knoll <lars@trolltech.com>
5487 Use the new functionality in Qt 4.3, to make
5488 the methods closer compliant with the Unicode
5491 Keep the old code so that it still compiles against
5494 * wtf/unicode/qt4/UnicodeQt4.h:
5495 (WTF::Unicode::toLower):
5496 (WTF::Unicode::toUpper):
5497 (WTF::Unicode::toTitleCase):
5498 (WTF::Unicode::foldCase):
5499 (WTF::Unicode::isFormatChar):
5500 (WTF::Unicode::isPrintableChar):
5501 (WTF::Unicode::isSeparatorSpace):
5502 (WTF::Unicode::isPunct):
5503 (WTF::Unicode::isDigit):
5504 (WTF::Unicode::isLower):
5505 (WTF::Unicode::isUpper):
5506 (WTF::Unicode::digitValue):
5507 (WTF::Unicode::mirroredChar):
5508 (WTF::Unicode::combiningClass):
5509 (WTF::Unicode::decompositionType):
5510 (WTF::Unicode::umemcasecmp):
5511 (WTF::Unicode::direction):
5512 (WTF::Unicode::category):
5514 2007-01-09 Darin Adler <darin@apple.com>
5516 - update 2007 Apple copyright for the new company name
5520 2007-01-09 Darin Adler <darin@apple.com>
5524 * kjs/string_object.cpp: (KJS::StringProtoFunc::callAsFunction):
5525 Actually compile it this time.
5527 2007-01-09 Darin Adler <darin@apple.com>
5531 * kjs/string_object.cpp: (KJS::StringProtoFunc::callAsFunction):
5534 2007-01-09 Darin Adler <darin@apple.com>
5536 - fix build on platforms where Unicode::UChar is != uint16_t
5538 * kjs/string_object.cpp: (KJS::StringProtoFunc::callAsFunction):
5541 2007-01-09 Mitz Pettel <mitz@webkit.org>
5545 - changes for http://bugs.webkit.org/show_bug.cgi?id=11078
5546 Forms Don't Submit (ASP Pages)
5548 * JavaScriptCore.exp:
5550 (KJS::JSValue::toInt32): Folded toInt32Inline into this method, which was its
5552 (KJS::JSValue::toUInt32): Added a variant that reports if the conversion has
5556 2007-01-09 Darin Adler <darin@apple.com>
5560 - fix http://bugs.webkit.org/show_bug.cgi?id=12174
5561 improve Unicode use (less WTF::Unicode:: prefix, centralized character names)
5563 * wtf/unicode/icu/UnicodeIcu.h: Change parameter and return types
5564 to UChar32 and UChar. Removed unneeded type casts and added some
5565 const to functions that lacked it. Removed WTF::Unicode::memcmp.
5566 (WTF::Unicode::umemcasecmp): Renamed from strcasecmp since this
5567 doesn't work on 0-terminated strings as the str functions do.
5568 * wtf/unicode/qt4/UnicodeQt4.h: Ditto.
5570 - got rid of namespace prefixes from most uses of WTF::Unicode
5573 (KJS::isStrWhiteSpace):
5574 (KJS::escapeStringForPrettyPrinting):
5576 (KJS::Lexer::isWhiteSpace):
5577 (KJS::Lexer::isIdentStart):
5578 (KJS::Lexer::isIdentPart):
5579 * kjs/string_object.cpp:
5580 (KJS::StringProtoFunc::callAsFunction):
5582 2007-01-07 David Kilzer <ddkilzer@webkit.org>
5586 - fix http://bugs.webkit.org/show_bug.cgi?id=11917
5587 setlocale() can return null
5589 * kjs/date_object.cpp:
5590 (KJS::DateProtoFunc::callAsFunction): Removed dead code.
5592 2007-01-07 David Carson <dacarson@gmail.com>
5596 - fix http://bugs.webkit.org/show_bug.cgi?id=12100
5597 JNI bindings should be available to non-Mac platforms that have JNI
5599 Change JNI so that it is not wrapped in the PLATFORM(MAC) ifdef, enabling
5600 other platforms who have JNI to use it.
5602 * bindings/jni/jni_instance.h:
5603 Removed unnecessary include of <CoreFoundation/CoreFoundation.h>
5604 * bindings/jni/jni_utility.cpp:
5605 (KJS::Bindings::setJavaVM):
5606 * bindings/jni/jni_utility.h:
5607 Added new method for clients to set the JavaVM
5608 * bindings/runtime.cpp:
5609 (KJS::Bindings::Instance::createBindingForLanguageInstance):
5610 Changed code to utilize new #if HAVE(JNI)
5612 Added new #define for JNI, ie HAVE_JNI
5614 2007-01-07 David Carson <dacarson@gmail.com>
5618 Fix http://bugs.webkit.org/show_bug.cgi?id=11431
5619 ARM platform has some byte alignment issues
5621 Fix for NaN being 4 bytes and it must start on a byte boundary
5622 for ARM architectures.
5627 2007-01-04 David Kilzer <ddkilzer@webkit.org>
5629 Reviewed by Kevin McCullough.
5631 - fix http://bugs.webkit.org/show_bug.cgi?id=12070
5632 REGRESSION: KJS::getUTCOffset() caches UTC offset but ignores time zone changes
5635 (KJS::getUTCOffset): Don't cache UTC offset.
5637 2007-01-02 Darin Adler <darin@apple.com>
5639 - minor tweak (hope this doesn't re-break Windows)
5641 * pcre/pcre_compile.c: Removed use of const pcre_uchar const * -- Mitz probably
5642 meant const pcre_uchar *const, but I think we can do without the explicit const here.
5644 * pcre/pcre_internal.h: Re-enabled warning C4114.
5646 2007-01-02 David Kilzer <ddkilzer@webkit.org>
5648 Reviewed by NOBODY (Windows build fix).
5650 The MSVC compiler requires variables to be declared at the top of the enclosing block in C source.
5652 Disable this warning to prevent MSVC from complaining about the 'const pcre_uchar const *' type:
5653 warning C4114: same type qualifier used more than once
5655 * pcre/pcre_compile.c:
5656 (pcre_compile2): Moved variable declarations to top of their respective enclosing blocks.
5657 * pcre/pcre_internal.h: Added pragma to disable compiler warning.
5659 2007-01-01 Mitz Pettel <mitz@webkit.org>
5663 - fix http://bugs.webkit.org/show_bug.cgi?id=11849
5664 REGRESSION (r18182): Google Calendar is broken (a regular expression containing a null character is not parsed correctly)
5666 Modified pcre_compile() (and the functions that it calls) to work with patterns
5667 containing null characters.
5669 Covered by JavaScriptCore tests ecma_3/RegExp/octal-002.js and ecma_3/RegExp/regress-85721.js
5672 (KJS::RegExp::RegExp): Changed to not null-terminate the pattern string and instead
5673 pass its length to pcre_compile.
5675 * pcre/pcre_compile.c:
5678 (is_counted_repeat):
5679 (check_posix_syntax):
5682 (pcre_compile): Added a parameter specifying the length of the pattern, which
5683 is no longer required to be null-terminated and may contain null characters.
5685 * pcre/pcre_internal.h:
5686 * tests/mozilla/expected.html: Updated for the two tests that this patch
5687 fixes. Also updated failing results for ecma_3/RegExp/regress-100199.js
5688 which were not updated after bug 6257 was fixed.
5690 2007-01-01 David Kilzer <ddkilzer@webkit.org>
5694 - fix http://bugs.webkit.org/show_bug.cgi?id=12057
5695 REGRESSION: JavaScript Date Is One Day In The Future in GMT time zone
5697 Because Mac OS X returns geographically and historically accurate time zone information,
5698 converting Jan 02, 1970 12:00:00 AM to local time then subtracting 24 hours did not work
5699 in GMT (London - England) since it was in BST (+0100) all year in 1970[1]. Instead, the
5700 UTC offset is calculated by converting Jan 01, 2000 12:00:00 AM to local time then
5701 subtracting that from the same date in UTC.
5703 [1] http://en.wikipedia.org/wiki/British_Summer_Time
5706 (KJS::getUTCOffset): Updated UTC offset calculation.
5707 (KJS::getDSTOffset): Improved comment.
5709 2006-12-31 David Kilzer <ddkilzer@webkit.org>
5713 Update embedded pcre library from version 6.2 to 6.4. Changes from pcre 6.2 to 6.3
5714 did not include any files in JavaScriptCore/pcre.
5716 All changes include renaming EXPORT to PCRE_EXPORT, renaming of ucp_findchar() to
5717 _pcre_ucp_findchar(), or comment changes. Additional changes noted below.
5719 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: Updated source file list.
5720 * JavaScriptCore.xcodeproj/project.pbxproj: Renamed pcre_printint.c to pcre_printint.src
5721 and changed it from a source file to a header file.
5722 * JavaScriptCoreSources.bkl: Updated source file list.
5723 * pcre/CMakeLists.txt: Updated source file list.
5724 * pcre/pcre-config.h:
5725 * pcre/pcre.h: Updated version.
5726 * pcre/pcre.pri: Updated source file list.
5727 * pcre/pcre_compile.c: Include pcre_printint.src #if DEBUG.
5729 * pcre/pcre_config.c:
5732 * pcre/pcre_fullinfo.c:
5734 * pcre/pcre_internal.h: Added header guard. Removed export of _pcre_printint().
5735 * pcre/pcre_ord2utf8.c:
5736 * pcre/pcre_printint.c: Renamed to pcre_printint.src.
5737 * pcre/pcre_printint.src: Added. Renamed _pcre_printint() to pcre_printint().
5738 * pcre/pcre_refcount.c:
5739 * pcre/pcre_study.c:
5740 * pcre/pcre_tables.c:
5741 * pcre/pcre_try_flipped.c:
5742 * pcre/pcre_ucp_findchar.c: Added contents of ucp_findchar.c.
5743 * pcre/pcre_version.c:
5744 * pcre/pcre_xclass.c:
5746 * pcre/ucp.h: Removed export of ucp_findchar().
5747 * pcre/ucp_findchar.c: Removed. Contents moved to pcre_ucp_findchar.c.
5749 2006-12-29 David Kilzer <ddkilzer@webkit.org>
5753 Update embedded pcre library from version 6.1 to 6.2. From the pcre ChangeLog:
5755 3. Added "b" to the 2nd argument of fopen() in dftables.c, for non-Unix-like
5756 operating environments where this matters.
5758 5. Named capturing subpatterns were not being correctly counted when a pattern
5759 was compiled. This caused two problems: (a) If there were more than 100
5760 such subpatterns, the calculation of the memory needed for the whole
5761 compiled pattern went wrong, leading to an overflow error. (b) Numerical
5762 back references of the form \12, where the number was greater than 9, were
5763 not recognized as back references, even though there were sufficient
5764 previous subpatterns.
5766 * pcre/dftables.c: Item 3.
5768 * pcre/pcre.h: Updated version.
5769 * pcre/pcre_compile.c: Item 5.
5770 (read_repeat_counts):
5773 2006-12-29 Geoffrey Garen <ggaren@apple.com>
5775 Reviewed by Brian Dash... err... Mark Rowe.
5777 More cleanup in preparation for fixing <rdar://problem/4608404>
5778 WebScriptObject's _executionContext lack of ownership policy causes
5779 crashes (e.g., in Dashcode)
5781 The key change here is to RootObject::RootObject().
5783 * JavaScriptCore.exp:
5785 * bindings/c/c_utility.cpp:
5786 (KJS::Bindings::convertValueToNPVariant): Changed to use new constructor.
5788 * bindings/jni/jni_jsobject.cpp:
5789 (JavaJSObject::createNative): Changed to use new constructor. Replaced
5790 large 'if' followed by default condition with "if !" and explicit default
5793 * bindings/objc/objc_runtime.mm:
5794 (convertValueToObjcObject): Changed to use new constructor.
5796 * bindings/runtime_root.cpp:
5797 (KJS::Bindings::RootObject::destroy): "removeAllNativeReferences" => "destroy"
5798 because this function actually destroys the RootObject.
5800 * bindings/runtime_root.h: Changed Interpreter* to RefPtr<Interpreter>
5801 to prevent a RootObject from holding a stale Interperter*.
5803 (KJS::Bindings::RootObject::RootObject): Changed constructor to take an
5804 Interpreter*, since it's pointless to create a RootObject without one.
5805 Removed setRootObjectImp() and rootObjectImp() because they were just
5806 a confusing way of setting and getting the Interpreter's global object.
5808 (KJS::Bindings::RootObject::nativeHandle): "_nativeHandle" => "m_nativeHandle"
5809 (KJS::Bindings::RootObject::interpreter): "_interpreter" => "m_interpreter"
5811 2006-12-28 George Staikos <staikos@kde.org>
5815 * bindings/qt/qt_instance.cpp: build
5816 (KJS::Bindings::QtInstance::QtInstance):
5818 2006-12-28 Geoffrey Garen <ggaren@apple.com>
5820 Reviewed by Oliver Hunt.
5822 More cleanup. Layout tests pass.
5824 Use a helper function to initialize and access WebUndefined and WebScriptObject.
5826 * bindings/objc/objc_runtime.h:
5827 * bindings/objc/objc_runtime.mm:
5828 (KJS::Bindings::webScriptObjectClass):
5829 (KJS::Bindings::webUndefinedClass):
5830 (convertValueToObjcObject):
5831 * bindings/objc/objc_utility.mm:
5832 (KJS::Bindings::convertValueToObjcValue):
5833 (KJS::Bindings::convertObjcValueToValue):
5835 2006-12-28 Geoffrey Garen <ggaren@apple.com>
5837 Reviewed by Brady Eidson.
5839 Some cleanup in preparation for fixing <rdar://problem/4608404>
5840 WebScriptObject's _executionContext lack of ownership policy causes
5841 crashes (e.g., in Dashcode)
5843 I'm just trying to make heads or tails of this baffling code.
5845 Renamed "root" | "execContext" | "executionContext" => "rootObject", because
5846 that's the object's (admittedly vague) type name.
5848 * bindings/runtime.cpp: Removed createLanguageInstanceForValue
5849 because I'll give you a dollar if you can explain to me what it actually did.
5851 * bindings/runtime_root.cpp: Put everything in the KJS::Bindings namespace,
5852 removing the KJS::Bindings prefix from individual functions and datatypes.
5853 This matches the header and eliminates a lot of syntax cruft.
5855 * bindings/c/c_utility.cpp:
5856 (KJS::Bindings::convertValueToNPVariant): Replaced use of createLanguageInstanceForValue
5857 with call to _NPN_CreateScriptObject because that's what createLanguageInstanceForValue
5858 actually did (but don't ask me for that dollar now; that's cheating.)
5860 * bindings/objc/objc_utility.h:
5861 * bindings/objc/objc_utility.mm:
5862 (KJS::Bindings::convertValueToObjcValue): Removed. Its only purpose was
5863 to call a single function for WebKit, which WebKit can do on its own.
5865 * kjs/interpreter.h: Removed rtti() because it was unused, and this class
5866 is scheduled for demolition anyway.
5868 * kjs/interpreter.cpp: Removed createLanguageInstanceForValue because it had
5869 nothing to do with the Interpreter, and nothing makes Chuck Norris more mad
5870 than a function whose sole purpose is to call another function of the same
5871 name. (Really, I asked him.)
5873 2006-12-26 Geoffrey Garen <ggaren@apple.com>
5875 Reviewed by Eric Seidel.
5877 Some cleanup in preparation for fixing <rdar://problem/4740328> Safari
5878 crash on quit in _NPN_ReleaseObject from KJS::Bindings::CInstance::~CInstance
5880 * bindings/c/c_instance.cpp:
5881 * bindings/c/c_instance.h: Removed unused copy constructor and assignment
5882 operator. They made tracking data flow more difficult. Unused code is also
5883 dangerous because it can succumb to bit rot with the stealth of a Ninja.
5885 Replaced #include with forward declaration to reduce header dependency.
5887 * bindings/npruntime.cpp: Sorted #includes.
5888 (_NPN_GetStringIdentifier): Replaced assert with ASSERT.
5889 (_NPN_GetStringIdentifiers): ditto
5890 (_NPN_ReleaseVariantValue): ditto
5891 (_NPN_CreateObject): ditto
5892 (_NPN_RetainObject): ditto
5893 (_NPN_ReleaseObject): ditto
5894 (_NPN_DeallocateObject): ditto
5896 2006-12-20 Anders Carlsson <acarlsson@apple.com>
5898 * kjs/string_object.cpp:
5900 Another speculative Win32 fix.
5902 2006-12-20 Anders Carlsson <acarlsson@apple.com>
5904 * kjs/string_object.cpp:
5906 Speculative Win32 fix.
5908 2006-12-20 Anders Carlsson <acarlsson@apple.com>
5912 <rdar://problem/4235733>
5913 <http://bugs.webkit.org/?show_bug.cgi?id=10193>
5914 support String.localeCompare.
5916 Implement localeCompare.
5918 * JavaScriptCore.xcodeproj/project.pbxproj:
5919 * kjs/string_object.cpp:
5921 (StringProtoFunc::callAsFunction):
5922 * kjs/string_object.h:
5923 (KJS::StringProtoFunc::):
5925 2006-12-20 Timothy Hatcher <timothy@apple.com>
5927 Reviewed by Mark Rowe.
5929 * JavaScriptCore.xcodeproj/project.pbxproj: use GCC 4.0 for all the other test targets
5931 2006-12-20 Timothy Hatcher <timothy@apple.com>
5933 Reviewed by Mark Rowe.
5935 <rdar://problem/4871613> JavaScriptCore-421.31's dftables target needs to override default compiler and use gcc-4.0
5937 * JavaScriptCore.xcodeproj/project.pbxproj:
5939 2006-12-20 Lars Knoll <lars@trolltech.com>
5941 Reviewed by David Hyatt
5943 Added support to bind QObject's to
5946 * JavaScriptCore.pro:
5947 * bindings/qt/qt_class.cpp: Added.
5948 (KJS::Bindings::QtClass::QtClass):
5949 (KJS::Bindings::QtClass::~QtClass):
5950 (KJS::Bindings::QtClass::classForObject):
5951 (KJS::Bindings::QtClass::name):
5952 (KJS::Bindings::QtClass::methodsNamed):
5953 (KJS::Bindings::QtClass::fieldNamed):
5954 * bindings/qt/qt_class.h: Added.
5955 (KJS::Bindings::QtClass::constructorAt):
5956 (KJS::Bindings::QtClass::numConstructors):
5957 * bindings/qt/qt_instance.cpp: Added.
5958 (KJS::Bindings::QtInstance::QtInstance):
5959 (KJS::Bindings::QtInstance::~QtInstance):
5960 (KJS::Bindings::QtInstance::operator=):
5961 (KJS::Bindings::QtInstance::getClass):
5962 (KJS::Bindings::QtInstance::begin):
5963 (KJS::Bindings::QtInstance::end):
5964 (KJS::Bindings::QtInstance::implementsCall):
5965 (KJS::Bindings::QtInstance::invokeMethod):
5966 (KJS::Bindings::QtInstance::invokeDefaultMethod):
5967 (KJS::Bindings::QtInstance::defaultValue):
5968 (KJS::Bindings::QtInstance::stringValue):
5969 (KJS::Bindings::QtInstance::numberValue):
5970 (KJS::Bindings::QtInstance::booleanValue):
5971 (KJS::Bindings::QtInstance::valueOf):
5972 * bindings/qt/qt_instance.h: Added.
5973 (KJS::Bindings::QtInstance::getObject):
5974 * bindings/qt/qt_runtime.cpp: Added.
5975 (KJS::Bindings::convertValueToQVariant):
5976 (KJS::Bindings::convertQVariantToValue):
5977 (KJS::Bindings::QtField::name):
5978 (KJS::Bindings::QtField::valueFromInstance):
5979 (KJS::Bindings::QtField::setValueToInstance):
5980 * bindings/qt/qt_runtime.h: Added.
5981 (KJS::Bindings::QtField::QtField):
5982 (KJS::Bindings::QtField::type):
5983 (KJS::Bindings::QtMethod::QtMethod):
5984 (KJS::Bindings::QtMethod::name):
5985 (KJS::Bindings::QtMethod::numParameters):
5986 * bindings/runtime.cpp:
5987 (KJS::Bindings::Instance::createBindingForLanguageInstance):
5988 * bindings/runtime.h:
5989 (KJS::Bindings::Instance::):
5990 * bindings/testbindings.pro: Added.
5991 * bindings/testqtbindings.cpp: Added.
5992 (MyObject::MyObject):
5993 (MyObject::setTestString):
5994 (MyObject::setTestInt):
5995 (MyObject::testString):
5996 (MyObject::testInt):
5998 (Global::className):
6001 2006-12-19 Anders Carlsson <acarlsson@apple.com>
6005 Add -p option to testkjs which pretty prints the files instead of executing them.
6007 * JavaScriptCore.exp:
6008 * JavaScriptCore.xcodeproj/project.pbxproj:
6010 (KJS::Parser::prettyPrint):
6015 2006-12-19 Brady Eidson <beidson@apple.com>
6017 Rubberstamped by Lou
6019 Removed unneccessary "else"
6021 * wtf/Assertions.cpp:
6023 2006-12-19 Timothy Hatcher <timothy@apple.com>
6027 <rdar://problem/4891774> Local WebCore/WebBrowser builds fail in 9A328 due to warning about ObjC-2.0 language features
6029 * JavaScriptCore.xcodeproj/project.pbxproj:
6031 2006-12-17 Simon Hausmann <hausmann@kde.org>
6035 * kjs/testkjs.pro: Oops, make it also build on machines other than
6038 2006-12-17 Simon Hausmann <hausmann@kde.org>
6040 Reviewed by Rob Buis.
6042 * kjs/testkjs.pro: Added .pro file to build testkjs.
6044 2006-12-16 Alexey Proskuryakov <ap@webkit.org>
6048 A deleted object was accessed to prepare RegExp construction error messages.
6050 * kjs/regexp_object.cpp:
6051 (RegExpObjectImp::construct): Wrap the RegExp into an OwnPtr.
6053 2006-12-16 Mitz Pettel <mitz@webkit.org>
6057 - fix http://bugs.webkit.org/show_bug.cgi?id=11814
6058 REGRESSION(r18098): Find does not work with capital letters
6060 Test: editing/execCommand/findString-3.html
6062 * wtf/unicode/icu/UnicodeIcu.h:
6063 (WTF::Unicode::foldCase): Changed to not return an error if the result fits
6064 in the buffer without a null terminator.
6066 2006-12-13 Maciej Stachowiak <mjs@apple.com>
6070 - added equality and inequality operations for HashMap and Vector, useful for comparing more complex types
6079 2006-12-12 Alexey Proskuryakov <ap@webkit.org>
6081 Reviewed by Geoff. Based on a patch by Maks Orlovich.
6083 http://bugs.webkit.org/show_bug.cgi?id=6257
6084 Throw errors on invalid expressions (KJS merge)
6087 (KJS::RegExp::RegExp):
6088 (KJS::RegExp::~RegExp):
6089 (KJS::RegExp::match):
6091 (KJS::RegExp::flags):
6092 (KJS::RegExp::isValid):
6093 (KJS::RegExp::errorMessage):
6094 (KJS::RegExp::subPatterns):
6095 Remember and report RegExp construction failures. Renamed data members not to start with underscores.
6097 * kjs/regexp_object.cpp:
6098 (RegExpObjectImp::construct): Raise an exception if RegExp construction fails.
6099 (RegExpObjectImp::callAsFunction): Removed an obsolete comment.
6101 * tests/mozilla/ecma_3/RegExp/regress-119909.js: Reduced the number of nested parentheses to
6102 a value supported by PCRE.
6104 2006-12-11 Alexey Proskuryakov <ap@webkit.org>
6108 http://bugs.webkit.org/show_bug.cgi?id=9673
6109 Add support for window.atob() and window.btoa()
6111 * JavaScriptCore.exp: Export UString::is8Bit().
6112 * JavaScriptCore.xcodeproj/project.pbxproj: Added StringExtras.h as
6115 2006-12-11 Darin Adler <darin@apple.com>
6119 * JavaScriptCore.xcodeproj/project.pbxproj: Let Xcode update this
6120 (I think Hyatt is using an old Xcode).
6122 2006-12-11 David Hyatt <hyatt@apple.com>
6124 Fix the failing layout test. Just remove Unicode::isSpace and
6125 revert StringImpl to do the same thing it was doing before.
6129 * wtf/unicode/icu/UnicodeIcu.h:
6130 * wtf/unicode/qt4/UnicodeQt4.h:
6132 2006-12-09 George Staikos <staikos@kde.org>
6136 Fix bison again on qmake build.
6138 * JavaScriptCore.pro:
6140 2006-12-09 Lars Knoll <lars@trolltech.com>
6144 Make it possible to build WebKit with qmake.
6146 * JavaScriptCore.pro: Added.
6147 * kjs/kjs.pro: Removed.
6148 * pcre/pcre.pri: Added.
6150 2006-12-09 Zack Rusin <zack@kde.org>
6152 Fixing the compilation with platform kde after the icu changes.
6156 2006-12-09 Adam Roben <aroben@apple.com>
6160 Some updates in reaction to r18098.
6162 * wtf/unicode/icu/UnicodeIcu.h: Use !! to convert UBool to bool in all
6164 (WTF::Unicode::toLower):
6165 (WTF::Unicode::toUpper):
6166 (WTF::Unicode::isDigit):
6167 (WTF::Unicode::isSpace):
6168 (WTF::Unicode::isPunct):
6169 (WTF::Unicode::isLower):
6170 (WTF::Unicode::isUpper):
6171 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
6172 * JavaScriptCore.vcproj/WTF/WTF.vcproj:
6174 2006-12-09 George Staikos <staikos@kde.org>
6176 Patch by Lars Knoll, comment out ICU dependency on Qt platform (unused code).
6180 * bindings/c/c_utility.cpp:
6181 (KJS::Bindings::convertUTF8ToUTF16):
6183 2006-12-08 David Hyatt <hyatt@apple.com>
6185 Land the new ICU abstraction layer. Patch by Lars.
6189 * JavaScriptCore.xcodeproj/project.pbxproj:
6191 * wtf/unicode/UnicodeCategory.h: Removed.
6192 * wtf/unicode/UnicodeDecomposition.h: Removed.
6193 * wtf/unicode/UnicodeDirection.h: Removed.
6194 * wtf/unicode/icu/UnicodeIcu.h:
6196 (WTF::Unicode::foldCase):
6197 (WTF::Unicode::toLower):
6198 (WTF::Unicode::toUpper):
6199 (WTF::Unicode::toTitleCase):
6200 (WTF::Unicode::isDigit):
6201 (WTF::Unicode::isSpace):
6202 (WTF::Unicode::isPunct):
6203 (WTF::Unicode::mirroredChar):
6204 (WTF::Unicode::category):
6205 (WTF::Unicode::direction):
6206 (WTF::Unicode::isLower):
6207 (WTF::Unicode::isUpper):
6208 (WTF::Unicode::digitValue):
6209 (WTF::Unicode::combiningClass):
6210 (WTF::Unicode::decompositionType):
6211 (WTF::Unicode::strcasecmp):
6212 (WTF::Unicode::memset):
6213 * wtf/unicode/qt4/UnicodeQt4.cpp: Removed.
6214 * wtf/unicode/qt4/UnicodeQt4.h:
6216 (WTF::Unicode::toLower):
6217 (WTF::Unicode::toUpper):
6218 (WTF::Unicode::toTitleCase):
6219 (WTF::Unicode::foldCase):
6220 (WTF::Unicode::isPrintableChar):
6221 (WTF::Unicode::isLower):
6222 (WTF::Unicode::isUpper):
6223 (WTF::Unicode::digitValue):
6224 (WTF::Unicode::combiningClass):
6225 (WTF::Unicode::decompositionType):
6226 (WTF::Unicode::strcasecmp):
6227 (WTF::Unicode::memset):
6228 (WTF::Unicode::direction):
6229 (WTF::Unicode::category):
6231 === Safari-521.32 ===
6233 2006-12-08 Adam Roben <aroben@apple.com>
6237 This is a mo' better fix for ensuring we don't use macro definitions
6243 2006-12-07 Kevin Fyure <digdog@macports.org>
6247 http://bugs.webkit.org/show_bug.cgi?id=11545
6248 Disable the testcases do not follow the ECMA-262v3 specification.
6250 * tests/mozilla/expected.html: Update Results.
6251 * tests/mozilla/js1_2/String/concat.js:
6252 4 tests disabled. The result of concat Array object is not followinig
6254 * tests/mozilla/js1_2/function/Number.js:
6255 1 test disabled. The result of Array object to Number object conversion
6256 is not following ECMA 9.3. And the test was duplicated in
6257 ecma/TypeConversion/9.3-1.js
6258 * tests/mozilla/js1_2/function/String.js:
6259 2 tests disabled. The result of Object/Array object to String object
6260 conversion is not following ECMA 15.5.1.1 and ECMA 9.8
6262 2006-11-30 Steve Falkenburg <sfalken@apple.com>
6266 Move WTF from JavaScriptCore project into a new WTF project.
6268 * JavaScriptCore.vcproj/JavaScriptCore.sln: Add WTF.vcproj to sln
6269 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: Remove WTF source files
6270 * JavaScriptCore.vcproj/WTF/WTF.vcproj: Added.
6271 * JavaScriptCore.vcproj/testkjs/testkjs.vcproj: Add dependency on WTF.lib
6273 2006-11-30 Geoffrey Garen <ggaren@apple.com>
6275 Reviewed by Beth Dakin.
6277 Fixed up garbage collection at window close time.
6279 * kjs/interpreter.cpp:
6280 (KJS::Interpreter::~Interpreter): Garbage collect here, since
6281 destroying the interpreter frees the global object and
6282 therefore creates a lot of garbage.
6284 2006-11-20 W. Andy Carrel <wac@google.com>
6288 http://bugs.webkit.org/show_bug.cgi?id=11501
6289 REGRESSION: \u no longer escapes metacharacters in RegExps
6290 http://bugs.webkit.org/show_bug.cgi?id=11502
6291 Serializing RegExps doesn't preserve Unicode escapes
6297 (Lexer::scanRegExp):
6298 Push \u parsing back down into the RegExp object rather than in the
6299 parser. This backs out r17354 in favor of a new fix that better
6300 matches the behavior of other browsers.
6304 (KJS::RegExp::RegExp):
6305 (KJS::sanitizePattern):
6308 (KJS::convertUnicode):
6310 Translate \u escaped unicode characters for the benefit of pcre.
6313 (KJS::UString::append):
6314 Fix failure to increment length on the first UChar appended to a
6315 UString that was copy-on-write.
6317 * tests/mozilla/ecma_2/RegExp/properties-001.js:
6318 Adjust tests back to the uniform standards.
6320 2006-11-20 Samuel Weinig <sam@webkit.org>
6324 Fix for http://bugs.webkit.org/show_bug.cgi?id=11647
6327 * kjs/config.h: define NOMINMAX instead of min/max
6329 * wtf/Vector.h: put back hack to ensure that min/max
6330 are not defined as macros.
6332 2006-11-19 Simon Hausmann <hausmann@kde.org>
6336 http://bugs.webkit.org/show_bug.cgi?id=11649
6337 Fix CMake Qt-only build without KDE CMake files
6340 * pcre/CMakeLists.txt:
6342 2006-11-17 Anders Carlsson <acarlsson@apple.com>
6346 Make sure that we always use std::min and std::max instead of macros.
6348 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
6352 === Safari-521.31 ===
6354 2006-11-12 Geoffrey Garen <ggaren@apple.com>
6356 Reviewed by Beth Dakin.
6358 Added project-wide setting to disable Microsoft's made-up deprecation
6359 warnings related to std:: functions. (Doesn't have any affect yet,
6360 since we currently disable all deprecation warnings.)
6362 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
6364 2006-11-12 Mark Rowe <bdash@webkit.org>
6368 Clean up of JavaScriptCore bakefiles.
6370 * JavaScriptCoreSources.bkl:
6373 2006-11-11 Alexey Proskuryakov <ap@webkit.org>
6377 http://bugs.webkit.org/show_bug.cgi?id=11508
6378 Undisable some warnings for JSImmediate.h
6380 Fix suggested by Don Gibson.
6382 * kjs/JSImmediate.h:
6383 Re-enable all MSVC warnings, move the remaining runtime checks
6386 2006-11-10 Zalan Bujtas <zalan.bujtas@nokia.com>
6390 Added s60/symbian platform defines.
6391 http://bugs.webkit.org/show_bug.cgi?id=11540
6395 === Safari-521.30 ===
6397 2006-11-08 Ada Chan <adachan@apple.com>
6401 Added a method to delete all the keys in a HashMap.
6404 (WTF::deleteAllPairFirsts):
6405 (WTF::deleteAllKeys):
6407 2006-11-07 Anders Carlsson <acarlsson@apple.com>
6411 * API/JSClassRef.cpp:
6412 (OpaqueJSClass::OpaqueJSClass):
6413 Initialize cachedPrototype to 0.
6415 2006-11-06 Krzysztof Kowalczyk <kkowalczyk@gmail.com>
6419 Remove warning about garbage after #else. #else clause applies for all
6420 non-mac platforms, not only win.
6422 * kjs/date_object.cpp:
6424 2006-11-06 Mark Rowe <bdash@webkit.org>
6426 Reviewed by the wonderful Mitz Pettel.
6428 http://bugs.webkit.org/show_bug.cgi?id=11524
6429 Bug 11524: REGRESSION(r9842): Array.prototype.join should use ToString operator rather than calling toString on each element
6431 * kjs/array_object.cpp:
6432 (ArrayProtoFunc::callAsFunction): Use ToString operator on each element rather than calling their toString method.
6434 2006-11-03 Steve Falkenburg <sfalken@apple.com>
6438 * kjs/JSImmediate.h:
6440 2006-11-03 Alexey Proskuryakov <ap@nypop.com>
6444 http://bugs.webkit.org/show_bug.cgi?id=11504
6445 Fix warnings on non 32 bit platforms
6447 * kjs/JSImmediate.h:
6448 (KJS::JSImmediate::NanAsBits):
6449 (KJS::JSImmediate::oneAsBits):
6450 Rewrite in a way that moves runtime checks to compile-time.
6453 (KJS::JSImmediate::fromDouble):
6454 (KJS::JSImmediate::toDouble):
6456 2006-11-02 George Staikos <staikos@kde.org>
6461 Remove a deprecated pthreads call.
6463 2006-11-02 Anders Carlsson <acarlsson@apple.com>
6465 Reviewed by Maciej, landed by Anders.
6468 Make KDE support optional.
6470 2006-11-01 Kevin McCullough <KMcCullough@apple.com>
6474 - 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.
6477 (KJS::equivalentYearForDST):
6478 (KJS::getDSTOffsetSimple):
6479 (KJS::getDSTOffset):
6481 2006-10-31 Geoffrey Garen <ggaren@apple.com>
6485 Fixed http://bugs.webkit.org/show_bug.cgi?id=11477
6486 REGRESSION: GMail crashes in KJS::FunctionImp::callerGetter
6489 (KJS::FunctionImp::argumentsGetter): Removed unnecessary braces.
6490 (KJS::FunctionImp::callerGetter): More logical NULL checking.
6492 2006-10-31 Oliver Hunt <oliver@apple.com>
6496 Adding definition for PLATFORM(CI)
6500 2006-10-31 Vladimir Olexa <vladimir.olexa@gmail.com>
6504 http://bugs.webkit.org/show_bug.cgi?id=4166
6505 Function object does not support caller property
6507 Test: fast/js/caller-property.html
6510 (KJS::FunctionImp::callerGetter): added
6511 (KJS::FunctionImp::getOwnPropertySlot): added if statement to handle callerGetter()
6512 * kjs/function.h: added callerGetter() declaration
6513 * kjs/identifier.h: added caller property macro
6514 * tests/mozilla/expected.html:
6516 2006-10-30 Kevin McCullough <KMcCullough@apple.com>
6520 - Fix some timezone issues and JavaScriptCore date tests. Addresses bugzilla 4930.
6523 (KJS::GregorianDateTime::GregorianDateTime): Here's the fix, to add parenthesis for order of precedence.
6524 * kjs/date_object.cpp:
6525 (KJS::DateProtoFunc::callAsFunction):
6526 (KJS::DateObjectImp::construct): memset not needed as GregorianDateTime initializes itself.
6528 2006-10-30 Darin Adler <darin@apple.com>
6530 Reviewed by John Sullivan.
6532 * kjs/SavedBuiltins.h: Added needed include.
6533 * wtf/OwnPtr.h: (WTF::OwnPtr::set): Fixed mistake in assertion.
6535 2006-10-28 Darin Adler <darin@apple.com>
6539 - renamed PassRefPtr::release to releaseRef to make it clearer that
6540 it's the counterpart of adoptRef, and to make it harder to confuse
6541 it with the safer-to-use RefPtr::release
6543 * kjs/identifier.cpp:
6544 (KJS::CStringTranslator::translate):
6545 (KJS::UCharBufferTranslator::translate):
6547 (KJS::UString::Rep::create):
6549 (WTF::PassRefPtr::PassRefPtr):
6550 (WTF::PassRefPtr::~PassRefPtr):
6551 (WTF::PassRefPtr::get):
6552 (WTF::PassRefPtr::releaseRef):
6553 (WTF::PassRefPtr::operator->):
6554 (WTF::PassRefPtr::operator=):
6556 (WTF::static_pointer_cast):
6557 (WTF::const_pointer_cast):
6559 (WTF::RefPtr::RefPtr):
6560 (WTF::RefPtr::operator=):
6562 2006-10-28 Darin Adler <darin@apple.com>
6566 * kjs/grammar.y: Add definitions of YYMALLOC and YYFREE to fix
6567 a warning some people see (not sure why others don't see it).
6569 * JavaScriptCore.vcproj/JavaScriptCore/grammarWrapper.cpp: Touch
6570 this file to force it to re-build grammar.cpp.
6572 2006-10-28 Darin Adler <darin@apple.com>
6576 - made changes so the code compiles with the highest warning level
6577 under MSVC (disabling some warnings, making some code fixes)
6579 * API/JSCallbackConstructor.cpp:
6580 (KJS::JSCallbackConstructor::construct):
6581 * API/JSCallbackFunction.cpp:
6582 (KJS::JSCallbackFunction::callAsFunction):
6583 * API/JSCallbackObject.cpp:
6584 (KJS::JSCallbackObject::init):
6585 (KJS::JSCallbackObject::construct):
6586 (KJS::JSCallbackObject::callAsFunction):
6587 * API/JSObjectRef.cpp:
6588 (JSPropertyNameArrayGetNameAtIndex):
6589 * API/JSStringRef.cpp:
6590 (JSStringCreateWithCharacters):
6591 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
6592 * bindings/c/c_utility.cpp:
6593 (KJS::Bindings::convertUTF8ToUTF16):
6594 (KJS::Bindings::coerceValueToNPVariantStringType):
6595 (KJS::Bindings::convertValueToNPVariant):
6597 (KJS::GregorianDateTime::GregorianDateTime):
6599 (KJS::ExecState::hadException):
6600 * kjs/JSImmediate.h:
6601 (KJS::JSImmediate::fromDouble):
6602 (KJS::JSImmediate::toDouble):
6603 (KJS::JSImmediate::NanAsBits):
6604 (KJS::JSImmediate::oneAsBits):
6606 * kjs/PropertyNameArray.h:
6607 (KJS::PropertyNameArray::size):
6608 * kjs/array_object.cpp:
6609 (ArrayObjectImp::callAsFunction):
6610 * kjs/bool_object.cpp:
6611 (BooleanObjectImp::callAsFunction):
6612 * kjs/collector.cpp:
6613 (KJS::Collector::allocate):
6614 (KJS::Collector::markCurrentThreadConservatively):
6615 (KJS::Collector::collect):
6617 (KJS::Completion::isValueCompletion):
6618 * kjs/date_object.cpp:
6621 (Debugger::sourceParsed):
6622 (Debugger::sourceUnused):
6623 (Debugger::exception):
6624 (Debugger::atStatement):
6625 (Debugger::callEvent):
6626 (Debugger::returnEvent):
6628 * kjs/error_object.cpp:
6629 (ErrorObjectImp::callAsFunction):
6630 (NativeErrorImp::callAsFunction):
6632 (KJS::FunctionImp::processVarDecls):
6633 (KJS::GlobalFuncImp::callAsFunction):
6634 * kjs/function_object.cpp:
6635 (FunctionPrototype::callAsFunction):
6637 * kjs/identifier.cpp:
6638 (KJS::CStringTranslator::translate):
6639 (KJS::Identifier::add):
6643 (Lexer::isIdentStart):
6644 (Lexer::isIdentPart):
6646 (Lexer::isHexDigit):
6647 (Lexer::isOctalDigit):
6648 (Lexer::matchPunctuator):
6649 (Lexer::singleEscape):
6650 (Lexer::convertOctal):
6651 (Lexer::convertHex):
6652 (Lexer::convertUnicode):
6655 * kjs/math_object.cpp:
6656 (MathFuncImp::callAsFunction):
6657 * kjs/number_object.cpp:
6658 (integer_part_noexp):
6660 (NumberProtoFunc::callAsFunction):
6661 (NumberObjectImp::callAsFunction):
6663 (KJS::JSObject::deleteProperty):
6664 (KJS::JSObject::callAsFunction):
6665 (KJS::JSObject::toBoolean):
6666 (KJS::JSObject::toObject):
6668 (KJS::JSObject::getPropertySlot):
6669 * kjs/property_map.cpp:
6671 (KJS::PropertyMap::put):
6672 (KJS::PropertyMap::insert):
6673 (KJS::PropertyMap::containsGettersOrSetters):
6674 * kjs/property_map.h:
6675 (KJS::PropertyMap::hasGetterSetterProperties):
6676 * kjs/property_slot.h:
6677 * kjs/string_object.cpp:
6678 (StringInstance::getPropertyNames):
6679 (StringObjectImp::callAsFunction):
6680 (StringObjectFuncImp::callAsFunction):
6682 (KJS::UString::Rep::computeHash):
6683 (KJS::UString::UString):
6684 (KJS::UString::from):
6685 (KJS::UString::append):
6686 (KJS::UString::ascii):
6687 (KJS::UString::operator=):
6688 (KJS::UString::find):
6689 (KJS::UString::rfind):
6693 (KJS::UCharReference::low):
6694 (KJS::UCharReference::high):
6696 (KJS::JSValue::toUInt16):
6698 * pcre/pcre_compile.c:
6699 (get_othercase_range):
6702 * pcre/pcre_internal.h:
6703 * wtf/HashFunctions.h:
6705 (WTF::PtrHash::hash):
6710 * wtf/StringExtras.h:
6712 * wtf/unicode/icu/UnicodeIcu.h:
6713 (WTF::Unicode::isPrintableChar):
6715 2006-10-26 W. Andy Carrel <wac@google.com>
6719 - Fix http://bugs.webkit.org/show_bug.cgi?id=7445 /
6720 <rdar://problem/4614195> (and 7253 / <rdar://4694011>) by changing
6721 inline regexps so that they can have \u escaped Unicode sequences and
6722 still work properly.
6727 (Lexer::shift): Looking ahead one additional character for the benefit
6729 (Lexer::scanRegExp): Change code to support unicode escapes in inline
6731 * kjs/lexer.h: Extra lookahead added.
6733 === Safari-521.29 ===
6735 2006-10-26 Nikolas Zimmermann <zimmermann@kde.org>
6739 Fix build with older gcc 3.3.4.
6741 * kjs/DateMath.cpp: Remove inline prefix.
6742 (KJS::equivalentYearForDST):
6744 2006-10-26 Darin Adler <darin@apple.com>
6748 - fix iteration of properties of string objects (found because of a warning
6749 emitted by the MSVC compiler)
6751 * kjs/string_object.cpp: (StringInstance::getPropertyNames): Change code that
6752 wants to format a number as a string to use UString::from. Before it was using
6753 the UString constructor that makes a string from a character!
6756 * kjs/ustring.cpp: Remove the dangerous and not all that helpful UString(char)
6759 * kjs/grammar.y: Change code to not depend on the UString(char) constructor.
6760 This is potentially more efficient anyway because we could overload the + operator
6761 some day to handle char* directly instead of creating a UString.
6763 * kjs/nodes2string.cpp: (SourceStream::operator<<): Change code to not depend on
6764 the UString(char) constructor.
6766 2006-10-25 Kevin McCullough <KMcCullough@apple.com>
6768 Reviewed by Steve (rubber stamp).
6770 - Link against your local build of JavaScriptCore.lib first, this fixes some errors on release builds of testkjs.
6772 * JavaScriptCore.vcproj/testkjs/testkjs.vcproj:
6774 2006-10-25 Geoffrey Garen <ggaren@apple.com>
6778 Removed duplicate symbol declaration.
6780 * JavaScriptCore.xcodeproj/project.pbxproj:
6783 2006-10-24 Steve Falkenburg <sfalken@apple.com>
6787 * JavaScriptCore.vcproj/testkjs/testkjs.vcproj:
6789 2006-10-24 Kevin McCullough <KMcCullough@apple.com>
6793 - 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.
6795 * kjs/date_object.cpp:
6797 (KJS::formatLocaleDate):
6798 (KJS::DateProtoFunc::callAsFunction):
6800 2006-10-23 Kevin McCullough <KMcCullough@apple.com>
6806 * JavaScriptCore.xcodeproj/project.pbxproj:
6809 2006-10-23 Kevin McCullough <KMcCullough@apple.com>
6813 - Makes the toTM function an operator. Was going to piggy back on a patch but the patch needs more work.
6816 (KJS::equivalentYearForDST):
6818 (KJS::GregorianDateTime::operator tm):
6819 * kjs/date_object.cpp:
6821 (KJS::DateProtoFunc::callAsFunction):
6823 2006-10-23 Kevin McCullough <KMcCullough@apple.com>
6827 - 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).
6832 2006-10-21 Steve Falkenburg <sfalken@apple.com>
6836 Add minimal compatibility with MSVCRT leak checker
6840 2006-10-23 Kevin McCullough <KMcCullough@apple.com>
6844 - Sets the lowercase range correctly in the test and consolidates a variable to make the test more readable.
6846 * tests/mozilla/ecma/String/15.5.4.11-2.js:
6848 2006-10-21 Darin Adler <darin@apple.com>
6852 - http://bugs.webkit.org/show_bug.cgi?id=11377
6853 swap(Vector, Vector) should be O(1) instead of O(n)
6856 (WTF::VectorBuffer::swap): Added.
6857 (WTF::Vector::swap): Added.
6858 (WTF::swap): Added overload that takes two Vector objects.
6860 2006-10-21 Darin Adler <darin@apple.com>
6864 - http://bugs.webkit.org/show_bug.cgi?id=11376
6865 build scripts should invoke make with "-j" option for multiple processors
6867 * JavaScriptCore.xcodeproj/project.pbxproj: Pass -j `sysctl -n hw.ncpu` to make.
6869 2006-10-19 Kevin McCullough <KMcCullough@apple.com>
6873 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.
6874 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.
6876 * tests/mozilla/ecma/String/15.5.4.11-2.js:
6878 2006-10-18 Maciej Stachowiak <mjs@apple.com>
6882 - remove vestiges of KXMLCore name (former name of WTF).
6889 (operator delete[]):
6890 * wtf/FastMallocInternal.h:
6893 * wtf/HashCountedSet.h:
6894 * wtf/HashFunctions.h:
6901 * wtf/Noncopyable.h:
6902 * wtf/OwnArrayPtr.h:
6907 * wtf/StringExtras.h:
6909 * wtf/UnusedParam.h:
6911 * wtf/VectorTraits.h:
6913 2006-10-17 Steve Falkenburg <sfalken@apple.com>
6917 Adjust include paths
6919 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
6921 2006-10-17 Kevin McCullough <KMcCullough@apple.com>
6925 Fixed a date issue where the UTC offset was not set in win.
6928 (KJS::getDSTOffsetSimple):
6929 (KJS::getDSTOffset):
6930 (KJS::msToGregorianDateTime):
6933 (KJS::GregorianDateTime::GregorianDateTime):
6935 2006-10-17 Kevin McCullough <KMcCullough@apple.com>
6939 Fixes a JavaScriptCore math issue on win.
6941 * kjs/math_object.cpp:
6942 (MathFuncImp::callAsFunction):
6946 2006-10-16 Kevin McCullough <kmccullough@apple.com>
6950 Removed unecessary global specifiers.
6952 * kjs/math_object.cpp:
6953 (MathFuncImp::callAsFunction):
6955 2006-10-16 Kevin McCullough <KMcCullough@apple.com>
6959 Fixes a compile order issue for testkjs on win.
6961 * JavaScriptCore.vcproj/testkjs/testkjs.vcproj:
6963 2006-10-15 Krzysztof Kowalczyk <kkowalczyk@gmail.com>
6967 Remove junk (as gcc calls it) after #else clause.
6969 * wtf/FastMalloc.cpp:
6972 2006-10-14 Krzysztof Kowalczyk <kkowalczyk@gmail.com>
6976 Define KXMLCORE_USE_CURL for platforms that wish to use CURL as
6977 networking, and set it for GDK build
6981 2006-10-13 Brett Wilson <brettw@google.com>
6983 Reviewed by Kevin McCullough.
6985 Fixes http://bugs.webkit.org/show_bug.cgi?id=11283
6986 Fixes Qt/Linux and Windows build
6990 * kjs/date_object.cpp:
6991 (KJS::DateProtoFunc::callAsFunction):
6993 2006-10-13 Kevin McCullough <KMcCullough@apple.com>
6995 Reviewed by Adam, Geoff, Darin.
6997 Fixed displaying the UTC offset and time zone string, as well as renamed the GregorianDateTime structure and clean up.
7001 (KJS::getUTCOffset):
7002 (KJS::getDSTOffsetSimple):
7003 (KJS::gregorianDateTimeToMS):
7004 (KJS::msToGregorianDateTime):
7006 (KJS::GregorianDateTime::GregorianDateTime):
7007 (KJS::GregorianDateTime::~GregorianDateTime):
7008 (KJS::GregorianDateTime::toTM):
7009 * kjs/date_object.cpp:
7012 (KJS::formatDateUTCVariant):
7014 (KJS::fillStructuresUsingTimeArgs):
7015 (KJS::fillStructuresUsingDateArgs):
7016 (KJS::DateInstance::getTime):
7017 (KJS::DateInstance::getUTCTime):
7018 (KJS::DateProtoFunc::callAsFunction):
7019 (KJS::DateObjectImp::construct):
7020 (KJS::DateObjectImp::callAsFunction):
7021 (KJS::DateObjectFuncImp::callAsFunction):
7023 * kjs/date_object.h:
7025 2006-10-13 Kevin McCullough <KMcCullough@apple.com>
7029 Gets JavaScripCore tests running on windows.
7031 * Scripts/run-javascriptcore-tests:
7032 * Scripts/webkitdirs.pm:
7034 2006-10-12 Geoffrey Garen <ggaren@apple.com>
7038 Removed JSObjectMakeWithPrototype, clarified some comments. We really
7039 don't want people to manage their own prototypes, so we don't want an
7040 extra function in the API devoted to just that. People can still manage
7041 their own prototypes if they really want by using JSObjectSetPrototype.
7043 * API/JSClassRef.cpp:
7044 (OpaqueJSClass::createNoAutomaticPrototype):
7045 (OpaqueJSClass::create):
7047 * API/JSObjectRef.cpp:
7050 * API/JSObjectRef.h:
7053 * JavaScriptCore.exp:
7055 2006-10-12 Kevin McCullough <KMcCullough@apple.com>
7063 * kjs/date_object.cpp:
7066 2006-10-11 Kevin McCullough <KMcCullough@apple.com>
7070 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.
7074 (KJS::getUTCOffset):
7075 (KJS::getDSTOffsetSimple):
7081 * kjs/date_object.cpp:
7084 (KJS::DateProtoFunc::callAsFunction):
7085 (KJS::DateObjectImp::construct):
7086 (KJS::DateObjectImp::callAsFunction):
7087 (KJS::DateObjectFuncImp::callAsFunction):
7089 * kjs/date_object.h:
7091 2006-10-09 Krzysztof Kowalczyk <kkowalczyk@gmail.com>
7095 Improve gdk build compiler flags (show warning, no rtti and exceptions).
7099 2006-10-06 Kevin McCullough <KMcCullough@apple.com>
7103 DST and TimeZones were wrong in some cases, specifically on some of the dates where DST changes.
7106 (KJS::equivalentYearForDST):
7107 (KJS::getUTCOffset):
7108 (KJS::getDSTOffsetSimple):
7109 (KJS::getDSTOffset):
7110 (KJS::dateToMseconds):
7113 * kjs/date_object.cpp:
7116 2006-10-05 Darin Adler <darin@apple.com>
7118 Reviewed by Kevin McCullough.
7120 * wtf/Assertions.cpp: Fix build when _DEBUG is not defined.
7122 2006-10-04 Kevin McCullough <KMcCullough@apple.com>
7126 - 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.
7129 (KJS::getUTCOffset):
7131 * kjs/date_object.cpp:
7135 2006-10-04 Geoffrey Garen <ggaren@apple.com>
7137 Patch by Darin and me, reviewed by Maciej.
7139 Fixed <rdar://problem/4518397> REGRESSION(?): Oft-seen but unrepro crash
7140 in JavaScript garbage collection (KJS::Collector::collect())
7141 <rdar://problem/4752492> Crash in KJS::collect
7143 The issue here was allocating one garbage-collected object in the midst
7144 of allocating a second garbage-collected object. In such a case, the
7145 zeroIfFree word lies.
7147 * kjs/collector.cpp:
7148 (KJS::Collector::allocate):
7149 (KJS::Collector::collect):
7151 2006-10-04 Kevin McCullough <KMcCullough@apple.com>
7158 (KJS::dateToDayInYear): accept and correctly handle negative months
7160 2006-10-05 Kevin McCullough <KMcCullough@apple.com>
7165 (KJS::dateToDayInYear):
7167 2006-10-05 Mark Rowe <bdash@webkit.org>
7169 Reviewed by maculloch.
7173 * JavaScriptCoreSources.bkl: Add DateMath.cpp to file list.
7175 2006-10-05 Kevin McCullough <KMcCullough@apple.com>
7181 * JavaScriptCore.xcodeproj/project.pbxproj:
7183 2006-10-04 Nikolas Zimmermann <zimmermann@kde.org>
7187 Fix Qt/Linux build by adding DateMath.cpp to compilation.
7189 * CMakeLists.txt: Also replace tabs with spaces.
7191 2006-10-04 Kevin McCullough <KMcCullough@apple.com>
7193 Reviewed by DethBakin.
7195 - 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.
7200 (KJS::dateToDayInYear):
7202 2006-10-05 Darin Adler <darin@apple.com>
7206 * wtf/Assertions.cpp: Changed assertion formatting to omit the "======"
7207 lines so you can see more assertions in less space. Also improved format
7208 of file/line information so it works with more development environments.
7210 2006-10-04 Kevin McCullough <KMcCullough@apple.com>
7214 - The build machine is more sensitive about automatic conversions. These fixes exp
7215 licitly cast or change the input and return types of functions to avoid conversions.
7217 * JavaScriptCore.xcodeproj/project.pbxproj:
7223 (KJS::monthToDayInYear):
7224 (KJS::dateToDayInYear):
7225 (KJS::getDSTOffsetSimple):
7226 (KJS::getDSTOffset):
7227 (KJS::dateToMseconds):
7230 2006-10-04 Kevin McCullough <KMcCullough@apple.com>
7234 - 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.
7236 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
7237 * JavaScriptCore.xcodeproj/project.pbxproj:
7238 * kjs/DateMath.cpp: Added.
7241 (KJS::daysFrom1970ToYear):
7242 (KJS::msFrom1970ToYear):
7246 (KJS::isInLeapYear):
7248 (KJS::msToMilliseconds):
7254 (KJS::msToDayInMonth):
7255 (KJS::monthToDayInYear):
7256 (KJS::timeToMseconds):
7257 (KJS::dateToDayInYear):
7258 (KJS::equivalentYearForDST):
7259 (KJS::getUTCOffset):
7260 (KJS::getDSTOffsetSimple):
7261 (KJS::getDSTOffset):
7262 (KJS::localTimeToUTC):
7263 (KJS::UTCToLocalTime):
7264 (KJS::dateToMseconds):
7267 * kjs/DateMath.h: Added.
7269 * kjs/date_object.cpp:
7272 (KJS::DateInstance::getTime):
7273 (KJS::DateInstance::getUTCTime):
7274 (KJS::DateProtoFunc::callAsFunction):
7275 (KJS::DateObjectImp::construct):
7276 (KJS::DateObjectFuncImp::callAsFunction):
7279 * os-win32/stdint.h:
7281 2006-10-02 Nikolas Zimmermann <zimmermann@kde.org>
7283 Reviewed/landed by Adam.
7285 Build testkjs on Qt/Linux.
7289 2006-10-02 Nikolas Zimmermann <zimmermann@kde.org>
7291 Reviewed by eseidel. Landed by eseidel.
7293 Fix win32 build, which has no inttypes.h
7297 2006-10-02 Nikolas Zimmermann <zimmermann@kde.org>
7299 Reviewed by eseidel & mjs. Landed by eseidel.
7301 Fix Qt/Linux build with older gcc 3.3.4.
7302 http://bugs.webkit.org/show_bug.cgi?id=11116
7304 * kjs/lookup.h: Move cacheGlobalObject into KJS namespace.
7305 (KJS::cacheGlobalObject): Also remove GCC_ROOT_NS_HACK.
7306 * wtf/Assertions.h: Include inttypes.h for uintptr_t.
7308 2006-09-28 Steve Falkenburg <sfalken@apple.com>
7312 Use $(ConfigSuffix) set via vsprops files to add _debug
7313 to end of debug filenames.
7315 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
7316 * JavaScriptCore.vcproj/debug.vsprops: Added.
7317 * JavaScriptCore.vcproj/dftables/dftables.vcproj:
7318 * JavaScriptCore.vcproj/release.vsprops: Added.
7319 * JavaScriptCore.vcproj/testkjs/testkjs.vcproj:
7321 2006-09-28 Darin Adler <darin@apple.com>
7325 - support for change that should fix <rdar://problem/4733044>
7326 REGRESSION: XML iBench shows 10% perf. regression (copying
7327 strings while decoding)
7329 * wtf/Vector.h: Changed VectorBuffer so that the general case
7330 contains an instance of the 0 case, since deriving from it
7331 was violating the Liskov Substitution Principle.
7332 (WTF::VectorBuffer::releaseBuffer): Added. Releases the buffer so it can
7333 be adopted by another data structure that uses the FastMalloc.h allocator.
7334 Returns 0 if the internal buffer was being used.
7335 (WTF::Vector::releaseBuffer): Added. Releases the buffer as above or creates
7336 a new one in the case where the internal buffer was being used.
7338 2006-09-28 Maciej Stachowiak <mjs@apple.com>
7342 - change garbage collection to happen at increments proportional to number of live objects, not always
7343 every 1000 allocations
7345 * kjs/collector.cpp:
7346 (KJS::Collector::allocate):
7348 2006-09-28 Maciej Stachowiak <mjs@apple.com>
7352 - fixed REGRESSION (r16606): javascriptCore Crash on website load
7356 - fixed some possible off-by-one bugs
7357 - use indexing, not iterators, for Vectors
7358 - store Vector by pointer instead of by value to avoid blowing out FunctionImp size
7361 (KJS::FunctionImp::addParameter):
7362 (KJS::FunctionImp::parameterString):
7363 (KJS::FunctionImp::processParameters):
7364 (KJS::FunctionImp::lengthGetter):
7365 (KJS::FunctionImp::getParameterName):
7368 2006-09-27 Steve Falkenburg <sfalken@apple.com>
7374 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
7375 * JavaScriptCore.vcproj/JavaScriptCore/dstroot-to-sdk.cmd: Removed.
7377 2006-09-27 John Sullivan <sullivan@apple.com>
7380 (KJS::FunctionImp::getParameterName):
7381 removed assertion that displeased gcc 4.0.1 (build 5420):
7382 ASSERT(static_cast<size_t>(index) == index);
7384 2006-09-27 Kevin McCullough <KMcCullough@apple.com>
7388 Cleanup of previous fix which was to address Radar: 4752492
7391 (KJS::FunctionImp::addParameter):
7392 (KJS::FunctionImp::parameterString):
7393 (KJS::FunctionImp::processParameters):
7394 (KJS::FunctionImp::lengthGetter):
7395 (KJS::FunctionImp::getParameterName):
7398 2006-09-27 Kevin McCullough <KMcCullough@apple.com>
7402 Fixes a GC stack overflow crash.
7403 The change is to move from a linked list implementation of Parameters to a Vector.
7404 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.
7407 (KJS::Parameter::Parameter):
7408 (KJS::FunctionImp::addParameter):
7409 (KJS::FunctionImp::parameterString):
7410 (KJS::FunctionImp::processParameters):
7411 (KJS::FunctionImp::lengthGetter):
7412 (KJS::FunctionImp::getParameterName):
7415 2006-09-27 Steve Falkenburg <sfalken@apple.com>
7419 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
7421 2006-09-27 Steve Falkenburg <sfalken@apple.com>
7423 Set path before build.
7425 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
7427 2006-09-27 Sean Gies <seangies@apple.com>
7429 Reviewed by Adam Roben.
7431 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: Debug config should link to debug runtime.
7432 * JavaScriptCore.vcproj/dftables/dftables.vcproj: Debug config should link to debug runtime.
7434 2006-09-27 Don Melton <gramps@apple.com>
7436 Reviewed by Adam Roben.
7438 Changed line ending from DOS to UNIX format so it doesn't die running
7441 * JavaScriptCore.vcproj/JavaScriptCore/build-generated-files.sh:
7443 2006-09-23 Alexey Proskuryakov <ap@nypop.com>
7447 http://bugs.webkit.org/show_bug.cgi?id=10183
7448 REGRESSION: obfuscated JS decoding breaks because of soft hyphen removal
7449 (Fanfiction.net author pages not listing stories)
7451 Rolled out the fix for bug 4139.
7456 * tests/mozilla/ecma/Array/15.4.5.1-1.js:
7457 * tests/mozilla/expected.html:
7459 2006-09-22 Steve Falkenburg <sfalken@apple.com>
7463 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
7465 2006-09-22 Darin Adler <darin@apple.com>
7469 * wtf/Vector.h: Add an append that takes a pointer and length.
7470 Generalize the existing Vector append to work on vectors with
7471 any value for inlineCapacity. Change the append algorithm so
7472 it doesn't check capacity each time through the loop.
7474 2006-09-22 Steve Falkenburg <sfalken@apple.com>
7478 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
7480 2006-09-21 Geoffrey Garen <ggaren@apple.com>
7484 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
7485 Updated to include the right path.
7486 * wtf/FastMalloc.h: #include Platform.h, since we use Platform macros.
7488 === Safari-521.27 ===
7490 2006-09-20 Anders Carlsson <acarlsson@apple.com>
7492 Reviewed by Dave Hyatt.
7497 2006-09-20 Sean Gies <seangies@apple.com>
7499 Reviewed by Steve Falkenburg.
7501 * wtf/Assertions.cpp: Debug messages should go into debugger console.
7503 2006-09-20 David Hyatt <hyatt@apple.com>
7505 Add an implementation of lrint for Win32.
7512 2006-09-15 Krzysztof Kowalczyk <kkowalczyk@gmail.com>
7516 http://bugs.webkit.org/show_bug.cgi?id=10864
7517 Bug 10864: Linux\GDK build fixes
7519 * JavaScriptCoreSources.bkl:
7522 2006-09-15 Adam Roben <aroben@apple.com>
7526 * JavaScriptCore.vcproj/JavaScriptCore/build-generated-files.sh:
7528 2006-09-15 Anders Carlsson <acarlsson@apple.com>
7530 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
7531 Fix the release build.
7533 2006-09-15 Anders Carlsson <acarlsson@apple.com>
7537 Add JavaScriptCore API to the build.
7539 * API/JSCallbackConstructor.cpp:
7540 * API/JSCallbackFunction.cpp:
7541 * API/JSCallbackObject.cpp:
7542 * API/JSClassRef.cpp:
7543 * API/JSContextRef.cpp:
7544 * API/JSObjectRef.cpp:
7545 * API/JSStringRef.cpp:
7546 * API/JSValueRef.cpp:
7547 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
7548 * os-win32/stdbool.h: Added.
7550 2006-09-12 Steve Falkenburg <sfalken@apple.com>
7554 Build tweaks (doing JavaScriptCore now since it doesn't have
7557 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
7558 * JavaScriptCore.vcproj/JavaScriptCore/build-generated-files.sh:
7559 * JavaScriptCore.vcproj/JavaScriptCore/dstroot-to-sdk.cmd: Added.
7560 * JavaScriptCore.vcproj/dftables/dftables.vcproj:
7561 * JavaScriptCore.vcproj/testkjs/testkjs.vcproj:
7563 2006-09-11 Brady Eidson <beidson@apple.com>
7565 Build fix - I think Tim's last checkin wasn't tested on Tiger, possibly. I simply
7566 commented out the undefined constants until he can have a chance to make the right call
7568 * bindings/objc/objc_utility.mm:
7569 (KJS::Bindings::objcValueTypeForType): Commented out undefined symbols
7571 2006-09-11 Timothy Hatcher <timothy@apple.com>
7573 Reviewed by Tim O. and Darin.
7575 Add support for more method signatures affecting ObjC methods called from JavaScript:
7576 - Added unsigned types and long long.
7577 - Allow methods that use const, oneway, bycopy and byref type modifiers.
7579 * bindings/objc/objc_instance.mm:
7580 (ObjcInstance::invokeMethod):
7581 * bindings/objc/objc_utility.h:
7583 * bindings/objc/objc_utility.mm:
7584 (KJS::Bindings::convertValueToObjcValue):
7585 (KJS::Bindings::convertObjcValueToValue):
7586 (KJS::Bindings::objcValueTypeForType):
7588 2006-09-05 Timothy Hatcher <timothy@apple.com>
7592 <rdar://problem/4715840> SEL is not char*
7594 * bindings/objc/objc_class.mm:
7595 (KJS::Bindings::ObjcClass::methodsNamed): use sel_getName instead of a char* cast.
7596 * bindings/objc/objc_runtime.mm:
7597 (ObjcFallbackObjectImp::callAsFunction): ditto
7599 2006-09-03 Alexey Proskuryakov <ap@nypop.com>
7603 http://bugs.webkit.org/show_bug.cgi?id=10693
7604 Convert JavaScript arrays to AppleScript lists
7606 * JavaScriptCore.exp: Export ArrayInstance::info and ArrayInstance::getItem().
7607 * kjs/array_instance.h:
7608 * kjs/array_object.cpp:
7609 (ArrayInstance::getItem): Added a method to access array items from C++.
7611 2006-09-02 Krzysztof Kowalczyk <kkowalczyk@gmail.com>
7615 Bug 10454: Unix bakefile fixes
7616 http://bugs.webkit.org/show_bug.cgi?id=10454
7618 * JavaScriptCoreSources.bkl:
7620 2006-09-01 Nikolas Zimmermann <zimmermann@kde.org>
7622 Reviewed by hyatt. Landed by eseidel.
7626 * pcre/CMakeLists.txt: Add wtf/ include.
7628 2006-09-01 Nikolas Zimmermann <zimmermann@kde.org>
7630 Reviewed and landed by ap.
7632 Fix build on Linux (C89 without gcc extensions enabled).
7634 * pcre/pcre_internal.h: Use C style comments.
7635 * wtf/Assertions.h: Use C style comments.
7636 * wtf/Platform.h: Use C style comments.
7638 2006-09-01 Steve Falkenburg <sfalken@apple.com>
7642 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
7643 * JavaScriptCore.vcproj/dftables/dftables.vcproj:
7645 2006-08-31 Anders Carlsson <acarlsson@apple.com>
7649 Add new portability functions to MathExtras.h and add StringExtras.h which is for
7650 string portability functions.
7652 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
7653 * bindings/c/c_instance.cpp:
7654 * kjs/date_object.cpp:
7658 * wtf/StringExtras.h: Added.
7662 2006-08-31 Anders Carlsson <acarlsson@apple.com>
7668 * JavaScriptCore.vcproj/dftables/dftables.vcproj:
7669 * pcre/pcre_internal.h:
7671 2006-08-31 Timothy Hatcher <timothy@apple.com>
7675 Band-aid fix for PCRE to compile for ppc64 and x86_64 now that
7676 we use -Wshorten-64-to-32. Adds an INT_CAST macro that ASSERTs
7677 the value <= INT_MAX.
7679 I filed <rdar://problem/4712064> to track the need to verify
7680 PCRE's 64-bit compliance.
7682 * pcre/pcre_compile.c:
7691 (pcre_get_substring_list):
7692 * pcre/pcre_internal.h:
7693 * pcre/pcre_tables.c:
7694 * pcre/pcre_try_flipped.c:
7695 (_pcre_try_flipped):
7697 2006-08-30 Darin Adler <darin@apple.com>
7699 Reviewed by Tim Hatcher.
7701 - add WTF::getPtr, a function template that makes it possible to write
7702 generic code that gets a raw pointer out of any of our pointer types
7704 * JavaScriptCore.xcodeproj/project.pbxproj:
7705 * wtf/GetPtr.h: Added.
7706 * wtf/ListRefPtr.h: (WTF::getPtr): Added.
7707 * wtf/OwnArrayPtr.h: (WTF::getPtr): Added.
7708 * wtf/OwnPtr.h: (WTF::getPtr): Added.
7709 * wtf/PassRefPtr.h: (WTF::getPtr): Added.
7710 * wtf/RefPtr.h: (WTF::getPtr): Added.
7712 2006-08-29 waylonis <waylonis@google.com>
7714 Reviewed, tweaked by ggaren.
7716 - Added storage and accessor functions for ExecState as a fix for
7717 http://bugs.webkit.org/show_bug.cgi?id=10114
7719 * kjs/ExecState.cpp:
7720 (KJS::ExecState::ExecState):
7723 (KJS::Context::setExecState):
7724 (KJS::Context::execState):
7726 2006-08-30 Nikolas Zimmermann <zimmermann@kde.org>
7730 Commit KDE related tweaks, to be able to
7731 differentiate between a Qt-only or a KDE build.
7733 * CMakeLists.txt: Install wtf-unity library.
7734 * wtf/Platform.h: Add define for the KDE platform.
7736 2006-08-28 Darin Adler <darin@apple.com>
7740 * kjs/list.h: Use explicit in constructor (as appropriate).
7742 2006-08-24 Nikolas Zimmermann <zimmermann@kde.org>
7744 Reviewed, tweaked and landed by ap
7746 http://bugs.webkit.org/show_bug.cgi?id=10467
7747 WebKit should have Qt platform support (Part II)
7749 * CMakeLists.txt: Adjust to Anders' build fixes.
7750 * wtf/Platform.h: Fix define for the Qt platform (we don't use/need Cairo.)
7752 2006-08-23 David Hyatt <hyatt@apple.com>
7754 Fix Platform.h to include #defines for graphics features.
7758 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
7761 2006-08-23 Anders Carlsson <acarlsson@apple.com>
7765 Make the bindings compile without CoreFoundation.
7767 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
7768 * bindings/c/c_instance.cpp:
7769 * bindings/c/c_utility.cpp:
7770 (KJS::Bindings::convertUTF8ToUTF16):
7772 * bindings/runtime.cpp:
7773 (KJS::Bindings::Instance::createBindingForLanguageInstance):
7774 (KJS::Bindings::Instance::createLanguageInstanceForValue):
7775 * bindings/runtime_root.cpp:
7776 * bindings/runtime_root.h:
7777 * kjs/interpreter.cpp:
7778 (KJS::Interpreter::createLanguageInstanceForValue):
7779 * kjs/interpreter.h:
7781 2006-08-22 Anders Carlsson <acarlsson@apple.com>
7785 Move the npruntime code over to using HashMap and the runtime_root code over to using
7786 HashMap and HashCountedSet.
7788 * bindings/NP_jsobject.cpp:
7789 * bindings/c/c_utility.cpp:
7790 (KJS::Bindings::identifierFromNPIdentifier):
7791 * bindings/c/c_utility.h:
7792 * bindings/jni/jni_jsobject.cpp:
7793 (JavaJSObject::invoke):
7794 * bindings/npruntime.cpp:
7795 (getStringIdentifierMap):
7796 (getIntIdentifierMap):
7797 (_NPN_GetStringIdentifier):
7798 (_NPN_GetIntIdentifier):
7799 * bindings/runtime_root.cpp:
7800 (getReferencesByRootMap):
7802 (KJS::Bindings::findReferenceSet):
7803 (KJS::Bindings::rootForImp):
7804 (KJS::Bindings::rootForInterpreter):
7805 (KJS::Bindings::addNativeReference):
7806 (KJS::Bindings::removeNativeReference):
7807 (RootObject::removeAllNativeReferences):
7808 * bindings/runtime_root.h:
7810 2006-08-22 Anders Carlsson <acarlsson@apple.com>
7814 Switch over the NPAPI and Java bindings to using HashMaps instead of dictionaries.
7816 * JavaScriptCore.xcodeproj/project.pbxproj:
7817 * bindings/c/c_class.cpp:
7818 (KJS::Bindings::CClass::CClass):
7819 (KJS::Bindings::CClass::~CClass):
7820 (KJS::Bindings::CClass::classForIsA):
7821 (KJS::Bindings::CClass::methodsNamed):
7822 (KJS::Bindings::CClass::fieldNamed):
7823 * bindings/c/c_class.h:
7824 * bindings/jni/jni_class.cpp:
7825 (JavaClass::JavaClass):
7826 (JavaClass::~JavaClass):
7827 (JavaClass::methodsNamed):
7828 (JavaClass::fieldNamed):
7829 * bindings/jni/jni_class.h:
7830 * bindings/objc/objc_class.h:
7831 * bindings/objc/objc_class.mm:
7832 (KJS::Bindings::deleteMethod):
7833 (KJS::Bindings::deleteField):
7835 (KJS::Bindings::ObjcClass::methodsNamed):
7836 (KJS::Bindings::ObjcClass::fieldNamed):
7837 * bindings/runtime.cpp:
7838 * bindings/runtime.h:
7839 * bindings/runtime_object.cpp:
7840 (RuntimeObjectImp::fieldGetter):
7841 (RuntimeObjectImp::getOwnPropertySlot):
7842 (RuntimeObjectImp::put):
7843 (RuntimeObjectImp::canPut):
7845 2006-08-21 Vladimir Olexa <vladimir.olexa@gmail.com>
7849 http://bugs.webkit.org/show_bug.cgi?id=6252
7850 JavaScript 1.6 Array.lastIndexOf
7852 Test: fast/js/array-lastIndexOf.html
7854 * kjs/array_object.cpp:
7855 (ArrayProtoFunc::callAsFunction): Added a LastIndexOf case.
7856 * kjs/array_object.h:
7857 (KJS::ArrayProtoFunc::): Added LastIndexOf to enum.
7858 * tests/mozilla/expected.html: Two more tests now pass.
7860 2006-08-20 Nikolas Zimmermann <zimmermann@kde.org>
7862 Reviewed by Maciej. Landed by rwlbuis.
7864 Fixes parts of: http://bugs.webkit.org/show_bug.cgi?id=10463
7865 WebKit should have Qt platform support
7867 Removing obsolete QConstString/QString constructors in kjs code.
7872 2006-08-17 Nikolas Zimmermann <zimmermann@kde.org>
7874 Reviewed by Maciej. Landed by rwlbuis.
7876 Fixes: http://bugs.webkit.org/show_bug.cgi?id=10463
7877 WTF Changes needed for Qt platform code.
7880 * wtf/unicode/UnicodeDecomposition.h: Added.
7882 * wtf/unicode/UnicodeDirection.h: Added.
7884 * wtf/unicode/qt4/UnicodeQt4.cpp: Added.
7885 (WTF::Unicode::direction):
7886 (WTF::Unicode::category):
7887 (WTF::Unicode::decomposition):
7888 * wtf/unicode/qt4/UnicodeQt4.h:
7889 (WTF::Unicode::toLower):
7890 (WTF::Unicode::toUpper):
7891 (WTF::Unicode::isPrintableChar):
7892 (WTF::Unicode::isSpace):
7893 (WTF::Unicode::isPunct):
7894 (WTF::Unicode::isDigit):
7895 (WTF::Unicode::mirroredChar):
7896 (WTF::Unicode::compare):
7898 2006-08-17 Nikolas Zimmermann <zimmermann@kde.org>
7900 Reviewed by Eric. Landed by rwlbuis.
7902 Fixes: http://bugs.webkit.org/show_bug.cgi?id=10464
7903 Offer a cmake build system for Qt platform.
7905 * CMakeLists.txt: Added.
7906 * pcre/CMakeLists.txt: Added.
7908 2006-08-17 Anders Carlsson <acarlsson@apple.com>
7915 2006-08-15 Steve Falkenburg <sfalken@apple.com>
7921 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
7924 2006-08-15 Mark Rowe <opendarwin.org@bdash.net.nz>
7928 Build fix: DWARF and -gfull are incompatible with symbol separation.
7930 * JavaScriptCore.xcodeproj/project.pbxproj:
7932 2006-08-15 Mark Rowe <opendarwin.org@bdash.net.nz>
7936 http://bugs.webkit.org/show_bug.cgi?id=10394
7937 Bug 10394: WebKit Release and Production configurations should enable dead code stripping
7939 * JavaScriptCore.xcodeproj/project.pbxproj:
7941 2006-08-15 Mark Rowe <opendarwin.org@bdash.net.nz>
7945 http://bugs.webkit.org/show_bug.cgi?id=10384
7946 Bug 10384: Switch to DWARF for Release configuration
7948 * JavaScriptCore.xcodeproj/project.pbxproj:
7950 2006-08-13 Maks Orlovich <maksim@kde.org>
7952 Reviewed (and tweaked a little) by Maciej.
7954 - shrank the size of JSObject by 8 bytes and made the corresponding reduction to the cell size, resulting
7955 in a 1.2% speed improvement on JS iBench (and probably overall memory savings).
7957 This was done by removing _scope and _internalValue data members
7958 from JSObject and moving them only to the subclasses that actually
7962 (KJS::JSObject::mark): No need to mark scope or internal value here.
7964 (KJS::JSObject::JSObject): Don't initialize them.
7965 * kjs/JSWrapperObject.cpp: Added. New base class for object types that
7966 wrap primitive values (Number, String, Boolean, Date).
7967 (KJS::JSWrapperObject::mark):
7968 * kjs/JSWrapperObject.h: Added.
7969 (KJS::JSWrapperObject::JSWrapperObject):
7970 (KJS::JSWrapperObject::internalValue):
7971 (KJS::JSWrapperObject::setInternalValue):
7972 * kjs/array_object.cpp:
7973 (ArrayPrototype::ArrayPrototype): Don't set useless internal value.
7974 * kjs/bool_object.cpp:
7975 (BooleanInstance::BooleanInstance): Inherit from JSWrapperObject.
7976 (BooleanProtoFunc::callAsFunction): Fixed to account for fact that not all
7977 JSObjects have an internal value.
7978 (BooleanObjectImp::construct): ditto.
7979 * kjs/bool_object.h:
7980 * kjs/collector.cpp: Lowered cell size to 48.
7981 (KJS::Collector::allocate): meaningless whitespace change
7982 * kjs/date_object.cpp:
7983 (KJS::DateInstance::DateInstance): Inherit from JSWrapperObject.
7984 (KJS::DateProtoFunc::callAsFunction): adjusted for move of internalValue
7985 (KJS::DateObjectImp::construct): ditto
7986 * kjs/date_object.h:
7987 * kjs/error_object.cpp:
7988 (ErrorPrototype::ErrorPrototype): don't set internal value
7989 * kjs/function.cpp: move _scope and related handling here
7990 (KJS::FunctionImp::mark): mark scope
7992 (KJS::FunctionImp::scope): moved here from JSObject
7993 (KJS::FunctionImp::setScope): ditto
7994 * kjs/number_object.cpp:
7995 (NumberInstance::NumberInstance): inherit from JSWrapperObject
7996 (NumberProtoFunc::callAsFunction): adjusted
7997 (NumberObjectImp::construct): adjusted
7998 * kjs/number_object.h: shring RegExp-related objects a little
7999 * kjs/regexp_object.cpp:
8000 (RegExpPrototype::RegExpPrototype): Adjust for size tweaks
8001 (RegExpObjectImp::RegExpObjectImp): ditto
8002 * kjs/regexp_object.h:
8003 * kjs/string_object.cpp:
8004 (StringInstance::StringInstance): inherit from JSWrapperObject
8005 (StringProtoFunc::callAsFunction): adjusted
8006 * kjs/string_object.h:
8007 * JavaScriptCore.exp: Exported new methods as needed.
8008 * JavaScriptCore.xcodeproj/project.pbxproj: Added new files to build.
8010 2006-08-04 Brady Eidson <beidson@apple.com>
8012 Reviewed by Geoff's rubber stamp
8014 Fix a build break on Intel hardware causes by adapting stricter
8015 compiler warnings (-Wshorten-64-to-32)
8018 (assertEqualsAsNumber): manually cast some doubles to floats
8021 2006-08-04 Sam Weinig <sam.weinig@gmail.com>
8025 - patch for http://bugs.webkit.org/show_bug.cgi?id=10192
8026 Make WebCore (and friends) compile with -Wshorten-64-to-32
8028 * Adds -Wshorten-64-to-32 flag to Xcode project.
8029 * Adds explicit casts where OK.
8033 (JSNodeList_getProperty):
8034 * JavaScriptCore.xcodeproj/project.pbxproj:
8036 2006-08-04 Adam Roben <aroben@apple.com>
8040 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: Convert
8043 2006-08-03 Sam Weinig <sam.weinig@gmail.com>
8047 - patch for http://bugs.webkit.org/show_bug.cgi?id=10176
8048 Make WebCore compile with -Wundef
8050 * Adds -Wundef flag to Xcode project
8051 * Converts #ifs to #ifdef and #ifndefs where needed.
8052 * Added #define YYMAXDEPTH 10000 in kjs/grammar.y
8053 to fix a warning from within Bison.
8055 * JavaScriptCore.xcodeproj/project.pbxproj:
8056 * bindings/jni/jni_jsobject.cpp:
8057 (JavaJSObject::getSlot):
8058 (JavaJSObject::setSlot):
8060 * bindings/objc/objc_class.mm:
8061 (KJS::Bindings::ObjcClass::methodsNamed):
8062 (KJS::Bindings::ObjcClass::fieldNamed):
8063 * bindings/objc/objc_instance.mm:
8064 (ObjcInstance::invokeMethod):
8065 * bindings/objc/objc_runtime.mm:
8066 (ObjcMethod::getMethodSignature):
8072 2006-08-03 Anders Carlsson <acarlsson@apple.com>
8074 Reviewed by John Sullivan.
8078 Return *this in operator=
8080 2006-08-03 Adam Roben <aroben@apple.com>
8084 - Fixed Windows build
8086 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
8087 * wtf/MathExtras.h: Implement inline versions of these functions
8091 2006-08-02 Adam Roben <aroben@apple.com>
8097 * kjs/date_object.cpp:
8100 2006-07-29 Darin Adler <darin@apple.com>
8102 - Removed tabs from these source files that still had them.
8103 We don't use them; that way source files look fine in editors
8104 that have tabs set to 8 spaces or to 4 spaces.
8105 - Removed allow-tabs Subversion property from the files too.
8107 * bindings/NP_jsobject.cpp:
8108 * bindings/c/c_utility.cpp:
8109 * bindings/jni/jni_runtime.cpp:
8110 * bindings/jni/jni_utility.cpp:
8111 * bindings/objc/objc_utility.mm:
8112 * bindings/runtime.cpp:
8113 * bindings/runtime_method.cpp:
8114 * bindings/testbindings.cpp:
8115 * bindings/testbindings.mm:
8116 * kjs/date_object.cpp:
8121 * kjs/string_object.cpp:
8124 2006-07-29 Darin Adler <darin@apple.com>
8126 * tests/mozilla/expected.html: Update test results now that regress-185165.js
8127 is succeeding. I suspect Anders fix for bug 4620655 is the reason.
8129 2006-07-29 Sam Weinig <sam.weinig@gmail.com>
8133 - patch for http://bugs.webkit.org/show_bug.cgi?id=10080
8134 Adopt pedantic changes from the Unity project to improve
8135 cross-compiler compatibility
8138 * Removing trailing semicolon from namespace braces.
8139 * Removing trailing comma from last enum declaration.
8140 * Updating to match style guidelines.
8141 * Adding missing newline to the end of the file.
8142 * Turning on gcc warning for missing newline at the end of a source file
8143 (GCC_WARN_ABOUT_MISSING_NEWLINE in Xcode, -Wnewline in gcc).
8144 * Alphabetical sorting of Xcode source list files.
8145 * Replace use of non-portable variable-size array with Vector.
8146 * Use C-style comments instead of C++ comments in files that might
8147 be included by either C or C++ files.
8149 * API/JSCallbackConstructor.cpp:
8150 (KJS::JSCallbackConstructor::construct):
8151 * API/JSCallbackFunction.cpp:
8152 (KJS::JSCallbackFunction::callAsFunction):
8153 * API/JSCallbackObject.cpp:
8154 (KJS::JSCallbackObject::construct):
8155 (KJS::JSCallbackObject::callAsFunction):
8156 * JavaScriptCore.xcodeproj/project.pbxproj:
8157 * JavaScriptCorePrefix.h:
8158 * bindings/jni/jni_class.cpp:
8159 (JavaClass::fieldNamed):
8160 * bindings/jni/jni_class.h:
8161 * bindings/jni/jni_instance.cpp:
8162 (JavaInstance::JavaInstance):
8163 (JavaInstance::valueOf):
8164 * bindings/jni/jni_objc.mm:
8165 (KJS::Bindings::dispatchJNICall):
8166 * bindings/jni/jni_runtime.cpp:
8167 (JavaParameter::JavaParameter):
8168 (JavaArray::JavaArray):
8169 * bindings/jni/jni_runtime.h:
8170 * bindings/jni/jni_utility.h:
8171 * bindings/objc/objc_instance.h:
8172 * bindings/runtime_array.h:
8178 2006-07-29 Mike Emmel <mike.emmel@gmail.com>
8182 - fixes for Linux build
8184 * JavaScriptCoreSources.bkl: Added new files to build, kjs/PropertyNameArray.cpp
8185 and kjs/testkjs.cpp, and removed old files.
8187 2006-07-24 Dan Waylonis <waylonis@google.com>
8189 Reviewed and tweaked a bit by Darin.
8191 - fix http://bugs.webkit.org/show_bug.cgi?id=9902
8192 jsNull and NSNull not properly converted between JS and ObjC
8194 * bindings/objc/objc_utility.mm: (KJS::Bindings::convertObjcValueToValue):
8195 Added case for converting NSNull to jsNull.
8197 2006-07-24 Rob Buis <buis@kde.org>
8201 http://bugs.webkit.org/show_bug.cgi?id=4258
8202 Date().toString() only includes GMT offset, not timezone string
8204 Use the info in tm_zone to append timezone abbreviation
8205 to Date().toString().
8207 * kjs/date_object.cpp:
8210 2006-07-24 Rob Buis <buis@kde.org>
8214 http://bugs.webkit.org/show_bug.cgi?id=5257
8215 setYear() does not match FireFox/IE behavior
8217 Make sure the right values end up in tm_year.
8219 * kjs/date_object.cpp:
8222 2006-07-23 Mark Rowe <opendarwin.org@bdash.net.nz>
8226 Bug 9686: [Drosera] Need the ability to break into Drosera on Javascript exceptions
8227 http://bugs.webkit.org/show_bug.cgi?id=9686
8229 JavaScriptCore portion of the fix.
8231 * JavaScriptCore.exp: Update symbol for change in argument type.
8233 (Debugger::detach): Clear map of recent exceptions.
8234 (Debugger::hasHandledException): Track the most recent exception
8235 thrown by an interpreter.
8236 (Debugger::exception): Change exception argument to a JSValue.
8239 (Node::debugExceptionIfNeeded): Notify the debugger of an exception
8240 if it hasn't seen it before.
8241 (ThrowNode::execute): Notify the debugger that an exception is being thrown.
8244 2006-07-23 Geoffrey Garen <ggaren@apple.com>
8246 Patch by Eric Albert, reviewed by Darin and me.
8248 - Fixed <rdar://problem/4645931> JavaScriptCore stack-scanning code
8249 crashes (Collector::markStackObjectsConservatively)
8251 * bindings/jni/jni_jsobject.cpp: On 64bit systems, jint is a long, not an
8253 (JavaJSObject::getSlot):
8254 (JavaJSObject::setSlot):
8255 * kjs/collector.cpp:
8256 (KJS::Collector::markCurrentThreadConservatively): Use a pointer instead of
8257 an int as 'dummy,' because on LP64 systems, an int is not pointer-aligned,
8258 and we want to scan the stack for pointers.
8259 * JavaScriptCore.xcodeproj/project.pbxproj: After a tense cease-fire, the
8260 XCode war has started up again!
8262 === Safari-521.20 ===
8264 2006-07-21 Geoffrey Garen <ggaren@apple.com>
8268 <rdar://problem/4507265> REGRESSION: overlays don't work on HousingMaps.com (Google Maps-based site)
8270 - Added support for strings that masquerade as undefined. Currently used
8271 by WebCore to implement undetectable style.filter.
8273 The name is a little long, but it's only used in one line of code, so I
8274 thought clarity should win over brevity.
8276 * JavaScriptCore.exp:
8277 * JavaScriptCore.xcodeproj/project.pbxproj:
8279 * kjs/string_object.h:
8280 (KJS::StringInstanceThatMasqueradesAsUndefined::StringInstanceThatMasqueradesAsUndefined):
8281 (KJS::StringInstanceThatMasqueradesAsUndefined::masqueradeAsUndefined):
8282 (KJS::StringInstanceThatMasqueradesAsUndefined::toBoolean):
8284 === Safari-521.19 ===
8286 2006-07-20 Steve Falkenburg <sfalken@apple.com>
8291 (KJS::escapeStringForPrettyPrinting):
8293 2006-07-19 Anders Carlsson <acarlsson@apple.com>
8297 <rdar://problem/4620655> REGRESSION(10.4.7-10.5): preview button for a blogger.com post doesn't work
8299 * kjs/nodes2string.cpp:
8300 (StringNode::streamTo):
8301 Return the escaped string.
8303 (RegExpNode::streamTo):
8304 Use the correct syntax.
8307 (KJS::escapeStringForPrettyPrinting):
8309 Add escape function which escapes a string for pretty-printing so it can be parsed again.
8311 * wtf/unicode/icu/UnicodeIcu.h:
8312 (WTF::Unicode::isPrintableChar):
8315 2006-07-18 Maciej Stachowiak <mjs@apple.com>
8317 Reviewed by Adele Peterson.
8319 <rdar://problem/4589530> REGRESSION: null character in JS string causes parse error (works in Tiger and in other browsers)
8325 (Lexer::scanRegExp):
8328 2006-07-18 Tim Omernick <timo@apple.com>
8330 Reviewed by Tim Hatcher.
8332 Removed a misleading comment; we recently added support for the NPNVPluginElementNPObject
8337 === Safari-521.18 ===
8339 2006-07-18 Timothy Hatcher <timothy@apple.com>
8341 Made the following headers public:
8350 * JavaScriptCore.xcodeproj/project.pbxproj:
8352 2006-07-17 Geoffrey Garen <ggaren@apple.com>
8356 - Added automatic prototype creation for classes.
8358 A class stores a weak reference to a prototype, which is cleared when
8359 the prototype is garbage collected, to avoid a reference cycle.
8361 We now have an attributes field in JSClassDefinition, that currently is
8362 used only to override automatic prototype creation when you want to manage your
8363 own prototypes, but can be extended in the future for other nefarious purposes.
8365 Similarly, we have JSObjectMake and JSObjectMakeWithPrototype, the latter
8366 allowing you to manage your own prototypes.
8368 JSObjectMakeConstructor is more interesting now, able to make a constructor
8369 on your behalf if you just give it a class.
8371 - Removed bogus old code from minidom.js.
8373 - Tweaked the headerdocs.
8375 - Added more GC testing, which caught some leaks, and tested more funny
8376 edge cases in lookup, which caught a lookup bug. Removed some testing
8377 we used to do with MyObject because it was redundant with the new, cool
8380 While fixing the lookup bug I retracted this change:
8382 "If a static setProperty callback returns 'false', to indicate that the
8383 property was not set, we no longer forward the set request up the class
8384 chain, because that's almost certainly not what the programmer expected."
8386 Returning false when setting a static property is a little silly, but you can see
8387 it being useful when shadowing a base class's static properties, and, regardless
8388 of usefullness, this is the defined behavior of the setProperty callback.
8390 - Plus a little ASCII art, for the kids.
8392 2006-07-17 Timothy Hatcher <timothy@apple.com>
8396 <rdar://problem/4634874> WebScriptObject and WebUndefined are no longer defined by WebKit
8398 Moves WebScriptObject and WebUndefined up to WebCore.
8399 This change does create an upwards-dependancy on WebScriptObject existing
8400 in the loaded process, but this code path in JavaScriptCore does not get used
8401 unless it is through WebKit/WebCore. Moving all of the binding code out of
8402 JavaScriptCore might make sense in the future.
8404 * JavaScriptCore.exp:
8405 * JavaScriptCore.xcodeproj/project.pbxproj:
8406 * bindings/objc/WebScriptObject.h: Replaced.
8407 * bindings/objc/WebScriptObject.mm: Removed.
8408 * bindings/objc/WebScriptObjectPrivate.h: Removed.
8409 * bindings/objc/objc_class.h:
8410 * bindings/objc/objc_instance.h:
8411 * bindings/objc/objc_instance.mm:
8412 (ObjcInstance::~ObjcInstance):
8413 * bindings/objc/objc_runtime.h:
8414 * bindings/objc/objc_runtime.mm:
8415 (convertValueToObjcObject):
8416 * bindings/objc/objc_utility.mm:
8417 (KJS::Bindings::convertValueToObjcValue):
8418 (KJS::Bindings::convertObjcValueToValue):
8419 (KJS::Bindings::createObjcInstanceForValue):
8421 2006-07-17 Darin Adler <darin@apple.com>
8423 * API/JSBase.h: Fix comment formatting where things used to be lined up but
8424 are now ragged. Got rid of spaces that attempted to line things up.
8425 * API/JSObjectRef.h: Ditto. Also add missing periods for a couple of comments.
8427 2006-07-17 Geoffrey Garen <ggaren@apple.com>
8431 - Removed the exception parameter from the initialize callback and, by extension,
8432 JSObjectMake. We have never had a need for exceptions when iniitializing,
8433 so the parameter seemed likely to "get in the way."
8435 Also, an exception in JavaScript is thrown in response to input --
8436 "invalid URL", "index not a number", etc., so it's the job of the
8437 constructor function, not the initialize method, to throw.
8439 If initialize *really* wants to throw, it can communicate the throw to
8440 the constructor through the constructed object's private data (e.g., set
8441 it to NULL, signaling to the consntructor that initialization failed.)
8443 - Added JSObjectMakeWithData, which enables a constructor to set private
8444 data on an object *before* it has been initialized. That way, the initialize
8445 methods can properly operate on the data.
8447 * API/JSNode.c: Moved ref into the initialize method, for better encapsulation,
8448 now that it's possible.
8449 * API/JSNodeList.c: ditto
8451 (main): Do more aggressive garbage collection to test ref/deref and
8452 initialize/finalize.
8453 * API/minidom.js: store childNodes in a temporary so it doesn't get re-created
8454 like a thousand times. This makes debugging ref/deref easier
8456 2006-07-17 Geoffrey Garen <ggaren@apple.com>
8460 - Changed the initialize callback to run from least derived class (parent
8461 class) to most derived class. This enables C++ style initialization,
8462 and derived class overriding of member data.
8464 - Added excpetion propopgation to JSObjectMake, to support initialize
8465 exceptions, and generally round out our policy of making function
8466 signatures as long as possible.
8468 * API/JSCallbackObject.h: Use ExecState instead of ContextRef, cuz we're
8471 2006-07-17 Geoffrey Garen <ggaren@apple.com>
8475 - Changed JSObjectMakeConstructor to JSObjectMakeConstructorWithCallback,
8476 to match JSObjectMakeFunctionWithCallback.
8478 - Added prototype parameter, so the generated constructor
8479 automatically works with hasInstance / instanceof
8481 - Moved hasInstance implementation from InternalFunctionImp to JSObject
8482 so that subclasses can inherit it without inheriting function-related baggage.
8483 More refactoring here would be good, but this seems like a good short-term
8486 (KJS::JSCallbackFunction::implementsHasInstance): override and return false,
8487 because callback functions aren't constructors.
8489 2006-07-17 Maciej Stachowiak <mjs@apple.com>
8493 - add a JSContextRef parameter to all JSValueRef, JSObjectRef, and JSContextRef operations;
8494 except JSObject{Get,Set}PrivateData which can be assumed to be simple pure accessors.
8496 Also renamed the parameter "context" to "ctx" because it makes the code read better with this pervasive
8497 but usually uninteresting parameter.
8501 (JSCheckScriptSyntax):
8504 * API/JSCallbackObject.cpp:
8505 (KJS::JSCallbackObject::JSCallbackObject):
8506 (KJS::JSCallbackObject::init):
8507 (KJS::JSCallbackObject::getOwnPropertySlot):
8508 (KJS::JSCallbackObject::put):
8509 (KJS::JSCallbackObject::deleteProperty):
8510 (KJS::JSCallbackObject::toNumber):
8511 (KJS::JSCallbackObject::toString):
8512 * API/JSContextRef.cpp:
8513 (JSGlobalContextCreate):
8514 (JSGlobalContextRetain):
8515 (JSGlobalContextRelease):
8516 (JSContextGetGlobalObject):
8517 * API/JSContextRef.h:
8519 (JSNodePrototype_appendChild):
8520 (JSNodePrototype_removeChild):
8521 (JSNodePrototype_replaceChild):
8522 (JSNode_getNodeType):
8523 (JSNode_getFirstChild):
8526 (JSNodeListPrototype_item):
8527 (JSNodeList_length):
8528 (JSNodeList_getProperty):
8529 (JSNodeList_prototype):
8530 * API/JSObjectRef.cpp:
8532 (JSObjectMakeFunctionWithCallback):
8533 (JSObjectMakeConstructor):
8534 (JSObjectMakeFunction):
8535 (JSObjectGetPrototype):
8536 (JSObjectSetPrototype):
8537 (JSObjectHasProperty):
8538 (JSObjectGetProperty):
8539 (JSObjectSetProperty):
8540 (JSObjectGetPropertyAtIndex):
8541 (JSObjectSetPropertyAtIndex):
8542 (JSObjectDeleteProperty):
8543 (JSObjectIsFunction):
8544 (JSObjectCallAsFunction):
8545 (JSObjectIsConstructor):
8546 (JSObjectCallAsConstructor):
8547 (JSObjectCopyPropertyNames):
8548 * API/JSObjectRef.h:
8549 * API/JSStringRef.cpp:
8550 * API/JSValueRef.cpp:
8552 (JSValueIsUndefined):
8558 (JSValueIsObjectOfClass):
8560 (JSValueIsStrictEqual):
8561 (JSValueIsInstanceOfConstructor):
8562 (JSValueMakeUndefined):
8564 (JSValueMakeBoolean):
8565 (JSValueMakeNumber):
8566 (JSValueMakeString):
8569 (JSValueToStringCopy):
8577 (MyObject_getProperty):
8578 (MyObject_deleteProperty):
8579 (MyObject_callAsFunction):
8580 (MyObject_callAsConstructor):
8581 (MyObject_convertToType):
8582 (print_callAsFunction):
8585 2006-07-16 Geoffrey Garen <ggaren@apple.com>
8587 Approved by Maciej, RS by Beth.
8589 JSObjectMakeFunction -> JSObjectMakeFunctionWithCallback
8590 JSObjectMakeFunctionWithBody -> JSObjectMakeFunction
8592 because the latter is more common, and more fundamental, than the former.
8597 * API/JSCallbackObject.cpp:
8598 (KJS::JSCallbackObject::getOwnPropertySlot):
8599 (KJS::JSCallbackObject::put):
8600 (KJS::JSCallbackObject::deleteProperty):
8601 (KJS::JSCallbackObject::getPropertyNames):
8602 (KJS::JSCallbackObject::staticValueGetter):
8603 (KJS::JSCallbackObject::staticFunctionGetter):
8604 * API/JSClassRef.cpp:
8605 (OpaqueJSClass::OpaqueJSClass):
8606 (OpaqueJSClass::~OpaqueJSClass):
8608 * API/JSObjectRef.cpp:
8610 (JSObjectMakeFunctionWithCallback):
8611 (JSObjectMakeFunction):
8612 (OpaqueJSPropertyNameArray::OpaqueJSPropertyNameArray):
8613 (JSObjectCopyPropertyNames):
8614 * API/JSObjectRef.h:
8620 * JavaScriptCore.exp:
8622 2006-07-16 Geoffrey Garen <ggaren@apple.com>
8626 Replace __JS with OpaqueJS because the former, while used by CF, is
8627 a prefix that's triply-reserved by the compiler. (_* is reserved in global
8628 names, _[A-Z] is reserved in all names, and __ is reserved in all names
8631 Opaque is an alternative used by other Mac OS X framewokrs.
8636 * API/JSCallbackObject.cpp:
8637 (KJS::JSCallbackObject::getOwnPropertySlot):
8638 (KJS::JSCallbackObject::put):
8639 (KJS::JSCallbackObject::deleteProperty):
8640 (KJS::JSCallbackObject::getPropertyNames):
8641 (KJS::JSCallbackObject::staticValueGetter):
8642 (KJS::JSCallbackObject::staticFunctionGetter):
8643 * API/JSClassRef.cpp:
8644 (OpaqueJSClass::OpaqueJSClass):
8645 (OpaqueJSClass::~OpaqueJSClass):
8647 * API/JSObjectRef.cpp:
8649 (OpaqueJSPropertyNameArray::OpaqueJSPropertyNameArray):
8650 (JSObjectCopyPropertyNames):
8652 2006-07-16 Darin Adler <darin@apple.com>
8654 - try to fix Windows build
8656 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
8657 Added some recently added files, removed some recently removed.
8659 2006-07-16 Geoffrey Garen <ggaren@apple.com>
8663 - Change getProperty* to return undefined, rather than NULL, for missing
8664 properties, since that's what the spec says. Also added exception out
8665 parameters to the *Index functions, because they can call through to the
8666 regular functions, which can throw for custom objects.
8668 * API/JSObjectRef.cpp:
8669 (JSObjectGetProperty):
8670 (JSObjectGetPropertyAtIndex):
8671 (JSObjectSetPropertyAtIndex):
8672 * API/JSObjectRef.h:
8676 2006-07-16 Geoffrey Garen <ggaren@apple.com>
8680 - Properly document and handle NULL callbacks for static properties. We
8681 throw an exception in any case other than a ReadOnly property with a NULL
8682 setProperty callback, because a NULL callback almost certainly indicates
8683 a programming error. Also throw an exception if hasProperty returns true
8684 for a property that getProperty can't get.
8686 - If a static setProperty callback returns 'false', to indicate that the
8687 property was not set, we no longer forward the set request up the class
8688 chain, because that's almost certainly not what the programmer expected.
8690 * API/JSCallbackObject.cpp:
8691 (KJS::JSCallbackObject::getOwnPropertySlot):
8692 (KJS::JSCallbackObject::put):
8693 (KJS::JSCallbackObject::staticValueGetter):
8694 (KJS::JSCallbackObject::staticFunctionGetter):
8695 (KJS::JSCallbackObject::callbackGetter):
8696 * API/JSObjectRef.h:
8699 (MyObject_hasProperty):
8702 2006-07-16 Geoffrey Garen <ggaren@apple.com>
8706 - Added names to functions.
8708 - Removed GetPrivate/SetPrivate from callbackFunctions and callbackConstructors.
8709 The private data idiom is that a JS object stores its native implementation
8710 as private data. For functions and constructors, the native implementation is nothing
8711 more than the callback they already store, so supporting private data, too,
8712 confuses the idiom. If you *really* want, you can still create a custom
8713 function with private data.
8715 * API/JSCallbackConstructor.cpp:
8716 * API/JSCallbackConstructor.h:
8717 * API/JSCallbackFunction.cpp:
8718 (KJS::JSCallbackFunction::JSCallbackFunction):
8719 * API/JSCallbackFunction.h:
8720 * API/JSCallbackObject.cpp:
8721 (KJS::JSCallbackObject::staticFunctionGetter):
8722 * API/JSObjectRef.cpp:
8723 (JSObjectMakeFunction):
8724 (JSObjectMakeFunctionWithBody):
8725 (JSObjectGetPrivate):
8726 (JSObjectSetPrivate):
8727 * API/JSObjectRef.h:
8733 2006-07-15 Maciej Stachowiak <mjs@apple.com>
8737 - switch property lists to be vector+set of Identifiers instead of list of References
8739 This has the following benefits:
8741 - no duplicates in property lists
8742 - simplifies API calls
8743 - probably more efficient, since linked list is gone
8744 - entirely removed Reference, ReferenceList and ProtectedReference types from the API
8746 * kjs/PropertyNameArray.cpp: Added.
8747 (KJS::PropertyNameArray::add): Check set, if not already there, add to
8749 * kjs/PropertyNameArray.h: Added.
8750 (KJS::PropertyNameArray::PropertyNameArray): Newly added type, combines
8751 a set and a vector to make a unique but ordered list of identifiers.
8752 (KJS::PropertyNameArray::begin): ditto
8753 (KJS::PropertyNameArray::end): ditto
8754 (KJS::PropertyNameArray::size): ditto
8755 (KJS::PropertyNameArray::operator[]): ditto
8756 * kjs/array_instance.h:
8757 * kjs/array_object.cpp:
8758 (ArrayInstance::getPropertyNames): renamed from getPropertyList, updated
8759 for PropertyNameArray
8760 (ArrayInstance::setLength): updated for PropertyNameArray
8761 (ArrayInstance::pushUndefinedObjectsToEnd): ditto
8763 (ForInNode::execute): updated for PropertyNameArray
8766 (KJS::JSObject::getPropertyNames): renamed from getPropertyList, updated
8767 for PropertyNameArray
8769 * kjs/property_map.cpp:
8770 (KJS::PropertyMap::getEnumerablePropertyNames): updated for PropertyNameArray
8771 (KJS::PropertyMap::getSparseArrayPropertyNames): ditto
8772 * kjs/property_map.h:
8773 * kjs/protected_reference.h: Removed.
8774 * kjs/reference.cpp: Removed.
8775 * kjs/reference.h: Removed.
8776 * kjs/reference_list.cpp: Removed.
8777 * kjs/reference_list.h: Removed.
8778 * kjs/scope_chain.cpp:
8779 (KJS::ScopeChain::print): Use PropertyNamesArray instead of ReferenceList.
8780 * kjs/string_object.cpp:
8781 (StringInstance::getPropertyNames): Updated for new approach.
8782 * kjs/string_object.h:
8785 (toJS): Added overload for PropertyNameAccumulatorRef / PropertyNameArray*
8788 * API/JSCallbackObject.cpp:
8789 (KJS::JSCallbackObject::getPropertyNames): Fixed for new API.
8790 * API/JSCallbackObject.h:
8791 * API/JSObjectRef.cpp:
8792 (__JSPropertyNameArray::__JSPropertyNameArray): Type used for a publicly vended
8793 JSPropertyNameArrayRef.
8794 (JSObjectCopyPropertyNames): New API call - renamed / refactored from
8795 JSObjectCreatePropertyList
8796 (JSPropertyNameArrayRetain): new retain call for JSPropertyNameArray.
8797 (JSPropertyNameArrayRelease): new release call for - " -.
8798 (JSPropertyNameArrayGetCount): Instead of having to use a stateful enumerator you
8799 can now get the count and items in any order.
8800 (JSPropertyNameArrayGetNameAtIndex): See above.
8801 (JSPropertyNameAccumulatorAddName): What you add properties to is now an opaque
8803 * API/JSObjectRef.h: Prototyped new functions, removed old ones
8804 * JavaScriptCore.exp: Updated exported symbols.
8805 * JavaScriptCore.xcodeproj/project.pbxproj: Added new files, removed old.
8807 (MyObject_getPropertyNames): Renamed / fixed callback to fit new paradigm.
8808 (main): Updated for new API.
8810 2006-07-15 Darin Adler <darin@apple.com>
8812 - oops, missed a few more arrays that had to be const
8815 (JSNodePrototype_appendChild): Added const.
8816 (JSNodePrototype_removeChild): Ditto.
8817 (JSNodePrototype_replaceChild): Ditto.
8818 (JSNode_construct): Ditto.
8820 (JSNodeListPrototype_item): Ditto.
8821 * API/JSObjectRef.cpp:
8822 (JSObjectMakeFunctionWithBody): Ditto.
8823 (JSObjectCallAsFunction): Ditto.
8824 (JSObjectCallAsConstructor): Ditto.
8828 (MyObject_callAsFunction): Ditto.
8829 (MyObject_callAsConstructor): Ditto.
8830 (print_callAsFunction): Ditto.
8831 (myConstructor_callAsConstructor): Ditto.
8833 2006-07-15 Darin Adler <darin@apple.com>
8837 * API/JSNode.h: Made an array parameter const.
8838 * API/JSObjectRef.h: Made array parameters const. Fixed a comment.
8840 2006-07-15 Geoffrey Garen <ggaren@apple.com>
8844 - JSObjectMakeFunctionWithBody includes a function name and named parameters now.
8846 * API/JSObjectRef.cpp:
8847 (JSObjectMakeFunctionWithBody):
8848 * API/JSObjectRef.h:
8850 (assertEqualsAsUTF8String): More informative failure reporting.
8851 (main): Test more function cases.
8853 2006-07-15 Geoffrey Garen <ggaren@apple.com>
8857 - Moved the arguments passed to JSClassCreate into a single structure,
8858 called JSClassDefinition. This will enable easier structure
8859 migration/versioning in the future, if necessary.
8861 - Added support for class names.
8863 - kJSClassDefinitionNull replaces kJSObjectCallbacksNone.
8865 - JSClass is becoming a fairly complex struct, so I migrated all of its
8866 implementation other than reference counting to the sruct.
8868 - Also moved JSClass* functions in the API to JSObjectRef.cpp, since they're
8869 declared in JSObjectRef.h
8871 - Also added some more informative explanation to the class structure doc.
8873 2006-07-15 Darin Adler <darin@apple.com>
8877 - fix http://bugs.webkit.org/show_bug.cgi?id=8395
8878 <rdar://problem/4613467>
8879 REGRESSION: RegEx seems broken for hex escaped non breaking space
8881 Test: fast/js/regexp-extended-characters-more.html
8884 (match): Got rid of utf16Length local variable to guarantee there's no
8885 extra stack usage in recursive calls. Fixed two places in the PCRE_UTF16
8886 code that were using the length variable, which is the UTF-8 length of
8887 a character in the pattern, to move in the UTF-16 subject string. Instead
8888 they hardcode lengths of 1 and 2 since the code already handles BMP
8889 characters and surrogate pairs separately. Also fixed some DPRINTF so
8890 I could compile with DEBUG on.
8891 (pcre_exec): Changed a place that was checking for multibyte characters
8892 in the subject string to use ISMIDCHAR. Instead it was using hardcoded
8893 logic that was right for UTF-8 but wrong for UTF-16.
8895 * pcre/pcre_compile.c: (pcre_compile2): Fixed a DPRINTF so I could compile
8898 2006-07-14 Geoffrey Garen <ggaren@apple.com>
8902 Global replace in the API of argc/argv with argumentCount/arguments.
8904 2006-07-14 Geoffrey Garen <ggaren@apple.com>
8908 - Finalized exception handling in the API.
8910 setProperty can throw because it throws for built-in arrays. getProperty
8911 and deleteProperty can throw because setProperty can throw and we want
8912 to be consistent, and also because they seem like "actions." callAsFunction,
8913 callAsConstructor, and hasInstance can throw, because they caan throw for
8916 toBoolean can't throw because it's defined that way in the spec.
8918 - Documented that toBoolean and toObject can't be overridden by custom
8919 objects because they're defined that way in the spec.
8921 === Safari-521.17 ===
8923 2006-07-14 Geoffrey Garen <ggaren@apple.com>
8927 - Implemented ref-counting of JSContexts by splitting into two datatypes:
8928 JSGlobalContext, which you can create/retain/release, and JSContext, which
8931 Internally, you retain a JSGlobalContext/ExecState by retaining its
8932 interpreter, which, in the case of a global ExecState, owns it.
8934 - Also made ~Interpreter() protected to catch places where Interpreter
8935 is manually deleted. (Can't make it private because some crazy fool
8936 decided it would be a good idea to subclass Interpreter in other frameworks.
8940 (toJS): Added cast for new JSGlobalContext
8941 * API/JSStringRef.h: Changed vague "you must" language to more specific
8942 (but, ultimately, equally vague) "behavior is undefined if you don't"
8944 (KJS::Interpreter::Interpreter): Factored more common initialization into
8946 * kjs/interpreter.h:
8947 (KJS::Interpreter::ref): new
8948 (KJS::Interpreter::deref): new
8949 (KJS::Interpreter::refCount): new
8951 (doIt): Ref-count the interpreter.
8953 2006-07-14 Maciej Stachowiak <mjs@apple.com>
8957 - removed bool return value from JSObjectSetProperty, since it is inefficient and
8958 also doesn't work quite right
8959 - added JSObjectGetPropertyAtIndex and JSObjectSetPropertyAtIndex
8961 * API/JSObjectRef.cpp:
8962 (JSObjectSetProperty): Removed return value and canPut stuff.
8963 (JSObjectGetPropertyAtIndex): Added.
8964 (JSObjectSetPropertyAtIndex): Added.
8965 * API/JSObjectRef.h: Prototyped and documented new functions.
8967 2006-07-14 Geoffrey Garen <ggaren@apple.com>
8971 Moved JSCheckScriptSyntax, JSEvaluateScript, and JSGarbageCollect into
8972 JSBase.h/.cpp. They don't belong in the value-specific or context-specific
8973 files because they're not part of the value or context implementations.
8976 * API/JSContextRef.cpp:
8977 (JSContextGetGlobalObject):
8978 * API/JSContextRef.h:
8979 * API/JSValueRef.cpp:
8982 * JavaScriptCore.xcodeproj/project.pbxproj:
8984 2006-07-13 Timothy Hatcher <timothy@apple.com>
8988 Moved JavaScriptCore to be a public framework.
8990 * JavaScriptCore.xcodeproj/project.pbxproj:
8992 2006-07-13 Mark Rowe <opendarwin.org@bdash.net.nz>
8994 Reviewed by Geoffrey.
8996 http://bugs.webkit.org/show_bug.cgi?id=9742
8997 Bug 9742: REGRESSION: WebKit hangs when loading <http://www.vtbook.com>
9000 (KJS::JSValue::getUInt32): Only types tagged as numeric can be converted to UInt32.
9002 2006-07-13 Geoffrey Garen <ggaren@apple.com>
9006 - Renamed JSEvaluate -> JSEvaluateScript, JSCheckSyntax -> JSCheckScriptSyntax
9007 - Added exception out parameters to JSValueTo* and JSValueIsEqual because
9009 - Removed JSObjectGetDescription because it's useless and vague, and
9010 JSValueToString/JSValueIsObjectOfClass do a better job, anyway
9011 - Clarified comments about "IsFunction/Constructor" to indicate that they
9012 are true of all functions/constructors, not just those created by JSObjectMake*
9014 2006-07-12 Geoffrey Garen <ggaren@apple.com>
9018 Finished previously approved JSInternalString -> JSString conversion
9019 by renaming the files.
9021 * API/JSCallbackObject.cpp:
9022 * API/JSInternalStringRef.cpp: Removed.
9023 * API/JSInternalStringRef.h: Removed.
9024 * API/JSStringRef.cpp: Added.
9025 * API/JSStringRef.h: Added.
9026 * API/JavaScriptCore.h:
9027 * JavaScriptCore.xcodeproj/project.pbxproj:
9029 2006-07-12 Geoffrey Garen <ggaren@apple.com>
9033 - Removed context and exception parameters from JSObjectGetPropertyEnumerator,
9034 removing the spurious use of ExecState inside JavaScriptCore that made
9035 us think this was necessary in the first place.
9037 (StringInstance::getPropertyList): Use getString instead of toString because
9038 we know we're dealing with a string -- we put it there in the first place.
9039 While we're at it, store the string's size instead of retrieving it each time
9040 through the loop, to avoid the unnecessary killing of puppies.
9041 * kjs/string_object.h:
9043 2006-07-12 Maciej Stachowiak <mjs@apple.com>
9047 - add handling of hasInstance callback for API objects
9049 * API/JSCallbackObject.cpp:
9050 (KJS::JSCallbackObject::implementsHasInstance): Check if callback is present.
9051 (KJS::JSCallbackObject::hasInstance): Invoke appropriate callback.
9052 * API/JSCallbackObject.h:
9053 * API/JSClassRef.cpp:
9054 * API/JSObjectRef.h:
9056 (MyObject_hasInstance): Test case; should match what construct would do.
9059 2006-07-11 Geoffrey Garen <ggaren@apple.com>
9063 - Implemented a vast number of renames and comment clarifications
9064 suggested during API review.
9066 JSInternalString -> JSString
9067 JS*Make -> JSValueMake*, JSObjectMake*
9068 JSTypeCode -> JSType
9069 JSValueIsInstanceOf -> JSValueIsInstanceOfConstructor (reads strangely well in client code)
9070 JSGC*Protect -> JSValue*Protect
9071 JS*Callback -> JSObject*Callback
9072 JSGetPropertyListCallback -> JSObjectAddPropertiesToListCallback
9073 JSPropertyEnumeratorGetNext -> JSPropertyEnumeratorGetNextName
9075 JSStringCreateWithUTF8CString, JSStringGetUTF8CString,
9076 JSStringGetMaximumUTF8CStringSize JSStringIsEqualToUTF8CString,
9077 JSStringCreateWithCFString, JSStringCopyCFString, JSStringCreateWithCharacters.
9079 - Changed functions taking a JSValue out arg and returning a bool indicating
9080 whether it was set to simply return a JSValue or NULL.
9082 - Removed JSStringGetCharacters because it's more documentation than code,
9083 and it's just a glorified memcpy built on existing API functionality.
9085 - Moved standard library includes into the headers that actually require them.
9087 - Standardized use of the phrase "Create Rule."
9089 - Removed JSLock from make functions that don't allocate.
9091 - Added exception handling to JSValueToBoolean, since we now allow
9092 callback objects to throw exceptions upon converting to boolean.
9094 - Renamed JSGCCollect to JSGarbageCollect.
9096 2006-07-10 Geoffrey Garen <ggaren@apple.com>
9100 - Changed public header includes to the <JavaScriptCore/ style.
9101 - Changed instances of 'buffer' to 'string' since we decided on
9102 JSInternalString instead of JSStringBuffer.
9104 * API/JSContextRef.h:
9105 * API/JSInternalStringRef.cpp:
9107 (JSInternalStringRetain):
9108 (JSInternalStringRelease):
9109 (JSValueCopyStringValue):
9110 (JSInternalStringGetLength):
9111 (JSInternalStringGetCharactersPtr):
9112 (JSInternalStringGetCharacters):
9113 (JSInternalStringGetMaxLengthUTF8):
9114 (JSInternalStringGetCharactersUTF8):
9115 (CFStringCreateWithJSInternalString):
9116 * API/JSInternalStringRef.h:
9118 (JSNodePrototype_appendChild):
9119 (JSNode_getNodeType):
9120 * API/JSObjectRef.cpp:
9121 (JSObjectCallAsConstructor):
9123 * API/JavaScriptCore.h:
9128 (MyObject_getPropertyList):
9129 (myConstructor_callAsConstructor):
9130 (main): I noticed that we were prematurely releasing some string buffers,
9131 so I moved their release calls to the end of main(). I got rid of 'Buf' in *Buf
9132 (sometimes changing to 'IString', when necessary to differentiate a variable)
9133 to match the buffer->string change.
9135 === Safari-521.16 ===
9137 2006-07-10 Darin Adler <darin@apple.com>
9139 * kjs/value.cpp: (KJS::JSValue::toInt32Inline): Added inline keyword one more place.
9142 2006-07-10 Darin Adler <darin@apple.com>
9144 - fix the release build
9148 (KJS::JSValue::toInt32Inline): Move the code here to an inline.
9149 (KJS::JSValue::toInt32): Call the inline from both overloaded toInt32 functions.
9151 2006-07-10 David Kilzer <ddkilzer@kilzer.net>
9155 - fix http://bugs.webkit.org/show_bug.cgi?id=9179
9156 Implement select.options.add() method
9158 * JavaScriptCore.exp: Added overloaded KJS::JSValue::toInt32() method.
9159 * JavaScriptCore.xcodeproj/project.pbxproj: Altered attributes metadata for
9160 kjs/value.h to make it available as a forwarded header.
9162 (KJS::lookupPut): Extracted a lookupPut() method from the existing lookupPut() method.
9163 The new method returns a boolean value if no entry is found in the lookup table.
9165 (KJS::JSValue::toInt32): Overloaded toInt32() method with boolean "Ok" argument.
9166 * kjs/value.h: Ditto.
9168 2006-07-10 Geoffrey Garen <ggaren@apple.com>
9170 No review necessary. Removed bogus file I accidentally checked in before.
9172 * API/JSInternalSringRef.h: Removed.
9174 2006-07-10 Geoffrey Garen <ggaren@apple.com>
9178 Added exception out parameter to API object callbacks, removed semi-bogus
9179 JSContext(.*)Exception functions.
9181 To make these calls syntactically simple, I added an exceptionSlot()
9182 method to the ExecState class, which provides a JSValue** slot in which to
9183 store a JSValue* exception.
9187 * API/JSCallbackConstructor.cpp:
9188 (KJS::JSCallbackConstructor::construct):
9189 * API/JSCallbackFunction.cpp:
9190 (KJS::JSCallbackFunction::callAsFunction):
9191 * API/JSCallbackObject.cpp:
9192 (KJS::JSCallbackObject::init):
9193 (KJS::JSCallbackObject::getOwnPropertySlot):
9194 (KJS::JSCallbackObject::put):
9195 (KJS::JSCallbackObject::deleteProperty):
9196 (KJS::JSCallbackObject::construct):
9197 (KJS::JSCallbackObject::callAsFunction):
9198 (KJS::JSCallbackObject::getPropertyList):
9199 (KJS::JSCallbackObject::toBoolean):
9200 (KJS::JSCallbackObject::toNumber):
9201 (KJS::JSCallbackObject::toString):
9202 (KJS::JSCallbackObject::staticValueGetter):
9203 (KJS::JSCallbackObject::callbackGetter):
9204 * API/JSContextRef.cpp:
9206 * API/JSContextRef.h:
9208 (JSNodePrototype_appendChild):
9209 (JSNodePrototype_removeChild):
9210 (JSNodePrototype_replaceChild):
9211 (JSNode_getNodeType):
9212 (JSNode_getChildNodes):
9213 (JSNode_getFirstChild):
9217 (JSNodeListPrototype_item):
9218 (JSNodeList_length):
9219 (JSNodeList_getProperty):
9220 * API/JSObjectRef.h:
9224 (MyObject_initialize):
9225 (MyObject_hasProperty):
9226 (MyObject_getProperty):
9227 (MyObject_setProperty):
9228 (MyObject_deleteProperty):
9229 (MyObject_getPropertyList):
9230 (MyObject_callAsFunction):
9231 (MyObject_callAsConstructor):
9232 (MyObject_convertToType):
9233 (print_callAsFunction):
9234 (myConstructor_callAsConstructor):
9236 * JavaScriptCore.exp:
9238 (KJS::ExecState::exceptionHandle):
9240 2006-07-10 Geoffrey Garen <ggaren@apple.com>
9244 Improved type safety by implementing opaque JSValue/JSObject typing through
9245 abuse of 'const', not void*. Also fixed an alarming number of bugs
9246 exposed by this new type safety.
9248 I made one design change in JavaScriptCore, which is that the JSObject
9249 constructor should take a JSValue* as its prototype argument, not a JSObject*,
9250 since we allow the prototype to be any JSValue*, including jsNull(), for
9256 * API/JSCallbackConstructor.cpp:
9257 (KJS::JSCallbackConstructor::construct):
9258 * API/JSCallbackFunction.cpp:
9259 (KJS::JSCallbackFunction::callAsFunction):
9260 * API/JSCallbackObject.cpp:
9261 (KJS::JSCallbackObject::JSCallbackObject):
9262 (KJS::JSCallbackObject::getOwnPropertySlot):
9263 (KJS::JSCallbackObject::put):
9264 (KJS::JSCallbackObject::construct):
9265 (KJS::JSCallbackObject::callAsFunction):
9266 (KJS::JSCallbackObject::staticFunctionGetter):
9267 * API/JSCallbackObject.h:
9268 * API/JSContextRef.cpp:
9271 (JSNodePrototype_appendChild):
9272 (JSNodePrototype_removeChild):
9273 (JSNodePrototype_replaceChild):
9274 * API/JSObjectRef.cpp:
9276 (JSFunctionMakeWithBody):
9277 (JSObjectGetProperty):
9278 (JSObjectCallAsFunction):
9279 (JSObjectCallAsConstructor):
9280 * API/JSObjectRef.h:
9285 (KJS::JSObject::JSObject):
9287 2006-07-10 Geoffrey Garen <ggaren@apple.com>
9289 Approved by Maciej, Darin.
9291 Renamed JSStringBufferRef to JSInternalStringRef. "Internal string" means the
9292 JavaScript engine's internal string representation, which is the most
9293 low-level and efficient representation to use when interfacing with JavaScript.
9299 * API/JSCallbackObject.cpp:
9300 (KJS::JSCallbackObject::getOwnPropertySlot):
9301 (KJS::JSCallbackObject::put):
9302 (KJS::JSCallbackObject::deleteProperty):
9303 (KJS::JSCallbackObject::staticValueGetter):
9304 (KJS::JSCallbackObject::callbackGetter):
9305 * API/JSContextRef.cpp:
9308 * API/JSContextRef.h:
9309 * API/JSInternalStringRef.cpp: Added.
9311 (JSInternalStringCreate):
9312 (JSInternalStringCreateUTF8):
9313 (JSInternalStringRetain):
9314 (JSInternalStringRelease):
9315 (JSValueCopyStringValue):
9316 (JSInternalStringGetLength):
9317 (JSInternalStringGetCharactersPtr):
9318 (JSInternalStringGetCharacters):
9319 (JSInternalStringGetMaxLengthUTF8):
9320 (JSInternalStringGetCharactersUTF8):
9321 (JSInternalStringIsEqual):
9322 (JSInternalStringIsEqualUTF8):
9323 (JSInternalStringCreateCF):
9324 (CFStringCreateWithJSInternalString):
9325 * API/JSInternalStringRef.h: Added.
9327 (JSNodePrototype_appendChild):
9328 (JSNode_getNodeType):
9329 (JSNode_getChildNodes):
9330 (JSNode_getFirstChild):
9332 (JSNodeList_length):
9333 (JSNodeList_getProperty):
9334 * API/JSObjectRef.cpp:
9335 (JSFunctionMakeWithBody):
9336 (JSObjectGetDescription):
9337 (JSObjectHasProperty):
9338 (JSObjectGetProperty):
9339 (JSObjectSetProperty):
9340 (JSObjectDeleteProperty):
9341 (JSPropertyEnumeratorGetNext):
9342 (JSPropertyListAdd):
9343 * API/JSObjectRef.h:
9344 * API/JSStringBufferRef.cpp: Removed.
9345 * API/JSStringBufferRef.h: Removed.
9347 * API/JavaScriptCore.h:
9352 (assertEqualsAsUTF8String):
9353 (assertEqualsAsCharactersPtr):
9354 (assertEqualsAsCharacters):
9355 (MyObject_hasProperty):
9356 (MyObject_getProperty):
9357 (MyObject_setProperty):
9358 (MyObject_deleteProperty):
9359 (MyObject_getPropertyList):
9360 (print_callAsFunction):
9361 (myConstructor_callAsConstructor):
9363 * JavaScriptCore.exp:
9364 * JavaScriptCore.xcodeproj/project.pbxproj:
9366 2006-07-08 Tim Omernick <timo@apple.com>
9370 Added an OpenGL drawing model to the Netscape Plug-in API.
9374 2006-07-08 Timothy Hatcher <timothy@apple.com>
9378 Moved KJS_GetCreatedJavaVMs to jni_utility.cpp.
9379 Switched KJS_GetCreatedJavaVMs over to use dlopen and dlsym
9380 now that NSAddImage, NSLookupSymbolInImage and NSAddressOfSymbol
9381 are deprecated in Leopard.
9383 * JavaScriptCore.exp:
9384 * JavaScriptCore.xcodeproj/project.pbxproj:
9385 * bindings/jni/jni_utility.cpp:
9386 (KJS::Bindings::KJS_GetCreatedJavaVMs):
9387 * bindings/softlinking.c: Removed.
9388 * bindings/softlinking.h: Removed.
9390 2006-07-08 Geoffrey Garen <ggaren@apple.com>
9394 - Make JSObjectGetProperty return a JSValue or NULL, like JSEvaluate does.
9396 * API/JSObjectRef.cpp:
9397 (JSObjectGetProperty):
9398 * API/JSObjectRef.h:
9402 2006-07-08 Geoffrey Garen <ggaren@apple.com>
9404 Style change -- no review necessary.
9406 Use 0 instead of NULL in API .cpp files, to match our style guidelines.
9408 * API/JSContextRef.cpp:
9410 * API/JSObjectRef.cpp:
9411 (JSFunctionMakeWithBody):
9412 (JSObjectCallAsFunction):
9413 (JSObjectCallAsConstructor):
9414 * API/JSValueRef.cpp:
9417 2006-07-08 Geoffrey Garen <ggaren@apple.com>
9421 - Added ability to pass NULL for thisObject when calling JSObjectCallAsFunction,
9422 to match JSEvaluate.
9424 * API/JSObjectRef.cpp:
9425 (JSObjectCallAsFunction):
9426 * API/JSObjectRef.h:
9430 === Safari-521.15 ===
9432 2006-07-07 Geoffrey Garen <ggaren@apple.com>
9436 - Standardized which functions take a JSContext as an argument. The rule is:
9437 if you might execute JavaScript, you take a JSContext, otherwise you don't.
9439 The FIXME in JSObjectRef.h requires refactoring some parts of Interpreter,
9440 but not API changes, so I'm putting it off until later.
9442 * API/JSCallbackObject.cpp:
9443 (KJS::JSCallbackObject::JSCallbackObject):
9444 (KJS::JSCallbackObject::init):
9445 * API/JSCallbackObject.h:
9446 * API/JSContextRef.cpp:
9448 * API/JSContextRef.h:
9449 * API/JSObjectRef.cpp:
9451 (JSPropertyEnumeratorGetNext):
9452 * API/JSObjectRef.h:
9454 (MyObject_initialize):
9456 * JavaScriptCore.exp:
9457 * kjs/array_object.cpp:
9458 (ArrayInstance::setLength):
9459 (ArrayInstance::pushUndefinedObjectsToEnd):
9461 (ForInNode::execute):
9462 * kjs/reference.cpp:
9463 (KJS::Reference::getPropertyName):
9464 (KJS::Reference::getValue):
9466 * kjs/scope_chain.cpp:
9467 (KJS::ScopeChain::print):
9469 2006-07-06 Geoffrey Garen <ggaren@apple.com>
9475 - Headerdoc finished
9478 - Added a JSContextRef argument to many functions, because you need a
9479 JSContextRef for doing virtually anything. I expect to add this argument
9480 to even more functions in a future patch.
9482 - Removed the globalObjectPrototype argument to JSContextCreate because
9483 you can't create an object until you have a context, so it's impossible
9484 to pass a prototype object to JSContextCreate. That's OK because (1) there's
9485 no reason to give the global object a prototype and (2) if you really want
9486 to, you can just use a separate call to JSObjectSetPrototype.
9488 - Removed the JSClassRef argument to JSClassCreate because it was unnecessary,
9489 and you need to be able to make the global object's class before you've
9490 created a JSContext.
9492 - Added an optional exception parameter to JSFunctionMakeWithBody because anything
9493 less would be uncivilized.
9495 - Made the return value parameter to JSObjectGetProperty optional to match
9496 all other return value parameters in the API.
9498 - Made JSObjectSetPrivate/JSObjectGetPrivate work on JSCallbackFunctions
9499 and JSCallbackConstructors. You could use an abstract base class or strategic
9500 placement of m_privateData in the class structure to implement this, but
9501 the former seemed like overkill, and the latter seemed too dangerous.
9503 - Fixed a bug where JSPropertyEnumeratorGetNext would skip the first property.
9506 - Reversed the logic of the JSChar #ifdef to avoid confusing headerdoc
9508 - Removed function names from @function declarations because headeroc
9509 can parse them automatically, and I wanted to rule out manual mismatch.
9511 - Changed Error::create to take a const UString& instead of a UString*
9512 because it was looking at me funny.
9514 - Renamed JSStringBufferCreateWithCFString to JSStringBufferCreateCF
9515 because the latter is more concise and it matches JSStringBufferCreateUTF8.
9517 * API/JSCallbackObject.cpp:
9518 (KJS::JSCallbackObject::getOwnPropertySlot):
9519 (KJS::JSCallbackObject::put):
9520 (KJS::JSCallbackObject::deleteProperty):
9521 (KJS::JSCallbackObject::getPropertyList):
9522 (KJS::JSCallbackObject::toBoolean):
9523 (KJS::JSCallbackObject::toNumber):
9524 (KJS::JSCallbackObject::toString):
9525 * API/JSClassRef.cpp:
9527 * API/JSContextRef.cpp:
9529 (JSContextSetException):
9530 * API/JSContextRef.h:
9532 (JSNodePrototype_class):
9535 (JSNodeListPrototype_class):
9537 * API/JSObjectRef.cpp:
9538 (JSObjectGetProperty):
9539 (JSObjectGetPrivate):
9540 (JSObjectSetPrivate):
9541 (JSObjectCallAsFunction):
9542 (JSObjectCallAsConstructor):
9543 (JSPropertyEnumeratorGetNext):
9544 * API/JSObjectRef.h:
9545 * API/JSStringBufferRef.cpp:
9546 (JSStringBufferCreateCF):
9547 * API/JSStringBufferRef.h:
9548 * API/JSValueRef.cpp:
9549 (JSValueIsInstanceOf):
9555 (MyObject_hasProperty):
9556 (MyObject_setProperty):
9557 (MyObject_deleteProperty):
9558 (MyObject_getPropertyList):
9559 (MyObject_convertToType):
9562 * JavaScriptCore.exp:
9564 2006-07-07 Geoffrey Garen <ggaren@apple.com>
9568 - Fixed a few crashes resulting from NULL parameters to JSClassCreate.
9570 * API/JSClassRef.cpp:
9573 * API/testapi.c: Added test for NULL parameters.
9576 2006-07-07 Geoffrey Garen <ggaren@apple.com>
9578 Reviewed by John, mocked by Darin.
9580 - Changed JSEvaluate to take a JSObjectRef instead of a JSValueRef as
9581 "this," since "this" must be an object.
9583 * API/JSContextRef.cpp:
9585 * API/JSContextRef.h:
9587 2006-07-07 Geoffrey Garen <ggaren@apple.com>
9594 * JavaScriptCore.xcodeproj/project.pbxproj:
9596 2006-07-05 Geoffrey Garen <ggaren@apple.com>
9600 Renamed JSCharBufferRef, which was universally unpopular, to JSStringBufferRef,
9601 which, hopefully, will be less unpopular.
9607 * API/JSCallbackObject.cpp:
9608 (KJS::JSCallbackObject::getOwnPropertySlot):
9609 (KJS::JSCallbackObject::put):
9610 (KJS::JSCallbackObject::deleteProperty):
9611 (KJS::JSCallbackObject::staticValueGetter):
9612 (KJS::JSCallbackObject::callbackGetter):
9613 * API/JSCharBufferRef.cpp: Removed.
9614 * API/JSCharBufferRef.h: Removed.
9615 * API/JSContextRef.cpp:
9618 * API/JSContextRef.h:
9620 (JSNodePrototype_appendChild):
9621 (JSNode_getNodeType):
9622 (JSNode_getChildNodes):
9623 (JSNode_getFirstChild):
9625 (JSNodeList_length):
9626 (JSNodeList_getProperty):
9627 * API/JSObjectRef.cpp:
9628 (JSFunctionMakeWithBody):
9629 (JSObjectGetDescription):
9630 (JSObjectHasProperty):
9631 (JSObjectGetProperty):
9632 (JSObjectSetProperty):
9633 (JSObjectDeleteProperty):
9634 (JSPropertyEnumeratorGetNext):
9635 (JSPropertyListAdd):
9636 * API/JSObjectRef.h:
9637 * API/JSStringBufferRef.cpp: Added.
9639 (JSStringBufferCreate):
9640 (JSStringBufferCreateUTF8):
9641 (JSStringBufferRetain):
9642 (JSStringBufferRelease):
9643 (JSValueCopyStringValue):
9644 (JSStringBufferGetLength):
9645 (JSStringBufferGetCharactersPtr):
9646 (JSStringBufferGetCharacters):
9647 (JSStringBufferGetMaxLengthUTF8):
9648 (JSStringBufferGetCharactersUTF8):
9649 (JSStringBufferIsEqual):
9650 (JSStringBufferIsEqualUTF8):
9651 (JSStringBufferCreateWithCFString):
9652 (CFStringCreateWithJSStringBuffer):
9653 * API/JSStringBufferRef.h: Added.
9655 * API/JavaScriptCore.h:
9660 (assertEqualsAsUTF8String):
9661 (assertEqualsAsCharactersPtr):
9662 (assertEqualsAsCharacters):
9663 (MyObject_hasProperty):
9664 (MyObject_getProperty):
9665 (MyObject_setProperty):
9666 (MyObject_deleteProperty):
9667 (MyObject_getPropertyList):
9668 (print_callAsFunction):
9669 (myConstructor_callAsConstructor):
9671 * JavaScriptCore.exp:
9672 * JavaScriptCore.xcodeproj/project.pbxproj:
9674 2006-07-05 Geoffrey Garen <ggaren@apple.com>
9678 Moved some code around for more logical file separation.
9681 * API/JSContextRef.h:
9682 * API/JSObjectRef.cpp:
9683 * API/JSValueRef.cpp:
9687 2006-07-03 Geoffrey Garen <ggaren@apple.com>
9691 Implemented JSFunctionMakeWithBody, which parses a script as a function body
9692 in the global scope, and returns the resulting anonymous function.
9694 I also removed private data from JSCallbackFunction. It never worked,
9695 since JSCallbackFunction doesn't inherit from JSCallbackObject.
9697 * API/JSCallbackConstructor.cpp: Removed.
9698 * API/JSCallbackConstructor.h: Removed.
9699 * API/JSCallbackFunction.cpp:
9700 (KJS::JSCallbackFunction::JSCallbackFunction):
9701 (KJS::JSCallbackFunction::implementsConstruct):
9702 (KJS::JSCallbackFunction::construct):
9703 (KJS::JSCallbackFunction::implementsCall):
9704 (KJS::JSCallbackFunction::callAsFunction):
9705 * API/JSCallbackFunction.h:
9706 * API/JSCallbackObject.cpp:
9707 (KJS::JSCallbackObject::staticFunctionGetter):
9708 * API/JSObjectRef.cpp:
9710 (JSFunctionMakeWithCallbacks):
9711 * API/JSObjectRef.h:
9717 * JavaScriptCore.exp: Programmatically added all symbols exported by
9718 API object files, and sorted results
9719 * JavaScriptCore.xcodeproj/project.pbxproj:
9721 2006-07-03 Geoffrey Garen <ggaren@apple.com>
9725 - Return syntax error in JSCheckSyntax through a JSValueRef* exception
9729 * API/JSContextRef.cpp:
9733 * JavaScriptCore.exp:
9734 * kjs/interpreter.cpp:
9735 (KJS::Interpreter::checkSyntax):
9736 * kjs/interpreter.h:
9738 2006-07-04 Darin Adler <darin@apple.com>
9742 * wtf/MathExtras.h: Oops. Added missing #endif.
9744 2006-07-04 Bjoern Graf <bjoern.graf@gmail.com>
9747 Tweaked a bit by Darin.
9749 - http://bugs.webkit.org/show_bug.cgi?id=9678
9750 work around MSVCRT's fmod function returning NaN for fmod(x, infinity) instead of x
9752 * wtf/MathExtras.h: Added include of <float.h>.
9753 (isinf): Fix to return false for NAN.
9754 (wtf_fmod): Added. An inline that works around the bug.
9757 * kjs/number_object.cpp:
9758 * kjs/operations.cpp:
9760 Added includes of MathExtras.h to all files using fmod.
9762 * JavaScriptCore.xcodeproj/project.pbxproj: Let Xcode 2.3 have its way with
9765 2006-07-01 Geoffrey Garen <ggaren@apple.com>
9769 - Refined value conversions in the API:
9770 - failed toNumber returns NaN
9771 - failed toObject returns NULL
9772 - failed toString returns empty string
9774 - Refined excpetion handling in the API:
9775 - failed value conversions do not throw exceptions
9776 - uncaught exceptions in JSEvaluate, JSObjectCallAsFunction, and
9777 JSObjectCallAsConstructor are returned through a JSValueRef* exception
9779 - removed JSContextHasException, because JSContextGetException does
9783 * API/JSCharBufferRef.cpp:
9784 (JSValueCopyStringValue):
9785 * API/JSContextRef.cpp:
9787 * API/JSContextRef.h:
9788 * API/JSNodeList.c: Added test code demonstrating how you would use
9789 toNumber, and why you probably don't need toUInt32, etc.
9790 (JSNodeListPrototype_item):
9791 (JSNodeList_getProperty):
9792 * API/JSObjectRef.cpp:
9794 (JSObjectCallAsFunction):
9795 (JSObjectCallAsConstructor):
9796 * API/JSObjectRef.h:
9797 * API/JSValueRef.cpp:
9803 (main): Added tests for new rules, and call to JSGCProtect to fix Intel
9805 * JavaScriptCore.exp:
9807 2006-07-03 Darin Adler <darin@apple.com>
9809 - Rolled out HashMap implementation of NPRuntime, at least temporarily.
9811 Fixes hang in the bindings section of layout tests seen on the
9814 This code was using HashMap<const char*, PrivateIdentifier*>.
9815 But that hashes based on pointer identity, not string value.
9816 The default hash for any pointer type is to hash based on the pointer.
9817 And WTF doesn't currently have a string hash for char*.
9818 We'll need to fix that before re-landing this patch.
9820 (Formatting was also incorrect -- extra spaces in parentheses.)
9822 * bindings/npruntime.cpp: Rolled out last change.
9824 2006-07-02 Justin Haygood <jhaygood@spsu.edu>
9826 Reviewed, tweaked, landed by ggaren.
9828 - Port NPRuntime from CFDictionary to HashMap.
9830 * bindings/npruntime.cpp:
9831 (getStringIdentifierDictionary):
9832 (getIntIdentifierDictionary):
9833 (_NPN_GetStringIdentifier):
9834 (_NPN_GetIntIdentifier):
9835 * bindings/npruntime.h:
9837 2006-07-01 Geoffrey Garen <ggaren@apple.com>
9841 - Fixed <rdar://problem/4611197> REGRESSION: Liveconnect with Java test
9842 fails at http://www-sor.inria.fr/~dedieu/notes/liveconnect/simple_example.html
9844 * JavaScriptCore.exp: Export symbols used by liveconnect
9846 2006-06-29 Geoffrey Garen <ggaren@apple.com>
9850 - Phase 2 in the JS API.
9852 - Added support for specifying static tables of values -- this should
9853 obviate the need for using complicated callbacks for most lookups.
9855 - API objects are now created with classes (JSClassRef) -- in order to support
9856 static values, and in order to prevent API objects from storing their
9857 data inline, and thus falling into the oversized (read: slow and prone to
9858 giving Maciej the frowny face) heap.
9860 - Added two specialized JSObject subclasses -- JSCallbackFunction and JSCallbackConstructor --
9861 to allow JSFunctionMake and JSConstructorMake to continue to work with
9862 the new class model. Another solution to this problem would be to create
9863 a custom class object for each function and constructor you make. This
9864 solution is more code but also more efficient.
9866 - Substantially beefed up the minidom example to demonstrate and test a
9867 lot of these techniques. Its output is still pretty haphazard, though.
9869 - Gave the <kjs/ preface to some includes -- I'm told this matters to
9870 building on some versions of Linux.
9872 - Implemented JSValueIsInstanceOf and JSValueIsObjectOfClass
9874 - Removed GetDescription callback. Something in the class datastructure
9875 should take care of this.
9878 * API/JSCallbackConstructor.cpp: Added.
9880 (KJS::JSCallbackConstructor::JSCallbackConstructor):
9881 (KJS::JSCallbackConstructor::implementsConstruct):
9882 (KJS::JSCallbackConstructor::construct):
9883 (KJS::JSCallbackConstructor::setPrivate):
9884 (KJS::JSCallbackConstructor::getPrivate):
9885 * API/JSCallbackConstructor.h: Added.
9886 (KJS::JSCallbackConstructor::classInfo):
9887 * API/JSCallbackFunction.cpp: Added.
9889 (KJS::JSCallbackFunction::JSCallbackFunction):
9890 (KJS::JSCallbackFunction::implementsCall):
9891 (KJS::JSCallbackFunction::callAsFunction):
9892 (KJS::JSCallbackFunction::setPrivate):
9893 (KJS::JSCallbackFunction::getPrivate):
9894 * API/JSCallbackFunction.h: Added.
9895 (KJS::JSCallbackFunction::classInfo):
9896 * API/JSCallbackObject.cpp:
9898 (KJS::JSCallbackObject::JSCallbackObject):
9899 (KJS::JSCallbackObject::init):
9900 (KJS::JSCallbackObject::~JSCallbackObject):
9901 (KJS::JSCallbackObject::className):
9902 (KJS::JSCallbackObject::getOwnPropertySlot):
9903 (KJS::JSCallbackObject::put):
9904 (KJS::JSCallbackObject::deleteProperty):
9905 (KJS::JSCallbackObject::implementsConstruct):
9906 (KJS::JSCallbackObject::construct):
9907 (KJS::JSCallbackObject::implementsCall):
9908 (KJS::JSCallbackObject::callAsFunction):
9909 (KJS::JSCallbackObject::getPropertyList):
9910 (KJS::JSCallbackObject::toBoolean):
9911 (KJS::JSCallbackObject::toNumber):
9912 (KJS::JSCallbackObject::toString):
9913 (KJS::JSCallbackObject::inherits):
9914 (KJS::JSCallbackObject::staticValueGetter):
9915 (KJS::JSCallbackObject::staticFunctionGetter):
9916 (KJS::JSCallbackObject::callbackGetter):
9917 * API/JSCallbackObject.h:
9918 * API/JSCharBufferRef.cpp:
9919 * API/JSClassRef.cpp: Added.
9923 * API/JSClassRef.h: Added.
9924 (StaticValueEntry::StaticValueEntry):
9925 (StaticFunctionEntry::StaticFunctionEntry):
9926 (__JSClass::__JSClass):
9927 * API/JSContextRef.cpp:
9930 * API/JSContextRef.h:
9931 * API/JSNode.c: Added.
9932 (JSNodePrototype_appendChild):
9933 (JSNodePrototype_removeChild):
9934 (JSNodePrototype_replaceChild):
9935 (JSNodePrototype_class):
9936 (JSNode_getNodeType):
9937 (JSNode_getChildNodes):
9938 (JSNode_getFirstChild):
9944 * API/JSNode.h: Added.
9945 * API/JSNodeList.c: Added.
9946 (JSNodeListPrototype_item):
9947 (JSNodeListPrototype_class):
9948 (JSNodeList_length):
9949 (JSNodeList_getProperty):
9950 (JSNodeList_finalize):
9952 (JSNodeList_prototype):
9954 * API/JSNodeList.h: Added.
9955 * API/JSObjectRef.cpp:
9958 (JSConstructorMake):
9959 (__JSPropertyEnumerator::__JSPropertyEnumerator):
9960 (JSObjectCreatePropertyEnumerator):
9961 (JSPropertyEnumeratorGetNext):
9962 (JSPropertyEnumeratorRetain):
9963 (JSPropertyEnumeratorRelease):
9964 * API/JSObjectRef.h:
9965 (__JSObjectCallbacks::):
9966 * API/JSValueRef.cpp:
9967 (JSValueIsObjectOfClass):
9968 (JSValueIsInstanceOf):
9970 * API/Node.c: Added.
9974 (Node_replaceChild):
9977 * API/Node.h: Added.
9978 * API/NodeList.c: Added.
9984 * API/NodeList.h: Added.
9988 (createStringWithContentsOfFile):
9991 (assertEqualsAsCharacters):
9992 (MyObject_getProperty):
9994 (myConstructor_callAsConstructor):
9997 * JavaScriptCore.xcodeproj/project.pbxproj:
9999 2006-06-26 Kevin Ollivier <kevino@theolliviers.com>
10001 Reviewed and tweaked by Darin.
10003 - Compile fixes for wx port / gcc 4.0.2
10005 * kjs/array_object.cpp:
10006 Added missing headers.
10009 gcc needs class prototypes before defining those classes as friend classes
10011 2006-06-30 Mike Emmel <mike.emmel@gmail.com>
10015 Compilation fixes for Linux/Gdk.
10017 * JavaScriptCore/kjs/interpreter.cpp: added include of signal.h
10018 * JavaScriptCore/kjs/ExecState.h: added missing class declaration
10019 * JavaScriptCore/kjs/ExecState.cpp: case wrong on include of context.h
10020 * JavaScriptCore/JavaScriptCoreSources.bkl: added Context.cpp and ExecState.cpp
10022 === Safari-521.14 ===
10024 2006-06-29 Maciej Stachowiak <mjs@apple.com>
10028 - add headerdoc comments to some of the new JS API headers
10031 * API/JSValueRef.h:
10033 2006-06-28 Timothy Hatcher <timothy@apple.com>
10035 Prefer the Stabs debugging symbols format until DWARF bugs are fixed.
10037 * JavaScriptCore.xcodeproj/project.pbxproj:
10039 2006-06-27 Timothy Hatcher <timothy@apple.com>
10043 <rdar://problem/4448350> Deprecated ObjC language API used in JavaScriptCore, WebCore, WebKit and WebBrowser
10045 Switch to the new ObjC 2 API, ifdefed the old code around OBJC_API_VERSION so it still works on Tiger.
10046 Removed the use of the old stringWithCString, switched to the new Tiger version that accepts an encoding.
10047 Lots of code style cleanup.
10049 * JavaScriptCore.xcodeproj/project.pbxproj:
10050 * bindings/objc/objc_class.h:
10051 * bindings/objc/objc_class.mm:
10052 (KJS::Bindings::ObjcClass::~ObjcClass):
10053 (KJS::Bindings::_createClassesByIsAIfNecessary):
10054 (KJS::Bindings::ObjcClass::classForIsA):
10055 (KJS::Bindings::ObjcClass::name):
10056 (KJS::Bindings::ObjcClass::methodsNamed):
10057 (KJS::Bindings::ObjcClass::fieldNamed):
10058 (KJS::Bindings::ObjcClass::fallbackObject):
10059 * bindings/objc/objc_header.h:
10060 * bindings/objc/objc_instance.h:
10061 * bindings/objc/objc_instance.mm:
10062 (ObjcInstance::ObjcInstance):
10063 (ObjcInstance::~ObjcInstance):
10064 (ObjcInstance::operator=):
10065 (ObjcInstance::begin):
10066 (ObjcInstance::end):
10067 (ObjcInstance::getClass):
10068 (ObjcInstance::invokeMethod):
10069 (ObjcInstance::invokeDefaultMethod):
10070 (ObjcInstance::setValueOfField):
10071 (ObjcInstance::supportsSetValueOfUndefinedField):
10072 (ObjcInstance::setValueOfUndefinedField):
10073 (ObjcInstance::getValueOfField):
10074 (ObjcInstance::getValueOfUndefinedField):
10075 (ObjcInstance::defaultValue):
10076 (ObjcInstance::stringValue):
10077 (ObjcInstance::numberValue):
10078 (ObjcInstance::booleanValue):
10079 (ObjcInstance::valueOf):
10080 * bindings/objc/objc_runtime.h:
10081 * bindings/objc/objc_runtime.mm:
10082 (ObjcMethod::ObjcMethod):
10083 (ObjcMethod::name):
10084 (ObjcMethod::getMethodSignature):
10085 (ObjcMethod::setJavaScriptName):
10088 (ObjcField::valueFromInstance):
10089 (convertValueToObjcObject):
10090 (ObjcField::setValueToInstance):
10091 (ObjcArray::operator=):
10092 (ObjcArray::setValueAt):
10093 (ObjcArray::valueAt):
10094 (ObjcFallbackObjectImp::ObjcFallbackObjectImp):
10095 (ObjcFallbackObjectImp::callAsFunction):
10096 (ObjcFallbackObjectImp::defaultValue):
10098 2006-06-28 Anders Carlsson <acarlsson@apple.com>
10102 http://bugs.webkit.org/show_bug.cgi?id=8636
10103 REGRESSION: JavaScript access to Java applet causes hang (_webViewURL not implemented)
10105 * bindings/jni/jni_objc.mm:
10106 (KJS::Bindings::dispatchJNICall):
10107 Just pass nil as the calling URL. This will cause the Java plugin to use the URL of the page
10108 containing the applet (which is what we used to do).
10110 2006-06-27 Timothy Hatcher <timothy@apple.com>
10114 <rdar://problem/4406785> Add an export file to TOT JavaScriptCore like the Safari-2-0-branch
10116 * JavaScriptCore.exp: Added.
10117 * JavaScriptCore.xcodeproj/project.pbxproj:
10119 2006-06-25 Geoffrey Garen <ggaren@apple.com>
10123 - Added JSConstructorMake to match JSFunctionMake, along with test code.
10125 [ I checked in the ChangeLog before without the actual files. ]
10127 * API/JSObjectRef.cpp:
10128 (JSConstructorMake):
10129 * API/JSObjectRef.h:
10131 (myConstructor_callAsConstructor):
10135 * JavaScriptCore.xcodeproj/project.pbxproj: Moved testapi.c to the testapi
10136 target -- this was an oversight in my earlier check-in.
10138 2006-06-25 Timothy Hatcher <timothy@apple.com>
10142 Bug 9574: Drosera should show inline scripts within the original HTML
10143 http://bugs.webkit.org/show_bug.cgi?id=9574
10145 Pass the starting line number and error message to the debugger.
10147 * kjs/debugger.cpp:
10148 (Debugger::sourceParsed):
10150 * kjs/function.cpp:
10151 (KJS::GlobalFuncImp::callAsFunction):
10152 * kjs/function_object.cpp:
10153 (FunctionObjectImp::construct):
10154 * kjs/interpreter.cpp:
10155 (KJS::Interpreter::evaluate):
10157 2006-06-24 Alexey Proskuryakov <ap@nypop.com>
10159 Rubber-stamped by Eric.
10161 Add a -h (do not follow symlinks) option to ln in derived sources build script (without it,
10162 a symlink was created inside the source directory on second build).
10164 * JavaScriptCore.xcodeproj/project.pbxproj:
10166 2006-06-24 David Kilzer <ddkilzer@kilzer.net>
10168 Reviewed by Timothy.
10170 * Info.plist: Fixed copyright to include 2003-2006.
10172 2006-06-24 Alexey Proskuryakov <ap@nypop.com>
10176 - http://bugs.webkit.org/show_bug.cgi?id=9418
10177 WebKit will not build when Space exists in path
10179 * JavaScriptCore.xcodeproj/project.pbxproj: Enclose search paths in quotes; create symlinks to
10180 avoid passing paths with spaces to make.
10182 2006-06-23 Timothy Hatcher <timothy@apple.com>
10186 Adding more operator[] overloads for long and short types.
10189 (WTF::Vector::operator[]):
10191 === JavaScriptCore-521.13 ===
10193 2006-06-22 Alexey Proskuryakov <ap@nypop.com>
10197 - http://bugs.webkit.org/show_bug.cgi?id=9539
10198 Another case error preventing build
10200 * API/JSObjectRef.cpp: Changed "identifier.h" to "Identifier.h"
10202 2006-06-22 David Kilzer <ddkilzer@kilzer.net>
10206 http://bugs.webkit.org/show_bug.cgi?id=9539
10207 Another case error preventing build
10209 * API/APICast.h: Changed "UString.h" to "ustring.h".
10211 2006-06-21 Geoffrey Garen <ggaren@apple.com>
10213 Fixed release build, fixed accidental infinite recursion due to
10214 last minute global replace gone awry.
10219 (assertEqualsAsBoolean):
10220 (assertEqualsAsNumber):
10221 (assertEqualsAsUTF8String):
10222 (assertEqualsAsCharactersPtr):
10223 * JavaScriptCore.xcodeproj/project.pbxproj:
10225 2006-06-21 Geoffrey Garen <ggaren@apple.com>
10227 Reviewed by Anders.
10229 - First cut at C API to JavaScript. Includes a unit test, 'testapi.c',
10230 and the outline of a test app, 'minidom.c'.
10232 Includes one change to JSC internals: Rename propList to getPropertyList and have it
10233 take its target property list by reference so that subclasses can
10234 add properties to the list before calling through to their superclasses.
10236 Also, I just ran prepare-ChangeLog in about 10 seconds, and I would like
10237 to give a shout-out to that.
10239 * API/APICast.h: Added.
10242 * API/JSBase.h: Added.
10243 * API/JSCallbackObject.cpp: Added.
10245 (KJS::JSCallbackObject::JSCallbackObject):
10246 (KJS::JSCallbackObject::~JSCallbackObject):
10247 (KJS::JSCallbackObject::className):
10248 (KJS::JSCallbackObject::getOwnPropertySlot):
10249 (KJS::JSCallbackObject::put):
10250 (KJS::JSCallbackObject::deleteProperty):
10251 (KJS::JSCallbackObject::implementsConstruct):
10252 (KJS::JSCallbackObject::construct):
10253 (KJS::JSCallbackObject::implementsCall):
10254 (KJS::JSCallbackObject::callAsFunction):
10255 (KJS::JSCallbackObject::getPropertyList):
10256 (KJS::JSCallbackObject::toBoolean):
10257 (KJS::JSCallbackObject::toNumber):
10258 (KJS::JSCallbackObject::toString):
10259 (KJS::JSCallbackObject::setPrivate):
10260 (KJS::JSCallbackObject::getPrivate):
10261 (KJS::JSCallbackObject::cachedValueGetter):
10262 (KJS::JSCallbackObject::callbackGetter):
10263 * API/JSCallbackObject.h: Added.
10264 (KJS::JSCallbackObject::classInfo):
10265 * API/JSCharBufferRef.cpp: Added.
10267 (JSCharBufferCreate):
10268 (JSCharBufferCreateUTF8):
10269 (JSCharBufferRetain):
10270 (JSCharBufferRelease):
10271 (JSValueCopyStringValue):
10272 (JSCharBufferGetLength):
10273 (JSCharBufferGetCharactersPtr):
10274 (JSCharBufferGetCharacters):
10275 (JSCharBufferGetMaxLengthUTF8):
10276 (JSCharBufferGetCharactersUTF8):
10277 (JSCharBufferIsEqual):
10278 (JSCharBufferIsEqualUTF8):
10279 (JSCharBufferCreateWithCFString):
10280 (CFStringCreateWithJSCharBuffer):
10281 * API/JSCharBufferRef.h: Added.
10282 * API/JSContextRef.cpp: Added.
10284 (JSContextDestroy):
10285 (JSContextGetGlobalObject):
10288 (JSContextHasException):
10289 (JSContextGetException):
10290 (JSContextClearException):
10291 (JSContextSetException):
10292 * API/JSContextRef.h: Added.
10293 * API/JSObjectRef.cpp: Added.
10297 (JSObjectGetDescription):
10298 (JSObjectGetPrototype):
10299 (JSObjectSetPrototype):
10300 (JSObjectHasProperty):
10301 (JSObjectGetProperty):
10302 (JSObjectSetProperty):
10303 (JSObjectDeleteProperty):
10304 (JSObjectGetPrivate):
10305 (JSObjectSetPrivate):
10306 (JSObjectIsFunction):
10307 (JSObjectCallAsFunction):
10308 (JSObjectIsConstructor):
10309 (JSObjectCallAsConstructor):
10310 (__JSPropertyListEnumerator::__JSPropertyListEnumerator):
10311 (JSObjectCreatePropertyEnumerator):
10312 (JSPropertyEnumeratorGetNext):
10313 (JSPropertyEnumeratorRetain):
10314 (JSPropertyEnumeratorRelease):
10315 (JSPropertyListAdd):
10316 * API/JSObjectRef.h: Added.
10317 * API/JSValueRef.cpp: Added.
10319 (JSValueIsUndefined):
10321 (JSValueIsBoolean):
10326 (JSValueIsStrictEqual):
10331 (JSValueToBoolean):
10336 * API/JSValueRef.h: Added.
10337 * API/JavaScriptCore.h: Added.
10338 * API/minidom.c: Added.
10340 * API/minidom.html: Added.
10341 * API/minidom.js: Added.
10342 * API/testapi.c: Added.
10343 (assertEqualsAsBoolean):
10344 (assertEqualsAsNumber):
10345 (assertEqualsAsUTF8String):
10346 (assertEqualsAsCharactersPtr):
10347 (assertEqualsAsCharacters):
10348 (MyObject_initialize):
10349 (MyObject_copyDescription):
10350 (MyObject_hasProperty):
10351 (MyObject_getProperty):
10352 (MyObject_setProperty):
10353 (MyObject_deleteProperty):
10354 (MyObject_getPropertyList):
10355 (MyObject_callAsFunction):
10356 (MyObject_callAsConstructor):
10357 (MyObject_convertToType):
10358 (MyObject_finalize):
10359 (print_callAsFunction):
10361 (createStringWithContentsOfFile):
10362 * API/testapi.js: Added.
10364 * JavaScriptCore.xcodeproj/project.pbxproj:
10365 * bindings/npruntime_impl.h:
10366 * kjs/array_instance.h:
10367 * kjs/array_object.cpp:
10368 (ArrayInstance::getPropertyList):
10369 * kjs/interpreter.cpp:
10370 (KJS::Interpreter::evaluate):
10372 (ForInNode::execute):
10374 (KJS::JSObject::put):
10375 (KJS::JSObject::canPut):
10376 (KJS::JSObject::deleteProperty):
10377 (KJS::JSObject::propertyIsEnumerable):
10378 (KJS::JSObject::getPropertyAttributes):
10379 (KJS::JSObject::getPropertyList):
10381 * kjs/property_map.cpp:
10382 (KJS::PropertyMap::get):
10383 * kjs/property_map.h:
10384 * kjs/scope_chain.cpp:
10385 (KJS::ScopeChain::print):
10386 * kjs/string_object.cpp:
10387 (StringInstance::getPropertyList):
10388 * kjs/string_object.h:
10390 (KJS::UString::Rep::ref):
10392 2006-06-20 Timothy Hatcher <timothy@apple.com>
10396 Make sure we clear the exception before returning so
10397 that future calls will not fail because of an earlier
10398 exception state. Assert on entry that the WebScriptObject
10399 is working with an ExecState that dose not have an exception.
10400 Document that evaluateWebScript and callWebScriptMethod return
10401 WebUndefined when an exception is thrown.
10403 * bindings/objc/WebScriptObject.h:
10404 * bindings/objc/WebScriptObject.mm:
10405 (-[WebScriptObject callWebScriptMethod:withArguments:]):
10406 (-[WebScriptObject evaluateWebScript:]):
10407 (-[WebScriptObject setValue:forKey:]):
10408 (-[WebScriptObject valueForKey:]):
10409 (-[WebScriptObject removeWebScriptKey:]):
10410 (-[WebScriptObject webScriptValueAtIndex:]):
10411 (-[WebScriptObject setWebScriptValueAtIndex:value:]):
10413 2006-06-19 Anders Carlsson <acarlsson@apple.com>
10417 * kjs/interpreter.cpp:
10418 (KJS::TimeoutChecker::pauseTimeoutCheck):
10419 (KJS::TimeoutChecker::resumeTimeoutCheck):
10420 Fix argument order in setitimer calls.
10422 2006-06-18 Anders Carlsson <acarlsson@apple.com>
10426 * kjs/interpreter.cpp:
10427 (KJS::TimeoutChecker::pauseTimeoutCheck):
10428 Do nothing if the timeout check hasn't been started.
10430 (KJS::TimeoutChecker::resumeTimeoutCheck):
10431 Do nothing if the timeout check hasn't been started.
10432 Use the right signal handler when unblocking.
10434 (KJS::Interpreter::handleTimeout):
10435 pause/resume the timeout check around the call to
10436 shouldInterruptScript().
10438 2006-06-16 Ben Goodger <beng@google.com>
10442 http://bugs.webkit.org/show_bug.cgi?id=9491
10443 Windows build breaks in interpreter.cpp
10445 * kjs/interpreter.cpp
10446 (KJS::TimeoutChecker::pauseTimeoutCheck):
10447 (KJS::TimeoutChecker::resumeTimeoutCheck):
10448 Make sure to only assert equality with s_executingInterpreter when it
10449 is being used (i.e. when HAVE(SYS_TIME_H) == true)
10451 2006-06-17 David Kilzer <ddkilzer@kilzer.net>
10455 http://bugs.webkit.org/show_bug.cgi?id=9477
10456 REGRESSION: fast/dom/replaceChild.html crashes on WebKit ToT in debug build
10458 * kjs/function.cpp:
10459 (KJS::FunctionImp::callAsFunction): Refetch the debugger after executing the function
10460 in case the WebFrame it was running in has since been destroyed.
10462 2006-06-17 David Kilzer <ddkilzer@kilzer.net>
10464 Reviewed by ggaren.
10466 http://bugs.webkit.org/show_bug.cgi?id=9476
10467 REGRESSION: Reproducible crash after closing window after viewing
10468 css2.1/t0803-c5501-imrgn-t-00-b-ag.html
10470 * kjs/debugger.cpp:
10471 (Debugger::detach): Call setDebugger(0) for all interpreters removed from
10472 the 'attached to a debugger' list.
10474 2006-06-17 Anders Carlsson <acarlsson@apple.com>
10476 Reviewed by Maciej and Geoff.
10478 http://bugs.webkit.org/show_bug.cgi?id=7080
10479 Provide some way to stop a JavaScript infinite loop
10481 * kjs/completion.h:
10483 Add Interrupted completion type.
10485 * kjs/function.cpp:
10486 (KJS::FunctionImp::callAsFunction):
10487 (KJS::GlobalFuncImp::callAsFunction):
10488 Only set the exception on the new ExecState if the current one has had one.
10490 * kjs/interpreter.cpp:
10491 (KJS::TimeoutChecker::startTimeoutCheck):
10492 (KJS::TimeoutChecker::stopTimeoutCheck):
10493 (KJS::TimeoutChecker::alarmHandler):
10494 (KJS::TimeoutChecker::pauseTimeoutCheck):
10495 (KJS::TimeoutChecker::resumeTimeoutCheck):
10496 New TimeoutChecker class which handles setting Interpreter::m_timedOut flag after a given
10497 period of time. This currently only works on Unix platforms where setitimer and signals are used.
10499 (KJS::Interpreter::Interpreter):
10500 Initialize new member variables.
10502 (KJS::Interpreter::~Interpreter):
10503 Destroy the timeout checker.
10505 (KJS::Interpreter::startTimeoutCheck):
10506 (KJS::Interpreter::stopTimeoutCheck):
10507 (KJS::Interpreter::pauseTimeoutCheck):
10508 (KJS::Interpreter::resumeTimeoutCheck):
10509 Call the timeout checker.
10511 (KJS::Interpreter::handleTimeout):
10512 Called on timeout. Resets the m_timedOut flag and calls shouldInterruptScript.
10514 * kjs/interpreter.h:
10515 (KJS::Interpreter::setTimeoutTime):
10516 New function for setting the timeout time.
10518 (KJS::Interpreter::shouldInterruptScript):
10519 New function. The idea is that this should be overridden by subclasses in order to for example
10520 pop up a dialog asking the user if the script should be interrupted.
10522 (KJS::Interpreter::checkTimeout):
10523 New function which checks the m_timedOut flag and calls handleTimeout if it's set.
10526 (DoWhileNode::execute):
10527 (WhileNode::execute):
10528 (ForNode::execute):
10529 Call Interpreter::checkTimeout after each iteration of the loop.
10531 2006-06-15 Timothy Hatcher <timothy@apple.com>
10533 Reviewed by Geoff and Darin.
10535 Prefer the DWARF debugging symbols format for use in Xcode 2.3.
10537 * JavaScriptCore.xcodeproj/project.pbxproj:
10539 2006-06-14 Geoffrey Garen <ggaren@apple.com>
10543 - fixed http://bugs.webkit.org/show_bug.cgi?id=9438
10544 Someone broke ToT: cannot build
10546 * JavaScriptCore.xcodeproj/project.pbxproj:
10547 * bindings/runtime_root.h: Changed "Interpreter.h" to "interpreter.h"
10549 2006-06-12 Geoffrey Garen <ggaren@apple.com>
10553 * bindings/objc/WebScriptObject.mm:
10554 (+[WebScriptObject throwException:]): Restore assignment I accidentally
10555 deleted in previous commit
10557 2006-06-12 Geoffrey Garen <ggaren@apple.com>
10559 Reviewed by TimO, Maciej.
10561 - Merged InterpreterImp code into Interpreter, which implements
10562 all interpreter functionality now. This is part of my continuing quest
10563 to create an external notion of JS "execution context" that is unified and simple --
10564 something to replace the mix of Context, ContextImp, ExecState, Interpreter,
10565 InterpreterImp, and JSRun.
10567 All tests pass. Leaks test has not regressed from its baseline ~207 leaks
10568 with ~3460 leaked nodes.
10570 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
10571 * JavaScriptCore.xcodeproj/project.pbxproj:
10572 * bindings/NP_jsobject.cpp:
10573 * bindings/objc/WebScriptObject.mm:
10574 (+[WebScriptObject throwException:]):
10575 * bindings/runtime_root.cpp:
10576 * bindings/runtime_root.h:
10578 (KJS::Context::Context):
10579 * kjs/ExecState.cpp: Added.
10580 (KJS::ExecState::lexicalInterpreter):
10581 * kjs/ExecState.h: Added.
10582 (KJS::ExecState::dynamicInterpreter):
10583 * kjs/SavedBuiltins.h: Added.
10584 * kjs/bool_object.cpp:
10585 (BooleanPrototype::BooleanPrototype):
10586 * kjs/collector.cpp:
10587 (KJS::Collector::collect):
10588 (KJS::Collector::numInterpreters):
10590 * kjs/debugger.cpp:
10591 (Debugger::attach):
10592 (Debugger::detach):
10593 * kjs/function.cpp:
10594 (KJS::FunctionImp::callAsFunction):
10595 (KJS::GlobalFuncImp::callAsFunction):
10596 * kjs/function_object.cpp:
10597 (FunctionObjectImp::construct):
10598 * kjs/internal.cpp:
10600 * kjs/interpreter.cpp:
10601 (KJS::interpreterMap):
10602 (KJS::Interpreter::Interpreter):
10603 (KJS::Interpreter::init):
10604 (KJS::Interpreter::~Interpreter):
10605 (KJS::Interpreter::globalObject):
10606 (KJS::Interpreter::initGlobalObject):
10607 (KJS::Interpreter::globalExec):
10608 (KJS::Interpreter::checkSyntax):
10609 (KJS::Interpreter::evaluate):
10610 (KJS::Interpreter::builtinObject):
10611 (KJS::Interpreter::builtinFunction):
10612 (KJS::Interpreter::builtinArray):
10613 (KJS::Interpreter::builtinBoolean):
10614 (KJS::Interpreter::builtinString):
10615 (KJS::Interpreter::builtinNumber):
10616 (KJS::Interpreter::builtinDate):
10617 (KJS::Interpreter::builtinRegExp):
10618 (KJS::Interpreter::builtinError):
10619 (KJS::Interpreter::builtinObjectPrototype):
10620 (KJS::Interpreter::builtinFunctionPrototype):
10621 (KJS::Interpreter::builtinArrayPrototype):
10622 (KJS::Interpreter::builtinBooleanPrototype):
10623 (KJS::Interpreter::builtinStringPrototype):
10624 (KJS::Interpreter::builtinNumberPrototype):
10625 (KJS::Interpreter::builtinDatePrototype):
10626 (KJS::Interpreter::builtinRegExpPrototype):
10627 (KJS::Interpreter::builtinErrorPrototype):
10628 (KJS::Interpreter::builtinEvalError):
10629 (KJS::Interpreter::builtinRangeError):
10630 (KJS::Interpreter::builtinReferenceError):
10631 (KJS::Interpreter::builtinSyntaxError):
10632 (KJS::Interpreter::builtinTypeError):
10633 (KJS::Interpreter::builtinURIError):
10634 (KJS::Interpreter::builtinEvalErrorPrototype):
10635 (KJS::Interpreter::builtinRangeErrorPrototype):
10636 (KJS::Interpreter::builtinReferenceErrorPrototype):
10637 (KJS::Interpreter::builtinSyntaxErrorPrototype):
10638 (KJS::Interpreter::builtinTypeErrorPrototype):
10639 (KJS::Interpreter::builtinURIErrorPrototype):
10640 (KJS::Interpreter::mark):
10641 (KJS::Interpreter::interpreterWithGlobalObject):
10642 (KJS::Interpreter::saveBuiltins):
10643 (KJS::Interpreter::restoreBuiltins):
10644 * kjs/interpreter.h:
10645 (KJS::Interpreter::setCompatMode):
10646 (KJS::Interpreter::compatMode):
10647 (KJS::Interpreter::firstInterpreter):
10648 (KJS::Interpreter::nextInterpreter):
10649 (KJS::Interpreter::prevInterpreter):
10650 (KJS::Interpreter::debugger):
10651 (KJS::Interpreter::setDebugger):
10652 (KJS::Interpreter::setContext):
10653 (KJS::Interpreter::context):
10655 (StatementNode::hitStatement):
10656 (RegExpNode::evaluate):
10659 2006-06-12 Geoffrey Garen <ggaren@apple.com>
10661 Reviewed by Maciej.
10663 - Have *.lut.h files #include lookup.h to eliminate surprising header
10664 include order dependency.
10666 * DerivedSources.make:
10667 * kjs/array_object.cpp:
10668 * kjs/date_object.cpp:
10669 * kjs/date_object.h:
10670 (KJS::DateProtoFunc::):
10672 * kjs/math_object.cpp:
10673 * kjs/number_object.cpp:
10674 * kjs/regexp_object.cpp:
10675 * kjs/string_object.cpp:
10677 2006-06-10 Geoffrey Garen <ggaren@apple.com>
10679 - http://bugs.webkit.org/show_bug.cgi?id=8515
10680 Linux porting compile bug
10682 Fix by Mike Emmel, Reviewed by Darin.
10684 * JavaScriptCoreSources.bkl:
10688 2006-06-09 Geoffrey Garen <ggaren@apple.com>
10690 Build fix -- I think :).
10692 * JavaScriptCore.xcodeproj/project.pbxproj:
10695 2006-06-09 Geoffrey Garen <ggaren@apple.com>
10697 Reviewed by Eric (yay!).
10699 - Removed Context wrapper for ContextImp, renamed ContextImp to Context,
10700 split Context into its own file -- Context.cpp -- renamed _var to m_var,
10701 change ' *' to '* '.
10703 * JavaScriptCore.xcodeproj/project.pbxproj:
10704 * kjs/Context.cpp: Added.
10705 (KJS::Context::Context):
10706 (KJS::Context::~Context):
10707 (KJS::Context::mark):
10709 (KJS::Context::scopeChain):
10710 (KJS::Context::variableObject):
10711 (KJS::Context::setVariableObject):
10712 (KJS::Context::thisValue):
10713 (KJS::Context::callingContext):
10714 (KJS::Context::activationObject):
10715 (KJS::Context::currentBody):
10716 (KJS::Context::function):
10717 (KJS::Context::arguments):
10718 (KJS::Context::pushScope):
10719 (KJS::Context::seenLabels):
10720 * kjs/function.cpp:
10721 (KJS::FunctionImp::callAsFunction):
10722 (KJS::FunctionImp::processParameters):
10723 (KJS::FunctionImp::argumentsGetter):
10724 (KJS::GlobalFuncImp::callAsFunction):
10725 * kjs/internal.cpp:
10726 (KJS::InterpreterImp::evaluate):
10728 (KJS::InterpreterImp::setContext):
10729 (KJS::InterpreterImp::context):
10730 * kjs/interpreter.cpp:
10731 * kjs/interpreter.h:
10732 (KJS::ExecState::context):
10733 (KJS::ExecState::ExecState):
10736 (currentSourceURL):
10737 (ThisNode::evaluate):
10738 (ResolveNode::evaluate):
10739 (FunctionCallResolveNode::evaluate):
10740 (PostfixResolveNode::evaluate):
10741 (DeleteResolveNode::evaluate):
10742 (TypeOfResolveNode::evaluate):
10743 (PrefixResolveNode::evaluate):
10744 (AssignResolveNode::evaluate):
10745 (VarDeclNode::evaluate):
10746 (VarDeclNode::processVarDecls):
10747 (DoWhileNode::execute):
10748 (WhileNode::execute):
10749 (ForNode::execute):
10750 (ForInNode::execute):
10751 (ContinueNode::execute):
10752 (BreakNode::execute):
10753 (ReturnNode::execute):
10754 (WithNode::execute):
10755 (SwitchNode::execute):
10756 (LabelNode::execute):
10757 (TryNode::execute):
10758 (FuncDeclNode::processFuncDecl):
10759 (FuncExprNode::evaluate):
10761 2006-06-07 Geoffrey Garen <ggaren@apple.com>
10763 Removed API directory I prematurely/accidentally added.
10767 2006-06-05 Mitz Pettel <opendarwin.org@mitzpettel.com>
10769 Reviewed and landed by Geoff.
10771 - fix a regression in ecma_3/String/regress-104375.js
10773 * kjs/string_object.cpp:
10774 (substituteBackreferences): If a 2-digit back reference is out of range,
10775 parse it as a 1-digit reference (followed by the other digit). This matches
10776 Firefox's behavior.
10778 2006-06-05 Geoffrey Garen <ggaren@apple.com>
10780 Reviewed By Maciej.
10781 Darin already reviewed this change on the branch. See <rdar://problem/4317701>.
10783 - Fixed <rdar://problem/4291345> PCRE overflow in Safari JavaScriptCore
10785 No test case because there's no behavior change.
10787 * pcre/pcre_compile.c:
10788 (read_repeat_counts): Check for integer overflow / out of bounds
10790 2006-06-05 Geoffrey Garen <ggaren@apple.com>
10794 - Changed CString length from int to size_t. We sould probably do this
10795 for UString, too. (Darin, if you're reading this: Maciej said so.)
10797 * kjs/function.cpp:
10800 (KJS::CString::CString):
10803 (KJS::CString::size):
10805 2006-06-04 Geoffrey Garen <ggaren@apple.com>
10807 Reviewed by Maciej.
10809 - http://bugs.webkit.org/show_bug.cgi?id=9304
10810 Minor cleanup in JavaScriptCore
10812 * kjs/value.h: Removed redundant declarations
10814 2006-06-04 Darin Adler <darin@apple.com>
10816 Reviewed by Anders.
10818 - changed deleteAllValues so it can work on "const" collections
10819 Deleting the values affects the values, not the pointers in the
10820 collection, so it's legitimate to do it to a const collection,
10821 and a case of that actually came up in the XPath code.
10824 (WTF::deleteAllPairSeconds): Use const iterators.
10825 (WTF::deleteAllValues): Take const HashMap reference as a parameter.
10827 (WTF::deleteAllValues): Take const HashSet reference as a parameter,
10828 and use const iterators.
10830 (WTF::deleteAllValues): Take const Vector reference as a parameter.
10832 - added more functions that are present in <math.h> on some platforms,
10833 but not on others; moved here from various files in WebCore
10835 * wtf/MathExtras.h:
10839 (lroundf): Tweaked.
10844 2006-06-02 Mitz Pettel <opendarwin.org@mitzpettel.com>
10846 Reviewed by ggaren.
10848 - http://bugs.webkit.org/show_bug.cgi?id=9234
10849 Implement $&, $' and $` replacement codes in String.prototype.replace
10851 Test: fast/js/string-replace-3.html
10853 * kjs/string_object.cpp:
10854 (substituteBackreferences): Added support for $& (matched substring),
10855 $` (everything preceding matched substring), $' (everything following
10856 matched substring) and 2-digit back references, and cleaned up a little.
10858 2006-06-02 Adele Peterson <adele@apple.com>
10862 Set incremental linking to no. This seems to fix a build problem I was seeing
10863 where dftables couldn't find a dll.
10865 * JavaScriptCore.vcproj/dftables/dftables.vcproj:
10867 2006-05-26 Steve Falkenburg <sfalken@apple.com>
10871 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
10873 === JavaScriptCore-521.11 ===
10875 2006-05-24 Geoffrey Garen <ggaren@apple.com>
10879 - JSC half of fix for <rdar://problem/4557926> TOT REGRESSSION: Crash
10880 occurs when attempting to view image in slideshow mode at
10881 http://d.smugmug.com/gallery/581716 ( KJS::IfNode::execute
10882 (KJS::ExecState*) + 312)
10884 On alternate threads, DOMObjects remain in the
10885 ScriptInterpreter's cache because they're not collected. So, they
10886 need an opportunity to mark their children.
10888 I'm not particularly happy with this solution because it fails to
10889 resolve many outstanding issues with the DOM object cache. Since none
10890 of those issues is a crasher or a serious compatibility concern,
10891 and since the behavior of other browsers is not much to go on in this
10892 case, I've filed <rdar://problem/4561439> about that, and I'm moving on
10895 * JavaScriptCore.xcodeproj/project.pbxproj:
10896 * kjs/collector.cpp:
10897 (KJS::Collector::collect):
10898 * kjs/internal.cpp:
10899 (KJS::InterpreterImp::mark):
10901 * kjs/interpreter.cpp:
10902 (KJS::Interpreter::mark):
10903 * kjs/interpreter.h:
10905 === JavaScriptCore-521.10 ===
10907 2006-05-22 Timothy Hatcher <timothy@apple.com>
10909 Reviewed by Eric, Kevin and Geoff.
10911 Merge open source build fixes. <rdar://problem/4555500>
10913 * kjs/collector.cpp: look at the rsp register in x86_64
10914 (KJS::Collector::markOtherThreadConservatively):
10915 * wtf/Platform.h: add x86_64 to the platform list
10917 2006-05-19 Anders Carlsson <acarlsson@apple.com>
10921 http://bugs.webkit.org/show_bug.cgi?id=8993
10922 Support function declaration in case statements
10924 * kjs/grammar.y: Get rid of StatementList and use SourceElements instead.
10927 (CaseClauseNode::evalStatements):
10928 (CaseClauseNode::processVarDecls):
10929 (CaseClauseNode::processFuncDecl):
10930 (ClauseListNode::processFuncDecl):
10931 (CaseBlockNode::processFuncDecl):
10932 (SwitchNode::processFuncDecl):
10934 (KJS::CaseClauseNode::CaseClauseNode):
10935 (KJS::ClauseListNode::ClauseListNode):
10936 (KJS::ClauseListNode::getClause):
10937 (KJS::ClauseListNode::getNext):
10938 (KJS::ClauseListNode::releaseNext):
10939 (KJS::SwitchNode::SwitchNode):
10940 Add processFuncDecl for the relevant nodes.
10942 * kjs/nodes2string.cpp:
10943 (CaseClauseNode::streamTo):
10944 next got renamed to source.
10946 2006-05-17 George Staikos <staikos@kde.org>
10948 Reviewed by Maciej, Alexey, and Eric.
10950 * pcre/pcre_compile.c:
10952 * pcre/pcre_exec.c:
10953 * wtf/UnusedParam.h:
10954 Use /**/ in .c files to compile with non-C99 and non-GCC compilers.
10957 Change include to <wtf/HashTraits.h> from "HashTraits.h" to avoid -I
10959 * wtf/unicode/qt4/UnicodeQt4.h:
10960 Use correct parentheses and correct mask for utf-32 support.
10962 2006-05-17 Alexey Proskuryakov <ap@nypop.com>
10966 - fix http://bugs.webkit.org/show_bug.cgi?id=8870
10967 Crash typing in Yahoo auto-complete widget.
10969 Test: fast/js/regexp-stack-overflow.html
10971 * pcre/pcre-config.h: Define NO_RECURSE.
10973 2006-05-16 George Staikos <staikos@kde.org>
10975 Reviewed by Maciej.
10977 Fix some warnings and strict compilation errors.
10982 2006-05-15 Alexey Proskuryakov <ap@nypop.com>
10984 * make-generated-sources.sh: Changed to be executable and removed
10985 text in the file generated by "svn diff".
10987 2006-05-15 Geoffrey Garen <ggaren@apple.com>
10989 Reviewed by Maciej.
10991 - Fixed <rdar://problem/4534904> please do not treat "debugger" as
10992 a reserved word while parsing JavaScript (and other ECMA reserved
10997 http://bugs.webkit.org/show_bug.cgi?id=6179
10998 We treat "char" as a reserved word in JavaScript and firefox/IE do
11001 (1) I unreserved most of the spec's "future reserved words" because
11002 they're not reserved in IE or FF. (Most, but not all, because IE
11003 somewhat randomly *does* reserve a few of them.)
11004 (2) I made 'debugger' a legitimate statement that acts like an empty
11005 statement because FF and IE support it.
11008 * kjs/keywords.table:
11010 2006-05-15 Tim Omernick <timo@apple.com>
11012 Reviewed by John Sullivan.
11014 Part of <rdar://problem/4466508> Add 64-bit support to the Netscape Plugin API
11016 Added to the Netscape Plugin API the concept of "plugin drawing models". The drawing model
11017 determines the kind of graphics context created by the browser for the plugin, as well as
11018 the Mac types of various Netscape Plugin API data structures.
11020 There is a drawing model to represent the old QuickDraw-based API. It is used by default
11021 if QuickDraw is available on the system, unless the plugin specifies another drawing model.
11023 The big change is the addition of the CoreGraphics drawing model. A plugin may request this
11024 drawing model to obtain access to a CGContextRef for drawing, instead of a QuickDraw CGrafPtr.
11026 * bindings/npapi.h:
11027 Define NP_NO_QUICKDRAW when compiling 64-bit; there is no 64-bit QuickDraw.
11028 Added NPNVpluginDrawingModel, NPNVsupportsQuickDrawBool, and NPNVsupportsCoreGraphicsBool
11030 Added NPDrawingModel enumeration. Currently the only drawing models are QuickDraw and
11032 NPRegion's type now depends on the drawing model specified by the plugin.
11033 NP_Port is now only defined when QuickDraw is available.
11034 Added NP_CGContext, which is the type of the NPWindow's "window" member in CoreGraphics mode.
11036 2006-05-13 Kevin M. Ollivier <kevino@theolliviers.com>
11038 Reviewed by Darin, landed by ap.
11040 - http://bugs.webkit.org/show_bug.cgi?id=8528
11041 Bakefiles (and generated Makefiles) for wx and gdk ports
11043 * make-generated-sources.sh:
11044 Added script to configure environment to run DerivedSources.make
11046 * JavaScriptCoreSources.bkl:
11047 Added JavaScriptCore sources list for Bakefile.
11050 Bakefile used to generate JavaScriptCore project files
11051 (currently only used by wx and gdk ports)
11053 2006-05-09 Steve Falkenburg <sfalken@apple.com>
11056 Minor fixes to WTF headers.
11060 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: Fix include dirs, paths to files.
11061 * JavaScriptCore.vcproj/testkjs/testkjs.vcproj: Fix include dirs.
11062 * wtf/Assertions.h: include Platform.h to get definition for COMPILER()
11063 * wtf/Vector.h: include FastMalloc.h for definition of fastMalloc, fastFree
11065 2006-05-09 Maciej Stachowiak <mjs@apple.com>
11067 Rubber stamped by Anders.
11069 - renamed kxmlcore to wtf
11075 * JavaScriptCore.xcodeproj/project.pbxproj:
11076 * bindings/c/c_instance.cpp:
11077 * bindings/objc/WebScriptObject.mm:
11078 * kjs/JSImmediate.h:
11081 * kjs/array_object.cpp:
11082 * kjs/collector.cpp:
11083 (KJS::Collector::registerThread):
11086 * kjs/function.cpp:
11087 (KJS::isStrWhiteSpace):
11089 * kjs/identifier.cpp:
11090 * kjs/internal.cpp:
11094 (Lexer::isWhiteSpace):
11095 (Lexer::isIdentStart):
11096 (Lexer::isIdentPart):
11100 * kjs/number_object.cpp:
11102 * kjs/property_map.cpp:
11103 * kjs/property_map.h:
11104 * kjs/string_object.cpp:
11105 (StringProtoFunc::callAsFunction):
11110 * kxmlcore: Removed.
11111 * kxmlcore/AlwaysInline.h: Removed.
11112 * kxmlcore/Assertions.cpp: Removed.
11113 * kxmlcore/Assertions.h: Removed.
11114 * kxmlcore/FastMalloc.cpp: Removed.
11115 * kxmlcore/FastMalloc.h: Removed.
11116 * kxmlcore/FastMallocInternal.h: Removed.
11117 * kxmlcore/Forward.h: Removed.
11118 * kxmlcore/HashCountedSet.h: Removed.
11119 * kxmlcore/HashFunctions.h: Removed.
11120 * kxmlcore/HashMap.h: Removed.
11121 * kxmlcore/HashSet.h: Removed.
11122 * kxmlcore/HashTable.cpp: Removed.
11123 * kxmlcore/HashTable.h: Removed.
11124 * kxmlcore/HashTraits.h: Removed.
11125 * kxmlcore/ListRefPtr.h: Removed.
11126 * kxmlcore/Noncopyable.h: Removed.
11127 * kxmlcore/OwnArrayPtr.h: Removed.
11128 * kxmlcore/OwnPtr.h: Removed.
11129 * kxmlcore/PassRefPtr.h: Removed.
11130 * kxmlcore/Platform.h: Removed.
11131 * kxmlcore/RefPtr.h: Removed.
11132 * kxmlcore/TCPageMap.h: Removed.
11133 * kxmlcore/TCSpinLock.h: Removed.
11134 * kxmlcore/TCSystemAlloc.cpp: Removed.
11135 * kxmlcore/TCSystemAlloc.h: Removed.
11136 * kxmlcore/UnusedParam.h: Removed.
11137 * kxmlcore/Vector.h: Removed.
11138 * kxmlcore/VectorTraits.h: Removed.
11139 * kxmlcore/unicode: Removed.
11140 * kxmlcore/unicode/Unicode.h: Removed.
11141 * kxmlcore/unicode/UnicodeCategory.h: Removed.
11142 * kxmlcore/unicode/icu: Removed.
11143 * kxmlcore/unicode/icu/UnicodeIcu.h: Removed.
11144 * kxmlcore/unicode/posix: Removed.
11145 * kxmlcore/unicode/qt3: Removed.
11146 * kxmlcore/unicode/qt4: Removed.
11147 * kxmlcore/unicode/qt4/UnicodeQt4.h: Removed.
11150 * wtf/Assertions.cpp:
11151 * wtf/Assertions.h:
11152 * wtf/FastMalloc.cpp:
11153 (WTF::TCMalloc_ThreadCache::Scavenge):
11156 (WTF::TCMallocGuard::TCMallocGuard):
11162 * wtf/FastMalloc.h:
11163 * wtf/FastMallocInternal.h:
11165 * wtf/HashCountedSet.h:
11166 * wtf/HashFunctions.h:
11169 * wtf/HashTable.cpp:
11171 * wtf/HashTraits.h:
11172 * wtf/ListRefPtr.h:
11173 * wtf/Noncopyable.h:
11174 * wtf/OwnArrayPtr.h:
11176 * wtf/PassRefPtr.h:
11178 * wtf/TCSystemAlloc.cpp:
11179 (TCMalloc_SystemAlloc):
11181 * wtf/VectorTraits.h:
11182 * wtf/unicode/UnicodeCategory.h:
11183 * wtf/unicode/icu/UnicodeIcu.h:
11185 2006-05-08 Timothy Hatcher <timothy@apple.com>
11189 * bindings/npapi.h: do not define #pragma options align=mac68k if we are 64-bit
11191 2006-05-07 Darin Adler <darin@apple.com>
11193 Reviewed and landed by Maciej.
11195 - fix http://bugs.webkit.org/show_bug.cgi?id=8765
11196 Random crashes on TOT since the form state change
11198 I haven't figured out how to construct a test for this, but this does seem to fix the
11199 problem; Mitz mentioned that a double-destroy was occurring in these functions.
11201 * kxmlcore/HashMap.h: (KXMLCore::HashMap::remove): Use RefCounter::deref instead of calling
11202 ~ValueType, because ~ValueType often results in a double-destroy, since the HashTable also
11203 destroys the element based on the storage type. The RefCounter template correctly does work
11204 only in cases where ValueType and ValueStorageType differ and this class is what's used
11205 elsewhere for the same purpose; I somehow missed this case when optimizing HashMap.
11206 * kxmlcore/HashSet.h: (KXMLCore::HashSet::remove): Ditto.
11208 2006-05-05 Darin Adler <darin@apple.com>
11210 - http://bugs.webkit.org/show_bug.cgi?id=8722
11211 IE compatibility fix in date parsing
11213 * kjs/date_object.cpp: (KJS::parseDate): Merged change that George Staikos provided
11214 from KDE 3.4.3 branch that allows day values of 0 and values that are > 1000.
11216 2006-05-04 Anders Carlsson <andersca@mac.com>
11218 Reviewed by Maciej.
11220 http://bugs.webkit.org/show_bug.cgi?id=8734
11221 Would like a Vector::append that takes another Vector
11223 * kxmlcore/Vector.h:
11224 (KXMLCore::::append):
11225 New function that takes another array.
11227 2006-05-02 Steve Falkenburg <sfalken@apple.com>
11231 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: set NDEBUG for release build
11232 * kxmlcore/FastMalloc.cpp: Prevent USE_SYSTEM_MALLOC from being defined twice
11234 2006-05-02 Anders Carlsson <andersca@mac.com>
11236 Reviewed by Maciej.
11238 * kxmlcore/HashMap.h:
11239 (KXMLCore::::operator):
11242 2006-05-01 Tim Omernick <timo@apple.com>
11244 Reviewed by Tim Hatcher.
11246 <rdar://problem/4476875> Support printing for embedded Netscape plugins
11248 * bindings/npapi.h:
11249 Fixed struct alignment problem in our npapi.h. Structs must be 68k-aligned on both pre-Mac OS X
11250 and Mac OS X systems, as this is what plugins expect.
11252 2006-05-01 Timothy Hatcher <timothy@apple.com>
11254 Reviewed by Maciej.
11256 <rdar://problem/4308243> 8F36 Regression: crash in malloc_consolidate if you use a .PAC file
11258 The original fix missed the oversized cell case. Added a test for "currentThreadIsMainThread ||
11259 imp->m_destructorIsThreadSafe" where we collect oversized cells.
11261 We don't have a way to test PAC files yet, so there's no test attached.
11263 * kjs/collector.cpp:
11264 (KJS::Collector::collect): test the thread when we collect oversized cells
11266 2006-05-01 Tim Omernick <timo@apple.com>
11270 <rdar://problem/4526114> REGRESSION (two days ago): LOG() just prints @ for NSObject substitutions
11272 * kxmlcore/Assertions.cpp:
11273 Changed sense of strstr("%@") check. I already made the same fix to the WebBrowser assertions.
11275 2006-04-28 Steve Falkenburg <sfalken@apple.com>
11277 Reviewed by kdecker
11279 Actually apply the change that was reviewed insted of checking it in with an #if 0 (oops).
11282 (main): Suppress C runtime alerts
11284 2006-04-28 Steve Falkenburg <sfalken@apple.com>
11286 Reviewed by kdecker
11288 Suppress error reporting dialog that blocks Javascript tests from completing.
11290 Real error is due to an overflow in the date/time handling functions that needs
11291 to be addressed, but this will prevent the hang running the Javascript tests
11292 on the build bot (along with the related changes).
11295 (main): Suppress C runtime alerts
11297 2006-04-27 Geoffrey Garen <ggaren@apple.com>
11301 - Minor fixups I discovered while working on the autogenerator.
11304 (findEntry): ASSERT that size is not 0, because otherwise we'll % by 0,
11305 compute a garbage address, and possibly crash.
11307 (cacheGlobalObject): Don't enumerate cached objects -- ideally, they
11308 would be hidden entirely.
11310 2006-04-21 Kevin M. Ollivier <kevino@theolliviers.com>
11314 - http://bugs.webkit.org/show_bug.cgi?id=8507
11315 Compilation fixes for building on gcc 4.0.2, and without precomp headers
11317 * kjs/operations.h:
11318 * kxmlcore/Assertions.cpp:
11319 * kxmlcore/FastMalloc.cpp:
11320 Added necessary headers to resolve compilation issues when not using
11321 precompiled headers.
11323 * kjs/value.h: Declare the JSCell class before friend declaration
11324 to resolve compilation issues with gcc 4.0.2.
11326 * kxmlcore/Platform.h: Set Unicode support to use ICU on platforms
11327 other than KDE (previously only defined for Win and Mac OS)
11329 2006-04-18 Eric Seidel <eseidel@apple.com>
11331 Reviewed by ggaren.
11333 Fix "new Function()" to correctly use lexical scoping.
11334 Add ScopeChain::print() function for debugging.
11335 <rdar://problem/4067864> REGRESSION (125-407): JavaScript failure on PeopleSoft REN Server
11337 * kjs/function_object.cpp:
11338 (FunctionObjectImp::construct):
11339 * kjs/scope_chain.cpp:
11340 (KJS::ScopeChain::print):
11341 * kjs/scope_chain.h:
11343 2006-04-14 James G. Speth <speth@end.com>
11345 Reviewed by Timothy.
11347 Bug 8389: support for Cocoa bindings - binding an NSTreeController to the WebView's DOM
11348 http://bugs.webkit.org/show_bug.cgi?id=8389
11350 Adds a category to WebScriptObject with array accessors for KVC/KVO.
11352 If super valueForKey: fails it will call valueForUndefinedKey:, which is
11353 important because it causes the right behavior to happen with bindings using
11354 the "Raises for Not Applicable Keys" flag and the "Not Applicable Placeholder"
11356 * bindings/objc/WebScriptObject.mm:
11357 (-[WebScriptObject valueForKey:]):
11358 (-[WebScriptObject count]):
11359 (-[WebScriptObject objectAtIndex:]):
11360 (-[WebUndefined description]): return "undefined"
11362 2006-04-13 Geoffrey Garen <ggaren@apple.com>
11366 * kjs/internal.cpp:
11367 (KJS::InterpreterImp::initGlobalObject): Add the built-in object
11368 prototype to the end of the global object's prototype chain instead of
11369 just blowing away its existing prototype. We need to do this because
11370 the window object has a meaningful prototype now.
11372 2006-04-13 Maciej Stachowiak <mjs@apple.com>
11376 - fix testkjs to not show false-positive KJS::Node leaks in debug builds
11382 2006-04-11 Geoffrey Garen <ggaren@apple.com>
11384 Reviewed by Maciej.
11386 Minor code cleanup -- passes all the JS tests.
11388 * kjs/object_object.cpp:
11389 (ObjectObjectImp::construct):
11390 (ObjectObjectImp::callAsFunction):
11392 2006-04-11 Darin Adler <darin@apple.com>
11394 - another attempt to fix Windows build -- Vector in Forward.h was not working
11396 * kxmlcore/Forward.h: Remove Vector.
11397 * kxmlcore/Vector.h: Add back default arguments, remove include of
11400 2006-04-11 Darin Adler <darin@apple.com>
11402 - try to fix Windows build -- HashForward.h was not working
11404 * kxmlcore/HashForward.h: Removed.
11406 * JavaScriptCore.xcodeproj/project.pbxproj: Remove HashForward.h.
11407 * kjs/collector.h: Remove use of HashForward.h.
11408 * kxmlcore/HashCountedSet.h: Remove include of HashForward.h, restore
11410 * kxmlcore/HashMap.h: Ditto.
11411 * kxmlcore/HashSet.h: Ditto.
11413 2006-04-11 David Harrison <harrison@apple.com>
11417 - fixed clean build, broken by Darin's check-in
11419 * kjs/date_object.cpp: Add needed include of lookup.h.
11420 * kjs/regexp_object.cpp: Move include of .lut.h file below other includes.
11422 2006-04-10 Darin Adler <darin@apple.com>
11424 Rubber-stamped by John Sullivan.
11426 - switched from a shell script to a makefile for generated files
11427 - removed lots of unneeded includes
11428 - added new Forward.h and HashForward.h headers that allow compiling with
11429 fewer unneeded templates
11431 * DerivedSources.make: Added.
11432 * generate-derived-sources: Removed.
11433 * JavaScriptCore.xcodeproj/project.pbxproj: Added new files, changed to use
11434 DerivedSources.make.
11436 * kxmlcore/Forward.h: Added.
11437 * kxmlcore/HashForward.h: Added.
11439 * kxmlcore/HashCountedSet.h: Include HashForward for default args.
11440 * kxmlcore/HashMap.h: Ditto.
11441 * kxmlcore/HashSet.h: Ditto.
11445 Moved KJS_MAX_STACK into the .cpp file.
11447 * bindings/NP_jsobject.cpp:
11448 * bindings/c/c_instance.h:
11449 * bindings/jni/jni_class.h:
11450 * bindings/jni/jni_runtime.h:
11451 * bindings/jni/jni_utility.h:
11452 * bindings/objc/WebScriptObject.mm:
11453 * bindings/objc/WebScriptObjectPrivate.h:
11454 * bindings/objc/objc_class.h:
11455 * bindings/objc/objc_class.mm:
11456 * bindings/objc/objc_instance.h:
11457 * bindings/objc/objc_instance.mm:
11458 * bindings/objc/objc_runtime.mm:
11459 * bindings/objc/objc_utility.mm:
11460 * bindings/runtime.h:
11461 * bindings/runtime_array.cpp:
11462 * bindings/runtime_array.h:
11463 * bindings/runtime_method.cpp:
11464 * bindings/runtime_method.h:
11465 * bindings/runtime_object.cpp:
11466 * bindings/runtime_root.h:
11467 * kjs/JSImmediate.cpp:
11469 * kjs/array_object.cpp:
11470 * kjs/array_object.h:
11471 * kjs/bool_object.cpp:
11472 * kjs/bool_object.h:
11475 * kjs/debugger.cpp:
11476 * kjs/error_object.h:
11477 * kjs/function_object.h:
11480 * kjs/math_object.cpp:
11481 * kjs/math_object.h:
11484 * kjs/number_object.cpp:
11485 * kjs/number_object.h:
11486 * kjs/object_object.cpp:
11487 * kjs/operations.cpp:
11488 * kjs/protected_reference.h:
11490 * kjs/reference_list.h:
11491 * kjs/regexp_object.h:
11492 * kjs/string_object.cpp:
11493 * kjs/string_object.h:
11497 * kxmlcore/HashTable.h:
11498 * kxmlcore/ListRefPtr.h:
11499 * kxmlcore/TCPageMap.h:
11500 * kxmlcore/Vector.h:
11501 Removed unneeded header includes.
11503 2006-04-09 Geoffrey Garen <ggaren@apple.com>
11507 - Fixed http://bugs.webkit.org/show_bug.cgi?id=8284
11508 prevent unnecessary entries in the "nodes with extra refs" hash table
11510 This patch switches manually RefPtr exchange with use of
11511 RefPtr::release to ensure that a node's ref count never tops 1
11512 (in the normal case).
11515 (BlockNode::BlockNode):
11516 (CaseBlockNode::CaseBlockNode):
11518 (KJS::ArrayNode::ArrayNode):
11519 (KJS::ObjectLiteralNode::ObjectLiteralNode):
11520 (KJS::ArgumentsNode::ArgumentsNode):
11521 (KJS::VarStatementNode::VarStatementNode):
11522 (KJS::ForNode::ForNode):
11523 (KJS::CaseClauseNode::CaseClauseNode):
11524 (KJS::FuncExprNode::FuncExprNode):
11525 (KJS::FuncDeclNode::FuncDeclNode):
11527 2006-04-08 Alexey Proskuryakov <ap@nypop.com>
11531 One more attempt - use reinterpret_cast, rather than static_cast.
11533 2006-04-08 Alexey Proskuryakov <ap@nypop.com>
11537 An attempt to fix Win32 build - ICU uses wchar_t on Windows, so we need a type cast.
11539 * kxmlcore/unicode/icu/UnicodeIcu.h:
11540 (KXMLCore::Unicode::toLower):
11541 (KXMLCore::Unicode::toUpper):
11543 2006-04-08 Alexey Proskuryakov <ap@nypop.com>
11547 - fix http://bugs.webkit.org/show_bug.cgi?id=8264
11548 toLowerCase and toUpperCase don't honor special mappings
11550 Test: fast/js/string-capitalization.html
11552 * JavaScriptCore.xcodeproj/project.pbxproj: Added KXMLCore::Unicode headers to the project.
11553 * icu/unicode/putil.h: Added (copied from WebCore).
11554 * icu/unicode/uiter.h: Ditto.
11555 * icu/unicode/ustring.h: Ditto.
11556 * kjs/string_object.cpp:
11557 (StringProtoFunc::callAsFunction): Use the new KXMLCore::Unicode::toUpper() and toLower().
11558 * kjs/ustring.cpp: Removed unused (and evil) UChar::toLower() and toUpper().
11559 * kjs/ustring.h: Ditto.
11561 * kxmlcore/unicode/Unicode.h: Corrected capitalization of the word Unicode.
11562 * kxmlcore/unicode/UnicodeCategory.h: Renamed include guard macro to match file name.
11564 * kxmlcore/unicode/icu/UnicodeIcu.h:
11565 (KXMLCore::Unicode::toLower): Work on strings, not individual characters. Use ICU root locale.
11566 (KXMLCore::Unicode::toUpper): Ditto.
11567 (KXMLCore::Unicode::isFormatChar): Use int32_t, which can hold a complete code point.
11568 (KXMLCore::Unicode::isSeparatorSpace): Ditto.
11569 (KXMLCore::Unicode::category): Ditto.
11570 * kxmlcore/unicode/qt4/UnicodeQt4.h:
11571 (KXMLCore::Unicode::toLower): Work on strings, not individual characters.
11572 (KXMLCore::Unicode::toUpper): Ditto.
11573 (KXMLCore::Unicode::isFormatChar): Use int32_t, which can hold a complete code point.
11574 (KXMLCore::Unicode::isSeparatorSpace): Ditto.
11575 (KXMLCore::Unicode::category): Ditto.
11577 * tests/mozilla/ecma/String/15.5.4.12-1.js: Corrected expected results.
11578 * tests/mozilla/ecma/String/15.5.4.12-5.js: Corrected expected results.
11580 2006-04-05 Darin Adler <darin@apple.com>
11582 - attempt to fix Windows build
11584 * kxmlcore/HashMap.h: (KXMLCore::HashMap::remove): Use (*it). instead of it->.
11585 * kxmlcore/HashSet.h: (KXMLCore::HashSet::remove): Ditto.
11587 2006-04-05 Darin Adler <darin@apple.com>
11589 - attempt to fix Windows build
11591 * os-win32/stdint.h: Add int8_t, uint8_t, int64_t.
11593 2006-04-05 Darin Adler <darin@apple.com>
11595 Reviewed by Maciej.
11597 - fix memory leak introduced by the previous change
11599 * kxmlcore/HashTable.h: Specialize NeedsRef so that it correctly returns true when
11600 the value in question is a pair where one of the pair needs a ref and the other
11601 of the pair does not.
11603 2006-04-05 Darin Adler <darin@apple.com>
11605 Reviewed by Maciej.
11607 - JavaScriptCore part of fix for http://bugs.webkit.org/show_bug.cgi?id=8049
11608 StringImpl hash traits deleted value creates an init routine for WebCore
11609 <rdar://problem/4442248> REGRESSION: WebCore has init routines (8049)
11611 Change HashMap and HashSet implementation so they fold various types together.
11612 This allows us to implement maps and sets that use RefPtr<WebCore::StringImpl>
11613 and WebCore::String in terms of the underlying raw pointer type, and hence use
11614 -1 for the deleted value.
11616 * kxmlcore/HashTraits.h: Added a new type to HashTraits, StorageTraits, which is a
11617 type to be used when storing a value that has the same layout as the type itself.
11618 This is used only for non-key cases. In the case of keys, the hash function must also
11619 be considered. Moved emptyValue out of GenericHashTraitsBase into GenericHashTraits.
11620 Added a new bool to HashTraits, needsRef, which indicates whether the type needs
11621 explicit reference counting. If the type itself has needsRef true, but the storage
11622 type has needsRef false, then the HashSet or HashMap has to handle the reference
11623 counting explicitly. Added hash trait specializations for all signed integer values
11624 that give -1 as the deleted value. Gave all integers StorageTraits of the canonical
11625 integer type of the same size so int and long will share code. Gave all pointers and
11626 RefPtrs StorageTraits of the appropriately sized integer type. Removed redundant
11627 TraitType and emptyValue definitions in the pointer specialization for HashTraits.
11628 Added PairBaseHashTraits, which doesn't try to set up needsDestruction and deletedValue.
11629 Useful for types where we don't want to force the existence of deletedValue, such as
11630 the type of a pair in a HashMap which is not the actual storage type. Removed an
11631 unneeded parameter from the DeletedValueAssigner template. Added HashKeyStorageTraits
11632 template, which determines what type can be used to store a given hash key type with
11633 a given hash function, and specialized it for pointers and RefPtr so that pointer
11634 hash tables share an underlying HashTable that uses IntHash.
11636 * kxmlcore/HashTable.h: Added HashTableConstIteratorAdapter, HashTableIteratorAdapter,
11637 NeedsRef, RefCountManagerBase, RefCountManager, HashTableRefCountManagerBase, and
11638 HashTableRefCountManager. All are used by both HashSet and HashMap to handle hash
11639 tables where the type stored is not the same as the real value type.
11641 * kxmlcore/HashFunctions.h: Added a new struct named IntTypes that finds an
11642 integer type given a sizeof value. Renamed pointerHash to intHash and made it
11643 use overloading and take integer parameters. Added an IntHash struct which is
11644 a hash function that works for integers. Changed PtrHash to call IntHash with
11645 an appropriately sized integer. Made IntHash the default hash function for
11646 many integer types. Made PtrHash the default hash function for RefPtr as well
11647 as for raw pointers.
11649 * kxmlcore/HashSet.h: Changed implementation to use a separate "storage type"
11650 derived from the new traits. The HashTable will use the storage type and all
11651 necessary translation and ref/deref is done at the HashSet level. Also reorganized
11652 the file so that the HashSet is at the top and has no inline implementation inside
11653 it so it's easy to read the interface to HashSet.
11655 * kxmlcore/HashMap.h: Changed implementation to use a separate "storage type"
11656 derived from the new traits. The HashTable will use the storage type and all
11657 necessary translation and ref/deref is done at the HashMap level. Also reorganized
11658 the file so that the HashMap is at the top and has no inline implementation inside
11659 it so it's easy to read the interface to HashMap.
11661 * kxmlcore/HashMapPtrSpec.h: Removed. Superceded by optimizations in HashMap itself.
11663 * JavaScriptCore.xcodeproj/project.pbxproj: Remove HashMapPtrSpec.h, resort files,
11664 and also remove some unnecessary build settings from the aggregate target that
11665 generates derived sources.
11666 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: Ditto.
11668 2006-04-04 Timothy Hatcher <timothy@apple.com>
11672 The Debug and Release frameworks are now built with install paths relative to the build products directory.
11673 This removes the need for other projects to build with -framework WebCore and -framework JavaScriptCore.
11675 * JavaScriptCore.xcodeproj/project.pbxproj:
11677 2006-04-04 Eric Seidel <eseidel@apple.com>
11679 Reviewed by ggaren.
11682 Disable ASSERT redefinition warnings for now.
11684 * JavaScriptCore.vcproj/testkjs/testkjs.vcproj:
11685 * kxmlcore/Assertions.h:
11687 2006-04-04 Bjrn Graf <bjoern.graf@gmail.com>
11689 Reviewed by ggaren & darin. Landed by eseidel.
11691 Integrate CURL version of gettimeofday
11692 http://bugs.webkit.org/show_bug.cgi?id=7399
11693 Disable crash report dialogs for testkjs.exe in Release mode
11694 http://bugs.webkit.org/show_bug.cgi?id=8113
11697 (StopWatch::start):
11699 (StopWatch::getElapsedMS):
11703 2006-04-04 Eric Seidel <eseidel@apple.com>
11707 * kjs/number_object.cpp:
11708 (NumberProtoFunc::callAsFunction): remove trunc() to fix win32.
11710 2006-03-12 Maciej Stachowiak <mjs@apple.com>
11714 - fixed "toPrecision sometimes messes up the last digit on intel Macs"
11715 http://bugs.webkit.org/show_bug.cgi?id=7748
11717 * kjs/number_object.cpp:
11718 (intPow10): Compute integer powers of 10 using exponentiation by squaring.
11719 (NumberProtoFunc::callAsFunction): Use intPow10(n) in place of all pow(10.0, n),
11720 plus a bit of refactoring.
11722 2006-04-03 Darin Adler <darin@apple.com>
11724 - tweak config.h and Platform.h to try to get buildbot working
11725 (making some small changes at the same time)
11727 * kjs/config.h: Removed now-unneeded HAVE_ICU.
11728 * kxmlcore/Platform.h: Tweak how platform gets set up. Move all the
11729 USE stuff to the end.
11731 2006-04-03 George Staikos <staikos@opensource.apple.com>
11733 Reviewed by Maciej.
11735 Fix Win32 build breakage from previous commit, remove unused forward.
11737 2006-04-03 George Staikos <staikos@opensource.apple.com>
11739 Reviewed by Maciej.
11741 Implement a unicode abstraction layer to make JavaScriptCore much more
11742 easily ported to other platforms without having to take in libicu. Also
11743 makes the unicode related code easier to understand.
11745 2006-04-03 Timothy Hatcher <timothy@apple.com>
11749 Fixes <rdar://problem/4498338> JavaScriptCore fails to compile for ppc64
11750 Other 64 bit build fixes.
11752 * kjs/collector.cpp:
11753 (KJS::Collector::markOtherThreadConservatively): test for __DARWIN_UNIX03 and use __r1
11755 (Bigint::): cast PRIVATE_mem to unsigned to prevent warning
11756 * bindings/jni/jni_utility.cpp:
11757 (KJS::Bindings::getJavaVM): cast jniError to long to prevent format warning
11758 (KJS::Bindings::getJNIEnv): cast jniError to long to prevent format warning
11759 * bindings/runtime_root.cpp:
11760 (KJS::Bindings::addNativeReference): cast CFDictionaryGetValue to unsigned long to prevent warning
11761 (KJS::Bindings::removeNativeReference): cast CFDictionaryGetValue to unsigned long to prevent warning
11763 2006-03-31 Darin Adler <darin@apple.com>
11767 - <rdar://problem/4395622> API: WebScriptObject.h incorrectly reports that -isSelectorExcludedFromWebScript returns NO by default
11769 * bindings/objc/WebScriptObject.h: Fixed comment.
11771 2006-03-31 Eric Seidel <eseidel@apple.com>
11775 A bit more code cleanup.
11777 * bindings/c/c_utility.cpp:
11778 (KJS::Bindings::convertValueToNPVariant):
11779 * bindings/objc/objc_runtime.mm:
11780 (convertValueToObjcObject):
11781 * bindings/objc/objc_utility.mm:
11782 (KJS::Bindings::convertValueToObjcValue):
11783 * kjs/function.cpp:
11784 (KJS::GlobalFuncImp::callAsFunction):
11785 * kjs/interpreter.cpp:
11786 (KJS::ExecState::lexicalInterpreter):
11787 * kjs/interpreter.h:
11788 * kjs/operations.cpp:
11791 2006-03-30 Eric Seidel <eseidel@apple.com>
11793 Reviewed by anders.
11795 Small code-style update.
11797 * kjs/operations.cpp:
11803 (KJS::strictEqual):
11810 2006-03-31 Anders Carlsson <andersca@mac.com>
11812 Reviewed by Maciej.
11814 Make sure the GetterSetterImp objects are marked as well.
11816 * kjs/internal.cpp:
11817 (KJS::GetterSetterImp::mark):
11818 Call JSCell::mark().
11820 2006-03-30 Eric Seidel <eseidel@apple.com>
11822 Reviewed by ggaren.
11824 * kjs/nodes.h: Some various small style fixes.
11826 2006-03-30 Eric Seidel <eseidel@apple.com>
11828 Reviewed by ggaren.
11830 Clean-up style issues in node.h, remove redundant initializations.
11833 (KJS::StatementNode::evaluate):
11834 (KJS::ArrayNode::ArrayNode):
11835 (KJS::ObjectLiteralNode::ObjectLiteralNode):
11836 (KJS::ArgumentsNode::ArgumentsNode):
11837 (KJS::NewExprNode::NewExprNode):
11838 (KJS::CaseClauseNode::CaseClauseNode):
11839 (KJS::FuncDeclNode::FuncDeclNode):
11841 2006-03-30 Tim Omernick <timo@apple.com>
11845 <rdar://problem/4212626> REGRESSION: LIVECONNECT: JavaScript type for Java Strings is function,
11848 * bindings/runtime.h:
11849 (KJS::Bindings::Instance::implementsCall):
11850 New method. Returns false by default. Concrete subclasses can override this return true when
11851 the bound object may be called as a function.
11852 (KJS::Bindings::Instance::invokeDefaultMethod):
11853 Since bound objects are no longer treated as functions by default, we can return jsUndefined()
11854 here instead of in concrete subclasses that decide not to implement the default method
11857 * bindings/runtime_object.cpp:
11858 (RuntimeObjectImp::implementsCall):
11859 Don't assume that the bound object is a function; instead, let the object instance decide whether
11862 * bindings/c/c_instance.h:
11863 * bindings/c/c_instance.cpp:
11864 (KJS::Bindings::CInstance::implementsCall):
11865 The object is callable if its class has an invokeDefault function.
11867 * bindings/objc/objc_instance.h:
11868 * bindings/objc/objc_instance.mm:
11869 (ObjcInstance::implementsCall):
11870 The object is callable if the ObjC instance responds to -invokeDefaultMethodWithArguments:.
11872 * bindings/jni/jni_instance.h:
11873 * bindings/jni/jni_instance.cpp:
11874 Moved bogus invokeDefaultMethod() to superclass.
11876 2006-03-29 Geoffrey Garen <ggaren@apple.com>
11880 - JavaScriptCore side of fix for <rdar://problem/4308243> 8F36
11881 Regression: crash in malloc_consolidate if you use a .PAC file
11883 The crash was a result of threaded deallocation of thread-unsafe
11884 objects. Pure JS objects are thread-safe because all JS execution
11885 is synchronized through JSLock. However, JS objects that wrap WebCore
11886 objects are thread-unsafe because JS and WebCore execution are not
11887 synchronized. That unsafety comes into play when the collector
11888 deallocates a JS object that wraps a WebCore object, thus causing the
11889 WebCore object to be deallocated.
11891 The solution here is to have each JSCell know whether it is safe to
11892 collect on a non-main thread, and to avoid collecting unsafe cells
11893 when on a non-main thread.
11895 We don't have a way to test PAC files yet, so there's no test
11896 attached to this patch.
11898 * kjs/collector.cpp:
11899 (KJS::Collector::collect):
11900 (1) Added the test "currentThreadIsMainThread ||
11901 imp->m_destructorIsThreadSafe".
11904 (KJS::gcProtectNullTolerant):
11905 (KJS::gcUnprotectNullTolerant):
11907 (KJS::JSCell::JSCell): The bools here must be bitfields, otherwise
11908 m_destructorIsThreadSafe becomes another whole word, ruining the
11909 collector optimizations we've made based on the size of a JSObject.
11910 * kxmlcore/FastMalloc.cpp:
11911 (KXMLCore::currentThreadIsMainThread):
11912 (KXMLCore::fastMallocRegisterThread):
11913 * kxmlcore/FastMalloc.h:
11915 2006-03-28 Darin Adler <darin@apple.com>
11919 - change some code that resulted in init routines on Mac OS X -- if the framework has
11920 init routines it will use memory and slow down applications that link with WebKit
11921 even in cases where those applications don't use WebKit
11923 * kjs/date_object.cpp: Changed constants that were derived by multiplying other constants
11924 to use immediate numbers instead. Apparently, double constant expressions of the type we
11925 had here are evaluated at load time.
11927 * kjs/list.cpp: Can't use OwnArrayPtr in ListImp because of the global instances of
11928 ListImp, so go back to using a plain old pointer.
11929 (KJS::List::List): Set overflow to 0 when initializing ListImp.
11930 (KJS::List::release): Replace a clear call with a delete and explicit set to 0.
11931 (KJS::List::append): Use raw pointers, and do a delete [] instead of finessing it with
11932 a swap of OwnArrayPtr.
11933 (KJS::List::copyFrom): Remove now-unneeded get().
11934 (KJS::List::copyTail): Ditto.
11936 * kjs/ustring.cpp: Changed UString::Rep::empty initializer a bit so that it doesn't get
11937 a static initializer routine. Had to get rid of one level of constant to get the compiler
11938 to understand it could initialize without any code.
11940 - added a build step that checks for init routines
11942 * JavaScriptCore.xcodeproj/project.pbxproj: Deleted now-unused custom build rule that
11943 was replaced by the generate-derived-sources script a while back. Added a custom build
11944 phase that invokes the check-for-global-initializers script.
11946 2006-03-28 Timothy Hatcher <timothy@apple.com>
11950 fixes <rdar://problem/4458539> Unable to include Security(public) and WebKit(private) headers
11952 * bindings/npapi.h: added #defines after the #ifndefs
11954 2006-03-27 Maciej Stachowiak <mjs@apple.com>
11956 Reviewed by Anders.
11958 - fixed <rdar://problem/4489745> REGRESSION: Safari crashes at to display http://www.lgphilips-lcd.com/
11961 (Node::deref): take into account the case where the extra refcount table was never created
11963 2006-03-23 David Carson <dacarson@gmail.com>
11967 - JSObject in LiveConnect not working.
11968 http://bugs.webkit.org/show_bug.cgi?id=7917
11970 * bindings/jni_jsobject.cpp:
11971 (JavaJSObject::convertJObjectToValue): Was trying to retrieve the native pointer from the wrong base
11972 class, and the GetFieldID was using the wrong signature.
11974 2006-03-23 Darin Adler <darin@apple.com>
11976 Reviewed by Maciej.
11980 * JavaScriptCore.xcodeproj/project.pbxproj: Change target name to JavaScriptCore (it was "include"!?).
11981 Also add -Y 3 option for linker.
11983 2006-03-23 Darin Adler <darin@apple.com>
11985 Reviewed by Maciej.
11987 - fix http://bugs.webkit.org/show_bug.cgi?id=7726
11988 REGRESSION: orbitz calendar fails (JavaScript function serialization/parsing)
11990 * kjs/object.h: Take function name, as well as source URL and line number, when
11991 using the special overloaded construct for making functions.
11992 * kjs/object.cpp: (KJS::JSObject::construct): Ditto.
11993 * kjs/function_object.h: Ditto.
11994 * kjs/function_object.cpp: (FunctionObjectImp::construct): Pass a name when
11995 constructing the function rather than null. Use "anonymous" when making a
11996 function using the default function constructor.
11998 * kjs/nodes2string.cpp: (FuncDeclNode::streamTo): Put a line break just before
11999 a function declaration.
12003 * kxmlcore/HashMapPtrSpec.h: Add missing needed friend declaration.
12005 2006-03-23 Darin Adler <darin@apple.com>
12007 Reviewed by Maciej.
12009 - fix http://bugs.webkit.org/show_bug.cgi?id=7805
12010 LEAK: method name leaks in KJS::Bindings::CInstance::invokeMethod
12012 * bindings/c/c_utility.h: Remove NPN_UTF16FromString declaration (not implemented).
12013 * bindings/c/c_utility.cpp:
12014 (KJS::Bindings::convertValueToNPVariant): Use DOUBLE_TO_NPVARIANT,
12015 BOOLEAN_TO_NPVARIANT, VOID_TO_NPVARIANT, NULL_TO_NPVARIANT, and
12016 OBJECT_TO_NPVARIANT. In the case of OBJECT, call _NPN_RetainObject in
12017 one case and remove a _NPN_ReleaseObject in another because this
12018 should return a retained value.
12019 (KJS::Bindings::convertNPVariantToValue): Use NPVARIANT_TO_BOOLEAN,
12020 NPVARIANT_TO_INT32, and NPVARIANT_TO_DOUBLE.
12022 * bindings/c/c_runtime.h: Removed implementations of CMethod::name and
12023 CField::name that called _NPN_UTF8FromIdentifier and hence leaked.
12024 * bindings/c/c_runtime.cpp:
12025 (KJS::Bindings::CMethod::name): Added. Returns the string from inside the
12027 (KJS::Bindings::CField::name): Added. Returns the string from inside the
12029 (KJS::Bindings::CField::valueFromInstance): Added call to _NPN_ReleaseVariantValue
12030 on the result of getProperty after using it to fix a storage leak.
12031 (KJS::Bindings::CField::setValueToInstance): Added call to _NPN_ReleaseVariantValue
12032 after pasing a value to setProperty now that the conversion function does a retain.
12034 * bindings/c/c_instance.cpp:
12035 (KJS::Bindings::CInstance::invokeMethod): Changed to use Vector for a local
12036 stack buffer. Removed special case for NPVARIANT_IS_VOID because the
12037 convertNPVariantToValue function handles that properly.
12038 (KJS::Bindings::CInstance::invokeDefaultMethod): Ditto.
12040 * bindings/NP_jsobject.h: Formatting changes only.
12041 * bindings/NP_jsobject.cpp:
12042 (jsDeallocate): Changed parameter type so we don't need a function cast.
12043 (_NPN_InvokeDefault): Use VOID_TO_NPVARIANT.
12044 (_NPN_Invoke): Use NULL_TO_NPVARIANT and VOID_TO_NPVARIANT.
12045 (_NPN_Evaluate): Use VOID_TO_NPVARIANT.
12046 (_NPN_GetProperty): Use NULL_TO_NPVARIANT and VOID_TO_NPVARIANT.
12048 * bindings/c/c_class.cpp: Formatting changes only.
12049 * bindings/c/c_class.h: Formatting changes only.
12051 * bindings/npruntime_priv.h: Removed obsolete and now-unused functions:
12052 NPN_VariantIsVoid, NPN_VariantIsNull, NPN_VariantIsUndefined,
12053 NPN_VariantIsBool, NPN_VariantIsInt32, NPN_VariantIsDouble,
12054 NPN_VariantIsString, NPN_VariantIsObject, NPN_VariantToBool,
12055 NPN_VariantToInt32, NPN_VariantToDouble, NPN_VariantToString,
12056 NPN_VariantToStringCopy, NPN_VariantToObject, NPN_InitializeVariantAsVoid,
12057 NPN_InitializeVariantAsNull, NPN_InitializeVariantAsUndefined,
12058 NPN_InitializeVariantWithBool, NPN_InitializeVariantWithInt32,
12059 NPN_InitializeVariantWithDouble, NPN_InitializeVariantWithString,
12060 NPN_InitializeVariantWithObject, and NPN_InitializeVariantWithVariant.
12061 * bindings/npruntime.cpp:
12062 (getIntIdentifierDictionary): Don't bother creating custom callbacks for the
12063 integer dictionary since the default behavior is fine for integers.
12065 2006-03-23 Mark Rowe <opendarwin.org@bdash.net.nz>
12067 Reviewed and landed by Maciej.
12069 - WebKit no longer builds with bison 2.1
12070 http://bugs.webkit.org/show_bug.cgi?id=7923
12072 * generate-derived-sources: Handle generated header named either grammar.cpp.h
12075 2006-03-22 Maciej Stachowiak <mjs@apple.com>
12079 * JavaScriptCore.xcodeproj/project.pbxproj:
12081 2006-03-21 Maciej Stachowiak <mjs@apple.com>
12083 * kjs/generate-derived-sources: Set executable property.
12085 2006-03-21 Maciej Stachowiak <mjs@apple.com>
12089 Ensure that generated source dependencies are handled properly, as follows:
12091 - Made an external script that generates the sources into a
12092 DerivedSources dir in the build products directory.
12093 - Added a new build target that builds all the generated sources
12094 if needed. Sadly it has to be a target, not a phase for Xcode to notice changes.
12095 - Added the DerivedSources dir in question to the include path.
12096 - Added the new DerivedSources dir and its contents to the project as build-relative.
12098 * JavaScriptCore.xcodeproj/project.pbxproj:
12099 * kjs/generate-derived-sources: Added. Based on the windows version - maybe someday they
12102 2006-03-11 Maciej Stachowiak <mjs@apple.com>
12106 - fixed "charAt layout test fails on intel macs; some NaNs are printed as -NaN"
12107 http://bugs.webkit.org/show_bug.cgi?id=7745
12110 (KJS::UString::from): Use "NaN" for all NaN values, regardless of sign.
12112 2006-03-16 Maciej Stachowiak <mjs@apple.com>
12116 - tweaks to my change to redo KJS::Node refcounting
12122 (Node::clearNewNodes):
12125 2006-03-16 Darin Adler <darin@apple.com>
12127 Reviewed by Maciej.
12129 - fixed Vector so that you can pass a reference to something in the vector
12130 to the append or insert functions
12132 * kxmlcore/Vector.h:
12133 (KXMLCore::Vector::expandCapacity): Added new overloads that take a pointer to adjust
12134 and return the adjusted value of the pointer.
12135 (KXMLCore::Vector::append): Pass a pointer when expanding the vector, and use it when
12136 adding the new element. Makes the case where the element moves when the vector
12138 (KXMLCore::Vector::insert): Ditto.
12140 2006-03-15 Eric Seidel <eseidel@apple.com>
12146 * kjs/date_object.cpp:
12147 (KJS::DateProtoFunc::callAsFunction): use size() not "len()"
12149 2006-03-15 Eric Seidel <eseidel@apple.com>
12153 Fix CString copy constructor, fixes Date.parse("") on Win32.
12155 * kjs/date_object.cpp:
12156 (KJS::DateProtoFunc::callAsFunction):
12158 (KJS::CString::CString):
12159 (KJS::CString::operator=):
12161 2006-03-13 Maciej Stachowiak <mjs@apple.com>
12163 Reviewed by Anders.
12165 - KJS::Node and KJS::StatementNode are bigger than they need to be
12166 http://bugs.webkit.org/show_bug.cgi?id=7775
12168 The memory usage of Node was reduced by 2 machine words per node:
12170 - sourceURL was removed and only kept on FunctionBodyNode. The
12171 source URL can only be distinct per function or top-level program node,
12172 and you always have one.
12174 - refcount was removed and kept in a separate hashtable when
12175 greater than 1. newNodes set represents floating nodes with
12176 refcount of 0. This helps because almost all nodes have a refcount of 1
12177 for almost all of their lifetime.
12179 * bindings/runtime_method.cpp:
12180 (RuntimeMethod::RuntimeMethod): Pass null body, added FIXME.
12182 (KJS::clearNewNodes): New nodes are tracked in nodes.cpp now, but still clear
12183 them at the appropriate time.
12185 (KJS::ContextImp::currentBody): added; used to retrieve source URL and sid
12187 (KJS::ContextImp::pushIteration): moved here from LabelStack
12188 (KJS::ContextImp::popIteration): ditto
12189 (KJS::ContextImp::inIteration): ditto
12190 (KJS::ContextImp::pushSwitch): ditto
12191 (KJS::ContextImp::popSwitch): ditto
12192 (KJS::ContextImp::inSwitch): ditto
12193 * kjs/function.cpp:
12194 (KJS::FunctionImp::FunctionImp): Add FunctionBodyNode* parameter.
12195 (KJS::FunctionImp::callAsFunction): Pass body to ContextImp.
12196 (KJS::FunctionImp::argumentsGetter): _context renamed to m_context.
12197 (KJS::DeclaredFunctionImp::DeclaredFunctionImp): Pass body to superclass
12199 (KJS::GlobalFuncImp::callAsFunction): Pass progNode as body for ContextImp in
12201 * kjs/function.h: Move body field from DeclaredFunctionImp to
12203 * kjs/grammar.y: Change DBG; statements no longer have a sourceid.
12204 * kjs/internal.cpp:
12205 (KJS::ContextImp::ContextImp): Initialize new m_currentBody, m_iterationDepth
12206 and m_switchDepth data members. New FunctionBodyNode* parameter - the
12207 function body provides source URL and SourceId.
12208 (KJS::InterpreterImp::mark): Use exception() function, not _exception directly.
12209 (KJS::InterpreterImp::evaluate): Pass progNode to ContextImp constructor
12210 to use as the body.
12212 (KJS::LabelStack::LabelStack): Remove iteration depth and switch depth;
12213 statement label stacks don't need these and it bloats their size. Put them
12214 in the ContextImp instead.
12215 * kjs/interpreter.cpp:
12216 (KJS::ExecState::lexicalInterpreter): Renamed _context to m_context.
12217 * kjs/interpreter.h:
12218 (KJS::ExecState::dynamicInterpreter): Renamed _context to m_context.
12219 (KJS::ExecState::context): ditto
12220 (KJS::ExecState::setException): Renamed _exception to m_exception
12221 (KJS::ExecState::clearException): ditto
12222 (KJS::ExecState::exception): ditto
12223 (KJS::ExecState::hadException): ditto
12224 (KJS::ExecState::ExecState): ditto both above renames
12226 (Node::Node): Removed initialization of line, source URL and refcount. Add to
12227 local newNodes set instead of involving parser.
12228 (Node::ref): Instead of managing refcount directly, story refcount over 1 in a
12229 HashCountedSet, and keep a separate HashSet of "floating" nodes with refcount
12231 (Node::deref): ditto
12232 (Node::refcount): ditto
12233 (Node::clearNewNodes): Destroy anything left in the new nodes set.
12234 (currentSourceId): Inline helper to get sourceId from function body via context.
12235 (currentSourceURL): ditto for sourceURL.
12236 (Node::createErrorCompletion): use new helper
12237 (Node::throwError): ditto
12238 (Node::setExceptionDetailsIfNeeded): ditto
12239 (StatementNode::StatementNode): remove initialization of l0 and sid, rename
12241 (StatementNode::setLoc): Set own m_lastLine and Node's m_line.
12242 (StatementNode::hitStatement): Get sid, first line, last line in the proper new ways.
12243 (StatListNode::StatListNode): updated for setLoc changes
12244 (BlockNode::BlockNode): ditto
12245 (DoWhileNode::execute): excpect iteraton counts on ContextImp, not LabelStack
12246 (WhileNode::execute): ditto
12247 (ForNode::execute): ditto
12248 (ForInNode::execute): ditto
12249 (ContinueNode::execute): excpect inIteration on ContextImp, not LabelStack
12250 (BreakNode::execute): excpect inIteration and inSwitch on ContextImp, not LabelStack
12251 (SwitchNode::execute): expect switch counts on ContextImp, not LabelStack
12252 (FunctionBodyNode::FunctionBodyNode): update for new setLoc
12253 (FunctionBodyNode::processFuncDecl): reindent
12254 (SourceElementsNode::SourceElementsNode): update for new setLoc
12256 (KJS::Node::lineNo): Renamed _line to m_line
12257 (KJS::StatementNode::firstLine): Use lineNo()
12258 (KJS::StatementNode::lastLine): Renamed l1 to m_lastLine
12259 (KJS::FunctionBodyNode::sourceId): added
12260 (KJS::FunctionBodyNode::sourceURL): added
12263 2006-03-14 Geoffrey Garen <ggaren@apple.com>
12265 - Fixed <rdar://problem/4478239> string sort puts "closed" before
12271 (KJS::compare): Inverted a < in order to treat the longer string as >
12272 the shorter string.
12274 2006-03-12 Alexey Proskuryakov <ap@nypop.com>
12276 Reviewed by Maciej.
12278 - fix http://bugs.webkit.org/show_bug.cgi?id=7708
12279 REGRESSION: Flash callback to JavaScript function not working.
12281 Test: plugins/invoke.html
12283 * bindings/c/c_utility.cpp:
12284 (KJS::Bindings::convertUTF8ToUTF16): Return a correct string length.
12286 2006-03-08 Eric Seidel <eseidel@apple.com>
12290 Partially fix JS on win32 by fixing hash table generation.
12292 * kjs/create_hash_table: limit << results to 32 bits.
12294 (TestFunctionImp::callAsFunction):
12296 2006-03-07 Darin Adler <darin@apple.com>
12298 * kxmlcore/Vector.h: Quick fix to try to get Windows compiling again.
12300 2006-03-07 Darin Adler <darin@apple.com>
12302 Reviewed by Anders.
12304 - fix http://bugs.webkit.org/show_bug.cgi?id=7655
12305 unwanted output while running layout tests
12307 * kjs/lexer.cpp: (Lexer::lex): Turn off the "yylex: ERROR" message.
12308 * kjs/regexp.cpp: (KJS::RegExp::RegExp): Remove the code to log errors from PCRE
12309 to standard output. I think we should arrange for the error text to be in JavaScript
12310 exceptions instead at some point.
12311 * kxmlcore/Vector.h: Add a check for overflow so that we'll abort if we pass a
12312 too-large size rather than allocating a buffer smaller than requested.
12314 2006-03-06 David Carson <dacarson@gmail.com>
12316 Reviewed by Darin, landed by ap.
12318 - Fixed http://bugs.webkit.org/show_bug.cgi?id=7582
12319 c_utility.cpp contains CFString OS X platform-dependent code; should use ICU
12321 Tested with test case from:
12322 http://bugs.webkit.org/show_bug.cgi?id=5163
12324 * bindings/c_utility.cpp
12325 (convertUTF8ToUTF16): Changed to using Unicode converter from ICU, and manual Latin-1 conversion.
12326 * icu/unicode/ucnv.h: Copied from WebCore.
12327 * icu/unicode/ucnv_err.h: Ditto.
12328 * icu/unicode/uenum.h: Ditto.
12330 2006-03-05 Darin Adler <darin@apple.com>
12332 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: Updated.
12334 2006-03-06 Mitz Pettel <opendarwin.org@mitzpettel.com>
12336 Fix suggested by Alexey Proskuryakov <ap@nypop.com>, reviewed by Maciej and Hyatt.
12338 - fix http://bugs.webkit.org/show_bug.cgi?id=7601
12339 REGRESSION (r13089): Reproducible crash dereferencing a deallocated element on google image search
12341 * kxmlcore/Platform.h: Corrected the define to enable USE(MULTIPLE_THREADS) on Mac OS X.
12343 2006-03-05 Darin Adler <darin@apple.com>
12345 Reviewed by Maciej.
12347 - http://bugs.webkit.org/show_bug.cgi?id=7616
12348 get all references to KJS::Node out of internal.h
12350 * JavaScriptCore.xcodeproj/project.pbxproj: Updated for file changes.
12352 * kjs/Parser.cpp: Added.
12353 * kjs/Parser.h: Added.
12355 * kjs/internal.cpp: Removed the Parser class.
12356 * kjs/internal.h: Ditto. Also removed unnecessary declarations of classes
12357 not used in this header.
12359 * kjs/nodes.h: Added an include of "Parser.h".
12360 * kjs/function.h: Added a declaration of FunctionBodyNode.
12362 2006-03-05 Geoffrey Garen <ggaren@apple.com>
12364 Reviewed by Maciej.
12366 - JSC support for the fix for <rdar://problem/4467143> JavaScript
12367 enumeration of HTML element properties skips DOM node properties
12370 (1) Added the KJS_DEFINE_PROTOTYPE_WITH_PROTOTYPE macro. The
12371 class definiton macro needs to know about the prototype's prototype so
12372 that the class constructor properly sets it.
12373 (2) Removed the KJS_IMPLEMENT_PROTOTYPE_WITH_PARENT macro. The class
12374 implementation macro does not need to know about the prototype's
12375 prototype, since getOwnPropertySlot should only look in the current
12376 object's property map, and not its prototype's.
12378 2006-03-05 Andrew Wellington <proton@wiretapped.net>
12380 Reviewed by Eric, landed by ap.
12382 - Remove unused breakpoint bool from StatementNodes. No test provided as
12383 there is no functionality change.
12386 (StatementNode::StatementNode):
12389 2006-03-03 Geoffrey Garen <ggaren@apple.com>
12393 - Fixed <rdar://problem/4465598> REGRESSION (TOT): Crash occurs at
12394 http://maps.google.com/?output=html ( KJS::Identifier::add(KJS::UString::Rep*)
12396 This regression was caused by my fix for 4448098. I failed to account for the
12397 deleted entry sentinel in the mehtod that saves the contents of a property map to
12398 the back/forward cache.
12400 Manual test in WebCore/manual-tests/property-map-save-crash.html
12402 * kjs/property_map.cpp:
12403 (KJS::deletedSentinel): Use 1 instead of -1 to facilitate an easy bit mask
12404 (KJS::isValid): New function: checks if a key is null or the deleted sentinel
12405 (KJS::PropertyMap::~PropertyMap): Fixed up the branch logic here for readability
12406 and a slight performance win
12407 (KJS::PropertyMap::clear):
12408 (KJS::PropertyMap::rehash):
12409 (KJS::PropertyMap::addSparseArrayPropertiesToReferenceList):
12410 (KJS::PropertyMap::save): Check keys with isValid()
12412 2006-03-02 Maciej Stachowiak <mjs@apple.com>
12414 - now fix mac build again
12416 * kjs/identifier.cpp:
12418 2006-03-02 Maciej Stachowiak <mjs@apple.com>
12420 Rubber stamped by Anders and Eric.
12422 - add fpconst.cpp to win32 build, it is now needed
12424 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
12427 2006-03-02 Maciej Stachowiak <mjs@apple.com>
12431 - fix windows build, broken by my last patch
12433 * kjs/JSImmediate.cpp:
12434 * kjs/identifier.cpp:
12435 * kxmlcore/FastMalloc.cpp:
12436 * kxmlcore/Platform.h:
12438 2006-03-01 Maciej Stachowiak <mjs@apple.com>
12442 - Set up new prototype macros and avoid using #if without defined() in JSC
12444 Added new PLATFORM macros and related, to make sure #if's all check if relevant macros
12445 are defined, and to separate core OS-level dependencies from operating environment
12446 dependencies so you can, e.g., build KDE on Mac or Windows.
12448 * kxmlcore/Platform.h: Added.
12450 - deploy them everywhere in JavaScriptCore
12452 * JavaScriptCore.xcodeproj/project.pbxproj:
12453 * bindings/jni/jni_utility.cpp:
12454 (KJS::Bindings::convertValueToJValue):
12455 * bindings/objc/WebScriptObject.mm:
12456 * bindings/objc/objc_instance.mm:
12457 (ObjcInstance::end):
12458 * bindings/softlinking.h:
12459 * bindings/testbindings.mm:
12462 * kjs/collector.cpp:
12463 (KJS::Collector::markCurrentThreadConservatively):
12464 (KJS::Collector::markOtherThreadConservatively):
12465 (KJS::Collector::markStackObjectsConservatively):
12467 * kjs/date_object.cpp:
12470 (KJS::DateProtoFunc::callAsFunction):
12471 (KJS::DateObjectImp::construct):
12478 * kjs/identifier.cpp:
12479 * kjs/internal.cpp:
12480 * kjs/interpreter.cpp:
12481 (KJS::Interpreter::evaluate):
12482 (KJS::Interpreter::createLanguageInstanceForValue):
12483 * kjs/interpreter.h:
12486 * kjs/math_object.cpp:
12489 * kjs/operations.cpp:
12494 * kjs/operations.h:
12496 (KJS::RegExp::RegExp):
12497 (KJS::RegExp::~RegExp):
12498 (KJS::RegExp::match):
12501 (StopWatch::start):
12503 (StopWatch::getElapsedMS):
12506 * kxmlcore/AlwaysInline.h:
12507 * kxmlcore/Assertions.cpp:
12508 * kxmlcore/Assertions.h:
12509 * kxmlcore/FastMalloc.cpp:
12511 * kxmlcore/FastMalloc.h:
12512 * kxmlcore/FastMallocInternal.h:
12513 * kxmlcore/HashTable.h:
12514 * kxmlcore/TCPageMap.h:
12515 * kxmlcore/TCSpinLock.h:
12516 (TCMalloc_SpinLock::Lock):
12517 (TCMalloc_SpinLock::Unlock):
12518 (TCMalloc_SlowLock):
12519 * kxmlcore/TCSystemAlloc.cpp:
12520 (TCMalloc_SystemAlloc):
12521 * os-win32/stdint.h:
12523 2006-02-28 Geoffrey Garen <ggaren@apple.com>
12527 - Fixed <rdar://problem/4448098> Switch PropertyMap deleted entry
12528 placeholder to -1 from UString::Rep::null
12530 This turned out to be only a small speedup (.12%). That's within the
12531 margin of error for super accurate JS iBench, but Shark confirms the
12532 same, so I think it's worth landing.
12534 FYI, I also confirmed that the single entry optimization in
12535 PropertyMap is a 3.2% speedup.
12537 * kjs/property_map.cpp:
12538 (KJS::PropertyMap::~PropertyMap):
12539 (KJS::PropertyMap::clear):
12540 (KJS::PropertyMap::put):
12541 (KJS::PropertyMap::insert):
12542 (KJS::PropertyMap::rehash):
12543 (KJS::PropertyMap::remove):
12544 (KJS::PropertyMap::addSparseArrayPropertiesToReferenceList):
12545 (KJS::PropertyMap::checkConsistency):
12546 * kjs/property_map.h:
12547 (KJS::PropertyMap::deletedSentinel):
12549 2006-02-27 Eric Seidel <eseidel@apple.com>
12551 Rubber-stamped by darin.
12553 Remove fpconst.cpp, unused on win32 and the cause of linker warnings.
12555 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
12557 2006-02-27 Eric Seidel <eseidel@apple.com>
12561 Fix Assertions.cpp to compile on win32.
12563 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
12564 * kxmlcore/Assertions.cpp:
12566 2006-02-27 Eric Seidel <eseidel@apple.com>
12570 Made Assertions.cpp platform independent.
12571 Moved mac-specific logging logic up into WebCore.
12572 http://bugs.webkit.org/show_bug.cgi?id=7503
12574 * JavaScriptCore.xcodeproj/project.pbxproj:
12575 * kxmlcore/Assertions.cpp: Added.
12576 * kxmlcore/Assertions.h:
12577 * kxmlcore/Assertions.mm: Removed.
12579 2006-02-27 Darin Adler <darin@apple.com>
12581 - fixed Mac Debug build, there was an unused parameter
12583 * kxmlcore/FastMalloc.cpp: (KXMLCore::fastMallocRegisterThread):
12584 Remove parameter name.
12586 * kjs/debugger.h: Fixed comment.
12588 2006-02-27 Eric Seidel <eseidel@apple.com>
12592 * kxmlcore/Vector.h:
12593 (KXMLCore::deleteAllValues): fix unused variable warning
12595 2006-02-21 Maciej Stachowiak <mjs@apple.com>
12599 - Turn off -Wno-unused-param for JavaScriptCore and get rid of unused params
12600 http://bugs.webkit.org/show_bug.cgi?id=7384
12602 * JavaScriptCore.xcodeproj/project.pbxproj:
12603 * bindings/NP_jsobject.cpp:
12605 (_NPN_InvokeDefault):
12607 (_NPN_GetProperty):
12608 (_NPN_SetProperty):
12609 (_NPN_RemoveProperty):
12610 (_NPN_HasProperty):
12612 * bindings/c/c_class.h:
12613 (KJS::Bindings::CClass::constructorAt):
12614 * bindings/c/c_utility.cpp:
12615 (KJS::Bindings::convertNPVariantToValue):
12616 * bindings/jni/jni_class.cpp:
12617 (JavaClass::methodsNamed):
12618 (JavaClass::fieldNamed):
12619 * bindings/jni/jni_instance.cpp:
12620 (JavaInstance::invokeDefaultMethod):
12621 * bindings/jni/jni_jsobject.cpp:
12622 * bindings/jni/jni_objc.mm:
12623 (-[NSObject KJS::Bindings::]):
12624 * bindings/objc/WebScriptObject.mm:
12625 (+[WebUndefined allocWithZone:]):
12626 (-[WebUndefined initWithCoder:]):
12627 (-[WebUndefined encodeWithCoder:]):
12628 (-[WebUndefined copyWithZone:]):
12629 * bindings/objc/objc_class.h:
12630 (KJS::Bindings::ObjcClass::constructorAt):
12631 * bindings/objc/objc_class.mm:
12632 (KJS::Bindings::ObjcClass::methodsNamed):
12633 (KJS::Bindings::ObjcClass::fallbackObject):
12634 * bindings/objc/objc_instance.mm:
12635 (ObjcInstance::getValueOfUndefinedField):
12636 * bindings/objc/objc_runtime.mm:
12637 (ObjcFallbackObjectImp::getOwnPropertySlot):
12638 (ObjcFallbackObjectImp::put):
12639 (ObjcFallbackObjectImp::canPut):
12640 (ObjcFallbackObjectImp::deleteProperty):
12641 (ObjcFallbackObjectImp::toBoolean):
12642 * bindings/runtime.cpp:
12643 (KJS::Bindings::Instance::createLanguageInstanceForValue):
12644 * bindings/runtime.h:
12645 (KJS::Bindings::Instance::getValueOfUndefinedField):
12646 (KJS::Bindings::Instance::setValueOfUndefinedField):
12647 * bindings/runtime_array.cpp:
12648 (RuntimeArray::lengthGetter):
12649 (RuntimeArray::indexGetter):
12650 (RuntimeArray::put):
12651 (RuntimeArray::deleteProperty):
12652 * bindings/runtime_method.cpp:
12653 (RuntimeMethod::lengthGetter):
12654 (RuntimeMethod::execute):
12655 * bindings/runtime_object.cpp:
12656 (RuntimeObjectImp::fallbackObjectGetter):
12657 (RuntimeObjectImp::fieldGetter):
12658 (RuntimeObjectImp::methodGetter):
12659 (RuntimeObjectImp::put):
12660 (RuntimeObjectImp::canPut):
12661 (RuntimeObjectImp::deleteProperty):
12662 (RuntimeObjectImp::defaultValue):
12663 (RuntimeObjectImp::callAsFunction):
12664 * bindings/runtime_root.cpp:
12665 (performJavaScriptAccess):
12666 * kjs/array_object.cpp:
12667 (ArrayInstance::lengthGetter):
12668 (ArrayInstance::getOwnPropertySlot):
12669 (ArrayPrototype::ArrayPrototype):
12670 (ArrayPrototype::getOwnPropertySlot):
12671 * kjs/bool_object.cpp:
12672 (BooleanObjectImp::BooleanObjectImp):
12673 * kjs/date_object.cpp:
12674 (KJS::DateObjectFuncImp::DateObjectFuncImp):
12675 (KJS::DateObjectFuncImp::callAsFunction):
12676 * kjs/error_object.cpp:
12677 (ErrorObjectImp::ErrorObjectImp):
12678 (NativeErrorPrototype::NativeErrorPrototype):
12679 (NativeErrorImp::NativeErrorImp):
12680 * kjs/function.cpp:
12681 (KJS::FunctionImp::argumentsGetter):
12682 (KJS::FunctionImp::lengthGetter):
12683 (KJS::Arguments::mappedIndexGetter):
12684 (KJS::ActivationImp::argumentsGetter):
12685 (KJS::ActivationImp::put):
12686 * kjs/function_object.cpp:
12687 (FunctionObjectImp::FunctionObjectImp):
12688 * kjs/internal.cpp:
12689 (KJS::GetterSetterImp::toPrimitive):
12690 (KJS::GetterSetterImp::toBoolean):
12691 * kjs/interpreter.cpp:
12692 (KJS::Interpreter::evaluate):
12693 * kjs/interpreter.h:
12694 (KJS::Interpreter::isGlobalObject):
12695 (KJS::Interpreter::interpreterForGlobalObject):
12696 (KJS::Interpreter::isSafeScript):
12698 (Lexer::makeIdentifier):
12699 (Lexer::makeUString):
12701 (KJS::staticFunctionGetter):
12702 (KJS::staticValueGetter):
12704 (StatementNode::processFuncDecl):
12705 (PropertyNode::evaluate):
12706 (PropertyNameNode::evaluate):
12707 * kjs/number_object.cpp:
12708 (NumberObjectImp::NumberObjectImp):
12709 (NumberObjectImp::getOwnPropertySlot):
12711 (KJS::JSObject::defineGetter):
12712 (KJS::JSObject::defineSetter):
12713 (KJS::JSObject::hasInstance):
12714 (KJS::JSObject::propertyIsEnumerable):
12715 * kjs/object_object.cpp:
12716 (ObjectObjectImp::ObjectObjectImp):
12717 * kjs/property_slot.cpp:
12718 (KJS::PropertySlot::undefinedGetter):
12719 (KJS::PropertySlot::functionGetter):
12720 * kjs/reference.cpp:
12721 (KJS::Reference::getPropertyName):
12722 * kjs/reference_list.cpp:
12723 (ReferenceListIterator::operator++):
12724 * kjs/regexp_object.cpp:
12725 (RegExpObjectImp::RegExpObjectImp):
12726 (RegExpObjectImp::getValueProperty):
12727 (RegExpObjectImp::putValueProperty):
12728 * kjs/string_object.cpp:
12729 (StringInstance::lengthGetter):
12730 (StringInstance::indexGetter):
12731 (StringPrototype::StringPrototype):
12732 * kxmlcore/Assertions.mm:
12733 * kxmlcore/FastMalloc.cpp:
12734 (KXMLCore::TCMalloc_PageHeap::CheckList):
12735 * kxmlcore/HashTable.h:
12736 (KXMLCore::HashTableConstIterator::checkValidity):
12737 (KXMLCore::IdentityHashTranslator::translate):
12739 (pcre_get_stringnumber):
12741 2006-02-23 Darin Adler <darin@apple.com>
12743 - try to fix buildbot failure
12745 * bindings/c/c_utility.cpp: Touch this file, which seems to not have been
12746 recompiled after additional inlining was introduced (Xcode bug?).
12748 2006-02-23 Geoffrey Garen <ggaren@apple.com>
12750 Reviewed by Darin, Maciej.
12752 - Inline some functions suggested by Shark. 2.9% speedup on super
12753 accurate JS iBench.
12755 http://bugs.webkit.org/show_bug.cgi?id=7411
12756 <rdar://problem/4448116>
12759 (KJS::ArgumentsNode::evaluateList):
12762 (KJS::ScopeChain::release):
12763 (KJS::JSObject::toPrimitive):
12764 * kjs/scope_chain.cpp:
12767 (KJS::UString::toArrayIndex):
12770 (KJS::JSValue::toObject):
12771 * kxmlcore/FastMalloc.cpp:
12772 (KXMLCore::TCMalloc_ThreadCache_FreeList::Push):
12773 (KXMLCore::TCMalloc_ThreadCache_FreeList::Pop):
12775 2006-02-21 Eric Seidel <eseidel@apple.com>
12777 Added *.user to ignore list.
12779 2006-02-21 Eric Seidel <eseidel@apple.com>
12781 Reviewed by ggaren.
12783 Add grammarWrapper.cpp to work around visual studio bug plaguing buildbot.
12785 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
12786 * JavaScriptCore.vcproj/JavaScriptCore/grammarWrapper.cpp: Added.
12788 2006-02-21 Eric Seidel <eseidel@apple.com>
12790 Reviewed by ggaren.
12792 * kjs/testkjs.cpp: #if out timeval code on win32
12794 2006-02-21 Michael Emmel <mike.emmel@gmail.com>
12798 - fix http://bugs.webkit.org/show_bug.cgi?id=7397
12799 TCPageMap.h would not compile for me because string.h was missing
12801 * kxmlcore/TCPageMap.h: Added <string.h> include.
12803 2006-02-21 Darin Adler <darin@apple.com>
12805 Reviewed by John Sullivan.
12807 - http://bugs.webkit.org/show_bug.cgi?id=7404
12808 remove a bunch of extra implementsCall overrides
12810 * JavaScriptCore.xcodeproj/project.pbxproj: Sorted files.
12812 * kjs/internal.h: Made InternalFunctionImp::callAsFunction pure virtual so that
12813 we'll get a compile error if some derived class neglects to implement it.
12815 * kjs/function.cpp: (KJS::FunctionImp::FunctionImp): Remove unneeded initialization
12816 of param, which is an OwnPtr so it gets initialized by default.
12818 * bindings/runtime_method.cpp:
12819 * bindings/runtime_method.h:
12820 * kjs/array_object.cpp:
12821 * kjs/array_object.h:
12822 * kjs/bool_object.cpp:
12823 * kjs/bool_object.h:
12824 * kjs/date_object.cpp:
12825 * kjs/date_object.h:
12826 * kjs/error_object.cpp:
12827 * kjs/error_object.h:
12828 * kjs/function.cpp:
12830 * kjs/function_object.cpp:
12831 * kjs/function_object.h:
12832 * kjs/math_object.cpp:
12833 * kjs/math_object.h:
12834 * kjs/number_object.cpp:
12835 * kjs/number_object.h:
12836 * kjs/object_object.cpp:
12837 * kjs/object_object.h:
12838 * kjs/regexp_object.cpp:
12839 * kjs/regexp_object.h:
12840 * kjs/string_object.cpp:
12841 * kjs/string_object.h:
12842 Removed many rendundant implementations of implementsCall from subclasses of
12843 InternalFunctionImp.
12845 2006-02-21 Darin Adler <darin@apple.com>
12849 * kjs/internal.cpp: (KJS::InternalFunctionImp::implementsCall):
12852 2006-02-21 Darin Adler <darin@apple.com>
12854 Change suggested by Mitz.
12856 - http://bugs.webkit.org/show_bug.cgi?id=7402
12857 REGRESSION: Methods do not execute
12859 * kjs/internal.h: Add implementsHasCall to InternalFunctionImp.
12860 * kjs/internal.cpp: (KJS::InternalFunctionImp::implementsHasCall):
12861 Return true. All the classes derived from InternalFunctionImp need
12862 to return true from this -- later we can remove all the extra
12863 implementations too.
12865 2006-02-21 Maciej Stachowiak <mjs@apple.com>
12867 - fix build breakage caused by last-minute change to my patch
12871 2006-02-20 Maciej Stachowiak <mjs@apple.com>
12873 Reviewed by Geoff and Darin.
12875 Patch from Maks Orlovich, based on work by David Faure, hand-applied and
12876 significantly reworked by me.
12878 - Patch: give internal function names (KJS merge)
12879 http://bugs.webkit.org/show_bug.cgi?id=6279
12881 * tests/mozilla/expected.html: Updated for newly fixed test.
12883 * kjs/array_object.cpp:
12884 (ArrayProtoFunc::ArrayProtoFunc):
12885 * kjs/array_object.h:
12886 * kjs/bool_object.cpp:
12887 (BooleanPrototype::BooleanPrototype):
12888 (BooleanProtoFunc::BooleanProtoFunc):
12889 * kjs/bool_object.h:
12890 * kjs/date_object.cpp:
12891 (KJS::DateProtoFunc::DateProtoFunc):
12892 (KJS::DateObjectImp::DateObjectImp):
12893 (KJS::DateObjectFuncImp::DateObjectFuncImp):
12894 * kjs/error_object.cpp:
12895 (ErrorPrototype::ErrorPrototype):
12896 (ErrorProtoFunc::ErrorProtoFunc):
12897 * kjs/error_object.h:
12898 * kjs/function.cpp:
12899 (KJS::FunctionImp::FunctionImp):
12900 (KJS::GlobalFuncImp::GlobalFuncImp):
12902 * kjs/function_object.cpp:
12903 (FunctionPrototype::FunctionPrototype):
12904 (FunctionProtoFunc::FunctionProtoFunc):
12905 (FunctionProtoFunc::callAsFunction):
12906 * kjs/function_object.h:
12907 * kjs/internal.cpp:
12908 (KJS::InterpreterImp::initGlobalObject):
12909 (KJS::InternalFunctionImp::InternalFunctionImp):
12911 (KJS::InternalFunctionImp::functionName):
12913 (KJS::staticFunctionGetter):
12914 (KJS::HashEntryFunction::HashEntryFunction):
12915 (KJS::HashEntryFunction::implementsCall):
12916 (KJS::HashEntryFunction::toBoolean):
12917 (KJS::HashEntryFunction::implementsHasInstance):
12918 (KJS::HashEntryFunction::hasInstance):
12919 * kjs/math_object.cpp:
12920 (MathFuncImp::MathFuncImp):
12921 * kjs/math_object.h:
12922 * kjs/number_object.cpp:
12923 (NumberPrototype::NumberPrototype):
12924 (NumberProtoFunc::NumberProtoFunc):
12925 * kjs/number_object.h:
12927 (KJS::JSObject::putDirectFunction):
12928 (KJS::Error::create):
12930 * kjs/object_object.cpp:
12931 (ObjectPrototype::ObjectPrototype):
12932 (ObjectProtoFunc::ObjectProtoFunc):
12933 * kjs/object_object.h:
12934 * kjs/regexp_object.cpp:
12935 (RegExpPrototype::RegExpPrototype):
12936 (RegExpProtoFunc::RegExpProtoFunc):
12937 * kjs/regexp_object.h:
12938 * kjs/string_object.cpp:
12939 (StringProtoFunc::StringProtoFunc):
12940 (StringObjectImp::StringObjectImp):
12941 (StringObjectFuncImp::StringObjectFuncImp):
12942 * kjs/string_object.h:
12944 2006-02-20 Geoffrey Garen <ggaren@apple.com>
12946 Reviewed by Darin, with help from Eric, Maciej.
12948 - More changes to support super-accurate JS iBench. Doesn't work on
12949 Windows. (Doesn't break Windows, either.) I've filed
12950 [http://bugs.webkit.org/show_bug.cgi?id=7399] about that.
12952 * kjs/interpreter.cpp:
12953 (KJS::Interpreter::evaluate): Print line numbers with exception output
12954 * kjs/testkjs.cpp: Changed " *" to "* " because Eric says that's the
12955 way we roll with .cpp files.
12956 (StopWatch::StopWatch): New class. Provides microsecond-accurate
12958 (StopWatch::~StopWatch):
12959 (StopWatch::start):
12961 (StopWatch::getElapsedMS):
12962 (TestFunctionImp::callAsFunction): Added missing return statement.
12963 Fixed up "run" to use refactored helper functions. Removed bogus
12964 return statement from "quit" case. Made "print" output to stdout
12965 instead of stderr because that makes more sense, and PERL handles
12967 (main): Factored out KXMLCore unit tests. Removed custom exception
12968 printing code because the interpreter prints exceptions for you. Added
12969 a "delete" call for the GlobalImp we allocate.
12970 (testIsInteger): New function, result of refacotring.
12971 (createStringWithContentsOfFile): New function, result of refactoring.
12972 Renamed "code" to "buffer" to match factored-out-ness.
12974 2006-02-20 Eric Seidel <eseidel@apple.com>
12978 Fix "Copy ICU DLLs..." phase.
12980 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
12981 * JavaScriptCore.vcproj/JavaScriptCore/build-generated-files.sh:
12983 2006-02-19 Darin Adler <darin@apple.com>
12985 - renamed ERROR to LOG_ERROR to fix build
12986 presumably Maciej had this change and forgot to land it
12988 * kjs/collector.cpp: Removed now-unneeded #undef ERROR.
12989 * kxmlcore/Assertions.h: Renamed ERROR to LOG_ERROR.
12990 * kxmlcore/FastMalloc.cpp: Changed MESSAGE macro to use LOG_ERROR.
12992 2006-02-18 Mitz Pettel <opendarwin.org@mitzpettel.com>
12994 Test: fast/js/toString-exception.html
12996 Reviewed by Maciej.
12998 - fix http://bugs.webkit.org/show_bug.cgi?id=7343
12999 REGRESSION: fast/js/toString-overrides.html fails when run multiple times
13001 * kjs/array_object.cpp:
13002 (ArrayProtoFunc::callAsFunction): Remove the object from the visited elements set before
13003 returning an error.
13005 2006-02-18 Darin Adler <darin@apple.com>
13007 Reviewed by Maciej.
13009 - http://bugs.webkit.org/show_bug.cgi?id=7345
13010 add insert and remove to KXMLCore::Vector
13012 * kxmlcore/Vector.h: Added "moveOverlapping", which is used in both
13013 insert and remove to slide elements within the vector. Also added
13014 "insert" and "remove" functions.
13016 2006-02-16 Geoffrey Garen <ggaren@apple.com>
13020 - Fixed <rdar://problem/4448534> TOT REGRESSION: crash in KJS::
13021 Bindings::Instance::deref when leaving page @ gigaom.com
13023 * bindings/c/c_instance.cpp:
13024 (KJS::Bindings::CInstance::~CInstance): Since we cache the class object
13025 globally, we shouldn't delete it, so don't.
13027 2006-02-16 Timothy Hatcher <timothy@apple.com>
13029 Added -Wno-deprecated-declarations to all the ObjC binding files to prevent deprecation
13030 warnings. Using <rdar://problem/4448350> to track this.
13032 * JavaScriptCore.xcodeproj/project.pbxproj:
13033 * bindings/objc/objc_jsobject.h: Removed empty file.
13034 * bindings/objc/objc_jsobject.mm: Removed empty file.
13036 2006-02-16 Tim Omernick <timo@apple.com>
13040 <rdar://problem/4428609> Flash Player 8.0.22 can crash Safari (and WebKit apps) with
13041 javascript disabled (7015)
13043 * bindings/NP_jsobject.cpp:
13044 (_NPN_CreateNoScriptObject):
13045 Returns an NPObject which is not bound to a JavaScript object. This kind of NPObject
13046 can be given to a plugin as the "window script object" when JavaScript is disabled.
13047 The object has a custom NPClass, NPNoScriptObjectClass, which has no defined methods.
13048 Because of this, none of the NPN_* functions called by the plugin on this "no script
13049 object" will cause entry into JavaScript code.
13050 (_NPN_InvokeDefault):
13051 Make sure the NPVariant is filled before returning from this function. This never
13052 mattered before because we never reached this case, having only created NPObjects of
13053 the class NPScriptObjectClass.
13058 (_NPN_GetProperty):
13061 * bindings/NP_jsobject.h:
13062 Declared _NPN_CreateNoScriptObject().
13064 2006-02-16 Darin Adler <darin@apple.com>
13066 Reviewed by me, change by Peter Kuemmel.
13068 * kjs/operations.cpp: (KJS::isNegInf): Fix Windows code, which was
13069 checking for positive infinity (rolling in fix from KDE side).
13071 2006-02-15 Geoffrey Garen <ggaren@apple.com>
13073 Reviewed by Maciej, Eric.
13075 - JavaScriptCore half of fix for <rdar://problem/4176077> CrashTracer: 6569
13076 crashes in DashboardClient at com.apple.JavaScriptCore:
13077 KJS::Bindings::ObjcFallbackObjectImp::type()
13079 WebCore and JavaScriptCore weren't sharing Instance objects very
13080 nicely. I made them use RefPtrs, and sent them to bed without dessert.
13082 * bindings/jni/jni_instance.cpp: Made _instance a RefPtr
13083 (JavaInstance::~JavaInstance):
13084 (JObjectWrapper::JObjectWrapper):
13085 * bindings/jni/jni_instance.h:
13086 (KJS::Bindings::JObjectWrapper::ref):
13087 (KJS::Bindings::JObjectWrapper::deref):
13088 * bindings/jni/jni_runtime.cpp: Made _array a RefPtr
13089 (JavaArray::~JavaArray):
13090 (JavaArray::JavaArray):
13091 * bindings/jni/jni_runtime.h:
13092 (KJS::Bindings::JavaArray::operator=):
13093 * bindings/objc/objc_runtime.h:
13094 - Prohibited copying because that would muss the ref count.
13095 - Prohibited construction without instance because an instance wrapper
13096 without an instance is almost certainly a bug.
13097 * bindings/objc/objc_runtime.mm:
13098 (ObjcFallbackObjectImp::ObjcFallbackObjectImp):
13099 * bindings/runtime.cpp:
13100 (KJS::Bindings::Instance::Instance):
13101 (KJS::Bindings::Instance::createBindingForLanguageInstance):
13102 (KJS::Bindings::Instance::createRuntimeObject):
13103 * bindings/runtime.h:
13104 (KJS::Bindings::Instance::ref):
13105 (KJS::Bindings::Instance::deref):
13106 * bindings/runtime_object.cpp:
13107 (RuntimeObjectImp::RuntimeObjectImp):
13108 (RuntimeObjectImp::fallbackObjectGetter):
13109 (RuntimeObjectImp::fieldGetter):
13110 (RuntimeObjectImp::methodGetter):
13111 (RuntimeObjectImp::getOwnPropertySlot):
13112 (RuntimeObjectImp::put):
13113 (RuntimeObjectImp::canPut):
13114 * bindings/runtime_object.h:
13115 - Removed ownsInstance data member because RefPtr takes care of
13116 instance lifetime now.
13117 - Prohibited copying because that would muss the ref count.
13118 - Prohibited construction without instance because an instance wrapper
13119 without an instance is almost certainly a bug.
13120 (KJS::RuntimeObjectImp::getInternalInstance):
13122 2006-02-15 Geoffrey Garen <ggaren@apple.com>
13126 - Applied the 4330457 change to CClass and ObjcClass as well.
13128 Once plugins work in DumpRenderTree, running run-webkit-tests --leaks
13131 This change isn't as critical because CClass and ObjcClass objects get
13132 cached globally and never deleted, but it's good practice, in case we
13133 ever do decide to delete CClass and ObjcClass objects.
13135 This change requires prohibiting copying, because we don't do any
13136 intelligent ref-counting -- when a Class is destroyed, it destroys its
13137 methods and fields unconditionally. (Java classes already prohibited
13140 * bindings/c/c_class.cpp:
13141 - Merged _commonInit and _commonDelete into constructor and destructor.
13144 (CClass::methodsNamed): Added delete callbacks
13145 (CClass::fieldNamed): Added delete callbacks
13146 * bindings/c/c_class.h: Prohibited copying
13147 * bindings/c/c_instance.cpp:
13148 (KJS::Bindings::CInstance::getClass): Changed to use the preferred
13149 class factory method, to take advantage of the global cache.
13151 [ Repeated changes applied to CClass for ObjcClass: ]
13153 * bindings/objc/objc_class.h:
13154 * bindings/objc/objc_class.mm:
13155 (KJS::Bindings::ObjcClass::ObjcClass):
13156 (KJS::Bindings::ObjcClass::~ObjcClass):
13157 (KJS::Bindings::ObjcClass::methodsNamed):
13158 (KJS::Bindings::ObjcClass::fieldNamed):
13159 * bindings/objc/objc_runtime.h:
13160 (KJS::Bindings::ObjcMethod::ObjcMethod): Initialized uninitialized
13161 variable to prevent bad CFRelease.
13162 (KJS::Bindings::ObjcMethod::~ObjcMethod): Removed erroneous ';' from
13163 if statement to prevent bad CFRelease.
13164 * bindings/objc/objc_runtime.cpp: Changed to use the preferred
13165 ObjectStructPtr, for clarity.
13167 2006-02-14 Geoffrey Garen <ggaren@apple.com>
13171 - Fixed <rdar://problem/4330457> CrashTracer: [REGRESSION] 3763 crashes
13172 in Safari at com.apple.JavaScriptCore: KJS::Bindings::JavaInstance::
13173 getClass const + 56
13175 Once plugins work in DumpRenderTree, running run-webkit-tests --leaks
13178 This was a memory leak in the bindings code. The leak was so extreme
13179 that it would cause Safari or the JVM to abort from lack of memory.
13180 Upon construction, Class objects create field and method objects,
13181 storing them in CFDictionaries. The bug was that upon destruction, the
13182 class objects released the dictionaries but didn't destroy the stored
13185 The fix is to supply CFDictionary callbacks for destroying the values
13186 added to the dictionary.
13188 * bindings/jni/jni_class.cpp:
13189 (JavaClass::JavaClass): Added delete callbacks
13190 * bindings/runtime.cpp: Added definitions for delete callbacks
13191 (KJS::Bindings::deleteMethodList):
13192 (KJS::Bindings::deleteMethod):
13193 (KJS::Bindings::deleteField):
13194 * bindings/runtime.h: Added declarations for delete callbacks
13196 2006-02-14 Timothy Hatcher <timothy@apple.com>
13198 Reviewed by Justin.
13200 Fixed <rdar://problem/4415050> STD: WebCore build steps use echo -n, which will change
13201 behavior due to POSIX version of sh
13203 * JavaScriptCore.xcodeproj/project.pbxproj: removed the use of echo -n, replaced with printf ""
13205 2006-02-13 Dave Hyatt <hyatt@apple.com>
13207 Fix Win32 bustage in JavaScriptCore.
13211 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
13212 Add JSImmediate to the Win32 project.
13214 * kjs/JSImmediate.h:
13215 (KJS::JSImmediate::fromDouble):
13216 (KJS::JSImmediate::toDouble):
13217 (KJS::JSImmediate::NanAsBits):
13218 (KJS::JSImmediate::oneAsBits):
13219 Win32 needs explicit returns after abort() for non-void functions.
13223 Win32 catches a bug in testkjs! The "return 2" should actually
13224 have been a return false.
13227 The extern decls of NaN and Inf need to be const.
13229 === JavaScriptCore-521.7 ===
13231 2006-02-13 Timothy Hatcher <timothy@apple.com>
13235 Replaced the old NS_DURING exception blocking with @try/@catch.
13237 * JavaScriptCorePrefix.h: undef try and catch to workaround a C++ conflict
13238 * bindings/objc/objc_instance.mm:
13239 (ObjcInstance::invokeMethod):
13240 (ObjcInstance::invokeDefaultMethod):
13241 (ObjcInstance::setValueOfUndefinedField):
13242 (ObjcInstance::getValueOfUndefinedField):
13243 * bindings/objc/objc_runtime.mm:
13244 (ObjcField::valueFromInstance):
13245 (ObjcField::setValueToInstance):
13246 (ObjcArray::setValueAt):
13247 (ObjcArray::valueAt):
13249 2006-02-13 Darin Adler <darin@apple.com>
13251 - fix a couple problems building on Windows, based on requests
13252 from Krzysztof Kowalczyk <kkowalczyk@gmail.com>
13254 * kjs/JSImmediate.h: Change code using non-standard u_int32/64_t types
13255 to the standard uint32/64_t. Also removed curious "isIEEE()" function
13256 that checked the sizes of some types (and type sizes alone don't tell you if
13257 the floating point conforms to the IEEE-standard). Added missing include
13260 * kjs/property_slot.h: Added missing include of <assert.h>.
13262 2006-02-12 Geoffrey Garen <ggaren@apple.com>
13266 Cleaned up testkjs, added new "run" functionality to allow scripting
13267 tests from within JS. ("run" is a part of my new super-accurate
13270 No regressions in run-javascriptcore-tests.
13273 (GlobalImp::className):
13274 (TestFunctionImp::):
13275 (TestFunctionImp::callAsFunction):
13279 2006-02-11 Alexey Proskuryakov <ap@nypop.com>
13283 - improve fix for http://bugs.webkit.org/show_bug.cgi?id=5163
13284 RealPlayer.GetTitle() Crashes Safari/Dashboard
13286 * bindings/c/c_utility.cpp: (KJS::Bindings::convertUTF8ToUTF16):
13287 Use kCFStringEncodingISOLatin1 rather than kCFStringEncodingWindowsLatin1,
13288 because the latter encoding has holes, and conversion can still fail.
13290 2006-02-10 Geoffrey Garen <ggaren@apple.com>
13294 - Inlined RefPtr assignment operators. .7% performance win on
13295 super-accurate JS iBench.
13297 * kxmlcore/RefPtr.h:
13298 (KXMLCore::::operator):
13300 2006-02-10 Geoffrey Garen <ggaren@apple.com>
13302 No review needed, just a build fix. This time for sure.
13306 2006-02-10 Geoffrey Garen <ggaren@apple.com>
13310 - Fixed build. As it goes without saying, I will not mention that I
13313 * JavaScriptCore.xcodeproj/project.pbxproj:
13314 * kjs/JSImmediate.cpp:
13315 (KJS::JSImmediate::toObject):
13317 2006-02-09 Geoffrey Garen <ggaren@apple.com>
13321 - Fixed <rdar://problem/4343730> Should switch ConstantValues (null,
13322 undefined, true, false) from JS objects to immediate values similar to
13325 2.0% performance gain on my new super-accurate version of JS iBench.
13326 (I promise to land a version of it soon.)
13328 The gist of the change:
13329 (1) The SimpleNumber class (simple_number.h) is now the JSImmediate
13330 class (JSImmediate.h/.cpp), and it handles not only numbers but also
13331 null, undefined, true, and false.
13332 (2) JSImmediate provides convenience methods for the bit masking
13333 necessary to encode and decode immediate values.
13334 (3) ConstantValues, BooleanImp, NullImp, and UndefinedImp are gone.
13335 (4) JSCell no longer implements functions like getBoolean, because
13336 only a JSImmediate can be a boolean.
13337 (5) JSImmediate no longer uses ALWAYS_INLINE because there's no need,
13338 and ALWAYS_INLINE is a non-portable option of last resort.
13339 (6) Type is now JSType, and it resides in its own file, JSType.h.
13340 Since I was there, I did some header include sorting as part of this
13343 The rest pretty much explains itself.
13345 * JavaScriptCore.xcodeproj/project.pbxproj: Removed simple_number.h,
13346 added JSImmediate.h/.cpp.
13347 * bindings/c/c_instance.cpp:
13348 (KJS::Bindings::CInstance::defaultValue):
13349 * bindings/c/c_instance.h:
13350 * bindings/c/c_utility.cpp:
13351 (KJS::Bindings::convertValueToNPVariant):
13352 * bindings/jni/jni_instance.cpp:
13353 (JavaInstance::defaultValue):
13354 * bindings/jni/jni_instance.h:
13355 * bindings/jni/jni_jsobject.cpp:
13356 (JavaJSObject::convertValueToJObject):
13357 * bindings/objc/WebScriptObject.mm:
13358 (+[WebScriptObject _convertValueToObjcValue:originExecutionContext:executionContext:]):
13359 Standardized calls to use getXXX instead of hand-rolling JSValue
13361 * bindings/objc/objc_instance.h:
13362 * bindings/objc/objc_instance.mm:
13363 (ObjcInstance::getValueOfUndefinedField):
13364 (ObjcInstance::defaultValue):
13365 * bindings/objc/objc_runtime.h:
13366 * bindings/objc/objc_runtime.mm:
13367 (ObjcFallbackObjectImp::type):
13368 (ObjcFallbackObjectImp::defaultValue):
13369 * bindings/runtime.h:
13370 (KJS::Bindings::Instance::getValueOfUndefinedField):
13371 * bindings/runtime_object.cpp:
13372 (RuntimeObjectImp::defaultValue):
13373 * bindings/runtime_object.h:
13374 * kjs/JSImmediate.h: Added.
13375 (KJS::JSImmediate::isImmediate):
13376 (KJS::JSImmediate::isNumber):
13377 (KJS::JSImmediate::isBoolean):
13378 (KJS::JSImmediate::isUndefinedOrNull):
13379 (KJS::JSImmediate::fromDouble):
13380 (KJS::JSImmediate::toDouble):
13381 (KJS::JSImmediate::toBoolean):
13382 (KJS::JSImmediate::trueImmediate):
13383 (KJS::JSImmediate::falseImmediate):
13384 (KJS::JSImmediate::NaNImmediate):
13385 (KJS::JSImmediate::undefinedImmediate):
13386 (KJS::JSImmediate::nullImmediate):
13387 (KJS::JSImmediate::tag):
13388 (KJS::JSImmediate::unTag):
13389 (KJS::JSImmediate::getTag):
13390 (KJS::JSImmediate::):
13391 (KJS::JSImmediate::isIEEE):
13392 (KJS::JSImmediate::is32bit):
13393 (KJS::JSImmediate::is64bit):
13394 (KJS::JSImmediate::NanAsBits):
13395 (KJS::JSImmediate::zeroAsBits):
13396 (KJS::JSImmediate::oneAsBits):
13398 (KJS::JSLock::lock): Removed hack-o-rama to initialize ConstantValues.
13399 * kjs/JSType.h: Added.
13400 * kjs/collector.cpp:
13401 (KJS::Collector::protect):
13402 (KJS::Collector::unprotect):
13403 (KJS::Collector::collect):
13404 * kjs/internal.cpp:
13405 (KJS::StringImp::toPrimitive):
13406 (KJS::NumberImp::toPrimitive):
13407 (KJS::NumberImp::toBoolean):
13408 (KJS::GetterSetterImp::toPrimitive):
13410 (KJS::StringImp::type):
13411 (KJS::NumberImp::type):
13413 (KJS::JSObject::type):
13414 (KJS::tryGetAndCallProperty): Replaced "Are you one of the six things
13415 I'm looking for?" test with "Are you not the one thing I'm not looking
13417 (KJS::JSObject::defaultValue):
13418 (KJS::JSObject::toPrimitive):
13420 (KJS::GetterSetterImp::type):
13421 (KJS::JSValue::isObject):
13422 * kjs/operations.cpp:
13424 (KJS::strictEqual):
13426 * kjs/reference.cpp:
13427 (KJS::Reference::deleteValue):
13428 * kjs/simple_number.h: Removed.
13429 * kjs/string_object.cpp:
13430 (StringInstance::getOwnPropertySlot): fixed indentation
13432 (KJS::JSValue::toObject):
13433 (KJS::jsNumberCell): New function to quarantine a PIC branch -- allows
13434 us to inline jsNumber without adding PIC branches to callers.
13436 (KJS::jsUndefined):
13441 (KJS::JSValue::downcast):
13442 (KJS::JSValue::isUndefinedOrNull):
13443 (KJS::JSValue::isBoolean):
13444 (KJS::JSValue::isNumber):
13445 (KJS::JSValue::isString):
13446 (KJS::JSValue::isObject):
13447 (KJS::JSValue::getBoolean):
13448 (KJS::JSValue::getNumber):
13449 (KJS::JSValue::getString):
13450 (KJS::JSValue::getObject):
13451 (KJS::JSValue::getUInt32):
13452 (KJS::JSValue::mark): Replaced !JSImmediate::is() test with assertion,
13453 resulting in a slight performance gain. Callers should always check
13454 !marked() before calling mark(), so it's impossible to call mark on
13456 (KJS::JSValue::marked):
13457 (KJS::JSValue::type):
13458 (KJS::JSValue::toPrimitive):
13459 (KJS::JSValue::toBoolean):
13460 (KJS::JSValue::toNumber):
13461 (KJS::JSValue::toString):
13463 2006-02-06 Eric Seidel <eseidel@apple.com>
13465 Add svn:ignore properties for visual studio internals.
13467 2006-02-06 Alexey Proskuryakov <ap@nypop.com>
13471 - Refactor DateInstance to provide direct access to data. Several WIN32 modifications.
13472 http://bugs.webkit.org/show_bug.cgi?id=7107
13474 - No tests added - only changed functionality on WIN32, which should be covered by
13477 * kjs/date_object.cpp:
13478 (gmtoffset): On WIN32, use the recommended global (_timezone rather than timezone).
13480 (KJS::timeZoneOffset): Removed, was basically the same as the above.
13481 (KJS::formatTime): Pass an UTC flag - UTC/local cannot be correctly selected on
13482 Windows based on struct tm itself.
13483 (KJS::DateInstance::getTime): Added.
13484 (KJS::DateInstance::getUTCTime): Added.
13485 (KJS::millisecondsToTM): Factored out from DateProtoFunc::callAsFunction().
13486 (KJS::DateObjectImp::callAsFunction): Use the new parameter to formatTime().
13487 (KJS::DateProtoFunc::callAsFunction): Updated for the other changes. The code for
13488 GetTimezoneOffset was incorrect on WIN32 - _daylight global has nothing to do
13489 with daylight savings time being in effect.
13491 * kjs/date_object.h: Added prototypes for new functions.
13493 2006-02-05 Maciej Stachowiak <mjs@apple.com>
13495 Reviewed by Anders.
13497 - fixed ~1100 KJS::Node leaked on layout tests
13498 http://bugs.webkit.org/show_bug.cgi?id=7097
13500 * kjs/internal.cpp:
13501 (KJS::Parser::noteNodeCycle):
13502 (KJS::Parser::removeNodeCycle):
13503 (KJS::clearNewNodes):
13506 (ElementNode::breakCycle):
13507 (PropertyListNode::breakCycle):
13508 (ArgumentListNode::breakCycle):
13509 (StatListNode::StatListNode):
13510 (StatListNode::breakCycle):
13511 (VarDeclListNode::breakCycle):
13512 (BlockNode::BlockNode):
13513 (ClauseListNode::breakCycle):
13514 (CaseBlockNode::CaseBlockNode):
13515 (ParameterNode::breakCycle):
13516 (SourceElementsNode::SourceElementsNode):
13517 (SourceElementsNode::breakCycle):
13519 (KJS::Node::breakCycle):
13520 (KJS::ElementNode::ElementNode):
13521 (KJS::ArrayNode::ArrayNode):
13522 (KJS::PropertyListNode::PropertyListNode):
13523 (KJS::ObjectLiteralNode::ObjectLiteralNode):
13524 (KJS::ArgumentListNode::ArgumentListNode):
13525 (KJS::ArgumentsNode::ArgumentsNode):
13526 (KJS::VarDeclListNode::VarDeclListNode):
13527 (KJS::VarStatementNode::VarStatementNode):
13528 (KJS::ForNode::ForNode):
13529 (KJS::CaseClauseNode::CaseClauseNode):
13530 (KJS::ClauseListNode::ClauseListNode):
13531 (KJS::ParameterNode::ParameterNode):
13532 (KJS::FuncExprNode::FuncExprNode):
13533 (KJS::FuncDeclNode::FuncDeclNode):
13535 2006-02-05 Maciej Stachowiak <mjs@apple.com>
13539 - fix default traits for classes to make sure default constructors get called
13541 * kxmlcore/VectorTraits.h:
13544 2006-02-04 Darin Adler <darin@apple.com>
13546 Reviewed by Maciej.
13548 - fix http://bugs.webkit.org/show_bug.cgi?id=5210
13549 REGRESSION: for/in loop with var changes global variable instead of making local
13551 Test: fast/js/for-in-var-scope.html
13554 (valueForReadModifyAssignment): Use ALWAYS_INLINE macro.
13555 (ForInNode::execute): Break out of the scope chain loop once we find and set the
13556 loop variable. We don't want to set multiple loop variables.
13557 (ForInNode::processVarDecls): Process the declaration of the loop variable.
13561 * kjs/object.cpp: (KJS::tryGetAndCallProperty): Use ALWAYS_INLINE macro.
13562 * kxmlcore/FastMalloc.cpp: Change to use ALWAYS_INLINE macro from AlwaysInline.h
13563 instead of defining it here a second time.
13565 2006-02-04 Maciej Stachowiak <mjs@apple.com>
13569 - change JavaScript collector statistics calls to use HashCountedSet instead
13570 of CFSet; other misc cleanup
13571 http://bugs.webkit.org/show_bug.cgi?id=7072
13573 * kjs/collector.cpp:
13574 (KJS::Collector::numProtectedObjects): renamed from numReferencedObjects
13576 (KJS::Collector::rootObjectTypeCounts): renamed from rootObjectClasses,
13579 (KJS::Collector::isOutOfMemory): Renamed from outOfMemory.
13582 2006-02-03 Timothy Hatcher <timothy@apple.com>
13584 Reviewed by Justin.
13586 Renamed configuration names to Debug, Release and Production.
13588 * JavaScriptCore.xcodeproj/project.pbxproj:
13590 2006-02-02 George Staikos <staikos@opensource.apple.com>
13592 Reviewed by Maciej.
13594 * kjs/lookup.h: Fix compile, merged from KDE.
13596 2006-02-02 Darin Adler <darin@apple.com>
13598 Reviewed by Maciej.
13600 - http://bugs.webkit.org/show_bug.cgi?id=7005
13601 add Noncopyable, OwnPtr, OwnArrayPtr to KXMLCore
13603 * kxmlcore/Noncopyable.h: Added.
13604 * kxmlcore/OwnArrayPtr.h: Added.
13605 * kxmlcore/OwnPtr.h: Added.
13607 * JavaScriptCore.xcodeproj/project.pbxproj: Added new files.
13610 * kjs/function.cpp: Use OwnPtr for Parameter pointers.
13612 * kjs/internal.h: Use Noncopyable for LabelStack.
13614 * kjs/list.cpp: Use OwnArrayPtr for overflow.
13616 * kjs/property_map.h:
13617 * kjs/property_map.cpp: Use OwnArrayPtr for SavedProperties.
13618 Use Vector for some stack buffers.
13620 * kjs/regexp_object.h:
13621 * kjs/regexp_object.cpp: Use OwnArrayPtr for lastOvector.
13623 2006-01-31 Maciej Stachowiak <mjs@apple.com>
13627 - fixed leak of hundreds of thousands of JS parser nodes on the layout tests, and added an exit counter
13628 that would catch them
13631 (NodeCounter::~NodeCounter): Added debug-only node counter.
13634 * kxmlcore/VectorTraits.h: Simple classes like RefPtr do in fact need destruction.
13636 2006-01-31 Darin Adler <darin@apple.com>
13638 Reviewed by Maciej.
13640 - added deleteAllValues for HashSet as well as HashMap
13641 - fixed conversion from const_iterator to iterator, which I broke a while back
13643 * kxmlcore/HashMap.h: Updated copyright date.
13644 * kxmlcore/HashSet.h: (KXMLCore::deleteAllValues): Added.
13645 * kxmlcore/HashTable.h: (KXMLCore::HashTableIterator::operator const_iterator): Added.
13647 2006-01-31 Tim Omernick <timo@apple.com>
13649 Reviewed by Geoff Garen.
13651 * bindings/c/c_utility.cpp:
13652 (KJS::Bindings::convertUTF8ToUTF16):
13653 Fixed an invalid assertion that UTF8Chars is not NULL. It is valid for it to be NULL as long as
13655 This fixes an assertion failure on TOT at <http://www.musicindiaonline.com/p/x/tJO0OOBME9.As1NMvHdW/>,
13656 where JavaScript is getting a NULL string back from some call on the Real Player plugin.
13658 2006-01-30 Anders Carlsson <andersca@mac.com>
13662 Fix http://bugs.webkit.org/show_bug.cgi?id=6907
13663 REGRESSION: United.com menus messed up due to document.all/MSIE sniff
13666 (typeStringForValue):
13667 Return "undefined" if the given object should masquerade as undefined.
13670 (KJS::JSObject::masqueradeAsUndefined):
13671 Rename from isEqualToNull.
13673 * kjs/operations.cpp:
13675 Update for name change.
13677 2006-01-29 Maciej Stachowiak <mjs@apple.com>
13681 - properly define Vector assignment operator; the private version was accidentally left
13682 in, and the template version is not enough to replace the default
13684 * kxmlcore/Vector.h:
13685 (KXMLCore::Vector::operator=):
13687 2006-01-29 Eric Seidel <eseidel@apple.com>
13691 Fix the build by applying a GCC-specific namespace hack.
13695 2006-01-29 Eric Seidel <eseidel@apple.com>
13699 Fix build on Win32.
13701 * kjs/lookup.h: fixed ::cacheGlobalObject
13702 * kxmlcore/Vector.h:
13703 (KXMLCore::Vector::operator[]): use unsigned long
13705 2006-01-29 Maciej Stachowiak <mjs@apple.com>
13707 Reviewed by Dave Hyatt.
13709 * kxmlcore/Vector.h:
13710 (KXMLCore::Vector::operator[]): Add unsigned overload
13712 2006-01-28 Darin Adler <darin@apple.com>
13714 Reviewed by John Sullivan.
13716 - http://bugs.webkit.org/show_bug.cgi?id=6895
13717 include exception names in JavaScript form of DOM exception
13719 * khtml/ecma/kjs_binding.cpp: (KJS::setDOMException): Include the name of the
13720 exception in the error message.
13722 2006-01-28 Maciej Stachowiak <mjs@apple.com>
13726 - miscellaneous Vector improvements
13728 * kxmlcore/Vector.h:
13729 (KXMLCore::Vector::at): Add range-checking asserts.
13730 (KXMLCore::Vector::first): Added as a convenience.
13731 (KXMLCore::Vector::last): Convenience for stack-style use.
13732 (KXMLCore::Vector::removeLast): ditto
13734 2006-01-28 Darin Adler <darin@apple.com>
13736 Reviewed by John Sullivan
13738 - fix http://bugs.webkit.org/show_bug.cgi?id=6870
13739 REGRESSION: JavaScript Date constructor won't accept another Date object
13741 Test: fast/js/date-constructor.html
13743 * kjs/date_object.cpp: (KJS::DateObjectImp::construct):
13744 Added a special case for constructing one date from another (to avoid losing
13745 milliseconds, which are not in the text form, to match Firefox), and changed
13746 the base code to convert to primitive before checking for string to match
13747 the standard. Also corrected a couple silly things in the "construct from
13748 current time" code path (removed a floor that does no good, and changed
13749 the constant used to convert microseconds to milliseconds to be a 1000
13750 rather than "msPerSecond").
13752 2006-01-28 Darin Adler <darin@apple.com>
13754 * kjs/create_hash_table: Added missing license.
13756 2006-01-28 Maciej Stachowiak <mjs@apple.com>
13758 Reviewed by Dave Hyatt.
13760 - added a Vector class
13761 http://bugs.webkit.org/show_bug.cgi?id=6894
13763 * JavaScriptCore.xcodeproj/project.pbxproj:
13764 * kjs/internal.cpp:
13765 (KJS::Parser::saveNewNode): Apply Vector.
13766 (KJS::clearNewNodes): ditto
13767 * kjs/number_object.cpp:
13768 (integer_part_noexp): ditto
13769 (char_sequence): ditto
13771 (KJS::UString::UTF8String): ditto
13772 * kxmlcore/HashMap.h:
13773 (KXMLCore::deleteAllValues): Tweaked this to only apply to HashMap,
13774 other versions are useful for other containers.
13775 * kxmlcore/Vector.h: Added. Implemented a Vector class, which should
13776 be usable for all Array/QVector style purposes, and also as a stack buffer
13777 with oversize handling. Also some helper classes to make vector operations
13778 as efficient as possible for POD types and for simple non-PODs like RefPtr.
13780 (KXMLCore::VectorTypeOperations::destruct):
13781 (KXMLCore::VectorTypeOperations::initialize):
13782 (KXMLCore::VectorTypeOperations::move):
13783 (KXMLCore::VectorTypeOperations::uninitializedCopy):
13784 (KXMLCore::VectorTypeOperations::uninitializedFill):
13785 (KXMLCore::VectorBuffer::VectorBuffer):
13786 (KXMLCore::VectorBuffer::~VectorBuffer):
13787 (KXMLCore::VectorBuffer::deallocateBuffer):
13788 (KXMLCore::VectorBuffer::inlineBuffer):
13789 (KXMLCore::Vector::Vector):
13790 (KXMLCore::Vector::~Vector):
13791 (KXMLCore::Vector::size):
13792 (KXMLCore::Vector::capacity):
13793 (KXMLCore::Vector::isEmpty):
13794 (KXMLCore::Vector::at):
13795 (KXMLCore::Vector::operator[]):
13796 (KXMLCore::Vector::data):
13797 (KXMLCore::Vector::operator T*):
13798 (KXMLCore::Vector::operator const T*):
13799 (KXMLCore::Vector::begin):
13800 (KXMLCore::Vector::end):
13801 (KXMLCore::Vector::clear):
13802 (KXMLCore::Vector::fill):
13803 (KXMLCore::Vector::operator=):
13804 (KXMLCore::::Vector):
13805 (KXMLCore::::operator):
13806 (KXMLCore::::fill):
13807 (KXMLCore::::expandCapacity):
13808 (KXMLCore::::resize):
13809 (KXMLCore::::reserveCapacity):
13810 (KXMLCore::::append):
13811 (KXMLCore::deleteAllValues):
13812 * kxmlcore/VectorTraits.h: Added.
13813 (KXMLCore::VectorTraits): Traits to enable making Vector efficient for
13816 2006-01-28 Alexey Proskuryakov <ap@nypop.com>
13820 - fix http://bugs.webkit.org/show_bug.cgi?id=5163
13821 RealPlayer.GetTitle() Crashes Safari/Dashboard
13823 * bindings/c/c_utility.cpp: (KJS::Bindings::convertUTF8ToUTF16):
13824 Fallback to kCFStringEncodingWindowsLatin1 if the passed buffer is not valid UTF-8, preventing crashes.
13826 2006-01-25 George Staikos <staikos@opensource.apple.com>
13830 * kxmlcore/HashFunctions.h: Merge build fix from KDE.
13832 2006-01-25 Darin Adler <darin@apple.com>
13834 - removed an unused source file
13836 * kjs/pointer_hash.h: Removed.
13837 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: Removed reference to pointer_hash.h.
13839 2006-01-23 Anders Carlsson <andersca@mac.com>
13841 Reviewed by Maciej.
13843 - fix http://bugs.webkit.org/show_bug.cgi?id=6737
13844 KJS_DEFINE_PROTOTYPE should work outside of the KJS namespace
13847 Prefix all KJS types with KJS:: in KJS_DEFINE_PROTOTYPE.
13849 (cacheGlobalObject):
13850 Move this out of the KJS namespace.
13852 2006-01-23 Maciej Stachowiak <mjs@apple.com>
13856 - renamed PointerHash to PtrHash
13857 - made PtrHash the default hash function for int and pointer types that aren't further specialized
13858 - added an AtomicStringImpl class to make it easier and more typesafe to identity hash atomic strings
13859 - did appropriate consequent cleanup (very few places now need to declare a hash function)
13860 http://bugs.webkit.org/show_bug.cgi?id=6752
13862 * kjs/array_object.cpp:
13863 (ArrayProtoFunc::callAsFunction): no need to mention PointerHash
13864 * kjs/collector.cpp: ditto
13865 * kjs/identifier.cpp:
13866 (KXMLCore::): declare DefaultHash the new way
13867 * kjs/internal.cpp: no need to mention PointerHash
13869 * kxmlcore/HashCountedSet.h: change how we get the default hash to make it
13870 easier to specialize on PtrHash
13871 * kxmlcore/HashFunctions.h:
13872 (KXMLCore::): renamed PointerHash to PtrHash; changed DefaultHash so that it has
13873 a Hash typedef rather than being a hash function class itself; declared DefaultHash
13874 for int and partializy specialized for pointer types
13875 * kxmlcore/HashMapPtrSpec.h:
13876 (KXMLCore::PtrHashIteratorAdapter::PtrHashIteratorAdapter): Slight tweaks for new
13877 way of handling pointer hash
13878 (KXMLCore::PtrHashConstIteratorAdapter::PtrHashConstIteratorAdapter): ditto
13879 (KXMLCore::): ditto
13880 * kxmlcore/HashMap.h: ditto
13881 * kxmlcore/HashSet.h: ditto
13883 2006-01-23 Maciej Stachowiak <mjs@apple.com>
13885 Reviewed by Tim Omernick.
13887 - use classes instead of free functions for extractors, this better matches how other
13888 things work and should avoid the need for hacky workarounds on other compilers
13889 http://bugs.webkit.org/show_bug.cgi?id=6748
13891 * kjs/array_object.cpp:
13892 * kjs/identifier.cpp:
13893 * kjs/internal.cpp:
13894 * kxmlcore/HashMap.h:
13895 (KXMLCore::PairFirstExtractor::extract):
13896 * kxmlcore/HashMapPtrSpec.h:
13898 * kxmlcore/HashSet.h:
13899 (KXMLCore::IdentityExtractor::extract):
13900 * kxmlcore/HashTable.h:
13901 (KXMLCore::addIterator):
13902 (KXMLCore::removeIterator):
13903 (KXMLCore::HashTable::add):
13904 (KXMLCore::HashTable::isEmptyBucket):
13905 (KXMLCore::HashTable::isDeletedBucket):
13906 (KXMLCore::HashTable::HashTable):
13907 (KXMLCore::HashTable::lookup):
13908 (KXMLCore::HashTable::add):
13909 (KXMLCore::HashTable::reinsert):
13910 (KXMLCore::HashTable::find):
13911 (KXMLCore::HashTable::contains):
13912 (KXMLCore::HashTable::remove):
13913 (KXMLCore::HashTable::allocateTable):
13914 (KXMLCore::HashTable::deallocateTable):
13915 (KXMLCore::HashTable::expand):
13916 (KXMLCore::HashTable::rehash):
13917 (KXMLCore::HashTable::clear):
13918 (KXMLCore::HashTable::swap):
13919 (KXMLCore::HashTable::operator):
13920 (KXMLCore::HashTable::checkTableConsistency):
13921 (KXMLCore::HashTable::checkTableConsistencyExceptSize):
13922 (KXMLCore::HashTable::invalidateIterators):
13924 2006-01-23 Maciej Stachowiak <mjs@apple.com>
13926 Rubber stamped by Tim Hatcher.
13928 - renamed inert() operation on HashSet, HashCountedSet and HashTable to add()
13929 for consistency with HashMap
13931 * kjs/array_object.cpp:
13932 (ArrayProtoFunc::callAsFunction):
13933 * kjs/collector.cpp:
13934 (KJS::Collector::protect):
13935 * kjs/identifier.cpp:
13936 (KJS::Identifier::add):
13937 * kxmlcore/HashCountedSet.h:
13939 * kxmlcore/HashMap.h:
13940 (KXMLCore::::inlineAdd):
13941 * kxmlcore/HashSet.h:
13943 * kxmlcore/HashTable.h:
13944 (KXMLCore::HashTable::add):
13946 (KXMLCore::::HashTable):
13948 2006-01-23 Justin Garcia <justin.garcia@apple.com>
13950 Reviewed by thatcher
13952 Turned on -O2 for B&I build.
13954 * JavaScriptCore.xcodeproj/project.pbxproj:
13956 2006-01-23 Maciej Stachowiak <mjs@apple.com>
13958 Reviewed by Tim Hatcher.
13960 - it's "Franklin Street", not "Franklin Steet"
13962 * kjs/array_instance.h:
13963 * kjs/array_object.cpp:
13964 * kjs/array_object.h:
13965 * kjs/bool_object.cpp:
13966 * kjs/bool_object.h:
13967 * kjs/collector.cpp:
13969 * kjs/completion.h:
13971 * kjs/date_object.cpp:
13972 * kjs/date_object.h:
13973 * kjs/debugger.cpp:
13976 * kjs/error_object.cpp:
13977 * kjs/error_object.h:
13978 * kjs/function.cpp:
13980 * kjs/function_object.cpp:
13981 * kjs/function_object.h:
13983 * kjs/identifier.cpp:
13984 * kjs/identifier.h:
13985 * kjs/internal.cpp:
13987 * kjs/interpreter.cpp:
13988 * kjs/interpreter.h:
13995 * kjs/math_object.cpp:
13996 * kjs/math_object.h:
13999 * kjs/nodes2string.cpp:
14000 * kjs/number_object.cpp:
14001 * kjs/number_object.h:
14004 * kjs/object_object.cpp:
14005 * kjs/object_object.h:
14006 * kjs/operations.cpp:
14007 * kjs/operations.h:
14008 * kjs/property_map.cpp:
14009 * kjs/property_map.h:
14010 * kjs/property_slot.cpp:
14011 * kjs/property_slot.h:
14012 * kjs/reference.cpp:
14014 * kjs/reference_list.cpp:
14015 * kjs/reference_list.h:
14018 * kjs/regexp_object.cpp:
14019 * kjs/regexp_object.h:
14020 * kjs/scope_chain.cpp:
14021 * kjs/scope_chain.h:
14022 * kjs/simple_number.h:
14023 * kjs/string_object.cpp:
14024 * kjs/string_object.h:
14031 * kxmlcore/AlwaysInline.h:
14032 * kxmlcore/ListRefPtr.h:
14033 * kxmlcore/PassRefPtr.h:
14034 * kxmlcore/RefPtr.h:
14036 2006-01-23 Darin Adler <darin@apple.com>
14038 Reviewed by John Sullivan.
14040 - change needed for fix to http://bugs.webkit.org/show_bug.cgi?id=6617
14041 REGRESSION: Crash in cloneChildNodes when clicking element
14043 * kxmlcore/PassRefPtr.h: Fix assignment operator from RefPtr of a different
14044 type by calling get() instead of going directly at m_ptr.
14045 * kxmlcore/RefPtr.h: Ditto.
14049 * JavaScriptCore.xcodeproj/project.pbxproj: Xcode decided to change this file.
14050 It's just a resorted list of keys in a dictionary.
14052 * kjs/fpconst.cpp: Wrap this file in #if __APPLE__ since the alternate version
14053 in internal.cpp is in #if !__APPLE__. This file is to give us the "no init
14054 routine" property we want to have on OS X.
14056 2006-01-22 Maciej Stachowiak <mjs@apple.com>
14060 - Set up Page class and invert Frame / WebCoreFrameBridge ownership
14061 http://bugs.webkit.org/show_bug.cgi?id=6577
14063 * kjs/interpreter.h: make globalExec virtual so ScriptInterpreter can
14066 2006-01-23 George Staikos <staikos@opensource.apple.com>
14068 Reviewed by Maciej and Darin.
14070 * kxmlcore/Assertions.h: This file only works with __APPLE__ right now
14071 * kjs/interpreter.cpp: ditto
14072 * kjs/simple_number.h: Add assert.h and remove from config.h
14073 * kjs/array_object.cpp: Use relative paths for kxmlcore includes
14074 * kjs/testkjs.cpp: Use relative paths for kxmlcore includes
14076 2006-01-23 George Staikos <staikos@opensource.apple.com>
14078 Reviewed by Maciej.
14080 * kjs/config.h: unbreak preprocessor change
14082 2006-01-23 George Staikos <staikos@opensource.apple.com>
14084 Approved by Maciej and Darin.
14088 Update FSF address in license to make merging easier
14090 2006-01-22 George Staikos <staikos@opensource.apple.com>
14092 Reviewed by Maciej.
14094 * kjs/collector.cpp: merge major speedup from KDE on Linux
14095 patch by Maks Orlovich, bug #6145
14096 Also unify cpu detection
14097 * kjs/config.h: define simpler CPU macros
14099 2006-01-22 George Staikos <staikos@opensource.apple.com>
14101 Reviewed by Maciej.
14103 * kjs/collector.cpp: merge FreeBSD compile fix from KDE
14104 -> requires build magic for use
14106 2006-01-21 George Staikos <staikos@opensource.apple.com>
14108 Reviewed by Maciej.
14110 * kjs/nodes2string.cpp
14113 Fix pedantic compile with some gcc versions (Merge from KDE)
14115 * kjs/create_hash_table:
14116 Fix build with Perl 5.8.0 (Merge from KDE)
14118 2006-01-18 Darin Adler <darin@apple.com>
14122 - hash table fixes needed for my WebCore changes
14124 * kxmlcore/HashTable.h: (KXMLCore::HashTableConstIterator::operator=):
14125 Added a missing return statement.
14127 * kxmlcore/HashTraits.h: Fix traits so they work properly for classes where you
14128 can't instantiate with a 0 by using traits rather than ? : to select the default
14129 emtpy value of hash table keys.
14131 - small cleanup of "runtime" code left over from recent JavaScript crash fix
14133 * bindings/runtime_root.h:
14134 (KJS::Bindings::RootObject::RootObject): No explicit initialization of _imp needed
14135 since it's now a ProtectedPtr.
14136 (KJS::Bindings::RootObject::setRootObjectImp): Remove old code that relied on the
14137 fact that _imp was 0 and replaced with use of ProtectedPtr.
14138 (KJS::Bindings::RootObject::rootObjectImp): Updated since _imp is a ProtectedPtr.
14140 2006-01-17 Darin Adler <darin@apple.com>
14142 Reviewed by Anders.
14144 - http://bugs.webkit.org/show_bug.cgi?id=6611
14145 add assertions to check correct use of hash table iterators
14147 * kxmlcore/HashTable.h:
14148 (KXMLCore::addIterator): Added. Helper function that adds an iterator to the list
14149 maintained by the specified hash table.
14150 (KXMLCore::removeIterator): Added. Helper function that removes an iterator from
14151 the list maintained by the hash table it's in.
14152 (KXMLCore::HashTableConstIterator::HashTableConstIterator): Added a HashTable
14153 parameter, ignored when not debugging. Call addIterator.
14154 (KXMLCore::HashTableConstIterator::~HashTableConstIterator):
14155 (KXMLCore::HashTableConstIterator::operator=): Call removeIterator.
14156 (KXMLCore::HashTableConstIterator::operator*): Call checkValidity.
14157 (KXMLCore::HashTableConstIterator::operator->): Ditto.
14158 (KXMLCore::HashTableConstIterator::operator++): Ditto.
14159 (KXMLCore::HashTableConstIterator::operator==): Ditto.
14160 (KXMLCore::HashTableConstIterator::operator!=): Ditto.
14161 (KXMLCore::HashTableConstIterator::checkValidity): Checks that the hash table
14162 pointer is not 0 and if there are two iterators that both point at the same table.
14163 (KXMLCore::HashTableIterator::HashTableIterator): Changed to use the const iterator
14164 as an implementation detail, to avoid having two separate iterator implementations.
14165 (KXMLCore::HashTableIterator::operator*): Ditto.
14166 (KXMLCore::HashTableIterator::operator->): Ditto.
14167 (KXMLCore::HashTableIterator::operator++): Ditto.
14168 (KXMLCore::HashTableIterator::operator==): Ditto.
14169 (KXMLCore::HashTableIterator::operator!=): Ditto.
14170 (KXMLCore::HashTable::HashTable): Initialize pointer to head of iterators list.
14171 (KXMLCore::HashTable::~HashTable): Added call to invalidateIterators.
14172 (KXMLCore::HashTable::makeIterator): Pass this pointer.
14173 (KXMLCore::HashTable::makeConstIterator): Ditto.
14174 (KXMLCore::HashTable::insert): Call invalidateIterators, since this is a public
14175 entry point that modifies the hash table.
14176 (KXMLCore::HashTable::remove): Ditto.
14177 (KXMLCore::HashTable::clear): Ditto.
14178 (KXMLCore::HashTable::swap): Ditto.
14179 (KXMLCore::HashTable::invalidateIterators): Added. Walks the iterators list and
14180 clears out the table, next, and previous pointers in all of them, and then clears
14181 the head so we have an empty list.
14182 (KXMLCore::addIterator): Added. Adds the iterator the the linked list in the
14183 passed-in table, and points the iterator at the table.
14184 (KXMLCore::removeIterator): Added. Removes the iterator from the linked list in
14185 the passed-in table.
14187 * kxmlcore/HashTraits.h: A bit of tweaking and formatting.
14189 2006-01-17 Justin Garcia <justin.garcia@apple.com>
14193 Deployment builds now use -O2
14195 * JavaScriptCore.xcodeproj/project.pbxproj:
14197 2006-01-17 Darin Adler <darin@apple.com>
14199 Reviewed by Anders.
14201 - fix http://bugs.webkit.org/show_bug.cgi?id=6610
14202 change RefPtr so that it works when deref ends up deleting the RefPtr
14204 * kxmlcore/PassRefPtr.h: Always set m_ptr before calling deref.
14205 * kxmlcore/RefPtr.h: Ditto.
14207 2006-01-16 Geoffrey Garen <ggaren@apple.com>
14211 - Fixed http://bugs.webkit.org/show_bug.cgi?id=6322
14212 DateProtoFuncImp::callAsFunction can crash due to lack of type checking
14214 * kjs/date_object.cpp:
14215 (KJS::DateProtoFunc::callAsFunction): Type check calls to all methods.
14216 This matches section 15.9.5 in the spec.
14218 2006-01-16 Tim Omernick <timo@apple.com>
14220 Reviewed by John Sullivan.
14222 JavaScriptCore part of <rdar://problem/4211707> NPAPI ref count behavior differs with Mozilla
14224 * bindings/npruntime.cpp:
14225 (_NPN_ReleaseObject):
14226 Refactored part of this function out into _NPN_DeallocateObject.
14227 (_NPN_DeallocateObject):
14228 Forcibly deallocates the passed object, even if its refcount is
14231 * bindings/npruntime_impl.h:
14232 Declared _NPN_DeallocateObject().
14234 2006-01-16 Darin Adler <darin@apple.com>
14236 Reviewed by Maciej.
14238 - fix problem with ++, ==, and != on const iterators in
14239 HashMaps that are using the pointer specialization
14241 * kxmlcore/HashMapPtrSpec.h:
14242 (KXMLCore::PointerHashConstIteratorAdapter::operator++): Change type to const_iterator.
14243 (KXMLCore::PointerHashConstIteratorAdapter::operator==): Ditto.
14244 (KXMLCore::PointerHashConstIteratorAdapter::operator!=): Ditto.
14246 2006-01-15 Alexey Proskuryakov <ap@nypop.com>
14248 Reviewed by Anders.
14250 - fix http://bugs.webkit.org/show_bug.cgi?id=6561
14251 run-javascriptcore-tests doesn't work
14253 * JavaScriptCore/tests/mozilla/Getopt/Mixed.pm:
14254 Changed revision number to 1.8 (broken by svn migration).
14256 2006-01-14 David Kilzer <ddkilzer@kilzer.net>
14258 Reviewed and landed by Anders.
14260 * kjs/create_hash_table: Fixed comment typo.
14262 2006-01-13 Maks Orlovich <maksim@kde.org>
14264 Mostly merging work by Peter Kelly. Reviewed by Maciej, landed by ap.
14266 - fix http://bugs.webkit.org/show_bug.cgi?id=6261
14267 Misc. array object fixes from KJS
14269 * kjs/array_object.cpp: Don't treat 2^32-1 as a real array index property.
14270 (ArrayInstance::getOwnPropertySlot): Ditto.
14271 (ArrayInstance::deleteProperty): Ditto.
14272 (ArrayInstance::put): Ditto.
14273 (ArrayInstance::propList): Added a FIXME comment.
14274 (ArrayInstance::put): Throw exception on trying to set invalid array length.
14275 (ArrayProtoFunc::callAsFunction): Do not use a separator argument when doing toString/toLocalString.
14276 * kjs/array_object.h: Added MAX_ARRAY_INDEX.
14278 2006-01-13 Darin Adler <darin@apple.com>
14280 - Replaced tabs with spaces in source files that had less than 10 lines with tabs.
14281 - Set allow-tabs Subversion property in source files that have more than 10 lines with tabs.
14283 2006-01-13 Anders Carlsson <andersca@mac.com>
14287 * kjs/create_hash_table:
14288 Use correct size variables.
14290 2006-01-13 Anders Carlsson <andersca@mac.com>
14294 * kjs/create_hash_table:
14295 Don't create an empty entry array, instead add a entry with all fields
14296 set to null and set the hash table size to 1.
14300 Remove the hash table size check
14302 2006-01-12 Anders Carlsson <andersca@mac.com>
14304 Reviewed by Maciej.
14306 - fix http://bugs.webkit.org/show_bug.cgi?id=6494
14307 Crash when assigning a new function to a DOMParser object
14309 * JavaScriptCore.xcodeproj/project.pbxproj:
14310 Move lookup.cpp before lookup.h
14314 If the hash table is empty, return 0 early.
14316 2006-01-12 George Staikos <staikos@kde.org>
14320 * kjs/interpreter.cpp:
14322 * kjs/interpreter.h:
14323 Add helper to interpreter to call the collector in order to facilitate
14324 visibility rules in KDE.
14326 2006-01-12 George Staikos <staikos@kde.org>
14328 Reviewed by Maciej.
14330 * kjs/kjs.pro: Updates to build the whole thing on Linux at least.
14332 * kxmlcore/HashTable.h: Add missing assert.h
14334 2006-01-12 Darin Adler <darin@apple.com>
14338 - fix http://bugs.webkit.org/show_bug.cgi?id=6505
14339 retire APPLE_CHANGES from JavaScriptCore
14341 * JavaScriptCore.xcodeproj/project.pbxproj: Removed both
14342 APPLE_CHANGES and HAVE_CONFIG_H from all targets.
14344 * README: Removed. This had obsolete information in it
14345 and it wasn't clear what to replace it with.
14347 * kjs/collector.h: Removed an APPLE_CHANGES if around something
14348 that's not really platform-specific (although it does use a
14349 platform-specific API at the moment).
14350 * kjs/collector.cpp: Removed a mistaken comment.
14353 * kjs/internal.cpp:
14355 * kjs/operations.cpp:
14356 * kjs/operations.h:
14358 Use __APPLE__ instead of APPLE_CHANGES for code that should be
14359 used only on Mac OS X.
14361 * kjs/interpreter.cpp: Removed APPLE_CHANGES ifdef around the include
14362 of the runtime.h header. Even though that header isn't needed at the
14363 moment on platforms other than Mac OS X, the conditional stuff should
14364 be in the header itself, not in this one client.
14366 * kjs/math_object.cpp: (MathFuncImp::callAsFunction): Removed some
14367 code inside APPLE_CHANGES. I'm pretty sure this code isn't needed on
14368 any platform where pow is implemented corrrectly according to the IEEE
14369 standard. If it is needed on some, we can add it back with an appropriate
14370 #if for the platforms where it is needed.
14372 2006-01-12 Justin Haygood <justin@xiondigital.net>
14374 Reviewed, tweaked, and landed by Darin.
14376 - fix http://bugs.webkit.org/show_bug.cgi?id=6416
14377 lexer.cpp, grammar.y protect include of config.h with "HAVE_CONFIG_H"
14379 * kjs/dtoa.cpp: Removed HAVE_CONFIG_H, changed config.h to use
14380 quotes instead of angle brackets. Moved dtoa.h include to the top.
14381 Changed system header includes to use angle brackets instead of quotes.
14382 * kjs/grammar.y: Removed HAVE_CONFIG_H, changed config.h to use
14383 quotes instead of angle brackets.
14384 * kjs/lexer.cpp: Removed HAVE_CONFIG_H, changed config.h to use
14385 quotes instead of angle brackets. Moved lexer.h include to the top.
14386 * kjs/ustring.cpp: Removed HAVE_CONFIG_H, changed config.h to use
14387 quotes instead of angle brackets. Moved ustring.h include to the top.
14389 2006-01-12 George Staikos <staikos@kde.org>
14393 - Import initial QMake file. Doesn't fully work yet.
14395 2006-01-11 Ricci Adams <ricciadams@apple.com>
14397 Reviewed by Maciej and Darin, landed by Darin.
14399 - fix http://bugs.webkit.org/show_bug.cgi?id=5939
14400 final comma in javascript object prevents parsing
14402 * kjs/grammar.y: Added rule to allow trailing comma in
14403 object construction.
14405 2006-01-11 Ricci Adams <ricciadams@apple.com>
14407 Reviewed by Geoff, landed by Darin.
14409 - fix http://bugs.webkit.org/show_bug.cgi?id=5308
14410 Number.toFixed doesn't include leading 0
14412 * kjs/number_object.cpp: (NumberProtoFunc::callAsFunction):
14413 Fixed a "<" that should have been a "<=".
14415 2006-01-11 Ricci Adams <ricciadams@apple.com>
14417 Reviewed by Geoff, landed by Darin.
14419 - fix http://bugs.webkit.org/show_bug.cgi?id=5307
14420 Number.toFixed doesn't round 0.5 up
14422 * kjs/number_object.cpp: (NumberProtoFunc::callAsFunction):
14423 Fixed a ">" that should have been a ">=".
14425 2006-01-11 Justin Haygood <justin@xiondigital.net>
14427 Reviewed and landed by Darin.
14429 - fix http://bugs.webkit.org/show_bug.cgi?id=6486
14430 JavaScriptCore should use system malloc on Windows
14432 * kjs/config.h: Add USE_SYSTEM_MALLOC to the Win32 section.
14434 2006-01-10 Darin Adler <darin@apple.com>
14436 * Makefile: Took out unneeded "export" line.
14437 * <many-files>: Changed a lot of flags (cleared bogus executable bits, set
14438 MIME types, other small corrections).
14440 2006-01-09 Darin Adler <darin@apple.com>
14442 * Makefile.am: Removed.
14444 2006-01-07 Anders Carlsson <andersca@mac.com>
14446 Reviewed by Maciej.
14448 - fix http://bugs.webkit.org/show_bug.cgi?id=6373
14449 REGRESSION: JavaScript hang when comparing large array to null
14452 (KJS::JSObject::isEqualToNull):
14453 Add new function which returns true if an object should be treated as null when
14456 * kjs/operations.cpp:
14460 2006-01-07 Alexey Proskuryakov <ap@nypop.com>
14462 Reviewed by Maciej.
14464 - Fix WebCore development build
14465 http://bugs.webkit.org/show_bug.cgi?id=6408
14467 * kxmlcore/Assertions.h: Use __VA_ARGS__ in variadic macros.
14469 2006-01-06 Maciej Stachowiak <mjs@apple.com>
14473 - miscellaneous changes for 4% speedup on the JavaScript iBench
14474 http://bugs.webkit.org/show_bug.cgi?id=6396
14476 Changes mostly thanks to Maks Orlovich, tweaked a little by me.
14478 * kjs/create_hash_table: Use the same hash as the one used by Identifier.
14479 * kjs/function.cpp:
14480 (KJS::FunctionImp::processParameters): Use the new List::copyFrom
14481 (KJS::ActivationImp::ActivationImp): track variable while iterating
14482 * kjs/internal.cpp:
14483 (KJS::StringImp::toObject): create StringInstance directly
14485 (KJS::List::copy): implement in terms of copyFrom
14486 (KJS::List::copyFrom): more efficient way to copy in another list
14489 (keysMatch): updated to work with identifier hash
14491 (Lookup::findEntry): ditto
14492 (Lookup::find): ditto
14495 2006-01-06 Maciej Stachowiak <mjs@apple.com>
14497 - fix development build failure from the previous checkin
14499 * kjs/function.cpp:
14500 (KJS::ActivationImp::put): Use prototype() accessor in assert.
14502 2006-01-05 Maciej Stachowiak <mjs@apple.com>
14506 - fix remaining performance regression from Getter/Setter change
14507 http://bugs.webkit.org/show_bug.cgi?id=6249
14509 - Activation objects should not have __proto__ property
14510 http://bugs.webkit.org/show_bug.cgi?id=6395
14512 * kjs/function.cpp:
14513 (KJS::ActivationImp::getOwnPropertySlot): Implement directly, thus
14514 skipping getter/setter handling and __proto__ handling, as well
14515 as inlining needed superclass stuff.
14516 (KJS::ActivationImp::put): Implement directly, skipping getter/setter,
14517 __proto__, and do canPut directly in PropertyMap::put since there's no
14518 static property table either.
14520 * kjs/property_map.cpp:
14521 (KJS::PropertyMap::put): Allow optionally inlining canPut check.
14522 * kjs/property_map.h:
14524 2006-01-04 Geoffrey Garen <ggaren@apple.com>
14526 Patch by kimmo.t.kinnunen@nokia.com, reviewed by darin, tweaked by me.
14528 - Fixed http://bugs.webkit.org/show_bug.cgi?id=4921
14529 \u escape sequences in JavaScript identifiers
14531 * kjs/function_object.cpp:
14532 (FunctionObjectImp::construct):
14536 (Lexer::isWhiteSpace):
14537 (Lexer::isLineTerminator):
14538 (Lexer::isIdentStart):
14539 (Lexer::isIdentPart):
14541 (Lexer::scanRegExp):
14545 * tests/mozilla/expected.html: Updated test results.
14547 2005-12-30 Maciej Stachowiak <mjs@apple.com>
14549 No review, just test result update.
14551 * tests/mozilla/expected.html: Updated for newly passing test from recent fixes.
14553 2005-12-30 Anders Carlsson <andersca@mac.com>
14555 Reviewed by Maciej.
14557 - Fix http://bugs.webkit.org/show_bug.cgi?id=6298
14558 Getter setter test is failing
14561 (KJS::JSObject::put):
14562 Rework the getter setter part. We now walk the prototype chain, checking for
14563 getter/setter properties and only take the slow path if any are found.
14565 2005-12-30 Maks Orlovich <maksim@kde.org>
14567 Reviewed and committed by Maciej.
14569 - Handle negative, FP numbers with non-10 radix in toString
14570 http://bugs.webkit.org/show_bug.cgi?id=6259
14572 (Merged from KJS, original work by Harri Porten)
14574 * kjs/number_object.cpp:
14575 (NumberProtoFunc::callAsFunction): rewrote Number.toString(radix) to work with
14576 negative numbers, floating point and very large numbers.
14578 2005-12-29 Geoffrey Garen <ggaren@apple.com>
14580 Patch by Maks Orlovich, reviewed and landed by me.
14582 - http://bugs.webkit.org/show_bug.cgi?id=6267
14583 Fix Number.prototype.toFixed/toExponential(undefined)
14585 * kjs/number_object.cpp:
14586 (NumberProtoFunc::callAsFunction):
14588 2005-12-29 Geoffrey Garen <ggaren@apple.com>
14590 Patch by Maks Orlovich, Reviewed and landed by me.
14592 - http://bugs.webkit.org/show_bug.cgi?id=6266
14593 Minor object naming updates (to match Mozilla, KJS)
14595 * kjs/number_object.cpp:
14596 * kjs/regexp_object.cpp:
14598 2005-12-29 Geoffrey Garen <ggaren@apple.com>
14600 Patch by Maks Orlovich, reviewed by mjs.
14602 This has 2 very minor fixes, covered by KJS testsuite:
14603 1. Enumerates string indices in property list (with the same bug as array
14604 object has in corresponding code). This is a mozilla emulation thing.
14605 2. Permits properties with integer names in prototypes to be found
14607 * kjs/string_object.cpp:
14608 (StringInstance::getOwnPropertySlot):
14609 (StringInstanceImp::propList):
14610 * kjs/string_object.h:
14612 2005-12-26 Geoffrey Garen <ggaren@apple.com>
14616 - Fixed <rdar://problem/4364705> run-javascriptcore-tests crashes in
14617 KJS::BlockNode::deref
14619 http://bugs.webkit.org/show_bug.cgi?id=6233
14620 Reproducible stack-overflow crash in ~RefPtr<T> due to RefPtr<T> use in
14623 This patch does four things:
14624 (1) Standardizes all our linked list nodes to use "next" as their next
14626 (2) Creates the ListRefPtr<T> class, a subclass of RefPtr<T> specialized
14627 to iteratively deref "next" pointers.
14628 (3) Standardizes our linked list nodes to use ListRefPtr<T> and
14629 implement the releaseNext() function used by ~ListRefPtr<T>().
14630 (4) Adds to RefPtr<T> the release() method used by releaseNext().
14632 - Modified existing mozilla test to ensure it would make deployment
14633 builds crash as well.
14635 * JavaScriptCore.xcodeproj/project.pbxproj:
14637 (ElementNode::evaluate):
14638 (PropertyListNode::evaluate):
14639 (ArgumentListNode::evaluateList):
14640 (StatListNode::StatListNode):
14641 (StatListNode::execute):
14642 (StatListNode::processVarDecls):
14643 (VarDeclListNode::evaluate):
14644 (VarDeclListNode::processVarDecls):
14645 (VarStatementNode::execute):
14646 (VarStatementNode::processVarDecls):
14647 (BlockNode::BlockNode):
14648 (CaseClauseNode::evalStatements):
14649 (CaseClauseNode::processVarDecls):
14650 (ClauseListNode::processVarDecls):
14651 (CaseBlockNode::CaseBlockNode):
14652 (CaseBlockNode::evalBlock):
14653 (SourceElementsNode::SourceElementsNode):
14654 (SourceElementsNode::execute):
14655 (SourceElementsNode::processFuncDecl):
14656 (SourceElementsNode::processVarDecls):
14658 (KJS::ElementNode::ElementNode):
14659 (KJS::ElementNode::releaseNext):
14660 (KJS::ArrayNode::ArrayNode):
14661 (KJS::PropertyListNode::PropertyListNode):
14662 (KJS::PropertyListNode::releaseNext):
14663 (KJS::ObjectLiteralNode::ObjectLiteralNode):
14664 (KJS::ArgumentListNode::ArgumentListNode):
14665 (KJS::ArgumentListNode::releaseNext):
14666 (KJS::ArgumentsNode::ArgumentsNode):
14667 (KJS::StatListNode::releaseNext):
14668 (KJS::VarDeclListNode::VarDeclListNode):
14669 (KJS::VarDeclListNode::releaseNext):
14670 (KJS::VarStatementNode::VarStatementNode):
14671 (KJS::ForNode::ForNode):
14672 (KJS::CaseClauseNode::CaseClauseNode):
14673 (KJS::ClauseListNode::ClauseListNode):
14674 (KJS::ClauseListNode::getClause):
14675 (KJS::ClauseListNode::getNext):
14676 (KJS::ClauseListNode::releaseNext):
14677 (KJS::ParameterNode::ParameterNode):
14678 (KJS::ParameterNode::releaseNext):
14679 (KJS::SourceElementsNode::releaseNext):
14680 * kjs/nodes2string.cpp:
14681 (ElementNode::streamTo):
14682 (PropertyListNode::streamTo):
14683 (ArgumentListNode::streamTo):
14684 (StatListNode::streamTo):
14685 (VarDeclListNode::streamTo):
14686 (VarStatementNode::streamTo):
14687 (CaseClauseNode::streamTo):
14688 (ClauseListNode::streamTo):
14689 (CaseBlockNode::streamTo):
14690 (SourceElementsNode::streamTo):
14691 * kxmlcore/ListRefPtr.h: Added.
14692 (KXMLCore::ListRefPtr::ListRefPtr):
14693 (KXMLCore::ListRefPtr::~ListRefPtr):
14694 (KXMLCore::ListRefPtr::operator=):
14695 * kxmlcore/RefPtr.h:
14696 (KXMLCore::RefPtr::release):
14698 2005-12-29 Geoffrey Garen <ggaren@apple.com>
14702 - Fixed http://bugs.webkit.org/show_bug.cgi?id=4026
14703 Math.random() not seeded.
14705 Added call to sranddev() -- it executes the first time a process
14706 calls Math.random().
14708 * kjs/math_object.cpp:
14709 (MathFuncImp::callAsFunction):
14711 2005-12-29 Geoffrey Garen <ggaren@apple.com>
14715 - Fixed http://bugs.webkit.org/show_bug.cgi?id=6265
14716 Name change regression: Java doesn't know what JavaJSObject is
14718 Changed strings passed to Java back to original "JSObject".
14720 * bindings/jni/jni_jsobject.cpp:
14721 (JavaJSObject::convertValueToJObject):
14722 (JavaJSObject::convertJObjectToValue):
14724 2005-12-28 Anders Carlsson <andersca@mac.com>
14726 Reviewed by Maciej.
14728 - The JSC part of http://bugs.webkit.org/show_bug.cgi?id=6268
14729 Add undetectable document.all
14731 * kjs/operations.cpp:
14733 When comparing an object with null or undefined, call toPrimitive with
14734 NullType as the preferred type.
14736 2005-12-27 Anders Carlsson <andersca@mac.com>
14740 * kjs/array_object.cpp:
14741 (ArrayProtoFunc::callAsFunction):
14742 Implement filter and map. Also, make the existing
14743 array iteration functions not invoke the callback for
14744 non-existing properties, just as Mozilla does now.
14746 * kjs/array_object.h:
14747 (KJS::ArrayProtoFunc::):
14748 Add filter and map.
14750 * tests/mozilla/expected.html:
14751 Update, two 1.6 tests now pass.
14753 2005-12-27 Maciej Stachowiak <mjs@apple.com>
14755 - updated test results for new JS 1.6 tests
14757 * tests/mozilla/expected.html:
14759 2005-12-27 Anders Carlsson <andersca@mac.com>
14761 Reviewed by Maciej.
14763 Add Mozilla JS 1.6 tests.
14765 * tests/mozilla/js1_6/Array/browser.js: Added.
14766 * tests/mozilla/js1_6/Array/regress-290592.js: Added.
14767 * tests/mozilla/js1_6/Array/regress-304828.js: Added.
14768 * tests/mozilla/js1_6/Array/regress-305002.js: Added.
14769 * tests/mozilla/js1_6/Array/regress-310425-01.js: Added.
14770 * tests/mozilla/js1_6/Array/regress-310425-02.js: Added.
14771 * tests/mozilla/js1_6/Array/regress-320887.js: Added.
14772 * tests/mozilla/js1_6/Array/shell.js: Added.
14773 * tests/mozilla/js1_6/README: Added.
14774 * tests/mozilla/js1_6/Regress/browser.js: Added.
14775 * tests/mozilla/js1_6/Regress/regress-301574.js: Added.
14776 * tests/mozilla/js1_6/Regress/regress-309242.js: Added.
14777 * tests/mozilla/js1_6/Regress/regress-311157-01.js: Added.
14778 * tests/mozilla/js1_6/Regress/regress-311157-02.js: Added.
14779 * tests/mozilla/js1_6/Regress/regress-314887.js: Added.
14780 * tests/mozilla/js1_6/Regress/regress-320172.js: Added.
14781 * tests/mozilla/js1_6/Regress/shell.js: Added.
14782 * tests/mozilla/js1_6/String/browser.js: Added.
14783 * tests/mozilla/js1_6/String/regress-306591.js: Added.
14784 * tests/mozilla/js1_6/String/shell.js: Added.
14785 * tests/mozilla/js1_6/browser.js: Added.
14786 * tests/mozilla/js1_6/shell.js: Added.
14787 * tests/mozilla/js1_6/template.js: Added.
14789 2005-12-27 Maks Orlovich <maksim@kde.org>
14791 Reviewed and landed by Maciej.
14793 - fixed 6234: Can delete array index property incorrectly.
14794 http://bugs.webkit.org/show_bug.cgi?id=6234
14796 * kjs/array_object.cpp:
14797 (ArrayInstance::deleteProperty): use toArrayIndex instead of toUInt32 when
14798 looking for array properties.
14800 2005-12-27 Anders Carlsson <andersca@mac.com>
14802 Reviewed by Maciej.
14805 (KJS::JSObject::defineSetter):
14806 Remove duplicate call to putDirect.
14808 2005-12-26 Maciej Stachowiak <mjs@apple.com>
14810 Reviewed by Darin and Geoff.
14812 Changes by me and Anders.
14814 - mostly fixed REGRESSION: 5-10% performance regression on JS iBench from getter/setter change
14815 http://bugs.webkit.org/show_bug.cgi?id=6083
14817 - also fixed some warnings reported by -Winline
14819 * JavaScriptCorePrefix.h: Move new and delete definitions higher so there
14820 aren't conflicts with use in standard C++ headers
14822 (KJS::throwSetterError): Moved this piece of put into a seprate function
14823 to avoid the PIC branch.
14824 (KJS::JSObject::put): Use hasGetterSetterProperties to avoid expensive stuff
14825 when not needed. Also use GetterSetter properties attribute.
14826 (KJS::JSObject::deleteProperty): Recompute whether any properties are getter/setter
14827 properties any more, if this one was one.
14828 (KJS::JSObject::defineGetter): Let the PropertyMap know that it has getter/setter
14829 properties now (and use the new attribute).
14830 (KJS::JSObject::defineSetter): Ditto.
14831 (KJS::JSObject::fillGetterPropertySlot): Out-of-line helper for getOwnPropertySlot,
14832 to avoid global variable access in the hot code path.
14834 (KJS::): Added GetterSetter attribute.
14835 (KJS::JSCell::isObject): Moved lower to be after inline methods it uses.
14836 (KJS::JSValue::isObject): ditto
14837 (KJS::JSObject::getOwnPropertySlot): try to avoid impact of getters and setters
14838 as much as possible in the case where they are not being used
14839 * kjs/property_map.cpp:
14840 (KJS::PropertyMap::containsGettersOrSetters): New method to help with this
14841 * kjs/property_map.h:
14842 (KJS::PropertyMap::hasGetterSetterProperties): Ditto
14843 (KJS::PropertyMap::setHasGetterSetterProperties): Ditto
14844 (KJS::PropertyMap::PropertyMap): Added a crazy hack to store the
14845 global "has getter/setter properties" flag in the property map
14846 single entry, to avoid making objects any bigger.
14847 * kjs/value.h: Moved some things to object.h to make -Winline happier
14849 2005-12-24 Maciej Stachowiak <mjs@apple.com>
14851 Reviewed by Eric and Dave Hyatt.
14853 - make even const PassRefPtrs give transfer of ownership semantics
14854 http://bugs.webkit.org/show_bug.cgi?id=6238
14856 This is a somewhat cheesy change. Having to use PassRefPtr_Ref creates ambiguities
14857 in assignment and copy construction. And this makes life way easier and removes
14858 the need for pass(). It is not really correct, but we pretty much never need a real
14859 const PassRefPtr, and this takes care of things for PassRefPtr temporaries.
14861 * kjs/identifier.cpp:
14862 (KJS::Identifier::add): No more need for pass()
14863 * kjs/property_map.cpp:
14864 (KJS::PropertyMap::addSparseArrayPropertiesToReferenceList): No more need for pass()
14866 (KJS::UString::Rep::create): Use adoptRef
14867 (KJS::UString::UString): No more need for pass
14868 (KJS::UString::append): No more need for pass
14869 (KJS::UString::substr): No more need for pass
14870 * kxmlcore/PassRefPtr.h: made m_ptr mutable (ugh)
14871 (KXMLCore::PassRefPtr::PassRefPtr): Take a const PassRefPtr reference
14872 (KXMLCore::PassRefPtr::release): Made this a const method (ugh)
14873 (KXMLCore::PassRefPtr::operator=): clean up appropriately
14874 (KXMLCore::adoptRef): Added this to use instead of PassRefPtr<T>::adopt, I think
14875 it makes the behavior more clear and it is less verbose.
14876 (KXMLCore::static_pointer_cast): use adoptRef
14877 (KXMLCore::const_pointer_cast): use adoptRef
14878 * kxmlcore/RefPtr.h:
14879 (KXMLCore::RefPtr::RefPtr): take const PassRefPtr&
14880 (KXMLCore::PassRefPtr::operator=): take const PassRefPtr&
14882 2005-12-25 Eric Seidel <eseidel@apple.com>
14886 Unbreak HashTableConstIterator++ by returning const_iterator
14888 * kxmlcore/HashTable.h:
14889 (KXMLCore::HashTableConstIterator::operator++): use const_iterator
14891 2005-12-25 Eric Seidel <eseidel@apple.com>
14895 Un-break HashTable copy constructor.
14897 * kxmlcore/HashTable.h:
14898 (KXMLCore::::HashTable): use const_iterator instead
14900 2005-12-23 Maciej Stachowiak <mjs@apple.com>
14904 - fixed "HashMap does not work with const pointer keys or values"
14905 http://bugs.webkit.org/show_bug.cgi?id=6222
14907 * kxmlcore/HashMapPtrSpec.h:
14908 (KXMLCore::HashMap): In all methods, explicitly cast all pointers
14909 to void * before passing to internal implementation. Use C-style
14910 casts instead of new-style casts, because the real solution would
14911 require a combo of reinterpret_cast anc const_cast.
14914 2005-12-23 Maciej Stachowiak <mjs@apple.com>
14916 - this time for sure
14918 * kxmlcore/RefPtr.h:
14919 (KXMLCore::::swap):
14921 2005-12-22 Maciej Stachowiak <mjs@apple.com>
14923 - fix build problem from last commit.
14925 * kxmlcore/RefPtr.h:
14926 (KXMLCore::::swap):
14928 2005-12-21 Maciej Stachowiak <mjs@apple.com>
14932 - Make HashMap/HashSet support non-POD types
14933 http://bugs.webkit.org/show_bug.cgi?id=5332
14935 The changes for support are relatively simple, but I also made extensive changes to
14936 avoid copying, so that there isn't refcount thrash when you put RefPtrs into a HashMap.
14938 * kxmlcore/HashTable.h:
14939 (KXMLCore::swap): specialize swap for pairs, to swap elements individually,
14940 so that excess copies can be avoided.
14941 (KXMLCore::Mover::move): Template function to either copy or swap, used
14942 when transferring elements from old table to new.
14943 (KXMLCore::IdentityHashTranslator::hash): The old "converting lookup" templates
14944 that took two or three function parameters now take a class parameter, this is
14945 the class used to do a normal lookup.
14946 (KXMLCore::IdentityHashTranslator::equal): Ditto.
14947 (KXMLCore::IdentityHashTranslator::translate): Ditto. Translate now takes a reference
14948 to write into instead of returning a value to avoid redundant copies.
14949 (KXMLCore::HashTable::~HashTable): Use deallocateTable instead of freeing directly.
14950 (KXMLCore::HashTable::insert): Based on HashTranslator now instead of separate
14951 functions. Added a FIXME about a remaining rare excess copy.
14952 (KXMLCore::HashTable::isEmptyBucket): Use KeyTraits directly instead of unwrapping
14953 the key from Traits, to avoid creating and destroying pair, which copies.
14954 (KXMLCore::HashTable::isDeletedBucket): ditto
14955 (KXMLCore::HashTable::lookup): Use HashTranslator now instead of separate functions.
14956 (KXMLCore::HashTable::initializeBucket): Renamed from emptyBucket. Use placement new to
14957 work right for non-POD types.
14958 (KXMLCore::HashTable::deleteBucket): Use assignDeleted to avoid excess copies.
14959 (KXMLCore::HashTable::reinsert): use Mover template to copy or swap as appropriate
14960 (KXMLCore::HashTable::allocateTable): Initialize every bucket if calloc won't do.
14961 (KXMLCore::HashTable::deallocateTable): Destruct every bucket if needed.
14962 (KXMLCore::HashTable::rehash): Avoid copy before reinserting, so that swap can do its magic.
14963 (KXMLCore::HashTable::clear): use deallocateTable instead of freeing directly.
14964 (KXMLCore::HashTable::HashTable): be more dumb when copying to ensure that non-POD types
14966 * kxmlcore/HashFunctions.h:
14967 (KXMLCore::PointerHash): Specialize PointerHash for RefPtr
14968 * kxmlcore/HashMap.h:
14969 (KXMLCore::extractFirst): Return a reference not a full object to avoid
14971 (KXMLCore::HashMapTranslator::hash): Use a special translator for insertion
14972 to defer making the pair as long as possible, thus avoiding needless copies.
14973 (KXMLCore::HashMapTranslator::equal): ditto
14974 (KXMLCore::HashMapTranslator::translate): ditto
14975 (KXMLCore::::inlineAdd): Shared by set and add to insert using HashMapTranslator
14976 (KXMLCore::::set): Use inlineAdd
14977 (KXMLCore::::add): Use inlineAdd
14978 * kxmlcore/HashMapPtrSpec.h:
14979 (KXMLCore::): Pass KeyTraits along
14980 * kxmlcore/HashSet.h:
14981 (KXMLCore::identityExtract): Return a reference not a full object to avoid copies.
14982 (KXMLCore::HashSetTranslatorAdapter::hash): Redo adapter stuff to work with
14983 the new HashTranslator approach.
14984 (KXMLCore::HashSetTranslatorAdapter::equal): ditto
14985 (KXMLCore::HashSetTranslatorAdapter::translate): ditto
14986 (KXMLCore::::insert): ditto
14987 * kxmlcore/HashTraits.h:
14988 (KXMLCore::GenericHashTraits): This is intended be used as a base class for
14989 customized traits: sensible defaults.
14990 (KXMLCore::): Use it a bunch
14991 (KXMLCore::assignDeleted): template function to allow pairs to be assigned the
14992 deleted value w/o excess copies.
14993 (KXMLCore::PairHashTraits::emptyValue): Updated
14994 (KXMLCore::PairHashTraits::deletedValue): Updated
14995 (KXMLCore::PairHashTraits::assignDeletedValue): part of assignDeleted hack
14996 (KXMLCore::DeletedValueAssigner::assignDeletedValue): Use template magic
14997 to either use use deletedValue or assignDeletedValue for the cases where we care.
14998 * kxmlcore/RefPtr.h:
14999 (KXMLCore::RefPtr::swap): Added swap method.
15000 (KXMLCore::swap): Added swap free function.
15001 * kjs/identifier.cpp:
15002 (KJS::CStringTranslator::hash): Use new HashTranslator class approach to
15003 alternate type based insertion.
15004 (KJS::CStringTranslator::equal): ditto
15005 (KJS::CStringTranslator::translate): ditto
15006 (KJS::Identifier::add): ditto
15007 (KJS::UCharBufferTranslator::hash): ditto
15008 (KJS::UCharBufferTranslator::equal): ditto
15009 (KJS::UCharBufferTranslator::translate): ditto
15011 - irrelevant change:
15013 * kjs/array_object.cpp:
15014 (ArrayProtoFunc::callAsFunction): Removed a stray space.
15016 2005-12-22 Anders Carlsson <andersca@mac.com>
15018 Reviewed by Eric and Darin.
15020 - fix http://bugs.webkit.org/show_bug.cgi?id=6196
15021 Would like to be able to define prototypes in headers
15024 Move ClassName from KJS_DECLARE_PROTOTYPE to KJS_IMPLEMENT_PROTOTYPE.
15025 Also, namespace all macros by prefixing them with KJS_.
15027 2005-12-22 Darin Adler <darin@apple.com>
15029 Reviewed by Maciej.
15031 - fix http://bugs.webkit.org/show_bug.cgi?id=6191
15032 RefPtr/PassRefPtr have a leak issue, operator== issues
15034 * kxmlcore/PassRefPtr.h:
15035 (KXMLCore::PassRefPtr::PassRefPtr): Remove non-template constructor that takes RefPtr
15036 since the constructor template that takes RefPtr should be sufficient. Add a constructor
15037 template that takes PassRefPtr&.
15038 (KXMLCore::PassRefPtr::adopt): Use PassRefPtr_Ref to avoid setting pointer first to
15039 0 and then to the pointer.
15040 (KXMLCore::PassRefPtr::operator=): Added template versions that take PassRefPtr& and
15042 (KXMLCore::PassRefPtr::operator PassRefPtr<U>): Changed to fix leak -- old version
15043 would release and then ref.
15044 (KXMLCore::operator==): Make templates have two parameters so you can mix types.
15045 Also remove unneeded const in raw pointer versions.
15046 (KXMLCore::operator!=): Ditto.
15048 * kxmlcore/RefPtr.h:
15049 (KXMLCore::RefPtr::RefPtr): Add constructor template that takes PassRefPtr.
15050 (KXMLCore::RefPtr::operator=): Add assignment operator templates that take
15051 RefPtr and PassRefPtr.
15052 (KXMLCore::operator==): Make templates have two parameters so you can mix types.
15053 Also remove unneeded const in raw pointer versions.
15054 (KXMLCore::operator!=): Ditto.
15056 2005-12-21 Timothy Hatcher <timothy@apple.com>
15058 * JavaScriptCore.xcodeproj/project.pbxproj:
15059 Set tab width to 8, indent width to 4 and uses tabs to false per file.
15061 2005-12-21 Geoffrey Garen <ggaren@apple.com>
15065 Removed evil hack for determining if a type is an integer, replaced
15066 with template metaprogramming.
15068 * JavaScriptCore.xcodeproj/project.pbxproj: Set tab size to 2 for
15071 (main): Inserted asserts to test IsInteger. FIXME: Move these to
15072 KXMLCore unit tests directory when we create one.
15073 * kxmlcore/HashTraits.h:
15074 (KXMLCore::): Added IsInteger class for querying types.
15076 2005-12-20 Maciej Stachowiak <mjs@apple.com>
15080 - made ALWAYS_INLINE declare things inline as well as __attribute__((always_inline))
15081 http://bugs.webkit.org/show_bug.cgi?id=6159
15083 * kxmlcore/AlwaysInline.h:
15085 2005-12-19 Maciej Stachowiak <mjs@apple.com>
15089 - fixed a leak in the assignment operator from PassRefPtr to RefPtr
15090 http://bugs.webkit.org/show_bug.cgi?id=6158
15092 * kxmlcore/RefPtr.h:
15093 (KXMLCore::RefPtr::operator=):
15095 - fix problem with PassRefPtr that darin spotted - it lacked a copy constructor
15096 and therefore was using the default one, which can lead to excess derefs
15098 I fixed this by adding a copy constructor from non-const
15099 reference, and by adding a template pass() function that you have
15100 to use when raw pointer or RefPtr are passed where PassRefPtr is
15103 * kjs/identifier.cpp:
15104 (KJS::Identifier::add): Changed to have PassRefPtr return type and
15105 pass() the results.
15106 * kjs/identifier.h:
15107 * kjs/property_map.cpp:
15108 (KJS::PropertyMap::addSparseArrayPropertiesToReferenceList): Use pass()
15111 (KJS::UString::UString): Use pass() as needed.
15112 (KJS::UString::append): ditto
15113 (KJS::UString::substr): ditto
15115 (KJS::UString::UString): Use initializer instead of assignment
15116 * kxmlcore/PassRefPtr.h:
15117 (KXMLCore::PassRefPtr::PassRefPtr): Added copy constructor
15118 (KXMLCore::pass): new template function to make it convenient to pass
15121 2005-12-19 Geoffrey Garen <ggaren@apple.com>
15123 Reviewed by Maciej.
15125 Fixed <rdar://problem/4370397> Missing return statement in
15126 JSMethodNameToObjcMethodName.
15128 JSMethodNameToObjcMethodName had a check for a name being too long, but
15129 the check was missing a return statement.
15131 A lot of this code was confusing and some of it was wrong, so I fixed
15132 it up, added some asserts to catch this type of bug in the future,
15133 changed some comments, and renamed some variables.
15135 The two advantages of the new algorithm are (1) It makes writing past
15136 the end of the buffer virtually impossible because the test on the main
15137 loop is "while (not past end of buffer)" and (2) It's twice as fast
15138 because it doesn't call strlen. (There's no need to call strlen when
15139 we're walking the string ourselves.)
15141 methodsNamed also supports arbitrary-length method names now. Just in
15142 case the AppKit folks start getting REALLY verbose...
15144 * bindings/objc/objc_class.mm:
15145 (KJS::Bindings::ObjcClass::methodsNamed):
15146 * bindings/objc/objc_utility.h:
15147 * bindings/objc/objc_utility.mm:
15148 (KJS::Bindings::JSMethodNameToObjcMethodName):
15150 2005-12-19 Darin Adler <darin@apple.com>
15152 Originally done by both George Staikos and Alexey Proskuryakov.
15154 - fix http://bugs.webkit.org/show_bug.cgi?id=5706
15155 Sharedptr dependency can be removed
15157 Our coding guidelines say "use 0 instead of NULL" and both RefPtr and
15158 PassRefPtr were using NULL, which required including a header that
15161 * kxmlcore/PassRefPtr.h:
15162 (KXMLCore::PassRefPtr::PassRefPtr): Use 0 instead of NULL.
15163 (KXMLCore::PassRefPtr::operator!): Use ! instead of == NULL.
15164 * kxmlcore/RefPtr.h:
15165 (KXMLCore::RefPtr::RefPtr): Use 0 instead of NULL.
15166 (KXMLCore::RefPtr::operator!): Use ! instead of == NULL.
15167 Also did some reformatting.
15169 2005-12-19 Darin Adler <darin@apple.com>
15171 Reviewed by Geoff Garen and Eric Seidel.
15173 - fix http://bugs.webkit.org/show_bug.cgi?id=4923
15174 stop using <ostream> in WebCore, eliminating the <cmath> troubles it causes
15176 * kjs/simple_number.h: Removed many unnecessary includes, including
15177 the <cmath> one to work around GCC library header bugs. We may have to
15178 add some includes elsewhere for platforms other than OS X, since our
15179 prefix header takes care of some things.
15181 * kxmlcore/AlwaysInline.h: Added. Now clients that don't include
15182 simple_number.h can still get the ALWAYS_INLINE macro.
15183 * JavaScriptCore.xcodeproj/project.pbxproj: Added AlwaysInline.h.
15185 * bindings/NP_jsobject.h: Removed a lot of unnecessary includes
15186 and removed C-specific stuff from this C++-only header.
15187 * bindings/jni/jni_jsobject.h: Removed a lot of unnecessary includes
15188 and did some reformatting.
15189 * bindings/objc/objc_runtime.h: Removed an unnecessary include.
15190 * bindings/runtime.h: Removed some unneeded includes. Reformatted.
15191 * bindings/runtime.cpp: Updated to compile with header changes,
15192 including a lot of reformatting.
15193 * bindings/runtime_object.h: Removed an unnecessary include.
15195 2005-12-13 Maciej Stachowiak <mjs@apple.com>
15197 Reviewed by Geoff and Adele
15199 - replaced custom Identifier hashtable with HashSet
15201 * kjs/identifier.cpp:
15203 (KJS::identifierTable):
15204 (KJS::Identifier::equal):
15208 (KJS::Identifier::add):
15209 (KJS::Identifier::remove):
15210 * kjs/identifier.h:
15211 * kjs/internal.cpp:
15212 (KJS::InterpreterImp::initGlobalObject):
15214 2005-12-18 Justin Haygood <justin@xiondigital.net>
15216 Reviewed, tweaked, and landed by Darin.
15218 - fix http://bugs.webkit.org/show_bug.cgi?id=5227
15219 Array indexOf() extension for JavaScript 1.5 Core
15221 * kjs/array_object.h:
15222 * kjs/array_object.cpp: (ArrayProtoFunc::callAsFunction): Added implementation of indexOf.
15224 2005-12-18 Anders Carlsson <andersca@mac.com>
15226 Reviewed by Darin and Geoffrey.
15228 - fix for <http://bugs.webkit.org/show_bug.cgi?id=4000>
15229 Object.prototype is missing isPrototypeOf
15231 * kjs/object_object.cpp:
15232 (ObjectPrototype::ObjectPrototype):
15233 Add isPrototypeOf to object prototype.
15235 (ObjectProtoFunc::callAsFunction):
15236 Implement isPrototypeOf
15238 * kjs/object_object.h:
15239 (KJS::ObjectProtoFunc::):
15240 Add id for isPrototypeOf.
15242 2005-12-17 Geoffrey Garen <ggaren@apple.com>
15246 Fixed http://bugs.webkit.org/show_bug.cgi?id=6119
15247 split() function ignores case insensitive modifier.
15250 RegExpImp: The C++ object you get when JavaScript executes
15252 RegExp: A C++ wrapper object that performs regular expression
15253 matching on behalf of a RegExpImp.
15255 Instead of unnecessarily constructing a RegExp which (wrongly) lacks
15256 any modifiers, String.split() now uses the RegExp built in to the
15257 RegExpImp passed to it, which has the right modifiers already.
15259 I also cleaned up other bits of the string code to standardized how
15260 we handle RegExpImp arguments.
15263 * kjs/string_object.cpp:
15265 (StringProtoFunc::callAsFunction):
15267 2005-12-16 David Hyatt <hyatt@apple.com>
15269 Remove unused RefPtr constructors that can create an ambiguity in ustring on some platforms.
15273 * kxmlcore/RefPtr.h:
15274 (KXMLCore::RefPtr::RefPtr):
15276 2005-12-15 Darin Adler <darin@apple.com>
15278 Reviewed by Maciej.
15280 - fix http://bugs.webkit.org/show_bug.cgi?id=5688
15281 speed up JavaScript parsing by not creating a UString just to parse
15284 * kjs/internal.cpp: (KJS::InterpreterImp::evaluate): Change to take a character pointer
15285 and length rather than a UString.
15287 * kjs/interpreter.h:
15288 * kjs/interpreter.cpp: (Interpreter::evaluate): Ditto.
15290 * kjs/protect.h: Remove uneeded "convert to bool" operator since we already have a
15291 "convert to raw pointer" operator in this class.
15293 === Safari-521~5 ===
15295 2005-12-13 Geoffrey Garen <ggaren@apple.com>
15297 Updated test results to match Anders's last fix.
15299 * tests/mozilla/expected.html:
15301 2005-12-13 Anders Carlsson <andersca@mac.com>
15303 * ChangeLog: Add titles for my bugzilla bugs.
15305 2005-12-13 Anders Carlsson <andersca@mac.com>
15309 - Fixes <http://bugs.webkit.org/show_bug.cgi?id=6041>
15310 Support property getters and setters.
15312 * bindings/runtime_array.cpp:
15313 (RuntimeArray::lengthGetter):
15314 (RuntimeArray::indexGetter):
15315 * bindings/runtime_array.h:
15316 * bindings/runtime_method.cpp:
15317 (RuntimeMethod::lengthGetter):
15318 * bindings/runtime_method.h:
15319 * bindings/runtime_object.cpp:
15320 (RuntimeObjectImp::fallbackObjectGetter):
15321 (RuntimeObjectImp::fieldGetter):
15322 (RuntimeObjectImp::methodGetter):
15323 * bindings/runtime_object.h:
15324 * kjs/array_instance.h:
15325 * kjs/array_object.cpp:
15326 (ArrayInstance::lengthGetter):
15328 Update for changes to PropertySlot::getValue and
15329 PropertySlot::GetValueFunc.
15331 * kjs/collector.cpp:
15333 Handle GetterSetterType.
15335 * kjs/function.cpp:
15336 (KJS::FunctionImp::argumentsGetter):
15337 (KJS::FunctionImp::lengthGetter):
15338 (KJS::Arguments::mappedIndexGetter):
15339 (KJS::ActivationImp::argumentsGetter):
15341 Update for changes to PropertySlot::getValue and
15342 PropertySlot::GetValueFunc.
15345 Rework grammar parts for get set declarations directly
15346 in the object literal.
15348 * kjs/internal.cpp:
15349 (KJS::GetterSetterImp::mark):
15350 (KJS::GetterSetterImp::toPrimitive):
15351 (KJS::GetterSetterImp::toBoolean):
15352 (KJS::GetterSetterImp::toNumber):
15353 (KJS::GetterSetterImp::toString):
15354 (KJS::GetterSetterImp::toObject):
15355 Add type conversion functions. These aren't meant to be called.
15358 Handle GetterSetterType.
15361 (KJS::staticFunctionGetter):
15362 (KJS::staticValueGetter):
15363 Update for changes to PropertySlot::GetValueFunc.
15366 Refactor they way properties nodes are implemented.
15367 We now have a PropertyListNode which is a list of PropertyNodes.
15368 Each PropertyNode has a name (which is a PropertyNameNode) and an associated
15369 value node. PropertyNodes can be of different types. The Constant type is the
15370 old constant declaration and the Getter and Setter types are for property getters
15372 (ResolveNode::evaluate):
15373 Update for changes to PropertySlot::getValue.
15375 (PropertyListNode::evaluate):
15376 Go through all property nodes and set them on the newly created object. If the
15377 property nodes are of type Getter or Setter, define getters and setters. Otherwise,
15378 just add the properties like before.
15380 (PropertyNode::evaluate):
15381 This should never be called directly.
15383 (PropertyNameNode::evaluate):
15384 Rename from PropertyNode::evaluate.
15386 (FunctionCallResolveNode::evaluate):
15387 (FunctionCallBracketNode::evaluate):
15388 (FunctionCallDotNode::evaluate):
15389 (PostfixResolveNode::evaluate):
15390 (PostfixBracketNode::evaluate):
15391 (PostfixDotNode::evaluate):
15392 (TypeOfResolveNode::evaluate):
15393 (PrefixResolveNode::evaluate):
15394 (PrefixBracketNode::evaluate):
15395 (PrefixDotNode::evaluate):
15396 (AssignResolveNode::evaluate):
15397 (AssignDotNode::evaluate):
15398 (AssignBracketNode::evaluate):
15399 Update for changes to PropertySlot::getValue.
15402 (KJS::PropertyNameNode::PropertyNameNode):
15403 Rename from PropertyNode.
15405 (KJS::PropertyNode::):
15406 (KJS::PropertyNode::PropertyNode):
15407 New class, representing a single property.
15409 (KJS::PropertyListNode::PropertyListNode):
15410 Rename from PropertyValueNode.
15412 (KJS::FuncExprNode::FuncExprNode):
15413 Put ParameterNode parameter last, and make it optional.
15415 (KJS::ObjectLiteralNode::ObjectLiteralNode):
15416 Use a PropertyListNode here now.
15418 * kjs/nodes2string.cpp:
15419 (PropertyListNode::streamTo):
15420 Iterate through all property nodes.
15422 (PropertyNode::streamTo):
15423 Print out the name and value. Doesn't handle getters and setters currently.
15425 (PropertyNameNode::streamTo):
15426 Rename from PropertyNode::streamTo.
15429 (KJS::JSObject::get):
15430 Update for changes to PropertySlot::getValue.
15432 (KJS::JSObject::put):
15433 If the property already exists and has a Setter, invoke
15434 the setter function instead of setting the property directly.
15436 (KJS::JSObject::defineGetter):
15437 (KJS::JSObject::defineSetter):
15438 New functions for defining property getters and setters on the object.
15441 (KJS::GetterSetterImp::type):
15442 (KJS::GetterSetterImp::GetterSetterImp):
15443 (KJS::GetterSetterImp::getGetter):
15444 (KJS::GetterSetterImp::setGetter):
15445 (KJS::GetterSetterImp::getSetter):
15446 (KJS::GetterSetterImp::setSetter):
15447 New class for properties which have getters and setters defined.
15448 This class is only used internally and should never be seen from the outside.
15450 (KJS::JSObject::getOwnPropertySlot):
15451 If the property is a getter, call setGetterSlot on the property slot.
15453 * kjs/object_object.cpp:
15454 (ObjectPrototype::ObjectPrototype):
15455 Add __defineGetter__, __defineSetter, __lookupGetter__, __lookupSetter__
15458 (ObjectProtoFunc::callAsFunction):
15459 Implement handlers for new functions.
15461 * kjs/object_object.h:
15462 (KJS::ObjectProtoFunc::):
15463 Add ids for new functions.
15465 * kjs/property_slot.cpp:
15466 (KJS::PropertySlot::undefinedGetter):
15467 Update for changes to PropertySlot::GetValueFunc.
15469 (KJS::PropertySlot::functionGetter):
15470 Call the function getter object and return its value.
15472 * kjs/property_slot.h:
15473 (KJS::PropertySlot::getValue):
15474 Add a new argument which is the original object that
15475 getPropertySlot was called on.
15477 (KJS::PropertySlot::setGetterSlot):
15478 (KJS::PropertySlot::):
15479 New function which sets a getter slot. When getValue is called on a
15480 getter slot, the getter function object is invoked.
15482 * kjs/string_object.cpp:
15483 (StringInstance::lengthGetter):
15484 (StringInstance::indexGetter):
15485 * kjs/string_object.h:
15486 Update for changes to PropertySlot::GetValueFunc.
15490 Add GetterSetterType and make GetterSetterImp a friend class of JSCell.
15492 2005-12-12 Maciej Stachowiak <mjs@apple.com>
15496 - added a new HashCountedSet class for the common pattern of mapping items to counts that can change
15498 * kxmlcore/HashCountedSet.h: Added.
15499 (KXMLCore::HashCountedSet::*): Implemented, on top of HashMap.
15500 * kxmlcore/HashMap.h:
15501 (KXMLCore::HashMap::add): New method - does not replace existing value if key already present
15502 but otherwise like set().
15503 (KXMLCore::HashMap::set): Improved comments.
15504 * kxmlcore/HashMapPtrSpec.h:
15505 (KXMLCore::HashMap::add): Added to specializations too.
15506 * JavaScriptCore.xcodeproj/project.pbxproj: Add new file.
15507 * kxmlcore/HashFunctions.h: Added include of stdint.h
15509 - replaced the custom hashtable for values protected from GC with HashCountedSet
15511 * kjs/collector.cpp:
15512 (KJS::Collector::protect): Moved code here from ProtectedValues::increaseProtectCount
15513 since the code is so simple now.
15514 (KJS::Collector::unprotect): Ditto for ProtectedValues::decreaseProtectCount.
15515 (KJS::Collector::markProtectedObjects): Updated for new way of doing things, now
15517 (KJS::Collector::numReferencedObjects): ditto
15518 (KJS::Collector::rootObjectClasses): ditto
15519 * kjs/collector.h: Added protect and unprotect static methods
15521 (KJS::gcProtect): Updated for removal of ProtectedValues class
15522 (KJS::gcUnprotect): likewise
15523 * kjs/protected_values.cpp: Removed.
15524 * kjs/protected_values.h: Removed.
15526 2005-12-10 Darin Adler <darin@apple.com>
15528 Rubber stamped by Maciej.
15530 - did long-promised KJS renaming:
15532 ValueImp -> JSValue
15533 ObjectImp -> JSObject
15534 AllocatedValueImp -> JSCell
15536 A renaming to get a class out of the way
15538 KJS::Bindings::JSObject -> JavaJSObject
15540 and some other "imp-reduction" renaming
15542 *InstanceImp -> *Instance
15543 *ProtoFuncImp -> *ProtoFunc
15544 *PrototypeImp -> *Prototype
15545 ArgumentsImp -> Arguments
15546 RuntimeArrayImp -> RuntimeArray
15547 RuntimeMethodImp -> RuntimeMethod
15549 * most files and functions
15551 2005-12-10 Darin Adler <darin@apple.com>
15553 Reviewed by Maciej.
15555 - eliminated the old Undefined(), Null(), Boolean(), Number(), and String()
15557 Code now uses jsUndefined(), jsNull(), jsBoolean(), jsNumber(), and jsString().
15559 * bindings/NP_jsobject.cpp:
15561 * bindings/c/c_instance.cpp:
15562 (KJS::Bindings::CInstance::invokeMethod):
15563 (KJS::Bindings::CInstance::invokeDefaultMethod):
15564 * bindings/c/c_runtime.cpp:
15565 (CField::valueFromInstance):
15566 * bindings/c/c_utility.cpp:
15567 (KJS::Bindings::convertNPVariantToValue):
15568 * bindings/jni/jni_instance.cpp:
15569 (JavaInstance::invokeMethod):
15570 (JavaInstance::invokeDefaultMethod):
15571 * bindings/jni/jni_jsobject.cpp:
15573 (JSObject::convertJObjectToValue):
15574 * bindings/jni/jni_runtime.cpp:
15575 (JavaArray::convertJObjectToArray):
15576 (JavaField::valueFromInstance):
15577 (JavaArray::valueAt):
15578 * bindings/objc/WebScriptObject.mm:
15579 (-[WebScriptObject callWebScriptMethod:withArguments:]):
15580 (-[WebScriptObject evaluateWebScript:]):
15581 (-[WebScriptObject valueForKey:]):
15582 (-[WebScriptObject webScriptValueAtIndex:]):
15583 * bindings/objc/objc_instance.mm:
15584 (ObjcInstance::invokeMethod):
15585 (ObjcInstance::invokeDefaultMethod):
15586 (ObjcInstance::getValueOfUndefinedField):
15587 * bindings/objc/objc_runtime.mm:
15588 (ObjcField::valueFromInstance):
15589 (ObjcFallbackObjectImp::callAsFunction):
15590 * bindings/objc/objc_utility.mm:
15591 (KJS::Bindings::convertNSStringToString):
15592 (KJS::Bindings::convertObjcValueToValue):
15593 * bindings/runtime.h:
15594 (KJS::Bindings::Class::fallbackObject):
15595 (KJS::Bindings::Instance::getValueOfUndefinedField):
15596 (KJS::Bindings::Instance::valueOf):
15597 * bindings/runtime_array.cpp:
15598 (RuntimeArrayImp::lengthGetter):
15599 * bindings/runtime_method.cpp:
15600 (RuntimeMethodImp::lengthGetter):
15601 (RuntimeMethodImp::callAsFunction):
15602 (RuntimeMethodImp::execute):
15603 * kjs/array_object.cpp:
15604 (ArrayInstanceImp::lengthGetter):
15605 (CompareWithCompareFunctionArguments::CompareWithCompareFunctionArguments):
15606 (ArrayPrototypeImp::ArrayPrototypeImp):
15607 (ArrayProtoFuncImp::ArrayProtoFuncImp):
15608 (ArrayProtoFuncImp::callAsFunction):
15609 (ArrayObjectImp::ArrayObjectImp):
15610 * kjs/bool_object.cpp:
15611 (BooleanPrototypeImp::BooleanPrototypeImp):
15612 (BooleanProtoFuncImp::callAsFunction):
15613 (BooleanObjectImp::BooleanObjectImp):
15614 (BooleanObjectImp::callAsFunction):
15615 * kjs/error_object.cpp:
15616 (ErrorPrototypeImp::ErrorPrototypeImp):
15617 (ErrorProtoFuncImp::ErrorProtoFuncImp):
15618 (ErrorProtoFuncImp::callAsFunction):
15619 (ErrorObjectImp::ErrorObjectImp):
15620 (NativeErrorImp::NativeErrorImp):
15621 * kjs/function.cpp:
15622 (KJS::FunctionImp::callAsFunction):
15623 (KJS::FunctionImp::processParameters):
15624 (KJS::FunctionImp::argumentsGetter):
15625 (KJS::FunctionImp::lengthGetter):
15626 (KJS::DeclaredFunctionImp::execute):
15629 (KJS::GlobalFuncImp::callAsFunction):
15630 * kjs/function_object.cpp:
15631 (FunctionPrototypeImp::FunctionPrototypeImp):
15632 (FunctionPrototypeImp::callAsFunction):
15633 (FunctionProtoFuncImp::callAsFunction):
15634 (FunctionObjectImp::FunctionObjectImp):
15635 * kjs/internal.cpp:
15636 (KJS::InterpreterImp::initGlobalObject):
15637 * kjs/interpreter.h:
15639 * kjs/math_object.cpp:
15640 (MathObjectImp::getValueProperty):
15641 (MathFuncImp::callAsFunction):
15643 (Node::setExceptionDetailsIfNeeded):
15644 (NullNode::evaluate):
15645 (PropertyNode::evaluate):
15646 (FunctionCallBracketNode::evaluate):
15647 (FunctionCallDotNode::evaluate):
15648 (PostfixBracketNode::evaluate):
15649 (PostfixDotNode::evaluate):
15650 (VoidNode::evaluate):
15651 (PrefixBracketNode::evaluate):
15652 (PrefixDotNode::evaluate):
15653 (ShiftNode::evaluate):
15654 (valueForReadModifyAssignment):
15655 (AssignDotNode::evaluate):
15656 (AssignBracketNode::evaluate):
15657 (VarDeclNode::evaluate):
15658 (VarDeclNode::processVarDecls):
15659 (VarDeclListNode::evaluate):
15660 (ReturnNode::execute):
15661 (CaseClauseNode::evalStatements):
15662 (ParameterNode::evaluate):
15663 (FuncDeclNode::processFuncDecl):
15665 (KJS::StatementNode::evaluate):
15666 * kjs/number_object.cpp:
15667 (NumberPrototypeImp::NumberPrototypeImp):
15668 (NumberProtoFuncImp::callAsFunction):
15669 (NumberObjectImp::NumberObjectImp):
15670 (NumberObjectImp::getValueProperty):
15671 (NumberObjectImp::callAsFunction):
15673 (KJS::ObjectImp::get):
15674 (KJS::Error::create):
15675 * kjs/object_object.cpp:
15676 (ObjectPrototypeImp::ObjectPrototypeImp):
15677 (ObjectProtoFuncImp::callAsFunction):
15678 (ObjectObjectImp::ObjectObjectImp):
15679 * kjs/property_slot.cpp:
15680 (KJS::PropertySlot::undefinedGetter):
15681 * kjs/regexp_object.cpp:
15682 (RegExpPrototypeImp::RegExpPrototypeImp):
15683 (RegExpProtoFuncImp::callAsFunction):
15684 (RegExpObjectImp::RegExpObjectImp):
15685 (RegExpObjectImp::arrayOfMatches):
15686 (RegExpObjectImp::getBackref):
15687 (RegExpObjectImp::getLastMatch):
15688 (RegExpObjectImp::getLastParen):
15689 (RegExpObjectImp::getLeftContext):
15690 (RegExpObjectImp::getRightContext):
15691 (RegExpObjectImp::getValueProperty):
15692 (RegExpObjectImp::construct):
15693 * kjs/string_object.cpp:
15694 (StringInstanceImp::StringInstanceImp):
15695 (StringPrototypeImp::StringPrototypeImp):
15697 (StringProtoFuncImp::callAsFunction):
15698 (StringObjectImp::StringObjectImp):
15699 (StringObjectImp::callAsFunction):
15700 (StringObjectFuncImp::StringObjectFuncImp):
15701 (StringObjectFuncImp::callAsFunction):
15703 (TestFunctionImp::callAsFunction):
15704 (VersionFunctionImp::callAsFunction):
15707 2005-12-10 Oliver Hunt <ojh16@student.canterbury.ac.nz>
15709 Reviewed by Maciej, landed by Darin.
15711 - fix http://bugs.webkit.org/show_bug.cgi?id=3539
15712 Array join and toString methods do not support circular references
15714 * kjs/array_object.cpp: (ArrayProtoFuncImp::callAsFunction):
15715 Added set of visited objects -- don't recurse if item is already in the set.
15717 2005-12-08 Maciej Stachowiak <mjs@apple.com>
15721 - fix major memory leak and resultant slowdown on JavaScript iBench from
15722 my PassRefPtr changes
15725 (KJS::UString::Rep::create): I forgot to change one of the two overloads to create
15726 with a refcount of 0 instead of 1 (the smart pointer then bumps it. But instead of
15727 changing it, I changed both to start with a refcounter of 1 and use PassRefPtr::adopt
15728 to adopt the initial refcount, this may be a hair more efficient.
15730 - made the assignment operators for smart pointers inline because Shark said so
15732 * kxmlcore/PassRefPtr.h:
15733 (KXMLCore::::operator=):
15734 * kxmlcore/RefPtr.h:
15735 (KXMLCore::::operator=):
15737 2005-12-06 Anders Carlsson <andersca@mac.com>
15741 - fix build when using gcc 4
15746 * kxmlcore/PassRefPtr.h:
15747 (KXMLCore::::operator):
15750 2005-12-05 Maciej Stachowiak <mjs@apple.com>
15754 - add PassRefPtr, a smart pointer class that works in conjunction
15755 with RefPtr but has transfer-of-ownership semantics
15756 - apply RefPtr and PassRefPtr to UString
15757 - cleaned up UString a little so that it doesn't need to have so many friend classes
15759 * JavaScriptCore.xcodeproj/project.pbxproj:
15760 * kjs/identifier.cpp:
15761 (KJS::Identifier::add):
15762 * kjs/identifier.h:
15763 (KJS::Identifier::Identifier):
15764 (KJS::Identifier::equal):
15765 * kjs/property_map.cpp:
15766 (KJS::PropertyMap::get):
15767 (KJS::PropertyMap::getLocation):
15768 (KJS::PropertyMap::put):
15769 (KJS::PropertyMap::remove):
15771 (KJS::UCharReference::operator=):
15772 (KJS::UCharReference::ref):
15773 (KJS::UString::Rep::createCopying):
15774 (KJS::UString::Rep::create):
15775 (KJS::UString::usedCapacity):
15776 (KJS::UString::usedPreCapacity):
15777 (KJS::UString::expandCapacity):
15778 (KJS::UString::expandPreCapacity):
15779 (KJS::UString::UString):
15780 (KJS::UString::spliceSubstringsWithSeparators):
15781 (KJS::UString::append):
15782 (KJS::UString::operator=):
15783 (KJS::UString::toStrictUInt32):
15784 (KJS::UString::substr):
15785 (KJS::UString::copyForWriting):
15788 (KJS::UString::UString):
15789 (KJS::UString::~UString):
15790 (KJS::UString::data):
15791 (KJS::UString::isNull):
15792 (KJS::UString::isEmpty):
15793 (KJS::UString::size):
15794 (KJS::UString::rep):
15795 * kxmlcore/RefPtr.h:
15796 (KXMLCore::RefPtr::RefPtr):
15797 (KXMLCore::RefPtr::operator*):
15798 (KXMLCore::::operator):
15799 (KXMLCore::operator==):
15800 (KXMLCore::operator!=):
15801 (KXMLCore::static_pointer_cast):
15802 (KXMLCore::const_pointer_cast):
15804 2005-12-04 Geoffrey Garen <ggaren@apple.com>
15806 Update test results to match Anders's last checkin.
15808 * tests/mozilla/expected.html:
15810 2005-12-04 Anders Carlsson <andersca@mac.com>
15812 Reviewed by Geoffrey.
15814 - Fixes <http://bugs.webkit.org/show_bug.cgi?id=3999>
15815 Object.prototype is missing propertyIsEnumerable
15818 (KJS::ObjectImp::canPut):
15819 Refactor to use getPropertyAttributes.
15821 (KJS::ObjectImp::propertyIsEnumerable):
15822 New function which checks if a property is enumerable.
15824 (KJS::ObjectImp::getPropertyAttributes):
15826 Add getPropertyAttributes and propertyIsEnumerable.
15828 * kjs/object_object.cpp:
15829 (ObjectPrototypeImp::ObjectPrototypeImp):
15830 (ObjectProtoFuncImp::callAsFunction):
15831 * kjs/object_object.h:
15832 (KJS::ObjectProtoFuncImp::):
15833 Add propertyIsEnumerable to the Object prototype.
15835 2005-12-01 Maciej Stachowiak <mjs@apple.com>
15837 Reviewed by Tim Hatcher.
15839 - removed deprecated reset, isNull and nonNull methods
15841 * kxmlcore/RefPtr.h:
15843 2005-12-01 Anders Carlsson <andersca@mac.com>
15847 - Fixes <http://bugs.webkit.org/show_bug.cgi?id=3382>
15848 nodes2strings.cpp fails to print left expression of ForInNode when 'var' is not used
15850 Patch by Mark Rowe.
15852 * kjs/nodes2string.cpp:
15853 (ForInNode::streamTo):
15854 Add lexpr if there's no varDecl.
15856 2005-12-01 Maciej Stachowiak <mjs@apple.com>
15858 Rubber stamped by Eric.
15860 - renamed SharedPtr to RefPtr via script
15862 * JavaScriptCore.xcodeproj/project.pbxproj:
15863 * kjs/function.cpp:
15864 (KJS::GlobalFuncImp::callAsFunction):
15866 * kjs/function_object.cpp:
15867 (FunctionObjectImp::construct):
15868 * kjs/internal.cpp:
15869 (KJS::Parser::parse):
15870 (KJS::InterpreterImp::checkSyntax):
15871 (KJS::InterpreterImp::evaluate):
15874 * kjs/nodes2string.cpp:
15875 (KJS::SourceStream::operator<<):
15877 * kxmlcore/RefPtr.h: Added.
15878 (KXMLCore::RefPtr::RefPtr):
15879 (KXMLCore::RefPtr::~RefPtr):
15880 (KXMLCore::RefPtr::isNull):
15881 (KXMLCore::RefPtr::notNull):
15882 (KXMLCore::RefPtr::reset):
15883 (KXMLCore::RefPtr::get):
15884 (KXMLCore::RefPtr::operator*):
15885 (KXMLCore::RefPtr::operator->):
15886 (KXMLCore::RefPtr::operator!):
15887 (KXMLCore::RefPtr::operator UnspecifiedBoolType):
15888 (KXMLCore::::operator):
15889 (KXMLCore::operator==):
15890 (KXMLCore::operator!=):
15891 (KXMLCore::static_pointer_cast):
15892 (KXMLCore::const_pointer_cast):
15893 * kxmlcore/SharedPtr.h: Removed.
15895 2005-11-30 Maciej Stachowiak <mjs@apple.com>
15897 Reviewed by Dave Hyatt.
15899 - change idiom used for implicit bool conversion of smart pointers, because the old one gives weird error messages sometimes
15902 (KJS::ProtectedPtr::operator UnspecifiedBoolType):
15903 * kxmlcore/SharedPtr.h:
15904 (KXMLCore::SharedPtr::operator UnspecifiedBoolType):
15906 2005-11-29 Mitz Pettel <opendarwin.org@mitzpettel.com>
15908 Reviewed by ggaren. Committed by eseidel.
15910 Date conversion to local time gets the DST flag wrong sometimes
15911 http://bugs.webkit.org/show_bug.cgi?id=5514
15913 * kjs/date_object.cpp:
15914 (KJS::isTime_tSigned):
15915 (KJS::DateProtoFuncImp::callAsFunction):
15917 2005-11-26 Maciej Stachowiak <mjs@apple.com>
15919 Rubber stamped by Eric.
15921 - renamed InterpreterLock to JSLock
15923 * bindings/NP_jsobject.cpp:
15926 (_NPN_GetProperty):
15927 (_NPN_SetProperty):
15928 (_NPN_RemoveProperty):
15929 (_NPN_HasProperty):
15931 (_NPN_SetException):
15932 * bindings/jni/jni_jsobject.cpp:
15935 (JSObject::getMember):
15936 (JSObject::setMember):
15937 (JSObject::removeMember):
15938 (JSObject::getSlot):
15939 (JSObject::setSlot):
15940 (JSObject::toString):
15941 (JSObject::convertJObjectToValue):
15942 * bindings/objc/WebScriptObject.mm:
15943 (-[WebScriptObject callWebScriptMethod:withArguments:]):
15944 (-[WebScriptObject evaluateWebScript:]):
15945 (-[WebScriptObject setValue:forKey:]):
15946 (-[WebScriptObject valueForKey:]):
15947 (-[WebScriptObject removeWebScriptKey:]):
15948 (-[WebScriptObject stringRepresentation]):
15949 (-[WebScriptObject webScriptValueAtIndex:]):
15950 (-[WebScriptObject setWebScriptValueAtIndex:value:]):
15951 (+[WebScriptObject _convertValueToObjcValue:originExecutionContext:executionContext:]):
15952 * bindings/runtime.cpp:
15953 (Instance::createRuntimeObject):
15954 * bindings/runtime_root.cpp:
15955 (KJS::Bindings::addNativeReference):
15956 (KJS::Bindings::removeNativeReference):
15957 (RootObject::removeAllNativeReferences):
15958 * bindings/runtime_root.h:
15959 (KJS::Bindings::RootObject::~RootObject):
15960 (KJS::Bindings::RootObject::setRootObjectImp):
15961 * bindings/testbindings.cpp:
15963 * bindings/testbindings.mm:
15966 (KJS::initializeJSLock):
15967 (KJS::JSLock::lock):
15968 (KJS::JSLock::unlock):
15969 (KJS::JSLock::lockCount):
15970 (KJS::JSLock::DropAllLocks::DropAllLocks):
15971 (KJS::JSLock::DropAllLocks::~DropAllLocks):
15973 (KJS::JSLock::JSLock):
15974 (KJS::JSLock::~JSLock):
15975 * kjs/collector.cpp:
15976 (KJS::Collector::allocate):
15977 (KJS::Collector::collect):
15978 * kjs/internal.cpp:
15979 (KJS::InterpreterImp::InterpreterImp):
15980 (KJS::InterpreterImp::clear):
15981 (KJS::InterpreterImp::checkSyntax):
15982 (KJS::InterpreterImp::evaluate):
15983 * kjs/interpreter.cpp:
15984 (Interpreter::evaluate):
15986 (KJS::::ProtectedPtr):
15987 (KJS::::~ProtectedPtr):
15989 * kjs/protected_reference.h:
15990 (KJS::ProtectedReference::ProtectedReference):
15991 (KJS::ProtectedReference::~ProtectedReference):
15992 (KJS::ProtectedReference::operator=):
15993 * kjs/protected_values.cpp:
15994 (KJS::ProtectedValues::getProtectCount):
15995 (KJS::ProtectedValues::increaseProtectCount):
15996 (KJS::ProtectedValues::decreaseProtectCount):
15998 (TestFunctionImp::callAsFunction):
16001 2005-11-26 Darin Adler <darin@apple.com>
16003 Reviewed by eseidel. Committed by eseidel.
16005 Inline ScopeChain functions for speed.
16006 http://bugs.webkit.org/show_bug.cgi?id=5687
16009 (KJS::ScopeChain::mark):
16010 * kjs/scope_chain.cpp:
16011 * kjs/scope_chain.h:
16012 (KJS::ScopeChain::ref):
16013 (KJS::ScopeChain::operator=):
16014 (KJS::ScopeChain::bottom):
16015 (KJS::ScopeChain::push):
16016 (KJS::ScopeChain::pop):
16018 2005-11-21 Maciej Stachowiak <mjs@apple.com>
16022 <rdar://problem/4139620> Seed: WebKit: hang when sending XMLHttpRequest if automatic proxy config is used
16024 Also factored locking code completely into a separate class, and
16025 added a convenient packaged way to temporarily drop locks.
16027 * JavaScriptCore.xcodeproj/project.pbxproj:
16028 * kjs/JSLock.cpp: Added.
16029 (KJS::initializeInterpreterLock):
16030 (KJS::InterpreterLock::lock):
16031 (KJS::InterpreterLock::unlock):
16032 (KJS::InterpreterLock::lockCount):
16033 (KJS::InterpreterLock::DropAllLocks::DropAllLocks):
16034 (KJS::InterpreterLock::DropAllLocks::~DropAllLocks):
16035 * kjs/JSLock.h: Added.
16036 (KJS::InterpreterLock::InterpreterLock):
16037 (KJS::InterpreterLock::~InterpreterLock):
16038 * kjs/internal.cpp:
16040 * kjs/interpreter.cpp:
16041 * kjs/interpreter.h:
16044 (TestFunctionImp::callAsFunction):
16046 2005-11-21 Eric Seidel <eseidel@apple.com>
16048 Rubber-stamped by hyatt.
16050 Removed JavaScriptCore+SVG target.
16052 * JavaScriptCore.xcodeproj/project.pbxproj:
16054 2005-11-15 Geoffrey Garen <ggaren@apple.com>
16058 - Fixed <rdar://problem/4342216> Installer crash in
16059 KJS::ValueImp::marked() when garbage collector runs inside call to
16060 ConstantValues::init()
16062 I took responsibility for initializing and marking ConstantValues away
16063 from InterpreterImp, since it's possible to reference such a value
16064 before any interpreter has been created and after the last interpreter
16065 has been destroyed.
16067 InterpreterImp::lock now initializes ConstantValues. It's a good
16068 place for the initialization because you have to call it before
16069 creating any objects. Since ::lock can be called more than once,
16070 I added a check in ConstantValues::init to ensure that it executes
16073 Collector:collect is now responsible for marking ConstantValues.
16075 We no longer clear the ConstantValues since we can't guarantee that no
16076 one has a reference to them.
16078 FIXME: This is hackery. The long-term plan is to make ConstantValues
16079 use immediate values that require no initialization.
16082 * kjs/collector.cpp:
16083 (KJS::Collector::collect):
16084 * kjs/internal.cpp:
16085 (KJS::InterpreterImp::InterpreterImp):
16086 (KJS::InterpreterImp::lock):
16087 (KJS::InterpreterImp::clear):
16088 (KJS::InterpreterImp::mark):
16091 (KJS::ConstantValues::initIfNeeded):
16094 2005-11-08 Geoffrey Garen <ggaren@apple.com>
16098 This patch fixes some naughty naughty code -- 5 crashes and 2
16099 may-go-haywire-in-the-futures.
16101 One such crash is <rdar://problem/4247330> 8C46 Crash with with
16102 incomplete parameter list to webScript object function.
16104 I replaced early returns from within NS_DURINGs with calls to
16105 NS_VALUERETURN because the doc says, "You cannot use goto or
16106 return to exit an exception handling domain -- errors will result."
16108 I replaced hard-coded analyses of -[NSMethodSignature
16109 methodReturnType] with more abstracted alternatives, since
16110 the documentation says "This encoding is implementation-specific,
16111 so applications should use it with caution," and then emits an
16114 I removed the early return in the case where a JavaScript caller
16115 supplies an insufficient number of arguments, because the right
16116 thing to do in such a case is to use JavaScript's defined behavior
16117 of supplying "undefined" for any missing arguments.
16119 I also changed ObjcInstance::invokeMethod so that it no longer
16120 deletes the method passed to it. It doesn't create the method,
16121 so it shouldn't delete it. A friend of mine named
16122 KERNEL_PROTECTION_FAILURE agrees with me on this point.
16124 Finally, I changed an assert(true) to assert(false) because
16125 all the other asserts were making fun of it.
16127 * bindings/objc/objc_instance.mm:
16128 (ObjcInstance::invokeMethod):
16129 (ObjcInstance::invokeDefaultMethod):
16131 2005-11-06 Geoffrey Garen <ggaren@apple.com>
16135 - Fixed http://bugs.webkit.org/show_bug.cgi?id=5571
16136 REGRESSION (412.5-TOT): duplicated words/sentences at
16137 shakespeer.sourceforge.net
16139 Our UTF16-modified PCRE didn't work with extended character classes
16140 (classes involving characters > 255) because it used the GETCHARINC
16141 macro to read through them. In UTF16 mode, GETCHARINC expects UTF16
16142 input, but PCRE encodes character classes in UTF8 regardless of the
16143 input mode of the subject string.
16145 The fix is to explicitly define GETUTF8CHARINC, and to use it,
16146 rather than GETCHARINC, when reading extended character classes.
16148 In UTF8 mode, we simply define GETCHARINC to be GETUTF8CHARINC.
16150 * pcre/pcre_internal.h:
16151 * pcre/pcre_xclass.c:
16154 2005-11-05 Geoffrey Garen <ggaren@apple.com>
16156 Patch by Mitz Pettel, reviewed by Maciej.
16158 - Fixed http://bugs.webkit.org/show_bug.cgi?id=5357
16159 REGRESSION: Scriptable plugin hides properties of OBJECT element
16161 * bindings/objc/objc_class.mm:
16162 (KJS::Bindings::ObjcClass::fallbackObject):
16164 2005-11-05 Geoffrey Garen <ggaren@apple.com>
16168 - Fixed http://bugs.webkit.org/show_bug.cgi?id=5409
16169 slice() testcase doesn't pass
16171 Modified String.slice to deal with funky values.
16172 Updated test results. We now pass <js1_2/String/slice.js>.
16174 * kjs/string_object.cpp:
16175 (StringProtoFuncImp::callAsFunction):
16176 * tests/mozilla/expected.html:
16178 2005-11-04 Darin Adler <darin@apple.com>
16180 Reviewed by Tim Hatcher.
16182 * kxmlcore/HashSet.h: Fixed case of "hashfunctions.h" -- needs to be "HashFunctions.h".
16184 2005-11-03 Timothy Hatcher <timothy@apple.com>
16186 Reviewed by Darin and Vicki.
16188 * JavaScriptCore.xcodeproj/project.pbxproj:
16189 Change to use $(SYSTEM_LIBRARY_DIR) consistently and place
16190 $(NEXT_ROOT) in a few spots to make build-root work.
16192 2005-11-03 Geoffrey Garen <ggaren@apple.com>
16194 - Updated JavaScriptCore test results to reflect recent fixes.
16196 * tests/mozilla/expected.html:
16198 2005-11-03 Geoffrey Garen <ggaren@apple.com>
16202 - Fixed http://bugs.webkit.org/show_bug.cgi?id=5602
16203 REGRESSION: RegExp("[^\\s$]+", "g") returns extra matches
16205 We now update lastIndex relative to the start of the last match,
16206 rather than the start of the last search. We used to assume that
16207 the two were equal, but that is not the case when a pattern
16208 matches at a character after the first in the string.
16210 * kjs/regexp_object.cpp:
16211 (RegExpProtoFuncImp::callAsFunction):
16213 2005-10-24 John Sullivan <sullivan@apple.com>
16215 Reviewed by Darin Adler. Code changes by Alexey Proskuryakov.
16217 - fixed http://bugs.webkit.org/show_bug.cgi?id=4931
16218 Unicode format characters (Cf) should be removed from JavaScript source
16221 include <unicode/uchar.h>
16223 use KJS::UChar instead of UChar to avoid ambiguity caused by new include
16225 ditto; also, use shift(4) to skip first 4 chars to take advantage of new
16228 skip chars of type U_FORMAT_CHAR
16229 (Lexer::convertUnicode):
16230 use KJS::UChar instead of UChar to avoid ambiguity caused by new include
16233 (Lexer::makeIdentifier):
16235 (Lexer::makeUString):
16238 * tests/mozilla/ecma/Array/15.4.5.1-1.js:
16239 updated to skip soft hyphens
16241 2005-10-24 John Sullivan <sullivan@apple.com>
16243 Reviewed by Darin Adler. Code changes by George Staikos/Geoff Garen.
16245 - fixed http://bugs.webkit.org/show_bug.cgi?id=4142
16246 Date object does not always adjust daylight savings correctly
16248 * kjs/date_object.cpp:
16250 Fix the case where a time change crosses the daylight savings start/end dates.
16252 2005-10-17 Maciej Stachowiak <mjs@apple.com>
16254 Reviewed by Geoff. Code changes by Darin.
16256 - some micro-optimizations to FastMalloc to reduce math and branches.
16258 * kxmlcore/FastMalloc.cpp:
16259 (KXMLCore::TCMalloc_Central_FreeList::Populate):
16260 (KXMLCore::fastMallocRegisterThread):
16261 (KXMLCore::TCMalloc_ThreadCache::GetCache):
16262 (KXMLCore::TCMalloc_ThreadCache::GetCacheIfPresent):
16264 2005-10-15 Maciej Stachowiak <mjs@apple.com>
16266 Reverted fix for this bug, because it was part of a time range that caused a performance
16269 <rdar://problem/4260481> Remove Reference type from JavaScriptCore
16271 2005-10-15 Darin Adler <darin@apple.com>
16273 * kxmlcore/HashTable.cpp: Fixed build failure (said hashtable.h instead of HashTable.h).
16275 2005-10-14 Geoffrey Garen <ggaren@apple.com>
16277 Style changes recommended by Darin.
16279 Changed to camelCase, changed ValueImp* to ValueImp *.
16281 * kjs/simple_number.h:
16282 (KJS::SimpleNumber::make):
16283 (KJS::SimpleNumber::value):
16285 2005-10-11 Geoffrey Garen <ggaren@apple.com>
16287 Added regexp_object.lut.h build phase from JavaScriptCore
16288 to JavaScriptCore+SVG.
16292 * JavaScriptCore.xcodeproj/project.pbxproj:
16294 2005-10-11 Geoffrey Garen <ggaren@apple.com>
16296 Fixed build bustage from last checkin (stray characters
16297 in the project file).
16301 * JavaScriptCore.xcodeproj/project.pbxproj:
16303 2005-10-11 Geoffrey Garen <ggaren@apple.com>
16305 New JavaScriptCore test results to reflect the last change.
16307 * tests/mozilla/expected.html:
16309 2005-10-10 Geoffrey Garen <ggaren@apple.com>
16311 - Implemented caching of match state inside the global RegExp object
16312 (lastParen, leftContext, rightContext, lastMatch, input).
16314 exec(), test(), match(), search(), and replace() now dipatch regular
16315 expression matching through the RegExp object's performMatch function,
16316 to facilitate caching. This replaces registerRegexp and
16319 - Implemented the special '$' aliases (e.g. RegExp.input aliases to
16322 - Moved support for backreferences into the new static hash table
16323 used for other special RegExp properties. Truncated backreferences
16324 at $9 to match IE, FF, and the "What's New in Netscape 1.2?" doc.
16325 (String.replace still supports double-digit backreferences.)
16327 - Tweaked RegExp.prototype.exec to handle ginormous values in lastIndex.
16329 Fixes 11 -- count em, 11 -- JavaScriptCore tests.
16331 * fast/js/regexp-caching-expected.txt: Added.
16332 * fast/js/regexp-caching.html: Added.
16336 * JavaScriptCore.xcodeproj/project.pbxproj: Added regexp_object.lut.h
16337 * kjs/create_hash_table: Tweaked to allow for more exotic characters.
16338 We now rely on the compiler to catch illegal
16341 (KJS::RegExp::RegExp):
16342 * kjs/regexp_object.cpp:
16343 (RegExpProtoFuncImp::callAsFunction):
16344 (RegExpObjectImp::RegExpObjectImp):
16345 (RegExpObjectImp::performMatch):
16346 (RegExpObjectImp::arrayOfMatches):
16347 (RegExpObjectImp::backrefGetter):
16348 (RegExpObjectImp::getLastMatch):
16349 (RegExpObjectImp::getLastParen):
16350 (RegExpObjectImp::getLeftContext):
16351 (RegExpObjectImp::getRightContext):
16352 (RegExpObjectImp::getOwnPropertySlot):
16353 (RegExpObjectImp::getValueProperty):
16354 (RegExpObjectImp::put):
16355 (RegExpObjectImp::putValueProperty):
16356 * kjs/regexp_object.h:
16357 (KJS::RegExpObjectImp::):
16358 * kjs/string_object.cpp:
16359 (substituteBackreferences):
16361 (StringProtoFuncImp::callAsFunction):
16363 2005-10-09 Darin Adler <darin@apple.com>
16365 Reviewed by Maciej; some changes done after review.
16367 - fixed <rdar://problem/4092064> hanging loading page; rte.ie (works in IE and Firefox)
16368 - fixed http://bugs.webkit.org/show_bug.cgi?id=5280
16369 Date.setMonth fails with negative values
16370 - fixed http://bugs.webkit.org/show_bug.cgi?id=5154
16371 JSC should switch to _r variants of unix time/date functions
16372 - fixed a few possible overflow cases
16374 Retested all tests to be sure nothing broke; added layout test for bug 5280.
16376 * kjs/config.h: Removed TIME_WITH_SYS_TIME define. Also set HAVE_SYS_TIMEB_H
16377 for the __APPLE__ case (the latter is accurate but irrelevant).
16379 * kjs/date_object.h: Reformatted. Removed unnecessary include of "function_object.h".
16380 Moved declarations of helper classes and functions into the cpp file.
16382 * kjs/date_object.cpp: Removed code at top to define macros to use CoreFoundation instead of
16383 POSIX date functions.
16384 (KJS::styleFromArgString): Tweaked to return early instead of using a variable.
16385 (KJS::formatLocaleDate): Tweaked to check for undefined rather than checking argument count.
16386 (KJS::formatDate): Made parameter const.
16387 (KJS::formatDateUTCVariant): Ditto.
16388 (KJS::formatTime): Ditto.
16389 (KJS::DateProtoFuncImp::callAsFunction): Use gmtime_r and localtime_r instead of gmtime and
16391 (KJS::DateObjectImp::callAsFunction): Use localtime_r instead of localtime.
16392 (KJS::ymdhmsToSeconds): Renamed from ymdhms_to_seconds. Changed computation to avoid possible
16393 overflow if year is an extremely large or small number.
16394 (KJS::makeTime): Removed code to move large month numbers from tm_mon to tm_year; this was
16395 to accomodate CFGregorianDate, which is no longer used (and didn't handle negative values).
16396 (KJS::parseDate): Renamed from KRFCDate_parseDate; changed to return a value in milliseconds
16397 rather than in seconds. Reformatted the code. Changed to use UTF8String() instead of ascii(),
16398 since ascii() is not thread safe. Changed some variables back from int to long to avoid
16399 trouble if the result of strtol does not fit in an int (64-bit issue only).
16401 2005-10-08 Mitz Pettel <opendarwin.org@mitzpettel.com>
16404 Tweaked and landed by Darin.
16406 - fixed http://bugs.webkit.org/show_bug.cgi?id=5266
16407 Support parenthesized comments in Date.parse()
16409 * kjs/date_object.cpp:
16410 (KJS::skipSpacesAndComments): Take a pointer, and advance it past spaces,
16411 and also past anything enclosed in parentheses.
16412 (KJS::KRFCDate_parseDate): Use skipSpacesAndComments wherever we formerly had
16413 code to skip spaces.
16415 2005-10-08 Justin Haygood <justin@xiondigital.net>
16417 Reviewed, tweaked, and landed by Darin.
16419 - fixed http://bugs.webkit.org/show_bug.cgi?id=5189
16420 pcre_exec.c fails to compile using MSVC
16421 - fixed http://bugs.webkit.org/show_bug.cgi?id=5190
16422 KJS config.h adjustment for Win32
16424 * kjs/config.h: Make sure HAVE_MMAP and HAVE_SBRK are off for Win32.
16425 Turn HAVE_ERRNO_H on for Mac OS X. Sort defines so they are easy to compare
16426 with each other. Remove #undef of DEBUG_COLLECTOR.
16427 * pcre/pcre_exec.c: (match): Work around strange MSVC complaint by splitting
16428 the definition of a local variable into a separate declaration and
16431 2005-10-05 Geoffrey Garen <ggaren@apple.com>
16433 - Darin and I rewrote our implementation of the SimpleNumber class
16434 to store number bit patterns in their floating point formats.
16436 My tweaks reviewed by Darin.
16438 ~1% speedup on JS iBench.
16440 * kjs/internal.h: removed obsolete jsNumber declarations.
16441 * kjs/math_object.cpp:
16442 (MathFuncImp::callAsFunction): changed KJS::isNaN to isNaN
16444 (PostfixResolveNode::evaluate): removed obsolete knownToBeInteger
16445 (PostfixBracketNode::evaluate): ditto
16446 (PostfixDotNode::evaluate): ditto
16447 (PrefixResolveNode::evaluate): ditto
16448 (PrefixBracketNode::evaluate): ditto
16449 (PrefixDotNode::evaluate): ditto
16450 (NegateNode::evaluate): ditto
16451 (valueForReadModifyAssignment): ditto
16452 * kjs/number_object.cpp: removed obsolete comment
16453 * kjs/operations.cpp:
16454 (KJS::equal): removed unnecessary isNaN checks
16455 (KJS::strictEqual): ditto
16456 (KJS::add): removed obsolete knownToBeInteger
16458 * kjs/operations.h: removed include of "value.h" to prevent circular reference
16459 * kjs/simple_number.h: removed unnecessary #includes
16460 (KJS::SimpleNumber::make): see above
16461 (KJS::SimpleNumber::is): ditto
16462 (KJS::SimpleNumber::value): ditto
16463 * kjs/string_object.cpp:
16464 (StringProtoFuncImp::callAsFunction): changed KJS::isNaN to isNaN
16465 * kjs/ustring.cpp: removed unnecessary isNaN check
16466 (KJS::UString::toUInt32): ditto
16468 (KJS::jsNumber): removed obsolete jsNumber definitions
16469 (KJS::ConstantValues::init): NaN is no longer a ConstantValue
16470 (KJS::ConstantValues::clear): ditto
16471 (KJS::ConstantValues::mark): ditto
16472 * kjs/value.h: removed obsolete knownToBeInteger
16473 (KJS::jsNaN): now returns a SimpleNumber
16474 (KJS::ValueImp::getUInt32): changed to account for NaN being a SimpleNumber
16475 (KJS::ValueImp::toBoolean): ditto
16476 (KJS::ValueImp::toString): changed to account for +/- 0.0
16477 (KJS::jsZero): changed to reflect that SimpleNumber::make takes a double
16478 (KJS::jsOne): ditto
16479 (KJS::jsTwo): ditto
16480 (KJS::Number): removed obsolete non-double constructor declarations
16482 2005-10-05 Maciej Stachowiak <mjs@apple.com>
16486 - fixed <rdar://problem/4260481> Remove Reference type from JavaScriptCore
16488 Also fixed some bugs with for..in enumeration while I was at it. object
16489 properties now come before prototype properties and duplicates
16490 between object and prototype are listed only once.
16492 * JavaScriptCore.xcodeproj/project.pbxproj:
16493 * kjs/IdentifierSequencedSet.cpp: Added.
16494 (KJS::IdentifierSequencedSet::IdentifierSequencedSet):
16495 (KJS::IdentifierSequencedSet::deallocateVector):
16496 (KJS::IdentifierSequencedSet::~IdentifierSequencedSet):
16497 (KJS::IdentifierSequencedSet::insert):
16498 * kjs/IdentifierSequencedSet.h: Added.
16499 (KJS::IdentifierSequencedSetIterator::IdentifierSequencedSetIterator):
16500 (KJS::IdentifierSequencedSetIterator::operator*):
16501 (KJS::IdentifierSequencedSetIterator::operator->):
16502 (KJS::IdentifierSequencedSetIterator::operator++):
16503 (KJS::IdentifierSequencedSetIterator::operator==):
16504 (KJS::IdentifierSequencedSetIterator::operator!=):
16505 (KJS::IdentifierSequencedSet::begin):
16506 (KJS::IdentifierSequencedSet::end):
16507 (KJS::IdentifierSequencedSet::size):
16508 * kjs/array_instance.h:
16509 * kjs/array_object.cpp:
16510 (ArrayInstanceImp::getPropertyNames):
16511 (ArrayInstanceImp::setLength):
16512 (ArrayInstanceImp::pushUndefinedObjectsToEnd):
16514 (ForInNode::execute):
16517 (KJS::ObjectImp::getPropertyNames):
16519 * kjs/property_map.cpp:
16520 (KJS::PropertyMap::getEnumerablePropertyNames):
16521 (KJS::PropertyMap::getSparseArrayPropertyNames):
16522 * kjs/property_map.h:
16524 * kjs/protected_reference.h: Removed.
16525 * kjs/reference.cpp: Removed.
16526 * kjs/reference.h: Removed.
16527 * kjs/reference_list.cpp: Removed.
16528 * kjs/reference_list.h: Removed.
16530 (KJS::UString::impl):
16531 * kxmlcore/HashSet.h:
16533 2005-10-04 Eric Seidel <eseidel@apple.com>
16537 Code cleanup, which resulted in a small win on iBench.
16540 (KJS::tryGetAndCallProperty): new static inline
16541 (KJS::ObjectImp::defaultValue): code cleanup
16543 2005-10-03 Maciej Stachowiak <mjs@apple.com>
16545 Patch from George Staikos <staikos@kde.org>, reviewed and tweaked a bit by me.
16547 - more Linux build fixes
16549 * kjs/operations.cpp:
16550 * kxmlcore/FastMalloc.h:
16551 * kxmlcore/TCSystemAlloc.cpp:
16552 (TCMalloc_SystemAlloc):
16554 2005-10-03 Maciej Stachowiak <mjs@apple.com>
16556 Patch from George Staikos <staikos@kde.org>, reviewed and tweaked a bit by me.
16558 http://bugs.webkit.org/show_bug.cgi?id=5174
16559 Add support for compiling on Linux (likely to help for other POSIX systems too)
16561 * kjs/collector.cpp:
16562 (KJS::Collector::markCurrentThreadConservatively):
16563 (KJS::Collector::markOtherThreadConservatively):
16565 * kjs/date_object.cpp:
16567 (KJS::formatDateUTCVariant):
16569 (KJS::timeZoneOffset):
16570 (KJS::DateProtoFuncImp::callAsFunction):
16571 (KJS::DateObjectImp::construct):
16572 (KJS::DateObjectImp::callAsFunction):
16574 * kjs/identifier.cpp:
16575 * kjs/internal.cpp:
16576 (KJS::initializeInterpreterLock):
16577 (KJS::lockInterpreter):
16578 (KJS::unlockInterpreter):
16579 (KJS::UndefinedImp::toPrimitive):
16580 (KJS::UndefinedImp::toBoolean):
16581 (KJS::UndefinedImp::toNumber):
16582 (KJS::UndefinedImp::toString):
16583 (KJS::NullImp::toPrimitive):
16584 (KJS::NullImp::toBoolean):
16585 (KJS::NullImp::toNumber):
16586 (KJS::NullImp::toString):
16587 (KJS::BooleanImp::toPrimitive):
16588 (KJS::BooleanImp::toBoolean):
16589 (KJS::BooleanImp::toNumber):
16590 (KJS::BooleanImp::toString):
16591 (KJS::StringImp::toPrimitive):
16592 (KJS::StringImp::toBoolean):
16593 (KJS::StringImp::toNumber):
16594 (KJS::StringImp::toString):
16596 * kjs/protected_values.cpp:
16598 2005-10-03 Maciej Stachowiak <mjs@apple.com>
16600 - fix Development build after last checkin
16602 * kxmlcore/FastMalloc.cpp:
16603 (KXMLCore::fastMallocRegisterThread):
16605 2005-10-02 Maciej Stachowiak <mjs@apple.com>
16609 <rdar://problem/4283967> REGRESSION: 3% regression on PLT from new FastMalloc
16610 http://bugs.webkit.org/show_bug.cgi?id=5243
16612 A number of optimizations to the new threadsafe malloc that make it actually as fast
16613 as dlmalloc (I measured wrong before) and as memory-efficient as the system malloc.
16615 - use fastMalloc for everything - it now gets applied to all new/delete allocations
16616 via a private inline operator new that is now included into every file via config.h.
16618 - tweaked some of the numeric parameters for size classes and amount of wasted memory
16619 allowed per allocation - this saves on memory use and consequently improves speed.
16621 - so long as the allocator is not being used on background threads, get the per-thread
16622 cache from a global variable instead of from pthread_getspecific, since the latter is slow.
16624 - inline more functions, and force the ones GCC refuses to inline with
16625 attribute(always_inline), nearly all of these have one call site so inlining them has
16628 - use some tricks to calculate allocation size more efficiently and fewer times for small
16629 allocations, to avoid hitting the huge size table array.
16631 - avoid hitting the per-thread cache on code paths that don't need it.
16633 - implement inline assembly version of spinlock for PowerPC (was already done for x86)
16635 * bindings/NP_jsobject.cpp:
16636 * bindings/c/c_class.cpp:
16637 * bindings/c/c_instance.cpp:
16638 * bindings/c/c_runtime.cpp:
16639 * bindings/c/c_utility.cpp:
16640 * bindings/jni/jni_class.cpp:
16641 * bindings/jni/jni_instance.cpp:
16642 * bindings/jni/jni_jsobject.cpp:
16643 * bindings/jni/jni_objc.mm:
16644 * bindings/jni/jni_runtime.cpp:
16645 * bindings/jni/jni_utility.cpp:
16646 * bindings/npruntime.cpp:
16647 * bindings/objc/WebScriptObject.mm:
16648 * bindings/objc/objc_class.mm:
16649 * bindings/objc/objc_instance.mm:
16650 * bindings/objc/objc_runtime.mm:
16651 * bindings/objc/objc_utility.mm:
16652 * bindings/runtime.cpp:
16653 * bindings/runtime_array.cpp:
16654 * bindings/runtime_method.cpp:
16655 * bindings/runtime_object.cpp:
16656 * bindings/runtime_root.cpp:
16657 * bindings/testbindings.cpp:
16658 * bindings/testbindings.mm:
16659 * kjs/array_object.cpp:
16660 (ArrayInstanceImp::ArrayInstanceImp):
16661 (ArrayInstanceImp::~ArrayInstanceImp):
16662 (ArrayInstanceImp::resizeStorage):
16663 * kjs/bool_object.cpp:
16664 * kjs/collector.cpp:
16665 (KJS::Collector::registerThread):
16667 * kjs/debugger.cpp:
16668 * kjs/error_object.cpp:
16669 * kjs/function.cpp:
16670 * kjs/function_object.cpp:
16671 * kjs/identifier.cpp:
16672 (KJS::Identifier::rehash):
16673 * kjs/internal.cpp:
16674 (KJS::Parser::saveNewNode):
16675 (KJS::clearNewNodes):
16676 * kjs/interpreter.cpp:
16678 (Lexer::doneParsing):
16679 (Lexer::makeIdentifier):
16680 (Lexer::makeUString):
16682 * kjs/math_object.cpp:
16685 * kjs/nodes2string.cpp:
16686 * kjs/number_object.cpp:
16687 (integer_part_noexp):
16690 * kjs/object_object.cpp:
16691 * kjs/property_map.cpp:
16692 * kjs/property_slot.cpp:
16693 * kjs/protected_values.cpp:
16694 (KJS::ProtectedValues::rehash):
16695 * kjs/reference.cpp:
16696 * kjs/reference_list.cpp:
16698 * kjs/regexp_object.cpp:
16699 * kjs/scope_chain.cpp:
16700 * kjs/scope_chain.h:
16701 * kjs/string_object.cpp:
16705 * kxmlcore/Assertions.mm:
16706 * kxmlcore/FastMalloc.cpp:
16707 (KXMLCore::InitSizeClasses):
16708 (KXMLCore::DLL_IsEmpty):
16709 (KXMLCore::DLL_Prepend):
16710 (KXMLCore::TCMalloc_Central_FreeList::Insert):
16711 (KXMLCore::TCMalloc_Central_FreeList::Remove):
16712 (KXMLCore::TCMalloc_Central_FreeList::Populate):
16713 (KXMLCore::TCMalloc_ThreadCache::Allocate):
16714 (KXMLCore::TCMalloc_ThreadCache::FetchFromCentralCache):
16715 (KXMLCore::fastMallocRegisterThread):
16716 (KXMLCore::TCMalloc_ThreadCache::GetCache):
16717 (KXMLCore::TCMalloc_ThreadCache::GetCacheIfPresent):
16718 (KXMLCore::TCMalloc_ThreadCache::CreateCacheIfNecessary):
16719 (KXMLCore::do_malloc):
16720 (KXMLCore::do_free):
16721 (KXMLCore::realloc):
16722 * kxmlcore/FastMalloc.h:
16726 (operator delete[]):
16727 * kxmlcore/HashTable.cpp:
16728 * kxmlcore/TCSpinLock.h:
16729 (TCMalloc_SpinLock::Lock):
16730 (TCMalloc_SpinLock::Unlock):
16731 (TCMalloc_SlowLock):
16732 * kxmlcore/TCSystemAlloc.cpp:
16734 2005-09-30 Geoffrey Garen <ggaren@apple.com>
16736 - Second cut at fixing <rdar://problem/4275206> Denver Regression: Seed:
16737 Past Editions of Opinions display "NAN/Undefined" for www.washingtonpost.com
16741 * kjs/date_object.cpp:
16742 (KJS::KRFCDate_parseDate): Intead of creating a timezone when one isn't specified,
16743 just rely on the fallback logic, which will do it for you. Also, return invalidDate
16744 if the date includes trailing garbage. (Somewhat accidentally, the timezone logic
16745 used to catch trailing garbage.)
16747 Added test case to fast/js/date-parse-test.html.
16749 2005-09-29 Eric Seidel <eseidel@apple.com>
16750 Fix from Mitz Pettel <opendarwin.org@mitzpettel.com>
16754 Fix JSC memory smasher in TOT.
16755 http://bugs.webkit.org/show_bug.cgi?id=5176
16757 * pcre/pcre_exec.c:
16760 2005-09-29 Eric Seidel <eseidel@apple.com>
16761 Fix from Mitz Pettel <opendarwin.org@mitzpettel.com>
16765 * JavaScriptCore.xcodeproj/project.pbxproj:
16766 Build fix for JSC+SVG after 5161.
16767 http://bugs.webkit.org/show_bug.cgi?id=5179
16769 2005-09-28 Geoffrey Garen <ggaren@apple.com>
16771 - Fixed <rdar://problem/4275206> Denver Regression: Seed: Past Editions of Opinions display
16772 "NAN/Undefined" for www.washingtonpost.com
16776 * kjs/date_object.cpp:
16777 (KJS::KRFCDate_parseDate): If the timezone isn't specified, rather than returning
16778 invalidDate, substitute the local timezone. This matches the behavior of FF/IE.
16780 2005-09-28 Maciej Stachowiak <mjs@apple.com>
16782 Patch from George Staikos, reviewed by me.
16784 - fixed some compile issues on Linux
16786 * kjs/property_slot.h:
16787 * kjs/simple_number.h:
16789 2005-09-27 Maciej Stachowiak <mjs@apple.com>
16793 - move HashMap/HashSet code down to JavaScriptCore
16794 http://bugs.webkit.org/show_bug.cgi?id=5161
16796 * JavaScriptCore.xcodeproj/project.pbxproj:
16797 * kjs/internal.cpp:
16798 (KJS::interpreterMap): Function that fetches the interpreter map on demand.
16799 (KJS::InterpreterImp::InterpreterImp): Replace use of InterpreterMap
16800 class with an appropriate HashMap.
16801 (KJS::InterpreterImp::clear): ditto
16802 (KJS::InterpreterImp::interpreterWithGlobalObject): ditto
16803 * kjs/interpreter_map.cpp: Removed.
16804 * kjs/interpreter_map.h: Removed.
16806 The HashMap/HashSet code (copied and slightly tweaked from WebCore)
16808 * kxmlcore/HashFunctions.h: Added.
16812 (KXMLCore::PointerHash::hash):
16813 (KXMLCore::PointerHash::equal):
16814 * kxmlcore/HashMap.h: Added.
16815 (KXMLCore::extractFirst):
16816 (KXMLCore::HashMap::HashMap):
16817 (KXMLCore::::size):
16818 (KXMLCore::::capacity):
16819 (KXMLCore::::isEmpty):
16820 (KXMLCore::::begin):
16822 (KXMLCore::::find):
16823 (KXMLCore::::contains):
16826 (KXMLCore::::remove):
16827 (KXMLCore::::clear):
16828 (KXMLCore::deleteAllValues):
16829 * kxmlcore/HashMapPtrSpec.h: Added.
16830 (KXMLCore::PointerHashIteratorAdapter::PointerHashIteratorAdapter):
16831 (KXMLCore::PointerHashIteratorAdapter::operator*):
16832 (KXMLCore::PointerHashIteratorAdapter::operator->):
16833 (KXMLCore::PointerHashIteratorAdapter::operator++):
16834 (KXMLCore::PointerHashIteratorAdapter::operator==):
16835 (KXMLCore::PointerHashIteratorAdapter::operator!=):
16836 (KXMLCore::PointerHashConstIteratorAdapter::PointerHashConstIteratorAdapter):
16837 (KXMLCore::PointerHashConstIteratorAdapter::operator*):
16838 (KXMLCore::PointerHashConstIteratorAdapter::operator->):
16839 (KXMLCore::PointerHashConstIteratorAdapter::operator++):
16840 (KXMLCore::PointerHashConstIteratorAdapter::operator==):
16841 (KXMLCore::PointerHashConstIteratorAdapter::operator!=):
16843 * kxmlcore/HashSet.h: Added.
16844 (KXMLCore::identityExtract):
16845 (KXMLCore::convertAdapter):
16846 (KXMLCore::HashSet::HashSet):
16847 (KXMLCore::::size):
16848 (KXMLCore::::capacity):
16849 (KXMLCore::::isEmpty):
16850 (KXMLCore::::begin):
16852 (KXMLCore::::find):
16853 (KXMLCore::::contains):
16854 (KXMLCore::::insert):
16855 (KXMLCore::::remove):
16856 (KXMLCore::::clear):
16857 * kxmlcore/HashTable.cpp: Added.
16858 (KXMLCore::HashTableStats::~HashTableStats):
16859 (KXMLCore::HashTableStats::recordCollisionAtCount):
16860 * kxmlcore/HashTable.h: Added.
16861 (KXMLCore::HashTableIterator::skipEmptyBuckets):
16862 (KXMLCore::HashTableIterator::HashTableIterator):
16863 (KXMLCore::HashTableIterator::operator*):
16864 (KXMLCore::HashTableIterator::operator->):
16865 (KXMLCore::HashTableIterator::operator++):
16866 (KXMLCore::HashTableIterator::operator==):
16867 (KXMLCore::HashTableIterator::operator!=):
16868 (KXMLCore::HashTableConstIterator::HashTableConstIterator):
16869 (KXMLCore::HashTableConstIterator::operator*):
16870 (KXMLCore::HashTableConstIterator::operator->):
16871 (KXMLCore::HashTableConstIterator::skipEmptyBuckets):
16872 (KXMLCore::HashTableConstIterator::operator++):
16873 (KXMLCore::HashTableConstIterator::operator==):
16874 (KXMLCore::HashTableConstIterator::operator!=):
16875 (KXMLCore::HashTable::HashTable):
16876 (KXMLCore::HashTable::~HashTable):
16877 (KXMLCore::HashTable::begin):
16878 (KXMLCore::HashTable::end):
16879 (KXMLCore::HashTable::size):
16880 (KXMLCore::HashTable::capacity):
16881 (KXMLCore::HashTable::insert):
16882 (KXMLCore::HashTable::isEmptyBucket):
16883 (KXMLCore::HashTable::isDeletedBucket):
16884 (KXMLCore::HashTable::isEmptyOrDeletedBucket):
16885 (KXMLCore::HashTable::hash):
16886 (KXMLCore::HashTable::equal):
16887 (KXMLCore::HashTable::identityConvert):
16888 (KXMLCore::HashTable::extractKey):
16889 (KXMLCore::HashTable::lookup):
16890 (KXMLCore::HashTable::shouldExpand):
16891 (KXMLCore::HashTable::mustRehashInPlace):
16892 (KXMLCore::HashTable::shouldShrink):
16893 (KXMLCore::HashTable::shrink):
16894 (KXMLCore::HashTable::clearBucket):
16895 (KXMLCore::HashTable::deleteBucket):
16896 (KXMLCore::HashTable::makeLookupResult):
16897 (KXMLCore::HashTable::makeIterator):
16898 (KXMLCore::HashTable::makeConstIterator):
16899 (KXMLCore::::lookup):
16900 (KXMLCore::::insert):
16901 (KXMLCore::::reinsert):
16902 (KXMLCore::::find):
16903 (KXMLCore::::contains):
16904 (KXMLCore::::remove):
16905 (KXMLCore::::allocateTable):
16906 (KXMLCore::::expand):
16907 (KXMLCore::::rehash):
16908 (KXMLCore::::clear):
16909 (KXMLCore::::HashTable):
16910 (KXMLCore::::swap):
16911 (KXMLCore::::operator):
16912 (KXMLCore::::checkTableConsistency):
16913 (KXMLCore::::checkTableConsistencyExceptSize):
16914 * kxmlcore/HashTraits.h: Added.
16915 (KXMLCore::HashTraits::emptyValue):
16917 (KXMLCore::PairHashTraits::emptyValue):
16918 (KXMLCore::PairHashTraits::deletedValue):
16920 2005-09-27 Darin Adler <darin@apple.com>
16922 Reviewed by Maciej.
16924 - update grammar to fix conflicts; fixes one of our test cases
16925 because it resolves the relationship between function expressions
16926 and declarations in the way required by the ECMA specification
16928 * kjs/grammar.y: Added lots of new grammar rules so we have no conflicts.
16929 A new set of rules for "no bracket or function at start of expression" and
16930 another set of rules for "no in anywhere in expression". Also simplified the
16931 handling of try to use only a single node and used operator precedence to
16932 get rid of the conflict in handling of if and else. Also used a macro to
16933 streamline the handling of automatic semicolons and changed parenthesis
16934 handling to use a virtual function.
16936 * kjs/nodes.h: Added nodeInsideAllParens, removed unused abortStatement.
16937 (KJS::TryNode::TryNode): Updated to hold catch and finally blocks directly instead
16938 of using a special node for each.
16940 (Node::createErrorCompletion): Added. Used instead of throwError when creating errors
16941 that should not be in a completion rather than an ExecState.
16942 (Node::throwUndefinedVariableError): Added. Sets source location unlike the call it
16944 (Node::nodeInsideAllParens): Added.
16945 (GroupNode::nodeInsideAllParens): Added.
16946 (StatListNode::execute): Removed code to move exceptions into completion objects;
16947 that's now done solely by the KJS_CHECKEXCEPTION macro.
16948 (TryNode::execute): Include execution of catch and finally here rather than using
16950 (FuncDeclNode::execute): Moved here, no longer inline.
16951 * kjs/nodes2string.cpp:
16952 (TryNode::streamTo): Updated for change.
16953 (FuncDeclNode::streamTo): Ditto.
16954 (FuncExprNode::streamTo): Ditto.
16956 * kjs/kjs-test: Removed. Was part of "make check".
16957 * kjs/kjs-test.chk: Ditto.
16958 * kjs/test.js: Ditto.
16960 * tests/mozilla/expected.html: Updated because one more test succeeds.
16962 2005-09-27 Adele Peterson <adele@apple.com>
16964 Reviewed by Maciej.
16966 Changed ints to size_t where appropriate.
16968 * kjs/collector.cpp:
16969 (KJS::Collector::allocate):
16970 (KJS::Collector::markStackObjectsConservatively):
16971 (KJS::Collector::collect):
16972 (KJS::Collector::size):
16973 (KJS::Collector::numInterpreters):
16974 (KJS::Collector::numGCNotAllowedObjects):
16975 (KJS::Collector::numReferencedObjects):
16978 2005-09-27 Eric Seidel <eseidel@apple.com>
16982 * JavaScriptCore.xcodeproj/project.pbxproj: fix after malloc changes.
16984 2005-09-27 Eric Seidel <eseidel@apple.com>
16989 (FuncExprNode::evaluate): Now sets .constructor properly.
16990 Test cases added to WebCore/layout-tests.
16991 http://bugs.webkit.org/show_bug.cgi?id=3537
16993 2005-09-26 Maciej Stachowiak <mjs@apple.com>
16997 - replace dlmalloc with tcmalloc
16998 http://bugs.webkit.org/show_bug.cgi?id=5145
17000 I also moved SharedPtr and the assertion code from WebCore into a
17001 new kxmlcore directory.
17003 * JavaScriptCore.xcodeproj/project.pbxproj:
17004 * kjs/collector.cpp:
17005 (KJS::Collector::allocate):
17006 (KJS::Collector::collect):
17008 * kjs/fast_malloc.cpp: Removed.
17009 * kjs/fast_malloc.h: Removed.
17010 * kjs/function.cpp:
17012 * kjs/function_object.cpp:
17013 * kjs/identifier.cpp:
17014 (KJS::Identifier::add):
17015 * kjs/internal.cpp:
17018 * kjs/nodes2string.cpp:
17019 * kjs/property_map.cpp:
17020 (KJS::PropertyMap::~PropertyMap):
17021 (KJS::PropertyMap::rehash):
17022 * kjs/scope_chain.h:
17023 * kjs/shared_ptr.h: Removed.
17024 * kjs/string_object.cpp:
17025 (StringObjectFuncImp::callAsFunction):
17027 (KJS::UString::Rep::createCopying):
17028 (KJS::UString::Rep::destroy):
17029 (KJS::UString::expandCapacity):
17030 (KJS::UString::expandPreCapacity):
17031 (KJS::UString::UString):
17032 (KJS::UString::spliceSubstringsWithSeparators):
17033 (KJS::UString::append):
17034 (KJS::UString::operator=):
17035 (KJS::UString::detach):
17037 * kxmlcore/Assertions.h: Added.
17038 * kxmlcore/Assertions.mm: Added.
17039 * kxmlcore/FastMalloc.cpp: Added.
17040 (KXMLCore::LgFloor):
17041 (KXMLCore::SizeClass):
17042 (KXMLCore::ByteSizeForClass):
17043 (KXMLCore::InitSizeClasses):
17044 (KXMLCore::MetaDataAlloc):
17045 (KXMLCore::PageHeapAllocator::Init):
17046 (KXMLCore::PageHeapAllocator::New):
17047 (KXMLCore::PageHeapAllocator::Delete):
17048 (KXMLCore::PageHeapAllocator::inuse):
17050 (KXMLCore::AllocationSize):
17052 (KXMLCore::NewSpan):
17053 (KXMLCore::DeleteSpan):
17054 (KXMLCore::DLL_Init):
17055 (KXMLCore::DLL_Remove):
17056 (KXMLCore::DLL_IsEmpty):
17057 (KXMLCore::DLL_Length):
17058 (KXMLCore::DLL_Print):
17059 (KXMLCore::DLL_Prepend):
17060 (KXMLCore::DLL_InsertOrdered):
17062 (KXMLCore::TCMalloc_PageHeap::GetDescriptor):
17063 (KXMLCore::TCMalloc_PageHeap::SystemBytes):
17064 (KXMLCore::TCMalloc_PageHeap::FreeBytes):
17065 (KXMLCore::TCMalloc_PageHeap::RecordSpan):
17066 (KXMLCore::TCMalloc_PageHeap::TCMalloc_PageHeap):
17067 (KXMLCore::TCMalloc_PageHeap::New):
17068 (KXMLCore::TCMalloc_PageHeap::Split):
17069 (KXMLCore::TCMalloc_PageHeap::Carve):
17070 (KXMLCore::TCMalloc_PageHeap::Delete):
17071 (KXMLCore::TCMalloc_PageHeap::RegisterSizeClass):
17072 (KXMLCore::TCMalloc_PageHeap::Dump):
17073 (KXMLCore::TCMalloc_PageHeap::GrowHeap):
17074 (KXMLCore::TCMalloc_PageHeap::Check):
17075 (KXMLCore::TCMalloc_PageHeap::CheckList):
17076 (KXMLCore::TCMalloc_ThreadCache_FreeList::Init):
17077 (KXMLCore::TCMalloc_ThreadCache_FreeList::length):
17078 (KXMLCore::TCMalloc_ThreadCache_FreeList::empty):
17079 (KXMLCore::TCMalloc_ThreadCache_FreeList::lowwatermark):
17080 (KXMLCore::TCMalloc_ThreadCache_FreeList::clear_lowwatermark):
17081 (KXMLCore::TCMalloc_ThreadCache_FreeList::Push):
17082 (KXMLCore::TCMalloc_ThreadCache_FreeList::Pop):
17083 (KXMLCore::TCMalloc_ThreadCache::freelist_length):
17084 (KXMLCore::TCMalloc_ThreadCache::Size):
17085 (KXMLCore::TCMalloc_Central_FreeList::length):
17086 (KXMLCore::TCMalloc_Central_FreeList::Init):
17087 (KXMLCore::TCMalloc_Central_FreeList::Insert):
17088 (KXMLCore::TCMalloc_Central_FreeList::Remove):
17089 (KXMLCore::TCMalloc_Central_FreeList::Populate):
17090 (KXMLCore::TCMalloc_ThreadCache::SampleAllocation):
17091 (KXMLCore::TCMalloc_ThreadCache::Init):
17092 (KXMLCore::TCMalloc_ThreadCache::Cleanup):
17093 (KXMLCore::TCMalloc_ThreadCache::Allocate):
17094 (KXMLCore::TCMalloc_ThreadCache::Deallocate):
17095 (KXMLCore::TCMalloc_ThreadCache::FetchFromCentralCache):
17096 (KXMLCore::TCMalloc_ThreadCache::ReleaseToCentralCache):
17097 (KXMLCore::TCMalloc_ThreadCache::Scavenge):
17098 (KXMLCore::TCMalloc_ThreadCache::GetCache):
17099 (KXMLCore::TCMalloc_ThreadCache::GetCacheIfPresent):
17100 (KXMLCore::TCMalloc_ThreadCache::PickNextSample):
17101 (KXMLCore::TCMalloc_ThreadCache::InitModule):
17102 (KXMLCore::TCMalloc_ThreadCache::InitTSD):
17103 (KXMLCore::TCMalloc_ThreadCache::CreateCacheIfNecessary):
17104 (KXMLCore::TCMalloc_ThreadCache::DeleteCache):
17105 (KXMLCore::TCMalloc_ThreadCache::RecomputeThreadCacheSize):
17106 (KXMLCore::TCMalloc_ThreadCache::Print):
17107 (KXMLCore::ExtractStats):
17108 (KXMLCore::DumpStats):
17109 (KXMLCore::PrintStats):
17110 (KXMLCore::DumpStackTraces):
17111 (KXMLCore::TCMallocImplementation::GetStats):
17112 (KXMLCore::TCMallocImplementation::ReadStackTraces):
17113 (KXMLCore::TCMallocImplementation::GetNumericProperty):
17114 (KXMLCore::TCMallocImplementation::SetNumericProperty):
17115 (KXMLCore::DoSampledAllocation):
17116 (KXMLCore::do_malloc):
17117 (KXMLCore::do_free):
17118 (KXMLCore::do_memalign):
17119 (KXMLCore::TCMallocGuard::TCMallocGuard):
17120 (KXMLCore::TCMallocGuard::~TCMallocGuard):
17121 (KXMLCore::malloc):
17123 (KXMLCore::calloc):
17125 (KXMLCore::realloc):
17126 (KXMLCore::memalign):
17127 (KXMLCore::posix_memalign):
17128 (KXMLCore::valloc):
17129 (KXMLCore::pvalloc):
17130 (KXMLCore::malloc_stats):
17131 (KXMLCore::mallopt):
17132 (KXMLCore::mallinfo):
17133 * kxmlcore/FastMalloc.h: Added.
17134 (KXMLCore::FastAllocated::operator new):
17135 (KXMLCore::FastAllocated::operator delete):
17136 (KXMLCore::FastAllocated::operator new[]):
17137 (KXMLCore::FastAllocated::operator delete[]):
17138 * kxmlcore/SharedPtr.h: Added.
17139 (KXMLCore::SharedPtr::SharedPtr):
17140 (KXMLCore::SharedPtr::~SharedPtr):
17141 (KXMLCore::SharedPtr::isNull):
17142 (KXMLCore::SharedPtr::notNull):
17143 (KXMLCore::SharedPtr::reset):
17144 (KXMLCore::SharedPtr::get):
17145 (KXMLCore::SharedPtr::operator*):
17146 (KXMLCore::SharedPtr::operator->):
17147 (KXMLCore::SharedPtr::operator!):
17148 (KXMLCore::SharedPtr::operator bool):
17149 (KXMLCore::::operator):
17150 (KXMLCore::operator==):
17151 (KXMLCore::operator!=):
17152 (KXMLCore::static_pointer_cast):
17153 (KXMLCore::const_pointer_cast):
17154 * kxmlcore/TCPageMap.h: Added.
17155 (TCMalloc_PageMap1::TCMalloc_PageMap1):
17156 (TCMalloc_PageMap1::Ensure):
17157 (TCMalloc_PageMap1::get):
17158 (TCMalloc_PageMap1::set):
17159 (TCMalloc_PageMap2::TCMalloc_PageMap2):
17160 (TCMalloc_PageMap2::get):
17161 (TCMalloc_PageMap2::set):
17162 (TCMalloc_PageMap2::Ensure):
17163 (TCMalloc_PageMap3::NewNode):
17164 (TCMalloc_PageMap3::TCMalloc_PageMap3):
17165 (TCMalloc_PageMap3::get):
17166 (TCMalloc_PageMap3::set):
17167 (TCMalloc_PageMap3::Ensure):
17168 * kxmlcore/TCSpinLock.h: Added.
17169 (TCMalloc_SpinLock::Init):
17170 (TCMalloc_SpinLock::Finalize):
17171 (TCMalloc_SpinLock::Lock):
17172 (TCMalloc_SpinLock::Unlock):
17173 (TCMalloc_SlowLock):
17174 (TCMalloc_SpinLockHolder::TCMalloc_SpinLockHolder):
17175 (TCMalloc_SpinLockHolder::~TCMalloc_SpinLockHolder):
17176 * kxmlcore/TCSystemAlloc.cpp: Added.
17180 (TCMalloc_SystemAlloc):
17181 * kxmlcore/TCSystemAlloc.h: Added.
17183 2005-09-23 Maciej Stachowiak <mjs@apple.com>
17187 <rdar://problem/4260479> Finish deploying PropertySlot in the interpreter
17188 http://bugs.webkit.org/show_bug.cgi?id=5112
17190 Convert postfix, prefix, delete, prefix, and for..in expressions to use
17191 PropertySlot-based lookup instead of evaluateReference.
17193 3% speedup on JS iBench.
17195 Fixed two of the JS tests:
17196 * tests/mozilla/expected.html:
17200 (PostfixResolveNode::evaluate):
17201 (PostfixBracketNode::evaluate):
17202 (PostfixDotNode::evaluate):
17203 (DeleteResolveNode::evaluate):
17204 (DeleteBracketNode::evaluate):
17205 (DeleteDotNode::evaluate):
17206 (DeleteValueNode::evaluate):
17207 (typeStringForValue):
17208 (TypeOfResolveNode::evaluate):
17209 (TypeOfValueNode::evaluate):
17210 (PrefixResolveNode::evaluate):
17211 (PrefixBracketNode::evaluate):
17212 (PrefixDotNode::evaluate):
17213 (ForInNode::execute):
17215 (KJS::PostfixResolveNode::PostfixResolveNode):
17216 (KJS::PostfixBracketNode::PostfixBracketNode):
17217 (KJS::PostfixDotNode::PostfixDotNode):
17218 (KJS::DeleteResolveNode::DeleteResolveNode):
17219 (KJS::DeleteBracketNode::DeleteBracketNode):
17220 (KJS::DeleteDotNode::DeleteDotNode):
17221 (KJS::DeleteValueNode::DeleteValueNode):
17222 (KJS::TypeOfResolveNode::TypeOfResolveNode):
17223 (KJS::TypeOfValueNode::TypeOfValueNode):
17224 (KJS::PrefixResolveNode::PrefixResolveNode):
17225 (KJS::PrefixBracketNode::PrefixBracketNode):
17226 (KJS::PrefixDotNode::PrefixDotNode):
17227 * kjs/nodes2string.cpp:
17228 (PostfixResolveNode::streamTo):
17229 (PostfixBracketNode::streamTo):
17230 (PostfixDotNode::streamTo):
17231 (DeleteResolveNode::streamTo):
17232 (DeleteBracketNode::streamTo):
17233 (DeleteDotNode::streamTo):
17234 (DeleteValueNode::streamTo):
17235 (TypeOfValueNode::streamTo):
17236 (TypeOfResolveNode::streamTo):
17237 (PrefixResolveNode::streamTo):
17238 (PrefixBracketNode::streamTo):
17239 (PrefixDotNode::streamTo):
17240 * kjs/reference.cpp:
17241 (KJS::Reference::Reference):
17242 (KJS::Reference::getPropertyName):
17243 (KJS::Reference::getValue):
17244 (KJS::Reference::deleteValue):
17247 2005-09-23 Krzysztof Kowalczyk <kkowalczyk@gmail.com>
17249 Reviewed and landed by Darin.
17251 - a Windows-specific file
17253 * os-win32/stdint.h: Added. We plan to remove dependency on the <stdint.h> types,
17254 and if we do so, we will remove this file.
17256 2005-09-22 Geoffrey Garen <ggaren@apple.com>
17258 - Fixed http://bugs.webkit.org/show_bug.cgi?id=5053
17259 Need to restore int/long changes to simple_number.h
17261 Reviewed by darin and mjs.
17263 * kjs/simple_number.h: changed enums to indenpendent constants to clarify types
17264 (KJS::isNegativeZero): changed to static function - no reason to export
17265 (KJS::SimpleNumber::rightShiftSignExtended): new function for clarity
17266 (KJS::SimpleNumber::make): specified cast as reinterpret_cast
17267 (KJS::SimpleNumber::is): changed to use uintptr_t for portability
17268 (KJS::SimpleNumber::value): changed to use uintptr_t and rightShiftSignExtended
17269 (KJS::SimpleNumber::fits): inverted tests - probably only a performance win for double
17270 (KJS::SimpleNumber::integerFits): ditto
17272 2005-09-20 Maciej Stachowiak <mjs@apple.com>
17274 Reviewed by Geoff and partly by Darin.
17276 - fixed http://bugs.webkit.org/post_bug.cgi
17277 (Reduce conflicts in JavaScriptCore grammar)
17279 This change gets us down from over 200 shift/reduce and 45 reduce/reduce to
17280 9 shift/reduce and 45 reduce/reduce.
17283 * kjs/grammar_types.h: Removed.
17286 (KJS::Node::isGroupNode):
17287 (KJS::Node::isLocation):
17288 (KJS::Node::isResolveNode):
17289 (KJS::Node::isBracketAccessorNode):
17290 (KJS::Node::isDotAccessorNode):
17291 (KJS::ResolveNode::isLocation):
17292 (KJS::ResolveNode::isResolveNode):
17293 (KJS::ResolveNode::identifier):
17294 (KJS::GroupNode::isGroupNode):
17295 (KJS::GroupNode::leafNode):
17296 (KJS::BracketAccessorNode::isLocation):
17297 (KJS::BracketAccessorNode::isBracketAccessorNode):
17298 (KJS::BracketAccessorNode::base):
17299 (KJS::BracketAccessorNode::subscript):
17300 (KJS::DotAccessorNode::isLocation):
17301 (KJS::DotAccessorNode::isDotAccessorNode):
17302 (KJS::DotAccessorNode::base):
17303 (KJS::DotAccessorNode::identifier):
17304 (KJS::FuncExprNode::FuncExprNode):
17305 (KJS::FuncExprNode::identifier):
17306 (KJS::FuncDeclNode::FuncDeclNode):
17307 (KJS::FuncDeclNode::execute):
17309 2005-09-20 Geoffrey Garen <ggaren@apple.com>
17311 - Oops. The 4263434 change was only appropriate on the branch. Rolling out.
17315 * kjs/internal.cpp:
17316 (KJS::InterpreterImp::mark):
17318 2005-09-20 Geoffrey Garen <ggaren@apple.com>
17320 - More changes needed to fix <rdar://problem/4214783> 8F29 REGRESSION(Denver/Chardonnay):
17321 kjs_fast_malloc crash due to lack of locking on multiple threads (seen selecting volumes in
17324 Added InterpreterLocks in some places in the bindings we missed before.
17328 * bindings/runtime_root.cpp:
17329 (KJS::Bindings::addNativeReference):
17330 (KJS::Bindings::removeNativeReference):
17331 (RootObject::removeAllNativeReferences):
17332 * bindings/runtime_root.h:
17333 (KJS::Bindings::RootObject::~RootObject):
17334 (KJS::Bindings::RootObject::setRootObjectImp):
17336 2005-09-20 Geoffrey Garen <ggaren@apple.com>
17338 - Fixed <rdar://problem/4263434> <rdar://problem/4263434> Denver 8F29 Regression:
17339 KJS::InterpreterImp::mark() crash
17341 Fix by mjs, review by me.
17343 * kjs/internal.cpp:
17344 (KJS::InterpreterImp::mark): Added a null check on globExec in case a
17345 garbage collection occurs inside InterpreterImp::globalInit (called
17346 from InterpreterImp::InterpreterImp), at which point globExec has not yet been initialized.
17348 2005-09-20 Geoffrey Garen <ggaren@apple.com>
17350 - Rolled in fix for http://bugs.webkit.org/show_bug.cgi?id=4892
17351 Date constructor has problems with months larger than 11
17355 * layout-tests/fast/js/date-big-constructor-expected.txt: Added.
17356 * layout-tests/fast/js/date-big-constructor.html: Added.
17360 * kjs/date_object.cpp:
17361 (KJS::fillStructuresUsingDateArgs):
17364 2005-09-19 Geoffrey Garen <ggaren@apple.com>
17366 - Fixed http://bugs.webkit.org/show_bug.cgi?id=5028
17367 9 layout tests fail following the change from long to int
17369 - Rolled out changes to simple_number.h, and added fits(long long)
17370 and SimpleNumber::fits(unsigned long long) to the old system.
17374 * kjs/simple_number.h:
17375 (KJS::SimpleNumber::):
17376 (KJS::SimpleNumber::value):
17377 (KJS::SimpleNumber::fits):
17378 (KJS::SimpleNumber::integerFits):
17379 (KJS::SimpleNumber::make):
17381 2005-09-14 Maciej Stachowiak <mjs@apple.com>
17385 - fixed <rdar://problem/4214783> REGRESSION: kjs_fast_malloc crash due to lack of locking on multiple threads (seen selecting volumes in the installer)
17387 Make sure to lock using the InterpreterLock class in all places that need it
17388 (including anything that uses the collector, the parser, the protect count hash table,
17389 and anything that allocates via fast_malloc).
17391 Also added assertions to ensure that the locking rules are followed for the relevant
17395 * bindings/NP_jsobject.cpp:
17396 (identifierFromNPIdentifier):
17399 (_NPN_GetProperty):
17400 (_NPN_SetProperty):
17401 (_NPN_RemoveProperty):
17402 (_NPN_HasProperty):
17404 (_NPN_SetException):
17405 * bindings/jni/jni_jsobject.cpp:
17408 (JSObject::getMember):
17409 (JSObject::setMember):
17410 (JSObject::removeMember):
17411 (JSObject::getSlot):
17412 (JSObject::setSlot):
17413 (JSObject::toString):
17414 (JSObject::convertJObjectToValue):
17415 * bindings/objc/WebScriptObject.mm:
17416 (-[WebScriptObject callWebScriptMethod:withArguments:]):
17417 (-[WebScriptObject evaluateWebScript:]):
17418 (-[WebScriptObject setValue:forKey:]):
17419 (-[WebScriptObject valueForKey:]):
17420 (-[WebScriptObject removeWebScriptKey:]):
17421 (-[WebScriptObject stringRepresentation]):
17422 (-[WebScriptObject webScriptValueAtIndex:]):
17423 (-[WebScriptObject setWebScriptValueAtIndex:value:]):
17424 (+[WebScriptObject _convertValueToObjcValue:KJS::originExecutionContext:Bindings::executionContext:Bindings::]):
17425 * bindings/runtime.cpp:
17426 (Instance::createRuntimeObject):
17427 * bindings/runtime_root.h:
17428 * bindings/testbindings.cpp:
17430 * bindings/testbindings.mm:
17432 * kjs/fast_malloc.cpp:
17433 (KJS::kjs_fast_malloc):
17434 (KJS::kjs_fast_calloc):
17435 (KJS::kjs_fast_free):
17436 (KJS::kjs_fast_realloc):
17437 * kjs/fast_malloc.h:
17438 * kjs/identifier.h:
17439 * kjs/internal.cpp:
17440 (InterpreterImp::InterpreterImp):
17441 (InterpreterImp::clear):
17442 (InterpreterImp::mark):
17443 (InterpreterImp::checkSyntax):
17444 (InterpreterImp::evaluate):
17446 (KJS::InterpreterImp::globalObject):
17447 * kjs/interpreter.cpp:
17448 (Interpreter::evaluate):
17449 * kjs/interpreter.h:
17450 (KJS::InterpreterLock::InterpreterLock):
17451 (KJS::InterpreterLock::~InterpreterLock):
17454 (KJS::ProtectedValue::ProtectedValue):
17455 (KJS::ProtectedValue::~ProtectedValue):
17456 (KJS::ProtectedValue::operator=):
17457 (KJS::ProtectedObject::ProtectedObject):
17458 (KJS::ProtectedObject::~ProtectedObject):
17459 (KJS::ProtectedObject::operator=):
17460 (KJS::ProtectedReference::ProtectedReference):
17461 (KJS::ProtectedReference::~ProtectedReference):
17462 (KJS::ProtectedReference::operator=):
17463 * kjs/protected_object.h:
17464 * kjs/protected_values.cpp:
17465 (KJS::ProtectedValues::getProtectCount):
17466 (KJS::ProtectedValues::increaseProtectCount):
17467 (KJS::ProtectedValues::decreaseProtectCount):
17468 * kjs/string_object.cpp:
17469 (StringObjectImp::StringObjectImp):
17473 2005-09-16 Adele Peterson <adele@apple.com>
17475 Change by Darin, reviewed by me and Maciej.
17477 Fixes http://bugs.webkit.org/show_bug.cgi?id=4547
17478 use int instead of long for 32-bit (to prepare for LP64 compiling)
17480 * bindings/c/c_class.h:
17481 (KJS::Bindings::CClass::constructorAt):
17482 (KJS::Bindings::CClass::numConstructors):
17483 * bindings/c/c_runtime.h:
17484 (KJS::Bindings::CMethod::numParameters):
17485 * bindings/jni/jni_class.cpp:
17486 (JavaClass::JavaClass):
17487 * bindings/jni/jni_class.h:
17488 (KJS::Bindings::JavaClass::constructorAt):
17489 (KJS::Bindings::JavaClass::numConstructors):
17490 * bindings/jni/jni_instance.cpp:
17491 (JavaInstance::invokeMethod):
17492 * bindings/jni/jni_jsobject.cpp:
17493 (JSObject::convertJObjectToValue):
17494 (JSObject::listFromJArray):
17495 * bindings/jni/jni_runtime.cpp:
17496 (JavaMethod::JavaMethod):
17497 * bindings/jni/jni_runtime.h:
17498 (KJS::Bindings::JavaConstructor::_commonCopy):
17499 (KJS::Bindings::JavaConstructor::parameterAt):
17500 (KJS::Bindings::JavaConstructor::numParameters):
17501 (KJS::Bindings::JavaMethod::_commonCopy):
17502 (KJS::Bindings::JavaMethod::parameterAt):
17503 (KJS::Bindings::JavaMethod::numParameters):
17504 * bindings/npapi.h:
17505 * bindings/objc/WebScriptObject.mm:
17507 * bindings/objc/objc_class.h:
17508 (KJS::Bindings::ObjcClass::constructorAt):
17509 (KJS::Bindings::ObjcClass::numConstructors):
17510 * bindings/objc/objc_instance.h:
17511 * bindings/objc/objc_runtime.h:
17512 * bindings/objc/objc_runtime.mm:
17513 (ObjcMethod::numParameters):
17514 * bindings/runtime.h:
17515 * kjs/identifier.h:
17517 * kjs/property_slot.h:
17518 (KJS::PropertySlot::setCustomIndex):
17519 (KJS::PropertySlot::index):
17520 (KJS::PropertySlot::):
17521 * kjs/regexp_object.cpp:
17522 (RegExpObjectImp::backrefGetter):
17523 (RegExpObjectImp::getOwnPropertySlot):
17524 * kjs/simple_number.h:
17525 (KJS::SimpleNumber::):
17526 (KJS::SimpleNumber::value):
17527 (KJS::SimpleNumber::fits):
17528 (KJS::SimpleNumber::integerFits):
17529 (KJS::SimpleNumber::make):
17530 * kjs/string_object.cpp:
17531 (substituteBackreferences):
17533 (KJS::UString::from):
17534 (KJS::UString::toUInt32):
17535 (KJS::UString::find):
17536 (KJS::UString::rfind):
17542 2005-09-11 Eric Seidel <eseidel@apple.com>
17544 No review requested, build fix affects only SVG.
17546 * JavaScriptCore.xcodeproj/project.pbxproj: Fixed JSC+SVG
17547 Fixed JavaScriptCore+SVG after PCRE 6.1 merger.
17548 http://bugs.webkit.org/show_bug.cgi?id=4932
17550 2005-09-10 Krzysztof Kowalczyk <kkowalczyk@gmail.com>
17552 Reviewed and landed by Darin.
17554 * Makefile.vc: Added.
17555 * README-Win32.txt: Added.
17557 2005-09-10 Darin Adler <darin@apple.com>
17559 - fixed compilation for WebCore (another try)
17561 * kjs/simple_number.h: Added more "using" lines.
17563 2005-09-10 Darin Adler <darin@apple.com>
17565 - fixed compilation for WebCore
17567 * kjs/simple_number.h: Have to include <cmath> here to work around a bug in the GCC
17568 standard C++ library headers.
17570 2005-09-10 Darin Adler <darin@apple.com>
17572 Windows changes by Krzysztof Kowalczyk <kkowalczyk@gmail.com>.
17574 - fixed http://bugs.webkit.org/show_bug.cgi?id=4870
17575 win portability: fix IS_NEGATIVE_ZERO macro in simple_number.h
17577 * kjs/simple_number.h:
17578 (KJS::isNegativeZero): Added. Inline function. Has a case for Windows that
17579 uses _fpclass and a case for other platforms that uses signbit.
17580 (KJS::SimpleNumber::fits): Use inline isNegativeZero instead of macro IS_NEGATIVE_ZERO.
17582 * kjs/internal.cpp: Remove definition of now-unneeded negZero global.
17584 * kjs/value.cpp: Touched the file because Xcode didn't know it needed to
17587 - improved test engine
17589 * tests/mozilla/jsDriver.pl: Sort tests in numeric order instead of using
17590 a plain-ASCII sort; now test 33 will be after test 5 in any given set of
17593 2005-09-08 Darin Adler <darin@apple.com>
17595 - fixed overloaded versions of throwError so that they substitute *all*
17596 expected parameters into the message string -- some versions used to
17597 skip parameters, resulting in "%s" being printed in the error message.
17601 * kjs/nodes.h: Updated declarations to use "const &" and not to name parameters
17602 * kjs/nodes.cpp: (Node::throwError): Updated to match above and add one missing
17603 call to substitute.
17605 2005-09-08 Darin Adler <darin@apple.com>
17609 - updated to PCRE 6.1
17611 The original PCRE 6.1 sources are checked into the tree with the tag
17612 "pcre-6-1" for reference. What we're checking in right now is the original
17613 plus our changes to make it support UTF-16 and at least one other tweak
17614 (vertical tab considered whitespace). Our work to get our changes was
17615 done on "pcre-6-1-branch", with an anchor at "pcre-6-1-anchor" so you can
17616 see the evolution of the UTF-16 changes.
17618 Note also that there was one small change made here that's not on the branch
17621 * Info.plist: Updated the part of the copyright message that's about PCRE.
17623 * JavaScriptCore.xcodeproj/project.pbxproj: Added new PCRE source files,
17624 removed obsolete ones.
17626 * pcre/AUTHORS: Updated to PCRE 6.1. Includes credits for Apple's UTF-16
17627 changes, but not the credits for Google's C++ wrapper, since we don't include that.
17628 * pcre/COPYING: Updated to PCRE 6.1.
17629 * pcre/LICENCE: Ditto.
17630 * pcre/dftables.c: Ditto.
17631 * pcre/pcre-config.h: Ditto.
17632 * pcre/pcre.h: Ditto.
17634 * pcre/pcre_compile.c: Added for PCRE 6.1.
17635 * pcre/pcre_config.c: Ditto.
17636 * pcre/pcre_exec.c: Ditto.
17637 * pcre/pcre_fullinfo.c: Ditto.
17638 * pcre/pcre_get.c: Ditto.
17639 * pcre/pcre_globals.c: Ditto.
17640 * pcre/pcre_info.c: Ditto.
17641 * pcre/pcre_internal.h: Ditto.
17642 * pcre/pcre_maketables.c: Ditto.
17643 * pcre/pcre_ord2utf8.c: Ditto.
17644 * pcre/pcre_printint.c: Ditto.
17645 * pcre/pcre_refcount.c: Ditto.
17646 * pcre/pcre_study.c: Ditto.
17647 * pcre/pcre_tables.c: Ditto.
17648 * pcre/pcre_try_flipped.c: Ditto.
17649 * pcre/pcre_ucp_findchar.c: Ditto.
17650 * pcre/pcre_version.c: Ditto.
17651 * pcre/pcre_xclass.c: Ditto.
17652 * pcre/ucp.h: Ditto.
17653 * pcre/ucp_findchar.c: Ditto.
17654 * pcre/ucpinternal.h: Ditto.
17655 * pcre/ucptable.c: Ditto.
17657 * pcre/get.c: Removed.
17658 * pcre/internal.h: Removed.
17659 * pcre/maketables.c: Removed.
17660 * pcre/pcre.c: Removed.
17661 * pcre/study.c: Removed.
17663 2005-09-07 Geoffrey Garen <ggaren@apple.com>
17665 -fixed http://bugs.webkit.org/show_bug.cgi?id=4781
17666 Date.setMonth fails with big values due to overflow
17670 * kjs/date_object.cpp:
17671 (timetUsingCF): for consistency, changed return statement to invalidDate instead of LONG_MAX
17672 (KJS::fillStructuresUsingTimeArgs): modified for readability
17673 (KJS::fillStructuresUsingDateArgs): new function analogous to fillStructuresUsingTimeArgs
17674 (KJS::DateProtoFuncImp::callAsFunction): modified to use fillStructuresUsingDateArgs
17675 (KJS::DateObjectImp::construct): moved variable declaration to proper scope
17676 (KJS::DateObjectFuncImp::callAsFunction): moved variable declaration to proper scope
17678 2005-09-07 Geoffrey Garen <ggaren@apple.com>
17679 -updated expected test results to reflect fix for
17680 http://bugs.webkit.org/show_bug.cgi?id=4698
17681 kjs does not allow named functions in function expressions
17683 * tests/mozilla/expected.html:
17685 2005-09-04 Darin Adler <darin@apple.com>
17687 * kjs/identifier.cpp: Fix comment, add missing include.
17688 (Follow-on to changes from yesterday.)
17690 2005-09-03 Krzysztof Kowalczyk <kkowalczyk@gmail.com>
17692 Reviewed, tweaked and landed by Darin.
17694 - another try at some of the Windows compilation fixes
17695 should fix these bugs: 4546, 4831, 4834, 4643, 4830, 4832, 4833, 4835
17697 * kjs/collector.cpp: Add missing <setjmp.h> include.
17698 * kjs/date_object.cpp: Fix broken copysign macro.
17699 * kjs/dtoa.cpp: Move macro definitions down after all header includes.
17700 * kjs/fast_malloc.cpp: Add missing <assert.h> and <stddef.h> includes.
17701 * kjs/function.cpp: Remove broken isxdigit definition.
17702 * kjs/grammar.y: Add a missing semicolon (and remove an excess one).
17703 * kjs/identifier.cpp: Turn off AVOID_STATIC_CONSTRUCTORS because the placement new syntax
17704 doesn't seem to work in Visual C++ (I'm surprised to hear that, by the way).
17705 * kjs/value.h: Made ValueImp's destructor virtual because otherwise pointers to ValueImp
17706 on the stack aren't right for garbage collection on Windows (don't think it works that
17707 way with gcc's virtual table scheme, but it's a harmless change).
17709 2005-09-03 Krzysztof Kowalczyk <kkowalczyk@gmail.com>
17711 Reviewed, tweaked and landed by Darin.
17713 - some Windows compilation fixes, hoping to fix the problems reported in these bugs:
17714 4627, 4629, 4630, 4631, 4632, 4633, 4634, 4635, 4636, 4637, 4639, 4640, 4641, 4644, 4645
17716 * kjs/collector.cpp: Include <windows.h> on WIN32. Put thread-related code inside
17717 KJS_MULTIPLE_THREADS #if directives.
17718 (KJS::Collector::markCurrentThreadConservatively): Use NT_TIB to find the stack base on Win32.
17720 * kjs/config.h: Define HAVE_SYS_TIMEB_H for Win32.
17722 * kjs/date_object.cpp: Add include of <limits.h>. Add definitions of strncasecmp, isfinite, and
17723 copysign for Win32.
17724 (KJS::KRFCDate_parseDate): Move "errno = 0" line down closer to the first call to strol -- I believe
17725 that on Win32 there's some other call before that setting errno.
17727 * kjs/date_object.h: Remove unneeded include of <sys/time.h>.
17729 * kjs/dtoa.cpp: Add an undef of strtod, needed on Win32.
17731 * kjs/fast_malloc.cpp: Put #if !WIN32 around some customization that's not appropriate on Win32.
17732 (KJS::region_list_append): Add a missing cast so this Win32-specific function compiles in C++.
17733 (KJS::sbrk): Change parameter type to match the declaration.
17735 * kjs/function.cpp: (isxdigit): Define a locale-independent isxdigit on Win32.
17737 * kjs/function.h: Remove unneeded friend class Function for FunctionImp.
17739 * kjs/identifier.cpp: Took out the APPLE_CHANGES from around the AVOID_STATIC_CONSTRUCTORS
17740 define. We ultimately intend to phase out APPLE_CHANGES entirely. Also fix the
17741 non-AVOID_STATIC_CONSTRUCTORS code path.
17743 * kjs/internal.cpp: Remove uneeded include of <strings.h>, which was confused with <string.h>!
17744 Add a Win32 implementation of copysign. Put the threads code inside KJS_MULTIPLE_THREADS.
17746 * kjs/internal.h: Define a KJS_MULTIPLE_THREADS macro on non-Win32 only. Later we can make this
17747 specific to Mac OS X if we like.
17749 * kjs/interpreter_map.cpp: Add missing include of <stdlib.h>.
17752 (KJS::ListImp::markValues): Use std::min instead of MIN.
17753 (KJS::List::copy): Ditto.
17754 (KJS::List::copyTail): Ditto.
17756 * kjs/math_object.cpp: (signbit): Add a Win32 implementation of signbit.
17758 * kjs/nodes.cpp: (Node::finalCheck): Use unsigned instead of uint.
17759 Put the use of always_inline inside __GNUC__.
17761 * kjs/number_object.cpp: (NumberProtoFuncImp::callAsFunction): Use "10.0" instead of "10"
17762 inside all the calls to pow to avoid ambiguity caused by overloading of pow on Win32, seen
17763 when passing an int rather than a double or float.
17765 * kjs/operations.cpp:
17766 (KJS::isInf): Add Win32 implementation.
17767 (KJS::isPosInf): Add Win32 implementation.
17768 (KJS::isNegInf): Add Win32 implementation.
17770 * kjs/regexp.cpp: Use unsigned instead of uint.
17771 * kjs/regexp.h: Ditto.
17772 * kjs/regexp_object.cpp: Ditto.
17773 * kjs/regexp_object.h: Ditto.
17775 2005-09-02 Beth Dakin <bdakin@apple.com>
17777 Fix for <rdar://problem/4235531> Denver Regression: Safari crash in KWQStringData::makeUnicode
17778 The other half of the fix is in WebCore.
17780 Fix written by Maciej and Darin.
17781 Reviewed by me/Maciej
17783 As Maciej said in Radar: These problems was caused by a conflict between some of our custom
17784 allocators, causing them to return null. Symptom is typically a null pointer dereference in
17785 a place where it might be expected an allocation has just occurred.
17787 * kjs/fast_malloc.cpp: Added #define for MORECORE_CONTIGUOUS, MORECORE_CANNOT_TRIM,
17788 and MALLOC_FAILURE_ACTION.
17790 2005-08-31 Geoffrey Garen <ggaren@apple.com>
17792 -rolled in fix for http://bugs.webkit.org/show_bug.cgi?id=4698
17793 kjs does not allow named functions in function expressions
17795 Fix by Arthur Langereis.
17801 (FuncExprNode::evaluate):
17803 (KJS::FuncExprNode::FuncExprNode):
17807 * layout-tests/fast/js/named-function-expression-expected.txt: Added.
17808 * layout-tests/fast/js/named-function-expression.html: Added.
17810 2005-08-31 Justin Haygood <justin@xiondigital.net>
17812 Reviewed, tweaked, and landed by Darin.
17814 - fixed http://bugs.webkit.org/show_bug.cgi?id=4085
17815 - fixed http://bugs.webkit.org/show_bug.cgi?id=4087
17816 - fixed http://bugs.webkit.org/show_bug.cgi?id=4096
17817 Some fixes for compiling on windows.
17819 * kjs/config.h: Added a WIN32 case in here, with suitable defines.
17820 (To be tweaked as necessary.)
17821 * kjs/function.cpp: Took out APPLE_CHANGES around use of ICU.
17822 * kjs/operations.cpp: Removed some bogus code that always set HAVE_FLOAT_H.
17824 2005-08-30 Darin Adler <darin@apple.com>
17826 Reviewed by John Sullivan.
17828 - fixed http://bugs.webkit.org/show_bug.cgi?id=4758
17829 unify SharedPtr in WebCore and JavaScriptCore
17831 * kjs/shared_ptr.h: Updated namespace to KXMLCore instead of kxhmlcore.
17832 Made a few small improvements to use local variables a bit more and added
17833 an "operator int" to reduce the chance that we'll convert a SharedPtr to
17834 an int by accident. Also made the == operators normal functions rather than
17835 friend functions, added a couple of comemnts.
17837 * kjs/function.h: Updated for namespace change.
17838 * kjs/function.cpp: Ditto.
17839 * kjs/function_object.cpp: Ditto.
17840 * kjs/internal.h: Ditto.
17841 * kjs/internal.cpp: Ditto.
17842 * kjs/nodes.h: Ditto.
17843 * kjs/nodes2string.cpp: Ditto.
17845 2005-08-26 Maciej Stachowiak <mjs@apple.com>
17849 <rdar://problem/4224911> many many leaks in kjsyyparse with malformed Javascript
17851 Record all nodes that are created during parsing, and delete any
17852 that are left floating with a refcount of 0.
17854 * kjs/internal.cpp:
17855 (KJS::Parser::saveNewNode):
17856 (KJS::clearNewNodes):
17857 (KJS::Parser::parse):
17862 (KJS::Node::refcount):
17864 2005-08-26 Maciej Stachowiak <mjs@apple.com>
17868 - fixed <rdar://problem/4232452> many many leaks in kjsyyparse on some well-formed JavaScript (can repro on sony.com, webkit tests)
17870 Fixed by changing the refcounting scheme for nodes. Instead of each node implementing a custom ref and
17871 deref for all its children (and being responsible for deleting them), nodes use a smart pointer to
17872 hold their children, and smart pointers are used outside the node tree as well. This change mostly
17875 * JavaScriptCore.xcodeproj/project.pbxproj:
17876 * kjs/function.cpp:
17877 (KJS::DeclaredFunctionImp::DeclaredFunctionImp):
17878 (KJS::GlobalFuncImp::callAsFunction):
17880 * kjs/function_object.cpp:
17881 (FunctionObjectImp::construct):
17883 * kjs/internal.cpp:
17884 (KJS::Parser::parse):
17885 (KJS::Parser::accept):
17886 (KJS::InterpreterImp::checkSyntax):
17887 (KJS::InterpreterImp::evaluate):
17892 (ElementNode::evaluate):
17893 (PropertyValueNode::evaluate):
17894 (ArgumentListNode::evaluateList):
17895 (NewExprNode::evaluate):
17896 (FunctionCallValueNode::evaluate):
17897 (FunctionCallBracketNode::evaluate):
17898 (FunctionCallDotNode::evaluate):
17899 (RelationalNode::evaluate):
17900 (StatListNode::execute):
17901 (StatListNode::processVarDecls):
17902 (VarDeclListNode::evaluate):
17903 (VarDeclListNode::processVarDecls):
17904 (ForInNode::ForInNode):
17905 (ClauseListNode::processVarDecls):
17906 (CaseBlockNode::evalBlock):
17907 (FuncDeclNode::processFuncDecl):
17908 (FuncExprNode::evaluate):
17909 (SourceElementsNode::execute):
17910 (SourceElementsNode::processFuncDecl):
17911 (SourceElementsNode::processVarDecls):
17914 (KJS::Node::deref):
17915 (KJS::NumberNode::NumberNode):
17916 (KJS::GroupNode::GroupNode):
17917 (KJS::ElementNode::ElementNode):
17918 (KJS::ArrayNode::ArrayNode):
17919 (KJS::PropertyValueNode::PropertyValueNode):
17920 (KJS::ObjectLiteralNode::ObjectLiteralNode):
17921 (KJS::BracketAccessorNode::BracketAccessorNode):
17922 (KJS::DotAccessorNode::DotAccessorNode):
17923 (KJS::ArgumentListNode::ArgumentListNode):
17924 (KJS::ArgumentsNode::ArgumentsNode):
17925 (KJS::NewExprNode::NewExprNode):
17926 (KJS::FunctionCallValueNode::FunctionCallValueNode):
17927 (KJS::FunctionCallResolveNode::FunctionCallResolveNode):
17928 (KJS::FunctionCallBracketNode::FunctionCallBracketNode):
17929 (KJS::FunctionCallDotNode::FunctionCallDotNode):
17930 (KJS::PostfixNode::PostfixNode):
17931 (KJS::DeleteNode::DeleteNode):
17932 (KJS::VoidNode::VoidNode):
17933 (KJS::TypeOfNode::TypeOfNode):
17934 (KJS::PrefixNode::PrefixNode):
17935 (KJS::UnaryPlusNode::UnaryPlusNode):
17936 (KJS::NegateNode::NegateNode):
17937 (KJS::BitwiseNotNode::BitwiseNotNode):
17938 (KJS::LogicalNotNode::LogicalNotNode):
17939 (KJS::MultNode::MultNode):
17940 (KJS::AddNode::AddNode):
17941 (KJS::ShiftNode::ShiftNode):
17942 (KJS::RelationalNode::RelationalNode):
17943 (KJS::EqualNode::EqualNode):
17944 (KJS::BitOperNode::BitOperNode):
17945 (KJS::BinaryLogicalNode::BinaryLogicalNode):
17946 (KJS::ConditionalNode::ConditionalNode):
17947 (KJS::AssignResolveNode::AssignResolveNode):
17948 (KJS::AssignBracketNode::AssignBracketNode):
17949 (KJS::AssignDotNode::AssignDotNode):
17950 (KJS::CommaNode::CommaNode):
17951 (KJS::AssignExprNode::AssignExprNode):
17952 (KJS::VarDeclListNode::VarDeclListNode):
17953 (KJS::VarStatementNode::VarStatementNode):
17954 (KJS::ExprStatementNode::ExprStatementNode):
17955 (KJS::IfNode::IfNode):
17956 (KJS::DoWhileNode::DoWhileNode):
17957 (KJS::WhileNode::WhileNode):
17958 (KJS::ForNode::ForNode):
17959 (KJS::ReturnNode::ReturnNode):
17960 (KJS::WithNode::WithNode):
17961 (KJS::CaseClauseNode::CaseClauseNode):
17962 (KJS::ClauseListNode::ClauseListNode):
17963 (KJS::ClauseListNode::clause):
17964 (KJS::ClauseListNode::next):
17965 (KJS::SwitchNode::SwitchNode):
17966 (KJS::LabelNode::LabelNode):
17967 (KJS::ThrowNode::ThrowNode):
17968 (KJS::CatchNode::CatchNode):
17969 (KJS::FinallyNode::FinallyNode):
17970 (KJS::TryNode::TryNode):
17971 (KJS::ParameterNode::ParameterNode):
17972 (KJS::ParameterNode::nextParam):
17973 (KJS::FuncDeclNode::FuncDeclNode):
17974 (KJS::FuncExprNode::FuncExprNode):
17975 * kjs/nodes2string.cpp:
17976 (KJS::SourceStream::operator<<):
17977 (ElementNode::streamTo):
17978 (PropertyValueNode::streamTo):
17979 (ArgumentListNode::streamTo):
17980 (StatListNode::streamTo):
17981 (VarDeclListNode::streamTo):
17982 (CaseBlockNode::streamTo):
17983 (ParameterNode::streamTo):
17984 (SourceElementsNode::streamTo):
17985 * kjs/shared_ptr.h: Added.
17986 (kxmlcore::SharedPtr::SharedPtr):
17987 (kxmlcore::SharedPtr::~SharedPtr):
17988 (kxmlcore::SharedPtr::isNull):
17989 (kxmlcore::SharedPtr::notNull):
17990 (kxmlcore::SharedPtr::reset):
17991 (kxmlcore::SharedPtr::get):
17992 (kxmlcore::SharedPtr::operator*):
17993 (kxmlcore::SharedPtr::operator->):
17994 (kxmlcore::SharedPtr::operator!):
17995 (kxmlcore::SharedPtr::operator bool):
17996 (kxmlcore::SharedPtr::operator==):
17997 (kxmlcore::::operator):
17998 (kxmlcore::operator!=):
17999 (kxmlcore::static_pointer_cast):
18000 (kxmlcore::const_pointer_cast):
18002 2005-08-26 Geoff Garen <ggaren@apple.com>
18007 - fixed http://bugs.webkit.org/show_bug.cgi?id=4664
18008 TOT Crash from backwards null check in WebScriptObject.mm
18010 * bindings/objc/WebScriptObject.mm:
18011 (+[WebScriptObject _convertValueToObjcValue:originExecutionContext:executionContext:]):
18014 2005-08-25 Darin Adler <darin@apple.com>
18016 Reviewed by John Sullivan.
18018 - rename KJS::UString::string() to KJS::UString::domString()
18019 - rename KJS::Identifier::string() to KJS::Identifier::domString()
18021 * kjs/identifier.h: Renamed.
18022 * kjs/ustring.h: Ditto.
18024 2005-08-19 Darin Adler <darin@apple.com>
18026 Reviewed by Maciej.
18028 - fixed http://bugs.webkit.org/show_bug.cgi?id=4435
18029 speed up JavaScript by tweaking the Identifier class
18031 * kjs/identifier.h: Add a new global nullIdentifier and make Identifier::null a function
18033 * kjs/identifier.cpp: (KJS::Identifier::init): Initialize a global for the null identifier
18034 as well as all the other globals for special identifiers.
18036 * kjs/ustring.h: (KJS::UString::UString): Make this empty constructor inline.
18037 * kjs/ustring.cpp: Remove the old non-inline version.
18039 2005-08-19 Mitz Pettel <opendarwin.org@mitzpettel.com>
18041 Reviewed by Maciej.
18042 Revised and landed by Darin.
18044 - fixed http://bugs.webkit.org/show_bug.cgi?id=4474
18045 REGRESSION: Crash when using in-place operator on uninitialized array element
18048 (AssignResolveNode::evaluate): Remove unneeded "isSet" assertion.
18049 (AssignBracketNode::evaluate): Replace code that tested "isSet" with code that
18050 tests the return value of getPropertySlot.
18052 * kjs/property_slot.h: Removed unneeded "isSet" function. Property slots are
18053 either uninitialized or set. There's no "initialized and not set" state.
18055 2005-08-18 Adele Peterson <adele@apple.com>
18057 Checked "Inline Functions Hidden" box
18059 * JavaScriptCore.xcodeproj/project.pbxproj:
18061 2005-08-16 Darin Adler <darin@apple.com>
18065 - fixed crash in one of the JavaScript tests (introduced by my throwError change)
18067 * kjs/nodes.cpp: (Node::setExceptionDetailsIfNeeded): Check if the exception is an
18068 object before setting the file and line number properties on it. Something to think
18069 about in the future -- do we really want to do this on any object that's thrown?
18070 How about limiting it to error objects that were created by the JavaScript engine?
18072 - changed kjs_fast_malloc so we don't have two conflicting versions of the same function
18074 * kjs/fast_malloc.h: Took out all the ifdefs from this header.
18075 * kjs/fast_malloc.cpp: Added non-NDEBUG versions of the functions that just call
18076 the system malloc, and put the NDEBUG versions in an #else.
18078 2005-08-16 Darin Adler <darin@apple.com>
18082 - clean up exported symbols that are not in a "KJS" namespace
18084 * bindings/NP_jsobject.cpp: (identiferFromNPIdentifier): Marked this function static
18085 so it no longer has external linkage.
18086 * bindings/c/c_utility.h: Put all this stuff inside the KJS namespace.
18087 * bindings/c/c_utility.cpp: Also marked some globals static so they don't have external
18088 linkage; not as important given the namespace.
18089 * bindings/npruntime.cpp: Marked functions static so they no longer have internal linkage.
18090 Also removed unused _NPN_SetExceptionWithUTF8 function (not in header, had C++ linkage!).
18092 * bindings/jni/jni_utility.cpp: (KJS::Bindings::getJavaVM): Call KJS_GetCreatedJavaVMs
18093 using the soft linking header, instead of calling the JNI call. This allows processes
18094 to link both JavaScriptCore and JavaVM without a symbol conflict.
18095 * bindings/softlinking.c:
18096 (loadFramework): Marked this function static so it no longer has external linkage.
18097 (getFunctionPointer): Ditto.
18098 (KJS_GetCreatedJavaVMs): Renamed this so it has a KJS prefix.
18100 * JavaScriptCore.xcodeproj/project.pbxproj: Added softlinking.h.
18101 * bindings/softlinking.h: Added.
18103 * kjs/nodes2string.cpp: (streamAssignmentOperatorTo): Marked this function static so it
18104 no longer has external linkage.
18106 2005-08-15 Darin Adler <darin@apple.com>
18110 - fixed http://bugs.webkit.org/show_bug.cgi?id=4437
18111 clean up error creation with new throwError function
18113 * bindings/NP_jsobject.cpp:
18114 (_NPN_SetException):
18115 * bindings/jni/jni_instance.cpp:
18116 (JavaInstance::invokeMethod):
18117 * bindings/jni/jni_runtime.cpp:
18118 (JavaField::dispatchValueFromInstance):
18119 (JavaField::dispatchSetValueToInstance):
18120 * bindings/objc/WebScriptObject.mm:
18121 (-[WebScriptObject _initializeWithObjectImp:originExecutionContext:executionContext:]):
18122 (-[WebScriptObject _initWithObjectImp:originExecutionContext:executionContext:]):
18123 (+[WebScriptObject throwException:]):
18124 (-[WebScriptObject setException:]):
18125 (+[WebScriptObject _convertValueToObjcValue:originExecutionContext:executionContext:]):
18126 * bindings/objc/objc_class.h:
18127 (KJS::Bindings::ObjcClass::~ObjcClass):
18128 (KJS::Bindings::ObjcClass::ObjcClass):
18129 (KJS::Bindings::ObjcClass::operator=):
18130 (KJS::Bindings::ObjcClass::constructorAt):
18131 (KJS::Bindings::ObjcClass::numConstructors):
18132 * bindings/objc/objc_header.h:
18133 * bindings/objc/objc_runtime.h:
18134 (KJS::Bindings::ObjcField::~ObjcField):
18135 (KJS::Bindings::ObjcField::ObjcField):
18136 (KJS::Bindings::ObjcField::operator=):
18137 (KJS::Bindings::ObjcMethod::ObjcMethod):
18138 (KJS::Bindings::ObjcMethod::~ObjcMethod):
18139 (KJS::Bindings::ObjcMethod::operator=):
18140 * bindings/objc/objc_runtime.mm:
18141 (ObjcField::valueFromInstance):
18142 (ObjcField::setValueToInstance):
18143 (ObjcArray::setValueAt):
18144 (ObjcArray::valueAt):
18145 * bindings/objc/objc_utility.h:
18146 * bindings/objc/objc_utility.mm:
18147 (KJS::Bindings::JSMethodNameToObjCMethodName):
18148 (KJS::Bindings::convertValueToObjcValue):
18149 (KJS::Bindings::convertNSStringToString):
18150 (KJS::Bindings::convertObjcValueToValue):
18151 (KJS::Bindings::objcValueTypeForType):
18152 (KJS::Bindings::createObjcInstanceForValue):
18153 (KJS::Bindings::throwError):
18154 * bindings/runtime.h:
18155 (KJS::Bindings::Parameter::~Parameter):
18156 (KJS::Bindings::Method::~Method):
18157 (KJS::Bindings::Instance::Instance):
18158 (KJS::Bindings::Instance::begin):
18159 (KJS::Bindings::Instance::end):
18160 (KJS::Bindings::Instance::getValueOfUndefinedField):
18161 (KJS::Bindings::Instance::supportsSetValueOfUndefinedField):
18162 (KJS::Bindings::Instance::setValueOfUndefinedField):
18163 (KJS::Bindings::Instance::valueOf):
18164 * bindings/runtime_array.cpp:
18165 (RuntimeArrayImp::put):
18166 * bindings/runtime_object.h:
18167 (KJS::RuntimeObjectImp::setInternalInstance):
18168 (KJS::RuntimeObjectImp::getInternalInstance):
18169 * kjs/array_object.cpp:
18171 (ArrayProtoFuncImp::callAsFunction):
18172 (ArrayObjectImp::construct):
18173 * kjs/bool_object.cpp:
18174 (BooleanProtoFuncImp::callAsFunction):
18175 * kjs/date_object.cpp:
18176 (KJS::DateProtoFuncImp::callAsFunction):
18177 * kjs/function.cpp:
18179 (KJS::GlobalFuncImp::callAsFunction):
18180 * kjs/function_object.cpp:
18181 (FunctionProtoFuncImp::callAsFunction):
18182 (FunctionObjectImp::construct):
18183 * kjs/internal.cpp:
18184 (KJS::UndefinedImp::toObject):
18185 (KJS::NullImp::toObject):
18186 (KJS::InterpreterImp::evaluate):
18187 (KJS::InternalFunctionImp::hasInstance):
18189 (Node::throwError):
18191 (Node::setExceptionDetailsIfNeeded):
18192 (undefinedVariableError):
18193 (ProgramNode::ProgramNode):
18194 * kjs/number_object.cpp:
18195 (NumberProtoFuncImp::callAsFunction):
18197 (KJS::ObjectImp::call):
18198 (KJS::ObjectImp::defaultValue):
18199 (KJS::Error::create):
18202 (KJS::ObjectImp::clearProperties):
18203 (KJS::ObjectImp::getPropertySlot):
18204 (KJS::ObjectImp::getOwnPropertySlot):
18205 * kjs/object_object.cpp:
18206 (ObjectProtoFuncImp::callAsFunction):
18207 * kjs/reference.cpp:
18208 (KJS::Reference::getBase):
18209 (KJS::Reference::getValue):
18210 (KJS::Reference::putValue):
18211 (KJS::Reference::deleteValue):
18212 * kjs/regexp_object.cpp:
18213 (RegExpProtoFuncImp::callAsFunction):
18214 (RegExpObjectImp::construct):
18215 * kjs/string_object.cpp:
18216 (StringProtoFuncImp::callAsFunction):
18218 2005-08-15 Anders Carlsson <andersca@mac.com>
18222 * tests/mozilla/ecma_3/Date/15.9.5.5.js:
18223 Remove the code which tests that Date.toLocaleString should be parsable
18224 by Date.parse. That is not true according to the spec.
18226 2005-08-15 Darin Adler <darin@apple.com>
18230 * kjs/collector.cpp: (KJS::Collector::allocate): Use a local instead of a global in one
18231 more place; slight speedup.
18233 2005-08-14 Darin Adler <darin@apple.com>
18235 Reviewed by Maciej.
18237 - fixed crash observed on one of the Apple-only layout tests
18239 * kjs/property_map.cpp: (KJS::PropertyMap::mark): Change code to understand that deleted
18240 entries have a value of NULL, so the deleted sentinel count doesn't need to be included
18241 in the count of things to mark since we're ignoring the keys.
18243 2005-08-14 Darin Adler <darin@apple.com>
18245 Reviewed by Maciej.
18247 - fixed http://bugs.webkit.org/show_bug.cgi?id=4421
18248 speed up JavaScript by inlining some label stack functions
18250 * kjs/internal.h: Removed the copy constructor and assignment operator for LabelStack.
18251 They were unused, and the implementations had bugs; I removed them rather than fixing them.
18252 Also removed the clear function, since that was only needed to help the assignment operator
18253 share code with the destructor, and was not efficient enough for the destructor.
18254 (KJS::LabelStack::~LabelStack): Made this inline. Also used an efficient implementation
18255 that's nice and fast when the stack is empty, better than the old clear() function which
18256 used to keep updating and refetching "tos" each time through the loop.
18257 (KJS::LabelStack::pop): Made this inline.
18259 * kjs/internal.cpp: Deleted the now-inline functions and the obsolete functions. Also
18260 deleted a commented-out line of code.
18262 2005-08-14 Darin Adler <darin@apple.com>
18264 Reviewed by Maciej.
18266 - fixed http://bugs.webkit.org/show_bug.cgi?id=4419
18267 speed up JavaScript by improving KJS::List
18269 my measurements show an improvement of 1% on iBench JavaScript
18271 * kjs/list.cpp: Rearrange list to make the values and free list share the same storage,
18272 which saves 4 bytes per list. Also remove the pointers used only on the heap from the
18273 lists that are in the pool, which saves 8 bytes per list. Moving the free list pointer
18274 closer to the start of the list object also speeds up access to the free list. New
18275 "HeapListImp" struct is used only for the lists on the heap.
18276 (KJS::List::markProtectedLists): Shadowed global variable in local and updated for the
18277 new terminology ("heap" instead of "outside pool").
18278 (KJS::allocateListImp): Updated for new terminology.
18279 (KJS::List::release): Moved the code from deallocateListImp in here -- it wasn't being
18280 inlined and didn't need to be in a separate function.
18282 2005-08-14 Darin Adler <darin@apple.com>
18284 Reviewed by Maciej.
18286 - fixed http://bugs.webkit.org/show_bug.cgi?id=4417
18287 speed up JavaScript with some small changes to the property map code
18289 my measurements show an improvement of 2% on iBench JavaScript
18291 * kjs/property_map.h: (KJS::PropertyMap::PropertyMap): Made the default constructor inline.
18292 * kjs/property_map.cpp:
18293 (KJS::PropertyMap::~PropertyMap): Changed loop to exit early once we know we've processed
18294 all the hash table entries, based on the count.
18295 (KJS::PropertyMap::mark): Ditto.
18297 * kjs/object.h: Made an arbitrary change here to force recompiling so we pick up changes to
18298 property_map.h. Works around what seems to be an Xcode header dependency bug.
18300 2005-08-14 Darin Adler <darin@apple.com>
18302 Reviewed by Maciej.
18304 - fixed http://bugs.webkit.org/show_bug.cgi?id=4416
18305 speed up JavaScript with some improvements to the garbage collector
18307 my measurements show an improvement of 2% on iBench JavaScript
18309 * kjs/collector.cpp:
18310 (KJS::Collector::allocate): Use local variables to shadow globals instead of repeatedly
18311 going at global variables. Tighten up loop implementations to make the common case fast.
18312 (KJS::Collector::markStackObjectsConservatively): Use local variables to shadow globals.
18313 Used a goto to eliminate a boolean since it was showing up in the profile.
18314 (KJS::Collector::markProtectedObjects): Iterate through the table using pointer rather
18315 than an index since the profile showed that generating better code.
18316 (KJS::Collector::collect): Added a special case for blocks where all cells are used,
18317 Use local variables to shadow globals. Eliminated a boolean by computing it another
18318 way (checking to see if the number of live objects changed). Also used local variables
18319 to shadow fields in the current cell when sweeping.
18320 (KJS::Collector::numReferencedObjects): Use AllocatedValueImp instead of ValueImp
18321 in one place -- means we get faster versions of various functions that don't worry
18322 about SimpleNumber.
18323 (KJS::className): Ditto.
18324 (KJS::Collector::rootObjectClasses): Ditto.
18326 2005-08-14 Darin Adler <darin@apple.com>
18328 - fixed http://bugs.webkit.org/show_bug.cgi?id=4344
18329 REGRESSION: JavaScript crash when going back from viewing a thread (NULL protoype)
18331 * kjs/error_object.cpp: (NativeErrorImp::NativeErrorImp): Set proto in a more
18332 straightforward way. The old code set the proto to 0 and then to the correct value.
18333 This showed up as a "false positive" when searching for places that set prototype
18334 to NULL/0 so I fixed it.
18336 * kjs/function_object.cpp: (FunctionPrototypeImp::FunctionPrototypeImp): Change to
18337 not pass an explicit "0" to the base class (InternalFunctionImp) constructor.
18339 * kjs/internal.h: Added a default constructor for InternalFunctionImp.
18340 * kjs/internal.cpp: (KJS::InternalFunctionImp::InternalFunctionImp): Added the
18341 default constructor (empty body, just calls base class's default constructor).
18344 (KJS::ObjectImp::ObjectImp): Add an assertion to catch NULL prototypes earlier
18345 in Development builds.
18346 (KJS::ObjectImp::setPrototype): Ditto.
18348 2005-08-12 Maciej Stachowiak <mjs@apple.com>
18352 - two simple speed improvements for a 3% speed gain
18354 * JavaScriptCore.xcodeproj/project.pbxproj: turn on -fstrict-aliasing
18356 * kjs/scope_chain.h:
18357 (KJS::ScopeChainIterator::ScopeChainIterator): Add a scope chain iterator
18358 so you can walk a scope chain without having to make a copy that you then mutate.
18359 (KJS::ScopeChainIterator::operator*): standard iterator operation
18360 (KJS::ScopeChainIterator::operator->): ditto
18361 (KJS::ScopeChainIterator::operator++): ditto
18362 (KJS::ScopeChainIterator::operator==): ditto
18363 (KJS::ScopeChainIterator::operator!=): ditto
18364 (KJS::ScopeChain::begin): Iterator for the top of the scope chain
18365 (KJS::ScopeChain::end): Iterator for one past the bottom (i.e. null)
18367 (ResolveNode::evaluate): Use scope chain iterator instead of copying
18368 a scope chain and then modifying the copy
18369 (ResolveNode::evaluateReference): ditto
18370 (FunctionCallResolveNode::evaluate): ditto
18371 (AssignResolveNode::evaluate): ditto
18373 2005-08-12 Maciej Stachowiak <mjs@apple.com>
18375 Patch from Anders Carlsson, reviewed by me.
18377 * kjs/nodes.h: Fix build breakage.
18379 2005-08-12 Maciej Stachowiak <mjs@apple.com>
18383 - refactor function calls, 3% speedup on JS iBench.
18387 (Node::throwError): Added new useful variants.
18388 (FunctionCallValueNode::evaluate): New node to handle calls on expressions
18389 that are strictly values, not references.
18390 (FunctionCallValueNode::ref): ditto
18391 (FunctionCallValueNode::deref): ditto
18392 (FunctionCallResolveNode::evaluate): New node to handle calls on identifier
18393 expressions, so that they are looked up in the scope chain.
18394 (FunctionCallResolveNode::ref): ditto
18395 (FunctionCallResolveNode::deref): ditto
18396 (FunctionCallBracketNode::evaluate): New node to handle calls on bracket
18397 dereferences, so that the expression before brackets is used as the this
18399 (FunctionCallBracketNode::ref): ditto
18400 (FunctionCallBracketNode::deref): ditto
18401 (FunctionCallDotNode::evaluate): New node to handle calls on dot
18402 dereferences, so that the expression before the dot is used as the this
18404 (FunctionCallDotNode::ref): ditto
18405 (FunctionCallDotNode::deref): ditto
18406 (dotExprNotAnObjectString): helper function to avoid global variable access.
18407 (dotExprDoesNotAllowCallsString): ditto
18408 * kjs/nodes.h: Declared new classes.
18409 * kjs/nodes2string.cpp:
18410 (FunctionCallValueNode::streamTo): Added - serializes the appropriate function call
18411 (FunctionCallResolveNode::streamTo): ditto
18412 (FunctionCallBracketNode::streamTo): ditto
18413 (FunctionCallParenBracketNode::streamTo): ditto
18414 (FunctionCallDotNode::streamTo): ditto
18415 (FunctionCallParenDotNode::streamTo): ditto
18417 (KJS::ObjectImp::isActivation): Change how activation objects are
18418 detected in the scope chain, a virtual function is cheaper than the
18419 old inheritance test.
18421 (KJS::ActivationImp::isActivation): Ditto.
18423 2005-08-11 Maciej Stachowiak <mjs@apple.com>
18425 - added missing file from earlier checkin
18427 * kjs/grammar_types.h: Added.
18428 (KJS::makeNodePair):
18429 (KJS::makeNodeWithIdent):
18431 2005-08-11 Maciej Stachowiak <mjs@apple.com>
18435 * kjs/date_object.cpp:
18436 (timetUsingCF): Fix one of the date tests my making the CF version of mktime
18437 have the same quirk about the DST field as the real mktime.
18438 * tests/mozilla/expected.html: Updated for newly fixed test.
18440 2005-08-11 Maciej Stachowiak <mjs@apple.com>
18442 - updated for one of the tests that Darin incidentally fixed.
18444 * tests/mozilla/expected.html:
18446 2005-08-10 Maciej Stachowiak <mjs@apple.com>
18450 Refactor assignment grammar to avoid Reference type, and to later
18451 be able to take advantage of writeable PropertySlots, when those
18452 are added. I also fixed a minor bug, turning a function to a
18453 string lost parentheses, I made sure they are printed at least
18454 where semantically significant.
18456 Test cases: see WebCore
18458 * kjs/grammar.y: Change grammar so that assignment expressions are parsed
18459 directly to nodes that know how to set the kind of location being assigned, instead
18460 of having a generic assign node that counts on evaluateReference.
18461 * kjs/lexer.cpp: Include grammar_types.h.
18463 (BracketAccessorNode): Renamed from AccessorNode1 for clarity.
18464 (DotAccessorNode): Renamed from AccessorNode2 for clarity.
18465 (combineForAssignment): Inline function for doing the proper kind of
18466 operation for various update assignments like += or *=.
18467 (AssignResolveNode): Node that handles assignment to a bare identifier.
18468 (AssignDotNode): Node that handles assignments of the form EXPR . IDENT = EXPR
18469 (AssignBracketNode): EXPR [ IDENT ] = EXPR
18470 * kjs/nodes.h: Updated for declarations/renames of new classes.
18471 * kjs/nodes2string.cpp:
18472 (GroupNode::streamTo): Fixed to print parens around the expression.
18473 (BracketAccessorNode::streamTo): Renamed.
18474 (DotAccessorNode::streamTo): Renamed.
18475 (AssignResolveNode::streamTo): Added.
18476 (AssignBracketNode::streamTo): Added.
18477 (AssignDotNode::streamTo): Added.
18478 (streamAssignmentOperatorTo): helper function for the above
18479 * kjs/property_slot.h:
18480 (KJS::PropertySlot::isSet): Made this const.
18482 2005-08-10 Adele Peterson <adele@apple.com>
18484 Bumping version to 420+
18488 2005-08-10 Geoffrey Garen <ggaren@apple.com>
18490 -fixed <rdar://problem/4151132> REGRESSION: Some applet liveconnect calls
18491 throws privilege exception.
18493 Reviewed by richard and mjs.
18495 -I removed the global static JavaClass cache, since it violated Java
18496 security to cache classes between websites and applets.
18498 * bindings/jni/jni_class.cpp:
18499 -removed global static cache dictionary
18500 -instance constructor and destructor now do the work that used to
18501 be done by static factory methods
18502 -removed obsolete functions
18503 (JavaClass::JavaClass):
18504 (JavaClass::~JavaClass):
18505 * bindings/jni/jni_class.h:
18506 -removed obsolete function declarations
18507 -made copying private since it's unused and it's also not clear
18508 excatly how copying would work with Java security
18509 -made default construction private since it's meaningless
18510 * bindings/jni/jni_instance.cpp:
18511 -removed obsolete functions
18512 (JavaInstance::~JavaInstance):
18513 (JavaInstance::getClass):
18514 * bindings/jni/jni_instance.h:
18515 -made copying private since it's unused and it's also not clear
18516 excatly how copying would work with Java security
18517 -made default construction private since it's meaningless
18519 2005-08-08 Geoffrey Garen <ggaren@apple.com>
18521 -fixed crash caused by fix for http://bugs.webkit.org/show_bug.cgi?id=4313
18523 - exceptionDescription now gets explicitly initialized to NULL in all
18524 the places listed below -- our wrapper classes used to take care of this
18527 * bindings/jni/jni_instance.cpp:
18528 (JavaInstance::invokeMethod):
18529 * bindings/jni/jni_runtime.cpp:
18530 (JavaField::dispatchValueFromInstance):
18531 (JavaField::dispatchSetValueToInstance):
18533 2005-08-08 Darin Adler <darin@apple.com>
18535 Reviewed by John Sullivan.
18537 - fixed http://bugs.webkit.org/show_bug.cgi?id=4325
18538 Mozilla Date tests have an unnecessary loop that runs 1970 times before each test
18540 * tests/mozilla/ecma/shell.js: Added TIME_YEAR_0 constant.
18542 * tests/mozilla/ecma/Date/15.9.5.10-1.js: Removed the loop and changed code to use the constant.
18543 * tests/mozilla/ecma/Date/15.9.5.10-10.js: Ditto.
18544 * tests/mozilla/ecma/Date/15.9.5.10-11.js: Ditto.
18545 * tests/mozilla/ecma/Date/15.9.5.10-12.js: Ditto.
18546 * tests/mozilla/ecma/Date/15.9.5.10-13.js: Ditto.
18547 * tests/mozilla/ecma/Date/15.9.5.10-2.js: Ditto.
18548 * tests/mozilla/ecma/Date/15.9.5.10-3.js: Ditto.
18549 * tests/mozilla/ecma/Date/15.9.5.10-4.js: Ditto.
18550 * tests/mozilla/ecma/Date/15.9.5.10-5.js: Ditto.
18551 * tests/mozilla/ecma/Date/15.9.5.10-6.js: Ditto.
18552 * tests/mozilla/ecma/Date/15.9.5.10-7.js: Ditto.
18553 * tests/mozilla/ecma/Date/15.9.5.10-8.js: Ditto.
18554 * tests/mozilla/ecma/Date/15.9.5.10-9.js: Ditto.
18555 * tests/mozilla/ecma/Date/15.9.5.11-2.js: Ditto.
18556 * tests/mozilla/ecma/Date/15.9.5.12-1.js: Ditto.
18557 * tests/mozilla/ecma/Date/15.9.5.12-2.js: Ditto.
18558 * tests/mozilla/ecma/Date/15.9.5.12-3.js: Ditto.
18559 * tests/mozilla/ecma/Date/15.9.5.12-4.js: Ditto.
18560 * tests/mozilla/ecma/Date/15.9.5.12-5.js: Ditto.
18561 * tests/mozilla/ecma/Date/15.9.5.12-6.js: Ditto.
18562 * tests/mozilla/ecma/Date/15.9.5.12-7.js: Ditto.
18563 * tests/mozilla/ecma/Date/15.9.5.12-8.js: Ditto.
18564 * tests/mozilla/ecma/Date/15.9.5.13-2.js: Ditto.
18565 * tests/mozilla/ecma/Date/15.9.5.13-8.js: Ditto.
18566 * tests/mozilla/ecma/Date/15.9.5.14.js: Ditto.
18567 * tests/mozilla/ecma/Date/15.9.5.15.js: Ditto.
18568 * tests/mozilla/ecma/Date/15.9.5.16.js: Ditto.
18569 * tests/mozilla/ecma/Date/15.9.5.17.js: Ditto.
18570 * tests/mozilla/ecma/Date/15.9.5.18.js: Ditto.
18571 * tests/mozilla/ecma/Date/15.9.5.19.js: Ditto.
18572 * tests/mozilla/ecma/Date/15.9.5.20.js: Ditto.
18573 * tests/mozilla/ecma/Date/15.9.5.21-1.js: Ditto.
18574 * tests/mozilla/ecma/Date/15.9.5.21-2.js: Ditto.
18575 * tests/mozilla/ecma/Date/15.9.5.21-3.js: Ditto.
18576 * tests/mozilla/ecma/Date/15.9.5.21-4.js: Ditto.
18577 * tests/mozilla/ecma/Date/15.9.5.21-5.js: Ditto.
18578 * tests/mozilla/ecma/Date/15.9.5.21-6.js: Ditto.
18579 * tests/mozilla/ecma/Date/15.9.5.21-7.js: Ditto.
18580 * tests/mozilla/ecma/Date/15.9.5.21-8.js: Ditto.
18581 * tests/mozilla/ecma/Date/15.9.5.22-1.js: Ditto.
18582 * tests/mozilla/ecma/Date/15.9.5.22-2.js: Ditto.
18583 * tests/mozilla/ecma/Date/15.9.5.22-3.js: Ditto.
18584 * tests/mozilla/ecma/Date/15.9.5.22-4.js: Ditto.
18585 * tests/mozilla/ecma/Date/15.9.5.22-5.js: Ditto.
18586 * tests/mozilla/ecma/Date/15.9.5.22-6.js: Ditto.
18587 * tests/mozilla/ecma/Date/15.9.5.22-7.js: Ditto.
18588 * tests/mozilla/ecma/Date/15.9.5.22-8.js: Ditto.
18589 * tests/mozilla/ecma/Date/15.9.5.23-4.js: Ditto.
18590 * tests/mozilla/ecma/Date/15.9.5.23-5.js: Ditto.
18591 * tests/mozilla/ecma/Date/15.9.5.23-6.js: Ditto.
18592 * tests/mozilla/ecma/Date/15.9.5.23-7.js: Ditto.
18593 * tests/mozilla/ecma/Date/15.9.5.23-8.js: Ditto.
18594 * tests/mozilla/ecma/Date/15.9.5.23-9.js: Ditto.
18595 * tests/mozilla/ecma/Date/15.9.5.5.js: Ditto.
18596 * tests/mozilla/ecma/Date/15.9.5.6.js: Ditto.
18597 * tests/mozilla/ecma/Date/15.9.5.7.js: Ditto.
18598 * tests/mozilla/ecma/Date/15.9.5.8.js: Ditto.
18599 * tests/mozilla/ecma/Date/15.9.5.9.js: Ditto.
18601 2005-08-08 Darin Adler <darin@apple.com>
18603 - forgot to delete an obsolete file
18605 * kjs/object_wrapper.h: Deleted.
18607 2005-08-07 Darin Adler <darin@apple.com>
18609 - fixed two problems compiling with gcc 4.0
18611 * kjs/array_object.cpp: (ArrayProtoFuncImp::callAsFunction): Initialized a
18612 variable to quiet an erroneous warning.
18613 * kjs/date_object.cpp: (KJS::makeTime): Removed extraneous KJS:: prefix.
18615 2005-08-07 Darin Adler <darin@apple.com>
18617 Rubber stamped by Maciej.
18619 - fixed http://bugs.webkit.org/show_bug.cgi?id=4313
18620 eliminate KJS::Value and KJS::Object smart pointer wrappers (for simplicity and speed)
18622 * JavaScriptCore.xcodeproj/project.pbxproj: Removed object_wrapper.h.
18624 Global replaces and other wonderful stuff.
18626 * bindings/NP_jsobject.cpp:
18629 (_NPN_GetProperty):
18630 (_NPN_SetProperty):
18632 (_NPN_SetException):
18633 * bindings/c/c_instance.cpp:
18634 (KJS::Bindings::CInstance::CInstance):
18635 (KJS::Bindings::CInstance::invokeMethod):
18636 (KJS::Bindings::CInstance::invokeDefaultMethod):
18637 (KJS::Bindings::CInstance::defaultValue):
18638 (KJS::Bindings::CInstance::stringValue):
18639 (KJS::Bindings::CInstance::numberValue):
18640 (KJS::Bindings::CInstance::booleanValue):
18641 (KJS::Bindings::CInstance::valueOf):
18642 * bindings/c/c_instance.h:
18643 * bindings/c/c_runtime.cpp:
18644 (CField::valueFromInstance):
18645 (CField::setValueToInstance):
18646 * bindings/c/c_runtime.h:
18647 * bindings/c/c_utility.cpp:
18648 (convertNPStringToUTF16):
18649 (convertUTF8ToUTF16):
18650 (coerceValueToNPVariantStringType):
18651 (convertValueToNPVariant):
18652 (convertNPVariantToValue):
18653 * bindings/c/c_utility.h:
18654 * bindings/jni/jni_instance.cpp:
18655 (JavaInstance::stringValue):
18656 (JavaInstance::numberValue):
18657 (JavaInstance::booleanValue):
18658 (JavaInstance::invokeMethod):
18659 (JavaInstance::invokeDefaultMethod):
18660 (JavaInstance::defaultValue):
18661 (JavaInstance::valueOf):
18662 * bindings/jni/jni_instance.h:
18663 * bindings/jni/jni_jsobject.cpp:
18664 (JSObject::invoke):
18667 (JSObject::getMember):
18668 (JSObject::getSlot):
18669 (JSObject::toString):
18670 (JSObject::convertValueToJObject):
18671 (JSObject::convertJObjectToValue):
18672 (JSObject::listFromJArray):
18673 * bindings/jni/jni_jsobject.h:
18674 * bindings/jni/jni_objc.mm:
18675 (KJS::Bindings::dispatchJNICall):
18676 * bindings/jni/jni_runtime.cpp:
18677 (JavaArray::convertJObjectToArray):
18678 (JavaField::dispatchValueFromInstance):
18679 (JavaField::valueFromInstance):
18680 (JavaField::dispatchSetValueToInstance):
18681 (JavaField::setValueToInstance):
18682 (JavaArray::setValueAt):
18683 (JavaArray::valueAt):
18684 * bindings/jni/jni_runtime.h:
18685 (KJS::Bindings::JavaString::ustring):
18686 * bindings/jni/jni_utility.cpp:
18687 (KJS::Bindings::getJavaVM):
18688 (KJS::Bindings::getJNIEnv):
18689 (KJS::Bindings::getMethodID):
18690 (KJS::Bindings::callJNIVoidMethod):
18691 (KJS::Bindings::callJNIObjectMethod):
18692 (KJS::Bindings::callJNIBooleanMethod):
18693 (KJS::Bindings::callJNIStaticBooleanMethod):
18694 (KJS::Bindings::callJNIByteMethod):
18695 (KJS::Bindings::callJNICharMethod):
18696 (KJS::Bindings::callJNIShortMethod):
18697 (KJS::Bindings::callJNIIntMethod):
18698 (KJS::Bindings::callJNILongMethod):
18699 (KJS::Bindings::callJNIFloatMethod):
18700 (KJS::Bindings::callJNIDoubleMethod):
18701 (KJS::Bindings::callJNIVoidMethodA):
18702 (KJS::Bindings::callJNIObjectMethodA):
18703 (KJS::Bindings::callJNIByteMethodA):
18704 (KJS::Bindings::callJNICharMethodA):
18705 (KJS::Bindings::callJNIShortMethodA):
18706 (KJS::Bindings::callJNIIntMethodA):
18707 (KJS::Bindings::callJNILongMethodA):
18708 (KJS::Bindings::callJNIFloatMethodA):
18709 (KJS::Bindings::callJNIDoubleMethodA):
18710 (KJS::Bindings::callJNIBooleanMethodA):
18711 (KJS::Bindings::callJNIVoidMethodIDA):
18712 (KJS::Bindings::callJNIObjectMethodIDA):
18713 (KJS::Bindings::callJNIByteMethodIDA):
18714 (KJS::Bindings::callJNICharMethodIDA):
18715 (KJS::Bindings::callJNIShortMethodIDA):
18716 (KJS::Bindings::callJNIIntMethodIDA):
18717 (KJS::Bindings::callJNILongMethodIDA):
18718 (KJS::Bindings::callJNIFloatMethodIDA):
18719 (KJS::Bindings::callJNIDoubleMethodIDA):
18720 (KJS::Bindings::callJNIBooleanMethodIDA):
18721 (KJS::Bindings::getCharactersFromJString):
18722 (KJS::Bindings::releaseCharactersForJString):
18723 (KJS::Bindings::getCharactersFromJStringInEnv):
18724 (KJS::Bindings::releaseCharactersForJStringInEnv):
18725 (KJS::Bindings::getUCharactersFromJStringInEnv):
18726 (KJS::Bindings::releaseUCharactersForJStringInEnv):
18727 (KJS::Bindings::JNITypeFromClassName):
18728 (KJS::Bindings::signatureFromPrimitiveType):
18729 (KJS::Bindings::JNITypeFromPrimitiveType):
18730 (KJS::Bindings::getJNIField):
18731 (KJS::Bindings::convertValueToJValue):
18732 * bindings/jni/jni_utility.h:
18733 * bindings/objc/WebScriptObject.mm:
18735 (-[WebScriptObject _initializeWithObjectImp:originExecutionContext:Bindings::executionContext:Bindings::]):
18736 (-[WebScriptObject _initWithObjectImp:originExecutionContext:Bindings::executionContext:Bindings::]):
18737 (-[WebScriptObject _imp]):
18738 (-[WebScriptObject _executionContext]):
18739 (-[WebScriptObject _setExecutionContext:]):
18740 (-[WebScriptObject _originExecutionContext]):
18741 (-[WebScriptObject _setOriginExecutionContext:]):
18742 (+[WebScriptObject throwException:]):
18744 (-[WebScriptObject callWebScriptMethod:withArguments:]):
18745 (-[WebScriptObject evaluateWebScript:]):
18746 (-[WebScriptObject setValue:forKey:]):
18747 (-[WebScriptObject valueForKey:]):
18748 (-[WebScriptObject removeWebScriptKey:]):
18749 (-[WebScriptObject stringRepresentation]):
18750 (-[WebScriptObject webScriptValueAtIndex:]):
18751 (-[WebScriptObject setException:]):
18752 (+[WebScriptObject _convertValueToObjcValue:originExecutionContext:executionContext:Bindings::]):
18753 * bindings/objc/WebScriptObjectPrivate.h:
18754 * bindings/objc/objc_class.h:
18755 * bindings/objc/objc_class.mm:
18756 (KJS::Bindings::ObjcClass::fallbackObject):
18757 * bindings/objc/objc_instance.h:
18758 * bindings/objc/objc_instance.mm:
18759 (ObjcInstance::invokeMethod):
18760 (ObjcInstance::invokeDefaultMethod):
18761 (ObjcInstance::setValueOfField):
18762 (ObjcInstance::setValueOfUndefinedField):
18763 (ObjcInstance::getValueOfField):
18764 (ObjcInstance::getValueOfUndefinedField):
18765 (ObjcInstance::defaultValue):
18766 (ObjcInstance::stringValue):
18767 (ObjcInstance::numberValue):
18768 (ObjcInstance::booleanValue):
18769 (ObjcInstance::valueOf):
18770 * bindings/objc/objc_runtime.h:
18771 * bindings/objc/objc_runtime.mm:
18772 (ObjcField::valueFromInstance):
18773 (convertValueToObjcObject):
18774 (ObjcField::setValueToInstance):
18775 (ObjcArray::setValueAt):
18776 (ObjcArray::valueAt):
18777 (ObjcFallbackObjectImp::put):
18778 (ObjcFallbackObjectImp::callAsFunction):
18779 (ObjcFallbackObjectImp::defaultValue):
18780 * bindings/objc/objc_utility.h:
18781 * bindings/objc/objc_utility.mm:
18782 (Bindings::JSMethodNameToObjCMethodName):
18783 (Bindings::convertValueToObjcValue):
18784 (Bindings::convertNSStringToString):
18785 (Bindings::convertObjcValueToValue):
18786 (Bindings::objcValueTypeForType):
18787 (Bindings::createObjcInstanceForValue):
18788 * bindings/runtime.cpp:
18789 (Instance::getValueOfField):
18790 (Instance::setValueOfField):
18791 (Instance::createRuntimeObject):
18792 (Instance::createLanguageInstanceForValue):
18793 * bindings/runtime.h:
18794 (KJS::Bindings::Constructor::~Constructor):
18795 (KJS::Bindings::Field::~Field):
18796 (KJS::Bindings::MethodList::MethodList):
18797 (KJS::Bindings::Class::fallbackObject):
18798 (KJS::Bindings::Class::~Class):
18799 (KJS::Bindings::Instance::Instance):
18800 (KJS::Bindings::Instance::getValueOfUndefinedField):
18801 (KJS::Bindings::Instance::supportsSetValueOfUndefinedField):
18802 (KJS::Bindings::Instance::setValueOfUndefinedField):
18803 (KJS::Bindings::Instance::valueOf):
18804 (KJS::Bindings::Instance::setExecutionContext):
18805 (KJS::Bindings::Instance::~Instance):
18806 (KJS::Bindings::Array::~Array):
18807 * bindings/runtime_array.cpp:
18808 (RuntimeArrayImp::RuntimeArrayImp):
18809 (RuntimeArrayImp::lengthGetter):
18810 (RuntimeArrayImp::indexGetter):
18811 (RuntimeArrayImp::put):
18812 * bindings/runtime_array.h:
18813 * bindings/runtime_method.cpp:
18814 (RuntimeMethodImp::lengthGetter):
18815 (RuntimeMethodImp::callAsFunction):
18816 * bindings/runtime_method.h:
18817 * bindings/runtime_object.cpp:
18818 (RuntimeObjectImp::fallbackObjectGetter):
18819 (RuntimeObjectImp::fieldGetter):
18820 (RuntimeObjectImp::methodGetter):
18821 (RuntimeObjectImp::getOwnPropertySlot):
18822 (RuntimeObjectImp::put):
18823 (RuntimeObjectImp::defaultValue):
18824 (RuntimeObjectImp::callAsFunction):
18825 * bindings/runtime_object.h:
18826 * kjs/array_instance.h:
18827 * kjs/array_object.cpp:
18828 (ArrayInstanceImp::ArrayInstanceImp):
18829 (ArrayInstanceImp::lengthGetter):
18830 (ArrayInstanceImp::getOwnPropertySlot):
18831 (ArrayInstanceImp::put):
18832 (ArrayInstanceImp::propList):
18833 (ArrayInstanceImp::setLength):
18834 (compareByStringForQSort):
18835 (compareWithCompareFunctionForQSort):
18836 (ArrayInstanceImp::sort):
18837 (ArrayInstanceImp::pushUndefinedObjectsToEnd):
18838 (ArrayPrototypeImp::ArrayPrototypeImp):
18839 (ArrayProtoFuncImp::ArrayProtoFuncImp):
18840 (ArrayProtoFuncImp::callAsFunction):
18841 (ArrayObjectImp::ArrayObjectImp):
18842 (ArrayObjectImp::construct):
18843 (ArrayObjectImp::callAsFunction):
18844 * kjs/array_object.h:
18845 * kjs/bool_object.cpp:
18846 (BooleanPrototypeImp::BooleanPrototypeImp):
18847 (BooleanProtoFuncImp::BooleanProtoFuncImp):
18848 (BooleanProtoFuncImp::callAsFunction):
18849 (BooleanObjectImp::BooleanObjectImp):
18850 (BooleanObjectImp::construct):
18851 (BooleanObjectImp::callAsFunction):
18852 * kjs/bool_object.h:
18853 * kjs/collector.cpp:
18854 (KJS::Collector::markStackObjectsConservatively):
18855 (KJS::Collector::collect):
18857 * kjs/completion.h:
18858 (KJS::Completion::Completion):
18859 (KJS::Completion::value):
18860 (KJS::Completion::isValueCompletion):
18862 (KJS::ContextImp::variableObject):
18863 (KJS::ContextImp::setVariableObject):
18864 (KJS::ContextImp::thisValue):
18865 (KJS::ContextImp::activationObject):
18866 (KJS::ContextImp::pushScope):
18867 * kjs/date_object.cpp:
18868 (formatLocaleDate):
18869 (KJS::timeFromArgs):
18870 (KJS::DatePrototypeImp::DatePrototypeImp):
18871 (KJS::DateProtoFuncImp::DateProtoFuncImp):
18872 (KJS::DateProtoFuncImp::callAsFunction):
18873 (KJS::DateObjectImp::DateObjectImp):
18874 (KJS::DateObjectImp::construct):
18875 (KJS::DateObjectImp::callAsFunction):
18876 (KJS::DateObjectFuncImp::DateObjectFuncImp):
18877 (KJS::DateObjectFuncImp::callAsFunction):
18879 (KJS::KRFCDate_parseDate):
18881 * kjs/date_object.h:
18882 * kjs/debugger.cpp:
18883 (Debugger::exception):
18884 (Debugger::callEvent):
18885 (Debugger::returnEvent):
18887 * kjs/error_object.cpp:
18888 (ErrorPrototypeImp::ErrorPrototypeImp):
18889 (ErrorProtoFuncImp::ErrorProtoFuncImp):
18890 (ErrorProtoFuncImp::callAsFunction):
18891 (ErrorObjectImp::ErrorObjectImp):
18892 (ErrorObjectImp::construct):
18893 (ErrorObjectImp::callAsFunction):
18894 (NativeErrorPrototypeImp::NativeErrorPrototypeImp):
18895 (NativeErrorImp::NativeErrorImp):
18896 (NativeErrorImp::construct):
18897 (NativeErrorImp::callAsFunction):
18898 * kjs/error_object.h:
18899 * kjs/function.cpp:
18900 (KJS::FunctionImp::FunctionImp):
18901 (KJS::FunctionImp::callAsFunction):
18902 (KJS::FunctionImp::processParameters):
18903 (KJS::FunctionImp::argumentsGetter):
18904 (KJS::FunctionImp::lengthGetter):
18905 (KJS::FunctionImp::put):
18906 (KJS::DeclaredFunctionImp::DeclaredFunctionImp):
18907 (KJS::DeclaredFunctionImp::construct):
18908 (KJS::ArgumentsImp::ArgumentsImp):
18909 (KJS::ArgumentsImp::mappedIndexGetter):
18910 (KJS::ArgumentsImp::put):
18911 (KJS::ActivationImp::argumentsGetter):
18912 (KJS::GlobalFuncImp::GlobalFuncImp):
18915 (KJS::GlobalFuncImp::callAsFunction):
18917 * kjs/function_object.cpp:
18918 (FunctionPrototypeImp::FunctionPrototypeImp):
18919 (FunctionPrototypeImp::callAsFunction):
18920 (FunctionProtoFuncImp::FunctionProtoFuncImp):
18921 (FunctionProtoFuncImp::callAsFunction):
18922 (FunctionObjectImp::FunctionObjectImp):
18923 (FunctionObjectImp::construct):
18924 (FunctionObjectImp::callAsFunction):
18925 * kjs/function_object.h:
18926 * kjs/internal.cpp:
18927 (KJS::UndefinedImp::toPrimitive):
18928 (KJS::UndefinedImp::toObject):
18929 (KJS::NullImp::toPrimitive):
18930 (KJS::NullImp::toObject):
18931 (KJS::BooleanImp::toPrimitive):
18932 (KJS::BooleanImp::toObject):
18933 (KJS::StringImp::toPrimitive):
18934 (KJS::StringImp::toObject):
18935 (KJS::NumberImp::toPrimitive):
18936 (KJS::NumberImp::toObject):
18937 (KJS::NumberImp::getUInt32):
18938 (KJS::LabelStack::push):
18939 (KJS::ContextImp::ContextImp):
18940 (KJS::InterpreterImp::globalInit):
18941 (KJS::InterpreterImp::globalClear):
18942 (KJS::InterpreterImp::InterpreterImp):
18943 (KJS::InterpreterImp::initGlobalObject):
18944 (KJS::InterpreterImp::clear):
18945 (KJS::InterpreterImp::mark):
18946 (KJS::InterpreterImp::evaluate):
18947 (KJS::InternalFunctionImp::hasInstance):
18951 (KJS::InterpreterImp::builtinObject):
18952 (KJS::InterpreterImp::builtinFunction):
18953 (KJS::InterpreterImp::builtinArray):
18954 (KJS::InterpreterImp::builtinBoolean):
18955 (KJS::InterpreterImp::builtinString):
18956 (KJS::InterpreterImp::builtinNumber):
18957 (KJS::InterpreterImp::builtinDate):
18958 (KJS::InterpreterImp::builtinRegExp):
18959 (KJS::InterpreterImp::builtinError):
18960 (KJS::InterpreterImp::builtinObjectPrototype):
18961 (KJS::InterpreterImp::builtinFunctionPrototype):
18962 (KJS::InterpreterImp::builtinArrayPrototype):
18963 (KJS::InterpreterImp::builtinBooleanPrototype):
18964 (KJS::InterpreterImp::builtinStringPrototype):
18965 (KJS::InterpreterImp::builtinNumberPrototype):
18966 (KJS::InterpreterImp::builtinDatePrototype):
18967 (KJS::InterpreterImp::builtinRegExpPrototype):
18968 (KJS::InterpreterImp::builtinErrorPrototype):
18969 (KJS::InterpreterImp::builtinEvalError):
18970 (KJS::InterpreterImp::builtinRangeError):
18971 (KJS::InterpreterImp::builtinReferenceError):
18972 (KJS::InterpreterImp::builtinSyntaxError):
18973 (KJS::InterpreterImp::builtinTypeError):
18974 (KJS::InterpreterImp::builtinURIError):
18975 (KJS::InterpreterImp::builtinEvalErrorPrototype):
18976 (KJS::InterpreterImp::builtinRangeErrorPrototype):
18977 (KJS::InterpreterImp::builtinReferenceErrorPrototype):
18978 (KJS::InterpreterImp::builtinSyntaxErrorPrototype):
18979 (KJS::InterpreterImp::builtinTypeErrorPrototype):
18980 (KJS::InterpreterImp::builtinURIErrorPrototype):
18981 * kjs/interpreter.cpp:
18982 (Context::variableObject):
18983 (Context::thisValue):
18984 (Interpreter::Interpreter):
18985 (Interpreter::globalObject):
18986 (Interpreter::evaluate):
18987 (Interpreter::builtinObject):
18988 (Interpreter::builtinFunction):
18989 (Interpreter::builtinArray):
18990 (Interpreter::builtinBoolean):
18991 (Interpreter::builtinString):
18992 (Interpreter::builtinNumber):
18993 (Interpreter::builtinDate):
18994 (Interpreter::builtinRegExp):
18995 (Interpreter::builtinError):
18996 (Interpreter::builtinObjectPrototype):
18997 (Interpreter::builtinFunctionPrototype):
18998 (Interpreter::builtinArrayPrototype):
18999 (Interpreter::builtinBooleanPrototype):
19000 (Interpreter::builtinStringPrototype):
19001 (Interpreter::builtinNumberPrototype):
19002 (Interpreter::builtinDatePrototype):
19003 (Interpreter::builtinRegExpPrototype):
19004 (Interpreter::builtinErrorPrototype):
19005 (Interpreter::builtinEvalError):
19006 (Interpreter::builtinRangeError):
19007 (Interpreter::builtinReferenceError):
19008 (Interpreter::builtinSyntaxError):
19009 (Interpreter::builtinTypeError):
19010 (Interpreter::builtinURIError):
19011 (Interpreter::builtinEvalErrorPrototype):
19012 (Interpreter::builtinRangeErrorPrototype):
19013 (Interpreter::builtinReferenceErrorPrototype):
19014 (Interpreter::builtinSyntaxErrorPrototype):
19015 (Interpreter::builtinTypeErrorPrototype):
19016 (Interpreter::builtinURIErrorPrototype):
19017 (Interpreter::createLanguageInstanceForValue):
19018 * kjs/interpreter.h:
19019 (KJS::Interpreter::isGlobalObject):
19020 (KJS::ExecState::setException):
19021 (KJS::ExecState::clearException):
19022 (KJS::ExecState::exception):
19023 (KJS::ExecState::hadException):
19024 (KJS::ExecState::ExecState):
19028 (KJS::List::operator[]):
19029 (KJS::ListIterator::operator->):
19030 (KJS::ListIterator::operator*):
19031 (KJS::ListIterator::operator++):
19032 (KJS::ListIterator::operator--):
19034 (KJS::staticFunctionGetter):
19035 (KJS::staticValueGetter):
19037 (KJS::cacheGlobalObject):
19038 * kjs/math_object.cpp:
19039 (MathObjectImp::getValueProperty):
19040 (MathFuncImp::MathFuncImp):
19041 (MathFuncImp::callAsFunction):
19042 * kjs/math_object.h:
19044 (Node::evaluateReference):
19045 (Node::throwError):
19046 (Node::setExceptionDetailsIfNeeded):
19047 (NullNode::evaluate):
19048 (BooleanNode::evaluate):
19049 (NumberNode::evaluate):
19050 (StringNode::evaluate):
19051 (RegExpNode::evaluate):
19052 (ThisNode::evaluate):
19053 (ResolveNode::evaluate):
19054 (ResolveNode::evaluateReference):
19055 (GroupNode::evaluate):
19056 (ElementNode::evaluate):
19057 (ArrayNode::evaluate):
19058 (ObjectLiteralNode::evaluate):
19059 (PropertyValueNode::evaluate):
19060 (PropertyNode::evaluate):
19061 (AccessorNode1::evaluate):
19062 (AccessorNode1::evaluateReference):
19063 (AccessorNode2::evaluate):
19064 (AccessorNode2::evaluateReference):
19065 (ArgumentListNode::evaluate):
19066 (ArgumentListNode::evaluateList):
19067 (ArgumentsNode::evaluate):
19068 (NewExprNode::evaluate):
19069 (FunctionCallNode::evaluate):
19070 (PostfixNode::evaluate):
19071 (DeleteNode::evaluate):
19072 (VoidNode::evaluate):
19073 (TypeOfNode::evaluate):
19074 (PrefixNode::evaluate):
19075 (UnaryPlusNode::evaluate):
19076 (NegateNode::evaluate):
19077 (BitwiseNotNode::evaluate):
19078 (LogicalNotNode::evaluate):
19079 (MultNode::evaluate):
19080 (AddNode::evaluate):
19081 (ShiftNode::evaluate):
19082 (RelationalNode::evaluate):
19083 (EqualNode::evaluate):
19084 (BitOperNode::evaluate):
19085 (BinaryLogicalNode::evaluate):
19086 (ConditionalNode::evaluate):
19087 (AssignNode::evaluate):
19088 (CommaNode::evaluate):
19089 (StatListNode::execute):
19090 (AssignExprNode::evaluate):
19091 (VarDeclNode::evaluate):
19092 (VarDeclNode::processVarDecls):
19093 (VarDeclListNode::evaluate):
19094 (ExprStatementNode::execute):
19096 (DoWhileNode::execute):
19097 (WhileNode::execute):
19098 (ForNode::execute):
19099 (ForInNode::execute):
19100 (ContinueNode::execute):
19101 (BreakNode::execute):
19102 (ReturnNode::execute):
19103 (WithNode::execute):
19104 (CaseClauseNode::evaluate):
19105 (ClauseListNode::evaluate):
19106 (CaseBlockNode::evaluate):
19107 (CaseBlockNode::evalBlock):
19108 (SwitchNode::execute):
19109 (ThrowNode::execute):
19110 (CatchNode::execute):
19111 (TryNode::execute):
19112 (ParameterNode::evaluate):
19113 (FuncDeclNode::processFuncDecl):
19114 (FuncExprNode::evaluate):
19115 (SourceElementsNode::execute):
19117 (KJS::StatementNode::evaluate):
19118 * kjs/number_object.cpp:
19119 (NumberPrototypeImp::NumberPrototypeImp):
19120 (NumberProtoFuncImp::NumberProtoFuncImp):
19121 (NumberProtoFuncImp::callAsFunction):
19122 (NumberObjectImp::NumberObjectImp):
19123 (NumberObjectImp::getValueProperty):
19124 (NumberObjectImp::construct):
19125 (NumberObjectImp::callAsFunction):
19126 * kjs/number_object.h:
19128 (KJS::ObjectImp::call):
19129 (KJS::ObjectImp::mark):
19130 (KJS::ObjectImp::classInfo):
19131 (KJS::ObjectImp::get):
19132 (KJS::ObjectImp::getProperty):
19133 (KJS::ObjectImp::getPropertySlot):
19134 (KJS::ObjectImp::put):
19135 (KJS::ObjectImp::hasOwnProperty):
19136 (KJS::ObjectImp::defaultValue):
19137 (KJS::ObjectImp::findPropertyHashEntry):
19138 (KJS::ObjectImp::construct):
19139 (KJS::ObjectImp::callAsFunction):
19140 (KJS::ObjectImp::hasInstance):
19141 (KJS::ObjectImp::propList):
19142 (KJS::ObjectImp::toPrimitive):
19143 (KJS::ObjectImp::toNumber):
19144 (KJS::ObjectImp::toString):
19145 (KJS::ObjectImp::toObject):
19146 (KJS::ObjectImp::putDirect):
19147 (KJS::Error::create):
19151 (KJS::ObjectImp::getPropertySlot):
19152 (KJS::AllocatedValueImp::isObject):
19153 (KJS::ObjectImp::ObjectImp):
19154 (KJS::ObjectImp::internalValue):
19155 (KJS::ObjectImp::setInternalValue):
19156 (KJS::ObjectImp::prototype):
19157 (KJS::ObjectImp::setPrototype):
19158 (KJS::ObjectImp::inherits):
19159 * kjs/object_object.cpp:
19160 (ObjectPrototypeImp::ObjectPrototypeImp):
19161 (ObjectProtoFuncImp::ObjectProtoFuncImp):
19162 (ObjectProtoFuncImp::callAsFunction):
19163 (ObjectObjectImp::ObjectObjectImp):
19164 (ObjectObjectImp::construct):
19165 (ObjectObjectImp::callAsFunction):
19166 * kjs/object_object.h:
19167 * kjs/operations.cpp:
19169 (KJS::strictEqual):
19173 * kjs/operations.h:
19174 * kjs/property_map.cpp:
19175 (KJS::PropertyMap::mark):
19176 (KJS::PropertyMap::addEnumerablesToReferenceList):
19177 (KJS::PropertyMap::addSparseArrayPropertiesToReferenceList):
19178 (KJS::PropertyMap::save):
19179 (KJS::PropertyMap::restore):
19180 * kjs/property_map.h:
19181 * kjs/property_slot.cpp:
19182 (KJS::PropertySlot::undefinedGetter):
19183 * kjs/property_slot.h:
19184 (KJS::PropertySlot::getValue):
19186 (KJS::gcUnprotectNullTolerant):
19187 (KJS::ProtectedValue::ProtectedValue):
19188 (KJS::ProtectedValue::~ProtectedValue):
19189 (KJS::ProtectedValue::operator=):
19190 (KJS::ProtectedValue::operator ValueImp *):
19191 (KJS::ProtectedValue::operator->):
19192 * kjs/protected_object.h:
19193 (KJS::ProtectedObject::ProtectedObject):
19194 (KJS::ProtectedObject::operator=):
19195 (KJS::ProtectedObject::operator ValueImp *):
19196 (KJS::ProtectedObject::operator ObjectImp *):
19197 (KJS::ProtectedObject::operator->):
19198 (KJS::ProtectedReference::ProtectedReference):
19199 (KJS::ProtectedReference::~ProtectedReference):
19200 (KJS::ProtectedReference::operator=):
19201 * kjs/protected_values.cpp:
19202 (KJS::ProtectedValues::getProtectCount):
19203 (KJS::ProtectedValues::increaseProtectCount):
19204 (KJS::ProtectedValues::insert):
19205 (KJS::ProtectedValues::decreaseProtectCount):
19206 * kjs/protected_values.h:
19207 * kjs/reference.cpp:
19208 (KJS::Reference::Reference):
19209 (KJS::Reference::makeValueReference):
19210 (KJS::Reference::getBase):
19211 (KJS::Reference::getValue):
19212 (KJS::Reference::putValue):
19213 (KJS::Reference::deleteValue):
19215 (KJS::Reference::baseIfMutable):
19216 * kjs/regexp_object.cpp:
19217 (RegExpPrototypeImp::RegExpPrototypeImp):
19218 (RegExpProtoFuncImp::RegExpProtoFuncImp):
19219 (RegExpProtoFuncImp::callAsFunction):
19220 (RegExpObjectImp::RegExpObjectImp):
19221 (RegExpObjectImp::arrayOfMatches):
19222 (RegExpObjectImp::backrefGetter):
19223 (RegExpObjectImp::construct):
19224 (RegExpObjectImp::callAsFunction):
19225 * kjs/regexp_object.h:
19226 * kjs/string_object.cpp:
19227 (StringInstanceImp::lengthGetter):
19228 (StringInstanceImp::indexGetter):
19229 (StringInstanceImp::getOwnPropertySlot):
19230 (StringInstanceImp::put):
19231 (StringPrototypeImp::StringPrototypeImp):
19232 (StringProtoFuncImp::StringProtoFuncImp):
19235 (StringProtoFuncImp::callAsFunction):
19236 (StringObjectImp::StringObjectImp):
19237 (StringObjectImp::construct):
19238 (StringObjectImp::callAsFunction):
19239 (StringObjectFuncImp::StringObjectFuncImp):
19240 (StringObjectFuncImp::callAsFunction):
19241 * kjs/string_object.h:
19243 (TestFunctionImp::callAsFunction):
19244 (VersionFunctionImp::callAsFunction):
19247 (KJS::AllocatedValueImp::operator new):
19248 (KJS::AllocatedValueImp::getUInt32):
19249 (KJS::ValueImp::toInteger):
19250 (KJS::ValueImp::toInt32):
19251 (KJS::ValueImp::toUInt32):
19252 (KJS::ValueImp::toUInt16):
19253 (KJS::ValueImp::toObject):
19254 (KJS::AllocatedValueImp::getBoolean):
19255 (KJS::AllocatedValueImp::getNumber):
19256 (KJS::AllocatedValueImp::getString):
19257 (KJS::AllocatedValueImp::getObject):
19260 (KJS::ConstantValues::init):
19261 (KJS::ConstantValues::clear):
19262 (KJS::ConstantValues::mark):
19265 (KJS::jsUndefined):
19269 (KJS::ValueImp::ValueImp):
19270 (KJS::ValueImp::~ValueImp):
19271 (KJS::AllocatedValueImp::AllocatedValueImp):
19272 (KJS::AllocatedValueImp::~AllocatedValueImp):
19273 (KJS::AllocatedValueImp::isBoolean):
19274 (KJS::AllocatedValueImp::isNumber):
19275 (KJS::AllocatedValueImp::isString):
19276 (KJS::AllocatedValueImp::isObject):
19277 (KJS::AllocatedValueImp::marked):
19278 (KJS::AllocatedValueImp::mark):
19279 (KJS::ValueImp::downcast):
19280 (KJS::ValueImp::isUndefined):
19281 (KJS::ValueImp::isNull):
19282 (KJS::ValueImp::isUndefinedOrNull):
19283 (KJS::ValueImp::isBoolean):
19284 (KJS::ValueImp::isNumber):
19285 (KJS::ValueImp::isString):
19286 (KJS::ValueImp::isObject):
19287 (KJS::ValueImp::getBoolean):
19288 (KJS::ValueImp::getNumber):
19289 (KJS::ValueImp::getString):
19290 (KJS::ValueImp::getObject):
19291 (KJS::ValueImp::getUInt32):
19292 (KJS::ValueImp::mark):
19293 (KJS::ValueImp::marked):
19294 (KJS::ValueImp::type):
19295 (KJS::ValueImp::toPrimitive):
19296 (KJS::ValueImp::toBoolean):
19297 (KJS::ValueImp::toNumber):
19298 (KJS::ValueImp::toString):
19308 2005-08-06 Maciej Stachowiak <mjs@apple.com>
19312 Change over to the new PropertySlot mechanism for property
19313 lookup. This allows the elimination of hasOwnProperty
19314 methods. Also did some of the performance tuning enabled by this
19315 (but not yet all the possible improvements for function calls,
19316 assignment, ++, and so forth). And also much code cleanup.
19318 Net result is about a 2% speedup on the JS iBench.
19320 Also redid Geoff's fix for the chrashing applet by avoiding a NULL
19321 prototype in the bindings code and using the default of Null()
19324 * JavaScriptCore.xcodeproj/project.pbxproj:
19325 * bindings/objc/objc_runtime.h:
19326 * bindings/objc/objc_runtime.mm:
19327 (ObjcFallbackObjectImp::ObjcFallbackObjectImp):
19328 (ObjcFallbackObjectImp::getOwnPropertySlot):
19329 * bindings/runtime_array.cpp:
19330 (RuntimeArrayImp::lengthGetter):
19331 (RuntimeArrayImp::indexGetter):
19332 (RuntimeArrayImp::getOwnPropertySlot):
19333 * bindings/runtime_array.h:
19334 * bindings/runtime_method.cpp:
19335 (RuntimeMethodImp::lengthGetter):
19336 (RuntimeMethodImp::getOwnPropertySlot):
19337 * bindings/runtime_method.h:
19338 * bindings/runtime_object.cpp:
19339 (RuntimeObjectImp::RuntimeObjectImp):
19340 (RuntimeObjectImp::fallbackObjectGetter):
19341 (RuntimeObjectImp::fieldGetter):
19342 (RuntimeObjectImp::methodGetter):
19343 (RuntimeObjectImp::getOwnPropertySlot):
19344 * bindings/runtime_object.h:
19345 * bindings/runtime_root.h:
19346 * kjs/array_instance.h:
19347 * kjs/array_object.cpp:
19348 (ArrayInstanceImp::lengthGetter):
19349 (ArrayInstanceImp::getOwnPropertySlot):
19350 (ArrayPrototypeImp::getOwnPropertySlot):
19351 * kjs/array_object.h:
19352 * kjs/date_object.cpp:
19353 (DatePrototypeImp::getOwnPropertySlot):
19354 * kjs/date_object.h:
19355 * kjs/function.cpp:
19356 (KJS::FunctionImp::argumentsGetter):
19357 (KJS::FunctionImp::lengthGetter):
19358 (KJS::FunctionImp::getOwnPropertySlot):
19359 (KJS::FunctionImp::put):
19360 (KJS::FunctionImp::deleteProperty):
19361 (KJS::ArgumentsImp::mappedIndexGetter):
19362 (KJS::ArgumentsImp::getOwnPropertySlot):
19363 (KJS::ActivationImp::argumentsGetter):
19364 (KJS::ActivationImp::getArgumentsGetter):
19365 (KJS::ActivationImp::getOwnPropertySlot):
19366 (KJS::ActivationImp::deleteProperty):
19368 * kjs/internal.cpp:
19369 (InterpreterImp::InterpreterImp):
19370 (InterpreterImp::initGlobalObject):
19371 (InterpreterImp::~InterpreterImp):
19372 (InterpreterImp::evaluate):
19374 (KJS::InterpreterImp::globalExec):
19375 * kjs/interpreter.cpp:
19376 (Interpreter::Interpreter):
19377 (Interpreter::createLanguageInstanceForValue):
19378 * kjs/interpreter.h:
19379 (KJS::Interpreter::argumentsIdentifier):
19380 (KJS::Interpreter::specialPrototypeIdentifier):
19382 (KJS::staticFunctionGetter):
19383 (KJS::staticValueGetter):
19384 (KJS::getStaticPropertySlot):
19385 (KJS::getStaticFunctionSlot):
19386 (KJS::getStaticValueSlot):
19387 * kjs/math_object.cpp:
19388 (MathObjectImp::getOwnPropertySlot):
19389 * kjs/math_object.h:
19391 (ResolveNode::evaluate):
19392 (ResolveNode::evaluateReference):
19393 (AccessorNode1::evaluate):
19394 (AccessorNode2::evaluate):
19395 * kjs/number_object.cpp:
19396 (NumberObjectImp::getOwnPropertySlot):
19397 * kjs/number_object.h:
19399 (KJS::ObjectImp::get):
19400 (KJS::ObjectImp::getProperty):
19401 (KJS::ObjectImp::getPropertySlot):
19402 (KJS::ObjectImp::getOwnPropertySlot):
19403 (KJS::ObjectImp::put):
19404 (KJS::ObjectImp::hasProperty):
19405 (KJS::ObjectImp::hasOwnProperty):
19407 (KJS::ObjectImp::getDirectLocation):
19408 (KJS::ObjectImp::getPropertySlot):
19409 (KJS::ObjectImp::getOwnPropertySlot):
19410 * kjs/object_wrapper.h: Added.
19412 (KJS::Object::Object):
19413 (KJS::Object::operator ObjectImp *):
19414 * kjs/property_map.cpp:
19415 (KJS::PropertyMap::getLocation):
19416 * kjs/property_map.h:
19417 * kjs/property_slot.cpp: Added.
19418 (KJS::PropertySlot::undefinedGetter):
19419 * kjs/property_slot.h: Added.
19420 (KJS::PropertySlot::isSet):
19421 (KJS::PropertySlot::getValue):
19422 (KJS::PropertySlot::setValueSlot):
19423 (KJS::PropertySlot::setStaticEntry):
19424 (KJS::PropertySlot::setCustom):
19425 (KJS::PropertySlot::setCustomIndex):
19426 (KJS::PropertySlot::setUndefined):
19427 (KJS::PropertySlot::slotBase):
19428 (KJS::PropertySlot::staticEntry):
19429 (KJS::PropertySlot::index):
19430 (KJS::PropertySlot::):
19432 * kjs/protected_object.h: Added.
19433 (KJS::ProtectedObject::ProtectedObject):
19434 (KJS::ProtectedObject::~ProtectedObject):
19435 (KJS::ProtectedObject::operator=):
19436 (KJS::ProtectedReference::ProtectedReference):
19437 (KJS::ProtectedReference::~ProtectedReference):
19438 (KJS::ProtectedReference::operator=):
19440 * kjs/reference_list.cpp:
19441 * kjs/regexp_object.cpp:
19442 (RegExpObjectImp::backrefGetter):
19443 (RegExpObjectImp::getOwnPropertySlot):
19444 * kjs/regexp_object.h:
19445 * kjs/string_object.cpp:
19446 (StringInstanceImp::lengthGetter):
19447 (StringInstanceImp::indexGetter):
19448 (StringInstanceImp::getOwnPropertySlot):
19449 (StringPrototypeImp::getOwnPropertySlot):
19450 * kjs/string_object.h:
19452 2005-08-05 Adele Peterson <adele@apple.com>
19456 * JavaScriptCore.xcodeproj/project.pbxproj: Unchecked 'statics are thread safe' option.
19458 2005-08-05 Geoffrey Garen <ggaren@apple.com>
19460 -fixed <rdar://problem/4207220> REGRESSION (DENVER): Crash occurs
19461 after clicking on Hangman applet
19466 (KJS::ObjectImp::hasProperty): added check for null prototype.
19468 FIXME: The long-term plan is to make runtime objects use JS Null()
19469 instead of null pointers, which will allow us to eliminate null
19470 checks, improving performance.
19472 2005-08-05 Geoffrey Garen <ggaren@apple.com>
19474 Fix by darin, reviewed by me.
19476 - rolled in fix for: <rdar://problem/4161606> JavaScript regular
19477 expressions with certain ranges of Unicode characters cause a crash
19481 * layout-tests/fast/js/regexp-big-unicode-ranges-expected.txt: Added.
19482 * layout-tests/fast/js/regexp-big-unicode-ranges.html: Added.
19485 (compile_branch): added checks for characters > 255
19487 2005-08-04 Maciej Stachowiak <mjs@apple.com>
19489 - updated expected test results now that we no longer exlude the
19490 date tests (apparently this was overlooked)
19492 * tests/mozilla/expected.html:
19494 2005-07-31 Darin Adler <darin@apple.com>
19496 Reviewed by Maciej.
19498 - remove uses of Mac-OS-X-specific MAX macro
19499 - remove one of the many excess "APPLE_CHANGES" ifdefs
19501 * kjs/collector.cpp: (KJS::Collector::allocate): Use std::max instead of MAX.
19502 * kjs/property_map.cpp: (KJS::PropertyMap::rehash): Ditto.
19504 (KJS::UChar::toLower): Take out non-ICU code path.
19505 (KJS::UChar::toUpper): Ditto.
19506 (KJS::UString::spliceSubstringsWithSeparators): Use std::max instead of MAX.
19508 2005-07-27 Geoffrey Garen <ggaren@apple.com>
19510 - fixed http://bugs.webkit.org/show_bug.cgi?id=4147
19511 Array.toString() and toLocaleString() improvements from KDE KJS
19512 (rolled in KDE changes)
19516 * layout-tests/fast/js/toString-overrides-expected.txt: Added.
19517 * layout-tests/fast/js/toString-overrides.html: Added.
19519 * kjs/array_object.cpp:
19520 (ArrayProtoFuncImp::call):
19522 2005-07-27 Maciej Stachowiak <mjs@apple.com>
19524 Changes by Michael Kahl, reviewed by me.
19526 - fixed <rdar://problem/4194278> Need better debugging support in JavaScriptCore
19528 * JavaScriptCore.xcodeproj/project.pbxproj:
19529 * kjs/debugger.cpp:
19530 (KJS::AttachedInterpreter::AttachedInterpreter):
19531 (KJS::AttachedInterpreter::~AttachedInterpreter):
19532 (Debugger::~Debugger):
19533 (Debugger::attach):
19534 (Debugger::detach):
19535 (Debugger::sourceParsed):
19537 * kjs/function.cpp:
19538 (KJS::FunctionImp::call):
19539 (KJS::GlobalFuncImp::call):
19540 * kjs/function_object.cpp:
19541 (FunctionObjectImp::construct):
19543 * kjs/internal.cpp:
19545 (InterpreterImp::evaluate):
19547 (KJS::InterpreterImp::setDebugger):
19548 * kjs/interpreter.cpp:
19549 * kjs/interpreter.h:
19550 (KJS::Interpreter::imp):
19553 2005-07-27 Geoffrey Garen <ggaren@apple.com>
19555 - fixed http://bugs.webkit.org/show_bug.cgi?id=3381
19556 Date.prototype.setDate() incorrect for values >=128
19558 - Test cases added:
19560 * layout-tests/fast/js/date-big-setdate-expected.txt: Added.
19561 * layout-tests/fast/js/date-big-setdate.html: Added.
19565 * kjs/date_object.cpp:
19566 (DateProtoFuncImp::call):
19568 2005-07-27 Geoffrey Garen <ggaren@apple.com>
19570 -rolled in patch by Carsten Guenther <cguenther@gmail.com>
19571 for http://bugs.webkit.org/show_bug.cgi?id=3759
19572 Date object enhancements
19576 * layout-tests/fast/js/date-preserve-milliseconds-expected.txt: Added.
19577 * layout-tests/fast/js/date-preserve-milliseconds.html: Added.
19581 * kjs/date_object.cpp:
19583 (DateProtoFuncImp::call):
19584 (DateObjectImp::construct):
19585 (DateObjectFuncImp::call):
19587 * kjs/date_object.h:
19588 * tests/mozilla/expected.html:
19590 2005-07-26 Justin Garcia <justin.garcia@apple.com>
19592 Added a forward declaration to fix gcc4 build error
19596 2005-07-25 Geoffrey Garen <ggaren@apple.com>
19597 - fixed mistake in my last checkin -- the expected results included
19598 results from a patch that hasn't landed yet.
19600 * tests/mozilla/expected.html:
19602 2005-07-25 Maciej Stachowiak <mjs@apple.com>
19604 - fix mistake in last change that leads to assertion failure in the Development build
19607 (KJS::lookupGetOwnValue):
19609 2005-07-24 Maciej Stachowiak <mjs@apple.com>
19613 - http://bugs.webkit.org/show_bug.cgi?id=4124
19614 (change JavaScript property access to avoid double lookup)
19616 - 10% speedup on JavaScript iBench
19617 - 5% speedup on 24fun BenchJS benchmark
19619 Changed all get methods to getOwnProperty - they are no longer
19620 responsible for prototype lookup, and determine if the property
19621 was found as a side efect.
19623 get() is now a nonvirtual ObjectImp method which calls the virtual
19624 getOwnProperty and walks the prototype chain. A few selected
19625 methods were inlined.
19627 Changed ResolveNode::evaluate plus some other places to use
19628 getProperty which does get() and hasProperty() in one lookup.
19630 Also miscellaneous code cleanup.
19632 * bindings/objc/objc_runtime.h:
19633 * bindings/objc/objc_runtime.mm:
19634 (ObjcFallbackObjectImp::ObjcFallbackObjectImp):
19635 (ObjcFallbackObjectImp::getOwnProperty):
19636 * bindings/runtime_array.cpp:
19637 (RuntimeArrayImp::RuntimeArrayImp):
19638 (RuntimeArrayImp::getOwnProperty):
19639 * bindings/runtime_array.h:
19640 * bindings/runtime_method.cpp:
19641 (RuntimeMethodImp::getOwnProperty):
19642 * bindings/runtime_method.h:
19643 * bindings/runtime_object.cpp:
19644 (RuntimeObjectImp::getOwnProperty):
19645 * bindings/runtime_object.h:
19646 * kjs/array_instance.h:
19647 * kjs/array_object.cpp:
19648 (ArrayInstanceImp::getOwnProperty):
19649 (ArrayPrototypeImp::getOwnProperty):
19650 (ArrayProtoFuncImp::call):
19651 * kjs/array_object.h:
19652 * kjs/date_object.cpp:
19653 (DatePrototypeImp::getOwnProperty):
19654 * kjs/date_object.h:
19655 * kjs/function.cpp:
19656 (KJS::FunctionImp::getOwnProperty):
19657 (KJS::ArgumentsImp::getOwnProperty):
19658 (KJS::ActivationImp::getOwnProperty):
19661 (KJS::lookupGetOwnProperty):
19662 (KJS::lookupGetOwnFunction):
19663 (KJS::lookupGetOwnValue):
19664 * kjs/math_object.cpp:
19665 (MathObjectImp::getOwnProperty):
19666 (MathObjectImp::getValueProperty):
19667 * kjs/math_object.h:
19669 (ResolveNode::evaluate):
19670 * kjs/number_object.cpp:
19671 (NumberObjectImp::getOwnProperty):
19672 * kjs/number_object.h:
19674 (KJS::ObjectImp::get):
19675 (KJS::ObjectImp::getOwnProperty):
19676 (KJS::ObjectImp::getProperty):
19678 (KJS::ObjectImp::getProperty):
19679 (KJS::ObjectImp::getOwnProperty):
19680 * kjs/object_object.cpp:
19681 (ObjectProtoFuncImp::call):
19682 * kjs/regexp_object.cpp:
19683 (RegExpObjectImp::getOwnProperty):
19684 * kjs/regexp_object.h:
19685 * kjs/string_object.cpp:
19686 (StringInstanceImp::getOwnProperty):
19687 (StringPrototypeImp::getOwnProperty):
19688 * kjs/string_object.h:
19690 2005-07-25 Geoffrey Garen <ggaren@apple.com>
19692 - fixed http://bugs.webkit.org/show_bug.cgi?id=3971
19693 JS test suite depends on JS 1.2 behavior
19697 * tests/mozilla/js1_2/Array/tostring_1.js: now tests only for JS 1.5 behavior
19698 * tests/mozilla/js1_2/Array/tostring_2.js: ditto
19699 * tests/mozilla/expected.html:
19701 2005-07-24 Justin Garcia <justin.garcia@apple.com>
19705 Fixes make clean problem introduced in xcode2.1 transition
19709 2005-07-22 Geoffrey Garen <ggaren@apple.com>
19713 * kjs/date_object.cpp: DatePrototypeImp now identifies itself as a
19714 child class of DateInstanceImp -- this enables calls to Date.ValueOf().
19716 fixes: ecma/Date/15.9.5.js (once we enable the date tests).
19718 2005-07-22 Geoffrey Garen <ggaren@apple.com>
19723 * tests/mozilla/jsDriver.pl: now takes the path to testkjs as a command-line argument
19724 * tests/mozilla/run-mozilla-tests: Removed.
19726 2005-07-21 Geoffrey Garen <ggaren@apple.com>
19728 * JavaScriptCore.xcodeproj/.cvsignore: Added.
19730 2005-07-21 Geoffrey Garen <ggaren@apple.com>
19732 * JavaScriptCore.pbproj/project.pbxproj: Removed.
19733 * JavaScriptCore.xcodeproj/ggaren.pbxuser: Added.
19734 * JavaScriptCore.xcodeproj/ggaren.perspective: Added.
19735 * JavaScriptCore.xcodeproj/project.pbxproj: Added.
19738 2005-07-20 Maciej Stachowiak <mjs@apple.com>
19740 Patch from Trey Matteson <trey@usa.net>, reviewed by me.
19742 - fixed http://bugs.webkit.org/show_bug.cgi?id=3956
19743 some of WebKit builds with symbols, some doesn't
19745 * JavaScriptCore.pbproj/project.pbxproj: Generate symbols even for
19748 2005-07-19 Geoffrey Garen <ggaren@apple.com>
19750 -fixed http://bugs.webkit.org/show_bug.cgi?id=3991
19751 JSC doesn't implement Array.prototype.toLocaleString()
19753 -test failure: ecma_3/Array/15.4.4.3-1.js
19757 * kjs/array_object.cpp:
19758 (ArrayProtoFuncImp::call): now searches for toString and
19759 toLocaleString overrides in the array's elements
19761 * tests/mozilla/expected.html: failures are under 100! woohoo!
19763 2005-07-19 Darin Adler <darin@apple.com>
19767 * kjs/lookup.h: (KJS::lookupPut): Remove bogus const; was preventing WebCore from
19768 compiling (not sure why this didn't affect my other build machine).
19770 - one other tiny tweak (so sue me)
19772 * bindings/runtime_root.cpp: Remove unneeded declaration.
19774 2005-07-19 Darin Adler <darin@apple.com>
19776 Reviewed by Geoff Garen.
19778 - eliminated try wrappers for get/put/call since we don't use C++ exceptions any more
19780 * kjs/lookup.h: Changed tryCall in IMPLEMENT_PROTOFUNC here to call. It doesn't make
19781 sense for this macro to use the name tryCall anyway, since that's specific to how
19782 WebCore used this, so this is good anyway. On the other hand, it might be a problem
19783 for KDOM or KSVG, in which case we'll need another macro for them, since JavaScriptCore
19784 should presumably not have the C++ exception support.
19786 2005-07-18 Geoffrey Garen <ggaren@apple.com>
19788 -fixed http://bugs.webkit.org/show_bug.cgi?id=4008
19789 Error objects report incorrect length
19793 * kjs/error_object.cpp: Error objects now include a length property
19794 (ErrorObjectImp::ErrorObjectImp):
19796 * tests/mozilla/expected.html: updated expected results to reflect fix
19797 * tests/mozilla/js1_5/Exceptions/regress-123002.js: test now expects
19798 ecma compliant results
19800 2005-07-15 Geoffrey Garen <ggaren@apple.com>
19802 -rolled in KDE fixes for http://bugs.webkit.org/show_bug.cgi?id=3601
19803 Error instance type info
19807 * kjs/error_object.cpp:
19808 - Created ErrorInstanceImp class for Error() objects.
19809 - Changed parent object for Native Errors to "Function" (matches
19811 (ErrorInstanceImp::ErrorInstanceImp):
19812 (ErrorProtoFuncImp::call):
19813 (ErrorObjectImp::construct):
19814 (NativeErrorImp::construct):
19816 * kjs/error_object.h:
19817 (KJS::ErrorInstanceImp::classInfo):
19818 * kjs/object.h: made comment more informative about ClassInfo
19820 * tests/mozilla/expected.html:
19822 2005-07-14 Geoffrey Garen <ggaren@apple.com>
19824 - fixed: JS test suite expects an out of memory error
19825 that our memory efficiency avoids
19829 * tests/mozilla/js1_5/Array/regress-157652.js:
19830 test now expects normal execution
19832 * tests/mozilla/expected.html:
19834 2005-07-14 Geoffrey Garen <ggaren@apple.com>
19835 - fixed http://bugs.webkit.org/show_bug.cgi?id=4006
19836 testkjs doesn't implement gc()
19839 ecma_3/Function/regress-104584.js
19843 * kjs/interpreter.cpp:
19844 (Interpreter::finalCheck): removed misleading while && comment
19846 * kjs/testkjs.cpp: added "gc" function to global object
19847 (TestFunctionImp::):
19848 (TestFunctionImp::call):
19851 * tests/mozilla/expected.html:
19853 2005-07-14 Geoffrey Garen <ggaren@apple.com>
19855 -rolled in patches for http://bugs.webkit.org/show_bug.cgi?id=3945
19856 [PATCH] Safe merges of comments and other trivialities from KDE's kjs
19858 -patch by Martijn Klingens <klingens@kde.org>
19860 * kjs/array_instance.h:
19861 * kjs/array_object.cpp:
19862 * kjs/array_object.h:
19863 * kjs/bool_object.cpp:
19864 * kjs/bool_object.h:
19865 * kjs/collector.cpp:
19867 * kjs/completion.h:
19869 * kjs/date_object.cpp:
19870 * kjs/date_object.h:
19871 * kjs/debugger.cpp:
19874 * kjs/error_object.cpp:
19875 * kjs/error_object.h:
19876 * kjs/function.cpp:
19878 * kjs/function_object.cpp:
19879 * kjs/function_object.h:
19881 * kjs/identifier.cpp:
19882 * kjs/identifier.h:
19883 * kjs/internal.cpp:
19885 * kjs/interpreter.cpp:
19886 * kjs/interpreter.h:
19887 * kjs/interpreter_map.cpp:
19888 * kjs/interpreter_map.h:
19895 * kjs/math_object.cpp:
19896 * kjs/math_object.h:
19899 * kjs/nodes2string.cpp:
19900 * kjs/number_object.cpp:
19901 * kjs/number_object.h:
19904 * kjs/object_object.cpp:
19905 * kjs/object_object.h:
19906 * kjs/operations.cpp:
19907 * kjs/operations.h:
19908 * kjs/property_map.cpp:
19909 * kjs/property_map.h:
19910 * kjs/reference.cpp:
19912 * kjs/reference_list.cpp:
19913 * kjs/reference_list.h:
19916 * kjs/regexp_object.cpp:
19917 * kjs/regexp_object.h:
19918 * kjs/scope_chain.cpp:
19919 * kjs/scope_chain.h:
19920 * kjs/simple_number.h:
19921 * kjs/string_object.cpp:
19922 * kjs/string_object.h:
19930 2005-07-14 Geoffrey Garen <ggaren@apple.com>
19932 -fixed http://bugs.webkit.org/show_bug.cgi?id=3970
19933 throw statements fail inside eval statements
19937 * kjs/function.cpp:
19938 (KJS::GlobalFuncImp::call):
19939 Big change since I fixed the tabbing. The important part is:
19940 if (c.complType() == Throw)
19941 exec->setException(c.value());
19944 (ThrowNode::execute): removed duplicate KJS_CHECKEXCEPTION
19945 (TryNode::execute):
19946 try now clears the exception state before the finally block executes,
19947 and checks the state after the block executes, so that exceptions in
19948 finally code get caught.
19950 * tests/mozilla/expected.html:
19952 2005-07-14 Geoffrey Garen <ggaren@apple.com>
19954 -landed fix for http://bugs.webkit.org/show_bug.cgi?id=3412
19955 Object.prototype is missing toLocaleString
19957 - patch by Mark Rowe (bdash) <opendarwin.org@bdash.net.nz>
19959 -layout test info in webcore changelog
19963 * kjs/object_object.cpp:
19964 (ObjectPrototypeImp::ObjectPrototypeImp):
19965 (ObjectProtoFuncImp::call):
19966 * kjs/object_object.h:
19967 (KJS::ObjectProtoFuncImp::):
19969 2005-07-12 Geoffrey Garen <ggaren@apple.com>
19973 * kjs/function.cpp:
19974 (KJS::IndexToNameMap::operator[]): fixed infinite recursion
19975 bug in last checkin
19977 2005-07-12 Geoffrey Garen <ggaren@apple.com>
19979 -fixed http://bugs.webkit.org/show_bug.cgi?id=3881
19980 arguments object should share values with function parameters
19984 ArgumentsImp now uses a simple hash lookup to share values
19985 with the activation object.
19987 * kjs/function.cpp:
19988 (KJS::FunctionImp::getParameterName):
19989 (KJS::IndexToNameMap::IndexToNameMap):
19990 (KJS::IndexToNameMap::~IndexToNameMap):
19991 (KJS::IndexToNameMap::isMapped):
19992 (KJS::IndexToNameMap::unMap):
19993 (KJS::IndexToNameMap::operator[]):
19994 (KJS::ArgumentsImp::ArgumentsImp):
19995 (KJS::ArgumentsImp::mark):
19996 (KJS::ArgumentsImp::get):
19997 (KJS::ArgumentsImp::put):
19998 (KJS::ArgumentsImp::deleteProperty):
19999 (KJS::ArgumentsImp::hasOwnProperty):
20000 (KJS::ActivationImp::createArgumentsObject):
20002 * tests/mozilla/expected.html: updated results
20004 2005-07-09 Maciej Stachowiak <mjs@apple.com>
20006 - backing out my earlier collector change, it causes a performance regression in TOT
20008 * kjs/collector.cpp:
20009 (KJS::Collector::allocate):
20011 2005-07-08 Eric Seidel <eseidel@apple.com>
20013 Reviewed by mjs/hyatt (only in concept).
20015 * JavaScriptCore.pbproj/project.pbxproj: Added JavaScriptCore+SVG
20016 Turns on RTTI support for JavaScriptCore.framework when
20017 building the JavaScriptCore+SVG target. This is needed as
20018 kdom (part of WebCore+SVG) requires RTTI for the time being.
20020 2005-07-08 Maciej Stachowiak <mjs@apple.com>
20024 - When there are many live objects, GC less often, to try to make
20025 GC cost proportional to garbage, not proportional to total memory used.
20027 * kjs/collector.cpp:
20028 (KJS::Collector::allocate):
20030 2005-07-08 Vicki Murley <vicki@apple.com>
20032 Fix from Carsten Guenther, reviewed by Maciej
20034 - fixed http://bugs.webkit.org/show_bug.cgi?id=3644 (Error string representation)
20036 Switch from "-" to ":" in error strings.
20038 * kjs/error_object.cpp:
20039 (ErrorProtoFuncImp::call):
20040 * tests/mozilla/expected.html:
20042 2005-07-08 Geoffrey Garen <ggaren@apple.com>
20044 -rolled in patch for http://bugs.webkit.org/show_bug.cgi?id=3878
20045 arguments object should be an object not an array
20049 * kjs/function.cpp:
20050 (KJS::ArgumentsImp::ArgumentsImp): now manually handles initialization
20051 we used to get for free by inheriting from ArrayInstanceImp
20052 * kjs/function.h: ArgumentsImp now inherits from ObjectImp
20053 * tests/mozilla/expected.html: updated expected test results
20055 2005-07-07 Eric Seidel <eseidel@apple.com>
20059 * kjs/grammar.y: removed #define YYMAXDEPTH 0 for bison 2.0
20060 http://bugs.webkit.org/show_bug.cgi?id=3882
20062 2005-07-03 Maciej Stachowiak <mjs@apple.com>
20064 Original patch from Mark Rowe <opendarwin.org@bdash.net.nz>, reviewed by me.
20065 Fixes to patch by me, reviewed by John Sullivan.
20067 - fixed http://bugs.webkit.org/show_bug.cgi?id=3293
20070 * tests/mozilla/expected.html: Two tests newly pass.
20072 * bindings/objc/objc_runtime.h:
20073 * bindings/objc/objc_runtime.mm:
20074 (ObjcFallbackObjectImp::hasOwnProperty):
20075 * bindings/runtime_array.cpp:
20076 (RuntimeArrayImp::hasOwnProperty):
20077 * bindings/runtime_array.h:
20078 * bindings/runtime_object.cpp:
20079 (RuntimeObjectImp::hasOwnProperty):
20080 * bindings/runtime_object.h:
20081 * kjs/array_instance.h:
20082 * kjs/array_object.cpp:
20083 (ArrayInstanceImp::hasOwnProperty):
20084 * kjs/function.cpp:
20085 (KJS::FunctionImp::hasOwnProperty):
20086 (KJS::ActivationImp::hasOwnProperty):
20090 (KJS::ObjectImp::hasProperty):
20091 (KJS::ObjectImp::hasOwnProperty):
20093 (KJS::Object::hasOwnProperty):
20094 * kjs/object_object.cpp:
20095 (ObjectPrototypeImp::ObjectPrototypeImp):
20096 (ObjectProtoFuncImp::call):
20097 * kjs/object_object.h:
20098 (KJS::ObjectProtoFuncImp::):
20099 * kjs/string_object.cpp:
20100 (StringInstanceImp::hasOwnProperty):
20101 * kjs/string_object.h:
20103 2005-07-01 Geoffrey Garen <ggaren@apple.com>
20105 -landed patch by Eric Seidel <macdome@opendarwin.org>
20107 -for http://bugs.webkit.org/show_bug.cgi?id=3657
20108 GroundWork: Moving some functions from khtml->jsc following kjs TOT
20110 - no layout test necessary yet - only groundwork
20115 (KJS::cacheGlobalObject):
20117 2005-07-01 Geoffrey Garen <ggaren@apple.com>
20119 -landed patch by Carsten Guenther <cguenther@gmail.com>
20121 -fixes http://bugs.webkit.org/show_bug.cgi?id=3477
20122 some US-centric date formats not parsed by JavaScript (clock at news8austin.com)
20125 mozilla/ecma_3/Date/15.9.5.5.js
20126 layout-tests/fast/js/date-parse-test.html
20130 * kjs/date_object.cpp:
20131 (formatLocaleDate):
20139 (DateProtoFuncImp::call):
20140 (DateObjectImp::construct):
20142 (ymdhms_to_seconds):
20145 (KJS::KRFCDate_parseDate):
20146 * kjs/date_object.h:
20147 * tests/mozilla/expected.html: updated expected results to reflect fix
20149 2005-07-01 Geoffrey Garen <ggaren@apple.com>
20151 -fixed <rdar://problem/4168186> JavaScript fails to throw exceptions
20152 for invalid return statements
20155 ecma/Statements/12.9-1-n.js
20156 ecma_2/Exceptions/lexical-052.js
20157 ecma_2/Exceptions/statement-009.js
20159 Reviewed by sullivan.
20162 (ReturnNode::execute): now throws exception if return is not inside
20165 * tests/mozilla/expected.html: updated to reflect fix
20167 2005-07-01 Geoffrey Garen <ggaren@apple.com>
20169 Reviewed by sullivan.
20171 * tests/mozilla/expected.html: Updated test results for last fix.
20173 2005-07-01 Geoffrey Garen <ggaren@apple.com>
20175 -fixed <rdar://problem/4168161> JavaScript fails to throw an exception
20176 for invalid function calls
20178 Reviewed by sullivan.
20180 Relevant mozilla test: ecma_3/Exceptions/regress-95101.js
20183 (FunctionCallNode::evaluate): evaluate now checks for an exception
20184 after resolving a function name (in case the function is undefined)
20186 2005-07-01 Eric Seidel <eseidel@apple.com>
20190 * kjs/interpreter.h:
20191 (KJS::Context::curStmtFirstLine): stub for compatibility with KDE
20193 (KJS::Value::isValid): compatibility with KDE
20194 http://bugs.webkit.org/show_bug.cgi?id=3687
20196 2005-07-01 Eric Seidel <eseidel@apple.com>
20200 * kjs/create_hash_table: rolled in changes from KDE, including
20201 -n <namespace> support from KDOM and support for newer comments
20202 http://bugs.webkit.org/show_bug.cgi?id=3771
20204 2005-06-30 Geoffrey Garen <ggaren@apple.com>
20206 -rolled in KDE fix to <rdar://problem/4167660> JavaScript fails to
20207 throw exceptions for invalid break/continue statements
20209 No layout tests because it's already covered by the Mozilla suite
20213 * kjs/internal.h: LabelStack now tracks where you are relative to
20214 switch and iteration (loop) statements
20216 (KJS::LabelStack::LabelStack):
20217 (KJS::LabelStack::pushIteration):
20218 (KJS::LabelStack::popIteration):
20219 (KJS::LabelStack::inIteration):
20220 (KJS::LabelStack::pushSwitch):
20221 (KJS::LabelStack::popSwitch):
20222 (KJS::LabelStack::inSwitch):
20225 These files were updated to use the new LabelStack:
20226 (DoWhileNode::execute):
20227 (WhileNode::execute):
20228 (ForNode::execute):
20229 (ForInNode::execute):
20230 (SwitchNode::execute):
20232 These files were updated to throw exceptions for invalid
20233 break/continue statements:
20234 (BreakNode::execute):
20235 (ContinueNode::execute):
20237 * tests/mozilla/expected.html: Updated expected results to reflect fix
20239 2005-06-30 Kevin Decker <kdecker@apple.com>
20243 fixed: <rdar://problem/4166838> failed assertion in`Interpreter::lockCount() > 0
20245 no layout test added; this is in the bindings code.
20247 * bindings/objc/WebScriptObject.mm:
20248 (+[WebScriptObject _convertValueToObjcValue:KJS::originExecutionContext:Bindings::executionContext:Bindings::]): make sure to lock and unlock the interpreter around allocations.
20250 2005-06-29 Geoffrey Garen <ggaren@apple.com>
20252 Patch by Francisco Tolmasky <tolmasky@gmail.com>
20254 - fixes http://bugs.webkit.org/show_bug.cgi?id=3667
20255 Core JavaScript 1.5 Reference:Objects:Array:forEach
20257 See WebCore Changelog for layout tests added.
20261 * kjs/array_object.cpp:
20262 (ArrayProtoFuncImp::call):
20263 * kjs/array_object.h:
20264 (KJS::ArrayProtoFuncImp::):
20266 2005-06-29 Geoffrey Garen <ggaren@apple.com>
20268 Patch contributed by Oliver Hunt <ojh16@student.canterbury.ac.nz>
20270 -fixed http://bugs.webkit.org/show_bug.cgi?id=3743
20271 Incorrect error message given for certain calls
20273 See WebCore Changelog for layout test added.
20278 (KJS::ObjectImp::defaultValue):
20280 2005-06-29 Geoffrey Garen <ggaren@apple.com>
20282 Rolling out date patch from 6-28-05 because it breaks
20283 fast/js/date-parse-test
20285 * kjs/date_object.cpp:
20286 (formatLocaleDate):
20287 (DateProtoFuncImp::call):
20288 (DateObjectImp::construct):
20290 (ymdhms_to_seconds):
20292 (KJS::KRFCDate_parseDate):
20293 * kjs/date_object.h:
20294 * tests/mozilla/expected.html:
20296 2005-06-29 Geoffrey Garen <ggaren@apple.com>
20300 -fixes http://bugs.webkit.org/show_bug.cgi?id=3750
20301 build fails with KJS_VERBOSE set
20303 * kjs/nodes.cpp: changed debug print statement to use UString
20304 (VarDeclNode::evaluate):
20305 * kjs/reference.cpp: ditto
20306 (KJS::Reference::putValue):
20308 2005-06-28 Geoffrey Garen <ggaren@apple.com>
20310 Patch contributed by Carsten Guenther <cguenther@gmail.com>.
20312 -fixes http://bugs.webkit.org/show_bug.cgi?id=3477
20313 some US-centric date formats not parsed by JavaScript (clock at news8austin.com)
20317 * kjs/date_object.cpp:
20318 (formatLocaleDate):
20326 (DateProtoFuncImp::call):
20327 (DateObjectImp::construct):
20329 (ymdhms_to_seconds):
20332 (KJS::KRFCDate_parseDate):
20333 * kjs/date_object.h:
20334 * tests/mozilla/expected.html: updated expected test results to reflect fix
20336 2005-06-26 Maciej Stachowiak <mjs@apple.com>
20340 - replace hash functions with better ones
20342 * JavaScriptCore.pbproj/project.pbxproj: Add new file to build.
20343 * kjs/interpreter_map.cpp:
20344 (KJS::InterpreterMap::computeHash): Use shared pointer hash.
20345 * kjs/pointer_hash.h: Added.
20346 (KJS::pointerHash): Pointer hash based on 32-bit mix and 64-bit mix hashes.
20347 * kjs/protected_values.cpp:
20348 (KJS::ProtectedValues::computeHash): Use shared pointer hash.
20350 (KJS::UString::Rep::computeHash): Use SuperFastHash algorithm.
20352 2005-06-22 Darin Adler <darin@apple.com>
20354 Change by Anders Carlsson.
20357 - fixed <http://bugs.webkit.org/show_bug.cgi?id=3294>
20358 String.prototype.replace() fails with function as second param
20360 * kjs/string_object.cpp: (replace): Added code to handle functions.
20362 * tests/mozilla/expected.html: Updated since ecma_3/RegExp/regress-209067.js is fixed now.
20364 * tests/mozilla/run-mozilla-tests: Fix a minor coding style issue that leads to a warning each
20365 time we run the tests.
20367 2005-06-21 Adele Peterson <adele@apple.com>
20369 rolling out fix for http://bugs.webkit.org/show_bug.cgi?id=3293, since it caused layout test failures.
20370 fast/forms/element-by-name
20371 fast/loader/loadInProgress
20374 * bindings/objc/objc_runtime.h:
20375 * bindings/objc/objc_runtime.mm:
20376 (ObjcFallbackObjectImp::hasProperty):
20377 * bindings/runtime_array.cpp:
20378 (RuntimeArrayImp::hasProperty):
20379 * bindings/runtime_array.h:
20380 * bindings/runtime_object.cpp:
20381 (RuntimeObjectImp::hasProperty):
20382 * bindings/runtime_object.h:
20383 * kjs/array_instance.h:
20384 * kjs/array_object.cpp:
20385 (ArrayInstanceImp::hasProperty):
20386 * kjs/function.cpp:
20387 (KJS::FunctionImp::hasProperty):
20388 (KJS::ActivationImp::hasProperty):
20391 (KJS::ObjectImp::hasProperty):
20393 * kjs/object_object.cpp:
20394 (ObjectPrototypeImp::ObjectPrototypeImp):
20395 (ObjectProtoFuncImp::call):
20396 * kjs/object_object.h:
20397 (KJS::ObjectProtoFuncImp::):
20398 * kjs/string_object.cpp:
20399 (StringInstanceImp::hasProperty):
20400 * kjs/string_object.h:
20401 * tests/mozilla/expected.html:
20403 2005-06-21 Darin Adler <darin@apple.com>
20405 * JavaScriptCore.pbproj/project.pbxproj: Switched to a build rule rather than a build phase for
20406 .y files -- this gets rid of the problem where modifying the .y file would not cause sufficient
20409 * kjs/grammar_wrapper.cpp: Removed.
20411 2005-06-21 Adele Peterson <adele@apple.com>
20413 Patch from Anders Carlsson <andersca@mac.com>, reviewed by Darin.
20415 Fixed: <http://bugs.webkit.org/show_bug.cgi?id=3450>
20416 <rdar://problem/3881901> String.replace() method not working when regex pattern contains {n, m}
20418 * pcre/pcre.c: (pcre_compile): Remember the last char length so it can be subtracted correctly if needed.
20420 2005-06-21 Geoffrey Garen <ggaren@apple.com>
20422 - fixed <rdar://problem/4155532> 'delete' succeeds on functions
20423 - fixed <rdar://problem/4155049> javascript function named as "opener" doesn't get called because of window.opener property
20428 (FuncDeclNode::processFuncDecl): Functions now have DontDelete and Internal attributes set when appropriate.
20431 * tests/mozilla/expected.html: Updated for one new success.
20432 - see also test case added in WebCore.
20434 2005-06-20 Maciej Stachowiak <mjs@apple.com>
20436 Reviewed by Darin(first pass) and Hyatt.
20438 - fixed http://bugs.webkit.org/show_bug.cgi?id=3576
20439 (roll in support for "const" keyword from KDE tree)
20440 - make processVarDecls handle deletability of variables declared
20441 in an eval block the same as evaluate would
20442 - make eval() call processVarDecls - needed to match mozilla and
20443 to make the second change testable
20445 I started with the KDE implementation of const but I ended up changing it a bit
20446 to avoid the use of a global variable. Now instead of the global variable it distinguishes
20447 const and var at the grammar level so the appropriate node can know the right kind of
20451 * tests/mozilla/expected.html: Updated for one new test that is
20452 failing - we used to bail on it entirely because it checks for
20453 const support before starting.
20454 - see also test cases added in WebCore
20456 * kjs/grammar.y: Add rules for const declarations.
20457 * kjs/keywords.table: Add const keyword.
20459 (VarDeclNode::VarDeclNode): Add parameter.
20460 (VarDeclNode::evaluate): Add const support.
20461 (VarDeclNode::processVarDecls): Add const support.
20462 (VarStatementNode::execute): Irrelevant change.
20463 (ForInNode::ForInNode): Tell our variable node that it's a variable.
20465 (KJS::VarDeclNode::): Add declaration of type enum, extra constructor parameter.
20466 (KJS::VarStatementNode::VarStatementNode): Irrelevant change.
20467 * kjs/function.cpp:
20468 (KJS::GlobalFuncImp::call): Process var decls before evaluating.
20470 2005-06-20 Maciej Stachowiak <mjs@apple.com>
20472 Patch from Mark Rowe <opendarwin.org@bdash.net.nz>, reviewed by me.
20474 - fixed http://bugs.webkit.org/show_bug.cgi?id=3293
20477 * tests/mozilla/expected.html: Updated for two fixed tests.
20478 - also added a layout test
20480 * bindings/objc/objc_runtime.h:
20481 * bindings/objc/objc_runtime.mm:
20482 (ObjcFallbackObjectImp::hasOwnProperty):
20483 * bindings/runtime_array.cpp:
20484 (RuntimeArrayImp::hasOwnProperty):
20485 * bindings/runtime_array.h:
20486 * bindings/runtime_object.cpp:
20487 (RuntimeObjectImp::hasOwnProperty):
20488 * bindings/runtime_object.h:
20489 * kjs/array_instance.h:
20490 * kjs/array_object.cpp:
20491 (ArrayInstanceImp::hasOwnProperty):
20492 * kjs/function.cpp:
20493 (KJS::FunctionImp::hasOwnProperty):
20494 (KJS::ActivationImp::hasOwnProperty):
20497 (KJS::ObjectImp::hasProperty):
20498 (KJS::ObjectImp::hasOwnProperty):
20500 (KJS::Object::hasOwnProperty):
20501 * kjs/object_object.cpp:
20502 (ObjectPrototypeImp::ObjectPrototypeImp):
20503 (ObjectProtoFuncImp::call):
20504 * kjs/object_object.h:
20505 (KJS::ObjectProtoFuncImp::):
20506 * kjs/string_object.cpp:
20507 (StringInstanceImp::hasOwnProperty):
20508 * kjs/string_object.h:
20510 2005-06-18 Darin Adler <darin@apple.com>
20512 Reviewed by Eric Seidel.
20514 * pcre/get.c: (pcre_get_substring): Fix some computations so this works for UTF-16.
20515 This is unused in the current JavaScriptCore, but still good to fix.
20517 2005-06-18 Darin Adler <darin@apple.com>
20519 Change by Finlay Dobbie.
20522 - fixed <http://bugs.webkit.org/show_bug.cgi?id=3331>
20523 10.3.9 Build Failure: NSString may not respond to `+stringWithCString:encoding:'
20525 * bindings/objc/WebScriptObject.mm: (-[WebScriptObject stringRepresentation]):
20526 Undo change we did a while back to work around the gcc 3.3 compiler error.
20527 It no longer seems to happen, and the workaround code was 10.4-specific.
20529 2005-06-16 Geoffrey Garen <ggaren@apple.com>
20531 Fixed: <rdar://problem/4151759> 'delete' fails on variables declared inside 'eval' statements.
20536 (KJS::ContextImp::codeType): Added code type accessor for execution context objects.
20537 * kjs/internal.cpp:
20538 (ContextImp::ContextImp): Reflects change to ContextImp::codeType.
20540 (VarDeclNode::evaluate): Added separate code path for variable declarations inside 'eval' statements.
20541 * tests/mozilla/expected.html: Updated expected test results to reflect fix.
20543 2005-06-14 Geoffrey Garen <ggaren@apple.com>
20545 Updated expected.html to reflect fix to <rdar://problem/4147745>.
20549 * tests/mozilla/expected.html:
20551 2005-06-14 Geoffrey Garen <ggaren@apple.com>
20553 Fixed: <rdar://problem/4147745> JavaScript discards locally defined "arguments" property
20555 No layout tests added because this change fixes existing tests:
20556 ecma/ExecutionContexts/10.1.6.js
20557 ecma_3/Function/regress-94506.js
20558 js1_4/Functions/function-001.js
20562 * kjs/function.cpp:
20563 (KJS::ActivationImp::get): get now checks for an "arguments" property defined in the local variable object
20564 before trying to return the built-in arguments array.
20566 * kjs/function.h: ActivationImp::put no longer overrides ObjectImp::put
20568 2005-06-10 Darin Adler <darin@apple.com>
20570 Change by Mark Rowe <opendarwin.org@bdash.net.nz>.
20573 - further improvements to exception file/line number fix
20575 * kjs/nodes.h: Added setExceptionDetailsIfNeeded function.
20576 * kjs/nodes.cpp: Updated macros to call the new setExceptionDetailsIfNeeded function.
20577 (Node::setExceptionDetailsIfNeeded): Added.
20579 2005-06-09 Darin Adler <darin@apple.com>
20581 Change by Mark Rowe <opendarwin.org@bdash.net.nz>
20584 * kjs/nodes.cpp: Get rid of unneeded this->.
20586 2005-06-08 Maciej Stachowiak <mjs@apple.com>
20588 Change by Mark Rowe <opendarwin.org@bdash.net.nz>
20591 - fixed http://bugs.webkit.org/show_bug.cgi?id=3327
20592 (Exception When Setting Style to Invalid Value Lacks Line/File Information)
20594 * kjs/nodes.cpp: Include source file and line number when making exception in
20595 KJS_CHECKEXCEPTIONVALUE.
20597 2005-06-07 Darin Adler <darin@apple.com>
20599 Change by Toby Peterson <toby@opendarwin.org>.
20602 * JavaScriptCore.pbproj/project.pbxproj: Allow bison 2.0, which generates the file
20603 with a different name.
20605 2005-06-07 Darin Adler <darin@apple.com>
20607 Change by Toby Peterson <toby@opendarwin.org>.
20610 * kjs/grammar.y: Remove bogus extra line from grammar.y. Toby got this change from KDE KJS.
20612 2005-06-06 Darin Adler <darin@apple.com>
20614 * tests/mozilla/run-mozilla-tests: Wrote a perl version of this so we don't require
20615 the "jst" tool to run the tests.
20617 2005-06-04 Darin Adler <darin@apple.com>
20619 Reviewed by Maciej.
20621 - add libicu headers
20623 * JavaScriptCore.pbproj/project.pbxproj: Added icu directory to header search path.
20625 * icu/README: Added.
20626 * icu/unicode/platform.h: Added.
20627 * icu/unicode/uchar.h: Added.
20628 * icu/unicode/uconfig.h: Added.
20629 * icu/unicode/umachine.h: Added.
20630 * icu/unicode/urename.h: Added.
20631 * icu/unicode/utf.h: Added.
20632 * icu/unicode/utf16.h: Added.
20633 * icu/unicode/utf8.h: Added.
20634 * icu/unicode/utf_old.h: Added.
20635 * icu/unicode/utypes.h: Added.
20636 * icu/unicode/uversion.h: Added.
20638 2005-05-19 Darin Adler <darin@apple.com>
20640 Reviewed by Maciej.
20642 - turned off exceptions and RTTI; seems to cut JavaScriptCore code size by about 22%
20644 * JavaScriptCore.pbproj/project.pbxproj: Turn off exceptions and RTTI for both
20645 the framework and testkjs tool.
20647 2005-05-18 Darin Adler <darin@apple.com>
20649 Reviewed by Maciej.
20651 - got rid of code that depended on RTTI
20653 * kjs/collector.cpp:
20654 (KJS::className): Added. Gets class name in a KJS way, rather than a C++ RTTI way.
20655 (KJS::Collector::rootObjectClasses): Use className instead of typeid names.
20657 2005-05-18 Darin Adler <darin@apple.com>
20659 Reviewed by Maciej.
20661 - fix a failure seen in the Mozilla JavaScript tests where a live object was garbage-collected
20662 when the only reference to it was in an argList on the stack
20664 * kjs/list.h: Moved the operator= function into the .cpp file since it's too big to be
20665 a good choice to inline.
20666 * kjs/list.cpp: (KJS::List::operator=): Moved this formerly-inline function into a separate
20667 file and added missing code to update valueRefCount. It's the latter that fixes the bug.
20669 2005-05-16 Darin Adler <darin@apple.com>
20673 - fixed issues preventing us from compiling with newer versions of gcc 4.0
20676 (KJS::operator==): Remove redundant and illegal KJS:: prefix on this function's definition.
20677 (KJS::operator<): Ditto.
20678 (KJS::compare): Ditto.
20680 2005-05-09 Darin Adler <darin@apple.com>
20684 - turn on conservative GC unconditionally and start on SPI changes to
20685 eliminate the now-unneeded smart pointers since we don't ref count any more
20687 * kjs/value.h: Removed macros to turn conservative GC on and off.
20688 Removed ref and deref functions.
20689 (KJS::ValueImp::ValueImp): Removed non-conservative-GC code path.
20690 (KJS::ValueImp::isUndefined): Added. New SPI to make it easier to deal with ValueImp directly.
20691 (KJS::ValueImp::isNull): Ditto.
20692 (KJS::ValueImp::isBoolean): Ditto.
20693 (KJS::ValueImp::isNumber): Ditto.
20694 (KJS::ValueImp::isString): Ditto.
20695 (KJS::ValueImp::isObject): Ditto.
20696 (KJS::Value::Value): Removed non-conservative-GC code path and made constructor no
20697 longer explicit so we can quietly create Value wrappers from ValueImp *; inexpensive with
20698 conservative GC and eases the transition.
20699 (KJS::Value::operator ValueImp *): Added. Quietly creates ValueImp * from Value.
20700 (KJS::ValueImp::marked): Removed non-conservative-GC code path.
20703 (KJS::ValueImp::mark): Removed non-conservative-GC code path.
20704 (KJS::ValueImp::isUndefinedOrNull): Added. New SPI to make it easier to deal with ValueImp directly.
20705 (KJS::ValueImp::isBoolean): Ditto.
20706 (KJS::ValueImp::isNumber): Ditto.
20707 (KJS::ValueImp::isString): Ditto.
20708 (KJS::ValueImp::asString): Ditto.
20709 (KJS::ValueImp::isObject): Ditto.
20710 (KJS::undefined): Ditto.
20711 (KJS::null): Ditto.
20712 (KJS::boolean): Ditto.
20713 (KJS::string): Ditto.
20714 (KJS::zero): Ditto.
20717 (KJS::number): Ditto.
20719 * kjs/object.h: Made constructor no longer explicit so we can quietly create Object
20720 wrappers from ObjectImp *; inexpensive with conservative GC and eases the transition.
20721 (KJS::Object::operator ObjectImp *): Added. Quietly creates ObjectImp * from Object.
20722 (KJS::ValueImp::isObject): Added. Implementation of new object-related ValueImp function.
20723 (KJS::ValueImp::asObject): Ditto.
20726 (KJS::ObjectImp::setInternalValue): Remove non-conservative-GC code path.
20727 (KJS::ObjectImp::putDirect): Ditto.
20728 (KJS::error): Added. Function in the new SPI style to create an error object.
20730 * kjs/internal.h: Added the new number-constructing functions as friends of NumberImp.
20731 There may be a more elegant way to do this later; what's important now is the new SPI.
20733 * kjs/collector.h: Remove non-conservative-GC code path and also take out some
20734 unneeded APPLE_CHANGES.
20736 * bindings/runtime_root.cpp:
20737 (KJS::Bindings::addNativeReference): Remove non-conservative-GC code path.
20738 (KJS::Bindings::removeNativeReference): Ditto.
20739 (RootObject::removeAllNativeReferences): Ditto.
20740 * bindings/runtime_root.h:
20741 (KJS::Bindings::RootObject::~RootObject): Ditto.
20742 (KJS::Bindings::RootObject::setRootObjectImp): Ditto.
20743 * kjs/collector.cpp:
20744 (KJS::Collector::allocate): Ditto.
20745 (KJS::Collector::collect): Ditto.
20746 (KJS::Collector::numGCNotAllowedObjects): Ditto.
20747 (KJS::Collector::numReferencedObjects): Ditto.
20748 (KJS::Collector::rootObjectClasses): Ditto.
20749 * kjs/internal.cpp:
20750 (NumberImp::create): Ditto.
20751 (InterpreterImp::globalInit): Ditto.
20752 (InterpreterImp::globalClear): Ditto.
20754 (KJS::List::markProtectedLists): Ditto.
20755 (KJS::List::clear): Ditto.
20756 (KJS::List::append): Ditto.
20758 (KJS::List::List): Ditto.
20759 (KJS::List::deref): Ditto.
20760 (KJS::List::operator=): Ditto.
20762 (KJS::gcProtect): Ditto.
20763 (KJS::gcUnprotect): Ditto.
20765 2005-05-09 Chris Blumenberg <cblu@apple.com>
20767 Workaround gcc 3.3 internal compiler errors.
20771 * bindings/objc/WebScriptObject.mm:
20772 (-[WebScriptObject stringRepresentation]): call [NSString stringWithCString:encoding] rather than using @""
20774 2005-05-09 Darin Adler <darin@apple.com>
20776 * Makefile.am: Don't set up PBXIntermediatesDirectory explicitly;
20777 Not needed to make builds work, spews undesirable error messages too.
20779 2005-05-06 Darin Adler <darin@apple.com>
20781 Reviewed by Maciej.
20783 - make building multiple trees with make work better
20785 * Makefile.am: Set up Xcode build directory before invoking xcodebuild.
20787 2005-05-04 Maciej Stachowiak <mjs@apple.com>
20791 <rdar://problem/4086570> Crash in JavaScriptCore with RSS Visualizer
20793 * kjs/internal.cpp:
20794 (InterpreterImp::mark): mark staticNaN, it is usually protected by the Number
20795 prototype but there is a small window where it can get collected.
20797 2005-05-04 Darin Adler <darin@apple.com>
20799 Reviewed by Dave Hyatt.
20801 - another gcc-4.0-related fix
20803 * bindings/runtime_root.h: Take off extra namespace prefixes that apparently cause problems
20804 compiling with gcc 4.0, although I have not observed the problems.
20806 2005-05-04 Darin Adler <darin@apple.com>
20808 Reviewed by Dave Hyatt.
20810 - fixed build rules to match other projects
20812 * JavaScriptCore.pbproj/project.pbxproj: Set deployment target to 10.3 in the build styles.
20813 When built without a build style (by Apple B&I) we want to get the target from the
20814 environment. But when built with a build style (by Safari engineers and others), we want
20817 * Makefile.am: Took out extra parameters that make command-line building different from
20818 Xcode building. Now that this is fixed, you should not get a full rebuild if you switch
20819 from command line to Xcode or back.
20821 2005-05-04 Maciej Stachowiak <mjs@apple.com>
20823 - revert presumably accidental change to mozilla JS test expected results, this
20824 was making the tests fail.
20826 * tests/mozilla/expected.html:
20828 2005-05-03 Richard Williamson <rjw@apple.com>
20830 Fixed <rdar://problem/4102644> Crash in LiveConnect below KJS::Bindings::JavaInstance::stringValue() const
20832 Correctly handle accessing nil objects from a Java object array.
20836 * bindings/jni/jni_runtime.cpp:
20837 (JavaArray::valueAt):
20839 2005-05-01 Darin Adler <darin@apple.com>
20841 - move to Xcode native targets and stop checking in generated files
20843 * JavaScriptCore.pbproj/project.pbxproj: Updated to use native targets and generate all the generated
20844 files, so we don't have to check them in any more.
20845 * Info.plist: Added. Native targets use a separate file for this.
20847 * Makefile.am: Removed pcre and kjs SUBDIRS. Also removed code that deleted the embedded copy of this
20848 framework, since we haven't been embedding it for some time.
20850 * kjs/grammar_wrapper.cpp: Added. Shell used to compile grammar.cpp since we can't add a generated file
20851 easily to the list of files to be compiled.
20853 * kjs/.cvsignore: Removed.
20854 * kjs/Makefile.am: Removed.
20855 * kjs/array_object.lut.h: Removed.
20856 * kjs/date_object.lut.h: Removed.
20857 * kjs/grammar.cpp: Removed.
20858 * kjs/grammar.cpp.h: Removed.
20859 * kjs/grammar.h: Removed.
20860 * kjs/lexer.lut.h: Removed.
20861 * kjs/math_object.lut.h: Removed.
20862 * kjs/number_object.lut.h: Removed.
20863 * kjs/string_object.lut.h: Removed.
20864 * pcre/.cvsignore: Removed.
20865 * pcre/Makefile.am: Removed.
20866 * pcre/chartables.c: Removed.
20868 2005-04-28 Darin Adler <darin@apple.com>
20870 Reviewed by Dave Harrison.
20872 - fixed problems preventing us from compiling with gcc 4.0
20874 * JavaScriptCore.pbproj/project.pbxproj: Removed -Wmissing-prototypes from
20875 WARNING_CPLUSPLUSFLAGS since it's now a C-only warning.
20877 * bindings/jni/jni_jsobject.cpp:
20878 (JSObject::getSlot): Changed some %d to %ld where the parameters where long ints.
20879 (JSObject::setSlot): Ditto.
20880 * bindings/jni/jni_utility.cpp:
20881 (KJS::Bindings::getJavaVM): Ditto.
20882 (KJS::Bindings::getJNIEnv): Ditto.
20883 * bindings/objc/objc_utility.mm: Fixed include of <JavascriptCore/internal.h> that needed the
20884 letter "S" capitalized.
20885 * kjs/bool_object.cpp: (BooleanProtoFuncImp::call): Rearranged how this function returns to
20886 avoid incorrect gcc 4.0 warning.
20887 * kjs/collector.cpp: (KJS::Collector::markStackObjectsConservatively): Changed code to check
20888 the alignment of the passed-in pointers to only require pointer-level alignment, not 8-byte alignment.
20889 Prevents a crash on garbage collect when compiled with gcc 4.0.
20891 (WhileNode::execute): Added a redundant return after an infinite loop to work around incorrect gcc 4.0 warning.
20892 (ForNode::execute): Ditto.
20893 (SwitchNode::execute):Rearranged how this function returns to avoid incorrect gcc 4.0 warning.
20894 (LabelNode::execute): Ditto.
20895 * kjs/string_object.cpp: (replace): Ditto.
20897 2005-04-26 Richard Williamson <rjw@apple.com>
20899 Fixed <rdar://problem/4098713> Scripting API is incompatible with Mozilla
20901 We were incompatible with Mozilla's implementation of the scripting APIs in
20904 Their NPN_SetException has the following signature:
20906 void NPN_SetException(NPObject *npobj, const NPUTF8 *message);
20910 void NPN_SetException (NPObject * npobj, const NPString *message);
20912 Also, they expect the string returned from NPN_UTF8FromIdentifier() to be freed by caller.
20915 I changed both behaviors to match Mozilla.
20919 * bindings/NP_jsobject.cpp:
20920 (_NPN_SetException):
20921 * bindings/npruntime.cpp:
20922 (_NPN_UTF8FromIdentifier):
20923 (_NPN_IntFromIdentifier):
20924 (_NPN_SetExceptionWithUTF8):
20925 * bindings/npruntime.h:
20926 * bindings/npruntime_impl.h:
20928 2005-04-26 Maciej Stachowiak <mjs@apple.com>
20932 <rdar://problem/4092136> reproducible crash in KJS::kjs_fast_realloc loading maps.google.com
20934 * kjs/string_object.cpp:
20935 (StringObjectFuncImp::call): Allocate adopted ustring buffer properly.
20937 2005-04-22 Darin Adler <darin@apple.com>
20939 Reviewed by Maciej.
20941 * kjs/ustring.cpp: (KJS::UString::UTF8String): Fix off-by-one error in surrogate pair logic.
20943 2005-04-22 Darin Adler <darin@apple.com>
20947 - fixed <rdar://problem/4090046> JavaScript throw statement causes parse error when no semicolon is present
20949 * kjs/grammar.y: Added an additional rule for throw like the ones we have for all the other semicolon rules.
20950 Not sure why we missed this one earlier.
20952 * kjs/grammar.cpp: Regenerated.
20954 === JavaScriptCore-412.1 ===
20956 2005-04-20 Darin Adler <darin@apple.com>
20958 Reviewed by Maciej.
20960 - speedups, total 12% on JavaScript iBench
20962 I ran the benchmark under Shark and followed its advice a lot, mainly.
20964 * kjs/collector.cpp:
20965 (KJS::Collector::allocate): Take out special case for 0; costing speed but unexercised.
20966 Use numLiveObjectsAtLastCollect instead of numAllocationsSinceLastCollect so we don't
20967 have to bump it each time we call allocate. Put numLiveObjects into a local variable to
20968 cut down on global variable accesses. Make "next" cell pointer be a byte offset rather
20969 than a pointer so we don't need a special case for NULL. Allow freeList to point to some
20970 bogus item when the entire block is full rather than going out of our way to make it
20972 (KJS::Collector::markProtectedObjects): Get table size and pointer into locals outside
20973 the loop to avoid re-loading them over and over again.
20974 (KJS::Collector::collect): Put numLiveObjects into a local variable to cut down on global
20975 variable accesses. Make "next" cell pointer be a byte offset as above. Put numLiveObjects
20976 into a local variable to cut down on global variable accesses. Set numLiveObjectsAtLastCollect
20977 rather than numAllocationsSinceLastCollect.
20978 (KJS::Collector::numReferencedObjects): Get table size and pointer into locals outside
20979 the loop to avoid re-loading them over and over again.
20980 (KJS::Collector::rootObjectClasses): Ditto.
20982 * kjs/internal.h: Make Value be a friend of NumberImp so it can construct number objects
20983 directly, avoiding the conversion from Number to Value.
20985 * kjs/internal.cpp: (StringImp::toObject): Don't use Object::dynamicCast, because we know
20986 the thing is an object and we don't want to do all the extra work; just cast directly.
20988 * kjs/list.cpp: (KJS::List::List): Construct valueRefCount in a way that avoids the need for
20989 a branch -- in the hot case this just meant avoiding checking a variable we just set to false.
20991 * kjs/lookup.cpp: (keysMatch): Marked this inline.
20993 * kjs/nodes.cpp: Disabled KJS_BREAKPOINT, to avoid calling hitStatement all the time.
20994 (BooleanNode::evaluate): Make a Value directly, rather than making a Boolean which is converted
20996 (NumberNode::evaluate): Ditto.
20997 (StringNode::evaluate): Ditto.
20998 (ArrayNode::evaluate): Ditto.
20999 (FunctionCallNode::evaluate): Use new inline baseIfMutable to avoid unnecessary getBase function.
21000 Also just use a pointer for func, rather than an Object.
21001 (PostfixNode::evaluate): Change code so that it doesn't make an excess Number, and so that it
21002 passes a "known to be integer" boolean in, often avoiding a conversion from floating point to
21004 (DeleteNode::evaluate): Make a Value directly.
21005 (TypeOfNode::evaluate): Use new inline baseIfMutable and make Value directly.
21006 (PrefixNode::evaluate): Change code so that it doesn't make an excess Number, and so that it
21007 passes a "known to be integer" boolean in, often avoiding a conversion from floating point to
21009 (UnaryPlusNode::evaluate): Make a Value directly.
21010 (NegateNode::evaluate): Change code so that it doesn't make an excess Number, and so that it
21011 passes a "known to be integer" boolean in, often avoiding a conversion from floating point to
21013 (BitwiseNotNode::evaluate): Make a Value directly.
21014 (LogicalNotNode::evaluate): Ditto.
21015 (ShiftNode::evaluate): Don't convert to a double before making a Value.
21016 (RelationalNode::evaluate): Make a Value directly.
21017 (EqualNode::evaluate): Ditto.
21018 (BitOperNode::evaluate): Ditto.
21019 (AssignNode::evaluate): Make a Value directly. Change code so that it passes a "known to be integer"
21020 boolean in, often avoiding a conversion from floating point to integer and back.
21021 (VarDeclNode::evaluate): Make a Value directly.
21022 (ForNode::execute): Remove unused local variable.
21024 * kjs/operations.h:
21025 (KJS::isNaN): Inlined.
21026 (KJS::isInf): Ditto.
21027 (KJS::isPosInf): Ditto.
21028 (KJS::isNegInf): Ditto.
21030 * kjs/operations.cpp: Change isNaN, isInf, isPosInf, and isNegInf to be inlines.
21031 (KJS::equal): Rewrite to avoid creating values and recursing back into the function.
21032 (KJS::relation): Rearranged code so that we don't need explicit isNaN checks.
21033 (KJS::add): Changed code to make Value directly, and so that it passes a "known to be integer"
21034 boolean in, often avoiding a conversion from floating point to integer and back.
21035 (KJS::mult): Ditto.
21037 * kjs/property_map.cpp:
21038 (KJS::PropertyMap::~PropertyMap): Get size and entries pointer outside loop to avoid
21039 re-getting them inside the loop.
21040 (KJS::PropertyMap::clear): Ditto. Clear value pointer in addition to key, so we can just
21041 look at the value pointer in the mark function.
21042 (KJS::PropertyMap::get): Get sizeMask and entries pointer outside loop to avoid
21043 re-getting them inside the loop.
21044 (KJS::PropertyMap::put): Ditto.
21045 (KJS::PropertyMap::insert): Ditto.
21046 (KJS::PropertyMap::remove): Ditto.
21047 (KJS::PropertyMap::mark): Get size and entries pointer outside loop to avoid
21048 re-getting them inside the loop. Don't bother checking key for 0, since we already have
21049 to check value for 0. (Also had to change clear() to set value to 0.)
21050 (KJS::PropertyMap::addEnumerablesToReferenceList): Get size and entries pointer outside
21051 loop to avoid re-getting them inside the loop.
21052 (KJS::PropertyMap::addSparseArrayPropertiesToReferenceList): Ditto.
21053 (KJS::PropertyMap::save): Ditto.
21057 * kjs/protected_values.h: Remove unneeded class name qualifiers.
21060 (KJS::Reference::baseIfMutable): New inline function: replaces isMutable().
21061 (KJS::Reference::Reference): Inlined.
21062 * kjs/reference.cpp:
21063 (KJS::Reference::getValue): Rewrite to not use getBase.
21064 (KJS::Reference::putValue): Ditto.
21065 (KJS::Reference::deleteValue): Dittol
21067 * kjs/simple_number.h:
21068 (KJS::SimpleNumber::integerFits): Added. For use when the parameter is known to be integral.
21070 * kjs/string_object.cpp: (StringProtoFuncImp::call): Create the number without first converting
21071 to double in various cases that involve integers.
21074 (KJS::UString::attach): Inlined.
21075 (KJS::UString::release): Inlined.
21077 (KJS::UString::find): Get first character outside the loop instead of re-fetching it each time.
21080 (Value::Value): Added overloads for all the various specific types of values, so you don't have
21081 to convert from, say, Number to Value, just to create one.
21082 (Number::Number): Added an overload that takes a boolean to indicate the number is already
21083 known to be an integer.
21085 * kjs/value.h: Added more Value constructors, added a version of toNumber that returns
21086 a boolean to indicate if the number is known to be an integer (because it was a "simple number").
21087 (KJS::ValueImp::marked): Inlined.
21088 (KJS::ValueImp::dispatchType): Inlined.
21089 (KJS::ValueImp::dispatchToPrimitive): Inlined.
21090 (KJS::ValueImp::dispatchToBoolean): Inlined.
21091 (KJS::ValueImp::dispatchToNumber): Inlined.
21092 (KJS::ValueImp::dispatchToString): Inlined.
21093 (KJS::ValueImp::dispatchToUInt32): Inlined.
21095 2005-04-14 Maciej Stachowiak <mjs@apple.com>
21097 - make fast_malloc.h a private header, not project
21099 * JavaScriptCore.pbproj/project.pbxproj:
21101 2005-04-12 Maciej Stachowiak <mjs@apple.com>
21103 Reviewed by Richard.
21105 <rdar://problem/4089734> JavaScript iBench can be sped up ~10% with custom allocator
21107 - use custom single-threaded malloc for all non-GC JavaScriptCore
21108 allocations, for a 9.1% speedup on JavaScript iBench
21110 * JavaScriptCore.pbproj/project.pbxproj:
21111 * kjs/collector.cpp:
21112 (KJS::Collector::allocate): Use dlmalloc to allocate the collector blocks.
21113 (KJS::Collector::collect): And dlfree to free it.
21114 * kjs/fast_malloc.cpp: Added, just the standard dlmalloc here.
21115 * kjs/fast_malloc.h: Added. Declarations for the functions. Also added a handy
21116 macro to give a class custom operator new/delete
21117 * kjs/identifier.cpp:
21118 (KJS::Identifier::add): Use dlmalloc/dlfree.
21119 * kjs/nodes.h: make nodes KJS_FAST_ALLOCATED.
21120 * kjs/property_map.cpp:
21121 (KJS::PropertyMap::~PropertyMap): Use dlmalloc/dlfree.
21122 (KJS::PropertyMap::rehash): ditto
21123 * kjs/scope_chain.h:
21125 (KJS::UString::Rep::createCopying): New named constructor that copies a passed-in
21126 buffer, to hide allocation details from webcore.
21127 (KJS::UString::UString): use createCopying when appropriate.
21128 (KJS::UString::Rep::destroy): Use dlmalloc/dlfree.
21129 (KJS::UString::expandedSize): likewise
21130 (KJS::UString::expandCapacity): likewise
21131 (KJS::UString::expandPreCapacity): likewise
21132 (KJS::UString::spliceSubstringsWithSeparators): likewise
21133 (KJS::UString::append): likewise
21134 (KJS::UString::operator=): likewise
21135 (KJS::UString::detach): likewise
21136 * kjs/ustring.h: make UString and UString::Rep KJS_FAST_ALLOCATED.
21138 2005-04-11 Maciej Stachowiak <mjs@apple.com>
21142 <rdar://problem/4086819> Avoid using protect count hash table so much for 5.6% JS iBench speedup
21144 - Avoid using protected values hash for the two most common cases
21145 - Bump up ListImp high water mark, new testing shows 508 ListImps are
21146 created during JS iBench.
21148 Net result is a 5.6% speedup on JavaScript iBench
21150 * kjs/collector.cpp:
21151 (KJS::Collector::collect): mark protected lists as appropriate.
21154 (KJS::ListImp::markValues): Moved implementation from List::markValues
21155 (KJS::List::markProtectedLists): Implemented - scan pool and overflow
21157 (KJS::allocateListImp): link lists outside the pool into a separate
21158 doubly linked list to be able to mark protected lists
21159 (KJS::deallocateListImp): do the corresponding delinking
21160 (KJS::List::derefValues): do nothing in conservative GC mode
21161 (KJS::List::refValues): do nothing in conservative GC mode
21162 (KJS::List::markValues): call ListImp version
21163 (KJS::List::append):
21178 2005-03-16 Jens Alfke <jens@apple.com>
21182 Fix for <rdar://problem/4025212> "REGRESSION (163-164): search not performed correctly; united.com"
21183 JavaScript unescape("") was returning a messed-up String object that appeared identical to an empty string, but would in some cases act as 'null' when passed to native functions, in this case the Option() constructor.
21184 In the implementation of unescape, the UString holding the result was not initialized to "", so it started out as a null string. If nothing was appended to it, it remained null, resulting in a JavaScript String object with some bad behaviors (namely, converting it to a DOMStringImpl results in a NULL pointer.)
21185 Darin says this regression occurred when we replaced our own implementation of unescape() with code from KJS.
21187 * kjs/function.cpp:
21188 (KJS::GlobalFuncImp::call):
21190 2005-03-15 Richard Williamson <rjw@apple.com>
21192 Fixed <rdar://problem/4053276> WebScripting protocol in WebKit cannot convert Boolean in Javascript to BOOL in Objective-C
21194 Added JavaScript boolean to type that can be converted to
21195 ObjC scalar parameters.
21197 Reviewed by Ken Kocienda.
21199 * bindings/objc/objc_utility.mm:
21200 (KJS::Bindings::convertValueToObjcValue):
21216 2005-02-21 Darin Adler <darin@apple.com>
21218 * kjs/date_object.cpp: (timetUsingCF): Fixed indenting.
21220 2005-02-17 Richard Williamson <rjw@apple.com>
21222 Fixed <rdar://problem/4003251> Safari crashed at www.icelandair.com in LiveConnect code converting a Java object to a string
21226 Reviewed by John Sullivan.
21228 * bindings/jni/jni_runtime.cpp:
21229 (JavaField::valueFromInstance):
21233 2005-02-11 Richard Williamson <rjw@apple.com>
21235 Fixed <rdar://problem/3985118> DOM objects not being marshaled on JS->native calls
21237 Re-factored how 'native' wrappers for JS objects are created. The interpreter now
21238 creates these wrappers. The WebCore subclass of the interpreter now overrides
21239 createLanguageInstanceForValue() and creates a DOM ObjC wrapper for DOM objects.
21243 * bindings/c/c_utility.cpp:
21244 (convertValueToNPVariant):
21245 * bindings/jni/jni_instance.cpp:
21246 (JavaInstance::invokeMethod):
21247 * bindings/jni/jni_objc.mm:
21248 (KJS::Bindings::dispatchJNICall):
21249 * bindings/jni/jni_runtime.cpp:
21250 (JavaField::valueFromInstance):
21251 (JavaArray::valueAt):
21252 * bindings/objc/WebScriptObject.mm:
21253 (-[WebScriptObject _setExecutionContext:KJS::Bindings::]):
21254 (+[WebScriptObject _convertValueToObjcValue:KJS::originExecutionContext:Bindings::executionContext:Bindings::]):
21255 * bindings/objc/WebScriptObjectPrivate.h:
21256 * bindings/objc/objc_utility.h:
21257 * bindings/objc/objc_utility.mm:
21258 (KJS::Bindings::convertObjcValueToValue):
21259 (KJS::Bindings::createObjcInstanceForValue):
21260 * bindings/runtime.cpp:
21261 (Instance::createBindingForLanguageInstance):
21262 (Instance::createRuntimeObject):
21263 (Instance::createLanguageInstanceForValue):
21264 * bindings/runtime.h:
21265 * kjs/interpreter.cpp:
21266 (Interpreter::createLanguageInstanceForValue):
21267 * kjs/interpreter.h:
21271 2005-02-10 Darin Adler <darin@apple.com>
21273 "Reviewed" by Richard (he told me the file was obsolete).
21275 - got rid of an obsolete file
21277 * bindings/npsap.h: Removed.
21283 2005-02-03 Richard Williamson <rjw@apple.com>
21285 Fixed <rdar://problem/3972905> CrashTracer: ...36 crashes at com.apple.WebCore: khtml::CSSStyleSelector::applyDeclarations + 120
21287 Revert to old (and correct) behavior of returning runtime object
21288 when passed as a parameter, rather than it's corresponding DOM
21293 * bindings/objc/WebScriptObject.mm:
21294 (+[WebScriptObject _convertValueToObjcValue:KJS::originExecutionContext:Bindings::executionContext:Bindings::]):
21298 2005-01-28 Richard Williamson <rjw@apple.com>
21300 Fixed <rdar://problem/3980389> JavaScript bindings access incorrect runtime object
21302 Only use special 'back door' property to get the runtime object if thisObj isn't
21303 already a runtime object.
21305 <gratuitous> Cleaned up a couple of strcmp on ClassInfo name. Used == on
21306 ClassInfo pointer instead.
21310 * bindings/c/c_utility.cpp:
21311 (convertValueToNPVariant):
21312 * bindings/objc/WebScriptObject.mm:
21313 (+[WebScriptObject _convertValueToObjcValue:KJS::originExecutionContext:Bindings::executionContext:Bindings::]):
21314 * bindings/runtime_method.cpp:
21315 (RuntimeMethodImp::call):
21319 2005-01-26 Richard Williamson <rjw@apple.com>
21321 Fixed <rdar://problem/3972522> (179-180) 40% slowdown on iBench JavaScript test
21323 I added a member variable to ObjectImp. This changed it's size and consequently
21324 hampered the optimizations built into the garbage collector. Objects no longer
21325 fit within the allocators cell size, and thus allocation fell back to a slower
21328 As a result of this fix I also dramatically cleaned up how runtime objects are
21329 accessed. The path mostly *removes* code.
21333 * bindings/runtime_method.cpp:
21334 (RuntimeMethodImp::call):
21335 * bindings/runtime_object.cpp:
21336 (RuntimeObjectImp::get):
21337 (RuntimeObjectImp::put):
21338 (RuntimeObjectImp::canPut):
21339 (RuntimeObjectImp::hasProperty):
21340 (RuntimeObjectImp::defaultValue):
21341 * bindings/runtime_object.h:
21343 (KJS::ObjectImp::ObjectImp):
21346 2005-01-20 Darin Adler <darin@apple.com>
21348 Reviewed by me, changes by Han Ming Ong.
21350 - <rdar://problem/3964302> SWB: A few files need to be updated to be compilable under GCC 4.0
21352 * bindings/objc/WebScriptObjectPrivate.h: Make members public.
21353 * kjs/lookup.h: Change "value.h" to "object.h" because we need KJS::Object to compile a template.
21355 2005-01-20 Richard Williamson <rjw@apple.com>
21357 Fixed <rdar://problem/3964634> undefined property value from binding seems to evaluate to true in an if statement
21359 The comprehensive fix for this problem requires new API, as described in 3965326. However,
21360 given that we can't add new API at this point, the 'ObjcFallbackObjectImp' will behave
21361 like and Undefined object if invokeUndefinedMethodFromWebScript:withArguments: isn't
21362 implemented on the bound object.
21366 * bindings/objc/objc_runtime.h:
21367 * bindings/objc/objc_runtime.mm:
21368 (ObjcFallbackObjectImp::type):
21369 (ObjcFallbackObjectImp::implementsCall):
21370 (ObjcFallbackObjectImp::toBoolean):
21371 * bindings/testbindings.mm:
21372 (+[MyFirstInterface isSelectorExcludedFromWebScript:]):
21373 (+[MyFirstInterface isKeyExcludedFromWebScript:]):
21377 2005-01-19 Richard Williamson <rjw@apple.com>
21379 Fixed <rdar://problem/3853676> Browser Crash when accessing CCWeb Progress Page - KJS::Bindings::convertValueToJValue
21381 Fixed the following problems with LiveConnect that are demonstrated by the application
21382 described in 3853676.
21384 1. If a nil object is passed in an array from Java to JavaScript we will crash.
21385 2. We sometimes will incorrectly attempt to access a generic JavaScript as a Java runtime object wrapper.
21386 3. We will sometimes fail to find the correct static method ID.
21388 Reviewed by Maciej.
21390 * bindings/jni/jni_jsobject.cpp:
21391 (JSObject::convertJObjectToValue):
21392 (JSObject::listFromJArray):
21393 * bindings/jni/jni_runtime.cpp:
21394 (JavaField::valueFromInstance):
21395 (JavaField::setValueToInstance):
21396 * bindings/jni/jni_utility.cpp:
21397 (KJS::Bindings::getMethodID):
21398 (KJS::Bindings::convertValueToJValue):
21399 * bindings/runtime_array.h:
21401 2005-01-18 Richard Williamson <rjw@apple.com>
21403 Fixed several issues all arising from analysis of plugin detection code at ifilm.com:
21405 Fixed <rdar://problem/3958592> can't script plug-ins if plug-in is invoked with <object> element instead of <embed>
21406 Fixed <rdar://problem/3958597> <object> elements with IDs do not show up as named properties of the document
21407 Fixed <rdar://problem/3960973> DOM objects for plugin elements are not accessible
21408 Fixed <rdar://problem/3958601> need an additional class ID in WebCore for the Real plug-in
21410 We now support accessing scriptable plugin objects that are specified with <applet>, <embed>, or <object>
21411 tags. Also, if any of these elements are named they can be accessed from the document or window objects.
21412 Finally, DOM methods are properties will be forwarded appropriately for the plugin's root scriptable object.
21416 * bindings/objc/objc_instance.h:
21417 * bindings/objc/objc_instance.mm:
21418 (ObjcInstance::supportsSetValueOfUndefinedField):
21419 * bindings/runtime.h:
21420 (KJS::Bindings::Instance::supportsSetValueOfUndefinedField):
21421 * bindings/runtime_object.cpp:
21422 (RuntimeObjectImp::RuntimeObjectImp):
21423 (RuntimeObjectImp::get):
21424 (RuntimeObjectImp::put):
21425 (RuntimeObjectImp::canPut):
21426 (RuntimeObjectImp::hasProperty):
21427 (RuntimeObjectImp::defaultValue):
21428 * bindings/runtime_object.h:
21429 (KJS::RuntimeObjectImp::fallbackObject):
21431 (KJS::ObjectImp::ObjectImp):
21433 (KJS::ObjectImp::forwardingScriptMessage):
21434 (KJS::ObjectImp::setForwardingScriptMessage):
21436 2005-01-18 Richard Williamson <rjw@apple.com>
21438 Back out a change that was incorrectly committed yesterday.
21442 * bindings/objc/objc_utility.mm:
21443 (KJS::Bindings::convertValueToObjcValue):
21445 2005-01-17 Richard Williamson <rjw@apple.com>
21447 Fixed <rdar://problem/3753030> Need to ensure same origin for plugin binding invocations (origin security rules)
21449 Keep track of originating execution context and target execution
21450 context for native JS object wrappers, and perform appropriate
21453 Reviewed by David Harrison.
21455 * bindings/NP_jsobject.cpp:
21457 (_NPN_CreateScriptObject):
21460 (_NPN_GetProperty):
21461 (_NPN_SetProperty):
21462 (_NPN_RemoveProperty):
21463 (_NPN_HasProperty):
21465 (_NPN_SetException):
21466 * bindings/NP_jsobject.h:
21467 * bindings/c/c_instance.cpp:
21468 (CInstance::CInstance):
21469 (CInstance::stringValue):
21470 * bindings/c/c_instance.h:
21471 * bindings/c/c_utility.cpp:
21472 (convertValueToNPVariant):
21473 * bindings/jni/jni_instance.cpp:
21474 (JavaInstance::JavaInstance):
21475 (JavaInstance::valueOf):
21476 * bindings/jni/jni_instance.h:
21477 * bindings/objc/WebScriptObject.mm:
21478 (-[WebScriptObject _initializeWithObjectImp:KJS::originExecutionContext:Bindings::executionContext:Bindings::]):
21479 (-[WebScriptObject _initWithObjectImp:KJS::originExecutionContext:Bindings::executionContext:Bindings::]):
21480 (-[WebScriptObject KJS::Bindings::]):
21481 (-[WebScriptObject _setOriginExecutionContext:KJS::Bindings::]):
21482 (-[WebScriptObject _isSafeScript]):
21483 (-[WebScriptObject callWebScriptMethod:withArguments:]):
21484 (-[WebScriptObject evaluateWebScript:]):
21485 (-[WebScriptObject setValue:forKey:]):
21486 (-[WebScriptObject valueForKey:]):
21487 (-[WebScriptObject removeWebScriptKey:]):
21488 (-[WebScriptObject stringRepresentation]):
21489 (-[WebScriptObject webScriptValueAtIndex:]):
21490 (-[WebScriptObject setWebScriptValueAtIndex:value:]):
21491 (+[WebScriptObject _convertValueToObjcValue:KJS::originExecutionContext:Bindings::executionContext:Bindings::]):
21492 * bindings/objc/WebScriptObjectPrivate.h:
21493 * bindings/objc/objc_instance.h:
21494 * bindings/objc/objc_runtime.mm:
21495 (convertValueToObjcObject):
21496 * bindings/objc/objc_utility.mm:
21497 (KJS::Bindings::convertValueToObjcValue):
21498 * bindings/runtime.cpp:
21499 (Instance::Instance):
21500 (Instance::operator=):
21501 * bindings/runtime.h:
21502 (KJS::Bindings::Instance::Instance):
21503 (KJS::Bindings::Instance::setExecutionContext):
21504 (KJS::Bindings::Instance::executionContext):
21505 * bindings/runtime_root.cpp:
21506 (RootObject::setInterpreter):
21507 * bindings/runtime_root.h:
21508 * kjs/interpreter.h:
21509 (KJS::Interpreter::isGlobalObject):
21510 (KJS::Interpreter::interpreterForGlobalObject):
21511 (KJS::Interpreter::isSafeScript):
21515 2005-01-13 Vicki Murley <vicki@apple.com>
21519 - fix <rdar://problem/3946836> Safari about box lists 2004 instead of 2005
21521 * JavaScriptCore.pbproj/project.pbxproj: bump "2004" to "2005"
21523 2005-01-12 Richard Williamson <rjw@apple.com>
21525 Avoid additional work on dealloc by adding early out to
21526 removeNativeReference(). (This will save time on dealloc
21527 for all ObjC DOM objects.)
21531 * bindings/runtime_root.cpp:
21532 (KJS::Bindings::removeNativeReference):
21534 2005-01-12 Richard Williamson <rjw@apple.com>
21536 Fixed <rdar://problem/3923356> REGRESSION: Java/JavaScript security checks working incorrectly
21538 We were always returning the first "root" object for all runtime
21539 objects. Changed 0 in loop to i, the index.
21541 Reviewed by David Harrison.
21543 * bindings/runtime_root.cpp:
21544 (KJS::Bindings::rootForImp):
21546 2005-01-11 Richard Williamson <rjw@apple.com>
21548 Fixed <rdar://problem/3887930> Must use new Java plug-in API to get/set fields so exception handling works (fixes many LiveConnect crashes)
21550 Use the new dispatching API to invoke JNI, rather than calling JNI
21553 Reviewed by David Harrison.
21555 * bindings/jni/jni_instance.cpp:
21556 (JavaInstance::invokeMethod):
21557 * bindings/jni/jni_runtime.cpp:
21558 (JavaField::dispatchValueFromInstance):
21559 (JavaField::valueFromInstance):
21560 (JavaField::dispatchSetValueToInstance):
21561 (JavaField::setValueToInstance):
21562 * bindings/jni/jni_runtime.h:
21563 * bindings/jni/jni_utility.cpp:
21564 (KJS::Bindings::convertValueToJValue):
21572 2004-12-17 Maciej Stachowiak <mjs@apple.com>
21576 <rdar://problem/3926869> Opening caches window after running PLT causes crash
21578 * kjs/protected_values.cpp:
21579 (KJS::ProtectedValues::getProtectCount): Don't include simple numbers in
21580 the protected value table.
21581 (KJS::ProtectedValues::increaseProtectCount): Ditto.
21582 (KJS::ProtectedValues::decreaseProtectCount): Ditto.
21584 2004-12-16 Darin Adler <darin@apple.com>
21586 Reviewed by Maciej.
21588 - fixed <rdar://problem/3920764> Unimplemented String methods toLocaleLowerCase and toLocaleUpperCase
21590 * kjs/string_object.h: Added toLocaleLowerCase and toLocaleUpperCase.
21591 * kjs/string_object.cpp: (StringProtoFuncImp::call): Made locale versions be synonmyms for the
21592 non-locale-specific versions.
21593 * kjs/string_object.lut.h: Regenerated.
21595 2004-12-14 Richard Williamson <rjw@apple.com>
21597 Pass URL of plugin view when call into JNI.
21601 * bindings/jni/jni_objc.mm:
21602 (KJS::Bindings::dispatchJNICall):
21604 2004-12-13 Richard Williamson <rjw@apple.com>
21606 Fixed <rdar://problem/3827799> repro. crash with IBM Rational ClearCase Web under Safari (Java/LiveConnect-related)
21608 Add support for calling static Java methods from JavaScript.
21610 Reviewed by Maciej.
21612 * bindings/jni/jni_instance.cpp:
21613 (JavaInstance::invokeMethod):
21614 * bindings/jni/jni_runtime.cpp:
21615 (JavaMethod::JavaMethod):
21616 * bindings/jni/jni_runtime.h:
21617 (KJS::Bindings::JavaMethod::isStatic):
21618 * bindings/jni/jni_utility.cpp:
21619 (callJNIStaticMethod):
21620 (KJS::Bindings::callJNIBooleanMethod):
21621 (KJS::Bindings::callJNIStaticBooleanMethod):
21622 * bindings/jni/jni_utility.h:
21624 2004-12-13 Richard Williamson <rjw@apple.com>
21626 Fixed <rdar://problem/3887767> LiveConnect doesn't propagate Java exceptions back to JavaScript (prevents security suite from running)
21630 * bindings/jni/jni_instance.cpp:
21631 (JavaInstance::invokeMethod):
21632 * bindings/jni/jni_objc.mm:
21633 (KJS::Bindings::dispatchJNICall):
21634 * bindings/jni/jni_runtime.h:
21635 * bindings/jni/jni_utility.h:
21639 2004-12-07 Maciej Stachowiak <mjs@apple.com>
21643 <rdar://problem/3908017> REGRESSION (172-173): assertion in ObjectImp::construct trying to create JS error (24hourfitness.com)
21645 The fix was to implement copy constructor and assignment operator,
21646 the ones that worked on the base class did not replace the
21647 defaults apparently!
21650 (KJS::ProtectedValue::ProtectedValue):
21651 (KJS::ProtectedValue::operator=):
21652 (KJS::ProtectedObject::ProtectedObject):
21653 (KJS::ProtectedObject::operator=):
21655 Also fixed a bug in the GC test mode that compares the results of
21656 the old collector and the new collector.
21663 2004-11-23 Richard Williamson <rjw@apple.com>
21665 Fixed <rdar://problem/3890385> field and method cache incorrectly capped (c bindings)
21669 * bindings/c/c_class.cpp:
21670 (CClass::_commonInit):
21672 2004-11-21 Maciej Stachowiak <mjs@apple.com>
21676 <rdar://problem/3889696> Enable conservative garbage collection for JavaScript
21678 * kjs/collector.cpp:
21679 (KJS::Collector::Thread::Thread):
21680 (KJS::destroyRegisteredThread):
21681 (KJS::initializeRegisteredThreadKey):
21682 (KJS::Collector::registerThread):
21683 (KJS::Collector::markStackObjectsConservatively):
21684 (KJS::Collector::markCurrentThreadConservatively):
21685 (KJS::Collector::markOtherThreadConservatively):
21687 * kjs/internal.cpp:
21693 2004-11-15 Richard Williamson <rjw@apple.com>
21695 Fixed <rdar://problem/3880561> Default string value of ObjC object in JS should be [obj description].
21699 * bindings/objc/objc_instance.mm:
21700 (ObjcInstance::stringValue):
21701 * bindings/objc/objc_utility.h:
21702 * bindings/objc/objc_utility.mm:
21703 (KJS::Bindings::convertNSStringToString):
21704 (KJS::Bindings::convertObjcValueToValue):
21708 2004-11-09 Chris Blumenberg <cblu@apple.com>
21710 Fixed: <rdar://problem/3872724> soft link against JavaVM to save ~2MB RSHRD
21715 * JavaScriptCore.pbproj/project.pbxproj: don't link against JavaVM
21716 * bindings/softlinking.c: Added.
21717 (loadFramework): new
21718 (getFunctionPointer): new
21719 (JNI_GetCreatedJavaVMs): load JavaVM if not already loaded, get _JNI_GetCreatedJavaVMs symbol if we don't already have it, call JNI_GetCreatedJavaVMs
21723 2004-11-04 Darin Adler <darin@apple.com>
21727 - fixed <rdar://problem/3865365> since -[WebScriptObject dealloc] does not call [super dealloc], the build will fail due to a warning
21728 - fixed behavior so that [[WebScriptObject alloc] initWithCoder:] doesn't leak WebUndefined instances
21729 and incidentally so that [[WebScriptObject alloc] init] returns the single shared instance rather
21730 than allocating a new one
21732 * bindings/objc/WebScriptObject.mm: Removed some stray semicolons.
21733 (+[WebUndefined allocWithZone:]): Made this the common bottleneck that returns the single instance
21734 of WebUndefined, since it's the single method that normally allocates new instances. Calls super to
21735 actually allocate only the very first time it's called.
21736 (-[WebUndefined initWithCoder:]): Simplified to just return self (no reason to re-lookup the single
21737 shared instance since there can be only one).
21738 (-[WebUndefined copyWithZone:]): Ditto.
21739 (-[WebUndefined retain]): Ditto.
21740 (-[WebUndefined retainCount]): Use UINT_MAX constant here (matches usage in NSObject.m for retain count
21742 (-[WebUndefined autorelease]): Simplified to just return self (see above).
21743 (-[WebUndefined copy]): No need to override this since it just turns around and calls copyWithZone:.
21744 (-[WebUndefined dealloc]): Added an assertion since this method should never be called. Also added
21745 a call to [super dealloc] after return; to make the new -Wdealloc-check compiler happy (fixing the
21746 bug mentioned above).
21747 (+[WebUndefined undefined]): Reimplemented; calls allocWithZone:NULL to get to the shared instance.
21748 No need to call init, since that's a no-op for this class.
21750 2004-11-03 David Harrison <harrison@apple.com>
21754 Eliminate the use of a marker file to determine how to build.
21759 2004-11-01 Richard Williamson <rjw@apple.com>
21761 Fixed <rdar://problem/3861469> Latest Real player crashes Safari on some sites.
21765 * bindings/c/c_instance.cpp:
21766 (CInstance::invokeMethod):
21767 (CInstance::invokeDefaultMethod):
21768 Initialize out parameters to void type.
21770 * bindings/c/c_runtime.cpp:
21771 (CField::valueFromInstance):
21772 (CField::setValueToInstance):
21773 Initialize out parameters to void type.
21774 Also added additional checks to protect against classes that
21775 don't implement all functions.
21777 2004-11-01 Richard Williamson <rjw@apple.com>
21779 Fixed <rdar://problem/3861257> WebUndefined should be returned for undefined values
21784 * bindings/objc/WebScriptObject.mm:
21785 (+[WebScriptObject _convertValueToObjcValue:KJS::root:Bindings::]):
21786 Added additional conversion Undefined -> WebUndefined.
21787 * bindings/objc/objc_utility.mm:
21788 (KJS::Bindings::convertObjcValueToValue):
21789 Added additional conversion WebUndefined -> Undefined.
21791 2004-11-01 Darin Adler <darin@apple.com>
21793 - fixed <rdar://problem/3855573> Remove reference to "WebScriptMethods" from WebScriptObject.h comments
21795 * bindings/objc/WebScriptObject.h: Removed unneeded #ifdef protection for multiple includes (since
21796 this is an Objective-C header and we use #import for those). Fixed comments as requested in the bug
21797 report to match the contents of the file.
21803 2004-10-22 Ken Kocienda <kocienda@apple.com>
21807 * JavaScriptCore.pbproj/project.pbxproj:
21808 Add GCC_ENABLE_OBJC_GC and GCC_FAST_OBJC_DISPATCH flags.
21812 2004-10-13 Richard Williamson <rjw@apple.com>
21814 Moved boolean checks prior to NSNumber checks. booleans are
21817 Follow on to <rdar://problem/3821515> binding layer needs to convert NSNumber-bools to js type boolean not number.
21821 * bindings/objc/objc_utility.mm:
21822 (KJS::Bindings::convertObjcValueToValue):
21824 2004-10-12 Richard Williamson <rjw@apple.com>
21826 Fixed access to DOM object via WebScriptObject API.
21827 The execution context for DOM objects wasn't being found.
21828 <rdar://problem/3831372> The valueForKey method for @"offsetLeft" on a paragraph element causes a crash.
21832 * bindings/objc/WebScriptObject.mm:
21834 (-[WebScriptObject KJS::Bindings::]):
21835 (-[WebScriptObject callWebScriptMethod:withArguments:]):
21836 (-[WebScriptObject evaluateWebScript:]):
21837 (-[WebScriptObject setValue:forKey:]):
21838 (-[WebScriptObject valueForKey:]):
21839 (-[WebScriptObject stringRepresentation]):
21840 * bindings/objc/WebScriptObjectPrivate.h:
21842 2004-10-09 Darin Adler <darin@apple.com>
21846 - fixed <rdar://problem/3804661> REGRESSION: JavaScriptCore framework now has two init routines
21848 * bindings/NP_jsobject.cpp: Fixed unnecessarily-complex globals set up that was
21849 creating an init routine.
21851 * kjs/ustring.cpp: Changed around the UString::Rep::empty construction to not
21852 require a global constructor that creates an init routine.
21854 2004-10-09 Darin Adler <darin@apple.com>
21858 - fixed <rdar://problem/3822618> REGRESSION (164-165): expedia.com's popup help doesn't work
21860 * kjs/reference.cpp: (Reference::putValue): Change so that references not found in any object
21861 work with the window object of the page the function is in, not the page of the caller. This
21862 is what all other browsers do. This code was hidden before by the "everything is defined on
21863 window object" hack in WebCore.
21865 2004-10-07 Richard Williamson <rjw@apple.com>
21867 Added simple JavaScript call tracing. Very useful for
21868 debugging complex pages.
21870 Tracing is only available in development builds and is
21873 (gdb) set traceJavaScript = 1
21877 setTraceJavaScript(true)
21879 Function, args, and return values are printed to console. Very
21884 * kjs/function_object.cpp:
21885 (FunctionProtoFuncImp::call):
21887 (KJS::Object::call):
21891 2004-10-05 Richard Williamson <rjw@apple.com>
21893 Fixed <rdar://problem/3819234> NPN_SetException (and throwException:) isn't implemented
21897 * bindings/NP_jsobject.cpp:
21898 (_NPN_SetException):
21899 * bindings/npruntime.cpp:
21900 (_NPN_SetExceptionWithUTF8):
21901 * bindings/objc/WebScriptObject.mm:
21902 (+[WebScriptObject throwException:]):
21904 (KJS::InterpreterImp::context):
21906 2004-10-05 Richard Williamson <rjw@apple.com>
21908 Fixed <rdar://problem/3821515> binding layer needs to convert NSNumber-bools to js type boolean not number
21912 * bindings/objc/objc_utility.mm:
21913 (KJS::Bindings::convertObjcValueToValue):
21915 2004-10-04 Darin Adler <darin@apple.com>
21919 - rolled in a fix the KDE folks did for the operations that generate HTML fragments
21921 * kjs/string_object.cpp: (StringProtoFuncImp::call): Added quote marks to generated HTML.
21923 - rolled out an old workaround we don't need any more
21925 * JavaScriptCore.pbproj/project.pbxproj: Remove -Wno-long-double because the <math.h> issue that
21926 required it is no longer there.
21928 2004-09-30 Richard Williamson <rjw@apple.com>
21930 Fixed <rdar://problem/3821215> NPN hasMethod and hasProperty functions should take NPObjects, not NPClass
21934 * bindings/NP_jsobject.cpp:
21935 (_NPN_GetProperty):
21936 (_NPN_HasProperty):
21938 * bindings/c/c_class.cpp:
21939 (CClass::methodsNamed):
21940 (CClass::fieldNamed):
21941 * bindings/c/c_class.h:
21942 * bindings/c/c_instance.cpp:
21943 (CInstance::invokeMethod):
21944 * bindings/jni/jni_class.cpp:
21945 (JavaClass::methodsNamed):
21946 * bindings/jni/jni_class.h:
21947 * bindings/npruntime.h:
21948 * bindings/objc/objc_class.h:
21949 * bindings/objc/objc_class.mm:
21950 (ObjcClass::methodsNamed):
21951 * bindings/runtime.h:
21952 * bindings/runtime_object.cpp:
21953 (RuntimeObjectImp::get):
21954 (RuntimeObjectImp::hasProperty):
21956 2004-09-29 Chris Blumenberg <cblu@apple.com>
21958 Prepended underscores to NPN methods so that when the QT plug-in loads these symbols, it uses the non-underscore versions in WebKit. Without this, the QT plug-in was failing to load when launching Safari from the command-line.
21962 * JavaScriptCore.pbproj/project.pbxproj:
21963 * bindings/NP_jsobject.cpp:
21964 (_NPN_CreateScriptObject):
21965 (_NPN_InvokeDefault):
21968 (_NPN_GetProperty):
21969 (_NPN_SetProperty):
21970 (_NPN_RemoveProperty):
21971 (_NPN_HasProperty):
21973 * bindings/c/c_class.cpp:
21974 (CClass::methodsNamed):
21975 (CClass::fieldNamed):
21976 * bindings/c/c_instance.cpp:
21977 (CInstance::CInstance):
21978 (CInstance::~CInstance):
21979 (CInstance::operator=):
21980 (CInstance::invokeMethod):
21981 (CInstance::invokeDefaultMethod):
21982 * bindings/c/c_runtime.cpp:
21983 * bindings/c/c_runtime.h:
21984 (KJS::Bindings::CField::name):
21985 (KJS::Bindings::CMethod::name):
21986 * bindings/npruntime.cpp:
21987 (_NPN_GetStringIdentifier):
21988 (_NPN_GetStringIdentifiers):
21989 (_NPN_GetIntIdentifier):
21990 (_NPN_IdentifierIsString):
21991 (_NPN_UTF8FromIdentifier):
21992 (_NPN_IntFromIdentifier):
21993 (NPN_InitializeVariantWithObject):
21994 (_NPN_ReleaseVariantValue):
21995 (_NPN_CreateObject):
21996 (_NPN_RetainObject):
21997 (_NPN_ReleaseObject):
21998 (_NPN_SetExceptionWithUTF8):
21999 (_NPN_SetException):
22001 2004-09-26 Darin Adler <darin@apple.com>
22003 * kjs/string_object.cpp: (StringProtoFuncImp::call): Remove strange use of high() and
22004 low() to get Unicode value of character, and just use unicode().
22006 2004-09-26 Darin Adler <darin@apple.com>
22008 - refine charAt/charCodeAt fix slightly
22010 * kjs/string_object.cpp: (StringProtoFuncImp::call): Treat undefined the same was as an
22011 omitted parameter, as we do everywhere else, and as other browsers do here.
22013 2004-09-26 Darin Adler <darin@apple.com>
22017 - fixed <rdar://problem/3816097> REGRESSION: mailblocks, and presumably many other pages, failing because variable not found
22019 * kjs/internal.cpp: (InterpreterImp::evaluate): Process variable declarations before executing
22020 the program. We were doing this properly for functions, but not entire programs.
22022 - fixed <rdar://problem/3814706> REGRESSION: text fields in mailblocks wizards do not accept keystrokes due to use of charCodeAt()
22024 * kjs/string_object.cpp: (StringProtoFuncImp::call): Changed the implementation of charAt
22025 and charCodeAt to treat a missing parameter as an index of 0, rather than an invalid index.
22027 * tests/mozilla/expected.html: Update for two tests that now pass with these changes.
22033 2004-09-14 Richard Williamson <rjw@apple.com>
22035 1. Add class parameter to object allocation function. This is somewhat redundant, given that
22036 the allocation function is in the class function vector, but people wanted to use the same
22037 allocation function for different classes.
22039 2. Renamed NPN_Class to NPN_Invoke to match the name in the function vector.
22041 3. Add support for a default function on an object. This is a feature that ActiveX supports,
22042 and will allow JavaScript code to be written that will look exactly the same for both ActiveX
22043 plugins and Netscape or WebKit plugins. There are implementations included for the 'C' and
22044 'Objective-C' bindings.
22046 There bugs are covered by
22048 <rdar://problem/3776343> Support for default functions in the JavaScript bindings
22049 <rdar://problem/3779186> NPN_Call needs to be renamed to NPN_Invoke
22050 <rdar://problem/3674754> Need to implement latest npruntime.h
22054 * bindings/NP_jsobject.cpp:
22056 (NPN_InvokeDefault):
22058 * bindings/c/c_class.cpp:
22059 * bindings/c/c_instance.cpp:
22060 (CInstance::CInstance):
22061 (CInstance::operator=):
22062 (CInstance::invokeMethod):
22063 (CInstance::invokeDefaultMethod):
22064 * bindings/c/c_instance.h:
22065 * bindings/c/c_runtime.cpp:
22066 * bindings/c/c_runtime.h:
22067 * bindings/jni/jni_instance.cpp:
22068 (JavaInstance::invokeDefaultMethod):
22069 * bindings/jni/jni_instance.h:
22070 * bindings/npruntime.cpp:
22071 (NPN_CreateObject):
22072 * bindings/npruntime.h:
22073 * bindings/objc/WebScriptObject.h:
22074 * bindings/objc/objc_class.mm:
22075 (ObjcClass::fallbackObject):
22076 * bindings/objc/objc_instance.h:
22077 * bindings/objc/objc_instance.mm:
22078 (ObjcInstance::invokeDefaultMethod):
22079 * bindings/objc/objc_runtime.h:
22080 * bindings/objc/objc_runtime.mm:
22081 (ObjcFallbackObjectImp::ObjcFallbackObjectImp):
22082 (ObjcFallbackObjectImp::get):
22083 (ObjcFallbackObjectImp::put):
22084 (ObjcFallbackObjectImp::canPut):
22085 (ObjcFallbackObjectImp::implementsCall):
22086 (ObjcFallbackObjectImp::call):
22087 (ObjcFallbackObjectImp::hasProperty):
22088 (ObjcFallbackObjectImp::deleteProperty):
22089 (ObjcFallbackObjectImp::defaultValue):
22090 * bindings/runtime.h:
22091 (KJS::Bindings::Class::fallbackObject):
22092 (KJS::Bindings::Instance::getValueOfUndefinedField):
22093 (KJS::Bindings::Instance::setValueOfUndefinedField):
22094 (KJS::Bindings::Instance::valueOf):
22095 * bindings/runtime_object.cpp:
22096 (RuntimeObjectImp::implementsCall):
22097 (RuntimeObjectImp::call):
22098 * bindings/runtime_object.h:
22100 2004-09-13 Maciej Stachowiak <mjs@apple.com>
22104 <rdar://problem/3794735> Gmail- sending a very long message with Safari is so slow it seems like a hang
22106 * kjs/string_object.cpp:
22107 (StringProtoFuncImp::call): Replaced implementation of replace()
22108 method with function below...
22109 (replace): In order to avoid excessive allocation and copying,
22110 figure out the ranges of the original string and replacement
22111 strings to be assembled, instead of constantly creating new
22112 strings at each substitution. The old behavior is basically O(N^2)
22113 for a global replace on a pattern that matches many places in the
22115 (regExpIsGlobal): Helper function for the above.
22116 (expandSourceRanges): ditto
22117 (pushSourceRange): ditto
22118 (expandReplacements): ditto
22119 (pushReplacement): ditto
22121 (KJS::UString::spliceSubstringsWithSeparators): New method that
22122 pieces together substring ranges of this string together with
22123 specified separators, all at one go.
22125 (KJS::UString::Range::Range): Added new helper class to represent
22128 2004-09-14 Maciej Stachowiak <mjs@apple.com>
22132 - fixed <rdar://problem/3800315> encode-URI-test layout test is failing
22134 * kjs/function.cpp:
22135 (KJS::GlobalFuncImp::call): Make sure to escape null
22136 characters. This is a bug in the new code that made part of the
22139 2004-09-13 Darin Adler <darin@apple.com>
22141 Reviewed by Kevin and Maciej.
22143 - new function to support fix for DIG bug in WebCore
22145 * kjs/scope_chain.h: Added new push function that pushes another entire scope chain.
22146 * kjs/scope_chain.cpp: (KJS::ScopeChain::push): Ditto.
22148 2004-09-12 Darin Adler <darin@apple.com>
22150 * tests/mozilla/expected.html: Updated test results for 3 more tests that pass with the new version
22151 of escape and unescape.
22153 2004-09-12 Darin Adler <darin@apple.com>
22155 Reviewed by Maciej.
22157 - fixed <rdar://problem/3798209> any non-ASCII characters are garbled in the result of toLocaleString
22159 * kjs/date_object.cpp:
22160 (formatLocaleDate): Replaced two old functions that used LongDateTime with this one new function that
22161 uses CFDateFormatter.
22162 (DateProtoFuncImp::call): Call the new formatLocaleDate instead of both formatLocaleDate and formatLocaleTime.
22164 2004-09-09 Maciej Stachowiak <mjs@apple.com>
22166 Reviewed by Richard.
22168 <rdar://problem/3493140> REGRESSION (85-100): cedille displays %-escaped in JavaScript message at hotmail.com
22170 * kjs/function.cpp:
22171 (KJS::GlobalFuncImp::call): Replace our escape() and unescape() implementations with
22172 ones from KDE KJS, which have the proper latin-1 behavior to match Win IE.
22174 (Lexer::isHexDigit): Made static and non-const.
22179 2004-09-06 Darin Adler <darin@apple.com>
22181 * JavaScriptCore.pbproj/project.pbxproj: Bump MACOSX_DEPLOYMENT_TARGET to 10.3.
22185 2004-09-01 Richard Williamson <rjw@apple.com>
22187 Add pid to exception messages (to help debug dashboard clients).
22191 * kjs/interpreter.cpp:
22192 (Interpreter::evaluate):
22196 2004-08-20 Richard Williamson <rjw@apple.com>
22198 Implemented new JNI abstraction. We no longer invoke Java methods
22199 directly with JNI, rather we call into the plugin. This allows the
22200 plugin to dispatch the call to the appropriate VM thread. This
22201 change should (will?) fix a whole class of threading related problems with
22206 * JavaScriptCore.pbproj/project.pbxproj:
22207 * bindings/c/c_instance.h:
22208 (KJS::Bindings::CInstance::setExecutionContext):
22209 (KJS::Bindings::CInstance::executionContext):
22210 * bindings/jni/jni_instance.cpp:
22211 (JavaInstance::JavaInstance):
22212 (JavaInstance::invokeMethod):
22213 (JavaInstance::setExecutionContext):
22214 (JavaInstance::executionContext):
22215 * bindings/jni/jni_instance.h:
22216 * bindings/jni/jni_jsobject.cpp:
22217 (JSObject::convertJObjectToValue):
22218 * bindings/jni/jni_runtime.cpp:
22219 (JavaField::JavaField):
22220 (JavaArray::convertJObjectToArray):
22221 (JavaField::valueFromInstance):
22222 (JavaArray::JavaArray):
22223 (JavaArray::valueAt):
22224 * bindings/jni/jni_runtime.h:
22225 (KJS::Bindings::JavaArray::operator=):
22226 (KJS::Bindings::JavaArray::executionContext):
22227 * bindings/jni/jni_utility.h:
22228 * bindings/objc/objc_instance.h:
22229 (KJS::Bindings::ObjcInstance::setExecutionContext):
22230 (KJS::Bindings::ObjcInstance::executionContext):
22231 * bindings/runtime.cpp:
22232 (Instance::createBindingForLanguageInstance):
22233 * bindings/runtime.h:
22234 * bindings/runtime_root.h:
22235 (KJS::Bindings::RootObject::nativeHandle):
22239 2004-08-19 Vicki Murley <vicki@apple.com>
22243 * kjs/property_map.cpp:
22244 (KJS::PropertyMap::put): initialize deletedElementIndex to zero, to make the compiler happy
22246 2004-08-17 Darin Adler <darin@apple.com>
22250 - fixed <rdar://problem/3746676> SAP WebDynpro app hangs inside JavaScript property map hash table code (deleted sentinel problem)
22252 * kjs/property_map.h: Added some private functions.
22253 * kjs/property_map.cpp:
22254 (KJS::PropertyMap::clear): Set sentinelCount to 0.
22255 (KJS::PropertyMap::put): Complete search for the element before choosing to use the deleted-element sentinel.
22256 Also keep sentinel count up to date when we destroy a sentinel by overwriting with a new added element.
22257 (KJS::PropertyMap::expand): Added. Calls rehash with a size 2x the old size, or 16.
22258 (KJS::PropertyMap::rehash): Added. Refactored the rehash code into a separate function.
22259 (KJS::PropertyMap::remove): Add one to sentinelCount, and rehash if 1/4 or more of the elements are
22260 deleted-element sentinels.
22261 (KJS::PropertyMap::checkConsistency): Check the sentinelCount.
22263 2004-08-16 Maciej Stachowiak <mjs@apple.com>
22265 Code change by Eric Albert, reviewd by me.
22267 <rdar://problem/3571960> washingtonpost.com claims I don't have cookies enabled and won't let me read articles
22269 * kjs/date_object.cpp:
22270 (timetUsingCF): Clamp time to LONG_MAX (getting rid of time_t
22271 entirely would be even better, but is not required to fix this bug.
22275 2004-08-16 Richard Williamson <rjw@apple.com>
22277 Fixed <rdar://problem/3581092> cash in KJS::Bindings::JSObject::eval at tcvetantcvetkov.com
22279 Adds bullet proofing to protect against evaluation of bogus JS in all the flavors of bindings (Java, C, and ObjC).
22283 * bindings/NP_jsobject.cpp:
22285 * bindings/jni/jni_jsobject.cpp:
22287 * bindings/objc/WebScriptObject.mm:
22288 (-[WebScriptObject evaluateWebScript:]):
22290 2004-08-15 Richard Williamson <rjw@apple.com>
22292 More updates to np headers. Implemented new NPN functions.
22296 * bindings/NP_jsobject.cpp:
22299 * bindings/npapi.h:
22300 * bindings/npruntime.h:
22302 2004-08-13 Darin Adler <darin@apple.com>
22304 - fix build so we can compile again
22306 * bindings/npapi.h: Added. Richard forgot to check this in. The one I'm checking in here
22307 is good enough so that we can compile, but it's only a stopgap measure, because I think
22308 Richard has a newer one he wants to check in.
22310 2004-08-12 Richard Williamson <rjw@apple.com>
22312 Bring npruntime.h and friends closer to compliance with
22315 Reviewed by Maciej.
22317 * JavaScriptCore.pbproj/project.pbxproj:
22318 * bindings/NP_jsobject.cpp:
22320 (_NPN_CreateScriptObject):
22325 (NPN_RemoveProperty):
22326 * bindings/NP_jsobject.h:
22327 * bindings/c/c_instance.cpp:
22328 (CInstance::invokeMethod):
22329 * bindings/c/c_utility.cpp:
22330 (convertNPVariantToValue):
22331 * bindings/npruntime.cpp:
22332 (NPN_IdentifierIsString):
22333 (NPN_VariantIsVoid):
22334 (NPN_VariantIsNull):
22335 (NPN_VariantIsUndefined):
22336 (NPN_VariantIsBool):
22337 (NPN_VariantIsInt32):
22338 (NPN_VariantIsDouble):
22339 (NPN_VariantIsString):
22340 (NPN_VariantIsObject):
22341 (NPN_VariantToBool):
22342 (NPN_VariantToString):
22343 (NPN_VariantToInt32):
22344 (NPN_VariantToDouble):
22345 (NPN_VariantToObject):
22346 (NPN_InitializeVariantAsVoid):
22347 (NPN_InitializeVariantAsNull):
22348 (NPN_InitializeVariantAsUndefined):
22349 (NPN_InitializeVariantWithBool):
22350 (NPN_InitializeVariantWithInt32):
22351 (NPN_InitializeVariantWithDouble):
22352 (NPN_InitializeVariantWithString):
22353 (NPN_InitializeVariantWithStringCopy):
22354 (NPN_InitializeVariantWithObject):
22355 (NPN_InitializeVariantWithVariant):
22356 (NPN_ReleaseVariantValue):
22357 (NPN_CreateObject):
22358 * bindings/npruntime.h:
22360 (_NPString::_NPVariant::):
22361 * bindings/npruntime_priv.h: Added.
22363 2004-08-12 Darin Adler <darin@apple.com>
22367 - fixed 3 problems with parse functions that I just wrote, fixing 3 more Mozilla JavaScript tests
22369 * kjs/function.cpp:
22370 (KJS::parseDigit): Fix typo, 'Z' instead of 'z', that prevented lowercase hex digits from working.
22371 (KJS::parseInt): Add octal support. Specification says it's optional, but I guess not.
22372 (KJS::parseFloat): Fix check for "0x" in parseFloat to return 0 rather than NaN. Also add code
22373 to skip leading "+" or "-".
22377 2004-08-12 Darin Adler <darin@apple.com>
22381 - fixed 43 Mozilla JavaScript tests
22383 * kjs/date_object.h: Change parseDate and timeClip to take and return doubles.
22384 * kjs/date_object.cpp:
22385 (DateObjectImp::construct): Change to use a timeClip function that takes and returns a double rather
22386 than constructing a number object to pass to it.
22387 (DateObjectFuncImp::call): Change to use a parseDate function that returns a double.
22388 (KJS::parseDate): Change to return a double instead of creating the Number object here.
22389 (KJS::timeClip): Implement this as specified in the language standard.
22391 * kjs/error_object.cpp: (NativeErrorImp::NativeErrorImp): Set the DontDelete, ReadOnly, and DontEnum
22392 flags on the prototype property.
22394 * kjs/function.cpp:
22395 (KJS::FunctionImp::get): Return null rather than undefined for arguments when the function is not
22396 currently in scope.
22397 (KJS::isStrWhiteSpace): Added. Matches specification for StrWhiteSpace. Could move it to some utility
22399 (KJS::parseDigit): Added. Helper function for parseInt.
22400 (KJS::parseInt): Added. Integer parser that puts result in a double so we're not limited to what
22401 strtoll can handle. Also matches standard more closely.
22402 (KJS::parseFloat): Added. Handles "0x" properly and passes flag to make empty string turn into NaN
22404 (KJS::GlobalFuncImp::call): Use the new parseInt and parseFloat.
22406 * kjs/function_object.cpp: (FunctionPrototypeImp::FunctionPrototypeImp): Add a length property.
22408 * kjs/lexer.h: Added error flag and sawError() function for detecting errors.
22410 (Lexer::setCode): Clear error state.
22411 (Lexer::lex): Set error state if the lexer encounters an error
22413 * kjs/internal.cpp:
22414 (NumberImp::toString): Roll in change from KDE version to special case 0 so we handle -0 correctly.
22415 (Parser::parse): Use new lexer error method so those errors are treated like parser errors.
22417 * kjs/math_object.cpp: (MathFuncImp::call): Change min and max to treat -0 as less than +0.
22418 Change round to round values between -0.5 and -0 to -0 instead of +0.
22420 * kjs/nodes.h: Add evaluateReference function to GroupNode.
22421 * kjs/nodes.cpp: (GroupNode::evaluateReference): Pass references through groups (parenthesized
22422 expressions) properly so that expressions like "delete (x.y)" work. Before, the parentheses
22423 would change x.y into a value that can't be deleted as a side effect.
22425 * kjs/string_object.cpp: Change parameter count for indexOf and lastIndexOf from 2 to 1 to match
22428 * kjs/testkjs.cpp: Rolled in changes from KDE to add a "quit" function to the test tool and
22429 get rid of the fixed size limit for code.
22431 * kjs/ustring.cpp: (KJS::UString::substr): Added optimized case for substr(0, length) so it just
22432 returns the string without creating a new Rep, since I'm using substr in a place where it will
22433 often be passed a 0.
22435 * tests/mozilla/ecma/String/15.5.4.11-1.js: Fixed one wrong entry in the Unicode table I added to
22436 the other day that was making a couple tests fail.
22437 * tests/mozilla/ecma/String/15.5.4.12-1.js: Ditto.
22438 * tests/mozilla/ecma/String/15.5.4.12-2.js: Ditto.
22439 * tests/mozilla/ecma/String/15.5.4.12-3.js: Ditto.
22440 * tests/mozilla/ecma/String/15.5.4.12-4.js: Ditto.
22441 * tests/mozilla/ecma/String/15.5.4.12-5.js: Ditto.
22443 * kjs/string_object.lut.h: Regenerated.
22445 2004-08-11 Darin Adler <darin@apple.com>
22447 - fixed a tiny problem with the UTF-16 PCRE check-in
22449 * pcre/maketables.c: (pcre_maketables): Fix mistake in table-generating code that sometimes caused
22450 the ctype_meta flag to get set in items that should not have it.
22452 * pcre/chartables.c: Regenerated.
22454 2004-08-10 Richard Williamson <rjw@apple.com>
22456 Fixed <rdar://problem/3674747> Need to implement invokeUndefinedMethodFromWebScript:withArguments:
22458 The following WebScripting methods are now supported on bound
22461 - (id)invokeUndefinedMethodFromWebScript:(NSString *)name withArguments:(NSArray *)args;
22462 - (void)setValue:(id)value forUndefinedKey:(NSString *)key
22463 - (id)valueForUndefinedKey:(NSString *)key
22467 * bindings/c/c_class.cpp:
22468 (CClass::fieldNamed):
22469 * bindings/c/c_class.h:
22470 * bindings/jni/jni_class.cpp:
22471 (JavaClass::fieldNamed):
22472 * bindings/jni/jni_class.h:
22473 * bindings/objc/objc_class.h:
22474 (KJS::Bindings::ObjcClass::isa):
22475 * bindings/objc/objc_class.mm:
22476 (ObjcClass::methodsNamed):
22477 (ObjcClass::fieldNamed):
22478 (ObjcClass::fallbackObject):
22479 * bindings/objc/objc_instance.h:
22480 * bindings/objc/objc_instance.mm:
22481 (ObjcInstance::invokeMethod):
22482 (ObjcInstance::setValueOfField):
22483 (ObjcInstance::setValueOfUndefinedField):
22484 (ObjcInstance::getValueOfField):
22485 (ObjcInstance::getValueOfUndefinedField):
22486 * bindings/objc/objc_runtime.h:
22487 (KJS::Bindings::ObjcField::~ObjcField):
22488 (KJS::Bindings::ObjcField::ObjcField):
22489 (KJS::Bindings::ObjcField::operator=):
22490 (KJS::Bindings::FallbackObjectImp::classInfo):
22491 * bindings/objc/objc_runtime.mm:
22492 (ObjcField::ObjcField):
22495 (ObjcField::valueFromInstance):
22496 (ObjcField::setValueToInstance):
22497 (FallbackObjectImp::FallbackObjectImp):
22498 (FallbackObjectImp::get):
22499 (FallbackObjectImp::put):
22500 (FallbackObjectImp::canPut):
22501 (FallbackObjectImp::implementsCall):
22502 (FallbackObjectImp::call):
22503 (FallbackObjectImp::hasProperty):
22504 (FallbackObjectImp::deleteProperty):
22505 (FallbackObjectImp::defaultValue):
22506 * bindings/runtime.h:
22507 (KJS::Bindings::Class::fallbackObject):
22508 (KJS::Bindings::Instance::getValueOfUndefinedField):
22509 (KJS::Bindings::Instance::setValueOfUndefinedField):
22510 * bindings/runtime_object.cpp:
22511 (RuntimeObjectImp::get):
22512 (RuntimeObjectImp::put):
22513 (RuntimeObjectImp::canPut):
22514 (RuntimeObjectImp::hasProperty):
22515 * bindings/testbindings.mm:
22516 (-[MyFirstInterface valueForUndefinedKey:]):
22517 (-[MyFirstInterface setValue:forUndefinedKey:]):
22519 2004-08-10 Darin Adler <darin@apple.com>
22523 - switch PCRE to do UTF-16 directly instead of converting to/from UTF-8 for speed
22525 * pcre/pcre.h: Added PCRE_UTF16 switch, set to 1. Added pcre_char typedef, which is char
22526 or uint16_t depending on the mode, and used appropriate in the 7 public functions
22527 that need to use it.
22528 * pcre/pcre.c: Add UTF-16 support to all functions.
22529 * pcre/study.c: Ditto.
22531 * pcre/internal.h: Added ichar typedef, which is unsigned char or uint16_t depending on
22532 the mode. Changed declarations to use symbolic constants and typedefs so we size
22533 things to ichar when needed.
22535 * pcre/maketables.c: (pcre_maketables): Change code to make tables that are
22536 sized to 16-bit characters instead of 8-bit.
22539 (pcre_copy_substring): Use pcre_char instead of char.
22540 (pcre_get_substring_list): Ditto.
22541 (pcre_free_substring_list): Ditto.
22542 (pcre_get_substring): Ditto.
22543 (pcre_free_substring): Ditto.
22545 * pcre/dftables.c: (main): Used a bit more const, and use ICHAR sizes instead
22546 of hard-coding 8-bit table sizes.
22548 * pcre/chartables.c: Regenerated.
22550 * kjs/ustring.h: Remove functions that convert UTF-16 to/from UTF-8 offsets.
22551 * kjs/ustring.cpp: Change the shared empty string to have a unicode pointer that
22552 is not null. The null string still has a null pointer. This prevents us from
22553 passing a null through to the regular expression engine (which results in a null
22554 error even when the string length is 0).
22557 (KJS::RegExp::RegExp): Null-terminate the pattern and pass it.
22558 (KJS::RegExp::match): Use the 16-bit string directly, no need to convert to UTF-8.
22560 2004-08-09 Darin Adler <darin@apple.com>
22562 Reviewed by Maciej.
22564 - fixed 28 Mozilla JavaScript tests
22566 * kjs/array_object.cpp: (ArrayProtoFuncImp::call): Check for undefined rather than
22567 checking the number of arguments for the join method.
22569 * kjs/lexer.cpp: (Lexer::lex): Parse hexadecimal and octal constants in doubles rather
22570 than integers, so we aren't limited to 32 bits.
22572 * kjs/math_object.cpp: (MathFuncImp::call): Get rid of many unneeded special cases in
22573 the implementation of the pow operation. Also simplied a case that was handling positive
22574 and negative infinity separately.
22576 * kjs/nodes.cpp: (ShiftNode::evaluate): Keep the result of shifts in a double instead of
22577 putting them in a long, so that unsigned shift will work properly.
22579 * kjs/number_object.cpp: Add the DontDelete and ReadOnly flags to the numeric constants.
22581 * kjs/operations.cpp:
22582 (KJS::isPosInf): Added an implementation inside APPLE_CHANGES that does not depend on the
22583 sign of isinf; our isinf function returns +1 even for negative infinity.
22584 (KJS::isNegInf): And again.
22585 (KJS::relation): Put in a nice simple implementation of comparison inside APPLE_CHANGES.
22586 Our floating point already handles the various infinity cases correctly.
22588 * kjs/regexp_object.cpp:
22589 (RegExpProtoFuncImp::call): Add missing return before Null() in Exec method.
22590 (RegExpObjectImp::arrayOfMatches): Put undefined rather than an empty string into the
22591 array in cases where we did not match.
22592 (RegExpObjectImp::construct): Set the DontDelete, ReadOnly, and DontEnum flags for
22593 "global", "ignoreCase", "multiline", and "source".
22595 * kjs/string_object.cpp: (StringProtoFuncImp::call): For the match method, turn a null
22596 string into undefined rather than an empty string. For the slice method, handle an
22597 undefined parameter for the limit properly as decribed in the specification, and add
22598 the limit to one case that didn't have the limit at all. For the methods that generate
22599 HTML strings, use lowercase tags instead of uppercase.
22602 (KJS::UChar::toLower): Use u_tolower from the ICU library.
22603 (KJS::UChar::toUpper): Use u_toupper from the ICU library.
22604 (KJS::UString::append): Fix some math that caused a buffer overflow.
22605 (KJS::convertUTF16OffsetsToUTF8Offsets): Ignore negative numbers (-1 is used as a special
22606 flag) rather than converting them all to 0.
22607 (KJS::convertUTF8OffsetsToUTF16Offsets): Ditto.
22609 * tests/mozilla/jsDriver.pl: Fixed the relative links to point to our actual test files.
22611 * tests/mozilla/ecma/String/15.5.4.11-1.js: Fixed the Unicode table in this test to match
22612 the Unicode specification in a few cases where it was wrong before.
22613 * tests/mozilla/ecma/String/15.5.4.11-2.js: Ditto.
22614 * tests/mozilla/ecma/String/15.5.4.11-3.js: Ditto.
22615 * tests/mozilla/ecma/String/15.5.4.11-5.js: Ditto.
22616 * tests/mozilla/ecma/String/15.5.4.11-6.js: Ditto.
22617 * tests/mozilla/ecma/String/15.5.4.12-1.js: Ditto.
22618 * tests/mozilla/ecma/String/15.5.4.12-2.js: Ditto.
22619 * tests/mozilla/ecma/String/15.5.4.12-3.js: Ditto.
22620 * tests/mozilla/ecma/String/15.5.4.12-4.js: Ditto.
22621 * tests/mozilla/ecma/String/15.5.4.12-5.js: Ditto.
22623 * JavaScriptCore.pbproj/project.pbxproj: Link to libicu.
22625 * kjs/number_object.lut.h: Regenerated.
22627 2004-08-09 Darin Adler <darin@apple.com>
22629 Reviewed by Maciej.
22631 - fixed <rdar://problem/3753467> REGRESSION (137-138): reproducible buffer overrun in UString manipulation code
22633 * kjs/ustring.cpp: (KJS::UString::append): Fix incorrect size computation. Without it
22634 we get a buffer overflow.
22638 2004-08-05 Richard Williamson <rjw@apple.com>
22640 Fixed part of 3674747. The QT guys need this for feature freeze.
22642 This patch implements support for the
22644 - (id)invokeUndefinedMethodFromWebScript:(NSString *)name withArguments:(NSArray *)args
22646 method of objects bound to JavaScript.
22651 * bindings/objc/objc_class.mm:
22652 (ObjcClass::methodsNamed):
22653 (ObjcClass::fieldNamed):
22654 * bindings/objc/objc_instance.mm:
22655 (ObjcInstance::invokeMethod):
22656 * bindings/objc/objc_runtime.h:
22657 (KJS::Bindings::ObjcMethod::~ObjcMethod):
22658 (KJS::Bindings::ObjcMethod::isFallbackMethod):
22659 (KJS::Bindings::ObjcMethod::javaScriptName):
22660 * bindings/objc/objc_runtime.mm:
22661 (ObjcMethod::ObjcMethod):
22662 (ObjcMethod::getMethodSignature):
22663 (ObjcMethod::setJavaScriptName):
22664 * bindings/testbindings.mm:
22666 2004-08-04 Vicki Murley <vicki@apple.com>
22670 - fix <rdar://problem/3649789> SAP WebGUI has problems loading first page because of parse error
22673 (Lexer::lex): if the current character is a '\' and the next character is a line terminator,
22674 go to the next line and continue parsing the string (instead of failing). This matches
22675 behavior in Mac IE and Mozilla.
22677 2004-08-03 Kevin Decker <kdecker@apple.com>
22681 Rolled in changes from the latest KJS sources that support additional
22682 Number.prototype functions.
22684 Specifically this patch covers the follow parts of the ECMA 3 spec:
22685 15.7.4.5, 15.7.4.6, and 15.7.4.7
22688 <rdar://problem/3663716> missing Number.toFixed (and toPrecision, toExponential)
22689 <rdar://problem/3749492> missing Number.toPrecision prototype implementation
22690 <rdar://problem/3749591> missing Number.toExponential prototype implementation
22692 * kjs/identifier.h: Added toFixed, toPrecision, and toExponential to the
22693 list of supported identifiers (a macro).
22694 * kjs/number_object.cpp: Implemented support for toFixed(), toPrecision(),
22695 and toExponential().
22696 (NumberPrototypeImp::NumberPrototypeImp):
22697 (NumberProtoFuncImp::call):
22698 * kjs/number_object.h: Added property names for toFixed, toPrecision,
22700 (KJS::NumberProtoFuncImp::):
22701 * tests/mozilla/expected.html: Update results.
22703 2004-08-03 Darin Adler <darin@apple.com>
22707 - added support for copying RegExp objects so 7 more Mozilla regexp tests pass
22709 * kjs/regexp_object.cpp: (RegExpObjectImp::construct): Check for case where
22710 we are supposed to just copy the regular expression object, and do so.
22711 Also tighten up arguments check to handle case where an actual "undefined"
22712 is passed rather than just omitting an argument.
22714 * tests/mozilla/expected.html: Update results.
22716 2004-08-02 Darin Adler <darin@apple.com>
22718 * tests/mozilla/.cvsignore: Added.
22719 * tests/mozilla/expected.html: Update results.
22721 2004-08-02 Darin Adler <darin@apple.com>
22725 - fixed RegExp.toString so 3 more Mozilla regexp tests pass
22727 * kjs/regexp_object.cpp: (RegExpProtoFuncImp::call):
22728 Append the flags here so more tests paseed.
22730 2004-08-02 Darin Adler <darin@apple.com>
22734 - fixed a couple things making 5 Mozilla regexp tests pass
22736 * kjs/regexp_object.cpp: (RegExpProtoFuncImp::call): Implement toString
22738 (RegExpObjectImp::construct): Fix bug where the string "undefined" would
22739 be used as the flags string when no parameter was passed.
22741 * kjs/regexp_object.h: (KJS::RegExpPrototypeImp::classInfo):
22742 Added a class info object for RegExp prototype so it can return
22743 a string instead of raising an exception when converting to a string.
22745 * tests/mozilla/expected.html: Update results.
22747 2004-08-02 Darin Adler <darin@apple.com>
22751 - fix crashes in mozilla tests due to mishandling NaN
22753 * kjs/array_object.cpp: (ArrayProtoFuncImp::call): Rerranged range checks after
22754 calls to toInteger so that NaN will get turned into something that fits in an integer.
22755 These were the ones John already fixed, but his fix used isnan and the new fix is
22758 * kjs/number_object.cpp: (NumberProtoFuncImp::call): Rearranged radix range checks
22759 after a call to toInteger to handle NaN properly. Also removed separate check
22760 for undefined that's not needed.
22762 * kjs/string_object.cpp: (StringProtoFuncImp::call): More of the same kinds of changes
22763 as in the above two files, but for a lot more functions. Also changed one place with
22764 an explicit check for undefined to instead just check isNaN.
22766 * tests/mozilla/run-mozilla-tests: Changed to invoke jst using $SYMROOTS for people
22767 like me who don't keep $SYMROOTS in their $PATH.
22773 2004-07-26 Kevin Decker <kdecker@apple.com>
22775 Changes done by Darin, reviewed by Kevin.
22777 - changed testkjs to build in Xcode rather than from Makefile
22779 * .cvsignore: Removed obsolete files from this list.
22780 * Makefile.am: Removed code to build testkjs; we do this in Xcode now.
22781 Changed to build target "All" rather than default target. This makes us
22782 build the testkjs test tool.
22783 * dummy.cpp: Removed.
22784 * kjs/.cvsignore: Removed obsolete files from this list, including
22785 the testkjs tool, which is now built in the symroots directory.
22786 * kjs/testkjs.cpp: Added copyright notice that was missing, since we have
22787 changed this file. Also this has the nice side effect of causing the tool
22788 to be rebuilt in the new location even if there are no other changes in
22789 your tree when you check this out.
22790 * tests/mozilla/run-mozilla-tests: Invoke perl explicitly so this works
22791 without setting the execute bit on jsDriver.pl.
22793 2004-07-22 Kevin Decker <kdecker@apple.com>
22797 Fixed <rdar://problem/3682340> (error console does not include source urls or line numbers of event exceptions).
22799 * kjs/function_object.cpp:
22800 (FunctionObjectImp::construct):
22801 * kjs/function_object.h:
22803 (KJS::ObjectImp::construct):
22805 (KJS::Object::construct):
22807 2004-07-21 Darin Adler <darin@apple.com>
22809 * bindings/npruntime.h: Fixed typo.
22811 2004-07-19 John Sullivan <sullivan@apple.com>
22813 Reviewed by Maciej.
22815 - bulletproofed array.slice() against NAN arguments. Harri noticed this
22816 vulnerability in my patch for 3714644
22818 * kjs/array_object.cpp:
22819 (ArrayProtoFuncImp::call):
22820 handle NAN parameters passed to slice() by clamping to 0 and length.
22822 2004-07-19 Richard Williamson <rjw@apple.com>
22824 Fixed 3733349. Prevent Java applet callbacks into JavaScript after applet
22825 has been destroyed.
22829 * bindings/jni/jni_jsobject.cpp:
22830 (JSObject::invoke):
22831 (JSObject::JSObject):
22833 2004-07-16 John Sullivan <sullivan@apple.com>
22835 Reviewed by Maciej.
22837 - fixed <rdar://problem/3714644> REGRESSION (125.8-146): bugzilla submit link
22838 hangs browser with javascript
22840 * kjs/array_object.cpp:
22841 (ArrayProtoFuncImp::call):
22842 Check for undefined type for args[0] the same way we were already checking
22843 for args[1]. In this case, args was zero-length, but we were treating
22844 args[0] like an integer anyway. Resulted in some code looping from a NAN
22845 value to 4, taking approximately forever.
22847 * JavaScriptCore.pbproj/project.pbxproj:
22852 2004-07-14 Maciej Stachowiak <mjs@apple.com>
22856 <rdar://problem/3711474>: (REGRESSION (125-146): JavaScript 'toString(16)' is broken)
22857 <rdar://problem/3644873>: (REGRESSION (125-140u): secondary list doesn't fill in at Southwest.com)
22859 * kjs/number_object.cpp:
22860 (NumberProtoFuncImp::call): Initialize radix from dradix, not from itself!
22862 2004-07-13 Kevin Decker <kdecker@apple.com>
22864 Reviewed by kocienda.
22866 - made testkjs and JavaScriptCore a subtarget of 'All'
22867 - testkjs now builds in $SYMROOTS
22869 * JavaScriptCore.pbproj/project.pbxproj:
22873 2004-06-24 Chris Blumenberg <cblu@apple.com>
22875 Ignore .mode1 files in JavaScriptCore.pbproj
22877 Reviewed by kocienda.
22879 * JavaScriptCore.pbproj/.cvsignore:
22881 2004-06-23 Richard Williamson <rjw@apple.com>
22883 Implemented changes for latest npruntime.h.
22887 * JavaScriptCore.pbproj/project.pbxproj:
22888 * bindings/NP_jsobject.cpp:
22889 (listFromVariantArgs):
22890 (identiferFromNPIdentifier):
22891 (_NPN_CreateScriptObject):
22896 (NPN_RemoveProperty):
22897 * bindings/NP_jsobject.h:
22898 * bindings/c/c_class.cpp:
22899 (CClass::methodsNamed):
22900 (CClass::fieldNamed):
22901 * bindings/c/c_instance.cpp:
22902 (CInstance::invokeMethod):
22903 * bindings/c/c_utility.cpp:
22904 (convertNPVariantToValue):
22905 * bindings/c/c_utility.h:
22906 * bindings/npruntime.cpp:
22907 (stringIdentifierEqual):
22908 (stringIdentifierHash):
22909 (getStringIdentifierDictionary):
22910 (intIdentifierEqual):
22911 (intIdentifierHash):
22912 (getIntIdentifierDictionary):
22913 (NPN_GetStringIdentifier):
22914 (NPN_GetStringIdentifiers):
22915 (NPN_GetIntIdentifier):
22916 (NPN_IdentifierIsString):
22917 (NPN_UTF8FromIdentifier):
22918 (NPN_VariantToInt32):
22919 (NPN_VariantToDouble):
22920 (NPN_SetException):
22921 * bindings/npruntime.h:
22922 * bindings/objc/WebScriptObject.mm:
22923 (+[WebScriptObject _convertValueToObjcValue:KJS::root:Bindings::]):
22924 * bindings/runtime_object.cpp:
22925 (RuntimeObjectImp::~RuntimeObjectImp):
22926 * bindings/runtime_root.cpp:
22927 (KJS::Bindings::rootForInterpreter):
22928 * bindings/testbindings.cpp:
22929 (initializeIdentifiers):
22935 === JavaScriptCore-146.1 ===
22937 2004-06-16 Richard Williamson <rjw@apple.com>
22939 Fixed <rdar://problem/3702287> Crash returning nil from bound ObjC
22941 This turned out to be a show stopper for Dashboard. Accessing a nil
22942 ObjC property from JS caused a crash. Similar to the problem
22943 3696112 fixed below.
22947 * bindings/objc/objc_runtime.mm:
22948 (KJS::Bindings::ObjcField::valueFromInstance):
22952 2004-06-16 Richard Williamson <rjw@apple.com>
22954 Fixed <rdar://problem/3696112>: nil from an Objective-C class seems to get wrapped as a JavaScript proxy that will not print.
22956 This turned out to be a show stopper for Dashboard. We now
22957 return Undefined() when nil is returned from a ObjC method
22958 that returns an object type.
22960 Reviewed by Maciej.
22962 * bindings/objc/objc_utility.mm:
22963 (KJS::Bindings::convertObjcValueToValue):
22967 2004-06-15 Richard Williamson <rjw@apple.com>
22969 Fixed <rdar://problem/3695875>: Objective-C instances that are exported to JavaScript are too promiscuous
22971 No longer need to check respondsToSelector: for
22972 isSelectorExcludedFromWebScript: and isKeyExcludedFromWebScript:
22973 because these now have a default implementation on NSObject.
22977 * bindings/objc/objc_class.mm:
22978 (ObjcClass::methodsNamed):
22979 (ObjcClass::fieldNamed):
22981 2004-06-14 Darin Adler <darin@apple.com>
22983 Reviewed by Maciej.
22985 - fixed some things for GC that Patrick missed, or that happened after the branch
22987 * bindings/objc/WebScriptObject.mm:
22988 (-[WebScriptObject dealloc]): Moved removeNativeReference call here from private object.
22989 (-[WebScriptObject finalize]): Added.
22991 - added some missing nil checks
22993 * bindings/objc/objc_instance.mm:
22994 (ObjcInstance::ObjcInstance): Check for nil.
22995 (ObjcInstance::~ObjcInstance): Check for nil.
22996 (ObjcInstance::operator=): Check for nil.
22998 2004-06-14 Darin Adler <darin@apple.com>
23000 Reviewed by me, code changes by Patrick Beard.
23002 - fixed <rdar://problem/3671507>: (WebKit should adopt GC changes and compile with GC enabled)
23004 * bindings/objc/objc_instance.mm:
23005 (ObjcInstance::ObjcInstance): Use CFRetain instead of retain.
23006 (ObjcInstance::~ObjcInstance): Use CFRelease instead of release.
23007 (ObjcInstance::operator=): More of the same.
23008 (ObjcInstance::end): Use [pool drain] if compiling on Tiger.
23010 * bindings/objc/objc_runtime.mm:
23011 (ObjcArray::ObjcArray): Use CFRetain instead of retain.
23012 (ObjcArray::~ObjcArray): Use CFRelease instead of release.
23013 (ObjcArray::operator=): More of the same.
23015 * bindings/testbindings.mm: Fixed incorrect license.
23016 (main): Use [pool drain] if compiling on Tiger.
23020 2004-06-10 Kevin Decker <kdecker@apple.com>
23026 - fixed <rdar://problem/3682398>: (error console line numbers are offset by 1)
23028 (KJS::Lexer::lineNo):
23029 - fixed <rdar://problem/3682398>: (error console line numbers are offset by 1)
23031 === JavaScriptCore-143.2 ===
23033 2004-06-07 Darin Adler <darin@apple.com>
23035 - fixed <rdar://problem/3682489>: (JavaScriptGlue no longer compiles because Interpreter::evaluate parameters changed)
23037 * kjs/interpreter.h: Added an overload to make JavaScriptGlue compile.
23038 * kjs/interpreter.cpp: (KJS::Interpreter::evaluate): Implemented the overload.
23040 === JavaScriptCore-143.1 ===
23042 2004-06-04 Kevin Decker <kdecker@apple.com>
23046 - fixed <rdar://problem/3680594>
23049 (KJS::Error::create):
23053 2004-06-04 Darin Adler <darin@apple.com>
23055 * kjs/testkjs.cpp: (main): Fix build breakage by adding URL and line number parameters.
23057 2004-06-04 Kevin Decker <kdecker@apple.com>
23061 - ObjC bindings do not (yet) pass along sourceurl or line numbers
23062 - we don't have a way as of yet to accomidate line numbers and urls for dynamic javascript
23063 - changed the wording of an error message
23064 - the lexer, parser, and interpreter have been made "sourceURL aware"
23065 - stored the url into Error
23067 * bindings/NP_jsobject.cpp:
23069 * bindings/jni/jni_jsobject.cpp:
23071 * bindings/objc/WebScriptObject.mm:
23072 (-[WebScriptObject evaluateWebScript:]):
23073 * kjs/function.cpp:
23074 (GlobalFuncImp::call):
23075 * kjs/function_object.cpp:
23076 (FunctionObjectImp::construct):
23077 * kjs/internal.cpp:
23079 (InterpreterImp::checkSyntax):
23080 (InterpreterImp::evaluate):
23082 * kjs/interpreter.cpp:
23083 (Interpreter::evaluate):
23084 * kjs/interpreter.h:
23088 (KJS::Lexer::sourceURL):
23091 (Node::throwError):
23092 (FunctionCallNode::evaluate):
23095 (KJS::Error::create):
23098 2004-06-04 Richard Williamson <rjw@apple.com>
23100 Fixed crash when attempting to access properties on nil
23105 * bindings/objc/objc_instance.mm:
23106 (ObjcInstance::getClass):
23107 * bindings/runtime_object.cpp:
23108 (RuntimeObjectImp::get):
23109 * bindings/testM.js:
23110 * bindings/testbindings.mm:
23111 (-[MyFirstInterface getString]):
23113 2004-05-27 Kevin Decker <kdecker@apple.com>
23117 -revised generated error message content
23119 * kjs/error_object.cpp:
23120 (ErrorProtoFuncImp::call):
23121 * kjs/internal.cpp:
23124 (KJS::Error::create):
23128 2004-05-27 Richard Williamson <rjw@apple.com>
23130 Renamed WebScriptMethods to WebScripting based on feedback from Nancy.
23134 * bindings/objc/WebScriptObject.h:
23136 2004-05-27 Darin Adler <darin@apple.com>
23138 Reviewed by Maciej.
23140 - moved to new symlink technique for embedding frameworks
23142 * JavaScriptCore.pbproj/project.pbxproj: Get rid of embed-frameworks build step
23143 because we don't need it any more.
23145 2004-05-24 Richard Williamson <rjw@apple.com>
23147 Changed RuntimeArrayImp to inherit from ArrayInstanceImp and
23148 fixed ClassInfo to correctly reflect inheritance. This is required
23149 because of the runtime checks in JSC for arrays, i.e. in
23150 the Function objects apply method.
23154 * bindings/jni/jni_runtime.cpp:
23155 (JavaArray::convertJObjectToArray):
23156 * bindings/objc/objc_utility.mm:
23157 (KJS::Bindings::convertObjcValueToValue):
23158 * bindings/runtime_array.cpp:
23159 (RuntimeArrayImp::RuntimeArrayImp):
23160 * bindings/runtime_array.h:
23161 * bindings/testM.js: Added.
23162 * bindings/testbindings.mm:
23163 (+[MyFirstInterface webScriptNameForSelector:]):
23164 (-[MyFirstInterface logMessages:]):
23165 (-[MyFirstInterface logMessage:prefix:]):
23166 (-[MyFirstInterface callJSObject::]):
23168 2004-05-22 Darin Adler <darin@apple.com>
23170 Reviewed by Maciej.
23172 - fixed <rdar://problem/3664260>: (JS needs to listen to timezone change notifications)
23174 * kjs/date_object.cpp: (CopyLocalTimeZone): As per Chris Kane and Jordan Hubbard, use <notify.h>
23175 with a hardcoded string of "com.apple.system.timezone", and do CFTimeZoneResetSystem since
23176 CoreFoundation doesn't do this itself. Turns out this affects the default time zone as long as
23177 it hasn't been set explicitly.
23181 2004-05-20 Richard Williamson <rjw@apple.com>
23183 Implemented WebScriptObject/DOM wrapper voodoo. DOM wrappers
23184 can now be referenced like any other WebScriptObject, meaning
23185 you can do JS operations on them.
23187 All added implementation of finalizeForWebScript.
23191 * bindings/objc/WebScriptObject.h:
23192 * bindings/objc/WebScriptObject.mm:
23193 (-[WebScriptObject _initializeWithObjectImp:KJS::root:Bindings::]):
23194 (-[WebScriptObject _initWithObjectImp:KJS::root:Bindings::]):
23195 (-[WebScriptObject KJS::]):
23196 (-[WebScriptObject dealloc]):
23197 (-[WebScriptObject callWebScriptMethod:withArguments:]):
23198 (-[WebScriptObject evaluateWebScript:]):
23199 (-[WebScriptObject setValue:forKey:]):
23200 (-[WebScriptObject valueForKey:]):
23201 (-[WebScriptObject stringRepresentation]):
23202 * bindings/objc/WebScriptObjectPrivate.h:
23203 * bindings/objc/objc_instance.mm:
23204 (ObjcInstance::~ObjcInstance):
23206 2004-05-19 Richard Williamson <rjw@apple.com>
23208 Removed extraneous tabs that were added (by XCode?).
23210 * bindings/objc/WebScriptObject.h:
23212 2004-05-19 Darin Adler <darin@apple.com>
23214 - fixed headers with licenses mangled by Xcode auto-indenting
23216 * bindings/jni/jni_jsobject.cpp:
23217 * bindings/jni/jni_jsobject.h:
23218 * bindings/runtime_array.h:
23219 * bindings/runtime_root.cpp:
23220 * bindings/runtime_root.h:
23222 2004-05-18 Richard Williamson <rjw@apple.com>
23224 Added exception logging. Also check for exception and
23225 set results as appropriate.
23227 Reviewed by Maciej (partially reviewed).
23229 * bindings/objc/WebScriptObject.mm:
23230 (-[WebScriptObject callWebScriptMethod:withArguments:]):
23231 (-[WebScriptObject evaluateWebScript:]):
23232 (-[WebScriptObject setValue:forKey:]):
23233 (-[WebScriptObject valueForKey:]):
23235 2004-05-18 Richard Williamson <rjw@apple.com>
23237 Finsished implementing support for windowScriptObject.
23238 Had to make WebScriptObjectPrivate.h accessible from
23241 Reviewed by Maciej.
23243 * JavaScriptCore.pbproj/project.pbxproj:
23244 * bindings/objc/WebScriptObjectPrivate.h:
23246 2004-05-18 Richard Williamson <rjw@apple.com>
23248 Use KVC to set/get values instead of directly accessing
23251 Reviewed by Maciej.
23253 * bindings/objc/WebScriptObject.mm:
23254 (-[WebScriptObject callWebScriptMethod:withArguments:]):
23255 (+[WebScriptObject _convertValueToObjcValue:KJS::root:Bindings::]):
23256 * bindings/objc/objc_runtime.mm:
23257 (ObjcField::valueFromInstance):
23258 (convertValueToObjcObject):
23259 (ObjcField::setValueToInstance):
23261 2004-05-17 Richard Williamson <rjw@apple.com>
23263 Implemented new API for WebScriptObject.
23265 Fixed <rdar://problem/3657145>: (objc to javascript method calls do not cause updates.)
23266 Fixed <rdar://problem/3654887>: (Update to JSC to refer to new JSObject LiveConnect object) (w/ help from Vicki)
23270 * JavaScriptCore.pbproj/project.pbxproj:
23271 * bindings/c/c_instance.cpp:
23272 (CInstance::invokeMethod):
23273 * bindings/jni/jni_instance.cpp:
23274 (JavaInstance::invokeMethod):
23275 * bindings/jni/jni_jsobject.cpp:
23276 (JSObject::convertValueToJObject):
23277 * bindings/jni/jni_utility.cpp:
23278 (KJS::Bindings::getJNIField):
23279 * bindings/objc/WebScriptObject.mm:
23281 (-[WebScriptObject _initWithObjectImp:KJS::root:Bindings::]):
23282 (-[WebScriptObject KJS::]):
23283 (-[WebScriptObject dealloc]):
23284 (+[WebScriptObject throwException:]):
23286 (-[WebScriptObject callWebScriptMethod:withArguments:]):
23287 (-[WebScriptObject evaluateWebScript:]):
23288 (-[WebScriptObject setValue:forKey:]):
23289 (-[WebScriptObject valueForKey:]):
23290 (-[WebScriptObject stringRepresentation]):
23291 (+[WebScriptObject _convertValueToObjcValue:KJS::root:Bindings::]):
23292 (+[WebUndefined undefined]):
23293 (-[WebUndefined initWithCoder:]):
23294 (-[WebUndefined encodeWithCoder:]):
23295 (-[WebUndefined copyWithZone:]):
23296 (-[WebUndefined retain]):
23297 (-[WebUndefined release]):
23298 (-[WebUndefined retainCount]):
23299 (-[WebUndefined autorelease]):
23300 (-[WebUndefined dealloc]):
23301 (-[WebUndefined copy]):
23302 (-[WebUndefined replacementObjectForPortCoder:]):
23303 * bindings/objc/WebScriptObjectPrivate.h: Added.
23304 * bindings/objc/objc_class.mm:
23305 (ObjcClass::methodsNamed):
23306 (ObjcClass::fieldNamed):
23307 * bindings/objc/objc_instance.mm:
23308 (ObjcInstance::invokeMethod):
23309 * bindings/objc/objc_jsobject.h:
23310 * bindings/objc/objc_jsobject.mm:
23311 * bindings/objc/objc_runtime.mm:
23312 (ObjcField::valueFromInstance):
23313 * bindings/objc/objc_utility.mm:
23314 (KJS::Bindings::JSMethodNameToObjCMethodName):
23315 (KJS::Bindings::convertValueToObjcValue):
23316 (KJS::Bindings::convertObjcValueToValue):
23317 * bindings/runtime.cpp:
23318 (Instance::setDidExecuteFunction):
23319 (Instance::didExecuteFunction):
23320 (Instance::setValueOfField):
23321 * bindings/runtime.h:
23322 * bindings/testbindings.mm:
23323 (+[MyFirstInterface webScriptNameForSelector:]):
23324 (-[MyFirstInterface callJSObject::]):
23326 2004-05-14 Vicki Murley <vicki@apple.com>
23330 <rdar://problem/3642427>: framework marketing number should be 2.0 for DoubleBarrel release
23332 * JavaScriptCore.pbproj/project.pbxproj: change CFBundleShortVersionString to 2.0
23336 2004-05-13 Richard Williamson <rjw@apple.com>
23343 * bindings/objc/WebScriptObject.h:
23345 2004-05-13 Richard Williamson <rjw@apple.com>
23347 Approved API changes. Currently unimplemented.
23352 * JavaScriptCore.pbproj/project.pbxproj:
23353 * bindings/objc/WebScriptObject.h: Added.
23354 * bindings/objc/WebScriptObject.mm: Added.
23355 (+[WebScriptObject throwException:]):
23356 (-[WebScriptObject callWebScriptMethod:withArguments:]):
23357 (-[WebScriptObject evaluateWebScript:]):
23358 (-[WebScriptObject stringRepresentation]):
23359 (+[WebUndefined undefined]):
23360 (-[WebUndefined initWithCoder:]):
23361 (-[WebUndefined encodeWithCoder:]):
23362 (-[WebUndefined copyWithZone:]):
23364 2004-05-07 Vicki Murley <vicki@apple.com>
23368 Turn off GC since it uses ppc only instructions (which breaks
23371 * kjs/value.h: set USE_CONSERVATIVE_GC to 0
23375 2004-05-07 Maciej Stachowiak <mjs@apple.com>
23379 - add -funroll-loops=16 compiler option for approx .5% speedup on
23380 HTML iBench and .5-1% speedup on JS iBench.
23382 * JavaScriptCore.pbproj/project.pbxproj:
23384 2004-04-25 Maciej Stachowiak <mjs@apple.com>
23388 Enable full conservative GC mode in addition to test mode. When
23389 conservative GC is enabled, we now get an 11% speed improvement on
23390 the iBench. Also fix some spots I missed before.
23392 Specific noteworth changes:
23394 * kjs/collector.cpp:
23395 (KJS::Collector::markStackObjectsConservatively): Check possible
23396 cell pointers for 8-byte aligment and verify they are not 0.
23398 * kjs/protected_values.cpp:
23399 (KJS::ProtectedValues::increaseProtectCount): Move null-tolerance from here...
23400 (KJS::ProtectedValues::decreaseProtectCount): ...and here...
23402 (KJS::gcProtectNullTolerant): ...to here...
23403 (KJS::gcUnprotectNullTolerant): ...and here, because not all callers need the null
23404 tolerance, and doing the check is expensive.
23406 * kjs/protected_values.cpp:
23407 (KJS::ProtectedValues::computeHash): Replace hash function with a much faster one
23408 that is still very good.
23412 (KJS::gcUnprotect):
23413 (KJS::ProtectedValue::ProtectedValue):
23414 (KJS::ProtectedValue::~ProtectedValue):
23415 (KJS::ProtectedValue::operator=):
23416 (KJS::ProtectedObject::ProtectedObject):
23417 (KJS::ProtectedObject::~ProtectedObject):
23418 (KJS::ProtectedObject::operator=):
23419 (KJS::ProtectedReference::ProtectedReference):
23420 (KJS::ProtectedReference::~ProtectedReference):
23421 (KJS::ProtectedReference::operator=):
23422 * kjs/protected_values.cpp:
23423 (KJS::ProtectedValues::getProtectCount):
23424 (KJS::ProtectedValues::increaseProtectCount):
23425 (KJS::ProtectedValues::decreaseProtectCount):
23426 (KJS::ProtectedValues::computeHash):
23427 * bindings/runtime_root.cpp:
23428 (KJS::Bindings::addNativeReference):
23429 (KJS::Bindings::removeNativeReference):
23430 (RootObject::removeAllNativeReferences):
23431 * bindings/runtime_root.h:
23432 (KJS::Bindings::RootObject::~RootObject):
23433 (KJS::Bindings::RootObject::setRootObjectImp):
23434 * kjs/collector.cpp:
23435 (KJS::Collector::allocate):
23436 (KJS::Collector::collect):
23438 * kjs/internal.cpp:
23439 (NumberImp::create):
23440 (InterpreterImp::globalInit):
23441 (InterpreterImp::globalClear):
23442 (InterpreterImp::mark):
23444 (KJS::List::derefValues):
23445 (KJS::List::refValues):
23446 (KJS::List::append):
23448 (KJS::ObjectImp::setInternalValue):
23449 (KJS::ObjectImp::putDirect):
23452 (ValueImp::marked):
23454 (KJS::ValueImp::ValueImp):
23455 (KJS::ValueImp::~ValueImp):
23457 (KJS::Value::Value):
23458 (KJS::Value::~Value):
23459 (KJS::Value::operator=):
23461 2004-04-30 Richard Williamson <rjw@apple.com>
23463 Asking an NSInvocation for it's return value when return type
23464 is void throws an exception. Added check for void return types
23465 to avoid this exception.
23469 * bindings/objc/objc_instance.mm:
23470 (ObjcInstance::invokeMethod):
23472 2004-04-29 Richard Williamson <rjw@apple.com>
23474 Fixed several bad problems with the ObjC bindings. In particular, conversion
23475 to/from JavaScriptObject (soon to be WebScriptObject) was completely broken.
23479 * bindings/objc/objc_jsobject.h:
23480 * bindings/objc/objc_jsobject.mm:
23481 (-[JavaScriptObject initWithObjectImp:KJS::root:Bindings::]):
23482 (-[JavaScriptObject KJS::]):
23483 (+[JavaScriptObject _convertValueToObjcValue:KJS::root:Bindings::]):
23484 (-[JavaScriptObject call:arguments:]):
23485 (-[JavaScriptObject evaluate:]):
23486 (-[JavaScriptObject getMember:]):
23487 (-[JavaScriptObject getSlot:]):
23488 * bindings/objc/objc_runtime.mm:
23489 (ObjcField::valueFromInstance):
23490 (ObjcField::setValueToInstance):
23491 * bindings/objc/objc_utility.mm:
23492 (KJS::Bindings::convertValueToObjcValue):
23493 (KJS::Bindings::convertObjcValueToValue):
23494 * bindings/runtime.h:
23495 * bindings/runtime_root.cpp:
23496 (KJS::Bindings::rootForInterpreter):
23497 (KJS::Bindings::addNativeReference):
23498 (KJS::Bindings::removeNativeReference):
23499 * bindings/runtime_root.h:
23500 * bindings/testbindings.mm:
23501 (-[MyFirstInterface logMessage:]):
23502 (-[MyFirstInterface setJSObject:]):
23503 (-[MyFirstInterface callJSObject::]):
23505 2004-04-24 Darin Adler <darin@apple.com>
23509 * kjs/ustring.cpp: (KJS::UString::append): Fix one case that was allocating a buffer
23510 that is 2x too big.
23512 2004-04-23 Maciej Stachowiak <mjs@apple.com>
23516 Implementation of conservative GC, based partly on code from
23517 Darin. It's turned off for now, so it shouldn't have any effect on
23520 * JavaScriptCore.pbproj/project.pbxproj:
23521 * kjs/collector.cpp:
23522 (KJS::Collector::markStackObjectsConservatively):
23523 (KJS::Collector::markProtectedObjects):
23524 (KJS::Collector::collect):
23528 (KJS::gcUnprotect):
23529 * kjs/protected_values.cpp: Added.
23530 (KJS::ProtectedValues::getProtectCount):
23531 (KJS::ProtectedValues::increaseProtectCount):
23532 (KJS::ProtectedValues::insert):
23533 (KJS::ProtectedValues::decreaseProtectCount):
23534 (KJS::ProtectedValues::expand):
23535 (KJS::ProtectedValues::shrink):
23536 (KJS::ProtectedValues::rehash):
23537 (KJS::ProtectedValues::computeHash):
23538 * kjs/protected_values.h: Added.
23540 (ValueImp::useConservativeMark):
23542 (ValueImp::marked):
23548 2004-04-22 Richard Williamson <rjw@apple.com>
23550 Fixed build snafu (re-declaration of NPBool in npruntime.h and
23553 * bindings/npruntime.h:
23555 2004-04-22 Richard Williamson <rjw@apple.com>
23557 Updated plugin binding API to reflect latest revision from
23560 Biggest change is the introduction of NPVariant used to represent
23561 value types. NPVariant replaces the use of NPObject for the
23562 exchange of values between scripting environment and native code.
23566 * JavaScriptCore.pbproj/project.pbxproj:
23567 * bindings/NP_jsobject.cpp:
23568 (identiferFromNPIdentifier):
23574 (NPN_GetPropertyAtIndex):
23575 (NPN_SetPropertyAtIndex):
23576 * bindings/c/c_class.cpp:
23577 (CClass::methodsNamed):
23578 (CClass::fieldNamed):
23579 * bindings/c/c_instance.cpp:
23580 (CInstance::invokeMethod):
23581 (CInstance::defaultValue):
23582 * bindings/c/c_runtime.cpp:
23583 (CField::valueFromInstance):
23584 (CField::setValueToInstance):
23585 * bindings/c/c_utility.cpp:
23586 (convertNPStringToUTF16):
23587 (convertUTF8ToUTF16):
23588 (coerceValueToNPVariantStringType):
23589 (convertValueToNPVariant):
23590 (convertNPVariantToValue):
23591 * bindings/c/c_utility.h:
23592 * bindings/npruntime.cpp:
23593 (NPN_GetIdentifier):
23594 (NPN_GetIdentifiers):
23595 (NPN_UTF8FromIdentifier):
23596 (NPN_VariantIsVoid):
23597 (NPN_VariantIsNull):
23598 (NPN_VariantIsUndefined):
23599 (NPN_VariantIsBool):
23600 (NPN_VariantIsInt32):
23601 (NPN_VariantIsDouble):
23602 (NPN_VariantIsString):
23603 (NPN_VariantIsObject):
23604 (NPN_VariantToBool):
23605 (NPN_VariantToString):
23606 (NPN_VariantToInt32):
23607 (NPN_VariantToDouble):
23608 (NPN_VariantToObject):
23609 (NPN_InitializeVariantAsVoid):
23610 (NPN_InitializeVariantAsNull):
23611 (NPN_InitializeVariantAsUndefined):
23612 (NPN_InitializeVariantWithBool):
23613 (NPN_InitializeVariantWithInt32):
23614 (NPN_InitializeVariantWithDouble):
23615 (NPN_InitializeVariantWithString):
23616 (NPN_InitializeVariantWithStringCopy):
23617 (NPN_InitializeVariantWithObject):
23618 (NPN_InitializeVariantWithVariant):
23619 (NPN_ReleaseVariantValue):
23620 (NPN_CreateObject):
23621 (NPN_RetainObject):
23622 (NPN_ReleaseObject):
23623 (NPN_IsKindOfClass):
23624 (NPN_SetExceptionWithUTF8):
23625 (NPN_SetException):
23626 * bindings/npruntime.h:
23628 (_NPString::_NPVariant::):
23629 * bindings/testbindings.cpp:
23644 2004-04-22 Darin Adler <darin@apple.com>
23646 Reviewed by Maciej.
23648 - fixed <rdar://problem/3627473>: "REGRESSION (125-137): memory trasher in UString::append, causing many different crashes"
23651 (KJS::UString::expandCapacity): Fix sizeof(UChar *) that should be sizeof(UChar).
23652 Was resulting in a buffer 2x the needed size.
23653 (KJS::UString::expandPreCapacity): Ditto.
23654 (KJS::UString::append): Fix malloc that is missing a sizeof(UChar).
23656 2004-04-21 Maciej Stachowiak <mjs@apple.com>
23660 Preliminary change for conservative GC. Create "protected"
23661 subclasses to GC-protect objects when on heap, since we will soon
23662 remove the built-in refcounting of the normal wrapper classes. Use
23665 * JavaScriptCore.pbproj/project.pbxproj:
23668 (KJS::InterpreterImp::globalObject):
23669 * kjs/interpreter.h:
23670 * kjs/property_map.cpp:
23672 * kjs/reference_list.cpp:
23674 2004-04-19 Maciej Stachowiak <mjs@apple.com>
23678 Optimize prepend using the shared substring optimization. Also,
23679 limit the applicability of shared append and shared prepend. If
23680 you overdo it, it does more harm than good, because you create a
23681 bunch of strings that are disqualified from future shared
23682 append/prepend, for not much immediate savings in allocate/copy
23687 (KJS::UString::Rep::create):
23688 (KJS::UString::expandedSize):
23689 (KJS::UString::usedPreCapacity):
23690 (KJS::UString::expandCapacity):
23691 (KJS::UString::expandPreCapacity):
23692 (KJS::UString::UString):
23693 (KJS::UString::append):
23694 (KJS::UString::operator=):
23696 (KJS::UString::Rep::data):
23698 2004-04-16 Maciej Stachowiak <mjs@apple.com>
23699 Reviewed by Richard.
23701 No more need for Completion or Reference to privately inherit from
23702 Value, none of the superclass functionality is used.
23704 * kjs/completion.h:
23709 2004-04-16 Richard Williamson <rjw@apple.com>
23711 Added interpreter lock protection around object creation.
23715 * bindings/runtime.cpp:
23716 (Instance::createRuntimeObject):
23718 2004-04-16 Maciej Stachowiak <mjs@apple.com>
23722 Another JavaScript speed improvement: use the mechanism from
23723 string append optimization to make taking a substring fast, again
23724 sharing the buffer.
23726 A further 22% improvement on the 24fun string speed test.
23730 (KJS::UString::Rep::create):
23731 (KJS::UString::UString):
23732 (KJS::UString::append):
23733 (KJS::UString::operator=):
23734 (KJS::UString::substr):
23736 (KJS::UString::Rep::data):
23738 2004-04-13 Maciej Stachowiak <mjs@apple.com>
23742 - fixed <rdar://problem/3600695>: String manipulation in JavaScript 24fun test is very slow (slow)
23743 - fixed <rdar://problem/3600691>: Table generation test is really slow
23744 - fixed <rdar://problem/3600661>: 24fun date test is really slow
23746 80% speedup on the string test, lesser speedups on the other two.
23748 Two different optimizations here:
23750 1) Avoid large overhead of scanning strings to see if they are all
23751 ASCII before numeric conversion.
23754 (AssignNode::evaluate): Don't convert to integer until we know for
23755 sure the operation will need it. Attempting to convert strings to
23756 numbers is a waste when they are being appended with +=.
23758 2) Avoid huge cost of appending strings.
23760 This is done by allowing multiple strings to share a buffer but
23761 actually use different ranges of it. The first time a string is
23762 appended to, we start leaving at least 10% extra space in the
23763 buffer, so doing N appends to the same string takes O(log N)
23764 mallocs instead of O(N).
23766 * kjs/identifier.cpp:
23767 (KJS::Identifier::equal):
23768 (KJS::Identifier::add):
23771 (KJS::UCharReference::operator=):
23772 (KJS::UCharReference::ref):
23773 (KJS::UString::Rep::create):
23774 (KJS::UString::Rep::destroy):
23775 (KJS::UString::expandedSize):
23776 (KJS::UString::usedCapacity):
23777 (KJS::UString::expandCapacity):
23778 (KJS::UString::UString):
23779 (KJS::UString::null):
23780 (KJS::UString::append):
23781 (KJS::UString::operator=):
23782 (KJS::UString::toStrictUInt32):
23783 (KJS::UString::detach):
23784 (KJS::KJS::operator==):
23786 (KJS::UString::Rep::data):
23787 (KJS::UString::Rep::hash):
23789 2004-04-09 Maciej Stachowiak <mjs@apple.com>
23793 - fix deployment build by avoiding deployment-only warning.
23795 * kjs/scope_chain.cpp:
23796 (KJS::ScopeChain::bottom):
23798 2004-04-09 Maciej Stachowiak <mjs@apple.com>
23802 Changed things so that newly created objects get a prototype based
23803 on the scope chain of the current function, rather than the
23804 interpreter that started execution. This fixes the following bugs:
23806 <rdar://problem/3368523>: ARCH: wrong prototype used to create new objects (hang on lookup.atomica.com)
23807 <rdar://problem/3559173>: ARCH: Cannot scan using a HP Jetdirect product (JS object prototypes bind incorrectly)
23809 * JavaScriptCore.pbproj/project.pbxproj:
23810 * kjs/array_object.cpp:
23811 (CompareWithCompareFunctionArguments::CompareWithCompareFunctionArguments):
23812 (ArrayProtoFuncImp::ArrayProtoFuncImp):
23813 (ArrayProtoFuncImp::call):
23814 (ArrayObjectImp::construct):
23815 * kjs/bool_object.cpp:
23816 (BooleanObjectImp::construct):
23817 * kjs/date_object.cpp:
23818 (DateProtoFuncImp::DateProtoFuncImp):
23819 (DateProtoFuncImp::call):
23820 (DateObjectImp::construct):
23821 * kjs/error_object.cpp:
23822 (ErrorObjectImp::construct):
23823 * kjs/function.cpp:
23824 (FunctionImp::FunctionImp):
23825 (FunctionImp::call):
23826 (DeclaredFunctionImp::construct):
23827 (ArgumentsImp::ArgumentsImp):
23828 (GlobalFuncImp::call):
23829 * kjs/function_object.cpp:
23830 (FunctionProtoFuncImp::call):
23831 (FunctionObjectImp::construct):
23832 * kjs/internal.cpp:
23833 (BooleanImp::toObject):
23834 (StringImp::toObject):
23835 (NumberImp::toObject):
23836 (InterpreterImp::InterpreterImp):
23837 (InterpreterImp::clear):
23838 (InterpreterImp::interpreterWithGlobalObject):
23840 * kjs/interpreter.cpp:
23841 (ExecState::lexicalInterpreter):
23842 * kjs/interpreter.h:
23843 (KJS::ExecState::dynamicInterpreter):
23844 (KJS::ExecState::interpreter):
23845 * kjs/math_object.cpp:
23846 (MathFuncImp::MathFuncImp):
23848 (StatementNode::hitStatement):
23849 (StatementNode::abortStatement):
23850 (RegExpNode::evaluate):
23851 (ElementNode::evaluate):
23852 (ArrayNode::evaluate):
23853 (ObjectLiteralNode::evaluate):
23854 (PropertyValueNode::evaluate):
23855 (FunctionCallNode::evaluate):
23856 (FuncDeclNode::processFuncDecl):
23857 (FuncExprNode::evaluate):
23858 * kjs/number_object.cpp:
23859 (NumberObjectImp::construct):
23861 (KJS::ObjectImp::defaultValue):
23862 (KJS::Error::create):
23863 * kjs/object_object.cpp:
23864 (ObjectObjectImp::construct):
23865 * kjs/reference.cpp:
23866 (Reference::putValue):
23867 * kjs/regexp_object.cpp:
23868 (RegExpProtoFuncImp::call):
23869 (RegExpObjectImp::arrayOfMatches):
23870 (RegExpObjectImp::construct):
23871 * kjs/scope_chain.cpp:
23872 (KJS::ScopeChain::bottom):
23873 * kjs/scope_chain.h:
23874 * kjs/string_object.cpp:
23875 (StringProtoFuncImp::StringProtoFuncImp):
23876 (StringProtoFuncImp::call):
23877 (StringObjectImp::construct):
23883 2004-03-31 Richard Williamson <rjw@apple.com>
23885 Tedious renames based on feedback from plugin-futures list.
23886 NP_ functions are renamed with NPN_ prefix.
23887 Types prefix renamed from NP_ to NP.
23888 NPN_CreateStringWithUTF8 and NPN_SetExceptionWithUTF8 now take a length, optionally -1 if string is null terminated.
23890 No review because this was just a renaming patch.
23892 * bindings/NP_jsobject.cpp:
23895 (identiferFromNPIdentifier):
23900 (NPN_RemoveProperty):
23902 (NPN_GetPropertyAtIndex):
23903 (NPN_SetPropertyAtIndex):
23904 * bindings/NP_jsobject.h:
23905 * bindings/c/c_class.cpp:
23906 (CClass::_commonInit):
23907 (CClass::classForIsA):
23909 (CClass::methodsNamed):
23910 (CClass::fieldNamed):
23911 * bindings/c/c_class.h:
23912 * bindings/c/c_instance.cpp:
23913 (CInstance::CInstance):
23914 (CInstance::~CInstance):
23915 (CInstance::operator=):
23916 (CInstance::invokeMethod):
23917 (CInstance::defaultValue):
23918 * bindings/c/c_instance.h:
23919 (KJS::Bindings::CInstance::getObject):
23920 * bindings/c/c_runtime.cpp:
23921 (CField::valueFromInstance):
23922 (CField::setValueToInstance):
23923 * bindings/c/c_runtime.h:
23924 (KJS::Bindings::CField::CField):
23925 (KJS::Bindings::CField::name):
23926 (KJS::Bindings::CMethod::CMethod):
23927 (KJS::Bindings::CMethod::name):
23928 * bindings/c/c_utility.cpp:
23929 (coerceValueToNPString):
23930 (convertValueToNPValueType):
23931 (convertNPValueTypeToValue):
23932 * bindings/c/c_utility.h:
23933 * bindings/npruntime.cpp:
23934 (NPN_IdentifierFromUTF8):
23935 (NPN_IsValidIdentifier):
23936 (NPN_GetIdentifiers):
23937 (NPN_UTF8FromIdentifier):
23938 (NPN_CreateObject):
23939 (NPN_RetainObject):
23940 (NPN_ReleaseObject):
23941 (NPN_IsKindOfClass):
23942 (NPN_SetExceptionWithUTF8):
23943 (NPN_SetException):
23945 (NPN_CreateNumberWithInt):
23946 (NPN_CreateNumberWithFloat):
23947 (NPN_CreateNumberWithDouble):
23948 (NPN_IntFromNumber):
23949 (NPN_FloatFromNumber):
23950 (NPN_DoubleFromNumber):
23952 (NPN_CreateStringWithUTF8):
23953 (NPN_CreateStringWithUTF16):
23954 (NPN_DeallocateUTF8):
23955 (NPN_UTF8FromString):
23956 (NPN_UTF16FromString):
23957 (NPN_StringLength):
23959 (NPN_CreateBoolean):
23960 (NPN_BoolFromBoolean):
23963 (undefinedAllocate):
23964 (NPN_GetUndefined):
23968 (NPN_CreateArrayV):
23969 (NPN_ObjectAtIndex):
23970 * bindings/npruntime.h:
23971 * bindings/runtime.cpp:
23972 (Instance::createBindingForLanguageInstance):
23973 * bindings/testbindings.cpp:
23974 (initializeIdentifiers):
23994 2004-03-31 Richard Williamson <rjw@apple.com>
23996 Changed references to NP_runtime.h to npruntime.h
23998 * JavaScriptCore.pbproj/project.pbxproj:
23999 * bindings/NP_jsobject.h:
24000 * bindings/c/c_class.h:
24001 * bindings/c/c_instance.h:
24002 * bindings/c/c_runtime.h:
24003 * bindings/c/c_utility.h:
24004 * bindings/npruntime.cpp:
24006 2004-03-31 Richard Williamson <rjw@apple.com>
24008 Renamed NP_runtime.h to npruntime.h to match Netscape SDK.
24010 * JavaScriptCore.pbproj/project.pbxproj:
24011 * bindings/NP_jsobject.h:
24012 * bindings/npruntime.cpp:
24016 2004-03-23 Richard Williamson <rjw@apple.com>
24018 Added implementation of KJS::Value <-> NP_Object conversion functions.
24019 Augmented test program for 'C' bindings.
24020 Added asserts and parameter checking to all public API.
24024 * JavaScriptCore.pbproj/project.pbxproj:
24025 * bindings/NP_jsobject.cpp:
24027 * bindings/NP_jsobject.h: Added.
24028 * bindings/NP_runtime.cpp:
24029 (NP_IdentifierFromUTF8):
24030 (NP_IsValidIdentifier):
24031 (NP_GetIdentifiers):
24034 (NP_ReleaseObject):
24035 (NP_IsKindOfClass):
24036 (NP_SetExceptionWithUTF8):
24038 (NP_IntFromNumber):
24039 (NP_FloatFromNumber):
24040 (NP_DoubleFromNumber):
24041 (NP_CreateStringWithUTF8):
24042 (NP_CreateStringWithUTF16):
24043 (NP_DeallocateUTF8):
24044 (NP_UTF8FromString):
24045 (NP_UTF16FromString):
24047 (NP_BoolFromBoolean):
24048 * bindings/NP_runtime.h:
24049 * bindings/c/c_instance.cpp:
24050 (CInstance::invokeMethod):
24051 * bindings/c/c_utility.cpp:
24052 (coerceValueToNPString):
24053 (convertValueToNPValueType):
24054 (convertNPValueTypeToValue):
24055 * bindings/c/c_utility.h:
24056 * bindings/test.js:
24057 * bindings/testC.js: Added.
24058 * bindings/testbindings.cpp:
24068 (myInterfaceInvoke):
24069 (myInterfaceAllocate):
24073 2004-03-19 Darin Adler <darin@apple.com>
24077 - fixed problem with methods like setUTCHour
24079 * kjs/date_object.cpp: (DateProtoFuncImp::call): Fix conversion back to time_t to use the appropriate
24080 GMT vs. local time function based on the utc flag.
24082 2004-03-17 Richard Williamson <rjw@apple.com>
24084 Added a context parameter to result callbacks use by JavaScriptObject functions. This was a change requested by Eric Carlson on the QT plugin team.
24088 * bindings/NP_jsobject.cpp:
24093 (NP_GetPropertyAtIndex):
24094 * bindings/NP_runtime.h:
24096 2004-03-16 Richard Williamson <rjw@apple.com>
24098 Fixed 3590169. Regression (crash) caused by the switch to MethodLists. Crash when attempting to invoke a method from JavaScript to Java that is not implemented.
24102 * bindings/jni/jni_class.cpp:
24103 (JavaClass::methodsNamed):
24105 2004-03-15 Richard Williamson <rjw@apple.com>
24107 Fixed 3570854. Don't attempt to convert Null to strings. We
24108 were incorrectly converting to "Null".
24110 Actually fixed by Scott Kovatch.
24112 Reviewed by Richard.
24114 * bindings/jni/jni_utility.cpp:
24115 (KJS::Bindings::convertValueToJValue):
24119 2004-03-11 Richard Williamson <rjw@apple.com>
24121 Stitched together the NP stuff to our language independent
24122 JavaScript binding stuff. Very close to being done.
24124 Added program to test C bindings (and NP stuff). Just tests
24125 properties. Will add methods and JavaScript access, etc.
24127 Updated Makefile.am to account for new bindings/c directory.
24129 Change NP_UTF8 from "const char *" to "char" to allow for
24130 declarations like "const NP_UTF8 *" and "NP_UTF8 *". Ditto
24133 Added NP_IsValidIdentifier().
24137 * JavaScriptCore.pbproj/project.pbxproj:
24139 * bindings/NP_jsobject.cpp:
24140 (identiferFromNPIdentifier):
24142 * bindings/NP_runtime.cpp:
24143 (NP_IdentifierFromUTF8):
24144 (NP_IsValidIdentifier):
24145 (NP_GetIdentifiers):
24146 (NP_UTF8FromIdentifier):
24147 (NP_SetExceptionWithUTF8):
24149 (NP_CreateStringWithUTF8):
24150 (NP_CreateStringWithUTF16):
24151 (NP_UTF8FromString):
24152 (NP_UTF16FromString):
24153 * bindings/NP_runtime.h:
24154 * bindings/c/c_class.cpp: Added.
24155 (CClass::_commonDelete):
24156 (CClass::_commonCopy):
24157 (CClass::_commonInit):
24158 (_createClassesByIsAIfNecessary):
24159 (CClass::classForIsA):
24162 (CClass::methodsNamed):
24163 (CClass::fieldNamed):
24164 * bindings/c/c_class.h: Added.
24165 (KJS::Bindings::CClass::~CClass):
24166 (KJS::Bindings::CClass::CClass):
24167 (KJS::Bindings::CClass::operator=):
24168 (KJS::Bindings::CClass::constructorAt):
24169 (KJS::Bindings::CClass::numConstructors):
24170 * bindings/c/c_instance.cpp: Added.
24171 (CInstance::CInstance):
24172 (CInstance::~CInstance):
24173 (CInstance::operator=):
24174 (CInstance::getClass):
24175 (CInstance::begin):
24177 (CInstance::invokeMethod):
24178 (CInstance::defaultValue):
24179 (CInstance::stringValue):
24180 (CInstance::numberValue):
24181 (CInstance::booleanValue):
24182 (CInstance::valueOf):
24183 * bindings/c/c_instance.h: Added.
24184 (KJS::Bindings::CInstance::getObject):
24185 * bindings/c/c_runtime.cpp: Added.
24186 (CField::valueFromInstance):
24187 (CField::setValueToInstance):
24188 * bindings/c/c_runtime.h: Added.
24189 (KJS::Bindings::CField::CField):
24190 (KJS::Bindings::CField::name):
24191 (KJS::Bindings::CField::type):
24192 (KJS::Bindings::CMethod::CMethod):
24193 (KJS::Bindings::CMethod::name):
24194 (KJS::Bindings::CMethod::numParameters):
24195 * bindings/c/c_utility.cpp: Added.
24196 (coerceValueToNPValueType):
24197 (convertValueToNPValueType):
24198 (convertNPValueTypeToValue):
24199 * bindings/c/c_utility.h: Added.
24200 * bindings/make_testbindings:
24201 * bindings/runtime.cpp:
24202 (Instance::createBindingForLanguageInstance):
24203 * bindings/runtime.h:
24204 (KJS::Bindings::Instance::):
24205 * bindings/testbindings.cpp: Added.
24206 (initializeIdentifiers):
24207 (myInterfaceHasProperty):
24208 (myInterfaceHasMethod):
24209 (myInterfaceGetProperty):
24210 (myInterfaceSetProperty):
24211 (myInterfaceInvoke):
24212 (myInterfaceAllocate):
24213 (myInterfaceInvalidate):
24214 (myInterfaceDeallocate):
24215 (GlobalImp::className):
24216 (readJavaScriptFromFile):
24219 2004-03-10 Richard Williamson <rjw@apple.com>
24221 Made changes to support new asychronous approach to calls from
24222 plugin to JavaScript
24226 * bindings/NP_jsobject.cpp:
24231 (NP_GetPropertyAtIndex):
24232 * bindings/NP_runtime.h:
24233 * bindings/make_testbindings:
24234 * bindings/runtime.cpp:
24235 (Instance::createBindingForLanguageInstance):
24237 2004-03-10 Richard Williamson <rjw@apple.com>
24239 Updated header to include proposed changes from
24240 plugin-futures list. Calls from plugin to JavaScript
24241 are now asynchronous.
24245 * bindings/NP_runtime.h:
24249 2004-03-04 Richard Williamson <rjw@apple.com>
24251 Implementation of NP_JavaScriptObject. This is the 'C' class
24252 that wraps a JavaScript object.
24256 * JavaScriptCore.pbproj/project.pbxproj:
24257 * bindings/NP_jsobject.cpp: Added.
24258 (coerceValueToNPValueType):
24259 (convertValueToNPValueType):
24260 (convertNPValueTypeToValue):
24264 (identiferFromNPIdentifier):
24269 (NP_RemoveProperty):
24271 (NP_GetPropertyAtIndex):
24272 (NP_SetPropertyAtIndex):
24273 * bindings/NP_runtime.cpp:
24274 (NP_ObjectAtIndex):
24275 * bindings/NP_runtime.h:
24276 * bindings/runtime_object.h:
24278 2004-03-04 Richard Williamson <rjw@apple.com>
24280 Added NP_Array implementation.
24282 Changed NP_Boolean to just depend on two static instances, no
24283 space is required for values.
24287 * bindings/NP_runtime.cpp:
24288 (NP_CreateBoolean):
24289 (NP_BoolFromBoolean):
24294 (NP_ObjectAtIndex):
24295 * bindings/NP_runtime.h:
24297 2004-03-03 Darin Adler <darin@apple.com>
24301 * English.lproj/InfoPlist.strings: Removed. No need to localize the version and
24302 copyright string, and that's all that was in here.
24303 * JavaScriptCore.pbproj/project.pbxproj: Removed InfoPlist.strings from build.
24305 2004-03-03 Richard Williamson <rjw@apple.com>
24307 More 'C' binding implementation. Fleshed out all the
24308 'primitive' data types.
24312 * bindings/NP_runtime.cpp:
24313 (NP_ReleaseObject):
24316 (stringDeallocate):
24317 (NP_CreateStringWithUTF8):
24318 (NP_CreateStringWithUTF16):
24319 (NP_UTF8FromString):
24320 (NP_UTF16FromString):
24323 (booleanDeallocate):
24324 (NP_CreateBoolean):
24325 (NP_BoolFromBoolean):
24329 (undefinedAllocate):
24330 (undefinedDeallocate):
24332 * bindings/NP_runtime.h:
24334 2004-03-03 Richard Williamson <rjw@apple.com>
24336 More 'C' binding implementation.
24340 * bindings/NP_runtime.cpp:
24343 (getIdentifierDictionary):
24344 (NP_IdentifierFromUTF8):
24345 (NP_UTF8FromIdentifier):
24347 (NP_ReleaseObject):
24348 (NP_IsKindOfClass):
24350 (NP_CreateNumberWithInt):
24351 (NP_CreateNumberWithFloat):
24352 (NP_CreateNumberWithDouble):
24353 (NP_IntFromNumber):
24354 (NP_FloatFromNumber):
24355 (NP_DoubleFromNumber):
24356 * bindings/NP_runtime.h:
24358 2004-03-02 Richard Williamson <rjw@apple.com>
24360 Removed retain/release from NP_Class. Classes will not be allowed to implement their
24361 own customer retain/release scheme.
24365 * bindings/NP_runtime.cpp:
24367 (NP_ReleaseObject):
24368 * bindings/NP_runtime.h:
24370 2004-03-02 Richard Williamson <rjw@apple.com>
24372 C binding API. Partial implementation.
24374 Completed ObjectiveC bindings (not based on the C API). These will re-implemented over the C binding API, but I wanted to get this code in the tree.
24376 Factored root object reference counting scheme. It is now useful independent
24381 * JavaScriptCore.pbproj/project.pbxproj:
24382 * bindings/NP_runtime.cpp: Added.
24383 (NP_IdentifierFromUTF8):
24384 (NP_GetIdentifiers):
24385 (NP_UTF8FromIdentifier):
24388 (NP_ReleaseObject):
24389 (NP_IsKindOfClass):
24395 (NP_RemoveProperty):
24397 (NP_GetPropertyAtIndex):
24398 (NP_SetPropertyAtIndex):
24399 (NP_CreateNumberWithInt):
24400 (NP_CreateNumberWithFloat):
24401 (NP_CreateNumberWithDouble):
24402 (NP_IntFromNumber):
24403 (NP_FloatFromNumber):
24404 (NP_DoubleFromNumber):
24405 (NP_CreateStringWithUTF8):
24406 (NP_CreateStringWithUTF16):
24407 (NP_UTF8FromString):
24408 (NP_UTF16FromString):
24409 (NP_CreateBoolean):
24410 (NP_BoolFromBoolean):
24415 (NP_ObjectAtIndex):
24416 * bindings/NP_runtime.h: Added.
24417 * bindings/jni/jni_jsobject.cpp:
24418 (JSObject::invoke):
24419 (JSObject::finalize):
24420 (JSObject::createNative):
24421 (JSObject::convertValueToJObject):
24422 * bindings/jni/jni_jsobject.h:
24423 * bindings/objc/objc_jsobject.h:
24424 * bindings/objc/objc_jsobject.mm:
24426 (windowJavaScriptObject):
24427 (-[JavaScriptObject initWithObjectImp:KJS::root:Bindings::]):
24428 (-[JavaScriptObject dealloc]):
24429 (-[JavaScriptObject _convertValueToObjcValue:KJS::]):
24430 (-[JavaScriptObject call:arguments:]):
24431 (-[JavaScriptObject evaluate:]):
24432 (-[JavaScriptObject getMember:]):
24433 (-[JavaScriptObject setMember:value:]):
24434 (-[JavaScriptObject removeMember:]):
24435 (-[JavaScriptObject toString]):
24436 (-[JavaScriptObject getSlot:]):
24437 (-[JavaScriptObject setSlot:value:]):
24438 * bindings/objc/objc_utility.h:
24439 * bindings/objc/objc_utility.mm:
24440 (KJS::Bindings::convertValueToObjcValue):
24441 * bindings/runtime_root.cpp: Added.
24442 (getReferencesByRootDictionary):
24443 (getReferencesDictionary):
24444 (KJS::Bindings::findReferenceDictionary):
24445 (KJS::Bindings::rootForImp):
24446 (KJS::Bindings::addNativeReference):
24447 (KJS::Bindings::removeNativeReference):
24448 (completedJavaScriptAccess):
24449 (initializeJavaScriptAccessLock):
24450 (lockJavaScriptAccess):
24451 (unlockJavaScriptAccess):
24452 (RootObject::dispatchToJavaScriptThread):
24453 (performJavaScriptAccess):
24454 (RootObject::setFindRootObjectForNativeHandleFunction):
24455 (RootObject::removeAllNativeReferences):
24456 * bindings/runtime_root.h: Added.
24457 (KJS::Bindings::RootObject::RootObject):
24458 (KJS::Bindings::RootObject::~RootObject):
24459 (KJS::Bindings::RootObject::setRootObjectImp):
24460 (KJS::Bindings::RootObject::rootObjectImp):
24461 (KJS::Bindings::RootObject::setInterpreter):
24462 (KJS::Bindings::RootObject::interpreter):
24463 (KJS::Bindings::RootObject::findRootObjectForNativeHandleFunction):
24464 (KJS::Bindings::RootObject::runLoop):
24465 (KJS::Bindings::RootObject::performJavaScriptSource):
24471 2004-02-18 Richard Williamson <rjw@apple.com>
24473 Added NSNumber/Number conversion.
24475 Removed some unnecessary KJS:: namespace specifiers.
24479 * bindings/objc/objc_utility.mm:
24480 (KJS::Bindings::convertValueToObjcValue):
24481 (KJS::Bindings::convertObjcValueToValue):
24482 * bindings/runtime_array.h:
24484 2004-02-18 Richard Williamson <rjw@apple.com>
24486 Added support for export NSArrays.
24488 Updated valueAt() to take an ExecState so we can throw
24491 Implemented excludeSelectorFromJavaScript: in ObjcClass. This allows
24492 ObjectiveC classes to control the visibility of their methods in
24497 * bindings/jni/jni_runtime.cpp:
24498 (JavaField::valueFromInstance):
24499 (JavaArray::valueAt):
24500 * bindings/jni/jni_runtime.h:
24501 * bindings/objc/objc_class.mm:
24502 (ObjcClass::methodsNamed):
24503 * bindings/objc/objc_runtime.h:
24504 (KJS::Bindings::ObjcArray::getObjcArray):
24505 * bindings/objc/objc_runtime.mm:
24506 (ObjcField::valueFromInstance):
24507 (ObjcField::setValueToInstance):
24508 (ObjcArray::ObjcArray):
24509 (ObjcArray::~ObjcArray):
24510 (ObjcArray::operator=):
24511 (ObjcArray::setValueAt):
24512 (ObjcArray::valueAt):
24513 (ObjcArray::getLength):
24514 * bindings/objc/objc_utility.mm:
24515 (KJS::Bindings::convertValueToObjcValue):
24516 (KJS::Bindings::convertObjcValueToValue):
24517 * bindings/runtime.cpp:
24518 (Instance::getValueOfField):
24519 * bindings/runtime.h:
24520 * bindings/runtime_array.cpp:
24521 (RuntimeArrayImp::get):
24522 * bindings/runtime_object.cpp:
24523 (RuntimeObjectImp::get):
24525 2004-02-17 Richard Williamson <rjw@apple.com>
24527 Added String <-> NSString conversion.
24528 Added tests of String <-> NSString conversion to test program.
24532 * bindings/objc/objc_utility.mm:
24533 (KJS::Bindings::convertValueToObjcValue):
24534 (KJS::Bindings::convertObjcValueToValue):
24535 * bindings/test.js:
24536 * bindings/testbindings.mm:
24537 (-[MyFirstInterface getString]):
24539 2004-02-15 Darin Adler <darin@apple.com>
24543 * JavaScriptCore.pbproj/project.pbxproj: Tweak build styles a bit, fixing OptimizedWithSymbols,
24544 and removing redundant settings of things that match defaults in other build styles.
24546 2004-02-13 Richard Williamson <rjw@apple.com>
24548 Work towards the JavaScript ObjC bindings. The bindings now work for
24549 simple scalar types. testbindings.mm is an illustration of how the
24554 * JavaScriptCore.pbproj/project.pbxproj:
24556 * bindings/jni/jni_class.cpp:
24557 (JavaClass::methodsNamed):
24558 * bindings/jni/jni_class.h:
24559 * bindings/jni/jni_instance.cpp:
24560 (JavaInstance::invokeMethod):
24561 * bindings/jni/jni_instance.h:
24562 * bindings/jni/jni_runtime.h:
24563 (KJS::Bindings::JavaMethod::returnType):
24564 * bindings/make_testbindings: Added.
24565 * bindings/objc/objc_class.h: Added.
24566 (KJS::Bindings::ObjcClass::~ObjcClass):
24567 (KJS::Bindings::ObjcClass::ObjcClass):
24568 (KJS::Bindings::ObjcClass::operator=):
24569 (KJS::Bindings::ObjcClass::constructorAt):
24570 (KJS::Bindings::ObjcClass::numConstructors):
24571 * bindings/objc/objc_class.mm: Added.
24572 (ObjcClass::_commonDelete):
24573 (ObjcClass::_commonCopy):
24574 (ObjcClass::_commonInit):
24575 (_createClassesByIsAIfNecessary):
24576 (ObjcClass::classForIsA):
24577 (ObjcClass::ObjcClass):
24579 (ObjcClass::methodsNamed):
24580 (ObjcClass::fieldNamed):
24581 * bindings/objc/objc_header.h: Added.
24582 * bindings/objc/objc_instance.h: Added.
24583 (KJS::Bindings::ObjcInstance::getObject):
24584 * bindings/objc/objc_instance.mm: Added.
24585 (ObjcInstance::ObjcInstance):
24586 (ObjcInstance::~ObjcInstance):
24587 (ObjcInstance::operator=):
24588 (ObjcInstance::begin):
24589 (ObjcInstance::end):
24590 (ObjcInstance::getClass):
24591 (ObjcInstance::invokeMethod):
24592 (ObjcInstance::defaultValue):
24593 (ObjcInstance::stringValue):
24594 (ObjcInstance::numberValue):
24595 (ObjcInstance::booleanValue):
24596 (ObjcInstance::valueOf):
24597 * bindings/objc/objc_jsobject.h: Added.
24598 * bindings/objc/objc_jsobject.mm: Added.
24599 * bindings/objc/objc_runtime.h:
24600 (KJS::Bindings::ObjcField::~ObjcField):
24601 (KJS::Bindings::ObjcField::ObjcField):
24602 (KJS::Bindings::ObjcField::operator=):
24603 (KJS::Bindings::ObjcMethod::ObjcMethod):
24604 (KJS::Bindings::ObjcMethod::~ObjcMethod):
24605 (KJS::Bindings::ObjcMethod::operator=):
24606 * bindings/objc/objc_runtime.mm: Added.
24607 (ObjcMethod::ObjcMethod):
24608 (ObjcMethod::name):
24609 (ObjcMethod::numParameters):
24610 (ObjcMethod::getMethodSignature):
24611 (ObjcField::ObjcField):
24614 (ObjcField::valueFromInstance):
24615 (ObjcField::setValueToInstance):
24616 * bindings/objc/objc_utility.h: Added.
24618 * bindings/objc/objc_utility.mm: Added.
24619 (KJS::Bindings::JSMethodNameToObjCMethodName):
24620 (KJS::Bindings::convertValueToObjcValue):
24621 (KJS::Bindings::convertObjcValueToValue):
24622 (KJS::Bindings::objcValueTypeForType):
24623 * bindings/runtime.cpp:
24624 (MethodList::MethodList):
24625 (MethodList::operator=):
24626 (Instance::setValueOfField):
24627 (Instance::createBindingForLanguageInstance):
24628 (Instance::createRuntimeObject):
24629 * bindings/runtime.h:
24630 * bindings/runtime_method.cpp:
24631 (RuntimeMethodImp::RuntimeMethodImp):
24632 (RuntimeMethodImp::get):
24633 (RuntimeMethodImp::call):
24634 * bindings/runtime_method.h:
24635 * bindings/runtime_object.cpp:
24636 (RuntimeObjectImp::get):
24637 (RuntimeObjectImp::hasProperty):
24638 * bindings/test.js: Added.
24639 * bindings/testbindings.mm: Added.
24640 (-[MySecondInterface init]):
24641 (-[MyFirstInterface init]):
24642 (-[MyFirstInterface dealloc]):
24643 (+[MyFirstInterface JavaScriptNameForSelector:]):
24644 (-[MyFirstInterface getInt]):
24645 (-[MyFirstInterface setInt:]):
24646 (-[MyFirstInterface getMySecondInterface]):
24647 (-[MyFirstInterface logMessage:]):
24648 (GlobalImp::className):
24649 (readJavaScriptFromFile):
24654 2004-02-08 Darin Adler <darin@apple.com>
24658 - fixed things seen in the profile, for a total speedup of 4% on cvs-base (including changes across all projects)
24660 * JavaScriptCorePrefix.h: Add a workaround for a bug in our system headers that prevents the <ctype.h>
24661 macros from working right in C++ code that uses the <cctype> header.
24664 (KJS::inlineUTF8SequenceLengthNonASCII): Added.
24665 (KJS::UTF8SequenceLengthNonASCII): Added.
24666 (KJS::inlineUTF8SequenceLength): Added.
24667 (KJS::UTF8SequenceLength): Calls inlineUTF8SequenceLengthNonASCII now.
24668 (KJS::decodeUTF8Sequence): Use new inlineUTF8SequenceLengthNonASCII; faster for ASCII.
24669 (KJS::createSortedOffsetsArray): Add special case for 1, 2, and 3 offsets, so we don't do qsort for those.
24670 (KJS::convertUTF16OffsetsToUTF8Offsets): Use new inlineUTF8SequenceLengthNonASCII; faster for ASCII.
24671 (KJS::convertUTF8OffsetsToUTF16Offsets): Use new inlineUTF8SequenceLengthNonASCII; faster for ASCII.
24673 - fixed the test program so it won't hit the interpreter lock assertion
24675 * kjs/testkjs.cpp: (main): Just lock around the whole thing, since the test is singly threaded.
24679 2004-02-06 Richard Williamson <rjw@apple.com>
24681 Fixed 3550242 and 3546977. The first diff prevents an assert from firing. The second diff prevents a JavaScript exception, caused be an invalid conversion, which has a downstream consequence of preventing a valid conversion.
24685 * bindings/jni/jni_jsobject.cpp:
24686 (JSObject::toString):
24687 * bindings/jni/jni_utility.cpp:
24688 (KJS::Bindings::convertValueToJValue):
24690 2004-02-02 Darin Adler <darin@apple.com>
24692 Reviewed by Maciej.
24694 - fixed <rdar://problem/3546613>: array of negative size leads to crash (test page at oscar.the-rileys.net)
24696 * kjs/array_object.cpp:
24697 (ArrayInstanceImp::ArrayInstanceImp): If the length is greater than 10,000, don't allocate an array until
24698 we start putting values in. This prevents new Array(2147483647) from causing trouble.
24699 (ArrayObjectImp::construct): Check number as described in specification, and raise a range error if the
24700 number is out of range. This prevents new Array(-1) from causing trouble.
24702 - fixed <rdar://problem/3545756>: Math.round screws up on numbers bigger than 2^31 (incorrect results on HP-35 calculator page)
24704 * kjs/math_object.cpp: (MathFuncImp::call): Change implementation to be much simpler and not involve
24705 casting to int. Results now match those in other browsers.
24707 2004-02-02 Darin Adler <darin@apple.com>
24709 Reviewed by Maciej.
24711 - fixed <rdar://problem/3519285>: integer operations on large negative numbers yield bad results (discovered with "HTMLCrypt")
24712 - fixed other related overflow issues
24714 * kjs/value.h: Changed return types of toInteger, toInt32, toUInt32, and toUInt16.
24716 (ValueImp::toInteger): Change to return a double, since this operation, from the ECMA specification,
24717 must not restrict values to the range of a particular integer type.
24718 (ValueImp::toInt32): Used a sized integer type for the result of this function, and also added
24719 proper handling for negative results from fmod.
24720 (ValueImp::toUInt32): Ditto.
24721 (ValueImp::toUInt16): Ditto.
24722 (ValueImp::dispatchToUInt32): Changed result type from unsigned to uint32_t.
24724 * kjs/array_object.cpp: (ArrayProtoFuncImp::call): Use a double instead of an int to handle
24725 out-of-integer-range values better in the slice function.
24726 * kjs/internal.cpp: (KJS::roundValue): Streamline the function, handling NAN and infinity properly.
24727 * kjs/number_object.cpp: (NumberProtoFuncImp::call): Use a double instead of an int to handle
24728 out-of-integer-range values better in the toString function.
24729 * kjs/string_object.cpp: (StringProtoFuncImp::call): Use a double instead of an int to handle
24730 out-of-integer-range values better in the charAt, charCodeAt, indexOf, lastIndexOf, slice,
24731 and substr functions.
24735 2004-01-30 Richard Williamson <rjw@apple.com>
24737 Fixed 3542044. Create KJS::String using UString constructor instead of passing UTF8 string to char* constructor.
24741 * bindings/jni/jni_instance.cpp:
24742 (JavaInstance::stringValue):
24744 2004-01-26 Darin Adler <darin@apple.com>
24746 * Makefile.am: Switch from pbxbuild to xcodebuild.
24748 2004-01-22 Richard Williamson <rjw@apple.com>
24750 Added stubs for ObjC language binding to JavaScript.
24752 * JavaScriptCore.pbproj/project.pbxproj:
24753 * bindings/jni/jni_runtime.h:
24754 * bindings/objc/objc_runtime.h: Added.
24755 (KJS::Bindings::ObjcParameter::ObjcParameter):
24756 (KJS::Bindings::ObjcParameter::~ObjcParameter):
24757 (KJS::Bindings::ObjcParameter::operator=):
24758 (KJS::Bindings::ObjcParameter::type):
24759 (KJS::Bindings::ObjcConstructor::ObjcConstructor):
24760 (KJS::Bindings::ObjcConstructor::~ObjcConstructor):
24761 (KJS::Bindings::ObjcConstructor::_commonCopy):
24762 (KJS::Bindings::ObjcConstructor::operator=):
24763 (KJS::Bindings::ObjcConstructor::value):
24764 (KJS::Bindings::ObjcConstructor::parameterAt):
24765 (KJS::Bindings::ObjcConstructor::numParameters):
24766 (KJS::Bindings::ObjcField::ObjcField):
24767 (KJS::Bindings::ObjcField::~ObjcField):
24768 * bindings/runtime.h:
24770 2004-01-22 Richard Williamson <rjw@apple.com>
24772 Simplified JavaString by using UString as backing store. This
24773 revealed a bug in CString's assignment operator which I fixed.
24775 Removed some dead code.
24779 * bindings/jni/jni_runtime.h:
24780 (KJS::Bindings::JavaString::JavaString):
24781 (KJS::Bindings::JavaString::_commonInit):
24782 (KJS::Bindings::JavaString::UTF8String):
24783 (KJS::Bindings::JavaString::uchars):
24784 (KJS::Bindings::JavaString::length):
24785 (KJS::Bindings::JavaString::ustring):
24786 * bindings/runtime_object.cpp:
24787 (RuntimeObjectImp::RuntimeObjectImp):
24788 * bindings/runtime_object.h:
24790 (KJS::CString::CString):
24791 (KJS::CString::operator=):
24797 2004-01-16 Richard Williamson <rjw@apple.com>
24799 Fixed 3525853. We weren't handling mapping to overloaded Java
24800 methods very well. Even though this is undefined the other
24801 browsers support it. Also fixed a bug with returning arrays
24802 from Java functions.
24806 * bindings/jni/jni_class.cpp:
24807 (JavaClass::_commonInit):
24808 (JavaClass::methodsNamed):
24809 * bindings/jni/jni_class.h:
24810 * bindings/jni/jni_instance.cpp:
24811 (JavaInstance::invokeMethod):
24812 * bindings/jni/jni_instance.h:
24813 * bindings/jni/jni_runtime.cpp:
24814 (JavaArray::convertJObjectToArray):
24815 (JavaField::valueFromInstance):
24816 (JavaMethod::signature):
24817 (JavaArray::valueAt):
24818 * bindings/jni/jni_runtime.h:
24819 * bindings/jni_jsobject.cpp:
24821 (JSObject::convertJObjectToValue):
24822 * bindings/runtime.cpp:
24823 (MethodList::addMethod):
24824 (MethodList::length):
24825 (MethodList::methodAt):
24826 (MethodList::~MethodList):
24827 * bindings/runtime.h:
24828 (KJS::Bindings::MethodList::MethodList):
24829 * bindings/runtime_method.cpp:
24830 (RuntimeMethodImp::RuntimeMethodImp):
24831 (RuntimeMethodImp::get):
24832 (RuntimeMethodImp::call):
24833 * bindings/runtime_method.h:
24834 * bindings/runtime_object.cpp:
24835 (RuntimeObjectImp::get):
24836 (RuntimeObjectImp::hasProperty):
24838 2004-01-16 Richard Williamson <rjw@apple.com>
24840 Fixed 3531229. Another place that needs the Push/PopLocalFrame
24841 protection implemented for 3530401.
24845 * bindings/runtime_method.cpp:
24846 (RuntimeMethodImp::call):
24848 2004-01-15 Richard Williamson <rjw@apple.com>
24850 Fixed 3530401. JNI doesn't cleanup local refs created on the
24851 main thread. IMO this is a bad bug in our JMI implementation.
24853 To work-around the problem I explicitly delete all local refs.
24854 Further, I've added Push/PopLocalFrame calls to catch any refs
24855 that I may have missed. This will guarantee that we don't leak
24856 any Java references.
24860 * bindings/jni/jni_class.cpp:
24861 (JavaClass::_commonInit):
24862 (JavaClass::JavaClass):
24863 * bindings/jni/jni_instance.cpp:
24864 (JavaInstance::begin):
24865 (JavaInstance::end):
24866 * bindings/jni/jni_instance.h:
24867 * bindings/jni/jni_runtime.cpp:
24868 (JavaConstructor::JavaConstructor):
24869 (JavaMethod::JavaMethod):
24870 * bindings/jni_jsobject.cpp:
24871 (JSObject::listFromJArray):
24872 * bindings/runtime.h:
24873 (KJS::Bindings::Instance::begin):
24874 (KJS::Bindings::Instance::end):
24875 * bindings/runtime_object.cpp:
24876 (RuntimeObjectImp::get):
24877 (RuntimeObjectImp::put):
24878 (RuntimeObjectImp::canPut):
24879 (RuntimeObjectImp::hasProperty):
24880 (RuntimeObjectImp::defaultValue):
24882 2004-01-15 Vicki Murley <vicki@apple.com>
24886 * JavaScriptCore.pbproj/project.pbxproj: Update copyright date to 2004.
24888 2004-01-14 Richard Williamson <rjw@apple.com>
24890 Fixed 3529466. With recent changes to Java plugin we must no
24891 longer call DeleteLocalRef(). Not a problem, it was an optimization anyway.
24895 * bindings/jni/jni_instance.cpp:
24896 (JObjectWrapper::JObjectWrapper):
24900 2004-01-14 Richard Williamson <rjw@apple.com>
24904 Finalize may be called on an JSObject after we've already remove all our references. The assert in this case is firing because we've received a finalize call from Java for an instance that we no longer know about. The fix is to check in finalize that we're getting a call on an instance that we still care about.
24908 * bindings/jni_jsobject.cpp:
24909 (addJavaReference):
24910 (removeJavaReference):
24911 (RootObject::removeAllJavaReferencesForRoot):
24912 (JSObject::invoke):
24914 2004-01-13 Richard Williamson <rjw@apple.com>
24918 The run loop that is used to execute JavaScript (in practice, always the main run loop) is held in a class variable. It is set and retained once and should not be released. Unfortunately is it being released when the 'root' object on a LiveConnect applet is released. This has the symptom of eventually causing an deallocation of the main run loop! Usually after about 5 instantiations/destructions of a LiveConnect applet. The CFRelease of the run loop was removed.
24922 * bindings/jni_jsobject.h:
24923 (KJS::Bindings::RootObject::~RootObject):
24929 2004-01-06 Richard Williamson <rjw@apple.com>
24931 Fixed 3521814. Finalize messages weren't being dispatched!
24935 * bindings/jni_jsobject.cpp:
24936 (JSObject::invoke):
24938 2004-01-05 Richard Williamson <rjw@apple.com>
24940 Added cache of JNI method IDs to minimize allocations. This mitigates the problem
24941 described by 3515579.
24943 Also cleanup up logging of Java exceptions.
24947 * bindings/jni/jni_class.cpp:
24948 (JavaClass::classForInstance):
24949 * bindings/jni/jni_instance.cpp:
24950 (JavaInstance::JavaInstance):
24951 (JavaInstance::getClass):
24952 (JavaInstance::invokeMethod):
24953 (JObjectWrapper::JObjectWrapper):
24954 (JObjectWrapper::~JObjectWrapper):
24955 * bindings/jni/jni_instance.h:
24956 (KJS::Bindings::JavaInstance::operator=):
24957 * bindings/jni/jni_runtime.cpp:
24958 (JavaMethod::JavaMethod):
24959 (JavaMethod::methodID):
24960 * bindings/jni/jni_runtime.h:
24961 (KJS::Bindings::JavaMethod::JavaMethod):
24962 * bindings/jni/jni_utility.cpp:
24964 (callJNIMethodIDA):
24966 (KJS::Bindings::getMethodID):
24967 (KJS::Bindings::callJNIVoidMethodIDA):
24968 (KJS::Bindings::callJNIObjectMethodIDA):
24969 (KJS::Bindings::callJNIByteMethodIDA):
24970 (KJS::Bindings::callJNICharMethodIDA):
24971 (KJS::Bindings::callJNIShortMethodIDA):
24972 (KJS::Bindings::callJNIIntMethodIDA):
24973 (KJS::Bindings::callJNILongMethodIDA):
24974 (KJS::Bindings::callJNIFloatMethodIDA):
24975 (KJS::Bindings::callJNIDoubleMethodIDA):
24976 (KJS::Bindings::callJNIBooleanMethodIDA):
24977 (KJS::Bindings::getCharactersFromJStringInEnv):
24978 (KJS::Bindings::getUCharactersFromJStringInEnv):
24979 (KJS::Bindings::getJNIField):
24980 * bindings/jni/jni_utility.h:
24982 l2003-12-23 John Sullivan <sullivan@apple.com>
24984 * JavaScriptCore.pbproj/project.pbxproj:
24985 Xcode version wars, harmless
24987 2003-12-23 Darin Adler <darin@apple.com>
24989 Reviewed by John (concept, not code, which is just the old code coming back).
24991 - fixed 3518092: REGRESSION (100-119): getting NaN instead of HH:MM times
24993 * kjs/date_object.cpp: Added back our CF-based implementations of gmtime, localtime,
24994 mktime, timegm, and time, because mktime, at least, won't handle a year of 0.
24996 2003-12-19 Richard Williamson <rjw@apple.com>
24998 Fixed 3515597. When an error occurs we need
24999 to make sure result values are zeroed.
25001 Cleaned up logs by adding a newline.
25005 * bindings/jni/jni_utility.cpp:
25006 (KJS::Bindings::getJavaVM):
25007 (KJS::Bindings::getJNIEnv):
25010 (KJS::Bindings::getJNIField):
25011 * bindings/jni_jsobject.cpp:
25012 (JSObject::convertValueToJObject):
25016 2003-12-17 Richard Williamson <rjw@apple.com>
25018 Ensure that all the symbols we export are in the KJS
25019 namespace (3512245).
25021 Also renamed JavaString.characters() to JavaString.UTF8String()
25022 for enhanced clarity.
25024 Added some sanity checking to constructor of JObjectWrapper.
25029 * bindings/jni/jni_class.cpp:
25030 * bindings/jni/jni_class.h:
25031 * bindings/jni/jni_instance.cpp:
25032 (JavaInstance::invokeMethod):
25033 (JObjectWrapper::JObjectWrapper):
25034 * bindings/jni/jni_instance.h:
25035 * bindings/jni/jni_runtime.cpp:
25036 (JavaParameter::JavaParameter):
25037 (JavaField::JavaField):
25038 (JavaMethod::JavaMethod):
25039 (JavaMethod::signature):
25040 * bindings/jni/jni_runtime.h:
25041 (KJS::Bindings::JavaString::ascii):
25042 (KJS::Bindings::JavaString::UTF8String):
25043 (KJS::Bindings::JavaString::JavaString):
25044 (KJS::Bindings::JavaString::_commonInit):
25045 (KJS::Bindings::JavaString::uchars):
25046 (KJS::Bindings::JavaString::length):
25047 (KJS::Bindings::JavaString::ustring):
25048 (KJS::Bindings::JavaParameter::type):
25049 (KJS::Bindings::JavaField::name):
25050 (KJS::Bindings::JavaField::type):
25051 (KJS::Bindings::JavaMethod::name):
25052 (KJS::Bindings::JavaMethod::returnType):
25053 * bindings/jni/jni_utility.cpp:
25054 (KJS::Bindings::getJavaVM):
25055 (KJS::Bindings::getJNIEnv):
25056 (KJS::Bindings::callJNIVoidMethod):
25057 (KJS::Bindings::callJNIObjectMethod):
25058 (KJS::Bindings::callJNIBooleanMethod):
25059 (KJS::Bindings::callJNIByteMethod):
25060 (KJS::Bindings::callJNICharMethod):
25061 (KJS::Bindings::callJNIShortMethod):
25062 (KJS::Bindings::callJNIIntMethod):
25063 (KJS::Bindings::callJNILongMethod):
25064 (KJS::Bindings::callJNIFloatMethod):
25065 (KJS::Bindings::callJNIDoubleMethod):
25066 (KJS::Bindings::callJNIVoidMethodA):
25067 (KJS::Bindings::callJNIObjectMethodA):
25068 (KJS::Bindings::callJNIByteMethodA):
25069 (KJS::Bindings::callJNICharMethodA):
25070 (KJS::Bindings::callJNIShortMethodA):
25071 (KJS::Bindings::callJNIIntMethodA):
25072 (KJS::Bindings::callJNILongMethodA):
25073 (KJS::Bindings::callJNIFloatMethodA):
25074 (KJS::Bindings::callJNIDoubleMethodA):
25075 (KJS::Bindings::callJNIBooleanMethodA):
25076 (KJS::Bindings::getCharactersFromJString):
25077 (KJS::Bindings::releaseCharactersForJString):
25078 (KJS::Bindings::getCharactersFromJStringInEnv):
25079 (KJS::Bindings::releaseCharactersForJStringInEnv):
25080 (KJS::Bindings::getUCharactersFromJStringInEnv):
25081 (KJS::Bindings::releaseUCharactersForJStringInEnv):
25082 (KJS::Bindings::JNITypeFromClassName):
25083 (KJS::Bindings::signatureFromPrimitiveType):
25084 (KJS::Bindings::JNITypeFromPrimitiveType):
25085 (KJS::Bindings::getJNIField):
25086 (KJS::Bindings::convertValueToJValue):
25087 * bindings/jni/jni_utility.h:
25088 * bindings/jni_jsobject.cpp:
25089 (KJS::Bindings::JSObject::invoke):
25090 (KJS::Bindings::JSObject::JSObject):
25091 (KJS::Bindings::JSObject::call):
25092 (KJS::Bindings::JSObject::eval):
25093 (KJS::Bindings::JSObject::getMember):
25094 (KJS::Bindings::JSObject::setMember):
25095 (KJS::Bindings::JSObject::removeMember):
25096 (KJS::Bindings::JSObject::getSlot):
25097 (KJS::Bindings::JSObject::setSlot):
25098 (KJS::Bindings::JSObject::toString):
25099 (KJS::Bindings::JSObject::finalize):
25100 (KJS::Bindings::JSObject::createNative):
25101 (KJS::Bindings::JSObject::convertValueToJObject):
25102 (KJS::Bindings::JSObject::convertJObjectToValue):
25103 (KJS::Bindings::JSObject::listFromJArray):
25104 * bindings/jni_jsobject.h:
25105 * bindings/runtime.cpp:
25106 * bindings/runtime.h:
25107 * bindings/runtime_method.cpp:
25108 * bindings/runtime_method.h:
25112 2003-12-16 Richard Williamson <rjw@apple.com>
25114 Ack! More assertions. Lock ALL entry points into the interpreter!
25119 * bindings/jni_jsobject.cpp:
25120 (Bindings::JSObject::call):
25121 (Bindings::JSObject::eval):
25122 (Bindings::JSObject::getMember):
25123 (Bindings::JSObject::setMember):
25124 (Bindings::JSObject::removeMember):
25125 (Bindings::JSObject::getSlot):
25126 (Bindings::JSObject::setSlot):
25127 (Bindings::JSObject::convertJObjectToValue):
25129 2003-12-15 Richard Williamson <rjw@apple.com>
25131 Fixed a couple of snafus and removed some logging.
25133 Reviewed by Maciej.
25135 * bindings/jni_jsobject.cpp:
25136 (Bindings::performJavaScriptAccess):
25137 (Bindings::completedJavaScriptAccess):
25138 (Bindings::dispatchToJavaScriptThread):
25139 Removed some annoying JS_LOG clutter.
25141 (Bindings::RootObject::removeAllJavaReferencesForRoot):
25142 Fixed allocation of key buffer that was called after it was needed.
25144 (Bindings::JSObject::invoke):
25145 (Bindings::JSObject::JSObject):
25146 (Bindings::JSObject::getMember):
25147 (Bindings::JSObject::getSlot):
25148 Added additional interpreter locks around getMember and getSlot.
25149 These functions may cause allocation of JS impls.
25151 2003-12-15 Richard Williamson <rjw@apple.com>
25153 args weren't passed to 'call' invocation. d'oh.
25154 lock interpreter when we create instances of JS impls.
25156 Reviewed by Maciej.
25158 * bindings/jni_jsobject.cpp:
25159 (Bindings::JSObject::call):
25160 (Bindings::JSObject::eval):
25161 (Bindings::JSObject::getMember):
25162 (Bindings::JSObject::setMember):
25163 (Bindings::JSObject::getSlot):
25164 (Bindings::JSObject::convertValueToJObject):
25165 (Bindings::JSObject::convertJObjectToValue):
25166 (Bindings::JSObject::listFromJArray):
25167 * bindings/jni_jsobject.h:
25169 2003-12-15 Richard Williamson <rjw@apple.com>
25171 Last piece of LiveConnect! This checkin adds implementation
25172 of the Java to JavaScript object conversion functions.
25176 * bindings/jni/jni_instance.cpp:
25177 (JavaInstance::invokeMethod):
25178 * bindings/jni/jni_utility.cpp:
25179 * bindings/jni/jni_utility.h:
25180 * bindings/jni_jsobject.cpp:
25181 (Bindings::JSObject::invoke):
25182 (Bindings::JSObject::call):
25183 (Bindings::JSObject::eval):
25184 (Bindings::JSObject::getMember):
25185 (Bindings::JSObject::setMember):
25186 (Bindings::JSObject::getSlot):
25187 (Bindings::JSObject::setSlot):
25188 (Bindings::JSObject::createNative):
25189 (Bindings::JSObject::convertValueToJObject):
25190 (Bindings::JSObject::convertJObjectToValue):
25191 (Bindings::JSObject::listFromJArray):
25192 * bindings/jni_jsobject.h:
25194 * bindings/runtime_method.cpp:
25195 (RuntimeMethodImp::get):
25196 (RuntimeMethodImp::codeType):
25197 (RuntimeMethodImp::execute):
25199 2003-12-12 Richard Williamson <rjw@apple.com>
25201 Added implementation of stubs in JSObject. All that
25202 remains is a couple of simple conversion functions stubs and
25203 we're done with LiveConnect. Also, changed string passing to
25204 JS to use uchars instead of chars.
25206 Reviewed by Maciej.
25208 * bindings/jni/jni_runtime.h:
25209 (Bindings::JavaString::JavaString):
25210 (Bindings::JavaString::_commonInit):
25211 (Bindings::JavaString::_commonCopy):
25212 (Bindings::JavaString::_commonDelete):
25213 (Bindings::JavaString::~JavaString):
25214 (Bindings::JavaString::operator=):
25215 (Bindings::JavaString::uchars):
25216 (Bindings::JavaString::length):
25217 (Bindings::JavaString::ustring):
25218 * bindings/jni/jni_utility.cpp:
25219 (getUCharactersFromJStringInEnv):
25220 (releaseUCharactersForJStringInEnv):
25221 (convertValueToJObject):
25222 (convertJObjectToValue):
25223 * bindings/jni/jni_utility.h:
25224 * bindings/jni_jsobject.cpp:
25225 (Bindings::JSObject::invoke):
25226 (Bindings::JSObject::call):
25227 (Bindings::JSObject::eval):
25228 (Bindings::JSObject::getMember):
25229 (Bindings::JSObject::setMember):
25230 (Bindings::JSObject::removeMember):
25231 (Bindings::JSObject::getSlot):
25232 (Bindings::JSObject::setSlot):
25233 * bindings/jni_jsobject.h:
25235 2003-12-12 Richard Williamson <rjw@apple.com>
25237 Ensure that all calls from Java into JavaScript are
25238 performed on a designated thread (the main thread).
25242 * bindings/jni_jsobject.cpp:
25243 (isJavaScriptThread):
25245 (Bindings::performJavaScriptAccess):
25246 (Bindings::completedJavaScriptAccess):
25247 (Bindings::initializeJavaScriptAccessLock):
25248 (Bindings::lockJavaScriptAccess):
25249 (Bindings::unlockJavaScriptAccess):
25250 (Bindings::dispatchToJavaScriptThread):
25251 (Bindings::RootObject::setFindRootObjectForNativeHandleFunction):
25252 (Bindings::RootObject::removeAllJavaReferencesForRoot):
25253 (Bindings::JSObject::invoke):
25254 (Bindings::JSObject::JSObject):
25255 (Bindings::JSObject::call):
25256 (Bindings::JSObject::eval):
25257 (Bindings::JSObject::getMember):
25258 (Bindings::JSObject::setMember):
25259 (Bindings::JSObject::removeMember):
25260 (Bindings::JSObject::getSlot):
25261 (Bindings::JSObject::setSlot):
25262 (Bindings::JSObject::toString):
25263 (Bindings::JSObject::finalize):
25264 (Bindings::JSObject::getWindow):
25265 * bindings/jni_jsobject.h:
25266 (Bindings::RootObject::~RootObject):
25267 (Bindings::RootObject::findRootObjectForNativeHandleFunction):
25268 (Bindings::RootObject::runLoop):
25269 (Bindings::RootObject::performJavaScriptSource):
25272 2003-12-11 Richard Williamson <rjw@apple.com>
25274 Added support for calling a JavaScript function from
25275 Java. Right now this only works for void func(void)
25276 functions, but the conversion of args and return values
25279 Cleaned up and verified reference counting scheme, and
25280 dereferencing of vended JavaScript objects when applet is
25281 destroyed (actually when part is destroyed).
25283 Removed link hack for testkjs now that the Java folks think
25284 they have a solution for the 1.4.2 JavaVM link problem. Although
25285 Greg B. thinks his solution may cause problems for the 1.3.1
25286 version of the VM!?!
25291 * bindings/jni/jni_runtime.h:
25292 (Bindings::JavaString::JavaString):
25293 * bindings/jni/jni_utility.cpp:
25294 (convertValueToJValue):
25295 (convertValueToJObject):
25297 * bindings/jni/jni_utility.h:
25298 * bindings/jni_jsobject.cpp:
25299 (KJS_setFindRootObjectForNativeHandleFunction):
25300 (KJS_findRootObjectForNativeHandleFunction):
25301 (getReferencesByRootDictionary):
25302 (getReferencesDictionary):
25303 (findReferenceDictionary):
25305 (addJavaReference):
25306 (removeJavaReference):
25307 * bindings/jni_jsobject.h:
25308 (Bindings::RootObject::RootObject):
25309 (Bindings::RootObject::~RootObject):
25310 (Bindings::RootObject::setRootObjectImp):
25311 (Bindings::RootObject::rootObjectImp):
25312 (Bindings::RootObject::setInterpreter):
25313 (Bindings::RootObject::interpreter):
25317 2003-12-10 Darin Adler <darin@apple.com>
25319 Reviewed by Maciej.
25321 - fixed regression in JavaScript tests reported by the KDE guys
25322 - fixed 3506345: REGRESSION (115-116): VIP: chordfind.com no longer displays chords
25324 * kjs/ustring.h: Add tolerateEmptyString parameter to toDouble and toULong.
25326 (KJS::UString::toDouble): Separate the "tolerant" parameter into two separate ones:
25327 tolerateTrailingJunk and tolerateEmptyString. Add new overloads; better for code size
25328 and binary compatibility than default parameter values.
25329 (KJS::UString::toULong): Pass tolerateEmptyString down to toDouble. Add new overload.
25331 * kjs/string_object.cpp: (StringProtoFuncImp::call): Pass false for the new
25332 "tolerate empty string" parameter.
25334 2003-12-10 Richard Williamson <rjw@apple.com>
25336 Added code to manage reference counting of JavaScript
25337 objects passed to Java. Also added implementation of
25338 KJS_JSCreateNativeJSObject. This is the function that
25339 provides the root object to Java (KJS::Window).
25343 * JavaScriptCore.pbproj/project.pbxproj:
25344 * bindings/jni_jsobject.cpp:
25345 (KJS_setFindObjectForNativeHandleFunction):
25346 (KJS_findObjectForNativeHandleFunction):
25347 (getReferencesByOwnerDictionary):
25348 (getReferencesDictionary):
25349 (findReferenceDictionary):
25350 (addJavaReference):
25351 (removeJavaReference):
25352 (removeAllJavaReferencesForOwner):
25353 * bindings/jni_jsobject.h:
25355 2003-12-09 Richard Williamson <rjw@apple.com>
25357 LiveConnect stubs that correspond to the native methods
25358 on JSObject. These will be called from the new Java plugin
25359 when an instance of JSObject is instantiated and messaged.
25360 When these are implemented the Java will be able to originate
25361 calls into JavaScript.
25363 Also a temporary work-around added to Makefile.am to solve
25364 a link problem. The 1.4.2 JavaVM accidentally links against
25365 libobjc. This call a failure linking testkjs. Mike Hay is
25366 working with someone to fix the problem (3505587).
25370 * JavaScriptCore.pbproj/project.pbxproj:
25372 * bindings/jni_jsobject.cpp: Added.
25373 (KJS_JSCreateNativeJSObject):
25374 (KJS_JSObject_JSFinalize):
25375 (KJS_JSObject_JSObjectCall):
25376 (KJS_JSObject_JSObjectEval):
25377 (KJS_JSObject_JSObjectGetMember):
25378 (KJS_JSObject_JSObjectSetMember):
25379 (KJS_JSObject_JSObjectRemoveMember):
25380 (KJS_JSObject_JSObjectGetSlot):
25381 (KJS_JSObject_JSObjectSetSlot):
25382 (KJS_JSObject_JSObjectToString):
25383 * bindings/jni_jsobject.h: Added.
25385 2003-12-09 Maciej Stachowiak <mjs@apple.com>
25389 <rdar://problem/3505183>: JavaScriptCore should assert that interpreter is locked in collector
25391 * kjs/collector.cpp:
25392 (KJS::Collector::allocate): Assert that interpreter lock count is not 0.
25393 (KJS::Collector::collect): likewise
25395 2003-12-08 Richard Williamson <rjw@apple.com>
25397 LiveConnect: The last piece of the JavaScript side of the
25398 LiveConnect implementation. This change adds support for
25399 setting/getting values from Java arrays in JavaScript.
25403 * bindings/jni/jni_instance.h:
25404 * bindings/jni/jni_runtime.cpp:
25405 (JavaField::JavaField):
25406 (convertJObjectToArray):
25407 (JavaArray::JavaArray):
25408 (JavaArray::~JavaArray):
25409 (JavaArray::setValueAt):
25410 (JavaArray::valueAt):
25411 (JavaArray::getLength):
25412 * bindings/jni/jni_runtime.h:
25413 (Bindings::JavaArray::operator=):
25414 (Bindings::JavaArray::javaArray):
25415 * bindings/jni/jni_utility.cpp:
25416 (JNITypeFromPrimitiveType):
25417 (convertValueToJValue):
25418 * bindings/jni/jni_utility.h:
25419 * bindings/runtime.h:
25420 * bindings/runtime_array.cpp:
25421 (RuntimeArrayImp::RuntimeArrayImp):
25422 (RuntimeArrayImp::~RuntimeArrayImp):
25423 (RuntimeArrayImp::get):
25424 (RuntimeArrayImp::put):
25425 (RuntimeArrayImp::hasProperty):
25426 * bindings/runtime_array.h:
25427 (KJS::RuntimeArrayImp::getLength):
25428 (KJS::RuntimeArrayImp::getConcreteArray):
25429 * bindings/runtime_object.cpp:
25430 (RuntimeObjectImp::get):
25431 (RuntimeObjectImp::canPut):
25432 (RuntimeObjectImp::hasProperty):
25434 2003-12-05 Richard Williamson <rjw@apple.com>
25436 LiveConnect: Part 1 of supporting JS bindings to
25437 native language arrays.
25441 * JavaScriptCore.pbproj/project.pbxproj:
25442 * bindings/jni/jni_runtime.cpp:
25443 (JavaField::JavaField):
25444 (convertJObjectToArray):
25445 (JavaField::valueFromInstance):
25446 (JavaField::setValueToInstance):
25447 * bindings/jni/jni_runtime.h:
25448 * bindings/runtime.cpp:
25449 (Instance::setValueOfField):
25450 * bindings/runtime.h:
25451 (Bindings::Array::~Array):
25453 2003-12-04 Richard Williamson <rjw@apple.com>
25455 LiveConnect: Moved defaultValue into concrete implementation because
25456 more intelligent conversion can be perform with knowledge
25457 of the class of the original instance.
25461 * bindings/jni/jni_class.cpp:
25462 (JavaClass::isNumberClass):
25463 (JavaClass::isBooleanClass):
25464 (JavaClass::isStringClass):
25465 * bindings/jni/jni_class.h:
25466 * bindings/jni/jni_instance.cpp:
25467 (JavaInstance::defaultValue):
25468 (JavaInstance::valueOf):
25469 * bindings/jni/jni_instance.h:
25470 (Bindings::JavaInstance::javaInstance):
25471 * bindings/runtime.h:
25472 * bindings/runtime_object.cpp:
25473 (RuntimeObjectImp::defaultValue):
25475 2003-12-04 Richard Williamson <rjw@apple.com>
25477 LiveConnect: Added support for setting the value of Java
25482 * bindings/jni/jni_instance.cpp:
25483 (JavaInstance::invokeMethod):
25484 * bindings/jni/jni_runtime.cpp:
25485 (JavaParameter::JavaParameter):
25486 (JavaField::JavaField):
25487 (JavaField::valueFromInstance):
25488 (JavaField::setValueToInstance):
25489 (JavaMethod::JavaMethod):
25490 * bindings/jni/jni_runtime.h:
25491 (Bindings::JavaField::getJNIType):
25492 * bindings/jni/jni_utility.cpp:
25493 (JNITypeFromClassName):
25494 (convertValueToJValue):
25495 * bindings/jni/jni_utility.h:
25496 * bindings/runtime.cpp:
25497 (Instance::setValueOfField):
25498 * bindings/runtime.h:
25499 * bindings/runtime_object.cpp:
25500 (RuntimeObjectImp::get):
25501 (RuntimeObjectImp::put):
25502 (RuntimeObjectImp::defaultValue):
25504 2003-12-04 Richard Williamson <rjw@apple.com>
25506 Added support for string conversions.
25507 Changed various JavaString member variables to be inline.
25508 Implemented defaultValue for context relevant type coercion.
25512 * bindings/jni/jni_class.cpp:
25513 (JavaClass::JavaClass):
25514 (JavaClass::setClassName):
25515 (JavaClass::classForInstance):
25516 * bindings/jni/jni_class.h:
25517 * bindings/jni/jni_instance.cpp:
25518 (JavaInstance::stringValue):
25519 (JavaInstance::numberValue):
25520 (JavaInstance::booleanValue):
25521 (JavaInstance::invokeMethod):
25522 * bindings/jni/jni_instance.h:
25523 * bindings/jni/jni_runtime.cpp:
25524 (JavaParameter::JavaParameter):
25525 (JavaField::JavaField):
25526 (JavaMethod::JavaMethod):
25528 (JavaMethod::signature):
25529 * bindings/jni/jni_runtime.h:
25530 (Bindings::JavaString::JavaString):
25531 (Bindings::JavaString::~JavaString):
25532 (Bindings::JavaString::operator=):
25533 (Bindings::JavaString::characters):
25534 (Bindings::JavaParameter::JavaParameter):
25535 (Bindings::JavaParameter::~JavaParameter):
25536 (Bindings::JavaParameter::operator=):
25537 (Bindings::JavaParameter::type):
25538 (Bindings::JavaField::JavaField):
25539 (Bindings::JavaField::~JavaField):
25540 (Bindings::JavaField::operator=):
25541 (Bindings::JavaField::name):
25542 (Bindings::JavaField::type):
25543 (Bindings::JavaMethod::JavaMethod):
25544 (Bindings::JavaMethod::_commonDelete):
25545 (Bindings::JavaMethod::name):
25546 (Bindings::JavaMethod::returnType):
25547 * bindings/jni/jni_utility.cpp:
25548 (convertValueToJValue):
25549 * bindings/runtime.h:
25550 (Bindings::Instance::valueOf):
25551 * bindings/runtime_method.cpp:
25552 (RuntimeMethodImp::call):
25553 * bindings/runtime_object.cpp:
25554 (RuntimeObjectImp::RuntimeObjectImp):
25555 (RuntimeObjectImp::get):
25556 (RuntimeObjectImp::defaultValue):
25557 * bindings/runtime_object.h:
25558 (KJS::RuntimeObjectImp::classInfo):
25562 2003-12-03 Richard Williamson <rjw@apple.com>
25564 LiveConnect: Added support for parameter passing to Java and conversion
25569 * bindings/jni/jni_instance.cpp:
25570 (JavaInstance::invokeMethod):
25571 * bindings/jni/jni_instance.h:
25572 * bindings/jni/jni_runtime.cpp:
25573 (JavaParameter::JavaParameter):
25574 (JavaMethod::JavaMethod):
25575 (JavaMethod::signature):
25576 * bindings/jni/jni_runtime.h:
25577 (Bindings::JavaParameter::JavaParameter):
25578 (Bindings::JavaParameter::operator=):
25579 (Bindings::JavaParameter::getJNIType):
25580 * bindings/jni/jni_utility.cpp:
25581 (callJNIBooleanMethodA):
25582 (convertValueToJValue):
25583 * bindings/jni/jni_utility.h:
25584 * bindings/runtime.h:
25585 * bindings/runtime_method.cpp:
25586 (RuntimeMethodImp::call):
25587 * bindings/runtime_object.cpp:
25588 (RuntimeObjectImp::get):
25590 2003-12-02 Richard Williamson <rjw@apple.com>
25592 Added support for calling simple methods in Java from JavaScript.
25593 (void return and no parameters). Yay, LiveConnect lives.
25595 Still need write argument and return value conversion code.
25599 * JavaScriptCore.pbproj/project.pbxproj:
25600 * bindings/jni/jni_instance.cpp:
25601 (JavaInstance::getClass):
25602 (JavaInstance::invokeMethod):
25603 * bindings/jni/jni_instance.h:
25604 * bindings/jni/jni_runtime.cpp:
25605 (JavaMethod::JavaMethod):
25606 (JavaMethod::signature):
25607 (JavaMethod::JNIReturnType):
25608 * bindings/jni/jni_runtime.h:
25609 (Bindings::JavaMethod::_commonDelete):
25610 (Bindings::JavaMethod::_commonCopy):
25611 (Bindings::JavaMethod::name):
25612 * bindings/jni/jni_utility.cpp:
25613 (signatureFromPrimitiveType):
25614 * bindings/jni/jni_utility.h:
25615 * bindings/runtime.h:
25616 * bindings/runtime_method.cpp: Added.
25617 (RuntimeMethodImp::RuntimeMethodImp):
25618 (RuntimeMethodImp::~RuntimeMethodImp):
25619 (RuntimeMethodImp::get):
25620 (RuntimeMethodImp::implementsCall):
25621 (RuntimeMethodImp::call):
25622 (RuntimeMethodImp::codeType):
25623 (RuntimeMethodImp::execute):
25624 * bindings/runtime_method.h: Added.
25625 * bindings/runtime_object.cpp:
25626 (RuntimeObjectImp::RuntimeObjectImp):
25627 (RuntimeObjectImp::get):
25628 * bindings/runtime_object.h:
25629 * kjs/function.cpp:
25630 (FunctionImp::FunctionImp):
25631 * kjs/interpreter.h:
25633 2003-12-01 Darin Adler <darin@apple.com>
25635 Reviewed by Maciej.
25637 - fixed 3493799: JavaScript string.replace expands $ if it's the last character in replacement string
25639 * kjs/ustring.cpp: (KJS::UString::toDouble): Fix backwards handling of the "tolerant" boolean.
25640 This indirectly caused the string.replace bug.
25642 2003-12-02 Maciej Stachowiak <mjs@apple.com>
25644 Merged patches from Harri Porten and David Faure to fix:
25646 <rdar://problem/3497643>: reproducible crash printing self-referential array
25648 * kjs/array_object.cpp:
25649 (ArrayProtoFuncImp::call): Break out of the loop if an exception was thrown.
25651 (FunctionCallNode::evaluate): Move function call depth check from here...
25653 (KJS::Object::call): ...to here.
25654 * kjs/object.h: Un-inline Object::call now that it does more.
25656 2003-12-01 Richard Williamson <rjw@apple.com>
25658 Fixed mistake in method signatures used to get boolean and integer fields.
25662 * bindings/jni/jni_runtime.cpp:
25663 (JavaField::valueFromInstance):
25665 2003-12-01 Richard Williamson <rjw@apple.com>
25667 Fixed parameter passing to applet. Child elements are NOT valid in setStyle(). So we now create the widget before needed with createWidgetIfNecessary. This either happens when doing the first layout, or when JavaScript first references the applet element.
25669 Fixed early delete of the the main applet instance. When the JS collector cleaned up the last JS object referring to the applet instance we were deleting the java instance. This caused the applet instance cached on the applet element to be invalid. The applet instance is the only Java object not to be cleaned up by the JS collector.
25671 Added support for getting at Java object fields.
25675 * JavaScriptCore.pbproj/project.pbxproj:
25677 * bindings/jni/jni_instance.cpp:
25678 (JObjectWrapper::JObjectWrapper):
25679 * bindings/jni/jni_instance.h:
25680 (Bindings::JObjectWrapper::~JObjectWrapper):
25681 * bindings/jni/jni_runtime.cpp:
25682 (JavaField::valueFromInstance):
25683 * bindings/runtime_object.cpp:
25684 (RuntimeObjectImp::~RuntimeObjectImp):
25685 (RuntimeObjectImp::RuntimeObjectImp):
25686 (RuntimeObjectImp::get):
25687 (RuntimeObjectImp::deleteProperty):
25688 * bindings/runtime_object.h:
25692 2003-11-21 Maciej Stachowiak <mjs@apple.com>
25694 Patch from Harri Porten, reviewed by me.
25696 - fixed 3491712 - String slice with negative arguments does not offset from end of string
25698 * kjs/string_object.cpp:
25699 (StringProtoFuncImp::call): Handle negative arguments as offsets from end by
25700 adding length and clamping to [0,length-1].
25702 2003-11-21 Maciej Stachowiak <mjs@apple.com>
25704 Patch from Harri Porten, reviewed by me.
25706 - fixed 3491709 - using Function.apply with a primitive type as the arg list causes crash
25708 * kjs/function_object.cpp:
25709 (FunctionProtoFuncImp::call): Nest parentheses properly.
25711 2003-11-20 Richard Williamson <rjw@apple.com>
25713 More LiveConnect stuff. Primitive Java fields are now
25714 accessible from JavaScript! Yay!
25716 Reviewed by Maciej.
25718 * bindings/jni/jni_class.cpp:
25719 (JavaClass::methodNamed):
25720 (JavaClass::fieldNamed):
25721 * bindings/jni/jni_class.h:
25722 (Bindings::JavaClass::_commonDelete):
25723 * bindings/jni/jni_instance.cpp:
25724 (JavaInstance::JavaInstance):
25725 (JavaInstance::~JavaInstance):
25726 (JavaInstance::getClass):
25727 * bindings/jni/jni_instance.h:
25728 (Bindings::JavaInstance::javaInstance):
25729 * bindings/jni/jni_runtime.cpp:
25730 (JavaField::JavaField):
25731 (JavaField::valueFromInstance):
25732 * bindings/jni/jni_runtime.h:
25733 (Bindings::JavaField::JavaField):
25734 (Bindings::JavaField::~JavaField):
25735 (Bindings::JavaField::operator=):
25736 * bindings/jni/jni_utility.cpp:
25739 (callJNIVoidMethod):
25740 (callJNIObjectMethod):
25741 (callJNIBooleanMethod):
25742 (callJNIByteMethod):
25743 (callJNICharMethod):
25744 (callJNIShortMethod):
25745 (callJNIIntMethod):
25746 (callJNILongMethod):
25747 (callJNIFloatMethod):
25748 (callJNIDoubleMethod):
25749 (callJNIVoidMethodA):
25750 (callJNIObjectMethodA):
25751 (callJNIByteMethodA):
25752 (callJNICharMethodA):
25753 (callJNIShortMethodA):
25754 (callJNIIntMethodA):
25755 (callJNILongMethodA):
25756 (callJNIFloatMethodA):
25757 (callJNIDoubleMethodA):
25758 (releaseCharactersForJStringInEnv):
25759 (primitiveTypeFromClassName):
25761 * bindings/jni/jni_utility.h:
25762 * bindings/runtime.cpp:
25763 (Instance::createBindingForLanguageInstance):
25764 (Instance::getValueOfField):
25765 * bindings/runtime.h:
25766 * bindings/runtime_object.cpp:
25767 (RuntimeObjectImp::get):
25769 2003-11-20 Richard Williamson <rjw@apple.com>
25771 More LiveConnect stuff.
25775 * bindings/jni/jni_class.cpp:
25776 (JavaClass::classForName):
25777 (JavaClass::classForInstance):
25778 * bindings/jni/jni_instance.cpp:
25779 (JavaInstance::getValueOfField):
25780 * bindings/jni/jni_instance.h:
25781 (Bindings::JObjectWrapper::JObjectWrapper):
25782 * bindings/jni/jni_runtime.h:
25783 (Bindings::JavaConstructor::~JavaConstructor):
25784 (Bindings::JavaConstructor::operator=):
25785 (Bindings::JavaMethod::JavaMethod):
25786 (Bindings::JavaMethod::_commonDelete):
25787 (Bindings::JavaMethod::signature):
25788 * bindings/jni/jni_utility.cpp:
25791 * bindings/jni/jni_utility.h:
25792 * bindings/runtime.h:
25793 * bindings/runtime_object.cpp:
25794 (RuntimeObjectImp::~RuntimeObjectImp):
25795 (RuntimeObjectImp::get):
25796 * bindings/runtime_object.h:
25798 2003-11-19 Richard Williamson <rjw@apple.com>
25800 More LiveConnect stuff.
25804 * JavaScriptCore.pbproj/project.pbxproj:
25805 * bindings/jni/jni_class.cpp: Added.
25806 (JavaClass::_commonInit):
25807 (JavaClass::JavaClass):
25808 (_createClassesByNameIfNecessary):
25809 (JavaClass::classForName):
25810 (JavaClass::classForInstance):
25811 (JavaClass::methodNamed):
25812 (JavaClass::fieldNamed):
25813 * bindings/jni/jni_class.h: Added.
25814 (Bindings::JavaClass::_commonDelete):
25815 (Bindings::JavaClass::~JavaClass):
25816 (Bindings::JavaClass::_commonCopy):
25817 (Bindings::JavaClass::JavaClass):
25818 (Bindings::JavaClass::operator=):
25819 (Bindings::JavaClass::name):
25820 (Bindings::JavaClass::constructorAt):
25821 (Bindings::JavaClass::numConstructors):
25822 * bindings/jni/jni_instance.cpp: Added.
25823 (JavaInstance::JavaInstance):
25824 (JavaInstance::~JavaInstance):
25825 * bindings/jni/jni_instance.h: Added.
25826 (Bindings::JObjectWrapper::JObjectWrapper):
25827 (Bindings::JObjectWrapper::~JObjectWrapper):
25828 (Bindings::JObjectWrapper::ref):
25829 (Bindings::JObjectWrapper::deref):
25830 (Bindings::JavaInstance::getClass):
25831 (Bindings::JavaInstance::operator=):
25832 * bindings/jni/jni_runtime.cpp:
25833 (JavaMethod::JavaMethod):
25834 * bindings/jni/jni_runtime.h:
25835 (Bindings::JavaString::JavaString):
25836 (Bindings::JavaString::~JavaString):
25837 (Bindings::JavaString::operator=):
25838 * bindings/jni/jni_utility.cpp:
25841 (getCharactersFromJString):
25842 (releaseCharactersForJString):
25843 (getCharactersFromJStringInEnv):
25844 (releaseCharactersForJStringInEnv):
25845 * bindings/jni/jni_utility.h:
25846 * bindings/runtime.cpp:
25847 (Instance::createBindingForLanguageInstance):
25848 * bindings/runtime.h:
25849 (Bindings::Instance::):
25851 2003-11-18 Richard Williamson <rjw@apple.com>
25853 More live connect stubs. We're getting close.
25857 * JavaScriptCore.pbproj/project.pbxproj:
25858 * bindings/jni/jni_runtime.cpp:
25859 (JavaClass::JavaClass):
25860 (JavaInstance::JavaInstance):
25861 (JavaInstance::~JavaInstance):
25862 * bindings/jni/jni_runtime.h:
25863 (Bindings::JavaConstructor::value):
25864 (Bindings::JavaField::value):
25865 (Bindings::JavaMethod::value):
25866 (Bindings::JavaClass::_commonDelete):
25867 (Bindings::JavaClass::_commonCopy):
25868 (Bindings::JavaClass::methodNamed):
25869 (Bindings::JavaClass::fieldNamed):
25870 (Bindings::JavaInstance::getClass):
25871 * bindings/runtime.cpp: Added.
25872 * bindings/runtime.h:
25873 (Bindings::Instance::~Instance):
25874 * bindings/runtime_object.cpp: Added.
25875 (RuntimeObjectImp::classInfo):
25876 (RuntimeObjectImp::RuntimeObjectImp):
25877 (RuntimeObjectImp::get):
25878 (RuntimeObjectImp::put):
25879 (RuntimeObjectImp::canPut):
25880 (RuntimeObjectImp::hasProperty):
25881 (RuntimeObjectImp::deleteProperty):
25882 (RuntimeObjectImp::defaultValue):
25883 (RuntimeObjectImp::_initializeClassInfoFromInstance):
25884 * bindings/runtime_object.h: Added.
25885 (KJS::RuntimeObjectImp::setInternalInstance):
25886 (KJS::RuntimeObjectImp::getInternalInstance):
25888 (KJS::ObjectImp::get):
25889 (KJS::ObjectImp::hasProperty):
25893 2003-11-17 Maciej Stachowiak <mjs@apple.com>
25895 Patch from Harri, reviewed by me.
25897 - fixed 3487375 - backwards array slice causes infinite loop
25899 * kjs/array_object.cpp:
25900 (ArrayProtoFuncImp::call):
25902 2003-11-17 Maciej Stachowiak <mjs@apple.com>
25904 Patch from Harri Porten reviewed by me.
25906 - fixed 3487371 - operator precedence for bitwise or, xor and and is wrong
25908 * kjs/grammar.y: Correct the precedence.
25910 2003-11-16 Maciej Stachowiak <mjs@apple.com>
25914 - fixed 3483829 - JavaScriptCore needs workaround to compile on Merlot
25916 * JavaScriptCore.pbproj/project.pbxproj: Add -Wno-long-double to
25921 2003-11-13 Richard Williamson <rjw@apple.com>
25923 Factored common code between copy constructor and assignment operator.
25928 * bindings/jni/jni_runtime.h:
25929 (Bindings::JavaConstructor::_commonCopy):
25930 (Bindings::JavaConstructor::JavaConstructor):
25931 (Bindings::JavaConstructor::operator=):
25932 (Bindings::JavaField::type):
25933 * bindings/runtime.h:
25935 2003-11-13 Richard Williamson <rjw@apple.com>
25937 More LiveConnect stuff. This checkin adds abstract classes to model
25938 language runtimes and a JNI based set of concrete implementations for
25943 * JavaScriptCore.pbproj/project.pbxproj:
25945 * bindings/Makefile.am: Removed.
25946 * bindings/jni/Makefile.am: Removed.
25947 * bindings/jni/jni_runtime.cpp: Added.
25948 (JavaField::JavaField):
25949 (JavaConstructor::JavaConstructor):
25950 (JavaMethod::JavaMethod):
25951 (JavaClass::JavaClass):
25952 * bindings/jni/jni_runtime.h: Added.
25953 (Bindings::JavaString::JavaString):
25954 (Bindings::JavaString::~JavaString):
25955 (Bindings::JavaString::operator=):
25956 (Bindings::JavaString::characters):
25957 (Bindings::JavaParameter::JavaParameter):
25958 (Bindings::JavaParameter::~JavaParameter):
25959 (Bindings::JavaParameter::operator=):
25960 (Bindings::JavaParameter::type):
25961 (Bindings::JavaConstructor::JavaConstructor):
25962 (Bindings::JavaConstructor::~JavaConstructor):
25963 (Bindings::JavaConstructor::operator=):
25964 (Bindings::JavaConstructor::parameterAt):
25965 (Bindings::JavaConstructor::numParameters):
25966 (Bindings::JavaField::JavaField):
25967 (Bindings::JavaField::~JavaField):
25968 (Bindings::JavaField::operator=):
25969 (Bindings::JavaField::name):
25970 (Bindings::JavaField::type):
25971 (Bindings::JavaMethod::JavaMethod):
25972 (Bindings::JavaMethod::_commonDelete):
25973 (Bindings::JavaMethod::~JavaMethod):
25974 (Bindings::JavaMethod::_commonCopy):
25975 (Bindings::JavaMethod::operator=):
25976 (Bindings::JavaMethod::name):
25977 (Bindings::JavaMethod::returnType):
25978 (Bindings::JavaMethod::parameterAt):
25979 (Bindings::JavaMethod::numParameters):
25980 (Bindings::JavaClass::_commonDelete):
25981 (Bindings::JavaClass::~JavaClass):
25982 (Bindings::JavaClass::_commonCopy):
25983 (Bindings::JavaClass::JavaClass):
25984 (Bindings::JavaClass::operator=):
25985 (Bindings::JavaClass::name):
25986 (Bindings::JavaClass::methodAt):
25987 (Bindings::JavaClass::numMethods):
25988 (Bindings::JavaClass::constructorAt):
25989 (Bindings::JavaClass::numConstructors):
25990 (Bindings::JavaClass::fieldAt):
25991 (Bindings::JavaClass::numFields):
25992 * bindings/jni/jni_utility.cpp:
25995 (callJNIObjectMethod):
25996 (callJNIByteMethod):
25997 (callJNICharMethod):
25998 (callJNIShortMethod):
25999 (callJNIIntMethod):
26000 (callJNILongMethod):
26001 (callJNIFloatMethod):
26002 (callJNIDoubleMethod):
26003 (callJNIVoidMethodA):
26004 (callJNIObjectMethodA):
26005 (callJNIByteMethodA):
26006 (callJNICharMethodA):
26007 (callJNIShortMethodA):
26008 (callJNIIntMethodA):
26009 (callJNILongMethodA):
26010 (callJNIFloatMethodA):
26011 (callJNIDoubleMethodA):
26012 (getCharactersFromJString):
26013 (releaseCharactersForJString):
26014 * bindings/jni/jni_utility.h:
26015 * bindings/objc/Makefile.am: Removed.
26016 * bindings/runtime.h: Added.
26017 (Bindings::Parameter::~Parameter):
26018 (Bindings::Constructor::~Constructor):
26019 (Bindings::Field::~Field):
26020 (Bindings::Method::~Method):
26021 (Bindings::Class::~Class):
26023 2003-11-13 Maciej Stachowiak <mjs@apple.com>
26027 - fixed 3472562 - Null or Undefined variables passed to IN operator cause javascript exceptions
26030 (ForInNode::execute): If the in value is null or undefined, bail
26031 out early, since attempting to iterate its properties will throw
26034 2003-11-12 Darin Adler <darin@apple.com>
26038 * Makefile.am: Fix the build by removing the bindings directory from SUBDIRS.
26039 Later, we can either add this back and add the Makefile.am files to the top
26040 level configure.in or leave it out and remove the Makefile.am files.
26042 2003-11-12 Richard Williamson <rjw@apple.com>
26044 Added utility functions for calling JNI methods.
26048 * JavaScriptCore.pbproj/project.pbxproj:
26050 * bindings/Makefile.am: Added.
26051 * bindings/jni/Makefile.am: Added.
26052 * bindings/jni/jni_utility.cpp: Added.
26055 (callJNIVoidMethod):
26056 (callJNIObjectMethod):
26057 (callJNIByteMethod):
26058 (callJNICharMethod):
26059 (callJNIShortMethod):
26060 (callJNIIntMethod):
26061 (callJNILongMethod):
26062 (callJNIFloatMethod):
26063 (callJNIDoubleMethod):
26064 * bindings/jni/jni_utility.h: Added.
26065 * bindings/objc/Makefile.am: Added.
26067 2003-11-08 Darin Adler <darin@apple.com>
26071 - fixed 3477528 -- array.sort(function) fails if the function returns a non-zero value that rounds to zero
26073 * kjs/array_object.cpp:
26074 (compareByStringForQSort): Added checks for undefined values to match what the specification calls for.
26075 (compareWithCompareFunctionForQSort): Added checks for undefined values as above, and also changed the
26076 code that looks at the compare function result to look at the number returned without rounding to an integer.
26077 (ArrayProtoFuncImp::call): Changed the code that looks at the compare function result to look at the number
26078 returned without rounding to an integer.
26082 2003-11-03 Vicki Murley <vicki@apple.com>
26084 Reviewed by kocienda.
26086 - fixed <rdar://problem/3471096>: non-B&I builds should not use order files, because they cause false "regressions" in perf.
26088 * JavaScriptCore.pbproj/project.pbxproj: added empty SECTORDER_FLAGS variables to the Development and Deployment build styles
26090 2003-11-02 Darin Adler <darin@apple.com>
26092 Reviewed by Maciej.
26094 - changed list manipulation to use Harri Porten's idea of a circular
26095 linked list that is built from head to tail rather than building the
26096 list backwards and reversing the list when done
26098 * kjs/grammar.y: Handle CatchNode and FinallyNode in a type-safe way.
26099 Change many places that passed 0L to pass nothing at all, or to pass 0.
26102 (KJS::ElementNode::ElementNode): Build a circular list instead of a 0-terminated
26104 (KJS::ArrayNode::ArrayNode): Break the circular list instead of reversing the list.
26105 (KJS::PropertyValueNode::PropertyValueNode): Moved before ObjectLiteralNode so the
26106 inline code in ObjectLiteralNode works. Build a circular list instead of a 0-terminated
26107 backwards list. Made the case for the first node separate so we don't need a nil check.
26108 (KJS::ObjectLiteralNode::ObjectLiteralNode): Break the circular list instead of
26109 reversing the list.
26110 (KJS::ArgumentListNode::ArgumentListNode): Build a circular list instead of a 0-terminated
26111 backwards list. Also, made the constructors inline (moved here from .cpp file).
26112 (KJS::ArgumentsNode::ArgumentsNode): Break the circular list instead of
26113 reversing the list.
26114 (KJS::NewExprNode::NewExprNode): Changed a 0L to 0.
26115 (KJS::StatListNode::StatListNode): Make this constructor no longer inline (moved into
26116 .cpp file). The one in the .cpp file builds a circular list instead of a 0-terminated
26118 (KJS::VarDeclListNode::VarDeclListNode): Build a circular list instead of a 0-terminated
26120 (KJS::VarStatementNode::VarStatementNode): Break the circular list instead of reversing
26122 (KJS::BlockNode::BlockNode): Make this constructor no longer inline (moved into .cpp file).
26123 The one in the .cpp file breaks the list instead of reversing it.
26124 (KJS::ForNode::ForNode): Break the circular list instead of reversing the list.
26125 (KJS::CaseClauseNode::CaseClauseNode): Break the circular list instead of reversing the
26127 (KJS::ClauseListNode::ClauseListNode): Build a circular list instead of a 0-terminated
26129 (KJS::CaseBlockNode::CaseBlockNode): Make this constructor no longer inline (moved into
26130 .cpp file). The one in the .cpp file breaks the list instead of reversing it.
26131 (KJS::TryNode::TryNode): Changed constructor to take typed parameters for the catch and
26132 finally nodes rather than just Node.
26133 (KJS::ParameterNode::ParameterNode): Build a circular list instead of a 0-terminated
26135 (KJS::FuncDeclNode::FuncDeclNode): Break the circular list instead of reversing the
26137 (KJS::FuncExprNode::FuncExprNode): Break the circular list instead of reversing the
26141 (StatListNode::StatListNode): Moved this constructor here, no longer inline.
26142 Did the "break circular list" thing instead of the "reverse list" thing.
26143 Added setLoc calls to match KJS in the KDE tree; since we don't currently
26144 use the JavaScript debugging support, it's unclear whether there's any benefit, but
26145 later we might be using it and it's good to be as close as possible.
26146 (BlockNode::BlockNode): Moved this constructor here, no longer inline.
26147 Did the "break circular list" thing instead of the "reverse list" thing.
26148 Added setLoc calls.
26149 (CaseBlockNode::CaseBlockNode): Moved this constructor here, no longer inline.
26150 Did the "break circular list" thing instead of the "reverse list" thing.
26151 (SourceElementsNode::SourceElementsNode): Moved this constructor here, no longer inline.
26152 Did the "break circular list" thing instead of the "reverse list" thing.
26153 Added setLoc calls.
26155 * kjs/grammar.cpp: Regenerated.
26156 * kjs/grammar.cpp.h: Regenerated.
26157 * kjs/grammar.h: Regenerated.
26161 2003-10-30 Maciej Stachowiak <mjs@apple.com>
26165 - fixed 3427069 - browsing mp3.com causes leaks (KJS)
26167 * kjs/string_object.cpp:
26168 (StringProtoFuncImp::call): Don't do an early return, since that
26169 could leak a temporary regexp.
26171 2003-10-29 Maciej Stachowiak <mjs@apple.com>
26175 - fixed 3426076 - Leak of JS lexer data visiting http://www.ebay.com
26178 (yyerror): Updated the commented code.
26179 * kjs/grammar.y: Don't delete string and identifier tokens when done
26180 with them any more, they'll get cleaned up by the lexer now.
26181 * kjs/internal.cpp:
26182 (Parser::parse): Tell lexer when done parsing.
26184 (Lexer::Lexer): Initialize new data members.
26185 (Lexer::lex): Use new methods to make strings and identifiers, and
26187 (Lexer::makeIdentifier): Make a new Identifier and save it in an
26188 auto-growing array.
26189 (Lexer::makeUString): Likewise for UStrings.
26190 (Lexer::doneParsing): Clean up arrays of Ifentifiers and UStrings.
26193 2003-10-28 Maciej Stachowiak <mjs@apple.com>
26197 - fixed 3413962 - malicious web pages can kill all future JavaScript execution by breaking recursion limit check
26200 (FunctionCallNode::evaluate): If we're going to return early due
26201 to breaking the recursion limit, make sure to lower it again, or
26202 it will creep up by one each time it's exceeded.
26204 2003-10-26 Darin Adler <darin@apple.com>
26206 * JavaScriptCorePrefix.h: Added a C case to the NULL definition since we use C as well
26207 as C++ in this project.
26209 2003-10-26 Darin Adler <darin@apple.com>
26211 - rolled in some CString changes Harri Porten did on the KDE side
26214 (KJS::CString::CString): Use memcpy instead of strcpy for speed. Fix an off by one error
26215 in the copy constructor.
26216 (KJS::CString::operator=): Use memcpy instead of strcpy for speed.
26218 * JavaScriptCorePrefix.h: Add a definition of NULL here that takes advantage of the GNU
26219 __null feature even if the system C library doesn't.
26221 == Rolled over to ChangeLog-2003-10-25 ==