1=== Start merge of feature-branch 2007-10-12 === 2 32007-10-11 Andrew Wellington <proton@wiretapped.net> 4 5 Reviewed by Eric Seidel. 6 7 Fix for http://bugs.webkit.org/show_bug.cgi?id=15076 8 "deg2rad has multiple definitions" 9 10 Define deg2rad, rad2deg, deg2grad, grad2deg, rad2grad, grad2rad 11 These are used through WebKit. 12 13 Change based on original patch by Rob Buis. 14 15 * wtf/MathExtras.h: 16 (deg2rad): 17 (rad2deg): 18 (deg2grad): 19 (grad2deg): 20 (rad2grad): 21 (grad2rad): 22 232007-10-10 Maciej Stachowiak <mjs@apple.com> 24 25 Reviewed by Eric. 26 27 - fix assertion failures on quit. 28 29 * kjs/array_object.cpp: 30 (ArrayProtoFunc::callAsFunction): Dynamically alocate function-scope static 31 UStrings to avoid the static destructor getting called later. 32 * kjs/lookup.h: Dynamically alocate function-scope static 33 Identifiers to avoid the static destructor getting called later. 34 352007-10-07 Ed Schouten <ed@fxq.nl> 36 37 Reviewed and landed by Alexey Proskuryakov. 38 39 Add PLATFORM(FREEBSD), so we can fix the build on FreeBSD-like 40 systems by including <pthread_np.h>. Also fix some (disabled) 41 regcomp()/regexec() code; it seems some variable names have 42 changed. 43 44 * kjs/config.h: 45 * kjs/regexp.cpp: 46 (KJS::RegExp::RegExp): 47 * wtf/Platform.h: 48 492007-10-02 Alexey Proskuryakov <ap@webkit.org> 50 51 Reviewed by Darin. 52 53 http://bugs.webkit.org/show_bug.cgi?id=10370 54 RegExp fails to match non-ASCII characters against [\S\s] 55 56 Test: fast/js/regexp-negative-special-characters.html 57 58 * pcre/pcre_compile.c: 59 (compile_branch): Adjust opcode and bitmap as necessary to include (or exclude) 60 character codes >255. Fix suggested by Philip Hazel. 61 62 * pcre/pcre_exec.c: 63 (match): Merged fix for PCRE bug 580 (\S\S vs. \S{2}). 64 65 * tests/mozilla/expected.html: One test was fixed. 66 * pcre/MERGING: Added information about this fix. 67 682007-10-02 Maciej Stachowiak <mjs@apple.com> 69 70 Reviewed by Oliver. 71 72 - skip extra hash lookup and avoid converting char* to UString for 19% speedup on CK JS array test 73 http://bugs.webkit.org/show_bug.cgi?id=15350 74 75 * kjs/array_object.cpp: 76 (ArrayProtoFunc::callAsFunction): Implement the two mentioned optimizations. 77 782007-10-02 Maciej Stachowiak <mjs@apple.com> 79 80 Reviewed by Mark. 81 82 - Efficiently handle regexp property identifiers for 19% speedup on Celtic Kane regexp test 83 http://bugs.webkit.org/show_bug.cgi?id=15337 84 85 * kjs/CommonIdentifiers.h: 86 * kjs/regexp_object.cpp: 87 (RegExpProtoFunc::callAsFunction): 88 (RegExpObjectImp::arrayOfMatches): 89 (RegExpObjectImp::construct): 90 912007-10-02 Maciej Stachowiak <mjs@apple.com> 92 93 Reviewed by Mark. 94 95 - Cache global prorotypes more efficiently for 10% speedup on CK AJAX benchmark 96 http://bugs.webkit.org/show_bug.cgi?id=15335 97 98 * kjs/lookup.h: 99 1002007-10-01 Oliver Hunt <oliver@apple.com> 101 102 Reviewed by Mark. 103 104 Enable Experimental SVG features by default when building from Xcode 105 106 * Configurations/JavaScriptCore.xcconfig: 107 1082007-09-29 Rob Buis <buis@kde.org> 109 110 Reviewed by Adam. 111 112 http://bugs.webkit.org/show_bug.cgi?id=13472 113 Misparsing date in javascript leads to year value of -1 114 http://bugs.webkit.org/show_bug.cgi?id=14176 115 Some date values not handled consistently with IE/Firefox 116 117 Allow an optional comma between month and year, and year and time. 118 119 * kjs/date_object.cpp: 120 (KJS::parseDate): 121 1222007-07-11 Nikolas Zimmermann <zimmermann@kde.org> 123 124 Reviewed by Mark. 125 126 Forwardport the hash table fix from CodeGeneratorJS.pm to create_hash_table. 127 Reran run-jsc-tests, couldn't find any regressions. Suggested by Darin. 128 129 * kjs/create_hash_table: 130 1312007-06-25 Antti Koivisto <antti@apple.com> 132 133 Reviewed by Maciej. 134 135 Use intHash to hash floats and doubles too. 136 137 * ChangeLog: 138 * wtf/HashFunctions.h: 139 (WTF::FloatHash::hash): 140 (WTF::FloatHash::equal): 141 (WTF::): 142 * wtf/HashTraits.h: 143 (WTF::FloatHashTraits::emptyValue): 144 (WTF::FloatHashTraits::deletedValue): 145 (WTF::): 146 147=== End merge of feature-branch 2007-10-12 === 148 1492007-10-11 Mark Rowe <mrowe@apple.com> 150 151 Reviewed by Tim Hatcher. 152 153 Fix for <rdar://problem/5488678>. Disable debugging symbols in production builds for 10.4 154 PowerPC to prevent a huge STABS section from being generated. 155 156 * Configurations/Base.xcconfig: 157 1582007-10-08 George Staikos <staikos@kde.org> 159 160 Reviewed by Adam Roben. 161 162 Fix Qt build on Win32. 163 164 * kjs/testkjs.cpp: 165 (main): 166 1672007-10-10 Simon Hausmann <hausmann@kde.org> 168 169 Reviewed by Lars. 170 171 Fix compilation using gcc 4.3. Header files have been reorganized and as a result some extra 172 includes are needed for INT_MAX, std::auto_ptr and the like. 173 174 * kjs/collector.cpp: 175 * kjs/collector.h: 176 * kjs/lexer.cpp: 177 * kjs/scope_chain.cpp: 178 * kjs/ustring.cpp: 179 * wtf/Vector.h: 180 1812007-10-09 Lars Knoll <lars@trolltech.com> 182 183 Reviewed by Simon. 184 185 fix the invokation of slots with return types. Add a JSLock around the conversion from QVariant to JSValue. 186 187 * bindings/qt/qt_instance.cpp: 188 (KJS::Bindings::QtInstance::invokeMethod): 189 * bindings/qt/qt_runtime.cpp: 190 (KJS::Bindings::convertValueToQVariant): 191 (KJS::Bindings::convertQVariantToValue): 192 1932007-10-05 Geoffrey Garen <ggaren@apple.com> 194 195 Reviewed by Sam Weinig. 196 197 Added JSObject::removeDirect, to support the fix for 198 <rdar://problem/5522487> REGRESSION: With JavaScript disabled, any 199 page load causes a crash in PropertyMap::put 200 201 * kjs/object.cpp: 202 (KJS::JSObject::removeDirect): 203 * kjs/object.h: 204 2052007-10-04 Mark Rowe <mrowe@apple.com> 206 207 Reviewed by Oliver. 208 209 Switch to default level of debugging symbols to resolve <rdar://problem/5488678>. 210 The "full" level appears to offer no observable benefits even though the documentation 211 suggests it be used for dead code stripping. This should also decrease link times. 212 213 * Configurations/Base.xcconfig: 214 2152007-10-03 Lars Knoll <lars@trolltech.com> 216 217 Reviewed by Rob. 218 219 Fix a stupid bug in Unicode::toUpper/toLower. 220 Fixes all three test failures in the JavaScriptCore test 221 suite. 222 223 * wtf/unicode/qt4/UnicodeQt4.h: 224 (WTF::Unicode::toLower): 225 (WTF::Unicode::toUpper): 226 2272007-10-02 Darin Adler <darin@apple.com> 228 229 Reviewed by Adam. 230 231 - add support for GDI objects to OwnPtr; I plan to use this 232 to fix some GDI handle leaks 233 234 * kjs/grammar.y: Change parser to avoid macros that conflict 235 with macros defined in Windows system headers: THIS, DELETE, 236 VOID, IN, and CONST. This is needed because OwnPtr.h will now 237 include <windows.h>. 238 * kjs/keywords.table: Ditto. 239 240 * wtf/OwnPtr.h: For PLATFORM(WIN), add support so that OwnPtr can be 241 a GDI handle, and it will call DeleteObject. Also change to use the 242 RemovePointer technique used by RetainPtr, so you can say OwnPtr<HBITMAP> 243 rather than having to pass in the type pointed to by HBITMAP. 244 245 * wtf/OwnPtrWin.cpp: Added. 246 (WebCore::deleteOwnedPtr): Put this in a separate file so that we 247 don't have to include <windows.h> in OwnPtr.h. 248 249 * JavaScriptCore.vcproj/WTF/WTF.vcproj: Added OwnPtrWin.cpp. 250 2512007-09-29 Holger Hans Peter Freyther <zecke@selfish.org> 252 253 Reviewed by Mark. 254 255 -Fix http://bugs.webkit.org/show_bug.cgi?id=13226. 256 Remove Bakefiles from svn. 257 258 * JavaScriptCoreSources.bkl: Removed. 259 * jscore.bkl: Removed. 260 2612007-09-27 Kevin Decker <kdecker@apple.com> 262 263 Rubber stamped by John Sullivan. 264 265 <rdar://problem/5493093> 266 267 * JavaScriptCore.order: Added. 268 * JavaScriptCore.xcodeproj/project.pbxproj: We're changing from using an order file built by 269 another team to using one we actually check into our project repository. Linker settings for 270 Symbol Ordering Flags have been updated accordingly. 271 2722007-09-26 Adam Roben <aroben@apple.com> 273 274 Make testkjs delay-load WebKit.dll so WebKitInitializer can work its magic 275 276 Rubberstamped by Anders. 277 278 * JavaScriptCore.vcproj/testkjs/testkjs.vcproj: 279 2802007-09-25 Adam Roben <aroben@apple.com> 281 282 Make testkjs delay-load its dependencies 283 284 This lets WebKitInitializer re-route the dependencies to be loaded out 285 of the Safari installation directory. 286 287 Rubberstamped by Sam. 288 289 * JavaScriptCore.vcproj/testkjs/testkjs.vcproj: 290 2912007-09-25 David Kilzer <ddkilzer@webkit.org> 292 293 Reviewed by Adam. 294 295 - Fix http://bugs.webkit.org/show_bug.cgi?id=14885 296 LGPL'ed files contain incorrect FSF address 297 298 * COPYING.LIB: 299 * bindings/testbindings.cpp: 300 * kjs/AllInOneFile.cpp: 301 * kjs/DateMath.cpp: 302 * kjs/PropertyNameArray.cpp: 303 * kjs/PropertyNameArray.h: 304 * kjs/config.h: 305 3062007-09-25 Sam Weinig <sam@webkit.org> 307 308 Fix location for build products for Debug_Internal. 309 310 Reviewed by Adam Roben. 311 312 * JavaScriptCore.vcproj/testkjs/testkjs.vcproj: 313 3142007-09-25 Adam Roben <aroben@apple.com> 315 316 Make testkjs use WebKitInitializer 317 318 Reviewed by Sam. 319 320 * JavaScriptCore.vcproj/JavaScriptCore.sln: Add WebKitInitializer and 321 make testkjs depend on it. 322 * JavaScriptCore.vcproj/testkjs/testkjs.vcproj: Link against 323 WebKitInitializer.lib. 324 * kjs/testkjs.cpp: 325 (main): Call initializeWebKit. 326 3272007-09-24 Kevin McCullough <kmccullough@apple.com> 328 329 Reviewed by Sam. 330 331 - Continued to update project files to not use Edit and Continue for Debug Information since it doesn't work and breaks some functionality. 332 333 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: 334 * JavaScriptCore.vcproj/WTF/WTF.vcproj: 335 3362007-09-21 Kevin McCullough <kmccullough@apple.com> 337 338 Reviewed by Sam. 339 340 - Updated project files to not use Edit and Continue for Debug Information since it doesn't work and breaks some functionality. 341 342 * JavaScriptCore.vcproj/dftables/dftables.vcproj: 343 * JavaScriptCore.vcproj/testkjs/testkjs.vcproj: 344 3452007-09-20 Holger Hans Peter Freyther <zecke@selfish.org> 346 347 Rubber stamped by Adam. 348 349 Renamed files from *Gdk to *Gtk (see #14732) using the 350 work of Juan A. Suarez Romero as a base. 351 352 GDK -> GTK 353 354 * JavaScriptCore.pri: 355 * kjs/testkjs.pro: 356 * pcre/dftables.pro: 357 * wtf/Platform.h: PLATFORM(GDK) to PLATFORM(GTK) 358 3592007-09-21 Mark Rowe <mrowe@apple.com> 360 361 Reviewed by Antti Koivisto. 362 363 http://bugs.webkit.org/show_bug.cgi?id=15250 364 <rdar://problem/5496942> REGRESSION: Reproducible crash in Safari when evaluating script in Drosera console (15250) 365 366 * kjs/function.cpp: 367 (KJS::GlobalFuncImp::callAsFunction): Null-check thisObj before passing it to interpreterForGlobalObject. 368 3692007-09-19 Holger Hans Peter Freyther <zecke@selfish.org> 370 371 Rubber stamped by Adam. 372 373 Make the guard/#if use the same name (ENABLE_FTPDIR) as the #define. This follows 374 the ENABLE_ICONDATABASE example from a couple of lines above. 375 376 * wtf/Platform.h: 377 3782007-09-19 Mark Rowe <mrowe@apple.com> 379 380 Reviewed by Maciej. 381 382 <rdar://problem/5487107> NULL dereference crash in FastMallocZone::enumerate when running leaks against Safari 383 384 Storing remote pointers to their local equivalents in mapped memory was leading to the local pointer being 385 interpreted as a remote pointer. This caused a crash when using the result of mapping this invalid remote pointer. 386 The fix is to follow the pattern used elsewhere in FastMallocZone by always doing the mapping after reading and 387 never storing the mapped pointer. 388 389 * wtf/FastMalloc.cpp: 390 (WTF::FastMallocZone::enumerate): 391 3922007-09-15 Darin Adler <darin@apple.com> 393 394 - fix Mac build 395 396 * JavaScriptCore.exp: Export WTFLogVerbose. 397 3982007-09-14 Kevin McCullough <kmccullough@apple.com> 399 400 Reviewed by Sam. 401 402 - Copy JSRetainPtr to include folder. 403 404 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: 405 4062007-09-13 Geoffrey Garen <ggaren@apple.com> 407 408 Try to fix GDK build. 409 410 * wtf/MathExtras.h: 411 (wtf_random_init): 412 4132007-09-12 Geoff Garen <ggaren@apple.com> 414 415 Reviewed by Sam Weinig. 416 417 Fixed <rdar://problem/5429064> 141885 Safari JavaScript: Math.random() slightly less randomly distributed than on Safari / Mac 418 419 Math.random was skewed slightly upward because it assumed that RAND_MAX was outside the range of 420 values that rand() might return. This problem was particularly pronounced on Windows because 421 the range of values returned by rand() on Windows is 2^16 smaller than the range of values 422 return by rand() on Mac. 423 424 Fixed by accounting for RAND_MAX return values. Also, switched Windows over to rand_s, which has 425 a range that's equal to rand()'s range on Mac. 426 427 * kjs/config.h: 428 429 * kjs/math_object.cpp: 430 (MathFuncImp::callAsFunction): Use the new new thing. 431 432 * wtf/MathExtras.h: Platform abstraction for random numbers, to cover over differences on Windows. 433 (wtf_random_init): 434 (wtf_random): 435 4362007-09-13 Antti Koivisto <antti@apple.com> 437 438 Reviewed by Maciej. 439 440 Small addition to previous path to cover 441 http://bugs.webkit.org/show_bug.cgi?id=11399 442 window.eval runs in the global scope of the calling window 443 444 Switch variable scope as well. 445 446 * kjs/function.cpp: 447 (KJS::GlobalFuncImp::callAsFunction): 448 4492007-09-12 Antti Koivisto <antti@apple.com> 450 451 Reviewed by Geoff, Maciej. 452 453 Fix <rdar://problem/5445058> 454 REGRESSION: Unable to upload picture to eBay auction due to domain security check 455 456 eBay uses window.eval() between windows. In Firefox window.eval() switches execution 457 and security context to the target window, something WebKit did not do. With WebKit 458 security tightening in r24781, this broke picture uploads. 459 460 Fix by making WebKit switch context in window.eval(). 461 462 * kjs/Context.cpp: 463 (KJS::Context::Context): 464 (KJS::Context::~Context): 465 * kjs/context.h: 466 Save and restore interpreter context independently from calling context. 467 468 * kjs/function.cpp: 469 (KJS::GlobalFuncImp::callAsFunction): 470 If eval is called for global object different than current one, switch execution context 471 to that object and push it to scope. 472 4732007-09-12 Sam Weinig <sam@webkit.org> 474 475 Reviewed by Geoffrey Garen. 476 477 <rdar://problem/5478717> JSStringCreateWithCFString leaks when passed a zero length CFStringRef 478 479 * API/JSStringRefCF.cpp: 480 (JSStringCreateWithCFString): Special case the zero length string and remove the 481 UTF16 optimized path since it will always leak due to the fact that we won't be 482 able to free the backing store that the CFStringRef provides. 483 4842007-09-10 Timothy Hatcher <timothy@apple.com> 485 486 Reviewed by Darin Adler. 487 488 <rdar://problem/5456224> CrashTracer: [USER] 2 crashes in Toast Titanium at com.apple.CoreServices.CarbonCore: CSMemDisposePtr + 37 489 490 Removed the implementation of these malloc zone functions. We do not have the ability to 491 check if a pointer is valid or not, so we can't correctly implement them. The system free 492 does not fail if you pass in a bad pointer. 493 494 * wtf/FastMalloc.cpp: 495 (WTF::FastMallocZone::size): 496 (WTF::FastMallocZone::zoneMalloc): 497 (WTF::FastMallocZone::zoneCalloc): 498 (WTF::FastMallocZone::zoneFree): 499 (WTF::FastMallocZone::zoneRealloc): 500 5012007-09-07 Darin Adler <darin@apple.com> 502 503 Reviewed by Steve Falkenburg. 504 505 - fix crash seen on Windows release builds 506 507 * wtf/FastMalloc.cpp: Change pthread_getspecific optimization to be done only 508 on the DARWIN platform. Also correct a couple reinterpret_cast that should be 509 static_cast instead. 510 5112007-09-06 Kevin McCullough <kmccullough@apple.com> 512 513 Reviewed by Maciej. 514 515 - Moved JSRetainPtr to the API. 516 517 * API/JSRetainPtr.h: Copied from kjs/JSRetainPtr.h. 518 (JSRetain): 519 (JSRelease): 520 (JSRetainPtr::JSRetainPtr): 521 (JSRetainPtr::~JSRetainPtr): 522 (JSRetainPtr::get): 523 (JSRetainPtr::releaseRef): 524 (JSRetainPtr::operator->): 525 (JSRetainPtr::operator!): 526 (JSRetainPtr::operator UnspecifiedBoolType): 527 (::operator): 528 (::adopt): 529 (::swap): 530 (swap): 531 (operator==): 532 (operator!=): 533 * JavaScriptCore.xcodeproj/project.pbxproj: 534 * kjs/JSRetainPtr.h: Removed. 535 5362007-09-05 Maciej Stachowiak <mjs@apple.com> 537 538 Reviewed by Darin. 539 540 - Remove single-threaded optimization for FastMalloc. 541 542 It does not appear to help anywhere but Mac OS X on PPC, due to 543 pthread_getspecific being slow there. On Intel, removing the 544 optimization results in a ~1.5% PLT speedup, a ~1-5% JS iBench 545 speedup, and a ~1.5% HTML iBench speedup. On PPC this change is a 546 speedup on some benchmarks, a slight hit on others. 547 548 * JavaScriptCore.xcodeproj/project.pbxproj: 549 * kjs/collector.cpp: 550 (KJS::Collector::registerThread): 551 * wtf/FastMalloc.cpp: 552 (WTF::TCMalloc_ThreadCache::GetCache): 553 (WTF::TCMalloc_ThreadCache::GetCacheIfPresent): 554 (WTF::TCMalloc_ThreadCache::CreateCacheIfNecessary): 555 (WTF::do_malloc): 556 * wtf/FastMallocInternal.h: Removed. 557 5582007-09-05 Kevin McCullough <kmccullough@apple.com> 559 560 Reviewed by Adam, Sam, Darin. 561 562 - Created a JSRetainPtr specifically for JSStringRefs so they can be automatically refed and derefed. 563 564 * JavaScriptCore.xcodeproj/project.pbxproj: 565 * kjs/JSRetainPtr.h: Copied from wtf/RetainPtr.h. 566 (KJS::JSRetain): 567 (KJS::JSRelease): 568 (KJS::): 569 (KJS::JSRetainPtr::JSRetainPtr): 570 (KJS::JSRetainPtr::~JSRetainPtr): 571 (KJS::JSRetainPtr::get): 572 (KJS::JSRetainPtr::releaseRef): 573 (KJS::JSRetainPtr::operator->): 574 (KJS::JSRetainPtr::operator UnspecifiedBoolType): 575 (KJS::::operator): 576 (KJS::::adopt): 577 (KJS::::swap): 578 (KJS::swap): 579 (KJS::operator==): 580 (KJS::operator!=): 581 5822007-09-05 Mark Rowe <mrowe@apple.com> 583 584 Unreviewed Qt build fix. 585 586 * wtf/unicode/qt4/UnicodeQt4.h: Fix the constness of the src argument to toUpper to prevent build failures. 587 5882007-09-04 Maciej Stachowiak <mjs@apple.com> 589 590 Back out accidentally committed change. 591 592 * JavaScriptCore.xcodeproj/project.pbxproj: 593 * kjs/collector.cpp: 594 (KJS::Collector::registerThread): 595 * wtf/FastMalloc.cpp: 596 (WTF::fastMallocSetIsMultiThreaded): 597 (WTF::TCMalloc_ThreadCache::GetCache): 598 (WTF::TCMalloc_ThreadCache::GetCacheIfPresent): 599 (WTF::TCMalloc_ThreadCache::CreateCacheIfNecessary): 600 (WTF::do_malloc): 601 * wtf/FastMallocInternal.h: Added. 602 6032007-09-04 Maciej Stachowiak <mjs@apple.com> 604 605 Reviewed by Darin. 606 607 - Added Vector::appendRange(), which appends to a vector based on a given start and end iterator 608 - Added keys() and values() functions to HashMap iterators, which give keys-only and values-only iterators 609 610 Together, these allow easy copying of a set, or the keys or values of a map, into a Vector. Examples: 611 612 HashMap<int, int> map; 613 HashSet<int> set; 614 Vector<int> vec; 615 // ... 616 vec.appendRange(set.begin(), set.end()); 617 vec.appendRange(map.begin().keys(), map.end().keys()); 618 vec.appendRange(map.begin().values(), map.end().values()); 619 620 This also allows for a slightly nicer syntax when iterating a map. Instead of saying 621 (*it)->first, you can say *it.values(). Similarly for keys. Example: 622 623 HashMap<int, int>::const_iterator end = map.end(); 624 for (HashMap<int, int>::const_iterator it = map.begin(); it != end; ++it) 625 printf(" [%d => %d]", *it.keys(), *it.values()); 626 627 * JavaScriptCore.xcodeproj/project.pbxproj: 628 * wtf/HashIterators.h: Added. 629 (WTF::): 630 (WTF::HashTableConstKeysIterator::HashTableConstKeysIterator): 631 (WTF::HashTableConstKeysIterator::get): 632 (WTF::HashTableConstKeysIterator::operator*): 633 (WTF::HashTableConstKeysIterator::operator->): 634 (WTF::HashTableConstKeysIterator::operator++): 635 (WTF::HashTableConstValuesIterator::HashTableConstValuesIterator): 636 (WTF::HashTableConstValuesIterator::get): 637 (WTF::HashTableConstValuesIterator::operator*): 638 (WTF::HashTableConstValuesIterator::operator->): 639 (WTF::HashTableConstValuesIterator::operator++): 640 (WTF::HashTableKeysIterator::HashTableKeysIterator): 641 (WTF::HashTableKeysIterator::get): 642 (WTF::HashTableKeysIterator::operator*): 643 (WTF::HashTableKeysIterator::operator->): 644 (WTF::HashTableKeysIterator::operator++): 645 (WTF::HashTableKeysIterator::operator HashTableConstKeysIterator<HashTableType, KeyType, MappedType>): 646 (WTF::HashTableValuesIterator::HashTableValuesIterator): 647 (WTF::HashTableValuesIterator::get): 648 (WTF::HashTableValuesIterator::operator*): 649 (WTF::HashTableValuesIterator::operator->): 650 (WTF::HashTableValuesIterator::operator++): 651 (WTF::HashTableValuesIterator::operator HashTableConstValuesIterator<HashTableType, KeyType, MappedType>): 652 (WTF::operator==): 653 (WTF::operator!=): 654 * wtf/HashTable.h: 655 * wtf/Vector.h: 656 (WTF::::appendRange): 657 6582007-09-04 Maciej Stachowiak <mjs@apple.com> 659 660 Reviewed by Darin. 661 662 - Remove single-threaded optimization for FastMalloc. 663 664 It does not appear to help anywhere but Mac OS X on PPC, due to 665 pthread_getspecific being slow there. On Intel, removing the 666 optimization results in a 1% PLT speedup, a 2% JS iBench speedup, 667 and no measurable effect on HTML iBench (maybe a slight speedup). 668 669 * JavaScriptCore.xcodeproj/project.pbxproj: 670 * kjs/collector.cpp: 671 (KJS::Collector::registerThread): 672 * wtf/FastMalloc.cpp: 673 (WTF::TCMalloc_ThreadCache::GetCache): 674 (WTF::TCMalloc_ThreadCache::GetCacheIfPresent): 675 (WTF::TCMalloc_ThreadCache::CreateCacheIfNecessary): 676 (WTF::do_malloc): 677 * wtf/FastMallocInternal.h: Removed. 678 6792007-09-03 Mark Rowe <mrowe@apple.com> 680 681 Reviewed by Tim Hatcher. 682 683 <rdar://problem/5452164> Production build with in symbols directory has no debug info 684 685 Enable debug symbol generation on all build configurations. Production builds are stripped 686 of symbols by Xcode during deployment post-processing. 687 688 * Configurations/Base.xcconfig: 689 * JavaScriptCore.xcodeproj/project.pbxproj: 690 6912007-08-30 Riku Voipio <riku.voipio@iki.fi> 692 693 Reviewed by Dave Kilzer. 694 695 Better ARM defines. 696 697 * kjs/ustring.h: Update comments to reflect the change and update test 698 to fit changes to Platform.h. 699 * wtf/Platform.h: Forced packing is only needed on oldabi ARM. 700 Set middle-endian floats only for little-endian oldabi ARM. 701 Set big-endian define for big-endian ARM. 702 7032007-08-29 Ryan Leavengood <leavengood@gmail.com> 704 705 Reviewed by Maciej. 706 707 http://bugs.webkit.org/show_bug.cgi?id=15043 708 - posix_memalign takes a void** as its first parameter. My port makes use of this function call. 709 710 * kjs/collector.cpp: 711 (KJS::allocateBlock): 712 7132007-08-26 Darin Adler <darin@apple.com> 714 715 - quick follow on to that last check-in 716 717 * API/JSCallbackObject.cpp: (KJS::JSCallbackObject::JSCallbackObject): 718 Need to initialize m_class to 0. 719 7202007-08-26 Mark Rowe <mrowe@apple.com> 721 722 Reviewed by Darin Adler. 723 724 <rdar://problem/4949002> JSGlobalContextCreate can cause crashes because it passes a NULL JSContextRef to the globalObjectClass's initialize callback 725 726 JSCallbackObject now tracks whether it was constructed with a null ExecState. This will happen when the object is being used as the global object, 727 as the Interpreter needs to be created after the global object. In this situation the initialization is deferred until after the Interpreter's 728 ExecState is available to be passed down to the initialize callbacks. 729 730 * API/JSCallbackObject.cpp: 731 (KJS::JSCallbackObject::init): Track whether we successfully initialized. 732 (KJS::JSCallbackObject::initializeIfNeeded): Attempt to initialize with the new ExecState. 733 * API/JSCallbackObject.h: 734 * API/JSContextRef.cpp: 735 (JSGlobalContextCreate): Initialize the JSCallbackObject with the Interpreter's ExecState. 736 * API/testapi.c: 737 (testInitializeOfGlobalObjectClassHasNonNullContext): 738 (main): Verify that the context passed to the initialize callback is non-null. 739 7402007-08-26 Mark Rowe <mrowe@apple.com> 741 742 Reviewed by Darin Adler. 743 744 <rdar://problem/5438496> JSGlobalContextCreate crashes when passed a custom class 745 746 * API/JSContextRef.cpp: 747 (JSGlobalContextCreate): Specify jsNull() as the prototype and let Interpreter's constructor fix it up to point at builtinObjectPrototype(). 748 * API/testapi.c: 749 (main): Use an instance of a custom class as the global object to ensure the code path is exercised in the test. 750 7512007-08-26 Mike Hommey <glandium@debian.org> 752 753 Reviewed by Mark Rowe and David Kilzer. 754 755 Fix build failure on arm. 756 757 * wtf/Platform.h: Also test if __arm__ is defined. 758 7592007-08-25 Peter Kasting <pkasting@google.com> 760 761 Reviewed by Maciej Stachowiak. 762 763 Part 3 of http://bugs.webkit.org/show_bug.cgi?id=14967 764 Bug 14967: Reduce wtf::Vector::operator[]() overloads 765 766 * wtf/Vector.h: 767 (WTF::Vector::operator[]): Only provide versions of operator[] that takes a size_t argument. 768 7692007-08-25 Peter Kasting <pkasting@google.com> 770 771 Reviewed by Sam Weinig. 772 773 Part 2 of http://bugs.webkit.org/show_bug.cgi?id=14967. 774 Eliminate all remaining implicit conversions of wtf::Vector<T> to T*. Where code was 775 previously checking that the Vector's data pointer was non-NULL, check !Vector::isEmpty() 776 instead. 777 778 * wtf/Vector.h: 779 (WTF::Vector::data): 780 7812007-08-16 Kevin McCullough <kmccullough@apple.com> 782 783 Reviewed by Geoff and Adam. 784 785 - Changing stack depth to 500 (from 100 on mac and win) to help out some apps specifically gmail. <rdar://problem/3590522> JavaScript call stack limit of 99 is too small for some applications; needs to be closer to 500 (4045) 786 787 * kjs/object.cpp: 788 7892007-08-15 Peter Kasting <pkasting@google.com> 790 791 Reviewed by Darin. 792 793 http://bugs.webkit.org/show_bug.cgi?id=14967 part 1 - Eliminate most implicit 794 conversions of wtf::Vector<T> to T* by explicitly calling .data() 795 796 * API/JSCallbackConstructor.cpp: 797 (KJS::JSCallbackConstructor::construct): 798 * API/JSCallbackFunction.cpp: 799 (KJS::JSCallbackFunction::callAsFunction): 800 * API/JSCallbackObject.cpp: 801 (KJS::JSCallbackObject::construct): 802 (KJS::JSCallbackObject::callAsFunction): 803 * bindings/c/c_instance.cpp: 804 (KJS::Bindings::CInstance::invokeMethod): 805 (KJS::Bindings::CInstance::invokeDefaultMethod): 806 * kjs/number_object.cpp: 807 (integer_part_noexp): 808 (char_sequence): 809 * kjs/ustring.cpp: 810 (KJS::UString::UTF8String): 811 8122007-08-14 Darin Adler <darin@apple.com> 813 814 Reviewed by Sam. 815 816 - fix <rdar://problem/5410570> Global initializer introduced by use of std::numeric_limits in r24919 817 818 * kjs/ustring.cpp: 819 (KJS::overflowIndicator): Turned into a function. 820 (KJS::maxUChars): Ditto. 821 (KJS::allocChars): Use the functions. 822 (KJS::reallocChars): Ditto. 823 (KJS::UString::expandedSize): Ditto. 824 8252007-08-12 Darin Adler <darin@apple.com> 826 827 Reviewed by Maciej. 828 829 - fix http://bugs.webkit.org/show_bug.cgi?id=14931 830 <rdar://problem/5403816> JavaScript regular expression non-participating capturing parentheses 831 fail in 3 different ways 832 833 Test: fast/js/regexp-non-capturing-groups.html 834 835 * kjs/string_object.cpp: 836 (KJS::replace): Add missing code to handle undefined backreferences; before we'd get the empty string 837 instead of a JavaScript "undefined" value. 838 (KJS::StringProtoFunc::callAsFunction): Implemented backreference support for split. 839 * pcre/pcre_exec.c: (match): Made backreferences to undefined groups match the empty string instead 840 of always failing. Only in JAVASCRIPT mode. 841 842 * tests/mozilla/expected.html: Add a new expected test success, since this fixed one test result. 843 8442007-08-10 Timothy Hatcher <timothy@apple.com> 845 846 Reviewed by Adam. 847 848 <rdar://problem/5394449> Stop using some Carbon UI APIs for 64 bit 849 850 Disable the NPAPI for 64-bit on Mac OS X. 851 852 * Configurations/JavaScriptCore.xcconfig: Use the 64-bit export file. 853 * JavaScriptCore.xcodeproj/project.pbxproj: Create a 64-bit export file 854 that filters out the NPN fnctions. 855 * bindings/NP_jsobject.cpp: #ifdef out this for 64-bit on Mac OS X 856 * bindings/NP_jsobject.h: Ditto. 857 * bindings/c/c_class.cpp: Ditto. 858 * bindings/c/c_class.h: Ditto. 859 * bindings/c/c_instance.cpp: Ditto. 860 * bindings/c/c_instance.h: Ditto. 861 * bindings/c/c_runtime.cpp: Ditto. 862 * bindings/c/c_runtime.h: Ditto. 863 * bindings/c/c_utility.cpp: Ditto. 864 * bindings/c/c_utility.h: Ditto. 865 * bindings/npapi.h: Ditto. 866 * bindings/npruntime.cpp: Ditto. 867 * bindings/npruntime.h: Ditto. 868 * bindings/npruntime_impl.h: Ditto. 869 * bindings/npruntime_priv.h: Ditto. 870 * bindings/runtime.cpp: 871 (KJS::Bindings::Instance::createBindingForLanguageInstance): 872 don't creat an NPObject on Mac OS X in 64-bit. 873 8742007-08-09 Mark Rowe <mrowe@apple.com> 875 876 Reviewed by Antti. 877 878 <rdar://problem/5400709> Versioning in debug and release builds should include minor and tiny version before + 879 880 * Configurations/Version.xcconfig: 881 * JavaScriptCore.xcodeproj/project.pbxproj: Add a shell script phase to make to dependency between 882 Version.xcconfig and Info.plist explicit to Xcode. 883 8842007-08-08 George Staikos <staikos@kde.org> 885 886 Make it compile with Qt again. 887 888 * wtf/unicode/qt4/UnicodeQt4.h: 889 (WTF::Unicode::toUpper): 890 8912007-08-07 Sam Weinig <sam@webkit.org> 892 893 Reviewed by Oliver. 894 895 Fix for http://bugs.webkit.org/show_bug.cgi?id=14897 896 Decompilation of double negation fails and produces invalid or incorrect code 897 898 Test: fast/js/function-decompilation-operators.html 899 900 * kjs/nodes2string.cpp: 901 (UnaryPlusNode::streamTo): Put space after unary operator. Matches Firefox. 902 (NegateNode::streamTo): Diito. 903 (MultNode::streamTo): Put spaces around binary operator. Matches Firefox. 904 (AddNode::streamTo): Ditto. 905 9062007-08-07 Darin Adler <darin@apple.com> 907 908 Reviewed by Adele. 909 910 - fix <rdar://problem/5383104> REGRESSION: XHR.responseText is null instead of empty string 911 in http/tests/xmlhttprequest/zero-length-response.html 912 913 The new code to handle out of memory conditions was turning a "" into a null string. 914 915 * kjs/ustring.h: Removed UCharReference, which has long been obsolete and unused. 916 Removed copyForWriting, which was only used for the upper/lowercasing code and for 917 UCharReference. 918 * kjs/ustring.cpp: 919 (KJS::allocChars): Removed special case that made this fail (return 0) when passed 0. 920 Instead assert that we're not passed 0. Also added an overflow check for two reasons: 921 1) for sizes that aren't checked this prevents us from allocating a buffer that's too 922 small, and 2) for sizes where we overflowed in the expandedSize function and returned 923 overflowIndicator, it guarantees we fail. 924 (KJS::reallocChars): Ditto. 925 (KJS::UString::expandedSize): Return a large number, overflowIndicator, rather than 0 926 for cases where we overflow. 927 (KJS::UString::spliceSubstringsWithSeparators): Added a special case for empty string so 928 we don't call allocChars with a length of 0. 929 (KJS::UString::operator=): Added special characters for both 0 and empty string so we 930 match the behavior of the constructor. This avoids calling allocChars with a length of 0 931 and making a null string rather than an empty string in that case, and also matches the 932 pattern used in the rest of the functions. 933 (KJS::UString::operator[]): Made the return value const so code that tries to use the 934 operator to modify the string will fail. 935 936 * kjs/string_object.cpp: (KJS::StringProtoFunc::callAsFunction): Rewrote uppercasing and 937 lowercasing functions so they don't need copyForWriting any more -- it wasn't really doing 938 any good for optimization purposes. Instead use a Vector and releaseBuffer. 939 940 * wtf/unicode/icu/UnicodeIcu.h: Eliminate one of the versions of toLower/toUpper -- we now 941 only need the version where both a source and destination buffer is passed in, not the one 942 that works in place. 943 * wtf/unicode/qt4/UnicodeQt4.h: Ditto. 944 9452007-08-06 Sam Weinig <sam@webkit.org> 946 947 Reviewed by Oliver. 948 949 Fix for http://bugs.webkit.org/show_bug.cgi?id=14891 950 Decompilation of try block immediately following "else" fails 951 952 Test: fast/js/toString-try-else.html 953 954 * kjs/nodes2string.cpp: 955 (TryNode::streamTo): Add newline before "try". 956 9572007-08-07 Mark Rowe <mrowe@apple.com> 958 959 Reviewed by Maciej. 960 961 <rdar://problem/5388774> REGRESSION: Hang occurs after clicking "Attach a file " link in a new .Mac message 962 963 Attempting to acquire the JSLock inside CollectorHeap::forceLock can lead to a deadlock if the thread currently 964 holding the lock is waiting on the thread that is forking. It is not considered safe to use system frameworks 965 after a fork without first execing[*] so it is not particularly important to ensure that the collector and 966 fastMalloc allocators are unlocked in the child process. If the child process wishes to use JavaScriptCore it 967 should exec after forking like it would to use any other system framework. 968 [*]: <http://lists.apple.com/archives/Cocoa-dev/2005/Jan/msg00676.html> 969 970 * kjs/CollectorHeapIntrospector.cpp: Remove forceLock and forceUnlock implementations. 971 * kjs/CollectorHeapIntrospector.h: Stub out forceLock and forceUnlock methods. 972 * wtf/FastMalloc.cpp: Ditto. 973 9742007-08-06 Darin Adler <darin@apple.com> 975 976 Rubber stamped by Geoff. 977 978 * kjs/ustring.h: Added an assertion which would have helped us find the 979 previous bug more easily. 980 9812007-08-06 Darin Adler <darin@apple.com> 982 983 Reviewed by Anders. 984 985 - fix <rdar://problem/5387589> 9A514: Quartz Composer crash on launch in KJS::jsString 986 987 * API/JSBase.cpp: 988 (JSEvaluateScript): Turn NULL for sourceURL into UString::null(), just as JSObjectMakeFunction already does. 989 (JSCheckScriptSyntax): Ditto. 990 9912007-08-06 Matt Lilek <pewtermoose@gmail.com> 992 993 Not reviewed, build fix. 994 995 * kjs/string_object.cpp: 996 (KJS::StringProtoFunc::callAsFunction): 997 9982007-08-04 Darin Adler <darin@apple.com> 999 1000 Reviewed by Maciej. 1001 1002 - fix <rdar://problem/5371862> crash in Dashcode due to Quartz Composer JavaScript garbage collector reentrancy 1003 1004 * API/JSBase.cpp: (JSGarbageCollect): Don't call collector() if isBusy() returns true. 1005 1006 * kjs/collector.h: Added isBusy(), removed the unused return value from collect() 1007 * kjs/collector.cpp: Added an "operation in progress" flag to the allocator. 1008 (KJS::Collector::allocate): Call abort() if an operation is already in progress. Set the new flag instead 1009 of using the debug-only GCLock. 1010 (KJS::Collector::collect): Ditto. 1011 (KJS::Collector::isBusy): Added. 1012 10132007-08-04 Maciej Stachowiak <mjs@apple.com> 1014 1015 Reviewed by Darin and Adam. 1016 1017 <rdar://problem/5368990> REGRESSION: newsgator.com sign-on 6x slower than Safari 3 beta due to GC changes (14808) 1018 1019 * kjs/string_object.cpp: 1020 (KJS::replace): if the string didn't change (very common in some cases) reuse the original string value. 1021 (KJS::StringProtoFunc::callAsFunction): Pass in the StringImp* when replacing, not just the UString. 1022 * kjs/string_object.h: 1023 (KJS::StringInstance::internalValue): covariant override to return StringImp for convenience 1024 10252007-08-04 Mark Rowe <mrowe@apple.com> 1026 1027 Reviewed by Oliver Hunt. 1028 1029 <rdar://problem/5385145> r24843 introduces a crash on calling fork() (14878) 1030 http://bugs.webkit.org/show_bug.cgi?id=14878 1031 1032 Provide no-op functions for all members of the malloc_zone_t and malloc_introspection_t structures that we 1033 register to avoid crashes in system code that assumes they will be non-null. 1034 1035 * kjs/CollectorHeapIntrospector.cpp: 1036 (KJS::CollectorHeapIntrospector::CollectorHeapIntrospector): 1037 (KJS::CollectorHeapIntrospector::forceLock): Grab the lock. 1038 (KJS::CollectorHeapIntrospector::forceUnlock): Release the lock. 1039 * kjs/CollectorHeapIntrospector.h: 1040 (KJS::CollectorHeapIntrospector::goodSize): 1041 (KJS::CollectorHeapIntrospector::check): 1042 (KJS::CollectorHeapIntrospector::print): 1043 (KJS::CollectorHeapIntrospector::log): 1044 (KJS::CollectorHeapIntrospector::statistics): 1045 (KJS::CollectorHeapIntrospector::size): 1046 (KJS::CollectorHeapIntrospector::zoneMalloc): 1047 (KJS::CollectorHeapIntrospector::zoneCalloc): 1048 (KJS::CollectorHeapIntrospector::zoneFree): 1049 * wtf/FastMalloc.cpp: 1050 (WTF::FastMallocZone::goodSize): 1051 (WTF::FastMallocZone::check): 1052 (WTF::FastMallocZone::print): 1053 (WTF::FastMallocZone::log): 1054 (WTF::FastMallocZone::forceLock): Grab the TCMalloc locks. 1055 (WTF::FastMallocZone::forceUnlock): Release the TCMalloc locks. 1056 (WTF::FastMallocZone::FastMallocZone): 1057 10582007-08-04 Mark Rowe <mrowe@apple.com> 1059 1060 Rubber-stamped by Anders. 1061 1062 * pcre/pcre_compile.c: Remove non-ASCII character from a comment. 1063 10642007-08-02 Mark Rowe <mrowe@apple.com> 1065 1066 Reviewed by Geoff Garen. 1067 1068 <rdar://problem/4212199> 'leaks' reports false leaks in WebKit (because the WTF allocator uses mmap?) 1069 1070 Implement malloc zone introspection routines to allow leaks, heap, and friends to request information 1071 about specific memory regions that were allocated by FastMalloc or the JavaScriptCore collector. 1072 1073 This requires tool-side support before the regions will be displayed. The addition of that support is 1074 tracked by <rdar://problems/5353057&5353060>. 1075 1076 * JavaScriptCore.exp: Export the two variables that are used by leaks to introspect the allocators. 1077 * JavaScriptCore.xcodeproj/project.pbxproj: 1078 * kjs/AllInOneFile.cpp: 1079 * kjs/CollectorHeapIntrospector.cpp: Added. 1080 (KJS::): 1081 (KJS::CollectorHeapIntrospector::init): 1082 (KJS::CollectorHeapIntrospector::CollectorHeapIntrospector): Create and register our zone with the system. 1083 (KJS::CollectorHeapIntrospector::enumerate): Iterate over the CollectorBlocks that are in use and report them to the caller as being used. 1084 * kjs/CollectorHeapIntrospector.h: Added. 1085 (KJS::CollectorHeapIntrospector::size): Return zero to indicate the specified pointer does not belong to this zone. 1086 * kjs/collector.cpp: 1087 (KJS::Collector::registerThread): Register the CollectorHeapIntrospector with the system when the first thread is registered with the collector. 1088 * wtf/FastMalloc.cpp: 1089 (WTF::TCMalloc_PageHeap::GetDescriptorEnsureSafe): 1090 (WTF::TCMalloc_ThreadCache_FreeList::enumerateFreeObjects): Enumerate the objects on the free list. 1091 (WTF::TCMalloc_ThreadCache::enumerateFreeObjects): Ditto. 1092 (WTF::TCMalloc_Central_FreeList::enumerateFreeObjects): Ditto. 1093 (WTF::TCMalloc_ThreadCache::InitModule): Register the FastMallocZone with the system when initializing TCMalloc. 1094 (WTF::FreeObjectFinder::FreeObjectFinder): 1095 (WTF::FreeObjectFinder::visit): Add an object to the free list. 1096 (WTF::FreeObjectFinder::isFreeObject): 1097 (WTF::FreeObjectFinder::freeObjectCount): 1098 (WTF::FreeObjectFinder::findFreeObjects): Find the free objects within a thread cache or free list. 1099 (WTF::PageMapFreeObjectFinder::PageMapFreeObjectFinder): Find the free objects within a TC_PageMap. 1100 (WTF::PageMapFreeObjectFinder::visit): Called once per allocated span. Record whether the span or any subobjects are free. 1101 (WTF::PageMapMemoryUsageRecorder::PageMapMemoryUsageRecorder): 1102 (WTF::PageMapMemoryUsageRecorder::visit): Called once per allocated span. Report the range of memory as being allocated, and the span or 1103 its subobjects as being used if they do not appear on the free list. 1104 (WTF::FastMallocZone::enumerate): Map the key remote TCMalloc data structures into our address space. We then locate all free memory ranges 1105 before reporting the other ranges as being in use. 1106 (WTF::FastMallocZone::size): Determine whether the given pointer originates from within our allocation zone. If so, 1107 we return its allocation size. 1108 (WTF::FastMallocZone::zoneMalloc): 1109 (WTF::FastMallocZone::zoneCalloc): 1110 (WTF::FastMallocZone::zoneFree): 1111 (WTF::FastMallocZone::zoneRealloc): 1112 (WTF::): 1113 (WTF::FastMallocZone::FastMallocZone): Create and register our zone with the system. 1114 (WTF::FastMallocZone::init): 1115 * wtf/MallocZoneSupport.h: Added. 1116 (WTF::RemoteMemoryReader::RemoteMemoryReader): A helper class to ease the process of mapping memory in a different process into 1117 our local address space 1118 (WTF::RemoteMemoryReader::operator()): 1119 * wtf/TCPageMap.h: 1120 (TCMalloc_PageMap2::visit): Walk over the heap and visit each allocated span. 1121 (TCMalloc_PageMap3::visit): Ditto. 1122 11232007-08-02 Mark Rowe <mrowe@apple.com> 1124 1125 Build fix. 1126 1127 * kjs/ustring.cpp: 1128 (KJS::UString::expandedSize): Use std::numeric_limits<size_t>::max() rather than the non-portable SIZE_T_MAX. 1129 11302007-08-02 Mark Rowe <mrowe@apple.com> 1131 1132 Reviewed by Maciej. 1133 1134 <rdar://problem/5352887> "Out of memory" error during repeated JS string concatenation leaks hundreds of MBs of RAM 1135 1136 A call to fastRealloc was failing which lead to UString::expandCapacity leaking the buffer it was trying to reallocate. 1137 It also resulted in the underlying UString::rep having both a null baseString and buf field, which meant that attempting 1138 to access the contents of the string after the failed memory reallocation would crash. 1139 1140 A third issue is that expandedSize size was calculating the new length in a way that led to an integer overflow occurring. 1141 Attempting to allocate a string more than 190,000,000 characters long would fail a the integer overflow would lead to a 1142 memory allocation of around 3.6GB being attempted rather than the expected 390MB. Sizes that would lead to an overflow 1143 are now returned as zero and callers are updated to treat this as though the memory allocation has failed. 1144 1145 * kjs/array_object.cpp: 1146 (ArrayProtoFunc::callAsFunction): Check whether the append failed and raise an "Out of memory" exception if it did. 1147 * kjs/ustring.cpp: 1148 (KJS::allocChars): Wrapper around fastMalloc that takes a length in characters. It will return 0 when asked to allocate a zero-length buffer. 1149 (KJS::reallocChars): Wrapper around fastRealloc that takes a length in characters. It will return 0 when asked to allocate a zero-length buffer. 1150 (KJS::UString::expandedSize): Split the size calculation in two and guard against overflow during each step. 1151 (KJS::UString::expandCapacity): Don't leak r->buf if reallocation fails. Instead free the memory and use the null representation. 1152 (KJS::UString::expandPreCapacity): If fastMalloc fails then use the null representation rather than crashing in memcpy. 1153 (KJS::UString::UString): If calls to expandCapacity, expandPreCapacity or fastMalloc fail then use the null representation rather than crashing in memcpy. 1154 (KJS::UString::append): Ditto. 1155 (KJS::UString::operator=): Ditto. 1156 * kjs/ustring.h: Change return type of expandedSize from int to size_t. 1157 11582007-08-01 Darin Adler <darin@apple.com> 1159 1160 Reviewed by Kevin McCullough. 1161 1162 - fix <rdar://problem/5375186> pointers to pieces of class definition passed to JSClassCreate should all be const 1163 1164 * API/JSObjectRef.h: Added const. 1165 1166 * API/JSClassRef.cpp: 1167 (OpaqueJSClass::OpaqueJSClass): Added const. 1168 (OpaqueJSClass::create): Added const. 1169 * API/JSObjectRef.cpp: 1170 (JSClassCreate): Added const. 1171 11722007-08-01 Steve Falkenburg <sfalken@apple.com> 1173 1174 Build mod: Fix sln to match configs in vcproj. 1175 1176 Reviewed by Adam. 1177 1178 * JavaScriptCore.vcproj/JavaScriptCore.make: 1179 * JavaScriptCore.vcproj/JavaScriptCore.sln: 1180 11812007-07-30 Simon Hausmann <hausmann@kde.org> 1182 1183 Done with and reviewed by Lars. 1184 1185 Removed the __BUILDING_QT ifdef in JSStringRef.h and changed UChar for the Qt build to use wchar_t on Windows. 1186 1187 * API/JSStringRef.h: 1188 * wtf/unicode/qt4/UnicodeQt4.h: 1189 11902007-07-27 Simon Hausmann <hausmann@kde.org> 1191 1192 Done with and reviewed by Lars and Zack. 1193 1194 Always define JSChar to be unsigned short for the Qt builds, to ensure compatibility with UChar. 1195 1196 * API/JSStringRef.h: 1197 11982007-07-27 Simon Hausmann <hausmann@kde.org> 1199 1200 Done with and reviewed by Lars and Zack. 1201 1202 Fix compilation with Qt on Windows with MingW: Implemented currentThreadStackBase() for this platform. 1203 1204 * kjs/collector.cpp: 1205 (KJS::currentThreadStackBase): 1206 12072007-07-27 Simon Hausmann <hausmann@kde.org> 1208 1209 Done with and reviewed by Lars and Zack. 1210 1211 Fix compilation with Qt on Windows with MingW: The MingW headers do not provide a prototype for a reentrant version of localtime. But since we don't use multiple threads for the Qt build we can use the plain localtime() function. 1212 1213 * kjs/DateMath.cpp: 1214 (KJS::getDSTOffsetSimple): 1215 12162007-07-27 Simon Hausmann <hausmann@kde.org> 1217 1218 Done with and reviewed by Lars and Zack. 1219 1220 Use $(MOVE) instead of mv to eliminated the shell dependency and replaced the long shell line to call bison and modify the css grammar file with a few lines of portable perl code. 1221 1222 * JavaScriptCore.pri: 1223 12242007-07-27 Simon Hausmann <hausmann@kde.org> 1225 1226 Done with and reviewed by Lars and Zack. 1227 1228 Implemented currentTime() in the interpreter by using QDateTime, so that we don't need timeGetTime() on Windows and therefore also don't need to link against Winmm.dll. 1229 1230 * kjs/interpreter.cpp: 1231 (KJS::getCurrentTime): 1232 * kjs/testkjs.cpp: 1233 (StopWatch::start): 1234 (StopWatch::stop): 1235 12362007-07-27 Simon Hausmann <hausmann@kde.org> 1237 1238 Done with and reviewed by Lars and Zack. 1239 1240 Replace the use of snprintf with QByteArray to compile under msvc 2005 express. 1241 1242 * bindings/qt/qt_instance.cpp: 1243 (KJS::Bindings::QtInstance::stringValue): 1244 12452007-07-27 Simon Hausmann <hausmann@kde.org> 1246 1247 Done with and reviewed by Lars and Zack. 1248 1249 Don't use pthread.h unless thread support is enabled. 1250 1251 * kjs/collector.cpp: 1252 (KJS::Collector::registerAsMainThread): 1253 (KJS::onMainThread): 1254 12552007-07-27 Simon Hausmann <hausmann@kde.org> 1256 1257 Done with and reviewed by Lars and Zack. 1258 1259 Removed TCSystemMalloc from the Qt build, it's not necessary it seems. 1260 1261 * JavaScriptCore.pri: 1262 12632007-07-27 Simon Hausmann <hausmann@kde.org> 1264 1265 Done with and reviewed by Lars and Zack. 1266 1267 Added os-win32 to the include search path for the Qt windows build in order to provide the fake stdint.h header file. 1268 1269 * JavaScriptCore.pri: 1270 12712007-07-25 Maciej Stachowiak <mjs@apple.com> 1272 1273 Reviewed by Mark. 1274 1275 - follow-up to previous change 1276 1277 * kjs/ustring.cpp: 1278 (KJS::UString::operator=): Make sure to reset the length when 1279 replacing the buffer contents for a single-owned string. 1280 12812007-07-25 Maciej Stachowiak <mjs@apple.com> 1282 1283 Reviewed by Darin. 1284 1285 - JavaScriptCore part of fix for <rdar://problem/5300291> Optimize GC to reclaim big, temporary objects (like XMLHttpRequest.responseXML) quickly 1286 1287 Also, as a side effect of optimizations included in this patch: 1288 - 7% speedup on JavaScript iBench 1289 - 4% speedup on "Celtic Kane" JS benchmark 1290 1291 The basic idea is explained in a big comment in collector.cpp. When unusually 1292 large objecs are allocated, we push the next GC closer on the assumption that 1293 most objects are short-lived. 1294 1295 I also did the following two optimizations in the course of tuning 1296 this not to be a performance regression: 1297 1298 1) Change UString::Rep to hold a self-pointer as the baseString in 1299 the unshared case, instead of a null pointer; this removes a 1300 number of null checks in hot code because many places already 1301 wanted to use the rep itself or the baseString as appropriate. 1302 1303 2) Avoid creating duplicate StringImpls when creating a 1304 StringInstance (the object wrapper for a JS string) or calling 1305 their methods. Since a temporary wrapper object is made every time 1306 a string method is called, this resulted in two useless extra 1307 StringImpls being allocated for no reason whenever a String method 1308 was invoked on a string value. Now we bypass those. 1309 1310 * kjs/collector.cpp: 1311 (KJS::): 1312 (KJS::Collector::recordExtraCost): Basics of the extra cost mechanism. 1313 (KJS::Collector::allocate): ditto 1314 (KJS::Collector::collect): ditto 1315 * kjs/collector.h: 1316 (KJS::Collector::reportExtraMemoryCost): ditto 1317 * kjs/array_object.cpp: 1318 (ArrayInstance::ArrayInstance): record extra cost 1319 * kjs/internal.cpp: 1320 (KJS::StringImp::toObject): don't create a whole new StringImpl just 1321 to be the internal value of a StringInstance! StringImpls are immutable 1322 so there's no point tot his. 1323 * kjs/internal.h: 1324 (KJS::StringImp::StringImp): report extra cost 1325 * kjs/string_object.cpp: 1326 (KJS::StringInstance::StringInstance): new version that takes a StringImp 1327 (KJS::StringProtoFunc::callAsFunction): don't create a whole new StringImpl 1328 just to convert self to string! we already have one in the internal value 1329 * kjs/string_object.h: report extra cost 1330 * kjs/ustring.cpp: All changes to handle baseString being self instead of null in the 1331 unshared case. 1332 (KJS::): 1333 (KJS::UString::Rep::create): 1334 (KJS::UString::Rep::destroy): 1335 (KJS::UString::usedCapacity): 1336 (KJS::UString::usedPreCapacity): 1337 (KJS::UString::expandCapacity): 1338 (KJS::UString::expandPreCapacity): 1339 (KJS::UString::UString): 1340 (KJS::UString::append): 1341 (KJS::UString::operator=): 1342 (KJS::UString::copyForWriting): 1343 * kjs/ustring.h: 1344 (KJS::UString::Rep::baseIsSelf): new method, now that baseString is 1345 self instead of null in the unshared case we can't just null check. 1346 (KJS::UString::Rep::data): adjusted as mentioned above 1347 (KJS::UString::cost): new method to compute the cost for a UString, for 1348 use by StringImpl. 1349 1350 * kjs/value.cpp: 1351 (KJS::jsString): style fixups. 1352 (KJS::jsOwnedString): new method, use this for strings allocated from UStrings 1353 held by the parse tree. Tracking their cost as part of string cost is pointless, 1354 because garbage collecting them will not actually free the relevant string buffer. 1355 * kjs/value.h: prototyped jsOwnedString. 1356 * kjs/nodes.cpp: 1357 (StringNode::evaluate): use jsOwnedString as appropriate 1358 (RegExpNode::evaluate): ditto 1359 (PropertyNameNode::evaluate): ditto 1360 (ForInNode::execute): ditto 1361 1362 * JavaScriptCore.exp: Exported some new symbols. 1363 13642007-07-23 Anders Carlsson <andersca@apple.com> 1365 1366 Reviewed by Geoff. 1367 1368 <rdar://problem/5121461> REGRESSION: Unable to load JigZone puzzle 1369 1370 * bindings/jni/jni_jsobject.cpp: 1371 (JavaJSObject::createNative): 1372 1373 Call RootObject::gcProtect on the global object, thereby putting it in the 1374 "protect count" set which is used for checking if a native handle is valid. 1375 13762007-07-23 Darin Adler <darin@apple.com> 1377 1378 * pcre/pcre_compile.c: Roll back a tiny accidental change in the unused !JAVASCRIPT 1379 side of an #ifdef. This has no effect when using PCRE in JAVASCRIPT mode as we do, 1380 but seems worth rolling back. 1381 13822007-07-23 Maciej Stachowiak <mjs@apple.com> 1383 1384 Reviewed by Oliver. 1385 1386 - fix remaining problems with Window shadowing 1387 1388 * kjs/nodes.cpp: 1389 (VarDeclNode::evaluate): Tweak the special case a little. 1390 13912007-07-23 Maciej Stachowiak <mjs@apple.com> 1392 1393 Reviewed by Oliver. 1394 1395 - fix Window shadowing regressions caused by the previous commit. 1396 1397 * kjs/nodes.cpp: 1398 (VarDeclNode::evaluate): Handle the case of global scope specially. 1399 14002007-07-22 Maciej Stachowiak <mjs@apple.com> 1401 1402 Reviewed by Darin. 1403 1404 -fixed <rdar://problem/5353293> REGRESSION (r24287): 1% i-Bench JS slowdown from JavaScript compatibility fix (14719) 1405 http://bugs.webkit.org/show_bug.cgi?id=14719 1406 1407 My fix for this actually resulted in JS iBench being 1% faster than before the regression 1408 and the Celtic Kane benchmark being 5% faster than before the regression. 1409 1410 * kjs/nodes.cpp: 1411 (VarDeclNode::handleSlowCase): factored out the slow code path to be out of line. 1412 (VarDeclNode::evaluate): I did a couple of things: 1413 (1) Don't check if the variable is already declared by looking for the property in 1414 the variable object, that code path was dead code. 1415 (2) Special-case the common case where the top of the scope and the variable object 1416 are the same; in that case the variable must always be in the variable object. 1417 (3) Don't return a jsString() of the variable name, nothing uses the return value 1418 from this node types evaluate method. 1419 * kjs/nodes.h: 1420 14212007-07-22 Darin Adler <darin@apple.com> 1422 1423 Reviewed by Kevin Decker. 1424 1425 - fix <rdar://problem/5126394> REGRESSION: Crash after clicking back button in test application (13250) 1426 http://bugs.webkit.org/show_bug.cgi?id=13250 1427 1428 * bindings/objc/objc_utility.mm: (KJS::Bindings::convertObjcValueToValue): 1429 If the object returns 0 for _imp, convert that to "undefined", since callers 1430 can't cope with a JSValue of 0. 1431 14322007-07-19 Geoffrey Garen <ggaren@apple.com> 1433 1434 Reviewed by Darin Adler. 1435 1436 Fixed http://bugs.webkit.org/show_bug.cgi?id=10880 | <rdar://problem/5335694> 1437 REGRESSION: JavaScript menu doesn't appear on pricepoint.com (14595) 1438 1439 Though the ECMA spec says auto-semicolon insertion should not occur 1440 without a newline or '}', Firefox treats do-while specially, and the 1441 library used by pricepoint.com requires that special treatment. 1442 1443 * JavaScriptCore.xcodeproj/project.pbxproj: 1444 * kjs/grammar.y: 1445 14462007-07-19 Darin Adler <darin@apple.com> 1447 1448 Reviewed by Geoff. 1449 1450 - fix <rdar://problem/5345440> PCRE computes wrong length for expressions with quantifiers 1451 on named recursion or subexpressions 1452 1453 It's challenging to implement proper preflighting for compiling these advanced features. 1454 But we don't want them in the JavaScript engine anyway. 1455 1456 Turned off the following features of PCRE (some of these are simply parsed and not implemented): 1457 1458 \C \E \G \L \N \P \Q \U \X \Z 1459 \e \l \p \u \z 1460 [::] [..] [==] 1461 (?#) (?<=) (?<!) (?>) 1462 (?C) (?P) (?R) 1463 (?0) (and 1-9) 1464 (?imsxUX) 1465 1466 Added the following: 1467 1468 \u \v 1469 1470 Because of \v, the js1_2/regexp/special_characters.js test now passes. 1471 1472 To be conservative, I left some features that JavaScript doesn't want, such as 1473 \012 and \x{2013}, in place. We can revisit these later; they're not directly-enough 1474 related to avoiding the incorrect preflighting. 1475 1476 I also didn't try to remove unused opcodes and remove code from the execution engine. 1477 That could save code size and speed things up a bit, but it would require more changes. 1478 1479 * kjs/regexp.h: 1480 * kjs/regexp.cpp: (KJS::RegExp::RegExp): Remove the sanitizePattern workaround for 1481 lack of \u support, since the PCRE code now has \u support. 1482 1483 * pcre/pcre-config.h: Set JAVASCRIPT to 1. 1484 * pcre/pcre_internal.h: Added ESC_v. 1485 1486 * pcre/pcre_compile.c: Added a different escape table for when JAVASCRIPT is set that 1487 omits all the escapes we don't want interpreted and includes '\v'. 1488 (check_escape): Put !JAVASCRIPT around the code for '\l', '\L', '\N', '\u', and '\U', 1489 and added code to handle '\u2013' inside JAVASCRIPT. 1490 (compile_branch): Put !JAVASCRIPT if around all the code implementing the features we 1491 don't want. 1492 (pcre_compile2): Ditto. 1493 1494 * tests/mozilla/expected.html: Updated since js1_2/regexp/special_characters.js now 1495 passes. 1496 14972007-07-18 Darin Adler <darin@apple.com> 1498 1499 Reviewed by Oliver Hunt. 1500 1501 - fix <rdar://problem/5345432> PCRE computes length wrong for expressions such as "[**]" 1502 1503 Test: fast/js/regexp-charclass-crash.html 1504 1505 * pcre/pcre_compile.c: (pcre_compile2): Fix the preflight code that calls 1506 check_posix_syntax to match the actual regular expression compilation code; 1507 before it was missing the check of the first character. 1508 15092007-07-19 Holger Hans Peter Freyther <zecke@selfish.org> 1510 1511 Reviewed by Mark. 1512 1513 Define __BUILDING_GDK when building for Gdk to fix building testkjs on OSX. 1514 1515 * JavaScriptCore.pri: 1516 15172007-07-18 Simon Hausmann <hausmann@kde.org> 1518 1519 * Fix the Qt build, call dftables from the right directory. 1520 1521 Reviewed by Adam Treat. 1522 1523 * pcre/pcre.pri: 1524 15252007-07-18 Simon Hausmann <hausmann@kde.org> 1526 1527 Reviewed by Zack. 1528 1529 Don't call gcc directly when building the dftables tool but use a separate .pro file for the Qt build. 1530 1531 * pcre/dftables.pro: Added. 1532 * pcre/pcre.pri: 1533 15342007-07-17 Cameron Zwarich <cwzwarich@uwaterloo.ca> 1535 1536 Reviewed by Darin, Maciej, and Adam. 1537 1538 Fixes <http://bugs.webkit.org/show_bug.cgi?id=9697>, 1539 the failure of ecma/GlobalObject/15.1.2.2-2.js, 1540 the failure of ecma/LexicalConventions/7.7.3-1.js, 1541 and most of the failures of tests in ecma/TypeConversion/9.3.1-3.js. 1542 1543 Bug 9697: parseInt results may be inaccurate for numbers greater than 2^53 1544 1545 This patch also fixes similar issues in the lexer and UString::toDouble(). 1546 1547 * kjs/function.cpp: 1548 (KJS::parseIntOverflow): 1549 (KJS::parseInt): 1550 * kjs/function.h: 1551 * kjs/lexer.cpp: 1552 (KJS::Lexer::lex): 1553 * kjs/ustring.cpp: 1554 (KJS::UString::toDouble): 1555 * tests/mozilla/expected.html: 1556 15572007-07-16 Sam Weinig <sam@webkit.org> 1558 1559 Reviewed by Oliver. 1560 1561 Turn off -Wshorten-64-to-32 warning for 64-bit builds. 1562 1563 * Configurations/Base.xcconfig: 1564 15652007-07-14 Brady Eidson <beidson@apple.com> 1566 1567 Reviewed by Sam Weinig 1568 1569 Initial check-in for <rdar://problem/3154486> - Supporting FTP directory listings in the browser 1570 1571 * wtf/Platform.h: Add ENABLE_FTPDIR feature to handle building on platforms that don't have the 1572 proper network-layer support 1573 15742007-07-14 Cameron Zwarich <cwzwarich@uwaterloo.ca> 1575 1576 Reviewed by Darin. 1577 1578 Fixes http://bugs.webkit.org/show_bug.cgi?id=13517, 1579 http://bugs.webkit.org/show_bug.cgi?id=14237, and 1580 the failure of test js1_5/Scope/regress-185485.js 1581 1582 Bug 13517: DOM Exception 8 in finance.aol.com sub-page 1583 Bug 14237: Javascript "var" statement interprets initialization in the topmost function scope 1584 1585 * kjs/nodes.cpp: 1586 (VarDeclNode::evaluate): 1587 * tests/mozilla/expected.html: 1588 15892007-07-12 Alexey Proskuryakov <ap@webkit.org> 1590 1591 Reviewed by Mitz. 1592 1593 http://bugs.webkit.org/show_bug.cgi?id=14596 1594 Fix JSC compilation with KJS_VERBOSE. 1595 1596 * kjs/function.cpp: 1597 (KJS::FunctionImp::passInParameters): 1598 15992007-07-11 George Staikos <staikos@kde.org> 1600 1601 Make it compile. 1602 1603 * ForwardingHeaders: Added. 1604 * ForwardingHeaders/JavaScriptCore: Added. 1605 * ForwardingHeaders/JavaScriptCore/APICast.h: Added. 1606 * ForwardingHeaders/JavaScriptCore/JSBase.h: Added. 1607 * ForwardingHeaders/JavaScriptCore/JSContextRef.h: Added. 1608 * ForwardingHeaders/JavaScriptCore/JSLock.h: Added. 1609 * ForwardingHeaders/JavaScriptCore/JSObjectRef.h: Added. 1610 * ForwardingHeaders/JavaScriptCore/JSStringRef.h: Added. 1611 * ForwardingHeaders/JavaScriptCore/JSStringRefCF.h: Added. 1612 * ForwardingHeaders/JavaScriptCore/JSValueRef.h: Added. 1613 * ForwardingHeaders/JavaScriptCore/JavaScriptCore.h: Added. 1614 16152007-07-11 Holger Hans Peter Freyther <zecke@selfish.org> 1616 1617 Reviewed by Darin. 1618 1619 As of http://bugs.webkit.org/show_bug.cgi?id=14527 move the 1620 WebCore/ForwardingHeader/JavaScriptCore to JavaScriptCore 1621 1622 * ForwardingHeaders: Added. 1623 * ForwardingHeaders/JavaScriptCore: Copied from WebCore/ForwardingHeaders/JavaScriptCore. 1624 16252007-07-11 Nikolas Zimmermann <zimmermann@kde.org> 1626 1627 Reviewed by Mark. 1628 1629 Forwardport the hash table fix from CodeGeneratorJS.pm to create_hash_table. 1630 Reran run-jsc-tests, couldn't find any regressions. Suggested by Darin. 1631 1632 * kjs/create_hash_table: 1633 16342007-07-09 Maciej Stachowiak <mjs@apple.com> 1635 1636 Reviewed by Oliver. 1637 1638 - JavaScriptCore part of fix for: <rdar://problem/5295734> Repro crash closing tab/window @ maps.google.com in WTF::HashSet<KJS::RuntimeObjectImp*, WTF::PtrHash<KJS::RuntimeObjectImp*>, WTF::HashTraits<KJS::RuntimeObjectImp*> >::add + 11 1639 1640 * JavaScriptCore.exp: Added needed export. 1641 16422007-07-06 Maciej Stachowiak <mjs@apple.com> 1643 1644 Reviewed by Antti. 1645 1646 - <rdar://problem/5311093> JavaScriptCore fails to build with strict-aliasing warnings 1647 1648 * Configurations/Base.xcconfig: Re-enable -Wstrict-aliasing 1649 * bindings/jni/jni_utility.cpp: 1650 (KJS::Bindings::getJNIEnv): Type-pun via a union instead of a pointer cast. 1651 * wtf/HashMap.h: 1652 (WTF::): Instead of doing type-punned assignments via pointer cast, do one of three things: 1653 (1) assign directly w/o cast if storage type matches real type; (2) assign using cast 1654 via union if type does not need reffing; (3) copy with memcpy and ref/deref manually if type 1655 needs reffing. This is ok peref-wise because memcpy of a constant length gets optomized. 1656 HashTraits are now expected to make ref()/deref() take the storage type, not the true type. 1657 * wtf/HashSet.h: 1658 (WTF::): Same basic idea. 1659 * wtf/HashTable.h: 1660 (WTF::): Added Assigner template for use by HashMap/HashSet. Change RefCounter to call ref() 1661 and deref() via storage type, avoiding the need to 1662 type-pun. 1663 (WTF::RefCounter::ref): ditto 1664 (WTF::RefCounter::deref): ditto 1665 * wtf/HashTraits.h: 1666 (WTF::): Change ref() and deref() for RefPtr HashTraits to take the storage type; cast 1667 via union to pointer type. 1668 * wtf/FastMalloc.cpp: 1669 (WTF::TCMalloc_PageHeap::init): Changed from constructor to init function so this can go in a union. 1670 (WTF::): redefine pageheap macro in terms of getPageHeap(). 1671 (WTF::getPageHeap): new inline function, helper for pageheap macro. This hides the cast in a union. 1672 (WTF::TCMalloc_ThreadCache::InitModule): Call init() instead of using placement new to initialize page 1673 heap. 1674 * wtf/TCPageMap.h: 1675 (TCMalloc_PageMap1::init): Changed from constructor to init function. 1676 (TCMalloc_PageMap2::init): ditto 1677 (TCMalloc_PageMap3::init): ditto 1678 1679 16802007-07-06 George Staikos <staikos@kde.org> 1681 1682 Reviewed by Maciej. 1683 1684 Switch USE(ICONDATABASE) to ENABLE(ICONDATABASE) 1685 1686 * wtf/Platform.h: 1687 16882007-07-03 Sam Weinig <sam@webkit.org> 1689 1690 Reviewed by Darin. 1691 1692 Eleventh round of fixes for implicit 64-32 bit conversion errors. 1693 <rdar://problem/5292262> 1694 1695 - Fixes a real bug where where we were setting long long and unsigned long long 1696 values to a long field. 1697 1698 * bindings/objc/objc_utility.mm: 1699 (KJS::Bindings::convertValueToObjcValue): 1700 17012007-07-03 Sam Weinig <sam@webkit.org> 1702 1703 Reviewed by Brady Eidson. 1704 1705 Tenth round of fixes for implicit 64-32 bit conversion errors. 1706 <rdar://problem/5292262> 1707 1708 - Add explicit casts. 1709 1710 * kjs/dtoa.cpp: 1711 (Bigint::): 1712 17132007-07-02 Sam Weinig <sam@webkit.org> 1714 1715 Reviewed by Kevin McCullough. 1716 1717 Fourth round of fixes for implicit 64-32 bit conversion errors. 1718 <rdar://problem/5292262> 1719 1720 Add custom piDouble and piFloat constants to use instead of M_PI. 1721 1722 * kjs/math_object.cpp: 1723 (MathObjectImp::getValueProperty): 1724 * wtf/MathExtras.h: 1725 (wtf_atan2): 1726 17272007-06-29 Sam Weinig <sam@webkit.org> 1728 1729 Reviewed by Darin. 1730 1731 Second pass at fixing implicit 64-32 bit conversion errors. 1732 <rdar://problem/5292262> 1733 1734 - Add a toFloat() method to JSValue for float conversion. 1735 1736 * JavaScriptCore.exp: 1737 * kjs/value.cpp: 1738 (KJS::JSValue::toFloat): 1739 * kjs/value.h: 1740 17412007-06-27 Kevin McCullough <kmccullough@apple.com> 1742 1743 Reviewed by Darin. 1744 1745 - <rdar://problem/5271937> REGRESSION: Apparent WebKit JavaScript memory smasher when submitting comment to iWeb site (crashes in kjs_pcre_compile2) 1746 - Correctly evaluate the return value of _pcre_ucp_findchar. 1747 1748 * pcre/pcre_compile.c: 1749 (compile_branch): 1750 * pcre/pcre_exec.c: 1751 (match): 1752 17532007-06-27 Sam Weinig <sam@webkit.org> 1754 1755 Reviewed by Darin. 1756 1757 First pass at fixing implicit 64-32 bit conversion errors. 1758 <rdar://problem/5292262> 1759 1760 - Add 'f' suffix where necessary. 1761 1762 * kjs/testkjs.cpp: 1763 (StopWatch::getElapsedMS): 1764 17652007-06-26 Geoffrey Garen <ggaren@apple.com> 1766 1767 Reviewed by Maciej Stachowiak. 1768 1769 Fixed <rdar://problem/5296627> JSGarbageCollect headerdoc suggests that 1770 using JavaScriptCore requires leaking memory 1771 1772 * API/JSBase.h: Changed documentation to explain that you can pass NULL 1773 to JSGarbageCollect. 1774 17752007-06-26 Adam Treat <adam@staikos.net> 1776 1777 Reviewed by Adam Roben. 1778 1779 Make the SQLite icon database optional. 1780 1781 * wtf/Platform.h: 1782 17832007-06-15 George Staikos <staikos@kde.org> 1784 1785 More missing files for Qt. 1786 1787 * JavaScriptCore.pri: 1788 * kjs/testkjs.pro: 1789 17902007-06-15 George Staikos <staikos@kde.org> 1791 1792 Another Qt build fix. 1793 1794 * JavaScriptCore.pri: 1795 * kjs/testkjs.pro: 1796 17972007-06-15 George Staikos <staikos@kde.org> 1798 1799 Fixing Qt build. 1800 1801 * JavaScriptCore.pri: 1802 18032007-06-20 Mark Rowe <mrowe@apple.com> 1804 1805 Reviewed by Mitz. 1806 1807 Fix http://bugs.webkit.org/show_bug.cgi?id=14244 1808 Bug 14244: Data corruption when using a replace() callback function with data containing "$" 1809 1810 * kjs/string_object.cpp: 1811 (KJS::replace): When 'replacement' is a function, do not replace $n placeholders in its return value. 1812 This matches the behaviour described in ECMA 262 3rd Ed section 15.5.4.1, and as implemented in Firefox. 1813 18142007-06-14 Anders Carlsson <andersca@apple.com> 1815 1816 Fix Windows build. 1817 1818 * bindings/runtime_object.cpp: 1819 (RuntimeObjectImp::canPut): 1820 18212007-06-14 Anders Carlsson <andersca@apple.com> 1822 1823 Reviewed by Darin. 1824 1825 <rdar://problem/5103077> 1826 Crash at _NPN_ReleaseObject when quitting page at http://eshop.macsales.com/shop/ModBook 1827 1828 <rdar://problem/5183692> 1829 http://bugs.webkit.org/show_bug.cgi?id=13547 1830 REGRESSION: Crash in _NPN_ReleaseObject when closing Safari on nba.com (13547) 1831 1832 <rdar://problem/5261499> 1833 CrashTracer: [USER] 75 crashes in Safari at com.apple.JavaScriptCore: KJS::Bindings::CInstance::~CInstance + 40 1834 1835 Have the root object track all live instances of RuntimeObjectImp. When invalidating 1836 the root object, also invalidate all live runtime objects by zeroing out their instance ivar. 1837 This prevents instances from outliving their plug-ins which lead to crashes. 1838 1839 * bindings/c/c_utility.cpp: 1840 (KJS::Bindings::convertValueToNPVariant): 1841 * bindings/jni/jni_jsobject.cpp: 1842 (JavaJSObject::convertValueToJObject): 1843 * bindings/jni/jni_utility.cpp: 1844 (KJS::Bindings::convertValueToJValue): 1845 * bindings/objc/objc_runtime.mm: 1846 (ObjcFallbackObjectImp::callAsFunction): 1847 * bindings/runtime_array.cpp: 1848 (RuntimeArray::RuntimeArray): 1849 * bindings/runtime_array.h: 1850 (KJS::RuntimeArray::getConcreteArray): 1851 * bindings/runtime_method.cpp: 1852 (RuntimeMethod::callAsFunction): 1853 * bindings/runtime_method.h: 1854 * bindings/runtime_object.cpp: 1855 (RuntimeObjectImp::RuntimeObjectImp): 1856 (RuntimeObjectImp::~RuntimeObjectImp): 1857 (RuntimeObjectImp::invalidate): 1858 (RuntimeObjectImp::fallbackObjectGetter): 1859 (RuntimeObjectImp::fieldGetter): 1860 (RuntimeObjectImp::methodGetter): 1861 (RuntimeObjectImp::getOwnPropertySlot): 1862 (RuntimeObjectImp::put): 1863 (RuntimeObjectImp::canPut): 1864 (RuntimeObjectImp::defaultValue): 1865 (RuntimeObjectImp::implementsCall): 1866 (RuntimeObjectImp::callAsFunction): 1867 (RuntimeObjectImp::getPropertyNames): 1868 (RuntimeObjectImp::throwInvalidAccessError): 1869 * bindings/runtime_object.h: 1870 * bindings/runtime_root.cpp: 1871 (KJS::Bindings::RootObject::invalidate): 1872 (KJS::Bindings::RootObject::addRuntimeObject): 1873 (KJS::Bindings::RootObject::removeRuntimeObject): 1874 * bindings/runtime_root.h: 1875 18762007-06-14 Anders Carlsson <andersca@apple.com> 1877 1878 Reviewed by Mitz. 1879 1880 <rdar://problem/5244948> 1881 Safari keeps on complaining about slow script playing NBC TV video (14133) 1882 1883 http://bugs.webkit.org/show_bug.cgi?id=14133 1884 Runaway JavaScript timer fires when spinning around in Google Maps street view 1885 1886 Make sure to start and stop the timeout checker around calls to JS. 1887 1888 * bindings/NP_jsobject.cpp: 1889 (_NPN_InvokeDefault): 1890 (_NPN_Invoke): 1891 (_NPN_Evaluate): 1892 * bindings/jni/jni_jsobject.cpp: 1893 (JavaJSObject::call): 1894 (JavaJSObject::eval): 1895 18962007-06-13 Darin Adler <darin@apple.com> 1897 1898 Reviewed by Mark Rowe. 1899 1900 - fix http://bugs.webkit.org/show_bug.cgi?id=14132 1901 array sort with > 10000 elements sets elements > 10000 undefined 1902 1903 Test: fast/js/sort-large-array.html 1904 1905 * kjs/array_instance.h: Replaced pushUndefinedObjectsToEnd with 1906 compactForSorting, and removed ExecState parameters. 1907 1908 * kjs/array_object.cpp: 1909 (ArrayInstance::sort): Changed to call compactForSorting. 1910 (ArrayInstance::compactForSorting): Do the get and delete of the 1911 properties directly on the property map instead of using public 1912 calls from JSObject. The public calls would just read the undefined 1913 values from the compacted sort results array! 1914 19152007-06-13 George Staikos <staikos@kde.org> 1916 1917 Reviewed by Lars. 1918 1919 Fix Mac OS X build after last checkin. 1920 1921 * wtf/FastMalloc.h: 1922 19232007-06-14 Lars Knoll <lars@trolltech.com> 1924 1925 Reviewed by Maciej. 1926 1927 Disable FastMalloc for the Qt build and make sure we 1928 don't reimplement the global new/delete operators 1929 when using the system malloc. 1930 1931 * wtf/FastMalloc.cpp: 1932 * wtf/FastMalloc.h: 1933 * wtf/Platform.h: 1934 19352007-06-13 Anders Carlsson <andersca@apple.com> 1936 1937 Reviewed by Geoff. 1938 1939 Make sure that bindings instances get correct root objects. 1940 1941 * JavaScriptCore.exp: 1942 * bindings/NP_jsobject.cpp: 1943 (listFromVariantArgs): 1944 (_NPN_InvokeDefault): 1945 (_NPN_Invoke): 1946 (_NPN_SetProperty): 1947 * bindings/c/c_instance.cpp: 1948 (KJS::Bindings::CInstance::invokeMethod): 1949 (KJS::Bindings::CInstance::invokeDefaultMethod): 1950 * bindings/c/c_runtime.cpp: 1951 (KJS::Bindings::CField::valueFromInstance): 1952 * bindings/c/c_utility.cpp: 1953 (KJS::Bindings::convertNPVariantToValue): 1954 * bindings/c/c_utility.h: 1955 * bindings/objc/objc_instance.mm: 1956 (ObjcInstance::invokeMethod): 1957 (ObjcInstance::invokeDefaultMethod): 1958 (ObjcInstance::getValueOfUndefinedField): 1959 * bindings/objc/objc_runtime.mm: 1960 (ObjcField::valueFromInstance): 1961 (ObjcArray::valueAt): 1962 * bindings/objc/objc_utility.h: 1963 * bindings/objc/objc_utility.mm: 1964 (KJS::Bindings::convertObjcValueToValue): 1965 * bindings/runtime.h: 1966 19672007-06-13 Simon Hausmann <hausmann@kde.org> 1968 1969 Reviewed by Lars. 1970 1971 * kjs/testkjs.pro: WebKitQt is now called QtWebKit. 1972 19732007-06-12 Anders Carlsson <andersca@apple.com> 1974 1975 Another build fix. 1976 1977 * bindings/qt/qt_instance.cpp: 1978 (KJS::Bindings::QtInstance::invokeMethod): 1979 19802007-06-12 Anders Carlsson <andersca@apple.com> 1981 1982 Reviewed by Geoff. 1983 1984 Move the notion of field type to the JNI runtime since that's the only 1985 one that was actually using it. 1986 1987 * bindings/c/c_runtime.h: 1988 (KJS::Bindings::CField::CField): 1989 * bindings/jni/jni_runtime.h: 1990 * bindings/objc/objc_runtime.h: 1991 * bindings/objc/objc_runtime.mm: 1992 * bindings/qt/qt_runtime.h: 1993 * bindings/runtime.h: 1994 * bindings/runtime_method.cpp: 1995 19962007-06-12 Anders Carlsson <andersca@apple.com> 1997 1998 Build fix. 1999 2000 * bindings/qt/qt_class.cpp: 2001 (KJS::Bindings::QtClass::methodsNamed): 2002 * bindings/qt/qt_instance.cpp: 2003 (KJS::Bindings::QtInstance::invokeMethod): 2004 20052007-06-12 Anders Carlsson <andersca@apple.com> 2006 2007 Reviewed by Oliver. 2008 2009 Get rid of the MethodList class and use a good ol' Vector instead. 2010 2011 * bindings/c/c_class.cpp: 2012 (KJS::Bindings::CClass::methodsNamed): 2013 * bindings/c/c_instance.cpp: 2014 (KJS::Bindings::CInstance::invokeMethod): 2015 * bindings/jni/jni_class.cpp: 2016 (JavaClass::JavaClass): 2017 (JavaClass::~JavaClass): 2018 * bindings/jni/jni_instance.cpp: 2019 (JavaInstance::invokeMethod): 2020 * bindings/objc/objc_class.mm: 2021 (KJS::Bindings::ObjcClass::methodsNamed): 2022 * bindings/objc/objc_instance.mm: 2023 (ObjcInstance::invokeMethod): 2024 * bindings/objc/objc_runtime.mm: 2025 (ObjcFallbackObjectImp::callAsFunction): 2026 * bindings/runtime.cpp: 2027 * bindings/runtime.h: 2028 * bindings/runtime_method.cpp: 2029 (RuntimeMethod::lengthGetter): 2030 (RuntimeMethod::callAsFunction): 2031 * bindings/runtime_object.cpp: 2032 (RuntimeObjectImp::getOwnPropertySlot): 2033 20342007-06-12 Anders Carlsson <andersca@apple.com> 2035 2036 Reviewed by Geoff. 2037 2038 Make RuntimeMethod's method list a pointer so that the object size doesn't 2039 grow beyond 32 bytes when we later will replace MethodList with a Vector. 2040 2041 * bindings/runtime_method.cpp: 2042 (RuntimeMethod::RuntimeMethod): 2043 (RuntimeMethod::lengthGetter): 2044 (RuntimeMethod::callAsFunction): 2045 * bindings/runtime_method.h: 2046 20472007-06-12 Anders Carlsson <andersca@apple.com> 2048 2049 Reviewed by Geoff. 2050 2051 Get rid of the Parameter class. 2052 2053 * bindings/jni/jni_instance.cpp: 2054 (JavaInstance::invokeMethod): 2055 * bindings/jni/jni_runtime.cpp: 2056 (JavaMethod::signature): 2057 * bindings/jni/jni_runtime.h: 2058 (KJS::Bindings::JavaParameter::JavaParameter): 2059 (KJS::Bindings::JavaParameter::~JavaParameter): 2060 (KJS::Bindings::JavaParameter::type): 2061 (KJS::Bindings::JavaMethod::parameterAt): 2062 (KJS::Bindings::JavaMethod::numParameters): 2063 * bindings/runtime.h: 2064 20652007-06-12 Anders Carlsson <andersca@apple.com> 2066 2067 Build fix. 2068 2069 * bindings/qt/qt_class.h: 2070 20712007-06-12 Mark Rowe <mrowe@apple.com> 2072 2073 Build fix. 2074 2075 * bindings/objc/objc_runtime.h: 2076 20772007-06-12 Anders Carlsson <andersca@apple.com> 2078 2079 Reviewed by Geoff. 2080 2081 Get rid of Constructor and its only subclass JavaConstructor. 2082 2083 * bindings/c/c_class.h: 2084 * bindings/jni/jni_class.cpp: 2085 (JavaClass::JavaClass): 2086 (JavaClass::~JavaClass): 2087 * bindings/jni/jni_class.h: 2088 * bindings/jni/jni_runtime.cpp: 2089 * bindings/jni/jni_runtime.h: 2090 * bindings/objc/objc_class.h: 2091 * bindings/runtime.h: 2092 20932007-06-12 Anders Carlsson <andersca@apple.com> 2094 2095 Reviewed by Geoff. 2096 2097 Use RetainPtr throughout the bindings code. 2098 2099 * bindings/objc/objc_class.h: 2100 * bindings/objc/objc_class.mm: 2101 (KJS::Bindings::ObjcClass::ObjcClass): 2102 (KJS::Bindings::ObjcClass::methodsNamed): 2103 (KJS::Bindings::ObjcClass::fieldNamed): 2104 * bindings/objc/objc_instance.h: 2105 (KJS::Bindings::ObjcInstance::getObject): 2106 * bindings/objc/objc_instance.mm: 2107 (ObjcInstance::ObjcInstance): 2108 (ObjcInstance::~ObjcInstance): 2109 (ObjcInstance::implementsCall): 2110 (ObjcInstance::invokeMethod): 2111 (ObjcInstance::invokeDefaultMethod): 2112 (ObjcInstance::defaultValue): 2113 * bindings/objc/objc_runtime.h: 2114 (KJS::Bindings::ObjcMethod::setJavaScriptName): 2115 (KJS::Bindings::ObjcMethod::javaScriptName): 2116 (KJS::Bindings::ObjcArray::getObjcArray): 2117 * bindings/objc/objc_runtime.mm: 2118 (ObjcField::name): 2119 (ObjcArray::ObjcArray): 2120 (ObjcArray::setValueAt): 2121 (ObjcArray::valueAt): 2122 (ObjcArray::getLength): 2123 * wtf/RetainPtr.h: 2124 21252007-06-12 Anders Carlsson <andersca@apple.com> 2126 2127 Reviewed by Maciej. 2128 2129 Have JSCell inherit from Noncopyable. 2130 2131 * bindings/objc/objc_runtime.h: 2132 * bindings/runtime_object.h: 2133 * kjs/value.h: 2134 21352007-06-12 Anders Carlsson <andersca@apple.com> 2136 2137 Reviewed by Darin and Maciej. 2138 2139 More cleanup. Use our Noncopyable WTF class, add a root object member 2140 to the Array class. 2141 2142 * bindings/c/c_class.h: 2143 * bindings/jni/jni_class.h: 2144 * bindings/jni/jni_instance.h: 2145 * bindings/jni/jni_runtime.cpp: 2146 (JavaArray::JavaArray): 2147 * bindings/jni/jni_runtime.h: 2148 * bindings/objc/objc_class.h: 2149 * bindings/objc/objc_runtime.h: 2150 * bindings/objc/objc_runtime.mm: 2151 (ObjcArray::ObjcArray): 2152 * bindings/objc/objc_utility.mm: 2153 (KJS::Bindings::convertObjcValueToValue): 2154 * bindings/runtime.cpp: 2155 (KJS::Bindings::Array::Array): 2156 (KJS::Bindings::Array::~Array): 2157 * bindings/runtime.h: 2158 * bindings/runtime_object.h: 2159 * bindings/runtime_root.h: 2160 21612007-06-08 Zack Rusin <zrusin@trolltech.com> 2162 2163 Fix the Qt build 2164 2165 * bindings/qt/qt_instance.cpp: 2166 (KJS::Bindings::QtInstance::QtInstance): 2167 * bindings/qt/qt_instance.h: 2168 21692007-06-07 Anders Carlsson <andersca@apple.com> 2170 2171 Reviewed by Geoff. 2172 2173 Get rid of Instance::setRootObject and pass the root object to the instance constructor instead. 2174 2175 * bindings/c/c_instance.cpp: 2176 (KJS::Bindings::CInstance::CInstance): 2177 * bindings/c/c_instance.h: 2178 * bindings/jni/jni_instance.cpp: 2179 (JavaInstance::JavaInstance): 2180 * bindings/jni/jni_instance.h: 2181 * bindings/jni/jni_jsobject.cpp: 2182 (JavaJSObject::convertJObjectToValue): 2183 * bindings/objc/objc_instance.h: 2184 * bindings/objc/objc_instance.mm: 2185 (ObjcInstance::ObjcInstance): 2186 * bindings/runtime.cpp: 2187 (KJS::Bindings::Instance::Instance): 2188 (KJS::Bindings::Instance::createBindingForLanguageInstance): 2189 * bindings/runtime.h: 2190 21912007-06-07 Anders Carlsson <andersca@apple.com> 2192 2193 Reviewed by Adam. 2194 2195 Don't use a JavaInstance to store the field when all we want to do is to keep the field 2196 from being garbage collected. Instead, use a JObjectWrapper. 2197 2198 * bindings/jni/jni_instance.h: 2199 * bindings/jni/jni_runtime.cpp: 2200 (JavaField::JavaField): 2201 (JavaField::dispatchValueFromInstance): 2202 (JavaField::dispatchSetValueToInstance): 2203 * bindings/jni/jni_runtime.h: 2204 (KJS::Bindings::JavaField::JavaField): 2205 (KJS::Bindings::JavaField::operator=): 2206 22072007-05-30 Alp Toker <alp.toker@collabora.co.uk> 2208 2209 Reviewed by Brady. 2210 2211 Enable logging in the Gdk port. 2212 http://bugs.webkit.org/show_bug.cgi?id=13936 2213 2214 * wtf/Assertions.cpp: 2215 * wtf/Assertions.h: Add WTFLogVerbose which also logs 2216 the file, line number and function. 2217 22182007-05-30 Mark Rowe <mrowe@apple.com> 2219 2220 Mac build fix. Update #include. 2221 2222 * API/JSCallbackFunction.h: 2223 22242007-05-30 Luciano Montanaro <mikelima@cirulla.net> 2225 2226 Reviewed by Maciej. 2227 2228 - cross-port Harri Porten's commits 636099 and 636108 from KJS: 2229 "publish a class anyway public already" and "class is being used from 2230 outside for quite some time" in preparation for further syncronizations 2231 2232 * kjs/context.h: 2233 * kjs/date_object.cpp: 2234 * kjs/date_object.h: 2235 * kjs/function.h: 2236 (KJS::): 2237 (KJS::InternalFunctionImp::classInfo): 2238 (KJS::InternalFunctionImp::functionName): 2239 * kjs/function_object.h: 2240 * kjs/internal.h: 2241 * kjs/lookup.h: 2242 (KJS::getStaticPropertySlot): 2243 (KJS::getStaticFunctionSlot): 2244 (KJS::getStaticValueSlot): 2245 * kjs/object_object.h: 2246 22472007-05-29 Sam Weinig <sam@webkit.org> 2248 2249 Reviewed by Adam Roben. 2250 2251 Cleanup function and fix to match comparison API. 2252 2253 * kjs/string_object.cpp: 2254 (KJS::substituteBackreferences): 2255 (KJS::localeCompare): 2256 22572007-05-28 Geoffrey Garen <ggaren@apple.com> 2258 2259 Slight clarification to an exception message. 2260 2261 * API/JSCallbackObject.cpp: 2262 (KJS::JSCallbackObject::put): 2263 22642007-05-27 Holger Freyther <zecke@selfish.org> 2265 2266 Reviewed by Mark Rowe. 2267 2268 * wtf/Platform.h: Move Gdk up to allow building WebKit/Gdk on Darwin 2269 22702007-05-27 Darin Adler <darin@apple.com> 2271 2272 - fix a couple ifdefs that said WIN instead of WIN_OS 2273 2274 * kjs/collector.cpp: 2275 (KJS::allocateBlock): WIN -> WIN_OS 2276 (KJS::freeBlock): Ditto. 2277 22782007-05-26 Sam Weinig <sam@webkit.org> 2279 2280 Reviewed by Darin. 2281 2282 Patch for http://bugs.webkit.org/show_bug.cgi?id=13854 2283 Port of commit 667785 from kjs 2284 2285 - special case calling String.localeCompare() with no parameters to return 0. 2286 2287 * kjs/string_object.cpp: 2288 (KJS::StringProtoFunc::callAsFunction): 2289 22902007-05-25 Kimmo Kinnunen <kimmok@iki.fi> 2291 2292 Reviewed by Darin. 2293 2294 - Fix for http://bugs.webkit.org/show_bug.cgi?id=13456 2295 REGRESSION: setTimeout "arguments" object gets shadowed by a local variable 2296 2297 - Add a explicit check for arguments. Previously check was done with getDirect, 2298 but since the arguments is created on-demand in ActivationImp, it doesn't 2299 show up in the test. 'arguments' should always be in the VarDeclNode's 2300 evaluation scope. 2301 2302 * kjs/nodes.cpp: 2303 (VarDeclNode::evaluate): Additional check if the var decl identifier is 'arguments' 2304 23052007-05-25 George Staikos <staikos@kde.org> 2306 2307 Reviewed by Maciej. 2308 2309 - Use COMPILER(GCC), not PLATFORM(GCC) - as Platform.h defines 2310 2311 * wtf/FastMalloc.h: 2312 23132007-05-25 Kimmo Kinnunen <kimmok@iki.fi> 2314 2315 Reviewed by Darin. 2316 2317 - http://bugs.webkit.org/show_bug.cgi?id=13623 (Decompilation of function 2318 doesn't compile with "++(x,y)") 2319 - Create the error node based on the actual node, not the node inside 2320 parenthesis 2321 - Fix applies to postfix, prefix and typeof operators 2322 - Produces run-time ReferenceError like other non-lvalue assignments etc. 2323 2324 * kjs/grammar.y: Create {Prefix,Postfix}ErrorNode based on the actual node, 2325 not the based on the node returned by "nodeInsideAllParens()". Same for 2326 TypeOfValueNode. 2327 23282007-05-25 Simon Hausmann <hausmann@kde.org> 2329 2330 Reviewed by Zack. 2331 2332 Fix crash in Qt JavaScript bindings when the arguments used on the Qt side are not 2333 registered with QMetaType. 2334 2335 * bindings/qt/qt_instance.cpp: 2336 (KJS::Bindings::QtInstance::invokeMethod): 2337 * bindings/qt/qt_runtime.cpp: 2338 23392007-05-24 Luciano Montanaro <mikelima@cirulla.net> 2340 2341 Reviewed by Darin 2342 2343 Patch for http://bugs.webkit.org/show_bug.cgi?id=13855 2344 Port patch 666176 to JavaScriptCore 2345 2346 - Renamed JSValue::downcast() to JSValue::asCell() which makes the 2347 function meaning cleaner. It's modeled after Harri Porten change in 2348 KDE trunk. 2349 2350 * kjs/collector.cpp: 2351 (KJS::Collector::protect): 2352 (KJS::Collector::unprotect): 2353 (KJS::Collector::collectOnMainThreadOnly): 2354 * kjs/object.h: 2355 (KJS::JSValue::isObject): 2356 * kjs/string_object.cpp: 2357 (KJS::StringProtoFunc::callAsFunction): 2358 * kjs/value.h: 2359 (KJS::JSValue::asCell): 2360 (KJS::JSValue::isNumber): 2361 (KJS::JSValue::isString): 2362 (KJS::JSValue::isObject): 2363 (KJS::JSValue::getNumber): 2364 (KJS::JSValue::getString): 2365 (KJS::JSValue::getObject): 2366 (KJS::JSValue::getUInt32): 2367 (KJS::JSValue::mark): 2368 (KJS::JSValue::marked): 2369 (KJS::JSValue::type): 2370 (KJS::JSValue::toPrimitive): 2371 (KJS::JSValue::toBoolean): 2372 (KJS::JSValue::toNumber): 2373 (KJS::JSValue::toString): 2374 (KJS::JSValue::toObject): 2375 23762007-05-18 Holger Hans Peter Freyther <zecke@selfish.org> 2377 2378 Reviewed by Mark Rowe. 2379 2380 * kjs/testkjs.pro: Make the Gdk port link to icu 2381 23822007-05-15 Geoffrey Garen <ggaren@apple.com> 2383 2384 Reviewed by Adele Peterson. 2385 2386 It helps if you swap the right variable. 2387 2388 * wtf/HashSet.h: 2389 (WTF::::operator): 2390 23912007-05-15 Lars Knoll <lars@trolltech.com> 2392 2393 Reviewed by Zack 2394 2395 Extend the QObject JavaScript bindings to work for slots with 2396 arguments. 2397 2398 * bindings/qt/qt_instance.cpp: 2399 (KJS::Bindings::QtInstance::invokeMethod): 2400 24012007-05-14 Kimmo Kinnunen <kimmok@iki.fi> 2402 2403 Reviewed by Darin. 2404 2405 - Fixes http://bugs.webkit.org/show_bug.cgi?id=13622 (Decompiler 2406 omits trailing comma in array literal) 2407 2408 * kjs/nodes2string.cpp: 2409 (ArrayNode::streamTo): print extra ',' in case there was elision 2410 commas (check opt member var) and array elements present 2411 in the array expression 2412 24132007-05-14 Geoffrey Garen <ggaren@apple.com> 2414 2415 Reviewed by Oliver Hunt. 2416 2417 Added HashMap::swap and HashSet::swap. WebCore now uses HashSet::swap. 2418 I figured while I was in the neighborhood I might as well add HashMap::swap, 2419 too. 2420 2421 * wtf/HashMap.h: 2422 (WTF::::operator): 2423 (WTF::::swap): 2424 * wtf/HashSet.h: 2425 (WTF::::operator): 2426 (WTF::::swap): 2427 24282007-05-11 Kimmo Kinnunen <kimmok@iki.fi> 2429 2430 Reviewed by Darin. 2431 2432 - Fix for bug http://bugs.webkit.org/show_bug.cgi?id=13620 2433 Bogus decompilation of "for (var j = 1 in [])" 2434 - ForInNode toString()'ed to syntax error if there was var decl 2435 and initializer 2436 - ForNode toStringed()'ed lost 'var ' if it was present 2437 2438 * kjs/nodes2string.cpp: 2439 (VarDeclListNode::streamTo): Print "var " here 2440 (VarStatementNode::streamTo): Don't print "var " here 2441 (ForNode::streamTo): Remove TODO comment, VarDeclListNode will 2442 stream the "var " 2443 (ForInNode::streamTo): ForIn initializer is printed by VarDeclNode 2444 24452007-05-11 Kimmo Kinnunen <kimmok@iki.fi> 2446 2447 Reviewed by Darin. 2448 2449 - Fixes http://bugs.webkit.org/show_bug.cgi?id=10878 2450 (Incorrect decompilation for "4..x") 2451 - Group numbers in dotted expressions in toString() output, so we 2452 avoid the 4.x constructs when the original input is 4..x. 2453 4..x means the same as 4. .x or (4).x or Number(4).x 2454 2455 * kjs/nodes2string.cpp: 2456 (KJS::SourceStream::): 2457 Add boolean flag to indicate that if next item is a number, it should be grouped. 2458 Add new formatting enum which turns on the boolean flag. 2459 (KJS::SourceStream::SourceStream): Added. Initialize the flag. 2460 (SourceStream::operator<<): Added. New overloaded operator with double value as parameter. 2461 (NumberNode::streamTo): Use the double operator 2462 (ArrayNode::streamTo): 2463 (DotAccessorNode::streamTo): 2464 (FunctionCallDotNode::streamTo): 2465 (FunctionCallParenDotNode::streamTo): 2466 (PostfixDotNode::streamTo): 2467 (DeleteDotNode::streamTo): 2468 (PrefixDotNode::streamTo): 2469 (AssignDotNode::streamTo): Use the new formatting enum to turn on the grouping flag. 2470 24712007-05-10 Lars Knoll <lars@trolltech.com> 2472 2473 Reviewed by Zack 2474 2475 Fix our last three test failures in the JavaScript 2476 tests. 2477 2478 * wtf/unicode/qt4/UnicodeQt4.h: 2479 (WTF::Unicode::toLower): 2480 (WTF::Unicode::toUpper): 2481 24822007-05-08 Geoffrey Garen <ggaren@apple.com> 2483 2484 Reviewed by Darin Adler. 2485 2486 Fixed #includes of JSStringRefCF.h and use of CF datatypes. I think I 2487 misunderstood this issue before. 2488 2489 * API/JavaScriptCore.h: #include JSStringRefCF.h. Platforms that don't 2490 want this behavior can just #include individual headers, instead of the 2491 umbrella framework header. But we definitely want Mac OS X clients to 2492 get the #include of JSStringRefCF.h "for free." 2493 * API/minidom.c: Don't #include JSStringRefCF.h. (Don't need to #include 2494 JavaScriptCore.h, either.) 2495 * API/testapi.c: Don't #include JSStringRefCF.h. Do use CF datatypes 2496 regardless of whether __APPLE__ is defined. Platforms that don't support 2497 CF just shouldn't compile this file. 2498 (main): 2499 25002007-05-09 Eric Seidel <eric@webkit.org> 2501 2502 Reviewed by mjs. 2503 2504 http://bugs.webkit.org/show_bug.cgi?id=6985 2505 Cyclic __proto__ values cause WebKit to hang 2506 2507 * kjs/object.cpp: 2508 (KJS::JSObject::put): do a cycle check before setting __proto__ 2509 25102007-05-08 Kimmo Kinnunen <kimmok@iki.fi> 2511 2512 Reviewed by darin. Landed by eseidel. 2513 2514 - http://bugs.webkit.org/show_bug.cgi?id=10880 (Do..while loop gains 2515 a semicolon each time it is toStringed) 2516 Grammar in Ecma-66262, 12.6: "do Statement while ( Expression );" 2517 EmptyStatement was created after every do..while(expr) which 2518 had semicolon at the end. 2519 2520 * kjs/grammar.y: Require semicolon at the end of do..while 2521 25222007-05-08 Geoffrey Garen <ggaren@apple.com> 2523 2524 Build fix -- this time for sure. 2525 2526 APICast.h, being private, ends up in a different folder than JSValueRef.h, 2527 so we can't include one from the other using "". Instead, just forward 2528 declare the relevant data types. 2529 2530 * API/APICast.h: 2531 25322007-05-08 Geoffrey Garen <ggaren@apple.com> 2533 2534 Build fix: export APICast.h for WebCore and WebKit. 2535 2536 * JavaScriptCore.xcodeproj/project.pbxproj: 2537 25382007-05-04 Darin Adler <darin@apple.com> 2539 2540 Reviewed by Adele. 2541 2542 - fix http://bugs.webkit.org/show_bug.cgi?id=12821 2543 <rdar://problem/5007921> Number.toExponential doesn't work for negative numbers 2544 2545 * kjs/number_object.cpp: (NumberProtoFunc::callAsFunction): 2546 Added a call to fabs before calling log10. 2547 25482007-05-03 Holger Freyther <freyther@kde.org> 2549 2550 Reviewed by Zack, landed by Simon. 2551 This is bugzilla bug 13499. 2552 2553 * JavaScriptCore.pri: Place Qt into the qt-port scope 2554 * bindings/testbindings.pro: Place Qt into the qt-port scope 2555 * kjs/testkjs.pro: Place Qt into the qt-port scope 2556 * pcre/pcre.pri: Place Qt into the qt-port scope 2557 25582007-05-02 David Harrison <harrison@apple.com> 2559 2560 Reviewed by Antti. 2561 2562 <rdar://problem/5174862> Crash resulting from DeprecatedString::insert() 2563 2564 Added insertion support for more than one value. 2565 2566 * wtf/Vector.h: 2567 (WTF::::insert): 2568 Added support for inserting multiple values. 2569 2570 (WTF::::prepend): 2571 New. Insert at the start of vectors. Convenient for vectors used as strings. 2572 25732007-05-01 Jungshik Shin <jungshik.shin@gmail.com> 2574 2575 Reviewed by Alexey. 2576 2577 - get rid of non-ASCII lteral characters : suppress compiler warnings 2578 http://bugs.webkit.org/show_bug.cgi?id=13551 2579 2580 * kjs/testkjs.cpp: 2581 * pcre/pcre_compile.c: 2582 25832007-04-28 Jungshik Shin <jungshik.shin@gmail.com> 2584 2585 Reviewed by Sam Weinig. 2586 2587 - Replace copyright sign in Latin-1 (0xA9) with '(C)' 2588 http://bugs.webkit.org/show_bug.cgi?id=13531 2589 2590 * bindings/npruntime.h: 2591 25922007-04-28 Darin Adler <darin@apple.com> 2593 2594 Reviewed by Maciej. 2595 2596 - fix <rdar://problem/5154144> Hamachi test fails: assertion failure in ListHashSet 2597 2598 Test: fast/forms/add-remove-form-elements-stress-test.html 2599 2600 * wtf/ListHashSet.h: 2601 (WTF::ListHashSetNodeAllocator::ListHashSetNodeAllocator): Initialize 2602 m_isDoneWithInitialFreeList to false. 2603 (WTF::ListHashSetNodeAllocator::allocate): Added assertions based on a debug-only 2604 m_isAllocated flag that make sure we don't allocate a block that's already allocated. 2605 These assertions helped pinpoint the bug. Set m_isDoneWithInitialFreeList when we 2606 allocate the last block of the initial free list. Once we're done with the initial 2607 free list, turn off the rule that says that the next node in the pool after the last 2608 node in the free list is also free. This rule works because any free nodes are added 2609 to the head of the free list, so a node that hasn't been allocated even once is always 2610 at the tail of the free list and all the nodes after it also haven't been allocated 2611 even once. But it doesn't work any longer once the entire pool has been used at least 2612 once, because there's nothing special about the last node on the free list any more. 2613 (WTF::ListHashSetNodeAllocator::deallocate): Set the node's m_isAllocated to false. 2614 (WTF::ListHashSetNodeAllocator::pastPool): Added. Used above. 2615 (WTF::ListHashSetNodeAllocator::inPool): Changed to use the pastPool function. 2616 (WTF::ListHashSetNode::ListHashSetNode): Initialize m_isAllocated to true. 2617 (WTF::ListHashSetNode::operator new): Removed variable name for unused size 2618 parameter. 2619 (WTF::ListHashSetNode::destroy): Changed to call the destructor rather than 2620 delete -- this gets rid of the need to define an operator delete. 2621 26222007-04-27 Christopher Brichford <chrisb@adobe.com> 2623 2624 Reviewed by Timothy Hatcher. 2625 2626 Fix for: Bug 13211: Move JavaScriptCore mac project files for apollo port 2627 http://bugs.webkit.org/show_bug.cgi?id=13211 2628 2629 * JavaScriptCore.apolloproj/mac/JavaScriptCore.Debug.xcconfig: Added. 2630 * JavaScriptCore.apolloproj/mac/JavaScriptCore.Release.xcconfig: Added. 2631 * JavaScriptCore.apolloproj/mac/JavaScriptCore.xcconfig: Added. 2632 * JavaScriptCore.apolloproj/mac/JavaScriptCore.xcodeproj/project.pbxproj: Added. 2633 * JavaScriptCore.apolloproj/mac/JavaScriptCore/JavaScriptCore.Debug.xcconfig: Removed. 2634 * JavaScriptCore.apolloproj/mac/JavaScriptCore/JavaScriptCore.Release.xcconfig: Removed. 2635 * JavaScriptCore.apolloproj/mac/JavaScriptCore/JavaScriptCore.xcconfig: Removed. 2636 * JavaScriptCore.apolloproj/mac/JavaScriptCore/JavaScriptCore.xcodeproj/project.pbxproj: Removed. 2637 26382007-04-27 Holger Freyther <freyther@kde.org> 2639 2640 Reviewed by Maciej. 2641 2642 Remove unmaintained CMake build system. 2643 2644 * CMakeLists.txt: Removed. 2645 * pcre/CMakeLists.txt: Removed. 2646 26472007-04-27 Mark Rowe <mrowe@apple.com> 2648 2649 Reviewed by Oliver. 2650 2651 * JavaScriptCore.xcodeproj/project.pbxproj: Improve dependencies in Xcode project 2652 by marking dftables as a dependency of Generate Derived Sources rather than of 2653 JavaScriptCore itself. 2654 26552007-04-26 Geoffrey Garen <ggaren@apple.com> 2656 2657 Build fix -- added #includes that we used to get implicitly through 2658 JSStringRef.h. 2659 2660 * API/JSNode.c: 2661 * API/JSNodeList.c: 2662 * API/minidom.c: 2663 * API/testapi.c: 2664 26652007-04-26 Geoffrey Garen <ggaren@apple.com> 2666 2667 Reviewed by Maciej Stachowiak, Adam Roben. 2668 2669 Fixed 2670 <rdar://problem/4885130> Remove #include of JSStringRefCF.h from JSStringRef.h 2671 <rdar://problem/4885123> JavaScriptCore is not cross-platform -- JSStringRef.h references CF datatypes 2672 2673 * API/JSStringRef.h: Removed #include -- no clients need it anymore. 2674 26752007-04-25 David Kilzer <ddkilzer@apple.com> 2676 2677 Reviewed by Maciej. 2678 2679 Add assertions for debug builds. 2680 2681 * kjs/JSLock.cpp: 2682 (KJS::JSLock::lock): Assert the return value of pthread_mutex_lock() in debug builds. 2683 (KJS::JSLock::unlock): Assert the return value of pthread_mutex_unlock() in debug builds. 2684 26852007-04-25 Maciej Stachowiak <mjs@apple.com> 2686 2687 Reviewed by Anders. 2688 2689 - fix build problems 2690 2691 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: Disable warning that 2692 gives often downright incorrect results based on guessing what will happen in 64-bit. 2693 26942007-04-25 Darin Adler <darin@apple.com> 2695 2696 Reviewed by Geoff. 2697 2698 - tweak the allocator for a small speedup -- Shark showed this was a win, but I can't 2699 measure an improvement right now, but it's also clear these changes do no harm 2700 2701 * wtf/FastMalloc.cpp: 2702 (WTF::LgFloor): Use ALWAYS_INLINE here; in testing I did a while back this was necessary 2703 to get this single-instruction function to be inlined. 2704 (WTF::SizeClass): Use ALWAYS_INLINE here too for the same reason. Also change the special 2705 case for a size of 0 to work without a branch for a bit of extra speed. 2706 (WTF::ByteSizeForClass): Use ALWAYS_INLINE here too for the same reason. 2707 27082007-04-24 Maciej Stachowiak <mjs@apple.com> 2709 2710 Reviewed by Oliver. 2711 2712 - use custom calling convention for everything in nodes.cpp on intel gcc for 1.5% speed boost 2713 2714 Nearly all functions in nodes.cpp were marked up to use the 2715 regparm(3) calling convention under GCC for x86, since this is 2716 faster and they are all guaranteed to be called only internally to 2717 kjs. 2718 2719 The only exception is destructors, since delete doesn't know how to use a custom calling convention. 2720 2721 * kjs/nodes.cpp: 2722 (dotExprDoesNotAllowCallsString): 2723 * kjs/nodes.h: 2724 (KJS::Node::): 2725 (KJS::StatementNode::): 2726 (KJS::NullNode::): 2727 (KJS::BooleanNode::): 2728 (KJS::NumberNode::): 2729 (KJS::StringNode::): 2730 (KJS::RegExpNode::): 2731 (KJS::ThisNode::): 2732 (KJS::ResolveNode::): 2733 (KJS::GroupNode::): 2734 (KJS::ElementNode::): 2735 (KJS::ArrayNode::): 2736 (KJS::PropertyNameNode::): 2737 (KJS::PropertyNode::): 2738 (KJS::PropertyListNode::): 2739 (KJS::ObjectLiteralNode::): 2740 (KJS::BracketAccessorNode::): 2741 (KJS::DotAccessorNode::): 2742 (KJS::ArgumentListNode::): 2743 (KJS::ArgumentsNode::): 2744 (KJS::NewExprNode::): 2745 (KJS::FunctionCallValueNode::): 2746 (KJS::FunctionCallResolveNode::): 2747 (KJS::FunctionCallBracketNode::): 2748 (KJS::FunctionCallParenBracketNode::): 2749 (KJS::FunctionCallDotNode::): 2750 (KJS::FunctionCallParenDotNode::): 2751 (KJS::PostfixResolveNode::): 2752 (KJS::PostfixBracketNode::): 2753 (KJS::PostfixDotNode::): 2754 (KJS::PostfixErrorNode::): 2755 (KJS::DeleteResolveNode::): 2756 (KJS::DeleteBracketNode::): 2757 (KJS::DeleteDotNode::): 2758 (KJS::DeleteValueNode::): 2759 (KJS::VoidNode::): 2760 (KJS::TypeOfResolveNode::): 2761 (KJS::TypeOfValueNode::): 2762 (KJS::PrefixResolveNode::): 2763 (KJS::PrefixBracketNode::): 2764 (KJS::PrefixDotNode::): 2765 (KJS::PrefixErrorNode::): 2766 (KJS::UnaryPlusNode::): 2767 (KJS::NegateNode::): 2768 (KJS::BitwiseNotNode::): 2769 (KJS::LogicalNotNode::): 2770 (KJS::MultNode::): 2771 (KJS::AddNode::): 2772 (KJS::ShiftNode::): 2773 (KJS::RelationalNode::): 2774 (KJS::EqualNode::): 2775 (KJS::BitOperNode::): 2776 (KJS::BinaryLogicalNode::): 2777 (KJS::ConditionalNode::): 2778 (KJS::AssignResolveNode::): 2779 (KJS::AssignBracketNode::): 2780 (KJS::AssignDotNode::): 2781 (KJS::AssignErrorNode::): 2782 (KJS::CommaNode::): 2783 (KJS::AssignExprNode::): 2784 (KJS::VarDeclListNode::): 2785 (KJS::VarStatementNode::): 2786 (KJS::EmptyStatementNode::): 2787 (KJS::ExprStatementNode::): 2788 (KJS::IfNode::): 2789 (KJS::DoWhileNode::): 2790 (KJS::WhileNode::): 2791 (KJS::ForNode::): 2792 (KJS::ContinueNode::): 2793 (KJS::BreakNode::): 2794 (KJS::ReturnNode::): 2795 (KJS::WithNode::): 2796 (KJS::LabelNode::): 2797 (KJS::ThrowNode::): 2798 (KJS::TryNode::): 2799 (KJS::ParameterNode::): 2800 (KJS::Parameter::): 2801 (KJS::FunctionBodyNode::): 2802 (KJS::FuncExprNode::): 2803 (KJS::FuncDeclNode::): 2804 (KJS::SourceElementsNode::): 2805 (KJS::CaseClauseNode::): 2806 (KJS::ClauseListNode::): 2807 (KJS::SwitchNode::): 2808 28092007-04-24 Oliver Hunt <oliver@apple.com> 2810 2811 GTK Build fix, ::findEntry->KJS::findEntry 2812 2813 * kjs/lookup.cpp: 2814 (KJS::Lookup::findEntry): 2815 (KJS::Lookup::find): 2816 28172007-04-23 Maciej Stachowiak <mjs@apple.com> 2818 2819 Reviewed by Geoff. 2820 2821 - compile most of JavaScriptCore as one file for 4% JS iBench speed improvement 2822 2823 * JavaScriptCore.xcodeproj/project.pbxproj: Add AllInOneFile.cpp, and remove files it includes 2824 from the build. 2825 * kjs/AllInOneFile.cpp: Added. 2826 * kjs/dtoa.cpp: Renamed CONST to CONST_ to avoid conflict. 2827 (Bigint::): 2828 (Bigint::nrv_alloc): 2829 * kjs/lookup.cpp: Use "namspace KJS { ... }" instead of "using namespace KJS;" 2830 28312007-04-23 Maciej Stachowiak <mjs@apple.com> 2832 2833 Build fix, not reviewed. 2834 2835 * kjs/collector.h: Fix struct/class mismatch. 2836 28372007-04-23 Maciej Stachowiak <mjs@apple.com> 2838 2839 Reviewed by Darin. 2840 2841 - raise ALLOCATIONS_PER_COLLECTION to 4000, for 3.7% iBench speed improvement 2842 2843 Now that the cell size is smaller and the block size is bigger, we can fit 4000 objects in 2844 the two spare cells the collector is willing to keep around, so collect a bit less often. 2845 2846 * kjs/collector.cpp: 2847 28482007-04-23 Maciej Stachowiak <mjs@apple.com> 2849 2850 Reviewed by Darin and Geoff. 2851 2852 - move mark and collectOnMainThreadOnly bits into separate bitmaps 2853 2854 This saves 4 bytes per cell, allowing shrink of cell size to 32, 2855 which leads to a .8% speed improvement on iBench. 2856 2857 This is only feasible because of all the previous changes on the branch. 2858 2859 * kjs/collector.cpp: 2860 (KJS::allocateBlock): Adjust for some renames of constants. 2861 (KJS::Collector::markStackObjectsConservatively): Now that cells are 32 bytes (64 2862 bytes on 64-bit) the cell alignment check can be made much more strict, and also 2863 obsoletes the need for a % sizeof(CollectorCell) check. Also, we can mask off the low 2864 bits of the pointer to have a potential block pointer to look for. 2865 (KJS::Collector::collectOnMainThreadOnly): Use bitmap. 2866 (KJS::Collector::markMainThreadOnlyObjects): Use bitmap. 2867 (KJS::Collector::collect): When sweeping, use bitmaps directly to find mark bits. 2868 * kjs/collector.h: 2869 (KJS::): Move needed constants and type declarations here. 2870 (KJS::CollectorBitmap::get): Bit twiddling to get a bitmap value. 2871 (KJS::CollectorBitmap::set): Bit twiddling to set a bitmap bit to true. 2872 (KJS::CollectorBitmap::clear): Bit twiddling to set a bitmap bit to false. 2873 (KJS::CollectorBitmap::clearAll): Clear whole bitmap at one go. 2874 (KJS::Collector::cellBlock): New operation, compute the block pointer for 2875 a cell by masking off low bits. 2876 (KJS::Collector::cellOffset): New operation, compute the cell offset for a 2877 cell by masking off high bits and dividing (actually a shift). 2878 (KJS::Collector::isCellMarked): Check mark bit in bitmap 2879 (KJS::Collector::markCell): Set mark bit in bitmap. 2880 * kjs/value.h: 2881 (KJS::JSCell::JSCell): No more bits. 2882 (KJS::JSCell::marked): Let collector handle it. 2883 (KJS::JSCell::mark): Let collector handle it. 2884 28852007-04-23 Anders Carlsson <andersca@apple.com> 2886 2887 Build fix. 2888 2889 * kjs/regexp_object.h: 2890 RegExpObjectImpPrivate is a struct, not a class. 2891 28922007-04-23 Maciej Stachowiak <mjs@apple.com> 2893 2894 Reviewed by Darin. 2895 2896 - shrink FunctionImp / DeclaredFunctionImp by 4 bytes, by moving parameter list to function body 2897 2898 I reconciled this with a similar change in KDE kjs by Maks Orlovich <maksim@kde.org>. 2899 2900 * kjs/function.cpp: 2901 (KJS::FunctionImp::callAsFunction): 2902 (KJS::FunctionImp::passInParameters): 2903 (KJS::FunctionImp::lengthGetter): 2904 (KJS::FunctionImp::getParameterName): 2905 * kjs/function.h: 2906 * kjs/function_object.cpp: 2907 (FunctionProtoFunc::callAsFunction): 2908 (FunctionObjectImp::construct): 2909 * kjs/nodes.cpp: 2910 (FunctionBodyNode::addParam): 2911 (FunctionBodyNode::paramString): 2912 (FuncDeclNode::addParams): 2913 (FuncDeclNode::processFuncDecl): 2914 (FuncExprNode::addParams): 2915 (FuncExprNode::evaluate): 2916 * kjs/nodes.h: 2917 (KJS::Parameter::Parameter): 2918 (KJS::FunctionBodyNode::numParams): 2919 (KJS::FunctionBodyNode::paramName): 2920 (KJS::FunctionBodyNode::parameters): 2921 (KJS::FuncExprNode::FuncExprNode): 2922 (KJS::FuncDeclNode::FuncDeclNode): 2923 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: Disable 64-bit warnings because 2924 they handle size_t badly. 2925 29262007-04-23 Maciej Stachowiak <mjs@apple.com> 2927 2928 Reviewed by Darin. 2929 2930 - shrink RegexpObjectImp by 4 bytes 2931 2932 Somewhat inexplicably, this seems to be a .33% speedup on JS iBench. 2933 2934 * kjs/regexp_object.cpp: 2935 (KJS::RegExpObjectImpPrivate::RegExpObjectImpPrivate): 2936 (RegExpObjectImp::RegExpObjectImp): 2937 (RegExpObjectImp::performMatch): 2938 (RegExpObjectImp::arrayOfMatches): 2939 (RegExpObjectImp::getBackref): 2940 (RegExpObjectImp::getLastMatch): 2941 (RegExpObjectImp::getLastParen): 2942 (RegExpObjectImp::getLeftContext): 2943 (RegExpObjectImp::getRightContext): 2944 (RegExpObjectImp::getValueProperty): 2945 (RegExpObjectImp::putValueProperty): 2946 * kjs/regexp_object.h: 2947 29482007-04-23 Maciej Stachowiak <mjs@apple.com> 2949 2950 Reviewed by Oliver. 2951 2952 - change to 1-bit bitfields instead of 8-bit, this turns out to lead to a .51% speedup on JS iBench 2953 2954 The 1-bit bitfields are actually faster than just plain bools, at least on Intel (go figure). 2955 2956 * kjs/property_map.h: 2957 29582007-04-23 Maciej Stachowiak <mjs@apple.com> 2959 2960 Reviewed by Darin. 2961 2962 - shrink ArrayInstance objects by 4 bytes 2963 http://bugs.webkit.org/show_bug.cgi?id=13386 2964 2965 I did this by storing the capacity before the beginning of the storage array. It turns out 2966 it is rarely needed and is by definition 0 when the storage array is null. 2967 2968 * kjs/array_instance.h: 2969 (KJS::ArrayInstance::capacity): Get it from the secret stash 2970 * kjs/array_object.cpp: 2971 (allocateStorage): New function to encapsulate allocating the storage with extra space ahead 2972 for the capacity. 2973 (reallocateStorage): ditto for realloc 2974 (ArrayInstance::ArrayInstance): 2975 (ArrayInstance::~ArrayInstance): 2976 (ArrayInstance::resizeStorage): 2977 29782007-04-23 Darin Adler <darin@apple.com> 2979 2980 Reviewed by Maciej. 2981 2982 - fix <rdar://problem/4840688> REGRESSION (r10588, r10621): JavaScript won't parse 2983 modifications of non-references (breaks 300themovie.warnerbros.com, fedex.com) 2984 2985 Despite the ECMAScript specification's claim that you can treat these as syntax 2986 errors, doing so creates some website incompatibilities. So this patch turns them back 2987 into evaluation errors instead. 2988 2989 Test: fast/js/modify-non-references.html 2990 2991 * kjs/grammar.y: Change makeAssignNode, makePrefixNode, and makePostfixNode so that they 2992 never fail to parse. Update rules that use them. Fix a little bit of indenting. Use 2993 new PostfixErrorNode, PrefixErrorNode, and AssignErrorNode classes. 2994 2995 * kjs/nodes.h: Added an overload of throwError that takes a char* argument. 2996 Replaced setExceptionDetailsIfNeeded and debugExceptionIfNeeded with handleException, 2997 which does both. Added PostfixErrorNode, PrefixErrorNode, and AssignErrorNode classes. 2998 2999 * kjs/nodes.cpp: Changed exception macros to use handleException; simpler and smaller 3000 code size than the two functions that we used before. 3001 (Node::throwError): Added the overload mentioned above. 3002 (Node::handleException): Added. Contains the code from both setExceptionDetailsIfNeeded 3003 and debugExceptionIfNeeded. 3004 (PostfixErrorNode::evaluate): Added. Throws an exception. 3005 (PrefixErrorNode::evaluate): Ditto. 3006 (AssignErrorNode::evaluate): Ditto. 3007 (ThrowNode::execute): Call handleException instead of debugExceptionIfNeeded; this 3008 effectively adds a call to setExceptionDetailsIfNeeded, which may help with getting 3009 the correct file and line number for these exceptions. 3010 3011 * kjs/nodes2string.cpp: 3012 (PostfixErrorNode::streamTo): Added. 3013 (PrefixErrorNode::streamTo): Added. 3014 (AssignErrorNode::streamTo): Added. 3015 30162007-04-23 Maciej Stachowiak <mjs@apple.com> 3017 3018 Reviewed by Darin. 3019 3020 - fix test failures / crashes on PPC 3021 3022 * kjs/property_map.h: Make the bool fields explicitly 8-bit bitfields, since bool is a full 3023 word there otherwise :-( 3024 30252007-04-23 Maciej Stachowiak <mjs@apple.com> 3026 3027 Reviewed by Darin. 3028 3029 - fix more test case failures 3030 3031 * bindings/runtime_array.cpp: 3032 (RuntimeArray::RuntimeArray): inherit from JSObject instead of ArrayInstance; it turns 3033 out that this class only needs the prototype and classInfo from ArrayInstance, not the 3034 actual class itself, and it was too big otherwise. 3035 (RuntimeArray::getOwnPropertySlot): 3036 * bindings/runtime_array.h: 3037 30382007-04-23 Maciej Stachowiak <mjs@apple.com> 3039 3040 Reviewed by Darin. 3041 3042 - fix some test failures 3043 3044 * bindings/runtime_method.cpp: 3045 (RuntimeMethod::RuntimeMethod): inherit from InternalFunctionImp instead of FunctionImpl, 3046 otherwise this is too big 3047 (RuntimeMethod::getOwnPropertySlot): 3048 * bindings/runtime_method.h: 3049 30502007-04-22 Maciej Stachowiak <mjs@apple.com> 3051 3052 Reviewed by Darin. 3053 3054 - discard the arguments List for an ActivationImp when the corresponding Context is destroyed (1.7% speedup) 3055 http://bugs.webkit.org/show_bug.cgi?id=13385 3056 3057 Based an idea by Christopher E. Hyde <C.Hyde@parableuk.force9.co.uk>. His patch to do 3058 this also had many other List changes and I found this much simpler subset of the changes 3059 was actually a hair faster. 3060 3061 This optimization is valid because the arguments list is only kept around to 3062 lazily make the arguments object. If it's not made by the time the function 3063 exits, it never will be, since any function that captures the continuation will 3064 have its own local arguments variable in scope. 3065 3066 Besides the 1.7% speed improvement, it shrinks List by 4 bytes 3067 (which in turn shrinks ActivationImp by 4 bytes). 3068 3069 * kjs/Context.cpp: 3070 (KJS::Context::~Context): Clear the activation's arguments list. 3071 * kjs/function.cpp: 3072 (KJS::ActivationImp::ActivationImp): Adjusted for list changes. 3073 (KJS::ActivationImp::mark): No need to mark, lists are always protected (this doesn't 3074 cause a ref-cycle for reasons stated above). 3075 (KJS::ActivationImp::createArgumentsObject): Clear arguments list. 3076 * kjs/function.h: 3077 * kjs/list.cpp: 3078 (KJS::List::List): No more needsMarking boolean 3079 (KJS::List::operator=): ditto 3080 * kjs/list.h: 3081 (KJS::List::List): ditto 3082 (KJS::List::reset): ditto 3083 (KJS::List::deref): ditto 3084 30852007-04-22 Maciej Stachowiak <mjs@apple.com> 3086 3087 Reviewed by Darin. 3088 3089 - shrink PropertyMap by 8 bytes and therefore shrink CELL_SIZE to 40 (for 32-bit; 3090 similar shrinkage for 64-bit) 3091 http://bugs.webkit.org/show_bug.cgi?id=13384 3092 3093 Inspired by similar changes by Christopher E. Hyde <C.Hyde@parableuk.force9.co.uk> 3094 done in the kjs-tweaks branch of KDE's kjs. However, this version is somewhat 3095 cleaner style-wise and avoids some of the negative speed impact (at least on gcc/x86) 3096 of his version. 3097 3098 This is nearly a wash performance-wise, maybe a slight slowdown, but worth doing 3099 to eventually reach cell size 32. 3100 3101 * kjs/collector.cpp: 3102 (KJS::): 3103 * kjs/property_map.cpp: 3104 (KJS::PropertyMap::~PropertyMap): 3105 (KJS::PropertyMap::clear): 3106 (KJS::PropertyMap::get): 3107 (KJS::PropertyMap::getLocation): 3108 (KJS::PropertyMap::put): 3109 (KJS::PropertyMap::insert): 3110 (KJS::PropertyMap::expand): 3111 (KJS::PropertyMap::rehash): 3112 (KJS::PropertyMap::remove): 3113 (KJS::PropertyMap::mark): 3114 (KJS::PropertyMap::containsGettersOrSetters): 3115 (KJS::PropertyMap::getEnumerablePropertyNames): 3116 (KJS::PropertyMap::getSparseArrayPropertyNames): 3117 (KJS::PropertyMap::save): 3118 (KJS::PropertyMap::checkConsistency): 3119 * kjs/property_map.h: 3120 (KJS::PropertyMap::hasGetterSetterProperties): 3121 (KJS::PropertyMap::setHasGetterSetterProperties): 3122 (KJS::PropertyMap::): 3123 (KJS::PropertyMap::PropertyMap): 3124 31252007-04-22 Maciej Stachowiak <mjs@apple.com> 3126 3127 Reviewed by Darin. 3128 3129 - change blocks to 64k in size, and use various platform-specific calls to allocate at 64k-aligned addresses 3130 http://bugs.webkit.org/show_bug.cgi?id=13383 3131 3132 * kjs/collector.cpp: 3133 (KJS::allocateBlock): New function to allocate 64k of 64k-aligned memory 3134 (KJS::freeBlock): Corresponding free 3135 (KJS::Collector::allocate): 3136 (KJS::Collector::collect): 3137 31382007-04-22 Maciej Stachowiak <mjs@apple.com> 3139 3140 Reviewed by Darin and Geoff. 3141 3142 - remove the concept of oversize objects, now that there aren't any (for now 3143 only enforced with an assert). 3144 http://bugs.webkit.org/show_bug.cgi?id=13382 3145 3146 This change is a .66% speedup on JS iBench for 32-bit platforms, probably much more 3147 for 64-bit since it finally gives a reasonable cell size, but I did not test that. 3148 3149 * kjs/collector.cpp: 3150 (KJS::): Use different cell size for 32-bit and 64-bit, now that there is no 3151 oversize allocation. 3152 (KJS::Collector::allocate): Remove oversize allocator. 3153 (KJS::Collector::markStackObjectsConservatively): Don't check oversize objects. 3154 (KJS::Collector::markMainThreadOnlyObjects): Ditto. 3155 (KJS::Collector::collect): Ditto. 3156 31572007-04-21 Mitz Pettel <mitz@webkit.org> 3158 3159 Reviewed by Adam. 3160 3161 - fix http://bugs.webkit.org/show_bug.cgi?id=13428 3162 REGRESSION (r20973-r20976): Failing ecma/Array/15.4.4.5-3.js 3163 3164 - fix http://bugs.webkit.org/show_bug.cgi?id=13429 3165 REGRESSION (r20973-r20976): Crashing in fast/dom/plugin-attributes-enumeration.html 3166 3167 * kjs/array_object.cpp: 3168 (ArrayInstance::sort): Free the old storage, not the new one. 3169 31702007-04-20 Maciej Stachowiak <mjs@apple.com> 3171 3172 Not reviewed, build fix. 3173 3174 - fix build problem with last change - -O3 complains more about uninitialized variables 3175 3176 * pcre/pcre_compile.c: 3177 (compile_branch): 3178 (pcre_compile2): 3179 31802007-04-20 Maciej Stachowiak <mjs@apple.com> 3181 3182 Reviewed by Darin. 3183 3184 - <rdar://problem/5149915> use mergesort when possible, since it leads to fewer compares (2% JS iBench speedup) 3185 3186 * kjs/array_object.cpp: 3187 (ArrayInstance::sort): Use mergesort(3) on platforms that have it, since it tends 3188 to do fewer compares than qsort; but avoid it very on large arrays since it uses extra 3189 memory. Also added comments identifying possibly even better sorting algorithms 3190 for sort by string value and sort by compare function. 3191 * kjs/config.h: 3192 31932007-04-20 Maciej Stachowiak <mjs@apple.com> 3194 3195 Reviewed by Darin. 3196 3197 - bump optimization flags up to -O3 for 1% JS iBench speed improvement 3198 3199 * Configurations/Base.xcconfig: 3200 32012007-04-20 Mark Rowe <mrowe@apple.com> 3202 3203 Reviewed by Maciej. 3204 3205 Fix bogus optimisation in the generic pthread code path. 3206 3207 * kjs/collector.cpp: 3208 (KJS::currentThreadStackBase): 3209 32102007-04-20 Mark Rowe <mrowe@apple.com> 3211 3212 Reviewed by Anders. 3213 3214 Improve FreeBSD compatibility, as suggested by Alexander Botero-Lowry. 3215 3216 * kjs/collector.cpp: 3217 (KJS::currentThreadStackBase): FreeBSD requires that pthread_attr_t's are 3218 initialized via pthread_attr_init before being used in any context. 3219 32202007-04-19 Mark Rowe <mrowe@apple.com> 3221 3222 Reviewed by Darin. 3223 3224 Fix http://bugs.webkit.org/show_bug.cgi?id=13401 3225 Bug 13401: Reproducible crash calling myArray.sort(compareFn) from within 3226 a sort comparison function 3227 3228 * kjs/array_object.cpp: 3229 (ArrayInstance::sort): Save/restore the static variables around calls to qsort 3230 to ensure nested calls to ArrayInstance::sort behave correctly. 3231 32322007-04-12 Deneb Meketa <dmeketa@adobe.com> 3233 3234 Reviewed by Darin Adler. 3235 3236 http://bugs.webkit.org/show_bug.cgi?id=13029 3237 rdar://problem/4994849 3238 Bug 13029: Permit NPAPI plug-ins to see HTTP response headers. 3239 This doesn't actually change JavaScriptCore, but that's where npapi.h is. 3240 3241 * bindings/npapi.h: 3242 Add headers member to NPStream struct. Also increase NP_VERSION_MINOR to 18. 3243 Increasing to >= 17 allows plug-ins to safely detect whether to look for 3244 NPStream::headers. Increasing from 17 to 18 reflects presence of NPObject 3245 enumeration, which was added in a prior patch, and which has been agreed to 3246 constitute version 18 by the plugin-futures list. Also add other missing 3247 bits of npapi.h to catch up from 14 to 18. This includes features that are 3248 not implemented in WebKit, but those are safely stubbed. 3249 32502007-04-10 Geoffrey Garen <ggaren@apple.com> 3251 3252 Reviewed by Mark Rowe. 3253 3254 Fixed last check-in to print in release builds, too. 3255 3256 * kjs/collector.cpp: 3257 (KJS::getPlatformThreadRegisters): 3258 32592007-04-10 Geoffrey Garen <ggaren@apple.com> 3260 3261 Reviewed by John Sullivan, Darin Adler. 3262 3263 Fixed <rdar://problem/5121899> JavaScript garbage collection leads to 3264 later crash under Rosetta (should abort or leak instead?) 3265 3266 Log an error message and crash if the kernel reports failure during GC. 3267 We decided to do this instead of just leaking because we don't want people 3268 to get the mistaken impression that running in Rosetta is a supported 3269 configurtion. 3270 3271 The CRASH macro will also hook into CrashReporter, which will tell us if 3272 many (any?) users run into this issue. 3273 3274 * kjs/collector.cpp: 3275 (KJS::getPlatformThreadRegisters): 3276 32772007-04-06 Krzysztof Kowalczyk <kkowalczyk@gmail.com> 3278 3279 Reviewed by darin. 3280 3281 Coverity fix. Coverity says: 3282 "Event var_deref_model: Variable "sourceRanges" tracked as NULL was passed to a 3283 function that dereferences it" 3284 3285 * kjs/string_object.cpp: 3286 (KJS::replace): 3287 32882007-04-06 Geoffrey Garen <ggaren@apple.com> 3289 3290 Rubber stamped by Adele Peterson. 3291 3292 * kjs/ExecState.h: Removed obsolete forward/friend declaration of 3293 RuntimeMethodImp. 3294 32952007-04-05 Krzysztof Kowalczyk <kkowalczyk@gmail.com> 3296 3297 Reviewed by darin. 3298 3299 Coverity fix. Coverity says: 3300 "Event check_after_deref: Pointer "dateString" dereferenced before NULL check" 3301 3302 * kjs/date_object.cpp: 3303 (KJS::parseDate): 3304 33052007-04-05 Krzysztof Kowalczyk <kkowalczyk@gmail.com> 3306 3307 Reviewed by darin. 3308 3309 Coverity fix. Coverity says: 3310 "Event check_after_deref: Pointer "re" dereferenced before NULL check" 3311 3312 * pcre/pcre_study.c: 3313 (pcre_study): 3314 33152007-04-05 Krzysztof Kowalczyk <kkowalczyk@gmail.com> 3316 3317 Reviewed by darin. 3318 3319 Coverity fixes. Coverity says: 3320 "Event leaked_storage: Returned without freeing storage "buffer"" 3321 and: 3322 "Event leaked_storage: Returned without freeing storage "script"" 3323 3324 * kjs/testkjs.cpp: 3325 (doIt): 3326 (createStringWithContentsOfFile): 3327 33282007-04-05 Krzysztof Kowalczyk <kkowalczyk@gmail.com> 3329 3330 Reviewed by darin. 3331 3332 Coverity fix: in single-threaded case currentThreadIsMainThread is always true 3333 so the code in if (!currentThreadIsMainThread) cannot possibly be reached 3334 and Coverity complains about dead code. 3335 3336 * kjs/collector.cpp: 3337 (KJS::Collector::collect): 3338 3339=== Safari-5522.6 === 3340 33412007-04-03 Kevin McCullough <kmccullough@apple.com> 3342 3343 Reviewed by Adam. 3344 3345 - Testing a post-commit hook. 3346 3347 * JavaScriptCore.vcproj/testkjs/testkjs.vcproj: 3348 33492007-04-03 Anders Carlsson <andersca@apple.com> 3350 3351 Reviewed by Adam. 3352 3353 <rdar://problem/5107534> 3354 http://bugs.webkit.org/show_bug.cgi?id=13265 3355 REGRESSION: Crash in KJS::Bindings::convertValueToNPVariant 3356 3357 * bindings/NP_jsobject.cpp: 3358 (_NPN_InvokeDefault): 3359 Return false if the object isn't a function. Set the return value to undefined by default 3360 (to match Firefox). 3361 33622007-03-30 Anders Carlsson <andersca@apple.com> 3363 3364 Build fix. 3365 3366 * bindings/NP_jsobject.cpp: 3367 (_NPN_Enumerate): 3368 33692007-03-30 Anders Carlsson <andersca@apple.com> 3370 3371 Reviewed by Geoff. 3372 3373 Implement _NPN_Enumerate support. 3374 3375 * JavaScriptCore.exp: 3376 * bindings/NP_jsobject.cpp: 3377 (_NPN_Enumerate): 3378 * bindings/c/c_instance.cpp: 3379 (KJS::Bindings::CInstance::getPropertyNames): 3380 * bindings/c/c_instance.h: 3381 * bindings/npapi.h: 3382 * bindings/npruntime.h: 3383 * bindings/npruntime_impl.h: 3384 * bindings/runtime.h: 3385 (KJS::Bindings::Instance::getPropertyNames): 3386 * bindings/runtime_object.cpp: 3387 (RuntimeObjectImp::getPropertyNames): 3388 * bindings/runtime_object.h: 3389 (KJS::RuntimeObjectImp::getInternalInstance): 3390 33912007-03-28 Jeff Walden <jwalden+code@mit.edu> 3392 3393 Reviewed by Darin. 3394 3395 http://bugs.webkit.org/show_bug.cgi?id=12963 3396 Fix some inconsistencies in the Mozilla JS Array extras implementations 3397 with respect to the Mozilla implementation: 3398 3399 - holes in arrays should be skipped, not treated as undefined, 3400 by all such methods 3401 - an element with value undefined is not a hole 3402 - Array.prototype.forEach should return undefined 3403 3404 * kjs/array_object.cpp: 3405 (ArrayInstance::getOwnPropertySlot): 3406 (ArrayProtoFunc::callAsFunction): 3407 34082007-03-27 Anders Carlsson <acarlsson@apple.com> 3409 3410 Reviewed by Geoff. 3411 3412 * bindings/NP_jsobject.cpp: 3413 (_NPN_InvokeDefault): 3414 Call JSObject:call for native JavaScript objects. 3415 34162007-03-26 David Carson <dacarson@gmail.com> 3417 3418 Reviewed by Darin, landed by Anders. 3419 3420 Fix for: REGRESSION (r19559): Java applet crash 3421 http://bugs.webkit.org/show_bug.cgi?id=13142 3422 <rdar://problem/5080340> 3423 3424 The previous fix http://bugs.webkit.org/show_bug.cgi?id=12636 3425 introduced new JNIType to enum in jni_utility.h This is a 3426 problem on the Mac as it seems that the JNIType enum is also 3427 used in the JVM, it is used to specify the return type in 3428 jni_objc.mm 3429 Corrected the fix by moving type to the end, and changing 3430 jni_objc.mm to convert the new type to an old compatible 3431 type. 3432 3433 * bindings/jni/jni_objc.mm: 3434 (KJS::Bindings::dispatchJNICall): 3435 * bindings/jni/jni_utility.h: 3436 34372007-03-26 Christopher Brichford <chrisb@adobe.com> 3438 3439 Reviewed/landed by Adam. 3440 3441 Bug 13198: Move build settings from project file to xcconfig file for apollo 3442 port JSCore 3443 http://bugs.webkit.org/show_bug.cgi?id=13198 3444 3445 - Moving build settings from xcode project file to xcconfig files. 3446 3447 * JavaScriptCore.apolloproj/mac/JavaScriptCore/JavaScriptCore.Debug.xcconfig: 3448 * JavaScriptCore.apolloproj/mac/JavaScriptCore/JavaScriptCore.Release.xcconfig: 3449 * JavaScriptCore.apolloproj/mac/JavaScriptCore/JavaScriptCore.xcconfig: 3450 * JavaScriptCore.apolloproj/mac/JavaScriptCore/JavaScriptCore.xcodeproj/project.pbxproj: 3451 34522007-03-26 Brady Eidson <beidson@apple.com> 3453 3454 Rubberstamped by Anders and Maciej aand Geoff (oh my!) 3455 3456 Since CFTypeRef is really void*, a RetainPtr couldn't be used. 3457 RefType was "void", which doesn't actually exist as a type. 3458 Since RefType only existed for operator*(), and since that operator 3459 doesn't make any sense for RetainPtr, I removed them! 3460 3461 * kjs/nodes.cpp: Touch this to force a rebuild and (hopefully) help the 3462 compiler with dependencies 3463 * wtf/RetainPtr.h: Nuke RefType and operator*() 3464 34652007-03-26 Geoffrey Garen <ggaren@apple.com> 3466 3467 Touched a file to (hopefully) help the compiler with RetainPtr dependencies. 3468 3469 * kjs/nodes.cpp: 3470 (Node::deref): 3471 34722007-03-24 Brady Eidson <beidson@apple.com> 3473 3474 Reviewed by Adam 3475 3476 Whoops, RetainPtr should be in the WTF namespace 3477 3478 * wtf/RetainPtr.h: 3479 34802007-03-24 Brady Eidson <beidson@apple.com> 3481 3482 Reviewed by Adam 3483 3484 <rdar://problem/5086210> - Move RetainPtr to WTF 3485 3486 * wtf/RetainPtr.h: Added 3487 * JavaScriptCore.xcodeproj/project.pbxproj: Add it to the project file 3488 * JavaScriptCore.vcproj/WTF/WTF.vcproj: Ditto 3489 3490 34912007-03-23 Christopher Brichford <chrisb@adobe.com> 3492 3493 Reviewed/landed by Adam. 3494 3495 Bug 13175: Make apollo mac project files for JavaScriptCore actually 3496 build something 3497 http://bugs.webkit.org/show_bug.cgi?id=13175 3498 3499 - Changing apollo mac project files for JavaScriptCore such that they actually build 3500 JavaScriptCore source code. 3501 3502 * JavaScriptCore.apolloproj/ForwardingSources/grammar.cpp: Added. 3503 * JavaScriptCore.apolloproj/mac/JavaScriptCore/JavaScriptCore.xcconfig: 3504 * JavaScriptCore.apolloproj/mac/JavaScriptCore/JavaScriptCore.xcodeproj/project.pbxproj: 3505 35062007-03-24 Mark Rowe <mrowe@apple.com> 3507 3508 Rubber-stamped by Darin. 3509 3510 * Configurations/JavaScriptCore.xcconfig: Remove unnecessary INFOPLIST_PREPROCESS. 3511 35122007-03-22 Christopher Brichford <chrisb@adobe.com> 3513 3514 Reviewed/landed by Adam. 3515 3516 Bug 13164: Initial version of mac JavaScriptCore project files for 3517 apollo port 3518 http://bugs.webkit.org/show_bug.cgi?id=13164 3519 3520 - Adding mac project files for apollo port of JavaScriptCore. Currently project 3521 just builds dftables. 3522 3523 * JavaScriptCore.apolloproj/mac/JavaScriptCore/JavaScriptCore.Debug.xcconfig: Added. 3524 * JavaScriptCore.apolloproj/mac/JavaScriptCore/JavaScriptCore.Release.xcconfig: Added. 3525 * JavaScriptCore.apolloproj/mac/JavaScriptCore/JavaScriptCore.xcconfig: Added. 3526 * JavaScriptCore.apolloproj/mac/JavaScriptCore/JavaScriptCore.xcodeproj/project.pbxproj: Added. 3527 35282007-03-21 Timothy Hatcher <timothy@apple.com> 3529 3530 Reviewed by Darin. 3531 3532 <rdar://problem/5076599> JavaScriptCore has a weak export (vtable for KJS::JSCell) 3533 3534 * JavaScriptCore.exp: Remove __ZTVN3KJS6JSCellE. 3535 35362007-03-21 Adele Peterson <adele@apple.com> 3537 3538 Reviewed by Geoff. 3539 3540 * API/JSStringRef.cpp: (JSStringIsEqual): Added JSLock. 3541 35422007-03-21 Zack Rusin <zrusin@trolltech.com> 3543 3544 Fix the compile when USE(MULTIPLE_THREADS) isn't 3545 defined 3546 3547 * kjs/JSLock.cpp: 3548 (KJS::JSLock::currentThreadIsHoldingLock): 3549 35502007-03-20 Maciej Stachowiak <mjs@apple.com> 3551 3552 Reviewed by Geoff and Adam. 3553 3554 - make USE(MULTIPLE_THREADS) support more portable 3555 http://bugs.webkit.org/show_bug.cgi?id=13069 3556 3557 - fixed a threadsafety bug discovered by testing this 3558 3559 - enhanced threadsafety assertions in collector 3560 3561 * API/JSCallbackObject.cpp: 3562 (KJS::JSCallbackObject::~JSCallbackObject): This destructor can't 3563 DropAllLocks around the finalize callback, because it gets called 3564 from garbage collection and we can't let other threads collect! 3565 3566 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: 3567 * kjs/JSLock.cpp: 3568 (KJS::JSLock::currentThreadIsHoldingLock): Added new function 3569 to allow stronger assertions than just that the lock is held 3570 by some thread (you can now assert that the current thread is 3571 holding it, given the new JSLock design). 3572 * kjs/JSLock.h: 3573 * kjs/collector.cpp: Refactored for portability plus added some 3574 stronger assertions. 3575 (KJS::Collector::allocate): 3576 (KJS::currentThreadStackBase): 3577 (KJS::Collector::registerAsMainThread): 3578 (KJS::onMainThread): 3579 (KJS::PlatformThread::PlatformThread): 3580 (KJS::getCurrentPlatformThread): 3581 (KJS::Collector::Thread::Thread): 3582 (KJS::destroyRegisteredThread): 3583 (KJS::Collector::registerThread): 3584 (KJS::Collector::markCurrentThreadConservatively): 3585 (KJS::suspendThread): 3586 (KJS::resumeThread): 3587 (KJS::getPlatformThreadRegisters): 3588 (KJS::otherThreadStackPointer): 3589 (KJS::otherThreadStackBase): 3590 (KJS::Collector::markOtherThreadConservatively): 3591 (KJS::Collector::markStackObjectsConservatively): 3592 (KJS::Collector::protect): 3593 (KJS::Collector::unprotect): 3594 (KJS::Collector::collectOnMainThreadOnly): 3595 (KJS::Collector::markMainThreadOnlyObjects): 3596 (KJS::Collector::collect): 3597 * kjs/collector.h: 3598 * wtf/FastMalloc.cpp: 3599 (WTF::fastMallocSetIsMultiThreaded): 3600 * wtf/FastMallocInternal.h: 3601 * wtf/Platform.h: 3602 36032007-03-19 Darin Adler <darin@apple.com> 3604 3605 * kjs/value.h: Roll ~JSValue change out. It was causing problems. I'll do it right later. 3606 36072007-03-19 Geoffrey Garen <ggaren@apple.com> 3608 3609 Reviewed by John Sullivan. 3610 3611 Fixed <rdar://problem/5073380> REGRESSION: Crash occurs at WTF::fastFree() 3612 when reloading liveconnect page (applet) 3613 3614 Best to use free when you use malloc, especially when malloc and delete 3615 use completely different libraries. 3616 3617 * bindings/jni/jni_runtime.cpp: 3618 (JavaMethod::~JavaMethod): 3619 36202007-03-19 Andrew Wellington <proton@wiretapped.net> 3621 3622 Reviewed by Maciej. 3623 3624 Really set Xcode editor to use 4 space indentation (http://webkit.org/coding/coding-style.html) 3625 3626 * JavaScriptCore.xcodeproj/project.pbxproj: 3627 36282007-03-19 Darin Adler <darin@apple.com> 3629 3630 Reviewed by Geoff. 3631 3632 - Changed list size threshold to 5 based on testing. 3633 3634 I was testing the i-Bench JavaScript with the list statistics 3635 dumping on, and discovered that there were many 5-element lists. 3636 The fast case for lists was for 4 elements and fewer. By changing 3637 the threshold to 5 elements we get a measurable speedup. I believe 3638 this will help real web pages too, not just the benchmark. 3639 3640 * kjs/list.cpp: Change constant from 4 to 5. 3641 36422007-03-19 Darin Adler <darin@apple.com> 3643 3644 * kjs/value.h: Oops, fix build. 3645 36462007-03-19 Darin Adler <darin@apple.com> 3647 3648 Reviewed by Geoff. 3649 3650 - remove ~JSValue; tiny low-risk performance boost 3651 3652 * kjs/value.h: Remove unneeded empty virtual destructor from JSValue. 3653 The only class derived from JSValue is JSCell and it already has a 3654 virtual destructor. Declaring an empty constructor in JSValue had one 3655 good effect: it marked the destructor private, making it a compile 3656 time error to try to destroy a JSValue; but that's not a likely 3657 mistake for someone to make. It had two bad effects: (1) it caused gcc, 3658 at least, to generate code to fix up the virtual table pointer to 3659 point to the JSValue version of the virtual table inside the destructor 3660 of all classes derived from JSValue directly or indirectly; (2) it 3661 caused JSValue to be a polymorphic class so required a virtual table for 3662 it. It's cleaner to not have either of those. 3663 36642007-03-18 Maciej Stachowiak <mjs@apple.com> 3665 3666 Reviewed by Mark. 3667 3668 - avoid static construction (and global variable access) in a smarter, more portable way, 3669 to later enable MUTLI_THREAD mode to work on other platforms and compilers. 3670 3671 * kjs/CommonIdentifiers.cpp: Added. New class to hold all the shared identifiers. 3672 (KJS::CommonIdentifiers::CommonIdentifiers): 3673 (KJS::CommonIdentifiers::shared): 3674 * kjs/CommonIdentifiers.h: Added. 3675 3676 * kjs/ExecState.h: 3677 (KJS::ExecState::propertyNames): Hand the CommonIdentifiers instance here for easy access. 3678 (KJS::ExecState::ExecState): 3679 3680 * API/JSObjectRef.cpp: 3681 (JSObjectMakeConstructor): 3682 * CMakeLists.txt: 3683 * JavaScriptCore.exp: 3684 * JavaScriptCore.pri: 3685 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: 3686 * JavaScriptCore.xcodeproj/project.pbxproj: 3687 * JavaScriptCoreSources.bkl: 3688 * bindings/runtime_array.cpp: 3689 (RuntimeArray::getOwnPropertySlot): 3690 (RuntimeArray::put): 3691 * bindings/runtime_method.cpp: 3692 (RuntimeMethod::getOwnPropertySlot): 3693 * kjs/array_object.cpp: 3694 (ArrayInstance::getOwnPropertySlot): 3695 (ArrayInstance::put): 3696 (ArrayInstance::deleteProperty): 3697 (ArrayProtoFunc::ArrayProtoFunc): 3698 (ArrayProtoFunc::callAsFunction): 3699 (ArrayObjectImp::ArrayObjectImp): 3700 * kjs/bool_object.cpp: 3701 (BooleanPrototype::BooleanPrototype): 3702 (BooleanProtoFunc::BooleanProtoFunc): 3703 (BooleanProtoFunc::callAsFunction): 3704 (BooleanObjectImp::BooleanObjectImp): 3705 * kjs/completion.h: 3706 (KJS::Completion::Completion): 3707 * kjs/date_object.cpp: 3708 (KJS::DateProtoFunc::DateProtoFunc): 3709 (KJS::DateObjectImp::DateObjectImp): 3710 (KJS::DateObjectFuncImp::DateObjectFuncImp): 3711 * kjs/error_object.cpp: 3712 (ErrorPrototype::ErrorPrototype): 3713 (ErrorProtoFunc::ErrorProtoFunc): 3714 (ErrorProtoFunc::callAsFunction): 3715 (ErrorObjectImp::ErrorObjectImp): 3716 (ErrorObjectImp::construct): 3717 (NativeErrorPrototype::NativeErrorPrototype): 3718 (NativeErrorImp::NativeErrorImp): 3719 (NativeErrorImp::construct): 3720 (NativeErrorImp::callAsFunction): 3721 * kjs/function.cpp: 3722 (KJS::FunctionImp::getOwnPropertySlot): 3723 (KJS::FunctionImp::put): 3724 (KJS::FunctionImp::deleteProperty): 3725 (KJS::FunctionImp::getParameterName): 3726 (KJS::DeclaredFunctionImp::construct): 3727 (KJS::IndexToNameMap::unMap): 3728 (KJS::Arguments::Arguments): 3729 (KJS::ActivationImp::getOwnPropertySlot): 3730 (KJS::ActivationImp::deleteProperty): 3731 (KJS::GlobalFuncImp::GlobalFuncImp): 3732 * kjs/function_object.cpp: 3733 (FunctionPrototype::FunctionPrototype): 3734 (FunctionProtoFunc::FunctionProtoFunc): 3735 (FunctionProtoFunc::callAsFunction): 3736 (FunctionObjectImp::FunctionObjectImp): 3737 (FunctionObjectImp::construct): 3738 * kjs/grammar.y: 3739 * kjs/identifier.cpp: 3740 * kjs/identifier.h: 3741 * kjs/interpreter.cpp: 3742 (KJS::Interpreter::init): 3743 (KJS::Interpreter::initGlobalObject): 3744 * kjs/interpreter.h: 3745 * kjs/lookup.h: 3746 * kjs/math_object.cpp: 3747 (MathFuncImp::MathFuncImp): 3748 * kjs/nodes.cpp: 3749 (ArrayNode::evaluate): 3750 (FuncDeclNode::processFuncDecl): 3751 (FuncExprNode::evaluate): 3752 * kjs/number_object.cpp: 3753 (NumberPrototype::NumberPrototype): 3754 (NumberProtoFunc::NumberProtoFunc): 3755 (NumberObjectImp::NumberObjectImp): 3756 * kjs/object.cpp: 3757 (KJS::JSObject::put): 3758 (KJS::JSObject::defaultValue): 3759 (KJS::JSObject::hasInstance): 3760 * kjs/object.h: 3761 (KJS::JSObject::getOwnPropertySlot): 3762 * kjs/object_object.cpp: 3763 (ObjectPrototype::ObjectPrototype): 3764 (ObjectProtoFunc::ObjectProtoFunc): 3765 (ObjectObjectImp::ObjectObjectImp): 3766 * kjs/regexp_object.cpp: 3767 (RegExpPrototype::RegExpPrototype): 3768 (RegExpProtoFunc::RegExpProtoFunc): 3769 (RegExpObjectImp::RegExpObjectImp): 3770 * kjs/string_object.cpp: 3771 (KJS::StringInstance::getOwnPropertySlot): 3772 (KJS::StringInstance::put): 3773 (KJS::StringInstance::deleteProperty): 3774 (KJS::StringPrototype::StringPrototype): 3775 (KJS::StringProtoFunc::StringProtoFunc): 3776 (KJS::StringProtoFunc::callAsFunction): 3777 (KJS::StringObjectImp::StringObjectImp): 3778 (KJS::StringObjectFuncImp::StringObjectFuncImp): 3779 * kjs/testkjs.cpp: 3780 (TestFunctionImp::TestFunctionImp): 3781 37822007-03-18 Andrew Wellington <proton@wiretapped.net> 3783 3784 Reviewed by Mark Rowe 3785 3786 Set Xcode editor to use 4 space indentation (http://webkit.org/coding/coding-style.html) 3787 3788 * JavaScriptCore.xcodeproj/project.pbxproj: 3789 37902007-03-19 Mark Rowe <mrowe@apple.com> 3791 3792 Rubber-stamped by Brady. 3793 3794 Update references to bugzilla.opendarwin.org with bugs.webkit.org. 3795 3796 * bindings/c/c_utility.cpp: 3797 (KJS::Bindings::convertUTF8ToUTF16): 3798 * kjs/function.cpp: 3799 (KJS::FunctionImp::callAsFunction): 3800 * kjs/grammar.y: 3801 * kjs/keywords.table: 3802 * kjs/lexer.cpp: 3803 (KJS::Lexer::shift): 3804 38052007-03-18 Geoffrey Garen <ggaren@apple.com> 3806 3807 Reviewed by Oliver Hunt. 3808 3809 Exposed some extra toUInt32 functionality, as part of the fix for 3810 REGRESSION: Incomplete document.all implementation breaks abtelectronics.com 3811 (Style Change Through JavaScript Blanks Content) 3812 3813 * JavaScriptCore.exp: 3814 * kjs/identifier.h: 3815 (KJS::Identifier::toUInt32): 3816 38172007-03-18 Geoffrey Garen <ggaren@apple.com> 3818 3819 Removed duplicate export name. 3820 3821 * JavaScriptCore.exp: 3822 38232007-03-15 Geoffrey Garen <ggaren@apple.com> 3824 3825 Reviewed by Maciej Stachowiak. 3826 3827 Fixed <rdar://problem/5064964> Repro ASSERT failure in JS Bindings when 3828 closing window @ lowtrades.bptrade.com 3829 3830 Unfortunately, the bindings depend on UString and Identifier as string 3831 representations. So, they need to acquire the JSLock when doing something 3832 that will ref/deref their strings. 3833 3834 Layout tests, the original site, and Java, Flash, and Quicktime on the 3835 web work. No leaks reported. No automated test for this because testing 3836 the Java bindings, like math, is hard. 3837 3838 * bindings/runtime.h: Made Noncopyable, just to be sure. 3839 3840 * bindings/c/c_class.cpp: 3841 (KJS::Bindings::CClass::~CClass): Acquire the JSLock and explicitly clear the keys 3842 in our hashtable, since they're UString::Reps, and ref/deref aren't thread-safe. 3843 (KJS::Bindings::CClass::methodsNamed): Also acquire the JSLock when adding 3844 keys to the table, since the table ref's them. 3845 (KJS::Bindings::CClass::fieldNamed): ditto. 3846 3847 * bindings/c/c_utility.cpp: Removed dead function. 3848 (KJS::Bindings::convertValueToNPVariant): Acquire the JSLock because doing 3849 it recursively is pretty cheap, and it's just too confusing to tell whether 3850 all our callers do it for us. 3851 (KJS::Bindings::convertNPVariantToValue): ditto 3852 * bindings/c/c_utility.h: 3853 3854 * bindings/jni/jni_class.cpp: Same deal as c_class.cpp. 3855 (JavaClass::JavaClass): 3856 (JavaClass::~JavaClass): 3857 3858 * bindings/jni/jni_instance.cpp: Same deal as c_utility.cpp. 3859 (JavaInstance::stringValue): 3860 * bindings/jni/jni_jsobject.cpp: 3861 (JavaJSObject::convertValueToJObject): 3862 3863 * bindings/jni/jni_runtime.cpp: 3864 (JavaMethod::~JavaMethod): Moved from header, for clarity. 3865 (appendClassName): Made this static, so the set of callers is known, and 3866 we can assert that we hold the JSLock. Also changed it to take a UString 3867 reference, which makes the calling code simpler. 3868 (JavaMethod::signature): Store the ASCII value we care about instead of 3869 a UString, since UString is so much more hassle. Hold the JSLock while 3870 building up the temporary UString. 3871 3872 * bindings/jni/jni_runtime.h: Nixed dead code in JavaMethod. 3873 (KJS::Bindings::JavaString::JavaString): Hold a UString::Rep instead of 3874 a UString, so we can acquire the JSLock and explicitly release it. 3875 (KJS::Bindings::JavaString::_commonInit): 3876 (KJS::Bindings::JavaString::~JavaString): 3877 (KJS::Bindings::JavaString::UTF8String): 3878 (KJS::Bindings::JavaString::uchars): 3879 (KJS::Bindings::JavaString::length): 3880 (KJS::Bindings::JavaString::ustring): 3881 3882 * bindings/jni/jni_utility.cpp: 3883 (KJS::Bindings::convertArrayInstanceToJavaArray): Made this static, so 3884 the set of callers is known, and we can assert that we hold the JSLock. 3885 (KJS::Bindings::convertValueToJValue): Acquire the JSLock because doing 3886 it recursively is pretty cheap, and it's just too confusing to tell whether 3887 all our callers do it for us. 3888 3889 * bindings/objc/objc_runtime.h: Nixed some dead code. 3890 * bindings/objc/objc_utility.mm: 3891 (KJS::Bindings::convertNSStringToString): Same drill as above. 3892 38932007-03-18 Alexey Proskuryakov <ap@webkit.org> 3894 3895 Reviewed by Geoff. 3896 3897 http://bugs.webkit.org/show_bug.cgi?id=13105 3898 REGRESSION: an exception raised when calculating base value of a dot expression is not returned 3899 3900 Test: fast/js/dot-node-base-exception.html 3901 3902 * kjs/nodes.cpp: 3903 (FunctionCallDotNode::evaluate): Added the necessary KJS_CHECKEXCEPTIONVALUE. 3904 39052007-03-18 Steve Falkenburg <sfalken@apple.com> 3906 3907 Build fix. 3908 3909 * JavaScriptCore.vcproj/testkjs/testkjs.vcproj: 3910 39112007-03-17 Timothy Hatcher <timothy@apple.com> 3912 3913 Reviewed by Mark Rowe. 3914 3915 Made Version.xcconfig smarter when building for different configurations. 3916 Now uses the 522+ OpenSource version for Debug and Release, while using the 3917 full 522.4 version for Production builds. The system prefix is also computed 3918 based on the current system, so 4522.4 on Tiger and 5522.4 on Leopard. 3919 3920 * Configurations/JavaScriptCore.xcconfig: 3921 * Configurations/Version.xcconfig: 3922 39232007-03-15 Maciej Stachowiak <mjs@apple.com> 3924 3925 Not reviewed. 3926 3927 - build fix 3928 3929 * wtf/TCSystemAlloc.cpp: 3930 39312007-03-15 Maciej Stachowiak <mjs@apple.com> 3932 3933 Reviewed by Geoff and Steve. 3934 3935 - fix some portability issues with TCMalloc. 3936 3937 * JavaScriptCore.vcproj/WTF/WTF.vcproj: 3938 * kjs/config.h: 3939 * wtf/FastMalloc.cpp: 3940 (WTF::SizeClass): 3941 (WTF::InitSizeClasses): 3942 (WTF::TCMalloc_PageHeap::Split): 3943 (WTF::TCMalloc_PageHeap::RegisterSizeClass): 3944 (WTF::TCMalloc_Central_FreeList::length): 3945 (WTF::TCMalloc_ThreadCache::InitTSD): 3946 (WTF::TCMalloc_ThreadCache::CreateCacheIfNecessary): 3947 * wtf/TCSpinLock.h: 3948 * wtf/TCSystemAlloc.cpp: 3949 (TryVirtualAlloc): 3950 (TCMalloc_SystemAlloc): 3951 39522007-03-15 Timothy Hatcher <timothy@apple.com> 3953 3954 Reviewed by John. 3955 3956 * Factored out most of our common build settings into .xcconfig files. Anything that was common in 3957 each build configuration was factored out into the shared .xcconfig file. 3958 * Adds a Version.xcconfig file to define the current framework version, to be used in other places. 3959 * Use the new $(BUNDLE_VERSION) (defined in Version.xcconfig) in the preprocessed Info.plist. 3960 * Use the versions defined in Version.xcconfig to set $(DYLIB_CURRENT_VERSION). 3961 3962 * Configurations/Base.xcconfig: Added. 3963 * Configurations/DebugRelease.xcconfig: Added. 3964 * Configurations/JavaScriptCore.xcconfig: Added. 3965 * Configurations/Version.xcconfig: Added. 3966 * Info.plist: 3967 * JavaScriptCore.xcodeproj/project.pbxproj: 3968 39692007-03-16 Shrikant Gangoda <shrikant.gangoda@celunite.com> 3970 3971 Gdk build fix. 3972 3973 * kjs/DateMath.cpp: gettimeofday comes from <sys/time.h> on Linux. 3974 39752007-03-14 Kevin McCullough <kmccullough@apple.com> 3976 3977 Reviewed by . 3978 3979 - Fixed one more build breakage 3980 3981 * kjs/date_object.cpp: 3982 (KJS::formatLocaleDate): 3983 39842007-03-14 Kevin McCullough <kmccullough@apple.com> 3985 3986 Reviewed by . 3987 3988 - Fixed a build breakage. 3989 3990 * kjs/DateMath.cpp: 3991 * kjs/date_object.cpp: 3992 (KJS::formatLocaleDate): 3993 (KJS::DateObjectImp::construct): 3994 39952007-03-14 Kevin McCullough <kmccullough@apple.com> 3996 3997 Reviewed by Geoff. 3998 3999 - rdar://problem/5045720 4000 - DST changes in US affect JavaScript date calculations (12975) 4001 This fix was to ensure we properly test for the new changes to DST in the US. 4002 Also this fixes when we apply DST, now we correctly map most past years to current 4003 DST rules. We still have a small issue with years before 1900 or after 2100. 4004 rdar://problem/5055038 4005 4006 * kjs/DateMath.cpp: Fix DST to match spec better. 4007 (KJS::getCurrentUTCTime): 4008 (KJS::mimimumYearForDST): 4009 (KJS::maximumYearForDST): 4010 (KJS::equivalentYearForDST): 4011 (KJS::getDSTOffset): 4012 * kjs/DateMath.h: Consolodated common funtionality. 4013 * kjs/date_object.cpp: Consolodated common functionality. 4014 (KJS::formatLocaleDate): 4015 (KJS::DateObjectImp::construct): 4016 * tests/mozilla/ecma/jsref.js: Added functions for finding the correct days when DST starts and ends. 4017 * tests/mozilla/ecma/shell.js: Added back in the old DST functions for ease of merging with mozilla if needed. 4018 * tests/mozilla/ecma_2/jsref.js: Added functions for finding the correct days when DST starts and ends. 4019 * tests/mozilla/ecma_3/Date/shell.js: Added functions for finding the correct days when DST starts and ends. 4020 * tests/mozilla/expected.html: Updated to show all date tests passing. 4021 4022=== Safari-5522.4 === 4023 40242007-03-13 Kevin McCullough <kmccullough@apple.com> 4025 4026 Reviewed by . 4027 4028 - Adding expected failures until the are truly fixed. 4029 - rdar://problem/5060302 4030 4031 * tests/mozilla/expected.html: 4032 40332007-03-12 Kevin McCullough <kmccullough@apple.com> 4034 4035 Reviewed by . 4036 4037 - Actually update tests for new DST rules. 4038 4039 * tests/mozilla/ecma/Date/15.9.3.1-1.js: 4040 * tests/mozilla/ecma/Date/15.9.3.1-2.js: 4041 * tests/mozilla/ecma/Date/15.9.3.1-3.js: 4042 * tests/mozilla/ecma/Date/15.9.3.1-4.js: 4043 * tests/mozilla/ecma/Date/15.9.3.1-5.js: 4044 * tests/mozilla/ecma/Date/15.9.3.2-1.js: 4045 * tests/mozilla/ecma/Date/15.9.3.2-2.js: 4046 * tests/mozilla/ecma/Date/15.9.3.2-3.js: 4047 * tests/mozilla/ecma/Date/15.9.3.2-4.js: 4048 * tests/mozilla/ecma/Date/15.9.3.2-5.js: 4049 * tests/mozilla/ecma/Date/15.9.3.8-1.js: 4050 * tests/mozilla/ecma/Date/15.9.3.8-2.js: 4051 * tests/mozilla/ecma/Date/15.9.3.8-3.js: 4052 * tests/mozilla/ecma/Date/15.9.3.8-4.js: 4053 * tests/mozilla/ecma/Date/15.9.3.8-5.js: 4054 * tests/mozilla/ecma/Date/15.9.5.10-1.js: 4055 * tests/mozilla/ecma/Date/15.9.5.10-10.js: 4056 * tests/mozilla/ecma/Date/15.9.5.10-11.js: 4057 * tests/mozilla/ecma/Date/15.9.5.10-12.js: 4058 * tests/mozilla/ecma/Date/15.9.5.10-13.js: 4059 * tests/mozilla/ecma/Date/15.9.5.10-2.js: 4060 * tests/mozilla/ecma/Date/15.9.5.10-3.js: 4061 * tests/mozilla/ecma/Date/15.9.5.10-4.js: 4062 * tests/mozilla/ecma/Date/15.9.5.10-5.js: 4063 * tests/mozilla/ecma/Date/15.9.5.10-6.js: 4064 * tests/mozilla/ecma/Date/15.9.5.10-7.js: 4065 * tests/mozilla/ecma/Date/15.9.5.10-8.js: 4066 * tests/mozilla/ecma/Date/15.9.5.10-9.js: 4067 * tests/mozilla/ecma/jsref.js: 4068 * tests/mozilla/ecma_2/jsref.js: 4069 * tests/mozilla/ecma_3/Date/shell.js: 4070 40712007-03-12 Kevin McCullough <kmccullough@apple.com> 4072 4073 Reviewed by . 4074 4075 - Update tests for new DST rules. 4076 4077 * tests/mozilla/ecma/shell.js: 4078 40792007-03-11 Geoffrey Garen <ggaren@apple.com> 4080 4081 Reviewed by Oliver Hunt. 4082 4083 Fixed <rdar://problem/4681051> Installer crashes in KJS::Collector:: 4084 markOtherThreadConservatively(KJS::Collector::Thread*) trying to install 4085 iLife 06 using Rosetta on an Intel Machine 4086 4087 The problem was that our thread-specific data destructor would modify the 4088 list of active JavaScript threads without holding the JSLock, corrupting 4089 the list. Corruption was especially likely if one JavaScript thread exited 4090 while another was starting up. 4091 4092 * JavaScriptCore.exp: 4093 * kjs/JSLock.cpp: Don't conflate locking the JSLock with registering a 4094 thread, since the thread-specific data destructor needs to lock 4095 without registering a thread. Instead, treat thread registration as a 4096 part of the convenience of the JSLock object, and whittle down JSLock::lock() 4097 to just the bits that actually do the locking. 4098 (KJS::JSLock::lock): 4099 (KJS::JSLock::registerThread): 4100 * kjs/JSLock.h: Updated comments to mention the new behavior above, and 4101 other recent changes. 4102 (KJS::JSLock::JSLock): 4103 * kjs/collector.cpp: 4104 (KJS::destroyRegisteredThread): Lock here. 4105 (KJS::Collector::registerThread): To match, assert that we're locked here. 4106 41072007-03-10 Geoffrey Garen <ggaren@apple.com> 4108 4109 Reviewed by Darin Adler. 4110 4111 Fixed <rdar://problem/4587763> PAC file: lock inversion between QT and 4112 JSCore causes a hang @ www.panoramas.dk 4113 4114 With a PAC file, run-webkit-tests --threaded passes, the reported site 4115 works, and all the Quicktime/JavaScript and Flash/JavaScript examples 4116 I found through Google work, too. 4117 4118 Any time JavaScript causes arbitrary non-JavaScript code to execute, it 4119 risks deadlock, because that code may block, trying to acquire a lock 4120 owned by a thread that is waiting to execute JavaScript. In this case, 4121 the thread was a networking thread that was waiting to interpret a PAC file. 4122 4123 Because non-JavaScript code may execute in response to, well, anything, 4124 a perfect solution to this problem is impossible. I've implemented an 4125 optimistic solution, instead: JavaScript will drop its lock whenever it 4126 makes a direct call to non-JavaScript code through a bridging/plug-in API, 4127 but will blissfully ignore the indirect ways it may cause non-JavaScript 4128 code to run (resizing a window, for example). 4129 4130 Unfortunately, this solution introduces significant locking overhead in 4131 the bridging APIs. I don't see a way around that. 4132 4133 This patch includes some distinct bug fixes I saw along the way: 4134 4135 * bindings/objc/objc_instance.mm: Fixed a bug where a nested begin() call 4136 would leak its autorelease pool, because it would NULL out _pool without 4137 draining it. 4138 4139 * bindings/runtime_object.cpp: 4140 (RuntimeObjectImp::methodGetter): Don't copy an Identifier to ASCII only 4141 to turn around and make an Identifier from the ASCII. In an earlier 4142 version of this patch, the copy caused an assertion failure. Now it's 4143 just unnecessary work. 4144 (RuntimeObjectImp::getOwnPropertySlot): ditto 4145 4146 * bindings/objc/objc_instance.h: Removed overrides of setVAlueOfField and 4147 getValueOfField, because they did exactly what the base class versions did. 4148 Removed overrides of Noncopyable declarations for the same reason. 4149 4150 * bindings/runtime.h: Inherit from Noncopyable instead of rolling our own. 4151 * bindings/c/c_instance.h: ditto 4152 4153 And the actual patch: 4154 4155 * API/JSCallbackConstructor.cpp: Drop all locks when calling out to C. 4156 (KJS::JSCallbackConstructor::construct): 4157 * API/JSCallbackFunction.cpp: ditto 4158 (KJS::JSCallbackFunction::callAsFunction): 4159 * API/JSCallbackObject.cpp: ditto 4160 (KJS::JSCallbackObject::init): 4161 (KJS::JSCallbackObject::~JSCallbackObject): 4162 (KJS::JSCallbackObject::getOwnPropertySlot): 4163 (KJS::JSCallbackObject::put): 4164 (KJS::JSCallbackObject::deleteProperty): 4165 (KJS::JSCallbackObject::construct): 4166 (KJS::JSCallbackObject::hasInstance): 4167 (KJS::JSCallbackObject::callAsFunction): 4168 (KJS::JSCallbackObject::getPropertyNames): 4169 (KJS::JSCallbackObject::toNumber): 4170 (KJS::JSCallbackObject::toString): 4171 (KJS::JSCallbackObject::staticValueGetter): 4172 (KJS::JSCallbackObject::callbackGetter): 4173 4174 * bindings/c/c_instance.cpp: Drop all locks when calling out to C. 4175 (KJS::Bindings::CInstance::invokeMethod): 4176 (KJS::Bindings::CInstance::invokeDefaultMethod): 4177 * bindings/c/c_runtime.cpp: Drop all locks when calling out to C. 4178 (KJS::Bindings::CField::valueFromInstance): 4179 (KJS::Bindings::CField::setValueToInstance): 4180 * bindings/jni/jni_objc.mm: 4181 (KJS::Bindings::dispatchJNICall): Drop all locks when calling out to Java. 4182 4183 * bindings/objc/objc_instance.mm: The changes here are to accomodate the 4184 fact that C++ unwinding of DropAllLocks goes crazy when you put it inside 4185 a @try block. I moved all JavaScript stuff outside of the @try blocks, and 4186 then prefixed the whole blocks with DropAllLocks objects. This required some 4187 supporting changes in other functions, which now acquire the JSLock for 4188 themselves, intead of relying on their callers to do so. 4189 (ObjcInstance::end): 4190 (ObjcInstance::invokeMethod): 4191 (ObjcInstance::invokeDefaultMethod): 4192 (ObjcInstance::setValueOfUndefinedField): 4193 (ObjcInstance::getValueOfUndefinedField): 4194 * bindings/objc/objc_runtime.mm: Same as above, except I didn't want to 4195 change throwError to acquire the JSLock for itself. 4196 (ObjcField::valueFromInstance): 4197 (ObjcField::setValueToInstance): 4198 * bindings/objc/objc_utility.mm: Supporting changes mentioned above. 4199 (KJS::Bindings::convertValueToObjcValue): 4200 (KJS::Bindings::convertObjcValueToValue): 4201 4202 * kjs/JSLock.cpp: 4203 (1) Fixed DropAllLocks to behave as advertised, and drop the JSLock only 4204 if the current thread actually acquired it in the first place. This is 4205 important because WebKit needs to ensure that the JSLock has been 4206 dropped before it makes a plug-in call, even though it doesn't know if 4207 the current thread actually acquired the JSLock. (We don't want WebKit 4208 to accidentally drop a lock belonging to *another thread*.) 4209 (2) Used the new per-thread code written for (1) to make recursive calls 4210 to JSLock very cheap. JSLock now knows to call pthread_mutext_lock/ 4211 pthread_mutext_unlock only at nesting level 0. 4212 (KJS::createDidLockJSMutex): 4213 (KJS::JSLock::lock): 4214 (KJS::JSLock::unlock): 4215 (KJS::DropAllLocks::DropAllLocks): 4216 (KJS::DropAllLocks::~DropAllLocks): 4217 (KJS::JSLock::lockCount): 4218 * kjs/JSLock.h: Don't duplicate Noncopyable. 4219 (KJS::JSLock::~JSLock): 4220 4221 * wtf/Assertions.h: Blind attempt at helping the Windows build. 4222 42232007-03-08 Darin Fisher <darin@chromium.org> 4224 4225 Reviewed by Darin. 4226 4227 http://bugs.webkit.org/show_bug.cgi?id=13018 4228 Bug 13018: allow embedders to override the definition of CRASH. 4229 4230 * wtf/Assertions.h: make it possible to override CRASH. 4231 42322007-03-07 Huan Ren <huanr@chromium.org> 4233 4234 Reviewed by Maciej. 4235 4236 Fix http://bugs.webkit.org/show_bug.cgi?id=12535 4237 Bug 12535: Stack-optimizing compilers can trick GC into freeing in-use objects 4238 4239 * kjs/internal.cpp: 4240 (KJS::StringImp::toObject): Copy val onto the stack so it is not subject to garbage collection. 4241 42422007-03-07 Geoffrey Garen <ggaren@apple.com> 4243 4244 Build fix for non-multiple-thread folks. 4245 4246 Use a shared global in the non-multiple-thread case. 4247 4248 * wtf/FastMalloc.cpp: 4249 (WTF::isForbidden): 4250 (WTF::fastMallocForbid): 4251 (WTF::fastMallocAllow): 4252 42532007-03-07 Geoffrey Garen <ggaren@apple.com> 4254 4255 Reviewed by Darin Adler. 4256 4257 Fixed ASSERT failure I just introduced. 4258 4259 Made the fastMalloc isForbidden flag per thread. (Oops!) We expect that 4260 other threads will malloc while we're marking -- we just want to prevent 4261 our own marking from malloc'ing. 4262 4263 * wtf/FastMalloc.cpp: 4264 (WTF::initializeIsForbiddenKey): 4265 (WTF::isForbidden): 4266 (WTF::fastMallocForbid): 4267 (WTF::fastMallocAllow): 4268 (WTF::fastMalloc): 4269 (WTF::fastCalloc): 4270 (WTF::fastFree): 4271 (WTF::fastRealloc): 4272 (WTF::do_malloc): 4273 42742007-03-07 Shrikant Gangoda <shrikant.gangoda@celunite.com> 4275 4276 Reviewed by Maciej. 4277 4278 http://bugs.webkit.org/show_bug.cgi?id=12997 4279 4280 Wrap pthread-specific assertion in #if USE(MULTIPLE_THREADS). 4281 4282 * kjs/collector.cpp: 4283 (KJS::Collector::markMainThreadOnlyObjects): 4284 42852007-03-06 Geoffrey Garen <ggaren@apple.com> 4286 4287 Reviewed by Maciej Stachowiak. 4288 4289 Fixed <rdar://problem/4576242> | http://bugs.webkit.org/show_bug.cgi?id=12586 4290 PAC file: malloc deadlock sometimes causes a hang @ www.apple.com/pro/profiles/ (12586) 4291 4292 This is a modified version of r14752 on the branch. 4293 4294 These changes just add debugging functionality. They ASSERT that we don't 4295 malloc during the mark phase of a garbage collection, which can cause a 4296 deadlock. 4297 4298 * kjs/collector.cpp: 4299 (KJS::Collector::collect): 4300 * wtf/FastMalloc.cpp: 4301 (WTF::fastMallocForbid): 4302 (WTF::fastMallocAllow): 4303 (WTF::fastMalloc): 4304 (WTF::fastCalloc): 4305 (WTF::fastFree): 4306 (WTF::fastRealloc): 4307 (WTF::do_malloc): 4308 * wtf/FastMalloc.h: 4309 43102007-03-06 Geoffrey Garen <ggaren@apple.com> 4311 4312 Reviewed by Maciej Stachowiak. 4313 4314 Fixed all known crashers exposed by run-webkit-tests --threaded. This covers: 4315 4316 <rdar://problem/4565394> | http://bugs.webkit.org/show_bug.cgi?id=12585 4317 PAC file: after closing a window that contains macworld.com, new window 4318 crashes (KJS::PropertyMap::mark()) (12585) 4319 <rdar://problem/4571215> | http://bugs.webkit.org/show_bug.cgi?id=9211 4320 PAC file: Crash occurs when clicking on the navigation tabs at http://www.businessweek.com/ (9211) 4321 <rdar://problem/4557926> 4322 PAC file: Crash occurs when attempting to view image in slideshow mode 4323 at http://d.smugmug.com/gallery/581716 ( KJS::IfNode::execute (KJS:: 4324 ExecState*) + 312) if you use a PAC file 4325 4326 (1) Added some missing JSLocks, along with related ASSERTs. 4327 4328 (2) Fully implemented support for objects that can only be garbage collected 4329 on the main thread. So far, only WebCore uses this. We can add it to API 4330 later if we learn that it's needed. 4331 4332 The implementation uses a "main thread only" flag inside each object. When 4333 collecting on a secondary thread, the Collector does an extra pass through 4334 the heap to mark all flagged objects before sweeping. This solution makes 4335 the common case -- flag lots of objects, but never collect on a secondary 4336 thread -- very fast, even though the uncommon case of garbage collecting 4337 on a secondary thread isn't as fast as it could be. I left some notes 4338 about how to speed it up, if we ever care. 4339 4340 For posterity, here are some things I learned about GC while investigating: 4341 4342 * Each collect must either mark or delete every heap object. "Zombie" 4343 objects, which are neither marked nor deleted, raise these issues: 4344 4345 * On the next pass, the conservative marking algorithm might mark a 4346 zombie, causing it to mark freed objects. 4347 4348 * The client might try to use a zombie, which would seem live because 4349 its finalizer had not yet run. 4350 4351 * A collect on the main thread is free to delete any object. Presumably, 4352 objects allocated on secondary threads have thread-safe finalizers. 4353 4354 * A collect on a secondary thread must not delete thread-unsafe objects. 4355 4356 * The mark function must be thread-safe. 4357 4358 Line by line comments: 4359 4360 * API/JSObjectRef.h: Added comment specifying that the finalize callback 4361 may run on any thread. 4362 4363 * JavaScriptCore.exp: Nothing to see here. 4364 4365 * bindings/npruntime.cpp: 4366 (_NPN_GetStringIdentifier): Added JSLock. 4367 4368 * bindings/objc/objc_instance.h: 4369 * bindings/objc/objc_instance.mm: 4370 (ObjcInstance::~ObjcInstance): Use an autorelease pool. The other callers 4371 to CFRelease needed one, too, but they were dead code, so I removed them 4372 instead. (This fixes a leak seen while running run-webkit-tests --threaded, 4373 although I don't think it's specifically a threading issue.) 4374 4375 * kjs/collector.cpp: 4376 (KJS::Collector::collectOnMainThreadOnly): New function. Tells the collector 4377 to collect a value only if it's collecting on the main thread. 4378 (KJS::Collector::markMainThreadOnlyObjects): New function. Scans the heap 4379 for "main thread only" objects and marks them. 4380 4381 * kjs/date_object.cpp: 4382 (KJS::DateObjectImp::DateObjectImp): To make the new ASSERTs happy, allocate 4383 our globals on the heap, avoiding a seemingly unsafe destructor call at 4384 program exit time. 4385 * kjs/function_object.cpp: 4386 (FunctionPrototype::FunctionPrototype): ditto 4387 4388 * kjs/interpreter.cpp: 4389 (KJS::Interpreter::mark): Removed boolean parameter, which was an incomplete 4390 and arguably hackish way to implement markMainThreadOnlyObjects() inside WebCore. 4391 * kjs/interpreter.h: 4392 4393 * kjs/identifier.cpp: 4394 (KJS::identifierTable): Added some ASSERTs to check for thread safety 4395 problems. 4396 4397 * kjs/list.cpp: Added some ASSERTs to check for thread safety problems. 4398 (KJS::allocateListImp): 4399 (KJS::List::release): 4400 (KJS::List::append): 4401 (KJS::List::empty): Make the new ASSERTs happy. 4402 4403 * kjs/object.h: 4404 (KJS::JSObject::JSObject): "m_destructorIsThreadSafe" => "m_collectOnMainThreadOnly". 4405 I removed the constructor parameter because m_collectOnMainThreadOnly, 4406 like m_marked, is a Collector bit, so only the Collector should set or get it. 4407 4408 * kjs/object_object.cpp: 4409 (ObjectPrototype::ObjectPrototype): Make the ASSERTs happy. 4410 * kjs/regexp_object.cpp: 4411 (RegExpPrototype::RegExpPrototype): ditto 4412 4413 * kjs/ustring.cpp: Added some ASSERTs to check for thread safety problems. 4414 (KJS::UCharReference::ref): 4415 (KJS::UString::Rep::createCopying): 4416 (KJS::UString::Rep::create): 4417 (KJS::UString::Rep::destroy): 4418 (KJS::UString::null): Make the new ASSERTs happy. 4419 * kjs/ustring.h: 4420 (KJS::UString::Rep::ref): Added some ASSERTs to check for thread safety problems. 4421 (KJS::UString::Rep::deref): 4422 4423 * kjs/value.h: 4424 (KJS::JSCell::JSCell): 4425 44262007-03-06 Geoffrey Garen <ggaren@apple.com> 4427 4428 Reviewed by Maciej Stachowiak. 4429 4430 2% speedup on super accurate JS iBench. 4431 4432 (KJS::Collector::collect): Removed anti-optimization to call 4433 pthread_is_threaded_np() before calling pthread_main_np(). Almost all 4434 apps have more than one thread, so the extra call is actually worse. 4435 Interestingly, even the single-threaded testkjs shows a speed gain 4436 from removing the pthread_is_threaded_np() short-circuit. Not sure why. 4437 44382007-03-04 Peter Kasting <pkasting@google.com> 4439 4440 Reviewed by Nikolas Zimmermann. 4441 4442 - fix http://bugs.webkit.org/show_bug.cgi?id=12950 4443 Assertions.cpp should not #define macros that are already defined 4444 4445 * wtf/Assertions.cpp: Don't #define WINVER and _WIN32_WINNT if they 4446 are already defined. 4447 44482007-03-02 Steve Falkenburg <sfalken@apple.com> 4449 4450 Reviewed by Anders. 4451 4452 Add unsigned int hash traits (matches existing unsigned long version) 4453 4454 * wtf/HashTraits.h: 4455 (WTF::): 4456 44572007-03-02 Adam Roben <aroben@apple.com> 4458 4459 Reviewed by Kevin M. 4460 4461 Try to fix the Qt build. 4462 4463 * kjs/DateMath.cpp: 4464 (KJS::msToGregorianDateTime): Removed unnecessary "struct" keyword. 4465 * kjs/DateMath.h: Moved forward declarations to the top of the file 4466 before they are used. 4467 * kjs/date_object.cpp: 4468 (KJS::formatLocaleDate): Changed to take a const GregorianDateTime& 4469 since GregorianDateTime is Noncopyable. 4470 44712007-03-02 Darin Adler <darin@apple.com> 4472 4473 Reviewed by Kevin McCullough. 4474 4475 - fix http://bugs.webkit.org/show_bug.cgi?id=12867 4476 REGRESSION: BenchJS test 7 (dates) is 220% slower than in Safari 2.0.4 4477 4478 * kjs/DateMath.h: Marked GregorianDateTime as noncopyable, since it has a non-trivial 4479 destructor and not the correspoding copy constructor or assignment operator. 4480 Changed the GregorianDateTime constructor to use member initialization syntax. 4481 Fixed the destructor to use the array delete operator, since timeZone is an array. 4482 4483 * kjs/DateMath.cpp: 4484 (KJS::daysInYear): Changed to call isLeapYear so the rule is not repeated twice. 4485 (KJS::getUTCOffset): Added caching on PLATFORM(DARWIN), since we can rely on the 4486 notify_check function and "com.apple.system.timezone" to let us know when the 4487 offset has changed. 4488 44892007-02-27 Geoffrey Garen <ggaren@apple.com> 4490 4491 Reviewed by Darin Adler. 4492 4493 Follow-up to fixing http://bugs.webkit.org/show_bug.cgi?id=12659 | <rdar://problem/4954306> 4494 JS objects not collected after closing window @ ebay.com/maps.google.com 4495 4496 Changed Interpreter cache of global constructors and prototypes from 4497 ProtectedPtrs to bare, marked pointers. ProtectedPtrs are inefficient, 4498 and they increase the risk of reference cycles. Also, Darin said something 4499 about ProtectedPtrs giving him warts. 4500 4501 Also changed data members to precise types from generic JSObject*'s. 4502 4503 Layout tests and JS tests pass. 4504 4505 * kjs/SavedBuiltins.h: 4506 * kjs/interpreter.cpp: 4507 (KJS::Interpreter::init): 4508 (KJS::Interpreter::~Interpreter): 4509 (KJS::Interpreter::initGlobalObject): Moved Identifier::init() call to 4510 constructor, for clarity. 4511 (KJS::Interpreter::mark): 4512 * kjs/interpreter.h: 4513 45142007-02-27 Geoffrey Garen <ggaren@apple.com> 4515 4516 Reviewed by Maciej Stachowiak. 4517 4518 Fixed http://bugs.webkit.org/show_bug.cgi?id=12659 | <rdar://problem/4954306> 4519 JS objects not collected after closing window @ ebay.com/maps.google.com 4520 4521 Don't GC in the Interpreter destructor. For that to work, the Interpreter 4522 would have to NULL out all of its ProtectedPtrs before calling collect(). But 4523 we've decided that we don't want things to work that way, anyway. We want the 4524 client to be in charge of manual GC so that it can optimize cases when 4525 it will be destroying many interpreters at once 4526 (e.g., http://bugs.webkit.org/show_bug.cgi?id=12900). 4527 4528 Also removed Interpreter::collect() because it was redundant with 4529 Collector::collect(). 4530 4531 * JavaScriptCore.exp: 4532 * kjs/interpreter.cpp: 4533 (KJS::Interpreter::~Interpreter): 4534 * kjs/testkjs.cpp: 4535 (TestFunctionImp::callAsFunction): 4536 45372007-02-26 Krzysztof Kowalczyk <kkowalczyk@gmail.com> 4538 4539 Reviewed by Adam Roben. 4540 4541 Rename *_SUPPORT defines to ENABLE_*. 4542 4543 * jscore.bkl: 4544 45452007-02-26 Maciej Stachowiak <mjs@apple.com> 4546 4547 Reviewed by Lars. 4548 4549 - <rdar://problem/5021698> Disable experimental SVG features (12883) 4550 4551 * wtf/Platform.h: Add ENABLE() macro similar to HAVE() and USE(), to 4552 allow nicer handling of optional WebKit features. 4553 45542007-02-22 George Staikos <staikos@kde.org> 4555 4556 Reviewed by Lars. 4557 4558 Add return values 4559 4560 * wtf/unicode/qt4/UnicodeQt4.h: 4561 (WTF::Unicode::toLower): 4562 (WTF::Unicode::toUpper): 4563 45642007-02-22 Oscar Cwajbaum <public@oscarc.net> 4565 4566 Reviewed by Maciej. 4567 4568 Fix ARM-specific alignment problem in FastMalloc 4569 http://bugs.webkit.org/show_bug.cgi?id=12841 4570 4571 * wtf/FastMalloc.cpp: 4572 Modify how pageheap_memory is declared to ensure proper alignment 4573 on architectures such as ARM 4574 45752007-02-20 Zack Rusin <zrusin@trolltech.com> 4576 4577 Reviewed by Lars 4578 4579 Make sure that non-void methods always return something. 4580 4581 * wtf/unicode/qt4/UnicodeQt4.h: 4582 (WTF::Unicode::toLower): 4583 (WTF::Unicode::toUpper): 4584 (WTF::Unicode::foldCase): 4585 45862007-02-18 Kevin Ollivier <kevino@theolliviers.com> 4587 4588 Reviewed by Adam Roben. 4589 4590 Fix cases where MSVC-specific code was identified as Win32 platform 4591 code. (as it should be compiled for e.g. wx port when using MSVC too) 4592 4593 * wtf/Assertions.h: 4594 * wtf/MathExtras.h: 4595 * wtf/StringExtras.h: 4596 changed PLATFORM(WIN) sections to COMPILER(MSVC) as necessary 4597 45982007-02-17 Krzysztof Kowalczyk <kkowalczyk@gmail.com> 4599 4600 Reviewed by Adam Roben. 4601 4602 Fix crashes on ARM due to different struct packing. Based on a patch 4603 by Mike Emmel. 4604 * kjs/ustring.cpp: compile-time assert to make sure sizeof(UChar) == 2 4605 * kjs/ustring.h: pack UChar struct to ensure that sizeof(UChar) == 2 4606 * wtf/Assertions.h: add COMPILE_ASSERT macro for compile-time assertions 4607 46082007-02-16 George Staikos <staikos@kde.org> 4609 4610 Reviewed by Maciej. 4611 4612 Fix uninitialized variable 4613 4614 * bindings/testbindings.cpp: 4615 (myAllocate): 4616 46172007-02-16 Anders Carlsson <acarlsson@apple.com> 4618 4619 Reviewed by Mitz. 4620 4621 http://bugs.webkit.org/show_bug.cgi?id=12788 4622 REGRESSION: Going back one page in history has a noticeable delay 4623 4624 Um...if all elements in two vectors are equal, then I guess we could say that 4625 the two vectors are equal too. 4626 4627 * wtf/Vector.h: 4628 (WTF::): 4629 46302007-02-14 Anders Carlsson <acarlsson@apple.com> 4631 4632 Reviewed by Darin. 4633 4634 Add new canCompareWithMemcmp vector trait and use it to determine whether 4635 operator== can use memcmp. 4636 4637 * wtf/Vector.h: 4638 (WTF::): 4639 (WTF::VectorTypeOperations::compare): 4640 (WTF::operator==): 4641 * wtf/VectorTraits.h: 4642 (WTF::): 4643 46442007-02-13 Brady Eidson <beidson@apple.com> 4645 4646 Reviewed by Darin 4647 4648 Tweaked vector a bit 4649 4650 * wtf/Vector.h: 4651 (WTF::operator==): 4652 46532007-02-13 Matt Perry <mpcomplete@chromium.org> 4654 4655 Reviewed by Darin. 4656 4657 - fix for http://bugs.webkit.org/show_bug.cgi?id=12750 4658 Vector operator== was not defined correctly. It returned void, 4659 did not accept const Vectors, and used an int instead of size_t. 4660 4661 * wtf/Vector.h: fixed comparison operators 4662 (WTF::operator==): 4663 (WTF::operator!=): 4664 46652007-02-10 David Carson <dacarson@gmail.com> 4666 4667 Reviewed by Maciej. 4668 4669 - fix for http://bugs.webkit.org/show_bug.cgi?id=12636 4670 Corrected the generation of method signatures when the parameter 4671 is an Array. 4672 Added support for converting a Javascript array to a Java array. 4673 4674 * bindings/jni/jni_utility.h: added new type for array, array_type 4675 * bindings/jni/jni_runtime.cpp: add support for new array type 4676 (JavaField::valueFromInstance): 4677 (JavaField::setValueToInstance): 4678 (JavaMethod::JavaMethod): 4679 (JavaMethod::signature): 4680 * bindings/jni/jni_utility.cpp: add support for new array type 4681 (KJS::Bindings::callJNIMethod): 4682 (KJS::Bindings::callJNIStaticMethod): 4683 (KJS::Bindings::callJNIMethodIDA): 4684 (KJS::Bindings::JNITypeFromClassName): 4685 (KJS::Bindings::signatureFromPrimitiveType): 4686 (KJS::Bindings::JNITypeFromPrimitiveType): 4687 (KJS::Bindings::getJNIField): 4688 (KJS::Bindings::convertArrayInstanceToJavaArray): new method 4689 converts the Javascript array to the requested Java array. 4690 (KJS::Bindings::convertValueToJValue): 4691 46922007-02-08 Anders Carlsson <acarlsson@apple.com> 4693 4694 Reviewed by Geoff. 4695 4696 <rdar://problem/4930614> 4697 Safari complains about "Slow Script" if GMail is left open and machine is busy 4698 4699 <rdar://problem/4649516> 4700 Turn off slow script dialog or crank up time that makes it come up 4701 4702 <rdar://problem/4963589> 4703 Slow script warning is displayed after closing of PROMPT or PRINT dialog 4704 4705 Re-do the way script timeouts are handled. No longer use a unix timer that sends signals. Instead, add a 4706 tick count and increment it in loop bodies. If the tick count reaches a threshold, do a timeout check. If the total time executing 4707 is higher than the timeout value, (possibly) interrupt the script. The timeout checker also adjusts the threshold dynamically 4708 to prevent doing the timeout check too often. 4709 4710 * JavaScriptCore.exp: 4711 Remove pause and resume calls. 4712 4713 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: 4714 Add winmm.lib. 4715 4716 * kjs/interpreter.cpp: 4717 (KJS::Interpreter::init): 4718 (KJS::Interpreter::~Interpreter): 4719 (KJS::Interpreter::startTimeoutCheck): 4720 (KJS::Interpreter::stopTimeoutCheck): 4721 (KJS::Interpreter::resetTimeoutCheck): 4722 (KJS::getCurrentTime): 4723 (KJS::Interpreter::checkTimeout): 4724 * kjs/interpreter.h: 4725 (KJS::Interpreter::timedOut): 4726 * kjs/nodes.cpp: 4727 (DoWhileNode::execute): 4728 (WhileNode::execute): 4729 (ForNode::execute): 4730 47312007-02-07 Darin Adler <darin@apple.com> 4732 4733 * JavaScriptCore.vcproj/JavaScriptCore.sln: Reenable testkjs. 4734 47352007-02-07 Darin Adler <darin@apple.com> 4736 4737 Reviewed by Geoff. 4738 4739 - another build fix; this time for sure 4740 4741 * pcre/pcre_exec.c: (match): 4742 The compiler caught an incorrect use of the othercase variable across 4743 a call to RMATCH in character repeat processing. Local variables can 4744 change in the crazy NO_RECURSE mode that we use, so we instead need 4745 the value in othercase to be in one of the special stack frame variables. 4746 Added a new stack frame variable for this purpose named repeat_othercase. 4747 Also noted a similar error in the non-UTF-16 side of the #ifdef, but 4748 didn't try to fix that one. Also removed a SUPPORT_UCP #ifdef from the 4749 PCRE_UTF16 side; that code doesn't work without the Unicde properties 4750 table, and we don't try to use it that way. 4751 47522007-02-06 Steve Falkenburg <sfalken@apple.com> 4753 4754 Disable testkjs in sln until we figure out mysterious compiler warning. 4755 4756 * JavaScriptCore.vcproj/JavaScriptCore.sln: 4757 47582007-02-06 Steve Falkenburg <sfalken@apple.com> 4759 4760 Build fix by ggaren 4761 4762 * pcre/pcre_exec.c: 4763 (match): 4764 47652007-02-06 Darin Adler <darin@apple.com> 4766 4767 Reviewed by Geoff. 4768 4769 - fix <rdar://problem/4979089> PCRE should avoid setjmp/longjmp even when compiler 4770 is not GCC 4771 4772 Added a new code path that's slower and way uglier but doesn't rely on GCC's 4773 computed gotos. 4774 4775 * pcre/pcre_exec.c: Added a numeric parameter to the RMATCH function. It must be 4776 different at every RMATCH call site. Changed the non-GCC NO_RECURSE version of 4777 the macro to use a label incorporating the number. Changed the RRETURN macro to 4778 use a goto instead of longjmp. 4779 (match): Added a different number at each callsite, using a perl script for the 4780 first-time task. Going forward it should be easy to maintain by hand. Added a 4781 switch statement at the bottom of the function. We'll get compile time errors 4782 if we have anything in the switch statement that's never used in an RMATCH, 4783 but errors in the other direction are silent except at runtime. 4784 47852007-02-06 Darin Adler <darin@apple.com> 4786 4787 Reviewed by John. 4788 4789 - fix <rdar://problem/4687840> 9A241: JavaScript RegExp 25-30x slower than on 10.4.7 4790 4791 I used Shark to figure out what to do. The test case is now 15% faster than with 4792 stock Safari. Some other regular expression cases might still be a few % slower 4793 than before, but the >10x slowdown is now completely gone. 4794 4795 1) Fix slowness caused by setjmp/longjmp by using computed goto instead. 4796 4797 Use GCC extensions - locally declared labels, labels as values, and computed goto - 4798 instead of using setjmp/longjmp to implemement non-recursive version of the regular 4799 expression system. We could probably make this even faster if we reduced the use 4800 of malloc a bit too. 4801 4802 2) Fix slowness caused by allocating heapframe objects by allocating the first 4803 16 of them from the stack. 4804 4805 3) Speed up use of malloc and free in PCRE by making it use fastMalloc and fastFree. 4806 4807 4) Speed up the test case by adding a special case to a UString function. 4808 4809 5) Made a small improvement to the innermost hottest loop of match by hoisting 4810 the conversion from int to pcre_uchar out of the loop. 4811 4812 * JavaScriptCore.xcodeproj/project.pbxproj: Compile FastMallocPCRE.cpp, and don't 4813 compile pcre_globals.c. 4814 4815 * wtf/FastMallocPCRE.cpp: Added. A copy of pcre_globals.c that uses FastMalloc.h. 4816 This is better than code that sets the PCRE allocation globals because by doing it 4817 this way there's guaranteed to be no problem with order of initialization. 4818 4819 * kjs/ustring.cpp: (KJS::UString::spliceSubstringsWithSeparators): Add a fast 4820 special case when this is called for only one subrange and no seaprators. This 4821 was happening a lot in the test case and it seems quite reasonable to optimize this. 4822 4823 * pcre/pcre_exec.c: Create a copy of the RMATCH and RRETURN macros that use goto 4824 instead of setjmp/longjmp. Change code that calls pcre_stack_malloc to first use 4825 storage on the stack inside the match function. 4826 (match): Move initialization of utf8 up a couple lines to avoid "possibly used 4827 uninitialized" warning. Use a local variable so we compare with pcre_uchar instead 4828 of with int inside the inner "find a character" loop. 4829 48302007-02-03 George Staikos <staikos@kde.org> 4831 4832 Reviewed by Alexey. 4833 4834 -1 is not a valid point. We can't handle anything > 0xffff anyway. 4835 Fixes crash on cases like eval("x"); 4836 4837 * wtf/unicode/qt4/UnicodeQt4.h: 4838 (WTF::Unicode::category): 4839 48402007-02-02 Darin Adler <darin@apple.com> 4841 4842 Reviewed by Anders. 4843 4844 - fix copying and assigning a ListHashSet 4845 4846 No test because the code path with bugs I am fixing is not used yet. 4847 4848 * wtf/ListHashSet.h: Tweaked ListHashSetNodeAllocator a little bit for clarity. 4849 Changed m_allocator to be an OwnPtr instead of doing an explicit delete. 4850 Fixed bug in copy constructor where we'd have an uninitialized m_allocator. 4851 Fixed bug in assignment operator where it would swap only the hash table, and 4852 not the head, tail, and allocator pointers. 4853 48542007-02-02 Geoffrey Garen <ggaren@apple.com> 4855 4856 Reviewed by Maciej Stachowiak. 4857 4858 Use WTFLog instead of fprintf for logging KJS::Node leaks. 4859 4860 * kjs/nodes.cpp: 4861 (NodeCounter::~NodeCounter): Changed count to unsigned, updated 4862 to match style guidelines. 4863 48642007-02-02 Maciej Stachowiak <mjs@apple.com> 4865 4866 - not reviewed, build fix 4867 4868 * wtf/ListHashSet.h: 4869 (WTF::ListHashSetNodeAllocator::ListHashSetNodeAllocator): ummm, use union correctly 4870 48712007-02-01 Maciej Stachowiak <mjs@apple.com> 4872 4873 Reviewed by Darin. 4874 4875 - use a custom allocator for ListHashSet, to fix ~1% perf regression using it for form control 4876 4877 * wtf/ListHashSet.h: 4878 (WTF::ListHashSetNodeAllocator::ListHashSetNodeAllocator): 4879 (WTF::ListHashSetNodeAllocator::allocate): 4880 (WTF::ListHashSetNodeAllocator::deallocate): 4881 (WTF::ListHashSetNode::operator new): 4882 (WTF::ListHashSetNode::operator delete): 4883 (WTF::ListHashSetNode::destroy): 4884 (WTF::ListHashSetTranslator::translate): 4885 (WTF::::ListHashSet): 4886 (WTF::::~ListHashSet): 4887 (WTF::::add): 4888 (WTF::::unlinkAndDelete): 4889 (WTF::::deleteAllNodes): 4890 48912007-01-31 Maciej Stachowiak <mjs@apple.com> 4892 4893 Reviewed by Adam. 4894 4895 - fix sporadic crash 4896 4897 * wtf/ListHashSet.h: 4898 (WTF::::remove): remove before deleting 4899 49002007-01-31 Maciej Stachowiak <mjs@apple.com> 4901 4902 Reviewed by Mark with help from Lars. 4903 4904 - added new ListHashSet class, which combines a hashtable and a linked list to provide a set 4905 that keeps elements in inserted order 4906 4907 This is to assist in fixing the following: 4908 <rdar://problem/4751164> REGRESSION: Safari places text on incorrect button when returning to a page via back [10541] 4909 http://bugs.webkit.org/show_bug.cgi?id=10541 4910 4911 * JavaScriptCore.vcproj/WTF/WTF.vcproj: 4912 * JavaScriptCore.xcodeproj/project.pbxproj: 4913 * wtf/HashTable.h: 4914 (WTF::HashTable::find): 4915 (WTF::HashTable::contains): 4916 (WTF::::find): 4917 (WTF::::contains): 4918 * wtf/ListHashSet.h: Added. 4919 (WTF::ListHashSetNode::ListHashSetNode): 4920 (WTF::ListHashSetNodeHashFunctions::hash): 4921 (WTF::ListHashSetNodeHashFunctions::equal): 4922 (WTF::ListHashSetIterator::ListHashSetIterator): 4923 (WTF::ListHashSetIterator::get): 4924 (WTF::ListHashSetIterator::operator*): 4925 (WTF::ListHashSetIterator::operator->): 4926 (WTF::ListHashSetIterator::operator++): 4927 (WTF::ListHashSetIterator::operator--): 4928 (WTF::ListHashSetIterator::operator==): 4929 (WTF::ListHashSetIterator::operator!=): 4930 (WTF::ListHashSetIterator::operator const_iterator): 4931 (WTF::ListHashSetIterator::node): 4932 (WTF::ListHashSetConstIterator::ListHashSetConstIterator): 4933 (WTF::ListHashSetConstIterator::get): 4934 (WTF::ListHashSetConstIterator::operator*): 4935 (WTF::ListHashSetConstIterator::operator->): 4936 (WTF::ListHashSetConstIterator::operator++): 4937 (WTF::ListHashSetConstIterator::operator--): 4938 (WTF::ListHashSetConstIterator::operator==): 4939 (WTF::ListHashSetConstIterator::operator!=): 4940 (WTF::ListHashSetConstIterator::node): 4941 (WTF::ListHashSetTranslator::hash): 4942 (WTF::ListHashSetTranslator::equal): 4943 (WTF::ListHashSetTranslator::translate): 4944 (WTF::::ListHashSet): 4945 (WTF::::operator): 4946 (WTF::::~ListHashSet): 4947 (WTF::::size): 4948 (WTF::::capacity): 4949 (WTF::::isEmpty): 4950 (WTF::::begin): 4951 (WTF::::end): 4952 (WTF::::find): 4953 (WTF::::contains): 4954 (WTF::::add): 4955 (WTF::::remove): 4956 (WTF::::clear): 4957 (WTF::::unlinkAndDelete): 4958 (WTF::::appendNode): 4959 (WTF::::deleteAllNodes): 4960 (WTF::::makeIterator): 4961 (WTF::::makeConstIterator): 4962 (WTF::deleteAllValues): 4963 49642007-01-30 Darin Adler <darin@apple.com> 4965 4966 * kjs/DateMath.cpp: Fix license header to reflect LGPL as the first license 4967 mentioned. We still mention the option of using under MPL or GPL since some 4968 of this code came from the Mozilla project with those license terms. 4969 49702007-01-30 Simon Hausmann <hausmann@kde.org> 4971 4972 Reviewed by Zack. 4973 4974 Turned JavaScriptCore from a separate library into an includable 4975 project, to combine it all into libWebKitQt. 4976 4977 * JavaScriptCore.pri: Added. 4978 * JavaScriptCore.pro: Removed. 4979 * kjs/testkjs.pro: 4980 49812007-01-29 Geoffrey Garen <ggaren@apple.com> 4982 4983 Reviewed by Maciej Stachowiak. 4984 4985 Fixed <rdar://problem/4485644> REGRESSION: JavaScriptCore has init routines 4986 4987 The TCMalloc module now initializes, if needed, inside GetCache() and 4988 fastMallocSetIsMultiThreaded(). We leverage the same synchronization 4989 technique used for enabling / disabling the single-threaded optimization 4990 to synchronize initialization of the library without requiring a lock 4991 for every malloc. 4992 4993 1,251 runs of tcmalloc_unittest, 2 runs of a custom, massively multi-threaded 4994 tcmalloc_unittest, and my custom version of the PLT show no regressions. 4995 Super-accurate JS iBench reports a .24% regression, which is right at the 4996 limit of its error range, so I'm declaring victory. 4997 4998 * wtf/FastMalloc.cpp: 4999 (WTF::fastMallocSetIsMultiThreaded): Initialize, if needed. (InitModule() 5000 checks the "if needed" part.) 5001 (WTF::TCMalloc_ThreadCache::GetCache): Restored original TCMalloc code 5002 inside #ifdef, for posterity. Added new initialization logic. 5003 (WTF::TCMalloc_ThreadCache::InitModule): Call InitTSD(), since we don't 5004 have a static initializer to call it for us, now. This means that fastMalloc 5005 is not usable as a general libc allocator, but it never was, and if it were 5006 the general libc allocator, we wouldn't be here in the first place, so whatever. 5007 (WTF::TCMalloc_ThreadCache::InitTSD): Don't try to take the pageheap_lock, 5008 since InitModule already has it. 5009 50102007-01-29 Kevin McCullough <KMcCullough@apple.com> 5011 5012 Reviewed by Geoff and Oliver. 5013 5014 - rdar://problem/4955561 5015 - missusing JavaScript shouldn't crash webkit. Now it doesn't, in this case. 5016 5017 * bindings/objc/objc_runtime.mm: 5018 (ObjcFallbackObjectImp::callAsFunction): 5019 * bindings/runtime_method.cpp: 5020 (RuntimeMethod::callAsFunction): 5021 * bindings/runtime_object.cpp: 5022 (RuntimeObjectImp::callAsFunction): 5023 50242007-01-28 Geoffrey Garen <ggaren@apple.com> 5025 5026 Reviewed by Maciej Stachowiak. 5027 5028 First step in fixing <rdar://problem/4485644> REGRESSION: JavaScriptCore 5029 has init routines 5030 5031 Don't rely on a static initializer to store the main thread's ID (which 5032 we would use to detect allocations on secondary threads). Instead, require 5033 the caller to notify fastMalloc if it might allocate on a secondary thread. 5034 5035 Also fixed what seemed like a race condition in do_malloc. 5036 5037 tcmalloc_unittest and my custom versions of JS iBench and PLT show no 5038 regressions. 5039 5040 * wtf/FastMalloc.cpp: 5041 (WTF::fastMallocSetIsMultiThreaded): 5042 (1) Renamed from "fastMallocRegisterThread", which was a misleading name because 5043 not all threads need to register with fastMalloc -- only secondary threads 5044 need to, and only for the purpose of disabling its single-threaded optimization. 5045 5046 (2) Use the pageheap_lock instead of a custom one, since we need to synchronize 5047 with the read of isMultiThreaded inside CreateCacheIfNecessary. This is a new 5048 requirement, now that we can't guarantee that the first call to CreateCacheIfNecessary 5049 will occur on the main thread at init time, before any other threads have been created. 5050 5051 (WTF::TCMalloc_ThreadCache::CreateCacheIfNecessary): 5052 (WTF::do_malloc): Reverted WTF change only to call GetCache() if size <= kMaxSize. 5053 The WTF code would read phinited without holding the pageheap_lock, which 5054 seemed like a race condition. Regardless, calling GetCache reduces the number 5055 of code paths to module initialization, which will help in writing the 5056 final fix for this bug. 5057 50582007-01-28 David Kilzer <ddkilzer@webkit.org> 5059 5060 Reviewed by Darin. 5061 5062 - fix http://bugs.webkit.org/show_bug.cgi?id=9815 5063 JavaScript TypeError loading Dean Edwards' JS compressor/obfuscator 5064 5065 Creating a function using 'new Function()' was not setting its prototype with the 5066 same flags as 'function() { }'. 5067 5068 Test: fast/js/function-prototype.html 5069 5070 * kjs/function_object.cpp: 5071 (FunctionObjectImp::construct): Change flags from DontEnum|DontDelete|ReadOnly to 5072 Internal|DontDelete to match FuncDeclNode::processFuncDecl() and 5073 FuncExprNode::evaluate() in kjs/nodes.cpp. 5074 50752007-01-27 Geoffrey Garen <ggaren@apple.com> 5076 5077 Reviewed by Beth Dakin. 5078 5079 Added some missing JSLocks, which might fix <rdar://problem/4889707>. 5080 5081 We need to lock whenever we might allocate memory because our FastMalloc 5082 implementation requires clients to register their threads, which we do 5083 through JSLock. 5084 5085 We also need to lock whenever modifying ref-counts because they're not 5086 thread-safe. 5087 5088 * API/JSObjectRef.cpp: 5089 (JSClassCreate): Allocates memory 5090 (JSClassRetain): Modifies a ref-count 5091 (JSClassRelease): Modifies a ref-count 5092 (JSPropertyNameArrayRetain): Modifies a ref-count 5093 (JSPropertyNameArrayRelease): Modifies a ref-count 5094 * API/JSStringRef.cpp: 5095 (JSStringRetain): Modifies a ref-count 5096 * API/JSValueRef.cpp: 5097 (JSValueIsInstanceOfConstructor): Might allocate memory if an exception 5098 is thrown. 5099 51002007-01-27 Lars Knoll <lars@trolltech.com> 5101 5102 Fix the Qt build. 5103 5104 * bindings/qt/qt_instance.h: 5105 51062007-01-25 Geoffrey Garen <ggaren@apple.com> 5107 5108 Reviewed by Maciej Stachowiak. 5109 5110 Fixed <rdar://problem/4608404> WebScriptObject's _rootObject lack 5111 of ownership policy causes crashes (e.g., in Dashcode) 5112 5113 The old model for RootObject ownership was either to (1) leak them or (2) assign 5114 them to a single owner -- the WebCore::Frame -- which would destroy them 5115 when it believed that all of its plug-ins had unloaded. 5116 5117 This model was broken because of (1) and also because plug-ins are not the only 5118 RootObject clients. All Bindings clients are RootObjects clients, including 5119 applications, which outlive any particular WebCore::Frame. 5120 5121 The new model for RootObject ownership is to reference-count them, with a 5122 throw-back to the old model: The WebCore::Frame tracks the RootObjects 5123 it creates, and invalidates them when it believes that all of its plug-ins 5124 have unloaded. 5125 5126 We maintain this throw-back to avoid plug-in leaks, particularly from Java. 5127 Java is completely broken when it comes to releasing JavaScript objects. 5128 Comments in our code allege that Java does not always call finalize when 5129 collecting objects. Moreoever, my own testing reveals that, when Java does 5130 notify JavaScript of a finalize, the data it provides is totally bogus. 5131 5132 This setup is far from ideal, but I don't think we can do better without 5133 completely rewriting the bindings code, and possibly part of the Java 5134 plug-in / VM. 5135 5136 Layout tests pass. No additional leaks reported. WebCore/manual-tests/*liveconnect* 5137 and a few LiveConnect demos on the web also run without a hitch. 5138 5139 const RootObject* => RootObject*, since we need to ref/deref 5140 5141 * bindings/NP_jsobject.cpp: 5142 (jsDeallocate): deref our RootObjects. Also unprotect or JSObject, instead 5143 of just relying on the RootObject to do it for us when it's invalidated. 5144 (_isSafeScript): Check RootObject validity. 5145 (_NPN_CreateScriptObject): ditto 5146 (_NPN_Invoke): ditto 5147 (_NPN_Evaluate): ditto 5148 (_NPN_GetProperty): ditto 5149 (_NPN_SetProperty): ditto 5150 (_NPN_RemoveProperty): ditto 5151 (_NPN_HasProperty): ditto 5152 (_NPN_HasMethod): ditto 5153 (_NPN_SetException): ditto 5154 5155 * bindings/runtime_root.cpp: 5156 Revived bit-rotted LIAR LIAR LIAR comment. 5157 5158 LOOK: Added support for invalidating RootObjects without deleting them, 5159 which is the main goal of this patch. 5160 5161 Moved protect counting into the RootObject class, to emphasize that 5162 the RootObject protects the JSObject, and unprotects it upon being invalidated. 5163 addNativeReference => RootObject::gcProtect 5164 removeNativeReference => RootObject::gcUnprotect 5165 ProtectCountSet::contains => RootObject::gcIsProtected 5166 5167 I know we'll all be sad to see the word "native" go. 5168 5169 * bindings/runtime_root.h: Added ref-counting support to RootObject, with 5170 all the standard accoutrements. 5171 5172 * bindings/c/c_utility.cpp: 5173 (KJS::Bindings::convertValueToNPVariant): If we can't find a valid RootObject, 5174 return void instead of just leaking. 5175 5176 * bindings/jni/jni_instance.cpp: 5177 (JavaInstance::JavaInstance): Don't take a RootObject in our constructor; 5178 be like other Instances and require the caller to call setRootObject. This 5179 reduces the number of ownership code paths. 5180 (JavaInstance::invokeMethod): Check RootObject for validity. 5181 * bindings/jni/jni_instance.h: Removed private no-arg constructor. Having 5182 an arg constructor accomplishes the same thing. 5183 5184 * bindings/jni/jni_jsobject.cpp: 5185 (JavaJSObject::invoke): No need to call findProtectCountSet, because finalize() 5186 checks for RootObject validity. 5187 (JavaJSObject::JavaJSObject): check RootObject for validity 5188 (JavaJSObject::call): ditto 5189 (JavaJSObject::eval): ditto 5190 (JavaJSObject::getMember): ditto 5191 (JavaJSObject::setMember): ditto 5192 (JavaJSObject::removeMember): ditto 5193 (JavaJSObject::getSlot): ditto 5194 (JavaJSObject::setSlot): ditto 5195 (JavaJSObject::toString): ditto 5196 (JavaJSObject::finalize): ditto 5197 (JavaJSObject::createNative): No need to tell the RootObject to protect 5198 the global object, since the RootObject already owns the interpreter. 5199 5200 * bindings/jni/jni_runtime.cpp: 5201 (JavaArray::JavaArray): Removed copy construcutor becaue it was unused. 5202 Dead code is dangerous code. 5203 5204 * bindings/objc/objc_runtime.mm: Added WebUndefined protocol. Previous use 5205 of WebScriptObject was bogus, because WebUndefined is not a subclass of 5206 WebScriptObject. 5207 (convertValueToObjcObject): If we can't find a valid RootObject, 5208 return nil instead of just leaking. 5209 5210 * bindings/objc/objc_utility.mm: 5211 (KJS::Bindings::convertValueToObjcValue): If we can't find a valid RootObject, 5212 return nil instead of just leaking. 5213 52142007-01-27 Andrew Wellington <proton@wiretapped.net> 5215 5216 Reviewed by Maciej. 5217 5218 Fix for Repeated string concatenation results in OOM crash 5219 http://bugs.webkit.org/show_bug.cgi?id=11131 5220 5221 * kjs/operations.cpp: 5222 (KJS::add): Throw exception if string addition result is null 5223 * kjs/ustring.cpp: 5224 (KJS::UString::UString): Don't call memcpy when malloc failed 5225 52262007-01-25 Jan Kraemer <camel@gmx.de> 5227 5228 Reviewed by Maciej 5229 5230 Fix for http://bugs.webkit.org/show_bug.cgi?id=12382 5231 5232 Fix crash on architectures with 32 bit ints and 5233 64 bit longs (For example Linux on AMD64) 5234 5235 * kjs/dtoa.cpp: #define Long int as suggested in comment 5236 52372007-01-24 Geoffrey Garen <ggaren@apple.com> 5238 5239 Fixed up #include order for style. No review necessary. 5240 5241 * API/JSStringRef.cpp: 5242 52432007-01-24 Geoffrey Garen <ggaren@apple.com> 5244 5245 Reviewed by Maciej Stachowiak. 5246 5247 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: 5248 Copy JSStringRefCF, in case anybody wants to use it. (I just added 5249 it recently.) 5250 52512007-01-24 Maciej Stachowiak <mjs@apple.com> 5252 5253 Not reviewed, trivial property change. 5254 5255 * JavaScriptCore.vcproj/JavaScriptCore.sln: remove svn:mime-type 5256 property which made this binary. 5257 52582007-01-25 Mark Rowe <mrowe@apple.com> 5259 5260 Reviewed by Darin. 5261 5262 * Info.plist: Update copyright string. 5263 52642007-01-24 Darin Adler <darin@apple.com> 5265 5266 Reviewed by Mark Rowe. 5267 5268 * JavaScriptCore.xcodeproj/project.pbxproj: Changed to /usr/sbin/sysctl 5269 so we don't rely on people's paths. 5270 52712007-01-23 Alice Liu <alice.liu@apple.com> 5272 5273 release build fix 5274 5275 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: 5276 Copy APICasts.h 5277 52782007-01-23 Geoffrey Garen <ggaren@apple.com> 5279 5280 build fix 5281 5282 * API/JSStringRef.h: 5283 * JavaScriptCore.xcodeproj/project.pbxproj: 5284 52852007-01-24 Mark Rowe <mrowe@apple.com> 5286 5287 Build fix for DumpRenderTree. 5288 5289 * JavaScriptCore.xcodeproj/project.pbxproj: Make JSStringRefCF.h public so it's copied into built framework. 5290 52912007-01-23 Anders Carlsson <acarlsson@apple.com> 5292 5293 Reviewed by Darin. 5294 5295 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: 5296 Copy APICasts.h 5297 52982007-01-23 Geoffrey Garen <ggaren@apple.com> 5299 5300 Reviewed by Maciej Stachowiak. 5301 5302 Fixed <rdar://problem/4885131> Move CFString function declarations from 5303 JSStringRef.h to JSStringRefCF.h 5304 5305 Also removed remaining API FIXMEs and changed them into Radars. 5306 5307 * API/JSClassRef.cpp: 5308 (OpaqueJSClass::OpaqueJSClass): Added Radar numbers for UTF8 conversion. 5309 5310 * API/JSContextRef.cpp: 5311 (JSGlobalContextCreate): Replaced FIXME for NULL JSContextRef with Radar number. 5312 5313 * API/JSObjectRef.h: Removed FIXME, which is unprofessional in a public header. 5314 5315 * API/JSStringRef.cpp: Moved CF related implementations to JSStringRefCF.cpp. 5316 (JSStringCreateWithUTF8CString): Replaced FIXME with Radar number. 5317 * API/JSStringRef.h: Moved CF related declarations to JSStringRefCF.h. Added 5318 #include of JSStringRefCF.h as a stopgap until clients start #including 5319 it as needed by themselves. 5320 5321 * API/JSStringRefCF.cpp: Added. 5322 (JSStringCreateWithCFString): 5323 (JSStringCopyCFString): Replaced JSChar cast with UniChar cast, which is 5324 more appropriate for a CF call. 5325 * API/JSStringRefCF.h: Added. 5326 * JavaScriptCore.xcodeproj/project.pbxproj: 5327 53282007-01-18 Sanjay Madhav <sanjay12@gmail.com> 5329 5330 Reviewed by Darin. 5331 5332 Add JavaScriptCore define to help with tracing of when objects are marked. 5333 5334 * kjs/object.cpp: 5335 (KJS::JSObject::mark): 5336 53372007-01-18 Simon Hausmann <hausmann@kde.org> 5338 5339 Reviewed by Zack. 5340 5341 * JavaScriptCore.pro: Remove generated files on make clean. 5342 * pcre/pcre.pri: 5343 53442007-01-16 Alexey Proskuryakov <ap@webkit.org> 5345 5346 Reviewed by Maciej. 5347 5348 http://bugs.webkit.org/show_bug.cgi?id=12268 5349 Give object prototypes their own names 5350 5351 * kjs/lookup.h: Append "Prototype" to ClassName in KJS_IMPLEMENT_PROTOTYPE. 5352 53532007-01-16 Geoffrey Garen <ggaren@apple.com> 5354 5355 Reviewed by Darin Adler. 5356 5357 Added re-entrency checking to GC allocation and collection. It is an error 5358 to allocate or collect from within a collection. We've had at least one 5359 case of each bug in the past. 5360 5361 Added a comment to the API header, explaining that API clients must not 5362 make this mistake, either. 5363 5364 Layout tests and JS tests pass. 5365 5366 * API/JSObjectRef.h: 5367 * kjs/collector.cpp: 5368 (KJS::GCLock::GCLock): 5369 (KJS::GCLock::~GCLock): 5370 (KJS::Collector::allocate): 5371 (KJS::Collector::collect): 5372 53732007-01-14 Mark Rowe <mrowe@apple.com> 5374 5375 Reviewed by Mitz. 5376 5377 Minor fixes to JavaScript pretty-printing. 5378 5379 * JavaScriptCore.exp: 5380 * kjs/Parser.cpp: 5381 (KJS::Parser::prettyPrint): Return line number and error message if parsing fails. 5382 * kjs/Parser.h: 5383 * kjs/nodes2string.cpp: 5384 (ElementNode::streamTo): Include comma delimiters in array literals. 5385 (PropertyNameNode::streamTo): Quote property names in object literals to handle the case when the property name is not a valid identifier. 5386 * kjs/testkjs.cpp: 5387 (doIt): Print any errors encountered while pretty-printing. 5388 53892007-01-12 Anders Carlsson <acarlsson@apple.com> 5390 5391 Reviewed by Darin. 5392 5393 * wtf/HashTraits.h: 5394 Add hash traits for unsigned long and unsigned long long. 5395 53962007-01-12 Geoffrey Garen <ggaren@apple.com> 5397 5398 RS by Brady Eidson. 5399 5400 Rolling back in r18786 with leaks fixed, and these renames slightly reworked: 5401 5402 Because they can return 0: 5403 rootObjectForImp => findRootObject (overloaded for JSObject* and Interpreter*) 5404 rootObjectForInterpreter => findRootObject (ditto) 5405 findReferenceSet => findProtectCountSet 5406 54072007-01-11 Geoffrey Garen <ggaren@apple.com> 5408 5409 RS by Brady Eidson. 5410 5411 Rolling out r18786 because it caused leaks. 5412 54132007-01-11 Geoffrey Garen <ggaren@apple.com> 5414 5415 Reviewed by Anders Carlsson. 5416 5417 Even more cleanup in preparation for fixing <rdar://problem/4608404> 5418 WebScriptObject's _executionContext lack of ownership policy causes 5419 crashes (e.g., in Dashcode) 5420 5421 Layout tests pass. 5422 5423 Renames: 5424 ReferencesSet | ProtectCounts => ProtectCountSet (because it's a typename for a set of GC protect counts) 5425 ReferencesByRootMap => RootObjectMap (because RootObjectToProtectCountSetMap would have been confusing) 5426 pv => protectedValues 5427 rootObjectForImp => getRootObject (overloaded for JSObject* and Interpreter*) 5428 rootObjectForInterpreter => getRootObject (ditto) 5429 findReferenceSet => getProtectCountSet 5430 imp => jsObject 5431 5432 (KJS::Bindings::getRootObjectMap): Changed to take advantage of built-in 5433 facility for initializing static variables. 5434 5435 (KJS::Bindings::getProtectCountSet): 5436 (KJS::Bindings::destroyProtectCountSet): Added. Helps encapsulate the fact 5437 that getting a ProtectCountSet entails adding a RootObject to a hash table, 5438 and destroying one entails the reverse. 5439 5440 (KJS::Bindings::getRootObject): Removed spurious NULL check. 5441 5442 (KJS::Bindings::findReferenceSet): Renamed. Changed to use getRootObject() 5443 instead of iterating on its own. 5444 5445 (KJS::Bindings::addNativeReference): Changed to use an early return instead 5446 of indenting the whole function. 5447 (KJS::Bindings::removeNativeReference): Ditto. 5448 54492007-01-11 Geoffrey Garen <ggaren@apple.com> 5450 5451 Reviewed by Anders Carlsson. 5452 5453 Even more cleanup in preparation for fixing <rdar://problem/4608404> 5454 WebScriptObject's _executionContext lack of ownership policy causes 5455 crashes (e.g., in Dashcode) 5456 5457 Layout tests pass. 5458 5459 Renames: 5460 findRootObjectForNativeHandleFunction => createRootObject 5461 FindRootObjectForNativeHandleFunctionPtr => CreateRootObjectFunction 5462 5463 Also removed unnecessary use of "Bindings::" prefix. 5464 5465 * JavaScriptCore.exp: 5466 * bindings/jni/jni_jsobject.cpp: 5467 (JavaJSObject::createNative): 5468 (JavaJSObject::convertValueToJObject): 5469 (JavaJSObject::convertJObjectToValue): 5470 * bindings/runtime_root.cpp: 5471 (KJS::Bindings::RootObject::setCreateRootObject): 5472 * bindings/runtime_root.h: 5473 (KJS::Bindings::RootObject::createRootObject): 5474 54752007-01-11 George Staikos <staikos@kde.org> 5476 5477 Reviewed by Maciej 5478 5479 Appears to be Mac specific right now. 5480 5481 * kjs/config.h: 5482 54832007-01-10 Lars Knoll <lars@trolltech.com> 5484 5485 Reviewed by Zack 5486 5487 Use the new functionality in Qt 4.3, to make 5488 the methods closer compliant with the Unicode 5489 spec. 5490 5491 Keep the old code so that it still compiles against 5492 Qt 4.2. 5493 5494 * wtf/unicode/qt4/UnicodeQt4.h: 5495 (WTF::Unicode::toLower): 5496 (WTF::Unicode::toUpper): 5497 (WTF::Unicode::toTitleCase): 5498 (WTF::Unicode::foldCase): 5499 (WTF::Unicode::isFormatChar): 5500 (WTF::Unicode::isPrintableChar): 5501 (WTF::Unicode::isSeparatorSpace): 5502 (WTF::Unicode::isPunct): 5503 (WTF::Unicode::isDigit): 5504 (WTF::Unicode::isLower): 5505 (WTF::Unicode::isUpper): 5506 (WTF::Unicode::digitValue): 5507 (WTF::Unicode::mirroredChar): 5508 (WTF::Unicode::combiningClass): 5509 (WTF::Unicode::decompositionType): 5510 (WTF::Unicode::umemcasecmp): 5511 (WTF::Unicode::direction): 5512 (WTF::Unicode::category): 5513 55142007-01-09 Darin Adler <darin@apple.com> 5515 5516 - update 2007 Apple copyright for the new company name 5517 5518 * kjs/DateMath.cpp: 5519 55202007-01-09 Darin Adler <darin@apple.com> 5521 5522 - fix build 5523 5524 * kjs/string_object.cpp: (KJS::StringProtoFunc::callAsFunction): 5525 Actually compile it this time. 5526 55272007-01-09 Darin Adler <darin@apple.com> 5528 5529 - fix build 5530 5531 * kjs/string_object.cpp: (KJS::StringProtoFunc::callAsFunction): 5532 Change types. 5533 55342007-01-09 Darin Adler <darin@apple.com> 5535 5536 - fix build on platforms where Unicode::UChar is != uint16_t 5537 5538 * kjs/string_object.cpp: (KJS::StringProtoFunc::callAsFunction): 5539 Change types. 5540 55412007-01-09 Mitz Pettel <mitz@webkit.org> 5542 5543 Reviewed by Darin. 5544 5545 - changes for http://bugs.webkit.org/show_bug.cgi?id=11078 5546 Forms Don't Submit (ASP Pages) 5547 5548 * JavaScriptCore.exp: 5549 * kjs/value.cpp: 5550 (KJS::JSValue::toInt32): Folded toInt32Inline into this method, which was its 5551 only caller. 5552 (KJS::JSValue::toUInt32): Added a variant that reports if the conversion has 5553 succeeded. 5554 * kjs/value.h: 5555 55562007-01-09 Darin Adler <darin@apple.com> 5557 5558 Reviewed by Maciej. 5559 5560 - fix http://bugs.webkit.org/show_bug.cgi?id=12174 5561 improve Unicode use (less WTF::Unicode:: prefix, centralized character names) 5562 5563 * wtf/unicode/icu/UnicodeIcu.h: Change parameter and return types 5564 to UChar32 and UChar. Removed unneeded type casts and added some 5565 const to functions that lacked it. Removed WTF::Unicode::memcmp. 5566 (WTF::Unicode::umemcasecmp): Renamed from strcasecmp since this 5567 doesn't work on 0-terminated strings as the str functions do. 5568 * wtf/unicode/qt4/UnicodeQt4.h: Ditto. 5569 5570 - got rid of namespace prefixes from most uses of WTF::Unicode 5571 5572 * kjs/function.cpp: 5573 (KJS::isStrWhiteSpace): 5574 (KJS::escapeStringForPrettyPrinting): 5575 * kjs/lexer.cpp: 5576 (KJS::Lexer::isWhiteSpace): 5577 (KJS::Lexer::isIdentStart): 5578 (KJS::Lexer::isIdentPart): 5579 * kjs/string_object.cpp: 5580 (KJS::StringProtoFunc::callAsFunction): 5581 55822007-01-07 David Kilzer <ddkilzer@webkit.org> 5583 5584 Reviewed by Darin. 5585 5586 - fix http://bugs.webkit.org/show_bug.cgi?id=11917 5587 setlocale() can return null 5588 5589 * kjs/date_object.cpp: 5590 (KJS::DateProtoFunc::callAsFunction): Removed dead code. 5591 55922007-01-07 David Carson <dacarson@gmail.com> 5593 5594 Reviewed by Darin. 5595 5596 - fix http://bugs.webkit.org/show_bug.cgi?id=12100 5597 JNI bindings should be available to non-Mac platforms that have JNI 5598 5599 Change JNI so that it is not wrapped in the PLATFORM(MAC) ifdef, enabling 5600 other platforms who have JNI to use it. 5601 5602 * bindings/jni/jni_instance.h: 5603 Removed unnecessary include of <CoreFoundation/CoreFoundation.h> 5604 * bindings/jni/jni_utility.cpp: 5605 (KJS::Bindings::setJavaVM): 5606 * bindings/jni/jni_utility.h: 5607 Added new method for clients to set the JavaVM 5608 * bindings/runtime.cpp: 5609 (KJS::Bindings::Instance::createBindingForLanguageInstance): 5610 Changed code to utilize new #if HAVE(JNI) 5611 * kjs/config.h: 5612 Added new #define for JNI, ie HAVE_JNI 5613 56142007-01-07 David Carson <dacarson@gmail.com> 5615 5616 Reviewed by Darin. 5617 5618 Fix http://bugs.webkit.org/show_bug.cgi?id=11431 5619 ARM platform has some byte alignment issues 5620 5621 Fix for NaN being 4 bytes and it must start on a byte boundary 5622 for ARM architectures. 5623 5624 * kjs/fpconst.cpp: 5625 (KJS::): 5626 56272007-01-04 David Kilzer <ddkilzer@webkit.org> 5628 5629 Reviewed by Kevin McCullough. 5630 5631 - fix http://bugs.webkit.org/show_bug.cgi?id=12070 5632 REGRESSION: KJS::getUTCOffset() caches UTC offset but ignores time zone changes 5633 5634 * kjs/DateMath.cpp: 5635 (KJS::getUTCOffset): Don't cache UTC offset. 5636 56372007-01-02 Darin Adler <darin@apple.com> 5638 5639 - minor tweak (hope this doesn't re-break Windows) 5640 5641 * pcre/pcre_compile.c: Removed use of const pcre_uchar const * -- Mitz probably 5642 meant const pcre_uchar *const, but I think we can do without the explicit const here. 5643 5644 * pcre/pcre_internal.h: Re-enabled warning C4114. 5645 56462007-01-02 David Kilzer <ddkilzer@webkit.org> 5647 5648 Reviewed by NOBODY (Windows build fix). 5649 5650 The MSVC compiler requires variables to be declared at the top of the enclosing block in C source. 5651 5652 Disable this warning to prevent MSVC from complaining about the 'const pcre_uchar const *' type: 5653 warning C4114: same type qualifier used more than once 5654 5655 * pcre/pcre_compile.c: 5656 (pcre_compile2): Moved variable declarations to top of their respective enclosing blocks. 5657 * pcre/pcre_internal.h: Added pragma to disable compiler warning. 5658 56592007-01-01 Mitz Pettel <mitz@webkit.org> 5660 5661 Reviewed by Darin. 5662 5663 - fix http://bugs.webkit.org/show_bug.cgi?id=11849 5664 REGRESSION (r18182): Google Calendar is broken (a regular expression containing a null character is not parsed correctly) 5665 5666 Modified pcre_compile() (and the functions that it calls) to work with patterns 5667 containing null characters. 5668 5669 Covered by JavaScriptCore tests ecma_3/RegExp/octal-002.js and ecma_3/RegExp/regress-85721.js 5670 5671 * kjs/regexp.cpp: 5672 (KJS::RegExp::RegExp): Changed to not null-terminate the pattern string and instead 5673 pass its length to pcre_compile. 5674 * pcre/pcre.h: 5675 * pcre/pcre_compile.c: 5676 (check_escape): 5677 (get_ucp): 5678 (is_counted_repeat): 5679 (check_posix_syntax): 5680 (compile_branch): 5681 (compile_regex): 5682 (pcre_compile): Added a parameter specifying the length of the pattern, which 5683 is no longer required to be null-terminated and may contain null characters. 5684 (pcre_compile2): 5685 * pcre/pcre_internal.h: 5686 * tests/mozilla/expected.html: Updated for the two tests that this patch 5687 fixes. Also updated failing results for ecma_3/RegExp/regress-100199.js 5688 which were not updated after bug 6257 was fixed. 5689 56902007-01-01 David Kilzer <ddkilzer@webkit.org> 5691 5692 Reviewed by Darin. 5693 5694 - fix http://bugs.webkit.org/show_bug.cgi?id=12057 5695 REGRESSION: JavaScript Date Is One Day In The Future in GMT time zone 5696 5697 Because Mac OS X returns geographically and historically accurate time zone information, 5698 converting Jan 02, 1970 12:00:00 AM to local time then subtracting 24 hours did not work 5699 in GMT (London - England) since it was in BST (+0100) all year in 1970[1]. Instead, the 5700 UTC offset is calculated by converting Jan 01, 2000 12:00:00 AM to local time then 5701 subtracting that from the same date in UTC. 5702 5703 [1] http://en.wikipedia.org/wiki/British_Summer_Time 5704 5705 * kjs/DateMath.cpp: 5706 (KJS::getUTCOffset): Updated UTC offset calculation. 5707 (KJS::getDSTOffset): Improved comment. 5708 57092006-12-31 David Kilzer <ddkilzer@webkit.org> 5710 5711 Reviewed by Geoff. 5712 5713 Update embedded pcre library from version 6.2 to 6.4. Changes from pcre 6.2 to 6.3 5714 did not include any files in JavaScriptCore/pcre. 5715 5716 All changes include renaming EXPORT to PCRE_EXPORT, renaming of ucp_findchar() to 5717 _pcre_ucp_findchar(), or comment changes. Additional changes noted below. 5718 5719 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: Updated source file list. 5720 * JavaScriptCore.xcodeproj/project.pbxproj: Renamed pcre_printint.c to pcre_printint.src 5721 and changed it from a source file to a header file. 5722 * JavaScriptCoreSources.bkl: Updated source file list. 5723 * pcre/CMakeLists.txt: Updated source file list. 5724 * pcre/pcre-config.h: 5725 * pcre/pcre.h: Updated version. 5726 * pcre/pcre.pri: Updated source file list. 5727 * pcre/pcre_compile.c: Include pcre_printint.src #if DEBUG. 5728 (pcre_compile2): 5729 * pcre/pcre_config.c: 5730 * pcre/pcre_exec.c: 5731 (match): 5732 * pcre/pcre_fullinfo.c: 5733 * pcre/pcre_info.c: 5734 * pcre/pcre_internal.h: Added header guard. Removed export of _pcre_printint(). 5735 * pcre/pcre_ord2utf8.c: 5736 * pcre/pcre_printint.c: Renamed to pcre_printint.src. 5737 * pcre/pcre_printint.src: Added. Renamed _pcre_printint() to pcre_printint(). 5738 * pcre/pcre_refcount.c: 5739 * pcre/pcre_study.c: 5740 * pcre/pcre_tables.c: 5741 * pcre/pcre_try_flipped.c: 5742 * pcre/pcre_ucp_findchar.c: Added contents of ucp_findchar.c. 5743 * pcre/pcre_version.c: 5744 * pcre/pcre_xclass.c: 5745 (_pcre_xclass): 5746 * pcre/ucp.h: Removed export of ucp_findchar(). 5747 * pcre/ucp_findchar.c: Removed. Contents moved to pcre_ucp_findchar.c. 5748 57492006-12-29 David Kilzer <ddkilzer@webkit.org> 5750 5751 Reviewed by Geoff. 5752 5753 Update embedded pcre library from version 6.1 to 6.2. From the pcre ChangeLog: 5754 5755 3. Added "b" to the 2nd argument of fopen() in dftables.c, for non-Unix-like 5756 operating environments where this matters. 5757 5758 5. Named capturing subpatterns were not being correctly counted when a pattern 5759 was compiled. This caused two problems: (a) If there were more than 100 5760 such subpatterns, the calculation of the memory needed for the whole 5761 compiled pattern went wrong, leading to an overflow error. (b) Numerical 5762 back references of the form \12, where the number was greater than 9, were 5763 not recognized as back references, even though there were sufficient 5764 previous subpatterns. 5765 5766 * pcre/dftables.c: Item 3. 5767 (main): 5768 * pcre/pcre.h: Updated version. 5769 * pcre/pcre_compile.c: Item 5. 5770 (read_repeat_counts): 5771 (pcre_compile2): 5772 57732006-12-29 Geoffrey Garen <ggaren@apple.com> 5774 5775 Reviewed by Brian Dash... err... Mark Rowe. 5776 5777 More cleanup in preparation for fixing <rdar://problem/4608404> 5778 WebScriptObject's _executionContext lack of ownership policy causes 5779 crashes (e.g., in Dashcode) 5780 5781 The key change here is to RootObject::RootObject(). 5782 5783 * JavaScriptCore.exp: 5784 5785 * bindings/c/c_utility.cpp: 5786 (KJS::Bindings::convertValueToNPVariant): Changed to use new constructor. 5787 5788 * bindings/jni/jni_jsobject.cpp: 5789 (JavaJSObject::createNative): Changed to use new constructor. Replaced 5790 large 'if' followed by default condition with "if !" and explicit default 5791 condition. 5792 5793 * bindings/objc/objc_runtime.mm: 5794 (convertValueToObjcObject): Changed to use new constructor. 5795 5796 * bindings/runtime_root.cpp: 5797 (KJS::Bindings::RootObject::destroy): "removeAllNativeReferences" => "destroy" 5798 because this function actually destroys the RootObject. 5799 5800 * bindings/runtime_root.h: Changed Interpreter* to RefPtr<Interpreter> 5801 to prevent a RootObject from holding a stale Interperter*. 5802 5803 (KJS::Bindings::RootObject::RootObject): Changed constructor to take an 5804 Interpreter*, since it's pointless to create a RootObject without one. 5805 Removed setRootObjectImp() and rootObjectImp() because they were just 5806 a confusing way of setting and getting the Interpreter's global object. 5807 5808 (KJS::Bindings::RootObject::nativeHandle): "_nativeHandle" => "m_nativeHandle" 5809 (KJS::Bindings::RootObject::interpreter): "_interpreter" => "m_interpreter" 5810 58112006-12-28 George Staikos <staikos@kde.org> 5812 5813 Reviewed by Olliej. 5814 5815 * bindings/qt/qt_instance.cpp: build 5816 (KJS::Bindings::QtInstance::QtInstance): 5817 58182006-12-28 Geoffrey Garen <ggaren@apple.com> 5819 5820 Reviewed by Oliver Hunt. 5821 5822 More cleanup. Layout tests pass. 5823 5824 Use a helper function to initialize and access WebUndefined and WebScriptObject. 5825 5826 * bindings/objc/objc_runtime.h: 5827 * bindings/objc/objc_runtime.mm: 5828 (KJS::Bindings::webScriptObjectClass): 5829 (KJS::Bindings::webUndefinedClass): 5830 (convertValueToObjcObject): 5831 * bindings/objc/objc_utility.mm: 5832 (KJS::Bindings::convertValueToObjcValue): 5833 (KJS::Bindings::convertObjcValueToValue): 5834 58352006-12-28 Geoffrey Garen <ggaren@apple.com> 5836 5837 Reviewed by Brady Eidson. 5838 5839 Some cleanup in preparation for fixing <rdar://problem/4608404> 5840 WebScriptObject's _executionContext lack of ownership policy causes 5841 crashes (e.g., in Dashcode) 5842 5843 I'm just trying to make heads or tails of this baffling code. 5844 5845 Renamed "root" | "execContext" | "executionContext" => "rootObject", because 5846 that's the object's (admittedly vague) type name. 5847 5848 * bindings/runtime.cpp: Removed createLanguageInstanceForValue 5849 because I'll give you a dollar if you can explain to me what it actually did. 5850 5851 * bindings/runtime_root.cpp: Put everything in the KJS::Bindings namespace, 5852 removing the KJS::Bindings prefix from individual functions and datatypes. 5853 This matches the header and eliminates a lot of syntax cruft. 5854 5855 * bindings/c/c_utility.cpp: 5856 (KJS::Bindings::convertValueToNPVariant): Replaced use of createLanguageInstanceForValue 5857 with call to _NPN_CreateScriptObject because that's what createLanguageInstanceForValue 5858 actually did (but don't ask me for that dollar now; that's cheating.) 5859 5860 * bindings/objc/objc_utility.h: 5861 * bindings/objc/objc_utility.mm: 5862 (KJS::Bindings::convertValueToObjcValue): Removed. Its only purpose was 5863 to call a single function for WebKit, which WebKit can do on its own. 5864 5865 * kjs/interpreter.h: Removed rtti() because it was unused, and this class 5866 is scheduled for demolition anyway. 5867 5868 * kjs/interpreter.cpp: Removed createLanguageInstanceForValue because it had 5869 nothing to do with the Interpreter, and nothing makes Chuck Norris more mad 5870 than a function whose sole purpose is to call another function of the same 5871 name. (Really, I asked him.) 5872 58732006-12-26 Geoffrey Garen <ggaren@apple.com> 5874 5875 Reviewed by Eric Seidel. 5876 5877 Some cleanup in preparation for fixing <rdar://problem/4740328> Safari 5878 crash on quit in _NPN_ReleaseObject from KJS::Bindings::CInstance::~CInstance 5879 5880 * bindings/c/c_instance.cpp: 5881 * bindings/c/c_instance.h: Removed unused copy constructor and assignment 5882 operator. They made tracking data flow more difficult. Unused code is also 5883 dangerous because it can succumb to bit rot with the stealth of a Ninja. 5884 5885 Replaced #include with forward declaration to reduce header dependency. 5886 5887 * bindings/npruntime.cpp: Sorted #includes. 5888 (_NPN_GetStringIdentifier): Replaced assert with ASSERT. 5889 (_NPN_GetStringIdentifiers): ditto 5890 (_NPN_ReleaseVariantValue): ditto 5891 (_NPN_CreateObject): ditto 5892 (_NPN_RetainObject): ditto 5893 (_NPN_ReleaseObject): ditto 5894 (_NPN_DeallocateObject): ditto 5895 58962006-12-20 Anders Carlsson <acarlsson@apple.com> 5897 5898 * kjs/string_object.cpp: 5899 (localeCompare): 5900 Another speculative Win32 fix. 5901 59022006-12-20 Anders Carlsson <acarlsson@apple.com> 5903 5904 * kjs/string_object.cpp: 5905 (localeCompare): 5906 Speculative Win32 fix. 5907 59082006-12-20 Anders Carlsson <acarlsson@apple.com> 5909 5910 Reviewed by Darin. 5911 5912 <rdar://problem/4235733> 5913 <http://bugs.webkit.org/?show_bug.cgi?id=10193> 5914 support String.localeCompare. 5915 5916 Implement localeCompare. 5917 5918 * JavaScriptCore.xcodeproj/project.pbxproj: 5919 * kjs/string_object.cpp: 5920 (localeCompare): 5921 (StringProtoFunc::callAsFunction): 5922 * kjs/string_object.h: 5923 (KJS::StringProtoFunc::): 5924 59252006-12-20 Timothy Hatcher <timothy@apple.com> 5926 5927 Reviewed by Mark Rowe. 5928 5929 * JavaScriptCore.xcodeproj/project.pbxproj: use GCC 4.0 for all the other test targets 5930 59312006-12-20 Timothy Hatcher <timothy@apple.com> 5932 5933 Reviewed by Mark Rowe. 5934 5935 <rdar://problem/4871613> JavaScriptCore-421.31's dftables target needs to override default compiler and use gcc-4.0 5936 5937 * JavaScriptCore.xcodeproj/project.pbxproj: 5938 59392006-12-20 Lars Knoll <lars@trolltech.com> 5940 5941 Reviewed by David Hyatt 5942 5943 Added support to bind QObject's to 5944 JavaScript. 5945 5946 * JavaScriptCore.pro: 5947 * bindings/qt/qt_class.cpp: Added. 5948 (KJS::Bindings::QtClass::QtClass): 5949 (KJS::Bindings::QtClass::~QtClass): 5950 (KJS::Bindings::QtClass::classForObject): 5951 (KJS::Bindings::QtClass::name): 5952 (KJS::Bindings::QtClass::methodsNamed): 5953 (KJS::Bindings::QtClass::fieldNamed): 5954 * bindings/qt/qt_class.h: Added. 5955 (KJS::Bindings::QtClass::constructorAt): 5956 (KJS::Bindings::QtClass::numConstructors): 5957 * bindings/qt/qt_instance.cpp: Added. 5958 (KJS::Bindings::QtInstance::QtInstance): 5959 (KJS::Bindings::QtInstance::~QtInstance): 5960 (KJS::Bindings::QtInstance::operator=): 5961 (KJS::Bindings::QtInstance::getClass): 5962 (KJS::Bindings::QtInstance::begin): 5963 (KJS::Bindings::QtInstance::end): 5964 (KJS::Bindings::QtInstance::implementsCall): 5965 (KJS::Bindings::QtInstance::invokeMethod): 5966 (KJS::Bindings::QtInstance::invokeDefaultMethod): 5967 (KJS::Bindings::QtInstance::defaultValue): 5968 (KJS::Bindings::QtInstance::stringValue): 5969 (KJS::Bindings::QtInstance::numberValue): 5970 (KJS::Bindings::QtInstance::booleanValue): 5971 (KJS::Bindings::QtInstance::valueOf): 5972 * bindings/qt/qt_instance.h: Added. 5973 (KJS::Bindings::QtInstance::getObject): 5974 * bindings/qt/qt_runtime.cpp: Added. 5975 (KJS::Bindings::convertValueToQVariant): 5976 (KJS::Bindings::convertQVariantToValue): 5977 (KJS::Bindings::QtField::name): 5978 (KJS::Bindings::QtField::valueFromInstance): 5979 (KJS::Bindings::QtField::setValueToInstance): 5980 * bindings/qt/qt_runtime.h: Added. 5981 (KJS::Bindings::QtField::QtField): 5982 (KJS::Bindings::QtField::type): 5983 (KJS::Bindings::QtMethod::QtMethod): 5984 (KJS::Bindings::QtMethod::name): 5985 (KJS::Bindings::QtMethod::numParameters): 5986 * bindings/runtime.cpp: 5987 (KJS::Bindings::Instance::createBindingForLanguageInstance): 5988 * bindings/runtime.h: 5989 (KJS::Bindings::Instance::): 5990 * bindings/testbindings.pro: Added. 5991 * bindings/testqtbindings.cpp: Added. 5992 (MyObject::MyObject): 5993 (MyObject::setTestString): 5994 (MyObject::setTestInt): 5995 (MyObject::testString): 5996 (MyObject::testInt): 5997 (MyObject::foo): 5998 (Global::className): 5999 (main): 6000 60012006-12-19 Anders Carlsson <acarlsson@apple.com> 6002 6003 Reviewed by Geoff. 6004 6005 Add -p option to testkjs which pretty prints the files instead of executing them. 6006 6007 * JavaScriptCore.exp: 6008 * JavaScriptCore.xcodeproj/project.pbxproj: 6009 * kjs/Parser.cpp: 6010 (KJS::Parser::prettyPrint): 6011 * kjs/Parser.h: 6012 * kjs/testkjs.cpp: 6013 (doIt): 6014 60152006-12-19 Brady Eidson <beidson@apple.com> 6016 6017 Rubberstamped by Lou 6018 6019 Removed unneccessary "else" 6020 6021 * wtf/Assertions.cpp: 6022 60232006-12-19 Timothy Hatcher <timothy@apple.com> 6024 6025 Reviewed by Darin. 6026 6027 <rdar://problem/4891774> Local WebCore/WebBrowser builds fail in 9A328 due to warning about ObjC-2.0 language features 6028 6029 * JavaScriptCore.xcodeproj/project.pbxproj: 6030 60312006-12-17 Simon Hausmann <hausmann@kde.org> 6032 6033 Reviewed by Zack. 6034 6035 * kjs/testkjs.pro: Oops, make it also build on machines other than 6036 mine :) 6037 60382006-12-17 Simon Hausmann <hausmann@kde.org> 6039 6040 Reviewed by Rob Buis. 6041 6042 * kjs/testkjs.pro: Added .pro file to build testkjs. 6043 60442006-12-16 Alexey Proskuryakov <ap@webkit.org> 6045 6046 Reviewed by Rob. 6047 6048 A deleted object was accessed to prepare RegExp construction error messages. 6049 6050 * kjs/regexp_object.cpp: 6051 (RegExpObjectImp::construct): Wrap the RegExp into an OwnPtr. 6052 60532006-12-16 Mitz Pettel <mitz@webkit.org> 6054 6055 Reviewed by Alexey. 6056 6057 - fix http://bugs.webkit.org/show_bug.cgi?id=11814 6058 REGRESSION(r18098): Find does not work with capital letters 6059 6060 Test: editing/execCommand/findString-3.html 6061 6062 * wtf/unicode/icu/UnicodeIcu.h: 6063 (WTF::Unicode::foldCase): Changed to not return an error if the result fits 6064 in the buffer without a null terminator. 6065 60662006-12-13 Maciej Stachowiak <mjs@apple.com> 6067 6068 Reviewed by Anders. 6069 6070 - added equality and inequality operations for HashMap and Vector, useful for comparing more complex types 6071 6072 * wtf/HashMap.h: 6073 (WTF::operator==): 6074 (WTF::operator!=): 6075 * wtf/Vector.h: 6076 (WTF::operator==): 6077 (WTF::operator!=): 6078 60792006-12-12 Alexey Proskuryakov <ap@webkit.org> 6080 6081 Reviewed by Geoff. Based on a patch by Maks Orlovich. 6082 6083 http://bugs.webkit.org/show_bug.cgi?id=6257 6084 Throw errors on invalid expressions (KJS merge) 6085 6086 * kjs/regexp.cpp: 6087 (KJS::RegExp::RegExp): 6088 (KJS::RegExp::~RegExp): 6089 (KJS::RegExp::match): 6090 * kjs/regexp.h: 6091 (KJS::RegExp::flags): 6092 (KJS::RegExp::isValid): 6093 (KJS::RegExp::errorMessage): 6094 (KJS::RegExp::subPatterns): 6095 Remember and report RegExp construction failures. Renamed data members not to start with underscores. 6096 6097 * kjs/regexp_object.cpp: 6098 (RegExpObjectImp::construct): Raise an exception if RegExp construction fails. 6099 (RegExpObjectImp::callAsFunction): Removed an obsolete comment. 6100 6101 * tests/mozilla/ecma_3/RegExp/regress-119909.js: Reduced the number of nested parentheses to 6102 a value supported by PCRE. 6103 61042006-12-11 Alexey Proskuryakov <ap@webkit.org> 6105 6106 Reviewed by Darin. 6107 6108 http://bugs.webkit.org/show_bug.cgi?id=9673 6109 Add support for window.atob() and window.btoa() 6110 6111 * JavaScriptCore.exp: Export UString::is8Bit(). 6112 * JavaScriptCore.xcodeproj/project.pbxproj: Added StringExtras.h as 6113 a private header. 6114 61152006-12-11 Darin Adler <darin@apple.com> 6116 6117 Reviewed by Brady. 6118 6119 * JavaScriptCore.xcodeproj/project.pbxproj: Let Xcode update this 6120 (I think Hyatt is using an old Xcode). 6121 61222006-12-11 David Hyatt <hyatt@apple.com> 6123 6124 Fix the failing layout test. Just remove Unicode::isSpace and 6125 revert StringImpl to do the same thing it was doing before. 6126 6127 Reviewed by darin 6128 6129 * wtf/unicode/icu/UnicodeIcu.h: 6130 * wtf/unicode/qt4/UnicodeQt4.h: 6131 61322006-12-09 George Staikos <staikos@kde.org> 6133 6134 Reviewed by Zack. 6135 6136 Fix bison again on qmake build. 6137 6138 * JavaScriptCore.pro: 6139 61402006-12-09 Lars Knoll <lars@trolltech.com> 6141 6142 Reviewed by Zack 6143 6144 Make it possible to build WebKit with qmake. 6145 6146 * JavaScriptCore.pro: Added. 6147 * kjs/kjs.pro: Removed. 6148 * pcre/pcre.pri: Added. 6149 61502006-12-09 Zack Rusin <zack@kde.org> 6151 6152 Fixing the compilation with platform kde after the icu changes. 6153 6154 * CMakeLists.txt: 6155 61562006-12-09 Adam Roben <aroben@apple.com> 6157 6158 Reviewed by Darin. 6159 6160 Some updates in reaction to r18098. 6161 6162 * wtf/unicode/icu/UnicodeIcu.h: Use !! to convert UBool to bool in all 6163 cases. 6164 (WTF::Unicode::toLower): 6165 (WTF::Unicode::toUpper): 6166 (WTF::Unicode::isDigit): 6167 (WTF::Unicode::isSpace): 6168 (WTF::Unicode::isPunct): 6169 (WTF::Unicode::isLower): 6170 (WTF::Unicode::isUpper): 6171 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: 6172 * JavaScriptCore.vcproj/WTF/WTF.vcproj: 6173 61742006-12-09 George Staikos <staikos@kde.org> 6175 6176 Patch by Lars Knoll, comment out ICU dependency on Qt platform (unused code). 6177 6178 Reviewed by Darin. 6179 6180 * bindings/c/c_utility.cpp: 6181 (KJS::Bindings::convertUTF8ToUTF16): 6182 61832006-12-08 David Hyatt <hyatt@apple.com> 6184 6185 Land the new ICU abstraction layer. Patch by Lars. 6186 6187 Reviewed by me 6188 6189 * JavaScriptCore.xcodeproj/project.pbxproj: 6190 * wtf/Platform.h: 6191 * wtf/unicode/UnicodeCategory.h: Removed. 6192 * wtf/unicode/UnicodeDecomposition.h: Removed. 6193 * wtf/unicode/UnicodeDirection.h: Removed. 6194 * wtf/unicode/icu/UnicodeIcu.h: 6195 (WTF::Unicode::): 6196 (WTF::Unicode::foldCase): 6197 (WTF::Unicode::toLower): 6198 (WTF::Unicode::toUpper): 6199 (WTF::Unicode::toTitleCase): 6200 (WTF::Unicode::isDigit): 6201 (WTF::Unicode::isSpace): 6202 (WTF::Unicode::isPunct): 6203 (WTF::Unicode::mirroredChar): 6204 (WTF::Unicode::category): 6205 (WTF::Unicode::direction): 6206 (WTF::Unicode::isLower): 6207 (WTF::Unicode::isUpper): 6208 (WTF::Unicode::digitValue): 6209 (WTF::Unicode::combiningClass): 6210 (WTF::Unicode::decompositionType): 6211 (WTF::Unicode::strcasecmp): 6212 (WTF::Unicode::memset): 6213 * wtf/unicode/qt4/UnicodeQt4.cpp: Removed. 6214 * wtf/unicode/qt4/UnicodeQt4.h: 6215 (WTF::Unicode::): 6216 (WTF::Unicode::toLower): 6217 (WTF::Unicode::toUpper): 6218 (WTF::Unicode::toTitleCase): 6219 (WTF::Unicode::foldCase): 6220 (WTF::Unicode::isPrintableChar): 6221 (WTF::Unicode::isLower): 6222 (WTF::Unicode::isUpper): 6223 (WTF::Unicode::digitValue): 6224 (WTF::Unicode::combiningClass): 6225 (WTF::Unicode::decompositionType): 6226 (WTF::Unicode::strcasecmp): 6227 (WTF::Unicode::memset): 6228 (WTF::Unicode::direction): 6229 (WTF::Unicode::category): 6230 6231=== Safari-521.32 === 6232 62332006-12-08 Adam Roben <aroben@apple.com> 6234 6235 Reviewed by Anders. 6236 6237 This is a mo' better fix for ensuring we don't use macro definitions 6238 of min/max. 6239 6240 * kjs/config.h: 6241 * wtf/Vector.h: 6242 62432006-12-07 Kevin Fyure <digdog@macports.org> 6244 6245 Reviewed by Darin. 6246 6247 http://bugs.webkit.org/show_bug.cgi?id=11545 6248 Disable the testcases do not follow the ECMA-262v3 specification. 6249 6250 * tests/mozilla/expected.html: Update Results. 6251 * tests/mozilla/js1_2/String/concat.js: 6252 4 tests disabled. The result of concat Array object is not followinig 6253 ECMA 15.5.4.6 6254 * tests/mozilla/js1_2/function/Number.js: 6255 1 test disabled. The result of Array object to Number object conversion 6256 is not following ECMA 9.3. And the test was duplicated in 6257 ecma/TypeConversion/9.3-1.js 6258 * tests/mozilla/js1_2/function/String.js: 6259 2 tests disabled. The result of Object/Array object to String object 6260 conversion is not following ECMA 15.5.1.1 and ECMA 9.8 6261 62622006-11-30 Steve Falkenburg <sfalken@apple.com> 6263 6264 Reviewed by Oliver. 6265 6266 Move WTF from JavaScriptCore project into a new WTF project. 6267 6268 * JavaScriptCore.vcproj/JavaScriptCore.sln: Add WTF.vcproj to sln 6269 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: Remove WTF source files 6270 * JavaScriptCore.vcproj/WTF/WTF.vcproj: Added. 6271 * JavaScriptCore.vcproj/testkjs/testkjs.vcproj: Add dependency on WTF.lib 6272 62732006-11-30 Geoffrey Garen <ggaren@apple.com> 6274 6275 Reviewed by Beth Dakin. 6276 6277 Fixed up garbage collection at window close time. 6278 6279 * kjs/interpreter.cpp: 6280 (KJS::Interpreter::~Interpreter): Garbage collect here, since 6281 destroying the interpreter frees the global object and 6282 therefore creates a lot of garbage. 6283 62842006-11-20 W. Andy Carrel <wac@google.com> 6285 6286 Reviewed by Maciej. 6287 6288 http://bugs.webkit.org/show_bug.cgi?id=11501 6289 REGRESSION: \u no longer escapes metacharacters in RegExps 6290 http://bugs.webkit.org/show_bug.cgi?id=11502 6291 Serializing RegExps doesn't preserve Unicode escapes 6292 6293 * kjs/lexer.cpp: 6294 (Lexer::Lexer): 6295 (Lexer::setCode): 6296 (Lexer::shift): 6297 (Lexer::scanRegExp): 6298 Push \u parsing back down into the RegExp object rather than in the 6299 parser. This backs out r17354 in favor of a new fix that better 6300 matches the behavior of other browsers. 6301 6302 * kjs/lexer.h: 6303 * kjs/regexp.cpp: 6304 (KJS::RegExp::RegExp): 6305 (KJS::sanitizePattern): 6306 (KJS::isHexDigit): 6307 (KJS::convertHex): 6308 (KJS::convertUnicode): 6309 * kjs/regexp.h: 6310 Translate \u escaped unicode characters for the benefit of pcre. 6311 6312 * kjs/ustring.cpp: 6313 (KJS::UString::append): 6314 Fix failure to increment length on the first UChar appended to a 6315 UString that was copy-on-write. 6316 6317 * tests/mozilla/ecma_2/RegExp/properties-001.js: 6318 Adjust tests back to the uniform standards. 6319 63202006-11-20 Samuel Weinig <sam@webkit.org> 6321 6322 Reviewed by Maciej. 6323 6324 Fix for http://bugs.webkit.org/show_bug.cgi?id=11647 6325 Fix Win32 build 6326 6327 * kjs/config.h: define NOMINMAX instead of min/max 6328 as themselves. 6329 * wtf/Vector.h: put back hack to ensure that min/max 6330 are not defined as macros. 6331 63322006-11-19 Simon Hausmann <hausmann@kde.org> 6333 6334 Reviewed by Zack. 6335 6336 http://bugs.webkit.org/show_bug.cgi?id=11649 6337 Fix CMake Qt-only build without KDE CMake files 6338 6339 * CMakeLists.txt: 6340 * pcre/CMakeLists.txt: 6341 63422006-11-17 Anders Carlsson <acarlsson@apple.com> 6343 6344 Reviewed by Adam. 6345 6346 Make sure that we always use std::min and std::max instead of macros. 6347 6348 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: 6349 * kjs/config.h: 6350 * wtf/Vector.h: 6351 6352=== Safari-521.31 === 6353 63542006-11-12 Geoffrey Garen <ggaren@apple.com> 6355 6356 Reviewed by Beth Dakin. 6357 6358 Added project-wide setting to disable Microsoft's made-up deprecation 6359 warnings related to std:: functions. (Doesn't have any affect yet, 6360 since we currently disable all deprecation warnings.) 6361 6362 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: 6363 63642006-11-12 Mark Rowe <bdash@webkit.org> 6365 6366 Reviewed by Mitz. 6367 6368 Clean up of JavaScriptCore bakefiles. 6369 6370 * JavaScriptCoreSources.bkl: 6371 * jscore.bkl: 6372 63732006-11-11 Alexey Proskuryakov <ap@webkit.org> 6374 6375 Reviewed by Maciej. 6376 6377 http://bugs.webkit.org/show_bug.cgi?id=11508 6378 Undisable some warnings for JSImmediate.h 6379 6380 Fix suggested by Don Gibson. 6381 6382 * kjs/JSImmediate.h: 6383 Re-enable all MSVC warnings, move the remaining runtime checks 6384 to compile-time. 6385 63862006-11-10 Zalan Bujtas <zalan.bujtas@nokia.com> 6387 6388 Reviewed by Maciej. 6389 6390 Added s60/symbian platform defines. 6391 http://bugs.webkit.org/show_bug.cgi?id=11540 6392 6393 * wtf/Platform.h: 6394 6395=== Safari-521.30 === 6396 63972006-11-08 Ada Chan <adachan@apple.com> 6398 6399 Reviewed by darin. 6400 6401 Added a method to delete all the keys in a HashMap. 6402 6403 * wtf/HashMap.h: 6404 (WTF::deleteAllPairFirsts): 6405 (WTF::deleteAllKeys): 6406 64072006-11-07 Anders Carlsson <acarlsson@apple.com> 6408 6409 Reviewed by Geoff. 6410 6411 * API/JSClassRef.cpp: 6412 (OpaqueJSClass::OpaqueJSClass): 6413 Initialize cachedPrototype to 0. 6414 64152006-11-06 Krzysztof Kowalczyk <kkowalczyk@gmail.com> 6416 6417 Reviewed by Maciej. 6418 6419 Remove warning about garbage after #else. #else clause applies for all 6420 non-mac platforms, not only win. 6421 6422 * kjs/date_object.cpp: 6423 64242006-11-06 Mark Rowe <bdash@webkit.org> 6425 6426 Reviewed by the wonderful Mitz Pettel. 6427 6428 http://bugs.webkit.org/show_bug.cgi?id=11524 6429 Bug 11524: REGRESSION(r9842): Array.prototype.join should use ToString operator rather than calling toString on each element 6430 6431 * kjs/array_object.cpp: 6432 (ArrayProtoFunc::callAsFunction): Use ToString operator on each element rather than calling their toString method. 6433 64342006-11-03 Steve Falkenburg <sfalken@apple.com> 6435 6436 Fix build 6437 6438 * kjs/JSImmediate.h: 6439 64402006-11-03 Alexey Proskuryakov <ap@nypop.com> 6441 6442 Reviewed by Darin. 6443 6444 http://bugs.webkit.org/show_bug.cgi?id=11504 6445 Fix warnings on non 32 bit platforms 6446 6447 * kjs/JSImmediate.h: 6448 (KJS::JSImmediate::NanAsBits): 6449 (KJS::JSImmediate::oneAsBits): 6450 Rewrite in a way that moves runtime checks to compile-time. 6451 6452 (KJS::): 6453 (KJS::JSImmediate::fromDouble): 6454 (KJS::JSImmediate::toDouble): 6455 64562006-11-02 George Staikos <staikos@kde.org> 6457 6458 Reviewed by Maciej. 6459 6460 * collector.cpp: 6461 Remove a deprecated pthreads call. 6462 64632006-11-02 Anders Carlsson <acarlsson@apple.com> 6464 6465 Reviewed by Maciej, landed by Anders. 6466 6467 * CMakeLists.txt: 6468 Make KDE support optional. 6469 64702006-11-01 Kevin McCullough <KMcCullough@apple.com> 6471 6472 Reviewed by Brady. 6473 6474 - Fixes many JavaScriptCore tests in other timezones. The root problem is that on mac localtime() returns historically accurate information for DST, but the JavaScript spec explicitly states to not take into account historical information but rather to interpolate from valid years. 6475 6476 * kjs/DateMath.cpp: 6477 (KJS::equivalentYearForDST): 6478 (KJS::getDSTOffsetSimple): 6479 (KJS::getDSTOffset): 6480 64812006-10-31 Geoffrey Garen <ggaren@apple.com> 6482 6483 Reviewed by Beth. 6484 6485 Fixed http://bugs.webkit.org/show_bug.cgi?id=11477 6486 REGRESSION: GMail crashes in KJS::FunctionImp::callerGetter 6487 6488 * kjs/function.cpp: 6489 (KJS::FunctionImp::argumentsGetter): Removed unnecessary braces. 6490 (KJS::FunctionImp::callerGetter): More logical NULL checking. 6491 64922006-10-31 Oliver Hunt <oliver@apple.com> 6493 6494 Reviewed by Geoff. 6495 6496 Adding definition for PLATFORM(CI) 6497 6498 * wtf/Platform.h: 6499 65002006-10-31 Vladimir Olexa <vladimir.olexa@gmail.com> 6501 6502 Reviewed by Geoff. 6503 6504 http://bugs.webkit.org/show_bug.cgi?id=4166 6505 Function object does not support caller property 6506 6507 Test: fast/js/caller-property.html 6508 6509 * kjs/function.cpp: 6510 (KJS::FunctionImp::callerGetter): added 6511 (KJS::FunctionImp::getOwnPropertySlot): added if statement to handle callerGetter() 6512 * kjs/function.h: added callerGetter() declaration 6513 * kjs/identifier.h: added caller property macro 6514 * tests/mozilla/expected.html: 6515 65162006-10-30 Kevin McCullough <KMcCullough@apple.com> 6517 6518 Reviewed by Adam. 6519 6520 - Fix some timezone issues and JavaScriptCore date tests. Addresses bugzilla 4930. 6521 6522 * kjs/DateMath.h: 6523 (KJS::GregorianDateTime::GregorianDateTime): Here's the fix, to add parenthesis for order of precedence. 6524 * kjs/date_object.cpp: 6525 (KJS::DateProtoFunc::callAsFunction): 6526 (KJS::DateObjectImp::construct): memset not needed as GregorianDateTime initializes itself. 6527 65282006-10-30 Darin Adler <darin@apple.com> 6529 6530 Reviewed by John Sullivan. 6531 6532 * kjs/SavedBuiltins.h: Added needed include. 6533 * wtf/OwnPtr.h: (WTF::OwnPtr::set): Fixed mistake in assertion. 6534 65352006-10-28 Darin Adler <darin@apple.com> 6536 6537 Reviewed by Maciej. 6538 6539 - renamed PassRefPtr::release to releaseRef to make it clearer that 6540 it's the counterpart of adoptRef, and to make it harder to confuse 6541 it with the safer-to-use RefPtr::release 6542 6543 * kjs/identifier.cpp: 6544 (KJS::CStringTranslator::translate): 6545 (KJS::UCharBufferTranslator::translate): 6546 * kjs/ustring.cpp: 6547 (KJS::UString::Rep::create): 6548 * wtf/PassRefPtr.h: 6549 (WTF::PassRefPtr::PassRefPtr): 6550 (WTF::PassRefPtr::~PassRefPtr): 6551 (WTF::PassRefPtr::get): 6552 (WTF::PassRefPtr::releaseRef): 6553 (WTF::PassRefPtr::operator->): 6554 (WTF::PassRefPtr::operator=): 6555 (WTF::adoptRef): 6556 (WTF::static_pointer_cast): 6557 (WTF::const_pointer_cast): 6558 * wtf/RefPtr.h: 6559 (WTF::RefPtr::RefPtr): 6560 (WTF::RefPtr::operator=): 6561 65622006-10-28 Darin Adler <darin@apple.com> 6563 6564 Reviewed by Steve. 6565 6566 * kjs/grammar.y: Add definitions of YYMALLOC and YYFREE to fix 6567 a warning some people see (not sure why others don't see it). 6568 6569 * JavaScriptCore.vcproj/JavaScriptCore/grammarWrapper.cpp: Touch 6570 this file to force it to re-build grammar.cpp. 6571 65722006-10-28 Darin Adler <darin@apple.com> 6573 6574 Reviewed by Geoff. 6575 6576 - made changes so the code compiles with the highest warning level 6577 under MSVC (disabling some warnings, making some code fixes) 6578 6579 * API/JSCallbackConstructor.cpp: 6580 (KJS::JSCallbackConstructor::construct): 6581 * API/JSCallbackFunction.cpp: 6582 (KJS::JSCallbackFunction::callAsFunction): 6583 * API/JSCallbackObject.cpp: 6584 (KJS::JSCallbackObject::init): 6585 (KJS::JSCallbackObject::construct): 6586 (KJS::JSCallbackObject::callAsFunction): 6587 * API/JSObjectRef.cpp: 6588 (JSPropertyNameArrayGetNameAtIndex): 6589 * API/JSStringRef.cpp: 6590 (JSStringCreateWithCharacters): 6591 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: 6592 * bindings/c/c_utility.cpp: 6593 (KJS::Bindings::convertUTF8ToUTF16): 6594 (KJS::Bindings::coerceValueToNPVariantStringType): 6595 (KJS::Bindings::convertValueToNPVariant): 6596 * kjs/DateMath.h: 6597 (KJS::GregorianDateTime::GregorianDateTime): 6598 * kjs/ExecState.h: 6599 (KJS::ExecState::hadException): 6600 * kjs/JSImmediate.h: 6601 (KJS::JSImmediate::fromDouble): 6602 (KJS::JSImmediate::toDouble): 6603 (KJS::JSImmediate::NanAsBits): 6604 (KJS::JSImmediate::oneAsBits): 6605 * kjs/Parser.h: 6606 * kjs/PropertyNameArray.h: 6607 (KJS::PropertyNameArray::size): 6608 * kjs/array_object.cpp: 6609 (ArrayObjectImp::callAsFunction): 6610 * kjs/bool_object.cpp: 6611 (BooleanObjectImp::callAsFunction): 6612 * kjs/collector.cpp: 6613 (KJS::Collector::allocate): 6614 (KJS::Collector::markCurrentThreadConservatively): 6615 (KJS::Collector::collect): 6616 * kjs/completion.h: 6617 (KJS::Completion::isValueCompletion): 6618 * kjs/date_object.cpp: 6619 (KJS::findMonth): 6620 * kjs/debugger.cpp: 6621 (Debugger::sourceParsed): 6622 (Debugger::sourceUnused): 6623 (Debugger::exception): 6624 (Debugger::atStatement): 6625 (Debugger::callEvent): 6626 (Debugger::returnEvent): 6627 * kjs/dtoa.cpp: 6628 * kjs/error_object.cpp: 6629 (ErrorObjectImp::callAsFunction): 6630 (NativeErrorImp::callAsFunction): 6631 * kjs/function.cpp: 6632 (KJS::FunctionImp::processVarDecls): 6633 (KJS::GlobalFuncImp::callAsFunction): 6634 * kjs/function_object.cpp: 6635 (FunctionPrototype::callAsFunction): 6636 * kjs/grammar.y: 6637 * kjs/identifier.cpp: 6638 (KJS::CStringTranslator::translate): 6639 (KJS::Identifier::add): 6640 * kjs/internal.h: 6641 * kjs/lexer.cpp: 6642 (Lexer::lex): 6643 (Lexer::isIdentStart): 6644 (Lexer::isIdentPart): 6645 (isDecimalDigit): 6646 (Lexer::isHexDigit): 6647 (Lexer::isOctalDigit): 6648 (Lexer::matchPunctuator): 6649 (Lexer::singleEscape): 6650 (Lexer::convertOctal): 6651 (Lexer::convertHex): 6652 (Lexer::convertUnicode): 6653 (Lexer::record8): 6654 * kjs/lexer.h: 6655 * kjs/math_object.cpp: 6656 (MathFuncImp::callAsFunction): 6657 * kjs/number_object.cpp: 6658 (integer_part_noexp): 6659 (intPow10): 6660 (NumberProtoFunc::callAsFunction): 6661 (NumberObjectImp::callAsFunction): 6662 * kjs/object.cpp: 6663 (KJS::JSObject::deleteProperty): 6664 (KJS::JSObject::callAsFunction): 6665 (KJS::JSObject::toBoolean): 6666 (KJS::JSObject::toObject): 6667 * kjs/object.h: 6668 (KJS::JSObject::getPropertySlot): 6669 * kjs/property_map.cpp: 6670 (KJS::isValid): 6671 (KJS::PropertyMap::put): 6672 (KJS::PropertyMap::insert): 6673 (KJS::PropertyMap::containsGettersOrSetters): 6674 * kjs/property_map.h: 6675 (KJS::PropertyMap::hasGetterSetterProperties): 6676 * kjs/property_slot.h: 6677 * kjs/string_object.cpp: 6678 (StringInstance::getPropertyNames): 6679 (StringObjectImp::callAsFunction): 6680 (StringObjectFuncImp::callAsFunction): 6681 * kjs/ustring.cpp: 6682 (KJS::UString::Rep::computeHash): 6683 (KJS::UString::UString): 6684 (KJS::UString::from): 6685 (KJS::UString::append): 6686 (KJS::UString::ascii): 6687 (KJS::UString::operator=): 6688 (KJS::UString::find): 6689 (KJS::UString::rfind): 6690 * kjs/ustring.h: 6691 (KJS::UChar::high): 6692 (KJS::UChar::low): 6693 (KJS::UCharReference::low): 6694 (KJS::UCharReference::high): 6695 * kjs/value.cpp: 6696 (KJS::JSValue::toUInt16): 6697 * kjs/value.h: 6698 * pcre/pcre_compile.c: 6699 (get_othercase_range): 6700 * pcre/pcre_exec.c: 6701 (match): 6702 * pcre/pcre_internal.h: 6703 * wtf/HashFunctions.h: 6704 (WTF::intHash): 6705 (WTF::PtrHash::hash): 6706 * wtf/MathExtras.h: 6707 (isnan): 6708 (lround): 6709 (lroundf): 6710 * wtf/StringExtras.h: 6711 (strncasecmp): 6712 * wtf/unicode/icu/UnicodeIcu.h: 6713 (WTF::Unicode::isPrintableChar): 6714 67152006-10-26 W. Andy Carrel <wac@google.com> 6716 6717 Reviewed by Maciej. 6718 6719 - Fix http://bugs.webkit.org/show_bug.cgi?id=7445 / 6720 <rdar://problem/4614195> (and 7253 / <rdar://4694011>) by changing 6721 inline regexps so that they can have \u escaped Unicode sequences and 6722 still work properly. 6723 6724 * kjs/lexer.cpp: 6725 (Lexer::Lexer): 6726 (Lexer::setCode): 6727 (Lexer::shift): Looking ahead one additional character for the benefit 6728 of scanRegExp 6729 (Lexer::scanRegExp): Change code to support unicode escapes in inline 6730 regexps. 6731 * kjs/lexer.h: Extra lookahead added. 6732 6733=== Safari-521.29 === 6734 67352006-10-26 Nikolas Zimmermann <zimmermann@kde.org> 6736 6737 Reviewed by Darin. 6738 6739 Fix build with older gcc 3.3.4. 6740 6741 * kjs/DateMath.cpp: Remove inline prefix. 6742 (KJS::equivalentYearForDST): 6743 67442006-10-26 Darin Adler <darin@apple.com> 6745 6746 Reviewed by John. 6747 6748 - fix iteration of properties of string objects (found because of a warning 6749 emitted by the MSVC compiler) 6750 6751 * kjs/string_object.cpp: (StringInstance::getPropertyNames): Change code that 6752 wants to format a number as a string to use UString::from. Before it was using 6753 the UString constructor that makes a string from a character! 6754 6755 * kjs/ustring.h: 6756 * kjs/ustring.cpp: Remove the dangerous and not all that helpful UString(char) 6757 constructor. 6758 6759 * kjs/grammar.y: Change code to not depend on the UString(char) constructor. 6760 This is potentially more efficient anyway because we could overload the + operator 6761 some day to handle char* directly instead of creating a UString. 6762 6763 * kjs/nodes2string.cpp: (SourceStream::operator<<): Change code to not depend on 6764 the UString(char) constructor. 6765 67662006-10-25 Kevin McCullough <KMcCullough@apple.com> 6767 6768 Reviewed by Steve (rubber stamp). 6769 6770 - Link against your local build of JavaScriptCore.lib first, this fixes some errors on release builds of testkjs. 6771 6772 * JavaScriptCore.vcproj/testkjs/testkjs.vcproj: 6773 67742006-10-25 Geoffrey Garen <ggaren@apple.com> 6775 6776 Reviewed by Lou. 6777 6778 Removed duplicate symbol declaration. 6779 6780 * JavaScriptCore.xcodeproj/project.pbxproj: 6781 * kjs/grammar.y: 6782 67832006-10-24 Steve Falkenburg <sfalken@apple.com> 6784 6785 Build config change 6786 6787 * JavaScriptCore.vcproj/testkjs/testkjs.vcproj: 6788 67892006-10-24 Kevin McCullough <KMcCullough@apple.com> 6790 6791 Reviewed by Brady. 6792 6793 - Fixes a date formatting issue on win. Specifically strftime cannot handle some ranges of time so we shift time call strftime and then manipulate the returned string, if needed. 6794 6795 * kjs/date_object.cpp: 6796 (KJS::): 6797 (KJS::formatLocaleDate): 6798 (KJS::DateProtoFunc::callAsFunction): 6799 68002006-10-23 Kevin McCullough <KMcCullough@apple.com> 6801 6802 Reviewed by 6803 6804 - Build fix 6805 6806 * JavaScriptCore.xcodeproj/project.pbxproj: 6807 * kjs/grammar.y: 6808 68092006-10-23 Kevin McCullough <KMcCullough@apple.com> 6810 6811 Reviewed by Maciej. 6812 6813 - Makes the toTM function an operator. Was going to piggy back on a patch but the patch needs more work. 6814 6815 * kjs/DateMath.cpp: 6816 (KJS::equivalentYearForDST): 6817 * kjs/DateMath.h: 6818 (KJS::GregorianDateTime::operator tm): 6819 * kjs/date_object.cpp: 6820 (KJS::formatTime): 6821 (KJS::DateProtoFunc::callAsFunction): 6822 68232006-10-23 Kevin McCullough <KMcCullough@apple.com> 6824 6825 Reviewed by Maciej. 6826 6827 - Fixes two regressions on win. Both are stack overflows. For one the number of recursions is capped at 100, and for the other, nested parenthesis pairs are not evaluated (since they would evaluate to whatever is in them anyway). 6828 6829 * kjs/grammar.y: 6830 * kjs/object.cpp: 6831 68322006-10-21 Steve Falkenburg <sfalken@apple.com> 6833 6834 Reviewed by Adam. 6835 6836 Add minimal compatibility with MSVCRT leak checker 6837 6838 * wtf/FastMalloc.h: 6839 68402006-10-23 Kevin McCullough <KMcCullough@apple.com> 6841 6842 Reviewed by Geof. 6843 6844 - Sets the lowercase range correctly in the test and consolidates a variable to make the test more readable. 6845 6846 * tests/mozilla/ecma/String/15.5.4.11-2.js: 6847 68482006-10-21 Darin Adler <darin@apple.com> 6849 6850 Reviewed by Anders. 6851 6852 - http://bugs.webkit.org/show_bug.cgi?id=11377 6853 swap(Vector, Vector) should be O(1) instead of O(n) 6854 6855 * wtf/Vector.h: 6856 (WTF::VectorBuffer::swap): Added. 6857 (WTF::Vector::swap): Added. 6858 (WTF::swap): Added overload that takes two Vector objects. 6859 68602006-10-21 Darin Adler <darin@apple.com> 6861 6862 Reviewed by Adam. 6863 6864 - http://bugs.webkit.org/show_bug.cgi?id=11376 6865 build scripts should invoke make with "-j" option for multiple processors 6866 6867 * JavaScriptCore.xcodeproj/project.pbxproj: Pass -j `sysctl -n hw.ncpu` to make. 6868 68692006-10-19 Kevin McCullough <KMcCullough@apple.com> 6870 6871 Reviewed by Geof. 6872 6873 Changed test to make us pass Georgian case changing for Unicode 4.0 and 5.0. This incorporates changes from the 1.4 revision of the same mozilla test. 6874 On Tiger we are still using Unicode 4.0 but on win and Leopard we are using Unicode 5.0, so this test currently allows for either answer. 6875 6876 * tests/mozilla/ecma/String/15.5.4.11-2.js: 6877 68782006-10-18 Maciej Stachowiak <mjs@apple.com> 6879 6880 Reviewed by Geoff. 6881 6882 - remove vestiges of KXMLCore name (former name of WTF). 6883 6884 * wtf/Assertions.h: 6885 * wtf/FastMalloc.h: 6886 (operator new): 6887 (operator delete): 6888 (operator new[]): 6889 (operator delete[]): 6890 * wtf/FastMallocInternal.h: 6891 * wtf/Forward.h: 6892 * wtf/GetPtr.h: 6893 * wtf/HashCountedSet.h: 6894 * wtf/HashFunctions.h: 6895 * wtf/HashMap.h: 6896 * wtf/HashSet.h: 6897 * wtf/HashTable.h: 6898 * wtf/HashTraits.h: 6899 * wtf/ListRefPtr.h: 6900 * wtf/MathExtras.h: 6901 * wtf/Noncopyable.h: 6902 * wtf/OwnArrayPtr.h: 6903 * wtf/OwnPtr.h: 6904 * wtf/PassRefPtr.h: 6905 * wtf/Platform.h: 6906 * wtf/RefPtr.h: 6907 * wtf/StringExtras.h: 6908 (snprintf): 6909 * wtf/UnusedParam.h: 6910 * wtf/Vector.h: 6911 * wtf/VectorTraits.h: 6912 69132006-10-17 Steve Falkenburg <sfalken@apple.com> 6914 6915 Reviewed by Maciej. 6916 6917 Adjust include paths 6918 6919 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: 6920 69212006-10-17 Kevin McCullough <KMcCullough@apple.com> 6922 6923 Reviewed by Darin. 6924 6925 Fixed a date issue where the UTC offset was not set in win. 6926 6927 * kjs/DateMath.cpp: 6928 (KJS::getDSTOffsetSimple): 6929 (KJS::getDSTOffset): 6930 (KJS::msToGregorianDateTime): 6931 * kjs/DateMath.h: 6932 (KJS::): 6933 (KJS::GregorianDateTime::GregorianDateTime): 6934 69352006-10-17 Kevin McCullough <KMcCullough@apple.com> 6936 6937 Reviewed by Brady. 6938 6939 Fixes a JavaScriptCore math issue on win. 6940 6941 * kjs/math_object.cpp: 6942 (MathFuncImp::callAsFunction): 6943 * wtf/MathExtras.h: 6944 (wtf_atan2): 6945 69462006-10-16 Kevin McCullough <kmccullough@apple.com> 6947 6948 Reviewed by Geof. 6949 6950 Removed unecessary global specifiers. 6951 6952 * kjs/math_object.cpp: 6953 (MathFuncImp::callAsFunction): 6954 69552006-10-16 Kevin McCullough <KMcCullough@apple.com> 6956 6957 Reviewed by John. 6958 6959 Fixes a compile order issue for testkjs on win. 6960 6961 * JavaScriptCore.vcproj/testkjs/testkjs.vcproj: 6962 69632006-10-15 Krzysztof Kowalczyk <kkowalczyk@gmail.com> 6964 6965 Reviewed by Anders. 6966 6967 Remove junk (as gcc calls it) after #else clause. 6968 6969 * wtf/FastMalloc.cpp: 6970 (WTF::do_free): 6971 69722006-10-14 Krzysztof Kowalczyk <kkowalczyk@gmail.com> 6973 6974 Reviewed by Maciej. 6975 6976 Define KXMLCORE_USE_CURL for platforms that wish to use CURL as 6977 networking, and set it for GDK build 6978 6979 * wtf/Platform.h: 6980 69812006-10-13 Brett Wilson <brettw@google.com> 6982 6983 Reviewed by Kevin McCullough. 6984 6985 Fixes http://bugs.webkit.org/show_bug.cgi?id=11283 6986 Fixes Qt/Linux and Windows build 6987 6988 * kjs/DateMath.cpp: 6989 * kjs/DateMath.h: 6990 * kjs/date_object.cpp: 6991 (KJS::DateProtoFunc::callAsFunction): 6992 69932006-10-13 Kevin McCullough <KMcCullough@apple.com> 6994 6995 Reviewed by Adam, Geoff, Darin. 6996 6997 Fixed displaying the UTC offset and time zone string, as well as renamed the GregorianDateTime structure and clean up. 6998 6999 * ChangeLog: 7000 * kjs/DateMath.cpp: 7001 (KJS::getUTCOffset): 7002 (KJS::getDSTOffsetSimple): 7003 (KJS::gregorianDateTimeToMS): 7004 (KJS::msToGregorianDateTime): 7005 * kjs/DateMath.h: 7006 (KJS::GregorianDateTime::GregorianDateTime): 7007 (KJS::GregorianDateTime::~GregorianDateTime): 7008 (KJS::GregorianDateTime::toTM): 7009 * kjs/date_object.cpp: 7010 (KJS::gmtoffset): 7011 (KJS::formatDate): 7012 (KJS::formatDateUTCVariant): 7013 (KJS::formatTime): 7014 (KJS::fillStructuresUsingTimeArgs): 7015 (KJS::fillStructuresUsingDateArgs): 7016 (KJS::DateInstance::getTime): 7017 (KJS::DateInstance::getUTCTime): 7018 (KJS::DateProtoFunc::callAsFunction): 7019 (KJS::DateObjectImp::construct): 7020 (KJS::DateObjectImp::callAsFunction): 7021 (KJS::DateObjectFuncImp::callAsFunction): 7022 (KJS::parseDate): 7023 * kjs/date_object.h: 7024 70252006-10-13 Kevin McCullough <KMcCullough@apple.com> 7026 7027 Reviewed by Adam. 7028 7029 Gets JavaScripCore tests running on windows. 7030 7031 * Scripts/run-javascriptcore-tests: 7032 * Scripts/webkitdirs.pm: 7033 70342006-10-12 Geoffrey Garen <ggaren@apple.com> 7035 7036 Reviewed by Maciej. 7037 7038 Removed JSObjectMakeWithPrototype, clarified some comments. We really 7039 don't want people to manage their own prototypes, so we don't want an 7040 extra function in the API devoted to just that. People can still manage 7041 their own prototypes if they really want by using JSObjectSetPrototype. 7042 7043 * API/JSClassRef.cpp: 7044 (OpaqueJSClass::createNoAutomaticPrototype): 7045 (OpaqueJSClass::create): 7046 * API/JSClassRef.h: 7047 * API/JSObjectRef.cpp: 7048 (JSClassCreate): 7049 (JSObjectMake): 7050 * API/JSObjectRef.h: 7051 * API/testapi.c: 7052 (main): 7053 * JavaScriptCore.exp: 7054 70552006-10-12 Kevin McCullough <KMcCullough@apple.com> 7056 7057 Reviewed by Adam. 7058 7059 Build breakage fix 7060 7061 * kjs/DateMath.cpp: 7062 (KJS::msToTM): 7063 * kjs/date_object.cpp: 7064 (KJS::gmtoffset): 7065 70662006-10-11 Kevin McCullough <KMcCullough@apple.com> 7067 7068 Reviewed by Geoff. 7069 7070 Added our own tm struct to have a consistent set of fields, which lets us display the DST offset and timezone strings correctly. Also there is some code cleanup. 7071 7072 * kjs/DateMath.cpp: 7073 (KJS::timeToMS): 7074 (KJS::getUTCOffset): 7075 (KJS::getDSTOffsetSimple): 7076 (KJS::dateToMS): 7077 (KJS::msToTM): 7078 (KJS::tmToKJStm): 7079 (KJS::KJStmToTm): 7080 * kjs/DateMath.h: 7081 * kjs/date_object.cpp: 7082 (KJS::gmtoffset): 7083 (KJS::formatTime): 7084 (KJS::DateProtoFunc::callAsFunction): 7085 (KJS::DateObjectImp::construct): 7086 (KJS::DateObjectImp::callAsFunction): 7087 (KJS::DateObjectFuncImp::callAsFunction): 7088 (KJS::parseDate): 7089 * kjs/date_object.h: 7090 70912006-10-09 Krzysztof Kowalczyk <kkowalczyk@gmail.com> 7092 7093 Reviewed by Geoff. 7094 7095 Improve gdk build compiler flags (show warning, no rtti and exceptions). 7096 7097 * jscore.bkl: 7098 70992006-10-06 Kevin McCullough <KMcCullough@apple.com> 7100 7101 Reviewed by Brady. 7102 7103 DST and TimeZones were wrong in some cases, specifically on some of the dates where DST changes. 7104 7105 * kjs/DateMath.cpp: 7106 (KJS::equivalentYearForDST): 7107 (KJS::getUTCOffset): 7108 (KJS::getDSTOffsetSimple): 7109 (KJS::getDSTOffset): 7110 (KJS::dateToMseconds): 7111 (KJS::msToTM): 7112 * kjs/DateMath.h: 7113 * kjs/date_object.cpp: 7114 (KJS::gmtoffset): 7115 71162006-10-05 Darin Adler <darin@apple.com> 7117 7118 Reviewed by Kevin McCullough. 7119 7120 * wtf/Assertions.cpp: Fix build when _DEBUG is not defined. 7121 71222006-10-04 Kevin McCullough <KMcCullough@apple.com> 7123 7124 Reviewed by Adam. 7125 7126 - Removed an unnecessary assert that was stopping many pages. tm_gmtoff was not set for UTC time in mozilla but is always set for us. 7127 7128 * kjs/DateMath.cpp: 7129 (KJS::getUTCOffset): 7130 (KJS::msToTM): 7131 * kjs/date_object.cpp: 7132 (KJS::gmtoffset): 7133 (KJS::formatTime): 7134 71352006-10-04 Geoffrey Garen <ggaren@apple.com> 7136 7137 Patch by Darin and me, reviewed by Maciej. 7138 7139 Fixed <rdar://problem/4518397> REGRESSION(?): Oft-seen but unrepro crash 7140 in JavaScript garbage collection (KJS::Collector::collect()) 7141 <rdar://problem/4752492> Crash in KJS::collect 7142 7143 The issue here was allocating one garbage-collected object in the midst 7144 of allocating a second garbage-collected object. In such a case, the 7145 zeroIfFree word lies. 7146 7147 * kjs/collector.cpp: 7148 (KJS::Collector::allocate): 7149 (KJS::Collector::collect): 7150 71512006-10-04 Kevin McCullough <KMcCullough@apple.com> 7152 7153 Reviewed by Adam. 7154 7155 - Layout test fix 7156 7157 * kjs/DateMath.cpp: 7158 (KJS::dateToDayInYear): accept and correctly handle negative months 7159 71602006-10-05 Kevin McCullough <KMcCullough@apple.com> 7161 7162 build fix 7163 7164 * kjs/DateMath.cpp: 7165 (KJS::dateToDayInYear): 7166 71672006-10-05 Mark Rowe <bdash@webkit.org> 7168 7169 Reviewed by maculloch. 7170 7171 Gdk build fix. 7172 7173 * JavaScriptCoreSources.bkl: Add DateMath.cpp to file list. 7174 71752006-10-05 Kevin McCullough <KMcCullough@apple.com> 7176 7177 Reviewed by aroben 7178 7179 - build fix 7180 7181 * JavaScriptCore.xcodeproj/project.pbxproj: 7182 71832006-10-04 Nikolas Zimmermann <zimmermann@kde.org> 7184 7185 Reviewed by Mitz. 7186 7187 Fix Qt/Linux build by adding DateMath.cpp to compilation. 7188 7189 * CMakeLists.txt: Also replace tabs with spaces. 7190 71912006-10-04 Kevin McCullough <KMcCullough@apple.com> 7192 7193 Reviewed by DethBakin. 7194 7195 - Apparently the build bot uses an older version of XCode which warns about conversions and the newest version does not. I hope this fixes the build but I cann't be sure on my system. 7196 7197 * kjs/DateMath.cpp: 7198 (KJS::msToYear): 7199 (KJS::dayInYear): 7200 (KJS::dateToDayInYear): 7201 72022006-10-05 Darin Adler <darin@apple.com> 7203 7204 Reviewed by Adam. 7205 7206 * wtf/Assertions.cpp: Changed assertion formatting to omit the "======" 7207 lines so you can see more assertions in less space. Also improved format 7208 of file/line information so it works with more development environments. 7209 72102006-10-04 Kevin McCullough <KMcCullough@apple.com> 7211 7212 Reviewed by Tim H. 7213 7214 - The build machine is more sensitive about automatic conversions. These fixes exp 7215licitly cast or change the input and return types of functions to avoid conversions. 7216 7217 * JavaScriptCore.xcodeproj/project.pbxproj: 7218 * kjs/DateMath.cpp: 7219 (KJS::): 7220 (KJS::msToDays): 7221 (KJS::msToYear): 7222 (KJS::dayInYear): 7223 (KJS::monthToDayInYear): 7224 (KJS::dateToDayInYear): 7225 (KJS::getDSTOffsetSimple): 7226 (KJS::getDSTOffset): 7227 (KJS::dateToMseconds): 7228 (KJS::msToTM): 7229 72302006-10-04 Kevin McCullough <KMcCullough@apple.com> 7231 7232 Reviewed by GGaren 7233 7234 - This is a big makeover for our Date implemenetation. This solves many platform specific issues, specifically dates before 1970, and simplifies some ugly code. The purpose of this was to get us to pass many of the JavaScriptCore tests on windows. 7235 7236 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: 7237 * JavaScriptCore.xcodeproj/project.pbxproj: 7238 * kjs/DateMath.cpp: Added. 7239 (KJS::): 7240 (KJS::daysInYear): 7241 (KJS::daysFrom1970ToYear): 7242 (KJS::msFrom1970ToYear): 7243 (KJS::msToDays): 7244 (KJS::msToYear): 7245 (KJS::isLeapYear): 7246 (KJS::isInLeapYear): 7247 (KJS::dayInYear): 7248 (KJS::msToMilliseconds): 7249 (KJS::msToWeekDay): 7250 (KJS::msToSeconds): 7251 (KJS::msToMinutes): 7252 (KJS::msToHours): 7253 (KJS::msToMonth): 7254 (KJS::msToDayInMonth): 7255 (KJS::monthToDayInYear): 7256 (KJS::timeToMseconds): 7257 (KJS::dateToDayInYear): 7258 (KJS::equivalentYearForDST): 7259 (KJS::getUTCOffset): 7260 (KJS::getDSTOffsetSimple): 7261 (KJS::getDSTOffset): 7262 (KJS::localTimeToUTC): 7263 (KJS::UTCToLocalTime): 7264 (KJS::dateToMseconds): 7265 (KJS::msToTM): 7266 (KJS::isDST): 7267 * kjs/DateMath.h: Added. 7268 (KJS::): 7269 * kjs/date_object.cpp: 7270 (KJS::gmtoffset): 7271 (KJS::formatTime): 7272 (KJS::DateInstance::getTime): 7273 (KJS::DateInstance::getUTCTime): 7274 (KJS::DateProtoFunc::callAsFunction): 7275 (KJS::DateObjectImp::construct): 7276 (KJS::DateObjectFuncImp::callAsFunction): 7277 (KJS::parseDate): 7278 * kjs/testkjs.cpp: 7279 * os-win32/stdint.h: 7280 72812006-10-02 Nikolas Zimmermann <zimmermann@kde.org> 7282 7283 Reviewed/landed by Adam. 7284 7285 Build testkjs on Qt/Linux. 7286 7287 * CMakeLists.txt: 7288 72892006-10-02 Nikolas Zimmermann <zimmermann@kde.org> 7290 7291 Reviewed by eseidel. Landed by eseidel. 7292 7293 Fix win32 build, which has no inttypes.h 7294 7295 * wtf/Assertions.h: 7296 72972006-10-02 Nikolas Zimmermann <zimmermann@kde.org> 7298 7299 Reviewed by eseidel & mjs. Landed by eseidel. 7300 7301 Fix Qt/Linux build with older gcc 3.3.4. 7302 http://bugs.webkit.org/show_bug.cgi?id=11116 7303 7304 * kjs/lookup.h: Move cacheGlobalObject into KJS namespace. 7305 (KJS::cacheGlobalObject): Also remove GCC_ROOT_NS_HACK. 7306 * wtf/Assertions.h: Include inttypes.h for uintptr_t. 7307 73082006-09-28 Steve Falkenburg <sfalken@apple.com> 7309 7310 Reviewed by Maciej. 7311 7312 Use $(ConfigSuffix) set via vsprops files to add _debug 7313 to end of debug filenames. 7314 7315 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: 7316 * JavaScriptCore.vcproj/debug.vsprops: Added. 7317 * JavaScriptCore.vcproj/dftables/dftables.vcproj: 7318 * JavaScriptCore.vcproj/release.vsprops: Added. 7319 * JavaScriptCore.vcproj/testkjs/testkjs.vcproj: 7320 73212006-09-28 Darin Adler <darin@apple.com> 7322 7323 Reviewed by Alice. 7324 7325 - support for change that should fix <rdar://problem/4733044> 7326 REGRESSION: XML iBench shows 10% perf. regression (copying 7327 strings while decoding) 7328 7329 * wtf/Vector.h: Changed VectorBuffer so that the general case 7330 contains an instance of the 0 case, since deriving from it 7331 was violating the Liskov Substitution Principle. 7332 (WTF::VectorBuffer::releaseBuffer): Added. Releases the buffer so it can 7333 be adopted by another data structure that uses the FastMalloc.h allocator. 7334 Returns 0 if the internal buffer was being used. 7335 (WTF::Vector::releaseBuffer): Added. Releases the buffer as above or creates 7336 a new one in the case where the internal buffer was being used. 7337 73382006-09-28 Maciej Stachowiak <mjs@apple.com> 7339 7340 Reviewed by Geoff. 7341 7342 - change garbage collection to happen at increments proportional to number of live objects, not always 7343 every 1000 allocations 7344 7345 * kjs/collector.cpp: 7346 (KJS::Collector::allocate): 7347 73482006-09-28 Maciej Stachowiak <mjs@apple.com> 7349 7350 Reviewed by Mitz. 7351 7352 - fixed REGRESSION (r16606): javascriptCore Crash on website load 7353 7354 Plus style fixes. 7355 7356 - fixed some possible off-by-one bugs 7357 - use indexing, not iterators, for Vectors 7358 - store Vector by pointer instead of by value to avoid blowing out FunctionImp size 7359 7360 * kjs/function.cpp: 7361 (KJS::FunctionImp::addParameter): 7362 (KJS::FunctionImp::parameterString): 7363 (KJS::FunctionImp::processParameters): 7364 (KJS::FunctionImp::lengthGetter): 7365 (KJS::FunctionImp::getParameterName): 7366 * kjs/function.h: 7367 73682006-09-27 Steve Falkenburg <sfalken@apple.com> 7369 7370 Reviewed by Maciej. 7371 7372 More build tweaks 7373 7374 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: 7375 * JavaScriptCore.vcproj/JavaScriptCore/dstroot-to-sdk.cmd: Removed. 7376 73772006-09-27 John Sullivan <sullivan@apple.com> 7378 7379 * kjs/function.cpp: 7380 (KJS::FunctionImp::getParameterName): 7381 removed assertion that displeased gcc 4.0.1 (build 5420): 7382 ASSERT(static_cast<size_t>(index) == index); 7383 73842006-09-27 Kevin McCullough <KMcCullough@apple.com> 7385 7386 Reviewed by GGaren. 7387 7388 Cleanup of previous fix which was to address Radar: 4752492 7389 7390 * kjs/function.cpp: 7391 (KJS::FunctionImp::addParameter): 7392 (KJS::FunctionImp::parameterString): 7393 (KJS::FunctionImp::processParameters): 7394 (KJS::FunctionImp::lengthGetter): 7395 (KJS::FunctionImp::getParameterName): 7396 * kjs/function.h: 7397 73982006-09-27 Kevin McCullough <KMcCullough@apple.com> 7399 7400 Reviewed by Adele. 7401 7402 Fixes a GC stack overflow crash. 7403 The change is to move from a linked list implementation of Parameters to a Vector. 7404 The problem with the linked list is that each one creates it's own stack frame when being destroyed and in extreme cases this caused the stack to overflow. 7405 7406 * kjs/function.cpp: 7407 (KJS::Parameter::Parameter): 7408 (KJS::FunctionImp::addParameter): 7409 (KJS::FunctionImp::parameterString): 7410 (KJS::FunctionImp::processParameters): 7411 (KJS::FunctionImp::lengthGetter): 7412 (KJS::FunctionImp::getParameterName): 7413 * kjs/function.h: 7414 74152006-09-27 Steve Falkenburg <sfalken@apple.com> 7416 7417 Fix last path fix. 7418 7419 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: 7420 74212006-09-27 Steve Falkenburg <sfalken@apple.com> 7422 7423 Set path before build. 7424 7425 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: 7426 74272006-09-27 Sean Gies <seangies@apple.com> 7428 7429 Reviewed by Adam Roben. 7430 7431 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: Debug config should link to debug runtime. 7432 * JavaScriptCore.vcproj/dftables/dftables.vcproj: Debug config should link to debug runtime. 7433 74342006-09-27 Don Melton <gramps@apple.com> 7435 7436 Reviewed by Adam Roben. 7437 7438 Changed line ending from DOS to UNIX format so it doesn't die running 7439 on my machine. ;) 7440 7441 * JavaScriptCore.vcproj/JavaScriptCore/build-generated-files.sh: 7442 74432006-09-23 Alexey Proskuryakov <ap@nypop.com> 7444 7445 Reviewed by Maciej. 7446 7447 http://bugs.webkit.org/show_bug.cgi?id=10183 7448 REGRESSION: obfuscated JS decoding breaks because of soft hyphen removal 7449 (Fanfiction.net author pages not listing stories) 7450 7451 Rolled out the fix for bug 4139. 7452 7453 * kjs/lexer.cpp: 7454 (Lexer::setCode): 7455 (Lexer::shift): 7456 * tests/mozilla/ecma/Array/15.4.5.1-1.js: 7457 * tests/mozilla/expected.html: 7458 74592006-09-22 Steve Falkenburg <sfalken@apple.com> 7460 7461 Build fix. 7462 7463 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: 7464 74652006-09-22 Darin Adler <darin@apple.com> 7466 7467 Reviewed by Alice. 7468 7469 * wtf/Vector.h: Add an append that takes a pointer and length. 7470 Generalize the existing Vector append to work on vectors with 7471 any value for inlineCapacity. Change the append algorithm so 7472 it doesn't check capacity each time through the loop. 7473 74742006-09-22 Steve Falkenburg <sfalken@apple.com> 7475 7476 Fix release build. 7477 7478 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: 7479 74802006-09-21 Geoffrey Garen <ggaren@apple.com> 7481 7482 Reviewed by Maciej. 7483 7484 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: 7485 Updated to include the right path. 7486 * wtf/FastMalloc.h: #include Platform.h, since we use Platform macros. 7487 7488=== Safari-521.27 === 7489 74902006-09-20 Anders Carlsson <acarlsson@apple.com> 7491 7492 Reviewed by Dave Hyatt. 7493 7494 * wtf/MathExtras.h: 7495 Get rid of lrint. 7496 74972006-09-20 Sean Gies <seangies@apple.com> 7498 7499 Reviewed by Steve Falkenburg. 7500 7501 * wtf/Assertions.cpp: Debug messages should go into debugger console. 7502 75032006-09-20 David Hyatt <hyatt@apple.com> 7504 7505 Add an implementation of lrint for Win32. 7506 7507 Reviewed by anders 7508 7509 * wtf/MathExtras.h: 7510 (lrint): 7511 75122006-09-15 Krzysztof Kowalczyk <kkowalczyk@gmail.com> 7513 7514 Reviewed by Adam. 7515 7516 http://bugs.webkit.org/show_bug.cgi?id=10864 7517 Bug 10864: Linux\GDK build fixes 7518 7519 * JavaScriptCoreSources.bkl: 7520 * jscore.bkl: 7521 75222006-09-15 Adam Roben <aroben@apple.com> 7523 7524 Windows build fix. 7525 7526 * JavaScriptCore.vcproj/JavaScriptCore/build-generated-files.sh: 7527 75282006-09-15 Anders Carlsson <acarlsson@apple.com> 7529 7530 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: 7531 Fix the release build. 7532 75332006-09-15 Anders Carlsson <acarlsson@apple.com> 7534 7535 Reviewed by Steve. 7536 7537 Add JavaScriptCore API to the build. 7538 * API/JSBase.cpp: 7539 * API/JSCallbackConstructor.cpp: 7540 * API/JSCallbackFunction.cpp: 7541 * API/JSCallbackObject.cpp: 7542 * API/JSClassRef.cpp: 7543 * API/JSContextRef.cpp: 7544 * API/JSObjectRef.cpp: 7545 * API/JSStringRef.cpp: 7546 * API/JSValueRef.cpp: 7547 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: 7548 * os-win32/stdbool.h: Added. 7549 75502006-09-12 Steve Falkenburg <sfalken@apple.com> 7551 7552 Reviewed by Ada. 7553 7554 Build tweaks (doing JavaScriptCore now since it doesn't have 7555 dependencies). 7556 7557 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: 7558 * JavaScriptCore.vcproj/JavaScriptCore/build-generated-files.sh: 7559 * JavaScriptCore.vcproj/JavaScriptCore/dstroot-to-sdk.cmd: Added. 7560 * JavaScriptCore.vcproj/dftables/dftables.vcproj: 7561 * JavaScriptCore.vcproj/testkjs/testkjs.vcproj: 7562 75632006-09-11 Brady Eidson <beidson@apple.com> 7564 7565 Build fix - I think Tim's last checkin wasn't tested on Tiger, possibly. I simply 7566 commented out the undefined constants until he can have a chance to make the right call 7567 7568 * bindings/objc/objc_utility.mm: 7569 (KJS::Bindings::objcValueTypeForType): Commented out undefined symbols 7570 75712006-09-11 Timothy Hatcher <timothy@apple.com> 7572 7573 Reviewed by Tim O. and Darin. 7574 7575 Add support for more method signatures affecting ObjC methods called from JavaScript: 7576 - Added unsigned types and long long. 7577 - Allow methods that use const, oneway, bycopy and byref type modifiers. 7578 7579 * bindings/objc/objc_instance.mm: 7580 (ObjcInstance::invokeMethod): 7581 * bindings/objc/objc_utility.h: 7582 (KJS::Bindings::): 7583 * bindings/objc/objc_utility.mm: 7584 (KJS::Bindings::convertValueToObjcValue): 7585 (KJS::Bindings::convertObjcValueToValue): 7586 (KJS::Bindings::objcValueTypeForType): 7587 75882006-09-05 Timothy Hatcher <timothy@apple.com> 7589 7590 Reviewed by Tim O. 7591 7592 <rdar://problem/4715840> SEL is not char* 7593 7594 * bindings/objc/objc_class.mm: 7595 (KJS::Bindings::ObjcClass::methodsNamed): use sel_getName instead of a char* cast. 7596 * bindings/objc/objc_runtime.mm: 7597 (ObjcFallbackObjectImp::callAsFunction): ditto 7598 75992006-09-03 Alexey Proskuryakov <ap@nypop.com> 7600 7601 Reviewed by Tim H. 7602 7603 http://bugs.webkit.org/show_bug.cgi?id=10693 7604 Convert JavaScript arrays to AppleScript lists 7605 7606 * JavaScriptCore.exp: Export ArrayInstance::info and ArrayInstance::getItem(). 7607 * kjs/array_instance.h: 7608 * kjs/array_object.cpp: 7609 (ArrayInstance::getItem): Added a method to access array items from C++. 7610 76112006-09-02 Krzysztof Kowalczyk <kkowalczyk@gmail.com> 7612 7613 Reviewed by Tim H. 7614 7615 Bug 10454: Unix bakefile fixes 7616 http://bugs.webkit.org/show_bug.cgi?id=10454 7617 7618 * JavaScriptCoreSources.bkl: 7619 76202006-09-01 Nikolas Zimmermann <zimmermann@kde.org> 7621 7622 Reviewed by hyatt. Landed by eseidel. 7623 7624 Fix build on Linux. 7625 7626 * pcre/CMakeLists.txt: Add wtf/ include. 7627 76282006-09-01 Nikolas Zimmermann <zimmermann@kde.org> 7629 7630 Reviewed and landed by ap. 7631 7632 Fix build on Linux (C89 without gcc extensions enabled). 7633 7634 * pcre/pcre_internal.h: Use C style comments. 7635 * wtf/Assertions.h: Use C style comments. 7636 * wtf/Platform.h: Use C style comments. 7637 76382006-09-01 Steve Falkenburg <sfalken@apple.com> 7639 7640 Fix build. 7641 7642 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: 7643 * JavaScriptCore.vcproj/dftables/dftables.vcproj: 7644 76452006-08-31 Anders Carlsson <acarlsson@apple.com> 7646 7647 Reviewed by Darin. 7648 7649 Add new portability functions to MathExtras.h and add StringExtras.h which is for 7650 string portability functions. 7651 7652 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: 7653 * bindings/c/c_instance.cpp: 7654 * kjs/date_object.cpp: 7655 * wtf/MathExtras.h: 7656 (copysign): 7657 (isfinite): 7658 * wtf/StringExtras.h: Added. 7659 (snprintf): 7660 (strncasecmp): 7661 76622006-08-31 Anders Carlsson <acarlsson@apple.com> 7663 7664 Reviewed by Tim H. 7665 7666 Fix Windows build. 7667 7668 * JavaScriptCore.vcproj/dftables/dftables.vcproj: 7669 * pcre/pcre_internal.h: 7670 76712006-08-31 Timothy Hatcher <timothy@apple.com> 7672 7673 Reviewed by Geoff. 7674 7675 Band-aid fix for PCRE to compile for ppc64 and x86_64 now that 7676 we use -Wshorten-64-to-32. Adds an INT_CAST macro that ASSERTs 7677 the value <= INT_MAX. 7678 7679 I filed <rdar://problem/4712064> to track the need to verify 7680 PCRE's 64-bit compliance. 7681 7682 * pcre/pcre_compile.c: 7683 (complete_callout): 7684 (compile_branch): 7685 (compile_regex): 7686 (pcre_compile2): 7687 * pcre/pcre_exec.c: 7688 (match): 7689 (pcre_exec): 7690 * pcre/pcre_get.c: 7691 (pcre_get_substring_list): 7692 * pcre/pcre_internal.h: 7693 * pcre/pcre_tables.c: 7694 * pcre/pcre_try_flipped.c: 7695 (_pcre_try_flipped): 7696 76972006-08-30 Darin Adler <darin@apple.com> 7698 7699 Reviewed by Tim Hatcher. 7700 7701 - add WTF::getPtr, a function template that makes it possible to write 7702 generic code that gets a raw pointer out of any of our pointer types 7703 7704 * JavaScriptCore.xcodeproj/project.pbxproj: 7705 * wtf/GetPtr.h: Added. 7706 * wtf/ListRefPtr.h: (WTF::getPtr): Added. 7707 * wtf/OwnArrayPtr.h: (WTF::getPtr): Added. 7708 * wtf/OwnPtr.h: (WTF::getPtr): Added. 7709 * wtf/PassRefPtr.h: (WTF::getPtr): Added. 7710 * wtf/RefPtr.h: (WTF::getPtr): Added. 7711 77122006-08-29 waylonis <waylonis@google.com> 7713 7714 Reviewed, tweaked by ggaren. 7715 7716 - Added storage and accessor functions for ExecState as a fix for 7717 http://bugs.webkit.org/show_bug.cgi?id=10114 7718 7719 * kjs/ExecState.cpp: 7720 (KJS::ExecState::ExecState): 7721 * kjs/ExecState.h: 7722 * kjs/context.h: 7723 (KJS::Context::setExecState): 7724 (KJS::Context::execState): 7725 77262006-08-30 Nikolas Zimmermann <zimmermann@kde.org> 7727 7728 Reviewed by Tim H. 7729 7730 Commit KDE related tweaks, to be able to 7731 differentiate between a Qt-only or a KDE build. 7732 7733 * CMakeLists.txt: Install wtf-unity library. 7734 * wtf/Platform.h: Add define for the KDE platform. 7735 77362006-08-28 Darin Adler <darin@apple.com> 7737 7738 Reviewed by Geoff. 7739 7740 * kjs/list.h: Use explicit in constructor (as appropriate). 7741 77422006-08-24 Nikolas Zimmermann <zimmermann@kde.org> 7743 7744 Reviewed, tweaked and landed by ap 7745 7746 http://bugs.webkit.org/show_bug.cgi?id=10467 7747 WebKit should have Qt platform support (Part II) 7748 7749 * CMakeLists.txt: Adjust to Anders' build fixes. 7750 * wtf/Platform.h: Fix define for the Qt platform (we don't use/need Cairo.) 7751 77522006-08-23 David Hyatt <hyatt@apple.com> 7753 7754 Fix Platform.h to include #defines for graphics features. 7755 7756 Reviewed by darin 7757 7758 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: 7759 * wtf/Platform.h: 7760 77612006-08-23 Anders Carlsson <acarlsson@apple.com> 7762 7763 Reviewed by Darin. 7764 7765 Make the bindings compile without CoreFoundation. 7766 7767 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: 7768 * bindings/c/c_instance.cpp: 7769 * bindings/c/c_utility.cpp: 7770 (KJS::Bindings::convertUTF8ToUTF16): 7771 * bindings/npapi.h: 7772 * bindings/runtime.cpp: 7773 (KJS::Bindings::Instance::createBindingForLanguageInstance): 7774 (KJS::Bindings::Instance::createLanguageInstanceForValue): 7775 * bindings/runtime_root.cpp: 7776 * bindings/runtime_root.h: 7777 * kjs/interpreter.cpp: 7778 (KJS::Interpreter::createLanguageInstanceForValue): 7779 * kjs/interpreter.h: 7780 77812006-08-22 Anders Carlsson <acarlsson@apple.com> 7782 7783 Reviewed by Darin. 7784 7785 Move the npruntime code over to using HashMap and the runtime_root code over to using 7786 HashMap and HashCountedSet. 7787 7788 * bindings/NP_jsobject.cpp: 7789 * bindings/c/c_utility.cpp: 7790 (KJS::Bindings::identifierFromNPIdentifier): 7791 * bindings/c/c_utility.h: 7792 * bindings/jni/jni_jsobject.cpp: 7793 (JavaJSObject::invoke): 7794 * bindings/npruntime.cpp: 7795 (getStringIdentifierMap): 7796 (getIntIdentifierMap): 7797 (_NPN_GetStringIdentifier): 7798 (_NPN_GetIntIdentifier): 7799 * bindings/runtime_root.cpp: 7800 (getReferencesByRootMap): 7801 (getReferencesSet): 7802 (KJS::Bindings::findReferenceSet): 7803 (KJS::Bindings::rootForImp): 7804 (KJS::Bindings::rootForInterpreter): 7805 (KJS::Bindings::addNativeReference): 7806 (KJS::Bindings::removeNativeReference): 7807 (RootObject::removeAllNativeReferences): 7808 * bindings/runtime_root.h: 7809 78102006-08-22 Anders Carlsson <acarlsson@apple.com> 7811 7812 Reviewed by Geoff. 7813 7814 Switch over the NPAPI and Java bindings to using HashMaps instead of dictionaries. 7815 7816 * JavaScriptCore.xcodeproj/project.pbxproj: 7817 * bindings/c/c_class.cpp: 7818 (KJS::Bindings::CClass::CClass): 7819 (KJS::Bindings::CClass::~CClass): 7820 (KJS::Bindings::CClass::classForIsA): 7821 (KJS::Bindings::CClass::methodsNamed): 7822 (KJS::Bindings::CClass::fieldNamed): 7823 * bindings/c/c_class.h: 7824 * bindings/jni/jni_class.cpp: 7825 (JavaClass::JavaClass): 7826 (JavaClass::~JavaClass): 7827 (JavaClass::methodsNamed): 7828 (JavaClass::fieldNamed): 7829 * bindings/jni/jni_class.h: 7830 * bindings/objc/objc_class.h: 7831 * bindings/objc/objc_class.mm: 7832 (KJS::Bindings::deleteMethod): 7833 (KJS::Bindings::deleteField): 7834 (KJS::Bindings::): 7835 (KJS::Bindings::ObjcClass::methodsNamed): 7836 (KJS::Bindings::ObjcClass::fieldNamed): 7837 * bindings/runtime.cpp: 7838 * bindings/runtime.h: 7839 * bindings/runtime_object.cpp: 7840 (RuntimeObjectImp::fieldGetter): 7841 (RuntimeObjectImp::getOwnPropertySlot): 7842 (RuntimeObjectImp::put): 7843 (RuntimeObjectImp::canPut): 7844 78452006-08-21 Vladimir Olexa <vladimir.olexa@gmail.com> 7846 7847 Reviewed by Darin. 7848 7849 http://bugs.webkit.org/show_bug.cgi?id=6252 7850 JavaScript 1.6 Array.lastIndexOf 7851 7852 Test: fast/js/array-lastIndexOf.html 7853 7854 * kjs/array_object.cpp: 7855 (ArrayProtoFunc::callAsFunction): Added a LastIndexOf case. 7856 * kjs/array_object.h: 7857 (KJS::ArrayProtoFunc::): Added LastIndexOf to enum. 7858 * tests/mozilla/expected.html: Two more tests now pass. 7859 78602006-08-20 Nikolas Zimmermann <zimmermann@kde.org> 7861 7862 Reviewed by Maciej. Landed by rwlbuis. 7863 7864 Fixes parts of: http://bugs.webkit.org/show_bug.cgi?id=10463 7865 WebKit should have Qt platform support 7866 7867 Removing obsolete QConstString/QString constructors in kjs code. 7868 7869 * kjs/identifier.h: 7870 * kjs/ustring.h: 7871 78722006-08-17 Nikolas Zimmermann <zimmermann@kde.org> 7873 7874 Reviewed by Maciej. Landed by rwlbuis. 7875 7876 Fixes: http://bugs.webkit.org/show_bug.cgi?id=10463 7877 WTF Changes needed for Qt platform code. 7878 7879 * wtf/Platform.h: 7880 * wtf/unicode/UnicodeDecomposition.h: Added. 7881 (WTF::Unicode::): 7882 * wtf/unicode/UnicodeDirection.h: Added. 7883 (WTF::Unicode::): 7884 * wtf/unicode/qt4/UnicodeQt4.cpp: Added. 7885 (WTF::Unicode::direction): 7886 (WTF::Unicode::category): 7887 (WTF::Unicode::decomposition): 7888 * wtf/unicode/qt4/UnicodeQt4.h: 7889 (WTF::Unicode::toLower): 7890 (WTF::Unicode::toUpper): 7891 (WTF::Unicode::isPrintableChar): 7892 (WTF::Unicode::isSpace): 7893 (WTF::Unicode::isPunct): 7894 (WTF::Unicode::isDigit): 7895 (WTF::Unicode::mirroredChar): 7896 (WTF::Unicode::compare): 7897 78982006-08-17 Nikolas Zimmermann <zimmermann@kde.org> 7899 7900 Reviewed by Eric. Landed by rwlbuis. 7901 7902 Fixes: http://bugs.webkit.org/show_bug.cgi?id=10464 7903 Offer a cmake build system for Qt platform. 7904 7905 * CMakeLists.txt: Added. 7906 * pcre/CMakeLists.txt: Added. 7907 79082006-08-17 Anders Carlsson <acarlsson@apple.com> 7909 7910 Reviewed by Maciej. 7911 7912 * bindings/npapi.h: 7913 Fix ifdef. 7914 79152006-08-15 Steve Falkenburg <sfalken@apple.com> 7916 7917 Reviewed by mjs. 7918 7919 Build fix. 7920 7921 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: 7922 * wtf/Assertions.h: 7923 79242006-08-15 Mark Rowe <opendarwin.org@bdash.net.nz> 7925 7926 Reviewed by Tim H. 7927 7928 Build fix: DWARF and -gfull are incompatible with symbol separation. 7929 7930 * JavaScriptCore.xcodeproj/project.pbxproj: 7931 79322006-08-15 Mark Rowe <opendarwin.org@bdash.net.nz> 7933 7934 Reviewed by Tim H. 7935 7936 http://bugs.webkit.org/show_bug.cgi?id=10394 7937 Bug 10394: WebKit Release and Production configurations should enable dead code stripping 7938 7939 * JavaScriptCore.xcodeproj/project.pbxproj: 7940 79412006-08-15 Mark Rowe <opendarwin.org@bdash.net.nz> 7942 7943 Reviewed by Tim H. 7944 7945 http://bugs.webkit.org/show_bug.cgi?id=10384 7946 Bug 10384: Switch to DWARF for Release configuration 7947 7948 * JavaScriptCore.xcodeproj/project.pbxproj: 7949 79502006-08-13 Maks Orlovich <maksim@kde.org> 7951 7952 Reviewed (and tweaked a little) by Maciej. 7953 7954 - shrank the size of JSObject by 8 bytes and made the corresponding reduction to the cell size, resulting 7955 in a 1.2% speed improvement on JS iBench (and probably overall memory savings). 7956 7957 This was done by removing _scope and _internalValue data members 7958 from JSObject and moving them only to the subclasses that actually 7959 make use of them. 7960 7961 * kjs/object.cpp: 7962 (KJS::JSObject::mark): No need to mark scope or internal value here. 7963 * kjs/object.h: 7964 (KJS::JSObject::JSObject): Don't initialize them. 7965 * kjs/JSWrapperObject.cpp: Added. New base class for object types that 7966 wrap primitive values (Number, String, Boolean, Date). 7967 (KJS::JSWrapperObject::mark): 7968 * kjs/JSWrapperObject.h: Added. 7969 (KJS::JSWrapperObject::JSWrapperObject): 7970 (KJS::JSWrapperObject::internalValue): 7971 (KJS::JSWrapperObject::setInternalValue): 7972 * kjs/array_object.cpp: 7973 (ArrayPrototype::ArrayPrototype): Don't set useless internal value. 7974 * kjs/bool_object.cpp: 7975 (BooleanInstance::BooleanInstance): Inherit from JSWrapperObject. 7976 (BooleanProtoFunc::callAsFunction): Fixed to account for fact that not all 7977 JSObjects have an internal value. 7978 (BooleanObjectImp::construct): ditto. 7979 * kjs/bool_object.h: 7980 * kjs/collector.cpp: Lowered cell size to 48. 7981 (KJS::Collector::allocate): meaningless whitespace change 7982 * kjs/date_object.cpp: 7983 (KJS::DateInstance::DateInstance): Inherit from JSWrapperObject. 7984 (KJS::DateProtoFunc::callAsFunction): adjusted for move of internalValue 7985 (KJS::DateObjectImp::construct): ditto 7986 * kjs/date_object.h: 7987 * kjs/error_object.cpp: 7988 (ErrorPrototype::ErrorPrototype): don't set internal value 7989 * kjs/function.cpp: move _scope and related handling here 7990 (KJS::FunctionImp::mark): mark scope 7991 * kjs/function.h: 7992 (KJS::FunctionImp::scope): moved here from JSObject 7993 (KJS::FunctionImp::setScope): ditto 7994 * kjs/number_object.cpp: 7995 (NumberInstance::NumberInstance): inherit from JSWrapperObject 7996 (NumberProtoFunc::callAsFunction): adjusted 7997 (NumberObjectImp::construct): adjusted 7998 * kjs/number_object.h: shring RegExp-related objects a little 7999 * kjs/regexp_object.cpp: 8000 (RegExpPrototype::RegExpPrototype): Adjust for size tweaks 8001 (RegExpObjectImp::RegExpObjectImp): ditto 8002 * kjs/regexp_object.h: 8003 * kjs/string_object.cpp: 8004 (StringInstance::StringInstance): inherit from JSWrapperObject 8005 (StringProtoFunc::callAsFunction): adjusted 8006 * kjs/string_object.h: 8007 * JavaScriptCore.exp: Exported new methods as needed. 8008 * JavaScriptCore.xcodeproj/project.pbxproj: Added new files to build. 8009 80102006-08-04 Brady Eidson <beidson@apple.com> 8011 8012 Reviewed by Geoff's rubber stamp 8013 8014 Fix a build break on Intel hardware causes by adapting stricter 8015 compiler warnings (-Wshorten-64-to-32) 8016 8017 * API/testapi.c: 8018 (assertEqualsAsNumber): manually cast some doubles to floats 8019 (main): ditto 8020 80212006-08-04 Sam Weinig <sam.weinig@gmail.com> 8022 8023 Reviewed by Darin. 8024 8025 - patch for http://bugs.webkit.org/show_bug.cgi?id=10192 8026 Make WebCore (and friends) compile with -Wshorten-64-to-32 8027 8028 * Adds -Wshorten-64-to-32 flag to Xcode project. 8029 * Adds explicit casts where OK. 8030 8031 * API/JSNodeList.c: 8032 (JSNodeList_item): 8033 (JSNodeList_getProperty): 8034 * JavaScriptCore.xcodeproj/project.pbxproj: 8035 80362006-08-04 Adam Roben <aroben@apple.com> 8037 8038 Reviewed by Anders. 8039 8040 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: Convert 8041 spaces to tabs 8042 80432006-08-03 Sam Weinig <sam.weinig@gmail.com> 8044 8045 Reviewed by Darin. 8046 8047 - patch for http://bugs.webkit.org/show_bug.cgi?id=10176 8048 Make WebCore compile with -Wundef 8049 8050 * Adds -Wundef flag to Xcode project 8051 * Converts #ifs to #ifdef and #ifndefs where needed. 8052 * Added #define YYMAXDEPTH 10000 in kjs/grammar.y 8053 to fix a warning from within Bison. 8054 8055 * JavaScriptCore.xcodeproj/project.pbxproj: 8056 * bindings/jni/jni_jsobject.cpp: 8057 (JavaJSObject::getSlot): 8058 (JavaJSObject::setSlot): 8059 * bindings/npapi.h: 8060 * bindings/objc/objc_class.mm: 8061 (KJS::Bindings::ObjcClass::methodsNamed): 8062 (KJS::Bindings::ObjcClass::fieldNamed): 8063 * bindings/objc/objc_instance.mm: 8064 (ObjcInstance::invokeMethod): 8065 * bindings/objc/objc_runtime.mm: 8066 (ObjcMethod::getMethodSignature): 8067 (ObjcField::name): 8068 (ObjcField::type): 8069 * kjs/grammar.y: 8070 * kjs/identifier.h: 8071 80722006-08-03 Anders Carlsson <acarlsson@apple.com> 8073 8074 Reviewed by John Sullivan. 8075 8076 * wtf/HashSet.h: 8077 (WTF::::operator): 8078 Return *this in operator= 8079 80802006-08-03 Adam Roben <aroben@apple.com> 8081 8082 Reviewed by Anders. 8083 8084 - Fixed Windows build 8085 8086 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: 8087 * wtf/MathExtras.h: Implement inline versions of these functions 8088 (nextafter): 8089 (nextafterf): 8090 80912006-08-02 Adam Roben <aroben@apple.com> 8092 8093 Reviewed by Darin. 8094 8095 - Fixed build 8096 8097 * kjs/date_object.cpp: 8098 (KJS::formatTime): 8099 81002006-07-29 Darin Adler <darin@apple.com> 8101 8102 - Removed tabs from these source files that still had them. 8103 We don't use them; that way source files look fine in editors 8104 that have tabs set to 8 spaces or to 4 spaces. 8105 - Removed allow-tabs Subversion property from the files too. 8106 8107 * bindings/NP_jsobject.cpp: 8108 * bindings/c/c_utility.cpp: 8109 * bindings/jni/jni_runtime.cpp: 8110 * bindings/jni/jni_utility.cpp: 8111 * bindings/objc/objc_utility.mm: 8112 * bindings/runtime.cpp: 8113 * bindings/runtime_method.cpp: 8114 * bindings/testbindings.cpp: 8115 * bindings/testbindings.mm: 8116 * kjs/date_object.cpp: 8117 * kjs/function.cpp: 8118 * kjs/list.cpp: 8119 * kjs/nodes.cpp: 8120 * kjs/nodes.h: 8121 * kjs/string_object.cpp: 8122 * kjs/ustring.cpp: 8123 81242006-07-29 Darin Adler <darin@apple.com> 8125 8126 * tests/mozilla/expected.html: Update test results now that regress-185165.js 8127 is succeeding. I suspect Anders fix for bug 4620655 is the reason. 8128 81292006-07-29 Sam Weinig <sam.weinig@gmail.com> 8130 8131 Reviewed by Darin. 8132 8133 - patch for http://bugs.webkit.org/show_bug.cgi?id=10080 8134 Adopt pedantic changes from the Unity project to improve 8135 cross-compiler compatibility 8136 8137 Changes include: 8138 * Removing trailing semicolon from namespace braces. 8139 * Removing trailing comma from last enum declaration. 8140 * Updating to match style guidelines. 8141 * Adding missing newline to the end of the file. 8142 * Turning on gcc warning for missing newline at the end of a source file 8143 (GCC_WARN_ABOUT_MISSING_NEWLINE in Xcode, -Wnewline in gcc). 8144 * Alphabetical sorting of Xcode source list files. 8145 * Replace use of non-portable variable-size array with Vector. 8146 * Use C-style comments instead of C++ comments in files that might 8147 be included by either C or C++ files. 8148 8149 * API/JSCallbackConstructor.cpp: 8150 (KJS::JSCallbackConstructor::construct): 8151 * API/JSCallbackFunction.cpp: 8152 (KJS::JSCallbackFunction::callAsFunction): 8153 * API/JSCallbackObject.cpp: 8154 (KJS::JSCallbackObject::construct): 8155 (KJS::JSCallbackObject::callAsFunction): 8156 * JavaScriptCore.xcodeproj/project.pbxproj: 8157 * JavaScriptCorePrefix.h: 8158 * bindings/jni/jni_class.cpp: 8159 (JavaClass::fieldNamed): 8160 * bindings/jni/jni_class.h: 8161 * bindings/jni/jni_instance.cpp: 8162 (JavaInstance::JavaInstance): 8163 (JavaInstance::valueOf): 8164 * bindings/jni/jni_objc.mm: 8165 (KJS::Bindings::dispatchJNICall): 8166 * bindings/jni/jni_runtime.cpp: 8167 (JavaParameter::JavaParameter): 8168 (JavaArray::JavaArray): 8169 * bindings/jni/jni_runtime.h: 8170 * bindings/jni/jni_utility.h: 8171 * bindings/objc/objc_instance.h: 8172 * bindings/runtime_array.h: 8173 * kjs/collector.h: 8174 * kjs/config.h: 8175 * kjs/ustring.cpp: 8176 * wtf/Platform.h: 8177 81782006-07-29 Mike Emmel <mike.emmel@gmail.com> 8179 8180 Reviewed by Darin. 8181 8182 - fixes for Linux build 8183 8184 * JavaScriptCoreSources.bkl: Added new files to build, kjs/PropertyNameArray.cpp 8185 and kjs/testkjs.cpp, and removed old files. 8186 81872006-07-24 Dan Waylonis <waylonis@google.com> 8188 8189 Reviewed and tweaked a bit by Darin. 8190 8191 - fix http://bugs.webkit.org/show_bug.cgi?id=9902 8192 jsNull and NSNull not properly converted between JS and ObjC 8193 8194 * bindings/objc/objc_utility.mm: (KJS::Bindings::convertObjcValueToValue): 8195 Added case for converting NSNull to jsNull. 8196 81972006-07-24 Rob Buis <buis@kde.org> 8198 8199 Reviewed by Darin. 8200 8201 http://bugs.webkit.org/show_bug.cgi?id=4258 8202 Date().toString() only includes GMT offset, not timezone string 8203 8204 Use the info in tm_zone to append timezone abbreviation 8205 to Date().toString(). 8206 8207 * kjs/date_object.cpp: 8208 (KJS::formatTime): 8209 82102006-07-24 Rob Buis <buis@kde.org> 8211 8212 Reviewed by Darin. 8213 8214 http://bugs.webkit.org/show_bug.cgi?id=5257 8215 setYear() does not match FireFox/IE behavior 8216 8217 Make sure the right values end up in tm_year. 8218 8219 * kjs/date_object.cpp: 8220 (KJS::formatTime): 8221 82222006-07-23 Mark Rowe <opendarwin.org@bdash.net.nz> 8223 8224 Reviewed by Maciej. 8225 8226 Bug 9686: [Drosera] Need the ability to break into Drosera on Javascript exceptions 8227 http://bugs.webkit.org/show_bug.cgi?id=9686 8228 8229 JavaScriptCore portion of the fix. 8230 8231 * JavaScriptCore.exp: Update symbol for change in argument type. 8232 * kjs/debugger.cpp: 8233 (Debugger::detach): Clear map of recent exceptions. 8234 (Debugger::hasHandledException): Track the most recent exception 8235 thrown by an interpreter. 8236 (Debugger::exception): Change exception argument to a JSValue. 8237 * kjs/debugger.h: 8238 * kjs/nodes.cpp: 8239 (Node::debugExceptionIfNeeded): Notify the debugger of an exception 8240 if it hasn't seen it before. 8241 (ThrowNode::execute): Notify the debugger that an exception is being thrown. 8242 * kjs/nodes.h: 8243 8244 2006-07-23 Geoffrey Garen <ggaren@apple.com> 8245 8246 Patch by Eric Albert, reviewed by Darin and me. 8247 8248 - Fixed <rdar://problem/4645931> JavaScriptCore stack-scanning code 8249 crashes (Collector::markStackObjectsConservatively) 8250 8251 * bindings/jni/jni_jsobject.cpp: On 64bit systems, jint is a long, not an 8252 int. 8253 (JavaJSObject::getSlot): 8254 (JavaJSObject::setSlot): 8255 * kjs/collector.cpp: 8256 (KJS::Collector::markCurrentThreadConservatively): Use a pointer instead of 8257 an int as 'dummy,' because on LP64 systems, an int is not pointer-aligned, 8258 and we want to scan the stack for pointers. 8259 * JavaScriptCore.xcodeproj/project.pbxproj: After a tense cease-fire, the 8260 XCode war has started up again! 8261 8262=== Safari-521.20 === 8263 82642006-07-21 Geoffrey Garen <ggaren@apple.com> 8265 8266 Reviewed by Darin. 8267 8268 <rdar://problem/4507265> REGRESSION: overlays don't work on HousingMaps.com (Google Maps-based site) 8269 8270 - Added support for strings that masquerade as undefined. Currently used 8271 by WebCore to implement undetectable style.filter. 8272 8273 The name is a little long, but it's only used in one line of code, so I 8274 thought clarity should win over brevity. 8275 8276 * JavaScriptCore.exp: 8277 * JavaScriptCore.xcodeproj/project.pbxproj: 8278 * kjs/object.h: 8279 * kjs/string_object.h: 8280 (KJS::StringInstanceThatMasqueradesAsUndefined::StringInstanceThatMasqueradesAsUndefined): 8281 (KJS::StringInstanceThatMasqueradesAsUndefined::masqueradeAsUndefined): 8282 (KJS::StringInstanceThatMasqueradesAsUndefined::toBoolean): 8283 8284=== Safari-521.19 === 8285 82862006-07-20 Steve Falkenburg <sfalken@apple.com> 8287 8288 Fix the build 8289 8290 * kjs/function.cpp: 8291 (KJS::escapeStringForPrettyPrinting): 8292 82932006-07-19 Anders Carlsson <acarlsson@apple.com> 8294 8295 Reviewed by Darin. 8296 8297 <rdar://problem/4620655> REGRESSION(10.4.7-10.5): preview button for a blogger.com post doesn't work 8298 8299 * kjs/nodes2string.cpp: 8300 (StringNode::streamTo): 8301 Return the escaped string. 8302 8303 (RegExpNode::streamTo): 8304 Use the correct syntax. 8305 8306 * kjs/function.cpp: 8307 (KJS::escapeStringForPrettyPrinting): 8308 * kjs/function.h: 8309 Add escape function which escapes a string for pretty-printing so it can be parsed again. 8310 8311 * wtf/unicode/icu/UnicodeIcu.h: 8312 (WTF::Unicode::isPrintableChar): 8313 New function. 8314 83152006-07-18 Maciej Stachowiak <mjs@apple.com> 8316 8317 Reviewed by Adele Peterson. 8318 8319 <rdar://problem/4589530> REGRESSION: null character in JS string causes parse error (works in Tiger and in other browsers) 8320 8321 * kjs/lexer.cpp: 8322 (Lexer::shift): 8323 (Lexer::lex): 8324 (Lexer::record16): 8325 (Lexer::scanRegExp): 8326 * kjs/lexer.h: 8327 83282006-07-18 Tim Omernick <timo@apple.com> 8329 8330 Reviewed by Tim Hatcher. 8331 8332 Removed a misleading comment; we recently added support for the NPNVPluginElementNPObject 8333 variable. 8334 8335 * bindings/npapi.h: 8336 8337=== Safari-521.18 === 8338 83392006-07-18 Timothy Hatcher <timothy@apple.com> 8340 8341 Made the following headers public: 8342 8343 * JavaScriptCore.h 8344 * JSBase.h 8345 * JSContextRef.h 8346 * JSObjectRef.h 8347 * JSStringRef.h 8348 * JSValueRef.h 8349 8350 * JavaScriptCore.xcodeproj/project.pbxproj: 8351 83522006-07-17 Geoffrey Garen <ggaren@apple.com> 8353 8354 Reviewed by Maciej. 8355 8356 - Added automatic prototype creation for classes. 8357 8358 A class stores a weak reference to a prototype, which is cleared when 8359 the prototype is garbage collected, to avoid a reference cycle. 8360 8361 We now have an attributes field in JSClassDefinition, that currently is 8362 used only to override automatic prototype creation when you want to manage your 8363 own prototypes, but can be extended in the future for other nefarious purposes. 8364 8365 Similarly, we have JSObjectMake and JSObjectMakeWithPrototype, the latter 8366 allowing you to manage your own prototypes. 8367 8368 JSObjectMakeConstructor is more interesting now, able to make a constructor 8369 on your behalf if you just give it a class. 8370 8371 - Removed bogus old code from minidom.js. 8372 8373 - Tweaked the headerdocs. 8374 8375 - Added more GC testing, which caught some leaks, and tested more funny 8376 edge cases in lookup, which caught a lookup bug. Removed some testing 8377 we used to do with MyObject because it was redundant with the new, cool 8378 stuff. 8379 8380 While fixing the lookup bug I retracted this change: 8381 8382 "If a static setProperty callback returns 'false', to indicate that the 8383 property was not set, we no longer forward the set request up the class 8384 chain, because that's almost certainly not what the programmer expected." 8385 8386 Returning false when setting a static property is a little silly, but you can see 8387 it being useful when shadowing a base class's static properties, and, regardless 8388 of usefullness, this is the defined behavior of the setProperty callback. 8389 8390 - Plus a little ASCII art, for the kids. 8391 83922006-07-17 Timothy Hatcher <timothy@apple.com> 8393 8394 Reviewed by Maciej. 8395 8396 <rdar://problem/4634874> WebScriptObject and WebUndefined are no longer defined by WebKit 8397 8398 Moves WebScriptObject and WebUndefined up to WebCore. 8399 This change does create an upwards-dependancy on WebScriptObject existing 8400 in the loaded process, but this code path in JavaScriptCore does not get used 8401 unless it is through WebKit/WebCore. Moving all of the binding code out of 8402 JavaScriptCore might make sense in the future. 8403 8404 * JavaScriptCore.exp: 8405 * JavaScriptCore.xcodeproj/project.pbxproj: 8406 * bindings/objc/WebScriptObject.h: Replaced. 8407 * bindings/objc/WebScriptObject.mm: Removed. 8408 * bindings/objc/WebScriptObjectPrivate.h: Removed. 8409 * bindings/objc/objc_class.h: 8410 * bindings/objc/objc_instance.h: 8411 * bindings/objc/objc_instance.mm: 8412 (ObjcInstance::~ObjcInstance): 8413 * bindings/objc/objc_runtime.h: 8414 * bindings/objc/objc_runtime.mm: 8415 (convertValueToObjcObject): 8416 * bindings/objc/objc_utility.mm: 8417 (KJS::Bindings::convertValueToObjcValue): 8418 (KJS::Bindings::convertObjcValueToValue): 8419 (KJS::Bindings::createObjcInstanceForValue): 8420 84212006-07-17 Darin Adler <darin@apple.com> 8422 8423 * API/JSBase.h: Fix comment formatting where things used to be lined up but 8424 are now ragged. Got rid of spaces that attempted to line things up. 8425 * API/JSObjectRef.h: Ditto. Also add missing periods for a couple of comments. 8426 84272006-07-17 Geoffrey Garen <ggaren@apple.com> 8428 8429 Reviewed by Maciej. 8430 8431 - Removed the exception parameter from the initialize callback and, by extension, 8432 JSObjectMake. We have never had a need for exceptions when iniitializing, 8433 so the parameter seemed likely to "get in the way." 8434 8435 Also, an exception in JavaScript is thrown in response to input -- 8436 "invalid URL", "index not a number", etc., so it's the job of the 8437 constructor function, not the initialize method, to throw. 8438 8439 If initialize *really* wants to throw, it can communicate the throw to 8440 the constructor through the constructed object's private data (e.g., set 8441 it to NULL, signaling to the consntructor that initialization failed.) 8442 8443 - Added JSObjectMakeWithData, which enables a constructor to set private 8444 data on an object *before* it has been initialized. That way, the initialize 8445 methods can properly operate on the data. 8446 8447 * API/JSNode.c: Moved ref into the initialize method, for better encapsulation, 8448 now that it's possible. 8449 * API/JSNodeList.c: ditto 8450 * API/minidom.c: 8451 (main): Do more aggressive garbage collection to test ref/deref and 8452 initialize/finalize. 8453 * API/minidom.js: store childNodes in a temporary so it doesn't get re-created 8454 like a thousand times. This makes debugging ref/deref easier 8455 84562006-07-17 Geoffrey Garen <ggaren@apple.com> 8457 8458 Reviewed by Maciej. 8459 8460 - Changed the initialize callback to run from least derived class (parent 8461 class) to most derived class. This enables C++ style initialization, 8462 and derived class overriding of member data. 8463 8464 - Added excpetion propopgation to JSObjectMake, to support initialize 8465 exceptions, and generally round out our policy of making function 8466 signatures as long as possible. 8467 8468 * API/JSCallbackObject.h: Use ExecState instead of ContextRef, cuz we're 8469 in C++ land now. 8470 84712006-07-17 Geoffrey Garen <ggaren@apple.com> 8472 8473 Reviewed by Maciej. 8474 8475 - Changed JSObjectMakeConstructor to JSObjectMakeConstructorWithCallback, 8476 to match JSObjectMakeFunctionWithCallback. 8477 8478 - Added prototype parameter, so the generated constructor 8479 automatically works with hasInstance / instanceof 8480 8481 - Moved hasInstance implementation from InternalFunctionImp to JSObject 8482 so that subclasses can inherit it without inheriting function-related baggage. 8483 More refactoring here would be good, but this seems like a good short-term 8484 solution. 8485 8486 (KJS::JSCallbackFunction::implementsHasInstance): override and return false, 8487 because callback functions aren't constructors. 8488 84892006-07-17 Maciej Stachowiak <mjs@apple.com> 8490 8491 Reviewed by Geoff. 8492 8493 - add a JSContextRef parameter to all JSValueRef, JSObjectRef, and JSContextRef operations; 8494 except JSObject{Get,Set}PrivateData which can be assumed to be simple pure accessors. 8495 8496 Also renamed the parameter "context" to "ctx" because it makes the code read better with this pervasive 8497 but usually uninteresting parameter. 8498 8499 * API/JSBase.cpp: 8500 (JSEvaluateScript): 8501 (JSCheckScriptSyntax): 8502 (JSGarbageCollect): 8503 * API/JSBase.h: 8504 * API/JSCallbackObject.cpp: 8505 (KJS::JSCallbackObject::JSCallbackObject): 8506 (KJS::JSCallbackObject::init): 8507 (KJS::JSCallbackObject::getOwnPropertySlot): 8508 (KJS::JSCallbackObject::put): 8509 (KJS::JSCallbackObject::deleteProperty): 8510 (KJS::JSCallbackObject::toNumber): 8511 (KJS::JSCallbackObject::toString): 8512 * API/JSContextRef.cpp: 8513 (JSGlobalContextCreate): 8514 (JSGlobalContextRetain): 8515 (JSGlobalContextRelease): 8516 (JSContextGetGlobalObject): 8517 * API/JSContextRef.h: 8518 * API/JSNode.c: 8519 (JSNodePrototype_appendChild): 8520 (JSNodePrototype_removeChild): 8521 (JSNodePrototype_replaceChild): 8522 (JSNode_getNodeType): 8523 (JSNode_getFirstChild): 8524 (JSNode_prototype): 8525 * API/JSNodeList.c: 8526 (JSNodeListPrototype_item): 8527 (JSNodeList_length): 8528 (JSNodeList_getProperty): 8529 (JSNodeList_prototype): 8530 * API/JSObjectRef.cpp: 8531 (JSObjectMake): 8532 (JSObjectMakeFunctionWithCallback): 8533 (JSObjectMakeConstructor): 8534 (JSObjectMakeFunction): 8535 (JSObjectGetPrototype): 8536 (JSObjectSetPrototype): 8537 (JSObjectHasProperty): 8538 (JSObjectGetProperty): 8539 (JSObjectSetProperty): 8540 (JSObjectGetPropertyAtIndex): 8541 (JSObjectSetPropertyAtIndex): 8542 (JSObjectDeleteProperty): 8543 (JSObjectIsFunction): 8544 (JSObjectCallAsFunction): 8545 (JSObjectIsConstructor): 8546 (JSObjectCallAsConstructor): 8547 (JSObjectCopyPropertyNames): 8548 * API/JSObjectRef.h: 8549 * API/JSStringRef.cpp: 8550 * API/JSValueRef.cpp: 8551 (JSValueGetType): 8552 (JSValueIsUndefined): 8553 (JSValueIsNull): 8554 (JSValueIsBoolean): 8555 (JSValueIsNumber): 8556 (JSValueIsString): 8557 (JSValueIsObject): 8558 (JSValueIsObjectOfClass): 8559 (JSValueIsEqual): 8560 (JSValueIsStrictEqual): 8561 (JSValueIsInstanceOfConstructor): 8562 (JSValueMakeUndefined): 8563 (JSValueMakeNull): 8564 (JSValueMakeBoolean): 8565 (JSValueMakeNumber): 8566 (JSValueMakeString): 8567 (JSValueToBoolean): 8568 (JSValueToNumber): 8569 (JSValueToStringCopy): 8570 (JSValueToObject): 8571 (JSValueProtect): 8572 (JSValueUnprotect): 8573 * API/JSValueRef.h: 8574 * API/minidom.c: 8575 (print): 8576 * API/testapi.c: 8577 (MyObject_getProperty): 8578 (MyObject_deleteProperty): 8579 (MyObject_callAsFunction): 8580 (MyObject_callAsConstructor): 8581 (MyObject_convertToType): 8582 (print_callAsFunction): 8583 (main): 8584 85852006-07-16 Geoffrey Garen <ggaren@apple.com> 8586 8587 Approved by Maciej, RS by Beth. 8588 8589 JSObjectMakeFunction -> JSObjectMakeFunctionWithCallback 8590 JSObjectMakeFunctionWithBody -> JSObjectMakeFunction 8591 8592 because the latter is more common, and more fundamental, than the former. 8593 8594 * API/APICast.h: 8595 (toJS): 8596 * API/JSBase.h: 8597 * API/JSCallbackObject.cpp: 8598 (KJS::JSCallbackObject::getOwnPropertySlot): 8599 (KJS::JSCallbackObject::put): 8600 (KJS::JSCallbackObject::deleteProperty): 8601 (KJS::JSCallbackObject::getPropertyNames): 8602 (KJS::JSCallbackObject::staticValueGetter): 8603 (KJS::JSCallbackObject::staticFunctionGetter): 8604 * API/JSClassRef.cpp: 8605 (OpaqueJSClass::OpaqueJSClass): 8606 (OpaqueJSClass::~OpaqueJSClass): 8607 * API/JSClassRef.h: 8608 * API/JSObjectRef.cpp: 8609 (JSClassCreate): 8610 (JSObjectMakeFunctionWithCallback): 8611 (JSObjectMakeFunction): 8612 (OpaqueJSPropertyNameArray::OpaqueJSPropertyNameArray): 8613 (JSObjectCopyPropertyNames): 8614 * API/JSObjectRef.h: 8615 * API/minidom.c: 8616 (main): 8617 * API/testapi.c: 8618 (main): 8619 * ChangeLog: 8620 * JavaScriptCore.exp: 8621 86222006-07-16 Geoffrey Garen <ggaren@apple.com> 8623 8624 Laughed at by Beth. 8625 8626 Replace __JS with OpaqueJS because the former, while used by CF, is 8627 a prefix that's triply-reserved by the compiler. (_* is reserved in global 8628 names, _[A-Z] is reserved in all names, and __ is reserved in all names 8629 in C++.) 8630 8631 Opaque is an alternative used by other Mac OS X framewokrs. 8632 8633 * API/APICast.h: 8634 (toJS): 8635 * API/JSBase.h: 8636 * API/JSCallbackObject.cpp: 8637 (KJS::JSCallbackObject::getOwnPropertySlot): 8638 (KJS::JSCallbackObject::put): 8639 (KJS::JSCallbackObject::deleteProperty): 8640 (KJS::JSCallbackObject::getPropertyNames): 8641 (KJS::JSCallbackObject::staticValueGetter): 8642 (KJS::JSCallbackObject::staticFunctionGetter): 8643 * API/JSClassRef.cpp: 8644 (OpaqueJSClass::OpaqueJSClass): 8645 (OpaqueJSClass::~OpaqueJSClass): 8646 * API/JSClassRef.h: 8647 * API/JSObjectRef.cpp: 8648 (JSClassCreate): 8649 (OpaqueJSPropertyNameArray::OpaqueJSPropertyNameArray): 8650 (JSObjectCopyPropertyNames): 8651 86522006-07-16 Darin Adler <darin@apple.com> 8653 8654 - try to fix Windows build 8655 8656 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: 8657 Added some recently added files, removed some recently removed. 8658 86592006-07-16 Geoffrey Garen <ggaren@apple.com> 8660 8661 Reviewed by Maciej. 8662 8663 - Change getProperty* to return undefined, rather than NULL, for missing 8664 properties, since that's what the spec says. Also added exception out 8665 parameters to the *Index functions, because they can call through to the 8666 regular functions, which can throw for custom objects. 8667 8668 * API/JSObjectRef.cpp: 8669 (JSObjectGetProperty): 8670 (JSObjectGetPropertyAtIndex): 8671 (JSObjectSetPropertyAtIndex): 8672 * API/JSObjectRef.h: 8673 * API/testapi.c: 8674 (main): 8675 86762006-07-16 Geoffrey Garen <ggaren@apple.com> 8677 8678 Reviewed by Maciej. 8679 8680 - Properly document and handle NULL callbacks for static properties. We 8681 throw an exception in any case other than a ReadOnly property with a NULL 8682 setProperty callback, because a NULL callback almost certainly indicates 8683 a programming error. Also throw an exception if hasProperty returns true 8684 for a property that getProperty can't get. 8685 8686 - If a static setProperty callback returns 'false', to indicate that the 8687 property was not set, we no longer forward the set request up the class 8688 chain, because that's almost certainly not what the programmer expected. 8689 8690 * API/JSCallbackObject.cpp: 8691 (KJS::JSCallbackObject::getOwnPropertySlot): 8692 (KJS::JSCallbackObject::put): 8693 (KJS::JSCallbackObject::staticValueGetter): 8694 (KJS::JSCallbackObject::staticFunctionGetter): 8695 (KJS::JSCallbackObject::callbackGetter): 8696 * API/JSObjectRef.h: 8697 * API/minidom.js: 8698 * API/testapi.c: 8699 (MyObject_hasProperty): 8700 * API/testapi.js: 8701 87022006-07-16 Geoffrey Garen <ggaren@apple.com> 8703 8704 Reviewed by Maciej. 8705 8706 - Added names to functions. 8707 8708 - Removed GetPrivate/SetPrivate from callbackFunctions and callbackConstructors. 8709 The private data idiom is that a JS object stores its native implementation 8710 as private data. For functions and constructors, the native implementation is nothing 8711 more than the callback they already store, so supporting private data, too, 8712 confuses the idiom. If you *really* want, you can still create a custom 8713 function with private data. 8714 8715 * API/JSCallbackConstructor.cpp: 8716 * API/JSCallbackConstructor.h: 8717 * API/JSCallbackFunction.cpp: 8718 (KJS::JSCallbackFunction::JSCallbackFunction): 8719 * API/JSCallbackFunction.h: 8720 * API/JSCallbackObject.cpp: 8721 (KJS::JSCallbackObject::staticFunctionGetter): 8722 * API/JSObjectRef.cpp: 8723 (JSObjectMakeFunction): 8724 (JSObjectMakeFunctionWithBody): 8725 (JSObjectGetPrivate): 8726 (JSObjectSetPrivate): 8727 * API/JSObjectRef.h: 8728 * API/minidom.c: 8729 (main): 8730 * API/testapi.c: 8731 (main): 8732 87332006-07-15 Maciej Stachowiak <mjs@apple.com> 8734 8735 Reviewed by Darin. 8736 8737 - switch property lists to be vector+set of Identifiers instead of list of References 8738 8739 This has the following benefits: 8740 8741 - no duplicates in property lists 8742 - simplifies API calls 8743 - probably more efficient, since linked list is gone 8744 - entirely removed Reference, ReferenceList and ProtectedReference types from the API 8745 8746 * kjs/PropertyNameArray.cpp: Added. 8747 (KJS::PropertyNameArray::add): Check set, if not already there, add to 8748 vector. 8749 * kjs/PropertyNameArray.h: Added. 8750 (KJS::PropertyNameArray::PropertyNameArray): Newly added type, combines 8751 a set and a vector to make a unique but ordered list of identifiers. 8752 (KJS::PropertyNameArray::begin): ditto 8753 (KJS::PropertyNameArray::end): ditto 8754 (KJS::PropertyNameArray::size): ditto 8755 (KJS::PropertyNameArray::operator[]): ditto 8756 * kjs/array_instance.h: 8757 * kjs/array_object.cpp: 8758 (ArrayInstance::getPropertyNames): renamed from getPropertyList, updated 8759 for PropertyNameArray 8760 (ArrayInstance::setLength): updated for PropertyNameArray 8761 (ArrayInstance::pushUndefinedObjectsToEnd): ditto 8762 * kjs/nodes.cpp: 8763 (ForInNode::execute): updated for PropertyNameArray 8764 * kjs/nodes.h: 8765 * kjs/object.cpp: 8766 (KJS::JSObject::getPropertyNames): renamed from getPropertyList, updated 8767 for PropertyNameArray 8768 * kjs/object.h: 8769 * kjs/property_map.cpp: 8770 (KJS::PropertyMap::getEnumerablePropertyNames): updated for PropertyNameArray 8771 (KJS::PropertyMap::getSparseArrayPropertyNames): ditto 8772 * kjs/property_map.h: 8773 * kjs/protected_reference.h: Removed. 8774 * kjs/reference.cpp: Removed. 8775 * kjs/reference.h: Removed. 8776 * kjs/reference_list.cpp: Removed. 8777 * kjs/reference_list.h: Removed. 8778 * kjs/scope_chain.cpp: 8779 (KJS::ScopeChain::print): Use PropertyNamesArray instead of ReferenceList. 8780 * kjs/string_object.cpp: 8781 (StringInstance::getPropertyNames): Updated for new approach. 8782 * kjs/string_object.h: 8783 * kjs/ustring.h: 8784 * API/APICast.h: 8785 (toJS): Added overload for PropertyNameAccumulatorRef / PropertyNameArray* 8786 (toRef): ditto 8787 * API/JSBase.h: 8788 * API/JSCallbackObject.cpp: 8789 (KJS::JSCallbackObject::getPropertyNames): Fixed for new API. 8790 * API/JSCallbackObject.h: 8791 * API/JSObjectRef.cpp: 8792 (__JSPropertyNameArray::__JSPropertyNameArray): Type used for a publicly vended 8793 JSPropertyNameArrayRef. 8794 (JSObjectCopyPropertyNames): New API call - renamed / refactored from 8795 JSObjectCreatePropertyList 8796 (JSPropertyNameArrayRetain): new retain call for JSPropertyNameArray. 8797 (JSPropertyNameArrayRelease): new release call for - " -. 8798 (JSPropertyNameArrayGetCount): Instead of having to use a stateful enumerator you 8799 can now get the count and items in any order. 8800 (JSPropertyNameArrayGetNameAtIndex): See above. 8801 (JSPropertyNameAccumulatorAddName): What you add properties to is now an opaque 8802 accumulator object. 8803 * API/JSObjectRef.h: Prototyped new functions, removed old ones 8804 * JavaScriptCore.exp: Updated exported symbols. 8805 * JavaScriptCore.xcodeproj/project.pbxproj: Added new files, removed old. 8806 * API/testapi.c: 8807 (MyObject_getPropertyNames): Renamed / fixed callback to fit new paradigm. 8808 (main): Updated for new API. 8809 88102006-07-15 Darin Adler <darin@apple.com> 8811 8812 - oops, missed a few more arrays that had to be const 8813 8814 * API/JSNode.c: 8815 (JSNodePrototype_appendChild): Added const. 8816 (JSNodePrototype_removeChild): Ditto. 8817 (JSNodePrototype_replaceChild): Ditto. 8818 (JSNode_construct): Ditto. 8819 * API/JSNodeList.c: 8820 (JSNodeListPrototype_item): Ditto. 8821 * API/JSObjectRef.cpp: 8822 (JSObjectMakeFunctionWithBody): Ditto. 8823 (JSObjectCallAsFunction): Ditto. 8824 (JSObjectCallAsConstructor): Ditto. 8825 * API/minidom.c: 8826 (print): Ditto. 8827 * API/testapi.c: 8828 (MyObject_callAsFunction): Ditto. 8829 (MyObject_callAsConstructor): Ditto. 8830 (print_callAsFunction): Ditto. 8831 (myConstructor_callAsConstructor): Ditto. 8832 88332006-07-15 Darin Adler <darin@apple.com> 8834 8835 Reviewed by Maciej. 8836 8837 * API/JSNode.h: Made an array parameter const. 8838 * API/JSObjectRef.h: Made array parameters const. Fixed a comment. 8839 88402006-07-15 Geoffrey Garen <ggaren@apple.com> 8841 8842 Reviewed by Maciej. 8843 8844 - JSObjectMakeFunctionWithBody includes a function name and named parameters now. 8845 8846 * API/JSObjectRef.cpp: 8847 (JSObjectMakeFunctionWithBody): 8848 * API/JSObjectRef.h: 8849 * API/testapi.c: 8850 (assertEqualsAsUTF8String): More informative failure reporting. 8851 (main): Test more function cases. 8852 88532006-07-15 Geoffrey Garen <ggaren@apple.com> 8854 8855 Reviewed by Maciej. 8856 8857 - Moved the arguments passed to JSClassCreate into a single structure, 8858 called JSClassDefinition. This will enable easier structure 8859 migration/versioning in the future, if necessary. 8860 8861 - Added support for class names. 8862 8863 - kJSClassDefinitionNull replaces kJSObjectCallbacksNone. 8864 8865 - JSClass is becoming a fairly complex struct, so I migrated all of its 8866 implementation other than reference counting to the sruct. 8867 8868 - Also moved JSClass* functions in the API to JSObjectRef.cpp, since they're 8869 declared in JSObjectRef.h 8870 8871 - Also added some more informative explanation to the class structure doc. 8872 88732006-07-15 Darin Adler <darin@apple.com> 8874 8875 Reviewed by Geoff. 8876 8877 - fix http://bugs.webkit.org/show_bug.cgi?id=8395 8878 <rdar://problem/4613467> 8879 REGRESSION: RegEx seems broken for hex escaped non breaking space 8880 8881 Test: fast/js/regexp-extended-characters-more.html 8882 8883 * pcre/pcre_exec.c: 8884 (match): Got rid of utf16Length local variable to guarantee there's no 8885 extra stack usage in recursive calls. Fixed two places in the PCRE_UTF16 8886 code that were using the length variable, which is the UTF-8 length of 8887 a character in the pattern, to move in the UTF-16 subject string. Instead 8888 they hardcode lengths of 1 and 2 since the code already handles BMP 8889 characters and surrogate pairs separately. Also fixed some DPRINTF so 8890 I could compile with DEBUG on. 8891 (pcre_exec): Changed a place that was checking for multibyte characters 8892 in the subject string to use ISMIDCHAR. Instead it was using hardcoded 8893 logic that was right for UTF-8 but wrong for UTF-16. 8894 8895 * pcre/pcre_compile.c: (pcre_compile2): Fixed a DPRINTF so I could compile 8896 with DEBUG on. 8897 88982006-07-14 Geoffrey Garen <ggaren@apple.com> 8899 8900 RS by Maciej. 8901 8902 Global replace in the API of argc/argv with argumentCount/arguments. 8903 89042006-07-14 Geoffrey Garen <ggaren@apple.com> 8905 8906 Reviewed by Maciej. 8907 8908 - Finalized exception handling in the API. 8909 8910 setProperty can throw because it throws for built-in arrays. getProperty 8911 and deleteProperty can throw because setProperty can throw and we want 8912 to be consistent, and also because they seem like "actions." callAsFunction, 8913 callAsConstructor, and hasInstance can throw, because they caan throw for 8914 all built-ins. 8915 8916 toBoolean can't throw because it's defined that way in the spec. 8917 8918 - Documented that toBoolean and toObject can't be overridden by custom 8919 objects because they're defined that way in the spec. 8920 8921=== Safari-521.17 === 8922 89232006-07-14 Geoffrey Garen <ggaren@apple.com> 8924 8925 Reviewed by Maciej. 8926 8927 - Implemented ref-counting of JSContexts by splitting into two datatypes: 8928 JSGlobalContext, which you can create/retain/release, and JSContext, which 8929 you can't. 8930 8931 Internally, you retain a JSGlobalContext/ExecState by retaining its 8932 interpreter, which, in the case of a global ExecState, owns it. 8933 8934 - Also made ~Interpreter() protected to catch places where Interpreter 8935 is manually deleted. (Can't make it private because some crazy fool 8936 decided it would be a good idea to subclass Interpreter in other frameworks. 8937 I pity da fool.) 8938 8939 * API/APICast.h: 8940 (toJS): Added cast for new JSGlobalContext 8941 * API/JSStringRef.h: Changed vague "you must" language to more specific 8942 (but, ultimately, equally vague) "behavior is undefined if you don't" 8943 language. 8944 (KJS::Interpreter::Interpreter): Factored more common initialization into 8945 init() 8946 * kjs/interpreter.h: 8947 (KJS::Interpreter::ref): new 8948 (KJS::Interpreter::deref): new 8949 (KJS::Interpreter::refCount): new 8950 * kjs/testkjs.cpp: 8951 (doIt): Ref-count the interpreter. 8952 89532006-07-14 Maciej Stachowiak <mjs@apple.com> 8954 8955 Reviewed by Geoff. 8956 8957 - removed bool return value from JSObjectSetProperty, since it is inefficient and 8958 also doesn't work quite right 8959 - added JSObjectGetPropertyAtIndex and JSObjectSetPropertyAtIndex 8960 8961 * API/JSObjectRef.cpp: 8962 (JSObjectSetProperty): Removed return value and canPut stuff. 8963 (JSObjectGetPropertyAtIndex): Added. 8964 (JSObjectSetPropertyAtIndex): Added. 8965 * API/JSObjectRef.h: Prototyped and documented new functions. 8966 89672006-07-14 Geoffrey Garen <ggaren@apple.com> 8968 8969 Reviewed by Beth. 8970 8971 Moved JSCheckScriptSyntax, JSEvaluateScript, and JSGarbageCollect into 8972 JSBase.h/.cpp. They don't belong in the value-specific or context-specific 8973 files because they're not part of the value or context implementations. 8974 8975 * API/JSBase.h: 8976 * API/JSContextRef.cpp: 8977 (JSContextGetGlobalObject): 8978 * API/JSContextRef.h: 8979 * API/JSValueRef.cpp: 8980 (JSValueUnprotect): 8981 * API/JSValueRef.h: 8982 * JavaScriptCore.xcodeproj/project.pbxproj: 8983 89842006-07-13 Timothy Hatcher <timothy@apple.com> 8985 8986 Reviewed by Maciej. 8987 8988 Moved JavaScriptCore to be a public framework. 8989 8990 * JavaScriptCore.xcodeproj/project.pbxproj: 8991 89922006-07-13 Mark Rowe <opendarwin.org@bdash.net.nz> 8993 8994 Reviewed by Geoffrey. 8995 8996 http://bugs.webkit.org/show_bug.cgi?id=9742 8997 Bug 9742: REGRESSION: WebKit hangs when loading <http://www.vtbook.com> 8998 8999 * kjs/value.h: 9000 (KJS::JSValue::getUInt32): Only types tagged as numeric can be converted to UInt32. 9001 90022006-07-13 Geoffrey Garen <ggaren@apple.com> 9003 9004 Pleasing to Maciej. 9005 9006 - Renamed JSEvaluate -> JSEvaluateScript, JSCheckSyntax -> JSCheckScriptSyntax 9007 - Added exception out parameters to JSValueTo* and JSValueIsEqual because 9008 they can throw 9009 - Removed JSObjectGetDescription because it's useless and vague, and 9010 JSValueToString/JSValueIsObjectOfClass do a better job, anyway 9011 - Clarified comments about "IsFunction/Constructor" to indicate that they 9012 are true of all functions/constructors, not just those created by JSObjectMake* 9013 90142006-07-12 Geoffrey Garen <ggaren@apple.com> 9015 9016 RS by Beth. 9017 9018 Finished previously approved JSInternalString -> JSString conversion 9019 by renaming the files. 9020 9021 * API/JSCallbackObject.cpp: 9022 * API/JSInternalStringRef.cpp: Removed. 9023 * API/JSInternalStringRef.h: Removed. 9024 * API/JSStringRef.cpp: Added. 9025 * API/JSStringRef.h: Added. 9026 * API/JavaScriptCore.h: 9027 * JavaScriptCore.xcodeproj/project.pbxproj: 9028 90292006-07-12 Geoffrey Garen <ggaren@apple.com> 9030 9031 Reviewed by Maciej. 9032 9033 - Removed context and exception parameters from JSObjectGetPropertyEnumerator, 9034 removing the spurious use of ExecState inside JavaScriptCore that made 9035 us think this was necessary in the first place. 9036 9037 (StringInstance::getPropertyList): Use getString instead of toString because 9038 we know we're dealing with a string -- we put it there in the first place. 9039 While we're at it, store the string's size instead of retrieving it each time 9040 through the loop, to avoid the unnecessary killing of puppies. 9041 * kjs/string_object.h: 9042 90432006-07-12 Maciej Stachowiak <mjs@apple.com> 9044 9045 Reviewed by Geoff. 9046 9047 - add handling of hasInstance callback for API objects 9048 9049 * API/JSCallbackObject.cpp: 9050 (KJS::JSCallbackObject::implementsHasInstance): Check if callback is present. 9051 (KJS::JSCallbackObject::hasInstance): Invoke appropriate callback. 9052 * API/JSCallbackObject.h: 9053 * API/JSClassRef.cpp: 9054 * API/JSObjectRef.h: 9055 * API/testapi.c: 9056 (MyObject_hasInstance): Test case; should match what construct would do. 9057 * API/testapi.js: 9058 90592006-07-11 Geoffrey Garen <ggaren@apple.com> 9060 9061 Reviewed by Maciej. 9062 9063 - Implemented a vast number of renames and comment clarifications 9064 suggested during API review. 9065 9066 JSInternalString -> JSString 9067 JS*Make -> JSValueMake*, JSObjectMake* 9068 JSTypeCode -> JSType 9069 JSValueIsInstanceOf -> JSValueIsInstanceOfConstructor (reads strangely well in client code) 9070 JSGC*Protect -> JSValue*Protect 9071 JS*Callback -> JSObject*Callback 9072 JSGetPropertyListCallback -> JSObjectAddPropertiesToListCallback 9073 JSPropertyEnumeratorGetNext -> JSPropertyEnumeratorGetNextName 9074 JSString* -> 9075 JSStringCreateWithUTF8CString, JSStringGetUTF8CString, 9076 JSStringGetMaximumUTF8CStringSize JSStringIsEqualToUTF8CString, 9077 JSStringCreateWithCFString, JSStringCopyCFString, JSStringCreateWithCharacters. 9078 9079 - Changed functions taking a JSValue out arg and returning a bool indicating 9080 whether it was set to simply return a JSValue or NULL. 9081 9082 - Removed JSStringGetCharacters because it's more documentation than code, 9083 and it's just a glorified memcpy built on existing API functionality. 9084 9085 - Moved standard library includes into the headers that actually require them. 9086 9087 - Standardized use of the phrase "Create Rule." 9088 9089 - Removed JSLock from make functions that don't allocate. 9090 9091 - Added exception handling to JSValueToBoolean, since we now allow 9092 callback objects to throw exceptions upon converting to boolean. 9093 9094 - Renamed JSGCCollect to JSGarbageCollect. 9095 90962006-07-10 Geoffrey Garen <ggaren@apple.com> 9097 9098 Reviewed by Darin. 9099 9100 - Changed public header includes to the <JavaScriptCore/ style. 9101 - Changed instances of 'buffer' to 'string' since we decided on 9102 JSInternalString instead of JSStringBuffer. 9103 9104 * API/JSContextRef.h: 9105 * API/JSInternalStringRef.cpp: 9106 (JSStringMake): 9107 (JSInternalStringRetain): 9108 (JSInternalStringRelease): 9109 (JSValueCopyStringValue): 9110 (JSInternalStringGetLength): 9111 (JSInternalStringGetCharactersPtr): 9112 (JSInternalStringGetCharacters): 9113 (JSInternalStringGetMaxLengthUTF8): 9114 (JSInternalStringGetCharactersUTF8): 9115 (CFStringCreateWithJSInternalString): 9116 * API/JSInternalStringRef.h: 9117 * API/JSNode.c: 9118 (JSNodePrototype_appendChild): 9119 (JSNode_getNodeType): 9120 * API/JSObjectRef.cpp: 9121 (JSObjectCallAsConstructor): 9122 * API/JSValueRef.h: 9123 * API/JavaScriptCore.h: 9124 * API/minidom.c: 9125 (main): 9126 (print): 9127 * API/testapi.c: 9128 (MyObject_getPropertyList): 9129 (myConstructor_callAsConstructor): 9130 (main): I noticed that we were prematurely releasing some string buffers, 9131 so I moved their release calls to the end of main(). I got rid of 'Buf' in *Buf 9132 (sometimes changing to 'IString', when necessary to differentiate a variable) 9133 to match the buffer->string change. 9134 9135=== Safari-521.16 === 9136 91372006-07-10 Darin Adler <darin@apple.com> 9138 9139 * kjs/value.cpp: (KJS::JSValue::toInt32Inline): Added inline keyword one more place. 9140 Just in case. 9141 91422006-07-10 Darin Adler <darin@apple.com> 9143 9144 - fix the release build 9145 9146 * kjs/value.h: 9147 * kjs/value.cpp: 9148 (KJS::JSValue::toInt32Inline): Move the code here to an inline. 9149 (KJS::JSValue::toInt32): Call the inline from both overloaded toInt32 functions. 9150 91512006-07-10 David Kilzer <ddkilzer@kilzer.net> 9152 9153 Reviewed by Darin. 9154 9155 - fix http://bugs.webkit.org/show_bug.cgi?id=9179 9156 Implement select.options.add() method 9157 9158 * JavaScriptCore.exp: Added overloaded KJS::JSValue::toInt32() method. 9159 * JavaScriptCore.xcodeproj/project.pbxproj: Altered attributes metadata for 9160 kjs/value.h to make it available as a forwarded header. 9161 * kjs/lookup.h: 9162 (KJS::lookupPut): Extracted a lookupPut() method from the existing lookupPut() method. 9163 The new method returns a boolean value if no entry is found in the lookup table. 9164 * kjs/value.cpp: 9165 (KJS::JSValue::toInt32): Overloaded toInt32() method with boolean "Ok" argument. 9166 * kjs/value.h: Ditto. 9167 91682006-07-10 Geoffrey Garen <ggaren@apple.com> 9169 9170 No review necessary. Removed bogus file I accidentally checked in before. 9171 9172 * API/JSInternalSringRef.h: Removed. 9173 91742006-07-10 Geoffrey Garen <ggaren@apple.com> 9175 9176 Reviewed by Darin. 9177 9178 Added exception out parameter to API object callbacks, removed semi-bogus 9179 JSContext(.*)Exception functions. 9180 9181 To make these calls syntactically simple, I added an exceptionSlot() 9182 method to the ExecState class, which provides a JSValue** slot in which to 9183 store a JSValue* exception. 9184 9185 * API/APICast.h: 9186 (toRef): 9187 * API/JSCallbackConstructor.cpp: 9188 (KJS::JSCallbackConstructor::construct): 9189 * API/JSCallbackFunction.cpp: 9190 (KJS::JSCallbackFunction::callAsFunction): 9191 * API/JSCallbackObject.cpp: 9192 (KJS::JSCallbackObject::init): 9193 (KJS::JSCallbackObject::getOwnPropertySlot): 9194 (KJS::JSCallbackObject::put): 9195 (KJS::JSCallbackObject::deleteProperty): 9196 (KJS::JSCallbackObject::construct): 9197 (KJS::JSCallbackObject::callAsFunction): 9198 (KJS::JSCallbackObject::getPropertyList): 9199 (KJS::JSCallbackObject::toBoolean): 9200 (KJS::JSCallbackObject::toNumber): 9201 (KJS::JSCallbackObject::toString): 9202 (KJS::JSCallbackObject::staticValueGetter): 9203 (KJS::JSCallbackObject::callbackGetter): 9204 * API/JSContextRef.cpp: 9205 (JSCheckSyntax): 9206 * API/JSContextRef.h: 9207 * API/JSNode.c: 9208 (JSNodePrototype_appendChild): 9209 (JSNodePrototype_removeChild): 9210 (JSNodePrototype_replaceChild): 9211 (JSNode_getNodeType): 9212 (JSNode_getChildNodes): 9213 (JSNode_getFirstChild): 9214 (JSNode_construct): 9215 * API/JSNode.h: 9216 * API/JSNodeList.c: 9217 (JSNodeListPrototype_item): 9218 (JSNodeList_length): 9219 (JSNodeList_getProperty): 9220 * API/JSObjectRef.h: 9221 * API/minidom.c: 9222 (print): 9223 * API/testapi.c: 9224 (MyObject_initialize): 9225 (MyObject_hasProperty): 9226 (MyObject_getProperty): 9227 (MyObject_setProperty): 9228 (MyObject_deleteProperty): 9229 (MyObject_getPropertyList): 9230 (MyObject_callAsFunction): 9231 (MyObject_callAsConstructor): 9232 (MyObject_convertToType): 9233 (print_callAsFunction): 9234 (myConstructor_callAsConstructor): 9235 (main): 9236 * JavaScriptCore.exp: 9237 * kjs/ExecState.h: 9238 (KJS::ExecState::exceptionHandle): 9239 92402006-07-10 Geoffrey Garen <ggaren@apple.com> 9241 9242 Reviewed by Darin. 9243 9244 Improved type safety by implementing opaque JSValue/JSObject typing through 9245 abuse of 'const', not void*. Also fixed an alarming number of bugs 9246 exposed by this new type safety. 9247 9248 I made one design change in JavaScriptCore, which is that the JSObject 9249 constructor should take a JSValue* as its prototype argument, not a JSObject*, 9250 since we allow the prototype to be any JSValue*, including jsNull(), for 9251 example. 9252 9253 * API/APICast.h: 9254 (toJS): 9255 * API/JSBase.h: 9256 * API/JSCallbackConstructor.cpp: 9257 (KJS::JSCallbackConstructor::construct): 9258 * API/JSCallbackFunction.cpp: 9259 (KJS::JSCallbackFunction::callAsFunction): 9260 * API/JSCallbackObject.cpp: 9261 (KJS::JSCallbackObject::JSCallbackObject): 9262 (KJS::JSCallbackObject::getOwnPropertySlot): 9263 (KJS::JSCallbackObject::put): 9264 (KJS::JSCallbackObject::construct): 9265 (KJS::JSCallbackObject::callAsFunction): 9266 (KJS::JSCallbackObject::staticFunctionGetter): 9267 * API/JSCallbackObject.h: 9268 * API/JSContextRef.cpp: 9269 (JSEvaluate): 9270 * API/JSNode.c: 9271 (JSNodePrototype_appendChild): 9272 (JSNodePrototype_removeChild): 9273 (JSNodePrototype_replaceChild): 9274 * API/JSObjectRef.cpp: 9275 (JSObjectMake): 9276 (JSFunctionMakeWithBody): 9277 (JSObjectGetProperty): 9278 (JSObjectCallAsFunction): 9279 (JSObjectCallAsConstructor): 9280 * API/JSObjectRef.h: 9281 * API/testapi.c: 9282 (main): 9283 * ChangeLog: 9284 * kjs/object.h: 9285 (KJS::JSObject::JSObject): 9286 92872006-07-10 Geoffrey Garen <ggaren@apple.com> 9288 9289 Approved by Maciej, Darin. 9290 9291 Renamed JSStringBufferRef to JSInternalStringRef. "Internal string" means the 9292 JavaScript engine's internal string representation, which is the most 9293 low-level and efficient representation to use when interfacing with JavaScript. 9294 9295 * API/APICast.h: 9296 (toJS): 9297 (toRef): 9298 * API/JSBase.h: 9299 * API/JSCallbackObject.cpp: 9300 (KJS::JSCallbackObject::getOwnPropertySlot): 9301 (KJS::JSCallbackObject::put): 9302 (KJS::JSCallbackObject::deleteProperty): 9303 (KJS::JSCallbackObject::staticValueGetter): 9304 (KJS::JSCallbackObject::callbackGetter): 9305 * API/JSContextRef.cpp: 9306 (JSEvaluate): 9307 (JSCheckSyntax): 9308 * API/JSContextRef.h: 9309 * API/JSInternalStringRef.cpp: Added. 9310 (JSStringMake): 9311 (JSInternalStringCreate): 9312 (JSInternalStringCreateUTF8): 9313 (JSInternalStringRetain): 9314 (JSInternalStringRelease): 9315 (JSValueCopyStringValue): 9316 (JSInternalStringGetLength): 9317 (JSInternalStringGetCharactersPtr): 9318 (JSInternalStringGetCharacters): 9319 (JSInternalStringGetMaxLengthUTF8): 9320 (JSInternalStringGetCharactersUTF8): 9321 (JSInternalStringIsEqual): 9322 (JSInternalStringIsEqualUTF8): 9323 (JSInternalStringCreateCF): 9324 (CFStringCreateWithJSInternalString): 9325 * API/JSInternalStringRef.h: Added. 9326 * API/JSNode.c: 9327 (JSNodePrototype_appendChild): 9328 (JSNode_getNodeType): 9329 (JSNode_getChildNodes): 9330 (JSNode_getFirstChild): 9331 * API/JSNodeList.c: 9332 (JSNodeList_length): 9333 (JSNodeList_getProperty): 9334 * API/JSObjectRef.cpp: 9335 (JSFunctionMakeWithBody): 9336 (JSObjectGetDescription): 9337 (JSObjectHasProperty): 9338 (JSObjectGetProperty): 9339 (JSObjectSetProperty): 9340 (JSObjectDeleteProperty): 9341 (JSPropertyEnumeratorGetNext): 9342 (JSPropertyListAdd): 9343 * API/JSObjectRef.h: 9344 * API/JSStringBufferRef.cpp: Removed. 9345 * API/JSStringBufferRef.h: Removed. 9346 * API/JSValueRef.h: 9347 * API/JavaScriptCore.h: 9348 * API/minidom.c: 9349 (main): 9350 (print): 9351 * API/testapi.c: 9352 (assertEqualsAsUTF8String): 9353 (assertEqualsAsCharactersPtr): 9354 (assertEqualsAsCharacters): 9355 (MyObject_hasProperty): 9356 (MyObject_getProperty): 9357 (MyObject_setProperty): 9358 (MyObject_deleteProperty): 9359 (MyObject_getPropertyList): 9360 (print_callAsFunction): 9361 (myConstructor_callAsConstructor): 9362 (main): 9363 * JavaScriptCore.exp: 9364 * JavaScriptCore.xcodeproj/project.pbxproj: 9365 93662006-07-08 Tim Omernick <timo@apple.com> 9367 9368 Reviewed by Maciej. 9369 9370 Added an OpenGL drawing model to the Netscape Plug-in API. 9371 9372 * bindings/npapi.h: 9373 93742006-07-08 Timothy Hatcher <timothy@apple.com> 9375 9376 Reviewed by Maciej. 9377 9378 Moved KJS_GetCreatedJavaVMs to jni_utility.cpp. 9379 Switched KJS_GetCreatedJavaVMs over to use dlopen and dlsym 9380 now that NSAddImage, NSLookupSymbolInImage and NSAddressOfSymbol 9381 are deprecated in Leopard. 9382 9383 * JavaScriptCore.exp: 9384 * JavaScriptCore.xcodeproj/project.pbxproj: 9385 * bindings/jni/jni_utility.cpp: 9386 (KJS::Bindings::KJS_GetCreatedJavaVMs): 9387 * bindings/softlinking.c: Removed. 9388 * bindings/softlinking.h: Removed. 9389 93902006-07-08 Geoffrey Garen <ggaren@apple.com> 9391 9392 Reviewed by Anders. 9393 9394 - Make JSObjectGetProperty return a JSValue or NULL, like JSEvaluate does. 9395 9396 * API/JSObjectRef.cpp: 9397 (JSObjectGetProperty): 9398 * API/JSObjectRef.h: 9399 * API/testapi.c: 9400 (main): 9401 94022006-07-08 Geoffrey Garen <ggaren@apple.com> 9403 9404 Style change -- no review necessary. 9405 9406 Use 0 instead of NULL in API .cpp files, to match our style guidelines. 9407 9408 * API/JSContextRef.cpp: 9409 (JSEvaluate): 9410 * API/JSObjectRef.cpp: 9411 (JSFunctionMakeWithBody): 9412 (JSObjectCallAsFunction): 9413 (JSObjectCallAsConstructor): 9414 * API/JSValueRef.cpp: 9415 (JSValueToObject): 9416 94172006-07-08 Geoffrey Garen <ggaren@apple.com> 9418 9419 Reviewed by TimO. 9420 9421 - Added ability to pass NULL for thisObject when calling JSObjectCallAsFunction, 9422 to match JSEvaluate. 9423 9424 * API/JSObjectRef.cpp: 9425 (JSObjectCallAsFunction): 9426 * API/JSObjectRef.h: 9427 * API/testapi.c: 9428 (main): 9429 9430=== Safari-521.15 === 9431 94322006-07-07 Geoffrey Garen <ggaren@apple.com> 9433 9434 Reviewed by Maciej. 9435 9436 - Standardized which functions take a JSContext as an argument. The rule is: 9437 if you might execute JavaScript, you take a JSContext, otherwise you don't. 9438 9439 The FIXME in JSObjectRef.h requires refactoring some parts of Interpreter, 9440 but not API changes, so I'm putting it off until later. 9441 9442 * API/JSCallbackObject.cpp: 9443 (KJS::JSCallbackObject::JSCallbackObject): 9444 (KJS::JSCallbackObject::init): 9445 * API/JSCallbackObject.h: 9446 * API/JSContextRef.cpp: 9447 (JSContextCreate): 9448 * API/JSContextRef.h: 9449 * API/JSObjectRef.cpp: 9450 (JSObjectMake): 9451 (JSPropertyEnumeratorGetNext): 9452 * API/JSObjectRef.h: 9453 * API/testapi.c: 9454 (MyObject_initialize): 9455 (main): 9456 * JavaScriptCore.exp: 9457 * kjs/array_object.cpp: 9458 (ArrayInstance::setLength): 9459 (ArrayInstance::pushUndefinedObjectsToEnd): 9460 * kjs/nodes.cpp: 9461 (ForInNode::execute): 9462 * kjs/reference.cpp: 9463 (KJS::Reference::getPropertyName): 9464 (KJS::Reference::getValue): 9465 * kjs/reference.h: 9466 * kjs/scope_chain.cpp: 9467 (KJS::ScopeChain::print): 9468 94692006-07-06 Geoffrey Garen <ggaren@apple.com> 9470 9471 Reviewed by Maciej. 9472 9473 More API action. 9474 9475 - Headerdoc finished 9476 9477 Semantic Changes: 9478 - Added a JSContextRef argument to many functions, because you need a 9479 JSContextRef for doing virtually anything. I expect to add this argument 9480 to even more functions in a future patch. 9481 9482 - Removed the globalObjectPrototype argument to JSContextCreate because 9483 you can't create an object until you have a context, so it's impossible 9484 to pass a prototype object to JSContextCreate. That's OK because (1) there's 9485 no reason to give the global object a prototype and (2) if you really want 9486 to, you can just use a separate call to JSObjectSetPrototype. 9487 9488 - Removed the JSClassRef argument to JSClassCreate because it was unnecessary, 9489 and you need to be able to make the global object's class before you've 9490 created a JSContext. 9491 9492 - Added an optional exception parameter to JSFunctionMakeWithBody because anything 9493 less would be uncivilized. 9494 9495 - Made the return value parameter to JSObjectGetProperty optional to match 9496 all other return value parameters in the API. 9497 9498 - Made JSObjectSetPrivate/JSObjectGetPrivate work on JSCallbackFunctions 9499 and JSCallbackConstructors. You could use an abstract base class or strategic 9500 placement of m_privateData in the class structure to implement this, but 9501 the former seemed like overkill, and the latter seemed too dangerous. 9502 9503 - Fixed a bug where JSPropertyEnumeratorGetNext would skip the first property. 9504 9505 Cosmetic Changes: 9506 - Reversed the logic of the JSChar #ifdef to avoid confusing headerdoc 9507 9508 - Removed function names from @function declarations because headeroc 9509 can parse them automatically, and I wanted to rule out manual mismatch. 9510 9511 - Changed Error::create to take a const UString& instead of a UString* 9512 because it was looking at me funny. 9513 9514 - Renamed JSStringBufferCreateWithCFString to JSStringBufferCreateCF 9515 because the latter is more concise and it matches JSStringBufferCreateUTF8. 9516 9517 * API/JSCallbackObject.cpp: 9518 (KJS::JSCallbackObject::getOwnPropertySlot): 9519 (KJS::JSCallbackObject::put): 9520 (KJS::JSCallbackObject::deleteProperty): 9521 (KJS::JSCallbackObject::getPropertyList): 9522 (KJS::JSCallbackObject::toBoolean): 9523 (KJS::JSCallbackObject::toNumber): 9524 (KJS::JSCallbackObject::toString): 9525 * API/JSClassRef.cpp: 9526 (JSClassCreate): 9527 * API/JSContextRef.cpp: 9528 (JSContextCreate): 9529 (JSContextSetException): 9530 * API/JSContextRef.h: 9531 * API/JSNode.c: 9532 (JSNodePrototype_class): 9533 (JSNode_class): 9534 * API/JSNodeList.c: 9535 (JSNodeListPrototype_class): 9536 (JSNodeList_class): 9537 * API/JSObjectRef.cpp: 9538 (JSObjectGetProperty): 9539 (JSObjectGetPrivate): 9540 (JSObjectSetPrivate): 9541 (JSObjectCallAsFunction): 9542 (JSObjectCallAsConstructor): 9543 (JSPropertyEnumeratorGetNext): 9544 * API/JSObjectRef.h: 9545 * API/JSStringBufferRef.cpp: 9546 (JSStringBufferCreateCF): 9547 * API/JSStringBufferRef.h: 9548 * API/JSValueRef.cpp: 9549 (JSValueIsInstanceOf): 9550 * API/JSValueRef.h: 9551 * API/minidom.c: 9552 (main): 9553 * API/minidom.js: 9554 * API/testapi.c: 9555 (MyObject_hasProperty): 9556 (MyObject_setProperty): 9557 (MyObject_deleteProperty): 9558 (MyObject_getPropertyList): 9559 (MyObject_convertToType): 9560 (MyObject_class): 9561 (main): 9562 * JavaScriptCore.exp: 9563 95642006-07-07 Geoffrey Garen <ggaren@apple.com> 9565 9566 Reviewed by John. 9567 9568 - Fixed a few crashes resulting from NULL parameters to JSClassCreate. 9569 9570 * API/JSClassRef.cpp: 9571 (JSClassCreate): 9572 (JSClassRelease): 9573 * API/testapi.c: Added test for NULL parameters. 9574 (main): 9575 95762006-07-07 Geoffrey Garen <ggaren@apple.com> 9577 9578 Reviewed by John, mocked by Darin. 9579 9580 - Changed JSEvaluate to take a JSObjectRef instead of a JSValueRef as 9581 "this," since "this" must be an object. 9582 9583 * API/JSContextRef.cpp: 9584 (JSEvaluate): 9585 * API/JSContextRef.h: 9586 95872006-07-07 Geoffrey Garen <ggaren@apple.com> 9588 9589 Reviewed by John. 9590 9591 - More headerdoc 9592 9593 * API/JSBase.h: 9594 * JavaScriptCore.xcodeproj/project.pbxproj: 9595 95962006-07-05 Geoffrey Garen <ggaren@apple.com> 9597 9598 RS by Beth. 9599 9600 Renamed JSCharBufferRef, which was universally unpopular, to JSStringBufferRef, 9601 which, hopefully, will be less unpopular. 9602 9603 * API/APICast.h: 9604 (toJS): 9605 (toRef): 9606 * API/JSBase.h: 9607 * API/JSCallbackObject.cpp: 9608 (KJS::JSCallbackObject::getOwnPropertySlot): 9609 (KJS::JSCallbackObject::put): 9610 (KJS::JSCallbackObject::deleteProperty): 9611 (KJS::JSCallbackObject::staticValueGetter): 9612 (KJS::JSCallbackObject::callbackGetter): 9613 * API/JSCharBufferRef.cpp: Removed. 9614 * API/JSCharBufferRef.h: Removed. 9615 * API/JSContextRef.cpp: 9616 (JSEvaluate): 9617 (JSCheckSyntax): 9618 * API/JSContextRef.h: 9619 * API/JSNode.c: 9620 (JSNodePrototype_appendChild): 9621 (JSNode_getNodeType): 9622 (JSNode_getChildNodes): 9623 (JSNode_getFirstChild): 9624 * API/JSNodeList.c: 9625 (JSNodeList_length): 9626 (JSNodeList_getProperty): 9627 * API/JSObjectRef.cpp: 9628 (JSFunctionMakeWithBody): 9629 (JSObjectGetDescription): 9630 (JSObjectHasProperty): 9631 (JSObjectGetProperty): 9632 (JSObjectSetProperty): 9633 (JSObjectDeleteProperty): 9634 (JSPropertyEnumeratorGetNext): 9635 (JSPropertyListAdd): 9636 * API/JSObjectRef.h: 9637 * API/JSStringBufferRef.cpp: Added. 9638 (JSStringMake): 9639 (JSStringBufferCreate): 9640 (JSStringBufferCreateUTF8): 9641 (JSStringBufferRetain): 9642 (JSStringBufferRelease): 9643 (JSValueCopyStringValue): 9644 (JSStringBufferGetLength): 9645 (JSStringBufferGetCharactersPtr): 9646 (JSStringBufferGetCharacters): 9647 (JSStringBufferGetMaxLengthUTF8): 9648 (JSStringBufferGetCharactersUTF8): 9649 (JSStringBufferIsEqual): 9650 (JSStringBufferIsEqualUTF8): 9651 (JSStringBufferCreateWithCFString): 9652 (CFStringCreateWithJSStringBuffer): 9653 * API/JSStringBufferRef.h: Added. 9654 * API/JSValueRef.h: 9655 * API/JavaScriptCore.h: 9656 * API/minidom.c: 9657 (main): 9658 (print): 9659 * API/testapi.c: 9660 (assertEqualsAsUTF8String): 9661 (assertEqualsAsCharactersPtr): 9662 (assertEqualsAsCharacters): 9663 (MyObject_hasProperty): 9664 (MyObject_getProperty): 9665 (MyObject_setProperty): 9666 (MyObject_deleteProperty): 9667 (MyObject_getPropertyList): 9668 (print_callAsFunction): 9669 (myConstructor_callAsConstructor): 9670 (main): 9671 * JavaScriptCore.exp: 9672 * JavaScriptCore.xcodeproj/project.pbxproj: 9673 96742006-07-05 Geoffrey Garen <ggaren@apple.com> 9675 9676 RS by Beth. 9677 9678 Moved some code around for more logical file separation. 9679 9680 * API/JSBase.h: 9681 * API/JSContextRef.h: 9682 * API/JSObjectRef.cpp: 9683 * API/JSValueRef.cpp: 9684 (JSValueToObject): 9685 * API/JSValueRef.h: 9686 96872006-07-03 Geoffrey Garen <ggaren@apple.com> 9688 9689 Reviewed by Maciej. 9690 9691 Implemented JSFunctionMakeWithBody, which parses a script as a function body 9692 in the global scope, and returns the resulting anonymous function. 9693 9694 I also removed private data from JSCallbackFunction. It never worked, 9695 since JSCallbackFunction doesn't inherit from JSCallbackObject. 9696 9697 * API/JSCallbackConstructor.cpp: Removed. 9698 * API/JSCallbackConstructor.h: Removed. 9699 * API/JSCallbackFunction.cpp: 9700 (KJS::JSCallbackFunction::JSCallbackFunction): 9701 (KJS::JSCallbackFunction::implementsConstruct): 9702 (KJS::JSCallbackFunction::construct): 9703 (KJS::JSCallbackFunction::implementsCall): 9704 (KJS::JSCallbackFunction::callAsFunction): 9705 * API/JSCallbackFunction.h: 9706 * API/JSCallbackObject.cpp: 9707 (KJS::JSCallbackObject::staticFunctionGetter): 9708 * API/JSObjectRef.cpp: 9709 (JSFunctionMake): 9710 (JSFunctionMakeWithCallbacks): 9711 * API/JSObjectRef.h: 9712 * API/JSValueRef.h: 9713 * API/minidom.c: 9714 (main): 9715 * API/testapi.c: 9716 (main): 9717 * JavaScriptCore.exp: Programmatically added all symbols exported by 9718 API object files, and sorted results 9719 * JavaScriptCore.xcodeproj/project.pbxproj: 9720 97212006-07-03 Geoffrey Garen <ggaren@apple.com> 9722 9723 Reviewed by Maciej. 9724 9725 - Return syntax error in JSCheckSyntax through a JSValueRef* exception 9726 argument 9727 9728 * API/JSBase.h: 9729 * API/JSContextRef.cpp: 9730 (JSCheckSyntax): 9731 * API/testapi.c: 9732 (main): 9733 * JavaScriptCore.exp: 9734 * kjs/interpreter.cpp: 9735 (KJS::Interpreter::checkSyntax): 9736 * kjs/interpreter.h: 9737 97382006-07-04 Darin Adler <darin@apple.com> 9739 9740 - fixed build 9741 9742 * wtf/MathExtras.h: Oops. Added missing #endif. 9743 97442006-07-04 Bjoern Graf <bjoern.graf@gmail.com> 9745 9746 Reviewed by Maciej. 9747 Tweaked a bit by Darin. 9748 9749 - http://bugs.webkit.org/show_bug.cgi?id=9678 9750 work around MSVCRT's fmod function returning NaN for fmod(x, infinity) instead of x 9751 9752 * wtf/MathExtras.h: Added include of <float.h>. 9753 (isinf): Fix to return false for NAN. 9754 (wtf_fmod): Added. An inline that works around the bug. 9755 9756 * kjs/nodes.cpp: 9757 * kjs/number_object.cpp: 9758 * kjs/operations.cpp: 9759 * kjs/value.cpp: 9760 Added includes of MathExtras.h to all files using fmod. 9761 9762 * JavaScriptCore.xcodeproj/project.pbxproj: Let Xcode 2.3 have its way with 9763 the project. 9764 97652006-07-01 Geoffrey Garen <ggaren@apple.com> 9766 9767 Reviewed by Darin. 9768 9769 - Refined value conversions in the API: 9770 - failed toNumber returns NaN 9771 - failed toObject returns NULL 9772 - failed toString returns empty string 9773 9774 - Refined excpetion handling in the API: 9775 - failed value conversions do not throw exceptions 9776 - uncaught exceptions in JSEvaluate, JSObjectCallAsFunction, and 9777 JSObjectCallAsConstructor are returned through a JSValueRef* exception 9778 argument 9779 - removed JSContextHasException, because JSContextGetException does 9780 the same job 9781 9782 * API/JSBase.h: 9783 * API/JSCharBufferRef.cpp: 9784 (JSValueCopyStringValue): 9785 * API/JSContextRef.cpp: 9786 (JSEvaluate): 9787 * API/JSContextRef.h: 9788 * API/JSNodeList.c: Added test code demonstrating how you would use 9789 toNumber, and why you probably don't need toUInt32, etc. 9790 (JSNodeListPrototype_item): 9791 (JSNodeList_getProperty): 9792 * API/JSObjectRef.cpp: 9793 (JSValueToObject): 9794 (JSObjectCallAsFunction): 9795 (JSObjectCallAsConstructor): 9796 * API/JSObjectRef.h: 9797 * API/JSValueRef.cpp: 9798 (JSValueToNumber): 9799 * API/JSValueRef.h: 9800 * API/minidom.c: 9801 (main): 9802 * API/testapi.c: 9803 (main): Added tests for new rules, and call to JSGCProtect to fix Intel 9804 crash 9805 * JavaScriptCore.exp: 9806 98072006-07-03 Darin Adler <darin@apple.com> 9808 9809 - Rolled out HashMap implementation of NPRuntime, at least temporarily. 9810 9811 Fixes hang in the bindings section of layout tests seen on the 9812 buildbot. 9813 9814 This code was using HashMap<const char*, PrivateIdentifier*>. 9815 But that hashes based on pointer identity, not string value. 9816 The default hash for any pointer type is to hash based on the pointer. 9817 And WTF doesn't currently have a string hash for char*. 9818 We'll need to fix that before re-landing this patch. 9819 9820 (Formatting was also incorrect -- extra spaces in parentheses.) 9821 9822 * bindings/npruntime.cpp: Rolled out last change. 9823 98242006-07-02 Justin Haygood <jhaygood@spsu.edu> 9825 9826 Reviewed, tweaked, landed by ggaren. 9827 9828 - Port NPRuntime from CFDictionary to HashMap. 9829 9830 * bindings/npruntime.cpp: 9831 (getStringIdentifierDictionary): 9832 (getIntIdentifierDictionary): 9833 (_NPN_GetStringIdentifier): 9834 (_NPN_GetIntIdentifier): 9835 * bindings/npruntime.h: 9836 98372006-07-01 Geoffrey Garen <ggaren@apple.com> 9838 9839 Reviewed by Adele. 9840 9841 - Fixed <rdar://problem/4611197> REGRESSION: Liveconnect with Java test 9842 fails at http://www-sor.inria.fr/~dedieu/notes/liveconnect/simple_example.html 9843 9844 * JavaScriptCore.exp: Export symbols used by liveconnect 9845 98462006-06-29 Geoffrey Garen <ggaren@apple.com> 9847 9848 Reviewed by Maciej. 9849 9850 - Phase 2 in the JS API. 9851 9852 - Added support for specifying static tables of values -- this should 9853 obviate the need for using complicated callbacks for most lookups. 9854 9855 - API objects are now created with classes (JSClassRef) -- in order to support 9856 static values, and in order to prevent API objects from storing their 9857 data inline, and thus falling into the oversized (read: slow and prone to 9858 giving Maciej the frowny face) heap. 9859 9860 - Added two specialized JSObject subclasses -- JSCallbackFunction and JSCallbackConstructor -- 9861 to allow JSFunctionMake and JSConstructorMake to continue to work with 9862 the new class model. Another solution to this problem would be to create 9863 a custom class object for each function and constructor you make. This 9864 solution is more code but also more efficient. 9865 9866 - Substantially beefed up the minidom example to demonstrate and test a 9867 lot of these techniques. Its output is still pretty haphazard, though. 9868 9869 - Gave the <kjs/ preface to some includes -- I'm told this matters to 9870 building on some versions of Linux. 9871 9872 - Implemented JSValueIsInstanceOf and JSValueIsObjectOfClass 9873 9874 - Removed GetDescription callback. Something in the class datastructure 9875 should take care of this. 9876 9877 * API/JSBase.h: 9878 * API/JSCallbackConstructor.cpp: Added. 9879 (KJS::): 9880 (KJS::JSCallbackConstructor::JSCallbackConstructor): 9881 (KJS::JSCallbackConstructor::implementsConstruct): 9882 (KJS::JSCallbackConstructor::construct): 9883 (KJS::JSCallbackConstructor::setPrivate): 9884 (KJS::JSCallbackConstructor::getPrivate): 9885 * API/JSCallbackConstructor.h: Added. 9886 (KJS::JSCallbackConstructor::classInfo): 9887 * API/JSCallbackFunction.cpp: Added. 9888 (KJS::): 9889 (KJS::JSCallbackFunction::JSCallbackFunction): 9890 (KJS::JSCallbackFunction::implementsCall): 9891 (KJS::JSCallbackFunction::callAsFunction): 9892 (KJS::JSCallbackFunction::setPrivate): 9893 (KJS::JSCallbackFunction::getPrivate): 9894 * API/JSCallbackFunction.h: Added. 9895 (KJS::JSCallbackFunction::classInfo): 9896 * API/JSCallbackObject.cpp: 9897 (KJS::): 9898 (KJS::JSCallbackObject::JSCallbackObject): 9899 (KJS::JSCallbackObject::init): 9900 (KJS::JSCallbackObject::~JSCallbackObject): 9901 (KJS::JSCallbackObject::className): 9902 (KJS::JSCallbackObject::getOwnPropertySlot): 9903 (KJS::JSCallbackObject::put): 9904 (KJS::JSCallbackObject::deleteProperty): 9905 (KJS::JSCallbackObject::implementsConstruct): 9906 (KJS::JSCallbackObject::construct): 9907 (KJS::JSCallbackObject::implementsCall): 9908 (KJS::JSCallbackObject::callAsFunction): 9909 (KJS::JSCallbackObject::getPropertyList): 9910 (KJS::JSCallbackObject::toBoolean): 9911 (KJS::JSCallbackObject::toNumber): 9912 (KJS::JSCallbackObject::toString): 9913 (KJS::JSCallbackObject::inherits): 9914 (KJS::JSCallbackObject::staticValueGetter): 9915 (KJS::JSCallbackObject::staticFunctionGetter): 9916 (KJS::JSCallbackObject::callbackGetter): 9917 * API/JSCallbackObject.h: 9918 * API/JSCharBufferRef.cpp: 9919 * API/JSClassRef.cpp: Added. 9920 (JSClassCreate): 9921 (JSClassRetain): 9922 (JSClassRelease): 9923 * API/JSClassRef.h: Added. 9924 (StaticValueEntry::StaticValueEntry): 9925 (StaticFunctionEntry::StaticFunctionEntry): 9926 (__JSClass::__JSClass): 9927 * API/JSContextRef.cpp: 9928 (JSContextCreate): 9929 (JSEvaluate): 9930 * API/JSContextRef.h: 9931 * API/JSNode.c: Added. 9932 (JSNodePrototype_appendChild): 9933 (JSNodePrototype_removeChild): 9934 (JSNodePrototype_replaceChild): 9935 (JSNodePrototype_class): 9936 (JSNode_getNodeType): 9937 (JSNode_getChildNodes): 9938 (JSNode_getFirstChild): 9939 (JSNode_finalize): 9940 (JSNode_class): 9941 (JSNode_prototype): 9942 (JSNode_new): 9943 (JSNode_construct): 9944 * API/JSNode.h: Added. 9945 * API/JSNodeList.c: Added. 9946 (JSNodeListPrototype_item): 9947 (JSNodeListPrototype_class): 9948 (JSNodeList_length): 9949 (JSNodeList_getProperty): 9950 (JSNodeList_finalize): 9951 (JSNodeList_class): 9952 (JSNodeList_prototype): 9953 (JSNodeList_new): 9954 * API/JSNodeList.h: Added. 9955 * API/JSObjectRef.cpp: 9956 (JSObjectMake): 9957 (JSFunctionMake): 9958 (JSConstructorMake): 9959 (__JSPropertyEnumerator::__JSPropertyEnumerator): 9960 (JSObjectCreatePropertyEnumerator): 9961 (JSPropertyEnumeratorGetNext): 9962 (JSPropertyEnumeratorRetain): 9963 (JSPropertyEnumeratorRelease): 9964 * API/JSObjectRef.h: 9965 (__JSObjectCallbacks::): 9966 * API/JSValueRef.cpp: 9967 (JSValueIsObjectOfClass): 9968 (JSValueIsInstanceOf): 9969 * API/JSValueRef.h: 9970 * API/Node.c: Added. 9971 (Node_new): 9972 (Node_appendChild): 9973 (Node_removeChild): 9974 (Node_replaceChild): 9975 (Node_ref): 9976 (Node_deref): 9977 * API/Node.h: Added. 9978 * API/NodeList.c: Added. 9979 (NodeList_new): 9980 (NodeList_length): 9981 (NodeList_item): 9982 (NodeList_ref): 9983 (NodeList_deref): 9984 * API/NodeList.h: Added. 9985 * API/minidom.c: 9986 (main): 9987 (print): 9988 (createStringWithContentsOfFile): 9989 * API/minidom.js: 9990 * API/testapi.c: 9991 (assertEqualsAsCharacters): 9992 (MyObject_getProperty): 9993 (MyObject_class): 9994 (myConstructor_callAsConstructor): 9995 (main): 9996 * API/testapi.js: 9997 * JavaScriptCore.xcodeproj/project.pbxproj: 9998 99992006-06-26 Kevin Ollivier <kevino@theolliviers.com> 10000 10001 Reviewed and tweaked by Darin. 10002 10003 - Compile fixes for wx port / gcc 4.0.2 10004 10005 * kjs/array_object.cpp: 10006 Added missing headers. 10007 10008 * kjs/ExecState.h: 10009 gcc needs class prototypes before defining those classes as friend classes 10010 100112006-06-30 Mike Emmel <mike.emmel@gmail.com> 10012 10013 Reviewed by Darin. 10014 10015 Compilation fixes for Linux/Gdk. 10016 10017 * JavaScriptCore/kjs/interpreter.cpp: added include of signal.h 10018 * JavaScriptCore/kjs/ExecState.h: added missing class declaration 10019 * JavaScriptCore/kjs/ExecState.cpp: case wrong on include of context.h 10020 * JavaScriptCore/JavaScriptCoreSources.bkl: added Context.cpp and ExecState.cpp 10021 10022=== Safari-521.14 === 10023 100242006-06-29 Maciej Stachowiak <mjs@apple.com> 10025 10026 Reviewed by Geoff. 10027 10028 - add headerdoc comments to some of the new JS API headers 10029 10030 * API/JSBase.h: 10031 * API/JSValueRef.h: 10032 100332006-06-28 Timothy Hatcher <timothy@apple.com> 10034 10035 Prefer the Stabs debugging symbols format until DWARF bugs are fixed. 10036 10037 * JavaScriptCore.xcodeproj/project.pbxproj: 10038 100392006-06-27 Timothy Hatcher <timothy@apple.com> 10040 10041 Reviewed by Tim O. 10042 10043 <rdar://problem/4448350> Deprecated ObjC language API used in JavaScriptCore, WebCore, WebKit and WebBrowser 10044 10045 Switch to the new ObjC 2 API, ifdefed the old code around OBJC_API_VERSION so it still works on Tiger. 10046 Removed the use of the old stringWithCString, switched to the new Tiger version that accepts an encoding. 10047 Lots of code style cleanup. 10048 10049 * JavaScriptCore.xcodeproj/project.pbxproj: 10050 * bindings/objc/objc_class.h: 10051 * bindings/objc/objc_class.mm: 10052 (KJS::Bindings::ObjcClass::~ObjcClass): 10053 (KJS::Bindings::_createClassesByIsAIfNecessary): 10054 (KJS::Bindings::ObjcClass::classForIsA): 10055 (KJS::Bindings::ObjcClass::name): 10056 (KJS::Bindings::ObjcClass::methodsNamed): 10057 (KJS::Bindings::ObjcClass::fieldNamed): 10058 (KJS::Bindings::ObjcClass::fallbackObject): 10059 * bindings/objc/objc_header.h: 10060 * bindings/objc/objc_instance.h: 10061 * bindings/objc/objc_instance.mm: 10062 (ObjcInstance::ObjcInstance): 10063 (ObjcInstance::~ObjcInstance): 10064 (ObjcInstance::operator=): 10065 (ObjcInstance::begin): 10066 (ObjcInstance::end): 10067 (ObjcInstance::getClass): 10068 (ObjcInstance::invokeMethod): 10069 (ObjcInstance::invokeDefaultMethod): 10070 (ObjcInstance::setValueOfField): 10071 (ObjcInstance::supportsSetValueOfUndefinedField): 10072 (ObjcInstance::setValueOfUndefinedField): 10073 (ObjcInstance::getValueOfField): 10074 (ObjcInstance::getValueOfUndefinedField): 10075 (ObjcInstance::defaultValue): 10076 (ObjcInstance::stringValue): 10077 (ObjcInstance::numberValue): 10078 (ObjcInstance::booleanValue): 10079 (ObjcInstance::valueOf): 10080 * bindings/objc/objc_runtime.h: 10081 * bindings/objc/objc_runtime.mm: 10082 (ObjcMethod::ObjcMethod): 10083 (ObjcMethod::name): 10084 (ObjcMethod::getMethodSignature): 10085 (ObjcMethod::setJavaScriptName): 10086 (ObjcField::name): 10087 (ObjcField::type): 10088 (ObjcField::valueFromInstance): 10089 (convertValueToObjcObject): 10090 (ObjcField::setValueToInstance): 10091 (ObjcArray::operator=): 10092 (ObjcArray::setValueAt): 10093 (ObjcArray::valueAt): 10094 (ObjcFallbackObjectImp::ObjcFallbackObjectImp): 10095 (ObjcFallbackObjectImp::callAsFunction): 10096 (ObjcFallbackObjectImp::defaultValue): 10097 100982006-06-28 Anders Carlsson <acarlsson@apple.com> 10099 10100 Reviewed by Geoff. 10101 10102 http://bugs.webkit.org/show_bug.cgi?id=8636 10103 REGRESSION: JavaScript access to Java applet causes hang (_webViewURL not implemented) 10104 10105 * bindings/jni/jni_objc.mm: 10106 (KJS::Bindings::dispatchJNICall): 10107 Just pass nil as the calling URL. This will cause the Java plugin to use the URL of the page 10108 containing the applet (which is what we used to do). 10109 101102006-06-27 Timothy Hatcher <timothy@apple.com> 10111 10112 Reviewed by Darin. 10113 10114 <rdar://problem/4406785> Add an export file to TOT JavaScriptCore like the Safari-2-0-branch 10115 10116 * JavaScriptCore.exp: Added. 10117 * JavaScriptCore.xcodeproj/project.pbxproj: 10118 101192006-06-25 Geoffrey Garen <ggaren@apple.com> 10120 10121 Reviewed by Adele. 10122 10123 - Added JSConstructorMake to match JSFunctionMake, along with test code. 10124 10125 [ I checked in the ChangeLog before without the actual files. ] 10126 10127 * API/JSObjectRef.cpp: 10128 (JSConstructorMake): 10129 * API/JSObjectRef.h: 10130 * API/testapi.c: 10131 (myConstructor_callAsConstructor): 10132 (main): 10133 * API/testapi.js: 10134 * ChangeLog: 10135 * JavaScriptCore.xcodeproj/project.pbxproj: Moved testapi.c to the testapi 10136 target -- this was an oversight in my earlier check-in. 10137 101382006-06-25 Timothy Hatcher <timothy@apple.com> 10139 10140 Reviewed by Darin. 10141 10142 Bug 9574: Drosera should show inline scripts within the original HTML 10143 http://bugs.webkit.org/show_bug.cgi?id=9574 10144 10145 Pass the starting line number and error message to the debugger. 10146 10147 * kjs/debugger.cpp: 10148 (Debugger::sourceParsed): 10149 * kjs/debugger.h: 10150 * kjs/function.cpp: 10151 (KJS::GlobalFuncImp::callAsFunction): 10152 * kjs/function_object.cpp: 10153 (FunctionObjectImp::construct): 10154 * kjs/interpreter.cpp: 10155 (KJS::Interpreter::evaluate): 10156 101572006-06-24 Alexey Proskuryakov <ap@nypop.com> 10158 10159 Rubber-stamped by Eric. 10160 10161 Add a -h (do not follow symlinks) option to ln in derived sources build script (without it, 10162 a symlink was created inside the source directory on second build). 10163 10164 * JavaScriptCore.xcodeproj/project.pbxproj: 10165 101662006-06-24 David Kilzer <ddkilzer@kilzer.net> 10167 10168 Reviewed by Timothy. 10169 10170 * Info.plist: Fixed copyright to include 2003-2006. 10171 101722006-06-24 Alexey Proskuryakov <ap@nypop.com> 10173 10174 Reviewed by Darin. 10175 10176 - http://bugs.webkit.org/show_bug.cgi?id=9418 10177 WebKit will not build when Space exists in path 10178 10179 * JavaScriptCore.xcodeproj/project.pbxproj: Enclose search paths in quotes; create symlinks to 10180 avoid passing paths with spaces to make. 10181 101822006-06-23 Timothy Hatcher <timothy@apple.com> 10183 10184 Reviewed by Darin. 10185 10186 Adding more operator[] overloads for long and short types. 10187 10188 * wtf/Vector.h: 10189 (WTF::Vector::operator[]): 10190 10191=== JavaScriptCore-521.13 === 10192 101932006-06-22 Alexey Proskuryakov <ap@nypop.com> 10194 10195 Build fix. 10196 10197 - http://bugs.webkit.org/show_bug.cgi?id=9539 10198 Another case error preventing build 10199 10200 * API/JSObjectRef.cpp: Changed "identifier.h" to "Identifier.h" 10201 102022006-06-22 David Kilzer <ddkilzer@kilzer.net> 10203 10204 Build fix. 10205 10206 http://bugs.webkit.org/show_bug.cgi?id=9539 10207 Another case error preventing build 10208 10209 * API/APICast.h: Changed "UString.h" to "ustring.h". 10210 102112006-06-21 Geoffrey Garen <ggaren@apple.com> 10212 10213 Fixed release build, fixed accidental infinite recursion due to 10214 last minute global replace gone awry. 10215 10216 * API/APICast.h: 10217 (toRef): 10218 * API/testapi.c: 10219 (assertEqualsAsBoolean): 10220 (assertEqualsAsNumber): 10221 (assertEqualsAsUTF8String): 10222 (assertEqualsAsCharactersPtr): 10223 * JavaScriptCore.xcodeproj/project.pbxproj: 10224 102252006-06-21 Geoffrey Garen <ggaren@apple.com> 10226 10227 Reviewed by Anders. 10228 10229 - First cut at C API to JavaScript. Includes a unit test, 'testapi.c', 10230 and the outline of a test app, 'minidom.c'. 10231 10232 Includes one change to JSC internals: Rename propList to getPropertyList and have it 10233 take its target property list by reference so that subclasses can 10234 add properties to the list before calling through to their superclasses. 10235 10236 Also, I just ran prepare-ChangeLog in about 10 seconds, and I would like 10237 to give a shout-out to that. 10238 10239 * API/APICast.h: Added. 10240 (toJS): 10241 (toRef): 10242 * API/JSBase.h: Added. 10243 * API/JSCallbackObject.cpp: Added. 10244 (KJS::): 10245 (KJS::JSCallbackObject::JSCallbackObject): 10246 (KJS::JSCallbackObject::~JSCallbackObject): 10247 (KJS::JSCallbackObject::className): 10248 (KJS::JSCallbackObject::getOwnPropertySlot): 10249 (KJS::JSCallbackObject::put): 10250 (KJS::JSCallbackObject::deleteProperty): 10251 (KJS::JSCallbackObject::implementsConstruct): 10252 (KJS::JSCallbackObject::construct): 10253 (KJS::JSCallbackObject::implementsCall): 10254 (KJS::JSCallbackObject::callAsFunction): 10255 (KJS::JSCallbackObject::getPropertyList): 10256 (KJS::JSCallbackObject::toBoolean): 10257 (KJS::JSCallbackObject::toNumber): 10258 (KJS::JSCallbackObject::toString): 10259 (KJS::JSCallbackObject::setPrivate): 10260 (KJS::JSCallbackObject::getPrivate): 10261 (KJS::JSCallbackObject::cachedValueGetter): 10262 (KJS::JSCallbackObject::callbackGetter): 10263 * API/JSCallbackObject.h: Added. 10264 (KJS::JSCallbackObject::classInfo): 10265 * API/JSCharBufferRef.cpp: Added. 10266 (JSStringMake): 10267 (JSCharBufferCreate): 10268 (JSCharBufferCreateUTF8): 10269 (JSCharBufferRetain): 10270 (JSCharBufferRelease): 10271 (JSValueCopyStringValue): 10272 (JSCharBufferGetLength): 10273 (JSCharBufferGetCharactersPtr): 10274 (JSCharBufferGetCharacters): 10275 (JSCharBufferGetMaxLengthUTF8): 10276 (JSCharBufferGetCharactersUTF8): 10277 (JSCharBufferIsEqual): 10278 (JSCharBufferIsEqualUTF8): 10279 (JSCharBufferCreateWithCFString): 10280 (CFStringCreateWithJSCharBuffer): 10281 * API/JSCharBufferRef.h: Added. 10282 * API/JSContextRef.cpp: Added. 10283 (JSContextCreate): 10284 (JSContextDestroy): 10285 (JSContextGetGlobalObject): 10286 (JSEvaluate): 10287 (JSCheckSyntax): 10288 (JSContextHasException): 10289 (JSContextGetException): 10290 (JSContextClearException): 10291 (JSContextSetException): 10292 * API/JSContextRef.h: Added. 10293 * API/JSObjectRef.cpp: Added. 10294 (JSValueToObject): 10295 (JSObjectMake): 10296 (JSFunctionMake): 10297 (JSObjectGetDescription): 10298 (JSObjectGetPrototype): 10299 (JSObjectSetPrototype): 10300 (JSObjectHasProperty): 10301 (JSObjectGetProperty): 10302 (JSObjectSetProperty): 10303 (JSObjectDeleteProperty): 10304 (JSObjectGetPrivate): 10305 (JSObjectSetPrivate): 10306 (JSObjectIsFunction): 10307 (JSObjectCallAsFunction): 10308 (JSObjectIsConstructor): 10309 (JSObjectCallAsConstructor): 10310 (__JSPropertyListEnumerator::__JSPropertyListEnumerator): 10311 (JSObjectCreatePropertyEnumerator): 10312 (JSPropertyEnumeratorGetNext): 10313 (JSPropertyEnumeratorRetain): 10314 (JSPropertyEnumeratorRelease): 10315 (JSPropertyListAdd): 10316 * API/JSObjectRef.h: Added. 10317 * API/JSValueRef.cpp: Added. 10318 (JSValueGetType): 10319 (JSValueIsUndefined): 10320 (JSValueIsNull): 10321 (JSValueIsBoolean): 10322 (JSValueIsNumber): 10323 (JSValueIsString): 10324 (JSValueIsObject): 10325 (JSValueIsEqual): 10326 (JSValueIsStrictEqual): 10327 (JSUndefinedMake): 10328 (JSNullMake): 10329 (JSBooleanMake): 10330 (JSNumberMake): 10331 (JSValueToBoolean): 10332 (JSValueToNumber): 10333 (JSGCProtect): 10334 (JSGCUnprotect): 10335 (JSGCCollect): 10336 * API/JSValueRef.h: Added. 10337 * API/JavaScriptCore.h: Added. 10338 * API/minidom.c: Added. 10339 (main): 10340 * API/minidom.html: Added. 10341 * API/minidom.js: Added. 10342 * API/testapi.c: Added. 10343 (assertEqualsAsBoolean): 10344 (assertEqualsAsNumber): 10345 (assertEqualsAsUTF8String): 10346 (assertEqualsAsCharactersPtr): 10347 (assertEqualsAsCharacters): 10348 (MyObject_initialize): 10349 (MyObject_copyDescription): 10350 (MyObject_hasProperty): 10351 (MyObject_getProperty): 10352 (MyObject_setProperty): 10353 (MyObject_deleteProperty): 10354 (MyObject_getPropertyList): 10355 (MyObject_callAsFunction): 10356 (MyObject_callAsConstructor): 10357 (MyObject_convertToType): 10358 (MyObject_finalize): 10359 (print_callAsFunction): 10360 (main): 10361 (createStringWithContentsOfFile): 10362 * API/testapi.js: Added. 10363 * ChangeLog: 10364 * JavaScriptCore.xcodeproj/project.pbxproj: 10365 * bindings/npruntime_impl.h: 10366 * kjs/array_instance.h: 10367 * kjs/array_object.cpp: 10368 (ArrayInstance::getPropertyList): 10369 * kjs/interpreter.cpp: 10370 (KJS::Interpreter::evaluate): 10371 * kjs/nodes.cpp: 10372 (ForInNode::execute): 10373 * kjs/object.cpp: 10374 (KJS::JSObject::put): 10375 (KJS::JSObject::canPut): 10376 (KJS::JSObject::deleteProperty): 10377 (KJS::JSObject::propertyIsEnumerable): 10378 (KJS::JSObject::getPropertyAttributes): 10379 (KJS::JSObject::getPropertyList): 10380 * kjs/object.h: 10381 * kjs/property_map.cpp: 10382 (KJS::PropertyMap::get): 10383 * kjs/property_map.h: 10384 * kjs/scope_chain.cpp: 10385 (KJS::ScopeChain::print): 10386 * kjs/string_object.cpp: 10387 (StringInstance::getPropertyList): 10388 * kjs/string_object.h: 10389 * kjs/ustring.h: 10390 (KJS::UString::Rep::ref): 10391 103922006-06-20 Timothy Hatcher <timothy@apple.com> 10393 10394 Reviewed by Geoff. 10395 10396 Make sure we clear the exception before returning so 10397 that future calls will not fail because of an earlier 10398 exception state. Assert on entry that the WebScriptObject 10399 is working with an ExecState that dose not have an exception. 10400 Document that evaluateWebScript and callWebScriptMethod return 10401 WebUndefined when an exception is thrown. 10402 10403 * bindings/objc/WebScriptObject.h: 10404 * bindings/objc/WebScriptObject.mm: 10405 (-[WebScriptObject callWebScriptMethod:withArguments:]): 10406 (-[WebScriptObject evaluateWebScript:]): 10407 (-[WebScriptObject setValue:forKey:]): 10408 (-[WebScriptObject valueForKey:]): 10409 (-[WebScriptObject removeWebScriptKey:]): 10410 (-[WebScriptObject webScriptValueAtIndex:]): 10411 (-[WebScriptObject setWebScriptValueAtIndex:value:]): 10412 104132006-06-19 Anders Carlsson <acarlsson@apple.com> 10414 10415 Reviewed by John. 10416 10417 * kjs/interpreter.cpp: 10418 (KJS::TimeoutChecker::pauseTimeoutCheck): 10419 (KJS::TimeoutChecker::resumeTimeoutCheck): 10420 Fix argument order in setitimer calls. 10421 104222006-06-18 Anders Carlsson <acarlsson@apple.com> 10423 10424 Reviewed by Geoff. 10425 10426 * kjs/interpreter.cpp: 10427 (KJS::TimeoutChecker::pauseTimeoutCheck): 10428 Do nothing if the timeout check hasn't been started. 10429 10430 (KJS::TimeoutChecker::resumeTimeoutCheck): 10431 Do nothing if the timeout check hasn't been started. 10432 Use the right signal handler when unblocking. 10433 10434 (KJS::Interpreter::handleTimeout): 10435 pause/resume the timeout check around the call to 10436 shouldInterruptScript(). 10437 104382006-06-16 Ben Goodger <beng@google.com> 10439 10440 Reviewed by Maciej 10441 10442 http://bugs.webkit.org/show_bug.cgi?id=9491 10443 Windows build breaks in interpreter.cpp 10444 10445 * kjs/interpreter.cpp 10446 (KJS::TimeoutChecker::pauseTimeoutCheck): 10447 (KJS::TimeoutChecker::resumeTimeoutCheck): 10448 Make sure to only assert equality with s_executingInterpreter when it 10449 is being used (i.e. when HAVE(SYS_TIME_H) == true) 10450 104512006-06-17 David Kilzer <ddkilzer@kilzer.net> 10452 10453 Reviewed by darin. 10454 10455 http://bugs.webkit.org/show_bug.cgi?id=9477 10456 REGRESSION: fast/dom/replaceChild.html crashes on WebKit ToT in debug build 10457 10458 * kjs/function.cpp: 10459 (KJS::FunctionImp::callAsFunction): Refetch the debugger after executing the function 10460 in case the WebFrame it was running in has since been destroyed. 10461 104622006-06-17 David Kilzer <ddkilzer@kilzer.net> 10463 10464 Reviewed by ggaren. 10465 10466 http://bugs.webkit.org/show_bug.cgi?id=9476 10467 REGRESSION: Reproducible crash after closing window after viewing 10468 css2.1/t0803-c5501-imrgn-t-00-b-ag.html 10469 10470 * kjs/debugger.cpp: 10471 (Debugger::detach): Call setDebugger(0) for all interpreters removed from 10472 the 'attached to a debugger' list. 10473 104742006-06-17 Anders Carlsson <acarlsson@apple.com> 10475 10476 Reviewed by Maciej and Geoff. 10477 10478 http://bugs.webkit.org/show_bug.cgi?id=7080 10479 Provide some way to stop a JavaScript infinite loop 10480 10481 * kjs/completion.h: 10482 (KJS::): 10483 Add Interrupted completion type. 10484 10485 * kjs/function.cpp: 10486 (KJS::FunctionImp::callAsFunction): 10487 (KJS::GlobalFuncImp::callAsFunction): 10488 Only set the exception on the new ExecState if the current one has had one. 10489 10490 * kjs/interpreter.cpp: 10491 (KJS::TimeoutChecker::startTimeoutCheck): 10492 (KJS::TimeoutChecker::stopTimeoutCheck): 10493 (KJS::TimeoutChecker::alarmHandler): 10494 (KJS::TimeoutChecker::pauseTimeoutCheck): 10495 (KJS::TimeoutChecker::resumeTimeoutCheck): 10496 New TimeoutChecker class which handles setting Interpreter::m_timedOut flag after a given 10497 period of time. This currently only works on Unix platforms where setitimer and signals are used. 10498 10499 (KJS::Interpreter::Interpreter): 10500 Initialize new member variables. 10501 10502 (KJS::Interpreter::~Interpreter): 10503 Destroy the timeout checker. 10504 10505 (KJS::Interpreter::startTimeoutCheck): 10506 (KJS::Interpreter::stopTimeoutCheck): 10507 (KJS::Interpreter::pauseTimeoutCheck): 10508 (KJS::Interpreter::resumeTimeoutCheck): 10509 Call the timeout checker. 10510 10511 (KJS::Interpreter::handleTimeout): 10512 Called on timeout. Resets the m_timedOut flag and calls shouldInterruptScript. 10513 10514 * kjs/interpreter.h: 10515 (KJS::Interpreter::setTimeoutTime): 10516 New function for setting the timeout time. 10517 10518 (KJS::Interpreter::shouldInterruptScript): 10519 New function. The idea is that this should be overridden by subclasses in order to for example 10520 pop up a dialog asking the user if the script should be interrupted. 10521 10522 (KJS::Interpreter::checkTimeout): 10523 New function which checks the m_timedOut flag and calls handleTimeout if it's set. 10524 10525 * kjs/nodes.cpp: 10526 (DoWhileNode::execute): 10527 (WhileNode::execute): 10528 (ForNode::execute): 10529 Call Interpreter::checkTimeout after each iteration of the loop. 10530 105312006-06-15 Timothy Hatcher <timothy@apple.com> 10532 10533 Reviewed by Geoff and Darin. 10534 10535 Prefer the DWARF debugging symbols format for use in Xcode 2.3. 10536 10537 * JavaScriptCore.xcodeproj/project.pbxproj: 10538 105392006-06-14 Geoffrey Garen <ggaren@apple.com> 10540 10541 Reviewed by Beth. 10542 10543 - fixed http://bugs.webkit.org/show_bug.cgi?id=9438 10544 Someone broke ToT: cannot build 10545 10546 * JavaScriptCore.xcodeproj/project.pbxproj: 10547 * bindings/runtime_root.h: Changed "Interpreter.h" to "interpreter.h" 10548 105492006-06-12 Geoffrey Garen <ggaren@apple.com> 10550 10551 build fix 10552 10553 * bindings/objc/WebScriptObject.mm: 10554 (+[WebScriptObject throwException:]): Restore assignment I accidentally 10555 deleted in previous commit 10556 105572006-06-12 Geoffrey Garen <ggaren@apple.com> 10558 10559 Reviewed by TimO, Maciej. 10560 10561 - Merged InterpreterImp code into Interpreter, which implements 10562 all interpreter functionality now. This is part of my continuing quest 10563 to create an external notion of JS "execution context" that is unified and simple -- 10564 something to replace the mix of Context, ContextImp, ExecState, Interpreter, 10565 InterpreterImp, and JSRun. 10566 10567 All tests pass. Leaks test has not regressed from its baseline ~207 leaks 10568 with ~3460 leaked nodes. 10569 10570 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: 10571 * JavaScriptCore.xcodeproj/project.pbxproj: 10572 * bindings/NP_jsobject.cpp: 10573 * bindings/objc/WebScriptObject.mm: 10574 (+[WebScriptObject throwException:]): 10575 * bindings/runtime_root.cpp: 10576 * bindings/runtime_root.h: 10577 * kjs/Context.cpp: 10578 (KJS::Context::Context): 10579 * kjs/ExecState.cpp: Added. 10580 (KJS::ExecState::lexicalInterpreter): 10581 * kjs/ExecState.h: Added. 10582 (KJS::ExecState::dynamicInterpreter): 10583 * kjs/SavedBuiltins.h: Added. 10584 * kjs/bool_object.cpp: 10585 (BooleanPrototype::BooleanPrototype): 10586 * kjs/collector.cpp: 10587 (KJS::Collector::collect): 10588 (KJS::Collector::numInterpreters): 10589 * kjs/context.h: 10590 * kjs/debugger.cpp: 10591 (Debugger::attach): 10592 (Debugger::detach): 10593 * kjs/function.cpp: 10594 (KJS::FunctionImp::callAsFunction): 10595 (KJS::GlobalFuncImp::callAsFunction): 10596 * kjs/function_object.cpp: 10597 (FunctionObjectImp::construct): 10598 * kjs/internal.cpp: 10599 * kjs/internal.h: 10600 * kjs/interpreter.cpp: 10601 (KJS::interpreterMap): 10602 (KJS::Interpreter::Interpreter): 10603 (KJS::Interpreter::init): 10604 (KJS::Interpreter::~Interpreter): 10605 (KJS::Interpreter::globalObject): 10606 (KJS::Interpreter::initGlobalObject): 10607 (KJS::Interpreter::globalExec): 10608 (KJS::Interpreter::checkSyntax): 10609 (KJS::Interpreter::evaluate): 10610 (KJS::Interpreter::builtinObject): 10611 (KJS::Interpreter::builtinFunction): 10612 (KJS::Interpreter::builtinArray): 10613 (KJS::Interpreter::builtinBoolean): 10614 (KJS::Interpreter::builtinString): 10615 (KJS::Interpreter::builtinNumber): 10616 (KJS::Interpreter::builtinDate): 10617 (KJS::Interpreter::builtinRegExp): 10618 (KJS::Interpreter::builtinError): 10619 (KJS::Interpreter::builtinObjectPrototype): 10620 (KJS::Interpreter::builtinFunctionPrototype): 10621 (KJS::Interpreter::builtinArrayPrototype): 10622 (KJS::Interpreter::builtinBooleanPrototype): 10623 (KJS::Interpreter::builtinStringPrototype): 10624 (KJS::Interpreter::builtinNumberPrototype): 10625 (KJS::Interpreter::builtinDatePrototype): 10626 (KJS::Interpreter::builtinRegExpPrototype): 10627 (KJS::Interpreter::builtinErrorPrototype): 10628 (KJS::Interpreter::builtinEvalError): 10629 (KJS::Interpreter::builtinRangeError): 10630 (KJS::Interpreter::builtinReferenceError): 10631 (KJS::Interpreter::builtinSyntaxError): 10632 (KJS::Interpreter::builtinTypeError): 10633 (KJS::Interpreter::builtinURIError): 10634 (KJS::Interpreter::builtinEvalErrorPrototype): 10635 (KJS::Interpreter::builtinRangeErrorPrototype): 10636 (KJS::Interpreter::builtinReferenceErrorPrototype): 10637 (KJS::Interpreter::builtinSyntaxErrorPrototype): 10638 (KJS::Interpreter::builtinTypeErrorPrototype): 10639 (KJS::Interpreter::builtinURIErrorPrototype): 10640 (KJS::Interpreter::mark): 10641 (KJS::Interpreter::interpreterWithGlobalObject): 10642 (KJS::Interpreter::saveBuiltins): 10643 (KJS::Interpreter::restoreBuiltins): 10644 * kjs/interpreter.h: 10645 (KJS::Interpreter::setCompatMode): 10646 (KJS::Interpreter::compatMode): 10647 (KJS::Interpreter::firstInterpreter): 10648 (KJS::Interpreter::nextInterpreter): 10649 (KJS::Interpreter::prevInterpreter): 10650 (KJS::Interpreter::debugger): 10651 (KJS::Interpreter::setDebugger): 10652 (KJS::Interpreter::setContext): 10653 (KJS::Interpreter::context): 10654 * kjs/nodes.cpp: 10655 (StatementNode::hitStatement): 10656 (RegExpNode::evaluate): 10657 * kjs/protect.h: 10658 106592006-06-12 Geoffrey Garen <ggaren@apple.com> 10660 10661 Reviewed by Maciej. 10662 10663 - Have *.lut.h files #include lookup.h to eliminate surprising header 10664 include order dependency. 10665 10666 * DerivedSources.make: 10667 * kjs/array_object.cpp: 10668 * kjs/date_object.cpp: 10669 * kjs/date_object.h: 10670 (KJS::DateProtoFunc::): 10671 * kjs/lexer.cpp: 10672 * kjs/math_object.cpp: 10673 * kjs/number_object.cpp: 10674 * kjs/regexp_object.cpp: 10675 * kjs/string_object.cpp: 10676 106772006-06-10 Geoffrey Garen <ggaren@apple.com> 10678 10679 - http://bugs.webkit.org/show_bug.cgi?id=8515 10680 Linux porting compile bug 10681 10682 Fix by Mike Emmel, Reviewed by Darin. 10683 10684 * JavaScriptCoreSources.bkl: 10685 * jscore.bkl: 10686 * wtf/Platform.h: 10687 106882006-06-09 Geoffrey Garen <ggaren@apple.com> 10689 10690 Build fix -- I think :). 10691 10692 * JavaScriptCore.xcodeproj/project.pbxproj: 10693 * kjs/context.h: 10694 106952006-06-09 Geoffrey Garen <ggaren@apple.com> 10696 10697 Reviewed by Eric (yay!). 10698 10699 - Removed Context wrapper for ContextImp, renamed ContextImp to Context, 10700 split Context into its own file -- Context.cpp -- renamed _var to m_var, 10701 change ' *' to '* '. 10702 10703 * JavaScriptCore.xcodeproj/project.pbxproj: 10704 * kjs/Context.cpp: Added. 10705 (KJS::Context::Context): 10706 (KJS::Context::~Context): 10707 (KJS::Context::mark): 10708 * kjs/context.h: 10709 (KJS::Context::scopeChain): 10710 (KJS::Context::variableObject): 10711 (KJS::Context::setVariableObject): 10712 (KJS::Context::thisValue): 10713 (KJS::Context::callingContext): 10714 (KJS::Context::activationObject): 10715 (KJS::Context::currentBody): 10716 (KJS::Context::function): 10717 (KJS::Context::arguments): 10718 (KJS::Context::pushScope): 10719 (KJS::Context::seenLabels): 10720 * kjs/function.cpp: 10721 (KJS::FunctionImp::callAsFunction): 10722 (KJS::FunctionImp::processParameters): 10723 (KJS::FunctionImp::argumentsGetter): 10724 (KJS::GlobalFuncImp::callAsFunction): 10725 * kjs/internal.cpp: 10726 (KJS::InterpreterImp::evaluate): 10727 * kjs/internal.h: 10728 (KJS::InterpreterImp::setContext): 10729 (KJS::InterpreterImp::context): 10730 * kjs/interpreter.cpp: 10731 * kjs/interpreter.h: 10732 (KJS::ExecState::context): 10733 (KJS::ExecState::ExecState): 10734 * kjs/nodes.cpp: 10735 (currentSourceId): 10736 (currentSourceURL): 10737 (ThisNode::evaluate): 10738 (ResolveNode::evaluate): 10739 (FunctionCallResolveNode::evaluate): 10740 (PostfixResolveNode::evaluate): 10741 (DeleteResolveNode::evaluate): 10742 (TypeOfResolveNode::evaluate): 10743 (PrefixResolveNode::evaluate): 10744 (AssignResolveNode::evaluate): 10745 (VarDeclNode::evaluate): 10746 (VarDeclNode::processVarDecls): 10747 (DoWhileNode::execute): 10748 (WhileNode::execute): 10749 (ForNode::execute): 10750 (ForInNode::execute): 10751 (ContinueNode::execute): 10752 (BreakNode::execute): 10753 (ReturnNode::execute): 10754 (WithNode::execute): 10755 (SwitchNode::execute): 10756 (LabelNode::execute): 10757 (TryNode::execute): 10758 (FuncDeclNode::processFuncDecl): 10759 (FuncExprNode::evaluate): 10760 107612006-06-07 Geoffrey Garen <ggaren@apple.com> 10762 10763 Removed API directory I prematurely/accidentally added. 10764 10765 * API: Removed. 10766 107672006-06-05 Mitz Pettel <opendarwin.org@mitzpettel.com> 10768 10769 Reviewed and landed by Geoff. 10770 10771 - fix a regression in ecma_3/String/regress-104375.js 10772 10773 * kjs/string_object.cpp: 10774 (substituteBackreferences): If a 2-digit back reference is out of range, 10775 parse it as a 1-digit reference (followed by the other digit). This matches 10776 Firefox's behavior. 10777 107782006-06-05 Geoffrey Garen <ggaren@apple.com> 10779 10780 Reviewed By Maciej. 10781 Darin already reviewed this change on the branch. See <rdar://problem/4317701>. 10782 10783 - Fixed <rdar://problem/4291345> PCRE overflow in Safari JavaScriptCore 10784 10785 No test case because there's no behavior change. 10786 10787 * pcre/pcre_compile.c: 10788 (read_repeat_counts): Check for integer overflow / out of bounds 10789 107902006-06-05 Geoffrey Garen <ggaren@apple.com> 10791 10792 Reviewed by aliu. 10793 10794 - Changed CString length from int to size_t. We sould probably do this 10795 for UString, too. (Darin, if you're reading this: Maciej said so.) 10796 10797 * kjs/function.cpp: 10798 (KJS::encode): 10799 * kjs/ustring.cpp: 10800 (KJS::CString::CString): 10801 (KJS::operator==): 10802 * kjs/ustring.h: 10803 (KJS::CString::size): 10804 108052006-06-04 Geoffrey Garen <ggaren@apple.com> 10806 10807 Reviewed by Maciej. 10808 10809 - http://bugs.webkit.org/show_bug.cgi?id=9304 10810 Minor cleanup in JavaScriptCore 10811 10812 * kjs/value.h: Removed redundant declarations 10813 108142006-06-04 Darin Adler <darin@apple.com> 10815 10816 Reviewed by Anders. 10817 10818 - changed deleteAllValues so it can work on "const" collections 10819 Deleting the values affects the values, not the pointers in the 10820 collection, so it's legitimate to do it to a const collection, 10821 and a case of that actually came up in the XPath code. 10822 10823 * wtf/HashMap.h: 10824 (WTF::deleteAllPairSeconds): Use const iterators. 10825 (WTF::deleteAllValues): Take const HashMap reference as a parameter. 10826 * wtf/HashSet.h: 10827 (WTF::deleteAllValues): Take const HashSet reference as a parameter, 10828 and use const iterators. 10829 * wtf/Vector.h: 10830 (WTF::deleteAllValues): Take const Vector reference as a parameter. 10831 10832 - added more functions that are present in <math.h> on some platforms, 10833 but not on others; moved here from various files in WebCore 10834 10835 * wtf/MathExtras.h: 10836 (isinf): Added. 10837 (isnan): Added. 10838 (lround): Added. 10839 (lroundf): Tweaked. 10840 (round): Added. 10841 (roundf): Tweaked. 10842 (signbit): Added. 10843 108442006-06-02 Mitz Pettel <opendarwin.org@mitzpettel.com> 10845 10846 Reviewed by ggaren. 10847 10848 - http://bugs.webkit.org/show_bug.cgi?id=9234 10849 Implement $&, $' and $` replacement codes in String.prototype.replace 10850 10851 Test: fast/js/string-replace-3.html 10852 10853 * kjs/string_object.cpp: 10854 (substituteBackreferences): Added support for $& (matched substring), 10855 $` (everything preceding matched substring), $' (everything following 10856 matched substring) and 2-digit back references, and cleaned up a little. 10857 108582006-06-02 Adele Peterson <adele@apple.com> 10859 10860 Reviewed by Darin. 10861 10862 Set incremental linking to no. This seems to fix a build problem I was seeing 10863 where dftables couldn't find a dll. 10864 10865 * JavaScriptCore.vcproj/dftables/dftables.vcproj: 10866 108672006-05-26 Steve Falkenburg <sfalken@apple.com> 10868 10869 Build fixes/tweaks 10870 10871 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: 10872 10873=== JavaScriptCore-521.11 === 10874 108752006-05-24 Geoffrey Garen <ggaren@apple.com> 10876 10877 Reviewed by mjs. 10878 10879 - JSC half of fix for <rdar://problem/4557926> TOT REGRESSSION: Crash 10880 occurs when attempting to view image in slideshow mode at 10881 http://d.smugmug.com/gallery/581716 ( KJS::IfNode::execute 10882 (KJS::ExecState*) + 312) 10883 10884 On alternate threads, DOMObjects remain in the 10885 ScriptInterpreter's cache because they're not collected. So, they 10886 need an opportunity to mark their children. 10887 10888 I'm not particularly happy with this solution because it fails to 10889 resolve many outstanding issues with the DOM object cache. Since none 10890 of those issues is a crasher or a serious compatibility concern, 10891 and since the behavior of other browsers is not much to go on in this 10892 case, I've filed <rdar://problem/4561439> about that, and I'm moving on 10893 with my life. 10894 10895 * JavaScriptCore.xcodeproj/project.pbxproj: 10896 * kjs/collector.cpp: 10897 (KJS::Collector::collect): 10898 * kjs/internal.cpp: 10899 (KJS::InterpreterImp::mark): 10900 * kjs/internal.h: 10901 * kjs/interpreter.cpp: 10902 (KJS::Interpreter::mark): 10903 * kjs/interpreter.h: 10904 10905=== JavaScriptCore-521.10 === 10906 109072006-05-22 Timothy Hatcher <timothy@apple.com> 10908 10909 Reviewed by Eric, Kevin and Geoff. 10910 10911 Merge open source build fixes. <rdar://problem/4555500> 10912 10913 * kjs/collector.cpp: look at the rsp register in x86_64 10914 (KJS::Collector::markOtherThreadConservatively): 10915 * wtf/Platform.h: add x86_64 to the platform list 10916 109172006-05-19 Anders Carlsson <acarlsson@apple.com> 10918 10919 Reviewed by Geoff. 10920 10921 http://bugs.webkit.org/show_bug.cgi?id=8993 10922 Support function declaration in case statements 10923 10924 * kjs/grammar.y: Get rid of StatementList and use SourceElements instead. 10925 10926 * kjs/nodes.cpp: 10927 (CaseClauseNode::evalStatements): 10928 (CaseClauseNode::processVarDecls): 10929 (CaseClauseNode::processFuncDecl): 10930 (ClauseListNode::processFuncDecl): 10931 (CaseBlockNode::processFuncDecl): 10932 (SwitchNode::processFuncDecl): 10933 * kjs/nodes.h: 10934 (KJS::CaseClauseNode::CaseClauseNode): 10935 (KJS::ClauseListNode::ClauseListNode): 10936 (KJS::ClauseListNode::getClause): 10937 (KJS::ClauseListNode::getNext): 10938 (KJS::ClauseListNode::releaseNext): 10939 (KJS::SwitchNode::SwitchNode): 10940 Add processFuncDecl for the relevant nodes. 10941 10942 * kjs/nodes2string.cpp: 10943 (CaseClauseNode::streamTo): 10944 next got renamed to source. 10945 109462006-05-17 George Staikos <staikos@kde.org> 10947 10948 Reviewed by Maciej, Alexey, and Eric. 10949 10950 * pcre/pcre_compile.c: 10951 * pcre/pcre_get.c: 10952 * pcre/pcre_exec.c: 10953 * wtf/UnusedParam.h: 10954 Use /**/ in .c files to compile with non-C99 and non-GCC compilers. 10955 10956 * kjs/testkjs.cpp: 10957 Change include to <wtf/HashTraits.h> from "HashTraits.h" to avoid -I 10958 10959 * wtf/unicode/qt4/UnicodeQt4.h: 10960 Use correct parentheses and correct mask for utf-32 support. 10961 109622006-05-17 Alexey Proskuryakov <ap@nypop.com> 10963 10964 Reviewed by Darin. 10965 10966 - fix http://bugs.webkit.org/show_bug.cgi?id=8870 10967 Crash typing in Yahoo auto-complete widget. 10968 10969 Test: fast/js/regexp-stack-overflow.html 10970 10971 * pcre/pcre-config.h: Define NO_RECURSE. 10972 109732006-05-16 George Staikos <staikos@kde.org> 10974 10975 Reviewed by Maciej. 10976 10977 Fix some warnings and strict compilation errors. 10978 10979 * kjs/nodes.cpp: 10980 * kjs/value.cpp: 10981 109822006-05-15 Alexey Proskuryakov <ap@nypop.com> 10983 10984 * make-generated-sources.sh: Changed to be executable and removed 10985 text in the file generated by "svn diff". 10986 109872006-05-15 Geoffrey Garen <ggaren@apple.com> 10988 10989 Reviewed by Maciej. 10990 10991 - Fixed <rdar://problem/4534904> please do not treat "debugger" as 10992 a reserved word while parsing JavaScript (and other ECMA reserved 10993 words) 10994 10995 AKA 10996 10997 http://bugs.webkit.org/show_bug.cgi?id=6179 10998 We treat "char" as a reserved word in JavaScript and firefox/IE do 10999 not 11000 11001 (1) I unreserved most of the spec's "future reserved words" because 11002 they're not reserved in IE or FF. (Most, but not all, because IE 11003 somewhat randomly *does* reserve a few of them.) 11004 (2) I made 'debugger' a legitimate statement that acts like an empty 11005 statement because FF and IE support it. 11006 11007 * kjs/grammar.y: 11008 * kjs/keywords.table: 11009 110102006-05-15 Tim Omernick <timo@apple.com> 11011 11012 Reviewed by John Sullivan. 11013 11014 Part of <rdar://problem/4466508> Add 64-bit support to the Netscape Plugin API 11015 11016 Added to the Netscape Plugin API the concept of "plugin drawing models". The drawing model 11017 determines the kind of graphics context created by the browser for the plugin, as well as 11018 the Mac types of various Netscape Plugin API data structures. 11019 11020 There is a drawing model to represent the old QuickDraw-based API. It is used by default 11021 if QuickDraw is available on the system, unless the plugin specifies another drawing model. 11022 11023 The big change is the addition of the CoreGraphics drawing model. A plugin may request this 11024 drawing model to obtain access to a CGContextRef for drawing, instead of a QuickDraw CGrafPtr. 11025 11026 * bindings/npapi.h: 11027 Define NP_NO_QUICKDRAW when compiling 64-bit; there is no 64-bit QuickDraw. 11028 Added NPNVpluginDrawingModel, NPNVsupportsQuickDrawBool, and NPNVsupportsCoreGraphicsBool 11029 variables. 11030 Added NPDrawingModel enumeration. Currently the only drawing models are QuickDraw and 11031 CoreGraphics. 11032 NPRegion's type now depends on the drawing model specified by the plugin. 11033 NP_Port is now only defined when QuickDraw is available. 11034 Added NP_CGContext, which is the type of the NPWindow's "window" member in CoreGraphics mode. 11035 110362006-05-13 Kevin M. Ollivier <kevino@theolliviers.com> 11037 11038 Reviewed by Darin, landed by ap. 11039 11040 - http://bugs.webkit.org/show_bug.cgi?id=8528 11041 Bakefiles (and generated Makefiles) for wx and gdk ports 11042 11043 * make-generated-sources.sh: 11044 Added script to configure environment to run DerivedSources.make 11045 11046 * JavaScriptCoreSources.bkl: 11047 Added JavaScriptCore sources list for Bakefile. 11048 11049 * jscore.bkl: 11050 Bakefile used to generate JavaScriptCore project files 11051 (currently only used by wx and gdk ports) 11052 110532006-05-09 Steve Falkenburg <sfalken@apple.com> 11054 11055 Fix Windows build. 11056 Minor fixes to WTF headers. 11057 11058 Reviewed by kevin. 11059 11060 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: Fix include dirs, paths to files. 11061 * JavaScriptCore.vcproj/testkjs/testkjs.vcproj: Fix include dirs. 11062 * wtf/Assertions.h: include Platform.h to get definition for COMPILER() 11063 * wtf/Vector.h: include FastMalloc.h for definition of fastMalloc, fastFree 11064 110652006-05-09 Maciej Stachowiak <mjs@apple.com> 11066 11067 Rubber stamped by Anders. 11068 11069 - renamed kxmlcore to wtf 11070 11071 kxmlcore --> wtf 11072 KXMLCore --> WTF 11073 KXC --> WTF 11074 11075 * JavaScriptCore.xcodeproj/project.pbxproj: 11076 * bindings/c/c_instance.cpp: 11077 * bindings/objc/WebScriptObject.mm: 11078 * kjs/JSImmediate.h: 11079 * kjs/Parser.cpp: 11080 * kjs/Parser.h: 11081 * kjs/array_object.cpp: 11082 * kjs/collector.cpp: 11083 (KJS::Collector::registerThread): 11084 * kjs/collector.h: 11085 * kjs/config.h: 11086 * kjs/function.cpp: 11087 (KJS::isStrWhiteSpace): 11088 * kjs/function.h: 11089 * kjs/identifier.cpp: 11090 * kjs/internal.cpp: 11091 * kjs/internal.h: 11092 * kjs/lexer.cpp: 11093 (Lexer::shift): 11094 (Lexer::isWhiteSpace): 11095 (Lexer::isIdentStart): 11096 (Lexer::isIdentPart): 11097 * kjs/lookup.cpp: 11098 * kjs/nodes.cpp: 11099 * kjs/nodes.h: 11100 * kjs/number_object.cpp: 11101 * kjs/object.h: 11102 * kjs/property_map.cpp: 11103 * kjs/property_map.h: 11104 * kjs/string_object.cpp: 11105 (StringProtoFunc::callAsFunction): 11106 * kjs/testkjs.cpp: 11107 (testIsInteger): 11108 * kjs/ustring.cpp: 11109 * kjs/ustring.h: 11110 * kxmlcore: Removed. 11111 * kxmlcore/AlwaysInline.h: Removed. 11112 * kxmlcore/Assertions.cpp: Removed. 11113 * kxmlcore/Assertions.h: Removed. 11114 * kxmlcore/FastMalloc.cpp: Removed. 11115 * kxmlcore/FastMalloc.h: Removed. 11116 * kxmlcore/FastMallocInternal.h: Removed. 11117 * kxmlcore/Forward.h: Removed. 11118 * kxmlcore/HashCountedSet.h: Removed. 11119 * kxmlcore/HashFunctions.h: Removed. 11120 * kxmlcore/HashMap.h: Removed. 11121 * kxmlcore/HashSet.h: Removed. 11122 * kxmlcore/HashTable.cpp: Removed. 11123 * kxmlcore/HashTable.h: Removed. 11124 * kxmlcore/HashTraits.h: Removed. 11125 * kxmlcore/ListRefPtr.h: Removed. 11126 * kxmlcore/Noncopyable.h: Removed. 11127 * kxmlcore/OwnArrayPtr.h: Removed. 11128 * kxmlcore/OwnPtr.h: Removed. 11129 * kxmlcore/PassRefPtr.h: Removed. 11130 * kxmlcore/Platform.h: Removed. 11131 * kxmlcore/RefPtr.h: Removed. 11132 * kxmlcore/TCPageMap.h: Removed. 11133 * kxmlcore/TCSpinLock.h: Removed. 11134 * kxmlcore/TCSystemAlloc.cpp: Removed. 11135 * kxmlcore/TCSystemAlloc.h: Removed. 11136 * kxmlcore/UnusedParam.h: Removed. 11137 * kxmlcore/Vector.h: Removed. 11138 * kxmlcore/VectorTraits.h: Removed. 11139 * kxmlcore/unicode: Removed. 11140 * kxmlcore/unicode/Unicode.h: Removed. 11141 * kxmlcore/unicode/UnicodeCategory.h: Removed. 11142 * kxmlcore/unicode/icu: Removed. 11143 * kxmlcore/unicode/icu/UnicodeIcu.h: Removed. 11144 * kxmlcore/unicode/posix: Removed. 11145 * kxmlcore/unicode/qt3: Removed. 11146 * kxmlcore/unicode/qt4: Removed. 11147 * kxmlcore/unicode/qt4/UnicodeQt4.h: Removed. 11148 * pcre/pcre_get.c: 11149 * wtf: Added. 11150 * wtf/Assertions.cpp: 11151 * wtf/Assertions.h: 11152 * wtf/FastMalloc.cpp: 11153 (WTF::TCMalloc_ThreadCache::Scavenge): 11154 (WTF::do_malloc): 11155 (WTF::do_free): 11156 (WTF::TCMallocGuard::TCMallocGuard): 11157 (WTF::malloc): 11158 (WTF::free): 11159 (WTF::calloc): 11160 (WTF::cfree): 11161 (WTF::realloc): 11162 * wtf/FastMalloc.h: 11163 * wtf/FastMallocInternal.h: 11164 * wtf/Forward.h: 11165 * wtf/HashCountedSet.h: 11166 * wtf/HashFunctions.h: 11167 * wtf/HashMap.h: 11168 * wtf/HashSet.h: 11169 * wtf/HashTable.cpp: 11170 * wtf/HashTable.h: 11171 * wtf/HashTraits.h: 11172 * wtf/ListRefPtr.h: 11173 * wtf/Noncopyable.h: 11174 * wtf/OwnArrayPtr.h: 11175 * wtf/OwnPtr.h: 11176 * wtf/PassRefPtr.h: 11177 * wtf/RefPtr.h: 11178 * wtf/TCSystemAlloc.cpp: 11179 (TCMalloc_SystemAlloc): 11180 * wtf/Vector.h: 11181 * wtf/VectorTraits.h: 11182 * wtf/unicode/UnicodeCategory.h: 11183 * wtf/unicode/icu/UnicodeIcu.h: 11184 111852006-05-08 Timothy Hatcher <timothy@apple.com> 11186 11187 Reviewed by Tim O. 11188 11189 * bindings/npapi.h: do not define #pragma options align=mac68k if we are 64-bit 11190 111912006-05-07 Darin Adler <darin@apple.com> 11192 11193 Reviewed and landed by Maciej. 11194 11195 - fix http://bugs.webkit.org/show_bug.cgi?id=8765 11196 Random crashes on TOT since the form state change 11197 11198 I haven't figured out how to construct a test for this, but this does seem to fix the 11199 problem; Mitz mentioned that a double-destroy was occurring in these functions. 11200 11201 * kxmlcore/HashMap.h: (KXMLCore::HashMap::remove): Use RefCounter::deref instead of calling 11202 ~ValueType, because ~ValueType often results in a double-destroy, since the HashTable also 11203 destroys the element based on the storage type. The RefCounter template correctly does work 11204 only in cases where ValueType and ValueStorageType differ and this class is what's used 11205 elsewhere for the same purpose; I somehow missed this case when optimizing HashMap. 11206 * kxmlcore/HashSet.h: (KXMLCore::HashSet::remove): Ditto. 11207 112082006-05-05 Darin Adler <darin@apple.com> 11209 11210 - http://bugs.webkit.org/show_bug.cgi?id=8722 11211 IE compatibility fix in date parsing 11212 11213 * kjs/date_object.cpp: (KJS::parseDate): Merged change that George Staikos provided 11214 from KDE 3.4.3 branch that allows day values of 0 and values that are > 1000. 11215 112162006-05-04 Anders Carlsson <andersca@mac.com> 11217 11218 Reviewed by Maciej. 11219 11220 http://bugs.webkit.org/show_bug.cgi?id=8734 11221 Would like a Vector::append that takes another Vector 11222 11223 * kxmlcore/Vector.h: 11224 (KXMLCore::::append): 11225 New function that takes another array. 11226 112272006-05-02 Steve Falkenburg <sfalken@apple.com> 11228 11229 Reviewed by eric. 11230 11231 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: set NDEBUG for release build 11232 * kxmlcore/FastMalloc.cpp: Prevent USE_SYSTEM_MALLOC from being defined twice 11233 112342006-05-02 Anders Carlsson <andersca@mac.com> 11235 11236 Reviewed by Maciej. 11237 11238 * kxmlcore/HashMap.h: 11239 (KXMLCore::::operator): 11240 Return *this 11241 112422006-05-01 Tim Omernick <timo@apple.com> 11243 11244 Reviewed by Tim Hatcher. 11245 11246 <rdar://problem/4476875> Support printing for embedded Netscape plugins 11247 11248 * bindings/npapi.h: 11249 Fixed struct alignment problem in our npapi.h. Structs must be 68k-aligned on both pre-Mac OS X 11250 and Mac OS X systems, as this is what plugins expect. 11251 112522006-05-01 Timothy Hatcher <timothy@apple.com> 11253 11254 Reviewed by Maciej. 11255 11256 <rdar://problem/4308243> 8F36 Regression: crash in malloc_consolidate if you use a .PAC file 11257 11258 The original fix missed the oversized cell case. Added a test for "currentThreadIsMainThread || 11259 imp->m_destructorIsThreadSafe" where we collect oversized cells. 11260 11261 We don't have a way to test PAC files yet, so there's no test attached. 11262 11263 * kjs/collector.cpp: 11264 (KJS::Collector::collect): test the thread when we collect oversized cells 11265 112662006-05-01 Tim Omernick <timo@apple.com> 11267 11268 Reviewed by Adele. 11269 11270 <rdar://problem/4526114> REGRESSION (two days ago): LOG() just prints @ for NSObject substitutions 11271 11272 * kxmlcore/Assertions.cpp: 11273 Changed sense of strstr("%@") check. I already made the same fix to the WebBrowser assertions. 11274 112752006-04-28 Steve Falkenburg <sfalken@apple.com> 11276 11277 Reviewed by kdecker 11278 11279 Actually apply the change that was reviewed insted of checking it in with an #if 0 (oops). 11280 11281 * kjs/testkjs.cpp: 11282 (main): Suppress C runtime alerts 11283 112842006-04-28 Steve Falkenburg <sfalken@apple.com> 11285 11286 Reviewed by kdecker 11287 11288 Suppress error reporting dialog that blocks Javascript tests from completing. 11289 11290 Real error is due to an overflow in the date/time handling functions that needs 11291 to be addressed, but this will prevent the hang running the Javascript tests 11292 on the build bot (along with the related changes). 11293 11294 * kjs/testkjs.cpp: 11295 (main): Suppress C runtime alerts 11296 112972006-04-27 Geoffrey Garen <ggaren@apple.com> 11298 11299 Reviewed by Maciej 11300 11301 - Minor fixups I discovered while working on the autogenerator. 11302 11303 * kjs/lookup.cpp: 11304 (findEntry): ASSERT that size is not 0, because otherwise we'll % by 0, 11305 compute a garbage address, and possibly crash. 11306 * kjs/lookup.h: 11307 (cacheGlobalObject): Don't enumerate cached objects -- ideally, they 11308 would be hidden entirely. 11309 113102006-04-21 Kevin M. Ollivier <kevino@theolliviers.com> 11311 11312 Reviewed by Darin. 11313 11314 - http://bugs.webkit.org/show_bug.cgi?id=8507 11315 Compilation fixes for building on gcc 4.0.2, and without precomp headers 11316 11317 * kjs/operations.h: 11318 * kxmlcore/Assertions.cpp: 11319 * kxmlcore/FastMalloc.cpp: 11320 Added necessary headers to resolve compilation issues when not using 11321 precompiled headers. 11322 11323 * kjs/value.h: Declare the JSCell class before friend declaration 11324 to resolve compilation issues with gcc 4.0.2. 11325 11326 * kxmlcore/Platform.h: Set Unicode support to use ICU on platforms 11327 other than KDE (previously only defined for Win and Mac OS) 11328 113292006-04-18 Eric Seidel <eseidel@apple.com> 11330 11331 Reviewed by ggaren. 11332 11333 Fix "new Function()" to correctly use lexical scoping. 11334 Add ScopeChain::print() function for debugging. 11335 <rdar://problem/4067864> REGRESSION (125-407): JavaScript failure on PeopleSoft REN Server 11336 11337 * kjs/function_object.cpp: 11338 (FunctionObjectImp::construct): 11339 * kjs/scope_chain.cpp: 11340 (KJS::ScopeChain::print): 11341 * kjs/scope_chain.h: 11342 113432006-04-14 James G. Speth <speth@end.com> 11344 11345 Reviewed by Timothy. 11346 11347 Bug 8389: support for Cocoa bindings - binding an NSTreeController to the WebView's DOM 11348 http://bugs.webkit.org/show_bug.cgi?id=8389 11349 11350 Adds a category to WebScriptObject with array accessors for KVC/KVO. 11351 11352 If super valueForKey: fails it will call valueForUndefinedKey:, which is 11353 important because it causes the right behavior to happen with bindings using 11354 the "Raises for Not Applicable Keys" flag and the "Not Applicable Placeholder" 11355 11356 * bindings/objc/WebScriptObject.mm: 11357 (-[WebScriptObject valueForKey:]): 11358 (-[WebScriptObject count]): 11359 (-[WebScriptObject objectAtIndex:]): 11360 (-[WebUndefined description]): return "undefined" 11361 113622006-04-13 Geoffrey Garen <ggaren@apple.com> 11363 11364 Reviewed by Darin. 11365 11366 * kjs/internal.cpp: 11367 (KJS::InterpreterImp::initGlobalObject): Add the built-in object 11368 prototype to the end of the global object's prototype chain instead of 11369 just blowing away its existing prototype. We need to do this because 11370 the window object has a meaningful prototype now. 11371 113722006-04-13 Maciej Stachowiak <mjs@apple.com> 11373 11374 Reviewed by Geoff. 11375 11376 - fix testkjs to not show false-positive KJS::Node leaks in debug builds 11377 11378 * kjs/testkjs.cpp: 11379 (doIt): 11380 (kjsmain): 11381 113822006-04-11 Geoffrey Garen <ggaren@apple.com> 11383 11384 Reviewed by Maciej. 11385 11386 Minor code cleanup -- passes all the JS tests. 11387 11388 * kjs/object_object.cpp: 11389 (ObjectObjectImp::construct): 11390 (ObjectObjectImp::callAsFunction): 11391 113922006-04-11 Darin Adler <darin@apple.com> 11393 11394 - another attempt to fix Windows build -- Vector in Forward.h was not working 11395 11396 * kxmlcore/Forward.h: Remove Vector. 11397 * kxmlcore/Vector.h: Add back default arguments, remove include of 11398 Forward.h. 11399 114002006-04-11 Darin Adler <darin@apple.com> 11401 11402 - try to fix Windows build -- HashForward.h was not working 11403 11404 * kxmlcore/HashForward.h: Removed. 11405 11406 * JavaScriptCore.xcodeproj/project.pbxproj: Remove HashForward.h. 11407 * kjs/collector.h: Remove use of HashForward.h. 11408 * kxmlcore/HashCountedSet.h: Remove include of HashForward.h, restore 11409 default arguments. 11410 * kxmlcore/HashMap.h: Ditto. 11411 * kxmlcore/HashSet.h: Ditto. 11412 114132006-04-11 David Harrison <harrison@apple.com> 11414 11415 Reviewed by Darin. 11416 11417 - fixed clean build, broken by Darin's check-in 11418 11419 * kjs/date_object.cpp: Add needed include of lookup.h. 11420 * kjs/regexp_object.cpp: Move include of .lut.h file below other includes. 11421 114222006-04-10 Darin Adler <darin@apple.com> 11423 11424 Rubber-stamped by John Sullivan. 11425 11426 - switched from a shell script to a makefile for generated files 11427 - removed lots of unneeded includes 11428 - added new Forward.h and HashForward.h headers that allow compiling with 11429 fewer unneeded templates 11430 11431 * DerivedSources.make: Added. 11432 * generate-derived-sources: Removed. 11433 * JavaScriptCore.xcodeproj/project.pbxproj: Added new files, changed to use 11434 DerivedSources.make. 11435 11436 * kxmlcore/Forward.h: Added. 11437 * kxmlcore/HashForward.h: Added. 11438 11439 * kxmlcore/HashCountedSet.h: Include HashForward for default args. 11440 * kxmlcore/HashMap.h: Ditto. 11441 * kxmlcore/HashSet.h: Ditto. 11442 11443 * kjs/object.h: 11444 * kjs/object.cpp: 11445 Moved KJS_MAX_STACK into the .cpp file. 11446 11447 * bindings/NP_jsobject.cpp: 11448 * bindings/c/c_instance.h: 11449 * bindings/jni/jni_class.h: 11450 * bindings/jni/jni_runtime.h: 11451 * bindings/jni/jni_utility.h: 11452 * bindings/objc/WebScriptObject.mm: 11453 * bindings/objc/WebScriptObjectPrivate.h: 11454 * bindings/objc/objc_class.h: 11455 * bindings/objc/objc_class.mm: 11456 * bindings/objc/objc_instance.h: 11457 * bindings/objc/objc_instance.mm: 11458 * bindings/objc/objc_runtime.mm: 11459 * bindings/objc/objc_utility.mm: 11460 * bindings/runtime.h: 11461 * bindings/runtime_array.cpp: 11462 * bindings/runtime_array.h: 11463 * bindings/runtime_method.cpp: 11464 * bindings/runtime_method.h: 11465 * bindings/runtime_object.cpp: 11466 * bindings/runtime_root.h: 11467 * kjs/JSImmediate.cpp: 11468 * kjs/Parser.h: 11469 * kjs/array_object.cpp: 11470 * kjs/array_object.h: 11471 * kjs/bool_object.cpp: 11472 * kjs/bool_object.h: 11473 * kjs/collector.h: 11474 * kjs/context.h: 11475 * kjs/debugger.cpp: 11476 * kjs/error_object.h: 11477 * kjs/function_object.h: 11478 * kjs/internal.h: 11479 * kjs/lexer.cpp: 11480 * kjs/math_object.cpp: 11481 * kjs/math_object.h: 11482 * kjs/nodes.cpp: 11483 * kjs/nodes.h: 11484 * kjs/number_object.cpp: 11485 * kjs/number_object.h: 11486 * kjs/object_object.cpp: 11487 * kjs/operations.cpp: 11488 * kjs/protected_reference.h: 11489 * kjs/reference.h: 11490 * kjs/reference_list.h: 11491 * kjs/regexp_object.h: 11492 * kjs/string_object.cpp: 11493 * kjs/string_object.h: 11494 * kjs/testkjs.cpp: 11495 * kjs/value.cpp: 11496 * kjs/value.h: 11497 * kxmlcore/HashTable.h: 11498 * kxmlcore/ListRefPtr.h: 11499 * kxmlcore/TCPageMap.h: 11500 * kxmlcore/Vector.h: 11501 Removed unneeded header includes. 11502 115032006-04-09 Geoffrey Garen <ggaren@apple.com> 11504 11505 Reviewed by eric. 11506 11507 - Fixed http://bugs.webkit.org/show_bug.cgi?id=8284 11508 prevent unnecessary entries in the "nodes with extra refs" hash table 11509 11510 This patch switches manually RefPtr exchange with use of 11511 RefPtr::release to ensure that a node's ref count never tops 1 11512 (in the normal case). 11513 11514 * kjs/nodes.cpp: 11515 (BlockNode::BlockNode): 11516 (CaseBlockNode::CaseBlockNode): 11517 * kjs/nodes.h: 11518 (KJS::ArrayNode::ArrayNode): 11519 (KJS::ObjectLiteralNode::ObjectLiteralNode): 11520 (KJS::ArgumentsNode::ArgumentsNode): 11521 (KJS::VarStatementNode::VarStatementNode): 11522 (KJS::ForNode::ForNode): 11523 (KJS::CaseClauseNode::CaseClauseNode): 11524 (KJS::FuncExprNode::FuncExprNode): 11525 (KJS::FuncDeclNode::FuncDeclNode): 11526 115272006-04-08 Alexey Proskuryakov <ap@nypop.com> 11528 11529 Reviewed by Darin. 11530 11531 One more attempt - use reinterpret_cast, rather than static_cast. 11532 115332006-04-08 Alexey Proskuryakov <ap@nypop.com> 11534 11535 Reviewed by Darin. 11536 11537 An attempt to fix Win32 build - ICU uses wchar_t on Windows, so we need a type cast. 11538 11539 * kxmlcore/unicode/icu/UnicodeIcu.h: 11540 (KXMLCore::Unicode::toLower): 11541 (KXMLCore::Unicode::toUpper): 11542 115432006-04-08 Alexey Proskuryakov <ap@nypop.com> 11544 11545 Reviewed by Darin. 11546 11547 - fix http://bugs.webkit.org/show_bug.cgi?id=8264 11548 toLowerCase and toUpperCase don't honor special mappings 11549 11550 Test: fast/js/string-capitalization.html 11551 11552 * JavaScriptCore.xcodeproj/project.pbxproj: Added KXMLCore::Unicode headers to the project. 11553 * icu/unicode/putil.h: Added (copied from WebCore). 11554 * icu/unicode/uiter.h: Ditto. 11555 * icu/unicode/ustring.h: Ditto. 11556 * kjs/string_object.cpp: 11557 (StringProtoFunc::callAsFunction): Use the new KXMLCore::Unicode::toUpper() and toLower(). 11558 * kjs/ustring.cpp: Removed unused (and evil) UChar::toLower() and toUpper(). 11559 * kjs/ustring.h: Ditto. 11560 11561 * kxmlcore/unicode/Unicode.h: Corrected capitalization of the word Unicode. 11562 * kxmlcore/unicode/UnicodeCategory.h: Renamed include guard macro to match file name. 11563 11564 * kxmlcore/unicode/icu/UnicodeIcu.h: 11565 (KXMLCore::Unicode::toLower): Work on strings, not individual characters. Use ICU root locale. 11566 (KXMLCore::Unicode::toUpper): Ditto. 11567 (KXMLCore::Unicode::isFormatChar): Use int32_t, which can hold a complete code point. 11568 (KXMLCore::Unicode::isSeparatorSpace): Ditto. 11569 (KXMLCore::Unicode::category): Ditto. 11570 * kxmlcore/unicode/qt4/UnicodeQt4.h: 11571 (KXMLCore::Unicode::toLower): Work on strings, not individual characters. 11572 (KXMLCore::Unicode::toUpper): Ditto. 11573 (KXMLCore::Unicode::isFormatChar): Use int32_t, which can hold a complete code point. 11574 (KXMLCore::Unicode::isSeparatorSpace): Ditto. 11575 (KXMLCore::Unicode::category): Ditto. 11576 11577 * tests/mozilla/ecma/String/15.5.4.12-1.js: Corrected expected results. 11578 * tests/mozilla/ecma/String/15.5.4.12-5.js: Corrected expected results. 11579 115802006-04-05 Darin Adler <darin@apple.com> 11581 11582 - attempt to fix Windows build 11583 11584 * kxmlcore/HashMap.h: (KXMLCore::HashMap::remove): Use (*it). instead of it->. 11585 * kxmlcore/HashSet.h: (KXMLCore::HashSet::remove): Ditto. 11586 115872006-04-05 Darin Adler <darin@apple.com> 11588 11589 - attempt to fix Windows build 11590 11591 * os-win32/stdint.h: Add int8_t, uint8_t, int64_t. 11592 115932006-04-05 Darin Adler <darin@apple.com> 11594 11595 Reviewed by Maciej. 11596 11597 - fix memory leak introduced by the previous change 11598 11599 * kxmlcore/HashTable.h: Specialize NeedsRef so that it correctly returns true when 11600 the value in question is a pair where one of the pair needs a ref and the other 11601 of the pair does not. 11602 116032006-04-05 Darin Adler <darin@apple.com> 11604 11605 Reviewed by Maciej. 11606 11607 - JavaScriptCore part of fix for http://bugs.webkit.org/show_bug.cgi?id=8049 11608 StringImpl hash traits deleted value creates an init routine for WebCore 11609 <rdar://problem/4442248> REGRESSION: WebCore has init routines (8049) 11610 11611 Change HashMap and HashSet implementation so they fold various types together. 11612 This allows us to implement maps and sets that use RefPtr<WebCore::StringImpl> 11613 and WebCore::String in terms of the underlying raw pointer type, and hence use 11614 -1 for the deleted value. 11615 11616 * kxmlcore/HashTraits.h: Added a new type to HashTraits, StorageTraits, which is a 11617 type to be used when storing a value that has the same layout as the type itself. 11618 This is used only for non-key cases. In the case of keys, the hash function must also 11619 be considered. Moved emptyValue out of GenericHashTraitsBase into GenericHashTraits. 11620 Added a new bool to HashTraits, needsRef, which indicates whether the type needs 11621 explicit reference counting. If the type itself has needsRef true, but the storage 11622 type has needsRef false, then the HashSet or HashMap has to handle the reference 11623 counting explicitly. Added hash trait specializations for all signed integer values 11624 that give -1 as the deleted value. Gave all integers StorageTraits of the canonical 11625 integer type of the same size so int and long will share code. Gave all pointers and 11626 RefPtrs StorageTraits of the appropriately sized integer type. Removed redundant 11627 TraitType and emptyValue definitions in the pointer specialization for HashTraits. 11628 Added PairBaseHashTraits, which doesn't try to set up needsDestruction and deletedValue. 11629 Useful for types where we don't want to force the existence of deletedValue, such as 11630 the type of a pair in a HashMap which is not the actual storage type. Removed an 11631 unneeded parameter from the DeletedValueAssigner template. Added HashKeyStorageTraits 11632 template, which determines what type can be used to store a given hash key type with 11633 a given hash function, and specialized it for pointers and RefPtr so that pointer 11634 hash tables share an underlying HashTable that uses IntHash. 11635 11636 * kxmlcore/HashTable.h: Added HashTableConstIteratorAdapter, HashTableIteratorAdapter, 11637 NeedsRef, RefCountManagerBase, RefCountManager, HashTableRefCountManagerBase, and 11638 HashTableRefCountManager. All are used by both HashSet and HashMap to handle hash 11639 tables where the type stored is not the same as the real value type. 11640 11641 * kxmlcore/HashFunctions.h: Added a new struct named IntTypes that finds an 11642 integer type given a sizeof value. Renamed pointerHash to intHash and made it 11643 use overloading and take integer parameters. Added an IntHash struct which is 11644 a hash function that works for integers. Changed PtrHash to call IntHash with 11645 an appropriately sized integer. Made IntHash the default hash function for 11646 many integer types. Made PtrHash the default hash function for RefPtr as well 11647 as for raw pointers. 11648 11649 * kxmlcore/HashSet.h: Changed implementation to use a separate "storage type" 11650 derived from the new traits. The HashTable will use the storage type and all 11651 necessary translation and ref/deref is done at the HashSet level. Also reorganized 11652 the file so that the HashSet is at the top and has no inline implementation inside 11653 it so it's easy to read the interface to HashSet. 11654 11655 * kxmlcore/HashMap.h: Changed implementation to use a separate "storage type" 11656 derived from the new traits. The HashTable will use the storage type and all 11657 necessary translation and ref/deref is done at the HashMap level. Also reorganized 11658 the file so that the HashMap is at the top and has no inline implementation inside 11659 it so it's easy to read the interface to HashMap. 11660 11661 * kxmlcore/HashMapPtrSpec.h: Removed. Superceded by optimizations in HashMap itself. 11662 11663 * JavaScriptCore.xcodeproj/project.pbxproj: Remove HashMapPtrSpec.h, resort files, 11664 and also remove some unnecessary build settings from the aggregate target that 11665 generates derived sources. 11666 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: Ditto. 11667 116682006-04-04 Timothy Hatcher <timothy@apple.com> 11669 11670 Reviewed by Darin. 11671 11672 The Debug and Release frameworks are now built with install paths relative to the build products directory. 11673 This removes the need for other projects to build with -framework WebCore and -framework JavaScriptCore. 11674 11675 * JavaScriptCore.xcodeproj/project.pbxproj: 11676 116772006-04-04 Eric Seidel <eseidel@apple.com> 11678 11679 Reviewed by ggaren. 11680 11681 Fix win32 build. 11682 Disable ASSERT redefinition warnings for now. 11683 11684 * JavaScriptCore.vcproj/testkjs/testkjs.vcproj: 11685 * kxmlcore/Assertions.h: 11686 116872006-04-04 Bjrn Graf <bjoern.graf@gmail.com> 11688 11689 Reviewed by ggaren & darin. Landed by eseidel. 11690 11691 Integrate CURL version of gettimeofday 11692 http://bugs.webkit.org/show_bug.cgi?id=7399 11693 Disable crash report dialogs for testkjs.exe in Release mode 11694 http://bugs.webkit.org/show_bug.cgi?id=8113 11695 11696 * kjs/testkjs.cpp: 11697 (StopWatch::start): 11698 (StopWatch::stop): 11699 (StopWatch::getElapsedMS): 11700 (main): 11701 (kjsmain): 11702 117032006-04-04 Eric Seidel <eseidel@apple.com> 11704 11705 Reviewed by mjs. 11706 11707 * kjs/number_object.cpp: 11708 (NumberProtoFunc::callAsFunction): remove trunc() to fix win32. 11709 117102006-03-12 Maciej Stachowiak <mjs@apple.com> 11711 11712 Reviewed by Darin. 11713 11714 - fixed "toPrecision sometimes messes up the last digit on intel Macs" 11715 http://bugs.webkit.org/show_bug.cgi?id=7748 11716 11717 * kjs/number_object.cpp: 11718 (intPow10): Compute integer powers of 10 using exponentiation by squaring. 11719 (NumberProtoFunc::callAsFunction): Use intPow10(n) in place of all pow(10.0, n), 11720 plus a bit of refactoring. 11721 117222006-04-03 Darin Adler <darin@apple.com> 11723 11724 - tweak config.h and Platform.h to try to get buildbot working 11725 (making some small changes at the same time) 11726 11727 * kjs/config.h: Removed now-unneeded HAVE_ICU. 11728 * kxmlcore/Platform.h: Tweak how platform gets set up. Move all the 11729 USE stuff to the end. 11730 117312006-04-03 George Staikos <staikos@opensource.apple.com> 11732 11733 Reviewed by Maciej. 11734 11735 Fix Win32 build breakage from previous commit, remove unused forward. 11736 117372006-04-03 George Staikos <staikos@opensource.apple.com> 11738 11739 Reviewed by Maciej. 11740 11741 Implement a unicode abstraction layer to make JavaScriptCore much more 11742 easily ported to other platforms without having to take in libicu. Also 11743 makes the unicode related code easier to understand. 11744 117452006-04-03 Timothy Hatcher <timothy@apple.com> 11746 11747 Reviewed by Adele. 11748 11749 Fixes <rdar://problem/4498338> JavaScriptCore fails to compile for ppc64 11750 Other 64 bit build fixes. 11751 11752 * kjs/collector.cpp: 11753 (KJS::Collector::markOtherThreadConservatively): test for __DARWIN_UNIX03 and use __r1 11754 * kjs/dtoa.cpp: 11755 (Bigint::): cast PRIVATE_mem to unsigned to prevent warning 11756 * bindings/jni/jni_utility.cpp: 11757 (KJS::Bindings::getJavaVM): cast jniError to long to prevent format warning 11758 (KJS::Bindings::getJNIEnv): cast jniError to long to prevent format warning 11759 * bindings/runtime_root.cpp: 11760 (KJS::Bindings::addNativeReference): cast CFDictionaryGetValue to unsigned long to prevent warning 11761 (KJS::Bindings::removeNativeReference): cast CFDictionaryGetValue to unsigned long to prevent warning 11762 117632006-03-31 Darin Adler <darin@apple.com> 11764 11765 Reviewed by Geoff. 11766 11767 - <rdar://problem/4395622> API: WebScriptObject.h incorrectly reports that -isSelectorExcludedFromWebScript returns NO by default 11768 11769 * bindings/objc/WebScriptObject.h: Fixed comment. 11770 117712006-03-31 Eric Seidel <eseidel@apple.com> 11772 11773 Reviewed by mjs. 11774 11775 A bit more code cleanup. 11776 11777 * bindings/c/c_utility.cpp: 11778 (KJS::Bindings::convertValueToNPVariant): 11779 * bindings/objc/objc_runtime.mm: 11780 (convertValueToObjcObject): 11781 * bindings/objc/objc_utility.mm: 11782 (KJS::Bindings::convertValueToObjcValue): 11783 * kjs/function.cpp: 11784 (KJS::GlobalFuncImp::callAsFunction): 11785 * kjs/interpreter.cpp: 11786 (KJS::ExecState::lexicalInterpreter): 11787 * kjs/interpreter.h: 11788 * kjs/operations.cpp: 11789 (KJS::equal): 11790 117912006-03-30 Eric Seidel <eseidel@apple.com> 11792 11793 Reviewed by anders. 11794 11795 Small code-style update. 11796 11797 * kjs/operations.cpp: 11798 (KJS::isNaN): 11799 (KJS::isInf): 11800 (KJS::isPosInf): 11801 (KJS::isNegInf): 11802 (KJS::equal): 11803 (KJS::strictEqual): 11804 (KJS::relation): 11805 (KJS::maxInt): 11806 (KJS::minInt): 11807 (KJS::add): 11808 (KJS::mult): 11809 118102006-03-31 Anders Carlsson <andersca@mac.com> 11811 11812 Reviewed by Maciej. 11813 11814 Make sure the GetterSetterImp objects are marked as well. 11815 11816 * kjs/internal.cpp: 11817 (KJS::GetterSetterImp::mark): 11818 Call JSCell::mark(). 11819 118202006-03-30 Eric Seidel <eseidel@apple.com> 11821 11822 Reviewed by ggaren. 11823 11824 * kjs/nodes.h: Some various small style fixes. 11825 118262006-03-30 Eric Seidel <eseidel@apple.com> 11827 11828 Reviewed by ggaren. 11829 11830 Clean-up style issues in node.h, remove redundant initializations. 11831 11832 * kjs/nodes.h: 11833 (KJS::StatementNode::evaluate): 11834 (KJS::ArrayNode::ArrayNode): 11835 (KJS::ObjectLiteralNode::ObjectLiteralNode): 11836 (KJS::ArgumentsNode::ArgumentsNode): 11837 (KJS::NewExprNode::NewExprNode): 11838 (KJS::CaseClauseNode::CaseClauseNode): 11839 (KJS::FuncDeclNode::FuncDeclNode): 11840 118412006-03-30 Tim Omernick <timo@apple.com> 11842 11843 Reviewed by Geoff. 11844 11845 <rdar://problem/4212626> REGRESSION: LIVECONNECT: JavaScript type for Java Strings is function, 11846 not object 11847 11848 * bindings/runtime.h: 11849 (KJS::Bindings::Instance::implementsCall): 11850 New method. Returns false by default. Concrete subclasses can override this return true when 11851 the bound object may be called as a function. 11852 (KJS::Bindings::Instance::invokeDefaultMethod): 11853 Since bound objects are no longer treated as functions by default, we can return jsUndefined() 11854 here instead of in concrete subclasses that decide not to implement the default method 11855 functionality. 11856 11857 * bindings/runtime_object.cpp: 11858 (RuntimeObjectImp::implementsCall): 11859 Don't assume that the bound object is a function; instead, let the object instance decide whether 11860 it is callable. 11861 11862 * bindings/c/c_instance.h: 11863 * bindings/c/c_instance.cpp: 11864 (KJS::Bindings::CInstance::implementsCall): 11865 The object is callable if its class has an invokeDefault function. 11866 11867 * bindings/objc/objc_instance.h: 11868 * bindings/objc/objc_instance.mm: 11869 (ObjcInstance::implementsCall): 11870 The object is callable if the ObjC instance responds to -invokeDefaultMethodWithArguments:. 11871 11872 * bindings/jni/jni_instance.h: 11873 * bindings/jni/jni_instance.cpp: 11874 Moved bogus invokeDefaultMethod() to superclass. 11875 118762006-03-29 Geoffrey Garen <ggaren@apple.com> 11877 11878 Reviewed by Darin. 11879 11880 - JavaScriptCore side of fix for <rdar://problem/4308243> 8F36 11881 Regression: crash in malloc_consolidate if you use a .PAC file 11882 11883 The crash was a result of threaded deallocation of thread-unsafe 11884 objects. Pure JS objects are thread-safe because all JS execution 11885 is synchronized through JSLock. However, JS objects that wrap WebCore 11886 objects are thread-unsafe because JS and WebCore execution are not 11887 synchronized. That unsafety comes into play when the collector 11888 deallocates a JS object that wraps a WebCore object, thus causing the 11889 WebCore object to be deallocated. 11890 11891 The solution here is to have each JSCell know whether it is safe to 11892 collect on a non-main thread, and to avoid collecting unsafe cells 11893 when on a non-main thread. 11894 11895 We don't have a way to test PAC files yet, so there's no test 11896 attached to this patch. 11897 11898 * kjs/collector.cpp: 11899 (KJS::Collector::collect): 11900 (1) Added the test "currentThreadIsMainThread || 11901 imp->m_destructorIsThreadSafe". 11902 11903 * kjs/protect.h: 11904 (KJS::gcProtectNullTolerant): 11905 (KJS::gcUnprotectNullTolerant): 11906 * kjs/value.h: 11907 (KJS::JSCell::JSCell): The bools here must be bitfields, otherwise 11908 m_destructorIsThreadSafe becomes another whole word, ruining the 11909 collector optimizations we've made based on the size of a JSObject. 11910 * kxmlcore/FastMalloc.cpp: 11911 (KXMLCore::currentThreadIsMainThread): 11912 (KXMLCore::fastMallocRegisterThread): 11913 * kxmlcore/FastMalloc.h: 11914 119152006-03-28 Darin Adler <darin@apple.com> 11916 11917 Reviewed by Geoff. 11918 11919 - change some code that resulted in init routines on Mac OS X -- if the framework has 11920 init routines it will use memory and slow down applications that link with WebKit 11921 even in cases where those applications don't use WebKit 11922 11923 * kjs/date_object.cpp: Changed constants that were derived by multiplying other constants 11924 to use immediate numbers instead. Apparently, double constant expressions of the type we 11925 had here are evaluated at load time. 11926 11927 * kjs/list.cpp: Can't use OwnArrayPtr in ListImp because of the global instances of 11928 ListImp, so go back to using a plain old pointer. 11929 (KJS::List::List): Set overflow to 0 when initializing ListImp. 11930 (KJS::List::release): Replace a clear call with a delete and explicit set to 0. 11931 (KJS::List::append): Use raw pointers, and do a delete [] instead of finessing it with 11932 a swap of OwnArrayPtr. 11933 (KJS::List::copyFrom): Remove now-unneeded get(). 11934 (KJS::List::copyTail): Ditto. 11935 11936 * kjs/ustring.cpp: Changed UString::Rep::empty initializer a bit so that it doesn't get 11937 a static initializer routine. Had to get rid of one level of constant to get the compiler 11938 to understand it could initialize without any code. 11939 11940 - added a build step that checks for init routines 11941 11942 * JavaScriptCore.xcodeproj/project.pbxproj: Deleted now-unused custom build rule that 11943 was replaced by the generate-derived-sources script a while back. Added a custom build 11944 phase that invokes the check-for-global-initializers script. 11945 119462006-03-28 Timothy Hatcher <timothy@apple.com> 11947 11948 Reviewed by Eric. 11949 11950 fixes <rdar://problem/4458539> Unable to include Security(public) and WebKit(private) headers 11951 11952 * bindings/npapi.h: added #defines after the #ifndefs 11953 119542006-03-27 Maciej Stachowiak <mjs@apple.com> 11955 11956 Reviewed by Anders. 11957 11958 - fixed <rdar://problem/4489745> REGRESSION: Safari crashes at to display http://www.lgphilips-lcd.com/ 11959 11960 * kjs/nodes.cpp: 11961 (Node::deref): take into account the case where the extra refcount table was never created 11962 119632006-03-23 David Carson <dacarson@gmail.com> 11964 11965 Reviewed by Darin. 11966 11967 - JSObject in LiveConnect not working. 11968 http://bugs.webkit.org/show_bug.cgi?id=7917 11969 11970 * bindings/jni_jsobject.cpp: 11971 (JavaJSObject::convertJObjectToValue): Was trying to retrieve the native pointer from the wrong base 11972 class, and the GetFieldID was using the wrong signature. 11973 119742006-03-23 Darin Adler <darin@apple.com> 11975 11976 Reviewed by Maciej. 11977 11978 - fix buildbot 11979 11980 * JavaScriptCore.xcodeproj/project.pbxproj: Change target name to JavaScriptCore (it was "include"!?). 11981 Also add -Y 3 option for linker. 11982 119832006-03-23 Darin Adler <darin@apple.com> 11984 11985 Reviewed by Maciej. 11986 11987 - fix http://bugs.webkit.org/show_bug.cgi?id=7726 11988 REGRESSION: orbitz calendar fails (JavaScript function serialization/parsing) 11989 11990 * kjs/object.h: Take function name, as well as source URL and line number, when 11991 using the special overloaded construct for making functions. 11992 * kjs/object.cpp: (KJS::JSObject::construct): Ditto. 11993 * kjs/function_object.h: Ditto. 11994 * kjs/function_object.cpp: (FunctionObjectImp::construct): Pass a name when 11995 constructing the function rather than null. Use "anonymous" when making a 11996 function using the default function constructor. 11997 11998 * kjs/nodes2string.cpp: (FuncDeclNode::streamTo): Put a line break just before 11999 a function declaration. 12000 12001 - unrelated fix 12002 12003 * kxmlcore/HashMapPtrSpec.h: Add missing needed friend declaration. 12004 120052006-03-23 Darin Adler <darin@apple.com> 12006 12007 Reviewed by Maciej. 12008 12009 - fix http://bugs.webkit.org/show_bug.cgi?id=7805 12010 LEAK: method name leaks in KJS::Bindings::CInstance::invokeMethod 12011 12012 * bindings/c/c_utility.h: Remove NPN_UTF16FromString declaration (not implemented). 12013 * bindings/c/c_utility.cpp: 12014 (KJS::Bindings::convertValueToNPVariant): Use DOUBLE_TO_NPVARIANT, 12015 BOOLEAN_TO_NPVARIANT, VOID_TO_NPVARIANT, NULL_TO_NPVARIANT, and 12016 OBJECT_TO_NPVARIANT. In the case of OBJECT, call _NPN_RetainObject in 12017 one case and remove a _NPN_ReleaseObject in another because this 12018 should return a retained value. 12019 (KJS::Bindings::convertNPVariantToValue): Use NPVARIANT_TO_BOOLEAN, 12020 NPVARIANT_TO_INT32, and NPVARIANT_TO_DOUBLE. 12021 12022 * bindings/c/c_runtime.h: Removed implementations of CMethod::name and 12023 CField::name that called _NPN_UTF8FromIdentifier and hence leaked. 12024 * bindings/c/c_runtime.cpp: 12025 (KJS::Bindings::CMethod::name): Added. Returns the string from inside the 12026 method object. 12027 (KJS::Bindings::CField::name): Added. Returns the string from inside the 12028 field object. 12029 (KJS::Bindings::CField::valueFromInstance): Added call to _NPN_ReleaseVariantValue 12030 on the result of getProperty after using it to fix a storage leak. 12031 (KJS::Bindings::CField::setValueToInstance): Added call to _NPN_ReleaseVariantValue 12032 after pasing a value to setProperty now that the conversion function does a retain. 12033 12034 * bindings/c/c_instance.cpp: 12035 (KJS::Bindings::CInstance::invokeMethod): Changed to use Vector for a local 12036 stack buffer. Removed special case for NPVARIANT_IS_VOID because the 12037 convertNPVariantToValue function handles that properly. 12038 (KJS::Bindings::CInstance::invokeDefaultMethod): Ditto. 12039 12040 * bindings/NP_jsobject.h: Formatting changes only. 12041 * bindings/NP_jsobject.cpp: 12042 (jsDeallocate): Changed parameter type so we don't need a function cast. 12043 (_NPN_InvokeDefault): Use VOID_TO_NPVARIANT. 12044 (_NPN_Invoke): Use NULL_TO_NPVARIANT and VOID_TO_NPVARIANT. 12045 (_NPN_Evaluate): Use VOID_TO_NPVARIANT. 12046 (_NPN_GetProperty): Use NULL_TO_NPVARIANT and VOID_TO_NPVARIANT. 12047 12048 * bindings/c/c_class.cpp: Formatting changes only. 12049 * bindings/c/c_class.h: Formatting changes only. 12050 12051 * bindings/npruntime_priv.h: Removed obsolete and now-unused functions: 12052 NPN_VariantIsVoid, NPN_VariantIsNull, NPN_VariantIsUndefined, 12053 NPN_VariantIsBool, NPN_VariantIsInt32, NPN_VariantIsDouble, 12054 NPN_VariantIsString, NPN_VariantIsObject, NPN_VariantToBool, 12055 NPN_VariantToInt32, NPN_VariantToDouble, NPN_VariantToString, 12056 NPN_VariantToStringCopy, NPN_VariantToObject, NPN_InitializeVariantAsVoid, 12057 NPN_InitializeVariantAsNull, NPN_InitializeVariantAsUndefined, 12058 NPN_InitializeVariantWithBool, NPN_InitializeVariantWithInt32, 12059 NPN_InitializeVariantWithDouble, NPN_InitializeVariantWithString, 12060 NPN_InitializeVariantWithObject, and NPN_InitializeVariantWithVariant. 12061 * bindings/npruntime.cpp: 12062 (getIntIdentifierDictionary): Don't bother creating custom callbacks for the 12063 integer dictionary since the default behavior is fine for integers. 12064 120652006-03-23 Mark Rowe <opendarwin.org@bdash.net.nz> 12066 12067 Reviewed and landed by Maciej. 12068 12069 - WebKit no longer builds with bison 2.1 12070 http://bugs.webkit.org/show_bug.cgi?id=7923 12071 12072 * generate-derived-sources: Handle generated header named either grammar.cpp.h 12073 or grammar.hpp. 12074 120752006-03-22 Maciej Stachowiak <mjs@apple.com> 12076 12077 - fix the build 12078 12079 * JavaScriptCore.xcodeproj/project.pbxproj: 12080 120812006-03-21 Maciej Stachowiak <mjs@apple.com> 12082 12083 * kjs/generate-derived-sources: Set executable property. 12084 120852006-03-21 Maciej Stachowiak <mjs@apple.com> 12086 12087 Reviewed by Darin. 12088 12089 Ensure that generated source dependencies are handled properly, as follows: 12090 12091 - Made an external script that generates the sources into a 12092 DerivedSources dir in the build products directory. 12093 - Added a new build target that builds all the generated sources 12094 if needed. Sadly it has to be a target, not a phase for Xcode to notice changes. 12095 - Added the DerivedSources dir in question to the include path. 12096 - Added the new DerivedSources dir and its contents to the project as build-relative. 12097 12098 * JavaScriptCore.xcodeproj/project.pbxproj: 12099 * kjs/generate-derived-sources: Added. Based on the windows version - maybe someday they 12100 can share more. 12101 121022006-03-11 Maciej Stachowiak <mjs@apple.com> 12103 12104 Reviewed by Darin. 12105 12106 - fixed "charAt layout test fails on intel macs; some NaNs are printed as -NaN" 12107 http://bugs.webkit.org/show_bug.cgi?id=7745 12108 12109 * kjs/ustring.cpp: 12110 (KJS::UString::from): Use "NaN" for all NaN values, regardless of sign. 12111 121122006-03-16 Maciej Stachowiak <mjs@apple.com> 12113 12114 Reviewed by Darin. 12115 12116 - tweaks to my change to redo KJS::Node refcounting 12117 12118 * kjs/nodes.cpp: 12119 (Node::ref): 12120 (Node::deref): 12121 (Node::refcount): 12122 (Node::clearNewNodes): 12123 * kjs/nodes.h: 12124 121252006-03-16 Darin Adler <darin@apple.com> 12126 12127 Reviewed by Maciej. 12128 12129 - fixed Vector so that you can pass a reference to something in the vector 12130 to the append or insert functions 12131 12132 * kxmlcore/Vector.h: 12133 (KXMLCore::Vector::expandCapacity): Added new overloads that take a pointer to adjust 12134 and return the adjusted value of the pointer. 12135 (KXMLCore::Vector::append): Pass a pointer when expanding the vector, and use it when 12136 adding the new element. Makes the case where the element moves when the vector 12137 is expanded work. 12138 (KXMLCore::Vector::insert): Ditto. 12139 121402006-03-15 Eric Seidel <eseidel@apple.com> 12141 12142 Reviewed by adele. 12143 12144 Build fix. 12145 12146 * kjs/date_object.cpp: 12147 (KJS::DateProtoFunc::callAsFunction): use size() not "len()" 12148 121492006-03-15 Eric Seidel <eseidel@apple.com> 12150 12151 Reviewed by mjs. 12152 12153 Fix CString copy constructor, fixes Date.parse("") on Win32. 12154 12155 * kjs/date_object.cpp: 12156 (KJS::DateProtoFunc::callAsFunction): 12157 * kjs/ustring.cpp: 12158 (KJS::CString::CString): 12159 (KJS::CString::operator=): 12160 121612006-03-13 Maciej Stachowiak <mjs@apple.com> 12162 12163 Reviewed by Anders. 12164 12165 - KJS::Node and KJS::StatementNode are bigger than they need to be 12166 http://bugs.webkit.org/show_bug.cgi?id=7775 12167 12168 The memory usage of Node was reduced by 2 machine words per node: 12169 12170 - sourceURL was removed and only kept on FunctionBodyNode. The 12171 source URL can only be distinct per function or top-level program node, 12172 and you always have one. 12173 12174 - refcount was removed and kept in a separate hashtable when 12175 greater than 1. newNodes set represents floating nodes with 12176 refcount of 0. This helps because almost all nodes have a refcount of 1 12177 for almost all of their lifetime. 12178 12179 * bindings/runtime_method.cpp: 12180 (RuntimeMethod::RuntimeMethod): Pass null body, added FIXME. 12181 * kjs/Parser.cpp: 12182 (KJS::clearNewNodes): New nodes are tracked in nodes.cpp now, but still clear 12183 them at the appropriate time. 12184 * kjs/context.h: 12185 (KJS::ContextImp::currentBody): added; used to retrieve source URL and sid 12186 for current code. 12187 (KJS::ContextImp::pushIteration): moved here from LabelStack 12188 (KJS::ContextImp::popIteration): ditto 12189 (KJS::ContextImp::inIteration): ditto 12190 (KJS::ContextImp::pushSwitch): ditto 12191 (KJS::ContextImp::popSwitch): ditto 12192 (KJS::ContextImp::inSwitch): ditto 12193 * kjs/function.cpp: 12194 (KJS::FunctionImp::FunctionImp): Add FunctionBodyNode* parameter. 12195 (KJS::FunctionImp::callAsFunction): Pass body to ContextImp. 12196 (KJS::FunctionImp::argumentsGetter): _context renamed to m_context. 12197 (KJS::DeclaredFunctionImp::DeclaredFunctionImp): Pass body to superclass 12198 constructor. 12199 (KJS::GlobalFuncImp::callAsFunction): Pass progNode as body for ContextImp in 12200 eval. 12201 * kjs/function.h: Move body field from DeclaredFunctionImp to 12202 FunctionImp. 12203 * kjs/grammar.y: Change DBG; statements no longer have a sourceid. 12204 * kjs/internal.cpp: 12205 (KJS::ContextImp::ContextImp): Initialize new m_currentBody, m_iterationDepth 12206 and m_switchDepth data members. New FunctionBodyNode* parameter - the 12207 function body provides source URL and SourceId. 12208 (KJS::InterpreterImp::mark): Use exception() function, not _exception directly. 12209 (KJS::InterpreterImp::evaluate): Pass progNode to ContextImp constructor 12210 to use as the body. 12211 * kjs/internal.h: 12212 (KJS::LabelStack::LabelStack): Remove iteration depth and switch depth; 12213 statement label stacks don't need these and it bloats their size. Put them 12214 in the ContextImp instead. 12215 * kjs/interpreter.cpp: 12216 (KJS::ExecState::lexicalInterpreter): Renamed _context to m_context. 12217 * kjs/interpreter.h: 12218 (KJS::ExecState::dynamicInterpreter): Renamed _context to m_context. 12219 (KJS::ExecState::context): ditto 12220 (KJS::ExecState::setException): Renamed _exception to m_exception 12221 (KJS::ExecState::clearException): ditto 12222 (KJS::ExecState::exception): ditto 12223 (KJS::ExecState::hadException): ditto 12224 (KJS::ExecState::ExecState): ditto both above renames 12225 * kjs/nodes.cpp: 12226 (Node::Node): Removed initialization of line, source URL and refcount. Add to 12227 local newNodes set instead of involving parser. 12228 (Node::ref): Instead of managing refcount directly, story refcount over 1 in a 12229 HashCountedSet, and keep a separate HashSet of "floating" nodes with refcount 12230 0. 12231 (Node::deref): ditto 12232 (Node::refcount): ditto 12233 (Node::clearNewNodes): Destroy anything left in the new nodes set. 12234 (currentSourceId): Inline helper to get sourceId from function body via context. 12235 (currentSourceURL): ditto for sourceURL. 12236 (Node::createErrorCompletion): use new helper 12237 (Node::throwError): ditto 12238 (Node::setExceptionDetailsIfNeeded): ditto 12239 (StatementNode::StatementNode): remove initialization of l0 and sid, rename 12240 l1 to m_lastLine. 12241 (StatementNode::setLoc): Set own m_lastLine and Node's m_line. 12242 (StatementNode::hitStatement): Get sid, first line, last line in the proper new ways. 12243 (StatListNode::StatListNode): updated for setLoc changes 12244 (BlockNode::BlockNode): ditto 12245 (DoWhileNode::execute): excpect iteraton counts on ContextImp, not LabelStack 12246 (WhileNode::execute): ditto 12247 (ForNode::execute): ditto 12248 (ForInNode::execute): ditto 12249 (ContinueNode::execute): excpect inIteration on ContextImp, not LabelStack 12250 (BreakNode::execute): excpect inIteration and inSwitch on ContextImp, not LabelStack 12251 (SwitchNode::execute): expect switch counts on ContextImp, not LabelStack 12252 (FunctionBodyNode::FunctionBodyNode): update for new setLoc 12253 (FunctionBodyNode::processFuncDecl): reindent 12254 (SourceElementsNode::SourceElementsNode): update for new setLoc 12255 * kjs/nodes.h: 12256 (KJS::Node::lineNo): Renamed _line to m_line 12257 (KJS::StatementNode::firstLine): Use lineNo() 12258 (KJS::StatementNode::lastLine): Renamed l1 to m_lastLine 12259 (KJS::FunctionBodyNode::sourceId): added 12260 (KJS::FunctionBodyNode::sourceURL): added 12261 * kjs/testkjs.cpp: 12262 122632006-03-14 Geoffrey Garen <ggaren@apple.com> 12264 12265 - Fixed <rdar://problem/4478239> string sort puts "closed" before 12266 "close" 12267 12268 Reviewed by Eric. 12269 12270 * kjs/ustring.cpp: 12271 (KJS::compare): Inverted a < in order to treat the longer string as > 12272 the shorter string. 12273 122742006-03-12 Alexey Proskuryakov <ap@nypop.com> 12275 12276 Reviewed by Maciej. 12277 12278 - fix http://bugs.webkit.org/show_bug.cgi?id=7708 12279 REGRESSION: Flash callback to JavaScript function not working. 12280 12281 Test: plugins/invoke.html 12282 12283 * bindings/c/c_utility.cpp: 12284 (KJS::Bindings::convertUTF8ToUTF16): Return a correct string length. 12285 122862006-03-08 Eric Seidel <eseidel@apple.com> 12287 12288 Reviewed by darin. 12289 12290 Partially fix JS on win32 by fixing hash table generation. 12291 12292 * kjs/create_hash_table: limit << results to 32 bits. 12293 * kjs/testkjs.cpp: 12294 (TestFunctionImp::callAsFunction): 12295 122962006-03-07 Darin Adler <darin@apple.com> 12297 12298 * kxmlcore/Vector.h: Quick fix to try to get Windows compiling again. 12299 123002006-03-07 Darin Adler <darin@apple.com> 12301 12302 Reviewed by Anders. 12303 12304 - fix http://bugs.webkit.org/show_bug.cgi?id=7655 12305 unwanted output while running layout tests 12306 12307 * kjs/lexer.cpp: (Lexer::lex): Turn off the "yylex: ERROR" message. 12308 * kjs/regexp.cpp: (KJS::RegExp::RegExp): Remove the code to log errors from PCRE 12309 to standard output. I think we should arrange for the error text to be in JavaScript 12310 exceptions instead at some point. 12311 * kxmlcore/Vector.h: Add a check for overflow so that we'll abort if we pass a 12312 too-large size rather than allocating a buffer smaller than requested. 12313 123142006-03-06 David Carson <dacarson@gmail.com> 12315 12316 Reviewed by Darin, landed by ap. 12317 12318 - Fixed http://bugs.webkit.org/show_bug.cgi?id=7582 12319 c_utility.cpp contains CFString OS X platform-dependent code; should use ICU 12320 12321 Tested with test case from: 12322 http://bugs.webkit.org/show_bug.cgi?id=5163 12323 12324 * bindings/c_utility.cpp 12325 (convertUTF8ToUTF16): Changed to using Unicode converter from ICU, and manual Latin-1 conversion. 12326 * icu/unicode/ucnv.h: Copied from WebCore. 12327 * icu/unicode/ucnv_err.h: Ditto. 12328 * icu/unicode/uenum.h: Ditto. 12329 123302006-03-05 Darin Adler <darin@apple.com> 12331 12332 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: Updated. 12333 123342006-03-06 Mitz Pettel <opendarwin.org@mitzpettel.com> 12335 12336 Fix suggested by Alexey Proskuryakov <ap@nypop.com>, reviewed by Maciej and Hyatt. 12337 12338 - fix http://bugs.webkit.org/show_bug.cgi?id=7601 12339 REGRESSION (r13089): Reproducible crash dereferencing a deallocated element on google image search 12340 12341 * kxmlcore/Platform.h: Corrected the define to enable USE(MULTIPLE_THREADS) on Mac OS X. 12342 123432006-03-05 Darin Adler <darin@apple.com> 12344 12345 Reviewed by Maciej. 12346 12347 - http://bugs.webkit.org/show_bug.cgi?id=7616 12348 get all references to KJS::Node out of internal.h 12349 12350 * JavaScriptCore.xcodeproj/project.pbxproj: Updated for file changes. 12351 12352 * kjs/Parser.cpp: Added. 12353 * kjs/Parser.h: Added. 12354 12355 * kjs/internal.cpp: Removed the Parser class. 12356 * kjs/internal.h: Ditto. Also removed unnecessary declarations of classes 12357 not used in this header. 12358 12359 * kjs/nodes.h: Added an include of "Parser.h". 12360 * kjs/function.h: Added a declaration of FunctionBodyNode. 12361 123622006-03-05 Geoffrey Garen <ggaren@apple.com> 12363 12364 Reviewed by Maciej. 12365 12366 - JSC support for the fix for <rdar://problem/4467143> JavaScript 12367 enumeration of HTML element properties skips DOM node properties 12368 12369 * kjs/lookup.h: 12370 (1) Added the KJS_DEFINE_PROTOTYPE_WITH_PROTOTYPE macro. The 12371 class definiton macro needs to know about the prototype's prototype so 12372 that the class constructor properly sets it. 12373 (2) Removed the KJS_IMPLEMENT_PROTOTYPE_WITH_PARENT macro. The class 12374 implementation macro does not need to know about the prototype's 12375 prototype, since getOwnPropertySlot should only look in the current 12376 object's property map, and not its prototype's. 12377 123782006-03-05 Andrew Wellington <proton@wiretapped.net> 12379 12380 Reviewed by Eric, landed by ap. 12381 12382 - Remove unused breakpoint bool from StatementNodes. No test provided as 12383 there is no functionality change. 12384 12385 * kjs/nodes.cpp: 12386 (StatementNode::StatementNode): 12387 * kjs/nodes.h: 12388 123892006-03-03 Geoffrey Garen <ggaren@apple.com> 12390 12391 Reviewed by Darin. 12392 12393 - Fixed <rdar://problem/4465598> REGRESSION (TOT): Crash occurs at 12394 http://maps.google.com/?output=html ( KJS::Identifier::add(KJS::UString::Rep*) 12395 12396 This regression was caused by my fix for 4448098. I failed to account for the 12397 deleted entry sentinel in the mehtod that saves the contents of a property map to 12398 the back/forward cache. 12399 12400 Manual test in WebCore/manual-tests/property-map-save-crash.html 12401 12402 * kjs/property_map.cpp: 12403 (KJS::deletedSentinel): Use 1 instead of -1 to facilitate an easy bit mask 12404 (KJS::isValid): New function: checks if a key is null or the deleted sentinel 12405 (KJS::PropertyMap::~PropertyMap): Fixed up the branch logic here for readability 12406 and a slight performance win 12407 (KJS::PropertyMap::clear): 12408 (KJS::PropertyMap::rehash): 12409 (KJS::PropertyMap::addSparseArrayPropertiesToReferenceList): 12410 (KJS::PropertyMap::save): Check keys with isValid() 12411 124122006-03-02 Maciej Stachowiak <mjs@apple.com> 12413 12414 - now fix mac build again 12415 12416 * kjs/identifier.cpp: 12417 124182006-03-02 Maciej Stachowiak <mjs@apple.com> 12419 12420 Rubber stamped by Anders and Eric. 12421 12422 - add fpconst.cpp to win32 build, it is now needed 12423 12424 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: 12425 * kjs/fpconst.cpp: 12426 124272006-03-02 Maciej Stachowiak <mjs@apple.com> 12428 12429 Reviewed by Eric. 12430 12431 - fix windows build, broken by my last patch 12432 12433 * kjs/JSImmediate.cpp: 12434 * kjs/identifier.cpp: 12435 * kxmlcore/FastMalloc.cpp: 12436 * kxmlcore/Platform.h: 12437 124382006-03-01 Maciej Stachowiak <mjs@apple.com> 12439 12440 Reviewed by Darin. 12441 12442 - Set up new prototype macros and avoid using #if without defined() in JSC 12443 12444 Added new PLATFORM macros and related, to make sure #if's all check if relevant macros 12445 are defined, and to separate core OS-level dependencies from operating environment 12446 dependencies so you can, e.g., build KDE on Mac or Windows. 12447 12448 * kxmlcore/Platform.h: Added. 12449 12450 - deploy them everywhere in JavaScriptCore 12451 12452 * JavaScriptCore.xcodeproj/project.pbxproj: 12453 * bindings/jni/jni_utility.cpp: 12454 (KJS::Bindings::convertValueToJValue): 12455 * bindings/objc/WebScriptObject.mm: 12456 * bindings/objc/objc_instance.mm: 12457 (ObjcInstance::end): 12458 * bindings/softlinking.h: 12459 * bindings/testbindings.mm: 12460 (main): 12461 * kjs/JSLock.cpp: 12462 * kjs/collector.cpp: 12463 (KJS::Collector::markCurrentThreadConservatively): 12464 (KJS::Collector::markOtherThreadConservatively): 12465 (KJS::Collector::markStackObjectsConservatively): 12466 * kjs/config.h: 12467 * kjs/date_object.cpp: 12468 (gmtoffset): 12469 (KJS::formatTime): 12470 (KJS::DateProtoFunc::callAsFunction): 12471 (KJS::DateObjectImp::construct): 12472 (KJS::makeTime): 12473 * kjs/dtoa.cpp: 12474 * kjs/fpconst.cpp: 12475 (KJS::sizeof): 12476 (KJS::): 12477 * kjs/grammar.y: 12478 * kjs/identifier.cpp: 12479 * kjs/internal.cpp: 12480 * kjs/interpreter.cpp: 12481 (KJS::Interpreter::evaluate): 12482 (KJS::Interpreter::createLanguageInstanceForValue): 12483 * kjs/interpreter.h: 12484 * kjs/lookup.cpp: 12485 * kjs/lookup.h: 12486 * kjs/math_object.cpp: 12487 * kjs/object.cpp: 12488 * kjs/object.h: 12489 * kjs/operations.cpp: 12490 (KJS::isNaN): 12491 (KJS::isInf): 12492 (KJS::isPosInf): 12493 (KJS::isNegInf): 12494 * kjs/operations.h: 12495 * kjs/regexp.cpp: 12496 (KJS::RegExp::RegExp): 12497 (KJS::RegExp::~RegExp): 12498 (KJS::RegExp::match): 12499 * kjs/regexp.h: 12500 * kjs/testkjs.cpp: 12501 (StopWatch::start): 12502 (StopWatch::stop): 12503 (StopWatch::getElapsedMS): 12504 * kjs/ustring.cpp: 12505 * kjs/ustring.h: 12506 * kxmlcore/AlwaysInline.h: 12507 * kxmlcore/Assertions.cpp: 12508 * kxmlcore/Assertions.h: 12509 * kxmlcore/FastMalloc.cpp: 12510 (KXMLCore::): 12511 * kxmlcore/FastMalloc.h: 12512 * kxmlcore/FastMallocInternal.h: 12513 * kxmlcore/HashTable.h: 12514 * kxmlcore/TCPageMap.h: 12515 * kxmlcore/TCSpinLock.h: 12516 (TCMalloc_SpinLock::Lock): 12517 (TCMalloc_SpinLock::Unlock): 12518 (TCMalloc_SlowLock): 12519 * kxmlcore/TCSystemAlloc.cpp: 12520 (TCMalloc_SystemAlloc): 12521 * os-win32/stdint.h: 12522 125232006-02-28 Geoffrey Garen <ggaren@apple.com> 12524 12525 Reviewed by Darin. 12526 12527 - Fixed <rdar://problem/4448098> Switch PropertyMap deleted entry 12528 placeholder to -1 from UString::Rep::null 12529 12530 This turned out to be only a small speedup (.12%). That's within the 12531 margin of error for super accurate JS iBench, but Shark confirms the 12532 same, so I think it's worth landing. 12533 12534 FYI, I also confirmed that the single entry optimization in 12535 PropertyMap is a 3.2% speedup. 12536 12537 * kjs/property_map.cpp: 12538 (KJS::PropertyMap::~PropertyMap): 12539 (KJS::PropertyMap::clear): 12540 (KJS::PropertyMap::put): 12541 (KJS::PropertyMap::insert): 12542 (KJS::PropertyMap::rehash): 12543 (KJS::PropertyMap::remove): 12544 (KJS::PropertyMap::addSparseArrayPropertiesToReferenceList): 12545 (KJS::PropertyMap::checkConsistency): 12546 * kjs/property_map.h: 12547 (KJS::PropertyMap::deletedSentinel): 12548 125492006-02-27 Eric Seidel <eseidel@apple.com> 12550 12551 Rubber-stamped by darin. 12552 12553 Remove fpconst.cpp, unused on win32 and the cause of linker warnings. 12554 12555 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: 12556 125572006-02-27 Eric Seidel <eseidel@apple.com> 12558 12559 Reviewed by mjs. 12560 12561 Fix Assertions.cpp to compile on win32. 12562 12563 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: 12564 * kxmlcore/Assertions.cpp: 12565 125662006-02-27 Eric Seidel <eseidel@apple.com> 12567 12568 Reviewed by mjs. 12569 12570 Made Assertions.cpp platform independent. 12571 Moved mac-specific logging logic up into WebCore. 12572 http://bugs.webkit.org/show_bug.cgi?id=7503 12573 12574 * JavaScriptCore.xcodeproj/project.pbxproj: 12575 * kxmlcore/Assertions.cpp: Added. 12576 * kxmlcore/Assertions.h: 12577 * kxmlcore/Assertions.mm: Removed. 12578 125792006-02-27 Darin Adler <darin@apple.com> 12580 12581 - fixed Mac Debug build, there was an unused parameter 12582 12583 * kxmlcore/FastMalloc.cpp: (KXMLCore::fastMallocRegisterThread): 12584 Remove parameter name. 12585 12586 * kjs/debugger.h: Fixed comment. 12587 125882006-02-27 Eric Seidel <eseidel@apple.com> 12589 12590 Reviewed by darin. 12591 12592 * kxmlcore/Vector.h: 12593 (KXMLCore::deleteAllValues): fix unused variable warning 12594 125952006-02-21 Maciej Stachowiak <mjs@apple.com> 12596 12597 Reviewed by Darin. 12598 12599 - Turn off -Wno-unused-param for JavaScriptCore and get rid of unused params 12600 http://bugs.webkit.org/show_bug.cgi?id=7384 12601 12602 * JavaScriptCore.xcodeproj/project.pbxproj: 12603 * bindings/NP_jsobject.cpp: 12604 (jsAllocate): 12605 (_NPN_InvokeDefault): 12606 (_NPN_Evaluate): 12607 (_NPN_GetProperty): 12608 (_NPN_SetProperty): 12609 (_NPN_RemoveProperty): 12610 (_NPN_HasProperty): 12611 (_NPN_HasMethod): 12612 * bindings/c/c_class.h: 12613 (KJS::Bindings::CClass::constructorAt): 12614 * bindings/c/c_utility.cpp: 12615 (KJS::Bindings::convertNPVariantToValue): 12616 * bindings/jni/jni_class.cpp: 12617 (JavaClass::methodsNamed): 12618 (JavaClass::fieldNamed): 12619 * bindings/jni/jni_instance.cpp: 12620 (JavaInstance::invokeDefaultMethod): 12621 * bindings/jni/jni_jsobject.cpp: 12622 * bindings/jni/jni_objc.mm: 12623 (-[NSObject KJS::Bindings::]): 12624 * bindings/objc/WebScriptObject.mm: 12625 (+[WebUndefined allocWithZone:]): 12626 (-[WebUndefined initWithCoder:]): 12627 (-[WebUndefined encodeWithCoder:]): 12628 (-[WebUndefined copyWithZone:]): 12629 * bindings/objc/objc_class.h: 12630 (KJS::Bindings::ObjcClass::constructorAt): 12631 * bindings/objc/objc_class.mm: 12632 (KJS::Bindings::ObjcClass::methodsNamed): 12633 (KJS::Bindings::ObjcClass::fallbackObject): 12634 * bindings/objc/objc_instance.mm: 12635 (ObjcInstance::getValueOfUndefinedField): 12636 * bindings/objc/objc_runtime.mm: 12637 (ObjcFallbackObjectImp::getOwnPropertySlot): 12638 (ObjcFallbackObjectImp::put): 12639 (ObjcFallbackObjectImp::canPut): 12640 (ObjcFallbackObjectImp::deleteProperty): 12641 (ObjcFallbackObjectImp::toBoolean): 12642 * bindings/runtime.cpp: 12643 (KJS::Bindings::Instance::createLanguageInstanceForValue): 12644 * bindings/runtime.h: 12645 (KJS::Bindings::Instance::getValueOfUndefinedField): 12646 (KJS::Bindings::Instance::setValueOfUndefinedField): 12647 * bindings/runtime_array.cpp: 12648 (RuntimeArray::lengthGetter): 12649 (RuntimeArray::indexGetter): 12650 (RuntimeArray::put): 12651 (RuntimeArray::deleteProperty): 12652 * bindings/runtime_method.cpp: 12653 (RuntimeMethod::lengthGetter): 12654 (RuntimeMethod::execute): 12655 * bindings/runtime_object.cpp: 12656 (RuntimeObjectImp::fallbackObjectGetter): 12657 (RuntimeObjectImp::fieldGetter): 12658 (RuntimeObjectImp::methodGetter): 12659 (RuntimeObjectImp::put): 12660 (RuntimeObjectImp::canPut): 12661 (RuntimeObjectImp::deleteProperty): 12662 (RuntimeObjectImp::defaultValue): 12663 (RuntimeObjectImp::callAsFunction): 12664 * bindings/runtime_root.cpp: 12665 (performJavaScriptAccess): 12666 * kjs/array_object.cpp: 12667 (ArrayInstance::lengthGetter): 12668 (ArrayInstance::getOwnPropertySlot): 12669 (ArrayPrototype::ArrayPrototype): 12670 (ArrayPrototype::getOwnPropertySlot): 12671 * kjs/bool_object.cpp: 12672 (BooleanObjectImp::BooleanObjectImp): 12673 * kjs/date_object.cpp: 12674 (KJS::DateObjectFuncImp::DateObjectFuncImp): 12675 (KJS::DateObjectFuncImp::callAsFunction): 12676 * kjs/error_object.cpp: 12677 (ErrorObjectImp::ErrorObjectImp): 12678 (NativeErrorPrototype::NativeErrorPrototype): 12679 (NativeErrorImp::NativeErrorImp): 12680 * kjs/function.cpp: 12681 (KJS::FunctionImp::argumentsGetter): 12682 (KJS::FunctionImp::lengthGetter): 12683 (KJS::Arguments::mappedIndexGetter): 12684 (KJS::ActivationImp::argumentsGetter): 12685 (KJS::ActivationImp::put): 12686 * kjs/function_object.cpp: 12687 (FunctionObjectImp::FunctionObjectImp): 12688 * kjs/internal.cpp: 12689 (KJS::GetterSetterImp::toPrimitive): 12690 (KJS::GetterSetterImp::toBoolean): 12691 * kjs/interpreter.cpp: 12692 (KJS::Interpreter::evaluate): 12693 * kjs/interpreter.h: 12694 (KJS::Interpreter::isGlobalObject): 12695 (KJS::Interpreter::interpreterForGlobalObject): 12696 (KJS::Interpreter::isSafeScript): 12697 * kjs/lexer.cpp: 12698 (Lexer::makeIdentifier): 12699 (Lexer::makeUString): 12700 * kjs/lookup.h: 12701 (KJS::staticFunctionGetter): 12702 (KJS::staticValueGetter): 12703 * kjs/nodes.cpp: 12704 (StatementNode::processFuncDecl): 12705 (PropertyNode::evaluate): 12706 (PropertyNameNode::evaluate): 12707 * kjs/number_object.cpp: 12708 (NumberObjectImp::NumberObjectImp): 12709 (NumberObjectImp::getOwnPropertySlot): 12710 * kjs/object.cpp: 12711 (KJS::JSObject::defineGetter): 12712 (KJS::JSObject::defineSetter): 12713 (KJS::JSObject::hasInstance): 12714 (KJS::JSObject::propertyIsEnumerable): 12715 * kjs/object_object.cpp: 12716 (ObjectObjectImp::ObjectObjectImp): 12717 * kjs/property_slot.cpp: 12718 (KJS::PropertySlot::undefinedGetter): 12719 (KJS::PropertySlot::functionGetter): 12720 * kjs/reference.cpp: 12721 (KJS::Reference::getPropertyName): 12722 * kjs/reference_list.cpp: 12723 (ReferenceListIterator::operator++): 12724 * kjs/regexp_object.cpp: 12725 (RegExpObjectImp::RegExpObjectImp): 12726 (RegExpObjectImp::getValueProperty): 12727 (RegExpObjectImp::putValueProperty): 12728 * kjs/string_object.cpp: 12729 (StringInstance::lengthGetter): 12730 (StringInstance::indexGetter): 12731 (StringPrototype::StringPrototype): 12732 * kxmlcore/Assertions.mm: 12733 * kxmlcore/FastMalloc.cpp: 12734 (KXMLCore::TCMalloc_PageHeap::CheckList): 12735 * kxmlcore/HashTable.h: 12736 (KXMLCore::HashTableConstIterator::checkValidity): 12737 (KXMLCore::IdentityHashTranslator::translate): 12738 * pcre/pcre_get.c: 12739 (pcre_get_stringnumber): 12740 127412006-02-23 Darin Adler <darin@apple.com> 12742 12743 - try to fix buildbot failure 12744 12745 * bindings/c/c_utility.cpp: Touch this file, which seems to not have been 12746 recompiled after additional inlining was introduced (Xcode bug?). 12747 127482006-02-23 Geoffrey Garen <ggaren@apple.com> 12749 12750 Reviewed by Darin, Maciej. 12751 12752 - Inline some functions suggested by Shark. 2.9% speedup on super 12753 accurate JS iBench. 12754 12755 http://bugs.webkit.org/show_bug.cgi?id=7411 12756 <rdar://problem/4448116> 12757 12758 * kjs/nodes.h: 12759 (KJS::ArgumentsNode::evaluateList): 12760 * kjs/object.cpp: 12761 * kjs/object.h: 12762 (KJS::ScopeChain::release): 12763 (KJS::JSObject::toPrimitive): 12764 * kjs/scope_chain.cpp: 12765 * kjs/ustring.cpp: 12766 * kjs/ustring.h: 12767 (KJS::UString::toArrayIndex): 12768 * kjs/value.cpp: 12769 * kjs/value.h: 12770 (KJS::JSValue::toObject): 12771 * kxmlcore/FastMalloc.cpp: 12772 (KXMLCore::TCMalloc_ThreadCache_FreeList::Push): 12773 (KXMLCore::TCMalloc_ThreadCache_FreeList::Pop): 12774 127752006-02-21 Eric Seidel <eseidel@apple.com> 12776 12777 Added *.user to ignore list. 12778 127792006-02-21 Eric Seidel <eseidel@apple.com> 12780 12781 Reviewed by ggaren. 12782 12783 Add grammarWrapper.cpp to work around visual studio bug plaguing buildbot. 12784 12785 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: 12786 * JavaScriptCore.vcproj/JavaScriptCore/grammarWrapper.cpp: Added. 12787 127882006-02-21 Eric Seidel <eseidel@apple.com> 12789 12790 Reviewed by ggaren. 12791 12792 * kjs/testkjs.cpp: #if out timeval code on win32 12793 127942006-02-21 Michael Emmel <mike.emmel@gmail.com> 12795 12796 Reviewed by Darin. 12797 12798 - fix http://bugs.webkit.org/show_bug.cgi?id=7397 12799 TCPageMap.h would not compile for me because string.h was missing 12800 12801 * kxmlcore/TCPageMap.h: Added <string.h> include. 12802 128032006-02-21 Darin Adler <darin@apple.com> 12804 12805 Reviewed by John Sullivan. 12806 12807 - http://bugs.webkit.org/show_bug.cgi?id=7404 12808 remove a bunch of extra implementsCall overrides 12809 12810 * JavaScriptCore.xcodeproj/project.pbxproj: Sorted files. 12811 12812 * kjs/internal.h: Made InternalFunctionImp::callAsFunction pure virtual so that 12813 we'll get a compile error if some derived class neglects to implement it. 12814 12815 * kjs/function.cpp: (KJS::FunctionImp::FunctionImp): Remove unneeded initialization 12816 of param, which is an OwnPtr so it gets initialized by default. 12817 12818 * bindings/runtime_method.cpp: 12819 * bindings/runtime_method.h: 12820 * kjs/array_object.cpp: 12821 * kjs/array_object.h: 12822 * kjs/bool_object.cpp: 12823 * kjs/bool_object.h: 12824 * kjs/date_object.cpp: 12825 * kjs/date_object.h: 12826 * kjs/error_object.cpp: 12827 * kjs/error_object.h: 12828 * kjs/function.cpp: 12829 * kjs/function.h: 12830 * kjs/function_object.cpp: 12831 * kjs/function_object.h: 12832 * kjs/math_object.cpp: 12833 * kjs/math_object.h: 12834 * kjs/number_object.cpp: 12835 * kjs/number_object.h: 12836 * kjs/object_object.cpp: 12837 * kjs/object_object.h: 12838 * kjs/regexp_object.cpp: 12839 * kjs/regexp_object.h: 12840 * kjs/string_object.cpp: 12841 * kjs/string_object.h: 12842 Removed many rendundant implementations of implementsCall from subclasses of 12843 InternalFunctionImp. 12844 128452006-02-21 Darin Adler <darin@apple.com> 12846 12847 - fixed build 12848 12849 * kjs/internal.cpp: (KJS::InternalFunctionImp::implementsCall): 12850 Oops, fixed name. 12851 128522006-02-21 Darin Adler <darin@apple.com> 12853 12854 Change suggested by Mitz. 12855 12856 - http://bugs.webkit.org/show_bug.cgi?id=7402 12857 REGRESSION: Methods do not execute 12858 12859 * kjs/internal.h: Add implementsHasCall to InternalFunctionImp. 12860 * kjs/internal.cpp: (KJS::InternalFunctionImp::implementsHasCall): 12861 Return true. All the classes derived from InternalFunctionImp need 12862 to return true from this -- later we can remove all the extra 12863 implementations too. 12864 128652006-02-21 Maciej Stachowiak <mjs@apple.com> 12866 12867 - fix build breakage caused by last-minute change to my patch 12868 12869 * kjs/lookup.h: 12870 128712006-02-20 Maciej Stachowiak <mjs@apple.com> 12872 12873 Reviewed by Geoff and Darin. 12874 12875 Patch from Maks Orlovich, based on work by David Faure, hand-applied and 12876 significantly reworked by me. 12877 12878 - Patch: give internal function names (KJS merge) 12879 http://bugs.webkit.org/show_bug.cgi?id=6279 12880 12881 * tests/mozilla/expected.html: Updated for newly fixed test. 12882 12883 * kjs/array_object.cpp: 12884 (ArrayProtoFunc::ArrayProtoFunc): 12885 * kjs/array_object.h: 12886 * kjs/bool_object.cpp: 12887 (BooleanPrototype::BooleanPrototype): 12888 (BooleanProtoFunc::BooleanProtoFunc): 12889 * kjs/bool_object.h: 12890 * kjs/date_object.cpp: 12891 (KJS::DateProtoFunc::DateProtoFunc): 12892 (KJS::DateObjectImp::DateObjectImp): 12893 (KJS::DateObjectFuncImp::DateObjectFuncImp): 12894 * kjs/error_object.cpp: 12895 (ErrorPrototype::ErrorPrototype): 12896 (ErrorProtoFunc::ErrorProtoFunc): 12897 * kjs/error_object.h: 12898 * kjs/function.cpp: 12899 (KJS::FunctionImp::FunctionImp): 12900 (KJS::GlobalFuncImp::GlobalFuncImp): 12901 * kjs/function.h: 12902 * kjs/function_object.cpp: 12903 (FunctionPrototype::FunctionPrototype): 12904 (FunctionProtoFunc::FunctionProtoFunc): 12905 (FunctionProtoFunc::callAsFunction): 12906 * kjs/function_object.h: 12907 * kjs/internal.cpp: 12908 (KJS::InterpreterImp::initGlobalObject): 12909 (KJS::InternalFunctionImp::InternalFunctionImp): 12910 * kjs/internal.h: 12911 (KJS::InternalFunctionImp::functionName): 12912 * kjs/lookup.h: 12913 (KJS::staticFunctionGetter): 12914 (KJS::HashEntryFunction::HashEntryFunction): 12915 (KJS::HashEntryFunction::implementsCall): 12916 (KJS::HashEntryFunction::toBoolean): 12917 (KJS::HashEntryFunction::implementsHasInstance): 12918 (KJS::HashEntryFunction::hasInstance): 12919 * kjs/math_object.cpp: 12920 (MathFuncImp::MathFuncImp): 12921 * kjs/math_object.h: 12922 * kjs/number_object.cpp: 12923 (NumberPrototype::NumberPrototype): 12924 (NumberProtoFunc::NumberProtoFunc): 12925 * kjs/number_object.h: 12926 * kjs/object.cpp: 12927 (KJS::JSObject::putDirectFunction): 12928 (KJS::Error::create): 12929 * kjs/object.h: 12930 * kjs/object_object.cpp: 12931 (ObjectPrototype::ObjectPrototype): 12932 (ObjectProtoFunc::ObjectProtoFunc): 12933 * kjs/object_object.h: 12934 * kjs/regexp_object.cpp: 12935 (RegExpPrototype::RegExpPrototype): 12936 (RegExpProtoFunc::RegExpProtoFunc): 12937 * kjs/regexp_object.h: 12938 * kjs/string_object.cpp: 12939 (StringProtoFunc::StringProtoFunc): 12940 (StringObjectImp::StringObjectImp): 12941 (StringObjectFuncImp::StringObjectFuncImp): 12942 * kjs/string_object.h: 12943 129442006-02-20 Geoffrey Garen <ggaren@apple.com> 12945 12946 Reviewed by Darin, with help from Eric, Maciej. 12947 12948 - More changes to support super-accurate JS iBench. Doesn't work on 12949 Windows. (Doesn't break Windows, either.) I've filed 12950 [http://bugs.webkit.org/show_bug.cgi?id=7399] about that. 12951 12952 * kjs/interpreter.cpp: 12953 (KJS::Interpreter::evaluate): Print line numbers with exception output 12954 * kjs/testkjs.cpp: Changed " *" to "* " because Eric says that's the 12955 way we roll with .cpp files. 12956 (StopWatch::StopWatch): New class. Provides microsecond-accurate 12957 timings. 12958 (StopWatch::~StopWatch): 12959 (StopWatch::start): 12960 (StopWatch::stop): 12961 (StopWatch::getElapsedMS): 12962 (TestFunctionImp::callAsFunction): Added missing return statement. 12963 Fixed up "run" to use refactored helper functions. Removed bogus 12964 return statement from "quit" case. Made "print" output to stdout 12965 instead of stderr because that makes more sense, and PERL handles 12966 stdout better. 12967 (main): Factored out KXMLCore unit tests. Removed custom exception 12968 printing code because the interpreter prints exceptions for you. Added 12969 a "delete" call for the GlobalImp we allocate. 12970 (testIsInteger): New function, result of refacotring. 12971 (createStringWithContentsOfFile): New function, result of refactoring. 12972 Renamed "code" to "buffer" to match factored-out-ness. 12973 129742006-02-20 Eric Seidel <eseidel@apple.com> 12975 12976 Reviewed by hyatt. 12977 12978 Fix "Copy ICU DLLs..." phase. 12979 12980 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: 12981 * JavaScriptCore.vcproj/JavaScriptCore/build-generated-files.sh: 12982 129832006-02-19 Darin Adler <darin@apple.com> 12984 12985 - renamed ERROR to LOG_ERROR to fix build 12986 presumably Maciej had this change and forgot to land it 12987 12988 * kjs/collector.cpp: Removed now-unneeded #undef ERROR. 12989 * kxmlcore/Assertions.h: Renamed ERROR to LOG_ERROR. 12990 * kxmlcore/FastMalloc.cpp: Changed MESSAGE macro to use LOG_ERROR. 12991 129922006-02-18 Mitz Pettel <opendarwin.org@mitzpettel.com> 12993 12994 Test: fast/js/toString-exception.html 12995 12996 Reviewed by Maciej. 12997 12998 - fix http://bugs.webkit.org/show_bug.cgi?id=7343 12999 REGRESSION: fast/js/toString-overrides.html fails when run multiple times 13000 13001 * kjs/array_object.cpp: 13002 (ArrayProtoFunc::callAsFunction): Remove the object from the visited elements set before 13003 returning an error. 13004 130052006-02-18 Darin Adler <darin@apple.com> 13006 13007 Reviewed by Maciej. 13008 13009 - http://bugs.webkit.org/show_bug.cgi?id=7345 13010 add insert and remove to KXMLCore::Vector 13011 13012 * kxmlcore/Vector.h: Added "moveOverlapping", which is used in both 13013 insert and remove to slide elements within the vector. Also added 13014 "insert" and "remove" functions. 13015 130162006-02-16 Geoffrey Garen <ggaren@apple.com> 13017 13018 Reviewed by John. 13019 13020 - Fixed <rdar://problem/4448534> TOT REGRESSION: crash in KJS:: 13021 Bindings::Instance::deref when leaving page @ gigaom.com 13022 13023 * bindings/c/c_instance.cpp: 13024 (KJS::Bindings::CInstance::~CInstance): Since we cache the class object 13025 globally, we shouldn't delete it, so don't. 13026 130272006-02-16 Timothy Hatcher <timothy@apple.com> 13028 13029 Added -Wno-deprecated-declarations to all the ObjC binding files to prevent deprecation 13030 warnings. Using <rdar://problem/4448350> to track this. 13031 13032 * JavaScriptCore.xcodeproj/project.pbxproj: 13033 * bindings/objc/objc_jsobject.h: Removed empty file. 13034 * bindings/objc/objc_jsobject.mm: Removed empty file. 13035 130362006-02-16 Tim Omernick <timo@apple.com> 13037 13038 Reviewed by Geoff. 13039 13040 <rdar://problem/4428609> Flash Player 8.0.22 can crash Safari (and WebKit apps) with 13041 javascript disabled (7015) 13042 13043 * bindings/NP_jsobject.cpp: 13044 (_NPN_CreateNoScriptObject): 13045 Returns an NPObject which is not bound to a JavaScript object. This kind of NPObject 13046 can be given to a plugin as the "window script object" when JavaScript is disabled. 13047 The object has a custom NPClass, NPNoScriptObjectClass, which has no defined methods. 13048 Because of this, none of the NPN_* functions called by the plugin on this "no script 13049 object" will cause entry into JavaScript code. 13050 (_NPN_InvokeDefault): 13051 Make sure the NPVariant is filled before returning from this function. This never 13052 mattered before because we never reached this case, having only created NPObjects of 13053 the class NPScriptObjectClass. 13054 (_NPN_Invoke): 13055 ditto 13056 (_NPN_Evaluate): 13057 ditto 13058 (_NPN_GetProperty): 13059 ditto 13060 13061 * bindings/NP_jsobject.h: 13062 Declared _NPN_CreateNoScriptObject(). 13063 130642006-02-16 Darin Adler <darin@apple.com> 13065 13066 Reviewed by me, change by Peter Kuemmel. 13067 13068 * kjs/operations.cpp: (KJS::isNegInf): Fix Windows code, which was 13069 checking for positive infinity (rolling in fix from KDE side). 13070 130712006-02-15 Geoffrey Garen <ggaren@apple.com> 13072 13073 Reviewed by Maciej, Eric. 13074 13075 - JavaScriptCore half of fix for <rdar://problem/4176077> CrashTracer: 6569 13076 crashes in DashboardClient at com.apple.JavaScriptCore: 13077 KJS::Bindings::ObjcFallbackObjectImp::type() 13078 13079 WebCore and JavaScriptCore weren't sharing Instance objects very 13080 nicely. I made them use RefPtrs, and sent them to bed without dessert. 13081 13082 * bindings/jni/jni_instance.cpp: Made _instance a RefPtr 13083 (JavaInstance::~JavaInstance): 13084 (JObjectWrapper::JObjectWrapper): 13085 * bindings/jni/jni_instance.h: 13086 (KJS::Bindings::JObjectWrapper::ref): 13087 (KJS::Bindings::JObjectWrapper::deref): 13088 * bindings/jni/jni_runtime.cpp: Made _array a RefPtr 13089 (JavaArray::~JavaArray): 13090 (JavaArray::JavaArray): 13091 * bindings/jni/jni_runtime.h: 13092 (KJS::Bindings::JavaArray::operator=): 13093 * bindings/objc/objc_runtime.h: 13094 - Prohibited copying because that would muss the ref count. 13095 - Prohibited construction without instance because an instance wrapper 13096 without an instance is almost certainly a bug. 13097 * bindings/objc/objc_runtime.mm: 13098 (ObjcFallbackObjectImp::ObjcFallbackObjectImp): 13099 * bindings/runtime.cpp: 13100 (KJS::Bindings::Instance::Instance): 13101 (KJS::Bindings::Instance::createBindingForLanguageInstance): 13102 (KJS::Bindings::Instance::createRuntimeObject): 13103 * bindings/runtime.h: 13104 (KJS::Bindings::Instance::ref): 13105 (KJS::Bindings::Instance::deref): 13106 * bindings/runtime_object.cpp: 13107 (RuntimeObjectImp::RuntimeObjectImp): 13108 (RuntimeObjectImp::fallbackObjectGetter): 13109 (RuntimeObjectImp::fieldGetter): 13110 (RuntimeObjectImp::methodGetter): 13111 (RuntimeObjectImp::getOwnPropertySlot): 13112 (RuntimeObjectImp::put): 13113 (RuntimeObjectImp::canPut): 13114 * bindings/runtime_object.h: 13115 - Removed ownsInstance data member because RefPtr takes care of 13116 instance lifetime now. 13117 - Prohibited copying because that would muss the ref count. 13118 - Prohibited construction without instance because an instance wrapper 13119 without an instance is almost certainly a bug. 13120 (KJS::RuntimeObjectImp::getInternalInstance): 13121 131222006-02-15 Geoffrey Garen <ggaren@apple.com> 13123 13124 Reviewed by John. 13125 13126 - Applied the 4330457 change to CClass and ObjcClass as well. 13127 13128 Once plugins work in DumpRenderTree, running run-webkit-tests --leaks 13129 will catch this. 13130 13131 This change isn't as critical because CClass and ObjcClass objects get 13132 cached globally and never deleted, but it's good practice, in case we 13133 ever do decide to delete CClass and ObjcClass objects. 13134 13135 This change requires prohibiting copying, because we don't do any 13136 intelligent ref-counting -- when a Class is destroyed, it destroys its 13137 methods and fields unconditionally. (Java classes already prohibited 13138 copying.) 13139 13140 * bindings/c/c_class.cpp: 13141 - Merged _commonInit and _commonDelete into constructor and destructor. 13142 (CClass::CClass): 13143 (CClass::~CClass): 13144 (CClass::methodsNamed): Added delete callbacks 13145 (CClass::fieldNamed): Added delete callbacks 13146 * bindings/c/c_class.h: Prohibited copying 13147 * bindings/c/c_instance.cpp: 13148 (KJS::Bindings::CInstance::getClass): Changed to use the preferred 13149 class factory method, to take advantage of the global cache. 13150 13151 [ Repeated changes applied to CClass for ObjcClass: ] 13152 13153 * bindings/objc/objc_class.h: 13154 * bindings/objc/objc_class.mm: 13155 (KJS::Bindings::ObjcClass::ObjcClass): 13156 (KJS::Bindings::ObjcClass::~ObjcClass): 13157 (KJS::Bindings::ObjcClass::methodsNamed): 13158 (KJS::Bindings::ObjcClass::fieldNamed): 13159 * bindings/objc/objc_runtime.h: 13160 (KJS::Bindings::ObjcMethod::ObjcMethod): Initialized uninitialized 13161 variable to prevent bad CFRelease. 13162 (KJS::Bindings::ObjcMethod::~ObjcMethod): Removed erroneous ';' from 13163 if statement to prevent bad CFRelease. 13164 * bindings/objc/objc_runtime.cpp: Changed to use the preferred 13165 ObjectStructPtr, for clarity. 13166 131672006-02-14 Geoffrey Garen <ggaren@apple.com> 13168 13169 Reviewed by John. 13170 13171 - Fixed <rdar://problem/4330457> CrashTracer: [REGRESSION] 3763 crashes 13172 in Safari at com.apple.JavaScriptCore: KJS::Bindings::JavaInstance:: 13173 getClass const + 56 13174 13175 Once plugins work in DumpRenderTree, running run-webkit-tests --leaks 13176 will catch this. 13177 13178 This was a memory leak in the bindings code. The leak was so extreme 13179 that it would cause Safari or the JVM to abort from lack of memory. 13180 Upon construction, Class objects create field and method objects, 13181 storing them in CFDictionaries. The bug was that upon destruction, the 13182 class objects released the dictionaries but didn't destroy the stored 13183 objects. 13184 13185 The fix is to supply CFDictionary callbacks for destroying the values 13186 added to the dictionary. 13187 13188 * bindings/jni/jni_class.cpp: 13189 (JavaClass::JavaClass): Added delete callbacks 13190 * bindings/runtime.cpp: Added definitions for delete callbacks 13191 (KJS::Bindings::deleteMethodList): 13192 (KJS::Bindings::deleteMethod): 13193 (KJS::Bindings::deleteField): 13194 * bindings/runtime.h: Added declarations for delete callbacks 13195 131962006-02-14 Timothy Hatcher <timothy@apple.com> 13197 13198 Reviewed by Justin. 13199 13200 Fixed <rdar://problem/4415050> STD: WebCore build steps use echo -n, which will change 13201 behavior due to POSIX version of sh 13202 13203 * JavaScriptCore.xcodeproj/project.pbxproj: removed the use of echo -n, replaced with printf "" 13204 132052006-02-13 Dave Hyatt <hyatt@apple.com> 13206 13207 Fix Win32 bustage in JavaScriptCore. 13208 13209 Reviewed by darin 13210 13211 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: 13212 Add JSImmediate to the Win32 project. 13213 13214 * kjs/JSImmediate.h: 13215 (KJS::JSImmediate::fromDouble): 13216 (KJS::JSImmediate::toDouble): 13217 (KJS::JSImmediate::NanAsBits): 13218 (KJS::JSImmediate::oneAsBits): 13219 Win32 needs explicit returns after abort() for non-void functions. 13220 13221 * kjs/testkjs.cpp: 13222 (run): 13223 Win32 catches a bug in testkjs! The "return 2" should actually 13224 have been a return false. 13225 13226 * kjs/value.h: 13227 The extern decls of NaN and Inf need to be const. 13228 13229=== JavaScriptCore-521.7 === 13230 132312006-02-13 Timothy Hatcher <timothy@apple.com> 13232 13233 Reviewed by Darin. 13234 13235 Replaced the old NS_DURING exception blocking with @try/@catch. 13236 13237 * JavaScriptCorePrefix.h: undef try and catch to workaround a C++ conflict 13238 * bindings/objc/objc_instance.mm: 13239 (ObjcInstance::invokeMethod): 13240 (ObjcInstance::invokeDefaultMethod): 13241 (ObjcInstance::setValueOfUndefinedField): 13242 (ObjcInstance::getValueOfUndefinedField): 13243 * bindings/objc/objc_runtime.mm: 13244 (ObjcField::valueFromInstance): 13245 (ObjcField::setValueToInstance): 13246 (ObjcArray::setValueAt): 13247 (ObjcArray::valueAt): 13248 132492006-02-13 Darin Adler <darin@apple.com> 13250 13251 - fix a couple problems building on Windows, based on requests 13252 from Krzysztof Kowalczyk <kkowalczyk@gmail.com> 13253 13254 * kjs/JSImmediate.h: Change code using non-standard u_int32/64_t types 13255 to the standard uint32/64_t. Also removed curious "isIEEE()" function 13256 that checked the sizes of some types (and type sizes alone don't tell you if 13257 the floating point conforms to the IEEE-standard). Added missing include 13258 of <stdint.h>. 13259 13260 * kjs/property_slot.h: Added missing include of <assert.h>. 13261 132622006-02-12 Geoffrey Garen <ggaren@apple.com> 13263 13264 Reviewed by darin. 13265 13266 Cleaned up testkjs, added new "run" functionality to allow scripting 13267 tests from within JS. ("run" is a part of my new super-accurate 13268 JS iBench.) 13269 13270 No regressions in run-javascriptcore-tests. 13271 13272 * kjs/testkjs.cpp: 13273 (GlobalImp::className): 13274 (TestFunctionImp::): 13275 (TestFunctionImp::callAsFunction): 13276 (main): 13277 (run): 13278 132792006-02-11 Alexey Proskuryakov <ap@nypop.com> 13280 13281 Reviewed by Darin. 13282 13283 - improve fix for http://bugs.webkit.org/show_bug.cgi?id=5163 13284 RealPlayer.GetTitle() Crashes Safari/Dashboard 13285 13286 * bindings/c/c_utility.cpp: (KJS::Bindings::convertUTF8ToUTF16): 13287 Use kCFStringEncodingISOLatin1 rather than kCFStringEncodingWindowsLatin1, 13288 because the latter encoding has holes, and conversion can still fail. 13289 132902006-02-10 Geoffrey Garen <ggaren@apple.com> 13291 13292 Reviewed by Darin. 13293 13294 - Inlined RefPtr assignment operators. .7% performance win on 13295 super-accurate JS iBench. 13296 13297 * kxmlcore/RefPtr.h: 13298 (KXMLCore::::operator): 13299 133002006-02-10 Geoffrey Garen <ggaren@apple.com> 13301 13302 No review needed, just a build fix. This time for sure. 13303 13304 * kjs/JSType.h: 13305 133062006-02-10 Geoffrey Garen <ggaren@apple.com> 13307 13308 Reviewed by eric. 13309 13310 - Fixed build. As it goes without saying, I will not mention that I 13311 blame Kevin. 13312 13313 * JavaScriptCore.xcodeproj/project.pbxproj: 13314 * kjs/JSImmediate.cpp: 13315 (KJS::JSImmediate::toObject): 13316 133172006-02-09 Geoffrey Garen <ggaren@apple.com> 13318 13319 Reviewed by mjs. 13320 13321 - Fixed <rdar://problem/4343730> Should switch ConstantValues (null, 13322 undefined, true, false) from JS objects to immediate values similar to 13323 SimpleNumber 13324 13325 2.0% performance gain on my new super-accurate version of JS iBench. 13326 (I promise to land a version of it soon.) 13327 13328 The gist of the change: 13329 (1) The SimpleNumber class (simple_number.h) is now the JSImmediate 13330 class (JSImmediate.h/.cpp), and it handles not only numbers but also 13331 null, undefined, true, and false. 13332 (2) JSImmediate provides convenience methods for the bit masking 13333 necessary to encode and decode immediate values. 13334 (3) ConstantValues, BooleanImp, NullImp, and UndefinedImp are gone. 13335 (4) JSCell no longer implements functions like getBoolean, because 13336 only a JSImmediate can be a boolean. 13337 (5) JSImmediate no longer uses ALWAYS_INLINE because there's no need, 13338 and ALWAYS_INLINE is a non-portable option of last resort. 13339 (6) Type is now JSType, and it resides in its own file, JSType.h. 13340 Since I was there, I did some header include sorting as part of this 13341 change. 13342 13343 The rest pretty much explains itself. 13344 13345 * JavaScriptCore.xcodeproj/project.pbxproj: Removed simple_number.h, 13346 added JSImmediate.h/.cpp. 13347 * bindings/c/c_instance.cpp: 13348 (KJS::Bindings::CInstance::defaultValue): 13349 * bindings/c/c_instance.h: 13350 * bindings/c/c_utility.cpp: 13351 (KJS::Bindings::convertValueToNPVariant): 13352 * bindings/jni/jni_instance.cpp: 13353 (JavaInstance::defaultValue): 13354 * bindings/jni/jni_instance.h: 13355 * bindings/jni/jni_jsobject.cpp: 13356 (JavaJSObject::convertValueToJObject): 13357 * bindings/objc/WebScriptObject.mm: 13358 (+[WebScriptObject _convertValueToObjcValue:originExecutionContext:executionContext:]): 13359 Standardized calls to use getXXX instead of hand-rolling JSValue 13360 functionality. 13361 * bindings/objc/objc_instance.h: 13362 * bindings/objc/objc_instance.mm: 13363 (ObjcInstance::getValueOfUndefinedField): 13364 (ObjcInstance::defaultValue): 13365 * bindings/objc/objc_runtime.h: 13366 * bindings/objc/objc_runtime.mm: 13367 (ObjcFallbackObjectImp::type): 13368 (ObjcFallbackObjectImp::defaultValue): 13369 * bindings/runtime.h: 13370 (KJS::Bindings::Instance::getValueOfUndefinedField): 13371 * bindings/runtime_object.cpp: 13372 (RuntimeObjectImp::defaultValue): 13373 * bindings/runtime_object.h: 13374 * kjs/JSImmediate.h: Added. 13375 (KJS::JSImmediate::isImmediate): 13376 (KJS::JSImmediate::isNumber): 13377 (KJS::JSImmediate::isBoolean): 13378 (KJS::JSImmediate::isUndefinedOrNull): 13379 (KJS::JSImmediate::fromDouble): 13380 (KJS::JSImmediate::toDouble): 13381 (KJS::JSImmediate::toBoolean): 13382 (KJS::JSImmediate::trueImmediate): 13383 (KJS::JSImmediate::falseImmediate): 13384 (KJS::JSImmediate::NaNImmediate): 13385 (KJS::JSImmediate::undefinedImmediate): 13386 (KJS::JSImmediate::nullImmediate): 13387 (KJS::JSImmediate::tag): 13388 (KJS::JSImmediate::unTag): 13389 (KJS::JSImmediate::getTag): 13390 (KJS::JSImmediate::): 13391 (KJS::JSImmediate::isIEEE): 13392 (KJS::JSImmediate::is32bit): 13393 (KJS::JSImmediate::is64bit): 13394 (KJS::JSImmediate::NanAsBits): 13395 (KJS::JSImmediate::zeroAsBits): 13396 (KJS::JSImmediate::oneAsBits): 13397 * kjs/JSLock.cpp: 13398 (KJS::JSLock::lock): Removed hack-o-rama to initialize ConstantValues. 13399 * kjs/JSType.h: Added. 13400 * kjs/collector.cpp: 13401 (KJS::Collector::protect): 13402 (KJS::Collector::unprotect): 13403 (KJS::Collector::collect): 13404 * kjs/internal.cpp: 13405 (KJS::StringImp::toPrimitive): 13406 (KJS::NumberImp::toPrimitive): 13407 (KJS::NumberImp::toBoolean): 13408 (KJS::GetterSetterImp::toPrimitive): 13409 * kjs/internal.h: 13410 (KJS::StringImp::type): 13411 (KJS::NumberImp::type): 13412 * kjs/object.cpp: 13413 (KJS::JSObject::type): 13414 (KJS::tryGetAndCallProperty): Replaced "Are you one of the six things 13415 I'm looking for?" test with "Are you not the one thing I'm not looking 13416 for" test. 13417 (KJS::JSObject::defaultValue): 13418 (KJS::JSObject::toPrimitive): 13419 * kjs/object.h: 13420 (KJS::GetterSetterImp::type): 13421 (KJS::JSValue::isObject): 13422 * kjs/operations.cpp: 13423 (KJS::equal): 13424 (KJS::strictEqual): 13425 (KJS::add): 13426 * kjs/reference.cpp: 13427 (KJS::Reference::deleteValue): 13428 * kjs/simple_number.h: Removed. 13429 * kjs/string_object.cpp: 13430 (StringInstance::getOwnPropertySlot): fixed indentation 13431 * kjs/value.cpp: 13432 (KJS::JSValue::toObject): 13433 (KJS::jsNumberCell): New function to quarantine a PIC branch -- allows 13434 us to inline jsNumber without adding PIC branches to callers. 13435 * kjs/value.h: 13436 (KJS::jsUndefined): 13437 (KJS::jsNull): 13438 (KJS::jsNaN): 13439 (KJS::jsBoolean): 13440 (KJS::jsNumber): 13441 (KJS::JSValue::downcast): 13442 (KJS::JSValue::isUndefinedOrNull): 13443 (KJS::JSValue::isBoolean): 13444 (KJS::JSValue::isNumber): 13445 (KJS::JSValue::isString): 13446 (KJS::JSValue::isObject): 13447 (KJS::JSValue::getBoolean): 13448 (KJS::JSValue::getNumber): 13449 (KJS::JSValue::getString): 13450 (KJS::JSValue::getObject): 13451 (KJS::JSValue::getUInt32): 13452 (KJS::JSValue::mark): Replaced !JSImmediate::is() test with assertion, 13453 resulting in a slight performance gain. Callers should always check 13454 !marked() before calling mark(), so it's impossible to call mark on 13455 a JSImmediate. 13456 (KJS::JSValue::marked): 13457 (KJS::JSValue::type): 13458 (KJS::JSValue::toPrimitive): 13459 (KJS::JSValue::toBoolean): 13460 (KJS::JSValue::toNumber): 13461 (KJS::JSValue::toString): 13462 134632006-02-06 Eric Seidel <eseidel@apple.com> 13464 13465 Add svn:ignore properties for visual studio internals. 13466 134672006-02-06 Alexey Proskuryakov <ap@nypop.com> 13468 13469 Reviewed by Darin. 13470 13471 - Refactor DateInstance to provide direct access to data. Several WIN32 modifications. 13472 http://bugs.webkit.org/show_bug.cgi?id=7107 13473 13474 - No tests added - only changed functionality on WIN32, which should be covered by 13475 existing tests. 13476 13477 * kjs/date_object.cpp: 13478 (gmtoffset): On WIN32, use the recommended global (_timezone rather than timezone). 13479 Updated comments. 13480 (KJS::timeZoneOffset): Removed, was basically the same as the above. 13481 (KJS::formatTime): Pass an UTC flag - UTC/local cannot be correctly selected on 13482 Windows based on struct tm itself. 13483 (KJS::DateInstance::getTime): Added. 13484 (KJS::DateInstance::getUTCTime): Added. 13485 (KJS::millisecondsToTM): Factored out from DateProtoFunc::callAsFunction(). 13486 (KJS::DateObjectImp::callAsFunction): Use the new parameter to formatTime(). 13487 (KJS::DateProtoFunc::callAsFunction): Updated for the other changes. The code for 13488 GetTimezoneOffset was incorrect on WIN32 - _daylight global has nothing to do 13489 with daylight savings time being in effect. 13490 13491 * kjs/date_object.h: Added prototypes for new functions. 13492 134932006-02-05 Maciej Stachowiak <mjs@apple.com> 13494 13495 Reviewed by Anders. 13496 13497 - fixed ~1100 KJS::Node leaked on layout tests 13498 http://bugs.webkit.org/show_bug.cgi?id=7097 13499 13500 * kjs/internal.cpp: 13501 (KJS::Parser::noteNodeCycle): 13502 (KJS::Parser::removeNodeCycle): 13503 (KJS::clearNewNodes): 13504 * kjs/internal.h: 13505 * kjs/nodes.cpp: 13506 (ElementNode::breakCycle): 13507 (PropertyListNode::breakCycle): 13508 (ArgumentListNode::breakCycle): 13509 (StatListNode::StatListNode): 13510 (StatListNode::breakCycle): 13511 (VarDeclListNode::breakCycle): 13512 (BlockNode::BlockNode): 13513 (ClauseListNode::breakCycle): 13514 (CaseBlockNode::CaseBlockNode): 13515 (ParameterNode::breakCycle): 13516 (SourceElementsNode::SourceElementsNode): 13517 (SourceElementsNode::breakCycle): 13518 * kjs/nodes.h: 13519 (KJS::Node::breakCycle): 13520 (KJS::ElementNode::ElementNode): 13521 (KJS::ArrayNode::ArrayNode): 13522 (KJS::PropertyListNode::PropertyListNode): 13523 (KJS::ObjectLiteralNode::ObjectLiteralNode): 13524 (KJS::ArgumentListNode::ArgumentListNode): 13525 (KJS::ArgumentsNode::ArgumentsNode): 13526 (KJS::VarDeclListNode::VarDeclListNode): 13527 (KJS::VarStatementNode::VarStatementNode): 13528 (KJS::ForNode::ForNode): 13529 (KJS::CaseClauseNode::CaseClauseNode): 13530 (KJS::ClauseListNode::ClauseListNode): 13531 (KJS::ParameterNode::ParameterNode): 13532 (KJS::FuncExprNode::FuncExprNode): 13533 (KJS::FuncDeclNode::FuncDeclNode): 13534 135352006-02-05 Maciej Stachowiak <mjs@apple.com> 13536 13537 Reviewed by Hyatt. 13538 13539 - fix default traits for classes to make sure default constructors get called 13540 13541 * kxmlcore/VectorTraits.h: 13542 (KXMLCore::): 13543 135442006-02-04 Darin Adler <darin@apple.com> 13545 13546 Reviewed by Maciej. 13547 13548 - fix http://bugs.webkit.org/show_bug.cgi?id=5210 13549 REGRESSION: for/in loop with var changes global variable instead of making local 13550 13551 Test: fast/js/for-in-var-scope.html 13552 13553 * kjs/nodes.cpp: 13554 (valueForReadModifyAssignment): Use ALWAYS_INLINE macro. 13555 (ForInNode::execute): Break out of the scope chain loop once we find and set the 13556 loop variable. We don't want to set multiple loop variables. 13557 (ForInNode::processVarDecls): Process the declaration of the loop variable. 13558 13559 - other cleanup 13560 13561 * kjs/object.cpp: (KJS::tryGetAndCallProperty): Use ALWAYS_INLINE macro. 13562 * kxmlcore/FastMalloc.cpp: Change to use ALWAYS_INLINE macro from AlwaysInline.h 13563 instead of defining it here a second time. 13564 135652006-02-04 Maciej Stachowiak <mjs@apple.com> 13566 13567 Reviewed by Hyatt. 13568 13569 - change JavaScript collector statistics calls to use HashCountedSet instead 13570 of CFSet; other misc cleanup 13571 http://bugs.webkit.org/show_bug.cgi?id=7072 13572 13573 * kjs/collector.cpp: 13574 (KJS::Collector::numProtectedObjects): renamed from numReferencedObjects 13575 (KJS::typeName): 13576 (KJS::Collector::rootObjectTypeCounts): renamed from rootObjectClasses, 13577 use HashSet 13578 * kjs/collector.h: 13579 (KJS::Collector::isOutOfMemory): Renamed from outOfMemory. 13580 * kjs/nodes.cpp: 13581 135822006-02-03 Timothy Hatcher <timothy@apple.com> 13583 13584 Reviewed by Justin. 13585 13586 Renamed configuration names to Debug, Release and Production. 13587 13588 * JavaScriptCore.xcodeproj/project.pbxproj: 13589 135902006-02-02 George Staikos <staikos@opensource.apple.com> 13591 13592 Reviewed by Maciej. 13593 13594 * kjs/lookup.h: Fix compile, merged from KDE. 13595 135962006-02-02 Darin Adler <darin@apple.com> 13597 13598 Reviewed by Maciej. 13599 13600 - http://bugs.webkit.org/show_bug.cgi?id=7005 13601 add Noncopyable, OwnPtr, OwnArrayPtr to KXMLCore 13602 13603 * kxmlcore/Noncopyable.h: Added. 13604 * kxmlcore/OwnArrayPtr.h: Added. 13605 * kxmlcore/OwnPtr.h: Added. 13606 13607 * JavaScriptCore.xcodeproj/project.pbxproj: Added new files. 13608 13609 * kjs/function.h: 13610 * kjs/function.cpp: Use OwnPtr for Parameter pointers. 13611 13612 * kjs/internal.h: Use Noncopyable for LabelStack. 13613 13614 * kjs/list.cpp: Use OwnArrayPtr for overflow. 13615 13616 * kjs/property_map.h: 13617 * kjs/property_map.cpp: Use OwnArrayPtr for SavedProperties. 13618 Use Vector for some stack buffers. 13619 13620 * kjs/regexp_object.h: 13621 * kjs/regexp_object.cpp: Use OwnArrayPtr for lastOvector. 13622 136232006-01-31 Maciej Stachowiak <mjs@apple.com> 13624 13625 Reviewed by Darin. 13626 13627 - fixed leak of hundreds of thousands of JS parser nodes on the layout tests, and added an exit counter 13628 that would catch them 13629 13630 * kjs/nodes.cpp: 13631 (NodeCounter::~NodeCounter): Added debug-only node counter. 13632 (Node::Node): 13633 (Node::~Node): 13634 * kxmlcore/VectorTraits.h: Simple classes like RefPtr do in fact need destruction. 13635 136362006-01-31 Darin Adler <darin@apple.com> 13637 13638 Reviewed by Maciej. 13639 13640 - added deleteAllValues for HashSet as well as HashMap 13641 - fixed conversion from const_iterator to iterator, which I broke a while back 13642 13643 * kxmlcore/HashMap.h: Updated copyright date. 13644 * kxmlcore/HashSet.h: (KXMLCore::deleteAllValues): Added. 13645 * kxmlcore/HashTable.h: (KXMLCore::HashTableIterator::operator const_iterator): Added. 13646 136472006-01-31 Tim Omernick <timo@apple.com> 13648 13649 Reviewed by Geoff Garen. 13650 13651 * bindings/c/c_utility.cpp: 13652 (KJS::Bindings::convertUTF8ToUTF16): 13653 Fixed an invalid assertion that UTF8Chars is not NULL. It is valid for it to be NULL as long as 13654 UTF8Length is 0. 13655 This fixes an assertion failure on TOT at <http://www.musicindiaonline.com/p/x/tJO0OOBME9.As1NMvHdW/>, 13656 where JavaScript is getting a NULL string back from some call on the Real Player plugin. 13657 136582006-01-30 Anders Carlsson <andersca@mac.com> 13659 13660 Reviewed by Darin. 13661 13662 Fix http://bugs.webkit.org/show_bug.cgi?id=6907 13663 REGRESSION: United.com menus messed up due to document.all/MSIE sniff 13664 13665 * kjs/nodes.cpp: 13666 (typeStringForValue): 13667 Return "undefined" if the given object should masquerade as undefined. 13668 13669 * kjs/object.h: 13670 (KJS::JSObject::masqueradeAsUndefined): 13671 Rename from isEqualToNull. 13672 13673 * kjs/operations.cpp: 13674 (KJS::equal): 13675 Update for name change. 13676 136772006-01-29 Maciej Stachowiak <mjs@apple.com> 13678 13679 Reviewed by Darin. 13680 13681 - properly define Vector assignment operator; the private version was accidentally left 13682 in, and the template version is not enough to replace the default 13683 13684 * kxmlcore/Vector.h: 13685 (KXMLCore::Vector::operator=): 13686 136872006-01-29 Eric Seidel <eseidel@apple.com> 13688 13689 Reviewed by darin. 13690 13691 Fix the build by applying a GCC-specific namespace hack. 13692 13693 * kjs/lookup.h: 13694 136952006-01-29 Eric Seidel <eseidel@apple.com> 13696 13697 Reviewed by hyatt. 13698 13699 Fix build on Win32. 13700 13701 * kjs/lookup.h: fixed ::cacheGlobalObject 13702 * kxmlcore/Vector.h: 13703 (KXMLCore::Vector::operator[]): use unsigned long 13704 137052006-01-29 Maciej Stachowiak <mjs@apple.com> 13706 13707 Reviewed by Dave Hyatt. 13708 13709 * kxmlcore/Vector.h: 13710 (KXMLCore::Vector::operator[]): Add unsigned overload 13711 137122006-01-28 Darin Adler <darin@apple.com> 13713 13714 Reviewed by John Sullivan. 13715 13716 - http://bugs.webkit.org/show_bug.cgi?id=6895 13717 include exception names in JavaScript form of DOM exception 13718 13719 * khtml/ecma/kjs_binding.cpp: (KJS::setDOMException): Include the name of the 13720 exception in the error message. 13721 137222006-01-28 Maciej Stachowiak <mjs@apple.com> 13723 13724 Reviewed by Darin. 13725 13726 - miscellaneous Vector improvements 13727 13728 * kxmlcore/Vector.h: 13729 (KXMLCore::Vector::at): Add range-checking asserts. 13730 (KXMLCore::Vector::first): Added as a convenience. 13731 (KXMLCore::Vector::last): Convenience for stack-style use. 13732 (KXMLCore::Vector::removeLast): ditto 13733 137342006-01-28 Darin Adler <darin@apple.com> 13735 13736 Reviewed by John Sullivan 13737 13738 - fix http://bugs.webkit.org/show_bug.cgi?id=6870 13739 REGRESSION: JavaScript Date constructor won't accept another Date object 13740 13741 Test: fast/js/date-constructor.html 13742 13743 * kjs/date_object.cpp: (KJS::DateObjectImp::construct): 13744 Added a special case for constructing one date from another (to avoid losing 13745 milliseconds, which are not in the text form, to match Firefox), and changed 13746 the base code to convert to primitive before checking for string to match 13747 the standard. Also corrected a couple silly things in the "construct from 13748 current time" code path (removed a floor that does no good, and changed 13749 the constant used to convert microseconds to milliseconds to be a 1000 13750 rather than "msPerSecond"). 13751 137522006-01-28 Darin Adler <darin@apple.com> 13753 13754 * kjs/create_hash_table: Added missing license. 13755 137562006-01-28 Maciej Stachowiak <mjs@apple.com> 13757 13758 Reviewed by Dave Hyatt. 13759 13760 - added a Vector class 13761 http://bugs.webkit.org/show_bug.cgi?id=6894 13762 13763 * JavaScriptCore.xcodeproj/project.pbxproj: 13764 * kjs/internal.cpp: 13765 (KJS::Parser::saveNewNode): Apply Vector. 13766 (KJS::clearNewNodes): ditto 13767 * kjs/number_object.cpp: 13768 (integer_part_noexp): ditto 13769 (char_sequence): ditto 13770 * kjs/ustring.cpp: 13771 (KJS::UString::UTF8String): ditto 13772 * kxmlcore/HashMap.h: 13773 (KXMLCore::deleteAllValues): Tweaked this to only apply to HashMap, 13774 other versions are useful for other containers. 13775 * kxmlcore/Vector.h: Added. Implemented a Vector class, which should 13776 be usable for all Array/QVector style purposes, and also as a stack buffer 13777 with oversize handling. Also some helper classes to make vector operations 13778 as efficient as possible for POD types and for simple non-PODs like RefPtr. 13779 (KXMLCore::): 13780 (KXMLCore::VectorTypeOperations::destruct): 13781 (KXMLCore::VectorTypeOperations::initialize): 13782 (KXMLCore::VectorTypeOperations::move): 13783 (KXMLCore::VectorTypeOperations::uninitializedCopy): 13784 (KXMLCore::VectorTypeOperations::uninitializedFill): 13785 (KXMLCore::VectorBuffer::VectorBuffer): 13786 (KXMLCore::VectorBuffer::~VectorBuffer): 13787 (KXMLCore::VectorBuffer::deallocateBuffer): 13788 (KXMLCore::VectorBuffer::inlineBuffer): 13789 (KXMLCore::Vector::Vector): 13790 (KXMLCore::Vector::~Vector): 13791 (KXMLCore::Vector::size): 13792 (KXMLCore::Vector::capacity): 13793 (KXMLCore::Vector::isEmpty): 13794 (KXMLCore::Vector::at): 13795 (KXMLCore::Vector::operator[]): 13796 (KXMLCore::Vector::data): 13797 (KXMLCore::Vector::operator T*): 13798 (KXMLCore::Vector::operator const T*): 13799 (KXMLCore::Vector::begin): 13800 (KXMLCore::Vector::end): 13801 (KXMLCore::Vector::clear): 13802 (KXMLCore::Vector::fill): 13803 (KXMLCore::Vector::operator=): 13804 (KXMLCore::::Vector): 13805 (KXMLCore::::operator): 13806 (KXMLCore::::fill): 13807 (KXMLCore::::expandCapacity): 13808 (KXMLCore::::resize): 13809 (KXMLCore::::reserveCapacity): 13810 (KXMLCore::::append): 13811 (KXMLCore::deleteAllValues): 13812 * kxmlcore/VectorTraits.h: Added. 13813 (KXMLCore::VectorTraits): Traits to enable making Vector efficient for 13814 simple types. 13815 138162006-01-28 Alexey Proskuryakov <ap@nypop.com> 13817 13818 Reviewed by Darin. 13819 13820 - fix http://bugs.webkit.org/show_bug.cgi?id=5163 13821 RealPlayer.GetTitle() Crashes Safari/Dashboard 13822 13823 * bindings/c/c_utility.cpp: (KJS::Bindings::convertUTF8ToUTF16): 13824 Fallback to kCFStringEncodingWindowsLatin1 if the passed buffer is not valid UTF-8, preventing crashes. 13825 138262006-01-25 George Staikos <staikos@opensource.apple.com> 13827 13828 Reviewed by Darin. 13829 13830 * kxmlcore/HashFunctions.h: Merge build fix from KDE. 13831 138322006-01-25 Darin Adler <darin@apple.com> 13833 13834 - removed an unused source file 13835 13836 * kjs/pointer_hash.h: Removed. 13837 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: Removed reference to pointer_hash.h. 13838 138392006-01-23 Anders Carlsson <andersca@mac.com> 13840 13841 Reviewed by Maciej. 13842 13843 - fix http://bugs.webkit.org/show_bug.cgi?id=6737 13844 KJS_DEFINE_PROTOTYPE should work outside of the KJS namespace 13845 13846 * kjs/lookup.h: 13847 Prefix all KJS types with KJS:: in KJS_DEFINE_PROTOTYPE. 13848 13849 (cacheGlobalObject): 13850 Move this out of the KJS namespace. 13851 138522006-01-23 Maciej Stachowiak <mjs@apple.com> 13853 13854 Reviewed by Eric. 13855 13856 - renamed PointerHash to PtrHash 13857 - made PtrHash the default hash function for int and pointer types that aren't further specialized 13858 - added an AtomicStringImpl class to make it easier and more typesafe to identity hash atomic strings 13859 - did appropriate consequent cleanup (very few places now need to declare a hash function) 13860 http://bugs.webkit.org/show_bug.cgi?id=6752 13861 13862 * kjs/array_object.cpp: 13863 (ArrayProtoFunc::callAsFunction): no need to mention PointerHash 13864 * kjs/collector.cpp: ditto 13865 * kjs/identifier.cpp: 13866 (KXMLCore::): declare DefaultHash the new way 13867 * kjs/internal.cpp: no need to mention PointerHash 13868 * kjs/ustring.h: 13869 * kxmlcore/HashCountedSet.h: change how we get the default hash to make it 13870 easier to specialize on PtrHash 13871 * kxmlcore/HashFunctions.h: 13872 (KXMLCore::): renamed PointerHash to PtrHash; changed DefaultHash so that it has 13873 a Hash typedef rather than being a hash function class itself; declared DefaultHash 13874 for int and partializy specialized for pointer types 13875 * kxmlcore/HashMapPtrSpec.h: 13876 (KXMLCore::PtrHashIteratorAdapter::PtrHashIteratorAdapter): Slight tweaks for new 13877 way of handling pointer hash 13878 (KXMLCore::PtrHashConstIteratorAdapter::PtrHashConstIteratorAdapter): ditto 13879 (KXMLCore::): ditto 13880 * kxmlcore/HashMap.h: ditto 13881 * kxmlcore/HashSet.h: ditto 13882 138832006-01-23 Maciej Stachowiak <mjs@apple.com> 13884 13885 Reviewed by Tim Omernick. 13886 13887 - use classes instead of free functions for extractors, this better matches how other 13888 things work and should avoid the need for hacky workarounds on other compilers 13889 http://bugs.webkit.org/show_bug.cgi?id=6748 13890 13891 * kjs/array_object.cpp: 13892 * kjs/identifier.cpp: 13893 * kjs/internal.cpp: 13894 * kxmlcore/HashMap.h: 13895 (KXMLCore::PairFirstExtractor::extract): 13896 * kxmlcore/HashMapPtrSpec.h: 13897 (KXMLCore::): 13898 * kxmlcore/HashSet.h: 13899 (KXMLCore::IdentityExtractor::extract): 13900 * kxmlcore/HashTable.h: 13901 (KXMLCore::addIterator): 13902 (KXMLCore::removeIterator): 13903 (KXMLCore::HashTable::add): 13904 (KXMLCore::HashTable::isEmptyBucket): 13905 (KXMLCore::HashTable::isDeletedBucket): 13906 (KXMLCore::HashTable::HashTable): 13907 (KXMLCore::HashTable::lookup): 13908 (KXMLCore::HashTable::add): 13909 (KXMLCore::HashTable::reinsert): 13910 (KXMLCore::HashTable::find): 13911 (KXMLCore::HashTable::contains): 13912 (KXMLCore::HashTable::remove): 13913 (KXMLCore::HashTable::allocateTable): 13914 (KXMLCore::HashTable::deallocateTable): 13915 (KXMLCore::HashTable::expand): 13916 (KXMLCore::HashTable::rehash): 13917 (KXMLCore::HashTable::clear): 13918 (KXMLCore::HashTable::swap): 13919 (KXMLCore::HashTable::operator): 13920 (KXMLCore::HashTable::checkTableConsistency): 13921 (KXMLCore::HashTable::checkTableConsistencyExceptSize): 13922 (KXMLCore::HashTable::invalidateIterators): 13923 139242006-01-23 Maciej Stachowiak <mjs@apple.com> 13925 13926 Rubber stamped by Tim Hatcher. 13927 13928 - renamed inert() operation on HashSet, HashCountedSet and HashTable to add() 13929 for consistency with HashMap 13930 13931 * kjs/array_object.cpp: 13932 (ArrayProtoFunc::callAsFunction): 13933 * kjs/collector.cpp: 13934 (KJS::Collector::protect): 13935 * kjs/identifier.cpp: 13936 (KJS::Identifier::add): 13937 * kxmlcore/HashCountedSet.h: 13938 (KXMLCore::::add): 13939 * kxmlcore/HashMap.h: 13940 (KXMLCore::::inlineAdd): 13941 * kxmlcore/HashSet.h: 13942 (KXMLCore::::add): 13943 * kxmlcore/HashTable.h: 13944 (KXMLCore::HashTable::add): 13945 (KXMLCore::::add): 13946 (KXMLCore::::HashTable): 13947 139482006-01-23 Justin Garcia <justin.garcia@apple.com> 13949 13950 Reviewed by thatcher 13951 13952 Turned on -O2 for B&I build. 13953 13954 * JavaScriptCore.xcodeproj/project.pbxproj: 13955 139562006-01-23 Maciej Stachowiak <mjs@apple.com> 13957 13958 Reviewed by Tim Hatcher. 13959 13960 - it's "Franklin Street", not "Franklin Steet" 13961 13962 * kjs/array_instance.h: 13963 * kjs/array_object.cpp: 13964 * kjs/array_object.h: 13965 * kjs/bool_object.cpp: 13966 * kjs/bool_object.h: 13967 * kjs/collector.cpp: 13968 * kjs/collector.h: 13969 * kjs/completion.h: 13970 * kjs/context.h: 13971 * kjs/date_object.cpp: 13972 * kjs/date_object.h: 13973 * kjs/debugger.cpp: 13974 * kjs/debugger.h: 13975 * kjs/dtoa.h: 13976 * kjs/error_object.cpp: 13977 * kjs/error_object.h: 13978 * kjs/function.cpp: 13979 * kjs/function.h: 13980 * kjs/function_object.cpp: 13981 * kjs/function_object.h: 13982 * kjs/grammar.y: 13983 * kjs/identifier.cpp: 13984 * kjs/identifier.h: 13985 * kjs/internal.cpp: 13986 * kjs/internal.h: 13987 * kjs/interpreter.cpp: 13988 * kjs/interpreter.h: 13989 * kjs/lexer.cpp: 13990 * kjs/lexer.h: 13991 * kjs/list.cpp: 13992 * kjs/list.h: 13993 * kjs/lookup.cpp: 13994 * kjs/lookup.h: 13995 * kjs/math_object.cpp: 13996 * kjs/math_object.h: 13997 * kjs/nodes.cpp: 13998 * kjs/nodes.h: 13999 * kjs/nodes2string.cpp: 14000 * kjs/number_object.cpp: 14001 * kjs/number_object.h: 14002 * kjs/object.cpp: 14003 * kjs/object.h: 14004 * kjs/object_object.cpp: 14005 * kjs/object_object.h: 14006 * kjs/operations.cpp: 14007 * kjs/operations.h: 14008 * kjs/property_map.cpp: 14009 * kjs/property_map.h: 14010 * kjs/property_slot.cpp: 14011 * kjs/property_slot.h: 14012 * kjs/reference.cpp: 14013 * kjs/reference.h: 14014 * kjs/reference_list.cpp: 14015 * kjs/reference_list.h: 14016 * kjs/regexp.cpp: 14017 * kjs/regexp.h: 14018 * kjs/regexp_object.cpp: 14019 * kjs/regexp_object.h: 14020 * kjs/scope_chain.cpp: 14021 * kjs/scope_chain.h: 14022 * kjs/simple_number.h: 14023 * kjs/string_object.cpp: 14024 * kjs/string_object.h: 14025 * kjs/testkjs.cpp: 14026 * kjs/types.h: 14027 * kjs/ustring.cpp: 14028 * kjs/ustring.h: 14029 * kjs/value.cpp: 14030 * kjs/value.h: 14031 * kxmlcore/AlwaysInline.h: 14032 * kxmlcore/ListRefPtr.h: 14033 * kxmlcore/PassRefPtr.h: 14034 * kxmlcore/RefPtr.h: 14035 140362006-01-23 Darin Adler <darin@apple.com> 14037 14038 Reviewed by John Sullivan. 14039 14040 - change needed for fix to http://bugs.webkit.org/show_bug.cgi?id=6617 14041 REGRESSION: Crash in cloneChildNodes when clicking element 14042 14043 * kxmlcore/PassRefPtr.h: Fix assignment operator from RefPtr of a different 14044 type by calling get() instead of going directly at m_ptr. 14045 * kxmlcore/RefPtr.h: Ditto. 14046 14047 - other changes 14048 14049 * JavaScriptCore.xcodeproj/project.pbxproj: Xcode decided to change this file. 14050 It's just a resorted list of keys in a dictionary. 14051 14052 * kjs/fpconst.cpp: Wrap this file in #if __APPLE__ since the alternate version 14053 in internal.cpp is in #if !__APPLE__. This file is to give us the "no init 14054 routine" property we want to have on OS X. 14055 140562006-01-22 Maciej Stachowiak <mjs@apple.com> 14057 14058 Reviewed by Darin. 14059 14060 - Set up Page class and invert Frame / WebCoreFrameBridge ownership 14061 http://bugs.webkit.org/show_bug.cgi?id=6577 14062 14063 * kjs/interpreter.h: make globalExec virtual so ScriptInterpreter can 14064 override it 14065 140662006-01-23 George Staikos <staikos@opensource.apple.com> 14067 14068 Reviewed by Maciej and Darin. 14069 14070 * kxmlcore/Assertions.h: This file only works with __APPLE__ right now 14071 * kjs/interpreter.cpp: ditto 14072 * kjs/simple_number.h: Add assert.h and remove from config.h 14073 * kjs/array_object.cpp: Use relative paths for kxmlcore includes 14074 * kjs/testkjs.cpp: Use relative paths for kxmlcore includes 14075 140762006-01-23 George Staikos <staikos@opensource.apple.com> 14077 14078 Reviewed by Maciej. 14079 14080 * kjs/config.h: unbreak preprocessor change 14081 140822006-01-23 George Staikos <staikos@opensource.apple.com> 14083 14084 Approved by Maciej and Darin. 14085 14086 * kjs/: 14087 * kxmlcore/: 14088 Update FSF address in license to make merging easier 14089 140902006-01-22 George Staikos <staikos@opensource.apple.com> 14091 14092 Reviewed by Maciej. 14093 14094 * kjs/collector.cpp: merge major speedup from KDE on Linux 14095 patch by Maks Orlovich, bug #6145 14096 Also unify cpu detection 14097 * kjs/config.h: define simpler CPU macros 14098 140992006-01-22 George Staikos <staikos@opensource.apple.com> 14100 14101 Reviewed by Maciej. 14102 14103 * kjs/collector.cpp: merge FreeBSD compile fix from KDE 14104 -> requires build magic for use 14105 141062006-01-21 George Staikos <staikos@opensource.apple.com> 14107 14108 Reviewed by Maciej. 14109 14110 * kjs/nodes2string.cpp 14111 * kjs/operations.h 14112 * kjs/debugger.h 14113 Fix pedantic compile with some gcc versions (Merge from KDE) 14114 14115 * kjs/create_hash_table: 14116 Fix build with Perl 5.8.0 (Merge from KDE) 14117 141182006-01-18 Darin Adler <darin@apple.com> 14119 14120 Reviewed by Hyatt. 14121 14122 - hash table fixes needed for my WebCore changes 14123 14124 * kxmlcore/HashTable.h: (KXMLCore::HashTableConstIterator::operator=): 14125 Added a missing return statement. 14126 14127 * kxmlcore/HashTraits.h: Fix traits so they work properly for classes where you 14128 can't instantiate with a 0 by using traits rather than ? : to select the default 14129 emtpy value of hash table keys. 14130 14131 - small cleanup of "runtime" code left over from recent JavaScript crash fix 14132 14133 * bindings/runtime_root.h: 14134 (KJS::Bindings::RootObject::RootObject): No explicit initialization of _imp needed 14135 since it's now a ProtectedPtr. 14136 (KJS::Bindings::RootObject::setRootObjectImp): Remove old code that relied on the 14137 fact that _imp was 0 and replaced with use of ProtectedPtr. 14138 (KJS::Bindings::RootObject::rootObjectImp): Updated since _imp is a ProtectedPtr. 14139 141402006-01-17 Darin Adler <darin@apple.com> 14141 14142 Reviewed by Anders. 14143 14144 - http://bugs.webkit.org/show_bug.cgi?id=6611 14145 add assertions to check correct use of hash table iterators 14146 14147 * kxmlcore/HashTable.h: 14148 (KXMLCore::addIterator): Added. Helper function that adds an iterator to the list 14149 maintained by the specified hash table. 14150 (KXMLCore::removeIterator): Added. Helper function that removes an iterator from 14151 the list maintained by the hash table it's in. 14152 (KXMLCore::HashTableConstIterator::HashTableConstIterator): Added a HashTable 14153 parameter, ignored when not debugging. Call addIterator. 14154 (KXMLCore::HashTableConstIterator::~HashTableConstIterator): 14155 (KXMLCore::HashTableConstIterator::operator=): Call removeIterator. 14156 (KXMLCore::HashTableConstIterator::operator*): Call checkValidity. 14157 (KXMLCore::HashTableConstIterator::operator->): Ditto. 14158 (KXMLCore::HashTableConstIterator::operator++): Ditto. 14159 (KXMLCore::HashTableConstIterator::operator==): Ditto. 14160 (KXMLCore::HashTableConstIterator::operator!=): Ditto. 14161 (KXMLCore::HashTableConstIterator::checkValidity): Checks that the hash table 14162 pointer is not 0 and if there are two iterators that both point at the same table. 14163 (KXMLCore::HashTableIterator::HashTableIterator): Changed to use the const iterator 14164 as an implementation detail, to avoid having two separate iterator implementations. 14165 (KXMLCore::HashTableIterator::operator*): Ditto. 14166 (KXMLCore::HashTableIterator::operator->): Ditto. 14167 (KXMLCore::HashTableIterator::operator++): Ditto. 14168 (KXMLCore::HashTableIterator::operator==): Ditto. 14169 (KXMLCore::HashTableIterator::operator!=): Ditto. 14170 (KXMLCore::HashTable::HashTable): Initialize pointer to head of iterators list. 14171 (KXMLCore::HashTable::~HashTable): Added call to invalidateIterators. 14172 (KXMLCore::HashTable::makeIterator): Pass this pointer. 14173 (KXMLCore::HashTable::makeConstIterator): Ditto. 14174 (KXMLCore::HashTable::insert): Call invalidateIterators, since this is a public 14175 entry point that modifies the hash table. 14176 (KXMLCore::HashTable::remove): Ditto. 14177 (KXMLCore::HashTable::clear): Ditto. 14178 (KXMLCore::HashTable::swap): Ditto. 14179 (KXMLCore::HashTable::invalidateIterators): Added. Walks the iterators list and 14180 clears out the table, next, and previous pointers in all of them, and then clears 14181 the head so we have an empty list. 14182 (KXMLCore::addIterator): Added. Adds the iterator the the linked list in the 14183 passed-in table, and points the iterator at the table. 14184 (KXMLCore::removeIterator): Added. Removes the iterator from the linked list in 14185 the passed-in table. 14186 14187 * kxmlcore/HashTraits.h: A bit of tweaking and formatting. 14188 141892006-01-17 Justin Garcia <justin.garcia@apple.com> 14190 14191 Reviewed by eric 14192 14193 Deployment builds now use -O2 14194 14195 * JavaScriptCore.xcodeproj/project.pbxproj: 14196 141972006-01-17 Darin Adler <darin@apple.com> 14198 14199 Reviewed by Anders. 14200 14201 - fix http://bugs.webkit.org/show_bug.cgi?id=6610 14202 change RefPtr so that it works when deref ends up deleting the RefPtr 14203 14204 * kxmlcore/PassRefPtr.h: Always set m_ptr before calling deref. 14205 * kxmlcore/RefPtr.h: Ditto. 14206 142072006-01-16 Geoffrey Garen <ggaren@apple.com> 14208 14209 Reviewed by darin. 14210 14211 - Fixed http://bugs.webkit.org/show_bug.cgi?id=6322 14212 DateProtoFuncImp::callAsFunction can crash due to lack of type checking 14213 14214 * kjs/date_object.cpp: 14215 (KJS::DateProtoFunc::callAsFunction): Type check calls to all methods. 14216 This matches section 15.9.5 in the spec. 14217 142182006-01-16 Tim Omernick <timo@apple.com> 14219 14220 Reviewed by John Sullivan. 14221 14222 JavaScriptCore part of <rdar://problem/4211707> NPAPI ref count behavior differs with Mozilla 14223 14224 * bindings/npruntime.cpp: 14225 (_NPN_ReleaseObject): 14226 Refactored part of this function out into _NPN_DeallocateObject. 14227 (_NPN_DeallocateObject): 14228 Forcibly deallocates the passed object, even if its refcount is 14229 greater than zero. 14230 14231 * bindings/npruntime_impl.h: 14232 Declared _NPN_DeallocateObject(). 14233 142342006-01-16 Darin Adler <darin@apple.com> 14235 14236 Reviewed by Maciej. 14237 14238 - fix problem with ++, ==, and != on const iterators in 14239 HashMaps that are using the pointer specialization 14240 14241 * kxmlcore/HashMapPtrSpec.h: 14242 (KXMLCore::PointerHashConstIteratorAdapter::operator++): Change type to const_iterator. 14243 (KXMLCore::PointerHashConstIteratorAdapter::operator==): Ditto. 14244 (KXMLCore::PointerHashConstIteratorAdapter::operator!=): Ditto. 14245 142462006-01-15 Alexey Proskuryakov <ap@nypop.com> 14247 14248 Reviewed by Anders. 14249 14250 - fix http://bugs.webkit.org/show_bug.cgi?id=6561 14251 run-javascriptcore-tests doesn't work 14252 14253 * JavaScriptCore/tests/mozilla/Getopt/Mixed.pm: 14254 Changed revision number to 1.8 (broken by svn migration). 14255 142562006-01-14 David Kilzer <ddkilzer@kilzer.net> 14257 14258 Reviewed and landed by Anders. 14259 14260 * kjs/create_hash_table: Fixed comment typo. 14261 142622006-01-13 Maks Orlovich <maksim@kde.org> 14263 14264 Mostly merging work by Peter Kelly. Reviewed by Maciej, landed by ap. 14265 14266 - fix http://bugs.webkit.org/show_bug.cgi?id=6261 14267 Misc. array object fixes from KJS 14268 14269 * kjs/array_object.cpp: Don't treat 2^32-1 as a real array index property. 14270 (ArrayInstance::getOwnPropertySlot): Ditto. 14271 (ArrayInstance::deleteProperty): Ditto. 14272 (ArrayInstance::put): Ditto. 14273 (ArrayInstance::propList): Added a FIXME comment. 14274 (ArrayInstance::put): Throw exception on trying to set invalid array length. 14275 (ArrayProtoFunc::callAsFunction): Do not use a separator argument when doing toString/toLocalString. 14276 * kjs/array_object.h: Added MAX_ARRAY_INDEX. 14277 142782006-01-13 Darin Adler <darin@apple.com> 14279 14280 - Replaced tabs with spaces in source files that had less than 10 lines with tabs. 14281 - Set allow-tabs Subversion property in source files that have more than 10 lines with tabs. 14282 142832006-01-13 Anders Carlsson <andersca@mac.com> 14284 14285 Reviewed by Eric. 14286 14287 * kjs/create_hash_table: 14288 Use correct size variables. 14289 142902006-01-13 Anders Carlsson <andersca@mac.com> 14291 14292 Reviewed by Darin. 14293 14294 * kjs/create_hash_table: 14295 Don't create an empty entry array, instead add a entry with all fields 14296 set to null and set the hash table size to 1. 14297 14298 * kjs/lookup.cpp: 14299 (findEntry): 14300 Remove the hash table size check 14301 143022006-01-12 Anders Carlsson <andersca@mac.com> 14303 14304 Reviewed by Maciej. 14305 14306 - fix http://bugs.webkit.org/show_bug.cgi?id=6494 14307 Crash when assigning a new function to a DOMParser object 14308 14309 * JavaScriptCore.xcodeproj/project.pbxproj: 14310 Move lookup.cpp before lookup.h 14311 14312 * kjs/lookup.cpp: 14313 (findEntry): 14314 If the hash table is empty, return 0 early. 14315 143162006-01-12 George Staikos <staikos@kde.org> 14317 14318 Reviewed by Darin. 14319 14320 * kjs/interpreter.cpp: 14321 * kjs/testkjs.cpp: 14322 * kjs/interpreter.h: 14323 Add helper to interpreter to call the collector in order to facilitate 14324 visibility rules in KDE. 14325 143262006-01-12 George Staikos <staikos@kde.org> 14327 14328 Reviewed by Maciej. 14329 14330 * kjs/kjs.pro: Updates to build the whole thing on Linux at least. 14331 14332 * kxmlcore/HashTable.h: Add missing assert.h 14333 143342006-01-12 Darin Adler <darin@apple.com> 14335 14336 Reviewed by Geoff. 14337 14338 - fix http://bugs.webkit.org/show_bug.cgi?id=6505 14339 retire APPLE_CHANGES from JavaScriptCore 14340 14341 * JavaScriptCore.xcodeproj/project.pbxproj: Removed both 14342 APPLE_CHANGES and HAVE_CONFIG_H from all targets. 14343 14344 * README: Removed. This had obsolete information in it 14345 and it wasn't clear what to replace it with. 14346 14347 * kjs/collector.h: Removed an APPLE_CHANGES if around something 14348 that's not really platform-specific (although it does use a 14349 platform-specific API at the moment). 14350 * kjs/collector.cpp: Removed a mistaken comment. 14351 14352 * kjs/grammar.y: 14353 * kjs/internal.cpp: 14354 * kjs/object.h: 14355 * kjs/operations.cpp: 14356 * kjs/operations.h: 14357 * kjs/ustring.h: 14358 Use __APPLE__ instead of APPLE_CHANGES for code that should be 14359 used only on Mac OS X. 14360 14361 * kjs/interpreter.cpp: Removed APPLE_CHANGES ifdef around the include 14362 of the runtime.h header. Even though that header isn't needed at the 14363 moment on platforms other than Mac OS X, the conditional stuff should 14364 be in the header itself, not in this one client. 14365 14366 * kjs/math_object.cpp: (MathFuncImp::callAsFunction): Removed some 14367 code inside APPLE_CHANGES. I'm pretty sure this code isn't needed on 14368 any platform where pow is implemented corrrectly according to the IEEE 14369 standard. If it is needed on some, we can add it back with an appropriate 14370 #if for the platforms where it is needed. 14371 143722006-01-12 Justin Haygood <justin@xiondigital.net> 14373 14374 Reviewed, tweaked, and landed by Darin. 14375 14376 - fix http://bugs.webkit.org/show_bug.cgi?id=6416 14377 lexer.cpp, grammar.y protect include of config.h with "HAVE_CONFIG_H" 14378 14379 * kjs/dtoa.cpp: Removed HAVE_CONFIG_H, changed config.h to use 14380 quotes instead of angle brackets. Moved dtoa.h include to the top. 14381 Changed system header includes to use angle brackets instead of quotes. 14382 * kjs/grammar.y: Removed HAVE_CONFIG_H, changed config.h to use 14383 quotes instead of angle brackets. 14384 * kjs/lexer.cpp: Removed HAVE_CONFIG_H, changed config.h to use 14385 quotes instead of angle brackets. Moved lexer.h include to the top. 14386 * kjs/ustring.cpp: Removed HAVE_CONFIG_H, changed config.h to use 14387 quotes instead of angle brackets. Moved ustring.h include to the top. 14388 143892006-01-12 George Staikos <staikos@kde.org> 14390 14391 Reviewed by Maciej 14392 14393 - Import initial QMake file. Doesn't fully work yet. 14394 143952006-01-11 Ricci Adams <ricciadams@apple.com> 14396 14397 Reviewed by Maciej and Darin, landed by Darin. 14398 14399 - fix http://bugs.webkit.org/show_bug.cgi?id=5939 14400 final comma in javascript object prevents parsing 14401 14402 * kjs/grammar.y: Added rule to allow trailing comma in 14403 object construction. 14404 144052006-01-11 Ricci Adams <ricciadams@apple.com> 14406 14407 Reviewed by Geoff, landed by Darin. 14408 14409 - fix http://bugs.webkit.org/show_bug.cgi?id=5308 14410 Number.toFixed doesn't include leading 0 14411 14412 * kjs/number_object.cpp: (NumberProtoFunc::callAsFunction): 14413 Fixed a "<" that should have been a "<=". 14414 144152006-01-11 Ricci Adams <ricciadams@apple.com> 14416 14417 Reviewed by Geoff, landed by Darin. 14418 14419 - fix http://bugs.webkit.org/show_bug.cgi?id=5307 14420 Number.toFixed doesn't round 0.5 up 14421 14422 * kjs/number_object.cpp: (NumberProtoFunc::callAsFunction): 14423 Fixed a ">" that should have been a ">=". 14424 144252006-01-11 Justin Haygood <justin@xiondigital.net> 14426 14427 Reviewed and landed by Darin. 14428 14429 - fix http://bugs.webkit.org/show_bug.cgi?id=6486 14430 JavaScriptCore should use system malloc on Windows 14431 14432 * kjs/config.h: Add USE_SYSTEM_MALLOC to the Win32 section. 14433 144342006-01-10 Darin Adler <darin@apple.com> 14435 14436 * Makefile: Took out unneeded "export" line. 14437 * <many-files>: Changed a lot of flags (cleared bogus executable bits, set 14438 MIME types, other small corrections). 14439 144402006-01-09 Darin Adler <darin@apple.com> 14441 14442 * Makefile.am: Removed. 14443 144442006-01-07 Anders Carlsson <andersca@mac.com> 14445 14446 Reviewed by Maciej. 14447 14448 - fix http://bugs.webkit.org/show_bug.cgi?id=6373 14449 REGRESSION: JavaScript hang when comparing large array to null 14450 14451 * kjs/object.h: 14452 (KJS::JSObject::isEqualToNull): 14453 Add new function which returns true if an object should be treated as null when 14454 doing comparisons. 14455 14456 * kjs/operations.cpp: 14457 (KJS::equal): 14458 Use isEqualToNull. 14459 144602006-01-07 Alexey Proskuryakov <ap@nypop.com> 14461 14462 Reviewed by Maciej. 14463 14464 - Fix WebCore development build 14465 http://bugs.webkit.org/show_bug.cgi?id=6408 14466 14467 * kxmlcore/Assertions.h: Use __VA_ARGS__ in variadic macros. 14468 144692006-01-06 Maciej Stachowiak <mjs@apple.com> 14470 14471 Reviewed by Darin. 14472 14473 - miscellaneous changes for 4% speedup on the JavaScript iBench 14474 http://bugs.webkit.org/show_bug.cgi?id=6396 14475 14476 Changes mostly thanks to Maks Orlovich, tweaked a little by me. 14477 14478 * kjs/create_hash_table: Use the same hash as the one used by Identifier. 14479 * kjs/function.cpp: 14480 (KJS::FunctionImp::processParameters): Use the new List::copyFrom 14481 (KJS::ActivationImp::ActivationImp): track variable while iterating 14482 * kjs/internal.cpp: 14483 (KJS::StringImp::toObject): create StringInstance directly 14484 * kjs/list.cpp: 14485 (KJS::List::copy): implement in terms of copyFrom 14486 (KJS::List::copyFrom): more efficient way to copy in another list 14487 * kjs/list.h: 14488 * kjs/lookup.cpp: 14489 (keysMatch): updated to work with identifier hash 14490 (findEntry): ditto 14491 (Lookup::findEntry): ditto 14492 (Lookup::find): ditto 14493 * kjs/lookup.h: 14494 144952006-01-06 Maciej Stachowiak <mjs@apple.com> 14496 14497 - fix development build failure from the previous checkin 14498 14499 * kjs/function.cpp: 14500 (KJS::ActivationImp::put): Use prototype() accessor in assert. 14501 145022006-01-05 Maciej Stachowiak <mjs@apple.com> 14503 14504 Reviewed by Eric. 14505 14506 - fix remaining performance regression from Getter/Setter change 14507 http://bugs.webkit.org/show_bug.cgi?id=6249 14508 14509 - Activation objects should not have __proto__ property 14510 http://bugs.webkit.org/show_bug.cgi?id=6395 14511 14512 * kjs/function.cpp: 14513 (KJS::ActivationImp::getOwnPropertySlot): Implement directly, thus 14514 skipping getter/setter handling and __proto__ handling, as well 14515 as inlining needed superclass stuff. 14516 (KJS::ActivationImp::put): Implement directly, skipping getter/setter, 14517 __proto__, and do canPut directly in PropertyMap::put since there's no 14518 static property table either. 14519 * kjs/function.h: 14520 * kjs/property_map.cpp: 14521 (KJS::PropertyMap::put): Allow optionally inlining canPut check. 14522 * kjs/property_map.h: 14523 145242006-01-04 Geoffrey Garen <ggaren@apple.com> 14525 14526 Patch by kimmo.t.kinnunen@nokia.com, reviewed by darin, tweaked by me. 14527 14528 - Fixed http://bugs.webkit.org/show_bug.cgi?id=4921 14529 \u escape sequences in JavaScript identifiers 14530 14531 * kjs/function_object.cpp: 14532 (FunctionObjectImp::construct): 14533 * kjs/lexer.cpp: 14534 (Lexer::shift): 14535 (Lexer::lex): 14536 (Lexer::isWhiteSpace): 14537 (Lexer::isLineTerminator): 14538 (Lexer::isIdentStart): 14539 (Lexer::isIdentPart): 14540 (isDecimalDigit): 14541 (Lexer::scanRegExp): 14542 * kjs/lexer.h: 14543 (KJS::Lexer::): 14544 14545 * tests/mozilla/expected.html: Updated test results. 14546 145472005-12-30 Maciej Stachowiak <mjs@apple.com> 14548 14549 No review, just test result update. 14550 14551 * tests/mozilla/expected.html: Updated for newly passing test from recent fixes. 14552 145532005-12-30 Anders Carlsson <andersca@mac.com> 14554 14555 Reviewed by Maciej. 14556 14557 - Fix http://bugs.webkit.org/show_bug.cgi?id=6298 14558 Getter setter test is failing 14559 14560 * kjs/object.cpp: 14561 (KJS::JSObject::put): 14562 Rework the getter setter part. We now walk the prototype chain, checking for 14563 getter/setter properties and only take the slow path if any are found. 14564 145652005-12-30 Maks Orlovich <maksim@kde.org> 14566 14567 Reviewed and committed by Maciej. 14568 14569 - Handle negative, FP numbers with non-10 radix in toString 14570 http://bugs.webkit.org/show_bug.cgi?id=6259 14571 14572 (Merged from KJS, original work by Harri Porten) 14573 14574 * kjs/number_object.cpp: 14575 (NumberProtoFunc::callAsFunction): rewrote Number.toString(radix) to work with 14576 negative numbers, floating point and very large numbers. 14577 145782005-12-29 Geoffrey Garen <ggaren@apple.com> 14579 14580 Patch by Maks Orlovich, reviewed and landed by me. 14581 14582 - http://bugs.webkit.org/show_bug.cgi?id=6267 14583 Fix Number.prototype.toFixed/toExponential(undefined) 14584 14585 * kjs/number_object.cpp: 14586 (NumberProtoFunc::callAsFunction): 14587 145882005-12-29 Geoffrey Garen <ggaren@apple.com> 14589 14590 Patch by Maks Orlovich, Reviewed and landed by me. 14591 14592 - http://bugs.webkit.org/show_bug.cgi?id=6266 14593 Minor object naming updates (to match Mozilla, KJS) 14594 14595 * kjs/number_object.cpp: 14596 * kjs/regexp_object.cpp: 14597 145982005-12-29 Geoffrey Garen <ggaren@apple.com> 14599 14600 Patch by Maks Orlovich, reviewed by mjs. 14601 14602 This has 2 very minor fixes, covered by KJS testsuite: 14603 1. Enumerates string indices in property list (with the same bug as array 14604 object has in corresponding code). This is a mozilla emulation thing. 14605 2. Permits properties with integer names in prototypes to be found 14606 14607 * kjs/string_object.cpp: 14608 (StringInstance::getOwnPropertySlot): 14609 (StringInstanceImp::propList): 14610 * kjs/string_object.h: 14611 146122005-12-26 Geoffrey Garen <ggaren@apple.com> 14613 14614 Reviewed by mjs. 14615 14616 - Fixed <rdar://problem/4364705> run-javascriptcore-tests crashes in 14617 KJS::BlockNode::deref 14618 AKA 14619 http://bugs.webkit.org/show_bug.cgi?id=6233 14620 Reproducible stack-overflow crash in ~RefPtr<T> due to RefPtr<T> use in 14621 linked lists 14622 14623 This patch does four things: 14624 (1) Standardizes all our linked list nodes to use "next" as their next 14625 pointers. 14626 (2) Creates the ListRefPtr<T> class, a subclass of RefPtr<T> specialized 14627 to iteratively deref "next" pointers. 14628 (3) Standardizes our linked list nodes to use ListRefPtr<T> and 14629 implement the releaseNext() function used by ~ListRefPtr<T>(). 14630 (4) Adds to RefPtr<T> the release() method used by releaseNext(). 14631 14632 - Modified existing mozilla test to ensure it would make deployment 14633 builds crash as well. 14634 14635 * JavaScriptCore.xcodeproj/project.pbxproj: 14636 * kjs/nodes.cpp: 14637 (ElementNode::evaluate): 14638 (PropertyListNode::evaluate): 14639 (ArgumentListNode::evaluateList): 14640 (StatListNode::StatListNode): 14641 (StatListNode::execute): 14642 (StatListNode::processVarDecls): 14643 (VarDeclListNode::evaluate): 14644 (VarDeclListNode::processVarDecls): 14645 (VarStatementNode::execute): 14646 (VarStatementNode::processVarDecls): 14647 (BlockNode::BlockNode): 14648 (CaseClauseNode::evalStatements): 14649 (CaseClauseNode::processVarDecls): 14650 (ClauseListNode::processVarDecls): 14651 (CaseBlockNode::CaseBlockNode): 14652 (CaseBlockNode::evalBlock): 14653 (SourceElementsNode::SourceElementsNode): 14654 (SourceElementsNode::execute): 14655 (SourceElementsNode::processFuncDecl): 14656 (SourceElementsNode::processVarDecls): 14657 * kjs/nodes.h: 14658 (KJS::ElementNode::ElementNode): 14659 (KJS::ElementNode::releaseNext): 14660 (KJS::ArrayNode::ArrayNode): 14661 (KJS::PropertyListNode::PropertyListNode): 14662 (KJS::PropertyListNode::releaseNext): 14663 (KJS::ObjectLiteralNode::ObjectLiteralNode): 14664 (KJS::ArgumentListNode::ArgumentListNode): 14665 (KJS::ArgumentListNode::releaseNext): 14666 (KJS::ArgumentsNode::ArgumentsNode): 14667 (KJS::StatListNode::releaseNext): 14668 (KJS::VarDeclListNode::VarDeclListNode): 14669 (KJS::VarDeclListNode::releaseNext): 14670 (KJS::VarStatementNode::VarStatementNode): 14671 (KJS::ForNode::ForNode): 14672 (KJS::CaseClauseNode::CaseClauseNode): 14673 (KJS::ClauseListNode::ClauseListNode): 14674 (KJS::ClauseListNode::getClause): 14675 (KJS::ClauseListNode::getNext): 14676 (KJS::ClauseListNode::releaseNext): 14677 (KJS::ParameterNode::ParameterNode): 14678 (KJS::ParameterNode::releaseNext): 14679 (KJS::SourceElementsNode::releaseNext): 14680 * kjs/nodes2string.cpp: 14681 (ElementNode::streamTo): 14682 (PropertyListNode::streamTo): 14683 (ArgumentListNode::streamTo): 14684 (StatListNode::streamTo): 14685 (VarDeclListNode::streamTo): 14686 (VarStatementNode::streamTo): 14687 (CaseClauseNode::streamTo): 14688 (ClauseListNode::streamTo): 14689 (CaseBlockNode::streamTo): 14690 (SourceElementsNode::streamTo): 14691 * kxmlcore/ListRefPtr.h: Added. 14692 (KXMLCore::ListRefPtr::ListRefPtr): 14693 (KXMLCore::ListRefPtr::~ListRefPtr): 14694 (KXMLCore::ListRefPtr::operator=): 14695 * kxmlcore/RefPtr.h: 14696 (KXMLCore::RefPtr::release): 14697 146982005-12-29 Geoffrey Garen <ggaren@apple.com> 14699 14700 Reviewed by mjs. 14701 14702 - Fixed http://bugs.webkit.org/show_bug.cgi?id=4026 14703 Math.random() not seeded. 14704 14705 Added call to sranddev() -- it executes the first time a process 14706 calls Math.random(). 14707 14708 * kjs/math_object.cpp: 14709 (MathFuncImp::callAsFunction): 14710 147112005-12-29 Geoffrey Garen <ggaren@apple.com> 14712 14713 Reviewed by darin. 14714 14715 - Fixed http://bugs.webkit.org/show_bug.cgi?id=6265 14716 Name change regression: Java doesn't know what JavaJSObject is 14717 14718 Changed strings passed to Java back to original "JSObject". 14719 14720 * bindings/jni/jni_jsobject.cpp: 14721 (JavaJSObject::convertValueToJObject): 14722 (JavaJSObject::convertJObjectToValue): 14723 147242005-12-28 Anders Carlsson <andersca@mac.com> 14725 14726 Reviewed by Maciej. 14727 14728 - The JSC part of http://bugs.webkit.org/show_bug.cgi?id=6268 14729 Add undetectable document.all 14730 14731 * kjs/operations.cpp: 14732 (KJS::equal): 14733 When comparing an object with null or undefined, call toPrimitive with 14734 NullType as the preferred type. 14735 147362005-12-27 Anders Carlsson <andersca@mac.com> 14737 14738 Reviewed by Darin. 14739 14740 * kjs/array_object.cpp: 14741 (ArrayProtoFunc::callAsFunction): 14742 Implement filter and map. Also, make the existing 14743 array iteration functions not invoke the callback for 14744 non-existing properties, just as Mozilla does now. 14745 14746 * kjs/array_object.h: 14747 (KJS::ArrayProtoFunc::): 14748 Add filter and map. 14749 14750 * tests/mozilla/expected.html: 14751 Update, two 1.6 tests now pass. 14752 147532005-12-27 Maciej Stachowiak <mjs@apple.com> 14754 14755 - updated test results for new JS 1.6 tests 14756 14757 * tests/mozilla/expected.html: 14758 147592005-12-27 Anders Carlsson <andersca@mac.com> 14760 14761 Reviewed by Maciej. 14762 14763 Add Mozilla JS 1.6 tests. 14764 14765 * tests/mozilla/js1_6/Array/browser.js: Added. 14766 * tests/mozilla/js1_6/Array/regress-290592.js: Added. 14767 * tests/mozilla/js1_6/Array/regress-304828.js: Added. 14768 * tests/mozilla/js1_6/Array/regress-305002.js: Added. 14769 * tests/mozilla/js1_6/Array/regress-310425-01.js: Added. 14770 * tests/mozilla/js1_6/Array/regress-310425-02.js: Added. 14771 * tests/mozilla/js1_6/Array/regress-320887.js: Added. 14772 * tests/mozilla/js1_6/Array/shell.js: Added. 14773 * tests/mozilla/js1_6/README: Added. 14774 * tests/mozilla/js1_6/Regress/browser.js: Added. 14775 * tests/mozilla/js1_6/Regress/regress-301574.js: Added. 14776 * tests/mozilla/js1_6/Regress/regress-309242.js: Added. 14777 * tests/mozilla/js1_6/Regress/regress-311157-01.js: Added. 14778 * tests/mozilla/js1_6/Regress/regress-311157-02.js: Added. 14779 * tests/mozilla/js1_6/Regress/regress-314887.js: Added. 14780 * tests/mozilla/js1_6/Regress/regress-320172.js: Added. 14781 * tests/mozilla/js1_6/Regress/shell.js: Added. 14782 * tests/mozilla/js1_6/String/browser.js: Added. 14783 * tests/mozilla/js1_6/String/regress-306591.js: Added. 14784 * tests/mozilla/js1_6/String/shell.js: Added. 14785 * tests/mozilla/js1_6/browser.js: Added. 14786 * tests/mozilla/js1_6/shell.js: Added. 14787 * tests/mozilla/js1_6/template.js: Added. 14788 147892005-12-27 Maks Orlovich <maksim@kde.org> 14790 14791 Reviewed and landed by Maciej. 14792 14793 - fixed 6234: Can delete array index property incorrectly. 14794 http://bugs.webkit.org/show_bug.cgi?id=6234 14795 14796 * kjs/array_object.cpp: 14797 (ArrayInstance::deleteProperty): use toArrayIndex instead of toUInt32 when 14798 looking for array properties. 14799 148002005-12-27 Anders Carlsson <andersca@mac.com> 14801 14802 Reviewed by Maciej. 14803 14804 * kjs/object.cpp: 14805 (KJS::JSObject::defineSetter): 14806 Remove duplicate call to putDirect. 14807 148082005-12-26 Maciej Stachowiak <mjs@apple.com> 14809 14810 Reviewed by Darin and Geoff. 14811 14812 Changes by me and Anders. 14813 14814 - mostly fixed REGRESSION: 5-10% performance regression on JS iBench from getter/setter change 14815 http://bugs.webkit.org/show_bug.cgi?id=6083 14816 14817 - also fixed some warnings reported by -Winline 14818 14819 * JavaScriptCorePrefix.h: Move new and delete definitions higher so there 14820 aren't conflicts with use in standard C++ headers 14821 * kjs/object.cpp: 14822 (KJS::throwSetterError): Moved this piece of put into a seprate function 14823 to avoid the PIC branch. 14824 (KJS::JSObject::put): Use hasGetterSetterProperties to avoid expensive stuff 14825 when not needed. Also use GetterSetter properties attribute. 14826 (KJS::JSObject::deleteProperty): Recompute whether any properties are getter/setter 14827 properties any more, if this one was one. 14828 (KJS::JSObject::defineGetter): Let the PropertyMap know that it has getter/setter 14829 properties now (and use the new attribute). 14830 (KJS::JSObject::defineSetter): Ditto. 14831 (KJS::JSObject::fillGetterPropertySlot): Out-of-line helper for getOwnPropertySlot, 14832 to avoid global variable access in the hot code path. 14833 * kjs/object.h: 14834 (KJS::): Added GetterSetter attribute. 14835 (KJS::JSCell::isObject): Moved lower to be after inline methods it uses. 14836 (KJS::JSValue::isObject): ditto 14837 (KJS::JSObject::getOwnPropertySlot): try to avoid impact of getters and setters 14838 as much as possible in the case where they are not being used 14839 * kjs/property_map.cpp: 14840 (KJS::PropertyMap::containsGettersOrSetters): New method to help with this 14841 * kjs/property_map.h: 14842 (KJS::PropertyMap::hasGetterSetterProperties): Ditto 14843 (KJS::PropertyMap::setHasGetterSetterProperties): Ditto 14844 (KJS::PropertyMap::PropertyMap): Added a crazy hack to store the 14845 global "has getter/setter properties" flag in the property map 14846 single entry, to avoid making objects any bigger. 14847 * kjs/value.h: Moved some things to object.h to make -Winline happier 14848 148492005-12-24 Maciej Stachowiak <mjs@apple.com> 14850 14851 Reviewed by Eric and Dave Hyatt. 14852 14853 - make even const PassRefPtrs give transfer of ownership semantics 14854 http://bugs.webkit.org/show_bug.cgi?id=6238 14855 14856 This is a somewhat cheesy change. Having to use PassRefPtr_Ref creates ambiguities 14857 in assignment and copy construction. And this makes life way easier and removes 14858 the need for pass(). It is not really correct, but we pretty much never need a real 14859 const PassRefPtr, and this takes care of things for PassRefPtr temporaries. 14860 14861 * kjs/identifier.cpp: 14862 (KJS::Identifier::add): No more need for pass() 14863 * kjs/property_map.cpp: 14864 (KJS::PropertyMap::addSparseArrayPropertiesToReferenceList): No more need for pass() 14865 * kjs/ustring.cpp: 14866 (KJS::UString::Rep::create): Use adoptRef 14867 (KJS::UString::UString): No more need for pass 14868 (KJS::UString::append): No more need for pass 14869 (KJS::UString::substr): No more need for pass 14870 * kxmlcore/PassRefPtr.h: made m_ptr mutable (ugh) 14871 (KXMLCore::PassRefPtr::PassRefPtr): Take a const PassRefPtr reference 14872 (KXMLCore::PassRefPtr::release): Made this a const method (ugh) 14873 (KXMLCore::PassRefPtr::operator=): clean up appropriately 14874 (KXMLCore::adoptRef): Added this to use instead of PassRefPtr<T>::adopt, I think 14875 it makes the behavior more clear and it is less verbose. 14876 (KXMLCore::static_pointer_cast): use adoptRef 14877 (KXMLCore::const_pointer_cast): use adoptRef 14878 * kxmlcore/RefPtr.h: 14879 (KXMLCore::RefPtr::RefPtr): take const PassRefPtr& 14880 (KXMLCore::PassRefPtr::operator=): take const PassRefPtr& 14881 148822005-12-25 Eric Seidel <eseidel@apple.com> 14883 14884 Reviewed by mjs. 14885 14886 Unbreak HashTableConstIterator++ by returning const_iterator 14887 14888 * kxmlcore/HashTable.h: 14889 (KXMLCore::HashTableConstIterator::operator++): use const_iterator 14890 148912005-12-25 Eric Seidel <eseidel@apple.com> 14892 14893 Reviewed by mjs. 14894 14895 Un-break HashTable copy constructor. 14896 14897 * kxmlcore/HashTable.h: 14898 (KXMLCore::::HashTable): use const_iterator instead 14899 149002005-12-23 Maciej Stachowiak <mjs@apple.com> 14901 14902 Reviewed by Eric. 14903 14904 - fixed "HashMap does not work with const pointer keys or values" 14905 http://bugs.webkit.org/show_bug.cgi?id=6222 14906 14907 * kxmlcore/HashMapPtrSpec.h: 14908 (KXMLCore::HashMap): In all methods, explicitly cast all pointers 14909 to void * before passing to internal implementation. Use C-style 14910 casts instead of new-style casts, because the real solution would 14911 require a combo of reinterpret_cast anc const_cast. 14912 14913 149142005-12-23 Maciej Stachowiak <mjs@apple.com> 14915 14916 - this time for sure 14917 14918 * kxmlcore/RefPtr.h: 14919 (KXMLCore::::swap): 14920 149212005-12-22 Maciej Stachowiak <mjs@apple.com> 14922 14923 - fix build problem from last commit. 14924 14925 * kxmlcore/RefPtr.h: 14926 (KXMLCore::::swap): 14927 149282005-12-21 Maciej Stachowiak <mjs@apple.com> 14929 14930 Reviewed by Darin. 14931 14932 - Make HashMap/HashSet support non-POD types 14933 http://bugs.webkit.org/show_bug.cgi?id=5332 14934 14935 The changes for support are relatively simple, but I also made extensive changes to 14936 avoid copying, so that there isn't refcount thrash when you put RefPtrs into a HashMap. 14937 14938 * kxmlcore/HashTable.h: 14939 (KXMLCore::swap): specialize swap for pairs, to swap elements individually, 14940 so that excess copies can be avoided. 14941 (KXMLCore::Mover::move): Template function to either copy or swap, used 14942 when transferring elements from old table to new. 14943 (KXMLCore::IdentityHashTranslator::hash): The old "converting lookup" templates 14944 that took two or three function parameters now take a class parameter, this is 14945 the class used to do a normal lookup. 14946 (KXMLCore::IdentityHashTranslator::equal): Ditto. 14947 (KXMLCore::IdentityHashTranslator::translate): Ditto. Translate now takes a reference 14948 to write into instead of returning a value to avoid redundant copies. 14949 (KXMLCore::HashTable::~HashTable): Use deallocateTable instead of freeing directly. 14950 (KXMLCore::HashTable::insert): Based on HashTranslator now instead of separate 14951 functions. Added a FIXME about a remaining rare excess copy. 14952 (KXMLCore::HashTable::isEmptyBucket): Use KeyTraits directly instead of unwrapping 14953 the key from Traits, to avoid creating and destroying pair, which copies. 14954 (KXMLCore::HashTable::isDeletedBucket): ditto 14955 (KXMLCore::HashTable::lookup): Use HashTranslator now instead of separate functions. 14956 (KXMLCore::HashTable::initializeBucket): Renamed from emptyBucket. Use placement new to 14957 work right for non-POD types. 14958 (KXMLCore::HashTable::deleteBucket): Use assignDeleted to avoid excess copies. 14959 (KXMLCore::HashTable::reinsert): use Mover template to copy or swap as appropriate 14960 (KXMLCore::HashTable::allocateTable): Initialize every bucket if calloc won't do. 14961 (KXMLCore::HashTable::deallocateTable): Destruct every bucket if needed. 14962 (KXMLCore::HashTable::rehash): Avoid copy before reinserting, so that swap can do its magic. 14963 (KXMLCore::HashTable::clear): use deallocateTable instead of freeing directly. 14964 (KXMLCore::HashTable::HashTable): be more dumb when copying to ensure that non-POD types 14965 work right 14966 * kxmlcore/HashFunctions.h: 14967 (KXMLCore::PointerHash): Specialize PointerHash for RefPtr 14968 * kxmlcore/HashMap.h: 14969 (KXMLCore::extractFirst): Return a reference not a full object to avoid 14970 copies. 14971 (KXMLCore::HashMapTranslator::hash): Use a special translator for insertion 14972 to defer making the pair as long as possible, thus avoiding needless copies. 14973 (KXMLCore::HashMapTranslator::equal): ditto 14974 (KXMLCore::HashMapTranslator::translate): ditto 14975 (KXMLCore::::inlineAdd): Shared by set and add to insert using HashMapTranslator 14976 (KXMLCore::::set): Use inlineAdd 14977 (KXMLCore::::add): Use inlineAdd 14978 * kxmlcore/HashMapPtrSpec.h: 14979 (KXMLCore::): Pass KeyTraits along 14980 * kxmlcore/HashSet.h: 14981 (KXMLCore::identityExtract): Return a reference not a full object to avoid copies. 14982 (KXMLCore::HashSetTranslatorAdapter::hash): Redo adapter stuff to work with 14983 the new HashTranslator approach. 14984 (KXMLCore::HashSetTranslatorAdapter::equal): ditto 14985 (KXMLCore::HashSetTranslatorAdapter::translate): ditto 14986 (KXMLCore::::insert): ditto 14987 * kxmlcore/HashTraits.h: 14988 (KXMLCore::GenericHashTraits): This is intended be used as a base class for 14989 customized traits: sensible defaults. 14990 (KXMLCore::): Use it a bunch 14991 (KXMLCore::assignDeleted): template function to allow pairs to be assigned the 14992 deleted value w/o excess copies. 14993 (KXMLCore::PairHashTraits::emptyValue): Updated 14994 (KXMLCore::PairHashTraits::deletedValue): Updated 14995 (KXMLCore::PairHashTraits::assignDeletedValue): part of assignDeleted hack 14996 (KXMLCore::DeletedValueAssigner::assignDeletedValue): Use template magic 14997 to either use use deletedValue or assignDeletedValue for the cases where we care. 14998 * kxmlcore/RefPtr.h: 14999 (KXMLCore::RefPtr::swap): Added swap method. 15000 (KXMLCore::swap): Added swap free function. 15001 * kjs/identifier.cpp: 15002 (KJS::CStringTranslator::hash): Use new HashTranslator class approach to 15003 alternate type based insertion. 15004 (KJS::CStringTranslator::equal): ditto 15005 (KJS::CStringTranslator::translate): ditto 15006 (KJS::Identifier::add): ditto 15007 (KJS::UCharBufferTranslator::hash): ditto 15008 (KJS::UCharBufferTranslator::equal): ditto 15009 (KJS::UCharBufferTranslator::translate): ditto 15010 15011 - irrelevant change: 15012 15013 * kjs/array_object.cpp: 15014 (ArrayProtoFunc::callAsFunction): Removed a stray space. 15015 150162005-12-22 Anders Carlsson <andersca@mac.com> 15017 15018 Reviewed by Eric and Darin. 15019 15020 - fix http://bugs.webkit.org/show_bug.cgi?id=6196 15021 Would like to be able to define prototypes in headers 15022 15023 * kjs/lookup.h: 15024 Move ClassName from KJS_DECLARE_PROTOTYPE to KJS_IMPLEMENT_PROTOTYPE. 15025 Also, namespace all macros by prefixing them with KJS_. 15026 150272005-12-22 Darin Adler <darin@apple.com> 15028 15029 Reviewed by Maciej. 15030 15031 - fix http://bugs.webkit.org/show_bug.cgi?id=6191 15032 RefPtr/PassRefPtr have a leak issue, operator== issues 15033 15034 * kxmlcore/PassRefPtr.h: 15035 (KXMLCore::PassRefPtr::PassRefPtr): Remove non-template constructor that takes RefPtr 15036 since the constructor template that takes RefPtr should be sufficient. Add a constructor 15037 template that takes PassRefPtr&. 15038 (KXMLCore::PassRefPtr::adopt): Use PassRefPtr_Ref to avoid setting pointer first to 15039 0 and then to the pointer. 15040 (KXMLCore::PassRefPtr::operator=): Added template versions that take PassRefPtr& and 15041 RefPtr parameters. 15042 (KXMLCore::PassRefPtr::operator PassRefPtr<U>): Changed to fix leak -- old version 15043 would release and then ref. 15044 (KXMLCore::operator==): Make templates have two parameters so you can mix types. 15045 Also remove unneeded const in raw pointer versions. 15046 (KXMLCore::operator!=): Ditto. 15047 15048 * kxmlcore/RefPtr.h: 15049 (KXMLCore::RefPtr::RefPtr): Add constructor template that takes PassRefPtr. 15050 (KXMLCore::RefPtr::operator=): Add assignment operator templates that take 15051 RefPtr and PassRefPtr. 15052 (KXMLCore::operator==): Make templates have two parameters so you can mix types. 15053 Also remove unneeded const in raw pointer versions. 15054 (KXMLCore::operator!=): Ditto. 15055 150562005-12-21 Timothy Hatcher <timothy@apple.com> 15057 15058 * JavaScriptCore.xcodeproj/project.pbxproj: 15059 Set tab width to 8, indent width to 4 and uses tabs to false per file. 15060 150612005-12-21 Geoffrey Garen <ggaren@apple.com> 15062 15063 Reviewed by Darin. 15064 15065 Removed evil hack for determining if a type is an integer, replaced 15066 with template metaprogramming. 15067 15068 * JavaScriptCore.xcodeproj/project.pbxproj: Set tab size to 2 for 15069 testkjs.cpp 15070 * kjs/testkjs.cpp: 15071 (main): Inserted asserts to test IsInteger. FIXME: Move these to 15072 KXMLCore unit tests directory when we create one. 15073 * kxmlcore/HashTraits.h: 15074 (KXMLCore::): Added IsInteger class for querying types. 15075 150762005-12-20 Maciej Stachowiak <mjs@apple.com> 15077 15078 Reviewed by Darin. 15079 15080 - made ALWAYS_INLINE declare things inline as well as __attribute__((always_inline)) 15081 http://bugs.webkit.org/show_bug.cgi?id=6159 15082 15083 * kxmlcore/AlwaysInline.h: 15084 150852005-12-19 Maciej Stachowiak <mjs@apple.com> 15086 15087 Reviewed by Darin. 15088 15089 - fixed a leak in the assignment operator from PassRefPtr to RefPtr 15090 http://bugs.webkit.org/show_bug.cgi?id=6158 15091 15092 * kxmlcore/RefPtr.h: 15093 (KXMLCore::RefPtr::operator=): 15094 15095 - fix problem with PassRefPtr that darin spotted - it lacked a copy constructor 15096 and therefore was using the default one, which can lead to excess derefs 15097 15098 I fixed this by adding a copy constructor from non-const 15099 reference, and by adding a template pass() function that you have 15100 to use when raw pointer or RefPtr are passed where PassRefPtr is 15101 expected. 15102 15103 * kjs/identifier.cpp: 15104 (KJS::Identifier::add): Changed to have PassRefPtr return type and 15105 pass() the results. 15106 * kjs/identifier.h: 15107 * kjs/property_map.cpp: 15108 (KJS::PropertyMap::addSparseArrayPropertiesToReferenceList): Use pass() 15109 where required. 15110 * kjs/ustring.cpp: 15111 (KJS::UString::UString): Use pass() as needed. 15112 (KJS::UString::append): ditto 15113 (KJS::UString::substr): ditto 15114 * kjs/ustring.h: 15115 (KJS::UString::UString): Use initializer instead of assignment 15116 * kxmlcore/PassRefPtr.h: 15117 (KXMLCore::PassRefPtr::PassRefPtr): Added copy constructor 15118 (KXMLCore::pass): new template function to make it convenient to pass 15119 a PassRefPtr 15120 151212005-12-19 Geoffrey Garen <ggaren@apple.com> 15122 15123 Reviewed by Maciej. 15124 15125 Fixed <rdar://problem/4370397> Missing return statement in 15126 JSMethodNameToObjcMethodName. 15127 15128 JSMethodNameToObjcMethodName had a check for a name being too long, but 15129 the check was missing a return statement. 15130 15131 A lot of this code was confusing and some of it was wrong, so I fixed 15132 it up, added some asserts to catch this type of bug in the future, 15133 changed some comments, and renamed some variables. 15134 15135 The two advantages of the new algorithm are (1) It makes writing past 15136 the end of the buffer virtually impossible because the test on the main 15137 loop is "while (not past end of buffer)" and (2) It's twice as fast 15138 because it doesn't call strlen. (There's no need to call strlen when 15139 we're walking the string ourselves.) 15140 15141 methodsNamed also supports arbitrary-length method names now. Just in 15142 case the AppKit folks start getting REALLY verbose... 15143 15144 * bindings/objc/objc_class.mm: 15145 (KJS::Bindings::ObjcClass::methodsNamed): 15146 * bindings/objc/objc_utility.h: 15147 * bindings/objc/objc_utility.mm: 15148 (KJS::Bindings::JSMethodNameToObjcMethodName): 15149 151502005-12-19 Darin Adler <darin@apple.com> 15151 15152 Originally done by both George Staikos and Alexey Proskuryakov. 15153 15154 - fix http://bugs.webkit.org/show_bug.cgi?id=5706 15155 Sharedptr dependency can be removed 15156 15157 Our coding guidelines say "use 0 instead of NULL" and both RefPtr and 15158 PassRefPtr were using NULL, which required including a header that 15159 defines NULL. 15160 15161 * kxmlcore/PassRefPtr.h: 15162 (KXMLCore::PassRefPtr::PassRefPtr): Use 0 instead of NULL. 15163 (KXMLCore::PassRefPtr::operator!): Use ! instead of == NULL. 15164 * kxmlcore/RefPtr.h: 15165 (KXMLCore::RefPtr::RefPtr): Use 0 instead of NULL. 15166 (KXMLCore::RefPtr::operator!): Use ! instead of == NULL. 15167 Also did some reformatting. 15168 151692005-12-19 Darin Adler <darin@apple.com> 15170 15171 Reviewed by Geoff Garen and Eric Seidel. 15172 15173 - fix http://bugs.webkit.org/show_bug.cgi?id=4923 15174 stop using <ostream> in WebCore, eliminating the <cmath> troubles it causes 15175 15176 * kjs/simple_number.h: Removed many unnecessary includes, including 15177 the <cmath> one to work around GCC library header bugs. We may have to 15178 add some includes elsewhere for platforms other than OS X, since our 15179 prefix header takes care of some things. 15180 15181 * kxmlcore/AlwaysInline.h: Added. Now clients that don't include 15182 simple_number.h can still get the ALWAYS_INLINE macro. 15183 * JavaScriptCore.xcodeproj/project.pbxproj: Added AlwaysInline.h. 15184 15185 * bindings/NP_jsobject.h: Removed a lot of unnecessary includes 15186 and removed C-specific stuff from this C++-only header. 15187 * bindings/jni/jni_jsobject.h: Removed a lot of unnecessary includes 15188 and did some reformatting. 15189 * bindings/objc/objc_runtime.h: Removed an unnecessary include. 15190 * bindings/runtime.h: Removed some unneeded includes. Reformatted. 15191 * bindings/runtime.cpp: Updated to compile with header changes, 15192 including a lot of reformatting. 15193 * bindings/runtime_object.h: Removed an unnecessary include. 15194 151952005-12-13 Maciej Stachowiak <mjs@apple.com> 15196 15197 Reviewed by Geoff and Adele 15198 15199 - replaced custom Identifier hashtable with HashSet 15200 15201 * kjs/identifier.cpp: 15202 (KXMLCore::): 15203 (KJS::identifierTable): 15204 (KJS::Identifier::equal): 15205 (KJS::hash): 15206 (KJS::equal): 15207 (KJS::convert): 15208 (KJS::Identifier::add): 15209 (KJS::Identifier::remove): 15210 * kjs/identifier.h: 15211 * kjs/internal.cpp: 15212 (KJS::InterpreterImp::initGlobalObject): 15213 152142005-12-18 Justin Haygood <justin@xiondigital.net> 15215 15216 Reviewed, tweaked, and landed by Darin. 15217 15218 - fix http://bugs.webkit.org/show_bug.cgi?id=5227 15219 Array indexOf() extension for JavaScript 1.5 Core 15220 15221 * kjs/array_object.h: 15222 * kjs/array_object.cpp: (ArrayProtoFunc::callAsFunction): Added implementation of indexOf. 15223 152242005-12-18 Anders Carlsson <andersca@mac.com> 15225 15226 Reviewed by Darin and Geoffrey. 15227 15228 - fix for <http://bugs.webkit.org/show_bug.cgi?id=4000> 15229 Object.prototype is missing isPrototypeOf 15230 15231 * kjs/object_object.cpp: 15232 (ObjectPrototype::ObjectPrototype): 15233 Add isPrototypeOf to object prototype. 15234 15235 (ObjectProtoFunc::callAsFunction): 15236 Implement isPrototypeOf 15237 15238 * kjs/object_object.h: 15239 (KJS::ObjectProtoFunc::): 15240 Add id for isPrototypeOf. 15241 152422005-12-17 Geoffrey Garen <ggaren@apple.com> 15243 15244 Reviewed by Darin. 15245 15246 Fixed http://bugs.webkit.org/show_bug.cgi?id=6119 15247 split() function ignores case insensitive modifier. 15248 15249 Glossary: 15250 RegExpImp: The C++ object you get when JavaScript executes 15251 "new RegExp()". 15252 RegExp: A C++ wrapper object that performs regular expression 15253 matching on behalf of a RegExpImp. 15254 15255 Instead of unnecessarily constructing a RegExp which (wrongly) lacks 15256 any modifiers, String.split() now uses the RegExp built in to the 15257 RegExpImp passed to it, which has the right modifiers already. 15258 15259 I also cleaned up other bits of the string code to standardized how 15260 we handle RegExpImp arguments. 15261 15262 * ChangeLog: 15263 * kjs/string_object.cpp: 15264 (replace): 15265 (StringProtoFunc::callAsFunction): 15266 152672005-12-16 David Hyatt <hyatt@apple.com> 15268 15269 Remove unused RefPtr constructors that can create an ambiguity in ustring on some platforms. 15270 15271 Reviewed by mjs 15272 15273 * kxmlcore/RefPtr.h: 15274 (KXMLCore::RefPtr::RefPtr): 15275 152762005-12-15 Darin Adler <darin@apple.com> 15277 15278 Reviewed by Maciej. 15279 15280 - fix http://bugs.webkit.org/show_bug.cgi?id=5688 15281 speed up JavaScript parsing by not creating a UString just to parse 15282 15283 * kjs/internal.h: 15284 * kjs/internal.cpp: (KJS::InterpreterImp::evaluate): Change to take a character pointer 15285 and length rather than a UString. 15286 15287 * kjs/interpreter.h: 15288 * kjs/interpreter.cpp: (Interpreter::evaluate): Ditto. 15289 15290 * kjs/protect.h: Remove uneeded "convert to bool" operator since we already have a 15291 "convert to raw pointer" operator in this class. 15292 15293=== Safari-521~5 === 15294 152952005-12-13 Geoffrey Garen <ggaren@apple.com> 15296 15297 Updated test results to match Anders's last fix. 15298 15299 * tests/mozilla/expected.html: 15300 153012005-12-13 Anders Carlsson <andersca@mac.com> 15302 15303 * ChangeLog: Add titles for my bugzilla bugs. 15304 153052005-12-13 Anders Carlsson <andersca@mac.com> 15306 15307 Reviewed by Darin. 15308 15309 - Fixes <http://bugs.webkit.org/show_bug.cgi?id=6041> 15310 Support property getters and setters. 15311 15312 * bindings/runtime_array.cpp: 15313 (RuntimeArray::lengthGetter): 15314 (RuntimeArray::indexGetter): 15315 * bindings/runtime_array.h: 15316 * bindings/runtime_method.cpp: 15317 (RuntimeMethod::lengthGetter): 15318 * bindings/runtime_method.h: 15319 * bindings/runtime_object.cpp: 15320 (RuntimeObjectImp::fallbackObjectGetter): 15321 (RuntimeObjectImp::fieldGetter): 15322 (RuntimeObjectImp::methodGetter): 15323 * bindings/runtime_object.h: 15324 * kjs/array_instance.h: 15325 * kjs/array_object.cpp: 15326 (ArrayInstance::lengthGetter): 15327 (getProperty): 15328 Update for changes to PropertySlot::getValue and 15329 PropertySlot::GetValueFunc. 15330 15331 * kjs/collector.cpp: 15332 (KJS::className): 15333 Handle GetterSetterType. 15334 15335 * kjs/function.cpp: 15336 (KJS::FunctionImp::argumentsGetter): 15337 (KJS::FunctionImp::lengthGetter): 15338 (KJS::Arguments::mappedIndexGetter): 15339 (KJS::ActivationImp::argumentsGetter): 15340 * kjs/function.h: 15341 Update for changes to PropertySlot::getValue and 15342 PropertySlot::GetValueFunc. 15343 15344 * kjs/grammar.y: 15345 Rework grammar parts for get set declarations directly 15346 in the object literal. 15347 15348 * kjs/internal.cpp: 15349 (KJS::GetterSetterImp::mark): 15350 (KJS::GetterSetterImp::toPrimitive): 15351 (KJS::GetterSetterImp::toBoolean): 15352 (KJS::GetterSetterImp::toNumber): 15353 (KJS::GetterSetterImp::toString): 15354 (KJS::GetterSetterImp::toObject): 15355 Add type conversion functions. These aren't meant to be called. 15356 15357 (KJS::printInfo): 15358 Handle GetterSetterType. 15359 15360 * kjs/lookup.h: 15361 (KJS::staticFunctionGetter): 15362 (KJS::staticValueGetter): 15363 Update for changes to PropertySlot::GetValueFunc. 15364 15365 * kjs/nodes.cpp: 15366 Refactor they way properties nodes are implemented. 15367 We now have a PropertyListNode which is a list of PropertyNodes. 15368 Each PropertyNode has a name (which is a PropertyNameNode) and an associated 15369 value node. PropertyNodes can be of different types. The Constant type is the 15370 old constant declaration and the Getter and Setter types are for property getters 15371 and setters. 15372 (ResolveNode::evaluate): 15373 Update for changes to PropertySlot::getValue. 15374 15375 (PropertyListNode::evaluate): 15376 Go through all property nodes and set them on the newly created object. If the 15377 property nodes are of type Getter or Setter, define getters and setters. Otherwise, 15378 just add the properties like before. 15379 15380 (PropertyNode::evaluate): 15381 This should never be called directly. 15382 15383 (PropertyNameNode::evaluate): 15384 Rename from PropertyNode::evaluate. 15385 15386 (FunctionCallResolveNode::evaluate): 15387 (FunctionCallBracketNode::evaluate): 15388 (FunctionCallDotNode::evaluate): 15389 (PostfixResolveNode::evaluate): 15390 (PostfixBracketNode::evaluate): 15391 (PostfixDotNode::evaluate): 15392 (TypeOfResolveNode::evaluate): 15393 (PrefixResolveNode::evaluate): 15394 (PrefixBracketNode::evaluate): 15395 (PrefixDotNode::evaluate): 15396 (AssignResolveNode::evaluate): 15397 (AssignDotNode::evaluate): 15398 (AssignBracketNode::evaluate): 15399 Update for changes to PropertySlot::getValue. 15400 15401 * kjs/nodes.h: 15402 (KJS::PropertyNameNode::PropertyNameNode): 15403 Rename from PropertyNode. 15404 15405 (KJS::PropertyNode::): 15406 (KJS::PropertyNode::PropertyNode): 15407 New class, representing a single property. 15408 15409 (KJS::PropertyListNode::PropertyListNode): 15410 Rename from PropertyValueNode. 15411 15412 (KJS::FuncExprNode::FuncExprNode): 15413 Put ParameterNode parameter last, and make it optional. 15414 15415 (KJS::ObjectLiteralNode::ObjectLiteralNode): 15416 Use a PropertyListNode here now. 15417 15418 * kjs/nodes2string.cpp: 15419 (PropertyListNode::streamTo): 15420 Iterate through all property nodes. 15421 15422 (PropertyNode::streamTo): 15423 Print out the name and value. Doesn't handle getters and setters currently. 15424 15425 (PropertyNameNode::streamTo): 15426 Rename from PropertyNode::streamTo. 15427 15428 * kjs/object.cpp: 15429 (KJS::JSObject::get): 15430 Update for changes to PropertySlot::getValue. 15431 15432 (KJS::JSObject::put): 15433 If the property already exists and has a Setter, invoke 15434 the setter function instead of setting the property directly. 15435 15436 (KJS::JSObject::defineGetter): 15437 (KJS::JSObject::defineSetter): 15438 New functions for defining property getters and setters on the object. 15439 15440 * kjs/object.h: 15441 (KJS::GetterSetterImp::type): 15442 (KJS::GetterSetterImp::GetterSetterImp): 15443 (KJS::GetterSetterImp::getGetter): 15444 (KJS::GetterSetterImp::setGetter): 15445 (KJS::GetterSetterImp::getSetter): 15446 (KJS::GetterSetterImp::setSetter): 15447 New class for properties which have getters and setters defined. 15448 This class is only used internally and should never be seen from the outside. 15449 15450 (KJS::JSObject::getOwnPropertySlot): 15451 If the property is a getter, call setGetterSlot on the property slot. 15452 15453 * kjs/object_object.cpp: 15454 (ObjectPrototype::ObjectPrototype): 15455 Add __defineGetter__, __defineSetter, __lookupGetter__, __lookupSetter__ 15456 to prototype. 15457 15458 (ObjectProtoFunc::callAsFunction): 15459 Implement handlers for new functions. 15460 15461 * kjs/object_object.h: 15462 (KJS::ObjectProtoFunc::): 15463 Add ids for new functions. 15464 15465 * kjs/property_slot.cpp: 15466 (KJS::PropertySlot::undefinedGetter): 15467 Update for changes to PropertySlot::GetValueFunc. 15468 15469 (KJS::PropertySlot::functionGetter): 15470 Call the function getter object and return its value. 15471 15472 * kjs/property_slot.h: 15473 (KJS::PropertySlot::getValue): 15474 Add a new argument which is the original object that 15475 getPropertySlot was called on. 15476 15477 (KJS::PropertySlot::setGetterSlot): 15478 (KJS::PropertySlot::): 15479 New function which sets a getter slot. When getValue is called on a 15480 getter slot, the getter function object is invoked. 15481 15482 * kjs/string_object.cpp: 15483 (StringInstance::lengthGetter): 15484 (StringInstance::indexGetter): 15485 * kjs/string_object.h: 15486 Update for changes to PropertySlot::GetValueFunc. 15487 15488 * kjs/value.h: 15489 (KJS::): 15490 Add GetterSetterType and make GetterSetterImp a friend class of JSCell. 15491 154922005-12-12 Maciej Stachowiak <mjs@apple.com> 15493 15494 Reviewed by Eric. 15495 15496 - added a new HashCountedSet class for the common pattern of mapping items to counts that can change 15497 15498 * kxmlcore/HashCountedSet.h: Added. 15499 (KXMLCore::HashCountedSet::*): Implemented, on top of HashMap. 15500 * kxmlcore/HashMap.h: 15501 (KXMLCore::HashMap::add): New method - does not replace existing value if key already present 15502 but otherwise like set(). 15503 (KXMLCore::HashMap::set): Improved comments. 15504 * kxmlcore/HashMapPtrSpec.h: 15505 (KXMLCore::HashMap::add): Added to specializations too. 15506 * JavaScriptCore.xcodeproj/project.pbxproj: Add new file. 15507 * kxmlcore/HashFunctions.h: Added include of stdint.h 15508 15509 - replaced the custom hashtable for values protected from GC with HashCountedSet 15510 15511 * kjs/collector.cpp: 15512 (KJS::Collector::protect): Moved code here from ProtectedValues::increaseProtectCount 15513 since the code is so simple now. 15514 (KJS::Collector::unprotect): Ditto for ProtectedValues::decreaseProtectCount. 15515 (KJS::Collector::markProtectedObjects): Updated for new way of doing things, now 15516 simpler and safer. 15517 (KJS::Collector::numReferencedObjects): ditto 15518 (KJS::Collector::rootObjectClasses): ditto 15519 * kjs/collector.h: Added protect and unprotect static methods 15520 * kjs/protect.h: 15521 (KJS::gcProtect): Updated for removal of ProtectedValues class 15522 (KJS::gcUnprotect): likewise 15523 * kjs/protected_values.cpp: Removed. 15524 * kjs/protected_values.h: Removed. 15525 155262005-12-10 Darin Adler <darin@apple.com> 15527 15528 Rubber stamped by Maciej. 15529 15530 - did long-promised KJS renaming: 15531 15532 ValueImp -> JSValue 15533 ObjectImp -> JSObject 15534 AllocatedValueImp -> JSCell 15535 15536 A renaming to get a class out of the way 15537 15538 KJS::Bindings::JSObject -> JavaJSObject 15539 15540 and some other "imp-reduction" renaming 15541 15542 *InstanceImp -> *Instance 15543 *ProtoFuncImp -> *ProtoFunc 15544 *PrototypeImp -> *Prototype 15545 ArgumentsImp -> Arguments 15546 RuntimeArrayImp -> RuntimeArray 15547 RuntimeMethodImp -> RuntimeMethod 15548 15549 * most files and functions 15550 155512005-12-10 Darin Adler <darin@apple.com> 15552 15553 Reviewed by Maciej. 15554 15555 - eliminated the old Undefined(), Null(), Boolean(), Number(), and String() 15556 15557 Code now uses jsUndefined(), jsNull(), jsBoolean(), jsNumber(), and jsString(). 15558 15559 * bindings/NP_jsobject.cpp: 15560 (_NPN_Evaluate): 15561 * bindings/c/c_instance.cpp: 15562 (KJS::Bindings::CInstance::invokeMethod): 15563 (KJS::Bindings::CInstance::invokeDefaultMethod): 15564 * bindings/c/c_runtime.cpp: 15565 (CField::valueFromInstance): 15566 * bindings/c/c_utility.cpp: 15567 (KJS::Bindings::convertNPVariantToValue): 15568 * bindings/jni/jni_instance.cpp: 15569 (JavaInstance::invokeMethod): 15570 (JavaInstance::invokeDefaultMethod): 15571 * bindings/jni/jni_jsobject.cpp: 15572 (JSObject::eval): 15573 (JSObject::convertJObjectToValue): 15574 * bindings/jni/jni_runtime.cpp: 15575 (JavaArray::convertJObjectToArray): 15576 (JavaField::valueFromInstance): 15577 (JavaArray::valueAt): 15578 * bindings/objc/WebScriptObject.mm: 15579 (-[WebScriptObject callWebScriptMethod:withArguments:]): 15580 (-[WebScriptObject evaluateWebScript:]): 15581 (-[WebScriptObject valueForKey:]): 15582 (-[WebScriptObject webScriptValueAtIndex:]): 15583 * bindings/objc/objc_instance.mm: 15584 (ObjcInstance::invokeMethod): 15585 (ObjcInstance::invokeDefaultMethod): 15586 (ObjcInstance::getValueOfUndefinedField): 15587 * bindings/objc/objc_runtime.mm: 15588 (ObjcField::valueFromInstance): 15589 (ObjcFallbackObjectImp::callAsFunction): 15590 * bindings/objc/objc_utility.mm: 15591 (KJS::Bindings::convertNSStringToString): 15592 (KJS::Bindings::convertObjcValueToValue): 15593 * bindings/runtime.h: 15594 (KJS::Bindings::Class::fallbackObject): 15595 (KJS::Bindings::Instance::getValueOfUndefinedField): 15596 (KJS::Bindings::Instance::valueOf): 15597 * bindings/runtime_array.cpp: 15598 (RuntimeArrayImp::lengthGetter): 15599 * bindings/runtime_method.cpp: 15600 (RuntimeMethodImp::lengthGetter): 15601 (RuntimeMethodImp::callAsFunction): 15602 (RuntimeMethodImp::execute): 15603 * kjs/array_object.cpp: 15604 (ArrayInstanceImp::lengthGetter): 15605 (CompareWithCompareFunctionArguments::CompareWithCompareFunctionArguments): 15606 (ArrayPrototypeImp::ArrayPrototypeImp): 15607 (ArrayProtoFuncImp::ArrayProtoFuncImp): 15608 (ArrayProtoFuncImp::callAsFunction): 15609 (ArrayObjectImp::ArrayObjectImp): 15610 * kjs/bool_object.cpp: 15611 (BooleanPrototypeImp::BooleanPrototypeImp): 15612 (BooleanProtoFuncImp::callAsFunction): 15613 (BooleanObjectImp::BooleanObjectImp): 15614 (BooleanObjectImp::callAsFunction): 15615 * kjs/error_object.cpp: 15616 (ErrorPrototypeImp::ErrorPrototypeImp): 15617 (ErrorProtoFuncImp::ErrorProtoFuncImp): 15618 (ErrorProtoFuncImp::callAsFunction): 15619 (ErrorObjectImp::ErrorObjectImp): 15620 (NativeErrorImp::NativeErrorImp): 15621 * kjs/function.cpp: 15622 (KJS::FunctionImp::callAsFunction): 15623 (KJS::FunctionImp::processParameters): 15624 (KJS::FunctionImp::argumentsGetter): 15625 (KJS::FunctionImp::lengthGetter): 15626 (KJS::DeclaredFunctionImp::execute): 15627 (KJS::encode): 15628 (KJS::decode): 15629 (KJS::GlobalFuncImp::callAsFunction): 15630 * kjs/function_object.cpp: 15631 (FunctionPrototypeImp::FunctionPrototypeImp): 15632 (FunctionPrototypeImp::callAsFunction): 15633 (FunctionProtoFuncImp::callAsFunction): 15634 (FunctionObjectImp::FunctionObjectImp): 15635 * kjs/internal.cpp: 15636 (KJS::InterpreterImp::initGlobalObject): 15637 * kjs/interpreter.h: 15638 * kjs/lookup.h: 15639 * kjs/math_object.cpp: 15640 (MathObjectImp::getValueProperty): 15641 (MathFuncImp::callAsFunction): 15642 * kjs/nodes.cpp: 15643 (Node::setExceptionDetailsIfNeeded): 15644 (NullNode::evaluate): 15645 (PropertyNode::evaluate): 15646 (FunctionCallBracketNode::evaluate): 15647 (FunctionCallDotNode::evaluate): 15648 (PostfixBracketNode::evaluate): 15649 (PostfixDotNode::evaluate): 15650 (VoidNode::evaluate): 15651 (PrefixBracketNode::evaluate): 15652 (PrefixDotNode::evaluate): 15653 (ShiftNode::evaluate): 15654 (valueForReadModifyAssignment): 15655 (AssignDotNode::evaluate): 15656 (AssignBracketNode::evaluate): 15657 (VarDeclNode::evaluate): 15658 (VarDeclNode::processVarDecls): 15659 (VarDeclListNode::evaluate): 15660 (ReturnNode::execute): 15661 (CaseClauseNode::evalStatements): 15662 (ParameterNode::evaluate): 15663 (FuncDeclNode::processFuncDecl): 15664 * kjs/nodes.h: 15665 (KJS::StatementNode::evaluate): 15666 * kjs/number_object.cpp: 15667 (NumberPrototypeImp::NumberPrototypeImp): 15668 (NumberProtoFuncImp::callAsFunction): 15669 (NumberObjectImp::NumberObjectImp): 15670 (NumberObjectImp::getValueProperty): 15671 (NumberObjectImp::callAsFunction): 15672 * kjs/object.cpp: 15673 (KJS::ObjectImp::get): 15674 (KJS::Error::create): 15675 * kjs/object_object.cpp: 15676 (ObjectPrototypeImp::ObjectPrototypeImp): 15677 (ObjectProtoFuncImp::callAsFunction): 15678 (ObjectObjectImp::ObjectObjectImp): 15679 * kjs/property_slot.cpp: 15680 (KJS::PropertySlot::undefinedGetter): 15681 * kjs/regexp_object.cpp: 15682 (RegExpPrototypeImp::RegExpPrototypeImp): 15683 (RegExpProtoFuncImp::callAsFunction): 15684 (RegExpObjectImp::RegExpObjectImp): 15685 (RegExpObjectImp::arrayOfMatches): 15686 (RegExpObjectImp::getBackref): 15687 (RegExpObjectImp::getLastMatch): 15688 (RegExpObjectImp::getLastParen): 15689 (RegExpObjectImp::getLeftContext): 15690 (RegExpObjectImp::getRightContext): 15691 (RegExpObjectImp::getValueProperty): 15692 (RegExpObjectImp::construct): 15693 * kjs/string_object.cpp: 15694 (StringInstanceImp::StringInstanceImp): 15695 (StringPrototypeImp::StringPrototypeImp): 15696 (replace): 15697 (StringProtoFuncImp::callAsFunction): 15698 (StringObjectImp::StringObjectImp): 15699 (StringObjectImp::callAsFunction): 15700 (StringObjectFuncImp::StringObjectFuncImp): 15701 (StringObjectFuncImp::callAsFunction): 15702 * kjs/testkjs.cpp: 15703 (TestFunctionImp::callAsFunction): 15704 (VersionFunctionImp::callAsFunction): 15705 * kjs/value.h: 15706 157072005-12-10 Oliver Hunt <ojh16@student.canterbury.ac.nz> 15708 15709 Reviewed by Maciej, landed by Darin. 15710 15711 - fix http://bugs.webkit.org/show_bug.cgi?id=3539 15712 Array join and toString methods do not support circular references 15713 15714 * kjs/array_object.cpp: (ArrayProtoFuncImp::callAsFunction): 15715 Added set of visited objects -- don't recurse if item is already in the set. 15716 157172005-12-08 Maciej Stachowiak <mjs@apple.com> 15718 15719 Reviewed by John. 15720 15721 - fix major memory leak and resultant slowdown on JavaScript iBench from 15722 my PassRefPtr changes 15723 15724 * kjs/ustring.cpp: 15725 (KJS::UString::Rep::create): I forgot to change one of the two overloads to create 15726 with a refcount of 0 instead of 1 (the smart pointer then bumps it. But instead of 15727 changing it, I changed both to start with a refcounter of 1 and use PassRefPtr::adopt 15728 to adopt the initial refcount, this may be a hair more efficient. 15729 15730 - made the assignment operators for smart pointers inline because Shark said so 15731 15732 * kxmlcore/PassRefPtr.h: 15733 (KXMLCore::::operator=): 15734 * kxmlcore/RefPtr.h: 15735 (KXMLCore::::operator=): 15736 157372005-12-06 Anders Carlsson <andersca@mac.com> 15738 15739 Reviewed by Darin. 15740 15741 - fix build when using gcc 4 15742 15743 * kjs/ustring.h: 15744 Make Rep public. 15745 15746 * kxmlcore/PassRefPtr.h: 15747 (KXMLCore::::operator): 15748 Fix a typo. 15749 157502005-12-05 Maciej Stachowiak <mjs@apple.com> 15751 15752 Reviewed by Eric. 15753 15754 - add PassRefPtr, a smart pointer class that works in conjunction 15755 with RefPtr but has transfer-of-ownership semantics 15756 - apply RefPtr and PassRefPtr to UString 15757 - cleaned up UString a little so that it doesn't need to have so many friend classes 15758 15759 * JavaScriptCore.xcodeproj/project.pbxproj: 15760 * kjs/identifier.cpp: 15761 (KJS::Identifier::add): 15762 * kjs/identifier.h: 15763 (KJS::Identifier::Identifier): 15764 (KJS::Identifier::equal): 15765 * kjs/property_map.cpp: 15766 (KJS::PropertyMap::get): 15767 (KJS::PropertyMap::getLocation): 15768 (KJS::PropertyMap::put): 15769 (KJS::PropertyMap::remove): 15770 * kjs/ustring.cpp: 15771 (KJS::UCharReference::operator=): 15772 (KJS::UCharReference::ref): 15773 (KJS::UString::Rep::createCopying): 15774 (KJS::UString::Rep::create): 15775 (KJS::UString::usedCapacity): 15776 (KJS::UString::usedPreCapacity): 15777 (KJS::UString::expandCapacity): 15778 (KJS::UString::expandPreCapacity): 15779 (KJS::UString::UString): 15780 (KJS::UString::spliceSubstringsWithSeparators): 15781 (KJS::UString::append): 15782 (KJS::UString::operator=): 15783 (KJS::UString::toStrictUInt32): 15784 (KJS::UString::substr): 15785 (KJS::UString::copyForWriting): 15786 (KJS::operator==): 15787 * kjs/ustring.h: 15788 (KJS::UString::UString): 15789 (KJS::UString::~UString): 15790 (KJS::UString::data): 15791 (KJS::UString::isNull): 15792 (KJS::UString::isEmpty): 15793 (KJS::UString::size): 15794 (KJS::UString::rep): 15795 * kxmlcore/RefPtr.h: 15796 (KXMLCore::RefPtr::RefPtr): 15797 (KXMLCore::RefPtr::operator*): 15798 (KXMLCore::::operator): 15799 (KXMLCore::operator==): 15800 (KXMLCore::operator!=): 15801 (KXMLCore::static_pointer_cast): 15802 (KXMLCore::const_pointer_cast): 15803 158042005-12-04 Geoffrey Garen <ggaren@apple.com> 15805 15806 Update test results to match Anders's last checkin. 15807 15808 * tests/mozilla/expected.html: 15809 158102005-12-04 Anders Carlsson <andersca@mac.com> 15811 15812 Reviewed by Geoffrey. 15813 15814 - Fixes <http://bugs.webkit.org/show_bug.cgi?id=3999> 15815 Object.prototype is missing propertyIsEnumerable 15816 15817 * kjs/object.cpp: 15818 (KJS::ObjectImp::canPut): 15819 Refactor to use getPropertyAttributes. 15820 15821 (KJS::ObjectImp::propertyIsEnumerable): 15822 New function which checks if a property is enumerable. 15823 15824 (KJS::ObjectImp::getPropertyAttributes): 15825 * kjs/object.h: 15826 Add getPropertyAttributes and propertyIsEnumerable. 15827 15828 * kjs/object_object.cpp: 15829 (ObjectPrototypeImp::ObjectPrototypeImp): 15830 (ObjectProtoFuncImp::callAsFunction): 15831 * kjs/object_object.h: 15832 (KJS::ObjectProtoFuncImp::): 15833 Add propertyIsEnumerable to the Object prototype. 15834 158352005-12-01 Maciej Stachowiak <mjs@apple.com> 15836 15837 Reviewed by Tim Hatcher. 15838 15839 - removed deprecated reset, isNull and nonNull methods 15840 15841 * kxmlcore/RefPtr.h: 15842 158432005-12-01 Anders Carlsson <andersca@mac.com> 15844 15845 Reviewed by Darin. 15846 15847 - Fixes <http://bugs.webkit.org/show_bug.cgi?id=3382> 15848 nodes2strings.cpp fails to print left expression of ForInNode when 'var' is not used 15849 15850 Patch by Mark Rowe. 15851 15852 * kjs/nodes2string.cpp: 15853 (ForInNode::streamTo): 15854 Add lexpr if there's no varDecl. 15855 158562005-12-01 Maciej Stachowiak <mjs@apple.com> 15857 15858 Rubber stamped by Eric. 15859 15860 - renamed SharedPtr to RefPtr via script 15861 15862 * JavaScriptCore.xcodeproj/project.pbxproj: 15863 * kjs/function.cpp: 15864 (KJS::GlobalFuncImp::callAsFunction): 15865 * kjs/function.h: 15866 * kjs/function_object.cpp: 15867 (FunctionObjectImp::construct): 15868 * kjs/internal.cpp: 15869 (KJS::Parser::parse): 15870 (KJS::InterpreterImp::checkSyntax): 15871 (KJS::InterpreterImp::evaluate): 15872 * kjs/internal.h: 15873 * kjs/nodes.h: 15874 * kjs/nodes2string.cpp: 15875 (KJS::SourceStream::operator<<): 15876 * kjs/protect.h: 15877 * kxmlcore/RefPtr.h: Added. 15878 (KXMLCore::RefPtr::RefPtr): 15879 (KXMLCore::RefPtr::~RefPtr): 15880 (KXMLCore::RefPtr::isNull): 15881 (KXMLCore::RefPtr::notNull): 15882 (KXMLCore::RefPtr::reset): 15883 (KXMLCore::RefPtr::get): 15884 (KXMLCore::RefPtr::operator*): 15885 (KXMLCore::RefPtr::operator->): 15886 (KXMLCore::RefPtr::operator!): 15887 (KXMLCore::RefPtr::operator UnspecifiedBoolType): 15888 (KXMLCore::::operator): 15889 (KXMLCore::operator==): 15890 (KXMLCore::operator!=): 15891 (KXMLCore::static_pointer_cast): 15892 (KXMLCore::const_pointer_cast): 15893 * kxmlcore/SharedPtr.h: Removed. 15894 158952005-11-30 Maciej Stachowiak <mjs@apple.com> 15896 15897 Reviewed by Dave Hyatt. 15898 15899 - change idiom used for implicit bool conversion of smart pointers, because the old one gives weird error messages sometimes 15900 15901 * kjs/protect.h: 15902 (KJS::ProtectedPtr::operator UnspecifiedBoolType): 15903 * kxmlcore/SharedPtr.h: 15904 (KXMLCore::SharedPtr::operator UnspecifiedBoolType): 15905 159062005-11-29 Mitz Pettel <opendarwin.org@mitzpettel.com> 15907 15908 Reviewed by ggaren. Committed by eseidel. 15909 15910 Date conversion to local time gets the DST flag wrong sometimes 15911 http://bugs.webkit.org/show_bug.cgi?id=5514 15912 15913 * kjs/date_object.cpp: 15914 (KJS::isTime_tSigned): 15915 (KJS::DateProtoFuncImp::callAsFunction): 15916 159172005-11-26 Maciej Stachowiak <mjs@apple.com> 15918 15919 Rubber stamped by Eric. 15920 15921 - renamed InterpreterLock to JSLock 15922 15923 * bindings/NP_jsobject.cpp: 15924 (_NPN_Invoke): 15925 (_NPN_Evaluate): 15926 (_NPN_GetProperty): 15927 (_NPN_SetProperty): 15928 (_NPN_RemoveProperty): 15929 (_NPN_HasProperty): 15930 (_NPN_HasMethod): 15931 (_NPN_SetException): 15932 * bindings/jni/jni_jsobject.cpp: 15933 (JSObject::call): 15934 (JSObject::eval): 15935 (JSObject::getMember): 15936 (JSObject::setMember): 15937 (JSObject::removeMember): 15938 (JSObject::getSlot): 15939 (JSObject::setSlot): 15940 (JSObject::toString): 15941 (JSObject::convertJObjectToValue): 15942 * bindings/objc/WebScriptObject.mm: 15943 (-[WebScriptObject callWebScriptMethod:withArguments:]): 15944 (-[WebScriptObject evaluateWebScript:]): 15945 (-[WebScriptObject setValue:forKey:]): 15946 (-[WebScriptObject valueForKey:]): 15947 (-[WebScriptObject removeWebScriptKey:]): 15948 (-[WebScriptObject stringRepresentation]): 15949 (-[WebScriptObject webScriptValueAtIndex:]): 15950 (-[WebScriptObject setWebScriptValueAtIndex:value:]): 15951 (+[WebScriptObject _convertValueToObjcValue:originExecutionContext:executionContext:]): 15952 * bindings/runtime.cpp: 15953 (Instance::createRuntimeObject): 15954 * bindings/runtime_root.cpp: 15955 (KJS::Bindings::addNativeReference): 15956 (KJS::Bindings::removeNativeReference): 15957 (RootObject::removeAllNativeReferences): 15958 * bindings/runtime_root.h: 15959 (KJS::Bindings::RootObject::~RootObject): 15960 (KJS::Bindings::RootObject::setRootObjectImp): 15961 * bindings/testbindings.cpp: 15962 (main): 15963 * bindings/testbindings.mm: 15964 (main): 15965 * kjs/JSLock.cpp: 15966 (KJS::initializeJSLock): 15967 (KJS::JSLock::lock): 15968 (KJS::JSLock::unlock): 15969 (KJS::JSLock::lockCount): 15970 (KJS::JSLock::DropAllLocks::DropAllLocks): 15971 (KJS::JSLock::DropAllLocks::~DropAllLocks): 15972 * kjs/JSLock.h: 15973 (KJS::JSLock::JSLock): 15974 (KJS::JSLock::~JSLock): 15975 * kjs/collector.cpp: 15976 (KJS::Collector::allocate): 15977 (KJS::Collector::collect): 15978 * kjs/internal.cpp: 15979 (KJS::InterpreterImp::InterpreterImp): 15980 (KJS::InterpreterImp::clear): 15981 (KJS::InterpreterImp::checkSyntax): 15982 (KJS::InterpreterImp::evaluate): 15983 * kjs/interpreter.cpp: 15984 (Interpreter::evaluate): 15985 * kjs/protect.h: 15986 (KJS::::ProtectedPtr): 15987 (KJS::::~ProtectedPtr): 15988 (KJS::::operator): 15989 * kjs/protected_reference.h: 15990 (KJS::ProtectedReference::ProtectedReference): 15991 (KJS::ProtectedReference::~ProtectedReference): 15992 (KJS::ProtectedReference::operator=): 15993 * kjs/protected_values.cpp: 15994 (KJS::ProtectedValues::getProtectCount): 15995 (KJS::ProtectedValues::increaseProtectCount): 15996 (KJS::ProtectedValues::decreaseProtectCount): 15997 * kjs/testkjs.cpp: 15998 (TestFunctionImp::callAsFunction): 15999 (main): 16000 160012005-11-26 Darin Adler <darin@apple.com> 16002 16003 Reviewed by eseidel. Committed by eseidel. 16004 16005 Inline ScopeChain functions for speed. 16006 http://bugs.webkit.org/show_bug.cgi?id=5687 16007 16008 * kjs/object.h: 16009 (KJS::ScopeChain::mark): 16010 * kjs/scope_chain.cpp: 16011 * kjs/scope_chain.h: 16012 (KJS::ScopeChain::ref): 16013 (KJS::ScopeChain::operator=): 16014 (KJS::ScopeChain::bottom): 16015 (KJS::ScopeChain::push): 16016 (KJS::ScopeChain::pop): 16017 160182005-11-21 Maciej Stachowiak <mjs@apple.com> 16019 16020 Reviewed by Geoff. 16021 16022 <rdar://problem/4139620> Seed: WebKit: hang when sending XMLHttpRequest if automatic proxy config is used 16023 16024 Also factored locking code completely into a separate class, and 16025 added a convenient packaged way to temporarily drop locks. 16026 16027 * JavaScriptCore.xcodeproj/project.pbxproj: 16028 * kjs/JSLock.cpp: Added. 16029 (KJS::initializeInterpreterLock): 16030 (KJS::InterpreterLock::lock): 16031 (KJS::InterpreterLock::unlock): 16032 (KJS::InterpreterLock::lockCount): 16033 (KJS::InterpreterLock::DropAllLocks::DropAllLocks): 16034 (KJS::InterpreterLock::DropAllLocks::~DropAllLocks): 16035 * kjs/JSLock.h: Added. 16036 (KJS::InterpreterLock::InterpreterLock): 16037 (KJS::InterpreterLock::~InterpreterLock): 16038 * kjs/internal.cpp: 16039 * kjs/internal.h: 16040 * kjs/interpreter.cpp: 16041 * kjs/interpreter.h: 16042 * kjs/protect.h: 16043 * kjs/testkjs.cpp: 16044 (TestFunctionImp::callAsFunction): 16045 160462005-11-21 Eric Seidel <eseidel@apple.com> 16047 16048 Rubber-stamped by hyatt. 16049 16050 Removed JavaScriptCore+SVG target. 16051 16052 * JavaScriptCore.xcodeproj/project.pbxproj: 16053 160542005-11-15 Geoffrey Garen <ggaren@apple.com> 16055 16056 Reviewed by mjs. 16057 16058 - Fixed <rdar://problem/4342216> Installer crash in 16059 KJS::ValueImp::marked() when garbage collector runs inside call to 16060 ConstantValues::init() 16061 16062 I took responsibility for initializing and marking ConstantValues away 16063 from InterpreterImp, since it's possible to reference such a value 16064 before any interpreter has been created and after the last interpreter 16065 has been destroyed. 16066 16067 InterpreterImp::lock now initializes ConstantValues. It's a good 16068 place for the initialization because you have to call it before 16069 creating any objects. Since ::lock can be called more than once, 16070 I added a check in ConstantValues::init to ensure that it executes 16071 only once. 16072 16073 Collector:collect is now responsible for marking ConstantValues. 16074 16075 We no longer clear the ConstantValues since we can't guarantee that no 16076 one has a reference to them. 16077 16078 FIXME: This is hackery. The long-term plan is to make ConstantValues 16079 use immediate values that require no initialization. 16080 16081 * ChangeLog: 16082 * kjs/collector.cpp: 16083 (KJS::Collector::collect): 16084 * kjs/internal.cpp: 16085 (KJS::InterpreterImp::InterpreterImp): 16086 (KJS::InterpreterImp::lock): 16087 (KJS::InterpreterImp::clear): 16088 (KJS::InterpreterImp::mark): 16089 * kjs/internal.h: 16090 * kjs/value.cpp: 16091 (KJS::ConstantValues::initIfNeeded): 16092 * kjs/value.h: 16093 160942005-11-08 Geoffrey Garen <ggaren@apple.com> 16095 16096 Reviewed by Darin. 16097 16098 This patch fixes some naughty naughty code -- 5 crashes and 2 16099 may-go-haywire-in-the-futures. 16100 16101 One such crash is <rdar://problem/4247330> 8C46 Crash with with 16102 incomplete parameter list to webScript object function. 16103 16104 I replaced early returns from within NS_DURINGs with calls to 16105 NS_VALUERETURN because the doc says, "You cannot use goto or 16106 return to exit an exception handling domain -- errors will result." 16107 16108 I replaced hard-coded analyses of -[NSMethodSignature 16109 methodReturnType] with more abstracted alternatives, since 16110 the documentation says "This encoding is implementation-specific, 16111 so applications should use it with caution," and then emits an 16112 evil cackle. 16113 16114 I removed the early return in the case where a JavaScript caller 16115 supplies an insufficient number of arguments, because the right 16116 thing to do in such a case is to use JavaScript's defined behavior 16117 of supplying "undefined" for any missing arguments. 16118 16119 I also changed ObjcInstance::invokeMethod so that it no longer 16120 deletes the method passed to it. It doesn't create the method, 16121 so it shouldn't delete it. A friend of mine named 16122 KERNEL_PROTECTION_FAILURE agrees with me on this point. 16123 16124 Finally, I changed an assert(true) to assert(false) because 16125 all the other asserts were making fun of it. 16126 16127 * bindings/objc/objc_instance.mm: 16128 (ObjcInstance::invokeMethod): 16129 (ObjcInstance::invokeDefaultMethod): 16130 161312005-11-06 Geoffrey Garen <ggaren@apple.com> 16132 16133 Reviewed by Darin. 16134 16135 - Fixed http://bugs.webkit.org/show_bug.cgi?id=5571 16136 REGRESSION (412.5-TOT): duplicated words/sentences at 16137 shakespeer.sourceforge.net 16138 16139 Our UTF16-modified PCRE didn't work with extended character classes 16140 (classes involving characters > 255) because it used the GETCHARINC 16141 macro to read through them. In UTF16 mode, GETCHARINC expects UTF16 16142 input, but PCRE encodes character classes in UTF8 regardless of the 16143 input mode of the subject string. 16144 16145 The fix is to explicitly define GETUTF8CHARINC, and to use it, 16146 rather than GETCHARINC, when reading extended character classes. 16147 16148 In UTF8 mode, we simply define GETCHARINC to be GETUTF8CHARINC. 16149 16150 * pcre/pcre_internal.h: 16151 * pcre/pcre_xclass.c: 16152 (_pcre_xclass): 16153 161542005-11-05 Geoffrey Garen <ggaren@apple.com> 16155 16156 Patch by Mitz Pettel, reviewed by Maciej. 16157 16158 - Fixed http://bugs.webkit.org/show_bug.cgi?id=5357 16159 REGRESSION: Scriptable plugin hides properties of OBJECT element 16160 16161 * bindings/objc/objc_class.mm: 16162 (KJS::Bindings::ObjcClass::fallbackObject): 16163 161642005-11-05 Geoffrey Garen <ggaren@apple.com> 16165 16166 Reviewed by Darin. 16167 16168 - Fixed http://bugs.webkit.org/show_bug.cgi?id=5409 16169 slice() testcase doesn't pass 16170 16171 Modified String.slice to deal with funky values. 16172 Updated test results. We now pass <js1_2/String/slice.js>. 16173 16174 * kjs/string_object.cpp: 16175 (StringProtoFuncImp::callAsFunction): 16176 * tests/mozilla/expected.html: 16177 161782005-11-04 Darin Adler <darin@apple.com> 16179 16180 Reviewed by Tim Hatcher. 16181 16182 * kxmlcore/HashSet.h: Fixed case of "hashfunctions.h" -- needs to be "HashFunctions.h". 16183 161842005-11-03 Timothy Hatcher <timothy@apple.com> 16185 16186 Reviewed by Darin and Vicki. 16187 16188 * JavaScriptCore.xcodeproj/project.pbxproj: 16189 Change to use $(SYSTEM_LIBRARY_DIR) consistently and place 16190 $(NEXT_ROOT) in a few spots to make build-root work. 16191 161922005-11-03 Geoffrey Garen <ggaren@apple.com> 16193 16194 - Updated JavaScriptCore test results to reflect recent fixes. 16195 16196 * tests/mozilla/expected.html: 16197 161982005-11-03 Geoffrey Garen <ggaren@apple.com> 16199 16200 Reviewed by darin. 16201 16202 - Fixed http://bugs.webkit.org/show_bug.cgi?id=5602 16203 REGRESSION: RegExp("[^\\s$]+", "g") returns extra matches 16204 16205 We now update lastIndex relative to the start of the last match, 16206 rather than the start of the last search. We used to assume that 16207 the two were equal, but that is not the case when a pattern 16208 matches at a character after the first in the string. 16209 16210 * kjs/regexp_object.cpp: 16211 (RegExpProtoFuncImp::callAsFunction): 16212 162132005-10-24 John Sullivan <sullivan@apple.com> 16214 16215 Reviewed by Darin Adler. Code changes by Alexey Proskuryakov. 16216 16217 - fixed http://bugs.webkit.org/show_bug.cgi?id=4931 16218 Unicode format characters (Cf) should be removed from JavaScript source 16219 16220 * kjs/lexer.cpp: 16221 include <unicode/uchar.h> 16222 (Lexer::Lexer): 16223 use KJS::UChar instead of UChar to avoid ambiguity caused by new include 16224 (Lexer::setCode): 16225 ditto; also, use shift(4) to skip first 4 chars to take advantage of new 16226 logic there. 16227 (Lexer::shift): 16228 skip chars of type U_FORMAT_CHAR 16229 (Lexer::convertUnicode): 16230 use KJS::UChar instead of UChar to avoid ambiguity caused by new include 16231 (Lexer::record16): 16232 ditto 16233 (Lexer::makeIdentifier): 16234 ditto 16235 (Lexer::makeUString): 16236 ditto 16237 16238 * tests/mozilla/ecma/Array/15.4.5.1-1.js: 16239 updated to skip soft hyphens 16240 162412005-10-24 John Sullivan <sullivan@apple.com> 16242 16243 Reviewed by Darin Adler. Code changes by George Staikos/Geoff Garen. 16244 16245 - fixed http://bugs.webkit.org/show_bug.cgi?id=4142 16246 Date object does not always adjust daylight savings correctly 16247 16248 * kjs/date_object.cpp: 16249 (KJS::makeTime): 16250 Fix the case where a time change crosses the daylight savings start/end dates. 16251 162522005-10-17 Maciej Stachowiak <mjs@apple.com> 16253 16254 Reviewed by Geoff. Code changes by Darin. 16255 16256 - some micro-optimizations to FastMalloc to reduce math and branches. 16257 16258 * kxmlcore/FastMalloc.cpp: 16259 (KXMLCore::TCMalloc_Central_FreeList::Populate): 16260 (KXMLCore::fastMallocRegisterThread): 16261 (KXMLCore::TCMalloc_ThreadCache::GetCache): 16262 (KXMLCore::TCMalloc_ThreadCache::GetCacheIfPresent): 16263 162642005-10-15 Maciej Stachowiak <mjs@apple.com> 16265 16266 Reverted fix for this bug, because it was part of a time range that caused a performance 16267 regression: 16268 16269 <rdar://problem/4260481> Remove Reference type from JavaScriptCore 16270 162712005-10-15 Darin Adler <darin@apple.com> 16272 16273 * kxmlcore/HashTable.cpp: Fixed build failure (said hashtable.h instead of HashTable.h). 16274 162752005-10-14 Geoffrey Garen <ggaren@apple.com> 16276 16277 Style changes recommended by Darin. 16278 16279 Changed to camelCase, changed ValueImp* to ValueImp *. 16280 16281 * kjs/simple_number.h: 16282 (KJS::SimpleNumber::make): 16283 (KJS::SimpleNumber::value): 16284 162852005-10-11 Geoffrey Garen <ggaren@apple.com> 16286 16287 Added regexp_object.lut.h build phase from JavaScriptCore 16288 to JavaScriptCore+SVG. 16289 16290 Reviewed by mitz. 16291 16292 * JavaScriptCore.xcodeproj/project.pbxproj: 16293 162942005-10-11 Geoffrey Garen <ggaren@apple.com> 16295 16296 Fixed build bustage from last checkin (stray characters 16297 in the project file). 16298 16299 Reviewed by mitz. 16300 16301 * JavaScriptCore.xcodeproj/project.pbxproj: 16302 163032005-10-11 Geoffrey Garen <ggaren@apple.com> 16304 16305 New JavaScriptCore test results to reflect the last change. 16306 16307 * tests/mozilla/expected.html: 16308 163092005-10-10 Geoffrey Garen <ggaren@apple.com> 16310 16311 - Implemented caching of match state inside the global RegExp object 16312 (lastParen, leftContext, rightContext, lastMatch, input). 16313 16314 exec(), test(), match(), search(), and replace() now dipatch regular 16315 expression matching through the RegExp object's performMatch function, 16316 to facilitate caching. This replaces registerRegexp and 16317 setSubPatterns. 16318 16319 - Implemented the special '$' aliases (e.g. RegExp.input aliases to 16320 RegExp.$_). 16321 16322 - Moved support for backreferences into the new static hash table 16323 used for other special RegExp properties. Truncated backreferences 16324 at $9 to match IE, FF, and the "What's New in Netscape 1.2?" doc. 16325 (String.replace still supports double-digit backreferences.) 16326 16327 - Tweaked RegExp.prototype.exec to handle ginormous values in lastIndex. 16328 16329 Fixes 11 -- count em, 11 -- JavaScriptCore tests. 16330 16331 * fast/js/regexp-caching-expected.txt: Added. 16332 * fast/js/regexp-caching.html: Added. 16333 16334 Reviewed by mjs. 16335 16336 * JavaScriptCore.xcodeproj/project.pbxproj: Added regexp_object.lut.h 16337 * kjs/create_hash_table: Tweaked to allow for more exotic characters. 16338 We now rely on the compiler to catch illegal 16339 identifiers. 16340 * kjs/regexp.cpp: 16341 (KJS::RegExp::RegExp): 16342 * kjs/regexp_object.cpp: 16343 (RegExpProtoFuncImp::callAsFunction): 16344 (RegExpObjectImp::RegExpObjectImp): 16345 (RegExpObjectImp::performMatch): 16346 (RegExpObjectImp::arrayOfMatches): 16347 (RegExpObjectImp::backrefGetter): 16348 (RegExpObjectImp::getLastMatch): 16349 (RegExpObjectImp::getLastParen): 16350 (RegExpObjectImp::getLeftContext): 16351 (RegExpObjectImp::getRightContext): 16352 (RegExpObjectImp::getOwnPropertySlot): 16353 (RegExpObjectImp::getValueProperty): 16354 (RegExpObjectImp::put): 16355 (RegExpObjectImp::putValueProperty): 16356 * kjs/regexp_object.h: 16357 (KJS::RegExpObjectImp::): 16358 * kjs/string_object.cpp: 16359 (substituteBackreferences): 16360 (replace): 16361 (StringProtoFuncImp::callAsFunction): 16362 163632005-10-09 Darin Adler <darin@apple.com> 16364 16365 Reviewed by Maciej; some changes done after review. 16366 16367 - fixed <rdar://problem/4092064> hanging loading page; rte.ie (works in IE and Firefox) 16368 - fixed http://bugs.webkit.org/show_bug.cgi?id=5280 16369 Date.setMonth fails with negative values 16370 - fixed http://bugs.webkit.org/show_bug.cgi?id=5154 16371 JSC should switch to _r variants of unix time/date functions 16372 - fixed a few possible overflow cases 16373 16374 Retested all tests to be sure nothing broke; added layout test for bug 5280. 16375 16376 * kjs/config.h: Removed TIME_WITH_SYS_TIME define. Also set HAVE_SYS_TIMEB_H 16377 for the __APPLE__ case (the latter is accurate but irrelevant). 16378 16379 * kjs/date_object.h: Reformatted. Removed unnecessary include of "function_object.h". 16380 Moved declarations of helper classes and functions into the cpp file. 16381 16382 * kjs/date_object.cpp: Removed code at top to define macros to use CoreFoundation instead of 16383 POSIX date functions. 16384 (KJS::styleFromArgString): Tweaked to return early instead of using a variable. 16385 (KJS::formatLocaleDate): Tweaked to check for undefined rather than checking argument count. 16386 (KJS::formatDate): Made parameter const. 16387 (KJS::formatDateUTCVariant): Ditto. 16388 (KJS::formatTime): Ditto. 16389 (KJS::DateProtoFuncImp::callAsFunction): Use gmtime_r and localtime_r instead of gmtime and 16390 localtime. 16391 (KJS::DateObjectImp::callAsFunction): Use localtime_r instead of localtime. 16392 (KJS::ymdhmsToSeconds): Renamed from ymdhms_to_seconds. Changed computation to avoid possible 16393 overflow if year is an extremely large or small number. 16394 (KJS::makeTime): Removed code to move large month numbers from tm_mon to tm_year; this was 16395 to accomodate CFGregorianDate, which is no longer used (and didn't handle negative values). 16396 (KJS::parseDate): Renamed from KRFCDate_parseDate; changed to return a value in milliseconds 16397 rather than in seconds. Reformatted the code. Changed to use UTF8String() instead of ascii(), 16398 since ascii() is not thread safe. Changed some variables back from int to long to avoid 16399 trouble if the result of strtol does not fit in an int (64-bit issue only). 16400 164012005-10-08 Mitz Pettel <opendarwin.org@mitzpettel.com> 16402 16403 Reviewed by Geoff. 16404 Tweaked and landed by Darin. 16405 16406 - fixed http://bugs.webkit.org/show_bug.cgi?id=5266 16407 Support parenthesized comments in Date.parse() 16408 16409 * kjs/date_object.cpp: 16410 (KJS::skipSpacesAndComments): Take a pointer, and advance it past spaces, 16411 and also past anything enclosed in parentheses. 16412 (KJS::KRFCDate_parseDate): Use skipSpacesAndComments wherever we formerly had 16413 code to skip spaces. 16414 164152005-10-08 Justin Haygood <justin@xiondigital.net> 16416 16417 Reviewed, tweaked, and landed by Darin. 16418 16419 - fixed http://bugs.webkit.org/show_bug.cgi?id=5189 16420 pcre_exec.c fails to compile using MSVC 16421 - fixed http://bugs.webkit.org/show_bug.cgi?id=5190 16422 KJS config.h adjustment for Win32 16423 16424 * kjs/config.h: Make sure HAVE_MMAP and HAVE_SBRK are off for Win32. 16425 Turn HAVE_ERRNO_H on for Mac OS X. Sort defines so they are easy to compare 16426 with each other. Remove #undef of DEBUG_COLLECTOR. 16427 * pcre/pcre_exec.c: (match): Work around strange MSVC complaint by splitting 16428 the definition of a local variable into a separate declaration and 16429 initialization. 16430 164312005-10-05 Geoffrey Garen <ggaren@apple.com> 16432 16433 - Darin and I rewrote our implementation of the SimpleNumber class 16434 to store number bit patterns in their floating point formats. 16435 16436 My tweaks reviewed by Darin. 16437 16438 ~1% speedup on JS iBench. 16439 16440 * kjs/internal.h: removed obsolete jsNumber declarations. 16441 * kjs/math_object.cpp: 16442 (MathFuncImp::callAsFunction): changed KJS::isNaN to isNaN 16443 * kjs/nodes.cpp: 16444 (PostfixResolveNode::evaluate): removed obsolete knownToBeInteger 16445 (PostfixBracketNode::evaluate): ditto 16446 (PostfixDotNode::evaluate): ditto 16447 (PrefixResolveNode::evaluate): ditto 16448 (PrefixBracketNode::evaluate): ditto 16449 (PrefixDotNode::evaluate): ditto 16450 (NegateNode::evaluate): ditto 16451 (valueForReadModifyAssignment): ditto 16452 * kjs/number_object.cpp: removed obsolete comment 16453 * kjs/operations.cpp: 16454 (KJS::equal): removed unnecessary isNaN checks 16455 (KJS::strictEqual): ditto 16456 (KJS::add): removed obsolete knownToBeInteger 16457 (KJS::mult): ditto 16458 * kjs/operations.h: removed include of "value.h" to prevent circular reference 16459 * kjs/simple_number.h: removed unnecessary #includes 16460 (KJS::SimpleNumber::make): see above 16461 (KJS::SimpleNumber::is): ditto 16462 (KJS::SimpleNumber::value): ditto 16463 * kjs/string_object.cpp: 16464 (StringProtoFuncImp::callAsFunction): changed KJS::isNaN to isNaN 16465 * kjs/ustring.cpp: removed unnecessary isNaN check 16466 (KJS::UString::toUInt32): ditto 16467 * kjs/value.cpp: 16468 (KJS::jsNumber): removed obsolete jsNumber definitions 16469 (KJS::ConstantValues::init): NaN is no longer a ConstantValue 16470 (KJS::ConstantValues::clear): ditto 16471 (KJS::ConstantValues::mark): ditto 16472 * kjs/value.h: removed obsolete knownToBeInteger 16473 (KJS::jsNaN): now returns a SimpleNumber 16474 (KJS::ValueImp::getUInt32): changed to account for NaN being a SimpleNumber 16475 (KJS::ValueImp::toBoolean): ditto 16476 (KJS::ValueImp::toString): changed to account for +/- 0.0 16477 (KJS::jsZero): changed to reflect that SimpleNumber::make takes a double 16478 (KJS::jsOne): ditto 16479 (KJS::jsTwo): ditto 16480 (KJS::Number): removed obsolete non-double constructor declarations 16481 164822005-10-05 Maciej Stachowiak <mjs@apple.com> 16483 16484 Reviewed by Eric. 16485 16486 - fixed <rdar://problem/4260481> Remove Reference type from JavaScriptCore 16487 16488 Also fixed some bugs with for..in enumeration while I was at it. object 16489 properties now come before prototype properties and duplicates 16490 between object and prototype are listed only once. 16491 16492 * JavaScriptCore.xcodeproj/project.pbxproj: 16493 * kjs/IdentifierSequencedSet.cpp: Added. 16494 (KJS::IdentifierSequencedSet::IdentifierSequencedSet): 16495 (KJS::IdentifierSequencedSet::deallocateVector): 16496 (KJS::IdentifierSequencedSet::~IdentifierSequencedSet): 16497 (KJS::IdentifierSequencedSet::insert): 16498 * kjs/IdentifierSequencedSet.h: Added. 16499 (KJS::IdentifierSequencedSetIterator::IdentifierSequencedSetIterator): 16500 (KJS::IdentifierSequencedSetIterator::operator*): 16501 (KJS::IdentifierSequencedSetIterator::operator->): 16502 (KJS::IdentifierSequencedSetIterator::operator++): 16503 (KJS::IdentifierSequencedSetIterator::operator==): 16504 (KJS::IdentifierSequencedSetIterator::operator!=): 16505 (KJS::IdentifierSequencedSet::begin): 16506 (KJS::IdentifierSequencedSet::end): 16507 (KJS::IdentifierSequencedSet::size): 16508 * kjs/array_instance.h: 16509 * kjs/array_object.cpp: 16510 (ArrayInstanceImp::getPropertyNames): 16511 (ArrayInstanceImp::setLength): 16512 (ArrayInstanceImp::pushUndefinedObjectsToEnd): 16513 * kjs/nodes.cpp: 16514 (ForInNode::execute): 16515 * kjs/nodes.h: 16516 * kjs/object.cpp: 16517 (KJS::ObjectImp::getPropertyNames): 16518 * kjs/object.h: 16519 * kjs/property_map.cpp: 16520 (KJS::PropertyMap::getEnumerablePropertyNames): 16521 (KJS::PropertyMap::getSparseArrayPropertyNames): 16522 * kjs/property_map.h: 16523 * kjs/protect.h: 16524 * kjs/protected_reference.h: Removed. 16525 * kjs/reference.cpp: Removed. 16526 * kjs/reference.h: Removed. 16527 * kjs/reference_list.cpp: Removed. 16528 * kjs/reference_list.h: Removed. 16529 * kjs/ustring.h: 16530 (KJS::UString::impl): 16531 * kxmlcore/HashSet.h: 16532 165332005-10-04 Eric Seidel <eseidel@apple.com> 16534 16535 Reviewed by mjs. 16536 16537 Code cleanup, which resulted in a small win on iBench. 16538 16539 * kjs/object.cpp: 16540 (KJS::tryGetAndCallProperty): new static inline 16541 (KJS::ObjectImp::defaultValue): code cleanup 16542 165432005-10-03 Maciej Stachowiak <mjs@apple.com> 16544 16545 Patch from George Staikos <staikos@kde.org>, reviewed and tweaked a bit by me. 16546 16547 - more Linux build fixes 16548 16549 * kjs/operations.cpp: 16550 * kxmlcore/FastMalloc.h: 16551 * kxmlcore/TCSystemAlloc.cpp: 16552 (TCMalloc_SystemAlloc): 16553 165542005-10-03 Maciej Stachowiak <mjs@apple.com> 16555 16556 Patch from George Staikos <staikos@kde.org>, reviewed and tweaked a bit by me. 16557 16558 http://bugs.webkit.org/show_bug.cgi?id=5174 16559 Add support for compiling on Linux (likely to help for other POSIX systems too) 16560 16561 * kjs/collector.cpp: 16562 (KJS::Collector::markCurrentThreadConservatively): 16563 (KJS::Collector::markOtherThreadConservatively): 16564 * kjs/config.h: 16565 * kjs/date_object.cpp: 16566 (KJS::formatDate): 16567 (KJS::formatDateUTCVariant): 16568 (KJS::formatTime): 16569 (KJS::timeZoneOffset): 16570 (KJS::DateProtoFuncImp::callAsFunction): 16571 (KJS::DateObjectImp::construct): 16572 (KJS::DateObjectImp::callAsFunction): 16573 (KJS::makeTime): 16574 * kjs/identifier.cpp: 16575 * kjs/internal.cpp: 16576 (KJS::initializeInterpreterLock): 16577 (KJS::lockInterpreter): 16578 (KJS::unlockInterpreter): 16579 (KJS::UndefinedImp::toPrimitive): 16580 (KJS::UndefinedImp::toBoolean): 16581 (KJS::UndefinedImp::toNumber): 16582 (KJS::UndefinedImp::toString): 16583 (KJS::NullImp::toPrimitive): 16584 (KJS::NullImp::toBoolean): 16585 (KJS::NullImp::toNumber): 16586 (KJS::NullImp::toString): 16587 (KJS::BooleanImp::toPrimitive): 16588 (KJS::BooleanImp::toBoolean): 16589 (KJS::BooleanImp::toNumber): 16590 (KJS::BooleanImp::toString): 16591 (KJS::StringImp::toPrimitive): 16592 (KJS::StringImp::toBoolean): 16593 (KJS::StringImp::toNumber): 16594 (KJS::StringImp::toString): 16595 * kjs/internal.h: 16596 * kjs/protected_values.cpp: 16597 165982005-10-03 Maciej Stachowiak <mjs@apple.com> 16599 16600 - fix Development build after last checkin 16601 16602 * kxmlcore/FastMalloc.cpp: 16603 (KXMLCore::fastMallocRegisterThread): 16604 166052005-10-02 Maciej Stachowiak <mjs@apple.com> 16606 16607 Reviewed by Darin. 16608 16609 <rdar://problem/4283967> REGRESSION: 3% regression on PLT from new FastMalloc 16610 http://bugs.webkit.org/show_bug.cgi?id=5243 16611 16612 A number of optimizations to the new threadsafe malloc that make it actually as fast 16613 as dlmalloc (I measured wrong before) and as memory-efficient as the system malloc. 16614 16615 - use fastMalloc for everything - it now gets applied to all new/delete allocations 16616 via a private inline operator new that is now included into every file via config.h. 16617 16618 - tweaked some of the numeric parameters for size classes and amount of wasted memory 16619 allowed per allocation - this saves on memory use and consequently improves speed. 16620 16621 - so long as the allocator is not being used on background threads, get the per-thread 16622 cache from a global variable instead of from pthread_getspecific, since the latter is slow. 16623 16624 - inline more functions, and force the ones GCC refuses to inline with 16625 attribute(always_inline), nearly all of these have one call site so inlining them has 16626 to be a win. 16627 16628 - use some tricks to calculate allocation size more efficiently and fewer times for small 16629 allocations, to avoid hitting the huge size table array. 16630 16631 - avoid hitting the per-thread cache on code paths that don't need it. 16632 16633 - implement inline assembly version of spinlock for PowerPC (was already done for x86) 16634 16635 * bindings/NP_jsobject.cpp: 16636 * bindings/c/c_class.cpp: 16637 * bindings/c/c_instance.cpp: 16638 * bindings/c/c_runtime.cpp: 16639 * bindings/c/c_utility.cpp: 16640 * bindings/jni/jni_class.cpp: 16641 * bindings/jni/jni_instance.cpp: 16642 * bindings/jni/jni_jsobject.cpp: 16643 * bindings/jni/jni_objc.mm: 16644 * bindings/jni/jni_runtime.cpp: 16645 * bindings/jni/jni_utility.cpp: 16646 * bindings/npruntime.cpp: 16647 * bindings/objc/WebScriptObject.mm: 16648 * bindings/objc/objc_class.mm: 16649 * bindings/objc/objc_instance.mm: 16650 * bindings/objc/objc_runtime.mm: 16651 * bindings/objc/objc_utility.mm: 16652 * bindings/runtime.cpp: 16653 * bindings/runtime_array.cpp: 16654 * bindings/runtime_method.cpp: 16655 * bindings/runtime_object.cpp: 16656 * bindings/runtime_root.cpp: 16657 * bindings/testbindings.cpp: 16658 * bindings/testbindings.mm: 16659 * kjs/array_object.cpp: 16660 (ArrayInstanceImp::ArrayInstanceImp): 16661 (ArrayInstanceImp::~ArrayInstanceImp): 16662 (ArrayInstanceImp::resizeStorage): 16663 * kjs/bool_object.cpp: 16664 * kjs/collector.cpp: 16665 (KJS::Collector::registerThread): 16666 * kjs/config.h: 16667 * kjs/debugger.cpp: 16668 * kjs/error_object.cpp: 16669 * kjs/function.cpp: 16670 * kjs/function_object.cpp: 16671 * kjs/identifier.cpp: 16672 (KJS::Identifier::rehash): 16673 * kjs/internal.cpp: 16674 (KJS::Parser::saveNewNode): 16675 (KJS::clearNewNodes): 16676 * kjs/interpreter.cpp: 16677 * kjs/lexer.cpp: 16678 (Lexer::doneParsing): 16679 (Lexer::makeIdentifier): 16680 (Lexer::makeUString): 16681 * kjs/list.cpp: 16682 * kjs/math_object.cpp: 16683 * kjs/nodes.cpp: 16684 * kjs/nodes.h: 16685 * kjs/nodes2string.cpp: 16686 * kjs/number_object.cpp: 16687 (integer_part_noexp): 16688 (char_sequence): 16689 * kjs/object.cpp: 16690 * kjs/object_object.cpp: 16691 * kjs/property_map.cpp: 16692 * kjs/property_slot.cpp: 16693 * kjs/protected_values.cpp: 16694 (KJS::ProtectedValues::rehash): 16695 * kjs/reference.cpp: 16696 * kjs/reference_list.cpp: 16697 * kjs/regexp.cpp: 16698 * kjs/regexp_object.cpp: 16699 * kjs/scope_chain.cpp: 16700 * kjs/scope_chain.h: 16701 * kjs/string_object.cpp: 16702 * kjs/testkjs.cpp: 16703 * kjs/ustring.h: 16704 * kjs/value.cpp: 16705 * kxmlcore/Assertions.mm: 16706 * kxmlcore/FastMalloc.cpp: 16707 (KXMLCore::InitSizeClasses): 16708 (KXMLCore::DLL_IsEmpty): 16709 (KXMLCore::DLL_Prepend): 16710 (KXMLCore::TCMalloc_Central_FreeList::Insert): 16711 (KXMLCore::TCMalloc_Central_FreeList::Remove): 16712 (KXMLCore::TCMalloc_Central_FreeList::Populate): 16713 (KXMLCore::TCMalloc_ThreadCache::Allocate): 16714 (KXMLCore::TCMalloc_ThreadCache::FetchFromCentralCache): 16715 (KXMLCore::fastMallocRegisterThread): 16716 (KXMLCore::TCMalloc_ThreadCache::GetCache): 16717 (KXMLCore::TCMalloc_ThreadCache::GetCacheIfPresent): 16718 (KXMLCore::TCMalloc_ThreadCache::CreateCacheIfNecessary): 16719 (KXMLCore::do_malloc): 16720 (KXMLCore::do_free): 16721 (KXMLCore::realloc): 16722 * kxmlcore/FastMalloc.h: 16723 (operator new): 16724 (operator delete): 16725 (operator new[]): 16726 (operator delete[]): 16727 * kxmlcore/HashTable.cpp: 16728 * kxmlcore/TCSpinLock.h: 16729 (TCMalloc_SpinLock::Lock): 16730 (TCMalloc_SpinLock::Unlock): 16731 (TCMalloc_SlowLock): 16732 * kxmlcore/TCSystemAlloc.cpp: 16733 167342005-09-30 Geoffrey Garen <ggaren@apple.com> 16735 16736 - Second cut at fixing <rdar://problem/4275206> Denver Regression: Seed: 16737 Past Editions of Opinions display "NAN/Undefined" for www.washingtonpost.com 16738 16739 Reviewed by john. 16740 16741 * kjs/date_object.cpp: 16742 (KJS::KRFCDate_parseDate): Intead of creating a timezone when one isn't specified, 16743 just rely on the fallback logic, which will do it for you. Also, return invalidDate 16744 if the date includes trailing garbage. (Somewhat accidentally, the timezone logic 16745 used to catch trailing garbage.) 16746 16747 Added test case to fast/js/date-parse-test.html. 16748 167492005-09-29 Eric Seidel <eseidel@apple.com> 16750 Fix from Mitz Pettel <opendarwin.org@mitzpettel.com> 16751 16752 Reviewed by darin. 16753 16754 Fix JSC memory smasher in TOT. 16755 http://bugs.webkit.org/show_bug.cgi?id=5176 16756 16757 * pcre/pcre_exec.c: 16758 (match): 16759 167602005-09-29 Eric Seidel <eseidel@apple.com> 16761 Fix from Mitz Pettel <opendarwin.org@mitzpettel.com> 16762 16763 Reviewed by mjs. 16764 16765 * JavaScriptCore.xcodeproj/project.pbxproj: 16766 Build fix for JSC+SVG after 5161. 16767 http://bugs.webkit.org/show_bug.cgi?id=5179 16768 167692005-09-28 Geoffrey Garen <ggaren@apple.com> 16770 16771 - Fixed <rdar://problem/4275206> Denver Regression: Seed: Past Editions of Opinions display 16772 "NAN/Undefined" for www.washingtonpost.com 16773 16774 Reviewed by darin. 16775 16776 * kjs/date_object.cpp: 16777 (KJS::KRFCDate_parseDate): If the timezone isn't specified, rather than returning 16778 invalidDate, substitute the local timezone. This matches the behavior of FF/IE. 16779 167802005-09-28 Maciej Stachowiak <mjs@apple.com> 16781 16782 Patch from George Staikos, reviewed by me. 16783 16784 - fixed some compile issues on Linux 16785 16786 * kjs/property_slot.h: 16787 * kjs/simple_number.h: 16788 167892005-09-27 Maciej Stachowiak <mjs@apple.com> 16790 16791 Reviewed by Eric. 16792 16793 - move HashMap/HashSet code down to JavaScriptCore 16794 http://bugs.webkit.org/show_bug.cgi?id=5161 16795 16796 * JavaScriptCore.xcodeproj/project.pbxproj: 16797 * kjs/internal.cpp: 16798 (KJS::interpreterMap): Function that fetches the interpreter map on demand. 16799 (KJS::InterpreterImp::InterpreterImp): Replace use of InterpreterMap 16800 class with an appropriate HashMap. 16801 (KJS::InterpreterImp::clear): ditto 16802 (KJS::InterpreterImp::interpreterWithGlobalObject): ditto 16803 * kjs/interpreter_map.cpp: Removed. 16804 * kjs/interpreter_map.h: Removed. 16805 16806 The HashMap/HashSet code (copied and slightly tweaked from WebCore) 16807 16808 * kxmlcore/HashFunctions.h: Added. 16809 (KXMLCore::4): 16810 (KXMLCore::8): 16811 (KXMLCore::): 16812 (KXMLCore::PointerHash::hash): 16813 (KXMLCore::PointerHash::equal): 16814 * kxmlcore/HashMap.h: Added. 16815 (KXMLCore::extractFirst): 16816 (KXMLCore::HashMap::HashMap): 16817 (KXMLCore::::size): 16818 (KXMLCore::::capacity): 16819 (KXMLCore::::isEmpty): 16820 (KXMLCore::::begin): 16821 (KXMLCore::::end): 16822 (KXMLCore::::find): 16823 (KXMLCore::::contains): 16824 (KXMLCore::::set): 16825 (KXMLCore::::get): 16826 (KXMLCore::::remove): 16827 (KXMLCore::::clear): 16828 (KXMLCore::deleteAllValues): 16829 * kxmlcore/HashMapPtrSpec.h: Added. 16830 (KXMLCore::PointerHashIteratorAdapter::PointerHashIteratorAdapter): 16831 (KXMLCore::PointerHashIteratorAdapter::operator*): 16832 (KXMLCore::PointerHashIteratorAdapter::operator->): 16833 (KXMLCore::PointerHashIteratorAdapter::operator++): 16834 (KXMLCore::PointerHashIteratorAdapter::operator==): 16835 (KXMLCore::PointerHashIteratorAdapter::operator!=): 16836 (KXMLCore::PointerHashConstIteratorAdapter::PointerHashConstIteratorAdapter): 16837 (KXMLCore::PointerHashConstIteratorAdapter::operator*): 16838 (KXMLCore::PointerHashConstIteratorAdapter::operator->): 16839 (KXMLCore::PointerHashConstIteratorAdapter::operator++): 16840 (KXMLCore::PointerHashConstIteratorAdapter::operator==): 16841 (KXMLCore::PointerHashConstIteratorAdapter::operator!=): 16842 (KXMLCore::): 16843 * kxmlcore/HashSet.h: Added. 16844 (KXMLCore::identityExtract): 16845 (KXMLCore::convertAdapter): 16846 (KXMLCore::HashSet::HashSet): 16847 (KXMLCore::::size): 16848 (KXMLCore::::capacity): 16849 (KXMLCore::::isEmpty): 16850 (KXMLCore::::begin): 16851 (KXMLCore::::end): 16852 (KXMLCore::::find): 16853 (KXMLCore::::contains): 16854 (KXMLCore::::insert): 16855 (KXMLCore::::remove): 16856 (KXMLCore::::clear): 16857 * kxmlcore/HashTable.cpp: Added. 16858 (KXMLCore::HashTableStats::~HashTableStats): 16859 (KXMLCore::HashTableStats::recordCollisionAtCount): 16860 * kxmlcore/HashTable.h: Added. 16861 (KXMLCore::HashTableIterator::skipEmptyBuckets): 16862 (KXMLCore::HashTableIterator::HashTableIterator): 16863 (KXMLCore::HashTableIterator::operator*): 16864 (KXMLCore::HashTableIterator::operator->): 16865 (KXMLCore::HashTableIterator::operator++): 16866 (KXMLCore::HashTableIterator::operator==): 16867 (KXMLCore::HashTableIterator::operator!=): 16868 (KXMLCore::HashTableConstIterator::HashTableConstIterator): 16869 (KXMLCore::HashTableConstIterator::operator*): 16870 (KXMLCore::HashTableConstIterator::operator->): 16871 (KXMLCore::HashTableConstIterator::skipEmptyBuckets): 16872 (KXMLCore::HashTableConstIterator::operator++): 16873 (KXMLCore::HashTableConstIterator::operator==): 16874 (KXMLCore::HashTableConstIterator::operator!=): 16875 (KXMLCore::HashTable::HashTable): 16876 (KXMLCore::HashTable::~HashTable): 16877 (KXMLCore::HashTable::begin): 16878 (KXMLCore::HashTable::end): 16879 (KXMLCore::HashTable::size): 16880 (KXMLCore::HashTable::capacity): 16881 (KXMLCore::HashTable::insert): 16882 (KXMLCore::HashTable::isEmptyBucket): 16883 (KXMLCore::HashTable::isDeletedBucket): 16884 (KXMLCore::HashTable::isEmptyOrDeletedBucket): 16885 (KXMLCore::HashTable::hash): 16886 (KXMLCore::HashTable::equal): 16887 (KXMLCore::HashTable::identityConvert): 16888 (KXMLCore::HashTable::extractKey): 16889 (KXMLCore::HashTable::lookup): 16890 (KXMLCore::HashTable::shouldExpand): 16891 (KXMLCore::HashTable::mustRehashInPlace): 16892 (KXMLCore::HashTable::shouldShrink): 16893 (KXMLCore::HashTable::shrink): 16894 (KXMLCore::HashTable::clearBucket): 16895 (KXMLCore::HashTable::deleteBucket): 16896 (KXMLCore::HashTable::makeLookupResult): 16897 (KXMLCore::HashTable::makeIterator): 16898 (KXMLCore::HashTable::makeConstIterator): 16899 (KXMLCore::::lookup): 16900 (KXMLCore::::insert): 16901 (KXMLCore::::reinsert): 16902 (KXMLCore::::find): 16903 (KXMLCore::::contains): 16904 (KXMLCore::::remove): 16905 (KXMLCore::::allocateTable): 16906 (KXMLCore::::expand): 16907 (KXMLCore::::rehash): 16908 (KXMLCore::::clear): 16909 (KXMLCore::::HashTable): 16910 (KXMLCore::::swap): 16911 (KXMLCore::::operator): 16912 (KXMLCore::::checkTableConsistency): 16913 (KXMLCore::::checkTableConsistencyExceptSize): 16914 * kxmlcore/HashTraits.h: Added. 16915 (KXMLCore::HashTraits::emptyValue): 16916 (KXMLCore::): 16917 (KXMLCore::PairHashTraits::emptyValue): 16918 (KXMLCore::PairHashTraits::deletedValue): 16919 169202005-09-27 Darin Adler <darin@apple.com> 16921 16922 Reviewed by Maciej. 16923 16924 - update grammar to fix conflicts; fixes one of our test cases 16925 because it resolves the relationship between function expressions 16926 and declarations in the way required by the ECMA specification 16927 16928 * kjs/grammar.y: Added lots of new grammar rules so we have no conflicts. 16929 A new set of rules for "no bracket or function at start of expression" and 16930 another set of rules for "no in anywhere in expression". Also simplified the 16931 handling of try to use only a single node and used operator precedence to 16932 get rid of the conflict in handling of if and else. Also used a macro to 16933 streamline the handling of automatic semicolons and changed parenthesis 16934 handling to use a virtual function. 16935 16936 * kjs/nodes.h: Added nodeInsideAllParens, removed unused abortStatement. 16937 (KJS::TryNode::TryNode): Updated to hold catch and finally blocks directly instead 16938 of using a special node for each. 16939 * kjs/nodes.cpp: 16940 (Node::createErrorCompletion): Added. Used instead of throwError when creating errors 16941 that should not be in a completion rather than an ExecState. 16942 (Node::throwUndefinedVariableError): Added. Sets source location unlike the call it 16943 replaces. 16944 (Node::nodeInsideAllParens): Added. 16945 (GroupNode::nodeInsideAllParens): Added. 16946 (StatListNode::execute): Removed code to move exceptions into completion objects; 16947 that's now done solely by the KJS_CHECKEXCEPTION macro. 16948 (TryNode::execute): Include execution of catch and finally here rather than using 16949 separate nodes. 16950 (FuncDeclNode::execute): Moved here, no longer inline. 16951 * kjs/nodes2string.cpp: 16952 (TryNode::streamTo): Updated for change. 16953 (FuncDeclNode::streamTo): Ditto. 16954 (FuncExprNode::streamTo): Ditto. 16955 16956 * kjs/kjs-test: Removed. Was part of "make check". 16957 * kjs/kjs-test.chk: Ditto. 16958 * kjs/test.js: Ditto. 16959 16960 * tests/mozilla/expected.html: Updated because one more test succeeds. 16961 169622005-09-27 Adele Peterson <adele@apple.com> 16963 16964 Reviewed by Maciej. 16965 16966 Changed ints to size_t where appropriate. 16967 16968 * kjs/collector.cpp: 16969 (KJS::Collector::allocate): 16970 (KJS::Collector::markStackObjectsConservatively): 16971 (KJS::Collector::collect): 16972 (KJS::Collector::size): 16973 (KJS::Collector::numInterpreters): 16974 (KJS::Collector::numGCNotAllowedObjects): 16975 (KJS::Collector::numReferencedObjects): 16976 * kjs/collector.h: 16977 169782005-09-27 Eric Seidel <eseidel@apple.com> 16979 16980 Reviewed by kevin. 16981 16982 * JavaScriptCore.xcodeproj/project.pbxproj: fix after malloc changes. 16983 169842005-09-27 Eric Seidel <eseidel@apple.com> 16985 16986 Reviewed by mjs. 16987 16988 * kjs/nodes.cpp: 16989 (FuncExprNode::evaluate): Now sets .constructor properly. 16990 Test cases added to WebCore/layout-tests. 16991 http://bugs.webkit.org/show_bug.cgi?id=3537 16992 169932005-09-26 Maciej Stachowiak <mjs@apple.com> 16994 16995 Reviewed by John. 16996 16997 - replace dlmalloc with tcmalloc 16998 http://bugs.webkit.org/show_bug.cgi?id=5145 16999 17000 I also moved SharedPtr and the assertion code from WebCore into a 17001 new kxmlcore directory. 17002 17003 * JavaScriptCore.xcodeproj/project.pbxproj: 17004 * kjs/collector.cpp: 17005 (KJS::Collector::allocate): 17006 (KJS::Collector::collect): 17007 * kjs/config.h: 17008 * kjs/fast_malloc.cpp: Removed. 17009 * kjs/fast_malloc.h: Removed. 17010 * kjs/function.cpp: 17011 * kjs/function.h: 17012 * kjs/function_object.cpp: 17013 * kjs/identifier.cpp: 17014 (KJS::Identifier::add): 17015 * kjs/internal.cpp: 17016 * kjs/internal.h: 17017 * kjs/nodes.h: 17018 * kjs/nodes2string.cpp: 17019 * kjs/property_map.cpp: 17020 (KJS::PropertyMap::~PropertyMap): 17021 (KJS::PropertyMap::rehash): 17022 * kjs/scope_chain.h: 17023 * kjs/shared_ptr.h: Removed. 17024 * kjs/string_object.cpp: 17025 (StringObjectFuncImp::callAsFunction): 17026 * kjs/ustring.cpp: 17027 (KJS::UString::Rep::createCopying): 17028 (KJS::UString::Rep::destroy): 17029 (KJS::UString::expandCapacity): 17030 (KJS::UString::expandPreCapacity): 17031 (KJS::UString::UString): 17032 (KJS::UString::spliceSubstringsWithSeparators): 17033 (KJS::UString::append): 17034 (KJS::UString::operator=): 17035 (KJS::UString::detach): 17036 * kjs/ustring.h: 17037 * kxmlcore/Assertions.h: Added. 17038 * kxmlcore/Assertions.mm: Added. 17039 * kxmlcore/FastMalloc.cpp: Added. 17040 (KXMLCore::LgFloor): 17041 (KXMLCore::SizeClass): 17042 (KXMLCore::ByteSizeForClass): 17043 (KXMLCore::InitSizeClasses): 17044 (KXMLCore::MetaDataAlloc): 17045 (KXMLCore::PageHeapAllocator::Init): 17046 (KXMLCore::PageHeapAllocator::New): 17047 (KXMLCore::PageHeapAllocator::Delete): 17048 (KXMLCore::PageHeapAllocator::inuse): 17049 (KXMLCore::pages): 17050 (KXMLCore::AllocationSize): 17051 (KXMLCore::Event): 17052 (KXMLCore::NewSpan): 17053 (KXMLCore::DeleteSpan): 17054 (KXMLCore::DLL_Init): 17055 (KXMLCore::DLL_Remove): 17056 (KXMLCore::DLL_IsEmpty): 17057 (KXMLCore::DLL_Length): 17058 (KXMLCore::DLL_Print): 17059 (KXMLCore::DLL_Prepend): 17060 (KXMLCore::DLL_InsertOrdered): 17061 (KXMLCore::): 17062 (KXMLCore::TCMalloc_PageHeap::GetDescriptor): 17063 (KXMLCore::TCMalloc_PageHeap::SystemBytes): 17064 (KXMLCore::TCMalloc_PageHeap::FreeBytes): 17065 (KXMLCore::TCMalloc_PageHeap::RecordSpan): 17066 (KXMLCore::TCMalloc_PageHeap::TCMalloc_PageHeap): 17067 (KXMLCore::TCMalloc_PageHeap::New): 17068 (KXMLCore::TCMalloc_PageHeap::Split): 17069 (KXMLCore::TCMalloc_PageHeap::Carve): 17070 (KXMLCore::TCMalloc_PageHeap::Delete): 17071 (KXMLCore::TCMalloc_PageHeap::RegisterSizeClass): 17072 (KXMLCore::TCMalloc_PageHeap::Dump): 17073 (KXMLCore::TCMalloc_PageHeap::GrowHeap): 17074 (KXMLCore::TCMalloc_PageHeap::Check): 17075 (KXMLCore::TCMalloc_PageHeap::CheckList): 17076 (KXMLCore::TCMalloc_ThreadCache_FreeList::Init): 17077 (KXMLCore::TCMalloc_ThreadCache_FreeList::length): 17078 (KXMLCore::TCMalloc_ThreadCache_FreeList::empty): 17079 (KXMLCore::TCMalloc_ThreadCache_FreeList::lowwatermark): 17080 (KXMLCore::TCMalloc_ThreadCache_FreeList::clear_lowwatermark): 17081 (KXMLCore::TCMalloc_ThreadCache_FreeList::Push): 17082 (KXMLCore::TCMalloc_ThreadCache_FreeList::Pop): 17083 (KXMLCore::TCMalloc_ThreadCache::freelist_length): 17084 (KXMLCore::TCMalloc_ThreadCache::Size): 17085 (KXMLCore::TCMalloc_Central_FreeList::length): 17086 (KXMLCore::TCMalloc_Central_FreeList::Init): 17087 (KXMLCore::TCMalloc_Central_FreeList::Insert): 17088 (KXMLCore::TCMalloc_Central_FreeList::Remove): 17089 (KXMLCore::TCMalloc_Central_FreeList::Populate): 17090 (KXMLCore::TCMalloc_ThreadCache::SampleAllocation): 17091 (KXMLCore::TCMalloc_ThreadCache::Init): 17092 (KXMLCore::TCMalloc_ThreadCache::Cleanup): 17093 (KXMLCore::TCMalloc_ThreadCache::Allocate): 17094 (KXMLCore::TCMalloc_ThreadCache::Deallocate): 17095 (KXMLCore::TCMalloc_ThreadCache::FetchFromCentralCache): 17096 (KXMLCore::TCMalloc_ThreadCache::ReleaseToCentralCache): 17097 (KXMLCore::TCMalloc_ThreadCache::Scavenge): 17098 (KXMLCore::TCMalloc_ThreadCache::GetCache): 17099 (KXMLCore::TCMalloc_ThreadCache::GetCacheIfPresent): 17100 (KXMLCore::TCMalloc_ThreadCache::PickNextSample): 17101 (KXMLCore::TCMalloc_ThreadCache::InitModule): 17102 (KXMLCore::TCMalloc_ThreadCache::InitTSD): 17103 (KXMLCore::TCMalloc_ThreadCache::CreateCacheIfNecessary): 17104 (KXMLCore::TCMalloc_ThreadCache::DeleteCache): 17105 (KXMLCore::TCMalloc_ThreadCache::RecomputeThreadCacheSize): 17106 (KXMLCore::TCMalloc_ThreadCache::Print): 17107 (KXMLCore::ExtractStats): 17108 (KXMLCore::DumpStats): 17109 (KXMLCore::PrintStats): 17110 (KXMLCore::DumpStackTraces): 17111 (KXMLCore::TCMallocImplementation::GetStats): 17112 (KXMLCore::TCMallocImplementation::ReadStackTraces): 17113 (KXMLCore::TCMallocImplementation::GetNumericProperty): 17114 (KXMLCore::TCMallocImplementation::SetNumericProperty): 17115 (KXMLCore::DoSampledAllocation): 17116 (KXMLCore::do_malloc): 17117 (KXMLCore::do_free): 17118 (KXMLCore::do_memalign): 17119 (KXMLCore::TCMallocGuard::TCMallocGuard): 17120 (KXMLCore::TCMallocGuard::~TCMallocGuard): 17121 (KXMLCore::malloc): 17122 (KXMLCore::free): 17123 (KXMLCore::calloc): 17124 (KXMLCore::cfree): 17125 (KXMLCore::realloc): 17126 (KXMLCore::memalign): 17127 (KXMLCore::posix_memalign): 17128 (KXMLCore::valloc): 17129 (KXMLCore::pvalloc): 17130 (KXMLCore::malloc_stats): 17131 (KXMLCore::mallopt): 17132 (KXMLCore::mallinfo): 17133 * kxmlcore/FastMalloc.h: Added. 17134 (KXMLCore::FastAllocated::operator new): 17135 (KXMLCore::FastAllocated::operator delete): 17136 (KXMLCore::FastAllocated::operator new[]): 17137 (KXMLCore::FastAllocated::operator delete[]): 17138 * kxmlcore/SharedPtr.h: Added. 17139 (KXMLCore::SharedPtr::SharedPtr): 17140 (KXMLCore::SharedPtr::~SharedPtr): 17141 (KXMLCore::SharedPtr::isNull): 17142 (KXMLCore::SharedPtr::notNull): 17143 (KXMLCore::SharedPtr::reset): 17144 (KXMLCore::SharedPtr::get): 17145 (KXMLCore::SharedPtr::operator*): 17146 (KXMLCore::SharedPtr::operator->): 17147 (KXMLCore::SharedPtr::operator!): 17148 (KXMLCore::SharedPtr::operator bool): 17149 (KXMLCore::::operator): 17150 (KXMLCore::operator==): 17151 (KXMLCore::operator!=): 17152 (KXMLCore::static_pointer_cast): 17153 (KXMLCore::const_pointer_cast): 17154 * kxmlcore/TCPageMap.h: Added. 17155 (TCMalloc_PageMap1::TCMalloc_PageMap1): 17156 (TCMalloc_PageMap1::Ensure): 17157 (TCMalloc_PageMap1::get): 17158 (TCMalloc_PageMap1::set): 17159 (TCMalloc_PageMap2::TCMalloc_PageMap2): 17160 (TCMalloc_PageMap2::get): 17161 (TCMalloc_PageMap2::set): 17162 (TCMalloc_PageMap2::Ensure): 17163 (TCMalloc_PageMap3::NewNode): 17164 (TCMalloc_PageMap3::TCMalloc_PageMap3): 17165 (TCMalloc_PageMap3::get): 17166 (TCMalloc_PageMap3::set): 17167 (TCMalloc_PageMap3::Ensure): 17168 * kxmlcore/TCSpinLock.h: Added. 17169 (TCMalloc_SpinLock::Init): 17170 (TCMalloc_SpinLock::Finalize): 17171 (TCMalloc_SpinLock::Lock): 17172 (TCMalloc_SpinLock::Unlock): 17173 (TCMalloc_SlowLock): 17174 (TCMalloc_SpinLockHolder::TCMalloc_SpinLockHolder): 17175 (TCMalloc_SpinLockHolder::~TCMalloc_SpinLockHolder): 17176 * kxmlcore/TCSystemAlloc.cpp: Added. 17177 (TrySbrk): 17178 (TryMmap): 17179 (TryDevMem): 17180 (TCMalloc_SystemAlloc): 17181 * kxmlcore/TCSystemAlloc.h: Added. 17182 171832005-09-23 Maciej Stachowiak <mjs@apple.com> 17184 17185 Reviewed by Darin. 17186 17187 <rdar://problem/4260479> Finish deploying PropertySlot in the interpreter 17188 http://bugs.webkit.org/show_bug.cgi?id=5112 17189 17190 Convert postfix, prefix, delete, prefix, and for..in expressions to use 17191 PropertySlot-based lookup instead of evaluateReference. 17192 17193 3% speedup on JS iBench. 17194 17195 Fixed two of the JS tests: 17196 * tests/mozilla/expected.html: 17197 17198 * kjs/grammar.y: 17199 * kjs/nodes.cpp: 17200 (PostfixResolveNode::evaluate): 17201 (PostfixBracketNode::evaluate): 17202 (PostfixDotNode::evaluate): 17203 (DeleteResolveNode::evaluate): 17204 (DeleteBracketNode::evaluate): 17205 (DeleteDotNode::evaluate): 17206 (DeleteValueNode::evaluate): 17207 (typeStringForValue): 17208 (TypeOfResolveNode::evaluate): 17209 (TypeOfValueNode::evaluate): 17210 (PrefixResolveNode::evaluate): 17211 (PrefixBracketNode::evaluate): 17212 (PrefixDotNode::evaluate): 17213 (ForInNode::execute): 17214 * kjs/nodes.h: 17215 (KJS::PostfixResolveNode::PostfixResolveNode): 17216 (KJS::PostfixBracketNode::PostfixBracketNode): 17217 (KJS::PostfixDotNode::PostfixDotNode): 17218 (KJS::DeleteResolveNode::DeleteResolveNode): 17219 (KJS::DeleteBracketNode::DeleteBracketNode): 17220 (KJS::DeleteDotNode::DeleteDotNode): 17221 (KJS::DeleteValueNode::DeleteValueNode): 17222 (KJS::TypeOfResolveNode::TypeOfResolveNode): 17223 (KJS::TypeOfValueNode::TypeOfValueNode): 17224 (KJS::PrefixResolveNode::PrefixResolveNode): 17225 (KJS::PrefixBracketNode::PrefixBracketNode): 17226 (KJS::PrefixDotNode::PrefixDotNode): 17227 * kjs/nodes2string.cpp: 17228 (PostfixResolveNode::streamTo): 17229 (PostfixBracketNode::streamTo): 17230 (PostfixDotNode::streamTo): 17231 (DeleteResolveNode::streamTo): 17232 (DeleteBracketNode::streamTo): 17233 (DeleteDotNode::streamTo): 17234 (DeleteValueNode::streamTo): 17235 (TypeOfValueNode::streamTo): 17236 (TypeOfResolveNode::streamTo): 17237 (PrefixResolveNode::streamTo): 17238 (PrefixBracketNode::streamTo): 17239 (PrefixDotNode::streamTo): 17240 * kjs/reference.cpp: 17241 (KJS::Reference::Reference): 17242 (KJS::Reference::getPropertyName): 17243 (KJS::Reference::getValue): 17244 (KJS::Reference::deleteValue): 17245 * kjs/reference.h: 17246 172472005-09-23 Krzysztof Kowalczyk <kkowalczyk@gmail.com> 17248 17249 Reviewed and landed by Darin. 17250 17251 - a Windows-specific file 17252 17253 * os-win32/stdint.h: Added. We plan to remove dependency on the <stdint.h> types, 17254 and if we do so, we will remove this file. 17255 172562005-09-22 Geoffrey Garen <ggaren@apple.com> 17257 17258 - Fixed http://bugs.webkit.org/show_bug.cgi?id=5053 17259 Need to restore int/long changes to simple_number.h 17260 17261 Reviewed by darin and mjs. 17262 17263 * kjs/simple_number.h: changed enums to indenpendent constants to clarify types 17264 (KJS::isNegativeZero): changed to static function - no reason to export 17265 (KJS::SimpleNumber::rightShiftSignExtended): new function for clarity 17266 (KJS::SimpleNumber::make): specified cast as reinterpret_cast 17267 (KJS::SimpleNumber::is): changed to use uintptr_t for portability 17268 (KJS::SimpleNumber::value): changed to use uintptr_t and rightShiftSignExtended 17269 (KJS::SimpleNumber::fits): inverted tests - probably only a performance win for double 17270 (KJS::SimpleNumber::integerFits): ditto 17271 172722005-09-20 Maciej Stachowiak <mjs@apple.com> 17273 17274 Reviewed by Geoff and partly by Darin. 17275 17276 - fixed http://bugs.webkit.org/post_bug.cgi 17277 (Reduce conflicts in JavaScriptCore grammar) 17278 17279 This change gets us down from over 200 shift/reduce and 45 reduce/reduce to 17280 9 shift/reduce and 45 reduce/reduce. 17281 17282 * kjs/grammar.y: 17283 * kjs/grammar_types.h: Removed. 17284 * kjs/lexer.cpp: 17285 * kjs/nodes.h: 17286 (KJS::Node::isGroupNode): 17287 (KJS::Node::isLocation): 17288 (KJS::Node::isResolveNode): 17289 (KJS::Node::isBracketAccessorNode): 17290 (KJS::Node::isDotAccessorNode): 17291 (KJS::ResolveNode::isLocation): 17292 (KJS::ResolveNode::isResolveNode): 17293 (KJS::ResolveNode::identifier): 17294 (KJS::GroupNode::isGroupNode): 17295 (KJS::GroupNode::leafNode): 17296 (KJS::BracketAccessorNode::isLocation): 17297 (KJS::BracketAccessorNode::isBracketAccessorNode): 17298 (KJS::BracketAccessorNode::base): 17299 (KJS::BracketAccessorNode::subscript): 17300 (KJS::DotAccessorNode::isLocation): 17301 (KJS::DotAccessorNode::isDotAccessorNode): 17302 (KJS::DotAccessorNode::base): 17303 (KJS::DotAccessorNode::identifier): 17304 (KJS::FuncExprNode::FuncExprNode): 17305 (KJS::FuncExprNode::identifier): 17306 (KJS::FuncDeclNode::FuncDeclNode): 17307 (KJS::FuncDeclNode::execute): 17308 173092005-09-20 Geoffrey Garen <ggaren@apple.com> 17310 17311 - Oops. The 4263434 change was only appropriate on the branch. Rolling out. 17312 17313 Reviewed by eric. 17314 17315 * kjs/internal.cpp: 17316 (KJS::InterpreterImp::mark): 17317 173182005-09-20 Geoffrey Garen <ggaren@apple.com> 17319 17320 - More changes needed to fix <rdar://problem/4214783> 8F29 REGRESSION(Denver/Chardonnay): 17321 kjs_fast_malloc crash due to lack of locking on multiple threads (seen selecting volumes in 17322 the installer) 17323 17324 Added InterpreterLocks in some places in the bindings we missed before. 17325 17326 Reviewed by john. 17327 17328 * bindings/runtime_root.cpp: 17329 (KJS::Bindings::addNativeReference): 17330 (KJS::Bindings::removeNativeReference): 17331 (RootObject::removeAllNativeReferences): 17332 * bindings/runtime_root.h: 17333 (KJS::Bindings::RootObject::~RootObject): 17334 (KJS::Bindings::RootObject::setRootObjectImp): 17335 173362005-09-20 Geoffrey Garen <ggaren@apple.com> 17337 17338 - Fixed <rdar://problem/4263434> <rdar://problem/4263434> Denver 8F29 Regression: 17339 KJS::InterpreterImp::mark() crash 17340 17341 Fix by mjs, review by me. 17342 17343 * kjs/internal.cpp: 17344 (KJS::InterpreterImp::mark): Added a null check on globExec in case a 17345 garbage collection occurs inside InterpreterImp::globalInit (called 17346 from InterpreterImp::InterpreterImp), at which point globExec has not yet been initialized. 17347 173482005-09-20 Geoffrey Garen <ggaren@apple.com> 17349 17350 - Rolled in fix for http://bugs.webkit.org/show_bug.cgi?id=4892 17351 Date constructor has problems with months larger than 11 17352 17353 Test cases added: 17354 17355 * layout-tests/fast/js/date-big-constructor-expected.txt: Added. 17356 * layout-tests/fast/js/date-big-constructor.html: Added. 17357 17358 Reviewed by darin. 17359 17360 * kjs/date_object.cpp: 17361 (KJS::fillStructuresUsingDateArgs): 17362 (KJS::makeTime): 17363 173642005-09-19 Geoffrey Garen <ggaren@apple.com> 17365 17366 - Fixed http://bugs.webkit.org/show_bug.cgi?id=5028 17367 9 layout tests fail following the change from long to int 17368 17369 - Rolled out changes to simple_number.h, and added fits(long long) 17370 and SimpleNumber::fits(unsigned long long) to the old system. 17371 17372 Reviewed by mjs. 17373 17374 * kjs/simple_number.h: 17375 (KJS::SimpleNumber::): 17376 (KJS::SimpleNumber::value): 17377 (KJS::SimpleNumber::fits): 17378 (KJS::SimpleNumber::integerFits): 17379 (KJS::SimpleNumber::make): 17380 173812005-09-14 Maciej Stachowiak <mjs@apple.com> 17382 17383 Reviewed by Geoff. 17384 17385 - fixed <rdar://problem/4214783> REGRESSION: kjs_fast_malloc crash due to lack of locking on multiple threads (seen selecting volumes in the installer) 17386 17387 Make sure to lock using the InterpreterLock class in all places that need it 17388 (including anything that uses the collector, the parser, the protect count hash table, 17389 and anything that allocates via fast_malloc). 17390 17391 Also added assertions to ensure that the locking rules are followed for the relevant 17392 resources. 17393 17394 * Makefile.am: 17395 * bindings/NP_jsobject.cpp: 17396 (identifierFromNPIdentifier): 17397 (_NPN_Invoke): 17398 (_NPN_Evaluate): 17399 (_NPN_GetProperty): 17400 (_NPN_SetProperty): 17401 (_NPN_RemoveProperty): 17402 (_NPN_HasProperty): 17403 (_NPN_HasMethod): 17404 (_NPN_SetException): 17405 * bindings/jni/jni_jsobject.cpp: 17406 (JSObject::call): 17407 (JSObject::eval): 17408 (JSObject::getMember): 17409 (JSObject::setMember): 17410 (JSObject::removeMember): 17411 (JSObject::getSlot): 17412 (JSObject::setSlot): 17413 (JSObject::toString): 17414 (JSObject::convertJObjectToValue): 17415 * bindings/objc/WebScriptObject.mm: 17416 (-[WebScriptObject callWebScriptMethod:withArguments:]): 17417 (-[WebScriptObject evaluateWebScript:]): 17418 (-[WebScriptObject setValue:forKey:]): 17419 (-[WebScriptObject valueForKey:]): 17420 (-[WebScriptObject removeWebScriptKey:]): 17421 (-[WebScriptObject stringRepresentation]): 17422 (-[WebScriptObject webScriptValueAtIndex:]): 17423 (-[WebScriptObject setWebScriptValueAtIndex:value:]): 17424 (+[WebScriptObject _convertValueToObjcValue:KJS::originExecutionContext:Bindings::executionContext:Bindings::]): 17425 * bindings/runtime.cpp: 17426 (Instance::createRuntimeObject): 17427 * bindings/runtime_root.h: 17428 * bindings/testbindings.cpp: 17429 (main): 17430 * bindings/testbindings.mm: 17431 (main): 17432 * kjs/fast_malloc.cpp: 17433 (KJS::kjs_fast_malloc): 17434 (KJS::kjs_fast_calloc): 17435 (KJS::kjs_fast_free): 17436 (KJS::kjs_fast_realloc): 17437 * kjs/fast_malloc.h: 17438 * kjs/identifier.h: 17439 * kjs/internal.cpp: 17440 (InterpreterImp::InterpreterImp): 17441 (InterpreterImp::clear): 17442 (InterpreterImp::mark): 17443 (InterpreterImp::checkSyntax): 17444 (InterpreterImp::evaluate): 17445 * kjs/internal.h: 17446 (KJS::InterpreterImp::globalObject): 17447 * kjs/interpreter.cpp: 17448 (Interpreter::evaluate): 17449 * kjs/interpreter.h: 17450 (KJS::InterpreterLock::InterpreterLock): 17451 (KJS::InterpreterLock::~InterpreterLock): 17452 * kjs/nodes.h: 17453 * kjs/protect.h: 17454 (KJS::ProtectedValue::ProtectedValue): 17455 (KJS::ProtectedValue::~ProtectedValue): 17456 (KJS::ProtectedValue::operator=): 17457 (KJS::ProtectedObject::ProtectedObject): 17458 (KJS::ProtectedObject::~ProtectedObject): 17459 (KJS::ProtectedObject::operator=): 17460 (KJS::ProtectedReference::ProtectedReference): 17461 (KJS::ProtectedReference::~ProtectedReference): 17462 (KJS::ProtectedReference::operator=): 17463 * kjs/protected_object.h: 17464 * kjs/protected_values.cpp: 17465 (KJS::ProtectedValues::getProtectCount): 17466 (KJS::ProtectedValues::increaseProtectCount): 17467 (KJS::ProtectedValues::decreaseProtectCount): 17468 * kjs/string_object.cpp: 17469 (StringObjectImp::StringObjectImp): 17470 * kjs/testkjs.cpp: 17471 (main): 17472 174732005-09-16 Adele Peterson <adele@apple.com> 17474 17475 Change by Darin, reviewed by me and Maciej. 17476 17477 Fixes http://bugs.webkit.org/show_bug.cgi?id=4547 17478 use int instead of long for 32-bit (to prepare for LP64 compiling) 17479 17480 * bindings/c/c_class.h: 17481 (KJS::Bindings::CClass::constructorAt): 17482 (KJS::Bindings::CClass::numConstructors): 17483 * bindings/c/c_runtime.h: 17484 (KJS::Bindings::CMethod::numParameters): 17485 * bindings/jni/jni_class.cpp: 17486 (JavaClass::JavaClass): 17487 * bindings/jni/jni_class.h: 17488 (KJS::Bindings::JavaClass::constructorAt): 17489 (KJS::Bindings::JavaClass::numConstructors): 17490 * bindings/jni/jni_instance.cpp: 17491 (JavaInstance::invokeMethod): 17492 * bindings/jni/jni_jsobject.cpp: 17493 (JSObject::convertJObjectToValue): 17494 (JSObject::listFromJArray): 17495 * bindings/jni/jni_runtime.cpp: 17496 (JavaMethod::JavaMethod): 17497 * bindings/jni/jni_runtime.h: 17498 (KJS::Bindings::JavaConstructor::_commonCopy): 17499 (KJS::Bindings::JavaConstructor::parameterAt): 17500 (KJS::Bindings::JavaConstructor::numParameters): 17501 (KJS::Bindings::JavaMethod::_commonCopy): 17502 (KJS::Bindings::JavaMethod::parameterAt): 17503 (KJS::Bindings::JavaMethod::numParameters): 17504 * bindings/npapi.h: 17505 * bindings/objc/WebScriptObject.mm: 17506 (listFromNSArray): 17507 * bindings/objc/objc_class.h: 17508 (KJS::Bindings::ObjcClass::constructorAt): 17509 (KJS::Bindings::ObjcClass::numConstructors): 17510 * bindings/objc/objc_instance.h: 17511 * bindings/objc/objc_runtime.h: 17512 * bindings/objc/objc_runtime.mm: 17513 (ObjcMethod::numParameters): 17514 * bindings/runtime.h: 17515 * kjs/identifier.h: 17516 * kjs/internal.h: 17517 * kjs/property_slot.h: 17518 (KJS::PropertySlot::setCustomIndex): 17519 (KJS::PropertySlot::index): 17520 (KJS::PropertySlot::): 17521 * kjs/regexp_object.cpp: 17522 (RegExpObjectImp::backrefGetter): 17523 (RegExpObjectImp::getOwnPropertySlot): 17524 * kjs/simple_number.h: 17525 (KJS::SimpleNumber::): 17526 (KJS::SimpleNumber::value): 17527 (KJS::SimpleNumber::fits): 17528 (KJS::SimpleNumber::integerFits): 17529 (KJS::SimpleNumber::make): 17530 * kjs/string_object.cpp: 17531 (substituteBackreferences): 17532 * kjs/ustring.cpp: 17533 (KJS::UString::from): 17534 (KJS::UString::toUInt32): 17535 (KJS::UString::find): 17536 (KJS::UString::rfind): 17537 * kjs/ustring.h: 17538 * kjs/value.cpp: 17539 (KJS::jsNumber): 17540 * kjs/value.h: 17541 175422005-09-11 Eric Seidel <eseidel@apple.com> 17543 17544 No review requested, build fix affects only SVG. 17545 17546 * JavaScriptCore.xcodeproj/project.pbxproj: Fixed JSC+SVG 17547 Fixed JavaScriptCore+SVG after PCRE 6.1 merger. 17548 http://bugs.webkit.org/show_bug.cgi?id=4932 17549 175502005-09-10 Krzysztof Kowalczyk <kkowalczyk@gmail.com> 17551 17552 Reviewed and landed by Darin. 17553 17554 * Makefile.vc: Added. 17555 * README-Win32.txt: Added. 17556 175572005-09-10 Darin Adler <darin@apple.com> 17558 17559 - fixed compilation for WebCore (another try) 17560 17561 * kjs/simple_number.h: Added more "using" lines. 17562 175632005-09-10 Darin Adler <darin@apple.com> 17564 17565 - fixed compilation for WebCore 17566 17567 * kjs/simple_number.h: Have to include <cmath> here to work around a bug in the GCC 17568 standard C++ library headers. 17569 175702005-09-10 Darin Adler <darin@apple.com> 17571 17572 Windows changes by Krzysztof Kowalczyk <kkowalczyk@gmail.com>. 17573 17574 - fixed http://bugs.webkit.org/show_bug.cgi?id=4870 17575 win portability: fix IS_NEGATIVE_ZERO macro in simple_number.h 17576 17577 * kjs/simple_number.h: 17578 (KJS::isNegativeZero): Added. Inline function. Has a case for Windows that 17579 uses _fpclass and a case for other platforms that uses signbit. 17580 (KJS::SimpleNumber::fits): Use inline isNegativeZero instead of macro IS_NEGATIVE_ZERO. 17581 17582 * kjs/internal.cpp: Remove definition of now-unneeded negZero global. 17583 17584 * kjs/value.cpp: Touched the file because Xcode didn't know it needed to 17585 recompile it. 17586 17587 - improved test engine 17588 17589 * tests/mozilla/jsDriver.pl: Sort tests in numeric order instead of using 17590 a plain-ASCII sort; now test 33 will be after test 5 in any given set of 17591 numbered tests. 17592 175932005-09-08 Darin Adler <darin@apple.com> 17594 17595 - fixed overloaded versions of throwError so that they substitute *all* 17596 expected parameters into the message string -- some versions used to 17597 skip parameters, resulting in "%s" being printed in the error message. 17598 17599 Reviewed by Geoff. 17600 17601 * kjs/nodes.h: Updated declarations to use "const &" and not to name parameters 17602 * kjs/nodes.cpp: (Node::throwError): Updated to match above and add one missing 17603 call to substitute. 17604 176052005-09-08 Darin Adler <darin@apple.com> 17606 17607 Reviewed by Geoff. 17608 17609 - updated to PCRE 6.1 17610 17611 The original PCRE 6.1 sources are checked into the tree with the tag 17612 "pcre-6-1" for reference. What we're checking in right now is the original 17613 plus our changes to make it support UTF-16 and at least one other tweak 17614 (vertical tab considered whitespace). Our work to get our changes was 17615 done on "pcre-6-1-branch", with an anchor at "pcre-6-1-anchor" so you can 17616 see the evolution of the UTF-16 changes. 17617 17618 Note also that there was one small change made here that's not on the branch 17619 in pcre_compile.c. 17620 17621 * Info.plist: Updated the part of the copyright message that's about PCRE. 17622 17623 * JavaScriptCore.xcodeproj/project.pbxproj: Added new PCRE source files, 17624 removed obsolete ones. 17625 17626 * pcre/AUTHORS: Updated to PCRE 6.1. Includes credits for Apple's UTF-16 17627 changes, but not the credits for Google's C++ wrapper, since we don't include that. 17628 * pcre/COPYING: Updated to PCRE 6.1. 17629 * pcre/LICENCE: Ditto. 17630 * pcre/dftables.c: Ditto. 17631 * pcre/pcre-config.h: Ditto. 17632 * pcre/pcre.h: Ditto. 17633 17634 * pcre/pcre_compile.c: Added for PCRE 6.1. 17635 * pcre/pcre_config.c: Ditto. 17636 * pcre/pcre_exec.c: Ditto. 17637 * pcre/pcre_fullinfo.c: Ditto. 17638 * pcre/pcre_get.c: Ditto. 17639 * pcre/pcre_globals.c: Ditto. 17640 * pcre/pcre_info.c: Ditto. 17641 * pcre/pcre_internal.h: Ditto. 17642 * pcre/pcre_maketables.c: Ditto. 17643 * pcre/pcre_ord2utf8.c: Ditto. 17644 * pcre/pcre_printint.c: Ditto. 17645 * pcre/pcre_refcount.c: Ditto. 17646 * pcre/pcre_study.c: Ditto. 17647 * pcre/pcre_tables.c: Ditto. 17648 * pcre/pcre_try_flipped.c: Ditto. 17649 * pcre/pcre_ucp_findchar.c: Ditto. 17650 * pcre/pcre_version.c: Ditto. 17651 * pcre/pcre_xclass.c: Ditto. 17652 * pcre/ucp.h: Ditto. 17653 * pcre/ucp_findchar.c: Ditto. 17654 * pcre/ucpinternal.h: Ditto. 17655 * pcre/ucptable.c: Ditto. 17656 17657 * pcre/get.c: Removed. 17658 * pcre/internal.h: Removed. 17659 * pcre/maketables.c: Removed. 17660 * pcre/pcre.c: Removed. 17661 * pcre/study.c: Removed. 17662 176632005-09-07 Geoffrey Garen <ggaren@apple.com> 17664 17665 -fixed http://bugs.webkit.org/show_bug.cgi?id=4781 17666 Date.setMonth fails with big values due to overflow 17667 17668 Reviewed by darin. 17669 17670 * kjs/date_object.cpp: 17671 (timetUsingCF): for consistency, changed return statement to invalidDate instead of LONG_MAX 17672 (KJS::fillStructuresUsingTimeArgs): modified for readability 17673 (KJS::fillStructuresUsingDateArgs): new function analogous to fillStructuresUsingTimeArgs 17674 (KJS::DateProtoFuncImp::callAsFunction): modified to use fillStructuresUsingDateArgs 17675 (KJS::DateObjectImp::construct): moved variable declaration to proper scope 17676 (KJS::DateObjectFuncImp::callAsFunction): moved variable declaration to proper scope 17677 176782005-09-07 Geoffrey Garen <ggaren@apple.com> 17679 -updated expected test results to reflect fix for 17680 http://bugs.webkit.org/show_bug.cgi?id=4698 17681 kjs does not allow named functions in function expressions 17682 17683 * tests/mozilla/expected.html: 17684 176852005-09-04 Darin Adler <darin@apple.com> 17686 17687 * kjs/identifier.cpp: Fix comment, add missing include. 17688 (Follow-on to changes from yesterday.) 17689 176902005-09-03 Krzysztof Kowalczyk <kkowalczyk@gmail.com> 17691 17692 Reviewed, tweaked and landed by Darin. 17693 17694 - another try at some of the Windows compilation fixes 17695 should fix these bugs: 4546, 4831, 4834, 4643, 4830, 4832, 4833, 4835 17696 17697 * kjs/collector.cpp: Add missing <setjmp.h> include. 17698 * kjs/date_object.cpp: Fix broken copysign macro. 17699 * kjs/dtoa.cpp: Move macro definitions down after all header includes. 17700 * kjs/fast_malloc.cpp: Add missing <assert.h> and <stddef.h> includes. 17701 * kjs/function.cpp: Remove broken isxdigit definition. 17702 * kjs/grammar.y: Add a missing semicolon (and remove an excess one). 17703 * kjs/identifier.cpp: Turn off AVOID_STATIC_CONSTRUCTORS because the placement new syntax 17704 doesn't seem to work in Visual C++ (I'm surprised to hear that, by the way). 17705 * kjs/value.h: Made ValueImp's destructor virtual because otherwise pointers to ValueImp 17706 on the stack aren't right for garbage collection on Windows (don't think it works that 17707 way with gcc's virtual table scheme, but it's a harmless change). 17708 177092005-09-03 Krzysztof Kowalczyk <kkowalczyk@gmail.com> 17710 17711 Reviewed, tweaked and landed by Darin. 17712 17713 - some Windows compilation fixes, hoping to fix the problems reported in these bugs: 17714 4627, 4629, 4630, 4631, 4632, 4633, 4634, 4635, 4636, 4637, 4639, 4640, 4641, 4644, 4645 17715 17716 * kjs/collector.cpp: Include <windows.h> on WIN32. Put thread-related code inside 17717 KJS_MULTIPLE_THREADS #if directives. 17718 (KJS::Collector::markCurrentThreadConservatively): Use NT_TIB to find the stack base on Win32. 17719 17720 * kjs/config.h: Define HAVE_SYS_TIMEB_H for Win32. 17721 17722 * kjs/date_object.cpp: Add include of <limits.h>. Add definitions of strncasecmp, isfinite, and 17723 copysign for Win32. 17724 (KJS::KRFCDate_parseDate): Move "errno = 0" line down closer to the first call to strol -- I believe 17725 that on Win32 there's some other call before that setting errno. 17726 17727 * kjs/date_object.h: Remove unneeded include of <sys/time.h>. 17728 17729 * kjs/dtoa.cpp: Add an undef of strtod, needed on Win32. 17730 17731 * kjs/fast_malloc.cpp: Put #if !WIN32 around some customization that's not appropriate on Win32. 17732 (KJS::region_list_append): Add a missing cast so this Win32-specific function compiles in C++. 17733 (KJS::sbrk): Change parameter type to match the declaration. 17734 17735 * kjs/function.cpp: (isxdigit): Define a locale-independent isxdigit on Win32. 17736 17737 * kjs/function.h: Remove unneeded friend class Function for FunctionImp. 17738 17739 * kjs/identifier.cpp: Took out the APPLE_CHANGES from around the AVOID_STATIC_CONSTRUCTORS 17740 define. We ultimately intend to phase out APPLE_CHANGES entirely. Also fix the 17741 non-AVOID_STATIC_CONSTRUCTORS code path. 17742 17743 * kjs/internal.cpp: Remove uneeded include of <strings.h>, which was confused with <string.h>! 17744 Add a Win32 implementation of copysign. Put the threads code inside KJS_MULTIPLE_THREADS. 17745 17746 * kjs/internal.h: Define a KJS_MULTIPLE_THREADS macro on non-Win32 only. Later we can make this 17747 specific to Mac OS X if we like. 17748 17749 * kjs/interpreter_map.cpp: Add missing include of <stdlib.h>. 17750 17751 * kjs/list.cpp: 17752 (KJS::ListImp::markValues): Use std::min instead of MIN. 17753 (KJS::List::copy): Ditto. 17754 (KJS::List::copyTail): Ditto. 17755 17756 * kjs/math_object.cpp: (signbit): Add a Win32 implementation of signbit. 17757 17758 * kjs/nodes.cpp: (Node::finalCheck): Use unsigned instead of uint. 17759 Put the use of always_inline inside __GNUC__. 17760 17761 * kjs/number_object.cpp: (NumberProtoFuncImp::callAsFunction): Use "10.0" instead of "10" 17762 inside all the calls to pow to avoid ambiguity caused by overloading of pow on Win32, seen 17763 when passing an int rather than a double or float. 17764 17765 * kjs/operations.cpp: 17766 (KJS::isInf): Add Win32 implementation. 17767 (KJS::isPosInf): Add Win32 implementation. 17768 (KJS::isNegInf): Add Win32 implementation. 17769 17770 * kjs/regexp.cpp: Use unsigned instead of uint. 17771 * kjs/regexp.h: Ditto. 17772 * kjs/regexp_object.cpp: Ditto. 17773 * kjs/regexp_object.h: Ditto. 17774 177752005-09-02 Beth Dakin <bdakin@apple.com> 17776 17777 Fix for <rdar://problem/4235531> Denver Regression: Safari crash in KWQStringData::makeUnicode 17778 The other half of the fix is in WebCore. 17779 17780 Fix written by Maciej and Darin. 17781 Reviewed by me/Maciej 17782 17783 As Maciej said in Radar: These problems was caused by a conflict between some of our custom 17784 allocators, causing them to return null. Symptom is typically a null pointer dereference in 17785 a place where it might be expected an allocation has just occurred. 17786 17787 * kjs/fast_malloc.cpp: Added #define for MORECORE_CONTIGUOUS, MORECORE_CANNOT_TRIM, 17788 and MALLOC_FAILURE_ACTION. 17789 177902005-08-31 Geoffrey Garen <ggaren@apple.com> 17791 17792 -rolled in fix for http://bugs.webkit.org/show_bug.cgi?id=4698 17793 kjs does not allow named functions in function expressions 17794 17795 Fix by Arthur Langereis. 17796 17797 Reviewed by darin. 17798 17799 * kjs/grammar.y: 17800 * kjs/nodes.cpp: 17801 (FuncExprNode::evaluate): 17802 * kjs/nodes.h: 17803 (KJS::FuncExprNode::FuncExprNode): 17804 17805 Test cases added: 17806 17807 * layout-tests/fast/js/named-function-expression-expected.txt: Added. 17808 * layout-tests/fast/js/named-function-expression.html: Added. 17809 178102005-08-31 Justin Haygood <justin@xiondigital.net> 17811 17812 Reviewed, tweaked, and landed by Darin. 17813 17814 - fixed http://bugs.webkit.org/show_bug.cgi?id=4085 17815 - fixed http://bugs.webkit.org/show_bug.cgi?id=4087 17816 - fixed http://bugs.webkit.org/show_bug.cgi?id=4096 17817 Some fixes for compiling on windows. 17818 17819 * kjs/config.h: Added a WIN32 case in here, with suitable defines. 17820 (To be tweaked as necessary.) 17821 * kjs/function.cpp: Took out APPLE_CHANGES around use of ICU. 17822 * kjs/operations.cpp: Removed some bogus code that always set HAVE_FLOAT_H. 17823 178242005-08-30 Darin Adler <darin@apple.com> 17825 17826 Reviewed by John Sullivan. 17827 17828 - fixed http://bugs.webkit.org/show_bug.cgi?id=4758 17829 unify SharedPtr in WebCore and JavaScriptCore 17830 17831 * kjs/shared_ptr.h: Updated namespace to KXMLCore instead of kxhmlcore. 17832 Made a few small improvements to use local variables a bit more and added 17833 an "operator int" to reduce the chance that we'll convert a SharedPtr to 17834 an int by accident. Also made the == operators normal functions rather than 17835 friend functions, added a couple of comemnts. 17836 17837 * kjs/function.h: Updated for namespace change. 17838 * kjs/function.cpp: Ditto. 17839 * kjs/function_object.cpp: Ditto. 17840 * kjs/internal.h: Ditto. 17841 * kjs/internal.cpp: Ditto. 17842 * kjs/nodes.h: Ditto. 17843 * kjs/nodes2string.cpp: Ditto. 17844 178452005-08-26 Maciej Stachowiak <mjs@apple.com> 17846 17847 Reviewed by John. 17848 17849 <rdar://problem/4224911> many many leaks in kjsyyparse with malformed Javascript 17850 17851 Record all nodes that are created during parsing, and delete any 17852 that are left floating with a refcount of 0. 17853 17854 * kjs/internal.cpp: 17855 (KJS::Parser::saveNewNode): 17856 (KJS::clearNewNodes): 17857 (KJS::Parser::parse): 17858 * kjs/internal.h: 17859 * kjs/nodes.cpp: 17860 (Node::Node): 17861 * kjs/nodes.h: 17862 (KJS::Node::refcount): 17863 178642005-08-26 Maciej Stachowiak <mjs@apple.com> 17865 17866 Reviewed by John. 17867 17868 - fixed <rdar://problem/4232452> many many leaks in kjsyyparse on some well-formed JavaScript (can repro on sony.com, webkit tests) 17869 17870 Fixed by changing the refcounting scheme for nodes. Instead of each node implementing a custom ref and 17871 deref for all its children (and being responsible for deleting them), nodes use a smart pointer to 17872 hold their children, and smart pointers are used outside the node tree as well. This change mostly 17873 removes code. 17874 17875 * JavaScriptCore.xcodeproj/project.pbxproj: 17876 * kjs/function.cpp: 17877 (KJS::DeclaredFunctionImp::DeclaredFunctionImp): 17878 (KJS::GlobalFuncImp::callAsFunction): 17879 * kjs/function.h: 17880 * kjs/function_object.cpp: 17881 (FunctionObjectImp::construct): 17882 * kjs/grammar.y: 17883 * kjs/internal.cpp: 17884 (KJS::Parser::parse): 17885 (KJS::Parser::accept): 17886 (KJS::InterpreterImp::checkSyntax): 17887 (KJS::InterpreterImp::evaluate): 17888 * kjs/internal.h: 17889 * kjs/nodes.cpp: 17890 (Node::Node): 17891 (Node::~Node): 17892 (ElementNode::evaluate): 17893 (PropertyValueNode::evaluate): 17894 (ArgumentListNode::evaluateList): 17895 (NewExprNode::evaluate): 17896 (FunctionCallValueNode::evaluate): 17897 (FunctionCallBracketNode::evaluate): 17898 (FunctionCallDotNode::evaluate): 17899 (RelationalNode::evaluate): 17900 (StatListNode::execute): 17901 (StatListNode::processVarDecls): 17902 (VarDeclListNode::evaluate): 17903 (VarDeclListNode::processVarDecls): 17904 (ForInNode::ForInNode): 17905 (ClauseListNode::processVarDecls): 17906 (CaseBlockNode::evalBlock): 17907 (FuncDeclNode::processFuncDecl): 17908 (FuncExprNode::evaluate): 17909 (SourceElementsNode::execute): 17910 (SourceElementsNode::processFuncDecl): 17911 (SourceElementsNode::processVarDecls): 17912 * kjs/nodes.h: 17913 (KJS::Node::ref): 17914 (KJS::Node::deref): 17915 (KJS::NumberNode::NumberNode): 17916 (KJS::GroupNode::GroupNode): 17917 (KJS::ElementNode::ElementNode): 17918 (KJS::ArrayNode::ArrayNode): 17919 (KJS::PropertyValueNode::PropertyValueNode): 17920 (KJS::ObjectLiteralNode::ObjectLiteralNode): 17921 (KJS::BracketAccessorNode::BracketAccessorNode): 17922 (KJS::DotAccessorNode::DotAccessorNode): 17923 (KJS::ArgumentListNode::ArgumentListNode): 17924 (KJS::ArgumentsNode::ArgumentsNode): 17925 (KJS::NewExprNode::NewExprNode): 17926 (KJS::FunctionCallValueNode::FunctionCallValueNode): 17927 (KJS::FunctionCallResolveNode::FunctionCallResolveNode): 17928 (KJS::FunctionCallBracketNode::FunctionCallBracketNode): 17929 (KJS::FunctionCallDotNode::FunctionCallDotNode): 17930 (KJS::PostfixNode::PostfixNode): 17931 (KJS::DeleteNode::DeleteNode): 17932 (KJS::VoidNode::VoidNode): 17933 (KJS::TypeOfNode::TypeOfNode): 17934 (KJS::PrefixNode::PrefixNode): 17935 (KJS::UnaryPlusNode::UnaryPlusNode): 17936 (KJS::NegateNode::NegateNode): 17937 (KJS::BitwiseNotNode::BitwiseNotNode): 17938 (KJS::LogicalNotNode::LogicalNotNode): 17939 (KJS::MultNode::MultNode): 17940 (KJS::AddNode::AddNode): 17941 (KJS::ShiftNode::ShiftNode): 17942 (KJS::RelationalNode::RelationalNode): 17943 (KJS::EqualNode::EqualNode): 17944 (KJS::BitOperNode::BitOperNode): 17945 (KJS::BinaryLogicalNode::BinaryLogicalNode): 17946 (KJS::ConditionalNode::ConditionalNode): 17947 (KJS::AssignResolveNode::AssignResolveNode): 17948 (KJS::AssignBracketNode::AssignBracketNode): 17949 (KJS::AssignDotNode::AssignDotNode): 17950 (KJS::CommaNode::CommaNode): 17951 (KJS::AssignExprNode::AssignExprNode): 17952 (KJS::VarDeclListNode::VarDeclListNode): 17953 (KJS::VarStatementNode::VarStatementNode): 17954 (KJS::ExprStatementNode::ExprStatementNode): 17955 (KJS::IfNode::IfNode): 17956 (KJS::DoWhileNode::DoWhileNode): 17957 (KJS::WhileNode::WhileNode): 17958 (KJS::ForNode::ForNode): 17959 (KJS::ReturnNode::ReturnNode): 17960 (KJS::WithNode::WithNode): 17961 (KJS::CaseClauseNode::CaseClauseNode): 17962 (KJS::ClauseListNode::ClauseListNode): 17963 (KJS::ClauseListNode::clause): 17964 (KJS::ClauseListNode::next): 17965 (KJS::SwitchNode::SwitchNode): 17966 (KJS::LabelNode::LabelNode): 17967 (KJS::ThrowNode::ThrowNode): 17968 (KJS::CatchNode::CatchNode): 17969 (KJS::FinallyNode::FinallyNode): 17970 (KJS::TryNode::TryNode): 17971 (KJS::ParameterNode::ParameterNode): 17972 (KJS::ParameterNode::nextParam): 17973 (KJS::FuncDeclNode::FuncDeclNode): 17974 (KJS::FuncExprNode::FuncExprNode): 17975 * kjs/nodes2string.cpp: 17976 (KJS::SourceStream::operator<<): 17977 (ElementNode::streamTo): 17978 (PropertyValueNode::streamTo): 17979 (ArgumentListNode::streamTo): 17980 (StatListNode::streamTo): 17981 (VarDeclListNode::streamTo): 17982 (CaseBlockNode::streamTo): 17983 (ParameterNode::streamTo): 17984 (SourceElementsNode::streamTo): 17985 * kjs/shared_ptr.h: Added. 17986 (kxmlcore::SharedPtr::SharedPtr): 17987 (kxmlcore::SharedPtr::~SharedPtr): 17988 (kxmlcore::SharedPtr::isNull): 17989 (kxmlcore::SharedPtr::notNull): 17990 (kxmlcore::SharedPtr::reset): 17991 (kxmlcore::SharedPtr::get): 17992 (kxmlcore::SharedPtr::operator*): 17993 (kxmlcore::SharedPtr::operator->): 17994 (kxmlcore::SharedPtr::operator!): 17995 (kxmlcore::SharedPtr::operator bool): 17996 (kxmlcore::SharedPtr::operator==): 17997 (kxmlcore::::operator): 17998 (kxmlcore::operator!=): 17999 (kxmlcore::static_pointer_cast): 18000 (kxmlcore::const_pointer_cast): 18001 180022005-08-26 Geoff Garen <ggaren@apple.com> 18003 18004 Reviewed by John. 18005 Landed by Darin. 18006 18007 - fixed http://bugs.webkit.org/show_bug.cgi?id=4664 18008 TOT Crash from backwards null check in WebScriptObject.mm 18009 18010 * bindings/objc/WebScriptObject.mm: 18011 (+[WebScriptObject _convertValueToObjcValue:originExecutionContext:executionContext:]): 18012 Remove bogus !. 18013 180142005-08-25 Darin Adler <darin@apple.com> 18015 18016 Reviewed by John Sullivan. 18017 18018 - rename KJS::UString::string() to KJS::UString::domString() 18019 - rename KJS::Identifier::string() to KJS::Identifier::domString() 18020 18021 * kjs/identifier.h: Renamed. 18022 * kjs/ustring.h: Ditto. 18023 180242005-08-19 Darin Adler <darin@apple.com> 18025 18026 Reviewed by Maciej. 18027 18028 - fixed http://bugs.webkit.org/show_bug.cgi?id=4435 18029 speed up JavaScript by tweaking the Identifier class 18030 18031 * kjs/identifier.h: Add a new global nullIdentifier and make Identifier::null a function 18032 that returns it. 18033 * kjs/identifier.cpp: (KJS::Identifier::init): Initialize a global for the null identifier 18034 as well as all the other globals for special identifiers. 18035 18036 * kjs/ustring.h: (KJS::UString::UString): Make this empty constructor inline. 18037 * kjs/ustring.cpp: Remove the old non-inline version. 18038 180392005-08-19 Mitz Pettel <opendarwin.org@mitzpettel.com> 18040 18041 Reviewed by Maciej. 18042 Revised and landed by Darin. 18043 18044 - fixed http://bugs.webkit.org/show_bug.cgi?id=4474 18045 REGRESSION: Crash when using in-place operator on uninitialized array element 18046 18047 * kjs/nodes.cpp: 18048 (AssignResolveNode::evaluate): Remove unneeded "isSet" assertion. 18049 (AssignBracketNode::evaluate): Replace code that tested "isSet" with code that 18050 tests the return value of getPropertySlot. 18051 18052 * kjs/property_slot.h: Removed unneeded "isSet" function. Property slots are 18053 either uninitialized or set. There's no "initialized and not set" state. 18054 180552005-08-18 Adele Peterson <adele@apple.com> 18056 18057 Checked "Inline Functions Hidden" box 18058 18059 * JavaScriptCore.xcodeproj/project.pbxproj: 18060 180612005-08-16 Darin Adler <darin@apple.com> 18062 18063 Reviewed by Geoff. 18064 18065 - fixed crash in one of the JavaScript tests (introduced by my throwError change) 18066 18067 * kjs/nodes.cpp: (Node::setExceptionDetailsIfNeeded): Check if the exception is an 18068 object before setting the file and line number properties on it. Something to think 18069 about in the future -- do we really want to do this on any object that's thrown? 18070 How about limiting it to error objects that were created by the JavaScript engine? 18071 18072 - changed kjs_fast_malloc so we don't have two conflicting versions of the same function 18073 18074 * kjs/fast_malloc.h: Took out all the ifdefs from this header. 18075 * kjs/fast_malloc.cpp: Added non-NDEBUG versions of the functions that just call 18076 the system malloc, and put the NDEBUG versions in an #else. 18077 180782005-08-16 Darin Adler <darin@apple.com> 18079 18080 Reviewed by Geoff. 18081 18082 - clean up exported symbols that are not in a "KJS" namespace 18083 18084 * bindings/NP_jsobject.cpp: (identiferFromNPIdentifier): Marked this function static 18085 so it no longer has external linkage. 18086 * bindings/c/c_utility.h: Put all this stuff inside the KJS namespace. 18087 * bindings/c/c_utility.cpp: Also marked some globals static so they don't have external 18088 linkage; not as important given the namespace. 18089 * bindings/npruntime.cpp: Marked functions static so they no longer have internal linkage. 18090 Also removed unused _NPN_SetExceptionWithUTF8 function (not in header, had C++ linkage!). 18091 18092 * bindings/jni/jni_utility.cpp: (KJS::Bindings::getJavaVM): Call KJS_GetCreatedJavaVMs 18093 using the soft linking header, instead of calling the JNI call. This allows processes 18094 to link both JavaScriptCore and JavaVM without a symbol conflict. 18095 * bindings/softlinking.c: 18096 (loadFramework): Marked this function static so it no longer has external linkage. 18097 (getFunctionPointer): Ditto. 18098 (KJS_GetCreatedJavaVMs): Renamed this so it has a KJS prefix. 18099 18100 * JavaScriptCore.xcodeproj/project.pbxproj: Added softlinking.h. 18101 * bindings/softlinking.h: Added. 18102 18103 * kjs/nodes2string.cpp: (streamAssignmentOperatorTo): Marked this function static so it 18104 no longer has external linkage. 18105 181062005-08-15 Darin Adler <darin@apple.com> 18107 18108 Reviewed by Geoff. 18109 18110 - fixed http://bugs.webkit.org/show_bug.cgi?id=4437 18111 clean up error creation with new throwError function 18112 18113 * bindings/NP_jsobject.cpp: 18114 (_NPN_SetException): 18115 * bindings/jni/jni_instance.cpp: 18116 (JavaInstance::invokeMethod): 18117 * bindings/jni/jni_runtime.cpp: 18118 (JavaField::dispatchValueFromInstance): 18119 (JavaField::dispatchSetValueToInstance): 18120 * bindings/objc/WebScriptObject.mm: 18121 (-[WebScriptObject _initializeWithObjectImp:originExecutionContext:executionContext:]): 18122 (-[WebScriptObject _initWithObjectImp:originExecutionContext:executionContext:]): 18123 (+[WebScriptObject throwException:]): 18124 (-[WebScriptObject setException:]): 18125 (+[WebScriptObject _convertValueToObjcValue:originExecutionContext:executionContext:]): 18126 * bindings/objc/objc_class.h: 18127 (KJS::Bindings::ObjcClass::~ObjcClass): 18128 (KJS::Bindings::ObjcClass::ObjcClass): 18129 (KJS::Bindings::ObjcClass::operator=): 18130 (KJS::Bindings::ObjcClass::constructorAt): 18131 (KJS::Bindings::ObjcClass::numConstructors): 18132 * bindings/objc/objc_header.h: 18133 * bindings/objc/objc_runtime.h: 18134 (KJS::Bindings::ObjcField::~ObjcField): 18135 (KJS::Bindings::ObjcField::ObjcField): 18136 (KJS::Bindings::ObjcField::operator=): 18137 (KJS::Bindings::ObjcMethod::ObjcMethod): 18138 (KJS::Bindings::ObjcMethod::~ObjcMethod): 18139 (KJS::Bindings::ObjcMethod::operator=): 18140 * bindings/objc/objc_runtime.mm: 18141 (ObjcField::valueFromInstance): 18142 (ObjcField::setValueToInstance): 18143 (ObjcArray::setValueAt): 18144 (ObjcArray::valueAt): 18145 * bindings/objc/objc_utility.h: 18146 * bindings/objc/objc_utility.mm: 18147 (KJS::Bindings::JSMethodNameToObjCMethodName): 18148 (KJS::Bindings::convertValueToObjcValue): 18149 (KJS::Bindings::convertNSStringToString): 18150 (KJS::Bindings::convertObjcValueToValue): 18151 (KJS::Bindings::objcValueTypeForType): 18152 (KJS::Bindings::createObjcInstanceForValue): 18153 (KJS::Bindings::throwError): 18154 * bindings/runtime.h: 18155 (KJS::Bindings::Parameter::~Parameter): 18156 (KJS::Bindings::Method::~Method): 18157 (KJS::Bindings::Instance::Instance): 18158 (KJS::Bindings::Instance::begin): 18159 (KJS::Bindings::Instance::end): 18160 (KJS::Bindings::Instance::getValueOfUndefinedField): 18161 (KJS::Bindings::Instance::supportsSetValueOfUndefinedField): 18162 (KJS::Bindings::Instance::setValueOfUndefinedField): 18163 (KJS::Bindings::Instance::valueOf): 18164 * bindings/runtime_array.cpp: 18165 (RuntimeArrayImp::put): 18166 * bindings/runtime_object.h: 18167 (KJS::RuntimeObjectImp::setInternalInstance): 18168 (KJS::RuntimeObjectImp::getInternalInstance): 18169 * kjs/array_object.cpp: 18170 (getProperty): 18171 (ArrayProtoFuncImp::callAsFunction): 18172 (ArrayObjectImp::construct): 18173 * kjs/bool_object.cpp: 18174 (BooleanProtoFuncImp::callAsFunction): 18175 * kjs/date_object.cpp: 18176 (KJS::DateProtoFuncImp::callAsFunction): 18177 * kjs/function.cpp: 18178 (KJS::decode): 18179 (KJS::GlobalFuncImp::callAsFunction): 18180 * kjs/function_object.cpp: 18181 (FunctionProtoFuncImp::callAsFunction): 18182 (FunctionObjectImp::construct): 18183 * kjs/internal.cpp: 18184 (KJS::UndefinedImp::toObject): 18185 (KJS::NullImp::toObject): 18186 (KJS::InterpreterImp::evaluate): 18187 (KJS::InternalFunctionImp::hasInstance): 18188 * kjs/nodes.cpp: 18189 (Node::throwError): 18190 (substitute): 18191 (Node::setExceptionDetailsIfNeeded): 18192 (undefinedVariableError): 18193 (ProgramNode::ProgramNode): 18194 * kjs/number_object.cpp: 18195 (NumberProtoFuncImp::callAsFunction): 18196 * kjs/object.cpp: 18197 (KJS::ObjectImp::call): 18198 (KJS::ObjectImp::defaultValue): 18199 (KJS::Error::create): 18200 (KJS::throwError): 18201 * kjs/object.h: 18202 (KJS::ObjectImp::clearProperties): 18203 (KJS::ObjectImp::getPropertySlot): 18204 (KJS::ObjectImp::getOwnPropertySlot): 18205 * kjs/object_object.cpp: 18206 (ObjectProtoFuncImp::callAsFunction): 18207 * kjs/reference.cpp: 18208 (KJS::Reference::getBase): 18209 (KJS::Reference::getValue): 18210 (KJS::Reference::putValue): 18211 (KJS::Reference::deleteValue): 18212 * kjs/regexp_object.cpp: 18213 (RegExpProtoFuncImp::callAsFunction): 18214 (RegExpObjectImp::construct): 18215 * kjs/string_object.cpp: 18216 (StringProtoFuncImp::callAsFunction): 18217 182182005-08-15 Anders Carlsson <andersca@mac.com> 18219 18220 Reviewed by Darin. 18221 18222 * tests/mozilla/ecma_3/Date/15.9.5.5.js: 18223 Remove the code which tests that Date.toLocaleString should be parsable 18224 by Date.parse. That is not true according to the spec. 18225 182262005-08-15 Darin Adler <darin@apple.com> 18227 18228 Reviewed by Geoff. 18229 18230 * kjs/collector.cpp: (KJS::Collector::allocate): Use a local instead of a global in one 18231 more place; slight speedup. 18232 182332005-08-14 Darin Adler <darin@apple.com> 18234 18235 Reviewed by Maciej. 18236 18237 - fixed crash observed on one of the Apple-only layout tests 18238 18239 * kjs/property_map.cpp: (KJS::PropertyMap::mark): Change code to understand that deleted 18240 entries have a value of NULL, so the deleted sentinel count doesn't need to be included 18241 in the count of things to mark since we're ignoring the keys. 18242 182432005-08-14 Darin Adler <darin@apple.com> 18244 18245 Reviewed by Maciej. 18246 18247 - fixed http://bugs.webkit.org/show_bug.cgi?id=4421 18248 speed up JavaScript by inlining some label stack functions 18249 18250 * kjs/internal.h: Removed the copy constructor and assignment operator for LabelStack. 18251 They were unused, and the implementations had bugs; I removed them rather than fixing them. 18252 Also removed the clear function, since that was only needed to help the assignment operator 18253 share code with the destructor, and was not efficient enough for the destructor. 18254 (KJS::LabelStack::~LabelStack): Made this inline. Also used an efficient implementation 18255 that's nice and fast when the stack is empty, better than the old clear() function which 18256 used to keep updating and refetching "tos" each time through the loop. 18257 (KJS::LabelStack::pop): Made this inline. 18258 18259 * kjs/internal.cpp: Deleted the now-inline functions and the obsolete functions. Also 18260 deleted a commented-out line of code. 18261 182622005-08-14 Darin Adler <darin@apple.com> 18263 18264 Reviewed by Maciej. 18265 18266 - fixed http://bugs.webkit.org/show_bug.cgi?id=4419 18267 speed up JavaScript by improving KJS::List 18268 18269 my measurements show an improvement of 1% on iBench JavaScript 18270 18271 * kjs/list.cpp: Rearrange list to make the values and free list share the same storage, 18272 which saves 4 bytes per list. Also remove the pointers used only on the heap from the 18273 lists that are in the pool, which saves 8 bytes per list. Moving the free list pointer 18274 closer to the start of the list object also speeds up access to the free list. New 18275 "HeapListImp" struct is used only for the lists on the heap. 18276 (KJS::List::markProtectedLists): Shadowed global variable in local and updated for the 18277 new terminology ("heap" instead of "outside pool"). 18278 (KJS::allocateListImp): Updated for new terminology. 18279 (KJS::List::release): Moved the code from deallocateListImp in here -- it wasn't being 18280 inlined and didn't need to be in a separate function. 18281 182822005-08-14 Darin Adler <darin@apple.com> 18283 18284 Reviewed by Maciej. 18285 18286 - fixed http://bugs.webkit.org/show_bug.cgi?id=4417 18287 speed up JavaScript with some small changes to the property map code 18288 18289 my measurements show an improvement of 2% on iBench JavaScript 18290 18291 * kjs/property_map.h: (KJS::PropertyMap::PropertyMap): Made the default constructor inline. 18292 * kjs/property_map.cpp: 18293 (KJS::PropertyMap::~PropertyMap): Changed loop to exit early once we know we've processed 18294 all the hash table entries, based on the count. 18295 (KJS::PropertyMap::mark): Ditto. 18296 18297 * kjs/object.h: Made an arbitrary change here to force recompiling so we pick up changes to 18298 property_map.h. Works around what seems to be an Xcode header dependency bug. 18299 183002005-08-14 Darin Adler <darin@apple.com> 18301 18302 Reviewed by Maciej. 18303 18304 - fixed http://bugs.webkit.org/show_bug.cgi?id=4416 18305 speed up JavaScript with some improvements to the garbage collector 18306 18307 my measurements show an improvement of 2% on iBench JavaScript 18308 18309 * kjs/collector.cpp: 18310 (KJS::Collector::allocate): Use local variables to shadow globals instead of repeatedly 18311 going at global variables. Tighten up loop implementations to make the common case fast. 18312 (KJS::Collector::markStackObjectsConservatively): Use local variables to shadow globals. 18313 Used a goto to eliminate a boolean since it was showing up in the profile. 18314 (KJS::Collector::markProtectedObjects): Iterate through the table using pointer rather 18315 than an index since the profile showed that generating better code. 18316 (KJS::Collector::collect): Added a special case for blocks where all cells are used, 18317 Use local variables to shadow globals. Eliminated a boolean by computing it another 18318 way (checking to see if the number of live objects changed). Also used local variables 18319 to shadow fields in the current cell when sweeping. 18320 (KJS::Collector::numReferencedObjects): Use AllocatedValueImp instead of ValueImp 18321 in one place -- means we get faster versions of various functions that don't worry 18322 about SimpleNumber. 18323 (KJS::className): Ditto. 18324 (KJS::Collector::rootObjectClasses): Ditto. 18325 183262005-08-14 Darin Adler <darin@apple.com> 18327 18328 - fixed http://bugs.webkit.org/show_bug.cgi?id=4344 18329 REGRESSION: JavaScript crash when going back from viewing a thread (NULL protoype) 18330 18331 * kjs/error_object.cpp: (NativeErrorImp::NativeErrorImp): Set proto in a more 18332 straightforward way. The old code set the proto to 0 and then to the correct value. 18333 This showed up as a "false positive" when searching for places that set prototype 18334 to NULL/0 so I fixed it. 18335 18336 * kjs/function_object.cpp: (FunctionPrototypeImp::FunctionPrototypeImp): Change to 18337 not pass an explicit "0" to the base class (InternalFunctionImp) constructor. 18338 18339 * kjs/internal.h: Added a default constructor for InternalFunctionImp. 18340 * kjs/internal.cpp: (KJS::InternalFunctionImp::InternalFunctionImp): Added the 18341 default constructor (empty body, just calls base class's default constructor). 18342 18343 * kjs/object.h: 18344 (KJS::ObjectImp::ObjectImp): Add an assertion to catch NULL prototypes earlier 18345 in Development builds. 18346 (KJS::ObjectImp::setPrototype): Ditto. 18347 183482005-08-12 Maciej Stachowiak <mjs@apple.com> 18349 18350 Reviewed by John. 18351 18352 - two simple speed improvements for a 3% speed gain 18353 18354 * JavaScriptCore.xcodeproj/project.pbxproj: turn on -fstrict-aliasing 18355 18356 * kjs/scope_chain.h: 18357 (KJS::ScopeChainIterator::ScopeChainIterator): Add a scope chain iterator 18358 so you can walk a scope chain without having to make a copy that you then mutate. 18359 (KJS::ScopeChainIterator::operator*): standard iterator operation 18360 (KJS::ScopeChainIterator::operator->): ditto 18361 (KJS::ScopeChainIterator::operator++): ditto 18362 (KJS::ScopeChainIterator::operator==): ditto 18363 (KJS::ScopeChainIterator::operator!=): ditto 18364 (KJS::ScopeChain::begin): Iterator for the top of the scope chain 18365 (KJS::ScopeChain::end): Iterator for one past the bottom (i.e. null) 18366 * kjs/nodes.cpp: 18367 (ResolveNode::evaluate): Use scope chain iterator instead of copying 18368 a scope chain and then modifying the copy 18369 (ResolveNode::evaluateReference): ditto 18370 (FunctionCallResolveNode::evaluate): ditto 18371 (AssignResolveNode::evaluate): ditto 18372 183732005-08-12 Maciej Stachowiak <mjs@apple.com> 18374 18375 Patch from Anders Carlsson, reviewed by me. 18376 18377 * kjs/nodes.h: Fix build breakage. 18378 183792005-08-12 Maciej Stachowiak <mjs@apple.com> 18380 18381 Reviewed by hyatt. 18382 18383 - refactor function calls, 3% speedup on JS iBench. 18384 18385 * kjs/grammar.y: 18386 * kjs/nodes.cpp: 18387 (Node::throwError): Added new useful variants. 18388 (FunctionCallValueNode::evaluate): New node to handle calls on expressions 18389 that are strictly values, not references. 18390 (FunctionCallValueNode::ref): ditto 18391 (FunctionCallValueNode::deref): ditto 18392 (FunctionCallResolveNode::evaluate): New node to handle calls on identifier 18393 expressions, so that they are looked up in the scope chain. 18394 (FunctionCallResolveNode::ref): ditto 18395 (FunctionCallResolveNode::deref): ditto 18396 (FunctionCallBracketNode::evaluate): New node to handle calls on bracket 18397 dereferences, so that the expression before brackets is used as the this 18398 object. 18399 (FunctionCallBracketNode::ref): ditto 18400 (FunctionCallBracketNode::deref): ditto 18401 (FunctionCallDotNode::evaluate): New node to handle calls on dot 18402 dereferences, so that the expression before the dot is used as the this 18403 object. 18404 (FunctionCallDotNode::ref): ditto 18405 (FunctionCallDotNode::deref): ditto 18406 (dotExprNotAnObjectString): helper function to avoid global variable access. 18407 (dotExprDoesNotAllowCallsString): ditto 18408 * kjs/nodes.h: Declared new classes. 18409 * kjs/nodes2string.cpp: 18410 (FunctionCallValueNode::streamTo): Added - serializes the appropriate function call 18411 (FunctionCallResolveNode::streamTo): ditto 18412 (FunctionCallBracketNode::streamTo): ditto 18413 (FunctionCallParenBracketNode::streamTo): ditto 18414 (FunctionCallDotNode::streamTo): ditto 18415 (FunctionCallParenDotNode::streamTo): ditto 18416 * kjs/object.h: 18417 (KJS::ObjectImp::isActivation): Change how activation objects are 18418 detected in the scope chain, a virtual function is cheaper than the 18419 old inheritance test. 18420 * kjs/function.h: 18421 (KJS::ActivationImp::isActivation): Ditto. 18422 184232005-08-11 Maciej Stachowiak <mjs@apple.com> 18424 18425 - added missing file from earlier checkin 18426 18427 * kjs/grammar_types.h: Added. 18428 (KJS::makeNodePair): 18429 (KJS::makeNodeWithIdent): 18430 184312005-08-11 Maciej Stachowiak <mjs@apple.com> 18432 18433 Reviewed by Geoff. 18434 18435 * kjs/date_object.cpp: 18436 (timetUsingCF): Fix one of the date tests my making the CF version of mktime 18437 have the same quirk about the DST field as the real mktime. 18438 * tests/mozilla/expected.html: Updated for newly fixed test. 18439 184402005-08-11 Maciej Stachowiak <mjs@apple.com> 18441 18442 - updated for one of the tests that Darin incidentally fixed. 18443 18444 * tests/mozilla/expected.html: 18445 184462005-08-10 Maciej Stachowiak <mjs@apple.com> 18447 18448 Reviewed by Geoff. 18449 18450 Refactor assignment grammar to avoid Reference type, and to later 18451 be able to take advantage of writeable PropertySlots, when those 18452 are added. I also fixed a minor bug, turning a function to a 18453 string lost parentheses, I made sure they are printed at least 18454 where semantically significant. 18455 18456 Test cases: see WebCore 18457 18458 * kjs/grammar.y: Change grammar so that assignment expressions are parsed 18459 directly to nodes that know how to set the kind of location being assigned, instead 18460 of having a generic assign node that counts on evaluateReference. 18461 * kjs/lexer.cpp: Include grammar_types.h. 18462 * kjs/nodes.cpp: 18463 (BracketAccessorNode): Renamed from AccessorNode1 for clarity. 18464 (DotAccessorNode): Renamed from AccessorNode2 for clarity. 18465 (combineForAssignment): Inline function for doing the proper kind of 18466 operation for various update assignments like += or *=. 18467 (AssignResolveNode): Node that handles assignment to a bare identifier. 18468 (AssignDotNode): Node that handles assignments of the form EXPR . IDENT = EXPR 18469 (AssignBracketNode): EXPR [ IDENT ] = EXPR 18470 * kjs/nodes.h: Updated for declarations/renames of new classes. 18471 * kjs/nodes2string.cpp: 18472 (GroupNode::streamTo): Fixed to print parens around the expression. 18473 (BracketAccessorNode::streamTo): Renamed. 18474 (DotAccessorNode::streamTo): Renamed. 18475 (AssignResolveNode::streamTo): Added. 18476 (AssignBracketNode::streamTo): Added. 18477 (AssignDotNode::streamTo): Added. 18478 (streamAssignmentOperatorTo): helper function for the above 18479 * kjs/property_slot.h: 18480 (KJS::PropertySlot::isSet): Made this const. 18481 184822005-08-10 Adele Peterson <adele@apple.com> 18483 18484 Bumping version to 420+ 18485 18486 * Info.plist: 18487 184882005-08-10 Geoffrey Garen <ggaren@apple.com> 18489 18490 -fixed <rdar://problem/4151132> REGRESSION: Some applet liveconnect calls 18491 throws privilege exception. 18492 18493 Reviewed by richard and mjs. 18494 18495 -I removed the global static JavaClass cache, since it violated Java 18496 security to cache classes between websites and applets. 18497 18498 * bindings/jni/jni_class.cpp: 18499 -removed global static cache dictionary 18500 -instance constructor and destructor now do the work that used to 18501 be done by static factory methods 18502 -removed obsolete functions 18503 (JavaClass::JavaClass): 18504 (JavaClass::~JavaClass): 18505 * bindings/jni/jni_class.h: 18506 -removed obsolete function declarations 18507 -made copying private since it's unused and it's also not clear 18508 excatly how copying would work with Java security 18509 -made default construction private since it's meaningless 18510 * bindings/jni/jni_instance.cpp: 18511 -removed obsolete functions 18512 (JavaInstance::~JavaInstance): 18513 (JavaInstance::getClass): 18514 * bindings/jni/jni_instance.h: 18515 -made copying private since it's unused and it's also not clear 18516 excatly how copying would work with Java security 18517 -made default construction private since it's meaningless 18518 185192005-08-08 Geoffrey Garen <ggaren@apple.com> 18520 18521 -fixed crash caused by fix for http://bugs.webkit.org/show_bug.cgi?id=4313 18522 18523 - exceptionDescription now gets explicitly initialized to NULL in all 18524 the places listed below -- our wrapper classes used to take care of this 18525 automagically 18526 18527 * bindings/jni/jni_instance.cpp: 18528 (JavaInstance::invokeMethod): 18529 * bindings/jni/jni_runtime.cpp: 18530 (JavaField::dispatchValueFromInstance): 18531 (JavaField::dispatchSetValueToInstance): 18532 185332005-08-08 Darin Adler <darin@apple.com> 18534 18535 Reviewed by John Sullivan. 18536 18537 - fixed http://bugs.webkit.org/show_bug.cgi?id=4325 18538 Mozilla Date tests have an unnecessary loop that runs 1970 times before each test 18539 18540 * tests/mozilla/ecma/shell.js: Added TIME_YEAR_0 constant. 18541 18542 * tests/mozilla/ecma/Date/15.9.5.10-1.js: Removed the loop and changed code to use the constant. 18543 * tests/mozilla/ecma/Date/15.9.5.10-10.js: Ditto. 18544 * tests/mozilla/ecma/Date/15.9.5.10-11.js: Ditto. 18545 * tests/mozilla/ecma/Date/15.9.5.10-12.js: Ditto. 18546 * tests/mozilla/ecma/Date/15.9.5.10-13.js: Ditto. 18547 * tests/mozilla/ecma/Date/15.9.5.10-2.js: Ditto. 18548 * tests/mozilla/ecma/Date/15.9.5.10-3.js: Ditto. 18549 * tests/mozilla/ecma/Date/15.9.5.10-4.js: Ditto. 18550 * tests/mozilla/ecma/Date/15.9.5.10-5.js: Ditto. 18551 * tests/mozilla/ecma/Date/15.9.5.10-6.js: Ditto. 18552 * tests/mozilla/ecma/Date/15.9.5.10-7.js: Ditto. 18553 * tests/mozilla/ecma/Date/15.9.5.10-8.js: Ditto. 18554 * tests/mozilla/ecma/Date/15.9.5.10-9.js: Ditto. 18555 * tests/mozilla/ecma/Date/15.9.5.11-2.js: Ditto. 18556 * tests/mozilla/ecma/Date/15.9.5.12-1.js: Ditto. 18557 * tests/mozilla/ecma/Date/15.9.5.12-2.js: Ditto. 18558 * tests/mozilla/ecma/Date/15.9.5.12-3.js: Ditto. 18559 * tests/mozilla/ecma/Date/15.9.5.12-4.js: Ditto. 18560 * tests/mozilla/ecma/Date/15.9.5.12-5.js: Ditto. 18561 * tests/mozilla/ecma/Date/15.9.5.12-6.js: Ditto. 18562 * tests/mozilla/ecma/Date/15.9.5.12-7.js: Ditto. 18563 * tests/mozilla/ecma/Date/15.9.5.12-8.js: Ditto. 18564 * tests/mozilla/ecma/Date/15.9.5.13-2.js: Ditto. 18565 * tests/mozilla/ecma/Date/15.9.5.13-8.js: Ditto. 18566 * tests/mozilla/ecma/Date/15.9.5.14.js: Ditto. 18567 * tests/mozilla/ecma/Date/15.9.5.15.js: Ditto. 18568 * tests/mozilla/ecma/Date/15.9.5.16.js: Ditto. 18569 * tests/mozilla/ecma/Date/15.9.5.17.js: Ditto. 18570 * tests/mozilla/ecma/Date/15.9.5.18.js: Ditto. 18571 * tests/mozilla/ecma/Date/15.9.5.19.js: Ditto. 18572 * tests/mozilla/ecma/Date/15.9.5.20.js: Ditto. 18573 * tests/mozilla/ecma/Date/15.9.5.21-1.js: Ditto. 18574 * tests/mozilla/ecma/Date/15.9.5.21-2.js: Ditto. 18575 * tests/mozilla/ecma/Date/15.9.5.21-3.js: Ditto. 18576 * tests/mozilla/ecma/Date/15.9.5.21-4.js: Ditto. 18577 * tests/mozilla/ecma/Date/15.9.5.21-5.js: Ditto. 18578 * tests/mozilla/ecma/Date/15.9.5.21-6.js: Ditto. 18579 * tests/mozilla/ecma/Date/15.9.5.21-7.js: Ditto. 18580 * tests/mozilla/ecma/Date/15.9.5.21-8.js: Ditto. 18581 * tests/mozilla/ecma/Date/15.9.5.22-1.js: Ditto. 18582 * tests/mozilla/ecma/Date/15.9.5.22-2.js: Ditto. 18583 * tests/mozilla/ecma/Date/15.9.5.22-3.js: Ditto. 18584 * tests/mozilla/ecma/Date/15.9.5.22-4.js: Ditto. 18585 * tests/mozilla/ecma/Date/15.9.5.22-5.js: Ditto. 18586 * tests/mozilla/ecma/Date/15.9.5.22-6.js: Ditto. 18587 * tests/mozilla/ecma/Date/15.9.5.22-7.js: Ditto. 18588 * tests/mozilla/ecma/Date/15.9.5.22-8.js: Ditto. 18589 * tests/mozilla/ecma/Date/15.9.5.23-4.js: Ditto. 18590 * tests/mozilla/ecma/Date/15.9.5.23-5.js: Ditto. 18591 * tests/mozilla/ecma/Date/15.9.5.23-6.js: Ditto. 18592 * tests/mozilla/ecma/Date/15.9.5.23-7.js: Ditto. 18593 * tests/mozilla/ecma/Date/15.9.5.23-8.js: Ditto. 18594 * tests/mozilla/ecma/Date/15.9.5.23-9.js: Ditto. 18595 * tests/mozilla/ecma/Date/15.9.5.5.js: Ditto. 18596 * tests/mozilla/ecma/Date/15.9.5.6.js: Ditto. 18597 * tests/mozilla/ecma/Date/15.9.5.7.js: Ditto. 18598 * tests/mozilla/ecma/Date/15.9.5.8.js: Ditto. 18599 * tests/mozilla/ecma/Date/15.9.5.9.js: Ditto. 18600 186012005-08-08 Darin Adler <darin@apple.com> 18602 18603 - forgot to delete an obsolete file 18604 18605 * kjs/object_wrapper.h: Deleted. 18606 186072005-08-07 Darin Adler <darin@apple.com> 18608 18609 - fixed two problems compiling with gcc 4.0 18610 18611 * kjs/array_object.cpp: (ArrayProtoFuncImp::callAsFunction): Initialized a 18612 variable to quiet an erroneous warning. 18613 * kjs/date_object.cpp: (KJS::makeTime): Removed extraneous KJS:: prefix. 18614 186152005-08-07 Darin Adler <darin@apple.com> 18616 18617 Rubber stamped by Maciej. 18618 18619 - fixed http://bugs.webkit.org/show_bug.cgi?id=4313 18620 eliminate KJS::Value and KJS::Object smart pointer wrappers (for simplicity and speed) 18621 18622 * JavaScriptCore.xcodeproj/project.pbxproj: Removed object_wrapper.h. 18623 18624 Global replaces and other wonderful stuff. 18625 18626 * bindings/NP_jsobject.cpp: 18627 (_NPN_Invoke): 18628 (_NPN_Evaluate): 18629 (_NPN_GetProperty): 18630 (_NPN_SetProperty): 18631 (_NPN_HasMethod): 18632 (_NPN_SetException): 18633 * bindings/c/c_instance.cpp: 18634 (KJS::Bindings::CInstance::CInstance): 18635 (KJS::Bindings::CInstance::invokeMethod): 18636 (KJS::Bindings::CInstance::invokeDefaultMethod): 18637 (KJS::Bindings::CInstance::defaultValue): 18638 (KJS::Bindings::CInstance::stringValue): 18639 (KJS::Bindings::CInstance::numberValue): 18640 (KJS::Bindings::CInstance::booleanValue): 18641 (KJS::Bindings::CInstance::valueOf): 18642 * bindings/c/c_instance.h: 18643 * bindings/c/c_runtime.cpp: 18644 (CField::valueFromInstance): 18645 (CField::setValueToInstance): 18646 * bindings/c/c_runtime.h: 18647 * bindings/c/c_utility.cpp: 18648 (convertNPStringToUTF16): 18649 (convertUTF8ToUTF16): 18650 (coerceValueToNPVariantStringType): 18651 (convertValueToNPVariant): 18652 (convertNPVariantToValue): 18653 * bindings/c/c_utility.h: 18654 * bindings/jni/jni_instance.cpp: 18655 (JavaInstance::stringValue): 18656 (JavaInstance::numberValue): 18657 (JavaInstance::booleanValue): 18658 (JavaInstance::invokeMethod): 18659 (JavaInstance::invokeDefaultMethod): 18660 (JavaInstance::defaultValue): 18661 (JavaInstance::valueOf): 18662 * bindings/jni/jni_instance.h: 18663 * bindings/jni/jni_jsobject.cpp: 18664 (JSObject::invoke): 18665 (JSObject::call): 18666 (JSObject::eval): 18667 (JSObject::getMember): 18668 (JSObject::getSlot): 18669 (JSObject::toString): 18670 (JSObject::convertValueToJObject): 18671 (JSObject::convertJObjectToValue): 18672 (JSObject::listFromJArray): 18673 * bindings/jni/jni_jsobject.h: 18674 * bindings/jni/jni_objc.mm: 18675 (KJS::Bindings::dispatchJNICall): 18676 * bindings/jni/jni_runtime.cpp: 18677 (JavaArray::convertJObjectToArray): 18678 (JavaField::dispatchValueFromInstance): 18679 (JavaField::valueFromInstance): 18680 (JavaField::dispatchSetValueToInstance): 18681 (JavaField::setValueToInstance): 18682 (JavaArray::setValueAt): 18683 (JavaArray::valueAt): 18684 * bindings/jni/jni_runtime.h: 18685 (KJS::Bindings::JavaString::ustring): 18686 * bindings/jni/jni_utility.cpp: 18687 (KJS::Bindings::getJavaVM): 18688 (KJS::Bindings::getJNIEnv): 18689 (KJS::Bindings::getMethodID): 18690 (KJS::Bindings::callJNIVoidMethod): 18691 (KJS::Bindings::callJNIObjectMethod): 18692 (KJS::Bindings::callJNIBooleanMethod): 18693 (KJS::Bindings::callJNIStaticBooleanMethod): 18694 (KJS::Bindings::callJNIByteMethod): 18695 (KJS::Bindings::callJNICharMethod): 18696 (KJS::Bindings::callJNIShortMethod): 18697 (KJS::Bindings::callJNIIntMethod): 18698 (KJS::Bindings::callJNILongMethod): 18699 (KJS::Bindings::callJNIFloatMethod): 18700 (KJS::Bindings::callJNIDoubleMethod): 18701 (KJS::Bindings::callJNIVoidMethodA): 18702 (KJS::Bindings::callJNIObjectMethodA): 18703 (KJS::Bindings::callJNIByteMethodA): 18704 (KJS::Bindings::callJNICharMethodA): 18705 (KJS::Bindings::callJNIShortMethodA): 18706 (KJS::Bindings::callJNIIntMethodA): 18707 (KJS::Bindings::callJNILongMethodA): 18708 (KJS::Bindings::callJNIFloatMethodA): 18709 (KJS::Bindings::callJNIDoubleMethodA): 18710 (KJS::Bindings::callJNIBooleanMethodA): 18711 (KJS::Bindings::callJNIVoidMethodIDA): 18712 (KJS::Bindings::callJNIObjectMethodIDA): 18713 (KJS::Bindings::callJNIByteMethodIDA): 18714 (KJS::Bindings::callJNICharMethodIDA): 18715 (KJS::Bindings::callJNIShortMethodIDA): 18716 (KJS::Bindings::callJNIIntMethodIDA): 18717 (KJS::Bindings::callJNILongMethodIDA): 18718 (KJS::Bindings::callJNIFloatMethodIDA): 18719 (KJS::Bindings::callJNIDoubleMethodIDA): 18720 (KJS::Bindings::callJNIBooleanMethodIDA): 18721 (KJS::Bindings::getCharactersFromJString): 18722 (KJS::Bindings::releaseCharactersForJString): 18723 (KJS::Bindings::getCharactersFromJStringInEnv): 18724 (KJS::Bindings::releaseCharactersForJStringInEnv): 18725 (KJS::Bindings::getUCharactersFromJStringInEnv): 18726 (KJS::Bindings::releaseUCharactersForJStringInEnv): 18727 (KJS::Bindings::JNITypeFromClassName): 18728 (KJS::Bindings::signatureFromPrimitiveType): 18729 (KJS::Bindings::JNITypeFromPrimitiveType): 18730 (KJS::Bindings::getJNIField): 18731 (KJS::Bindings::convertValueToJValue): 18732 * bindings/jni/jni_utility.h: 18733 * bindings/objc/WebScriptObject.mm: 18734 (_didExecute): 18735 (-[WebScriptObject _initializeWithObjectImp:originExecutionContext:Bindings::executionContext:Bindings::]): 18736 (-[WebScriptObject _initWithObjectImp:originExecutionContext:Bindings::executionContext:Bindings::]): 18737 (-[WebScriptObject _imp]): 18738 (-[WebScriptObject _executionContext]): 18739 (-[WebScriptObject _setExecutionContext:]): 18740 (-[WebScriptObject _originExecutionContext]): 18741 (-[WebScriptObject _setOriginExecutionContext:]): 18742 (+[WebScriptObject throwException:]): 18743 (listFromNSArray): 18744 (-[WebScriptObject callWebScriptMethod:withArguments:]): 18745 (-[WebScriptObject evaluateWebScript:]): 18746 (-[WebScriptObject setValue:forKey:]): 18747 (-[WebScriptObject valueForKey:]): 18748 (-[WebScriptObject removeWebScriptKey:]): 18749 (-[WebScriptObject stringRepresentation]): 18750 (-[WebScriptObject webScriptValueAtIndex:]): 18751 (-[WebScriptObject setException:]): 18752 (+[WebScriptObject _convertValueToObjcValue:originExecutionContext:executionContext:Bindings::]): 18753 * bindings/objc/WebScriptObjectPrivate.h: 18754 * bindings/objc/objc_class.h: 18755 * bindings/objc/objc_class.mm: 18756 (KJS::Bindings::ObjcClass::fallbackObject): 18757 * bindings/objc/objc_instance.h: 18758 * bindings/objc/objc_instance.mm: 18759 (ObjcInstance::invokeMethod): 18760 (ObjcInstance::invokeDefaultMethod): 18761 (ObjcInstance::setValueOfField): 18762 (ObjcInstance::setValueOfUndefinedField): 18763 (ObjcInstance::getValueOfField): 18764 (ObjcInstance::getValueOfUndefinedField): 18765 (ObjcInstance::defaultValue): 18766 (ObjcInstance::stringValue): 18767 (ObjcInstance::numberValue): 18768 (ObjcInstance::booleanValue): 18769 (ObjcInstance::valueOf): 18770 * bindings/objc/objc_runtime.h: 18771 * bindings/objc/objc_runtime.mm: 18772 (ObjcField::valueFromInstance): 18773 (convertValueToObjcObject): 18774 (ObjcField::setValueToInstance): 18775 (ObjcArray::setValueAt): 18776 (ObjcArray::valueAt): 18777 (ObjcFallbackObjectImp::put): 18778 (ObjcFallbackObjectImp::callAsFunction): 18779 (ObjcFallbackObjectImp::defaultValue): 18780 * bindings/objc/objc_utility.h: 18781 * bindings/objc/objc_utility.mm: 18782 (Bindings::JSMethodNameToObjCMethodName): 18783 (Bindings::convertValueToObjcValue): 18784 (Bindings::convertNSStringToString): 18785 (Bindings::convertObjcValueToValue): 18786 (Bindings::objcValueTypeForType): 18787 (Bindings::createObjcInstanceForValue): 18788 * bindings/runtime.cpp: 18789 (Instance::getValueOfField): 18790 (Instance::setValueOfField): 18791 (Instance::createRuntimeObject): 18792 (Instance::createLanguageInstanceForValue): 18793 * bindings/runtime.h: 18794 (KJS::Bindings::Constructor::~Constructor): 18795 (KJS::Bindings::Field::~Field): 18796 (KJS::Bindings::MethodList::MethodList): 18797 (KJS::Bindings::Class::fallbackObject): 18798 (KJS::Bindings::Class::~Class): 18799 (KJS::Bindings::Instance::Instance): 18800 (KJS::Bindings::Instance::getValueOfUndefinedField): 18801 (KJS::Bindings::Instance::supportsSetValueOfUndefinedField): 18802 (KJS::Bindings::Instance::setValueOfUndefinedField): 18803 (KJS::Bindings::Instance::valueOf): 18804 (KJS::Bindings::Instance::setExecutionContext): 18805 (KJS::Bindings::Instance::~Instance): 18806 (KJS::Bindings::Array::~Array): 18807 * bindings/runtime_array.cpp: 18808 (RuntimeArrayImp::RuntimeArrayImp): 18809 (RuntimeArrayImp::lengthGetter): 18810 (RuntimeArrayImp::indexGetter): 18811 (RuntimeArrayImp::put): 18812 * bindings/runtime_array.h: 18813 * bindings/runtime_method.cpp: 18814 (RuntimeMethodImp::lengthGetter): 18815 (RuntimeMethodImp::callAsFunction): 18816 * bindings/runtime_method.h: 18817 * bindings/runtime_object.cpp: 18818 (RuntimeObjectImp::fallbackObjectGetter): 18819 (RuntimeObjectImp::fieldGetter): 18820 (RuntimeObjectImp::methodGetter): 18821 (RuntimeObjectImp::getOwnPropertySlot): 18822 (RuntimeObjectImp::put): 18823 (RuntimeObjectImp::defaultValue): 18824 (RuntimeObjectImp::callAsFunction): 18825 * bindings/runtime_object.h: 18826 * kjs/array_instance.h: 18827 * kjs/array_object.cpp: 18828 (ArrayInstanceImp::ArrayInstanceImp): 18829 (ArrayInstanceImp::lengthGetter): 18830 (ArrayInstanceImp::getOwnPropertySlot): 18831 (ArrayInstanceImp::put): 18832 (ArrayInstanceImp::propList): 18833 (ArrayInstanceImp::setLength): 18834 (compareByStringForQSort): 18835 (compareWithCompareFunctionForQSort): 18836 (ArrayInstanceImp::sort): 18837 (ArrayInstanceImp::pushUndefinedObjectsToEnd): 18838 (ArrayPrototypeImp::ArrayPrototypeImp): 18839 (ArrayProtoFuncImp::ArrayProtoFuncImp): 18840 (ArrayProtoFuncImp::callAsFunction): 18841 (ArrayObjectImp::ArrayObjectImp): 18842 (ArrayObjectImp::construct): 18843 (ArrayObjectImp::callAsFunction): 18844 * kjs/array_object.h: 18845 * kjs/bool_object.cpp: 18846 (BooleanPrototypeImp::BooleanPrototypeImp): 18847 (BooleanProtoFuncImp::BooleanProtoFuncImp): 18848 (BooleanProtoFuncImp::callAsFunction): 18849 (BooleanObjectImp::BooleanObjectImp): 18850 (BooleanObjectImp::construct): 18851 (BooleanObjectImp::callAsFunction): 18852 * kjs/bool_object.h: 18853 * kjs/collector.cpp: 18854 (KJS::Collector::markStackObjectsConservatively): 18855 (KJS::Collector::collect): 18856 (KJS::className): 18857 * kjs/completion.h: 18858 (KJS::Completion::Completion): 18859 (KJS::Completion::value): 18860 (KJS::Completion::isValueCompletion): 18861 * kjs/context.h: 18862 (KJS::ContextImp::variableObject): 18863 (KJS::ContextImp::setVariableObject): 18864 (KJS::ContextImp::thisValue): 18865 (KJS::ContextImp::activationObject): 18866 (KJS::ContextImp::pushScope): 18867 * kjs/date_object.cpp: 18868 (formatLocaleDate): 18869 (KJS::timeFromArgs): 18870 (KJS::DatePrototypeImp::DatePrototypeImp): 18871 (KJS::DateProtoFuncImp::DateProtoFuncImp): 18872 (KJS::DateProtoFuncImp::callAsFunction): 18873 (KJS::DateObjectImp::DateObjectImp): 18874 (KJS::DateObjectImp::construct): 18875 (KJS::DateObjectImp::callAsFunction): 18876 (KJS::DateObjectFuncImp::DateObjectFuncImp): 18877 (KJS::DateObjectFuncImp::callAsFunction): 18878 (KJS::parseDate): 18879 (KJS::KRFCDate_parseDate): 18880 (KJS::timeClip): 18881 * kjs/date_object.h: 18882 * kjs/debugger.cpp: 18883 (Debugger::exception): 18884 (Debugger::callEvent): 18885 (Debugger::returnEvent): 18886 * kjs/debugger.h: 18887 * kjs/error_object.cpp: 18888 (ErrorPrototypeImp::ErrorPrototypeImp): 18889 (ErrorProtoFuncImp::ErrorProtoFuncImp): 18890 (ErrorProtoFuncImp::callAsFunction): 18891 (ErrorObjectImp::ErrorObjectImp): 18892 (ErrorObjectImp::construct): 18893 (ErrorObjectImp::callAsFunction): 18894 (NativeErrorPrototypeImp::NativeErrorPrototypeImp): 18895 (NativeErrorImp::NativeErrorImp): 18896 (NativeErrorImp::construct): 18897 (NativeErrorImp::callAsFunction): 18898 * kjs/error_object.h: 18899 * kjs/function.cpp: 18900 (KJS::FunctionImp::FunctionImp): 18901 (KJS::FunctionImp::callAsFunction): 18902 (KJS::FunctionImp::processParameters): 18903 (KJS::FunctionImp::argumentsGetter): 18904 (KJS::FunctionImp::lengthGetter): 18905 (KJS::FunctionImp::put): 18906 (KJS::DeclaredFunctionImp::DeclaredFunctionImp): 18907 (KJS::DeclaredFunctionImp::construct): 18908 (KJS::ArgumentsImp::ArgumentsImp): 18909 (KJS::ArgumentsImp::mappedIndexGetter): 18910 (KJS::ArgumentsImp::put): 18911 (KJS::ActivationImp::argumentsGetter): 18912 (KJS::GlobalFuncImp::GlobalFuncImp): 18913 (KJS::encode): 18914 (KJS::decode): 18915 (KJS::GlobalFuncImp::callAsFunction): 18916 * kjs/function.h: 18917 * kjs/function_object.cpp: 18918 (FunctionPrototypeImp::FunctionPrototypeImp): 18919 (FunctionPrototypeImp::callAsFunction): 18920 (FunctionProtoFuncImp::FunctionProtoFuncImp): 18921 (FunctionProtoFuncImp::callAsFunction): 18922 (FunctionObjectImp::FunctionObjectImp): 18923 (FunctionObjectImp::construct): 18924 (FunctionObjectImp::callAsFunction): 18925 * kjs/function_object.h: 18926 * kjs/internal.cpp: 18927 (KJS::UndefinedImp::toPrimitive): 18928 (KJS::UndefinedImp::toObject): 18929 (KJS::NullImp::toPrimitive): 18930 (KJS::NullImp::toObject): 18931 (KJS::BooleanImp::toPrimitive): 18932 (KJS::BooleanImp::toObject): 18933 (KJS::StringImp::toPrimitive): 18934 (KJS::StringImp::toObject): 18935 (KJS::NumberImp::toPrimitive): 18936 (KJS::NumberImp::toObject): 18937 (KJS::NumberImp::getUInt32): 18938 (KJS::LabelStack::push): 18939 (KJS::ContextImp::ContextImp): 18940 (KJS::InterpreterImp::globalInit): 18941 (KJS::InterpreterImp::globalClear): 18942 (KJS::InterpreterImp::InterpreterImp): 18943 (KJS::InterpreterImp::initGlobalObject): 18944 (KJS::InterpreterImp::clear): 18945 (KJS::InterpreterImp::mark): 18946 (KJS::InterpreterImp::evaluate): 18947 (KJS::InternalFunctionImp::hasInstance): 18948 (KJS::roundValue): 18949 (KJS::printInfo): 18950 * kjs/internal.h: 18951 (KJS::InterpreterImp::builtinObject): 18952 (KJS::InterpreterImp::builtinFunction): 18953 (KJS::InterpreterImp::builtinArray): 18954 (KJS::InterpreterImp::builtinBoolean): 18955 (KJS::InterpreterImp::builtinString): 18956 (KJS::InterpreterImp::builtinNumber): 18957 (KJS::InterpreterImp::builtinDate): 18958 (KJS::InterpreterImp::builtinRegExp): 18959 (KJS::InterpreterImp::builtinError): 18960 (KJS::InterpreterImp::builtinObjectPrototype): 18961 (KJS::InterpreterImp::builtinFunctionPrototype): 18962 (KJS::InterpreterImp::builtinArrayPrototype): 18963 (KJS::InterpreterImp::builtinBooleanPrototype): 18964 (KJS::InterpreterImp::builtinStringPrototype): 18965 (KJS::InterpreterImp::builtinNumberPrototype): 18966 (KJS::InterpreterImp::builtinDatePrototype): 18967 (KJS::InterpreterImp::builtinRegExpPrototype): 18968 (KJS::InterpreterImp::builtinErrorPrototype): 18969 (KJS::InterpreterImp::builtinEvalError): 18970 (KJS::InterpreterImp::builtinRangeError): 18971 (KJS::InterpreterImp::builtinReferenceError): 18972 (KJS::InterpreterImp::builtinSyntaxError): 18973 (KJS::InterpreterImp::builtinTypeError): 18974 (KJS::InterpreterImp::builtinURIError): 18975 (KJS::InterpreterImp::builtinEvalErrorPrototype): 18976 (KJS::InterpreterImp::builtinRangeErrorPrototype): 18977 (KJS::InterpreterImp::builtinReferenceErrorPrototype): 18978 (KJS::InterpreterImp::builtinSyntaxErrorPrototype): 18979 (KJS::InterpreterImp::builtinTypeErrorPrototype): 18980 (KJS::InterpreterImp::builtinURIErrorPrototype): 18981 * kjs/interpreter.cpp: 18982 (Context::variableObject): 18983 (Context::thisValue): 18984 (Interpreter::Interpreter): 18985 (Interpreter::globalObject): 18986 (Interpreter::evaluate): 18987 (Interpreter::builtinObject): 18988 (Interpreter::builtinFunction): 18989 (Interpreter::builtinArray): 18990 (Interpreter::builtinBoolean): 18991 (Interpreter::builtinString): 18992 (Interpreter::builtinNumber): 18993 (Interpreter::builtinDate): 18994 (Interpreter::builtinRegExp): 18995 (Interpreter::builtinError): 18996 (Interpreter::builtinObjectPrototype): 18997 (Interpreter::builtinFunctionPrototype): 18998 (Interpreter::builtinArrayPrototype): 18999 (Interpreter::builtinBooleanPrototype): 19000 (Interpreter::builtinStringPrototype): 19001 (Interpreter::builtinNumberPrototype): 19002 (Interpreter::builtinDatePrototype): 19003 (Interpreter::builtinRegExpPrototype): 19004 (Interpreter::builtinErrorPrototype): 19005 (Interpreter::builtinEvalError): 19006 (Interpreter::builtinRangeError): 19007 (Interpreter::builtinReferenceError): 19008 (Interpreter::builtinSyntaxError): 19009 (Interpreter::builtinTypeError): 19010 (Interpreter::builtinURIError): 19011 (Interpreter::builtinEvalErrorPrototype): 19012 (Interpreter::builtinRangeErrorPrototype): 19013 (Interpreter::builtinReferenceErrorPrototype): 19014 (Interpreter::builtinSyntaxErrorPrototype): 19015 (Interpreter::builtinTypeErrorPrototype): 19016 (Interpreter::builtinURIErrorPrototype): 19017 (Interpreter::createLanguageInstanceForValue): 19018 * kjs/interpreter.h: 19019 (KJS::Interpreter::isGlobalObject): 19020 (KJS::ExecState::setException): 19021 (KJS::ExecState::clearException): 19022 (KJS::ExecState::exception): 19023 (KJS::ExecState::hadException): 19024 (KJS::ExecState::ExecState): 19025 * kjs/list.cpp: 19026 (KJS::List::at): 19027 * kjs/list.h: 19028 (KJS::List::operator[]): 19029 (KJS::ListIterator::operator->): 19030 (KJS::ListIterator::operator*): 19031 (KJS::ListIterator::operator++): 19032 (KJS::ListIterator::operator--): 19033 * kjs/lookup.h: 19034 (KJS::staticFunctionGetter): 19035 (KJS::staticValueGetter): 19036 (KJS::lookupPut): 19037 (KJS::cacheGlobalObject): 19038 * kjs/math_object.cpp: 19039 (MathObjectImp::getValueProperty): 19040 (MathFuncImp::MathFuncImp): 19041 (MathFuncImp::callAsFunction): 19042 * kjs/math_object.h: 19043 * kjs/nodes.cpp: 19044 (Node::evaluateReference): 19045 (Node::throwError): 19046 (Node::setExceptionDetailsIfNeeded): 19047 (NullNode::evaluate): 19048 (BooleanNode::evaluate): 19049 (NumberNode::evaluate): 19050 (StringNode::evaluate): 19051 (RegExpNode::evaluate): 19052 (ThisNode::evaluate): 19053 (ResolveNode::evaluate): 19054 (ResolveNode::evaluateReference): 19055 (GroupNode::evaluate): 19056 (ElementNode::evaluate): 19057 (ArrayNode::evaluate): 19058 (ObjectLiteralNode::evaluate): 19059 (PropertyValueNode::evaluate): 19060 (PropertyNode::evaluate): 19061 (AccessorNode1::evaluate): 19062 (AccessorNode1::evaluateReference): 19063 (AccessorNode2::evaluate): 19064 (AccessorNode2::evaluateReference): 19065 (ArgumentListNode::evaluate): 19066 (ArgumentListNode::evaluateList): 19067 (ArgumentsNode::evaluate): 19068 (NewExprNode::evaluate): 19069 (FunctionCallNode::evaluate): 19070 (PostfixNode::evaluate): 19071 (DeleteNode::evaluate): 19072 (VoidNode::evaluate): 19073 (TypeOfNode::evaluate): 19074 (PrefixNode::evaluate): 19075 (UnaryPlusNode::evaluate): 19076 (NegateNode::evaluate): 19077 (BitwiseNotNode::evaluate): 19078 (LogicalNotNode::evaluate): 19079 (MultNode::evaluate): 19080 (AddNode::evaluate): 19081 (ShiftNode::evaluate): 19082 (RelationalNode::evaluate): 19083 (EqualNode::evaluate): 19084 (BitOperNode::evaluate): 19085 (BinaryLogicalNode::evaluate): 19086 (ConditionalNode::evaluate): 19087 (AssignNode::evaluate): 19088 (CommaNode::evaluate): 19089 (StatListNode::execute): 19090 (AssignExprNode::evaluate): 19091 (VarDeclNode::evaluate): 19092 (VarDeclNode::processVarDecls): 19093 (VarDeclListNode::evaluate): 19094 (ExprStatementNode::execute): 19095 (IfNode::execute): 19096 (DoWhileNode::execute): 19097 (WhileNode::execute): 19098 (ForNode::execute): 19099 (ForInNode::execute): 19100 (ContinueNode::execute): 19101 (BreakNode::execute): 19102 (ReturnNode::execute): 19103 (WithNode::execute): 19104 (CaseClauseNode::evaluate): 19105 (ClauseListNode::evaluate): 19106 (CaseBlockNode::evaluate): 19107 (CaseBlockNode::evalBlock): 19108 (SwitchNode::execute): 19109 (ThrowNode::execute): 19110 (CatchNode::execute): 19111 (TryNode::execute): 19112 (ParameterNode::evaluate): 19113 (FuncDeclNode::processFuncDecl): 19114 (FuncExprNode::evaluate): 19115 (SourceElementsNode::execute): 19116 * kjs/nodes.h: 19117 (KJS::StatementNode::evaluate): 19118 * kjs/number_object.cpp: 19119 (NumberPrototypeImp::NumberPrototypeImp): 19120 (NumberProtoFuncImp::NumberProtoFuncImp): 19121 (NumberProtoFuncImp::callAsFunction): 19122 (NumberObjectImp::NumberObjectImp): 19123 (NumberObjectImp::getValueProperty): 19124 (NumberObjectImp::construct): 19125 (NumberObjectImp::callAsFunction): 19126 * kjs/number_object.h: 19127 * kjs/object.cpp: 19128 (KJS::ObjectImp::call): 19129 (KJS::ObjectImp::mark): 19130 (KJS::ObjectImp::classInfo): 19131 (KJS::ObjectImp::get): 19132 (KJS::ObjectImp::getProperty): 19133 (KJS::ObjectImp::getPropertySlot): 19134 (KJS::ObjectImp::put): 19135 (KJS::ObjectImp::hasOwnProperty): 19136 (KJS::ObjectImp::defaultValue): 19137 (KJS::ObjectImp::findPropertyHashEntry): 19138 (KJS::ObjectImp::construct): 19139 (KJS::ObjectImp::callAsFunction): 19140 (KJS::ObjectImp::hasInstance): 19141 (KJS::ObjectImp::propList): 19142 (KJS::ObjectImp::toPrimitive): 19143 (KJS::ObjectImp::toNumber): 19144 (KJS::ObjectImp::toString): 19145 (KJS::ObjectImp::toObject): 19146 (KJS::ObjectImp::putDirect): 19147 (KJS::Error::create): 19148 (KJS::error): 19149 * kjs/object.h: 19150 (KJS::): 19151 (KJS::ObjectImp::getPropertySlot): 19152 (KJS::AllocatedValueImp::isObject): 19153 (KJS::ObjectImp::ObjectImp): 19154 (KJS::ObjectImp::internalValue): 19155 (KJS::ObjectImp::setInternalValue): 19156 (KJS::ObjectImp::prototype): 19157 (KJS::ObjectImp::setPrototype): 19158 (KJS::ObjectImp::inherits): 19159 * kjs/object_object.cpp: 19160 (ObjectPrototypeImp::ObjectPrototypeImp): 19161 (ObjectProtoFuncImp::ObjectProtoFuncImp): 19162 (ObjectProtoFuncImp::callAsFunction): 19163 (ObjectObjectImp::ObjectObjectImp): 19164 (ObjectObjectImp::construct): 19165 (ObjectObjectImp::callAsFunction): 19166 * kjs/object_object.h: 19167 * kjs/operations.cpp: 19168 (KJS::equal): 19169 (KJS::strictEqual): 19170 (KJS::relation): 19171 (KJS::add): 19172 (KJS::mult): 19173 * kjs/operations.h: 19174 * kjs/property_map.cpp: 19175 (KJS::PropertyMap::mark): 19176 (KJS::PropertyMap::addEnumerablesToReferenceList): 19177 (KJS::PropertyMap::addSparseArrayPropertiesToReferenceList): 19178 (KJS::PropertyMap::save): 19179 (KJS::PropertyMap::restore): 19180 * kjs/property_map.h: 19181 * kjs/property_slot.cpp: 19182 (KJS::PropertySlot::undefinedGetter): 19183 * kjs/property_slot.h: 19184 (KJS::PropertySlot::getValue): 19185 * kjs/protect.h: 19186 (KJS::gcUnprotectNullTolerant): 19187 (KJS::ProtectedValue::ProtectedValue): 19188 (KJS::ProtectedValue::~ProtectedValue): 19189 (KJS::ProtectedValue::operator=): 19190 (KJS::ProtectedValue::operator ValueImp *): 19191 (KJS::ProtectedValue::operator->): 19192 * kjs/protected_object.h: 19193 (KJS::ProtectedObject::ProtectedObject): 19194 (KJS::ProtectedObject::operator=): 19195 (KJS::ProtectedObject::operator ValueImp *): 19196 (KJS::ProtectedObject::operator ObjectImp *): 19197 (KJS::ProtectedObject::operator->): 19198 (KJS::ProtectedReference::ProtectedReference): 19199 (KJS::ProtectedReference::~ProtectedReference): 19200 (KJS::ProtectedReference::operator=): 19201 * kjs/protected_values.cpp: 19202 (KJS::ProtectedValues::getProtectCount): 19203 (KJS::ProtectedValues::increaseProtectCount): 19204 (KJS::ProtectedValues::insert): 19205 (KJS::ProtectedValues::decreaseProtectCount): 19206 * kjs/protected_values.h: 19207 * kjs/reference.cpp: 19208 (KJS::Reference::Reference): 19209 (KJS::Reference::makeValueReference): 19210 (KJS::Reference::getBase): 19211 (KJS::Reference::getValue): 19212 (KJS::Reference::putValue): 19213 (KJS::Reference::deleteValue): 19214 * kjs/reference.h: 19215 (KJS::Reference::baseIfMutable): 19216 * kjs/regexp_object.cpp: 19217 (RegExpPrototypeImp::RegExpPrototypeImp): 19218 (RegExpProtoFuncImp::RegExpProtoFuncImp): 19219 (RegExpProtoFuncImp::callAsFunction): 19220 (RegExpObjectImp::RegExpObjectImp): 19221 (RegExpObjectImp::arrayOfMatches): 19222 (RegExpObjectImp::backrefGetter): 19223 (RegExpObjectImp::construct): 19224 (RegExpObjectImp::callAsFunction): 19225 * kjs/regexp_object.h: 19226 * kjs/string_object.cpp: 19227 (StringInstanceImp::lengthGetter): 19228 (StringInstanceImp::indexGetter): 19229 (StringInstanceImp::getOwnPropertySlot): 19230 (StringInstanceImp::put): 19231 (StringPrototypeImp::StringPrototypeImp): 19232 (StringProtoFuncImp::StringProtoFuncImp): 19233 (regExpIsGlobal): 19234 (replace): 19235 (StringProtoFuncImp::callAsFunction): 19236 (StringObjectImp::StringObjectImp): 19237 (StringObjectImp::construct): 19238 (StringObjectImp::callAsFunction): 19239 (StringObjectFuncImp::StringObjectFuncImp): 19240 (StringObjectFuncImp::callAsFunction): 19241 * kjs/string_object.h: 19242 * kjs/testkjs.cpp: 19243 (TestFunctionImp::callAsFunction): 19244 (VersionFunctionImp::callAsFunction): 19245 (main): 19246 * kjs/value.cpp: 19247 (KJS::AllocatedValueImp::operator new): 19248 (KJS::AllocatedValueImp::getUInt32): 19249 (KJS::ValueImp::toInteger): 19250 (KJS::ValueImp::toInt32): 19251 (KJS::ValueImp::toUInt32): 19252 (KJS::ValueImp::toUInt16): 19253 (KJS::ValueImp::toObject): 19254 (KJS::AllocatedValueImp::getBoolean): 19255 (KJS::AllocatedValueImp::getNumber): 19256 (KJS::AllocatedValueImp::getString): 19257 (KJS::AllocatedValueImp::getObject): 19258 (KJS::jsString): 19259 (KJS::jsNumber): 19260 (KJS::ConstantValues::init): 19261 (KJS::ConstantValues::clear): 19262 (KJS::ConstantValues::mark): 19263 * kjs/value.h: 19264 (KJS::): 19265 (KJS::jsUndefined): 19266 (KJS::jsNull): 19267 (KJS::jsBoolean): 19268 (KJS::jsNaN): 19269 (KJS::ValueImp::ValueImp): 19270 (KJS::ValueImp::~ValueImp): 19271 (KJS::AllocatedValueImp::AllocatedValueImp): 19272 (KJS::AllocatedValueImp::~AllocatedValueImp): 19273 (KJS::AllocatedValueImp::isBoolean): 19274 (KJS::AllocatedValueImp::isNumber): 19275 (KJS::AllocatedValueImp::isString): 19276 (KJS::AllocatedValueImp::isObject): 19277 (KJS::AllocatedValueImp::marked): 19278 (KJS::AllocatedValueImp::mark): 19279 (KJS::ValueImp::downcast): 19280 (KJS::ValueImp::isUndefined): 19281 (KJS::ValueImp::isNull): 19282 (KJS::ValueImp::isUndefinedOrNull): 19283 (KJS::ValueImp::isBoolean): 19284 (KJS::ValueImp::isNumber): 19285 (KJS::ValueImp::isString): 19286 (KJS::ValueImp::isObject): 19287 (KJS::ValueImp::getBoolean): 19288 (KJS::ValueImp::getNumber): 19289 (KJS::ValueImp::getString): 19290 (KJS::ValueImp::getObject): 19291 (KJS::ValueImp::getUInt32): 19292 (KJS::ValueImp::mark): 19293 (KJS::ValueImp::marked): 19294 (KJS::ValueImp::type): 19295 (KJS::ValueImp::toPrimitive): 19296 (KJS::ValueImp::toBoolean): 19297 (KJS::ValueImp::toNumber): 19298 (KJS::ValueImp::toString): 19299 (KJS::jsZero): 19300 (KJS::jsOne): 19301 (KJS::jsTwo): 19302 (KJS::Undefined): 19303 (KJS::Null): 19304 (KJS::Boolean): 19305 (KJS::Number): 19306 (KJS::String): 19307 193082005-08-06 Maciej Stachowiak <mjs@apple.com> 19309 19310 Reviewed by Darin. 19311 19312 Change over to the new PropertySlot mechanism for property 19313 lookup. This allows the elimination of hasOwnProperty 19314 methods. Also did some of the performance tuning enabled by this 19315 (but not yet all the possible improvements for function calls, 19316 assignment, ++, and so forth). And also much code cleanup. 19317 19318 Net result is about a 2% speedup on the JS iBench. 19319 19320 Also redid Geoff's fix for the chrashing applet by avoiding a NULL 19321 prototype in the bindings code and using the default of Null() 19322 instead. 19323 19324 * JavaScriptCore.xcodeproj/project.pbxproj: 19325 * bindings/objc/objc_runtime.h: 19326 * bindings/objc/objc_runtime.mm: 19327 (ObjcFallbackObjectImp::ObjcFallbackObjectImp): 19328 (ObjcFallbackObjectImp::getOwnPropertySlot): 19329 * bindings/runtime_array.cpp: 19330 (RuntimeArrayImp::lengthGetter): 19331 (RuntimeArrayImp::indexGetter): 19332 (RuntimeArrayImp::getOwnPropertySlot): 19333 * bindings/runtime_array.h: 19334 * bindings/runtime_method.cpp: 19335 (RuntimeMethodImp::lengthGetter): 19336 (RuntimeMethodImp::getOwnPropertySlot): 19337 * bindings/runtime_method.h: 19338 * bindings/runtime_object.cpp: 19339 (RuntimeObjectImp::RuntimeObjectImp): 19340 (RuntimeObjectImp::fallbackObjectGetter): 19341 (RuntimeObjectImp::fieldGetter): 19342 (RuntimeObjectImp::methodGetter): 19343 (RuntimeObjectImp::getOwnPropertySlot): 19344 * bindings/runtime_object.h: 19345 * bindings/runtime_root.h: 19346 * kjs/array_instance.h: 19347 * kjs/array_object.cpp: 19348 (ArrayInstanceImp::lengthGetter): 19349 (ArrayInstanceImp::getOwnPropertySlot): 19350 (ArrayPrototypeImp::getOwnPropertySlot): 19351 * kjs/array_object.h: 19352 * kjs/date_object.cpp: 19353 (DatePrototypeImp::getOwnPropertySlot): 19354 * kjs/date_object.h: 19355 * kjs/function.cpp: 19356 (KJS::FunctionImp::argumentsGetter): 19357 (KJS::FunctionImp::lengthGetter): 19358 (KJS::FunctionImp::getOwnPropertySlot): 19359 (KJS::FunctionImp::put): 19360 (KJS::FunctionImp::deleteProperty): 19361 (KJS::ArgumentsImp::mappedIndexGetter): 19362 (KJS::ArgumentsImp::getOwnPropertySlot): 19363 (KJS::ActivationImp::argumentsGetter): 19364 (KJS::ActivationImp::getArgumentsGetter): 19365 (KJS::ActivationImp::getOwnPropertySlot): 19366 (KJS::ActivationImp::deleteProperty): 19367 * kjs/function.h: 19368 * kjs/internal.cpp: 19369 (InterpreterImp::InterpreterImp): 19370 (InterpreterImp::initGlobalObject): 19371 (InterpreterImp::~InterpreterImp): 19372 (InterpreterImp::evaluate): 19373 * kjs/internal.h: 19374 (KJS::InterpreterImp::globalExec): 19375 * kjs/interpreter.cpp: 19376 (Interpreter::Interpreter): 19377 (Interpreter::createLanguageInstanceForValue): 19378 * kjs/interpreter.h: 19379 (KJS::Interpreter::argumentsIdentifier): 19380 (KJS::Interpreter::specialPrototypeIdentifier): 19381 * kjs/lookup.h: 19382 (KJS::staticFunctionGetter): 19383 (KJS::staticValueGetter): 19384 (KJS::getStaticPropertySlot): 19385 (KJS::getStaticFunctionSlot): 19386 (KJS::getStaticValueSlot): 19387 * kjs/math_object.cpp: 19388 (MathObjectImp::getOwnPropertySlot): 19389 * kjs/math_object.h: 19390 * kjs/nodes.cpp: 19391 (ResolveNode::evaluate): 19392 (ResolveNode::evaluateReference): 19393 (AccessorNode1::evaluate): 19394 (AccessorNode2::evaluate): 19395 * kjs/number_object.cpp: 19396 (NumberObjectImp::getOwnPropertySlot): 19397 * kjs/number_object.h: 19398 * kjs/object.cpp: 19399 (KJS::ObjectImp::get): 19400 (KJS::ObjectImp::getProperty): 19401 (KJS::ObjectImp::getPropertySlot): 19402 (KJS::ObjectImp::getOwnPropertySlot): 19403 (KJS::ObjectImp::put): 19404 (KJS::ObjectImp::hasProperty): 19405 (KJS::ObjectImp::hasOwnProperty): 19406 * kjs/object.h: 19407 (KJS::ObjectImp::getDirectLocation): 19408 (KJS::ObjectImp::getPropertySlot): 19409 (KJS::ObjectImp::getOwnPropertySlot): 19410 * kjs/object_wrapper.h: Added. 19411 (KJS::): 19412 (KJS::Object::Object): 19413 (KJS::Object::operator ObjectImp *): 19414 * kjs/property_map.cpp: 19415 (KJS::PropertyMap::getLocation): 19416 * kjs/property_map.h: 19417 * kjs/property_slot.cpp: Added. 19418 (KJS::PropertySlot::undefinedGetter): 19419 * kjs/property_slot.h: Added. 19420 (KJS::PropertySlot::isSet): 19421 (KJS::PropertySlot::getValue): 19422 (KJS::PropertySlot::setValueSlot): 19423 (KJS::PropertySlot::setStaticEntry): 19424 (KJS::PropertySlot::setCustom): 19425 (KJS::PropertySlot::setCustomIndex): 19426 (KJS::PropertySlot::setUndefined): 19427 (KJS::PropertySlot::slotBase): 19428 (KJS::PropertySlot::staticEntry): 19429 (KJS::PropertySlot::index): 19430 (KJS::PropertySlot::): 19431 * kjs/protect.h: 19432 * kjs/protected_object.h: Added. 19433 (KJS::ProtectedObject::ProtectedObject): 19434 (KJS::ProtectedObject::~ProtectedObject): 19435 (KJS::ProtectedObject::operator=): 19436 (KJS::ProtectedReference::ProtectedReference): 19437 (KJS::ProtectedReference::~ProtectedReference): 19438 (KJS::ProtectedReference::operator=): 19439 * kjs/reference.h: 19440 * kjs/reference_list.cpp: 19441 * kjs/regexp_object.cpp: 19442 (RegExpObjectImp::backrefGetter): 19443 (RegExpObjectImp::getOwnPropertySlot): 19444 * kjs/regexp_object.h: 19445 * kjs/string_object.cpp: 19446 (StringInstanceImp::lengthGetter): 19447 (StringInstanceImp::indexGetter): 19448 (StringInstanceImp::getOwnPropertySlot): 19449 (StringPrototypeImp::getOwnPropertySlot): 19450 * kjs/string_object.h: 19451 194522005-08-05 Adele Peterson <adele@apple.com> 19453 19454 Reviewed by Darin. 19455 19456 * JavaScriptCore.xcodeproj/project.pbxproj: Unchecked 'statics are thread safe' option. 19457 194582005-08-05 Geoffrey Garen <ggaren@apple.com> 19459 19460 -fixed <rdar://problem/4207220> REGRESSION (DENVER): Crash occurs 19461 after clicking on Hangman applet 19462 19463 Reviewed by darin. 19464 19465 * kjs/object.cpp: 19466 (KJS::ObjectImp::hasProperty): added check for null prototype. 19467 19468 FIXME: The long-term plan is to make runtime objects use JS Null() 19469 instead of null pointers, which will allow us to eliminate null 19470 checks, improving performance. 19471 194722005-08-05 Geoffrey Garen <ggaren@apple.com> 19473 19474 Fix by darin, reviewed by me. 19475 19476 - rolled in fix for: <rdar://problem/4161606> JavaScript regular 19477 expressions with certain ranges of Unicode characters cause a crash 19478 19479 Test cases added: 19480 19481 * layout-tests/fast/js/regexp-big-unicode-ranges-expected.txt: Added. 19482 * layout-tests/fast/js/regexp-big-unicode-ranges.html: Added. 19483 19484 * pcre/pcre.c: 19485 (compile_branch): added checks for characters > 255 19486 194872005-08-04 Maciej Stachowiak <mjs@apple.com> 19488 19489 - updated expected test results now that we no longer exlude the 19490 date tests (apparently this was overlooked) 19491 19492 * tests/mozilla/expected.html: 19493 194942005-07-31 Darin Adler <darin@apple.com> 19495 19496 Reviewed by Maciej. 19497 19498 - remove uses of Mac-OS-X-specific MAX macro 19499 - remove one of the many excess "APPLE_CHANGES" ifdefs 19500 19501 * kjs/collector.cpp: (KJS::Collector::allocate): Use std::max instead of MAX. 19502 * kjs/property_map.cpp: (KJS::PropertyMap::rehash): Ditto. 19503 * kjs/ustring.cpp: 19504 (KJS::UChar::toLower): Take out non-ICU code path. 19505 (KJS::UChar::toUpper): Ditto. 19506 (KJS::UString::spliceSubstringsWithSeparators): Use std::max instead of MAX. 19507 195082005-07-27 Geoffrey Garen <ggaren@apple.com> 19509 19510 - fixed http://bugs.webkit.org/show_bug.cgi?id=4147 19511 Array.toString() and toLocaleString() improvements from KDE KJS 19512 (rolled in KDE changes) 19513 19514 Test cases added: 19515 19516 * layout-tests/fast/js/toString-overrides-expected.txt: Added. 19517 * layout-tests/fast/js/toString-overrides.html: Added. 19518 19519 * kjs/array_object.cpp: 19520 (ArrayProtoFuncImp::call): 19521 195222005-07-27 Maciej Stachowiak <mjs@apple.com> 19523 19524 Changes by Michael Kahl, reviewed by me. 19525 19526 - fixed <rdar://problem/4194278> Need better debugging support in JavaScriptCore 19527 19528 * JavaScriptCore.xcodeproj/project.pbxproj: 19529 * kjs/debugger.cpp: 19530 (KJS::AttachedInterpreter::AttachedInterpreter): 19531 (KJS::AttachedInterpreter::~AttachedInterpreter): 19532 (Debugger::~Debugger): 19533 (Debugger::attach): 19534 (Debugger::detach): 19535 (Debugger::sourceParsed): 19536 * kjs/debugger.h: 19537 * kjs/function.cpp: 19538 (KJS::FunctionImp::call): 19539 (KJS::GlobalFuncImp::call): 19540 * kjs/function_object.cpp: 19541 (FunctionObjectImp::construct): 19542 * kjs/grammar.y: 19543 * kjs/internal.cpp: 19544 (Parser::parse): 19545 (InterpreterImp::evaluate): 19546 * kjs/internal.h: 19547 (KJS::InterpreterImp::setDebugger): 19548 * kjs/interpreter.cpp: 19549 * kjs/interpreter.h: 19550 (KJS::Interpreter::imp): 19551 * kjs/nodes.cpp: 19552 195532005-07-27 Geoffrey Garen <ggaren@apple.com> 19554 19555 - fixed http://bugs.webkit.org/show_bug.cgi?id=3381 19556 Date.prototype.setDate() incorrect for values >=128 19557 19558 - Test cases added: 19559 19560 * layout-tests/fast/js/date-big-setdate-expected.txt: Added. 19561 * layout-tests/fast/js/date-big-setdate.html: Added. 19562 19563 Reviewed by darin. 19564 19565 * kjs/date_object.cpp: 19566 (DateProtoFuncImp::call): 19567 195682005-07-27 Geoffrey Garen <ggaren@apple.com> 19569 19570 -rolled in patch by Carsten Guenther <cguenther@gmail.com> 19571 for http://bugs.webkit.org/show_bug.cgi?id=3759 19572 Date object enhancements 19573 19574 Test cases added: 19575 19576 * layout-tests/fast/js/date-preserve-milliseconds-expected.txt: Added. 19577 * layout-tests/fast/js/date-preserve-milliseconds.html: Added. 19578 19579 Reviewed by darin. 19580 19581 * kjs/date_object.cpp: 19582 (timeFromArgs): 19583 (DateProtoFuncImp::call): 19584 (DateObjectImp::construct): 19585 (DateObjectFuncImp::call): 19586 (KJS::makeTime): 19587 * kjs/date_object.h: 19588 * tests/mozilla/expected.html: 19589 195902005-07-26 Justin Garcia <justin.garcia@apple.com> 19591 19592 Added a forward declaration to fix gcc4 build error 19593 19594 * kjs/function.h: 19595 195962005-07-25 Geoffrey Garen <ggaren@apple.com> 19597 - fixed mistake in my last checkin -- the expected results included 19598 results from a patch that hasn't landed yet. 19599 19600 * tests/mozilla/expected.html: 19601 196022005-07-25 Maciej Stachowiak <mjs@apple.com> 19603 19604 - fix mistake in last change that leads to assertion failure in the Development build 19605 19606 * kjs/lookup.h: 19607 (KJS::lookupGetOwnValue): 19608 196092005-07-24 Maciej Stachowiak <mjs@apple.com> 19610 19611 Reviewed by Darin. 19612 19613 - http://bugs.webkit.org/show_bug.cgi?id=4124 19614 (change JavaScript property access to avoid double lookup) 19615 19616 - 10% speedup on JavaScript iBench 19617 - 5% speedup on 24fun BenchJS benchmark 19618 19619 Changed all get methods to getOwnProperty - they are no longer 19620 responsible for prototype lookup, and determine if the property 19621 was found as a side efect. 19622 19623 get() is now a nonvirtual ObjectImp method which calls the virtual 19624 getOwnProperty and walks the prototype chain. A few selected 19625 methods were inlined. 19626 19627 Changed ResolveNode::evaluate plus some other places to use 19628 getProperty which does get() and hasProperty() in one lookup. 19629 19630 Also miscellaneous code cleanup. 19631 19632 * bindings/objc/objc_runtime.h: 19633 * bindings/objc/objc_runtime.mm: 19634 (ObjcFallbackObjectImp::ObjcFallbackObjectImp): 19635 (ObjcFallbackObjectImp::getOwnProperty): 19636 * bindings/runtime_array.cpp: 19637 (RuntimeArrayImp::RuntimeArrayImp): 19638 (RuntimeArrayImp::getOwnProperty): 19639 * bindings/runtime_array.h: 19640 * bindings/runtime_method.cpp: 19641 (RuntimeMethodImp::getOwnProperty): 19642 * bindings/runtime_method.h: 19643 * bindings/runtime_object.cpp: 19644 (RuntimeObjectImp::getOwnProperty): 19645 * bindings/runtime_object.h: 19646 * kjs/array_instance.h: 19647 * kjs/array_object.cpp: 19648 (ArrayInstanceImp::getOwnProperty): 19649 (ArrayPrototypeImp::getOwnProperty): 19650 (ArrayProtoFuncImp::call): 19651 * kjs/array_object.h: 19652 * kjs/date_object.cpp: 19653 (DatePrototypeImp::getOwnProperty): 19654 * kjs/date_object.h: 19655 * kjs/function.cpp: 19656 (KJS::FunctionImp::getOwnProperty): 19657 (KJS::ArgumentsImp::getOwnProperty): 19658 (KJS::ActivationImp::getOwnProperty): 19659 * kjs/function.h: 19660 * kjs/lookup.h: 19661 (KJS::lookupGetOwnProperty): 19662 (KJS::lookupGetOwnFunction): 19663 (KJS::lookupGetOwnValue): 19664 * kjs/math_object.cpp: 19665 (MathObjectImp::getOwnProperty): 19666 (MathObjectImp::getValueProperty): 19667 * kjs/math_object.h: 19668 * kjs/nodes.cpp: 19669 (ResolveNode::evaluate): 19670 * kjs/number_object.cpp: 19671 (NumberObjectImp::getOwnProperty): 19672 * kjs/number_object.h: 19673 * kjs/object.cpp: 19674 (KJS::ObjectImp::get): 19675 (KJS::ObjectImp::getOwnProperty): 19676 (KJS::ObjectImp::getProperty): 19677 * kjs/object.h: 19678 (KJS::ObjectImp::getProperty): 19679 (KJS::ObjectImp::getOwnProperty): 19680 * kjs/object_object.cpp: 19681 (ObjectProtoFuncImp::call): 19682 * kjs/regexp_object.cpp: 19683 (RegExpObjectImp::getOwnProperty): 19684 * kjs/regexp_object.h: 19685 * kjs/string_object.cpp: 19686 (StringInstanceImp::getOwnProperty): 19687 (StringPrototypeImp::getOwnProperty): 19688 * kjs/string_object.h: 19689 196902005-07-25 Geoffrey Garen <ggaren@apple.com> 19691 19692 - fixed http://bugs.webkit.org/show_bug.cgi?id=3971 19693 JS test suite depends on JS 1.2 behavior 19694 19695 Reviewed by darin. 19696 19697 * tests/mozilla/js1_2/Array/tostring_1.js: now tests only for JS 1.5 behavior 19698 * tests/mozilla/js1_2/Array/tostring_2.js: ditto 19699 * tests/mozilla/expected.html: 19700 197012005-07-24 Justin Garcia <justin.garcia@apple.com> 19702 19703 Reviewed by kevin. 19704 19705 Fixes make clean problem introduced in xcode2.1 transition 19706 19707 * Makefile.am: 19708 197092005-07-22 Geoffrey Garen <ggaren@apple.com> 19710 19711 Reviewed by darin. 19712 19713 * kjs/date_object.cpp: DatePrototypeImp now identifies itself as a 19714 child class of DateInstanceImp -- this enables calls to Date.ValueOf(). 19715 19716 fixes: ecma/Date/15.9.5.js (once we enable the date tests). 19717 197182005-07-22 Geoffrey Garen <ggaren@apple.com> 19719 19720 19721 Reviewed by darin. 19722 19723 * tests/mozilla/jsDriver.pl: now takes the path to testkjs as a command-line argument 19724 * tests/mozilla/run-mozilla-tests: Removed. 19725 197262005-07-21 Geoffrey Garen <ggaren@apple.com> 19727 19728 * JavaScriptCore.xcodeproj/.cvsignore: Added. 19729 197302005-07-21 Geoffrey Garen <ggaren@apple.com> 19731 19732 * JavaScriptCore.pbproj/project.pbxproj: Removed. 19733 * JavaScriptCore.xcodeproj/ggaren.pbxuser: Added. 19734 * JavaScriptCore.xcodeproj/ggaren.perspective: Added. 19735 * JavaScriptCore.xcodeproj/project.pbxproj: Added. 19736 * Makefile.am: 19737 197382005-07-20 Maciej Stachowiak <mjs@apple.com> 19739 19740 Patch from Trey Matteson <trey@usa.net>, reviewed by me. 19741 19742 - fixed http://bugs.webkit.org/show_bug.cgi?id=3956 19743 some of WebKit builds with symbols, some doesn't 19744 19745 * JavaScriptCore.pbproj/project.pbxproj: Generate symbols even for 19746 Deployment. 19747 197482005-07-19 Geoffrey Garen <ggaren@apple.com> 19749 19750 -fixed http://bugs.webkit.org/show_bug.cgi?id=3991 19751 JSC doesn't implement Array.prototype.toLocaleString() 19752 19753 -test failure: ecma_3/Array/15.4.4.3-1.js 19754 19755 Reviewed by mjs. 19756 19757 * kjs/array_object.cpp: 19758 (ArrayProtoFuncImp::call): now searches for toString and 19759 toLocaleString overrides in the array's elements 19760 19761 * tests/mozilla/expected.html: failures are under 100! woohoo! 19762 197632005-07-19 Darin Adler <darin@apple.com> 19764 19765 - fixed the build 19766 19767 * kjs/lookup.h: (KJS::lookupPut): Remove bogus const; was preventing WebCore from 19768 compiling (not sure why this didn't affect my other build machine). 19769 19770 - one other tiny tweak (so sue me) 19771 19772 * bindings/runtime_root.cpp: Remove unneeded declaration. 19773 197742005-07-19 Darin Adler <darin@apple.com> 19775 19776 Reviewed by Geoff Garen. 19777 19778 - eliminated try wrappers for get/put/call since we don't use C++ exceptions any more 19779 19780 * kjs/lookup.h: Changed tryCall in IMPLEMENT_PROTOFUNC here to call. It doesn't make 19781 sense for this macro to use the name tryCall anyway, since that's specific to how 19782 WebCore used this, so this is good anyway. On the other hand, it might be a problem 19783 for KDOM or KSVG, in which case we'll need another macro for them, since JavaScriptCore 19784 should presumably not have the C++ exception support. 19785 197862005-07-18 Geoffrey Garen <ggaren@apple.com> 19787 19788 -fixed http://bugs.webkit.org/show_bug.cgi?id=4008 19789 Error objects report incorrect length 19790 19791 Reviewed by darin. 19792 19793 * kjs/error_object.cpp: Error objects now include a length property 19794 (ErrorObjectImp::ErrorObjectImp): 19795 19796 * tests/mozilla/expected.html: updated expected results to reflect fix 19797 * tests/mozilla/js1_5/Exceptions/regress-123002.js: test now expects 19798 ecma compliant results 19799 198002005-07-15 Geoffrey Garen <ggaren@apple.com> 19801 19802 -rolled in KDE fixes for http://bugs.webkit.org/show_bug.cgi?id=3601 19803 Error instance type info 19804 19805 Reviewed by mjs. 19806 19807 * kjs/error_object.cpp: 19808 - Created ErrorInstanceImp class for Error() objects. 19809 - Changed parent object for Native Errors to "Function" (matches 19810 ECMA spec). 19811 (ErrorInstanceImp::ErrorInstanceImp): 19812 (ErrorProtoFuncImp::call): 19813 (ErrorObjectImp::construct): 19814 (NativeErrorImp::construct): 19815 19816 * kjs/error_object.h: 19817 (KJS::ErrorInstanceImp::classInfo): 19818 * kjs/object.h: made comment more informative about ClassInfo 19819 19820 * tests/mozilla/expected.html: 19821 198222005-07-14 Geoffrey Garen <ggaren@apple.com> 19823 19824 - fixed: JS test suite expects an out of memory error 19825 that our memory efficiency avoids 19826 19827 Reviewed by mjs. 19828 19829 * tests/mozilla/js1_5/Array/regress-157652.js: 19830 test now expects normal execution 19831 19832 * tests/mozilla/expected.html: 19833 198342005-07-14 Geoffrey Garen <ggaren@apple.com> 19835 - fixed http://bugs.webkit.org/show_bug.cgi?id=4006 19836 testkjs doesn't implement gc() 19837 19838 - test failure: 19839 ecma_3/Function/regress-104584.js 19840 19841 Reviewed by mjs. 19842 19843 * kjs/interpreter.cpp: 19844 (Interpreter::finalCheck): removed misleading while && comment 19845 19846 * kjs/testkjs.cpp: added "gc" function to global object 19847 (TestFunctionImp::): 19848 (TestFunctionImp::call): 19849 (main): 19850 19851 * tests/mozilla/expected.html: 19852 198532005-07-14 Geoffrey Garen <ggaren@apple.com> 19854 19855 -rolled in patches for http://bugs.webkit.org/show_bug.cgi?id=3945 19856 [PATCH] Safe merges of comments and other trivialities from KDE's kjs 19857 19858 -patch by Martijn Klingens <klingens@kde.org> 19859 19860 * kjs/array_instance.h: 19861 * kjs/array_object.cpp: 19862 * kjs/array_object.h: 19863 * kjs/bool_object.cpp: 19864 * kjs/bool_object.h: 19865 * kjs/collector.cpp: 19866 * kjs/collector.h: 19867 * kjs/completion.h: 19868 * kjs/context.h: 19869 * kjs/date_object.cpp: 19870 * kjs/date_object.h: 19871 * kjs/debugger.cpp: 19872 * kjs/debugger.h: 19873 * kjs/dtoa.h: 19874 * kjs/error_object.cpp: 19875 * kjs/error_object.h: 19876 * kjs/function.cpp: 19877 * kjs/function.h: 19878 * kjs/function_object.cpp: 19879 * kjs/function_object.h: 19880 * kjs/grammar.y: 19881 * kjs/identifier.cpp: 19882 * kjs/identifier.h: 19883 * kjs/internal.cpp: 19884 * kjs/internal.h: 19885 * kjs/interpreter.cpp: 19886 * kjs/interpreter.h: 19887 * kjs/interpreter_map.cpp: 19888 * kjs/interpreter_map.h: 19889 * kjs/lexer.cpp: 19890 * kjs/lexer.h: 19891 * kjs/list.cpp: 19892 * kjs/list.h: 19893 * kjs/lookup.cpp: 19894 * kjs/lookup.h: 19895 * kjs/math_object.cpp: 19896 * kjs/math_object.h: 19897 * kjs/nodes.cpp: 19898 * kjs/nodes.h: 19899 * kjs/nodes2string.cpp: 19900 * kjs/number_object.cpp: 19901 * kjs/number_object.h: 19902 * kjs/object.cpp: 19903 * kjs/object.h: 19904 * kjs/object_object.cpp: 19905 * kjs/object_object.h: 19906 * kjs/operations.cpp: 19907 * kjs/operations.h: 19908 * kjs/property_map.cpp: 19909 * kjs/property_map.h: 19910 * kjs/reference.cpp: 19911 * kjs/reference.h: 19912 * kjs/reference_list.cpp: 19913 * kjs/reference_list.h: 19914 * kjs/regexp.cpp: 19915 * kjs/regexp.h: 19916 * kjs/regexp_object.cpp: 19917 * kjs/regexp_object.h: 19918 * kjs/scope_chain.cpp: 19919 * kjs/scope_chain.h: 19920 * kjs/simple_number.h: 19921 * kjs/string_object.cpp: 19922 * kjs/string_object.h: 19923 * kjs/testkjs.cpp: 19924 * kjs/types.h: 19925 * kjs/ustring.cpp: 19926 * kjs/ustring.h: 19927 * kjs/value.cpp: 19928 * kjs/value.h: 19929 199302005-07-14 Geoffrey Garen <ggaren@apple.com> 19931 19932 -fixed http://bugs.webkit.org/show_bug.cgi?id=3970 19933 throw statements fail inside eval statements 19934 19935 Reviewed by mjs. 19936 19937 * kjs/function.cpp: 19938 (KJS::GlobalFuncImp::call): 19939 Big change since I fixed the tabbing. The important part is: 19940 if (c.complType() == Throw) 19941 exec->setException(c.value()); 19942 19943 * kjs/nodes.cpp: 19944 (ThrowNode::execute): removed duplicate KJS_CHECKEXCEPTION 19945 (TryNode::execute): 19946 try now clears the exception state before the finally block executes, 19947 and checks the state after the block executes, so that exceptions in 19948 finally code get caught. 19949 19950 * tests/mozilla/expected.html: 19951 199522005-07-14 Geoffrey Garen <ggaren@apple.com> 19953 19954 -landed fix for http://bugs.webkit.org/show_bug.cgi?id=3412 19955 Object.prototype is missing toLocaleString 19956 19957 - patch by Mark Rowe (bdash) <opendarwin.org@bdash.net.nz> 19958 19959 -layout test info in webcore changelog 19960 19961 Reviewed by mjs. 19962 19963 * kjs/object_object.cpp: 19964 (ObjectPrototypeImp::ObjectPrototypeImp): 19965 (ObjectProtoFuncImp::call): 19966 * kjs/object_object.h: 19967 (KJS::ObjectProtoFuncImp::): 19968 199692005-07-12 Geoffrey Garen <ggaren@apple.com> 19970 19971 Reviewed by mjs. 19972 19973 * kjs/function.cpp: 19974 (KJS::IndexToNameMap::operator[]): fixed infinite recursion 19975 bug in last checkin 19976 199772005-07-12 Geoffrey Garen <ggaren@apple.com> 19978 19979 -fixed http://bugs.webkit.org/show_bug.cgi?id=3881 19980 arguments object should share values with function parameters 19981 19982 Reviewed by mjs. 19983 19984 ArgumentsImp now uses a simple hash lookup to share values 19985 with the activation object. 19986 19987 * kjs/function.cpp: 19988 (KJS::FunctionImp::getParameterName): 19989 (KJS::IndexToNameMap::IndexToNameMap): 19990 (KJS::IndexToNameMap::~IndexToNameMap): 19991 (KJS::IndexToNameMap::isMapped): 19992 (KJS::IndexToNameMap::unMap): 19993 (KJS::IndexToNameMap::operator[]): 19994 (KJS::ArgumentsImp::ArgumentsImp): 19995 (KJS::ArgumentsImp::mark): 19996 (KJS::ArgumentsImp::get): 19997 (KJS::ArgumentsImp::put): 19998 (KJS::ArgumentsImp::deleteProperty): 19999 (KJS::ArgumentsImp::hasOwnProperty): 20000 (KJS::ActivationImp::createArgumentsObject): 20001 * kjs/function.h: 20002 * tests/mozilla/expected.html: updated results 20003 200042005-07-09 Maciej Stachowiak <mjs@apple.com> 20005 20006 - backing out my earlier collector change, it causes a performance regression in TOT 20007 20008 * kjs/collector.cpp: 20009 (KJS::Collector::allocate): 20010 200112005-07-08 Eric Seidel <eseidel@apple.com> 20012 20013 Reviewed by mjs/hyatt (only in concept). 20014 20015 * JavaScriptCore.pbproj/project.pbxproj: Added JavaScriptCore+SVG 20016 Turns on RTTI support for JavaScriptCore.framework when 20017 building the JavaScriptCore+SVG target. This is needed as 20018 kdom (part of WebCore+SVG) requires RTTI for the time being. 20019 200202005-07-08 Maciej Stachowiak <mjs@apple.com> 20021 20022 Reviewed by hyatt. 20023 20024 - When there are many live objects, GC less often, to try to make 20025 GC cost proportional to garbage, not proportional to total memory used. 20026 20027 * kjs/collector.cpp: 20028 (KJS::Collector::allocate): 20029 200302005-07-08 Vicki Murley <vicki@apple.com> 20031 20032 Fix from Carsten Guenther, reviewed by Maciej 20033 20034 - fixed http://bugs.webkit.org/show_bug.cgi?id=3644 (Error string representation) 20035 20036 Switch from "-" to ":" in error strings. 20037 20038 * kjs/error_object.cpp: 20039 (ErrorProtoFuncImp::call): 20040 * tests/mozilla/expected.html: 20041 200422005-07-08 Geoffrey Garen <ggaren@apple.com> 20043 20044 -rolled in patch for http://bugs.webkit.org/show_bug.cgi?id=3878 20045 arguments object should be an object not an array 20046 20047 Reviewed by mjs. 20048 20049 * kjs/function.cpp: 20050 (KJS::ArgumentsImp::ArgumentsImp): now manually handles initialization 20051 we used to get for free by inheriting from ArrayInstanceImp 20052 * kjs/function.h: ArgumentsImp now inherits from ObjectImp 20053 * tests/mozilla/expected.html: updated expected test results 20054 200552005-07-07 Eric Seidel <eseidel@apple.com> 20056 20057 Reviewed by mjs. 20058 20059 * kjs/grammar.y: removed #define YYMAXDEPTH 0 for bison 2.0 20060 http://bugs.webkit.org/show_bug.cgi?id=3882 20061 200622005-07-03 Maciej Stachowiak <mjs@apple.com> 20063 20064 Original patch from Mark Rowe <opendarwin.org@bdash.net.nz>, reviewed by me. 20065 Fixes to patch by me, reviewed by John Sullivan. 20066 20067 - fixed http://bugs.webkit.org/show_bug.cgi?id=3293 20068 20069 Test cases added: 20070 * tests/mozilla/expected.html: Two tests newly pass. 20071 20072 * bindings/objc/objc_runtime.h: 20073 * bindings/objc/objc_runtime.mm: 20074 (ObjcFallbackObjectImp::hasOwnProperty): 20075 * bindings/runtime_array.cpp: 20076 (RuntimeArrayImp::hasOwnProperty): 20077 * bindings/runtime_array.h: 20078 * bindings/runtime_object.cpp: 20079 (RuntimeObjectImp::hasOwnProperty): 20080 * bindings/runtime_object.h: 20081 * kjs/array_instance.h: 20082 * kjs/array_object.cpp: 20083 (ArrayInstanceImp::hasOwnProperty): 20084 * kjs/function.cpp: 20085 (KJS::FunctionImp::hasOwnProperty): 20086 (KJS::ActivationImp::hasOwnProperty): 20087 * kjs/function.h: 20088 * kjs/lookup.h: 20089 * kjs/object.cpp: 20090 (KJS::ObjectImp::hasProperty): 20091 (KJS::ObjectImp::hasOwnProperty): 20092 * kjs/object.h: 20093 (KJS::Object::hasOwnProperty): 20094 * kjs/object_object.cpp: 20095 (ObjectPrototypeImp::ObjectPrototypeImp): 20096 (ObjectProtoFuncImp::call): 20097 * kjs/object_object.h: 20098 (KJS::ObjectProtoFuncImp::): 20099 * kjs/string_object.cpp: 20100 (StringInstanceImp::hasOwnProperty): 20101 * kjs/string_object.h: 20102 201032005-07-01 Geoffrey Garen <ggaren@apple.com> 20104 20105 -landed patch by Eric Seidel <macdome@opendarwin.org> 20106 20107 -for http://bugs.webkit.org/show_bug.cgi?id=3657 20108 GroundWork: Moving some functions from khtml->jsc following kjs TOT 20109 20110 - no layout test necessary yet - only groundwork 20111 20112 Reviewed by darin. 20113 20114 * kjs/lookup.h: 20115 (KJS::cacheGlobalObject): 20116 201172005-07-01 Geoffrey Garen <ggaren@apple.com> 20118 20119 -landed patch by Carsten Guenther <cguenther@gmail.com> 20120 20121 -fixes http://bugs.webkit.org/show_bug.cgi?id=3477 20122 some US-centric date formats not parsed by JavaScript (clock at news8austin.com) 20123 20124 -relevant tests: 20125 mozilla/ecma_3/Date/15.9.5.5.js 20126 layout-tests/fast/js/date-parse-test.html 20127 20128 Reviewed by darin. 20129 20130 * kjs/date_object.cpp: 20131 (formatLocaleDate): 20132 (day): 20133 (dayFromYear): 20134 (daysInYear): 20135 (timeFromYear): 20136 (yearFromTime): 20137 (weekDay): 20138 (timeZoneOffset): 20139 (DateProtoFuncImp::call): 20140 (DateObjectImp::construct): 20141 (KJS::parseDate): 20142 (ymdhms_to_seconds): 20143 (KJS::makeTime): 20144 (findMonth): 20145 (KJS::KRFCDate_parseDate): 20146 * kjs/date_object.h: 20147 * tests/mozilla/expected.html: updated expected results to reflect fix 20148 201492005-07-01 Geoffrey Garen <ggaren@apple.com> 20150 20151 -fixed <rdar://problem/4168186> JavaScript fails to throw exceptions 20152 for invalid return statements 20153 20154 relevant tests: 20155 ecma/Statements/12.9-1-n.js 20156 ecma_2/Exceptions/lexical-052.js 20157 ecma_2/Exceptions/statement-009.js 20158 20159 Reviewed by sullivan. 20160 20161 * kjs/nodes.cpp: 20162 (ReturnNode::execute): now throws exception if return is not inside 20163 a function. 20164 20165 * tests/mozilla/expected.html: updated to reflect fix 20166 201672005-07-01 Geoffrey Garen <ggaren@apple.com> 20168 20169 Reviewed by sullivan. 20170 20171 * tests/mozilla/expected.html: Updated test results for last fix. 20172 201732005-07-01 Geoffrey Garen <ggaren@apple.com> 20174 20175 -fixed <rdar://problem/4168161> JavaScript fails to throw an exception 20176 for invalid function calls 20177 20178 Reviewed by sullivan. 20179 20180 Relevant mozilla test: ecma_3/Exceptions/regress-95101.js 20181 20182 * kjs/nodes.cpp: 20183 (FunctionCallNode::evaluate): evaluate now checks for an exception 20184 after resolving a function name (in case the function is undefined) 20185 201862005-07-01 Eric Seidel <eseidel@apple.com> 20187 20188 Reviewed by darin. 20189 20190 * kjs/interpreter.h: 20191 (KJS::Context::curStmtFirstLine): stub for compatibility with KDE 20192 * kjs/value.h: 20193 (KJS::Value::isValid): compatibility with KDE 20194 http://bugs.webkit.org/show_bug.cgi?id=3687 20195 201962005-07-01 Eric Seidel <eseidel@apple.com> 20197 20198 Reviewed by darin. 20199 20200 * kjs/create_hash_table: rolled in changes from KDE, including 20201 -n <namespace> support from KDOM and support for newer comments 20202 http://bugs.webkit.org/show_bug.cgi?id=3771 20203 202042005-06-30 Geoffrey Garen <ggaren@apple.com> 20205 20206 -rolled in KDE fix to <rdar://problem/4167660> JavaScript fails to 20207 throw exceptions for invalid break/continue statements 20208 20209 No layout tests because it's already covered by the Mozilla suite 20210 20211 Reviewed by mjs. 20212 20213 * kjs/internal.h: LabelStack now tracks where you are relative to 20214 switch and iteration (loop) statements 20215 20216 (KJS::LabelStack::LabelStack): 20217 (KJS::LabelStack::pushIteration): 20218 (KJS::LabelStack::popIteration): 20219 (KJS::LabelStack::inIteration): 20220 (KJS::LabelStack::pushSwitch): 20221 (KJS::LabelStack::popSwitch): 20222 (KJS::LabelStack::inSwitch): 20223 20224 * kjs/nodes.cpp: 20225 These files were updated to use the new LabelStack: 20226 (DoWhileNode::execute): 20227 (WhileNode::execute): 20228 (ForNode::execute): 20229 (ForInNode::execute): 20230 (SwitchNode::execute): 20231 20232 These files were updated to throw exceptions for invalid 20233 break/continue statements: 20234 (BreakNode::execute): 20235 (ContinueNode::execute): 20236 20237 * tests/mozilla/expected.html: Updated expected results to reflect fix 20238 202392005-06-30 Kevin Decker <kdecker@apple.com> 20240 20241 Reviewed by rjw. 20242 20243 fixed: <rdar://problem/4166838> failed assertion in`Interpreter::lockCount() > 0 20244 20245 no layout test added; this is in the bindings code. 20246 20247 * bindings/objc/WebScriptObject.mm: 20248 (+[WebScriptObject _convertValueToObjcValue:KJS::originExecutionContext:Bindings::executionContext:Bindings::]): make sure to lock and unlock the interpreter around allocations. 20249 202502005-06-29 Geoffrey Garen <ggaren@apple.com> 20251 20252 Patch by Francisco Tolmasky <tolmasky@gmail.com> 20253 20254 - fixes http://bugs.webkit.org/show_bug.cgi?id=3667 20255 Core JavaScript 1.5 Reference:Objects:Array:forEach 20256 20257 See WebCore Changelog for layout tests added. 20258 20259 Reviewed by darin. 20260 20261 * kjs/array_object.cpp: 20262 (ArrayProtoFuncImp::call): 20263 * kjs/array_object.h: 20264 (KJS::ArrayProtoFuncImp::): 20265 202662005-06-29 Geoffrey Garen <ggaren@apple.com> 20267 20268 Patch contributed by Oliver Hunt <ojh16@student.canterbury.ac.nz> 20269 20270 -fixed http://bugs.webkit.org/show_bug.cgi?id=3743 20271 Incorrect error message given for certain calls 20272 20273 See WebCore Changelog for layout test added. 20274 20275 Reviewed by mjs. 20276 20277 * kjs/object.cpp: 20278 (KJS::ObjectImp::defaultValue): 20279 202802005-06-29 Geoffrey Garen <ggaren@apple.com> 20281 20282 Rolling out date patch from 6-28-05 because it breaks 20283 fast/js/date-parse-test 20284 20285 * kjs/date_object.cpp: 20286 (formatLocaleDate): 20287 (DateProtoFuncImp::call): 20288 (DateObjectImp::construct): 20289 (KJS::parseDate): 20290 (ymdhms_to_seconds): 20291 (isSpaceOrTab): 20292 (KJS::KRFCDate_parseDate): 20293 * kjs/date_object.h: 20294 * tests/mozilla/expected.html: 20295 202962005-06-29 Geoffrey Garen <ggaren@apple.com> 20297 20298 Reviewed by Darin. 20299 20300 -fixes http://bugs.webkit.org/show_bug.cgi?id=3750 20301 build fails with KJS_VERBOSE set 20302 20303 * kjs/nodes.cpp: changed debug print statement to use UString 20304 (VarDeclNode::evaluate): 20305 * kjs/reference.cpp: ditto 20306 (KJS::Reference::putValue): 20307 203082005-06-28 Geoffrey Garen <ggaren@apple.com> 20309 20310 Patch contributed by Carsten Guenther <cguenther@gmail.com>. 20311 20312 -fixes http://bugs.webkit.org/show_bug.cgi?id=3477 20313 some US-centric date formats not parsed by JavaScript (clock at news8austin.com) 20314 20315 Reviewed by darin. 20316 20317 * kjs/date_object.cpp: 20318 (formatLocaleDate): 20319 (day): 20320 (dayFromYear): 20321 (daysInYear): 20322 (timeFromYear): 20323 (yearFromTime): 20324 (weekDay): 20325 (timeZoneOffset): 20326 (DateProtoFuncImp::call): 20327 (DateObjectImp::construct): 20328 (KJS::parseDate): 20329 (ymdhms_to_seconds): 20330 (KJS::makeTime): 20331 (findMonth): 20332 (KJS::KRFCDate_parseDate): 20333 * kjs/date_object.h: 20334 * tests/mozilla/expected.html: updated expected test results to reflect fix 20335 203362005-06-26 Maciej Stachowiak <mjs@apple.com> 20337 20338 Reviewed by Darin. 20339 20340 - replace hash functions with better ones 20341 20342 * JavaScriptCore.pbproj/project.pbxproj: Add new file to build. 20343 * kjs/interpreter_map.cpp: 20344 (KJS::InterpreterMap::computeHash): Use shared pointer hash. 20345 * kjs/pointer_hash.h: Added. 20346 (KJS::pointerHash): Pointer hash based on 32-bit mix and 64-bit mix hashes. 20347 * kjs/protected_values.cpp: 20348 (KJS::ProtectedValues::computeHash): Use shared pointer hash. 20349 * kjs/ustring.cpp: 20350 (KJS::UString::Rep::computeHash): Use SuperFastHash algorithm. 20351 203522005-06-22 Darin Adler <darin@apple.com> 20353 20354 Change by Anders Carlsson. 20355 Reviewed by me. 20356 20357 - fixed <http://bugs.webkit.org/show_bug.cgi?id=3294> 20358 String.prototype.replace() fails with function as second param 20359 20360 * kjs/string_object.cpp: (replace): Added code to handle functions. 20361 20362 * tests/mozilla/expected.html: Updated since ecma_3/RegExp/regress-209067.js is fixed now. 20363 20364 * tests/mozilla/run-mozilla-tests: Fix a minor coding style issue that leads to a warning each 20365 time we run the tests. 20366 203672005-06-21 Adele Peterson <adele@apple.com> 20368 20369 rolling out fix for http://bugs.webkit.org/show_bug.cgi?id=3293, since it caused layout test failures. 20370 fast/forms/element-by-name 20371 fast/loader/loadInProgress 20372 20373 * ChangeLog: 20374 * bindings/objc/objc_runtime.h: 20375 * bindings/objc/objc_runtime.mm: 20376 (ObjcFallbackObjectImp::hasProperty): 20377 * bindings/runtime_array.cpp: 20378 (RuntimeArrayImp::hasProperty): 20379 * bindings/runtime_array.h: 20380 * bindings/runtime_object.cpp: 20381 (RuntimeObjectImp::hasProperty): 20382 * bindings/runtime_object.h: 20383 * kjs/array_instance.h: 20384 * kjs/array_object.cpp: 20385 (ArrayInstanceImp::hasProperty): 20386 * kjs/function.cpp: 20387 (KJS::FunctionImp::hasProperty): 20388 (KJS::ActivationImp::hasProperty): 20389 * kjs/function.h: 20390 * kjs/object.cpp: 20391 (KJS::ObjectImp::hasProperty): 20392 * kjs/object.h: 20393 * kjs/object_object.cpp: 20394 (ObjectPrototypeImp::ObjectPrototypeImp): 20395 (ObjectProtoFuncImp::call): 20396 * kjs/object_object.h: 20397 (KJS::ObjectProtoFuncImp::): 20398 * kjs/string_object.cpp: 20399 (StringInstanceImp::hasProperty): 20400 * kjs/string_object.h: 20401 * tests/mozilla/expected.html: 20402 204032005-06-21 Darin Adler <darin@apple.com> 20404 20405 * JavaScriptCore.pbproj/project.pbxproj: Switched to a build rule rather than a build phase for 20406 .y files -- this gets rid of the problem where modifying the .y file would not cause sufficient 20407 compilation. 20408 20409 * kjs/grammar_wrapper.cpp: Removed. 20410 204112005-06-21 Adele Peterson <adele@apple.com> 20412 20413 Patch from Anders Carlsson <andersca@mac.com>, reviewed by Darin. 20414 20415 Fixed: <http://bugs.webkit.org/show_bug.cgi?id=3450> 20416 <rdar://problem/3881901> String.replace() method not working when regex pattern contains {n, m} 20417 20418 * pcre/pcre.c: (pcre_compile): Remember the last char length so it can be subtracted correctly if needed. 20419 204202005-06-21 Geoffrey Garen <ggaren@apple.com> 20421 20422 - fixed <rdar://problem/4155532> 'delete' succeeds on functions 20423 - fixed <rdar://problem/4155049> javascript function named as "opener" doesn't get called because of window.opener property 20424 20425 Reviewed by cblu. 20426 20427 * kjs/nodes.cpp: 20428 (FuncDeclNode::processFuncDecl): Functions now have DontDelete and Internal attributes set when appropriate. 20429 20430 Test cases: 20431 * tests/mozilla/expected.html: Updated for one new success. 20432 - see also test case added in WebCore. 20433 204342005-06-20 Maciej Stachowiak <mjs@apple.com> 20435 20436 Reviewed by Darin(first pass) and Hyatt. 20437 20438 - fixed http://bugs.webkit.org/show_bug.cgi?id=3576 20439 (roll in support for "const" keyword from KDE tree) 20440 - make processVarDecls handle deletability of variables declared 20441 in an eval block the same as evaluate would 20442 - make eval() call processVarDecls - needed to match mozilla and 20443 to make the second change testable 20444 20445 I started with the KDE implementation of const but I ended up changing it a bit 20446 to avoid the use of a global variable. Now instead of the global variable it distinguishes 20447 const and var at the grammar level so the appropriate node can know the right kind of 20448 declaration. 20449 20450 Test cases: 20451 * tests/mozilla/expected.html: Updated for one new test that is 20452 failing - we used to bail on it entirely because it checks for 20453 const support before starting. 20454 - see also test cases added in WebCore 20455 20456 * kjs/grammar.y: Add rules for const declarations. 20457 * kjs/keywords.table: Add const keyword. 20458 * kjs/nodes.cpp: 20459 (VarDeclNode::VarDeclNode): Add parameter. 20460 (VarDeclNode::evaluate): Add const support. 20461 (VarDeclNode::processVarDecls): Add const support. 20462 (VarStatementNode::execute): Irrelevant change. 20463 (ForInNode::ForInNode): Tell our variable node that it's a variable. 20464 * kjs/nodes.h: 20465 (KJS::VarDeclNode::): Add declaration of type enum, extra constructor parameter. 20466 (KJS::VarStatementNode::VarStatementNode): Irrelevant change. 20467 * kjs/function.cpp: 20468 (KJS::GlobalFuncImp::call): Process var decls before evaluating. 20469 204702005-06-20 Maciej Stachowiak <mjs@apple.com> 20471 20472 Patch from Mark Rowe <opendarwin.org@bdash.net.nz>, reviewed by me. 20473 20474 - fixed http://bugs.webkit.org/show_bug.cgi?id=3293 20475 20476 Test cases added: 20477 * tests/mozilla/expected.html: Updated for two fixed tests. 20478 - also added a layout test 20479 20480 * bindings/objc/objc_runtime.h: 20481 * bindings/objc/objc_runtime.mm: 20482 (ObjcFallbackObjectImp::hasOwnProperty): 20483 * bindings/runtime_array.cpp: 20484 (RuntimeArrayImp::hasOwnProperty): 20485 * bindings/runtime_array.h: 20486 * bindings/runtime_object.cpp: 20487 (RuntimeObjectImp::hasOwnProperty): 20488 * bindings/runtime_object.h: 20489 * kjs/array_instance.h: 20490 * kjs/array_object.cpp: 20491 (ArrayInstanceImp::hasOwnProperty): 20492 * kjs/function.cpp: 20493 (KJS::FunctionImp::hasOwnProperty): 20494 (KJS::ActivationImp::hasOwnProperty): 20495 * kjs/function.h: 20496 * kjs/object.cpp: 20497 (KJS::ObjectImp::hasProperty): 20498 (KJS::ObjectImp::hasOwnProperty): 20499 * kjs/object.h: 20500 (KJS::Object::hasOwnProperty): 20501 * kjs/object_object.cpp: 20502 (ObjectPrototypeImp::ObjectPrototypeImp): 20503 (ObjectProtoFuncImp::call): 20504 * kjs/object_object.h: 20505 (KJS::ObjectProtoFuncImp::): 20506 * kjs/string_object.cpp: 20507 (StringInstanceImp::hasOwnProperty): 20508 * kjs/string_object.h: 20509 205102005-06-18 Darin Adler <darin@apple.com> 20511 20512 Reviewed by Eric Seidel. 20513 20514 * pcre/get.c: (pcre_get_substring): Fix some computations so this works for UTF-16. 20515 This is unused in the current JavaScriptCore, but still good to fix. 20516 205172005-06-18 Darin Adler <darin@apple.com> 20518 20519 Change by Finlay Dobbie. 20520 Reviewed by me. 20521 20522 - fixed <http://bugs.webkit.org/show_bug.cgi?id=3331> 20523 10.3.9 Build Failure: NSString may not respond to `+stringWithCString:encoding:' 20524 20525 * bindings/objc/WebScriptObject.mm: (-[WebScriptObject stringRepresentation]): 20526 Undo change we did a while back to work around the gcc 3.3 compiler error. 20527 It no longer seems to happen, and the workaround code was 10.4-specific. 20528 205292005-06-16 Geoffrey Garen <ggaren@apple.com> 20530 20531 Fixed: <rdar://problem/4151759> 'delete' fails on variables declared inside 'eval' statements. 20532 20533 Reviewed by cblu. 20534 20535 * kjs/context.h: 20536 (KJS::ContextImp::codeType): Added code type accessor for execution context objects. 20537 * kjs/internal.cpp: 20538 (ContextImp::ContextImp): Reflects change to ContextImp::codeType. 20539 * kjs/nodes.cpp: 20540 (VarDeclNode::evaluate): Added separate code path for variable declarations inside 'eval' statements. 20541 * tests/mozilla/expected.html: Updated expected test results to reflect fix. 20542 205432005-06-14 Geoffrey Garen <ggaren@apple.com> 20544 20545 Updated expected.html to reflect fix to <rdar://problem/4147745>. 20546 20547 Reviewed by cblu. 20548 20549 * tests/mozilla/expected.html: 20550 205512005-06-14 Geoffrey Garen <ggaren@apple.com> 20552 20553 Fixed: <rdar://problem/4147745> JavaScript discards locally defined "arguments" property 20554 20555 No layout tests added because this change fixes existing tests: 20556 ecma/ExecutionContexts/10.1.6.js 20557 ecma_3/Function/regress-94506.js 20558 js1_4/Functions/function-001.js 20559 20560 Reviewed by cblu. 20561 20562 * kjs/function.cpp: 20563 (KJS::ActivationImp::get): get now checks for an "arguments" property defined in the local variable object 20564 before trying to return the built-in arguments array. 20565 20566 * kjs/function.h: ActivationImp::put no longer overrides ObjectImp::put 20567 205682005-06-10 Darin Adler <darin@apple.com> 20569 20570 Change by Mark Rowe <opendarwin.org@bdash.net.nz>. 20571 Reviewed by me. 20572 20573 - further improvements to exception file/line number fix 20574 20575 * kjs/nodes.h: Added setExceptionDetailsIfNeeded function. 20576 * kjs/nodes.cpp: Updated macros to call the new setExceptionDetailsIfNeeded function. 20577 (Node::setExceptionDetailsIfNeeded): Added. 20578 205792005-06-09 Darin Adler <darin@apple.com> 20580 20581 Change by Mark Rowe <opendarwin.org@bdash.net.nz> 20582 Reviewed by me. 20583 20584 * kjs/nodes.cpp: Get rid of unneeded this->. 20585 205862005-06-08 Maciej Stachowiak <mjs@apple.com> 20587 20588 Change by Mark Rowe <opendarwin.org@bdash.net.nz> 20589 Reviewed by me. 20590 20591 - fixed http://bugs.webkit.org/show_bug.cgi?id=3327 20592 (Exception When Setting Style to Invalid Value Lacks Line/File Information) 20593 20594 * kjs/nodes.cpp: Include source file and line number when making exception in 20595 KJS_CHECKEXCEPTIONVALUE. 20596 205972005-06-07 Darin Adler <darin@apple.com> 20598 20599 Change by Toby Peterson <toby@opendarwin.org>. 20600 Reviewed by me. 20601 20602 * JavaScriptCore.pbproj/project.pbxproj: Allow bison 2.0, which generates the file 20603 with a different name. 20604 206052005-06-07 Darin Adler <darin@apple.com> 20606 20607 Change by Toby Peterson <toby@opendarwin.org>. 20608 Reviewed by me. 20609 20610 * kjs/grammar.y: Remove bogus extra line from grammar.y. Toby got this change from KDE KJS. 20611 206122005-06-06 Darin Adler <darin@apple.com> 20613 20614 * tests/mozilla/run-mozilla-tests: Wrote a perl version of this so we don't require 20615 the "jst" tool to run the tests. 20616 206172005-06-04 Darin Adler <darin@apple.com> 20618 20619 Reviewed by Maciej. 20620 20621 - add libicu headers 20622 20623 * JavaScriptCore.pbproj/project.pbxproj: Added icu directory to header search path. 20624 20625 * icu/README: Added. 20626 * icu/unicode/platform.h: Added. 20627 * icu/unicode/uchar.h: Added. 20628 * icu/unicode/uconfig.h: Added. 20629 * icu/unicode/umachine.h: Added. 20630 * icu/unicode/urename.h: Added. 20631 * icu/unicode/utf.h: Added. 20632 * icu/unicode/utf16.h: Added. 20633 * icu/unicode/utf8.h: Added. 20634 * icu/unicode/utf_old.h: Added. 20635 * icu/unicode/utypes.h: Added. 20636 * icu/unicode/uversion.h: Added. 20637 206382005-05-19 Darin Adler <darin@apple.com> 20639 20640 Reviewed by Maciej. 20641 20642 - turned off exceptions and RTTI; seems to cut JavaScriptCore code size by about 22% 20643 20644 * JavaScriptCore.pbproj/project.pbxproj: Turn off exceptions and RTTI for both 20645 the framework and testkjs tool. 20646 206472005-05-18 Darin Adler <darin@apple.com> 20648 20649 Reviewed by Maciej. 20650 20651 - got rid of code that depended on RTTI 20652 20653 * kjs/collector.cpp: 20654 (KJS::className): Added. Gets class name in a KJS way, rather than a C++ RTTI way. 20655 (KJS::Collector::rootObjectClasses): Use className instead of typeid names. 20656 206572005-05-18 Darin Adler <darin@apple.com> 20658 20659 Reviewed by Maciej. 20660 20661 - fix a failure seen in the Mozilla JavaScript tests where a live object was garbage-collected 20662 when the only reference to it was in an argList on the stack 20663 20664 * kjs/list.h: Moved the operator= function into the .cpp file since it's too big to be 20665 a good choice to inline. 20666 * kjs/list.cpp: (KJS::List::operator=): Moved this formerly-inline function into a separate 20667 file and added missing code to update valueRefCount. It's the latter that fixes the bug. 20668 206692005-05-16 Darin Adler <darin@apple.com> 20670 20671 Reviewed by Adele. 20672 20673 - fixed issues preventing us from compiling with newer versions of gcc 4.0 20674 20675 * kjs/ustring.cpp: 20676 (KJS::operator==): Remove redundant and illegal KJS:: prefix on this function's definition. 20677 (KJS::operator<): Ditto. 20678 (KJS::compare): Ditto. 20679 206802005-05-09 Darin Adler <darin@apple.com> 20681 20682 Reviewed by John. 20683 20684 - turn on conservative GC unconditionally and start on SPI changes to 20685 eliminate the now-unneeded smart pointers since we don't ref count any more 20686 20687 * kjs/value.h: Removed macros to turn conservative GC on and off. 20688 Removed ref and deref functions. 20689 (KJS::ValueImp::ValueImp): Removed non-conservative-GC code path. 20690 (KJS::ValueImp::isUndefined): Added. New SPI to make it easier to deal with ValueImp directly. 20691 (KJS::ValueImp::isNull): Ditto. 20692 (KJS::ValueImp::isBoolean): Ditto. 20693 (KJS::ValueImp::isNumber): Ditto. 20694 (KJS::ValueImp::isString): Ditto. 20695 (KJS::ValueImp::isObject): Ditto. 20696 (KJS::Value::Value): Removed non-conservative-GC code path and made constructor no 20697 longer explicit so we can quietly create Value wrappers from ValueImp *; inexpensive with 20698 conservative GC and eases the transition. 20699 (KJS::Value::operator ValueImp *): Added. Quietly creates ValueImp * from Value. 20700 (KJS::ValueImp::marked): Removed non-conservative-GC code path. 20701 20702 * kjs/value.cpp: 20703 (KJS::ValueImp::mark): Removed non-conservative-GC code path. 20704 (KJS::ValueImp::isUndefinedOrNull): Added. New SPI to make it easier to deal with ValueImp directly. 20705 (KJS::ValueImp::isBoolean): Ditto. 20706 (KJS::ValueImp::isNumber): Ditto. 20707 (KJS::ValueImp::isString): Ditto. 20708 (KJS::ValueImp::asString): Ditto. 20709 (KJS::ValueImp::isObject): Ditto. 20710 (KJS::undefined): Ditto. 20711 (KJS::null): Ditto. 20712 (KJS::boolean): Ditto. 20713 (KJS::string): Ditto. 20714 (KJS::zero): Ditto. 20715 (KJS::one): Ditto. 20716 (KJS::two): Ditto. 20717 (KJS::number): Ditto. 20718 20719 * kjs/object.h: Made constructor no longer explicit so we can quietly create Object 20720 wrappers from ObjectImp *; inexpensive with conservative GC and eases the transition. 20721 (KJS::Object::operator ObjectImp *): Added. Quietly creates ObjectImp * from Object. 20722 (KJS::ValueImp::isObject): Added. Implementation of new object-related ValueImp function. 20723 (KJS::ValueImp::asObject): Ditto. 20724 20725 * kjs/object.cpp: 20726 (KJS::ObjectImp::setInternalValue): Remove non-conservative-GC code path. 20727 (KJS::ObjectImp::putDirect): Ditto. 20728 (KJS::error): Added. Function in the new SPI style to create an error object. 20729 20730 * kjs/internal.h: Added the new number-constructing functions as friends of NumberImp. 20731 There may be a more elegant way to do this later; what's important now is the new SPI. 20732 20733 * kjs/collector.h: Remove non-conservative-GC code path and also take out some 20734 unneeded APPLE_CHANGES. 20735 20736 * bindings/runtime_root.cpp: 20737 (KJS::Bindings::addNativeReference): Remove non-conservative-GC code path. 20738 (KJS::Bindings::removeNativeReference): Ditto. 20739 (RootObject::removeAllNativeReferences): Ditto. 20740 * bindings/runtime_root.h: 20741 (KJS::Bindings::RootObject::~RootObject): Ditto. 20742 (KJS::Bindings::RootObject::setRootObjectImp): Ditto. 20743 * kjs/collector.cpp: 20744 (KJS::Collector::allocate): Ditto. 20745 (KJS::Collector::collect): Ditto. 20746 (KJS::Collector::numGCNotAllowedObjects): Ditto. 20747 (KJS::Collector::numReferencedObjects): Ditto. 20748 (KJS::Collector::rootObjectClasses): Ditto. 20749 * kjs/internal.cpp: 20750 (NumberImp::create): Ditto. 20751 (InterpreterImp::globalInit): Ditto. 20752 (InterpreterImp::globalClear): Ditto. 20753 * kjs/list.cpp: 20754 (KJS::List::markProtectedLists): Ditto. 20755 (KJS::List::clear): Ditto. 20756 (KJS::List::append): Ditto. 20757 * kjs/list.h: 20758 (KJS::List::List): Ditto. 20759 (KJS::List::deref): Ditto. 20760 (KJS::List::operator=): Ditto. 20761 * kjs/protect.h: 20762 (KJS::gcProtect): Ditto. 20763 (KJS::gcUnprotect): Ditto. 20764 207652005-05-09 Chris Blumenberg <cblu@apple.com> 20766 20767 Workaround gcc 3.3 internal compiler errors. 20768 20769 Reviewed by darin. 20770 20771 * bindings/objc/WebScriptObject.mm: 20772 (-[WebScriptObject stringRepresentation]): call [NSString stringWithCString:encoding] rather than using @"" 20773 207742005-05-09 Darin Adler <darin@apple.com> 20775 20776 * Makefile.am: Don't set up PBXIntermediatesDirectory explicitly; 20777 Not needed to make builds work, spews undesirable error messages too. 20778 207792005-05-06 Darin Adler <darin@apple.com> 20780 20781 Reviewed by Maciej. 20782 20783 - make building multiple trees with make work better 20784 20785 * Makefile.am: Set up Xcode build directory before invoking xcodebuild. 20786 207872005-05-04 Maciej Stachowiak <mjs@apple.com> 20788 20789 Reviewed by Darin. 20790 20791 <rdar://problem/4086570> Crash in JavaScriptCore with RSS Visualizer 20792 20793 * kjs/internal.cpp: 20794 (InterpreterImp::mark): mark staticNaN, it is usually protected by the Number 20795 prototype but there is a small window where it can get collected. 20796 207972005-05-04 Darin Adler <darin@apple.com> 20798 20799 Reviewed by Dave Hyatt. 20800 20801 - another gcc-4.0-related fix 20802 20803 * bindings/runtime_root.h: Take off extra namespace prefixes that apparently cause problems 20804 compiling with gcc 4.0, although I have not observed the problems. 20805 208062005-05-04 Darin Adler <darin@apple.com> 20807 20808 Reviewed by Dave Hyatt. 20809 20810 - fixed build rules to match other projects 20811 20812 * JavaScriptCore.pbproj/project.pbxproj: Set deployment target to 10.3 in the build styles. 20813 When built without a build style (by Apple B&I) we want to get the target from the 20814 environment. But when built with a build style (by Safari engineers and others), we want 20815 to use 10.3. 20816 20817 * Makefile.am: Took out extra parameters that make command-line building different from 20818 Xcode building. Now that this is fixed, you should not get a full rebuild if you switch 20819 from command line to Xcode or back. 20820 208212005-05-04 Maciej Stachowiak <mjs@apple.com> 20822 20823 - revert presumably accidental change to mozilla JS test expected results, this 20824 was making the tests fail. 20825 20826 * tests/mozilla/expected.html: 20827 208282005-05-03 Richard Williamson <rjw@apple.com> 20829 20830 Fixed <rdar://problem/4102644> Crash in LiveConnect below KJS::Bindings::JavaInstance::stringValue() const 20831 20832 Correctly handle accessing nil objects from a Java object array. 20833 20834 Reviewed by John. 20835 20836 * bindings/jni/jni_runtime.cpp: 20837 (JavaArray::valueAt): 20838 208392005-05-01 Darin Adler <darin@apple.com> 20840 20841 - move to Xcode native targets and stop checking in generated files 20842 20843 * JavaScriptCore.pbproj/project.pbxproj: Updated to use native targets and generate all the generated 20844 files, so we don't have to check them in any more. 20845 * Info.plist: Added. Native targets use a separate file for this. 20846 20847 * Makefile.am: Removed pcre and kjs SUBDIRS. Also removed code that deleted the embedded copy of this 20848 framework, since we haven't been embedding it for some time. 20849 20850 * kjs/grammar_wrapper.cpp: Added. Shell used to compile grammar.cpp since we can't add a generated file 20851 easily to the list of files to be compiled. 20852 20853 * kjs/.cvsignore: Removed. 20854 * kjs/Makefile.am: Removed. 20855 * kjs/array_object.lut.h: Removed. 20856 * kjs/date_object.lut.h: Removed. 20857 * kjs/grammar.cpp: Removed. 20858 * kjs/grammar.cpp.h: Removed. 20859 * kjs/grammar.h: Removed. 20860 * kjs/lexer.lut.h: Removed. 20861 * kjs/math_object.lut.h: Removed. 20862 * kjs/number_object.lut.h: Removed. 20863 * kjs/string_object.lut.h: Removed. 20864 * pcre/.cvsignore: Removed. 20865 * pcre/Makefile.am: Removed. 20866 * pcre/chartables.c: Removed. 20867 208682005-04-28 Darin Adler <darin@apple.com> 20869 20870 Reviewed by Dave Harrison. 20871 20872 - fixed problems preventing us from compiling with gcc 4.0 20873 20874 * JavaScriptCore.pbproj/project.pbxproj: Removed -Wmissing-prototypes from 20875 WARNING_CPLUSPLUSFLAGS since it's now a C-only warning. 20876 20877 * bindings/jni/jni_jsobject.cpp: 20878 (JSObject::getSlot): Changed some %d to %ld where the parameters where long ints. 20879 (JSObject::setSlot): Ditto. 20880 * bindings/jni/jni_utility.cpp: 20881 (KJS::Bindings::getJavaVM): Ditto. 20882 (KJS::Bindings::getJNIEnv): Ditto. 20883 * bindings/objc/objc_utility.mm: Fixed include of <JavascriptCore/internal.h> that needed the 20884 letter "S" capitalized. 20885 * kjs/bool_object.cpp: (BooleanProtoFuncImp::call): Rearranged how this function returns to 20886 avoid incorrect gcc 4.0 warning. 20887 * kjs/collector.cpp: (KJS::Collector::markStackObjectsConservatively): Changed code to check 20888 the alignment of the passed-in pointers to only require pointer-level alignment, not 8-byte alignment. 20889 Prevents a crash on garbage collect when compiled with gcc 4.0. 20890 * kjs/nodes.cpp: 20891 (WhileNode::execute): Added a redundant return after an infinite loop to work around incorrect gcc 4.0 warning. 20892 (ForNode::execute): Ditto. 20893 (SwitchNode::execute):Rearranged how this function returns to avoid incorrect gcc 4.0 warning. 20894 (LabelNode::execute): Ditto. 20895 * kjs/string_object.cpp: (replace): Ditto. 20896 208972005-04-26 Richard Williamson <rjw@apple.com> 20898 20899 Fixed <rdar://problem/4098713> Scripting API is incompatible with Mozilla 20900 20901 We were incompatible with Mozilla's implementation of the scripting APIs in 20902 two ways: 20903 20904 Their NPN_SetException has the following signature: 20905 20906 void NPN_SetException(NPObject *npobj, const NPUTF8 *message); 20907 20908 ours has: 20909 20910 void NPN_SetException (NPObject * npobj, const NPString *message); 20911 20912 Also, they expect the string returned from NPN_UTF8FromIdentifier() to be freed by caller. 20913 We do not. 20914 20915 I changed both behaviors to match Mozilla. 20916 20917 Reviewed by Chris. 20918 20919 * bindings/NP_jsobject.cpp: 20920 (_NPN_SetException): 20921 * bindings/npruntime.cpp: 20922 (_NPN_UTF8FromIdentifier): 20923 (_NPN_IntFromIdentifier): 20924 (_NPN_SetExceptionWithUTF8): 20925 * bindings/npruntime.h: 20926 * bindings/npruntime_impl.h: 20927 209282005-04-26 Maciej Stachowiak <mjs@apple.com> 20929 20930 Reviewed by Chris. 20931 20932 <rdar://problem/4092136> reproducible crash in KJS::kjs_fast_realloc loading maps.google.com 20933 20934 * kjs/string_object.cpp: 20935 (StringObjectFuncImp::call): Allocate adopted ustring buffer properly. 20936 209372005-04-22 Darin Adler <darin@apple.com> 20938 20939 Reviewed by Maciej. 20940 20941 * kjs/ustring.cpp: (KJS::UString::UTF8String): Fix off-by-one error in surrogate pair logic. 20942 209432005-04-22 Darin Adler <darin@apple.com> 20944 20945 Reviewed by John. 20946 20947 - fixed <rdar://problem/4090046> JavaScript throw statement causes parse error when no semicolon is present 20948 20949 * kjs/grammar.y: Added an additional rule for throw like the ones we have for all the other semicolon rules. 20950 Not sure why we missed this one earlier. 20951 20952 * kjs/grammar.cpp: Regenerated. 20953 20954=== JavaScriptCore-412.1 === 20955 209562005-04-20 Darin Adler <darin@apple.com> 20957 20958 Reviewed by Maciej. 20959 20960 - speedups, total 12% on JavaScript iBench 20961 20962 I ran the benchmark under Shark and followed its advice a lot, mainly. 20963 20964 * kjs/collector.cpp: 20965 (KJS::Collector::allocate): Take out special case for 0; costing speed but unexercised. 20966 Use numLiveObjectsAtLastCollect instead of numAllocationsSinceLastCollect so we don't 20967 have to bump it each time we call allocate. Put numLiveObjects into a local variable to 20968 cut down on global variable accesses. Make "next" cell pointer be a byte offset rather 20969 than a pointer so we don't need a special case for NULL. Allow freeList to point to some 20970 bogus item when the entire block is full rather than going out of our way to make it 20971 point to NULL. 20972 (KJS::Collector::markProtectedObjects): Get table size and pointer into locals outside 20973 the loop to avoid re-loading them over and over again. 20974 (KJS::Collector::collect): Put numLiveObjects into a local variable to cut down on global 20975 variable accesses. Make "next" cell pointer be a byte offset as above. Put numLiveObjects 20976 into a local variable to cut down on global variable accesses. Set numLiveObjectsAtLastCollect 20977 rather than numAllocationsSinceLastCollect. 20978 (KJS::Collector::numReferencedObjects): Get table size and pointer into locals outside 20979 the loop to avoid re-loading them over and over again. 20980 (KJS::Collector::rootObjectClasses): Ditto. 20981 20982 * kjs/internal.h: Make Value be a friend of NumberImp so it can construct number objects 20983 directly, avoiding the conversion from Number to Value. 20984 20985 * kjs/internal.cpp: (StringImp::toObject): Don't use Object::dynamicCast, because we know 20986 the thing is an object and we don't want to do all the extra work; just cast directly. 20987 20988 * kjs/list.cpp: (KJS::List::List): Construct valueRefCount in a way that avoids the need for 20989 a branch -- in the hot case this just meant avoiding checking a variable we just set to false. 20990 20991 * kjs/lookup.cpp: (keysMatch): Marked this inline. 20992 20993 * kjs/nodes.cpp: Disabled KJS_BREAKPOINT, to avoid calling hitStatement all the time. 20994 (BooleanNode::evaluate): Make a Value directly, rather than making a Boolean which is converted 20995 into a Value. 20996 (NumberNode::evaluate): Ditto. 20997 (StringNode::evaluate): Ditto. 20998 (ArrayNode::evaluate): Ditto. 20999 (FunctionCallNode::evaluate): Use new inline baseIfMutable to avoid unnecessary getBase function. 21000 Also just use a pointer for func, rather than an Object. 21001 (PostfixNode::evaluate): Change code so that it doesn't make an excess Number, and so that it 21002 passes a "known to be integer" boolean in, often avoiding a conversion from floating point to 21003 integer and back. 21004 (DeleteNode::evaluate): Make a Value directly. 21005 (TypeOfNode::evaluate): Use new inline baseIfMutable and make Value directly. 21006 (PrefixNode::evaluate): Change code so that it doesn't make an excess Number, and so that it 21007 passes a "known to be integer" boolean in, often avoiding a conversion from floating point to 21008 integer and back. 21009 (UnaryPlusNode::evaluate): Make a Value directly. 21010 (NegateNode::evaluate): Change code so that it doesn't make an excess Number, and so that it 21011 passes a "known to be integer" boolean in, often avoiding a conversion from floating point to 21012 integer and back. 21013 (BitwiseNotNode::evaluate): Make a Value directly. 21014 (LogicalNotNode::evaluate): Ditto. 21015 (ShiftNode::evaluate): Don't convert to a double before making a Value. 21016 (RelationalNode::evaluate): Make a Value directly. 21017 (EqualNode::evaluate): Ditto. 21018 (BitOperNode::evaluate): Ditto. 21019 (AssignNode::evaluate): Make a Value directly. Change code so that it passes a "known to be integer" 21020 boolean in, often avoiding a conversion from floating point to integer and back. 21021 (VarDeclNode::evaluate): Make a Value directly. 21022 (ForNode::execute): Remove unused local variable. 21023 21024 * kjs/operations.h: 21025 (KJS::isNaN): Inlined. 21026 (KJS::isInf): Ditto. 21027 (KJS::isPosInf): Ditto. 21028 (KJS::isNegInf): Ditto. 21029 21030 * kjs/operations.cpp: Change isNaN, isInf, isPosInf, and isNegInf to be inlines. 21031 (KJS::equal): Rewrite to avoid creating values and recursing back into the function. 21032 (KJS::relation): Rearranged code so that we don't need explicit isNaN checks. 21033 (KJS::add): Changed code to make Value directly, and so that it passes a "known to be integer" 21034 boolean in, often avoiding a conversion from floating point to integer and back. 21035 (KJS::mult): Ditto. 21036 21037 * kjs/property_map.cpp: 21038 (KJS::PropertyMap::~PropertyMap): Get size and entries pointer outside loop to avoid 21039 re-getting them inside the loop. 21040 (KJS::PropertyMap::clear): Ditto. Clear value pointer in addition to key, so we can just 21041 look at the value pointer in the mark function. 21042 (KJS::PropertyMap::get): Get sizeMask and entries pointer outside loop to avoid 21043 re-getting them inside the loop. 21044 (KJS::PropertyMap::put): Ditto. 21045 (KJS::PropertyMap::insert): Ditto. 21046 (KJS::PropertyMap::remove): Ditto. 21047 (KJS::PropertyMap::mark): Get size and entries pointer outside loop to avoid 21048 re-getting them inside the loop. Don't bother checking key for 0, since we already have 21049 to check value for 0. (Also had to change clear() to set value to 0.) 21050 (KJS::PropertyMap::addEnumerablesToReferenceList): Get size and entries pointer outside 21051 loop to avoid re-getting them inside the loop. 21052 (KJS::PropertyMap::addSparseArrayPropertiesToReferenceList): Ditto. 21053 (KJS::PropertyMap::save): Ditto. 21054 21055 - other changes 21056 21057 * kjs/protected_values.h: Remove unneeded class name qualifiers. 21058 21059 * kjs/reference.h: 21060 (KJS::Reference::baseIfMutable): New inline function: replaces isMutable(). 21061 (KJS::Reference::Reference): Inlined. 21062 * kjs/reference.cpp: 21063 (KJS::Reference::getValue): Rewrite to not use getBase. 21064 (KJS::Reference::putValue): Ditto. 21065 (KJS::Reference::deleteValue): Dittol 21066 21067 * kjs/simple_number.h: 21068 (KJS::SimpleNumber::integerFits): Added. For use when the parameter is known to be integral. 21069 21070 * kjs/string_object.cpp: (StringProtoFuncImp::call): Create the number without first converting 21071 to double in various cases that involve integers. 21072 21073 * kjs/ustring.h: 21074 (KJS::UString::attach): Inlined. 21075 (KJS::UString::release): Inlined. 21076 * kjs/ustring.cpp: 21077 (KJS::UString::find): Get first character outside the loop instead of re-fetching it each time. 21078 21079 * kjs/value.cpp: 21080 (Value::Value): Added overloads for all the various specific types of values, so you don't have 21081 to convert from, say, Number to Value, just to create one. 21082 (Number::Number): Added an overload that takes a boolean to indicate the number is already 21083 known to be an integer. 21084 21085 * kjs/value.h: Added more Value constructors, added a version of toNumber that returns 21086 a boolean to indicate if the number is known to be an integer (because it was a "simple number"). 21087 (KJS::ValueImp::marked): Inlined. 21088 (KJS::ValueImp::dispatchType): Inlined. 21089 (KJS::ValueImp::dispatchToPrimitive): Inlined. 21090 (KJS::ValueImp::dispatchToBoolean): Inlined. 21091 (KJS::ValueImp::dispatchToNumber): Inlined. 21092 (KJS::ValueImp::dispatchToString): Inlined. 21093 (KJS::ValueImp::dispatchToUInt32): Inlined. 21094 210952005-04-14 Maciej Stachowiak <mjs@apple.com> 21096 21097 - make fast_malloc.h a private header, not project 21098 21099 * JavaScriptCore.pbproj/project.pbxproj: 21100 211012005-04-12 Maciej Stachowiak <mjs@apple.com> 21102 21103 Reviewed by Richard. 21104 21105 <rdar://problem/4089734> JavaScript iBench can be sped up ~10% with custom allocator 21106 21107 - use custom single-threaded malloc for all non-GC JavaScriptCore 21108 allocations, for a 9.1% speedup on JavaScript iBench 21109 21110 * JavaScriptCore.pbproj/project.pbxproj: 21111 * kjs/collector.cpp: 21112 (KJS::Collector::allocate): Use dlmalloc to allocate the collector blocks. 21113 (KJS::Collector::collect): And dlfree to free it. 21114 * kjs/fast_malloc.cpp: Added, just the standard dlmalloc here. 21115 * kjs/fast_malloc.h: Added. Declarations for the functions. Also added a handy 21116 macro to give a class custom operator new/delete 21117 * kjs/identifier.cpp: 21118 (KJS::Identifier::add): Use dlmalloc/dlfree. 21119 * kjs/nodes.h: make nodes KJS_FAST_ALLOCATED. 21120 * kjs/property_map.cpp: 21121 (KJS::PropertyMap::~PropertyMap): Use dlmalloc/dlfree. 21122 (KJS::PropertyMap::rehash): ditto 21123 * kjs/scope_chain.h: 21124 * kjs/ustring.cpp: 21125 (KJS::UString::Rep::createCopying): New named constructor that copies a passed-in 21126 buffer, to hide allocation details from webcore. 21127 (KJS::UString::UString): use createCopying when appropriate. 21128 (KJS::UString::Rep::destroy): Use dlmalloc/dlfree. 21129 (KJS::UString::expandedSize): likewise 21130 (KJS::UString::expandCapacity): likewise 21131 (KJS::UString::expandPreCapacity): likewise 21132 (KJS::UString::spliceSubstringsWithSeparators): likewise 21133 (KJS::UString::append): likewise 21134 (KJS::UString::operator=): likewise 21135 (KJS::UString::detach): likewise 21136 * kjs/ustring.h: make UString and UString::Rep KJS_FAST_ALLOCATED. 21137 211382005-04-11 Maciej Stachowiak <mjs@apple.com> 21139 21140 Reviewed by John. 21141 21142 <rdar://problem/4086819> Avoid using protect count hash table so much for 5.6% JS iBench speedup 21143 21144 - Avoid using protected values hash for the two most common cases 21145 - Bump up ListImp high water mark, new testing shows 508 ListImps are 21146 created during JS iBench. 21147 21148 Net result is a 5.6% speedup on JavaScript iBench 21149 21150 * kjs/collector.cpp: 21151 (KJS::Collector::collect): mark protected lists as appropriate. 21152 * kjs/context.h: 21153 * kjs/list.cpp: 21154 (KJS::ListImp::markValues): Moved implementation from List::markValues 21155 (KJS::List::markProtectedLists): Implemented - scan pool and overflow 21156 list. 21157 (KJS::allocateListImp): link lists outside the pool into a separate 21158 doubly linked list to be able to mark protected lists 21159 (KJS::deallocateListImp): do the corresponding delinking 21160 (KJS::List::derefValues): do nothing in conservative GC mode 21161 (KJS::List::refValues): do nothing in conservative GC mode 21162 (KJS::List::markValues): call ListImp version 21163 (KJS::List::append): 21164 * kjs/list.h: 21165 21166=== Safari-412 === 21167 21168=== Safari-411 === 21169 21170=== Safari-410 === 21171 21172=== Safari-409 === 21173 21174=== Safari-408 === 21175 21176=== Safari-407 === 21177 211782005-03-16 Jens Alfke <jens@apple.com> 21179 21180 Reviewed by Kevin. 21181 21182 Fix for <rdar://problem/4025212> "REGRESSION (163-164): search not performed correctly; united.com" 21183 JavaScript unescape("") was returning a messed-up String object that appeared identical to an empty string, but would in some cases act as 'null' when passed to native functions, in this case the Option() constructor. 21184 In the implementation of unescape, the UString holding the result was not initialized to "", so it started out as a null string. If nothing was appended to it, it remained null, resulting in a JavaScript String object with some bad behaviors (namely, converting it to a DOMStringImpl results in a NULL pointer.) 21185 Darin says this regression occurred when we replaced our own implementation of unescape() with code from KJS. 21186 21187 * kjs/function.cpp: 21188 (KJS::GlobalFuncImp::call): 21189 211902005-03-15 Richard Williamson <rjw@apple.com> 21191 21192 Fixed <rdar://problem/4053276> WebScripting protocol in WebKit cannot convert Boolean in Javascript to BOOL in Objective-C 21193 21194 Added JavaScript boolean to type that can be converted to 21195 ObjC scalar parameters. 21196 21197 Reviewed by Ken Kocienda. 21198 21199 * bindings/objc/objc_utility.mm: 21200 (KJS::Bindings::convertValueToObjcValue): 21201 21202=== Safari-406 === 21203 21204=== Safari-405 === 21205 21206=== Safari-403 === 21207 21208=== Safari-402 === 21209 21210=== Safari-401 === 21211 21212=== Safari-400 === 21213 21214=== Safari-188 === 21215 212162005-02-21 Darin Adler <darin@apple.com> 21217 21218 * kjs/date_object.cpp: (timetUsingCF): Fixed indenting. 21219 212202005-02-17 Richard Williamson <rjw@apple.com> 21221 21222 Fixed <rdar://problem/4003251> Safari crashed at www.icelandair.com in LiveConnect code converting a Java object to a string 21223 21224 Added nil check. 21225 21226 Reviewed by John Sullivan. 21227 21228 * bindings/jni/jni_runtime.cpp: 21229 (JavaField::valueFromInstance): 21230 21231=== Safari-187 === 21232 212332005-02-11 Richard Williamson <rjw@apple.com> 21234 21235 Fixed <rdar://problem/3985118> DOM objects not being marshaled on JS->native calls 21236 21237 Re-factored how 'native' wrappers for JS objects are created. The interpreter now 21238 creates these wrappers. The WebCore subclass of the interpreter now overrides 21239 createLanguageInstanceForValue() and creates a DOM ObjC wrapper for DOM objects. 21240 21241 Reviewed by Ken. 21242 21243 * bindings/c/c_utility.cpp: 21244 (convertValueToNPVariant): 21245 * bindings/jni/jni_instance.cpp: 21246 (JavaInstance::invokeMethod): 21247 * bindings/jni/jni_objc.mm: 21248 (KJS::Bindings::dispatchJNICall): 21249 * bindings/jni/jni_runtime.cpp: 21250 (JavaField::valueFromInstance): 21251 (JavaArray::valueAt): 21252 * bindings/objc/WebScriptObject.mm: 21253 (-[WebScriptObject _setExecutionContext:KJS::Bindings::]): 21254 (+[WebScriptObject _convertValueToObjcValue:KJS::originExecutionContext:Bindings::executionContext:Bindings::]): 21255 * bindings/objc/WebScriptObjectPrivate.h: 21256 * bindings/objc/objc_utility.h: 21257 * bindings/objc/objc_utility.mm: 21258 (KJS::Bindings::convertObjcValueToValue): 21259 (KJS::Bindings::createObjcInstanceForValue): 21260 * bindings/runtime.cpp: 21261 (Instance::createBindingForLanguageInstance): 21262 (Instance::createRuntimeObject): 21263 (Instance::createLanguageInstanceForValue): 21264 * bindings/runtime.h: 21265 * kjs/interpreter.cpp: 21266 (Interpreter::createLanguageInstanceForValue): 21267 * kjs/interpreter.h: 21268 21269=== Safari-186 === 21270 212712005-02-10 Darin Adler <darin@apple.com> 21272 21273 "Reviewed" by Richard (he told me the file was obsolete). 21274 21275 - got rid of an obsolete file 21276 21277 * bindings/npsap.h: Removed. 21278 21279=== Safari-185 === 21280 21281=== Safari-183 === 21282 212832005-02-03 Richard Williamson <rjw@apple.com> 21284 21285 Fixed <rdar://problem/3972905> CrashTracer: ...36 crashes at com.apple.WebCore: khtml::CSSStyleSelector::applyDeclarations + 120 21286 21287 Revert to old (and correct) behavior of returning runtime object 21288 when passed as a parameter, rather than it's corresponding DOM 21289 object. 21290 21291 Reviewed by Chris. 21292 21293 * bindings/objc/WebScriptObject.mm: 21294 (+[WebScriptObject _convertValueToObjcValue:KJS::originExecutionContext:Bindings::executionContext:Bindings::]): 21295 21296=== Safari-182 === 21297 212982005-01-28 Richard Williamson <rjw@apple.com> 21299 21300 Fixed <rdar://problem/3980389> JavaScript bindings access incorrect runtime object 21301 21302 Only use special 'back door' property to get the runtime object if thisObj isn't 21303 already a runtime object. 21304 21305 <gratuitous> Cleaned up a couple of strcmp on ClassInfo name. Used == on 21306 ClassInfo pointer instead. 21307 21308 Reviewed by Chris. 21309 21310 * bindings/c/c_utility.cpp: 21311 (convertValueToNPVariant): 21312 * bindings/objc/WebScriptObject.mm: 21313 (+[WebScriptObject _convertValueToObjcValue:KJS::originExecutionContext:Bindings::executionContext:Bindings::]): 21314 * bindings/runtime_method.cpp: 21315 (RuntimeMethodImp::call): 21316 21317=== Safari-181 === 21318 213192005-01-26 Richard Williamson <rjw@apple.com> 21320 21321 Fixed <rdar://problem/3972522> (179-180) 40% slowdown on iBench JavaScript test 21322 21323 I added a member variable to ObjectImp. This changed it's size and consequently 21324 hampered the optimizations built into the garbage collector. Objects no longer 21325 fit within the allocators cell size, and thus allocation fell back to a slower 21326 allocator. 21327 21328 As a result of this fix I also dramatically cleaned up how runtime objects are 21329 accessed. The path mostly *removes* code. 21330 21331 Reviewed by Chris. 21332 21333 * bindings/runtime_method.cpp: 21334 (RuntimeMethodImp::call): 21335 * bindings/runtime_object.cpp: 21336 (RuntimeObjectImp::get): 21337 (RuntimeObjectImp::put): 21338 (RuntimeObjectImp::canPut): 21339 (RuntimeObjectImp::hasProperty): 21340 (RuntimeObjectImp::defaultValue): 21341 * bindings/runtime_object.h: 21342 * kjs/object.cpp: 21343 (KJS::ObjectImp::ObjectImp): 21344 * kjs/object.h: 21345 213462005-01-20 Darin Adler <darin@apple.com> 21347 21348 Reviewed by me, changes by Han Ming Ong. 21349 21350 - <rdar://problem/3964302> SWB: A few files need to be updated to be compilable under GCC 4.0 21351 21352 * bindings/objc/WebScriptObjectPrivate.h: Make members public. 21353 * kjs/lookup.h: Change "value.h" to "object.h" because we need KJS::Object to compile a template. 21354 213552005-01-20 Richard Williamson <rjw@apple.com> 21356 21357 Fixed <rdar://problem/3964634> undefined property value from binding seems to evaluate to true in an if statement 21358 21359 The comprehensive fix for this problem requires new API, as described in 3965326. However, 21360 given that we can't add new API at this point, the 'ObjcFallbackObjectImp' will behave 21361 like and Undefined object if invokeUndefinedMethodFromWebScript:withArguments: isn't 21362 implemented on the bound object. 21363 21364 Reviewed by Chris. 21365 21366 * bindings/objc/objc_runtime.h: 21367 * bindings/objc/objc_runtime.mm: 21368 (ObjcFallbackObjectImp::type): 21369 (ObjcFallbackObjectImp::implementsCall): 21370 (ObjcFallbackObjectImp::toBoolean): 21371 * bindings/testbindings.mm: 21372 (+[MyFirstInterface isSelectorExcludedFromWebScript:]): 21373 (+[MyFirstInterface isKeyExcludedFromWebScript:]): 21374 21375=== Safari-180 === 21376 213772005-01-19 Richard Williamson <rjw@apple.com> 21378 21379 Fixed <rdar://problem/3853676> Browser Crash when accessing CCWeb Progress Page - KJS::Bindings::convertValueToJValue 21380 21381 Fixed the following problems with LiveConnect that are demonstrated by the application 21382 described in 3853676. 21383 21384 1. If a nil object is passed in an array from Java to JavaScript we will crash. 21385 2. We sometimes will incorrectly attempt to access a generic JavaScript as a Java runtime object wrapper. 21386 3. We will sometimes fail to find the correct static method ID. 21387 21388 Reviewed by Maciej. 21389 21390 * bindings/jni/jni_jsobject.cpp: 21391 (JSObject::convertJObjectToValue): 21392 (JSObject::listFromJArray): 21393 * bindings/jni/jni_runtime.cpp: 21394 (JavaField::valueFromInstance): 21395 (JavaField::setValueToInstance): 21396 * bindings/jni/jni_utility.cpp: 21397 (KJS::Bindings::getMethodID): 21398 (KJS::Bindings::convertValueToJValue): 21399 * bindings/runtime_array.h: 21400 214012005-01-18 Richard Williamson <rjw@apple.com> 21402 21403 Fixed several issues all arising from analysis of plugin detection code at ifilm.com: 21404 21405 Fixed <rdar://problem/3958592> can't script plug-ins if plug-in is invoked with <object> element instead of <embed> 21406 Fixed <rdar://problem/3958597> <object> elements with IDs do not show up as named properties of the document 21407 Fixed <rdar://problem/3960973> DOM objects for plugin elements are not accessible 21408 Fixed <rdar://problem/3958601> need an additional class ID in WebCore for the Real plug-in 21409 21410 We now support accessing scriptable plugin objects that are specified with <applet>, <embed>, or <object> 21411 tags. Also, if any of these elements are named they can be accessed from the document or window objects. 21412 Finally, DOM methods are properties will be forwarded appropriately for the plugin's root scriptable object. 21413 21414 Reviewed by Chris. 21415 21416 * bindings/objc/objc_instance.h: 21417 * bindings/objc/objc_instance.mm: 21418 (ObjcInstance::supportsSetValueOfUndefinedField): 21419 * bindings/runtime.h: 21420 (KJS::Bindings::Instance::supportsSetValueOfUndefinedField): 21421 * bindings/runtime_object.cpp: 21422 (RuntimeObjectImp::RuntimeObjectImp): 21423 (RuntimeObjectImp::get): 21424 (RuntimeObjectImp::put): 21425 (RuntimeObjectImp::canPut): 21426 (RuntimeObjectImp::hasProperty): 21427 (RuntimeObjectImp::defaultValue): 21428 * bindings/runtime_object.h: 21429 (KJS::RuntimeObjectImp::fallbackObject): 21430 * kjs/object.cpp: 21431 (KJS::ObjectImp::ObjectImp): 21432 * kjs/object.h: 21433 (KJS::ObjectImp::forwardingScriptMessage): 21434 (KJS::ObjectImp::setForwardingScriptMessage): 21435 214362005-01-18 Richard Williamson <rjw@apple.com> 21437 21438 Back out a change that was incorrectly committed yesterday. 21439 21440 Reviewed by Chris. 21441 21442 * bindings/objc/objc_utility.mm: 21443 (KJS::Bindings::convertValueToObjcValue): 21444 214452005-01-17 Richard Williamson <rjw@apple.com> 21446 21447 Fixed <rdar://problem/3753030> Need to ensure same origin for plugin binding invocations (origin security rules) 21448 21449 Keep track of originating execution context and target execution 21450 context for native JS object wrappers, and perform appropriate 21451 security checks. 21452 21453 Reviewed by David Harrison. 21454 21455 * bindings/NP_jsobject.cpp: 21456 (_isSafeScript): 21457 (_NPN_CreateScriptObject): 21458 (_NPN_Invoke): 21459 (_NPN_Evaluate): 21460 (_NPN_GetProperty): 21461 (_NPN_SetProperty): 21462 (_NPN_RemoveProperty): 21463 (_NPN_HasProperty): 21464 (_NPN_HasMethod): 21465 (_NPN_SetException): 21466 * bindings/NP_jsobject.h: 21467 * bindings/c/c_instance.cpp: 21468 (CInstance::CInstance): 21469 (CInstance::stringValue): 21470 * bindings/c/c_instance.h: 21471 * bindings/c/c_utility.cpp: 21472 (convertValueToNPVariant): 21473 * bindings/jni/jni_instance.cpp: 21474 (JavaInstance::JavaInstance): 21475 (JavaInstance::valueOf): 21476 * bindings/jni/jni_instance.h: 21477 * bindings/objc/WebScriptObject.mm: 21478 (-[WebScriptObject _initializeWithObjectImp:KJS::originExecutionContext:Bindings::executionContext:Bindings::]): 21479 (-[WebScriptObject _initWithObjectImp:KJS::originExecutionContext:Bindings::executionContext:Bindings::]): 21480 (-[WebScriptObject KJS::Bindings::]): 21481 (-[WebScriptObject _setOriginExecutionContext:KJS::Bindings::]): 21482 (-[WebScriptObject _isSafeScript]): 21483 (-[WebScriptObject callWebScriptMethod:withArguments:]): 21484 (-[WebScriptObject evaluateWebScript:]): 21485 (-[WebScriptObject setValue:forKey:]): 21486 (-[WebScriptObject valueForKey:]): 21487 (-[WebScriptObject removeWebScriptKey:]): 21488 (-[WebScriptObject stringRepresentation]): 21489 (-[WebScriptObject webScriptValueAtIndex:]): 21490 (-[WebScriptObject setWebScriptValueAtIndex:value:]): 21491 (+[WebScriptObject _convertValueToObjcValue:KJS::originExecutionContext:Bindings::executionContext:Bindings::]): 21492 * bindings/objc/WebScriptObjectPrivate.h: 21493 * bindings/objc/objc_instance.h: 21494 * bindings/objc/objc_runtime.mm: 21495 (convertValueToObjcObject): 21496 * bindings/objc/objc_utility.mm: 21497 (KJS::Bindings::convertValueToObjcValue): 21498 * bindings/runtime.cpp: 21499 (Instance::Instance): 21500 (Instance::operator=): 21501 * bindings/runtime.h: 21502 (KJS::Bindings::Instance::Instance): 21503 (KJS::Bindings::Instance::setExecutionContext): 21504 (KJS::Bindings::Instance::executionContext): 21505 * bindings/runtime_root.cpp: 21506 (RootObject::setInterpreter): 21507 * bindings/runtime_root.h: 21508 * kjs/interpreter.h: 21509 (KJS::Interpreter::isGlobalObject): 21510 (KJS::Interpreter::interpreterForGlobalObject): 21511 (KJS::Interpreter::isSafeScript): 21512 21513=== Safari-179 === 21514 215152005-01-13 Vicki Murley <vicki@apple.com> 21516 21517 Reviewed by Adele. 21518 21519 - fix <rdar://problem/3946836> Safari about box lists 2004 instead of 2005 21520 21521 * JavaScriptCore.pbproj/project.pbxproj: bump "2004" to "2005" 21522 215232005-01-12 Richard Williamson <rjw@apple.com> 21524 21525 Avoid additional work on dealloc by adding early out to 21526 removeNativeReference(). (This will save time on dealloc 21527 for all ObjC DOM objects.) 21528 21529 Reviewed by Darin. 21530 21531 * bindings/runtime_root.cpp: 21532 (KJS::Bindings::removeNativeReference): 21533 215342005-01-12 Richard Williamson <rjw@apple.com> 21535 21536 Fixed <rdar://problem/3923356> REGRESSION: Java/JavaScript security checks working incorrectly 21537 21538 We were always returning the first "root" object for all runtime 21539 objects. Changed 0 in loop to i, the index. 21540 21541 Reviewed by David Harrison. 21542 21543 * bindings/runtime_root.cpp: 21544 (KJS::Bindings::rootForImp): 21545 215462005-01-11 Richard Williamson <rjw@apple.com> 21547 21548 Fixed <rdar://problem/3887930> Must use new Java plug-in API to get/set fields so exception handling works (fixes many LiveConnect crashes) 21549 21550 Use the new dispatching API to invoke JNI, rather than calling JNI 21551 directly. 21552 21553 Reviewed by David Harrison. 21554 21555 * bindings/jni/jni_instance.cpp: 21556 (JavaInstance::invokeMethod): 21557 * bindings/jni/jni_runtime.cpp: 21558 (JavaField::dispatchValueFromInstance): 21559 (JavaField::valueFromInstance): 21560 (JavaField::dispatchSetValueToInstance): 21561 (JavaField::setValueToInstance): 21562 * bindings/jni/jni_runtime.h: 21563 * bindings/jni/jni_utility.cpp: 21564 (KJS::Bindings::convertValueToJValue): 21565 21566=== Safari-178 === 21567 21568=== Safari-177 === 21569 21570=== Safari-176 === 21571 215722004-12-17 Maciej Stachowiak <mjs@apple.com> 21573 21574 Reviewed by Kevin. 21575 21576 <rdar://problem/3926869> Opening caches window after running PLT causes crash 21577 21578 * kjs/protected_values.cpp: 21579 (KJS::ProtectedValues::getProtectCount): Don't include simple numbers in 21580 the protected value table. 21581 (KJS::ProtectedValues::increaseProtectCount): Ditto. 21582 (KJS::ProtectedValues::decreaseProtectCount): Ditto. 21583 215842004-12-16 Darin Adler <darin@apple.com> 21585 21586 Reviewed by Maciej. 21587 21588 - fixed <rdar://problem/3920764> Unimplemented String methods toLocaleLowerCase and toLocaleUpperCase 21589 21590 * kjs/string_object.h: Added toLocaleLowerCase and toLocaleUpperCase. 21591 * kjs/string_object.cpp: (StringProtoFuncImp::call): Made locale versions be synonmyms for the 21592 non-locale-specific versions. 21593 * kjs/string_object.lut.h: Regenerated. 21594 215952004-12-14 Richard Williamson <rjw@apple.com> 21596 21597 Pass URL of plugin view when call into JNI. 21598 21599 Reviewed by Chris. 21600 21601 * bindings/jni/jni_objc.mm: 21602 (KJS::Bindings::dispatchJNICall): 21603 216042004-12-13 Richard Williamson <rjw@apple.com> 21605 21606 Fixed <rdar://problem/3827799> repro. crash with IBM Rational ClearCase Web under Safari (Java/LiveConnect-related) 21607 21608 Add support for calling static Java methods from JavaScript. 21609 21610 Reviewed by Maciej. 21611 21612 * bindings/jni/jni_instance.cpp: 21613 (JavaInstance::invokeMethod): 21614 * bindings/jni/jni_runtime.cpp: 21615 (JavaMethod::JavaMethod): 21616 * bindings/jni/jni_runtime.h: 21617 (KJS::Bindings::JavaMethod::isStatic): 21618 * bindings/jni/jni_utility.cpp: 21619 (callJNIStaticMethod): 21620 (KJS::Bindings::callJNIBooleanMethod): 21621 (KJS::Bindings::callJNIStaticBooleanMethod): 21622 * bindings/jni/jni_utility.h: 21623 216242004-12-13 Richard Williamson <rjw@apple.com> 21625 21626 Fixed <rdar://problem/3887767> LiveConnect doesn't propagate Java exceptions back to JavaScript (prevents security suite from running) 21627 21628 Reviewed by John. 21629 21630 * bindings/jni/jni_instance.cpp: 21631 (JavaInstance::invokeMethod): 21632 * bindings/jni/jni_objc.mm: 21633 (KJS::Bindings::dispatchJNICall): 21634 * bindings/jni/jni_runtime.h: 21635 * bindings/jni/jni_utility.h: 21636 21637=== Safari-175 === 21638 216392004-12-07 Maciej Stachowiak <mjs@apple.com> 21640 21641 Reviewed by Darin. 21642 21643 <rdar://problem/3908017> REGRESSION (172-173): assertion in ObjectImp::construct trying to create JS error (24hourfitness.com) 21644 21645 The fix was to implement copy constructor and assignment operator, 21646 the ones that worked on the base class did not replace the 21647 defaults apparently! 21648 21649 * kjs/protect.h: 21650 (KJS::ProtectedValue::ProtectedValue): 21651 (KJS::ProtectedValue::operator=): 21652 (KJS::ProtectedObject::ProtectedObject): 21653 (KJS::ProtectedObject::operator=): 21654 21655 Also fixed a bug in the GC test mode that compares the results of 21656 the old collector and the new collector. 21657 21658 * kjs/value.cpp: 21659 (ValueImp::mark): 21660 21661=== Safari-173 === 21662 216632004-11-23 Richard Williamson <rjw@apple.com> 21664 21665 Fixed <rdar://problem/3890385> field and method cache incorrectly capped (c bindings) 21666 21667 Reviewed by Ken. 21668 21669 * bindings/c/c_class.cpp: 21670 (CClass::_commonInit): 21671 216722004-11-21 Maciej Stachowiak <mjs@apple.com> 21673 21674 Reviewed by Ken. 21675 21676 <rdar://problem/3889696> Enable conservative garbage collection for JavaScript 21677 21678 * kjs/collector.cpp: 21679 (KJS::Collector::Thread::Thread): 21680 (KJS::destroyRegisteredThread): 21681 (KJS::initializeRegisteredThreadKey): 21682 (KJS::Collector::registerThread): 21683 (KJS::Collector::markStackObjectsConservatively): 21684 (KJS::Collector::markCurrentThreadConservatively): 21685 (KJS::Collector::markOtherThreadConservatively): 21686 * kjs/collector.h: 21687 * kjs/internal.cpp: 21688 (lockInterpreter): 21689 * kjs/value.h: 21690 21691=== Safari-172 === 21692 216932004-11-15 Richard Williamson <rjw@apple.com> 21694 21695 Fixed <rdar://problem/3880561> Default string value of ObjC object in JS should be [obj description]. 21696 21697 Reviewed by Hyatt. 21698 21699 * bindings/objc/objc_instance.mm: 21700 (ObjcInstance::stringValue): 21701 * bindings/objc/objc_utility.h: 21702 * bindings/objc/objc_utility.mm: 21703 (KJS::Bindings::convertNSStringToString): 21704 (KJS::Bindings::convertObjcValueToValue): 21705 21706=== Safari-171 === 21707 217082004-11-09 Chris Blumenberg <cblu@apple.com> 21709 21710 Fixed: <rdar://problem/3872724> soft link against JavaVM to save ~2MB RSHRD 21711 21712 Reviewed by rjw. 21713 21714 * ChangeLog: 21715 * JavaScriptCore.pbproj/project.pbxproj: don't link against JavaVM 21716 * bindings/softlinking.c: Added. 21717 (loadFramework): new 21718 (getFunctionPointer): new 21719 (JNI_GetCreatedJavaVMs): load JavaVM if not already loaded, get _JNI_GetCreatedJavaVMs symbol if we don't already have it, call JNI_GetCreatedJavaVMs 21720 21721=== Safari-170 === 21722 217232004-11-04 Darin Adler <darin@apple.com> 21724 21725 Reviewed by Ken. 21726 21727 - fixed <rdar://problem/3865365> since -[WebScriptObject dealloc] does not call [super dealloc], the build will fail due to a warning 21728 - fixed behavior so that [[WebScriptObject alloc] initWithCoder:] doesn't leak WebUndefined instances 21729 and incidentally so that [[WebScriptObject alloc] init] returns the single shared instance rather 21730 than allocating a new one 21731 21732 * bindings/objc/WebScriptObject.mm: Removed some stray semicolons. 21733 (+[WebUndefined allocWithZone:]): Made this the common bottleneck that returns the single instance 21734 of WebUndefined, since it's the single method that normally allocates new instances. Calls super to 21735 actually allocate only the very first time it's called. 21736 (-[WebUndefined initWithCoder:]): Simplified to just return self (no reason to re-lookup the single 21737 shared instance since there can be only one). 21738 (-[WebUndefined copyWithZone:]): Ditto. 21739 (-[WebUndefined retain]): Ditto. 21740 (-[WebUndefined retainCount]): Use UINT_MAX constant here (matches usage in NSObject.m for retain count 21741 of class). 21742 (-[WebUndefined autorelease]): Simplified to just return self (see above). 21743 (-[WebUndefined copy]): No need to override this since it just turns around and calls copyWithZone:. 21744 (-[WebUndefined dealloc]): Added an assertion since this method should never be called. Also added 21745 a call to [super dealloc] after return; to make the new -Wdealloc-check compiler happy (fixing the 21746 bug mentioned above). 21747 (+[WebUndefined undefined]): Reimplemented; calls allocWithZone:NULL to get to the shared instance. 21748 No need to call init, since that's a no-op for this class. 21749 217502004-11-03 David Harrison <harrison@apple.com> 21751 21752 Reviewed by Darin. 21753 21754 Eliminate the use of a marker file to determine how to build. 21755 21756 * .cvsignore: 21757 * Makefile.am: 21758 217592004-11-01 Richard Williamson <rjw@apple.com> 21760 21761 Fixed <rdar://problem/3861469> Latest Real player crashes Safari on some sites. 21762 21763 Reviewed by Ken. 21764 21765 * bindings/c/c_instance.cpp: 21766 (CInstance::invokeMethod): 21767 (CInstance::invokeDefaultMethod): 21768 Initialize out parameters to void type. 21769 21770 * bindings/c/c_runtime.cpp: 21771 (CField::valueFromInstance): 21772 (CField::setValueToInstance): 21773 Initialize out parameters to void type. 21774 Also added additional checks to protect against classes that 21775 don't implement all functions. 21776 217772004-11-01 Richard Williamson <rjw@apple.com> 21778 21779 Fixed <rdar://problem/3861257> WebUndefined should be returned for undefined values 21780 21781 Reviewed by John. 21782 21783 * ChangeLog: 21784 * bindings/objc/WebScriptObject.mm: 21785 (+[WebScriptObject _convertValueToObjcValue:KJS::root:Bindings::]): 21786 Added additional conversion Undefined -> WebUndefined. 21787 * bindings/objc/objc_utility.mm: 21788 (KJS::Bindings::convertObjcValueToValue): 21789 Added additional conversion WebUndefined -> Undefined. 21790 217912004-11-01 Darin Adler <darin@apple.com> 21792 21793 - fixed <rdar://problem/3855573> Remove reference to "WebScriptMethods" from WebScriptObject.h comments 21794 21795 * bindings/objc/WebScriptObject.h: Removed unneeded #ifdef protection for multiple includes (since 21796 this is an Objective-C header and we use #import for those). Fixed comments as requested in the bug 21797 report to match the contents of the file. 21798 21799=== Safari-169 === 21800 21801=== Safari-168 === 21802 218032004-10-22 Ken Kocienda <kocienda@apple.com> 21804 21805 Reviewed by me 21806 21807 * JavaScriptCore.pbproj/project.pbxproj: 21808 Add GCC_ENABLE_OBJC_GC and GCC_FAST_OBJC_DISPATCH flags. 21809 21810=== Safari-167 === 21811 218122004-10-13 Richard Williamson <rjw@apple.com> 21813 21814 Moved boolean checks prior to NSNumber checks. booleans are 21815 NSNumbers. 21816 21817 Follow on to <rdar://problem/3821515> binding layer needs to convert NSNumber-bools to js type boolean not number. 21818 21819 Reviewed by John. 21820 21821 * bindings/objc/objc_utility.mm: 21822 (KJS::Bindings::convertObjcValueToValue): 21823 218242004-10-12 Richard Williamson <rjw@apple.com> 21825 21826 Fixed access to DOM object via WebScriptObject API. 21827 The execution context for DOM objects wasn't being found. 21828 <rdar://problem/3831372> The valueForKey method for @"offsetLeft" on a paragraph element causes a crash. 21829 21830 Reviewed by Chris. 21831 21832 * bindings/objc/WebScriptObject.mm: 21833 (_didExecute): 21834 (-[WebScriptObject KJS::Bindings::]): 21835 (-[WebScriptObject callWebScriptMethod:withArguments:]): 21836 (-[WebScriptObject evaluateWebScript:]): 21837 (-[WebScriptObject setValue:forKey:]): 21838 (-[WebScriptObject valueForKey:]): 21839 (-[WebScriptObject stringRepresentation]): 21840 * bindings/objc/WebScriptObjectPrivate.h: 21841 218422004-10-09 Darin Adler <darin@apple.com> 21843 21844 Reviewed by Kevin. 21845 21846 - fixed <rdar://problem/3804661> REGRESSION: JavaScriptCore framework now has two init routines 21847 21848 * bindings/NP_jsobject.cpp: Fixed unnecessarily-complex globals set up that was 21849 creating an init routine. 21850 21851 * kjs/ustring.cpp: Changed around the UString::Rep::empty construction to not 21852 require a global constructor that creates an init routine. 21853 218542004-10-09 Darin Adler <darin@apple.com> 21855 21856 Reviewed by Kevin. 21857 21858 - fixed <rdar://problem/3822618> REGRESSION (164-165): expedia.com's popup help doesn't work 21859 21860 * kjs/reference.cpp: (Reference::putValue): Change so that references not found in any object 21861 work with the window object of the page the function is in, not the page of the caller. This 21862 is what all other browsers do. This code was hidden before by the "everything is defined on 21863 window object" hack in WebCore. 21864 218652004-10-07 Richard Williamson <rjw@apple.com> 21866 21867 Added simple JavaScript call tracing. Very useful for 21868 debugging complex pages. 21869 21870 Tracing is only available in development builds and is 21871 enabled by: 21872 21873 (gdb) set traceJavaScript = 1 21874 21875 or programatically 21876 21877 setTraceJavaScript(true) 21878 21879 Function, args, and return values are printed to console. Very 21880 verbose. 21881 21882 Reviewed by Ken. 21883 21884 * kjs/function_object.cpp: 21885 (FunctionProtoFuncImp::call): 21886 * kjs/object.cpp: 21887 (KJS::Object::call): 21888 21889=== Safari-166 === 21890 218912004-10-05 Richard Williamson <rjw@apple.com> 21892 21893 Fixed <rdar://problem/3819234> NPN_SetException (and throwException:) isn't implemented 21894 21895 Reviewed by Chris. 21896 21897 * bindings/NP_jsobject.cpp: 21898 (_NPN_SetException): 21899 * bindings/npruntime.cpp: 21900 (_NPN_SetExceptionWithUTF8): 21901 * bindings/objc/WebScriptObject.mm: 21902 (+[WebScriptObject throwException:]): 21903 * kjs/internal.h: 21904 (KJS::InterpreterImp::context): 21905 219062004-10-05 Richard Williamson <rjw@apple.com> 21907 21908 Fixed <rdar://problem/3821515> binding layer needs to convert NSNumber-bools to js type boolean not number 21909 21910 Reviewed by Ken. 21911 21912 * bindings/objc/objc_utility.mm: 21913 (KJS::Bindings::convertObjcValueToValue): 21914 219152004-10-04 Darin Adler <darin@apple.com> 21916 21917 Reviewed by Ken. 21918 21919 - rolled in a fix the KDE folks did for the operations that generate HTML fragments 21920 21921 * kjs/string_object.cpp: (StringProtoFuncImp::call): Added quote marks to generated HTML. 21922 21923 - rolled out an old workaround we don't need any more 21924 21925 * JavaScriptCore.pbproj/project.pbxproj: Remove -Wno-long-double because the <math.h> issue that 21926 required it is no longer there. 21927 219282004-09-30 Richard Williamson <rjw@apple.com> 21929 21930 Fixed <rdar://problem/3821215> NPN hasMethod and hasProperty functions should take NPObjects, not NPClass 21931 21932 Reviewed by Chris. 21933 21934 * bindings/NP_jsobject.cpp: 21935 (_NPN_GetProperty): 21936 (_NPN_HasProperty): 21937 (_NPN_HasMethod): 21938 * bindings/c/c_class.cpp: 21939 (CClass::methodsNamed): 21940 (CClass::fieldNamed): 21941 * bindings/c/c_class.h: 21942 * bindings/c/c_instance.cpp: 21943 (CInstance::invokeMethod): 21944 * bindings/jni/jni_class.cpp: 21945 (JavaClass::methodsNamed): 21946 * bindings/jni/jni_class.h: 21947 * bindings/npruntime.h: 21948 * bindings/objc/objc_class.h: 21949 * bindings/objc/objc_class.mm: 21950 (ObjcClass::methodsNamed): 21951 * bindings/runtime.h: 21952 * bindings/runtime_object.cpp: 21953 (RuntimeObjectImp::get): 21954 (RuntimeObjectImp::hasProperty): 21955 219562004-09-29 Chris Blumenberg <cblu@apple.com> 21957 21958 Prepended underscores to NPN methods so that when the QT plug-in loads these symbols, it uses the non-underscore versions in WebKit. Without this, the QT plug-in was failing to load when launching Safari from the command-line. 21959 21960 Reviewed by rjw. 21961 21962 * JavaScriptCore.pbproj/project.pbxproj: 21963 * bindings/NP_jsobject.cpp: 21964 (_NPN_CreateScriptObject): 21965 (_NPN_InvokeDefault): 21966 (_NPN_Invoke): 21967 (_NPN_Evaluate): 21968 (_NPN_GetProperty): 21969 (_NPN_SetProperty): 21970 (_NPN_RemoveProperty): 21971 (_NPN_HasProperty): 21972 (_NPN_HasMethod): 21973 * bindings/c/c_class.cpp: 21974 (CClass::methodsNamed): 21975 (CClass::fieldNamed): 21976 * bindings/c/c_instance.cpp: 21977 (CInstance::CInstance): 21978 (CInstance::~CInstance): 21979 (CInstance::operator=): 21980 (CInstance::invokeMethod): 21981 (CInstance::invokeDefaultMethod): 21982 * bindings/c/c_runtime.cpp: 21983 * bindings/c/c_runtime.h: 21984 (KJS::Bindings::CField::name): 21985 (KJS::Bindings::CMethod::name): 21986 * bindings/npruntime.cpp: 21987 (_NPN_GetStringIdentifier): 21988 (_NPN_GetStringIdentifiers): 21989 (_NPN_GetIntIdentifier): 21990 (_NPN_IdentifierIsString): 21991 (_NPN_UTF8FromIdentifier): 21992 (_NPN_IntFromIdentifier): 21993 (NPN_InitializeVariantWithObject): 21994 (_NPN_ReleaseVariantValue): 21995 (_NPN_CreateObject): 21996 (_NPN_RetainObject): 21997 (_NPN_ReleaseObject): 21998 (_NPN_SetExceptionWithUTF8): 21999 (_NPN_SetException): 22000 220012004-09-26 Darin Adler <darin@apple.com> 22002 22003 * kjs/string_object.cpp: (StringProtoFuncImp::call): Remove strange use of high() and 22004 low() to get Unicode value of character, and just use unicode(). 22005 220062004-09-26 Darin Adler <darin@apple.com> 22007 22008 - refine charAt/charCodeAt fix slightly 22009 22010 * kjs/string_object.cpp: (StringProtoFuncImp::call): Treat undefined the same was as an 22011 omitted parameter, as we do everywhere else, and as other browsers do here. 22012 220132004-09-26 Darin Adler <darin@apple.com> 22014 22015 Reviewed by Kevin. 22016 22017 - fixed <rdar://problem/3816097> REGRESSION: mailblocks, and presumably many other pages, failing because variable not found 22018 22019 * kjs/internal.cpp: (InterpreterImp::evaluate): Process variable declarations before executing 22020 the program. We were doing this properly for functions, but not entire programs. 22021 22022 - fixed <rdar://problem/3814706> REGRESSION: text fields in mailblocks wizards do not accept keystrokes due to use of charCodeAt() 22023 22024 * kjs/string_object.cpp: (StringProtoFuncImp::call): Changed the implementation of charAt 22025 and charCodeAt to treat a missing parameter as an index of 0, rather than an invalid index. 22026 22027 * tests/mozilla/expected.html: Update for two tests that now pass with these changes. 22028 22029=== Safari-165 === 22030 22031=== Safari-164 === 22032 220332004-09-14 Richard Williamson <rjw@apple.com> 22034 22035 1. Add class parameter to object allocation function. This is somewhat redundant, given that 22036 the allocation function is in the class function vector, but people wanted to use the same 22037 allocation function for different classes. 22038 22039 2. Renamed NPN_Class to NPN_Invoke to match the name in the function vector. 22040 22041 3. Add support for a default function on an object. This is a feature that ActiveX supports, 22042 and will allow JavaScript code to be written that will look exactly the same for both ActiveX 22043 plugins and Netscape or WebKit plugins. There are implementations included for the 'C' and 22044 'Objective-C' bindings. 22045 22046 There bugs are covered by 22047 22048 <rdar://problem/3776343> Support for default functions in the JavaScript bindings 22049 <rdar://problem/3779186> NPN_Call needs to be renamed to NPN_Invoke 22050 <rdar://problem/3674754> Need to implement latest npruntime.h 22051 22052 Reviewed by John. 22053 22054 * bindings/NP_jsobject.cpp: 22055 (jsAllocate): 22056 (NPN_InvokeDefault): 22057 (NPN_Invoke): 22058 * bindings/c/c_class.cpp: 22059 * bindings/c/c_instance.cpp: 22060 (CInstance::CInstance): 22061 (CInstance::operator=): 22062 (CInstance::invokeMethod): 22063 (CInstance::invokeDefaultMethod): 22064 * bindings/c/c_instance.h: 22065 * bindings/c/c_runtime.cpp: 22066 * bindings/c/c_runtime.h: 22067 * bindings/jni/jni_instance.cpp: 22068 (JavaInstance::invokeDefaultMethod): 22069 * bindings/jni/jni_instance.h: 22070 * bindings/npruntime.cpp: 22071 (NPN_CreateObject): 22072 * bindings/npruntime.h: 22073 * bindings/objc/WebScriptObject.h: 22074 * bindings/objc/objc_class.mm: 22075 (ObjcClass::fallbackObject): 22076 * bindings/objc/objc_instance.h: 22077 * bindings/objc/objc_instance.mm: 22078 (ObjcInstance::invokeDefaultMethod): 22079 * bindings/objc/objc_runtime.h: 22080 * bindings/objc/objc_runtime.mm: 22081 (ObjcFallbackObjectImp::ObjcFallbackObjectImp): 22082 (ObjcFallbackObjectImp::get): 22083 (ObjcFallbackObjectImp::put): 22084 (ObjcFallbackObjectImp::canPut): 22085 (ObjcFallbackObjectImp::implementsCall): 22086 (ObjcFallbackObjectImp::call): 22087 (ObjcFallbackObjectImp::hasProperty): 22088 (ObjcFallbackObjectImp::deleteProperty): 22089 (ObjcFallbackObjectImp::defaultValue): 22090 * bindings/runtime.h: 22091 (KJS::Bindings::Class::fallbackObject): 22092 (KJS::Bindings::Instance::getValueOfUndefinedField): 22093 (KJS::Bindings::Instance::setValueOfUndefinedField): 22094 (KJS::Bindings::Instance::valueOf): 22095 * bindings/runtime_object.cpp: 22096 (RuntimeObjectImp::implementsCall): 22097 (RuntimeObjectImp::call): 22098 * bindings/runtime_object.h: 22099 221002004-09-13 Maciej Stachowiak <mjs@apple.com> 22101 22102 Reviewed by Darin. 22103 22104 <rdar://problem/3794735> Gmail- sending a very long message with Safari is so slow it seems like a hang 22105 22106 * kjs/string_object.cpp: 22107 (StringProtoFuncImp::call): Replaced implementation of replace() 22108 method with function below... 22109 (replace): In order to avoid excessive allocation and copying, 22110 figure out the ranges of the original string and replacement 22111 strings to be assembled, instead of constantly creating new 22112 strings at each substitution. The old behavior is basically O(N^2) 22113 for a global replace on a pattern that matches many places in the 22114 string. 22115 (regExpIsGlobal): Helper function for the above. 22116 (expandSourceRanges): ditto 22117 (pushSourceRange): ditto 22118 (expandReplacements): ditto 22119 (pushReplacement): ditto 22120 * kjs/ustring.cpp: 22121 (KJS::UString::spliceSubstringsWithSeparators): New method that 22122 pieces together substring ranges of this string together with 22123 specified separators, all at one go. 22124 * kjs/ustring.h: 22125 (KJS::UString::Range::Range): Added new helper class to represent 22126 substring choices. 22127 221282004-09-14 Maciej Stachowiak <mjs@apple.com> 22129 22130 Reviewed by Darin. 22131 22132 - fixed <rdar://problem/3800315> encode-URI-test layout test is failing 22133 22134 * kjs/function.cpp: 22135 (KJS::GlobalFuncImp::call): Make sure to escape null 22136 characters. This is a bug in the new code that made part of the 22137 test fail. 22138 221392004-09-13 Darin Adler <darin@apple.com> 22140 22141 Reviewed by Kevin and Maciej. 22142 22143 - new function to support fix for DIG bug in WebCore 22144 22145 * kjs/scope_chain.h: Added new push function that pushes another entire scope chain. 22146 * kjs/scope_chain.cpp: (KJS::ScopeChain::push): Ditto. 22147 221482004-09-12 Darin Adler <darin@apple.com> 22149 22150 * tests/mozilla/expected.html: Updated test results for 3 more tests that pass with the new version 22151 of escape and unescape. 22152 221532004-09-12 Darin Adler <darin@apple.com> 22154 22155 Reviewed by Maciej. 22156 22157 - fixed <rdar://problem/3798209> any non-ASCII characters are garbled in the result of toLocaleString 22158 22159 * kjs/date_object.cpp: 22160 (formatLocaleDate): Replaced two old functions that used LongDateTime with this one new function that 22161 uses CFDateFormatter. 22162 (DateProtoFuncImp::call): Call the new formatLocaleDate instead of both formatLocaleDate and formatLocaleTime. 22163 221642004-09-09 Maciej Stachowiak <mjs@apple.com> 22165 22166 Reviewed by Richard. 22167 22168 <rdar://problem/3493140> REGRESSION (85-100): cedille displays %-escaped in JavaScript message at hotmail.com 22169 22170 * kjs/function.cpp: 22171 (KJS::GlobalFuncImp::call): Replace our escape() and unescape() implementations with 22172 ones from KDE KJS, which have the proper latin-1 behavior to match Win IE. 22173 * kjs/lexer.cpp: 22174 (Lexer::isHexDigit): Made static and non-const. 22175 * kjs/lexer.h: 22176 22177=== Safari-163 === 22178 221792004-09-06 Darin Adler <darin@apple.com> 22180 22181 * JavaScriptCore.pbproj/project.pbxproj: Bump MACOSX_DEPLOYMENT_TARGET to 10.3. 22182 22183=== Safari-162 === 22184 221852004-09-01 Richard Williamson <rjw@apple.com> 22186 22187 Add pid to exception messages (to help debug dashboard clients). 22188 22189 Reviewed by Chris. 22190 22191 * kjs/interpreter.cpp: 22192 (Interpreter::evaluate): 22193 22194=== Safari-161 === 22195 221962004-08-20 Richard Williamson <rjw@apple.com> 22197 22198 Implemented new JNI abstraction. We no longer invoke Java methods 22199 directly with JNI, rather we call into the plugin. This allows the 22200 plugin to dispatch the call to the appropriate VM thread. This 22201 change should (will?) fix a whole class of threading related problems with 22202 the Java VM. 22203 22204 Reviewed by Hyatt. 22205 22206 * JavaScriptCore.pbproj/project.pbxproj: 22207 * bindings/c/c_instance.h: 22208 (KJS::Bindings::CInstance::setExecutionContext): 22209 (KJS::Bindings::CInstance::executionContext): 22210 * bindings/jni/jni_instance.cpp: 22211 (JavaInstance::JavaInstance): 22212 (JavaInstance::invokeMethod): 22213 (JavaInstance::setExecutionContext): 22214 (JavaInstance::executionContext): 22215 * bindings/jni/jni_instance.h: 22216 * bindings/jni/jni_jsobject.cpp: 22217 (JSObject::convertJObjectToValue): 22218 * bindings/jni/jni_runtime.cpp: 22219 (JavaField::JavaField): 22220 (JavaArray::convertJObjectToArray): 22221 (JavaField::valueFromInstance): 22222 (JavaArray::JavaArray): 22223 (JavaArray::valueAt): 22224 * bindings/jni/jni_runtime.h: 22225 (KJS::Bindings::JavaArray::operator=): 22226 (KJS::Bindings::JavaArray::executionContext): 22227 * bindings/jni/jni_utility.h: 22228 * bindings/objc/objc_instance.h: 22229 (KJS::Bindings::ObjcInstance::setExecutionContext): 22230 (KJS::Bindings::ObjcInstance::executionContext): 22231 * bindings/runtime.cpp: 22232 (Instance::createBindingForLanguageInstance): 22233 * bindings/runtime.h: 22234 * bindings/runtime_root.h: 22235 (KJS::Bindings::RootObject::nativeHandle): 22236 22237=== Safari-158 === 22238 222392004-08-19 Vicki Murley <vicki@apple.com> 22240 22241 Reviewed by John. 22242 22243 * kjs/property_map.cpp: 22244 (KJS::PropertyMap::put): initialize deletedElementIndex to zero, to make the compiler happy 22245 222462004-08-17 Darin Adler <darin@apple.com> 22247 22248 Reviewed by Adele. 22249 22250 - fixed <rdar://problem/3746676> SAP WebDynpro app hangs inside JavaScript property map hash table code (deleted sentinel problem) 22251 22252 * kjs/property_map.h: Added some private functions. 22253 * kjs/property_map.cpp: 22254 (KJS::PropertyMap::clear): Set sentinelCount to 0. 22255 (KJS::PropertyMap::put): Complete search for the element before choosing to use the deleted-element sentinel. 22256 Also keep sentinel count up to date when we destroy a sentinel by overwriting with a new added element. 22257 (KJS::PropertyMap::expand): Added. Calls rehash with a size 2x the old size, or 16. 22258 (KJS::PropertyMap::rehash): Added. Refactored the rehash code into a separate function. 22259 (KJS::PropertyMap::remove): Add one to sentinelCount, and rehash if 1/4 or more of the elements are 22260 deleted-element sentinels. 22261 (KJS::PropertyMap::checkConsistency): Check the sentinelCount. 22262 222632004-08-16 Maciej Stachowiak <mjs@apple.com> 22264 22265 Code change by Eric Albert, reviewd by me. 22266 22267 <rdar://problem/3571960> washingtonpost.com claims I don't have cookies enabled and won't let me read articles 22268 22269 * kjs/date_object.cpp: 22270 (timetUsingCF): Clamp time to LONG_MAX (getting rid of time_t 22271 entirely would be even better, but is not required to fix this bug. 22272 22273=== Safari-157 === 22274 222752004-08-16 Richard Williamson <rjw@apple.com> 22276 22277 Fixed <rdar://problem/3581092> cash in KJS::Bindings::JSObject::eval at tcvetantcvetkov.com 22278 22279 Adds bullet proofing to protect against evaluation of bogus JS in all the flavors of bindings (Java, C, and ObjC). 22280 22281 Reviewed by Chris. 22282 22283 * bindings/NP_jsobject.cpp: 22284 (NPN_Evaluate): 22285 * bindings/jni/jni_jsobject.cpp: 22286 (JSObject::eval): 22287 * bindings/objc/WebScriptObject.mm: 22288 (-[WebScriptObject evaluateWebScript:]): 22289 222902004-08-15 Richard Williamson <rjw@apple.com> 22291 22292 More updates to np headers. Implemented new NPN functions. 22293 22294 Reviewed by Darin. 22295 22296 * bindings/NP_jsobject.cpp: 22297 (NPN_HasProperty): 22298 (NPN_HasMethod): 22299 * bindings/npapi.h: 22300 * bindings/npruntime.h: 22301 223022004-08-13 Darin Adler <darin@apple.com> 22303 22304 - fix build so we can compile again 22305 22306 * bindings/npapi.h: Added. Richard forgot to check this in. The one I'm checking in here 22307 is good enough so that we can compile, but it's only a stopgap measure, because I think 22308 Richard has a newer one he wants to check in. 22309 223102004-08-12 Richard Williamson <rjw@apple.com> 22311 22312 Bring npruntime.h and friends closer to compliance with 22313 latest spec. 22314 22315 Reviewed by Maciej. 22316 22317 * JavaScriptCore.pbproj/project.pbxproj: 22318 * bindings/NP_jsobject.cpp: 22319 (jsAllocate): 22320 (_NPN_CreateScriptObject): 22321 (NPN_Call): 22322 (NPN_Evaluate): 22323 (NPN_GetProperty): 22324 (NPN_SetProperty): 22325 (NPN_RemoveProperty): 22326 * bindings/NP_jsobject.h: 22327 * bindings/c/c_instance.cpp: 22328 (CInstance::invokeMethod): 22329 * bindings/c/c_utility.cpp: 22330 (convertNPVariantToValue): 22331 * bindings/npruntime.cpp: 22332 (NPN_IdentifierIsString): 22333 (NPN_VariantIsVoid): 22334 (NPN_VariantIsNull): 22335 (NPN_VariantIsUndefined): 22336 (NPN_VariantIsBool): 22337 (NPN_VariantIsInt32): 22338 (NPN_VariantIsDouble): 22339 (NPN_VariantIsString): 22340 (NPN_VariantIsObject): 22341 (NPN_VariantToBool): 22342 (NPN_VariantToString): 22343 (NPN_VariantToInt32): 22344 (NPN_VariantToDouble): 22345 (NPN_VariantToObject): 22346 (NPN_InitializeVariantAsVoid): 22347 (NPN_InitializeVariantAsNull): 22348 (NPN_InitializeVariantAsUndefined): 22349 (NPN_InitializeVariantWithBool): 22350 (NPN_InitializeVariantWithInt32): 22351 (NPN_InitializeVariantWithDouble): 22352 (NPN_InitializeVariantWithString): 22353 (NPN_InitializeVariantWithStringCopy): 22354 (NPN_InitializeVariantWithObject): 22355 (NPN_InitializeVariantWithVariant): 22356 (NPN_ReleaseVariantValue): 22357 (NPN_CreateObject): 22358 * bindings/npruntime.h: 22359 (_NPString::): 22360 (_NPString::_NPVariant::): 22361 * bindings/npruntime_priv.h: Added. 22362 223632004-08-12 Darin Adler <darin@apple.com> 22364 22365 Reviewed by Adele. 22366 22367 - fixed 3 problems with parse functions that I just wrote, fixing 3 more Mozilla JavaScript tests 22368 22369 * kjs/function.cpp: 22370 (KJS::parseDigit): Fix typo, 'Z' instead of 'z', that prevented lowercase hex digits from working. 22371 (KJS::parseInt): Add octal support. Specification says it's optional, but I guess not. 22372 (KJS::parseFloat): Fix check for "0x" in parseFloat to return 0 rather than NaN. Also add code 22373 to skip leading "+" or "-". 22374 22375=== Safari-156 === 22376 223772004-08-12 Darin Adler <darin@apple.com> 22378 22379 Reviewed by Ken. 22380 22381 - fixed 43 Mozilla JavaScript tests 22382 22383 * kjs/date_object.h: Change parseDate and timeClip to take and return doubles. 22384 * kjs/date_object.cpp: 22385 (DateObjectImp::construct): Change to use a timeClip function that takes and returns a double rather 22386 than constructing a number object to pass to it. 22387 (DateObjectFuncImp::call): Change to use a parseDate function that returns a double. 22388 (KJS::parseDate): Change to return a double instead of creating the Number object here. 22389 (KJS::timeClip): Implement this as specified in the language standard. 22390 22391 * kjs/error_object.cpp: (NativeErrorImp::NativeErrorImp): Set the DontDelete, ReadOnly, and DontEnum 22392 flags on the prototype property. 22393 22394 * kjs/function.cpp: 22395 (KJS::FunctionImp::get): Return null rather than undefined for arguments when the function is not 22396 currently in scope. 22397 (KJS::isStrWhiteSpace): Added. Matches specification for StrWhiteSpace. Could move it to some utility 22398 file later. 22399 (KJS::parseDigit): Added. Helper function for parseInt. 22400 (KJS::parseInt): Added. Integer parser that puts result in a double so we're not limited to what 22401 strtoll can handle. Also matches standard more closely. 22402 (KJS::parseFloat): Added. Handles "0x" properly and passes flag to make empty string turn into NaN 22403 instead of 0. 22404 (KJS::GlobalFuncImp::call): Use the new parseInt and parseFloat. 22405 22406 * kjs/function_object.cpp: (FunctionPrototypeImp::FunctionPrototypeImp): Add a length property. 22407 22408 * kjs/lexer.h: Added error flag and sawError() function for detecting errors. 22409 * kjs/lexer.cpp: 22410 (Lexer::setCode): Clear error state. 22411 (Lexer::lex): Set error state if the lexer encounters an error 22412 22413 * kjs/internal.cpp: 22414 (NumberImp::toString): Roll in change from KDE version to special case 0 so we handle -0 correctly. 22415 (Parser::parse): Use new lexer error method so those errors are treated like parser errors. 22416 22417 * kjs/math_object.cpp: (MathFuncImp::call): Change min and max to treat -0 as less than +0. 22418 Change round to round values between -0.5 and -0 to -0 instead of +0. 22419 22420 * kjs/nodes.h: Add evaluateReference function to GroupNode. 22421 * kjs/nodes.cpp: (GroupNode::evaluateReference): Pass references through groups (parenthesized 22422 expressions) properly so that expressions like "delete (x.y)" work. Before, the parentheses 22423 would change x.y into a value that can't be deleted as a side effect. 22424 22425 * kjs/string_object.cpp: Change parameter count for indexOf and lastIndexOf from 2 to 1 to match 22426 the specification. 22427 22428 * kjs/testkjs.cpp: Rolled in changes from KDE to add a "quit" function to the test tool and 22429 get rid of the fixed size limit for code. 22430 22431 * kjs/ustring.cpp: (KJS::UString::substr): Added optimized case for substr(0, length) so it just 22432 returns the string without creating a new Rep, since I'm using substr in a place where it will 22433 often be passed a 0. 22434 22435 * tests/mozilla/ecma/String/15.5.4.11-1.js: Fixed one wrong entry in the Unicode table I added to 22436 the other day that was making a couple tests fail. 22437 * tests/mozilla/ecma/String/15.5.4.12-1.js: Ditto. 22438 * tests/mozilla/ecma/String/15.5.4.12-2.js: Ditto. 22439 * tests/mozilla/ecma/String/15.5.4.12-3.js: Ditto. 22440 * tests/mozilla/ecma/String/15.5.4.12-4.js: Ditto. 22441 * tests/mozilla/ecma/String/15.5.4.12-5.js: Ditto. 22442 22443 * kjs/string_object.lut.h: Regenerated. 22444 224452004-08-11 Darin Adler <darin@apple.com> 22446 22447 - fixed a tiny problem with the UTF-16 PCRE check-in 22448 22449 * pcre/maketables.c: (pcre_maketables): Fix mistake in table-generating code that sometimes caused 22450 the ctype_meta flag to get set in items that should not have it. 22451 22452 * pcre/chartables.c: Regenerated. 22453 224542004-08-10 Richard Williamson <rjw@apple.com> 22455 22456 Fixed <rdar://problem/3674747> Need to implement invokeUndefinedMethodFromWebScript:withArguments: 22457 22458 The following WebScripting methods are now supported on bound 22459 objects: 22460 22461 - (id)invokeUndefinedMethodFromWebScript:(NSString *)name withArguments:(NSArray *)args; 22462 - (void)setValue:(id)value forUndefinedKey:(NSString *)key 22463 - (id)valueForUndefinedKey:(NSString *)key 22464 22465 Reviewed by Chris. 22466 22467 * bindings/c/c_class.cpp: 22468 (CClass::fieldNamed): 22469 * bindings/c/c_class.h: 22470 * bindings/jni/jni_class.cpp: 22471 (JavaClass::fieldNamed): 22472 * bindings/jni/jni_class.h: 22473 * bindings/objc/objc_class.h: 22474 (KJS::Bindings::ObjcClass::isa): 22475 * bindings/objc/objc_class.mm: 22476 (ObjcClass::methodsNamed): 22477 (ObjcClass::fieldNamed): 22478 (ObjcClass::fallbackObject): 22479 * bindings/objc/objc_instance.h: 22480 * bindings/objc/objc_instance.mm: 22481 (ObjcInstance::invokeMethod): 22482 (ObjcInstance::setValueOfField): 22483 (ObjcInstance::setValueOfUndefinedField): 22484 (ObjcInstance::getValueOfField): 22485 (ObjcInstance::getValueOfUndefinedField): 22486 * bindings/objc/objc_runtime.h: 22487 (KJS::Bindings::ObjcField::~ObjcField): 22488 (KJS::Bindings::ObjcField::ObjcField): 22489 (KJS::Bindings::ObjcField::operator=): 22490 (KJS::Bindings::FallbackObjectImp::classInfo): 22491 * bindings/objc/objc_runtime.mm: 22492 (ObjcField::ObjcField): 22493 (ObjcField::name): 22494 (ObjcField::type): 22495 (ObjcField::valueFromInstance): 22496 (ObjcField::setValueToInstance): 22497 (FallbackObjectImp::FallbackObjectImp): 22498 (FallbackObjectImp::get): 22499 (FallbackObjectImp::put): 22500 (FallbackObjectImp::canPut): 22501 (FallbackObjectImp::implementsCall): 22502 (FallbackObjectImp::call): 22503 (FallbackObjectImp::hasProperty): 22504 (FallbackObjectImp::deleteProperty): 22505 (FallbackObjectImp::defaultValue): 22506 * bindings/runtime.h: 22507 (KJS::Bindings::Class::fallbackObject): 22508 (KJS::Bindings::Instance::getValueOfUndefinedField): 22509 (KJS::Bindings::Instance::setValueOfUndefinedField): 22510 * bindings/runtime_object.cpp: 22511 (RuntimeObjectImp::get): 22512 (RuntimeObjectImp::put): 22513 (RuntimeObjectImp::canPut): 22514 (RuntimeObjectImp::hasProperty): 22515 * bindings/testbindings.mm: 22516 (-[MyFirstInterface valueForUndefinedKey:]): 22517 (-[MyFirstInterface setValue:forUndefinedKey:]): 22518 225192004-08-10 Darin Adler <darin@apple.com> 22520 22521 Reviewed by Dave. 22522 22523 - switch PCRE to do UTF-16 directly instead of converting to/from UTF-8 for speed 22524 22525 * pcre/pcre.h: Added PCRE_UTF16 switch, set to 1. Added pcre_char typedef, which is char 22526 or uint16_t depending on the mode, and used appropriate in the 7 public functions 22527 that need to use it. 22528 * pcre/pcre.c: Add UTF-16 support to all functions. 22529 * pcre/study.c: Ditto. 22530 22531 * pcre/internal.h: Added ichar typedef, which is unsigned char or uint16_t depending on 22532 the mode. Changed declarations to use symbolic constants and typedefs so we size 22533 things to ichar when needed. 22534 22535 * pcre/maketables.c: (pcre_maketables): Change code to make tables that are 22536 sized to 16-bit characters instead of 8-bit. 22537 22538 * pcre/get.c: 22539 (pcre_copy_substring): Use pcre_char instead of char. 22540 (pcre_get_substring_list): Ditto. 22541 (pcre_free_substring_list): Ditto. 22542 (pcre_get_substring): Ditto. 22543 (pcre_free_substring): Ditto. 22544 22545 * pcre/dftables.c: (main): Used a bit more const, and use ICHAR sizes instead 22546 of hard-coding 8-bit table sizes. 22547 22548 * pcre/chartables.c: Regenerated. 22549 22550 * kjs/ustring.h: Remove functions that convert UTF-16 to/from UTF-8 offsets. 22551 * kjs/ustring.cpp: Change the shared empty string to have a unicode pointer that 22552 is not null. The null string still has a null pointer. This prevents us from 22553 passing a null through to the regular expression engine (which results in a null 22554 error even when the string length is 0). 22555 22556 * kjs/regexp.cpp: 22557 (KJS::RegExp::RegExp): Null-terminate the pattern and pass it. 22558 (KJS::RegExp::match): Use the 16-bit string directly, no need to convert to UTF-8. 22559 225602004-08-09 Darin Adler <darin@apple.com> 22561 22562 Reviewed by Maciej. 22563 22564 - fixed 28 Mozilla JavaScript tests 22565 22566 * kjs/array_object.cpp: (ArrayProtoFuncImp::call): Check for undefined rather than 22567 checking the number of arguments for the join method. 22568 22569 * kjs/lexer.cpp: (Lexer::lex): Parse hexadecimal and octal constants in doubles rather 22570 than integers, so we aren't limited to 32 bits. 22571 22572 * kjs/math_object.cpp: (MathFuncImp::call): Get rid of many unneeded special cases in 22573 the implementation of the pow operation. Also simplied a case that was handling positive 22574 and negative infinity separately. 22575 22576 * kjs/nodes.cpp: (ShiftNode::evaluate): Keep the result of shifts in a double instead of 22577 putting them in a long, so that unsigned shift will work properly. 22578 22579 * kjs/number_object.cpp: Add the DontDelete and ReadOnly flags to the numeric constants. 22580 22581 * kjs/operations.cpp: 22582 (KJS::isPosInf): Added an implementation inside APPLE_CHANGES that does not depend on the 22583 sign of isinf; our isinf function returns +1 even for negative infinity. 22584 (KJS::isNegInf): And again. 22585 (KJS::relation): Put in a nice simple implementation of comparison inside APPLE_CHANGES. 22586 Our floating point already handles the various infinity cases correctly. 22587 22588 * kjs/regexp_object.cpp: 22589 (RegExpProtoFuncImp::call): Add missing return before Null() in Exec method. 22590 (RegExpObjectImp::arrayOfMatches): Put undefined rather than an empty string into the 22591 array in cases where we did not match. 22592 (RegExpObjectImp::construct): Set the DontDelete, ReadOnly, and DontEnum flags for 22593 "global", "ignoreCase", "multiline", and "source". 22594 22595 * kjs/string_object.cpp: (StringProtoFuncImp::call): For the match method, turn a null 22596 string into undefined rather than an empty string. For the slice method, handle an 22597 undefined parameter for the limit properly as decribed in the specification, and add 22598 the limit to one case that didn't have the limit at all. For the methods that generate 22599 HTML strings, use lowercase tags instead of uppercase. 22600 22601 * kjs/ustring.cpp: 22602 (KJS::UChar::toLower): Use u_tolower from the ICU library. 22603 (KJS::UChar::toUpper): Use u_toupper from the ICU library. 22604 (KJS::UString::append): Fix some math that caused a buffer overflow. 22605 (KJS::convertUTF16OffsetsToUTF8Offsets): Ignore negative numbers (-1 is used as a special 22606 flag) rather than converting them all to 0. 22607 (KJS::convertUTF8OffsetsToUTF16Offsets): Ditto. 22608 22609 * tests/mozilla/jsDriver.pl: Fixed the relative links to point to our actual test files. 22610 22611 * tests/mozilla/ecma/String/15.5.4.11-1.js: Fixed the Unicode table in this test to match 22612 the Unicode specification in a few cases where it was wrong before. 22613 * tests/mozilla/ecma/String/15.5.4.11-2.js: Ditto. 22614 * tests/mozilla/ecma/String/15.5.4.11-3.js: Ditto. 22615 * tests/mozilla/ecma/String/15.5.4.11-5.js: Ditto. 22616 * tests/mozilla/ecma/String/15.5.4.11-6.js: Ditto. 22617 * tests/mozilla/ecma/String/15.5.4.12-1.js: Ditto. 22618 * tests/mozilla/ecma/String/15.5.4.12-2.js: Ditto. 22619 * tests/mozilla/ecma/String/15.5.4.12-3.js: Ditto. 22620 * tests/mozilla/ecma/String/15.5.4.12-4.js: Ditto. 22621 * tests/mozilla/ecma/String/15.5.4.12-5.js: Ditto. 22622 22623 * JavaScriptCore.pbproj/project.pbxproj: Link to libicu. 22624 22625 * kjs/number_object.lut.h: Regenerated. 22626 226272004-08-09 Darin Adler <darin@apple.com> 22628 22629 Reviewed by Maciej. 22630 22631 - fixed <rdar://problem/3753467> REGRESSION (137-138): reproducible buffer overrun in UString manipulation code 22632 22633 * kjs/ustring.cpp: (KJS::UString::append): Fix incorrect size computation. Without it 22634 we get a buffer overflow. 22635 22636=== Safari-155 === 22637 226382004-08-05 Richard Williamson <rjw@apple.com> 22639 22640 Fixed part of 3674747. The QT guys need this for feature freeze. 22641 22642 This patch implements support for the 22643 22644 - (id)invokeUndefinedMethodFromWebScript:(NSString *)name withArguments:(NSArray *)args 22645 22646 method of objects bound to JavaScript. 22647 22648 Reviewed by John. 22649 22650 * ChangeLog: 22651 * bindings/objc/objc_class.mm: 22652 (ObjcClass::methodsNamed): 22653 (ObjcClass::fieldNamed): 22654 * bindings/objc/objc_instance.mm: 22655 (ObjcInstance::invokeMethod): 22656 * bindings/objc/objc_runtime.h: 22657 (KJS::Bindings::ObjcMethod::~ObjcMethod): 22658 (KJS::Bindings::ObjcMethod::isFallbackMethod): 22659 (KJS::Bindings::ObjcMethod::javaScriptName): 22660 * bindings/objc/objc_runtime.mm: 22661 (ObjcMethod::ObjcMethod): 22662 (ObjcMethod::getMethodSignature): 22663 (ObjcMethod::setJavaScriptName): 22664 * bindings/testbindings.mm: 22665 226662004-08-04 Vicki Murley <vicki@apple.com> 22667 22668 Reviewed by mjs. 22669 22670 - fix <rdar://problem/3649789> SAP WebGUI has problems loading first page because of parse error 22671 22672 * kjs/lexer.cpp: 22673 (Lexer::lex): if the current character is a '\' and the next character is a line terminator, 22674 go to the next line and continue parsing the string (instead of failing). This matches 22675 behavior in Mac IE and Mozilla. 22676 226772004-08-03 Kevin Decker <kdecker@apple.com> 22678 22679 Reviewed by Darin. 22680 22681 Rolled in changes from the latest KJS sources that support additional 22682 Number.prototype functions. 22683 22684 Specifically this patch covers the follow parts of the ECMA 3 spec: 22685 15.7.4.5, 15.7.4.6, and 15.7.4.7 22686 22687 Fixes: 22688 <rdar://problem/3663716> missing Number.toFixed (and toPrecision, toExponential) 22689 <rdar://problem/3749492> missing Number.toPrecision prototype implementation 22690 <rdar://problem/3749591> missing Number.toExponential prototype implementation 22691 22692 * kjs/identifier.h: Added toFixed, toPrecision, and toExponential to the 22693 list of supported identifiers (a macro). 22694 * kjs/number_object.cpp: Implemented support for toFixed(), toPrecision(), 22695 and toExponential(). 22696 (NumberPrototypeImp::NumberPrototypeImp): 22697 (NumberProtoFuncImp::call): 22698 * kjs/number_object.h: Added property names for toFixed, toPrecision, 22699 and toExponential. 22700 (KJS::NumberProtoFuncImp::): 22701 * tests/mozilla/expected.html: Update results. 22702 227032004-08-03 Darin Adler <darin@apple.com> 22704 22705 Reviewed by Ken. 22706 22707 - added support for copying RegExp objects so 7 more Mozilla regexp tests pass 22708 22709 * kjs/regexp_object.cpp: (RegExpObjectImp::construct): Check for case where 22710 we are supposed to just copy the regular expression object, and do so. 22711 Also tighten up arguments check to handle case where an actual "undefined" 22712 is passed rather than just omitting an argument. 22713 22714 * tests/mozilla/expected.html: Update results. 22715 227162004-08-02 Darin Adler <darin@apple.com> 22717 22718 * tests/mozilla/.cvsignore: Added. 22719 * tests/mozilla/expected.html: Update results. 22720 227212004-08-02 Darin Adler <darin@apple.com> 22722 22723 Reviewed by Ken. 22724 22725 - fixed RegExp.toString so 3 more Mozilla regexp tests pass 22726 22727 * kjs/regexp_object.cpp: (RegExpProtoFuncImp::call): 22728 Append the flags here so more tests paseed. 22729 227302004-08-02 Darin Adler <darin@apple.com> 22731 22732 Reviewed by Ken. 22733 22734 - fixed a couple things making 5 Mozilla regexp tests pass 22735 22736 * kjs/regexp_object.cpp: (RegExpProtoFuncImp::call): Implement toString 22737 for the prototype. 22738 (RegExpObjectImp::construct): Fix bug where the string "undefined" would 22739 be used as the flags string when no parameter was passed. 22740 22741 * kjs/regexp_object.h: (KJS::RegExpPrototypeImp::classInfo): 22742 Added a class info object for RegExp prototype so it can return 22743 a string instead of raising an exception when converting to a string. 22744 22745 * tests/mozilla/expected.html: Update results. 22746 227472004-08-02 Darin Adler <darin@apple.com> 22748 22749 Reviewed by Kevin. 22750 22751 - fix crashes in mozilla tests due to mishandling NaN 22752 22753 * kjs/array_object.cpp: (ArrayProtoFuncImp::call): Rerranged range checks after 22754 calls to toInteger so that NaN will get turned into something that fits in an integer. 22755 These were the ones John already fixed, but his fix used isnan and the new fix is 22756 more efficient. 22757 22758 * kjs/number_object.cpp: (NumberProtoFuncImp::call): Rearranged radix range checks 22759 after a call to toInteger to handle NaN properly. Also removed separate check 22760 for undefined that's not needed. 22761 22762 * kjs/string_object.cpp: (StringProtoFuncImp::call): More of the same kinds of changes 22763 as in the above two files, but for a lot more functions. Also changed one place with 22764 an explicit check for undefined to instead just check isNaN. 22765 22766 * tests/mozilla/run-mozilla-tests: Changed to invoke jst using $SYMROOTS for people 22767 like me who don't keep $SYMROOTS in their $PATH. 22768 22769=== Safari-154 === 22770 22771=== Safari-153 === 22772 227732004-07-26 Kevin Decker <kdecker@apple.com> 22774 22775 Changes done by Darin, reviewed by Kevin. 22776 22777 - changed testkjs to build in Xcode rather than from Makefile 22778 22779 * .cvsignore: Removed obsolete files from this list. 22780 * Makefile.am: Removed code to build testkjs; we do this in Xcode now. 22781 Changed to build target "All" rather than default target. This makes us 22782 build the testkjs test tool. 22783 * dummy.cpp: Removed. 22784 * kjs/.cvsignore: Removed obsolete files from this list, including 22785 the testkjs tool, which is now built in the symroots directory. 22786 * kjs/testkjs.cpp: Added copyright notice that was missing, since we have 22787 changed this file. Also this has the nice side effect of causing the tool 22788 to be rebuilt in the new location even if there are no other changes in 22789 your tree when you check this out. 22790 * tests/mozilla/run-mozilla-tests: Invoke perl explicitly so this works 22791 without setting the execute bit on jsDriver.pl. 22792 227932004-07-22 Kevin Decker <kdecker@apple.com> 22794 22795 Reviewed by Darin 22796 22797 Fixed <rdar://problem/3682340> (error console does not include source urls or line numbers of event exceptions). 22798 22799 * kjs/function_object.cpp: 22800 (FunctionObjectImp::construct): 22801 * kjs/function_object.h: 22802 * kjs/object.cpp: 22803 (KJS::ObjectImp::construct): 22804 * kjs/object.h: 22805 (KJS::Object::construct): 22806 228072004-07-21 Darin Adler <darin@apple.com> 22808 22809 * bindings/npruntime.h: Fixed typo. 22810 228112004-07-19 John Sullivan <sullivan@apple.com> 22812 22813 Reviewed by Maciej. 22814 22815 - bulletproofed array.slice() against NAN arguments. Harri noticed this 22816 vulnerability in my patch for 3714644 22817 22818 * kjs/array_object.cpp: 22819 (ArrayProtoFuncImp::call): 22820 handle NAN parameters passed to slice() by clamping to 0 and length. 22821 228222004-07-19 Richard Williamson <rjw@apple.com> 22823 22824 Fixed 3733349. Prevent Java applet callbacks into JavaScript after applet 22825 has been destroyed. 22826 22827 Reviewed by John. 22828 22829 * bindings/jni/jni_jsobject.cpp: 22830 (JSObject::invoke): 22831 (JSObject::JSObject): 22832 228332004-07-16 John Sullivan <sullivan@apple.com> 22834 22835 Reviewed by Maciej. 22836 22837 - fixed <rdar://problem/3714644> REGRESSION (125.8-146): bugzilla submit link 22838 hangs browser with javascript 22839 22840 * kjs/array_object.cpp: 22841 (ArrayProtoFuncImp::call): 22842 Check for undefined type for args[0] the same way we were already checking 22843 for args[1]. In this case, args was zero-length, but we were treating 22844 args[0] like an integer anyway. Resulted in some code looping from a NAN 22845 value to 4, taking approximately forever. 22846 22847 * JavaScriptCore.pbproj/project.pbxproj: 22848 version wars 22849 22850=== Safari-152 === 22851 228522004-07-14 Maciej Stachowiak <mjs@apple.com> 22853 22854 Reviewed by John. 22855 22856 <rdar://problem/3711474>: (REGRESSION (125-146): JavaScript 'toString(16)' is broken) 22857 <rdar://problem/3644873>: (REGRESSION (125-140u): secondary list doesn't fill in at Southwest.com) 22858 22859 * kjs/number_object.cpp: 22860 (NumberProtoFuncImp::call): Initialize radix from dradix, not from itself! 22861 228622004-07-13 Kevin Decker <kdecker@apple.com> 22863 22864 Reviewed by kocienda. 22865 22866 - made testkjs and JavaScriptCore a subtarget of 'All' 22867 - testkjs now builds in $SYMROOTS 22868 22869 * JavaScriptCore.pbproj/project.pbxproj: 22870 22871=== Safari-151 === 22872 228732004-06-24 Chris Blumenberg <cblu@apple.com> 22874 22875 Ignore .mode1 files in JavaScriptCore.pbproj 22876 22877 Reviewed by kocienda. 22878 22879 * JavaScriptCore.pbproj/.cvsignore: 22880 228812004-06-23 Richard Williamson <rjw@apple.com> 22882 22883 Implemented changes for latest npruntime.h. 22884 22885 Reviewed by Chris. 22886 22887 * JavaScriptCore.pbproj/project.pbxproj: 22888 * bindings/NP_jsobject.cpp: 22889 (listFromVariantArgs): 22890 (identiferFromNPIdentifier): 22891 (_NPN_CreateScriptObject): 22892 (NPN_Call): 22893 (NPN_Evaluate): 22894 (NPN_GetProperty): 22895 (NPN_SetProperty): 22896 (NPN_RemoveProperty): 22897 * bindings/NP_jsobject.h: 22898 * bindings/c/c_class.cpp: 22899 (CClass::methodsNamed): 22900 (CClass::fieldNamed): 22901 * bindings/c/c_instance.cpp: 22902 (CInstance::invokeMethod): 22903 * bindings/c/c_utility.cpp: 22904 (convertNPVariantToValue): 22905 * bindings/c/c_utility.h: 22906 * bindings/npruntime.cpp: 22907 (stringIdentifierEqual): 22908 (stringIdentifierHash): 22909 (getStringIdentifierDictionary): 22910 (intIdentifierEqual): 22911 (intIdentifierHash): 22912 (getIntIdentifierDictionary): 22913 (NPN_GetStringIdentifier): 22914 (NPN_GetStringIdentifiers): 22915 (NPN_GetIntIdentifier): 22916 (NPN_IdentifierIsString): 22917 (NPN_UTF8FromIdentifier): 22918 (NPN_VariantToInt32): 22919 (NPN_VariantToDouble): 22920 (NPN_SetException): 22921 * bindings/npruntime.h: 22922 * bindings/objc/WebScriptObject.mm: 22923 (+[WebScriptObject _convertValueToObjcValue:KJS::root:Bindings::]): 22924 * bindings/runtime_object.cpp: 22925 (RuntimeObjectImp::~RuntimeObjectImp): 22926 * bindings/runtime_root.cpp: 22927 (KJS::Bindings::rootForInterpreter): 22928 * bindings/testbindings.cpp: 22929 (initializeIdentifiers): 22930 (logMessage): 22931 (setDoubleValue): 22932 (setIntValue): 22933 (setBooleanValue): 22934 22935=== JavaScriptCore-146.1 === 22936 229372004-06-16 Richard Williamson <rjw@apple.com> 22938 22939 Fixed <rdar://problem/3702287> Crash returning nil from bound ObjC 22940 22941 This turned out to be a show stopper for Dashboard. Accessing a nil 22942 ObjC property from JS caused a crash. Similar to the problem 22943 3696112 fixed below. 22944 22945 Reviewed by Trey. 22946 22947 * bindings/objc/objc_runtime.mm: 22948 (KJS::Bindings::ObjcField::valueFromInstance): 22949 22950=== Safari-146 === 22951 229522004-06-16 Richard Williamson <rjw@apple.com> 22953 22954 Fixed <rdar://problem/3696112>: nil from an Objective-C class seems to get wrapped as a JavaScript proxy that will not print. 22955 22956 This turned out to be a show stopper for Dashboard. We now 22957 return Undefined() when nil is returned from a ObjC method 22958 that returns an object type. 22959 22960 Reviewed by Maciej. 22961 22962 * bindings/objc/objc_utility.mm: 22963 (KJS::Bindings::convertObjcValueToValue): 22964 22965=== Safari-145 === 22966 229672004-06-15 Richard Williamson <rjw@apple.com> 22968 22969 Fixed <rdar://problem/3695875>: Objective-C instances that are exported to JavaScript are too promiscuous 22970 22971 No longer need to check respondsToSelector: for 22972 isSelectorExcludedFromWebScript: and isKeyExcludedFromWebScript: 22973 because these now have a default implementation on NSObject. 22974 22975 Reviewed by Trey. 22976 22977 * bindings/objc/objc_class.mm: 22978 (ObjcClass::methodsNamed): 22979 (ObjcClass::fieldNamed): 22980 229812004-06-14 Darin Adler <darin@apple.com> 22982 22983 Reviewed by Maciej. 22984 22985 - fixed some things for GC that Patrick missed, or that happened after the branch 22986 22987 * bindings/objc/WebScriptObject.mm: 22988 (-[WebScriptObject dealloc]): Moved removeNativeReference call here from private object. 22989 (-[WebScriptObject finalize]): Added. 22990 22991 - added some missing nil checks 22992 22993 * bindings/objc/objc_instance.mm: 22994 (ObjcInstance::ObjcInstance): Check for nil. 22995 (ObjcInstance::~ObjcInstance): Check for nil. 22996 (ObjcInstance::operator=): Check for nil. 22997 229982004-06-14 Darin Adler <darin@apple.com> 22999 23000 Reviewed by me, code changes by Patrick Beard. 23001 23002 - fixed <rdar://problem/3671507>: (WebKit should adopt GC changes and compile with GC enabled) 23003 23004 * bindings/objc/objc_instance.mm: 23005 (ObjcInstance::ObjcInstance): Use CFRetain instead of retain. 23006 (ObjcInstance::~ObjcInstance): Use CFRelease instead of release. 23007 (ObjcInstance::operator=): More of the same. 23008 (ObjcInstance::end): Use [pool drain] if compiling on Tiger. 23009 23010 * bindings/objc/objc_runtime.mm: 23011 (ObjcArray::ObjcArray): Use CFRetain instead of retain. 23012 (ObjcArray::~ObjcArray): Use CFRelease instead of release. 23013 (ObjcArray::operator=): More of the same. 23014 23015 * bindings/testbindings.mm: Fixed incorrect license. 23016 (main): Use [pool drain] if compiling on Tiger. 23017 23018=== Safari-144 === 23019 230202004-06-10 Kevin Decker <kdecker@apple.com> 23021 23022 Reviewed by John. 23023 23024 * kjs/lexer.cpp: 23025 (Lexer::setCode): 23026 - fixed <rdar://problem/3682398>: (error console line numbers are offset by 1) 23027 * kjs/lexer.h: 23028 (KJS::Lexer::lineNo): 23029 - fixed <rdar://problem/3682398>: (error console line numbers are offset by 1) 23030 23031=== JavaScriptCore-143.2 === 23032 230332004-06-07 Darin Adler <darin@apple.com> 23034 23035 - fixed <rdar://problem/3682489>: (JavaScriptGlue no longer compiles because Interpreter::evaluate parameters changed) 23036 23037 * kjs/interpreter.h: Added an overload to make JavaScriptGlue compile. 23038 * kjs/interpreter.cpp: (KJS::Interpreter::evaluate): Implemented the overload. 23039 23040=== JavaScriptCore-143.1 === 23041 230422004-06-04 Kevin Decker <kdecker@apple.com> 23043 23044 Reviewed by Darin 23045 23046 - fixed <rdar://problem/3680594> 23047 23048 * kjs/object.cpp: 23049 (KJS::Error::create): 23050 23051=== Safari-143 === 23052 230532004-06-04 Darin Adler <darin@apple.com> 23054 23055 * kjs/testkjs.cpp: (main): Fix build breakage by adding URL and line number parameters. 23056 230572004-06-04 Kevin Decker <kdecker@apple.com> 23058 23059 Reviewed by Dave. 23060 23061 - ObjC bindings do not (yet) pass along sourceurl or line numbers 23062 - we don't have a way as of yet to accomidate line numbers and urls for dynamic javascript 23063 - changed the wording of an error message 23064 - the lexer, parser, and interpreter have been made "sourceURL aware" 23065 - stored the url into Error 23066 23067 * bindings/NP_jsobject.cpp: 23068 (NPN_Evaluate): 23069 * bindings/jni/jni_jsobject.cpp: 23070 (JSObject::eval): 23071 * bindings/objc/WebScriptObject.mm: 23072 (-[WebScriptObject evaluateWebScript:]): 23073 * kjs/function.cpp: 23074 (GlobalFuncImp::call): 23075 * kjs/function_object.cpp: 23076 (FunctionObjectImp::construct): 23077 * kjs/internal.cpp: 23078 (Parser::parse): 23079 (InterpreterImp::checkSyntax): 23080 (InterpreterImp::evaluate): 23081 * kjs/internal.h: 23082 * kjs/interpreter.cpp: 23083 (Interpreter::evaluate): 23084 * kjs/interpreter.h: 23085 * kjs/lexer.cpp: 23086 (Lexer::setCode): 23087 * kjs/lexer.h: 23088 (KJS::Lexer::sourceURL): 23089 * kjs/nodes.cpp: 23090 (Node::Node): 23091 (Node::throwError): 23092 (FunctionCallNode::evaluate): 23093 * kjs/nodes.h: 23094 * kjs/object.cpp: 23095 (KJS::Error::create): 23096 * kjs/object.h: 23097 230982004-06-04 Richard Williamson <rjw@apple.com> 23099 23100 Fixed crash when attempting to access properties on nil 23101 object. 23102 23103 Reviewed by John. 23104 23105 * bindings/objc/objc_instance.mm: 23106 (ObjcInstance::getClass): 23107 * bindings/runtime_object.cpp: 23108 (RuntimeObjectImp::get): 23109 * bindings/testM.js: 23110 * bindings/testbindings.mm: 23111 (-[MyFirstInterface getString]): 23112 231132004-05-27 Kevin Decker <kdecker@apple.com> 23114 23115 Reviewed by Ken. 23116 23117 -revised generated error message content 23118 23119 * kjs/error_object.cpp: 23120 (ErrorProtoFuncImp::call): 23121 * kjs/internal.cpp: 23122 (Parser::parse): 23123 * kjs/object.cpp: 23124 (KJS::Error::create): 23125 23126=== Safari-142 === 23127 231282004-05-27 Richard Williamson <rjw@apple.com> 23129 23130 Renamed WebScriptMethods to WebScripting based on feedback from Nancy. 23131 23132 Reviewed by Chris. 23133 23134 * bindings/objc/WebScriptObject.h: 23135 231362004-05-27 Darin Adler <darin@apple.com> 23137 23138 Reviewed by Maciej. 23139 23140 - moved to new symlink technique for embedding frameworks 23141 23142 * JavaScriptCore.pbproj/project.pbxproj: Get rid of embed-frameworks build step 23143 because we don't need it any more. 23144 231452004-05-24 Richard Williamson <rjw@apple.com> 23146 23147 Changed RuntimeArrayImp to inherit from ArrayInstanceImp and 23148 fixed ClassInfo to correctly reflect inheritance. This is required 23149 because of the runtime checks in JSC for arrays, i.e. in 23150 the Function objects apply method. 23151 23152 Reviewed by Ken. 23153 23154 * bindings/jni/jni_runtime.cpp: 23155 (JavaArray::convertJObjectToArray): 23156 * bindings/objc/objc_utility.mm: 23157 (KJS::Bindings::convertObjcValueToValue): 23158 * bindings/runtime_array.cpp: 23159 (RuntimeArrayImp::RuntimeArrayImp): 23160 * bindings/runtime_array.h: 23161 * bindings/testM.js: Added. 23162 * bindings/testbindings.mm: 23163 (+[MyFirstInterface webScriptNameForSelector:]): 23164 (-[MyFirstInterface logMessages:]): 23165 (-[MyFirstInterface logMessage:prefix:]): 23166 (-[MyFirstInterface callJSObject::]): 23167 231682004-05-22 Darin Adler <darin@apple.com> 23169 23170 Reviewed by Maciej. 23171 23172 - fixed <rdar://problem/3664260>: (JS needs to listen to timezone change notifications) 23173 23174 * kjs/date_object.cpp: (CopyLocalTimeZone): As per Chris Kane and Jordan Hubbard, use <notify.h> 23175 with a hardcoded string of "com.apple.system.timezone", and do CFTimeZoneResetSystem since 23176 CoreFoundation doesn't do this itself. Turns out this affects the default time zone as long as 23177 it hasn't been set explicitly. 23178 23179=== Safari-141 === 23180 231812004-05-20 Richard Williamson <rjw@apple.com> 23182 23183 Implemented WebScriptObject/DOM wrapper voodoo. DOM wrappers 23184 can now be referenced like any other WebScriptObject, meaning 23185 you can do JS operations on them. 23186 23187 All added implementation of finalizeForWebScript. 23188 23189 Reviewed by Ken. 23190 23191 * bindings/objc/WebScriptObject.h: 23192 * bindings/objc/WebScriptObject.mm: 23193 (-[WebScriptObject _initializeWithObjectImp:KJS::root:Bindings::]): 23194 (-[WebScriptObject _initWithObjectImp:KJS::root:Bindings::]): 23195 (-[WebScriptObject KJS::]): 23196 (-[WebScriptObject dealloc]): 23197 (-[WebScriptObject callWebScriptMethod:withArguments:]): 23198 (-[WebScriptObject evaluateWebScript:]): 23199 (-[WebScriptObject setValue:forKey:]): 23200 (-[WebScriptObject valueForKey:]): 23201 (-[WebScriptObject stringRepresentation]): 23202 * bindings/objc/WebScriptObjectPrivate.h: 23203 * bindings/objc/objc_instance.mm: 23204 (ObjcInstance::~ObjcInstance): 23205 232062004-05-19 Richard Williamson <rjw@apple.com> 23207 23208 Removed extraneous tabs that were added (by XCode?). 23209 23210 * bindings/objc/WebScriptObject.h: 23211 232122004-05-19 Darin Adler <darin@apple.com> 23213 23214 - fixed headers with licenses mangled by Xcode auto-indenting 23215 23216 * bindings/jni/jni_jsobject.cpp: 23217 * bindings/jni/jni_jsobject.h: 23218 * bindings/runtime_array.h: 23219 * bindings/runtime_root.cpp: 23220 * bindings/runtime_root.h: 23221 232222004-05-18 Richard Williamson <rjw@apple.com> 23223 23224 Added exception logging. Also check for exception and 23225 set results as appropriate. 23226 23227 Reviewed by Maciej (partially reviewed). 23228 23229 * bindings/objc/WebScriptObject.mm: 23230 (-[WebScriptObject callWebScriptMethod:withArguments:]): 23231 (-[WebScriptObject evaluateWebScript:]): 23232 (-[WebScriptObject setValue:forKey:]): 23233 (-[WebScriptObject valueForKey:]): 23234 232352004-05-18 Richard Williamson <rjw@apple.com> 23236 23237 Finsished implementing support for windowScriptObject. 23238 Had to make WebScriptObjectPrivate.h accessible from 23239 WebCore. 23240 23241 Reviewed by Maciej. 23242 23243 * JavaScriptCore.pbproj/project.pbxproj: 23244 * bindings/objc/WebScriptObjectPrivate.h: 23245 232462004-05-18 Richard Williamson <rjw@apple.com> 23247 23248 Use KVC to set/get values instead of directly accessing 23249 ivars. 23250 23251 Reviewed by Maciej. 23252 23253 * bindings/objc/WebScriptObject.mm: 23254 (-[WebScriptObject callWebScriptMethod:withArguments:]): 23255 (+[WebScriptObject _convertValueToObjcValue:KJS::root:Bindings::]): 23256 * bindings/objc/objc_runtime.mm: 23257 (ObjcField::valueFromInstance): 23258 (convertValueToObjcObject): 23259 (ObjcField::setValueToInstance): 23260 232612004-05-17 Richard Williamson <rjw@apple.com> 23262 23263 Implemented new API for WebScriptObject. 23264 23265 Fixed <rdar://problem/3657145>: (objc to javascript method calls do not cause updates.) 23266 Fixed <rdar://problem/3654887>: (Update to JSC to refer to new JSObject LiveConnect object) (w/ help from Vicki) 23267 23268 Reviewed by Hyatt. 23269 23270 * JavaScriptCore.pbproj/project.pbxproj: 23271 * bindings/c/c_instance.cpp: 23272 (CInstance::invokeMethod): 23273 * bindings/jni/jni_instance.cpp: 23274 (JavaInstance::invokeMethod): 23275 * bindings/jni/jni_jsobject.cpp: 23276 (JSObject::convertValueToJObject): 23277 * bindings/jni/jni_utility.cpp: 23278 (KJS::Bindings::getJNIField): 23279 * bindings/objc/WebScriptObject.mm: 23280 (_didExecute): 23281 (-[WebScriptObject _initWithObjectImp:KJS::root:Bindings::]): 23282 (-[WebScriptObject KJS::]): 23283 (-[WebScriptObject dealloc]): 23284 (+[WebScriptObject throwException:]): 23285 (listFromNSArray): 23286 (-[WebScriptObject callWebScriptMethod:withArguments:]): 23287 (-[WebScriptObject evaluateWebScript:]): 23288 (-[WebScriptObject setValue:forKey:]): 23289 (-[WebScriptObject valueForKey:]): 23290 (-[WebScriptObject stringRepresentation]): 23291 (+[WebScriptObject _convertValueToObjcValue:KJS::root:Bindings::]): 23292 (+[WebUndefined undefined]): 23293 (-[WebUndefined initWithCoder:]): 23294 (-[WebUndefined encodeWithCoder:]): 23295 (-[WebUndefined copyWithZone:]): 23296 (-[WebUndefined retain]): 23297 (-[WebUndefined release]): 23298 (-[WebUndefined retainCount]): 23299 (-[WebUndefined autorelease]): 23300 (-[WebUndefined dealloc]): 23301 (-[WebUndefined copy]): 23302 (-[WebUndefined replacementObjectForPortCoder:]): 23303 * bindings/objc/WebScriptObjectPrivate.h: Added. 23304 * bindings/objc/objc_class.mm: 23305 (ObjcClass::methodsNamed): 23306 (ObjcClass::fieldNamed): 23307 * bindings/objc/objc_instance.mm: 23308 (ObjcInstance::invokeMethod): 23309 * bindings/objc/objc_jsobject.h: 23310 * bindings/objc/objc_jsobject.mm: 23311 * bindings/objc/objc_runtime.mm: 23312 (ObjcField::valueFromInstance): 23313 * bindings/objc/objc_utility.mm: 23314 (KJS::Bindings::JSMethodNameToObjCMethodName): 23315 (KJS::Bindings::convertValueToObjcValue): 23316 (KJS::Bindings::convertObjcValueToValue): 23317 * bindings/runtime.cpp: 23318 (Instance::setDidExecuteFunction): 23319 (Instance::didExecuteFunction): 23320 (Instance::setValueOfField): 23321 * bindings/runtime.h: 23322 * bindings/testbindings.mm: 23323 (+[MyFirstInterface webScriptNameForSelector:]): 23324 (-[MyFirstInterface callJSObject::]): 23325 233262004-05-14 Vicki Murley <vicki@apple.com> 23327 23328 Reviewed by mjs. 23329 23330 <rdar://problem/3642427>: framework marketing number should be 2.0 for DoubleBarrel release 23331 23332 * JavaScriptCore.pbproj/project.pbxproj: change CFBundleShortVersionString to 2.0 23333 23334=== Safari-140 === 23335 233362004-05-13 Richard Williamson <rjw@apple.com> 23337 23338 Fixed indentation. 23339 23340 Reviewed by Chris. 23341 23342 * ChangeLog: 23343 * bindings/objc/WebScriptObject.h: 23344 233452004-05-13 Richard Williamson <rjw@apple.com> 23346 23347 Approved API changes. Currently unimplemented. 23348 23349 Reviewed by Chris. 23350 23351 * ChangeLog: 23352 * JavaScriptCore.pbproj/project.pbxproj: 23353 * bindings/objc/WebScriptObject.h: Added. 23354 * bindings/objc/WebScriptObject.mm: Added. 23355 (+[WebScriptObject throwException:]): 23356 (-[WebScriptObject callWebScriptMethod:withArguments:]): 23357 (-[WebScriptObject evaluateWebScript:]): 23358 (-[WebScriptObject stringRepresentation]): 23359 (+[WebUndefined undefined]): 23360 (-[WebUndefined initWithCoder:]): 23361 (-[WebUndefined encodeWithCoder:]): 23362 (-[WebUndefined copyWithZone:]): 23363 233642004-05-07 Vicki Murley <vicki@apple.com> 23365 23366 Reviewed by darin. 23367 23368 Turn off GC since it uses ppc only instructions (which breaks 23369 the B&I build). 23370 23371 * kjs/value.h: set USE_CONSERVATIVE_GC to 0 23372 23373=== Safari-139 === 23374 233752004-05-07 Maciej Stachowiak <mjs@apple.com> 23376 23377 Reviewed by Darin. 23378 23379 - add -funroll-loops=16 compiler option for approx .5% speedup on 23380 HTML iBench and .5-1% speedup on JS iBench. 23381 23382 * JavaScriptCore.pbproj/project.pbxproj: 23383 233842004-04-25 Maciej Stachowiak <mjs@apple.com> 23385 23386 Reviewed by Darin. 23387 23388 Enable full conservative GC mode in addition to test mode. When 23389 conservative GC is enabled, we now get an 11% speed improvement on 23390 the iBench. Also fix some spots I missed before. 23391 23392 Specific noteworth changes: 23393 23394 * kjs/collector.cpp: 23395 (KJS::Collector::markStackObjectsConservatively): Check possible 23396 cell pointers for 8-byte aligment and verify they are not 0. 23397 23398 * kjs/protected_values.cpp: 23399 (KJS::ProtectedValues::increaseProtectCount): Move null-tolerance from here... 23400 (KJS::ProtectedValues::decreaseProtectCount): ...and here... 23401 * kjs/protect.h: 23402 (KJS::gcProtectNullTolerant): ...to here... 23403 (KJS::gcUnprotectNullTolerant): ...and here, because not all callers need the null 23404 tolerance, and doing the check is expensive. 23405 23406 * kjs/protected_values.cpp: 23407 (KJS::ProtectedValues::computeHash): Replace hash function with a much faster one 23408 that is still very good. 23409 23410 * kjs/protect.h: 23411 (KJS::gcProtect): 23412 (KJS::gcUnprotect): 23413 (KJS::ProtectedValue::ProtectedValue): 23414 (KJS::ProtectedValue::~ProtectedValue): 23415 (KJS::ProtectedValue::operator=): 23416 (KJS::ProtectedObject::ProtectedObject): 23417 (KJS::ProtectedObject::~ProtectedObject): 23418 (KJS::ProtectedObject::operator=): 23419 (KJS::ProtectedReference::ProtectedReference): 23420 (KJS::ProtectedReference::~ProtectedReference): 23421 (KJS::ProtectedReference::operator=): 23422 * kjs/protected_values.cpp: 23423 (KJS::ProtectedValues::getProtectCount): 23424 (KJS::ProtectedValues::increaseProtectCount): 23425 (KJS::ProtectedValues::decreaseProtectCount): 23426 (KJS::ProtectedValues::computeHash): 23427 * bindings/runtime_root.cpp: 23428 (KJS::Bindings::addNativeReference): 23429 (KJS::Bindings::removeNativeReference): 23430 (RootObject::removeAllNativeReferences): 23431 * bindings/runtime_root.h: 23432 (KJS::Bindings::RootObject::~RootObject): 23433 (KJS::Bindings::RootObject::setRootObjectImp): 23434 * kjs/collector.cpp: 23435 (KJS::Collector::allocate): 23436 (KJS::Collector::collect): 23437 * kjs/collector.h: 23438 * kjs/internal.cpp: 23439 (NumberImp::create): 23440 (InterpreterImp::globalInit): 23441 (InterpreterImp::globalClear): 23442 (InterpreterImp::mark): 23443 * kjs/list.cpp: 23444 (KJS::List::derefValues): 23445 (KJS::List::refValues): 23446 (KJS::List::append): 23447 * kjs/object.cpp: 23448 (KJS::ObjectImp::setInternalValue): 23449 (KJS::ObjectImp::putDirect): 23450 * kjs/value.cpp: 23451 (ValueImp::mark): 23452 (ValueImp::marked): 23453 * kjs/value.h: 23454 (KJS::ValueImp::ValueImp): 23455 (KJS::ValueImp::~ValueImp): 23456 (KJS::ValueImp::): 23457 (KJS::Value::Value): 23458 (KJS::Value::~Value): 23459 (KJS::Value::operator=): 23460 234612004-04-30 Richard Williamson <rjw@apple.com> 23462 23463 Asking an NSInvocation for it's return value when return type 23464 is void throws an exception. Added check for void return types 23465 to avoid this exception. 23466 23467 Reviewed by Ken. 23468 23469 * bindings/objc/objc_instance.mm: 23470 (ObjcInstance::invokeMethod): 23471 234722004-04-29 Richard Williamson <rjw@apple.com> 23473 23474 Fixed several bad problems with the ObjC bindings. In particular, conversion 23475 to/from JavaScriptObject (soon to be WebScriptObject) was completely broken. 23476 23477 Reviewed by Chris. 23478 23479 * bindings/objc/objc_jsobject.h: 23480 * bindings/objc/objc_jsobject.mm: 23481 (-[JavaScriptObject initWithObjectImp:KJS::root:Bindings::]): 23482 (-[JavaScriptObject KJS::]): 23483 (+[JavaScriptObject _convertValueToObjcValue:KJS::root:Bindings::]): 23484 (-[JavaScriptObject call:arguments:]): 23485 (-[JavaScriptObject evaluate:]): 23486 (-[JavaScriptObject getMember:]): 23487 (-[JavaScriptObject getSlot:]): 23488 * bindings/objc/objc_runtime.mm: 23489 (ObjcField::valueFromInstance): 23490 (ObjcField::setValueToInstance): 23491 * bindings/objc/objc_utility.mm: 23492 (KJS::Bindings::convertValueToObjcValue): 23493 (KJS::Bindings::convertObjcValueToValue): 23494 * bindings/runtime.h: 23495 * bindings/runtime_root.cpp: 23496 (KJS::Bindings::rootForInterpreter): 23497 (KJS::Bindings::addNativeReference): 23498 (KJS::Bindings::removeNativeReference): 23499 * bindings/runtime_root.h: 23500 * bindings/testbindings.mm: 23501 (-[MyFirstInterface logMessage:]): 23502 (-[MyFirstInterface setJSObject:]): 23503 (-[MyFirstInterface callJSObject::]): 23504 235052004-04-24 Darin Adler <darin@apple.com> 23506 23507 Reviewed by Dave. 23508 23509 * kjs/ustring.cpp: (KJS::UString::append): Fix one case that was allocating a buffer 23510 that is 2x too big. 23511 235122004-04-23 Maciej Stachowiak <mjs@apple.com> 23513 23514 Reviewed by Darin. 23515 23516 Implementation of conservative GC, based partly on code from 23517 Darin. It's turned off for now, so it shouldn't have any effect on 23518 the normal build. 23519 23520 * JavaScriptCore.pbproj/project.pbxproj: 23521 * kjs/collector.cpp: 23522 (KJS::Collector::markStackObjectsConservatively): 23523 (KJS::Collector::markProtectedObjects): 23524 (KJS::Collector::collect): 23525 * kjs/collector.h: 23526 * kjs/protect.h: 23527 (KJS::gcProtect): 23528 (KJS::gcUnprotect): 23529 * kjs/protected_values.cpp: Added. 23530 (KJS::ProtectedValues::getProtectCount): 23531 (KJS::ProtectedValues::increaseProtectCount): 23532 (KJS::ProtectedValues::insert): 23533 (KJS::ProtectedValues::decreaseProtectCount): 23534 (KJS::ProtectedValues::expand): 23535 (KJS::ProtectedValues::shrink): 23536 (KJS::ProtectedValues::rehash): 23537 (KJS::ProtectedValues::computeHash): 23538 * kjs/protected_values.h: Added. 23539 * kjs/value.cpp: 23540 (ValueImp::useConservativeMark): 23541 (ValueImp::mark): 23542 (ValueImp::marked): 23543 * kjs/value.h: 23544 (KJS::ValueImp::): 23545 23546=== Safari-138 === 23547 235482004-04-22 Richard Williamson <rjw@apple.com> 23549 23550 Fixed build snafu (re-declaration of NPBool in npruntime.h and 23551 npapi.h). 23552 23553 * bindings/npruntime.h: 23554 235552004-04-22 Richard Williamson <rjw@apple.com> 23556 23557 Updated plugin binding API to reflect latest revision from 23558 working group. 23559 23560 Biggest change is the introduction of NPVariant used to represent 23561 value types. NPVariant replaces the use of NPObject for the 23562 exchange of values between scripting environment and native code. 23563 23564 Reviewed by John. 23565 23566 * JavaScriptCore.pbproj/project.pbxproj: 23567 * bindings/NP_jsobject.cpp: 23568 (identiferFromNPIdentifier): 23569 (NPN_Call): 23570 (NPN_Evaluate): 23571 (NPN_GetProperty): 23572 (NPN_SetProperty): 23573 (NPN_ToString): 23574 (NPN_GetPropertyAtIndex): 23575 (NPN_SetPropertyAtIndex): 23576 * bindings/c/c_class.cpp: 23577 (CClass::methodsNamed): 23578 (CClass::fieldNamed): 23579 * bindings/c/c_instance.cpp: 23580 (CInstance::invokeMethod): 23581 (CInstance::defaultValue): 23582 * bindings/c/c_runtime.cpp: 23583 (CField::valueFromInstance): 23584 (CField::setValueToInstance): 23585 * bindings/c/c_utility.cpp: 23586 (convertNPStringToUTF16): 23587 (convertUTF8ToUTF16): 23588 (coerceValueToNPVariantStringType): 23589 (convertValueToNPVariant): 23590 (convertNPVariantToValue): 23591 * bindings/c/c_utility.h: 23592 * bindings/npruntime.cpp: 23593 (NPN_GetIdentifier): 23594 (NPN_GetIdentifiers): 23595 (NPN_UTF8FromIdentifier): 23596 (NPN_VariantIsVoid): 23597 (NPN_VariantIsNull): 23598 (NPN_VariantIsUndefined): 23599 (NPN_VariantIsBool): 23600 (NPN_VariantIsInt32): 23601 (NPN_VariantIsDouble): 23602 (NPN_VariantIsString): 23603 (NPN_VariantIsObject): 23604 (NPN_VariantToBool): 23605 (NPN_VariantToString): 23606 (NPN_VariantToInt32): 23607 (NPN_VariantToDouble): 23608 (NPN_VariantToObject): 23609 (NPN_InitializeVariantAsVoid): 23610 (NPN_InitializeVariantAsNull): 23611 (NPN_InitializeVariantAsUndefined): 23612 (NPN_InitializeVariantWithBool): 23613 (NPN_InitializeVariantWithInt32): 23614 (NPN_InitializeVariantWithDouble): 23615 (NPN_InitializeVariantWithString): 23616 (NPN_InitializeVariantWithStringCopy): 23617 (NPN_InitializeVariantWithObject): 23618 (NPN_InitializeVariantWithVariant): 23619 (NPN_ReleaseVariantValue): 23620 (NPN_CreateObject): 23621 (NPN_RetainObject): 23622 (NPN_ReleaseObject): 23623 (NPN_IsKindOfClass): 23624 (NPN_SetExceptionWithUTF8): 23625 (NPN_SetException): 23626 * bindings/npruntime.h: 23627 (_NPString::): 23628 (_NPString::_NPVariant::): 23629 * bindings/testbindings.cpp: 23630 (logMessage): 23631 (setDoubleValue): 23632 (setIntValue): 23633 (setStringValue): 23634 (setBooleanValue): 23635 (getDoubleValue): 23636 (getIntValue): 23637 (getStringValue): 23638 (getBooleanValue): 23639 (myGetProperty): 23640 (mySetProperty): 23641 (myInvoke): 23642 (myAllocate): 23643 236442004-04-22 Darin Adler <darin@apple.com> 23645 23646 Reviewed by Maciej. 23647 23648 - fixed <rdar://problem/3627473>: "REGRESSION (125-137): memory trasher in UString::append, causing many different crashes" 23649 23650 * kjs/ustring.cpp: 23651 (KJS::UString::expandCapacity): Fix sizeof(UChar *) that should be sizeof(UChar). 23652 Was resulting in a buffer 2x the needed size. 23653 (KJS::UString::expandPreCapacity): Ditto. 23654 (KJS::UString::append): Fix malloc that is missing a sizeof(UChar). 23655 236562004-04-21 Maciej Stachowiak <mjs@apple.com> 23657 23658 Reviewed by Darin. 23659 23660 Preliminary change for conservative GC. Create "protected" 23661 subclasses to GC-protect objects when on heap, since we will soon 23662 remove the built-in refcounting of the normal wrapper classes. Use 23663 them where needed. 23664 23665 * JavaScriptCore.pbproj/project.pbxproj: 23666 * kjs/context.h: 23667 * kjs/internal.h: 23668 (KJS::InterpreterImp::globalObject): 23669 * kjs/interpreter.h: 23670 * kjs/property_map.cpp: 23671 * kjs/reference.h: 23672 * kjs/reference_list.cpp: 23673 236742004-04-19 Maciej Stachowiak <mjs@apple.com> 23675 23676 Reviewed by Dave. 23677 23678 Optimize prepend using the shared substring optimization. Also, 23679 limit the applicability of shared append and shared prepend. If 23680 you overdo it, it does more harm than good, because you create a 23681 bunch of strings that are disqualified from future shared 23682 append/prepend, for not much immediate savings in allocate/copy 23683 expense. 23684 23685 * kjs/ustring.cpp: 23686 (KJS::): 23687 (KJS::UString::Rep::create): 23688 (KJS::UString::expandedSize): 23689 (KJS::UString::usedPreCapacity): 23690 (KJS::UString::expandCapacity): 23691 (KJS::UString::expandPreCapacity): 23692 (KJS::UString::UString): 23693 (KJS::UString::append): 23694 (KJS::UString::operator=): 23695 * kjs/ustring.h: 23696 (KJS::UString::Rep::data): 23697 236982004-04-16 Maciej Stachowiak <mjs@apple.com> 23699 Reviewed by Richard. 23700 23701 No more need for Completion or Reference to privately inherit from 23702 Value, none of the superclass functionality is used. 23703 23704 * kjs/completion.h: 23705 * kjs/reference.h: 23706 23707=== Safari-137 === 23708 237092004-04-16 Richard Williamson <rjw@apple.com> 23710 23711 Added interpreter lock protection around object creation. 23712 23713 Reviewed by Chris. 23714 23715 * bindings/runtime.cpp: 23716 (Instance::createRuntimeObject): 23717 237182004-04-16 Maciej Stachowiak <mjs@apple.com> 23719 23720 Reviewed by Ken. 23721 23722 Another JavaScript speed improvement: use the mechanism from 23723 string append optimization to make taking a substring fast, again 23724 sharing the buffer. 23725 23726 A further 22% improvement on the 24fun string speed test. 23727 23728 * kjs/ustring.cpp: 23729 (KJS::): 23730 (KJS::UString::Rep::create): 23731 (KJS::UString::UString): 23732 (KJS::UString::append): 23733 (KJS::UString::operator=): 23734 (KJS::UString::substr): 23735 * kjs/ustring.h: 23736 (KJS::UString::Rep::data): 23737 237382004-04-13 Maciej Stachowiak <mjs@apple.com> 23739 23740 Reviewed by Darin. 23741 23742 - fixed <rdar://problem/3600695>: String manipulation in JavaScript 24fun test is very slow (slow) 23743 - fixed <rdar://problem/3600691>: Table generation test is really slow 23744 - fixed <rdar://problem/3600661>: 24fun date test is really slow 23745 23746 80% speedup on the string test, lesser speedups on the other two. 23747 23748 Two different optimizations here: 23749 23750 1) Avoid large overhead of scanning strings to see if they are all 23751 ASCII before numeric conversion. 23752 23753 * kjs/nodes.cpp: 23754 (AssignNode::evaluate): Don't convert to integer until we know for 23755 sure the operation will need it. Attempting to convert strings to 23756 numbers is a waste when they are being appended with +=. 23757 23758 2) Avoid huge cost of appending strings. 23759 23760 This is done by allowing multiple strings to share a buffer but 23761 actually use different ranges of it. The first time a string is 23762 appended to, we start leaving at least 10% extra space in the 23763 buffer, so doing N appends to the same string takes O(log N) 23764 mallocs instead of O(N). 23765 23766 * kjs/identifier.cpp: 23767 (KJS::Identifier::equal): 23768 (KJS::Identifier::add): 23769 * kjs/ustring.cpp: 23770 (KJS::): 23771 (KJS::UCharReference::operator=): 23772 (KJS::UCharReference::ref): 23773 (KJS::UString::Rep::create): 23774 (KJS::UString::Rep::destroy): 23775 (KJS::UString::expandedSize): 23776 (KJS::UString::usedCapacity): 23777 (KJS::UString::expandCapacity): 23778 (KJS::UString::UString): 23779 (KJS::UString::null): 23780 (KJS::UString::append): 23781 (KJS::UString::operator=): 23782 (KJS::UString::toStrictUInt32): 23783 (KJS::UString::detach): 23784 (KJS::KJS::operator==): 23785 * kjs/ustring.h: 23786 (KJS::UString::Rep::data): 23787 (KJS::UString::Rep::hash): 23788 237892004-04-09 Maciej Stachowiak <mjs@apple.com> 23790 23791 Reviewed by John. 23792 23793 - fix deployment build by avoiding deployment-only warning. 23794 23795 * kjs/scope_chain.cpp: 23796 (KJS::ScopeChain::bottom): 23797 237982004-04-09 Maciej Stachowiak <mjs@apple.com> 23799 23800 Reviewed by John. 23801 23802 Changed things so that newly created objects get a prototype based 23803 on the scope chain of the current function, rather than the 23804 interpreter that started execution. This fixes the following bugs: 23805 23806 <rdar://problem/3368523>: ARCH: wrong prototype used to create new objects (hang on lookup.atomica.com) 23807 <rdar://problem/3559173>: ARCH: Cannot scan using a HP Jetdirect product (JS object prototypes bind incorrectly) 23808 23809 * JavaScriptCore.pbproj/project.pbxproj: 23810 * kjs/array_object.cpp: 23811 (CompareWithCompareFunctionArguments::CompareWithCompareFunctionArguments): 23812 (ArrayProtoFuncImp::ArrayProtoFuncImp): 23813 (ArrayProtoFuncImp::call): 23814 (ArrayObjectImp::construct): 23815 * kjs/bool_object.cpp: 23816 (BooleanObjectImp::construct): 23817 * kjs/date_object.cpp: 23818 (DateProtoFuncImp::DateProtoFuncImp): 23819 (DateProtoFuncImp::call): 23820 (DateObjectImp::construct): 23821 * kjs/error_object.cpp: 23822 (ErrorObjectImp::construct): 23823 * kjs/function.cpp: 23824 (FunctionImp::FunctionImp): 23825 (FunctionImp::call): 23826 (DeclaredFunctionImp::construct): 23827 (ArgumentsImp::ArgumentsImp): 23828 (GlobalFuncImp::call): 23829 * kjs/function_object.cpp: 23830 (FunctionProtoFuncImp::call): 23831 (FunctionObjectImp::construct): 23832 * kjs/internal.cpp: 23833 (BooleanImp::toObject): 23834 (StringImp::toObject): 23835 (NumberImp::toObject): 23836 (InterpreterImp::InterpreterImp): 23837 (InterpreterImp::clear): 23838 (InterpreterImp::interpreterWithGlobalObject): 23839 * kjs/internal.h: 23840 * kjs/interpreter.cpp: 23841 (ExecState::lexicalInterpreter): 23842 * kjs/interpreter.h: 23843 (KJS::ExecState::dynamicInterpreter): 23844 (KJS::ExecState::interpreter): 23845 * kjs/math_object.cpp: 23846 (MathFuncImp::MathFuncImp): 23847 * kjs/nodes.cpp: 23848 (StatementNode::hitStatement): 23849 (StatementNode::abortStatement): 23850 (RegExpNode::evaluate): 23851 (ElementNode::evaluate): 23852 (ArrayNode::evaluate): 23853 (ObjectLiteralNode::evaluate): 23854 (PropertyValueNode::evaluate): 23855 (FunctionCallNode::evaluate): 23856 (FuncDeclNode::processFuncDecl): 23857 (FuncExprNode::evaluate): 23858 * kjs/number_object.cpp: 23859 (NumberObjectImp::construct): 23860 * kjs/object.cpp: 23861 (KJS::ObjectImp::defaultValue): 23862 (KJS::Error::create): 23863 * kjs/object_object.cpp: 23864 (ObjectObjectImp::construct): 23865 * kjs/reference.cpp: 23866 (Reference::putValue): 23867 * kjs/regexp_object.cpp: 23868 (RegExpProtoFuncImp::call): 23869 (RegExpObjectImp::arrayOfMatches): 23870 (RegExpObjectImp::construct): 23871 * kjs/scope_chain.cpp: 23872 (KJS::ScopeChain::bottom): 23873 * kjs/scope_chain.h: 23874 * kjs/string_object.cpp: 23875 (StringProtoFuncImp::StringProtoFuncImp): 23876 (StringProtoFuncImp::call): 23877 (StringObjectImp::construct): 23878 23879=== Safari-136 === 23880 23881=== Safari-135 === 23882 238832004-03-31 Richard Williamson <rjw@apple.com> 23884 23885 Tedious renames based on feedback from plugin-futures list. 23886 NP_ functions are renamed with NPN_ prefix. 23887 Types prefix renamed from NP_ to NP. 23888 NPN_CreateStringWithUTF8 and NPN_SetExceptionWithUTF8 now take a length, optionally -1 if string is null terminated. 23889 23890 No review because this was just a renaming patch. 23891 23892 * bindings/NP_jsobject.cpp: 23893 (listFromNPArray): 23894 (jsAllocate): 23895 (identiferFromNPIdentifier): 23896 (NPN_Call): 23897 (NPN_Evaluate): 23898 (NPN_GetProperty): 23899 (NPN_SetProperty): 23900 (NPN_RemoveProperty): 23901 (NPN_ToString): 23902 (NPN_GetPropertyAtIndex): 23903 (NPN_SetPropertyAtIndex): 23904 * bindings/NP_jsobject.h: 23905 * bindings/c/c_class.cpp: 23906 (CClass::_commonInit): 23907 (CClass::classForIsA): 23908 (CClass::CClass): 23909 (CClass::methodsNamed): 23910 (CClass::fieldNamed): 23911 * bindings/c/c_class.h: 23912 * bindings/c/c_instance.cpp: 23913 (CInstance::CInstance): 23914 (CInstance::~CInstance): 23915 (CInstance::operator=): 23916 (CInstance::invokeMethod): 23917 (CInstance::defaultValue): 23918 * bindings/c/c_instance.h: 23919 (KJS::Bindings::CInstance::getObject): 23920 * bindings/c/c_runtime.cpp: 23921 (CField::valueFromInstance): 23922 (CField::setValueToInstance): 23923 * bindings/c/c_runtime.h: 23924 (KJS::Bindings::CField::CField): 23925 (KJS::Bindings::CField::name): 23926 (KJS::Bindings::CMethod::CMethod): 23927 (KJS::Bindings::CMethod::name): 23928 * bindings/c/c_utility.cpp: 23929 (coerceValueToNPString): 23930 (convertValueToNPValueType): 23931 (convertNPValueTypeToValue): 23932 * bindings/c/c_utility.h: 23933 * bindings/npruntime.cpp: 23934 (NPN_IdentifierFromUTF8): 23935 (NPN_IsValidIdentifier): 23936 (NPN_GetIdentifiers): 23937 (NPN_UTF8FromIdentifier): 23938 (NPN_CreateObject): 23939 (NPN_RetainObject): 23940 (NPN_ReleaseObject): 23941 (NPN_IsKindOfClass): 23942 (NPN_SetExceptionWithUTF8): 23943 (NPN_SetException): 23944 (numberAllocate): 23945 (NPN_CreateNumberWithInt): 23946 (NPN_CreateNumberWithFloat): 23947 (NPN_CreateNumberWithDouble): 23948 (NPN_IntFromNumber): 23949 (NPN_FloatFromNumber): 23950 (NPN_DoubleFromNumber): 23951 (stringAllocate): 23952 (NPN_CreateStringWithUTF8): 23953 (NPN_CreateStringWithUTF16): 23954 (NPN_DeallocateUTF8): 23955 (NPN_UTF8FromString): 23956 (NPN_UTF16FromString): 23957 (NPN_StringLength): 23958 (booleanAllocate): 23959 (NPN_CreateBoolean): 23960 (NPN_BoolFromBoolean): 23961 (nullAllocate): 23962 (NPN_GetNull): 23963 (undefinedAllocate): 23964 (NPN_GetUndefined): 23965 (arrayAllocate): 23966 (arrayDeallocate): 23967 (NPN_CreateArray): 23968 (NPN_CreateArrayV): 23969 (NPN_ObjectAtIndex): 23970 * bindings/npruntime.h: 23971 * bindings/runtime.cpp: 23972 (Instance::createBindingForLanguageInstance): 23973 * bindings/testbindings.cpp: 23974 (initializeIdentifiers): 23975 (myHasProperty): 23976 (myHasMethod): 23977 (myGetProperty): 23978 (mySetProperty): 23979 (logMessage): 23980 (setDoubleValue): 23981 (setIntValue): 23982 (setStringValue): 23983 (setBooleanValue): 23984 (getDoubleValue): 23985 (getIntValue): 23986 (getStringValue): 23987 (getBooleanValue): 23988 (myInvoke): 23989 (myAllocate): 23990 (myInvalidate): 23991 (myDeallocate): 23992 (main): 23993 239942004-03-31 Richard Williamson <rjw@apple.com> 23995 23996 Changed references to NP_runtime.h to npruntime.h 23997 23998 * JavaScriptCore.pbproj/project.pbxproj: 23999 * bindings/NP_jsobject.h: 24000 * bindings/c/c_class.h: 24001 * bindings/c/c_instance.h: 24002 * bindings/c/c_runtime.h: 24003 * bindings/c/c_utility.h: 24004 * bindings/npruntime.cpp: 24005 240062004-03-31 Richard Williamson <rjw@apple.com> 24007 24008 Renamed NP_runtime.h to npruntime.h to match Netscape SDK. 24009 24010 * JavaScriptCore.pbproj/project.pbxproj: 24011 * bindings/NP_jsobject.h: 24012 * bindings/npruntime.cpp: 24013 24014=== Safari-134 === 24015 240162004-03-23 Richard Williamson <rjw@apple.com> 24017 24018 Added implementation of KJS::Value <-> NP_Object conversion functions. 24019 Augmented test program for 'C' bindings. 24020 Added asserts and parameter checking to all public API. 24021 24022 Reviewed by Ken. 24023 24024 * JavaScriptCore.pbproj/project.pbxproj: 24025 * bindings/NP_jsobject.cpp: 24026 (NP_ToString): 24027 * bindings/NP_jsobject.h: Added. 24028 * bindings/NP_runtime.cpp: 24029 (NP_IdentifierFromUTF8): 24030 (NP_IsValidIdentifier): 24031 (NP_GetIdentifiers): 24032 (NP_CreateObject): 24033 (NP_RetainObject): 24034 (NP_ReleaseObject): 24035 (NP_IsKindOfClass): 24036 (NP_SetExceptionWithUTF8): 24037 (NP_SetException): 24038 (NP_IntFromNumber): 24039 (NP_FloatFromNumber): 24040 (NP_DoubleFromNumber): 24041 (NP_CreateStringWithUTF8): 24042 (NP_CreateStringWithUTF16): 24043 (NP_DeallocateUTF8): 24044 (NP_UTF8FromString): 24045 (NP_UTF16FromString): 24046 (NP_StringLength): 24047 (NP_BoolFromBoolean): 24048 * bindings/NP_runtime.h: 24049 * bindings/c/c_instance.cpp: 24050 (CInstance::invokeMethod): 24051 * bindings/c/c_utility.cpp: 24052 (coerceValueToNPString): 24053 (convertValueToNPValueType): 24054 (convertNPValueTypeToValue): 24055 * bindings/c/c_utility.h: 24056 * bindings/test.js: 24057 * bindings/testC.js: Added. 24058 * bindings/testbindings.cpp: 24059 (logMessage): 24060 (setDoubleValue): 24061 (setIntValue): 24062 (setStringValue): 24063 (setBooleanValue): 24064 (getDoubleValue): 24065 (getIntValue): 24066 (getStringValue): 24067 (getBooleanValue): 24068 (myInterfaceInvoke): 24069 (myInterfaceAllocate): 24070 24071=== Safari-133 === 24072 240732004-03-19 Darin Adler <darin@apple.com> 24074 24075 Reviewed by Ken. 24076 24077 - fixed problem with methods like setUTCHour 24078 24079 * kjs/date_object.cpp: (DateProtoFuncImp::call): Fix conversion back to time_t to use the appropriate 24080 GMT vs. local time function based on the utc flag. 24081 240822004-03-17 Richard Williamson <rjw@apple.com> 24083 24084 Added a context parameter to result callbacks use by JavaScriptObject functions. This was a change requested by Eric Carlson on the QT plugin team. 24085 24086 Reviewed by Ken. 24087 24088 * bindings/NP_jsobject.cpp: 24089 (NP_Call): 24090 (NP_Evaluate): 24091 (NP_GetProperty): 24092 (NP_ToString): 24093 (NP_GetPropertyAtIndex): 24094 * bindings/NP_runtime.h: 24095 240962004-03-16 Richard Williamson <rjw@apple.com> 24097 24098 Fixed 3590169. Regression (crash) caused by the switch to MethodLists. Crash when attempting to invoke a method from JavaScript to Java that is not implemented. 24099 24100 Reviewed by John. 24101 24102 * bindings/jni/jni_class.cpp: 24103 (JavaClass::methodsNamed): 24104 241052004-03-15 Richard Williamson <rjw@apple.com> 24106 24107 Fixed 3570854. Don't attempt to convert Null to strings. We 24108 were incorrectly converting to "Null". 24109 24110 Actually fixed by Scott Kovatch. 24111 24112 Reviewed by Richard. 24113 24114 * bindings/jni/jni_utility.cpp: 24115 (KJS::Bindings::convertValueToJValue): 24116 24117=== Safari-132 === 24118 241192004-03-11 Richard Williamson <rjw@apple.com> 24120 24121 Stitched together the NP stuff to our language independent 24122 JavaScript binding stuff. Very close to being done. 24123 24124 Added program to test C bindings (and NP stuff). Just tests 24125 properties. Will add methods and JavaScript access, etc. 24126 24127 Updated Makefile.am to account for new bindings/c directory. 24128 24129 Change NP_UTF8 from "const char *" to "char" to allow for 24130 declarations like "const NP_UTF8 *" and "NP_UTF8 *". Ditto 24131 for NP_UTF16. 24132 24133 Added NP_IsValidIdentifier(). 24134 24135 Reviewed by Chris. 24136 24137 * JavaScriptCore.pbproj/project.pbxproj: 24138 * Makefile.am: 24139 * bindings/NP_jsobject.cpp: 24140 (identiferFromNPIdentifier): 24141 (NP_Evaluate): 24142 * bindings/NP_runtime.cpp: 24143 (NP_IdentifierFromUTF8): 24144 (NP_IsValidIdentifier): 24145 (NP_GetIdentifiers): 24146 (NP_UTF8FromIdentifier): 24147 (NP_SetExceptionWithUTF8): 24148 (NP_SetException): 24149 (NP_CreateStringWithUTF8): 24150 (NP_CreateStringWithUTF16): 24151 (NP_UTF8FromString): 24152 (NP_UTF16FromString): 24153 * bindings/NP_runtime.h: 24154 * bindings/c/c_class.cpp: Added. 24155 (CClass::_commonDelete): 24156 (CClass::_commonCopy): 24157 (CClass::_commonInit): 24158 (_createClassesByIsAIfNecessary): 24159 (CClass::classForIsA): 24160 (CClass::CClass): 24161 (CClass::name): 24162 (CClass::methodsNamed): 24163 (CClass::fieldNamed): 24164 * bindings/c/c_class.h: Added. 24165 (KJS::Bindings::CClass::~CClass): 24166 (KJS::Bindings::CClass::CClass): 24167 (KJS::Bindings::CClass::operator=): 24168 (KJS::Bindings::CClass::constructorAt): 24169 (KJS::Bindings::CClass::numConstructors): 24170 * bindings/c/c_instance.cpp: Added. 24171 (CInstance::CInstance): 24172 (CInstance::~CInstance): 24173 (CInstance::operator=): 24174 (CInstance::getClass): 24175 (CInstance::begin): 24176 (CInstance::end): 24177 (CInstance::invokeMethod): 24178 (CInstance::defaultValue): 24179 (CInstance::stringValue): 24180 (CInstance::numberValue): 24181 (CInstance::booleanValue): 24182 (CInstance::valueOf): 24183 * bindings/c/c_instance.h: Added. 24184 (KJS::Bindings::CInstance::getObject): 24185 * bindings/c/c_runtime.cpp: Added. 24186 (CField::valueFromInstance): 24187 (CField::setValueToInstance): 24188 * bindings/c/c_runtime.h: Added. 24189 (KJS::Bindings::CField::CField): 24190 (KJS::Bindings::CField::name): 24191 (KJS::Bindings::CField::type): 24192 (KJS::Bindings::CMethod::CMethod): 24193 (KJS::Bindings::CMethod::name): 24194 (KJS::Bindings::CMethod::numParameters): 24195 * bindings/c/c_utility.cpp: Added. 24196 (coerceValueToNPValueType): 24197 (convertValueToNPValueType): 24198 (convertNPValueTypeToValue): 24199 * bindings/c/c_utility.h: Added. 24200 * bindings/make_testbindings: 24201 * bindings/runtime.cpp: 24202 (Instance::createBindingForLanguageInstance): 24203 * bindings/runtime.h: 24204 (KJS::Bindings::Instance::): 24205 * bindings/testbindings.cpp: Added. 24206 (initializeIdentifiers): 24207 (myInterfaceHasProperty): 24208 (myInterfaceHasMethod): 24209 (myInterfaceGetProperty): 24210 (myInterfaceSetProperty): 24211 (myInterfaceInvoke): 24212 (myInterfaceAllocate): 24213 (myInterfaceInvalidate): 24214 (myInterfaceDeallocate): 24215 (GlobalImp::className): 24216 (readJavaScriptFromFile): 24217 (main): 24218 242192004-03-10 Richard Williamson <rjw@apple.com> 24220 24221 Made changes to support new asychronous approach to calls from 24222 plugin to JavaScript 24223 24224 Reviewed by Chris. 24225 24226 * bindings/NP_jsobject.cpp: 24227 (NP_Call): 24228 (NP_Evaluate): 24229 (NP_GetProperty): 24230 (NP_ToString): 24231 (NP_GetPropertyAtIndex): 24232 * bindings/NP_runtime.h: 24233 * bindings/make_testbindings: 24234 * bindings/runtime.cpp: 24235 (Instance::createBindingForLanguageInstance): 24236 242372004-03-10 Richard Williamson <rjw@apple.com> 24238 24239 Updated header to include proposed changes from 24240 plugin-futures list. Calls from plugin to JavaScript 24241 are now asynchronous. 24242 24243 Reviewed by Chris. 24244 24245 * bindings/NP_runtime.h: 24246 24247=== Safari-131 === 24248 242492004-03-04 Richard Williamson <rjw@apple.com> 24250 24251 Implementation of NP_JavaScriptObject. This is the 'C' class 24252 that wraps a JavaScript object. 24253 24254 Reviewed by Chris. 24255 24256 * JavaScriptCore.pbproj/project.pbxproj: 24257 * bindings/NP_jsobject.cpp: Added. 24258 (coerceValueToNPValueType): 24259 (convertValueToNPValueType): 24260 (convertNPValueTypeToValue): 24261 (listFromNPArray): 24262 (jsAllocate): 24263 (jsDeallocate): 24264 (identiferFromNPIdentifier): 24265 (NP_Call): 24266 (NP_Evaluate): 24267 (NP_GetProperty): 24268 (NP_SetProperty): 24269 (NP_RemoveProperty): 24270 (NP_ToString): 24271 (NP_GetPropertyAtIndex): 24272 (NP_SetPropertyAtIndex): 24273 * bindings/NP_runtime.cpp: 24274 (NP_ObjectAtIndex): 24275 * bindings/NP_runtime.h: 24276 * bindings/runtime_object.h: 24277 242782004-03-04 Richard Williamson <rjw@apple.com> 24279 24280 Added NP_Array implementation. 24281 24282 Changed NP_Boolean to just depend on two static instances, no 24283 space is required for values. 24284 24285 Reviewed by Chris. 24286 24287 * bindings/NP_runtime.cpp: 24288 (NP_CreateBoolean): 24289 (NP_BoolFromBoolean): 24290 (arrayAllocate): 24291 (arrayDeallocate): 24292 (NP_CreateArray): 24293 (NP_CreateArrayV): 24294 (NP_ObjectAtIndex): 24295 * bindings/NP_runtime.h: 24296 242972004-03-03 Darin Adler <darin@apple.com> 24298 24299 Reviewed by Vicki. 24300 24301 * English.lproj/InfoPlist.strings: Removed. No need to localize the version and 24302 copyright string, and that's all that was in here. 24303 * JavaScriptCore.pbproj/project.pbxproj: Removed InfoPlist.strings from build. 24304 243052004-03-03 Richard Williamson <rjw@apple.com> 24306 24307 More 'C' binding implementation. Fleshed out all the 24308 'primitive' data types. 24309 24310 Reviewed by Chris. 24311 24312 * bindings/NP_runtime.cpp: 24313 (NP_ReleaseObject): 24314 (numberAllocate): 24315 (stringAllocate): 24316 (stringDeallocate): 24317 (NP_CreateStringWithUTF8): 24318 (NP_CreateStringWithUTF16): 24319 (NP_UTF8FromString): 24320 (NP_UTF16FromString): 24321 (NP_StringLength): 24322 (booleanAllocate): 24323 (booleanDeallocate): 24324 (NP_CreateBoolean): 24325 (NP_BoolFromBoolean): 24326 (nullAllocate): 24327 (nullDeallocate): 24328 (NP_GetNull): 24329 (undefinedAllocate): 24330 (undefinedDeallocate): 24331 (NP_GetUndefined): 24332 * bindings/NP_runtime.h: 24333 243342004-03-03 Richard Williamson <rjw@apple.com> 24335 24336 More 'C' binding implementation. 24337 24338 Reviewed by Chris. 24339 24340 * bindings/NP_runtime.cpp: 24341 (identifierEqual): 24342 (identifierHash): 24343 (getIdentifierDictionary): 24344 (NP_IdentifierFromUTF8): 24345 (NP_UTF8FromIdentifier): 24346 (NP_CreateObject): 24347 (NP_ReleaseObject): 24348 (NP_IsKindOfClass): 24349 (numberCreate): 24350 (NP_CreateNumberWithInt): 24351 (NP_CreateNumberWithFloat): 24352 (NP_CreateNumberWithDouble): 24353 (NP_IntFromNumber): 24354 (NP_FloatFromNumber): 24355 (NP_DoubleFromNumber): 24356 * bindings/NP_runtime.h: 24357 243582004-03-02 Richard Williamson <rjw@apple.com> 24359 24360 Removed retain/release from NP_Class. Classes will not be allowed to implement their 24361 own customer retain/release scheme. 24362 24363 Reviewed by Chris. 24364 24365 * bindings/NP_runtime.cpp: 24366 (NP_RetainObject): 24367 (NP_ReleaseObject): 24368 * bindings/NP_runtime.h: 24369 243702004-03-02 Richard Williamson <rjw@apple.com> 24371 24372 C binding API. Partial implementation. 24373 24374 Completed ObjectiveC bindings (not based on the C API). These will re-implemented over the C binding API, but I wanted to get this code in the tree. 24375 24376 Factored root object reference counting scheme. It is now useful independent 24377 of LiveConnect. 24378 24379 Reviewed by Chris. 24380 24381 * JavaScriptCore.pbproj/project.pbxproj: 24382 * bindings/NP_runtime.cpp: Added. 24383 (NP_IdentifierFromUTF8): 24384 (NP_GetIdentifiers): 24385 (NP_UTF8FromIdentifier): 24386 (NP_CreateObject): 24387 (NP_RetainObject): 24388 (NP_ReleaseObject): 24389 (NP_IsKindOfClass): 24390 (NP_SetException): 24391 (NP_Call): 24392 (NP_Evaluate): 24393 (NP_GetProperty): 24394 (NP_SetProperty): 24395 (NP_RemoveProperty): 24396 (NP_ToString): 24397 (NP_GetPropertyAtIndex): 24398 (NP_SetPropertyAtIndex): 24399 (NP_CreateNumberWithInt): 24400 (NP_CreateNumberWithFloat): 24401 (NP_CreateNumberWithDouble): 24402 (NP_IntFromNumber): 24403 (NP_FloatFromNumber): 24404 (NP_DoubleFromNumber): 24405 (NP_CreateStringWithUTF8): 24406 (NP_CreateStringWithUTF16): 24407 (NP_UTF8FromString): 24408 (NP_UTF16FromString): 24409 (NP_CreateBoolean): 24410 (NP_BoolFromBoolean): 24411 (NP_GetNull): 24412 (NP_GetUndefined): 24413 (NP_CreateArray): 24414 (NP_CreateArrayV): 24415 (NP_ObjectAtIndex): 24416 * bindings/NP_runtime.h: Added. 24417 * bindings/jni/jni_jsobject.cpp: 24418 (JSObject::invoke): 24419 (JSObject::finalize): 24420 (JSObject::createNative): 24421 (JSObject::convertValueToJObject): 24422 * bindings/jni/jni_jsobject.h: 24423 * bindings/objc/objc_jsobject.h: 24424 * bindings/objc/objc_jsobject.mm: 24425 (rootForView): 24426 (windowJavaScriptObject): 24427 (-[JavaScriptObject initWithObjectImp:KJS::root:Bindings::]): 24428 (-[JavaScriptObject dealloc]): 24429 (-[JavaScriptObject _convertValueToObjcValue:KJS::]): 24430 (-[JavaScriptObject call:arguments:]): 24431 (-[JavaScriptObject evaluate:]): 24432 (-[JavaScriptObject getMember:]): 24433 (-[JavaScriptObject setMember:value:]): 24434 (-[JavaScriptObject removeMember:]): 24435 (-[JavaScriptObject toString]): 24436 (-[JavaScriptObject getSlot:]): 24437 (-[JavaScriptObject setSlot:value:]): 24438 * bindings/objc/objc_utility.h: 24439 * bindings/objc/objc_utility.mm: 24440 (KJS::Bindings::convertValueToObjcValue): 24441 * bindings/runtime_root.cpp: Added. 24442 (getReferencesByRootDictionary): 24443 (getReferencesDictionary): 24444 (KJS::Bindings::findReferenceDictionary): 24445 (KJS::Bindings::rootForImp): 24446 (KJS::Bindings::addNativeReference): 24447 (KJS::Bindings::removeNativeReference): 24448 (completedJavaScriptAccess): 24449 (initializeJavaScriptAccessLock): 24450 (lockJavaScriptAccess): 24451 (unlockJavaScriptAccess): 24452 (RootObject::dispatchToJavaScriptThread): 24453 (performJavaScriptAccess): 24454 (RootObject::setFindRootObjectForNativeHandleFunction): 24455 (RootObject::removeAllNativeReferences): 24456 * bindings/runtime_root.h: Added. 24457 (KJS::Bindings::RootObject::RootObject): 24458 (KJS::Bindings::RootObject::~RootObject): 24459 (KJS::Bindings::RootObject::setRootObjectImp): 24460 (KJS::Bindings::RootObject::rootObjectImp): 24461 (KJS::Bindings::RootObject::setInterpreter): 24462 (KJS::Bindings::RootObject::interpreter): 24463 (KJS::Bindings::RootObject::findRootObjectForNativeHandleFunction): 24464 (KJS::Bindings::RootObject::runLoop): 24465 (KJS::Bindings::RootObject::performJavaScriptSource): 24466 24467=== Safari-130 === 24468 24469=== Safari-129 === 24470 244712004-02-18 Richard Williamson <rjw@apple.com> 24472 24473 Added NSNumber/Number conversion. 24474 24475 Removed some unnecessary KJS:: namespace specifiers. 24476 24477 Reviewed by Ken. 24478 24479 * bindings/objc/objc_utility.mm: 24480 (KJS::Bindings::convertValueToObjcValue): 24481 (KJS::Bindings::convertObjcValueToValue): 24482 * bindings/runtime_array.h: 24483 244842004-02-18 Richard Williamson <rjw@apple.com> 24485 24486 Added support for export NSArrays. 24487 24488 Updated valueAt() to take an ExecState so we can throw 24489 JS exceptions. 24490 24491 Implemented excludeSelectorFromJavaScript: in ObjcClass. This allows 24492 ObjectiveC classes to control the visibility of their methods in 24493 JavaScript. 24494 24495 Reviewed by Ken. 24496 24497 * bindings/jni/jni_runtime.cpp: 24498 (JavaField::valueFromInstance): 24499 (JavaArray::valueAt): 24500 * bindings/jni/jni_runtime.h: 24501 * bindings/objc/objc_class.mm: 24502 (ObjcClass::methodsNamed): 24503 * bindings/objc/objc_runtime.h: 24504 (KJS::Bindings::ObjcArray::getObjcArray): 24505 * bindings/objc/objc_runtime.mm: 24506 (ObjcField::valueFromInstance): 24507 (ObjcField::setValueToInstance): 24508 (ObjcArray::ObjcArray): 24509 (ObjcArray::~ObjcArray): 24510 (ObjcArray::operator=): 24511 (ObjcArray::setValueAt): 24512 (ObjcArray::valueAt): 24513 (ObjcArray::getLength): 24514 * bindings/objc/objc_utility.mm: 24515 (KJS::Bindings::convertValueToObjcValue): 24516 (KJS::Bindings::convertObjcValueToValue): 24517 * bindings/runtime.cpp: 24518 (Instance::getValueOfField): 24519 * bindings/runtime.h: 24520 * bindings/runtime_array.cpp: 24521 (RuntimeArrayImp::get): 24522 * bindings/runtime_object.cpp: 24523 (RuntimeObjectImp::get): 24524 245252004-02-17 Richard Williamson <rjw@apple.com> 24526 24527 Added String <-> NSString conversion. 24528 Added tests of String <-> NSString conversion to test program. 24529 24530 Reviewed by Chris. 24531 24532 * bindings/objc/objc_utility.mm: 24533 (KJS::Bindings::convertValueToObjcValue): 24534 (KJS::Bindings::convertObjcValueToValue): 24535 * bindings/test.js: 24536 * bindings/testbindings.mm: 24537 (-[MyFirstInterface getString]): 24538 245392004-02-15 Darin Adler <darin@apple.com> 24540 24541 Reviewed by Dave. 24542 24543 * JavaScriptCore.pbproj/project.pbxproj: Tweak build styles a bit, fixing OptimizedWithSymbols, 24544 and removing redundant settings of things that match defaults in other build styles. 24545 245462004-02-13 Richard Williamson <rjw@apple.com> 24547 24548 Work towards the JavaScript ObjC bindings. The bindings now work for 24549 simple scalar types. testbindings.mm is an illustration of how the 24550 bindings work. 24551 24552 Reviewed by Ken. 24553 24554 * JavaScriptCore.pbproj/project.pbxproj: 24555 * Makefile.am: 24556 * bindings/jni/jni_class.cpp: 24557 (JavaClass::methodsNamed): 24558 * bindings/jni/jni_class.h: 24559 * bindings/jni/jni_instance.cpp: 24560 (JavaInstance::invokeMethod): 24561 * bindings/jni/jni_instance.h: 24562 * bindings/jni/jni_runtime.h: 24563 (KJS::Bindings::JavaMethod::returnType): 24564 * bindings/make_testbindings: Added. 24565 * bindings/objc/objc_class.h: Added. 24566 (KJS::Bindings::ObjcClass::~ObjcClass): 24567 (KJS::Bindings::ObjcClass::ObjcClass): 24568 (KJS::Bindings::ObjcClass::operator=): 24569 (KJS::Bindings::ObjcClass::constructorAt): 24570 (KJS::Bindings::ObjcClass::numConstructors): 24571 * bindings/objc/objc_class.mm: Added. 24572 (ObjcClass::_commonDelete): 24573 (ObjcClass::_commonCopy): 24574 (ObjcClass::_commonInit): 24575 (_createClassesByIsAIfNecessary): 24576 (ObjcClass::classForIsA): 24577 (ObjcClass::ObjcClass): 24578 (ObjcClass::name): 24579 (ObjcClass::methodsNamed): 24580 (ObjcClass::fieldNamed): 24581 * bindings/objc/objc_header.h: Added. 24582 * bindings/objc/objc_instance.h: Added. 24583 (KJS::Bindings::ObjcInstance::getObject): 24584 * bindings/objc/objc_instance.mm: Added. 24585 (ObjcInstance::ObjcInstance): 24586 (ObjcInstance::~ObjcInstance): 24587 (ObjcInstance::operator=): 24588 (ObjcInstance::begin): 24589 (ObjcInstance::end): 24590 (ObjcInstance::getClass): 24591 (ObjcInstance::invokeMethod): 24592 (ObjcInstance::defaultValue): 24593 (ObjcInstance::stringValue): 24594 (ObjcInstance::numberValue): 24595 (ObjcInstance::booleanValue): 24596 (ObjcInstance::valueOf): 24597 * bindings/objc/objc_jsobject.h: Added. 24598 * bindings/objc/objc_jsobject.mm: Added. 24599 * bindings/objc/objc_runtime.h: 24600 (KJS::Bindings::ObjcField::~ObjcField): 24601 (KJS::Bindings::ObjcField::ObjcField): 24602 (KJS::Bindings::ObjcField::operator=): 24603 (KJS::Bindings::ObjcMethod::ObjcMethod): 24604 (KJS::Bindings::ObjcMethod::~ObjcMethod): 24605 (KJS::Bindings::ObjcMethod::operator=): 24606 * bindings/objc/objc_runtime.mm: Added. 24607 (ObjcMethod::ObjcMethod): 24608 (ObjcMethod::name): 24609 (ObjcMethod::numParameters): 24610 (ObjcMethod::getMethodSignature): 24611 (ObjcField::ObjcField): 24612 (ObjcField::name): 24613 (ObjcField::type): 24614 (ObjcField::valueFromInstance): 24615 (ObjcField::setValueToInstance): 24616 * bindings/objc/objc_utility.h: Added. 24617 (KJS::Bindings::): 24618 * bindings/objc/objc_utility.mm: Added. 24619 (KJS::Bindings::JSMethodNameToObjCMethodName): 24620 (KJS::Bindings::convertValueToObjcValue): 24621 (KJS::Bindings::convertObjcValueToValue): 24622 (KJS::Bindings::objcValueTypeForType): 24623 * bindings/runtime.cpp: 24624 (MethodList::MethodList): 24625 (MethodList::operator=): 24626 (Instance::setValueOfField): 24627 (Instance::createBindingForLanguageInstance): 24628 (Instance::createRuntimeObject): 24629 * bindings/runtime.h: 24630 * bindings/runtime_method.cpp: 24631 (RuntimeMethodImp::RuntimeMethodImp): 24632 (RuntimeMethodImp::get): 24633 (RuntimeMethodImp::call): 24634 * bindings/runtime_method.h: 24635 * bindings/runtime_object.cpp: 24636 (RuntimeObjectImp::get): 24637 (RuntimeObjectImp::hasProperty): 24638 * bindings/test.js: Added. 24639 * bindings/testbindings.mm: Added. 24640 (-[MySecondInterface init]): 24641 (-[MyFirstInterface init]): 24642 (-[MyFirstInterface dealloc]): 24643 (+[MyFirstInterface JavaScriptNameForSelector:]): 24644 (-[MyFirstInterface getInt]): 24645 (-[MyFirstInterface setInt:]): 24646 (-[MyFirstInterface getMySecondInterface]): 24647 (-[MyFirstInterface logMessage:]): 24648 (GlobalImp::className): 24649 (readJavaScriptFromFile): 24650 (main): 24651 24652=== Safari-128 === 24653 246542004-02-08 Darin Adler <darin@apple.com> 24655 24656 Reviewed by Dave. 24657 24658 - fixed things seen in the profile, for a total speedup of 4% on cvs-base (including changes across all projects) 24659 24660 * JavaScriptCorePrefix.h: Add a workaround for a bug in our system headers that prevents the <ctype.h> 24661 macros from working right in C++ code that uses the <cctype> header. 24662 24663 * kjs/ustring.cpp: 24664 (KJS::inlineUTF8SequenceLengthNonASCII): Added. 24665 (KJS::UTF8SequenceLengthNonASCII): Added. 24666 (KJS::inlineUTF8SequenceLength): Added. 24667 (KJS::UTF8SequenceLength): Calls inlineUTF8SequenceLengthNonASCII now. 24668 (KJS::decodeUTF8Sequence): Use new inlineUTF8SequenceLengthNonASCII; faster for ASCII. 24669 (KJS::createSortedOffsetsArray): Add special case for 1, 2, and 3 offsets, so we don't do qsort for those. 24670 (KJS::convertUTF16OffsetsToUTF8Offsets): Use new inlineUTF8SequenceLengthNonASCII; faster for ASCII. 24671 (KJS::convertUTF8OffsetsToUTF16Offsets): Use new inlineUTF8SequenceLengthNonASCII; faster for ASCII. 24672 24673 - fixed the test program so it won't hit the interpreter lock assertion 24674 24675 * kjs/testkjs.cpp: (main): Just lock around the whole thing, since the test is singly threaded. 24676 24677=== Safari-127 === 24678 246792004-02-06 Richard Williamson <rjw@apple.com> 24680 24681 Fixed 3550242 and 3546977. The first diff prevents an assert from firing. The second diff prevents a JavaScript exception, caused be an invalid conversion, which has a downstream consequence of preventing a valid conversion. 24682 24683 Reviewed by John. 24684 24685 * bindings/jni/jni_jsobject.cpp: 24686 (JSObject::toString): 24687 * bindings/jni/jni_utility.cpp: 24688 (KJS::Bindings::convertValueToJValue): 24689 246902004-02-02 Darin Adler <darin@apple.com> 24691 24692 Reviewed by Maciej. 24693 24694 - fixed <rdar://problem/3546613>: array of negative size leads to crash (test page at oscar.the-rileys.net) 24695 24696 * kjs/array_object.cpp: 24697 (ArrayInstanceImp::ArrayInstanceImp): If the length is greater than 10,000, don't allocate an array until 24698 we start putting values in. This prevents new Array(2147483647) from causing trouble. 24699 (ArrayObjectImp::construct): Check number as described in specification, and raise a range error if the 24700 number is out of range. This prevents new Array(-1) from causing trouble. 24701 24702 - fixed <rdar://problem/3545756>: Math.round screws up on numbers bigger than 2^31 (incorrect results on HP-35 calculator page) 24703 24704 * kjs/math_object.cpp: (MathFuncImp::call): Change implementation to be much simpler and not involve 24705 casting to int. Results now match those in other browsers. 24706 247072004-02-02 Darin Adler <darin@apple.com> 24708 24709 Reviewed by Maciej. 24710 24711 - fixed <rdar://problem/3519285>: integer operations on large negative numbers yield bad results (discovered with "HTMLCrypt") 24712 - fixed other related overflow issues 24713 24714 * kjs/value.h: Changed return types of toInteger, toInt32, toUInt32, and toUInt16. 24715 * kjs/value.cpp: 24716 (ValueImp::toInteger): Change to return a double, since this operation, from the ECMA specification, 24717 must not restrict values to the range of a particular integer type. 24718 (ValueImp::toInt32): Used a sized integer type for the result of this function, and also added 24719 proper handling for negative results from fmod. 24720 (ValueImp::toUInt32): Ditto. 24721 (ValueImp::toUInt16): Ditto. 24722 (ValueImp::dispatchToUInt32): Changed result type from unsigned to uint32_t. 24723 24724 * kjs/array_object.cpp: (ArrayProtoFuncImp::call): Use a double instead of an int to handle 24725 out-of-integer-range values better in the slice function. 24726 * kjs/internal.cpp: (KJS::roundValue): Streamline the function, handling NAN and infinity properly. 24727 * kjs/number_object.cpp: (NumberProtoFuncImp::call): Use a double instead of an int to handle 24728 out-of-integer-range values better in the toString function. 24729 * kjs/string_object.cpp: (StringProtoFuncImp::call): Use a double instead of an int to handle 24730 out-of-integer-range values better in the charAt, charCodeAt, indexOf, lastIndexOf, slice, 24731 and substr functions. 24732 24733=== Safari-126 === 24734 247352004-01-30 Richard Williamson <rjw@apple.com> 24736 24737 Fixed 3542044. Create KJS::String using UString constructor instead of passing UTF8 string to char* constructor. 24738 24739 Reviewed by Darin. 24740 24741 * bindings/jni/jni_instance.cpp: 24742 (JavaInstance::stringValue): 24743 247442004-01-26 Darin Adler <darin@apple.com> 24745 24746 * Makefile.am: Switch from pbxbuild to xcodebuild. 24747 247482004-01-22 Richard Williamson <rjw@apple.com> 24749 24750 Added stubs for ObjC language binding to JavaScript. 24751 24752 * JavaScriptCore.pbproj/project.pbxproj: 24753 * bindings/jni/jni_runtime.h: 24754 * bindings/objc/objc_runtime.h: Added. 24755 (KJS::Bindings::ObjcParameter::ObjcParameter): 24756 (KJS::Bindings::ObjcParameter::~ObjcParameter): 24757 (KJS::Bindings::ObjcParameter::operator=): 24758 (KJS::Bindings::ObjcParameter::type): 24759 (KJS::Bindings::ObjcConstructor::ObjcConstructor): 24760 (KJS::Bindings::ObjcConstructor::~ObjcConstructor): 24761 (KJS::Bindings::ObjcConstructor::_commonCopy): 24762 (KJS::Bindings::ObjcConstructor::operator=): 24763 (KJS::Bindings::ObjcConstructor::value): 24764 (KJS::Bindings::ObjcConstructor::parameterAt): 24765 (KJS::Bindings::ObjcConstructor::numParameters): 24766 (KJS::Bindings::ObjcField::ObjcField): 24767 (KJS::Bindings::ObjcField::~ObjcField): 24768 * bindings/runtime.h: 24769 247702004-01-22 Richard Williamson <rjw@apple.com> 24771 24772 Simplified JavaString by using UString as backing store. This 24773 revealed a bug in CString's assignment operator which I fixed. 24774 24775 Removed some dead code. 24776 24777 Reviewed by John. 24778 24779 * bindings/jni/jni_runtime.h: 24780 (KJS::Bindings::JavaString::JavaString): 24781 (KJS::Bindings::JavaString::_commonInit): 24782 (KJS::Bindings::JavaString::UTF8String): 24783 (KJS::Bindings::JavaString::uchars): 24784 (KJS::Bindings::JavaString::length): 24785 (KJS::Bindings::JavaString::ustring): 24786 * bindings/runtime_object.cpp: 24787 (RuntimeObjectImp::RuntimeObjectImp): 24788 * bindings/runtime_object.h: 24789 * kjs/ustring.cpp: 24790 (KJS::CString::CString): 24791 (KJS::CString::operator=): 24792 24793=== Safari-125 === 24794 24795=== Safari-124 === 24796 247972004-01-16 Richard Williamson <rjw@apple.com> 24798 24799 Fixed 3525853. We weren't handling mapping to overloaded Java 24800 methods very well. Even though this is undefined the other 24801 browsers support it. Also fixed a bug with returning arrays 24802 from Java functions. 24803 24804 Reviewed by John. 24805 24806 * bindings/jni/jni_class.cpp: 24807 (JavaClass::_commonInit): 24808 (JavaClass::methodsNamed): 24809 * bindings/jni/jni_class.h: 24810 * bindings/jni/jni_instance.cpp: 24811 (JavaInstance::invokeMethod): 24812 * bindings/jni/jni_instance.h: 24813 * bindings/jni/jni_runtime.cpp: 24814 (JavaArray::convertJObjectToArray): 24815 (JavaField::valueFromInstance): 24816 (JavaMethod::signature): 24817 (JavaArray::valueAt): 24818 * bindings/jni/jni_runtime.h: 24819 * bindings/jni_jsobject.cpp: 24820 (JSObject::call): 24821 (JSObject::convertJObjectToValue): 24822 * bindings/runtime.cpp: 24823 (MethodList::addMethod): 24824 (MethodList::length): 24825 (MethodList::methodAt): 24826 (MethodList::~MethodList): 24827 * bindings/runtime.h: 24828 (KJS::Bindings::MethodList::MethodList): 24829 * bindings/runtime_method.cpp: 24830 (RuntimeMethodImp::RuntimeMethodImp): 24831 (RuntimeMethodImp::get): 24832 (RuntimeMethodImp::call): 24833 * bindings/runtime_method.h: 24834 * bindings/runtime_object.cpp: 24835 (RuntimeObjectImp::get): 24836 (RuntimeObjectImp::hasProperty): 24837 248382004-01-16 Richard Williamson <rjw@apple.com> 24839 24840 Fixed 3531229. Another place that needs the Push/PopLocalFrame 24841 protection implemented for 3530401. 24842 24843 Reviewed by John. 24844 24845 * bindings/runtime_method.cpp: 24846 (RuntimeMethodImp::call): 24847 248482004-01-15 Richard Williamson <rjw@apple.com> 24849 24850 Fixed 3530401. JNI doesn't cleanup local refs created on the 24851 main thread. IMO this is a bad bug in our JMI implementation. 24852 24853 To work-around the problem I explicitly delete all local refs. 24854 Further, I've added Push/PopLocalFrame calls to catch any refs 24855 that I may have missed. This will guarantee that we don't leak 24856 any Java references. 24857 24858 Reviewed by John. 24859 24860 * bindings/jni/jni_class.cpp: 24861 (JavaClass::_commonInit): 24862 (JavaClass::JavaClass): 24863 * bindings/jni/jni_instance.cpp: 24864 (JavaInstance::begin): 24865 (JavaInstance::end): 24866 * bindings/jni/jni_instance.h: 24867 * bindings/jni/jni_runtime.cpp: 24868 (JavaConstructor::JavaConstructor): 24869 (JavaMethod::JavaMethod): 24870 * bindings/jni_jsobject.cpp: 24871 (JSObject::listFromJArray): 24872 * bindings/runtime.h: 24873 (KJS::Bindings::Instance::begin): 24874 (KJS::Bindings::Instance::end): 24875 * bindings/runtime_object.cpp: 24876 (RuntimeObjectImp::get): 24877 (RuntimeObjectImp::put): 24878 (RuntimeObjectImp::canPut): 24879 (RuntimeObjectImp::hasProperty): 24880 (RuntimeObjectImp::defaultValue): 24881 248822004-01-15 Vicki Murley <vicki@apple.com> 24883 24884 Reviewed by Darin. 24885 24886 * JavaScriptCore.pbproj/project.pbxproj: Update copyright date to 2004. 24887 248882004-01-14 Richard Williamson <rjw@apple.com> 24889 24890 Fixed 3529466. With recent changes to Java plugin we must no 24891 longer call DeleteLocalRef(). Not a problem, it was an optimization anyway. 24892 24893 Reviewed by John. 24894 24895 * bindings/jni/jni_instance.cpp: 24896 (JObjectWrapper::JObjectWrapper): 24897 24898=== Safari-122 === 24899 249002004-01-14 Richard Williamson <rjw@apple.com> 24901 24902 Fixed 3529010. 24903 24904 Finalize may be called on an JSObject after we've already remove all our references. The assert in this case is firing because we've received a finalize call from Java for an instance that we no longer know about. The fix is to check in finalize that we're getting a call on an instance that we still care about. 24905 24906 Reviewed by John. 24907 24908 * bindings/jni_jsobject.cpp: 24909 (addJavaReference): 24910 (removeJavaReference): 24911 (RootObject::removeAllJavaReferencesForRoot): 24912 (JSObject::invoke): 24913 249142004-01-13 Richard Williamson <rjw@apple.com> 24915 24916 Fixed 3528324. 24917 24918 The run loop that is used to execute JavaScript (in practice, always the main run loop) is held in a class variable. It is set and retained once and should not be released. Unfortunately is it being released when the 'root' object on a LiveConnect applet is released. This has the symptom of eventually causing an deallocation of the main run loop! Usually after about 5 instantiations/destructions of a LiveConnect applet. The CFRelease of the run loop was removed. 24919 24920 Reviewed by Hyatt. 24921 24922 * bindings/jni_jsobject.h: 24923 (KJS::Bindings::RootObject::~RootObject): 24924 24925=== Safari-121 === 24926 24927=== Safari-120 === 24928 249292004-01-06 Richard Williamson <rjw@apple.com> 24930 24931 Fixed 3521814. Finalize messages weren't being dispatched! 24932 24933 Reviewed by John. 24934 24935 * bindings/jni_jsobject.cpp: 24936 (JSObject::invoke): 24937 249382004-01-05 Richard Williamson <rjw@apple.com> 24939 24940 Added cache of JNI method IDs to minimize allocations. This mitigates the problem 24941 described by 3515579. 24942 24943 Also cleanup up logging of Java exceptions. 24944 24945 Reviewed by John. 24946 24947 * bindings/jni/jni_class.cpp: 24948 (JavaClass::classForInstance): 24949 * bindings/jni/jni_instance.cpp: 24950 (JavaInstance::JavaInstance): 24951 (JavaInstance::getClass): 24952 (JavaInstance::invokeMethod): 24953 (JObjectWrapper::JObjectWrapper): 24954 (JObjectWrapper::~JObjectWrapper): 24955 * bindings/jni/jni_instance.h: 24956 (KJS::Bindings::JavaInstance::operator=): 24957 * bindings/jni/jni_runtime.cpp: 24958 (JavaMethod::JavaMethod): 24959 (JavaMethod::methodID): 24960 * bindings/jni/jni_runtime.h: 24961 (KJS::Bindings::JavaMethod::JavaMethod): 24962 * bindings/jni/jni_utility.cpp: 24963 (callJNIMethod): 24964 (callJNIMethodIDA): 24965 (callJNIMethodA): 24966 (KJS::Bindings::getMethodID): 24967 (KJS::Bindings::callJNIVoidMethodIDA): 24968 (KJS::Bindings::callJNIObjectMethodIDA): 24969 (KJS::Bindings::callJNIByteMethodIDA): 24970 (KJS::Bindings::callJNICharMethodIDA): 24971 (KJS::Bindings::callJNIShortMethodIDA): 24972 (KJS::Bindings::callJNIIntMethodIDA): 24973 (KJS::Bindings::callJNILongMethodIDA): 24974 (KJS::Bindings::callJNIFloatMethodIDA): 24975 (KJS::Bindings::callJNIDoubleMethodIDA): 24976 (KJS::Bindings::callJNIBooleanMethodIDA): 24977 (KJS::Bindings::getCharactersFromJStringInEnv): 24978 (KJS::Bindings::getUCharactersFromJStringInEnv): 24979 (KJS::Bindings::getJNIField): 24980 * bindings/jni/jni_utility.h: 24981 24982l2003-12-23 John Sullivan <sullivan@apple.com> 24983 24984 * JavaScriptCore.pbproj/project.pbxproj: 24985 Xcode version wars, harmless 24986 249872003-12-23 Darin Adler <darin@apple.com> 24988 24989 Reviewed by John (concept, not code, which is just the old code coming back). 24990 24991 - fixed 3518092: REGRESSION (100-119): getting NaN instead of HH:MM times 24992 24993 * kjs/date_object.cpp: Added back our CF-based implementations of gmtime, localtime, 24994 mktime, timegm, and time, because mktime, at least, won't handle a year of 0. 24995 249962003-12-19 Richard Williamson <rjw@apple.com> 24997 24998 Fixed 3515597. When an error occurs we need 24999 to make sure result values are zeroed. 25000 25001 Cleaned up logs by adding a newline. 25002 25003 Reviewed by John. 25004 25005 * bindings/jni/jni_utility.cpp: 25006 (KJS::Bindings::getJavaVM): 25007 (KJS::Bindings::getJNIEnv): 25008 (callJNIMethod): 25009 (callJNIMethodA): 25010 (KJS::Bindings::getJNIField): 25011 * bindings/jni_jsobject.cpp: 25012 (JSObject::convertValueToJObject): 25013 25014=== Safari-119 === 25015 250162003-12-17 Richard Williamson <rjw@apple.com> 25017 25018 Ensure that all the symbols we export are in the KJS 25019 namespace (3512245). 25020 25021 Also renamed JavaString.characters() to JavaString.UTF8String() 25022 for enhanced clarity. 25023 25024 Added some sanity checking to constructor of JObjectWrapper. 25025 25026 Reviewed by Dave. 25027 25028 * ChangeLog: 25029 * bindings/jni/jni_class.cpp: 25030 * bindings/jni/jni_class.h: 25031 * bindings/jni/jni_instance.cpp: 25032 (JavaInstance::invokeMethod): 25033 (JObjectWrapper::JObjectWrapper): 25034 * bindings/jni/jni_instance.h: 25035 * bindings/jni/jni_runtime.cpp: 25036 (JavaParameter::JavaParameter): 25037 (JavaField::JavaField): 25038 (JavaMethod::JavaMethod): 25039 (JavaMethod::signature): 25040 * bindings/jni/jni_runtime.h: 25041 (KJS::Bindings::JavaString::ascii): 25042 (KJS::Bindings::JavaString::UTF8String): 25043 (KJS::Bindings::JavaString::JavaString): 25044 (KJS::Bindings::JavaString::_commonInit): 25045 (KJS::Bindings::JavaString::uchars): 25046 (KJS::Bindings::JavaString::length): 25047 (KJS::Bindings::JavaString::ustring): 25048 (KJS::Bindings::JavaParameter::type): 25049 (KJS::Bindings::JavaField::name): 25050 (KJS::Bindings::JavaField::type): 25051 (KJS::Bindings::JavaMethod::name): 25052 (KJS::Bindings::JavaMethod::returnType): 25053 * bindings/jni/jni_utility.cpp: 25054 (KJS::Bindings::getJavaVM): 25055 (KJS::Bindings::getJNIEnv): 25056 (KJS::Bindings::callJNIVoidMethod): 25057 (KJS::Bindings::callJNIObjectMethod): 25058 (KJS::Bindings::callJNIBooleanMethod): 25059 (KJS::Bindings::callJNIByteMethod): 25060 (KJS::Bindings::callJNICharMethod): 25061 (KJS::Bindings::callJNIShortMethod): 25062 (KJS::Bindings::callJNIIntMethod): 25063 (KJS::Bindings::callJNILongMethod): 25064 (KJS::Bindings::callJNIFloatMethod): 25065 (KJS::Bindings::callJNIDoubleMethod): 25066 (KJS::Bindings::callJNIVoidMethodA): 25067 (KJS::Bindings::callJNIObjectMethodA): 25068 (KJS::Bindings::callJNIByteMethodA): 25069 (KJS::Bindings::callJNICharMethodA): 25070 (KJS::Bindings::callJNIShortMethodA): 25071 (KJS::Bindings::callJNIIntMethodA): 25072 (KJS::Bindings::callJNILongMethodA): 25073 (KJS::Bindings::callJNIFloatMethodA): 25074 (KJS::Bindings::callJNIDoubleMethodA): 25075 (KJS::Bindings::callJNIBooleanMethodA): 25076 (KJS::Bindings::getCharactersFromJString): 25077 (KJS::Bindings::releaseCharactersForJString): 25078 (KJS::Bindings::getCharactersFromJStringInEnv): 25079 (KJS::Bindings::releaseCharactersForJStringInEnv): 25080 (KJS::Bindings::getUCharactersFromJStringInEnv): 25081 (KJS::Bindings::releaseUCharactersForJStringInEnv): 25082 (KJS::Bindings::JNITypeFromClassName): 25083 (KJS::Bindings::signatureFromPrimitiveType): 25084 (KJS::Bindings::JNITypeFromPrimitiveType): 25085 (KJS::Bindings::getJNIField): 25086 (KJS::Bindings::convertValueToJValue): 25087 * bindings/jni/jni_utility.h: 25088 * bindings/jni_jsobject.cpp: 25089 (KJS::Bindings::JSObject::invoke): 25090 (KJS::Bindings::JSObject::JSObject): 25091 (KJS::Bindings::JSObject::call): 25092 (KJS::Bindings::JSObject::eval): 25093 (KJS::Bindings::JSObject::getMember): 25094 (KJS::Bindings::JSObject::setMember): 25095 (KJS::Bindings::JSObject::removeMember): 25096 (KJS::Bindings::JSObject::getSlot): 25097 (KJS::Bindings::JSObject::setSlot): 25098 (KJS::Bindings::JSObject::toString): 25099 (KJS::Bindings::JSObject::finalize): 25100 (KJS::Bindings::JSObject::createNative): 25101 (KJS::Bindings::JSObject::convertValueToJObject): 25102 (KJS::Bindings::JSObject::convertJObjectToValue): 25103 (KJS::Bindings::JSObject::listFromJArray): 25104 * bindings/jni_jsobject.h: 25105 * bindings/runtime.cpp: 25106 * bindings/runtime.h: 25107 * bindings/runtime_method.cpp: 25108 * bindings/runtime_method.h: 25109 25110=== Safari-118 === 25111 251122003-12-16 Richard Williamson <rjw@apple.com> 25113 25114 Ack! More assertions. Lock ALL entry points into the interpreter! 25115 (3511733). 25116 25117 Reviewed by Ken. 25118 25119 * bindings/jni_jsobject.cpp: 25120 (Bindings::JSObject::call): 25121 (Bindings::JSObject::eval): 25122 (Bindings::JSObject::getMember): 25123 (Bindings::JSObject::setMember): 25124 (Bindings::JSObject::removeMember): 25125 (Bindings::JSObject::getSlot): 25126 (Bindings::JSObject::setSlot): 25127 (Bindings::JSObject::convertJObjectToValue): 25128 251292003-12-15 Richard Williamson <rjw@apple.com> 25130 25131 Fixed a couple of snafus and removed some logging. 25132 25133 Reviewed by Maciej. 25134 25135 * bindings/jni_jsobject.cpp: 25136 (Bindings::performJavaScriptAccess): 25137 (Bindings::completedJavaScriptAccess): 25138 (Bindings::dispatchToJavaScriptThread): 25139 Removed some annoying JS_LOG clutter. 25140 25141 (Bindings::RootObject::removeAllJavaReferencesForRoot): 25142 Fixed allocation of key buffer that was called after it was needed. 25143 25144 (Bindings::JSObject::invoke): 25145 (Bindings::JSObject::JSObject): 25146 (Bindings::JSObject::getMember): 25147 (Bindings::JSObject::getSlot): 25148 Added additional interpreter locks around getMember and getSlot. 25149 These functions may cause allocation of JS impls. 25150 251512003-12-15 Richard Williamson <rjw@apple.com> 25152 25153 args weren't passed to 'call' invocation. d'oh. 25154 lock interpreter when we create instances of JS impls. 25155 25156 Reviewed by Maciej. 25157 25158 * bindings/jni_jsobject.cpp: 25159 (Bindings::JSObject::call): 25160 (Bindings::JSObject::eval): 25161 (Bindings::JSObject::getMember): 25162 (Bindings::JSObject::setMember): 25163 (Bindings::JSObject::getSlot): 25164 (Bindings::JSObject::convertValueToJObject): 25165 (Bindings::JSObject::convertJObjectToValue): 25166 (Bindings::JSObject::listFromJArray): 25167 * bindings/jni_jsobject.h: 25168 251692003-12-15 Richard Williamson <rjw@apple.com> 25170 25171 Last piece of LiveConnect! This checkin adds implementation 25172 of the Java to JavaScript object conversion functions. 25173 25174 Reviewed by John. 25175 25176 * bindings/jni/jni_instance.cpp: 25177 (JavaInstance::invokeMethod): 25178 * bindings/jni/jni_utility.cpp: 25179 * bindings/jni/jni_utility.h: 25180 * bindings/jni_jsobject.cpp: 25181 (Bindings::JSObject::invoke): 25182 (Bindings::JSObject::call): 25183 (Bindings::JSObject::eval): 25184 (Bindings::JSObject::getMember): 25185 (Bindings::JSObject::setMember): 25186 (Bindings::JSObject::getSlot): 25187 (Bindings::JSObject::setSlot): 25188 (Bindings::JSObject::createNative): 25189 (Bindings::JSObject::convertValueToJObject): 25190 (Bindings::JSObject::convertJObjectToValue): 25191 (Bindings::JSObject::listFromJArray): 25192 * bindings/jni_jsobject.h: 25193 (Bindings::): 25194 * bindings/runtime_method.cpp: 25195 (RuntimeMethodImp::get): 25196 (RuntimeMethodImp::codeType): 25197 (RuntimeMethodImp::execute): 25198 251992003-12-12 Richard Williamson <rjw@apple.com> 25200 25201 Added implementation of stubs in JSObject. All that 25202 remains is a couple of simple conversion functions stubs and 25203 we're done with LiveConnect. Also, changed string passing to 25204 JS to use uchars instead of chars. 25205 25206 Reviewed by Maciej. 25207 25208 * bindings/jni/jni_runtime.h: 25209 (Bindings::JavaString::JavaString): 25210 (Bindings::JavaString::_commonInit): 25211 (Bindings::JavaString::_commonCopy): 25212 (Bindings::JavaString::_commonDelete): 25213 (Bindings::JavaString::~JavaString): 25214 (Bindings::JavaString::operator=): 25215 (Bindings::JavaString::uchars): 25216 (Bindings::JavaString::length): 25217 (Bindings::JavaString::ustring): 25218 * bindings/jni/jni_utility.cpp: 25219 (getUCharactersFromJStringInEnv): 25220 (releaseUCharactersForJStringInEnv): 25221 (convertValueToJObject): 25222 (convertJObjectToValue): 25223 * bindings/jni/jni_utility.h: 25224 * bindings/jni_jsobject.cpp: 25225 (Bindings::JSObject::invoke): 25226 (Bindings::JSObject::call): 25227 (Bindings::JSObject::eval): 25228 (Bindings::JSObject::getMember): 25229 (Bindings::JSObject::setMember): 25230 (Bindings::JSObject::removeMember): 25231 (Bindings::JSObject::getSlot): 25232 (Bindings::JSObject::setSlot): 25233 * bindings/jni_jsobject.h: 25234 252352003-12-12 Richard Williamson <rjw@apple.com> 25236 25237 Ensure that all calls from Java into JavaScript are 25238 performed on a designated thread (the main thread). 25239 25240 Reviewed by Ken. 25241 25242 * bindings/jni_jsobject.cpp: 25243 (isJavaScriptThread): 25244 (rootForImp): 25245 (Bindings::performJavaScriptAccess): 25246 (Bindings::completedJavaScriptAccess): 25247 (Bindings::initializeJavaScriptAccessLock): 25248 (Bindings::lockJavaScriptAccess): 25249 (Bindings::unlockJavaScriptAccess): 25250 (Bindings::dispatchToJavaScriptThread): 25251 (Bindings::RootObject::setFindRootObjectForNativeHandleFunction): 25252 (Bindings::RootObject::removeAllJavaReferencesForRoot): 25253 (Bindings::JSObject::invoke): 25254 (Bindings::JSObject::JSObject): 25255 (Bindings::JSObject::call): 25256 (Bindings::JSObject::eval): 25257 (Bindings::JSObject::getMember): 25258 (Bindings::JSObject::setMember): 25259 (Bindings::JSObject::removeMember): 25260 (Bindings::JSObject::getSlot): 25261 (Bindings::JSObject::setSlot): 25262 (Bindings::JSObject::toString): 25263 (Bindings::JSObject::finalize): 25264 (Bindings::JSObject::getWindow): 25265 * bindings/jni_jsobject.h: 25266 (Bindings::RootObject::~RootObject): 25267 (Bindings::RootObject::findRootObjectForNativeHandleFunction): 25268 (Bindings::RootObject::runLoop): 25269 (Bindings::RootObject::performJavaScriptSource): 25270 (Bindings::): 25271 252722003-12-11 Richard Williamson <rjw@apple.com> 25273 25274 Added support for calling a JavaScript function from 25275 Java. Right now this only works for void func(void) 25276 functions, but the conversion of args and return values 25277 will come shortly. 25278 25279 Cleaned up and verified reference counting scheme, and 25280 dereferencing of vended JavaScript objects when applet is 25281 destroyed (actually when part is destroyed). 25282 25283 Removed link hack for testkjs now that the Java folks think 25284 they have a solution for the 1.4.2 JavaVM link problem. Although 25285 Greg B. thinks his solution may cause problems for the 1.3.1 25286 version of the VM!?! 25287 25288 Reviewed by Ken. 25289 25290 * Makefile.am: 25291 * bindings/jni/jni_runtime.h: 25292 (Bindings::JavaString::JavaString): 25293 * bindings/jni/jni_utility.cpp: 25294 (convertValueToJValue): 25295 (convertValueToJObject): 25296 (listFromJArray): 25297 * bindings/jni/jni_utility.h: 25298 * bindings/jni_jsobject.cpp: 25299 (KJS_setFindRootObjectForNativeHandleFunction): 25300 (KJS_findRootObjectForNativeHandleFunction): 25301 (getReferencesByRootDictionary): 25302 (getReferencesDictionary): 25303 (findReferenceDictionary): 25304 (rootForImp): 25305 (addJavaReference): 25306 (removeJavaReference): 25307 * bindings/jni_jsobject.h: 25308 (Bindings::RootObject::RootObject): 25309 (Bindings::RootObject::~RootObject): 25310 (Bindings::RootObject::setRootObjectImp): 25311 (Bindings::RootObject::rootObjectImp): 25312 (Bindings::RootObject::setInterpreter): 25313 (Bindings::RootObject::interpreter): 25314 25315=== Safari-117 === 25316 253172003-12-10 Darin Adler <darin@apple.com> 25318 25319 Reviewed by Maciej. 25320 25321 - fixed regression in JavaScript tests reported by the KDE guys 25322 - fixed 3506345: REGRESSION (115-116): VIP: chordfind.com no longer displays chords 25323 25324 * kjs/ustring.h: Add tolerateEmptyString parameter to toDouble and toULong. 25325 * kjs/ustring.cpp: 25326 (KJS::UString::toDouble): Separate the "tolerant" parameter into two separate ones: 25327 tolerateTrailingJunk and tolerateEmptyString. Add new overloads; better for code size 25328 and binary compatibility than default parameter values. 25329 (KJS::UString::toULong): Pass tolerateEmptyString down to toDouble. Add new overload. 25330 25331 * kjs/string_object.cpp: (StringProtoFuncImp::call): Pass false for the new 25332 "tolerate empty string" parameter. 25333 253342003-12-10 Richard Williamson <rjw@apple.com> 25335 25336 Added code to manage reference counting of JavaScript 25337 objects passed to Java. Also added implementation of 25338 KJS_JSCreateNativeJSObject. This is the function that 25339 provides the root object to Java (KJS::Window). 25340 25341 Reviewed by Hyatt. 25342 25343 * JavaScriptCore.pbproj/project.pbxproj: 25344 * bindings/jni_jsobject.cpp: 25345 (KJS_setFindObjectForNativeHandleFunction): 25346 (KJS_findObjectForNativeHandleFunction): 25347 (getReferencesByOwnerDictionary): 25348 (getReferencesDictionary): 25349 (findReferenceDictionary): 25350 (addJavaReference): 25351 (removeJavaReference): 25352 (removeAllJavaReferencesForOwner): 25353 * bindings/jni_jsobject.h: 25354 253552003-12-09 Richard Williamson <rjw@apple.com> 25356 25357 LiveConnect stubs that correspond to the native methods 25358 on JSObject. These will be called from the new Java plugin 25359 when an instance of JSObject is instantiated and messaged. 25360 When these are implemented the Java will be able to originate 25361 calls into JavaScript. 25362 25363 Also a temporary work-around added to Makefile.am to solve 25364 a link problem. The 1.4.2 JavaVM accidentally links against 25365 libobjc. This call a failure linking testkjs. Mike Hay is 25366 working with someone to fix the problem (3505587). 25367 25368 Reviewed by Chris. 25369 25370 * JavaScriptCore.pbproj/project.pbxproj: 25371 * Makefile.am: 25372 * bindings/jni_jsobject.cpp: Added. 25373 (KJS_JSCreateNativeJSObject): 25374 (KJS_JSObject_JSFinalize): 25375 (KJS_JSObject_JSObjectCall): 25376 (KJS_JSObject_JSObjectEval): 25377 (KJS_JSObject_JSObjectGetMember): 25378 (KJS_JSObject_JSObjectSetMember): 25379 (KJS_JSObject_JSObjectRemoveMember): 25380 (KJS_JSObject_JSObjectGetSlot): 25381 (KJS_JSObject_JSObjectSetSlot): 25382 (KJS_JSObject_JSObjectToString): 25383 * bindings/jni_jsobject.h: Added. 25384 253852003-12-09 Maciej Stachowiak <mjs@apple.com> 25386 25387 Reviewed by John. 25388 25389 <rdar://problem/3505183>: JavaScriptCore should assert that interpreter is locked in collector 25390 25391 * kjs/collector.cpp: 25392 (KJS::Collector::allocate): Assert that interpreter lock count is not 0. 25393 (KJS::Collector::collect): likewise 25394 253952003-12-08 Richard Williamson <rjw@apple.com> 25396 25397 LiveConnect: The last piece of the JavaScript side of the 25398 LiveConnect implementation. This change adds support for 25399 setting/getting values from Java arrays in JavaScript. 25400 25401 Reviewed by John. 25402 25403 * bindings/jni/jni_instance.h: 25404 * bindings/jni/jni_runtime.cpp: 25405 (JavaField::JavaField): 25406 (convertJObjectToArray): 25407 (JavaArray::JavaArray): 25408 (JavaArray::~JavaArray): 25409 (JavaArray::setValueAt): 25410 (JavaArray::valueAt): 25411 (JavaArray::getLength): 25412 * bindings/jni/jni_runtime.h: 25413 (Bindings::JavaArray::operator=): 25414 (Bindings::JavaArray::javaArray): 25415 * bindings/jni/jni_utility.cpp: 25416 (JNITypeFromPrimitiveType): 25417 (convertValueToJValue): 25418 * bindings/jni/jni_utility.h: 25419 * bindings/runtime.h: 25420 * bindings/runtime_array.cpp: 25421 (RuntimeArrayImp::RuntimeArrayImp): 25422 (RuntimeArrayImp::~RuntimeArrayImp): 25423 (RuntimeArrayImp::get): 25424 (RuntimeArrayImp::put): 25425 (RuntimeArrayImp::hasProperty): 25426 * bindings/runtime_array.h: 25427 (KJS::RuntimeArrayImp::getLength): 25428 (KJS::RuntimeArrayImp::getConcreteArray): 25429 * bindings/runtime_object.cpp: 25430 (RuntimeObjectImp::get): 25431 (RuntimeObjectImp::canPut): 25432 (RuntimeObjectImp::hasProperty): 25433 254342003-12-05 Richard Williamson <rjw@apple.com> 25435 25436 LiveConnect: Part 1 of supporting JS bindings to 25437 native language arrays. 25438 25439 Reviewed by Chris. 25440 25441 * JavaScriptCore.pbproj/project.pbxproj: 25442 * bindings/jni/jni_runtime.cpp: 25443 (JavaField::JavaField): 25444 (convertJObjectToArray): 25445 (JavaField::valueFromInstance): 25446 (JavaField::setValueToInstance): 25447 * bindings/jni/jni_runtime.h: 25448 * bindings/runtime.cpp: 25449 (Instance::setValueOfField): 25450 * bindings/runtime.h: 25451 (Bindings::Array::~Array): 25452 254532003-12-04 Richard Williamson <rjw@apple.com> 25454 25455 LiveConnect: Moved defaultValue into concrete implementation because 25456 more intelligent conversion can be perform with knowledge 25457 of the class of the original instance. 25458 25459 Reviewed by Chris. 25460 25461 * bindings/jni/jni_class.cpp: 25462 (JavaClass::isNumberClass): 25463 (JavaClass::isBooleanClass): 25464 (JavaClass::isStringClass): 25465 * bindings/jni/jni_class.h: 25466 * bindings/jni/jni_instance.cpp: 25467 (JavaInstance::defaultValue): 25468 (JavaInstance::valueOf): 25469 * bindings/jni/jni_instance.h: 25470 (Bindings::JavaInstance::javaInstance): 25471 * bindings/runtime.h: 25472 * bindings/runtime_object.cpp: 25473 (RuntimeObjectImp::defaultValue): 25474 254752003-12-04 Richard Williamson <rjw@apple.com> 25476 25477 LiveConnect: Added support for setting the value of Java 25478 fields. 25479 25480 Reviewed by Chris. 25481 25482 * bindings/jni/jni_instance.cpp: 25483 (JavaInstance::invokeMethod): 25484 * bindings/jni/jni_runtime.cpp: 25485 (JavaParameter::JavaParameter): 25486 (JavaField::JavaField): 25487 (JavaField::valueFromInstance): 25488 (JavaField::setValueToInstance): 25489 (JavaMethod::JavaMethod): 25490 * bindings/jni/jni_runtime.h: 25491 (Bindings::JavaField::getJNIType): 25492 * bindings/jni/jni_utility.cpp: 25493 (JNITypeFromClassName): 25494 (convertValueToJValue): 25495 * bindings/jni/jni_utility.h: 25496 * bindings/runtime.cpp: 25497 (Instance::setValueOfField): 25498 * bindings/runtime.h: 25499 * bindings/runtime_object.cpp: 25500 (RuntimeObjectImp::get): 25501 (RuntimeObjectImp::put): 25502 (RuntimeObjectImp::defaultValue): 25503 255042003-12-04 Richard Williamson <rjw@apple.com> 25505 25506 Added support for string conversions. 25507 Changed various JavaString member variables to be inline. 25508 Implemented defaultValue for context relevant type coercion. 25509 25510 Reviewed by Chris. 25511 25512 * bindings/jni/jni_class.cpp: 25513 (JavaClass::JavaClass): 25514 (JavaClass::setClassName): 25515 (JavaClass::classForInstance): 25516 * bindings/jni/jni_class.h: 25517 * bindings/jni/jni_instance.cpp: 25518 (JavaInstance::stringValue): 25519 (JavaInstance::numberValue): 25520 (JavaInstance::booleanValue): 25521 (JavaInstance::invokeMethod): 25522 * bindings/jni/jni_instance.h: 25523 * bindings/jni/jni_runtime.cpp: 25524 (JavaParameter::JavaParameter): 25525 (JavaField::JavaField): 25526 (JavaMethod::JavaMethod): 25527 (appendClassName): 25528 (JavaMethod::signature): 25529 * bindings/jni/jni_runtime.h: 25530 (Bindings::JavaString::JavaString): 25531 (Bindings::JavaString::~JavaString): 25532 (Bindings::JavaString::operator=): 25533 (Bindings::JavaString::characters): 25534 (Bindings::JavaParameter::JavaParameter): 25535 (Bindings::JavaParameter::~JavaParameter): 25536 (Bindings::JavaParameter::operator=): 25537 (Bindings::JavaParameter::type): 25538 (Bindings::JavaField::JavaField): 25539 (Bindings::JavaField::~JavaField): 25540 (Bindings::JavaField::operator=): 25541 (Bindings::JavaField::name): 25542 (Bindings::JavaField::type): 25543 (Bindings::JavaMethod::JavaMethod): 25544 (Bindings::JavaMethod::_commonDelete): 25545 (Bindings::JavaMethod::name): 25546 (Bindings::JavaMethod::returnType): 25547 * bindings/jni/jni_utility.cpp: 25548 (convertValueToJValue): 25549 * bindings/runtime.h: 25550 (Bindings::Instance::valueOf): 25551 * bindings/runtime_method.cpp: 25552 (RuntimeMethodImp::call): 25553 * bindings/runtime_object.cpp: 25554 (RuntimeObjectImp::RuntimeObjectImp): 25555 (RuntimeObjectImp::get): 25556 (RuntimeObjectImp::defaultValue): 25557 * bindings/runtime_object.h: 25558 (KJS::RuntimeObjectImp::classInfo): 25559 25560=== Safari-116 === 25561 255622003-12-03 Richard Williamson <rjw@apple.com> 25563 25564 LiveConnect: Added support for parameter passing to Java and conversion 25565 of return values. 25566 25567 Reviewed by Chris. 25568 25569 * bindings/jni/jni_instance.cpp: 25570 (JavaInstance::invokeMethod): 25571 * bindings/jni/jni_instance.h: 25572 * bindings/jni/jni_runtime.cpp: 25573 (JavaParameter::JavaParameter): 25574 (JavaMethod::JavaMethod): 25575 (JavaMethod::signature): 25576 * bindings/jni/jni_runtime.h: 25577 (Bindings::JavaParameter::JavaParameter): 25578 (Bindings::JavaParameter::operator=): 25579 (Bindings::JavaParameter::getJNIType): 25580 * bindings/jni/jni_utility.cpp: 25581 (callJNIBooleanMethodA): 25582 (convertValueToJValue): 25583 * bindings/jni/jni_utility.h: 25584 * bindings/runtime.h: 25585 * bindings/runtime_method.cpp: 25586 (RuntimeMethodImp::call): 25587 * bindings/runtime_object.cpp: 25588 (RuntimeObjectImp::get): 25589 255902003-12-02 Richard Williamson <rjw@apple.com> 25591 25592 Added support for calling simple methods in Java from JavaScript. 25593 (void return and no parameters). Yay, LiveConnect lives. 25594 25595 Still need write argument and return value conversion code. 25596 25597 Reviewed by Chris. 25598 25599 * JavaScriptCore.pbproj/project.pbxproj: 25600 * bindings/jni/jni_instance.cpp: 25601 (JavaInstance::getClass): 25602 (JavaInstance::invokeMethod): 25603 * bindings/jni/jni_instance.h: 25604 * bindings/jni/jni_runtime.cpp: 25605 (JavaMethod::JavaMethod): 25606 (JavaMethod::signature): 25607 (JavaMethod::JNIReturnType): 25608 * bindings/jni/jni_runtime.h: 25609 (Bindings::JavaMethod::_commonDelete): 25610 (Bindings::JavaMethod::_commonCopy): 25611 (Bindings::JavaMethod::name): 25612 * bindings/jni/jni_utility.cpp: 25613 (signatureFromPrimitiveType): 25614 * bindings/jni/jni_utility.h: 25615 * bindings/runtime.h: 25616 * bindings/runtime_method.cpp: Added. 25617 (RuntimeMethodImp::RuntimeMethodImp): 25618 (RuntimeMethodImp::~RuntimeMethodImp): 25619 (RuntimeMethodImp::get): 25620 (RuntimeMethodImp::implementsCall): 25621 (RuntimeMethodImp::call): 25622 (RuntimeMethodImp::codeType): 25623 (RuntimeMethodImp::execute): 25624 * bindings/runtime_method.h: Added. 25625 * bindings/runtime_object.cpp: 25626 (RuntimeObjectImp::RuntimeObjectImp): 25627 (RuntimeObjectImp::get): 25628 * bindings/runtime_object.h: 25629 * kjs/function.cpp: 25630 (FunctionImp::FunctionImp): 25631 * kjs/interpreter.h: 25632 256332003-12-01 Darin Adler <darin@apple.com> 25634 25635 Reviewed by Maciej. 25636 25637 - fixed 3493799: JavaScript string.replace expands $ if it's the last character in replacement string 25638 25639 * kjs/ustring.cpp: (KJS::UString::toDouble): Fix backwards handling of the "tolerant" boolean. 25640 This indirectly caused the string.replace bug. 25641 256422003-12-02 Maciej Stachowiak <mjs@apple.com> 25643 25644 Merged patches from Harri Porten and David Faure to fix: 25645 25646 <rdar://problem/3497643>: reproducible crash printing self-referential array 25647 25648 * kjs/array_object.cpp: 25649 (ArrayProtoFuncImp::call): Break out of the loop if an exception was thrown. 25650 * kjs/nodes.cpp: 25651 (FunctionCallNode::evaluate): Move function call depth check from here... 25652 * kjs/object.cpp: 25653 (KJS::Object::call): ...to here. 25654 * kjs/object.h: Un-inline Object::call now that it does more. 25655 256562003-12-01 Richard Williamson <rjw@apple.com> 25657 25658 Fixed mistake in method signatures used to get boolean and integer fields. 25659 25660 Reviewed by Chris. 25661 25662 * bindings/jni/jni_runtime.cpp: 25663 (JavaField::valueFromInstance): 25664 256652003-12-01 Richard Williamson <rjw@apple.com> 25666 25667Fixed parameter passing to applet. Child elements are NOT valid in setStyle(). So we now create the widget before needed with createWidgetIfNecessary. This either happens when doing the first layout, or when JavaScript first references the applet element. 25668 25669Fixed early delete of the the main applet instance. When the JS collector cleaned up the last JS object referring to the applet instance we were deleting the java instance. This caused the applet instance cached on the applet element to be invalid. The applet instance is the only Java object not to be cleaned up by the JS collector. 25670 25671Added support for getting at Java object fields. 25672 25673 Reviewed by Chris. 25674 25675 * JavaScriptCore.pbproj/project.pbxproj: 25676 * Makefile.am: 25677 * bindings/jni/jni_instance.cpp: 25678 (JObjectWrapper::JObjectWrapper): 25679 * bindings/jni/jni_instance.h: 25680 (Bindings::JObjectWrapper::~JObjectWrapper): 25681 * bindings/jni/jni_runtime.cpp: 25682 (JavaField::valueFromInstance): 25683 * bindings/runtime_object.cpp: 25684 (RuntimeObjectImp::~RuntimeObjectImp): 25685 (RuntimeObjectImp::RuntimeObjectImp): 25686 (RuntimeObjectImp::get): 25687 (RuntimeObjectImp::deleteProperty): 25688 * bindings/runtime_object.h: 25689 25690=== Safari-115 === 25691 256922003-11-21 Maciej Stachowiak <mjs@apple.com> 25693 25694 Patch from Harri Porten, reviewed by me. 25695 25696 - fixed 3491712 - String slice with negative arguments does not offset from end of string 25697 25698 * kjs/string_object.cpp: 25699 (StringProtoFuncImp::call): Handle negative arguments as offsets from end by 25700 adding length and clamping to [0,length-1]. 25701 257022003-11-21 Maciej Stachowiak <mjs@apple.com> 25703 25704 Patch from Harri Porten, reviewed by me. 25705 25706 - fixed 3491709 - using Function.apply with a primitive type as the arg list causes crash 25707 25708 * kjs/function_object.cpp: 25709 (FunctionProtoFuncImp::call): Nest parentheses properly. 25710 257112003-11-20 Richard Williamson <rjw@apple.com> 25712 25713 More LiveConnect stuff. Primitive Java fields are now 25714 accessible from JavaScript! Yay! 25715 25716 Reviewed by Maciej. 25717 25718 * bindings/jni/jni_class.cpp: 25719 (JavaClass::methodNamed): 25720 (JavaClass::fieldNamed): 25721 * bindings/jni/jni_class.h: 25722 (Bindings::JavaClass::_commonDelete): 25723 * bindings/jni/jni_instance.cpp: 25724 (JavaInstance::JavaInstance): 25725 (JavaInstance::~JavaInstance): 25726 (JavaInstance::getClass): 25727 * bindings/jni/jni_instance.h: 25728 (Bindings::JavaInstance::javaInstance): 25729 * bindings/jni/jni_runtime.cpp: 25730 (JavaField::JavaField): 25731 (JavaField::valueFromInstance): 25732 * bindings/jni/jni_runtime.h: 25733 (Bindings::JavaField::JavaField): 25734 (Bindings::JavaField::~JavaField): 25735 (Bindings::JavaField::operator=): 25736 * bindings/jni/jni_utility.cpp: 25737 (callJNIMethod): 25738 (callJNIMethodA): 25739 (callJNIVoidMethod): 25740 (callJNIObjectMethod): 25741 (callJNIBooleanMethod): 25742 (callJNIByteMethod): 25743 (callJNICharMethod): 25744 (callJNIShortMethod): 25745 (callJNIIntMethod): 25746 (callJNILongMethod): 25747 (callJNIFloatMethod): 25748 (callJNIDoubleMethod): 25749 (callJNIVoidMethodA): 25750 (callJNIObjectMethodA): 25751 (callJNIByteMethodA): 25752 (callJNICharMethodA): 25753 (callJNIShortMethodA): 25754 (callJNIIntMethodA): 25755 (callJNILongMethodA): 25756 (callJNIFloatMethodA): 25757 (callJNIDoubleMethodA): 25758 (releaseCharactersForJStringInEnv): 25759 (primitiveTypeFromClassName): 25760 (getJNIField): 25761 * bindings/jni/jni_utility.h: 25762 * bindings/runtime.cpp: 25763 (Instance::createBindingForLanguageInstance): 25764 (Instance::getValueOfField): 25765 * bindings/runtime.h: 25766 * bindings/runtime_object.cpp: 25767 (RuntimeObjectImp::get): 25768 257692003-11-20 Richard Williamson <rjw@apple.com> 25770 25771 More LiveConnect stuff. 25772 25773 Reviewed by Chris. 25774 25775 * bindings/jni/jni_class.cpp: 25776 (JavaClass::classForName): 25777 (JavaClass::classForInstance): 25778 * bindings/jni/jni_instance.cpp: 25779 (JavaInstance::getValueOfField): 25780 * bindings/jni/jni_instance.h: 25781 (Bindings::JObjectWrapper::JObjectWrapper): 25782 * bindings/jni/jni_runtime.h: 25783 (Bindings::JavaConstructor::~JavaConstructor): 25784 (Bindings::JavaConstructor::operator=): 25785 (Bindings::JavaMethod::JavaMethod): 25786 (Bindings::JavaMethod::_commonDelete): 25787 (Bindings::JavaMethod::signature): 25788 * bindings/jni/jni_utility.cpp: 25789 (getJNIEnv): 25790 (attachToJavaVM): 25791 * bindings/jni/jni_utility.h: 25792 * bindings/runtime.h: 25793 * bindings/runtime_object.cpp: 25794 (RuntimeObjectImp::~RuntimeObjectImp): 25795 (RuntimeObjectImp::get): 25796 * bindings/runtime_object.h: 25797 257982003-11-19 Richard Williamson <rjw@apple.com> 25799 25800 More LiveConnect stuff. 25801 25802 Reviewed by Ken. 25803 25804 * JavaScriptCore.pbproj/project.pbxproj: 25805 * bindings/jni/jni_class.cpp: Added. 25806 (JavaClass::_commonInit): 25807 (JavaClass::JavaClass): 25808 (_createClassesByNameIfNecessary): 25809 (JavaClass::classForName): 25810 (JavaClass::classForInstance): 25811 (JavaClass::methodNamed): 25812 (JavaClass::fieldNamed): 25813 * bindings/jni/jni_class.h: Added. 25814 (Bindings::JavaClass::_commonDelete): 25815 (Bindings::JavaClass::~JavaClass): 25816 (Bindings::JavaClass::_commonCopy): 25817 (Bindings::JavaClass::JavaClass): 25818 (Bindings::JavaClass::operator=): 25819 (Bindings::JavaClass::name): 25820 (Bindings::JavaClass::constructorAt): 25821 (Bindings::JavaClass::numConstructors): 25822 * bindings/jni/jni_instance.cpp: Added. 25823 (JavaInstance::JavaInstance): 25824 (JavaInstance::~JavaInstance): 25825 * bindings/jni/jni_instance.h: Added. 25826 (Bindings::JObjectWrapper::JObjectWrapper): 25827 (Bindings::JObjectWrapper::~JObjectWrapper): 25828 (Bindings::JObjectWrapper::ref): 25829 (Bindings::JObjectWrapper::deref): 25830 (Bindings::JavaInstance::getClass): 25831 (Bindings::JavaInstance::operator=): 25832 * bindings/jni/jni_runtime.cpp: 25833 (JavaMethod::JavaMethod): 25834 * bindings/jni/jni_runtime.h: 25835 (Bindings::JavaString::JavaString): 25836 (Bindings::JavaString::~JavaString): 25837 (Bindings::JavaString::operator=): 25838 * bindings/jni/jni_utility.cpp: 25839 (getJavaVM): 25840 (getJNIEnv): 25841 (getCharactersFromJString): 25842 (releaseCharactersForJString): 25843 (getCharactersFromJStringInEnv): 25844 (releaseCharactersForJStringInEnv): 25845 * bindings/jni/jni_utility.h: 25846 * bindings/runtime.cpp: 25847 (Instance::createBindingForLanguageInstance): 25848 * bindings/runtime.h: 25849 (Bindings::Instance::): 25850 258512003-11-18 Richard Williamson <rjw@apple.com> 25852 25853 More live connect stubs. We're getting close. 25854 25855 Reviewed by Chris. 25856 25857 * JavaScriptCore.pbproj/project.pbxproj: 25858 * bindings/jni/jni_runtime.cpp: 25859 (JavaClass::JavaClass): 25860 (JavaInstance::JavaInstance): 25861 (JavaInstance::~JavaInstance): 25862 * bindings/jni/jni_runtime.h: 25863 (Bindings::JavaConstructor::value): 25864 (Bindings::JavaField::value): 25865 (Bindings::JavaMethod::value): 25866 (Bindings::JavaClass::_commonDelete): 25867 (Bindings::JavaClass::_commonCopy): 25868 (Bindings::JavaClass::methodNamed): 25869 (Bindings::JavaClass::fieldNamed): 25870 (Bindings::JavaInstance::getClass): 25871 * bindings/runtime.cpp: Added. 25872 * bindings/runtime.h: 25873 (Bindings::Instance::~Instance): 25874 * bindings/runtime_object.cpp: Added. 25875 (RuntimeObjectImp::classInfo): 25876 (RuntimeObjectImp::RuntimeObjectImp): 25877 (RuntimeObjectImp::get): 25878 (RuntimeObjectImp::put): 25879 (RuntimeObjectImp::canPut): 25880 (RuntimeObjectImp::hasProperty): 25881 (RuntimeObjectImp::deleteProperty): 25882 (RuntimeObjectImp::defaultValue): 25883 (RuntimeObjectImp::_initializeClassInfoFromInstance): 25884 * bindings/runtime_object.h: Added. 25885 (KJS::RuntimeObjectImp::setInternalInstance): 25886 (KJS::RuntimeObjectImp::getInternalInstance): 25887 * kjs/object.cpp: 25888 (KJS::ObjectImp::get): 25889 (KJS::ObjectImp::hasProperty): 25890 * kjs/value.h: 25891 (KJS::): 25892 258932003-11-17 Maciej Stachowiak <mjs@apple.com> 25894 25895 Patch from Harri, reviewed by me. 25896 25897 - fixed 3487375 - backwards array slice causes infinite loop 25898 25899 * kjs/array_object.cpp: 25900 (ArrayProtoFuncImp::call): 25901 259022003-11-17 Maciej Stachowiak <mjs@apple.com> 25903 25904 Patch from Harri Porten reviewed by me. 25905 25906 - fixed 3487371 - operator precedence for bitwise or, xor and and is wrong 25907 25908 * kjs/grammar.y: Correct the precedence. 25909 259102003-11-16 Maciej Stachowiak <mjs@apple.com> 25911 25912 Reviewed by John. 25913 25914 - fixed 3483829 - JavaScriptCore needs workaround to compile on Merlot 25915 25916 * JavaScriptCore.pbproj/project.pbxproj: Add -Wno-long-double to 25917 warning flags. 25918 25919=== Safari-114 === 25920 259212003-11-13 Richard Williamson <rjw@apple.com> 25922 25923 Factored common code between copy constructor and assignment operator. 25924 25925 Reviewed by Chris. 25926 25927 * ChangeLog: 25928 * bindings/jni/jni_runtime.h: 25929 (Bindings::JavaConstructor::_commonCopy): 25930 (Bindings::JavaConstructor::JavaConstructor): 25931 (Bindings::JavaConstructor::operator=): 25932 (Bindings::JavaField::type): 25933 * bindings/runtime.h: 25934 259352003-11-13 Richard Williamson <rjw@apple.com> 25936 25937 More LiveConnect stuff. This checkin adds abstract classes to model 25938 language runtimes and a JNI based set of concrete implementations for 25939 Java. 25940 25941 Reviewed by Chris. 25942 25943 * JavaScriptCore.pbproj/project.pbxproj: 25944 * Makefile.am: 25945 * bindings/Makefile.am: Removed. 25946 * bindings/jni/Makefile.am: Removed. 25947 * bindings/jni/jni_runtime.cpp: Added. 25948 (JavaField::JavaField): 25949 (JavaConstructor::JavaConstructor): 25950 (JavaMethod::JavaMethod): 25951 (JavaClass::JavaClass): 25952 * bindings/jni/jni_runtime.h: Added. 25953 (Bindings::JavaString::JavaString): 25954 (Bindings::JavaString::~JavaString): 25955 (Bindings::JavaString::operator=): 25956 (Bindings::JavaString::characters): 25957 (Bindings::JavaParameter::JavaParameter): 25958 (Bindings::JavaParameter::~JavaParameter): 25959 (Bindings::JavaParameter::operator=): 25960 (Bindings::JavaParameter::type): 25961 (Bindings::JavaConstructor::JavaConstructor): 25962 (Bindings::JavaConstructor::~JavaConstructor): 25963 (Bindings::JavaConstructor::operator=): 25964 (Bindings::JavaConstructor::parameterAt): 25965 (Bindings::JavaConstructor::numParameters): 25966 (Bindings::JavaField::JavaField): 25967 (Bindings::JavaField::~JavaField): 25968 (Bindings::JavaField::operator=): 25969 (Bindings::JavaField::name): 25970 (Bindings::JavaField::type): 25971 (Bindings::JavaMethod::JavaMethod): 25972 (Bindings::JavaMethod::_commonDelete): 25973 (Bindings::JavaMethod::~JavaMethod): 25974 (Bindings::JavaMethod::_commonCopy): 25975 (Bindings::JavaMethod::operator=): 25976 (Bindings::JavaMethod::name): 25977 (Bindings::JavaMethod::returnType): 25978 (Bindings::JavaMethod::parameterAt): 25979 (Bindings::JavaMethod::numParameters): 25980 (Bindings::JavaClass::_commonDelete): 25981 (Bindings::JavaClass::~JavaClass): 25982 (Bindings::JavaClass::_commonCopy): 25983 (Bindings::JavaClass::JavaClass): 25984 (Bindings::JavaClass::operator=): 25985 (Bindings::JavaClass::name): 25986 (Bindings::JavaClass::methodAt): 25987 (Bindings::JavaClass::numMethods): 25988 (Bindings::JavaClass::constructorAt): 25989 (Bindings::JavaClass::numConstructors): 25990 (Bindings::JavaClass::fieldAt): 25991 (Bindings::JavaClass::numFields): 25992 * bindings/jni/jni_utility.cpp: 25993 (callJNIMethod): 25994 (callJNIMethodA): 25995 (callJNIObjectMethod): 25996 (callJNIByteMethod): 25997 (callJNICharMethod): 25998 (callJNIShortMethod): 25999 (callJNIIntMethod): 26000 (callJNILongMethod): 26001 (callJNIFloatMethod): 26002 (callJNIDoubleMethod): 26003 (callJNIVoidMethodA): 26004 (callJNIObjectMethodA): 26005 (callJNIByteMethodA): 26006 (callJNICharMethodA): 26007 (callJNIShortMethodA): 26008 (callJNIIntMethodA): 26009 (callJNILongMethodA): 26010 (callJNIFloatMethodA): 26011 (callJNIDoubleMethodA): 26012 (getCharactersFromJString): 26013 (releaseCharactersForJString): 26014 * bindings/jni/jni_utility.h: 26015 * bindings/objc/Makefile.am: Removed. 26016 * bindings/runtime.h: Added. 26017 (Bindings::Parameter::~Parameter): 26018 (Bindings::Constructor::~Constructor): 26019 (Bindings::Field::~Field): 26020 (Bindings::Method::~Method): 26021 (Bindings::Class::~Class): 26022 260232003-11-13 Maciej Stachowiak <mjs@apple.com> 26024 26025 Reviewed by John. 26026 26027 - fixed 3472562 - Null or Undefined variables passed to IN operator cause javascript exceptions 26028 26029 * kjs/nodes.cpp: 26030 (ForInNode::execute): If the in value is null or undefined, bail 26031 out early, since attempting to iterate its properties will throw 26032 an exception. 26033 260342003-11-12 Darin Adler <darin@apple.com> 26035 26036 - fixed the build 26037 26038 * Makefile.am: Fix the build by removing the bindings directory from SUBDIRS. 26039 Later, we can either add this back and add the Makefile.am files to the top 26040 level configure.in or leave it out and remove the Makefile.am files. 26041 260422003-11-12 Richard Williamson <rjw@apple.com> 26043 26044 Added utility functions for calling JNI methods. 26045 26046 Reviewed by Chris. 26047 26048 * JavaScriptCore.pbproj/project.pbxproj: 26049 * Makefile.am: 26050 * bindings/Makefile.am: Added. 26051 * bindings/jni/Makefile.am: Added. 26052 * bindings/jni/jni_utility.cpp: Added. 26053 (attachToJavaVM): 26054 (callJNIMethod): 26055 (callJNIVoidMethod): 26056 (callJNIObjectMethod): 26057 (callJNIByteMethod): 26058 (callJNICharMethod): 26059 (callJNIShortMethod): 26060 (callJNIIntMethod): 26061 (callJNILongMethod): 26062 (callJNIFloatMethod): 26063 (callJNIDoubleMethod): 26064 * bindings/jni/jni_utility.h: Added. 26065 * bindings/objc/Makefile.am: Added. 26066 260672003-11-08 Darin Adler <darin@apple.com> 26068 26069 Reviewed by John. 26070 26071 - fixed 3477528 -- array.sort(function) fails if the function returns a non-zero value that rounds to zero 26072 26073 * kjs/array_object.cpp: 26074 (compareByStringForQSort): Added checks for undefined values to match what the specification calls for. 26075 (compareWithCompareFunctionForQSort): Added checks for undefined values as above, and also changed the 26076 code that looks at the compare function result to look at the number returned without rounding to an integer. 26077 (ArrayProtoFuncImp::call): Changed the code that looks at the compare function result to look at the number 26078 returned without rounding to an integer. 26079 26080=== Safari-113 === 26081 260822003-11-03 Vicki Murley <vicki@apple.com> 26083 26084 Reviewed by kocienda. 26085 26086 - fixed <rdar://problem/3471096>: non-B&I builds should not use order files, because they cause false "regressions" in perf. 26087 26088 * JavaScriptCore.pbproj/project.pbxproj: added empty SECTORDER_FLAGS variables to the Development and Deployment build styles 26089 260902003-11-02 Darin Adler <darin@apple.com> 26091 26092 Reviewed by Maciej. 26093 26094 - changed list manipulation to use Harri Porten's idea of a circular 26095 linked list that is built from head to tail rather than building the 26096 list backwards and reversing the list when done 26097 26098 * kjs/grammar.y: Handle CatchNode and FinallyNode in a type-safe way. 26099 Change many places that passed 0L to pass nothing at all, or to pass 0. 26100 26101 * kjs/nodes.h: 26102 (KJS::ElementNode::ElementNode): Build a circular list instead of a 0-terminated 26103 backwards list. 26104 (KJS::ArrayNode::ArrayNode): Break the circular list instead of reversing the list. 26105 (KJS::PropertyValueNode::PropertyValueNode): Moved before ObjectLiteralNode so the 26106 inline code in ObjectLiteralNode works. Build a circular list instead of a 0-terminated 26107 backwards list. Made the case for the first node separate so we don't need a nil check. 26108 (KJS::ObjectLiteralNode::ObjectLiteralNode): Break the circular list instead of 26109 reversing the list. 26110 (KJS::ArgumentListNode::ArgumentListNode): Build a circular list instead of a 0-terminated 26111 backwards list. Also, made the constructors inline (moved here from .cpp file). 26112 (KJS::ArgumentsNode::ArgumentsNode): Break the circular list instead of 26113 reversing the list. 26114 (KJS::NewExprNode::NewExprNode): Changed a 0L to 0. 26115 (KJS::StatListNode::StatListNode): Make this constructor no longer inline (moved into 26116 .cpp file). The one in the .cpp file builds a circular list instead of a 0-terminated 26117 backwards list. 26118 (KJS::VarDeclListNode::VarDeclListNode): Build a circular list instead of a 0-terminated 26119 backwards list. 26120 (KJS::VarStatementNode::VarStatementNode): Break the circular list instead of reversing 26121 the list. 26122 (KJS::BlockNode::BlockNode): Make this constructor no longer inline (moved into .cpp file). 26123 The one in the .cpp file breaks the list instead of reversing it. 26124 (KJS::ForNode::ForNode): Break the circular list instead of reversing the list. 26125 (KJS::CaseClauseNode::CaseClauseNode): Break the circular list instead of reversing the 26126 list. 26127 (KJS::ClauseListNode::ClauseListNode): Build a circular list instead of a 0-terminated 26128 backwards list. 26129 (KJS::CaseBlockNode::CaseBlockNode): Make this constructor no longer inline (moved into 26130 .cpp file). The one in the .cpp file breaks the list instead of reversing it. 26131 (KJS::TryNode::TryNode): Changed constructor to take typed parameters for the catch and 26132 finally nodes rather than just Node. 26133 (KJS::ParameterNode::ParameterNode): Build a circular list instead of a 0-terminated 26134 backwards list. 26135 (KJS::FuncDeclNode::FuncDeclNode): Break the circular list instead of reversing the 26136 list. 26137 (KJS::FuncExprNode::FuncExprNode): Break the circular list instead of reversing the 26138 list. 26139 26140 * kjs/nodes.cpp: 26141 (StatListNode::StatListNode): Moved this constructor here, no longer inline. 26142 Did the "break circular list" thing instead of the "reverse list" thing. 26143 Added setLoc calls to match KJS in the KDE tree; since we don't currently 26144 use the JavaScript debugging support, it's unclear whether there's any benefit, but 26145 later we might be using it and it's good to be as close as possible. 26146 (BlockNode::BlockNode): Moved this constructor here, no longer inline. 26147 Did the "break circular list" thing instead of the "reverse list" thing. 26148 Added setLoc calls. 26149 (CaseBlockNode::CaseBlockNode): Moved this constructor here, no longer inline. 26150 Did the "break circular list" thing instead of the "reverse list" thing. 26151 (SourceElementsNode::SourceElementsNode): Moved this constructor here, no longer inline. 26152 Did the "break circular list" thing instead of the "reverse list" thing. 26153 Added setLoc calls. 26154 26155 * kjs/grammar.cpp: Regenerated. 26156 * kjs/grammar.cpp.h: Regenerated. 26157 * kjs/grammar.h: Regenerated. 26158 26159=== Safari-112 === 26160 261612003-10-30 Maciej Stachowiak <mjs@apple.com> 26162 26163 Reviewed by Ken. 26164 26165 - fixed 3427069 - browsing mp3.com causes leaks (KJS) 26166 26167 * kjs/string_object.cpp: 26168 (StringProtoFuncImp::call): Don't do an early return, since that 26169 could leak a temporary regexp. 26170 261712003-10-29 Maciej Stachowiak <mjs@apple.com> 26172 26173 Reviewed by Darin. 26174 26175 - fixed 3426076 - Leak of JS lexer data visiting http://www.ebay.com 26176 26177 * kjs/grammar.cpp: 26178 (yyerror): Updated the commented code. 26179 * kjs/grammar.y: Don't delete string and identifier tokens when done 26180 with them any more, they'll get cleaned up by the lexer now. 26181 * kjs/internal.cpp: 26182 (Parser::parse): Tell lexer when done parsing. 26183 * kjs/lexer.cpp: 26184 (Lexer::Lexer): Initialize new data members. 26185 (Lexer::lex): Use new methods to make strings and identifiers, and 26186 save them. 26187 (Lexer::makeIdentifier): Make a new Identifier and save it in an 26188 auto-growing array. 26189 (Lexer::makeUString): Likewise for UStrings. 26190 (Lexer::doneParsing): Clean up arrays of Ifentifiers and UStrings. 26191 * kjs/lexer.h: 26192 261932003-10-28 Maciej Stachowiak <mjs@apple.com> 26194 26195 Reviewed by Ken. 26196 26197 - fixed 3413962 - malicious web pages can kill all future JavaScript execution by breaking recursion limit check 26198 26199 * kjs/nodes.cpp: 26200 (FunctionCallNode::evaluate): If we're going to return early due 26201 to breaking the recursion limit, make sure to lower it again, or 26202 it will creep up by one each time it's exceeded. 26203 262042003-10-26 Darin Adler <darin@apple.com> 26205 26206 * JavaScriptCorePrefix.h: Added a C case to the NULL definition since we use C as well 26207 as C++ in this project. 26208 262092003-10-26 Darin Adler <darin@apple.com> 26210 26211 - rolled in some CString changes Harri Porten did on the KDE side 26212 26213 * kjs/ustring.cpp: 26214 (KJS::CString::CString): Use memcpy instead of strcpy for speed. Fix an off by one error 26215 in the copy constructor. 26216 (KJS::CString::operator=): Use memcpy instead of strcpy for speed. 26217 26218 * JavaScriptCorePrefix.h: Add a definition of NULL here that takes advantage of the GNU 26219 __null feature even if the system C library doesn't. 26220 26221== Rolled over to ChangeLog-2003-10-25 == 26222