1 2007-03-15 Maciej Stachowiak <mjs@apple.com>
7 * wtf/TCSystemAlloc.cpp:
9 2007-03-15 Maciej Stachowiak <mjs@apple.com>
11 Reviewed by Geoff and Steve.
13 - fix some portability issues with TCMalloc.
15 * JavaScriptCore.vcproj/WTF/WTF.vcproj:
19 (WTF::InitSizeClasses):
20 (WTF::TCMalloc_PageHeap::Split):
21 (WTF::TCMalloc_PageHeap::RegisterSizeClass):
22 (WTF::TCMalloc_Central_FreeList::length):
23 (WTF::TCMalloc_ThreadCache::InitTSD):
24 (WTF::TCMalloc_ThreadCache::CreateCacheIfNecessary):
26 * wtf/TCSystemAlloc.cpp:
28 (TCMalloc_SystemAlloc):
30 2007-03-15 Timothy Hatcher <timothy@apple.com>
34 * Factored out most of our common build settings into .xcconfig files. Anything that was common in
35 each build configuration was factored out into the shared .xcconfig file.
36 * Adds a Version.xcconfig file to define the current framework version, to be used in other places.
37 * Use the new $(BUNDLE_VERSION) (defined in Version.xcconfig) in the preprocessed Info.plist.
38 * Use the versions defined in Version.xcconfig to set $(DYLIB_CURRENT_VERSION).
40 * Configurations/Base.xcconfig: Added.
41 * Configurations/DebugRelease.xcconfig: Added.
42 * Configurations/JavaScriptCore.xcconfig: Added.
43 * Configurations/Version.xcconfig: Added.
45 * JavaScriptCore.xcodeproj/project.pbxproj:
47 2007-03-16 Shrikant Gangoda <shrikant.gangoda@celunite.com>
51 * kjs/DateMath.cpp: gettimeofday comes from <sys/time.h> on Linux.
53 2007-03-14 Kevin McCullough <kmccullough@apple.com>
57 - Fixed one more build breakage
59 * kjs/date_object.cpp:
60 (KJS::formatLocaleDate):
62 2007-03-14 Kevin McCullough <kmccullough@apple.com>
66 - Fixed a build breakage.
69 * kjs/date_object.cpp:
70 (KJS::formatLocaleDate):
71 (KJS::DateObjectImp::construct):
73 2007-03-14 Kevin McCullough <kmccullough@apple.com>
77 - rdar://problem/5045720
78 - DST changes in US affect JavaScript date calculations (12975)
79 This fix was to ensure we properly test for the new changes to DST in the US.
80 Also this fixes when we apply DST, now we correctly map most past years to current
81 DST rules. We still have a small issue with years before 1900 or after 2100.
82 rdar://problem/5055038
84 * kjs/DateMath.cpp: Fix DST to match spec better.
85 (KJS::getCurrentUTCTime):
86 (KJS::mimimumYearForDST):
87 (KJS::maximumYearForDST):
88 (KJS::equivalentYearForDST):
90 * kjs/DateMath.h: Consolodated common funtionality.
91 * kjs/date_object.cpp: Consolodated common functionality.
92 (KJS::formatLocaleDate):
93 (KJS::DateObjectImp::construct):
94 * tests/mozilla/ecma/jsref.js: Added functions for finding the correct days when DST starts and ends.
95 * tests/mozilla/ecma/shell.js: Added back in the old DST functions for ease of merging with mozilla if needed.
96 * tests/mozilla/ecma_2/jsref.js: Added functions for finding the correct days when DST starts and ends.
97 * tests/mozilla/ecma_3/Date/shell.js: Added functions for finding the correct days when DST starts and ends.
98 * tests/mozilla/expected.html: Updated to show all date tests passing.
100 === Safari-5522.4 ===
102 2007-03-13 Kevin McCullough <kmccullough@apple.com>
106 - Adding expected failures until the are truly fixed.
107 - rdar://problem/5060302
109 * tests/mozilla/expected.html:
111 2007-03-12 Kevin McCullough <kmccullough@apple.com>
115 - Actually update tests for new DST rules.
117 * tests/mozilla/ecma/Date/15.9.3.1-1.js:
118 * tests/mozilla/ecma/Date/15.9.3.1-2.js:
119 * tests/mozilla/ecma/Date/15.9.3.1-3.js:
120 * tests/mozilla/ecma/Date/15.9.3.1-4.js:
121 * tests/mozilla/ecma/Date/15.9.3.1-5.js:
122 * tests/mozilla/ecma/Date/15.9.3.2-1.js:
123 * tests/mozilla/ecma/Date/15.9.3.2-2.js:
124 * tests/mozilla/ecma/Date/15.9.3.2-3.js:
125 * tests/mozilla/ecma/Date/15.9.3.2-4.js:
126 * tests/mozilla/ecma/Date/15.9.3.2-5.js:
127 * tests/mozilla/ecma/Date/15.9.3.8-1.js:
128 * tests/mozilla/ecma/Date/15.9.3.8-2.js:
129 * tests/mozilla/ecma/Date/15.9.3.8-3.js:
130 * tests/mozilla/ecma/Date/15.9.3.8-4.js:
131 * tests/mozilla/ecma/Date/15.9.3.8-5.js:
132 * tests/mozilla/ecma/Date/15.9.5.10-1.js:
133 * tests/mozilla/ecma/Date/15.9.5.10-10.js:
134 * tests/mozilla/ecma/Date/15.9.5.10-11.js:
135 * tests/mozilla/ecma/Date/15.9.5.10-12.js:
136 * tests/mozilla/ecma/Date/15.9.5.10-13.js:
137 * tests/mozilla/ecma/Date/15.9.5.10-2.js:
138 * tests/mozilla/ecma/Date/15.9.5.10-3.js:
139 * tests/mozilla/ecma/Date/15.9.5.10-4.js:
140 * tests/mozilla/ecma/Date/15.9.5.10-5.js:
141 * tests/mozilla/ecma/Date/15.9.5.10-6.js:
142 * tests/mozilla/ecma/Date/15.9.5.10-7.js:
143 * tests/mozilla/ecma/Date/15.9.5.10-8.js:
144 * tests/mozilla/ecma/Date/15.9.5.10-9.js:
145 * tests/mozilla/ecma/jsref.js:
146 * tests/mozilla/ecma_2/jsref.js:
147 * tests/mozilla/ecma_3/Date/shell.js:
149 2007-03-12 Kevin McCullough <kmccullough@apple.com>
153 - Update tests for new DST rules.
155 * tests/mozilla/ecma/shell.js:
157 2007-03-11 Geoffrey Garen <ggaren@apple.com>
159 Reviewed by Oliver Hunt.
161 Fixed <rdar://problem/4681051> Installer crashes in KJS::Collector::
162 markOtherThreadConservatively(KJS::Collector::Thread*) trying to install
163 iLife 06 using Rosetta on an Intel Machine
165 The problem was that our thread-specific data destructor would modify the
166 list of active JavaScript threads without holding the JSLock, corrupting
167 the list. Corruption was especially likely if one JavaScript thread exited
168 while another was starting up.
170 * JavaScriptCore.exp:
171 * kjs/JSLock.cpp: Don't conflate locking the JSLock with registering a
172 thread, since the thread-specific data destructor needs to lock
173 without registering a thread. Instead, treat thread registration as a
174 part of the convenience of the JSLock object, and whittle down JSLock::lock()
175 to just the bits that actually do the locking.
177 (KJS::JSLock::registerThread):
178 * kjs/JSLock.h: Updated comments to mention the new behavior above, and
179 other recent changes.
180 (KJS::JSLock::JSLock):
182 (KJS::destroyRegisteredThread): Lock here.
183 (KJS::Collector::registerThread): To match, assert that we're locked here.
185 2007-03-10 Geoffrey Garen <ggaren@apple.com>
187 Reviewed by Darin Adler.
189 Fixed <rdar://problem/4587763> PAC file: lock inversion between QT and
190 JSCore causes a hang @ www.panoramas.dk
192 With a PAC file, run-webkit-tests --threaded passes, the reported site
193 works, and all the Quicktime/JavaScript and Flash/JavaScript examples
194 I found through Google work, too.
196 Any time JavaScript causes arbitrary non-JavaScript code to execute, it
197 risks deadlock, because that code may block, trying to acquire a lock
198 owned by a thread that is waiting to execute JavaScript. In this case,
199 the thread was a networking thread that was waiting to interpret a PAC file.
201 Because non-JavaScript code may execute in response to, well, anything,
202 a perfect solution to this problem is impossible. I've implemented an
203 optimistic solution, instead: JavaScript will drop its lock whenever it
204 makes a direct call to non-JavaScript code through a bridging/plug-in API,
205 but will blissfully ignore the indirect ways it may cause non-JavaScript
206 code to run (resizing a window, for example).
208 Unfortunately, this solution introduces significant locking overhead in
209 the bridging APIs. I don't see a way around that.
211 This patch includes some distinct bug fixes I saw along the way:
213 * bindings/objc/objc_instance.mm: Fixed a bug where a nested begin() call
214 would leak its autorelease pool, because it would NULL out _pool without
217 * bindings/runtime_object.cpp:
218 (RuntimeObjectImp::methodGetter): Don't copy an Identifier to ASCII only
219 to turn around and make an Identifier from the ASCII. In an earlier
220 version of this patch, the copy caused an assertion failure. Now it's
221 just unnecessary work.
222 (RuntimeObjectImp::getOwnPropertySlot): ditto
224 * bindings/objc/objc_instance.h: Removed overrides of setVAlueOfField and
225 getValueOfField, because they did exactly what the base class versions did.
226 Removed overrides of Noncopyable declarations for the same reason.
228 * bindings/runtime.h: Inherit from Noncopyable instead of rolling our own.
229 * bindings/c/c_instance.h: ditto
231 And the actual patch:
233 * API/JSCallbackConstructor.cpp: Drop all locks when calling out to C.
234 (KJS::JSCallbackConstructor::construct):
235 * API/JSCallbackFunction.cpp: ditto
236 (KJS::JSCallbackFunction::callAsFunction):
237 * API/JSCallbackObject.cpp: ditto
238 (KJS::JSCallbackObject::init):
239 (KJS::JSCallbackObject::~JSCallbackObject):
240 (KJS::JSCallbackObject::getOwnPropertySlot):
241 (KJS::JSCallbackObject::put):
242 (KJS::JSCallbackObject::deleteProperty):
243 (KJS::JSCallbackObject::construct):
244 (KJS::JSCallbackObject::hasInstance):
245 (KJS::JSCallbackObject::callAsFunction):
246 (KJS::JSCallbackObject::getPropertyNames):
247 (KJS::JSCallbackObject::toNumber):
248 (KJS::JSCallbackObject::toString):
249 (KJS::JSCallbackObject::staticValueGetter):
250 (KJS::JSCallbackObject::callbackGetter):
252 * bindings/c/c_instance.cpp: Drop all locks when calling out to C.
253 (KJS::Bindings::CInstance::invokeMethod):
254 (KJS::Bindings::CInstance::invokeDefaultMethod):
255 * bindings/c/c_runtime.cpp: Drop all locks when calling out to C.
256 (KJS::Bindings::CField::valueFromInstance):
257 (KJS::Bindings::CField::setValueToInstance):
258 * bindings/jni/jni_objc.mm:
259 (KJS::Bindings::dispatchJNICall): Drop all locks when calling out to Java.
261 * bindings/objc/objc_instance.mm: The changes here are to accomodate the
262 fact that C++ unwinding of DropAllLocks goes crazy when you put it inside
263 a @try block. I moved all JavaScript stuff outside of the @try blocks, and
264 then prefixed the whole blocks with DropAllLocks objects. This required some
265 supporting changes in other functions, which now acquire the JSLock for
266 themselves, intead of relying on their callers to do so.
268 (ObjcInstance::invokeMethod):
269 (ObjcInstance::invokeDefaultMethod):
270 (ObjcInstance::setValueOfUndefinedField):
271 (ObjcInstance::getValueOfUndefinedField):
272 * bindings/objc/objc_runtime.mm: Same as above, except I didn't want to
273 change throwError to acquire the JSLock for itself.
274 (ObjcField::valueFromInstance):
275 (ObjcField::setValueToInstance):
276 * bindings/objc/objc_utility.mm: Supporting changes mentioned above.
277 (KJS::Bindings::convertValueToObjcValue):
278 (KJS::Bindings::convertObjcValueToValue):
281 (1) Fixed DropAllLocks to behave as advertised, and drop the JSLock only
282 if the current thread actually acquired it in the first place. This is
283 important because WebKit needs to ensure that the JSLock has been
284 dropped before it makes a plug-in call, even though it doesn't know if
285 the current thread actually acquired the JSLock. (We don't want WebKit
286 to accidentally drop a lock belonging to *another thread*.)
287 (2) Used the new per-thread code written for (1) to make recursive calls
288 to JSLock very cheap. JSLock now knows to call pthread_mutext_lock/
289 pthread_mutext_unlock only at nesting level 0.
290 (KJS::createDidLockJSMutex):
292 (KJS::JSLock::unlock):
293 (KJS::DropAllLocks::DropAllLocks):
294 (KJS::DropAllLocks::~DropAllLocks):
295 (KJS::JSLock::lockCount):
296 * kjs/JSLock.h: Don't duplicate Noncopyable.
297 (KJS::JSLock::~JSLock):
299 * wtf/Assertions.h: Blind attempt at helping the Windows build.
301 2007-03-08 MorganL <morganl.webkit@yahoo.com>
305 http://bugs.webkit.org/show_bug.cgi?id=13018
306 Bug 13018: allow embedders to override the definition of CRASH.
308 * wtf/Assertions.h: make it possible to override CRASH.
310 2007-03-07 Anrong Hu <huanr@yahoo.com>
314 Fix http://bugs.webkit.org/show_bug.cgi?id=12535
315 Bug 12535: Stack-optimizing compilers can trick GC into freeing in-use objects
318 (KJS::StringImp::toObject): Copy val onto the stack so it is not subject to garbage collection.
320 2007-03-07 Geoffrey Garen <ggaren@apple.com>
322 Build fix for non-multiple-thread folks.
324 Use a shared global in the non-multiple-thread case.
326 * wtf/FastMalloc.cpp:
328 (WTF::fastMallocForbid):
329 (WTF::fastMallocAllow):
331 2007-03-07 Geoffrey Garen <ggaren@apple.com>
333 Reviewed by Darin Adler.
335 Fixed ASSERT failure I just introduced.
337 Made the fastMalloc isForbidden flag per thread. (Oops!) We expect that
338 other threads will malloc while we're marking -- we just want to prevent
339 our own marking from malloc'ing.
341 * wtf/FastMalloc.cpp:
342 (WTF::initializeIsForbiddenKey):
344 (WTF::fastMallocForbid):
345 (WTF::fastMallocAllow):
352 2007-03-07 Shrikant Gangoda <shrikant.gangoda@celunite.com>
356 http://bugs.webkit.org/show_bug.cgi?id=12997
358 Wrap pthread-specific assertion in #if USE(MULTIPLE_THREADS).
361 (KJS::Collector::markMainThreadOnlyObjects):
363 2007-03-06 Geoffrey Garen <ggaren@apple.com>
365 Reviewed by Maciej Stachowiak.
367 Fixed <rdar://problem/4576242> | http://bugs.webkit.org/show_bug.cgi?id=12586
368 PAC file: malloc deadlock sometimes causes a hang @ www.apple.com/pro/profiles/ (12586)
370 This is a modified version of r14752 on the branch.
372 These changes just add debugging functionality. They ASSERT that we don't
373 malloc during the mark phase of a garbage collection, which can cause a
377 (KJS::Collector::collect):
378 * wtf/FastMalloc.cpp:
379 (WTF::fastMallocForbid):
380 (WTF::fastMallocAllow):
388 2007-03-06 Geoffrey Garen <ggaren@apple.com>
390 Reviewed by Maciej Stachowiak.
392 Fixed all known crashers exposed by run-webkit-tests --threaded. This covers:
394 <rdar://problem/4565394> | http://bugs.webkit.org/show_bug.cgi?id=12585
395 PAC file: after closing a window that contains macworld.com, new window
396 crashes (KJS::PropertyMap::mark()) (12585)
397 <rdar://problem/4571215> | http://bugs.webkit.org/show_bug.cgi?id=9211
398 PAC file: Crash occurs when clicking on the navigation tabs at http://www.businessweek.com/ (9211)
399 <rdar://problem/4557926>
400 PAC file: Crash occurs when attempting to view image in slideshow mode
401 at http://d.smugmug.com/gallery/581716 ( KJS::IfNode::execute (KJS::
402 ExecState*) + 312) if you use a PAC file
404 (1) Added some missing JSLocks, along with related ASSERTs.
406 (2) Fully implemented support for objects that can only be garbage collected
407 on the main thread. So far, only WebCore uses this. We can add it to API
408 later if we learn that it's needed.
410 The implementation uses a "main thread only" flag inside each object. When
411 collecting on a secondary thread, the Collector does an extra pass through
412 the heap to mark all flagged objects before sweeping. This solution makes
413 the common case -- flag lots of objects, but never collect on a secondary
414 thread -- very fast, even though the uncommon case of garbage collecting
415 on a secondary thread isn't as fast as it could be. I left some notes
416 about how to speed it up, if we ever care.
418 For posterity, here are some things I learned about GC while investigating:
420 * Each collect must either mark or delete every heap object. "Zombie"
421 objects, which are neither marked nor deleted, raise these issues:
423 * On the next pass, the conservative marking algorithm might mark a
424 zombie, causing it to mark freed objects.
426 * The client might try to use a zombie, which would seem live because
427 its finalizer had not yet run.
429 * A collect on the main thread is free to delete any object. Presumably,
430 objects allocated on secondary threads have thread-safe finalizers.
432 * A collect on a secondary thread must not delete thread-unsafe objects.
434 * The mark function must be thread-safe.
436 Line by line comments:
438 * API/JSObjectRef.h: Added comment specifying that the finalize callback
439 may run on any thread.
441 * JavaScriptCore.exp: Nothing to see here.
443 * bindings/npruntime.cpp:
444 (_NPN_GetStringIdentifier): Added JSLock.
446 * bindings/objc/objc_instance.h:
447 * bindings/objc/objc_instance.mm:
448 (ObjcInstance::~ObjcInstance): Use an autorelease pool. The other callers
449 to CFRelease needed one, too, but they were dead code, so I removed them
450 instead. (This fixes a leak seen while running run-webkit-tests --threaded,
451 although I don't think it's specifically a threading issue.)
454 (KJS::Collector::collectOnMainThreadOnly): New function. Tells the collector
455 to collect a value only if it's collecting on the main thread.
456 (KJS::Collector::markMainThreadOnlyObjects): New function. Scans the heap
457 for "main thread only" objects and marks them.
459 * kjs/date_object.cpp:
460 (KJS::DateObjectImp::DateObjectImp): To make the new ASSERTs happy, allocate
461 our globals on the heap, avoiding a seemingly unsafe destructor call at
463 * kjs/function_object.cpp:
464 (FunctionPrototype::FunctionPrototype): ditto
466 * kjs/interpreter.cpp:
467 (KJS::Interpreter::mark): Removed boolean parameter, which was an incomplete
468 and arguably hackish way to implement markMainThreadOnlyObjects() inside WebCore.
471 * kjs/identifier.cpp:
472 (KJS::identifierTable): Added some ASSERTs to check for thread safety
475 * kjs/list.cpp: Added some ASSERTs to check for thread safety problems.
476 (KJS::allocateListImp):
477 (KJS::List::release):
479 (KJS::List::empty): Make the new ASSERTs happy.
482 (KJS::JSObject::JSObject): "m_destructorIsThreadSafe" => "m_collectOnMainThreadOnly".
483 I removed the constructor parameter because m_collectOnMainThreadOnly,
484 like m_marked, is a Collector bit, so only the Collector should set or get it.
486 * kjs/object_object.cpp:
487 (ObjectPrototype::ObjectPrototype): Make the ASSERTs happy.
488 * kjs/regexp_object.cpp:
489 (RegExpPrototype::RegExpPrototype): ditto
491 * kjs/ustring.cpp: Added some ASSERTs to check for thread safety problems.
492 (KJS::UCharReference::ref):
493 (KJS::UString::Rep::createCopying):
494 (KJS::UString::Rep::create):
495 (KJS::UString::Rep::destroy):
496 (KJS::UString::null): Make the new ASSERTs happy.
498 (KJS::UString::Rep::ref): Added some ASSERTs to check for thread safety problems.
499 (KJS::UString::Rep::deref):
502 (KJS::JSCell::JSCell):
504 2007-03-06 Geoffrey Garen <ggaren@apple.com>
506 Reviewed by Maciej Stachowiak.
508 2% speedup on super accurate JS iBench.
510 (KJS::Collector::collect): Removed anti-optimization to call
511 pthread_is_threaded_np() before calling pthread_main_np(). Almost all
512 apps have more than one thread, so the extra call is actually worse.
513 Interestingly, even the single-threaded testkjs shows a speed gain
514 from removing the pthread_is_threaded_np() short-circuit. Not sure why.
516 2007-03-04 Don Gibson <dgibson77@gmail.com>
518 Reviewed by Nikolas Zimmermann.
520 - fix http://bugs.webkit.org/show_bug.cgi?id=12950
521 Assertions.cpp should not #define macros that are already defined
523 * wtf/Assertions.cpp: Don't #define WINVER and _WIN32_WINNT if they
526 2007-03-02 Steve Falkenburg <sfalken@apple.com>
530 Add unsigned int hash traits (matches existing unsigned long version)
535 2007-03-02 Adam Roben <aroben@apple.com>
539 Try to fix the Qt build.
542 (KJS::msToGregorianDateTime): Removed unnecessary "struct" keyword.
543 * kjs/DateMath.h: Moved forward declarations to the top of the file
544 before they are used.
545 * kjs/date_object.cpp:
546 (KJS::formatLocaleDate): Changed to take a const GregorianDateTime&
547 since GregorianDateTime is Noncopyable.
549 2007-03-02 Darin Adler <darin@apple.com>
551 Reviewed by Kevin McCullough.
553 - fix http://bugs.webkit.org/show_bug.cgi?id=12867
554 REGRESSION: BenchJS test 7 (dates) is 220% slower than in Safari 2.0.4
556 * kjs/DateMath.h: Marked GregorianDateTime as noncopyable, since it has a non-trivial
557 destructor and not the correspoding copy constructor or assignment operator.
558 Changed the GregorianDateTime constructor to use member initialization syntax.
559 Fixed the destructor to use the array delete operator, since timeZone is an array.
562 (KJS::daysInYear): Changed to call isLeapYear so the rule is not repeated twice.
563 (KJS::getUTCOffset): Added caching on PLATFORM(DARWIN), since we can rely on the
564 notify_check function and "com.apple.system.timezone" to let us know when the
567 2007-02-27 Geoffrey Garen <ggaren@apple.com>
569 Reviewed by Darin Adler.
571 Follow-up to fixing http://bugs.webkit.org/show_bug.cgi?id=12659 | <rdar://problem/4954306>
572 JS objects not collected after closing window @ ebay.com/maps.google.com
574 Changed Interpreter cache of global constructors and prototypes from
575 ProtectedPtrs to bare, marked pointers. ProtectedPtrs are inefficient,
576 and they increase the risk of reference cycles. Also, Darin said something
577 about ProtectedPtrs giving him warts.
579 Also changed data members to precise types from generic JSObject*'s.
581 Layout tests and JS tests pass.
583 * kjs/SavedBuiltins.h:
584 * kjs/interpreter.cpp:
585 (KJS::Interpreter::init):
586 (KJS::Interpreter::~Interpreter):
587 (KJS::Interpreter::initGlobalObject): Moved Identifier::init() call to
588 constructor, for clarity.
589 (KJS::Interpreter::mark):
592 2007-02-27 Geoffrey Garen <ggaren@apple.com>
594 Reviewed by Maciej Stachowiak.
596 Fixed http://bugs.webkit.org/show_bug.cgi?id=12659 | <rdar://problem/4954306>
597 JS objects not collected after closing window @ ebay.com/maps.google.com
599 Don't GC in the Interpreter destructor. For that to work, the Interpreter
600 would have to NULL out all of its ProtectedPtrs before calling collect(). But
601 we've decided that we don't want things to work that way, anyway. We want the
602 client to be in charge of manual GC so that it can optimize cases when
603 it will be destroying many interpreters at once
604 (e.g., http://bugs.webkit.org/show_bug.cgi?id=12900).
606 Also removed Interpreter::collect() because it was redundant with
607 Collector::collect().
609 * JavaScriptCore.exp:
610 * kjs/interpreter.cpp:
611 (KJS::Interpreter::~Interpreter):
613 (TestFunctionImp::callAsFunction):
615 2007-02-26 Krzysztof Kowalczyk <kkowalczyk@gmail.com>
617 Reviewed by Adam Roben.
619 Rename *_SUPPORT defines to ENABLE_*.
623 2007-02-26 Maciej Stachowiak <mjs@apple.com>
627 - <rdar://problem/5021698> Disable experimental SVG features (12883)
629 * wtf/Platform.h: Add ENABLE() macro similar to HAVE() and USE(), to
630 allow nicer handling of optional WebKit features.
632 2007-02-22 George Staikos <staikos@kde.org>
638 * wtf/unicode/qt4/UnicodeQt4.h:
639 (WTF::Unicode::toLower):
640 (WTF::Unicode::toUpper):
642 2007-02-22 Oscar Cwajbaum <public@oscarc.net>
646 Fix ARM-specific alignment problem in FastMalloc
647 http://bugs.webkit.org/show_bug.cgi?id=12841
649 * wtf/FastMalloc.cpp:
650 Modify how pageheap_memory is declared to ensure proper alignment
651 on architectures such as ARM
653 2007-02-20 Zack Rusin <zrusin@trolltech.com>
657 Make sure that non-void methods always return something.
659 * wtf/unicode/qt4/UnicodeQt4.h:
660 (WTF::Unicode::toLower):
661 (WTF::Unicode::toUpper):
662 (WTF::Unicode::foldCase):
664 2007-02-18 Kevin Ollivier <kevino@theolliviers.com>
666 Reviewed by Adam Roben.
668 Fix cases where MSVC-specific code was identified as Win32 platform
669 code. (as it should be compiled for e.g. wx port when using MSVC too)
673 * wtf/StringExtras.h:
674 changed PLATFORM(WIN) sections to COMPILER(MSVC) as necessary
676 2007-02-17 Krzysztof Kowalczyk <kkowalczyk@gmail.com>
678 Reviewed by Adam Roben.
680 Fix crashes on ARM due to different struct packing. Based on a patch
682 * kjs/ustring.cpp: compile-time assert to make sure sizeof(UChar) == 2
683 * kjs/ustring.h: pack UChar struct to ensure that sizeof(UChar) == 2
684 * wtf/Assertions.h: add COMPILE_ASSERT macro for compile-time assertions
686 2007-02-16 George Staikos <staikos@kde.org>
690 Fix uninitialized variable
692 * bindings/testbindings.cpp:
695 2007-02-16 Anders Carlsson <acarlsson@apple.com>
699 http://bugs.webkit.org/show_bug.cgi?id=12788
700 REGRESSION: Going back one page in history has a noticeable delay
702 Um...if all elements in two vectors are equal, then I guess we could say that
703 the two vectors are equal too.
708 2007-02-14 Anders Carlsson <acarlsson@apple.com>
712 Add new canCompareWithMemcmp vector trait and use it to determine whether
713 operator== can use memcmp.
717 (WTF::VectorTypeOperations::compare):
719 * wtf/VectorTraits.h:
722 2007-02-13 Brady Eidson <beidson@apple.com>
731 2007-02-13 Dex Deacon <occupant4@gmail.com>
735 - fix for http://bugs.webkit.org/show_bug.cgi?id=12750
736 Vector operator== was not defined correctly. It returned void,
737 did not accept const Vectors, and used an int instead of size_t.
739 * wtf/Vector.h: fixed comparison operators
743 2007-02-10 David Carson <dacarson@gmail.com>
747 - fix for http://bugs.webkit.org/show_bug.cgi?id=12636
748 Corrected the generation of method signatures when the parameter
750 Added support for converting a Javascript array to a Java array.
752 * bindings/jni/jni_utility.h: added new type for array, array_type
753 * bindings/jni/jni_runtime.cpp: add support for new array type
754 (JavaField::valueFromInstance):
755 (JavaField::setValueToInstance):
756 (JavaMethod::JavaMethod):
757 (JavaMethod::signature):
758 * bindings/jni/jni_utility.cpp: add support for new array type
759 (KJS::Bindings::callJNIMethod):
760 (KJS::Bindings::callJNIStaticMethod):
761 (KJS::Bindings::callJNIMethodIDA):
762 (KJS::Bindings::JNITypeFromClassName):
763 (KJS::Bindings::signatureFromPrimitiveType):
764 (KJS::Bindings::JNITypeFromPrimitiveType):
765 (KJS::Bindings::getJNIField):
766 (KJS::Bindings::convertArrayInstanceToJavaArray): new method
767 converts the Javascript array to the requested Java array.
768 (KJS::Bindings::convertValueToJValue):
770 2007-02-08 Anders Carlsson <acarlsson@apple.com>
774 <rdar://problem/4930614>
775 Safari complains about "Slow Script" if GMail is left open and machine is busy
777 <rdar://problem/4649516>
778 Turn off slow script dialog or crank up time that makes it come up
780 <rdar://problem/4963589>
781 Slow script warning is displayed after closing of PROMPT or PRINT dialog
783 Re-do the way script timeouts are handled. No longer use a unix timer that sends signals. Instead, add a
784 tick count and increment it in loop bodies. If the tick count reaches a threshold, do a timeout check. If the total time executing
785 is higher than the timeout value, (possibly) interrupt the script. The timeout checker also adjusts the threshold dynamically
786 to prevent doing the timeout check too often.
788 * JavaScriptCore.exp:
789 Remove pause and resume calls.
791 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
794 * kjs/interpreter.cpp:
795 (KJS::Interpreter::init):
796 (KJS::Interpreter::~Interpreter):
797 (KJS::Interpreter::startTimeoutCheck):
798 (KJS::Interpreter::stopTimeoutCheck):
799 (KJS::Interpreter::resetTimeoutCheck):
800 (KJS::getCurrentTime):
801 (KJS::Interpreter::checkTimeout):
803 (KJS::Interpreter::timedOut):
805 (DoWhileNode::execute):
806 (WhileNode::execute):
809 2007-02-07 Darin Adler <darin@apple.com>
811 * JavaScriptCore.vcproj/JavaScriptCore.sln: Reenable testkjs.
813 2007-02-07 Darin Adler <darin@apple.com>
817 - another build fix; this time for sure
819 * pcre/pcre_exec.c: (match):
820 The compiler caught an incorrect use of the othercase variable across
821 a call to RMATCH in character repeat processing. Local variables can
822 change in the crazy NO_RECURSE mode that we use, so we instead need
823 the value in othercase to be in one of the special stack frame variables.
824 Added a new stack frame variable for this purpose named repeat_othercase.
825 Also noted a similar error in the non-UTF-16 side of the #ifdef, but
826 didn't try to fix that one. Also removed a SUPPORT_UCP #ifdef from the
827 PCRE_UTF16 side; that code doesn't work without the Unicde properties
828 table, and we don't try to use it that way.
830 2007-02-06 Steve Falkenburg <sfalken@apple.com>
832 Disable testkjs in sln until we figure out mysterious compiler warning.
834 * JavaScriptCore.vcproj/JavaScriptCore.sln:
836 2007-02-06 Steve Falkenburg <sfalken@apple.com>
843 2007-02-06 Darin Adler <darin@apple.com>
847 - fix <rdar://problem/4979089> PCRE should avoid setjmp/longjmp even when compiler
850 Added a new code path that's slower and way uglier but doesn't rely on GCC's
853 * pcre/pcre_exec.c: Added a numeric parameter to the RMATCH function. It must be
854 different at every RMATCH call site. Changed the non-GCC NO_RECURSE version of
855 the macro to use a label incorporating the number. Changed the RRETURN macro to
856 use a goto instead of longjmp.
857 (match): Added a different number at each callsite, using a perl script for the
858 first-time task. Going forward it should be easy to maintain by hand. Added a
859 switch statement at the bottom of the function. We'll get compile time errors
860 if we have anything in the switch statement that's never used in an RMATCH,
861 but errors in the other direction are silent except at runtime.
863 2007-02-06 Darin Adler <darin@apple.com>
867 - fix <rdar://problem/4687840> 9A241: JavaScript RegExp 25-30x slower than on 10.4.7
869 I used Shark to figure out what to do. The test case is now 15% faster than with
870 stock Safari. Some other regular expression cases might still be a few % slower
871 than before, but the >10x slowdown is now completely gone.
873 1) Fix slowness caused by setjmp/longjmp by using computed goto instead.
875 Use GCC extensions - locally declared labels, labels as values, and computed goto -
876 instead of using setjmp/longjmp to implemement non-recursive version of the regular
877 expression system. We could probably make this even faster if we reduced the use
880 2) Fix slowness caused by allocating heapframe objects by allocating the first
881 16 of them from the stack.
883 3) Speed up use of malloc and free in PCRE by making it use fastMalloc and fastFree.
885 4) Speed up the test case by adding a special case to a UString function.
887 5) Made a small improvement to the innermost hottest loop of match by hoisting
888 the conversion from int to pcre_uchar out of the loop.
890 * JavaScriptCore.xcodeproj/project.pbxproj: Compile FastMallocPCRE.cpp, and don't
891 compile pcre_globals.c.
893 * wtf/FastMallocPCRE.cpp: Added. A copy of pcre_globals.c that uses FastMalloc.h.
894 This is better than code that sets the PCRE allocation globals because by doing it
895 this way there's guaranteed to be no problem with order of initialization.
897 * kjs/ustring.cpp: (KJS::UString::spliceSubstringsWithSeparators): Add a fast
898 special case when this is called for only one subrange and no seaprators. This
899 was happening a lot in the test case and it seems quite reasonable to optimize this.
901 * pcre/pcre_exec.c: Create a copy of the RMATCH and RRETURN macros that use goto
902 instead of setjmp/longjmp. Change code that calls pcre_stack_malloc to first use
903 storage on the stack inside the match function.
904 (match): Move initialization of utf8 up a couple lines to avoid "possibly used
905 uninitialized" warning. Use a local variable so we compare with pcre_uchar instead
906 of with int inside the inner "find a character" loop.
908 2007-02-03 George Staikos <staikos@kde.org>
912 -1 is not a valid point. We can't handle anything > 0xffff anyway.
913 Fixes crash on cases like eval("x");
915 * wtf/unicode/qt4/UnicodeQt4.h:
916 (WTF::Unicode::category):
918 2007-02-02 Darin Adler <darin@apple.com>
922 - fix copying and assigning a ListHashSet
924 No test because the code path with bugs I am fixing is not used yet.
926 * wtf/ListHashSet.h: Tweaked ListHashSetNodeAllocator a little bit for clarity.
927 Changed m_allocator to be an OwnPtr instead of doing an explicit delete.
928 Fixed bug in copy constructor where we'd have an uninitialized m_allocator.
929 Fixed bug in assignment operator where it would swap only the hash table, and
930 not the head, tail, and allocator pointers.
932 2007-02-02 Geoffrey Garen <ggaren@apple.com>
934 Reviewed by Maciej Stachowiak.
936 Use WTFLog instead of fprintf for logging KJS::Node leaks.
939 (NodeCounter::~NodeCounter): Changed count to unsigned, updated
940 to match style guidelines.
942 2007-02-02 Maciej Stachowiak <mjs@apple.com>
944 - not reviewed, build fix
947 (WTF::ListHashSetNodeAllocator::ListHashSetNodeAllocator): ummm, use union correctly
949 2007-02-01 Maciej Stachowiak <mjs@apple.com>
953 - use a custom allocator for ListHashSet, to fix ~1% perf regression using it for form control
956 (WTF::ListHashSetNodeAllocator::ListHashSetNodeAllocator):
957 (WTF::ListHashSetNodeAllocator::allocate):
958 (WTF::ListHashSetNodeAllocator::deallocate):
959 (WTF::ListHashSetNode::operator new):
960 (WTF::ListHashSetNode::operator delete):
961 (WTF::ListHashSetNode::destroy):
962 (WTF::ListHashSetTranslator::translate):
963 (WTF::::ListHashSet):
964 (WTF::::~ListHashSet):
966 (WTF::::unlinkAndDelete):
967 (WTF::::deleteAllNodes):
969 2007-01-31 Maciej Stachowiak <mjs@apple.com>
976 (WTF::::remove): remove before deleting
978 2007-01-31 Maciej Stachowiak <mjs@apple.com>
980 Reviewed by Mark with help from Lars.
982 - added new ListHashSet class, which combines a hashtable and a linked list to provide a set
983 that keeps elements in inserted order
985 This is to assist in fixing the following:
986 <rdar://problem/4751164> REGRESSION: Safari places text on incorrect button when returning to a page via back [10541]
987 http://bugs.webkit.org/show_bug.cgi?id=10541
989 * JavaScriptCore.vcproj/WTF/WTF.vcproj:
990 * JavaScriptCore.xcodeproj/project.pbxproj:
992 (WTF::HashTable::find):
993 (WTF::HashTable::contains):
996 * wtf/ListHashSet.h: Added.
997 (WTF::ListHashSetNode::ListHashSetNode):
998 (WTF::ListHashSetNodeHashFunctions::hash):
999 (WTF::ListHashSetNodeHashFunctions::equal):
1000 (WTF::ListHashSetIterator::ListHashSetIterator):
1001 (WTF::ListHashSetIterator::get):
1002 (WTF::ListHashSetIterator::operator*):
1003 (WTF::ListHashSetIterator::operator->):
1004 (WTF::ListHashSetIterator::operator++):
1005 (WTF::ListHashSetIterator::operator--):
1006 (WTF::ListHashSetIterator::operator==):
1007 (WTF::ListHashSetIterator::operator!=):
1008 (WTF::ListHashSetIterator::operator const_iterator):
1009 (WTF::ListHashSetIterator::node):
1010 (WTF::ListHashSetConstIterator::ListHashSetConstIterator):
1011 (WTF::ListHashSetConstIterator::get):
1012 (WTF::ListHashSetConstIterator::operator*):
1013 (WTF::ListHashSetConstIterator::operator->):
1014 (WTF::ListHashSetConstIterator::operator++):
1015 (WTF::ListHashSetConstIterator::operator--):
1016 (WTF::ListHashSetConstIterator::operator==):
1017 (WTF::ListHashSetConstIterator::operator!=):
1018 (WTF::ListHashSetConstIterator::node):
1019 (WTF::ListHashSetTranslator::hash):
1020 (WTF::ListHashSetTranslator::equal):
1021 (WTF::ListHashSetTranslator::translate):
1022 (WTF::::ListHashSet):
1024 (WTF::::~ListHashSet):
1035 (WTF::::unlinkAndDelete):
1036 (WTF::::appendNode):
1037 (WTF::::deleteAllNodes):
1038 (WTF::::makeIterator):
1039 (WTF::::makeConstIterator):
1040 (WTF::deleteAllValues):
1042 2007-01-30 Darin Adler <darin@apple.com>
1044 * kjs/DateMath.cpp: Fix license header to reflect LGPL as the first license
1045 mentioned. We still mention the option of using under MPL or GPL since some
1046 of this code came from the Mozilla project with those license terms.
1048 2007-01-30 Simon Hausmann <hausmann@kde.org>
1052 Turned JavaScriptCore from a separate library into an includable
1053 project, to combine it all into libWebKitQt.
1055 * JavaScriptCore.pri: Added.
1056 * JavaScriptCore.pro: Removed.
1059 2007-01-29 Geoffrey Garen <ggaren@apple.com>
1061 Reviewed by Maciej Stachowiak.
1063 Fixed <rdar://problem/4485644> REGRESSION: JavaScriptCore has init routines
1065 The TCMalloc module now initializes, if needed, inside GetCache() and
1066 fastMallocSetIsMultiThreaded(). We leverage the same synchronization
1067 technique used for enabling / disabling the single-threaded optimization
1068 to synchronize initialization of the library without requiring a lock
1071 1,251 runs of tcmalloc_unittest, 2 runs of a custom, massively multi-threaded
1072 tcmalloc_unittest, and my custom version of the PLT show no regressions.
1073 Super-accurate JS iBench reports a .24% regression, which is right at the
1074 limit of its error range, so I'm declaring victory.
1076 * wtf/FastMalloc.cpp:
1077 (WTF::fastMallocSetIsMultiThreaded): Initialize, if needed. (InitModule()
1078 checks the "if needed" part.)
1079 (WTF::TCMalloc_ThreadCache::GetCache): Restored original TCMalloc code
1080 inside #ifdef, for posterity. Added new initialization logic.
1081 (WTF::TCMalloc_ThreadCache::InitModule): Call InitTSD(), since we don't
1082 have a static initializer to call it for us, now. This means that fastMalloc
1083 is not usable as a general libc allocator, but it never was, and if it were
1084 the general libc allocator, we wouldn't be here in the first place, so whatever.
1085 (WTF::TCMalloc_ThreadCache::InitTSD): Don't try to take the pageheap_lock,
1086 since InitModule already has it.
1088 2007-01-29 Kevin McCullough <KMcCullough@apple.com>
1090 Reviewed by Geoff and Oliver.
1092 - rdar://problem/4955561
1093 - missusing JavaScript shouldn't crash webkit. Now it doesn't, in this case.
1095 * bindings/objc/objc_runtime.mm:
1096 (ObjcFallbackObjectImp::callAsFunction):
1097 * bindings/runtime_method.cpp:
1098 (RuntimeMethod::callAsFunction):
1099 * bindings/runtime_object.cpp:
1100 (RuntimeObjectImp::callAsFunction):
1102 2007-01-28 Geoffrey Garen <ggaren@apple.com>
1104 Reviewed by Maciej Stachowiak.
1106 First step in fixing <rdar://problem/4485644> REGRESSION: JavaScriptCore
1109 Don't rely on a static initializer to store the main thread's ID (which
1110 we would use to detect allocations on secondary threads). Instead, require
1111 the caller to notify fastMalloc if it might allocate on a secondary thread.
1113 Also fixed what seemed like a race condition in do_malloc.
1115 tcmalloc_unittest and my custom versions of JS iBench and PLT show no
1118 * wtf/FastMalloc.cpp:
1119 (WTF::fastMallocSetIsMultiThreaded):
1120 (1) Renamed from "fastMallocRegisterThread", which was a misleading name because
1121 not all threads need to register with fastMalloc -- only secondary threads
1122 need to, and only for the purpose of disabling its single-threaded optimization.
1124 (2) Use the pageheap_lock instead of a custom one, since we need to synchronize
1125 with the read of isMultiThreaded inside CreateCacheIfNecessary. This is a new
1126 requirement, now that we can't guarantee that the first call to CreateCacheIfNecessary
1127 will occur on the main thread at init time, before any other threads have been created.
1129 (WTF::TCMalloc_ThreadCache::CreateCacheIfNecessary):
1130 (WTF::do_malloc): Reverted WTF change only to call GetCache() if size <= kMaxSize.
1131 The WTF code would read phinited without holding the pageheap_lock, which
1132 seemed like a race condition. Regardless, calling GetCache reduces the number
1133 of code paths to module initialization, which will help in writing the
1134 final fix for this bug.
1136 2007-01-28 David Kilzer <ddkilzer@webkit.org>
1140 - fix http://bugs.webkit.org/show_bug.cgi?id=9815
1141 JavaScript TypeError loading Dean Edwards' JS compressor/obfuscator
1143 Creating a function using 'new Function()' was not setting its prototype with the
1144 same flags as 'function() { }'.
1146 Test: fast/js/function-prototype.html
1148 * kjs/function_object.cpp:
1149 (FunctionObjectImp::construct): Change flags from DontEnum|DontDelete|ReadOnly to
1150 Internal|DontDelete to match FuncDeclNode::processFuncDecl() and
1151 FuncExprNode::evaluate() in kjs/nodes.cpp.
1153 2007-01-27 Geoffrey Garen <ggaren@apple.com>
1155 Reviewed by Beth Dakin.
1157 Added some missing JSLocks, which might fix <rdar://problem/4889707>.
1159 We need to lock whenever we might allocate memory because our FastMalloc
1160 implementation requires clients to register their threads, which we do
1163 We also need to lock whenever modifying ref-counts because they're not
1166 * API/JSObjectRef.cpp:
1167 (JSClassCreate): Allocates memory
1168 (JSClassRetain): Modifies a ref-count
1169 (JSClassRelease): Modifies a ref-count
1170 (JSPropertyNameArrayRetain): Modifies a ref-count
1171 (JSPropertyNameArrayRelease): Modifies a ref-count
1172 * API/JSStringRef.cpp:
1173 (JSStringRetain): Modifies a ref-count
1174 * API/JSValueRef.cpp:
1175 (JSValueIsInstanceOfConstructor): Might allocate memory if an exception
1178 2007-01-27 Lars Knoll <lars@trolltech.com>
1182 * bindings/qt/qt_instance.h:
1184 2007-01-25 Geoffrey Garen <ggaren@apple.com>
1186 Reviewed by Maciej Stachowiak.
1188 Fixed <rdar://problem/4608404> WebScriptObject's _rootObject lack
1189 of ownership policy causes crashes (e.g., in Dashcode)
1191 The old model for RootObject ownership was either to (1) leak them or (2) assign
1192 them to a single owner -- the WebCore::Frame -- which would destroy them
1193 when it believed that all of its plug-ins had unloaded.
1195 This model was broken because of (1) and also because plug-ins are not the only
1196 RootObject clients. All Bindings clients are RootObjects clients, including
1197 applications, which outlive any particular WebCore::Frame.
1199 The new model for RootObject ownership is to reference-count them, with a
1200 throw-back to the old model: The WebCore::Frame tracks the RootObjects
1201 it creates, and invalidates them when it believes that all of its plug-ins
1204 We maintain this throw-back to avoid plug-in leaks, particularly from Java.
1205 Java is completely broken when it comes to releasing JavaScript objects.
1206 Comments in our code allege that Java does not always call finalize when
1207 collecting objects. Moreoever, my own testing reveals that, when Java does
1208 notify JavaScript of a finalize, the data it provides is totally bogus.
1210 This setup is far from ideal, but I don't think we can do better without
1211 completely rewriting the bindings code, and possibly part of the Java
1214 Layout tests pass. No additional leaks reported. WebCore/manual-tests/*liveconnect*
1215 and a few LiveConnect demos on the web also run without a hitch.
1217 const RootObject* => RootObject*, since we need to ref/deref
1219 * bindings/NP_jsobject.cpp:
1220 (jsDeallocate): deref our RootObjects. Also unprotect or JSObject, instead
1221 of just relying on the RootObject to do it for us when it's invalidated.
1222 (_isSafeScript): Check RootObject validity.
1223 (_NPN_CreateScriptObject): ditto
1224 (_NPN_Invoke): ditto
1225 (_NPN_Evaluate): ditto
1226 (_NPN_GetProperty): ditto
1227 (_NPN_SetProperty): ditto
1228 (_NPN_RemoveProperty): ditto
1229 (_NPN_HasProperty): ditto
1230 (_NPN_HasMethod): ditto
1231 (_NPN_SetException): ditto
1233 * bindings/runtime_root.cpp:
1234 Revived bit-rotted LIAR LIAR LIAR comment.
1236 LOOK: Added support for invalidating RootObjects without deleting them,
1237 which is the main goal of this patch.
1239 Moved protect counting into the RootObject class, to emphasize that
1240 the RootObject protects the JSObject, and unprotects it upon being invalidated.
1241 addNativeReference => RootObject::gcProtect
1242 removeNativeReference => RootObject::gcUnprotect
1243 ProtectCountSet::contains => RootObject::gcIsProtected
1245 I know we'll all be sad to see the word "native" go.
1247 * bindings/runtime_root.h: Added ref-counting support to RootObject, with
1248 all the standard accoutrements.
1250 * bindings/c/c_utility.cpp:
1251 (KJS::Bindings::convertValueToNPVariant): If we can't find a valid RootObject,
1252 return void instead of just leaking.
1254 * bindings/jni/jni_instance.cpp:
1255 (JavaInstance::JavaInstance): Don't take a RootObject in our constructor;
1256 be like other Instances and require the caller to call setRootObject. This
1257 reduces the number of ownership code paths.
1258 (JavaInstance::invokeMethod): Check RootObject for validity.
1259 * bindings/jni/jni_instance.h: Removed private no-arg constructor. Having
1260 an arg constructor accomplishes the same thing.
1262 * bindings/jni/jni_jsobject.cpp:
1263 (JavaJSObject::invoke): No need to call findProtectCountSet, because finalize()
1264 checks for RootObject validity.
1265 (JavaJSObject::JavaJSObject): check RootObject for validity
1266 (JavaJSObject::call): ditto
1267 (JavaJSObject::eval): ditto
1268 (JavaJSObject::getMember): ditto
1269 (JavaJSObject::setMember): ditto
1270 (JavaJSObject::removeMember): ditto
1271 (JavaJSObject::getSlot): ditto
1272 (JavaJSObject::setSlot): ditto
1273 (JavaJSObject::toString): ditto
1274 (JavaJSObject::finalize): ditto
1275 (JavaJSObject::createNative): No need to tell the RootObject to protect
1276 the global object, since the RootObject already owns the interpreter.
1278 * bindings/jni/jni_runtime.cpp:
1279 (JavaArray::JavaArray): Removed copy construcutor becaue it was unused.
1280 Dead code is dangerous code.
1282 * bindings/objc/objc_runtime.mm: Added WebUndefined protocol. Previous use
1283 of WebScriptObject was bogus, because WebUndefined is not a subclass of
1285 (convertValueToObjcObject): If we can't find a valid RootObject,
1286 return nil instead of just leaking.
1288 * bindings/objc/objc_utility.mm:
1289 (KJS::Bindings::convertValueToObjcValue): If we can't find a valid RootObject,
1290 return nil instead of just leaking.
1292 2007-01-27 Andrew Wellington <proton@wiretapped.net>
1296 Fix for Repeated string concatenation results in OOM crash
1297 http://bugs.webkit.org/show_bug.cgi?id=11131
1299 * kjs/operations.cpp:
1300 (KJS::add): Throw exception if string addition result is null
1302 (KJS::UString::UString): Don't call memcpy when malloc failed
1304 2007-01-25 Jan Kraemer <camel@gmx.de>
1308 Fix for http://bugs.webkit.org/show_bug.cgi?id=12382
1310 Fix crash on architectures with 32 bit ints and
1311 64 bit longs (For example Linux on AMD64)
1313 * kjs/dtoa.cpp: #define Long int as suggested in comment
1315 2007-01-24 Geoffrey Garen <ggaren@apple.com>
1317 Fixed up #include order for style. No review necessary.
1319 * API/JSStringRef.cpp:
1321 2007-01-24 Geoffrey Garen <ggaren@apple.com>
1323 Reviewed by Maciej Stachowiak.
1325 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
1326 Copy JSStringRefCF, in case anybody wants to use it. (I just added
1329 2007-01-24 Maciej Stachowiak <mjs@apple.com>
1331 Not reviewed, trivial property change.
1333 * JavaScriptCore.vcproj/JavaScriptCore.sln: remove svn:mime-type
1334 property which made this binary.
1336 2007-01-25 Mark Rowe <mrowe@apple.com>
1340 * Info.plist: Update copyright string.
1342 2007-01-24 Darin Adler <darin@apple.com>
1344 Reviewed by Mark Rowe.
1346 * JavaScriptCore.xcodeproj/project.pbxproj: Changed to /usr/sbin/sysctl
1347 so we don't rely on people's paths.
1349 2007-01-23 Alice Liu <alice.liu@apple.com>
1353 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
1356 2007-01-23 Geoffrey Garen <ggaren@apple.com>
1360 * API/JSStringRef.h:
1361 * JavaScriptCore.xcodeproj/project.pbxproj:
1363 2007-01-24 Mark Rowe <mrowe@apple.com>
1365 Build fix for DumpRenderTree.
1367 * JavaScriptCore.xcodeproj/project.pbxproj: Make JSStringRefCF.h public so it's copied into built framework.
1369 2007-01-23 Anders Carlsson <acarlsson@apple.com>
1373 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
1376 2007-01-23 Geoffrey Garen <ggaren@apple.com>
1378 Reviewed by Maciej Stachowiak.
1380 Fixed <rdar://problem/4885131> Move CFString function declarations from
1381 JSStringRef.h to JSStringRefCF.h
1383 Also removed remaining API FIXMEs and changed them into Radars.
1385 * API/JSClassRef.cpp:
1386 (OpaqueJSClass::OpaqueJSClass): Added Radar numbers for UTF8 conversion.
1388 * API/JSContextRef.cpp:
1389 (JSGlobalContextCreate): Replaced FIXME for NULL JSContextRef with Radar number.
1391 * API/JSObjectRef.h: Removed FIXME, which is unprofessional in a public header.
1393 * API/JSStringRef.cpp: Moved CF related implementations to JSStringRefCF.cpp.
1394 (JSStringCreateWithUTF8CString): Replaced FIXME with Radar number.
1395 * API/JSStringRef.h: Moved CF related declarations to JSStringRefCF.h. Added
1396 #include of JSStringRefCF.h as a stopgap until clients start #including
1397 it as needed by themselves.
1399 * API/JSStringRefCF.cpp: Added.
1400 (JSStringCreateWithCFString):
1401 (JSStringCopyCFString): Replaced JSChar cast with UniChar cast, which is
1402 more appropriate for a CF call.
1403 * API/JSStringRefCF.h: Added.
1404 * JavaScriptCore.xcodeproj/project.pbxproj:
1406 2007-01-18 Sanjay Madhav <sanjay12@gmail.com>
1410 Add JavaScriptCore define to help with tracing of when objects are marked.
1413 (KJS::JSObject::mark):
1415 2007-01-18 Simon Hausmann <hausmann@kde.org>
1419 * JavaScriptCore.pro: Remove generated files on make clean.
1422 2007-01-16 Alexey Proskuryakov <ap@webkit.org>
1426 http://bugs.webkit.org/show_bug.cgi?id=12268
1427 Give object prototypes their own names
1429 * kjs/lookup.h: Append "Prototype" to ClassName in KJS_IMPLEMENT_PROTOTYPE.
1431 2007-01-16 Geoffrey Garen <ggaren@apple.com>
1433 Reviewed by Darin Adler.
1435 Added re-entrency checking to GC allocation and collection. It is an error
1436 to allocate or collect from within a collection. We've had at least one
1437 case of each bug in the past.
1439 Added a comment to the API header, explaining that API clients must not
1440 make this mistake, either.
1442 Layout tests and JS tests pass.
1444 * API/JSObjectRef.h:
1445 * kjs/collector.cpp:
1446 (KJS::GCLock::GCLock):
1447 (KJS::GCLock::~GCLock):
1448 (KJS::Collector::allocate):
1449 (KJS::Collector::collect):
1451 2007-01-14 Mark Rowe <mrowe@apple.com>
1455 Minor fixes to JavaScript pretty-printing.
1457 * JavaScriptCore.exp:
1459 (KJS::Parser::prettyPrint): Return line number and error message if parsing fails.
1461 * kjs/nodes2string.cpp:
1462 (ElementNode::streamTo): Include comma delimiters in array literals.
1463 (PropertyNameNode::streamTo): Quote property names in object literals to handle the case when the property name is not a valid identifier.
1465 (doIt): Print any errors encountered while pretty-printing.
1467 2007-01-12 Anders Carlsson <acarlsson@apple.com>
1472 Add hash traits for unsigned long and unsigned long long.
1474 2007-01-12 Geoffrey Garen <ggaren@apple.com>
1478 Rolling back in r18786 with leaks fixed, and these renames slightly reworked:
1480 Because they can return 0:
1481 rootObjectForImp => findRootObject (overloaded for JSObject* and Interpreter*)
1482 rootObjectForInterpreter => findRootObject (ditto)
1483 findReferenceSet => findProtectCountSet
1485 2007-01-11 Geoffrey Garen <ggaren@apple.com>
1489 Rolling out r18786 because it caused leaks.
1491 2007-01-11 Geoffrey Garen <ggaren@apple.com>
1493 Reviewed by Anders Carlsson.
1495 Even more cleanup in preparation for fixing <rdar://problem/4608404>
1496 WebScriptObject's _executionContext lack of ownership policy causes
1497 crashes (e.g., in Dashcode)
1502 ReferencesSet | ProtectCounts => ProtectCountSet (because it's a typename for a set of GC protect counts)
1503 ReferencesByRootMap => RootObjectMap (because RootObjectToProtectCountSetMap would have been confusing)
1504 pv => protectedValues
1505 rootObjectForImp => getRootObject (overloaded for JSObject* and Interpreter*)
1506 rootObjectForInterpreter => getRootObject (ditto)
1507 findReferenceSet => getProtectCountSet
1510 (KJS::Bindings::getRootObjectMap): Changed to take advantage of built-in
1511 facility for initializing static variables.
1513 (KJS::Bindings::getProtectCountSet):
1514 (KJS::Bindings::destroyProtectCountSet): Added. Helps encapsulate the fact
1515 that getting a ProtectCountSet entails adding a RootObject to a hash table,
1516 and destroying one entails the reverse.
1518 (KJS::Bindings::getRootObject): Removed spurious NULL check.
1520 (KJS::Bindings::findReferenceSet): Renamed. Changed to use getRootObject()
1521 instead of iterating on its own.
1523 (KJS::Bindings::addNativeReference): Changed to use an early return instead
1524 of indenting the whole function.
1525 (KJS::Bindings::removeNativeReference): Ditto.
1527 2007-01-11 Geoffrey Garen <ggaren@apple.com>
1529 Reviewed by Anders Carlsson.
1531 Even more cleanup in preparation for fixing <rdar://problem/4608404>
1532 WebScriptObject's _executionContext lack of ownership policy causes
1533 crashes (e.g., in Dashcode)
1538 findRootObjectForNativeHandleFunction => createRootObject
1539 FindRootObjectForNativeHandleFunctionPtr => CreateRootObjectFunction
1541 Also removed unnecessary use of "Bindings::" prefix.
1543 * JavaScriptCore.exp:
1544 * bindings/jni/jni_jsobject.cpp:
1545 (JavaJSObject::createNative):
1546 (JavaJSObject::convertValueToJObject):
1547 (JavaJSObject::convertJObjectToValue):
1548 * bindings/runtime_root.cpp:
1549 (KJS::Bindings::RootObject::setCreateRootObject):
1550 * bindings/runtime_root.h:
1551 (KJS::Bindings::RootObject::createRootObject):
1553 2007-01-11 George Staikos <staikos@kde.org>
1557 Appears to be Mac specific right now.
1561 2007-01-10 Lars Knoll <lars@trolltech.com>
1565 Use the new functionality in Qt 4.3, to make
1566 the methods closer compliant with the Unicode
1569 Keep the old code so that it still compiles against
1572 * wtf/unicode/qt4/UnicodeQt4.h:
1573 (WTF::Unicode::toLower):
1574 (WTF::Unicode::toUpper):
1575 (WTF::Unicode::toTitleCase):
1576 (WTF::Unicode::foldCase):
1577 (WTF::Unicode::isFormatChar):
1578 (WTF::Unicode::isPrintableChar):
1579 (WTF::Unicode::isSeparatorSpace):
1580 (WTF::Unicode::isPunct):
1581 (WTF::Unicode::isDigit):
1582 (WTF::Unicode::isLower):
1583 (WTF::Unicode::isUpper):
1584 (WTF::Unicode::digitValue):
1585 (WTF::Unicode::mirroredChar):
1586 (WTF::Unicode::combiningClass):
1587 (WTF::Unicode::decompositionType):
1588 (WTF::Unicode::umemcasecmp):
1589 (WTF::Unicode::direction):
1590 (WTF::Unicode::category):
1592 2007-01-09 Darin Adler <darin@apple.com>
1594 - update 2007 Apple copyright for the new company name
1598 2007-01-09 Darin Adler <darin@apple.com>
1602 * kjs/string_object.cpp: (KJS::StringProtoFunc::callAsFunction):
1603 Actually compile it this time.
1605 2007-01-09 Darin Adler <darin@apple.com>
1609 * kjs/string_object.cpp: (KJS::StringProtoFunc::callAsFunction):
1612 2007-01-09 Darin Adler <darin@apple.com>
1614 - fix build on platforms where Unicode::UChar is != uint16_t
1616 * kjs/string_object.cpp: (KJS::StringProtoFunc::callAsFunction):
1619 2007-01-09 Mitz Pettel <mitz@webkit.org>
1623 - changes for http://bugs.webkit.org/show_bug.cgi?id=11078
1624 Forms Don't Submit (ASP Pages)
1626 * JavaScriptCore.exp:
1628 (KJS::JSValue::toInt32): Folded toInt32Inline into this method, which was its
1630 (KJS::JSValue::toUInt32): Added a variant that reports if the conversion has
1634 2007-01-09 Darin Adler <darin@apple.com>
1638 - fix http://bugs.webkit.org/show_bug.cgi?id=12174
1639 improve Unicode use (less WTF::Unicode:: prefix, centralized character names)
1641 * wtf/unicode/icu/UnicodeIcu.h: Change parameter and return types
1642 to UChar32 and UChar. Removed unneeded type casts and added some
1643 const to functions that lacked it. Removed WTF::Unicode::memcmp.
1644 (WTF::Unicode::umemcasecmp): Renamed from strcasecmp since this
1645 doesn't work on 0-terminated strings as the str functions do.
1646 * wtf/unicode/qt4/UnicodeQt4.h: Ditto.
1648 - got rid of namespace prefixes from most uses of WTF::Unicode
1651 (KJS::isStrWhiteSpace):
1652 (KJS::escapeStringForPrettyPrinting):
1654 (KJS::Lexer::isWhiteSpace):
1655 (KJS::Lexer::isIdentStart):
1656 (KJS::Lexer::isIdentPart):
1657 * kjs/string_object.cpp:
1658 (KJS::StringProtoFunc::callAsFunction):
1660 2007-01-07 David Kilzer <ddkilzer@webkit.org>
1664 - fix http://bugs.webkit.org/show_bug.cgi?id=11917
1665 setlocale() can return null
1667 * kjs/date_object.cpp:
1668 (KJS::DateProtoFunc::callAsFunction): Removed dead code.
1670 2007-01-07 David Carson <dacarson@gmail.com>
1674 - fix http://bugs.webkit.org/show_bug.cgi?id=12100
1675 JNI bindings should be available to non-Mac platforms that have JNI
1677 Change JNI so that it is not wrapped in the PLATFORM(MAC) ifdef, enabling
1678 other platforms who have JNI to use it.
1680 * bindings/jni/jni_instance.h:
1681 Removed unnecessary include of <CoreFoundation/CoreFoundation.h>
1682 * bindings/jni/jni_utility.cpp:
1683 (KJS::Bindings::setJavaVM):
1684 * bindings/jni/jni_utility.h:
1685 Added new method for clients to set the JavaVM
1686 * bindings/runtime.cpp:
1687 (KJS::Bindings::Instance::createBindingForLanguageInstance):
1688 Changed code to utilize new #if HAVE(JNI)
1690 Added new #define for JNI, ie HAVE_JNI
1692 2007-01-07 David Carson <dacarson@gmail.com>
1696 Fix http://bugs.webkit.org/show_bug.cgi?id=11431
1697 ARM platform has some byte alignment issues
1699 Fix for NaN being 4 bytes and it must start on a byte boundary
1700 for ARM architectures.
1705 2007-01-04 David Kilzer <ddkilzer@webkit.org>
1707 Reviewed by Kevin McCullough.
1709 - fix http://bugs.webkit.org/show_bug.cgi?id=12070
1710 REGRESSION: KJS::getUTCOffset() caches UTC offset but ignores time zone changes
1713 (KJS::getUTCOffset): Don't cache UTC offset.
1715 2007-01-02 Darin Adler <darin@apple.com>
1717 - minor tweak (hope this doesn't re-break Windows)
1719 * pcre/pcre_compile.c: Removed use of const pcre_uchar const * -- Mitz probably
1720 meant const pcre_uchar *const, but I think we can do without the explicit const here.
1722 * pcre/pcre_internal.h: Re-enabled warning C4114.
1724 2007-01-02 David Kilzer <ddkilzer@webkit.org>
1726 Reviewed by NOBODY (Windows build fix).
1728 The MSVC compiler requires variables to be declared at the top of the enclosing block in C source.
1730 Disable this warning to prevent MSVC from complaining about the 'const pcre_uchar const *' type:
1731 warning C4114: same type qualifier used more than once
1733 * pcre/pcre_compile.c:
1734 (pcre_compile2): Moved variable declarations to top of their respective enclosing blocks.
1735 * pcre/pcre_internal.h: Added pragma to disable compiler warning.
1737 2007-01-01 Mitz Pettel <mitz@webkit.org>
1741 - fix http://bugs.webkit.org/show_bug.cgi?id=11849
1742 REGRESSION (r18182): Google Calendar is broken (a regular expression containing a null character is not parsed correctly)
1744 Modified pcre_compile() (and the functions that it calls) to work with patterns
1745 containing null characters.
1747 Covered by JavaScriptCore tests ecma_3/RegExp/octal-002.js and ecma_3/RegExp/regress-85721.js
1750 (KJS::RegExp::RegExp): Changed to not null-terminate the pattern string and instead
1751 pass its length to pcre_compile.
1753 * pcre/pcre_compile.c:
1756 (is_counted_repeat):
1757 (check_posix_syntax):
1760 (pcre_compile): Added a parameter specifying the length of the pattern, which
1761 is no longer required to be null-terminated and may contain null characters.
1763 * pcre/pcre_internal.h:
1764 * tests/mozilla/expected.html: Updated for the two tests that this patch
1765 fixes. Also updated failing results for ecma_3/RegExp/regress-100199.js
1766 which were not updated after bug 6257 was fixed.
1768 2007-01-01 David Kilzer <ddkilzer@webkit.org>
1772 - fix http://bugs.webkit.org/show_bug.cgi?id=12057
1773 REGRESSION: JavaScript Date Is One Day In The Future in GMT time zone
1775 Because Mac OS X returns geographically and historically accurate time zone information,
1776 converting Jan 02, 1970 12:00:00 AM to local time then subtracting 24 hours did not work
1777 in GMT (London - England) since it was in BST (+0100) all year in 1970[1]. Instead, the
1778 UTC offset is calculated by converting Jan 01, 2000 12:00:00 AM to local time then
1779 subtracting that from the same date in UTC.
1781 [1] http://en.wikipedia.org/wiki/British_Summer_Time
1784 (KJS::getUTCOffset): Updated UTC offset calculation.
1785 (KJS::getDSTOffset): Improved comment.
1787 2006-12-31 David Kilzer <ddkilzer@webkit.org>
1791 Update embedded pcre library from version 6.2 to 6.4. Changes from pcre 6.2 to 6.3
1792 did not include any files in JavaScriptCore/pcre.
1794 All changes include renaming EXPORT to PCRE_EXPORT, renaming of ucp_findchar() to
1795 _pcre_ucp_findchar(), or comment changes. Additional changes noted below.
1797 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: Updated source file list.
1798 * JavaScriptCore.xcodeproj/project.pbxproj: Renamed pcre_printint.c to pcre_printint.src
1799 and changed it from a source file to a header file.
1800 * JavaScriptCoreSources.bkl: Updated source file list.
1801 * pcre/CMakeLists.txt: Updated source file list.
1802 * pcre/pcre-config.h:
1803 * pcre/pcre.h: Updated version.
1804 * pcre/pcre.pri: Updated source file list.
1805 * pcre/pcre_compile.c: Include pcre_printint.src #if DEBUG.
1807 * pcre/pcre_config.c:
1810 * pcre/pcre_fullinfo.c:
1812 * pcre/pcre_internal.h: Added header guard. Removed export of _pcre_printint().
1813 * pcre/pcre_ord2utf8.c:
1814 * pcre/pcre_printint.c: Renamed to pcre_printint.src.
1815 * pcre/pcre_printint.src: Added. Renamed _pcre_printint() to pcre_printint().
1816 * pcre/pcre_refcount.c:
1817 * pcre/pcre_study.c:
1818 * pcre/pcre_tables.c:
1819 * pcre/pcre_try_flipped.c:
1820 * pcre/pcre_ucp_findchar.c: Added contents of ucp_findchar.c.
1821 * pcre/pcre_version.c:
1822 * pcre/pcre_xclass.c:
1824 * pcre/ucp.h: Removed export of ucp_findchar().
1825 * pcre/ucp_findchar.c: Removed. Contents moved to pcre_ucp_findchar.c.
1827 2006-12-29 David Kilzer <ddkilzer@webkit.org>
1831 Update embedded pcre library from version 6.1 to 6.2. From the pcre ChangeLog:
1833 3. Added "b" to the 2nd argument of fopen() in dftables.c, for non-Unix-like
1834 operating environments where this matters.
1836 5. Named capturing subpatterns were not being correctly counted when a pattern
1837 was compiled. This caused two problems: (a) If there were more than 100
1838 such subpatterns, the calculation of the memory needed for the whole
1839 compiled pattern went wrong, leading to an overflow error. (b) Numerical
1840 back references of the form \12, where the number was greater than 9, were
1841 not recognized as back references, even though there were sufficient
1842 previous subpatterns.
1844 * pcre/dftables.c: Item 3.
1846 * pcre/pcre.h: Updated version.
1847 * pcre/pcre_compile.c: Item 5.
1848 (read_repeat_counts):
1851 2006-12-29 Geoffrey Garen <ggaren@apple.com>
1853 Reviewed by Brian Dash... err... Mark Rowe.
1855 More cleanup in preparation for fixing <rdar://problem/4608404>
1856 WebScriptObject's _executionContext lack of ownership policy causes
1857 crashes (e.g., in Dashcode)
1859 The key change here is to RootObject::RootObject().
1861 * JavaScriptCore.exp:
1863 * bindings/c/c_utility.cpp:
1864 (KJS::Bindings::convertValueToNPVariant): Changed to use new constructor.
1866 * bindings/jni/jni_jsobject.cpp:
1867 (JavaJSObject::createNative): Changed to use new constructor. Replaced
1868 large 'if' followed by default condition with "if !" and explicit default
1871 * bindings/objc/objc_runtime.mm:
1872 (convertValueToObjcObject): Changed to use new constructor.
1874 * bindings/runtime_root.cpp:
1875 (KJS::Bindings::RootObject::destroy): "removeAllNativeReferences" => "destroy"
1876 because this function actually destroys the RootObject.
1878 * bindings/runtime_root.h: Changed Interpreter* to RefPtr<Interpreter>
1879 to prevent a RootObject from holding a stale Interperter*.
1881 (KJS::Bindings::RootObject::RootObject): Changed constructor to take an
1882 Interpreter*, since it's pointless to create a RootObject without one.
1883 Removed setRootObjectImp() and rootObjectImp() because they were just
1884 a confusing way of setting and getting the Interpreter's global object.
1886 (KJS::Bindings::RootObject::nativeHandle): "_nativeHandle" => "m_nativeHandle"
1887 (KJS::Bindings::RootObject::interpreter): "_interpreter" => "m_interpreter"
1889 2006-12-28 George Staikos <staikos@kde.org>
1893 * bindings/qt/qt_instance.cpp: build
1894 (KJS::Bindings::QtInstance::QtInstance):
1896 2006-12-28 Geoffrey Garen <ggaren@apple.com>
1898 Reviewed by Oliver Hunt.
1900 More cleanup. Layout tests pass.
1902 Use a helper function to initialize and access WebUndefined and WebScriptObject.
1904 * bindings/objc/objc_runtime.h:
1905 * bindings/objc/objc_runtime.mm:
1906 (KJS::Bindings::webScriptObjectClass):
1907 (KJS::Bindings::webUndefinedClass):
1908 (convertValueToObjcObject):
1909 * bindings/objc/objc_utility.mm:
1910 (KJS::Bindings::convertValueToObjcValue):
1911 (KJS::Bindings::convertObjcValueToValue):
1913 2006-12-28 Geoffrey Garen <ggaren@apple.com>
1915 Reviewed by Brady Eidson.
1917 Some cleanup in preparation for fixing <rdar://problem/4608404>
1918 WebScriptObject's _executionContext lack of ownership policy causes
1919 crashes (e.g., in Dashcode)
1921 I'm just trying to make heads or tails of this baffling code.
1923 Renamed "root" | "execContext" | "executionContext" => "rootObject", because
1924 that's the object's (admittedly vague) type name.
1926 * bindings/runtime.cpp: Removed createLanguageInstanceForValue
1927 because I'll give you a dollar if you can explain to me what it actually did.
1929 * bindings/runtime_root.cpp: Put everything in the KJS::Bindings namespace,
1930 removing the KJS::Bindings prefix from individual functions and datatypes.
1931 This matches the header and eliminates a lot of syntax cruft.
1933 * bindings/c/c_utility.cpp:
1934 (KJS::Bindings::convertValueToNPVariant): Replaced use of createLanguageInstanceForValue
1935 with call to _NPN_CreateScriptObject because that's what createLanguageInstanceForValue
1936 actually did (but don't ask me for that dollar now; that's cheating.)
1938 * bindings/objc/objc_utility.h:
1939 * bindings/objc/objc_utility.mm:
1940 (KJS::Bindings::convertValueToObjcValue): Removed. Its only purpose was
1941 to call a single function for WebKit, which WebKit can do on its own.
1943 * kjs/interpreter.h: Removed rtti() because it was unused, and this class
1944 is scheduled for demolition anyway.
1946 * kjs/interpreter.cpp: Removed createLanguageInstanceForValue because it had
1947 nothing to do with the Interpreter, and nothing makes Chuck Norris more mad
1948 than a function whose sole purpose is to call another function of the same
1949 name. (Really, I asked him.)
1951 2006-12-26 Geoffrey Garen <ggaren@apple.com>
1953 Reviewed by Eric Seidel.
1955 Some cleanup in preparation for fixing <rdar://problem/4740328> Safari
1956 crash on quit in _NPN_ReleaseObject from KJS::Bindings::CInstance::~CInstance
1958 * bindings/c/c_instance.cpp:
1959 * bindings/c/c_instance.h: Removed unused copy constructor and assignment
1960 operator. They made tracking data flow more difficult. Unused code is also
1961 dangerous because it can succumb to bit rot with the stealth of a Ninja.
1963 Replaced #include with forward declaration to reduce header dependency.
1965 * bindings/npruntime.cpp: Sorted #includes.
1966 (_NPN_GetStringIdentifier): Replaced assert with ASSERT.
1967 (_NPN_GetStringIdentifiers): ditto
1968 (_NPN_ReleaseVariantValue): ditto
1969 (_NPN_CreateObject): ditto
1970 (_NPN_RetainObject): ditto
1971 (_NPN_ReleaseObject): ditto
1972 (_NPN_DeallocateObject): ditto
1974 2006-12-20 Anders Carlsson <acarlsson@apple.com>
1976 * kjs/string_object.cpp:
1978 Another speculative Win32 fix.
1980 2006-12-20 Anders Carlsson <acarlsson@apple.com>
1982 * kjs/string_object.cpp:
1984 Speculative Win32 fix.
1986 2006-12-20 Anders Carlsson <acarlsson@apple.com>
1990 <rdar://problem/4235733>
1991 <http://bugs.webkit.org/?show_bug.cgi?id=10193>
1992 support String.localeCompare.
1994 Implement localeCompare.
1996 * JavaScriptCore.xcodeproj/project.pbxproj:
1997 * kjs/string_object.cpp:
1999 (StringProtoFunc::callAsFunction):
2000 * kjs/string_object.h:
2001 (KJS::StringProtoFunc::):
2003 2006-12-20 Timothy Hatcher <timothy@apple.com>
2005 Reviewed by Mark Rowe.
2007 * JavaScriptCore.xcodeproj/project.pbxproj: use GCC 4.0 for all the other test targets
2009 2006-12-20 Timothy Hatcher <timothy@apple.com>
2011 Reviewed by Mark Rowe.
2013 <rdar://problem/4871613> JavaScriptCore-421.31's dftables target needs to override default compiler and use gcc-4.0
2015 * JavaScriptCore.xcodeproj/project.pbxproj:
2017 2006-12-20 Lars Knoll <lars@trolltech.com>
2019 Reviewed by David Hyatt
2021 Added support to bind QObject's to
2024 * JavaScriptCore.pro:
2025 * bindings/qt/qt_class.cpp: Added.
2026 (KJS::Bindings::QtClass::QtClass):
2027 (KJS::Bindings::QtClass::~QtClass):
2028 (KJS::Bindings::QtClass::classForObject):
2029 (KJS::Bindings::QtClass::name):
2030 (KJS::Bindings::QtClass::methodsNamed):
2031 (KJS::Bindings::QtClass::fieldNamed):
2032 * bindings/qt/qt_class.h: Added.
2033 (KJS::Bindings::QtClass::constructorAt):
2034 (KJS::Bindings::QtClass::numConstructors):
2035 * bindings/qt/qt_instance.cpp: Added.
2036 (KJS::Bindings::QtInstance::QtInstance):
2037 (KJS::Bindings::QtInstance::~QtInstance):
2038 (KJS::Bindings::QtInstance::operator=):
2039 (KJS::Bindings::QtInstance::getClass):
2040 (KJS::Bindings::QtInstance::begin):
2041 (KJS::Bindings::QtInstance::end):
2042 (KJS::Bindings::QtInstance::implementsCall):
2043 (KJS::Bindings::QtInstance::invokeMethod):
2044 (KJS::Bindings::QtInstance::invokeDefaultMethod):
2045 (KJS::Bindings::QtInstance::defaultValue):
2046 (KJS::Bindings::QtInstance::stringValue):
2047 (KJS::Bindings::QtInstance::numberValue):
2048 (KJS::Bindings::QtInstance::booleanValue):
2049 (KJS::Bindings::QtInstance::valueOf):
2050 * bindings/qt/qt_instance.h: Added.
2051 (KJS::Bindings::QtInstance::getObject):
2052 * bindings/qt/qt_runtime.cpp: Added.
2053 (KJS::Bindings::convertValueToQVariant):
2054 (KJS::Bindings::convertQVariantToValue):
2055 (KJS::Bindings::QtField::name):
2056 (KJS::Bindings::QtField::valueFromInstance):
2057 (KJS::Bindings::QtField::setValueToInstance):
2058 * bindings/qt/qt_runtime.h: Added.
2059 (KJS::Bindings::QtField::QtField):
2060 (KJS::Bindings::QtField::type):
2061 (KJS::Bindings::QtMethod::QtMethod):
2062 (KJS::Bindings::QtMethod::name):
2063 (KJS::Bindings::QtMethod::numParameters):
2064 * bindings/runtime.cpp:
2065 (KJS::Bindings::Instance::createBindingForLanguageInstance):
2066 * bindings/runtime.h:
2067 (KJS::Bindings::Instance::):
2068 * bindings/testbindings.pro: Added.
2069 * bindings/testqtbindings.cpp: Added.
2070 (MyObject::MyObject):
2071 (MyObject::setTestString):
2072 (MyObject::setTestInt):
2073 (MyObject::testString):
2074 (MyObject::testInt):
2076 (Global::className):
2079 2006-12-19 Anders Carlsson <acarlsson@apple.com>
2083 Add -p option to testkjs which pretty prints the files instead of executing them.
2085 * JavaScriptCore.exp:
2086 * JavaScriptCore.xcodeproj/project.pbxproj:
2088 (KJS::Parser::prettyPrint):
2093 2006-12-19 Brady Eidson <beidson@apple.com>
2095 Rubberstamped by Lou
2097 Removed unneccessary "else"
2099 * wtf/Assertions.cpp:
2101 2006-12-19 Timothy Hatcher <timothy@apple.com>
2105 <rdar://problem/4891774> Local WebCore/WebBrowser builds fail in 9A328 due to warning about ObjC-2.0 language features
2107 * JavaScriptCore.xcodeproj/project.pbxproj:
2109 2006-12-17 Simon Hausmann <hausmann@kde.org>
2113 * kjs/testkjs.pro: Oops, make it also build on machines other than
2116 2006-12-17 Simon Hausmann <hausmann@kde.org>
2118 Reviewed by Rob Buis.
2120 * kjs/testkjs.pro: Added .pro file to build testkjs.
2122 2006-12-16 Alexey Proskuryakov <ap@webkit.org>
2126 A deleted object was accessed to prepare RegExp construction error messages.
2128 * kjs/regexp_object.cpp:
2129 (RegExpObjectImp::construct): Wrap the RegExp into an OwnPtr.
2131 2006-12-16 Mitz Pettel <mitz@webkit.org>
2135 - fix http://bugs.webkit.org/show_bug.cgi?id=11814
2136 REGRESSION(r18098): Find does not work with capital letters
2138 Test: editing/execCommand/findString-3.html
2140 * wtf/unicode/icu/UnicodeIcu.h:
2141 (WTF::Unicode::foldCase): Changed to not return an error if the result fits
2142 in the buffer without a null terminator.
2144 2006-12-13 Maciej Stachowiak <mjs@apple.com>
2148 - added equality and inequality operations for HashMap and Vector, useful for comparing more complex types
2157 2006-12-12 Alexey Proskuryakov <ap@webkit.org>
2159 Reviewed by Geoff. Based on a patch by Maks Orlovich.
2161 http://bugs.webkit.org/show_bug.cgi?id=6257
2162 Throw errors on invalid expressions (KJS merge)
2165 (KJS::RegExp::RegExp):
2166 (KJS::RegExp::~RegExp):
2167 (KJS::RegExp::match):
2169 (KJS::RegExp::flags):
2170 (KJS::RegExp::isValid):
2171 (KJS::RegExp::errorMessage):
2172 (KJS::RegExp::subPatterns):
2173 Remember and report RegExp construction failures. Renamed data members not to start with underscores.
2175 * kjs/regexp_object.cpp:
2176 (RegExpObjectImp::construct): Raise an exception if RegExp construction fails.
2177 (RegExpObjectImp::callAsFunction): Removed an obsolete comment.
2179 * tests/mozilla/ecma_3/RegExp/regress-119909.js: Reduced the number of nested parentheses to
2180 a value supported by PCRE.
2182 2006-12-11 Alexey Proskuryakov <ap@webkit.org>
2186 http://bugs.webkit.org/show_bug.cgi?id=9673
2187 Add support for window.atob() and window.btoa()
2189 * JavaScriptCore.exp: Export UString::is8Bit().
2190 * JavaScriptCore.xcodeproj/project.pbxproj: Added StringExtras.h as
2193 2006-12-11 Darin Adler <darin@apple.com>
2197 * JavaScriptCore.xcodeproj/project.pbxproj: Let Xcode update this
2198 (I think Hyatt is using an old Xcode).
2200 2006-12-11 David Hyatt <hyatt@apple.com>
2202 Fix the failing layout test. Just remove Unicode::isSpace and
2203 revert StringImpl to do the same thing it was doing before.
2207 * wtf/unicode/icu/UnicodeIcu.h:
2208 * wtf/unicode/qt4/UnicodeQt4.h:
2210 2006-12-09 George Staikos <staikos@kde.org>
2214 Fix bison again on qmake build.
2216 * JavaScriptCore.pro:
2218 2006-12-09 Lars Knoll <lars@trolltech.com>
2222 Make it possible to build WebKit with qmake.
2224 * JavaScriptCore.pro: Added.
2225 * kjs/kjs.pro: Removed.
2226 * pcre/pcre.pri: Added.
2228 2006-12-09 Zack Rusin <zack@kde.org>
2230 Fixing the compilation with platform kde after the icu changes.
2234 2006-12-09 Adam Roben <aroben@apple.com>
2238 Some updates in reaction to r18098.
2240 * wtf/unicode/icu/UnicodeIcu.h: Use !! to convert UBool to bool in all
2242 (WTF::Unicode::toLower):
2243 (WTF::Unicode::toUpper):
2244 (WTF::Unicode::isDigit):
2245 (WTF::Unicode::isSpace):
2246 (WTF::Unicode::isPunct):
2247 (WTF::Unicode::isLower):
2248 (WTF::Unicode::isUpper):
2249 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
2250 * JavaScriptCore.vcproj/WTF/WTF.vcproj:
2252 2006-12-09 George Staikos <staikos@kde.org>
2254 Patch by Lars Knoll, comment out ICU dependency on Qt platform (unused code).
2258 * bindings/c/c_utility.cpp:
2259 (KJS::Bindings::convertUTF8ToUTF16):
2261 2006-12-08 David Hyatt <hyatt@apple.com>
2263 Land the new ICU abstraction layer. Patch by Lars.
2267 * JavaScriptCore.xcodeproj/project.pbxproj:
2269 * wtf/unicode/UnicodeCategory.h: Removed.
2270 * wtf/unicode/UnicodeDecomposition.h: Removed.
2271 * wtf/unicode/UnicodeDirection.h: Removed.
2272 * wtf/unicode/icu/UnicodeIcu.h:
2274 (WTF::Unicode::foldCase):
2275 (WTF::Unicode::toLower):
2276 (WTF::Unicode::toUpper):
2277 (WTF::Unicode::toTitleCase):
2278 (WTF::Unicode::isDigit):
2279 (WTF::Unicode::isSpace):
2280 (WTF::Unicode::isPunct):
2281 (WTF::Unicode::mirroredChar):
2282 (WTF::Unicode::category):
2283 (WTF::Unicode::direction):
2284 (WTF::Unicode::isLower):
2285 (WTF::Unicode::isUpper):
2286 (WTF::Unicode::digitValue):
2287 (WTF::Unicode::combiningClass):
2288 (WTF::Unicode::decompositionType):
2289 (WTF::Unicode::strcasecmp):
2290 (WTF::Unicode::memset):
2291 * wtf/unicode/qt4/UnicodeQt4.cpp: Removed.
2292 * wtf/unicode/qt4/UnicodeQt4.h:
2294 (WTF::Unicode::toLower):
2295 (WTF::Unicode::toUpper):
2296 (WTF::Unicode::toTitleCase):
2297 (WTF::Unicode::foldCase):
2298 (WTF::Unicode::isPrintableChar):
2299 (WTF::Unicode::isLower):
2300 (WTF::Unicode::isUpper):
2301 (WTF::Unicode::digitValue):
2302 (WTF::Unicode::combiningClass):
2303 (WTF::Unicode::decompositionType):
2304 (WTF::Unicode::strcasecmp):
2305 (WTF::Unicode::memset):
2306 (WTF::Unicode::direction):
2307 (WTF::Unicode::category):
2309 === Safari-521.32 ===
2311 2006-12-08 Adam Roben <aroben@apple.com>
2315 This is a mo' better fix for ensuring we don't use macro definitions
2321 2006-12-07 Kevin Fyure <digdog@macports.org>
2325 http://bugs.webkit.org/show_bug.cgi?id=11545
2326 Disable the testcases do not follow the ECMA-262v3 specification.
2328 * tests/mozilla/expected.html: Update Results.
2329 * tests/mozilla/js1_2/String/concat.js:
2330 4 tests disabled. The result of concat Array object is not followinig
2332 * tests/mozilla/js1_2/function/Number.js:
2333 1 test disabled. The result of Array object to Number object conversion
2334 is not following ECMA 9.3. And the test was duplicated in
2335 ecma/TypeConversion/9.3-1.js
2336 * tests/mozilla/js1_2/function/String.js:
2337 2 tests disabled. The result of Object/Array object to String object
2338 conversion is not following ECMA 15.5.1.1 and ECMA 9.8
2340 2006-11-30 Steve Falkenburg <sfalken@apple.com>
2344 Move WTF from JavaScriptCore project into a new WTF project.
2346 * JavaScriptCore.vcproj/JavaScriptCore.sln: Add WTF.vcproj to sln
2347 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: Remove WTF source files
2348 * JavaScriptCore.vcproj/WTF/WTF.vcproj: Added.
2349 * JavaScriptCore.vcproj/testkjs/testkjs.vcproj: Add dependency on WTF.lib
2351 2006-11-30 Geoffrey Garen <ggaren@apple.com>
2353 Reviewed by Beth Dakin.
2355 Fixed up garbage collection at window close time.
2357 * kjs/interpreter.cpp:
2358 (KJS::Interpreter::~Interpreter): Garbage collect here, since
2359 destroying the interpreter frees the global object and
2360 therefore creates a lot of garbage.
2362 2006-11-20 W. Andy Carrel <wac@google.com>
2366 http://bugs.webkit.org/show_bug.cgi?id=11501
2367 REGRESSION: \u no longer escapes metacharacters in RegExps
2368 http://bugs.webkit.org/show_bug.cgi?id=11502
2369 Serializing RegExps doesn't preserve Unicode escapes
2375 (Lexer::scanRegExp):
2376 Push \u parsing back down into the RegExp object rather than in the
2377 parser. This backs out r17354 in favor of a new fix that better
2378 matches the behavior of other browsers.
2382 (KJS::RegExp::RegExp):
2383 (KJS::sanitizePattern):
2386 (KJS::convertUnicode):
2388 Translate \u escaped unicode characters for the benefit of pcre.
2391 (KJS::UString::append):
2392 Fix failure to increment length on the first UChar appended to a
2393 UString that was copy-on-write.
2395 * tests/mozilla/ecma_2/RegExp/properties-001.js:
2396 Adjust tests back to the uniform standards.
2398 2006-11-20 Samuel Weinig <sam@webkit.org>
2402 Fix for http://bugs.webkit.org/show_bug.cgi?id=11647
2405 * kjs/config.h: define NOMINMAX instead of min/max
2407 * wtf/Vector.h: put back hack to ensure that min/max
2408 are not defined as macros.
2410 2006-11-19 Simon Hausmann <hausmann@kde.org>
2414 http://bugs.webkit.org/show_bug.cgi?id=11649
2415 Fix CMake Qt-only build without KDE CMake files
2418 * pcre/CMakeLists.txt:
2420 2006-11-17 Anders Carlsson <acarlsson@apple.com>
2424 Make sure that we always use std::min and std::max instead of macros.
2426 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
2430 === Safari-521.31 ===
2432 2006-11-12 Geoffrey Garen <ggaren@apple.com>
2434 Reviewed by Beth Dakin.
2436 Added project-wide setting to disable Microsoft's made-up deprecation
2437 warnings related to std:: functions. (Doesn't have any affect yet,
2438 since we currently disable all deprecation warnings.)
2440 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
2442 2006-11-12 Mark Rowe <bdash@webkit.org>
2446 Clean up of JavaScriptCore bakefiles.
2448 * JavaScriptCoreSources.bkl:
2451 2006-11-11 Alexey Proskuryakov <ap@webkit.org>
2455 http://bugs.webkit.org/show_bug.cgi?id=11508
2456 Undisable some warnings for JSImmediate.h
2458 Fix suggested by Don Gibson.
2460 * kjs/JSImmediate.h:
2461 Re-enable all MSVC warnings, move the remaining runtime checks
2464 2006-11-10 Zalan Bujtas <zalan.bujtas@nokia.com>
2468 Added s60/symbian platform defines.
2469 http://bugs.webkit.org/show_bug.cgi?id=11540
2473 === Safari-521.30 ===
2475 2006-11-08 Ada Chan <adachan@apple.com>
2479 Added a method to delete all the keys in a HashMap.
2482 (WTF::deleteAllPairFirsts):
2483 (WTF::deleteAllKeys):
2485 2006-11-07 Anders Carlsson <acarlsson@apple.com>
2489 * API/JSClassRef.cpp:
2490 (OpaqueJSClass::OpaqueJSClass):
2491 Initialize cachedPrototype to 0.
2493 2006-11-06 Krzysztof Kowalczyk <kkowalczyk@gmail.com>
2497 Remove warning about garbage after #else. #else clause applies for all
2498 non-mac platforms, not only win.
2500 * kjs/date_object.cpp:
2502 2006-11-06 Mark Rowe <bdash@webkit.org>
2504 Reviewed by the wonderful Mitz Pettel.
2506 http://bugs.webkit.org/show_bug.cgi?id=11524
2507 Bug 11524: REGRESSION(r9842): Array.prototype.join should use ToString operator rather than calling toString on each element
2509 * kjs/array_object.cpp:
2510 (ArrayProtoFunc::callAsFunction): Use ToString operator on each element rather than calling their toString method.
2512 2006-11-03 Steve Falkenburg <sfalken@apple.com>
2516 * kjs/JSImmediate.h:
2518 2006-11-03 Alexey Proskuryakov <ap@nypop.com>
2522 http://bugs.webkit.org/show_bug.cgi?id=11504
2523 Fix warnings on non 32 bit platforms
2525 * kjs/JSImmediate.h:
2526 (KJS::JSImmediate::NanAsBits):
2527 (KJS::JSImmediate::oneAsBits):
2528 Rewrite in a way that moves runtime checks to compile-time.
2531 (KJS::JSImmediate::fromDouble):
2532 (KJS::JSImmediate::toDouble):
2534 2006-11-02 George Staikos <staikos@kde.org>
2539 Remove a deprecated pthreads call.
2541 2006-11-02 Anders Carlsson <acarlsson@apple.com>
2543 Reviewed by Maciej, landed by Anders.
2546 Make KDE support optional.
2548 2006-11-01 Kevin McCullough <KMcCullough@apple.com>
2552 - 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.
2555 (KJS::equivalentYearForDST):
2556 (KJS::getDSTOffsetSimple):
2557 (KJS::getDSTOffset):
2559 2006-10-31 Geoffrey Garen <ggaren@apple.com>
2563 Fixed http://bugs.webkit.org/show_bug.cgi?id=11477
2564 REGRESSION: GMail crashes in KJS::FunctionImp::callerGetter
2567 (KJS::FunctionImp::argumentsGetter): Removed unnecessary braces.
2568 (KJS::FunctionImp::callerGetter): More logical NULL checking.
2570 2006-10-31 Oliver Hunt <oliver@apple.com>
2574 Adding definition for PLATFORM(CI)
2578 2006-10-31 Vladimir Olexa <vladimir.olexa@gmail.com>
2582 http://bugs.webkit.org/show_bug.cgi?id=4166
2583 Function object does not support caller property
2585 Test: fast/js/caller-property.html
2588 (KJS::FunctionImp::callerGetter): added
2589 (KJS::FunctionImp::getOwnPropertySlot): added if statement to handle callerGetter()
2590 * kjs/function.h: added callerGetter() declaration
2591 * kjs/identifier.h: added caller property macro
2592 * tests/mozilla/expected.html:
2594 2006-10-30 Kevin McCullough <KMcCullough@apple.com>
2598 - Fix some timezone issues and JavaScriptCore date tests. Addresses bugzilla 4930.
2601 (KJS::GregorianDateTime::GregorianDateTime): Here's the fix, to add parenthesis for order of precedence.
2602 * kjs/date_object.cpp:
2603 (KJS::DateProtoFunc::callAsFunction):
2604 (KJS::DateObjectImp::construct): memset not needed as GregorianDateTime initializes itself.
2606 2006-10-30 Darin Adler <darin@apple.com>
2608 Reviewed by John Sullivan.
2610 * kjs/SavedBuiltins.h: Added needed include.
2611 * wtf/OwnPtr.h: (WTF::OwnPtr::set): Fixed mistake in assertion.
2613 2006-10-28 Darin Adler <darin@apple.com>
2617 - renamed PassRefPtr::release to releaseRef to make it clearer that
2618 it's the counterpart of adoptRef, and to make it harder to confuse
2619 it with the safer-to-use RefPtr::release
2621 * kjs/identifier.cpp:
2622 (KJS::CStringTranslator::translate):
2623 (KJS::UCharBufferTranslator::translate):
2625 (KJS::UString::Rep::create):
2627 (WTF::PassRefPtr::PassRefPtr):
2628 (WTF::PassRefPtr::~PassRefPtr):
2629 (WTF::PassRefPtr::get):
2630 (WTF::PassRefPtr::releaseRef):
2631 (WTF::PassRefPtr::operator->):
2632 (WTF::PassRefPtr::operator=):
2634 (WTF::static_pointer_cast):
2635 (WTF::const_pointer_cast):
2637 (WTF::RefPtr::RefPtr):
2638 (WTF::RefPtr::operator=):
2640 2006-10-28 Darin Adler <darin@apple.com>
2644 * kjs/grammar.y: Add definitions of YYMALLOC and YYFREE to fix
2645 a warning some people see (not sure why others don't see it).
2647 * JavaScriptCore.vcproj/JavaScriptCore/grammarWrapper.cpp: Touch
2648 this file to force it to re-build grammar.cpp.
2650 2006-10-28 Darin Adler <darin@apple.com>
2654 - made changes so the code compiles with the highest warning level
2655 under MSVC (disabling some warnings, making some code fixes)
2657 * API/JSCallbackConstructor.cpp:
2658 (KJS::JSCallbackConstructor::construct):
2659 * API/JSCallbackFunction.cpp:
2660 (KJS::JSCallbackFunction::callAsFunction):
2661 * API/JSCallbackObject.cpp:
2662 (KJS::JSCallbackObject::init):
2663 (KJS::JSCallbackObject::construct):
2664 (KJS::JSCallbackObject::callAsFunction):
2665 * API/JSObjectRef.cpp:
2666 (JSPropertyNameArrayGetNameAtIndex):
2667 * API/JSStringRef.cpp:
2668 (JSStringCreateWithCharacters):
2669 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
2670 * bindings/c/c_utility.cpp:
2671 (KJS::Bindings::convertUTF8ToUTF16):
2672 (KJS::Bindings::coerceValueToNPVariantStringType):
2673 (KJS::Bindings::convertValueToNPVariant):
2675 (KJS::GregorianDateTime::GregorianDateTime):
2677 (KJS::ExecState::hadException):
2678 * kjs/JSImmediate.h:
2679 (KJS::JSImmediate::fromDouble):
2680 (KJS::JSImmediate::toDouble):
2681 (KJS::JSImmediate::NanAsBits):
2682 (KJS::JSImmediate::oneAsBits):
2684 * kjs/PropertyNameArray.h:
2685 (KJS::PropertyNameArray::size):
2686 * kjs/array_object.cpp:
2687 (ArrayObjectImp::callAsFunction):
2688 * kjs/bool_object.cpp:
2689 (BooleanObjectImp::callAsFunction):
2690 * kjs/collector.cpp:
2691 (KJS::Collector::allocate):
2692 (KJS::Collector::markCurrentThreadConservatively):
2693 (KJS::Collector::collect):
2695 (KJS::Completion::isValueCompletion):
2696 * kjs/date_object.cpp:
2699 (Debugger::sourceParsed):
2700 (Debugger::sourceUnused):
2701 (Debugger::exception):
2702 (Debugger::atStatement):
2703 (Debugger::callEvent):
2704 (Debugger::returnEvent):
2706 * kjs/error_object.cpp:
2707 (ErrorObjectImp::callAsFunction):
2708 (NativeErrorImp::callAsFunction):
2710 (KJS::FunctionImp::processVarDecls):
2711 (KJS::GlobalFuncImp::callAsFunction):
2712 * kjs/function_object.cpp:
2713 (FunctionPrototype::callAsFunction):
2715 * kjs/identifier.cpp:
2716 (KJS::CStringTranslator::translate):
2717 (KJS::Identifier::add):
2721 (Lexer::isIdentStart):
2722 (Lexer::isIdentPart):
2724 (Lexer::isHexDigit):
2725 (Lexer::isOctalDigit):
2726 (Lexer::matchPunctuator):
2727 (Lexer::singleEscape):
2728 (Lexer::convertOctal):
2729 (Lexer::convertHex):
2730 (Lexer::convertUnicode):
2733 * kjs/math_object.cpp:
2734 (MathFuncImp::callAsFunction):
2735 * kjs/number_object.cpp:
2736 (integer_part_noexp):
2738 (NumberProtoFunc::callAsFunction):
2739 (NumberObjectImp::callAsFunction):
2741 (KJS::JSObject::deleteProperty):
2742 (KJS::JSObject::callAsFunction):
2743 (KJS::JSObject::toBoolean):
2744 (KJS::JSObject::toObject):
2746 (KJS::JSObject::getPropertySlot):
2747 * kjs/property_map.cpp:
2749 (KJS::PropertyMap::put):
2750 (KJS::PropertyMap::insert):
2751 (KJS::PropertyMap::containsGettersOrSetters):
2752 * kjs/property_map.h:
2753 (KJS::PropertyMap::hasGetterSetterProperties):
2754 * kjs/property_slot.h:
2755 * kjs/string_object.cpp:
2756 (StringInstance::getPropertyNames):
2757 (StringObjectImp::callAsFunction):
2758 (StringObjectFuncImp::callAsFunction):
2760 (KJS::UString::Rep::computeHash):
2761 (KJS::UString::UString):
2762 (KJS::UString::from):
2763 (KJS::UString::append):
2764 (KJS::UString::ascii):
2765 (KJS::UString::operator=):
2766 (KJS::UString::find):
2767 (KJS::UString::rfind):
2771 (KJS::UCharReference::low):
2772 (KJS::UCharReference::high):
2774 (KJS::JSValue::toUInt16):
2776 * pcre/pcre_compile.c:
2777 (get_othercase_range):
2780 * pcre/pcre_internal.h:
2781 * wtf/HashFunctions.h:
2783 (WTF::PtrHash::hash):
2788 * wtf/StringExtras.h:
2790 * wtf/unicode/icu/UnicodeIcu.h:
2791 (WTF::Unicode::isPrintableChar):
2793 2006-10-26 W. Andy Carrel <wac@google.com>
2797 - Fix http://bugs.webkit.org/show_bug.cgi?id=7445 /
2798 <rdar://problem/4614195> (and 7253 / <rdar://4694011>) by changing
2799 inline regexps so that they can have \u escaped Unicode sequences and
2800 still work properly.
2805 (Lexer::shift): Looking ahead one additional character for the benefit
2807 (Lexer::scanRegExp): Change code to support unicode escapes in inline
2809 * kjs/lexer.h: Extra lookahead added.
2811 === Safari-521.29 ===
2813 2006-10-26 Nikolas Zimmermann <zimmermann@kde.org>
2817 Fix build with older gcc 3.3.4.
2819 * kjs/DateMath.cpp: Remove inline prefix.
2820 (KJS::equivalentYearForDST):
2822 2006-10-26 Darin Adler <darin@apple.com>
2826 - fix iteration of properties of string objects (found because of a warning
2827 emitted by the MSVC compiler)
2829 * kjs/string_object.cpp: (StringInstance::getPropertyNames): Change code that
2830 wants to format a number as a string to use UString::from. Before it was using
2831 the UString constructor that makes a string from a character!
2834 * kjs/ustring.cpp: Remove the dangerous and not all that helpful UString(char)
2837 * kjs/grammar.y: Change code to not depend on the UString(char) constructor.
2838 This is potentially more efficient anyway because we could overload the + operator
2839 some day to handle char* directly instead of creating a UString.
2841 * kjs/nodes2string.cpp: (SourceStream::operator<<): Change code to not depend on
2842 the UString(char) constructor.
2844 2006-10-25 Kevin McCullough <KMcCullough@apple.com>
2846 Reviewed by Steve (rubber stamp).
2848 - Link against your local build of JavaScriptCore.lib first, this fixes some errors on release builds of testkjs.
2850 * JavaScriptCore.vcproj/testkjs/testkjs.vcproj:
2852 2006-10-25 Geoffrey Garen <ggaren@apple.com>
2856 Removed duplicate symbol declaration.
2858 * JavaScriptCore.xcodeproj/project.pbxproj:
2861 2006-10-24 Steve Falkenburg <sfalken@apple.com>
2865 * JavaScriptCore.vcproj/testkjs/testkjs.vcproj:
2867 2006-10-24 Kevin McCullough <KMcCullough@apple.com>
2871 - 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.
2873 * kjs/date_object.cpp:
2875 (KJS::formatLocaleDate):
2876 (KJS::DateProtoFunc::callAsFunction):
2878 2006-10-23 Kevin McCullough <KMcCullough@apple.com>
2884 * JavaScriptCore.xcodeproj/project.pbxproj:
2887 2006-10-23 Kevin McCullough <KMcCullough@apple.com>
2891 - Makes the toTM function an operator. Was going to piggy back on a patch but the patch needs more work.
2894 (KJS::equivalentYearForDST):
2896 (KJS::GregorianDateTime::operator tm):
2897 * kjs/date_object.cpp:
2899 (KJS::DateProtoFunc::callAsFunction):
2901 2006-10-23 Kevin McCullough <KMcCullough@apple.com>
2905 - 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).
2910 2006-10-21 Steve Falkenburg <sfalken@apple.com>
2914 Add minimal compatibility with MSVCRT leak checker
2918 2006-10-23 Kevin McCullough <KMcCullough@apple.com>
2922 - Sets the lowercase range correctly in the test and consolidates a variable to make the test more readable.
2924 * tests/mozilla/ecma/String/15.5.4.11-2.js:
2926 2006-10-21 Darin Adler <darin@apple.com>
2930 - http://bugs.webkit.org/show_bug.cgi?id=11377
2931 swap(Vector, Vector) should be O(1) instead of O(n)
2934 (WTF::VectorBuffer::swap): Added.
2935 (WTF::Vector::swap): Added.
2936 (WTF::swap): Added overload that takes two Vector objects.
2938 2006-10-21 Darin Adler <darin@apple.com>
2942 - http://bugs.webkit.org/show_bug.cgi?id=11376
2943 build scripts should invoke make with "-j" option for multiple processors
2945 * JavaScriptCore.xcodeproj/project.pbxproj: Pass -j `sysctl -n hw.ncpu` to make.
2947 2006-10-19 Kevin McCullough <KMcCullough@apple.com>
2951 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.
2952 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.
2954 * tests/mozilla/ecma/String/15.5.4.11-2.js:
2956 2006-10-18 Maciej Stachowiak <mjs@apple.com>
2960 - remove vestiges of KXMLCore name (former name of WTF).
2967 (operator delete[]):
2968 * wtf/FastMallocInternal.h:
2971 * wtf/HashCountedSet.h:
2972 * wtf/HashFunctions.h:
2979 * wtf/Noncopyable.h:
2980 * wtf/OwnArrayPtr.h:
2985 * wtf/StringExtras.h:
2987 * wtf/UnusedParam.h:
2989 * wtf/VectorTraits.h:
2991 2006-10-17 Steve Falkenburg <sfalken@apple.com>
2995 Adjust include paths
2997 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
2999 2006-10-17 Kevin McCullough <KMcCullough@apple.com>
3003 Fixed a date issue where the UTC offset was not set in win.
3006 (KJS::getDSTOffsetSimple):
3007 (KJS::getDSTOffset):
3008 (KJS::msToGregorianDateTime):
3011 (KJS::GregorianDateTime::GregorianDateTime):
3013 2006-10-17 Kevin McCullough <KMcCullough@apple.com>
3017 Fixes a JavaScriptCore math issue on win.
3019 * kjs/math_object.cpp:
3020 (MathFuncImp::callAsFunction):
3024 2006-10-16 Kevin McCullough <kmccullough@apple.com>
3028 Removed unecessary global specifiers.
3030 * kjs/math_object.cpp:
3031 (MathFuncImp::callAsFunction):
3033 2006-10-16 Kevin McCullough <KMcCullough@apple.com>
3037 Fixes a compile order issue for testkjs on win.
3039 * JavaScriptCore.vcproj/testkjs/testkjs.vcproj:
3041 2006-10-15 Krzysztof Kowalczyk <kkowalczyk@gmail.com>
3045 Remove junk (as gcc calls it) after #else clause.
3047 * wtf/FastMalloc.cpp:
3050 2006-10-14 Krzysztof Kowalczyk <kkowalczyk@gmail.com>
3054 Define KXMLCORE_USE_CURL for platforms that wish to use CURL as
3055 networking, and set it for GDK build
3059 2006-10-13 Marvin Decker <marv.decker@gmail.com>
3061 Reviewed by Kevin McCullough.
3063 Fixes http://bugs.webkit.org/show_bug.cgi?id=11283
3064 Fixes Qt/Linux and Windows build
3068 * kjs/date_object.cpp:
3069 (KJS::DateProtoFunc::callAsFunction):
3071 2006-10-13 Kevin McCullough <KMcCullough@apple.com>
3073 Reviewed by Adam, Geoff, Darin.
3075 Fixed displaying the UTC offset and time zone string, as well as renamed the GregorianDateTime structure and clean up.
3079 (KJS::getUTCOffset):
3080 (KJS::getDSTOffsetSimple):
3081 (KJS::gregorianDateTimeToMS):
3082 (KJS::msToGregorianDateTime):
3084 (KJS::GregorianDateTime::GregorianDateTime):
3085 (KJS::GregorianDateTime::~GregorianDateTime):
3086 (KJS::GregorianDateTime::toTM):
3087 * kjs/date_object.cpp:
3090 (KJS::formatDateUTCVariant):
3092 (KJS::fillStructuresUsingTimeArgs):
3093 (KJS::fillStructuresUsingDateArgs):
3094 (KJS::DateInstance::getTime):
3095 (KJS::DateInstance::getUTCTime):
3096 (KJS::DateProtoFunc::callAsFunction):
3097 (KJS::DateObjectImp::construct):
3098 (KJS::DateObjectImp::callAsFunction):
3099 (KJS::DateObjectFuncImp::callAsFunction):
3101 * kjs/date_object.h:
3103 2006-10-13 Kevin McCullough <KMcCullough@apple.com>
3107 Gets JavaScripCore tests running on windows.
3109 * Scripts/run-javascriptcore-tests:
3110 * Scripts/webkitdirs.pm:
3112 2006-10-12 Geoffrey Garen <ggaren@apple.com>
3116 Removed JSObjectMakeWithPrototype, clarified some comments. We really
3117 don't want people to manage their own prototypes, so we don't want an
3118 extra function in the API devoted to just that. People can still manage
3119 their own prototypes if they really want by using JSObjectSetPrototype.
3121 * API/JSClassRef.cpp:
3122 (OpaqueJSClass::createNoAutomaticPrototype):
3123 (OpaqueJSClass::create):
3125 * API/JSObjectRef.cpp:
3128 * API/JSObjectRef.h:
3131 * JavaScriptCore.exp:
3133 2006-10-12 Kevin McCullough <KMcCullough@apple.com>
3141 * kjs/date_object.cpp:
3144 2006-10-11 Kevin McCullough <KMcCullough@apple.com>
3148 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.
3152 (KJS::getUTCOffset):
3153 (KJS::getDSTOffsetSimple):
3159 * kjs/date_object.cpp:
3162 (KJS::DateProtoFunc::callAsFunction):
3163 (KJS::DateObjectImp::construct):
3164 (KJS::DateObjectImp::callAsFunction):
3165 (KJS::DateObjectFuncImp::callAsFunction):
3167 * kjs/date_object.h:
3169 2006-10-09 Krzysztof Kowalczyk <kkowalczyk@gmail.com>
3173 Improve gdk build compiler flags (show warning, no rtti and exceptions).
3177 2006-10-06 Kevin McCullough <KMcCullough@apple.com>
3181 DST and TimeZones were wrong in some cases, specifically on some of the dates where DST changes.
3184 (KJS::equivalentYearForDST):
3185 (KJS::getUTCOffset):
3186 (KJS::getDSTOffsetSimple):
3187 (KJS::getDSTOffset):
3188 (KJS::dateToMseconds):
3191 * kjs/date_object.cpp:
3194 2006-10-05 Darin Adler <darin@apple.com>
3196 Reviewed by Kevin McCullough.
3198 * wtf/Assertions.cpp: Fix build when _DEBUG is not defined.
3200 2006-10-04 Kevin McCullough <KMcCullough@apple.com>
3204 - 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.
3207 (KJS::getUTCOffset):
3209 * kjs/date_object.cpp:
3213 2006-10-04 Geoffrey Garen <ggaren@apple.com>
3215 Patch by Darin and me, reviewed by Maciej.
3217 Fixed <rdar://problem/4518397> REGRESSION(?): Oft-seen but unrepro crash
3218 in JavaScript garbage collection (KJS::Collector::collect())
3219 <rdar://problem/4752492> Crash in KJS::collect
3221 The issue here was allocating one garbage-collected object in the midst
3222 of allocating a second garbage-collected object. In such a case, the
3223 zeroIfFree word lies.
3225 * kjs/collector.cpp:
3226 (KJS::Collector::allocate):
3227 (KJS::Collector::collect):
3229 2006-10-04 Kevin McCullough <KMcCullough@apple.com>
3236 (KJS::dateToDayInYear): accept and correctly handle negative months
3238 2006-10-05 Kevin McCullough <KMcCullough@apple.com>
3243 (KJS::dateToDayInYear):
3245 2006-10-05 Mark Rowe <bdash@webkit.org>
3247 Reviewed by maculloch.
3251 * JavaScriptCoreSources.bkl: Add DateMath.cpp to file list.
3253 2006-10-05 Kevin McCullough <KMcCullough@apple.com>
3259 * JavaScriptCore.xcodeproj/project.pbxproj:
3261 2006-10-04 Nikolas Zimmermann <zimmermann@kde.org>
3265 Fix Qt/Linux build by adding DateMath.cpp to compilation.
3267 * CMakeLists.txt: Also replace tabs with spaces.
3269 2006-10-04 Kevin McCullough <KMcCullough@apple.com>
3271 Reviewed by DethBakin.
3273 - 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.
3278 (KJS::dateToDayInYear):
3280 2006-10-05 Darin Adler <darin@apple.com>
3284 * wtf/Assertions.cpp: Changed assertion formatting to omit the "======"
3285 lines so you can see more assertions in less space. Also improved format
3286 of file/line information so it works with more development environments.
3288 2006-10-04 Kevin McCullough <KMcCullough@apple.com>
3292 - The build machine is more sensitive about automatic conversions. These fixes exp
3293 licitly cast or change the input and return types of functions to avoid conversions.
3295 * JavaScriptCore.xcodeproj/project.pbxproj:
3301 (KJS::monthToDayInYear):
3302 (KJS::dateToDayInYear):
3303 (KJS::getDSTOffsetSimple):
3304 (KJS::getDSTOffset):
3305 (KJS::dateToMseconds):
3308 2006-10-04 Kevin McCullough <KMcCullough@apple.com>
3312 - 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.
3314 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
3315 * JavaScriptCore.xcodeproj/project.pbxproj:
3316 * kjs/DateMath.cpp: Added.
3319 (KJS::daysFrom1970ToYear):
3320 (KJS::msFrom1970ToYear):
3324 (KJS::isInLeapYear):
3326 (KJS::msToMilliseconds):
3332 (KJS::msToDayInMonth):
3333 (KJS::monthToDayInYear):
3334 (KJS::timeToMseconds):
3335 (KJS::dateToDayInYear):
3336 (KJS::equivalentYearForDST):
3337 (KJS::getUTCOffset):
3338 (KJS::getDSTOffsetSimple):
3339 (KJS::getDSTOffset):
3340 (KJS::localTimeToUTC):
3341 (KJS::UTCToLocalTime):
3342 (KJS::dateToMseconds):
3345 * kjs/DateMath.h: Added.
3347 * kjs/date_object.cpp:
3350 (KJS::DateInstance::getTime):
3351 (KJS::DateInstance::getUTCTime):
3352 (KJS::DateProtoFunc::callAsFunction):
3353 (KJS::DateObjectImp::construct):
3354 (KJS::DateObjectFuncImp::callAsFunction):
3357 * os-win32/stdint.h:
3359 2006-10-02 Nikolas Zimmermann <zimmermann@kde.org>
3361 Reviewed/landed by Adam.
3363 Build testkjs on Qt/Linux.
3367 2006-10-02 Nikolas Zimmermann <zimmermann@kde.org>
3369 Reviewed by eseidel. Landed by eseidel.
3371 Fix win32 build, which has no inttypes.h
3375 2006-10-02 Nikolas Zimmermann <zimmermann@kde.org>
3377 Reviewed by eseidel & mjs. Landed by eseidel.
3379 Fix Qt/Linux build with older gcc 3.3.4.
3380 http://bugs.webkit.org/show_bug.cgi?id=11116
3382 * kjs/lookup.h: Move cacheGlobalObject into KJS namespace.
3383 (KJS::cacheGlobalObject): Also remove GCC_ROOT_NS_HACK.
3384 * wtf/Assertions.h: Include inttypes.h for uintptr_t.
3386 2006-09-28 Steve Falkenburg <sfalken@apple.com>
3390 Use $(ConfigSuffix) set via vsprops files to add _debug
3391 to end of debug filenames.
3393 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
3394 * JavaScriptCore.vcproj/debug.vsprops: Added.
3395 * JavaScriptCore.vcproj/dftables/dftables.vcproj:
3396 * JavaScriptCore.vcproj/release.vsprops: Added.
3397 * JavaScriptCore.vcproj/testkjs/testkjs.vcproj:
3399 2006-09-28 Darin Adler <darin@apple.com>
3403 - support for change that should fix <rdar://problem/4733044>
3404 REGRESSION: XML iBench shows 10% perf. regression (copying
3405 strings while decoding)
3407 * wtf/Vector.h: Changed VectorBuffer so that the general case
3408 contains an instance of the 0 case, since deriving from it
3409 was violating the Liskov Substitution Principle.
3410 (WTF::VectorBuffer::releaseBuffer): Added. Releases the buffer so it can
3411 be adopted by another data structure that uses the FastMalloc.h allocator.
3412 Returns 0 if the internal buffer was being used.
3413 (WTF::Vector::releaseBuffer): Added. Releases the buffer as above or creates
3414 a new one in the case where the internal buffer was being used.
3416 2006-09-28 Maciej Stachowiak <mjs@apple.com>
3420 - change garbage collection to happen at increments proportional to number of live objects, not always
3421 every 1000 allocations
3423 * kjs/collector.cpp:
3424 (KJS::Collector::allocate):
3426 2006-09-28 Maciej Stachowiak <mjs@apple.com>
3430 - fixed REGRESSION (r16606): javascriptCore Crash on website load
3434 - fixed some possible off-by-one bugs
3435 - use indexing, not iterators, for Vectors
3436 - store Vector by pointer instead of by value to avoid blowing out FunctionImp size
3439 (KJS::FunctionImp::addParameter):
3440 (KJS::FunctionImp::parameterString):
3441 (KJS::FunctionImp::processParameters):
3442 (KJS::FunctionImp::lengthGetter):
3443 (KJS::FunctionImp::getParameterName):
3446 2006-09-27 Steve Falkenburg <sfalken@apple.com>
3452 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
3453 * JavaScriptCore.vcproj/JavaScriptCore/dstroot-to-sdk.cmd: Removed.
3455 2006-09-27 John Sullivan <sullivan@apple.com>
3458 (KJS::FunctionImp::getParameterName):
3459 removed assertion that displeased gcc 4.0.1 (build 5420):
3460 ASSERT(static_cast<size_t>(index) == index);
3462 2006-09-27 Kevin McCullough <KMcCullough@apple.com>
3466 Cleanup of previous fix which was to address Radar: 4752492
3469 (KJS::FunctionImp::addParameter):
3470 (KJS::FunctionImp::parameterString):
3471 (KJS::FunctionImp::processParameters):
3472 (KJS::FunctionImp::lengthGetter):
3473 (KJS::FunctionImp::getParameterName):
3476 2006-09-27 Kevin McCullough <KMcCullough@apple.com>
3480 Fixes a GC stack overflow crash.
3481 The change is to move from a linked list implementation of Parameters to a Vector.
3482 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.
3485 (KJS::Parameter::Parameter):
3486 (KJS::FunctionImp::addParameter):
3487 (KJS::FunctionImp::parameterString):
3488 (KJS::FunctionImp::processParameters):
3489 (KJS::FunctionImp::lengthGetter):
3490 (KJS::FunctionImp::getParameterName):
3493 2006-09-27 Steve Falkenburg <sfalken@apple.com>
3497 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
3499 2006-09-27 Steve Falkenburg <sfalken@apple.com>
3501 Set path before build.
3503 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
3505 2006-09-27 Sean Gies <seangies@apple.com>
3507 Reviewed by Adam Roben.
3509 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: Debug config should link to debug runtime.
3510 * JavaScriptCore.vcproj/dftables/dftables.vcproj: Debug config should link to debug runtime.
3512 2006-09-27 Don Melton <gramps@apple.com>
3514 Reviewed by Adam Roben.
3516 Changed line ending from DOS to UNIX format so it doesn't die running
3519 * JavaScriptCore.vcproj/JavaScriptCore/build-generated-files.sh:
3521 2006-09-23 Alexey Proskuryakov <ap@nypop.com>
3525 http://bugs.webkit.org/show_bug.cgi?id=10183
3526 REGRESSION: obfuscated JS decoding breaks because of soft hyphen removal
3527 (Fanfiction.net author pages not listing stories)
3529 Rolled out the fix for bug 4139.
3534 * tests/mozilla/ecma/Array/15.4.5.1-1.js:
3535 * tests/mozilla/expected.html:
3537 2006-09-22 Steve Falkenburg <sfalken@apple.com>
3541 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
3543 2006-09-22 Darin Adler <darin@apple.com>
3547 * wtf/Vector.h: Add an append that takes a pointer and length.
3548 Generalize the existing Vector append to work on vectors with
3549 any value for inlineCapacity. Change the append algorithm so
3550 it doesn't check capacity each time through the loop.
3552 2006-09-22 Steve Falkenburg <sfalken@apple.com>
3556 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
3558 2006-09-21 Geoffrey Garen <ggaren@apple.com>
3562 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: