12012-08-08 Patrick Gansterer <paroga@webkit.org> 2 3 [WIN] Use GetTimeZoneInformation() for getting the timezone name 4 https://bugs.webkit.org/show_bug.cgi?id=91936 5 6 Reviewed by Ryosuke Niwa. 7 8 The MS CRT implementation of strftime calls the same functions in the background. 9 Using them directly avoids the overhead of parsing the format string and removes 10 the dependency on strftime() for WinCE where this function does not exist. 11 12 * runtime/DateConversion.cpp: 13 (JSC::formatTime): 14 152010-07-08 Gavin Barraclough <barraclough@apple.com> 16 17 Reviewed by Sam Weinig. 18 19 https://bugs.webkit.org/show_bug.cgi?id=41641 20 21 Update compile flags to allow use of ExecutableAllocatorFixedVMPool on platforms 22 other than x86-64 (this may be useful on 32-bit platforms, too). 23 24 Simplify ifdefs by dividing into thwo broad allocation strategies 25 (ENABLE_EXECUTABLE_ALLOCATOR_FIXED & ENABLE_EXECUTABLE_ALLOCATOR_DEMAND). 26 27 Rename constant used in the code to have names descriptive of their purpose, 28 rather than their specific value on a given platform. 29 30 * jit/ExecutableAllocator.cpp: 31 (JSC::ExecutableAllocator::reprotectRegion): 32 (JSC::ExecutableAllocator::cacheFlush): 33 * jit/ExecutableAllocatorFixedVMPool.cpp: 34 (JSC::FixedVMPoolAllocator::FixedVMPoolAllocator): 35 (JSC::FixedVMPoolAllocator::free): 36 (JSC::ExecutablePool::systemAlloc): 37 * jit/ExecutableAllocatorPosix.cpp: 38 * jit/ExecutableAllocatorSymbian.cpp: 39 * jit/ExecutableAllocatorWin.cpp: 40 * wtf/Platform.h: 41 422010-08-24 Oliver Hunt <oliver@apple.com> 43 44 Reviewed by Geoff Garen. 45 46 Don't seed the JS random number generator from time() 47 https://bugs.webkit.org/show_bug.cgi?id=41868 48 <rdar://problem/8171025> 49 50 Switch to using the secure random number generator to 51 seed the fast random generator, and make the generator 52 be per global object. 53 54 * runtime/JSGlobalData.cpp: 55 (JSC::JSGlobalData::JSGlobalData): 56 * runtime/JSGlobalData.h: 57 * runtime/JSGlobalObject.h: 58 (JSC::JSGlobalObject::JSGlobalObjectData::JSGlobalObjectData): 59 (JSC::JSGlobalObject::weakRandomNumber): 60 * runtime/MathObject.cpp: 61 (JSC::mathProtoFuncRandom): 62 632010-06-18 Tucker Jay <jay.tucker@nokia.com> 64 65 Reviewed by NOBODY (OOPS!). 66 67 [Symbian] Lazy commit of memory required in JSC register file 68 https://bugs.webkit.org/show_bug.cgi?id=34349 69 70 * JavaScriptCore.pro: Added 1 new Symbian source file 71 * interpreter/RegisterFile.cpp: 72 (JSC::RegisterFile::~RegisterFile): 73 * interpreter/RegisterFile.h: 74 (JSC::RegisterFile::): 75 (JSC::RegisterFile::start): 76 (JSC::RegisterFile::end): 77 (JSC::RegisterFile::size): 78 (JSC::RegisterFile::setNumGlobals): 79 (JSC::RegisterFile::numGlobals): 80 (JSC::RegisterFile::maxGlobals): 81 (JSC::RegisterFile::lastGlobal): 82 (JSC::RegisterFile::markGlobals): 83 (JSC::RegisterFile::markCallFrames): 84 (JSC::isPageAligned): 85 (JSC::RegisterFile::RegisterFile): 86 (JSC::RegisterFile::shrink): 87 (JSC::RegisterFile::grow): 88 * wtf/symbian/RegisterFileAllocatorSymbian.cpp: Added. 89 (WTF::RegisterFileAllocator::RegisterFileAllocator): 90 Helper class to allocate memory required by RegisterFile 91 more efficiently. 92 (WTF::RegisterFileAllocator::~RegisterFileAllocator): 93 (WTF::RegisterFileAllocator::buffer): 94 (WTF::RegisterFileAllocator::grow): 95 (WTF::RegisterFileAllocator::shrink): 96 * wtf/symbian/RegisterFileAllocatorSymbian.h: Added. 97 * wtf/symbian/SymbianDefines.h: Added. 98 992010-06-19 Thiago Macieira <thiago.macieira@nokia.com> 100 101 Reviewed by Kenneth Rohde Christiansen. 102 103 Don't use __attribute__((may_alias)) with the Intel compiler, 104 as it doesn't understand it. 105 106 * wtf/Vector.h: 107 1082010-06-19 Thiago Macieira <thiago.macieira@nokia.com> 109 110 Reviewed by Kenneth Rohde Christiansen. 111 112 Fix compilation with the Intel C++ compiler (11.1.072). 113 114 Like RVCT, label pointers must be void*, not const void*. 115 116 * bytecode/Opcode.h: 117 1182010-06-19 Thiago Macieira <thiago.macieira@nokia.com> 119 120 Reviewed by Kenneth Rohde Christiansen. 121 122 Add the WTF_COMPILER_INTEL for when the Intel compiler is used 123 for building. Usually, the Intel compiler masquerades as 124 another compiler in the system and gets away with it, but some 125 times specific fixes are required (such as when using language 126 extensions). 127 128 * wtf/Platform.h: 129 1302010-06-07 Benjamin Poulain <benjamin.poulain@nokia.com> 131 132 Reviewed by Simon Hausmann. 133 134 [Qt] Crash when compiling on Snow Leopard and running on Leopard 135 https://bugs.webkit.org/show_bug.cgi?id=31403 136 137 Disable the use of pthread_setname_np and other symbols 138 when targetting Leopard. 139 140 Use the defines TARGETING_XX instead of BUILDING_ON_XX 141 for features that cannot be used before Snow Leopard. 142 143 * wtf/Platform.h: 144 1452010-05-10 Laszlo Gombos <laszlo.1.gombos@nokia.com> 146 147 Reviewed by Darin Adler. 148 149 [Qt] Disable JIT support for mingw-w64 150 https://bugs.webkit.org/show_bug.cgi?id=38747 151 152 Disale JIT for mingw-w64 as it is reportedly 153 unstable. 154 155 Thanks for Vanboxem Rruben for the investigation. 156 157 * wtf/Platform.h: 158 1592010-05-06 Fumitoshi Ukai <ukai@chromium.org> 160 161 Reviewed by Alexey Proskuryakov. 162 163 JavaScriptCore/wtf/RandomNumber.h should provide using WTF::* 164 https://bugs.webkit.org/show_bug.cgi?id=38719 165 166 * wtf/RandomNumber.h: 167 Add using directives. 168 1692010-04-28 Simon Hausmann <simon.hausmann@nokia.com>, Kent Hansen <kent.hansen@nokia.com> 170 171 Reviewed by Darin Adler. 172 173 JSC's currentThreadStackBase is not reentrant on some platforms 174 https://bugs.webkit.org/show_bug.cgi?id=37195 175 176 This function needs to be reentrant to avoid memory corruption on platforms where 177 the implementation uses global variables. 178 179 This patch adds a mutex lock where necessary and makes the Symbian implementation 180 reentrant. 181 182 * runtime/Collector.cpp: 183 (JSC::currentThreadStackBaseMutex): 184 (JSC::currentThreadStackBase): 185 1862010-04-14 Kent Hansen <kent.hansen@nokia.com> 187 188 Reviewed by Maciej Stachowiak. 189 190 Mac OS X: Use deployment target to determine whether memory tagging should be enabled 191 https://bugs.webkit.org/show_bug.cgi?id=34888 192 193 When building on (Snow) Leopard but targeting Tiger 194 (TARGETING_TIGER defined, BUILDING_ON_TIGER not defined), 195 WebKit would crash on Tiger because the tags passed to mmap 196 caused those function calls to fail. 197 198 Conversely, when building on Tiger but targeting Leopard 199 (BUILDING_ON_TIGER defined, TARGETING_LEOPARD defined), WebKit 200 would crash on Leopard because the tags passed to vm_map and 201 vm_allocate caused those function calls to fail. 202 203 Solution: Use TARGETING_TIGER rather than BUILDING_ON_TIGER to 204 govern the tag definitions. Use the same tags for vm_map and 205 vm_allocate regardless of target, since they work on 206 both. Fall back to the mmap tags that work on Tiger (that is, 207 "no tags") if targeting Tiger, since those tags also work on 208 Leopard. 209 210 * wtf/VMTags.h: 211 2122010-04-02 Ruben Van Boxem <vanboxem.ruben@gmail.com> 213 214 Reviewed by Eric Seidel. 215 216 Mingw-w64 fixes for JavaScriptCore 217 https://bugs.webkit.org/show_bug.cgi?id=35607 218 219 * runtime/Collector.cpp: use the msvc code for mingw-w64 (but not mingw-w32) 220 (JSC::Heap::allocateBlock): 221 (JSC::Heap::freeBlockPtr): 222 (JSC::currentThreadStackBase): 223 (JSC::currentThreadStackBase): 224 * wtf/Platform.h: added COMPILER(MINGW64) check to differentiate between mingw.org and mingw-w64 functions 225 2262010-03-29 Patrick Gansterer <paroga@paroga.com> 227 228 Reviewed by Darin Adler. 229 230 Corrected name of (u)int64_t compile time assert. 231 https://bugs.webkit.org/show_bug.cgi?id=36739 232 233 int64_t_is_four_bytes -> int64_t_is_eight_bytes 234 235 * os-win32/stdint.h: 236 2372010-03-29 Thomas Zander <t.zander@nokia.com> 238 239 Reviewed by Simon Hausmann. 240 241 https://bugs.webkit.org/show_bug.cgi?id=36742 242 243 gcc for Symbian doesn't support gcc extensions like atomicity.h - disable 244 245 * wtf/Threading.h: also detect os symbian 246 2472010-03-23 Mark Rowe <mrowe@apple.com> 248 249 Build fix. 250 251 * runtime/ArrayPrototype.cpp: 252 (JSC::arrayProtoFuncSplice): Some versions of GCC emit a warning about the implicit 64- to 32-bit truncation 253 that takes place here. An explicit cast is sufficient to silence it. 254 2552010-03-23 Alexey Proskuryakov <ap@apple.com> 256 257 Build fix. 258 259 * runtime/ArrayPrototype.cpp: (JSC::arrayProtoFuncSplice): Fixed a typo - length doesn't 260 need to be converted with toInteger(). 261 2622010-03-23 Alexey Proskuryakov <ap@apple.com> 263 264 Reviewed by Geoff Garen. 265 266 https://bugs.webkit.org/show_bug.cgi?id=36511 267 <rdar://problem/7753498> Safari freezes when using SPUTNIK JavaScript conformance check 268 269 Test: fast/js/sputnik-S15.4.4.12_A3_T3.html 270 271 * runtime/ArrayPrototype.cpp: (JSC::arrayProtoFuncSplice): We were incorrectly computing 272 the start offset, and iterated over (almost) all integers. Note that this can be fixed 273 without using doubles, but the code would be much more complicated, and there is no important 274 reason to stick to integers here. 275 2762010-03-22 Siddharth Mathur <siddharth.mathur@nokia.com> 277 278 Reviewed by Laszlo Gombos. 279 280 [Symbian] More efficient aligned memory allocation for JSC Collector 281 https://bugs.webkit.org/show_bug.cgi?id=34350 282 283 * JavaScriptCore.pri: Added 2 new Symbian source files and HAL linkage 284 285 * runtime/Collector.cpp: Reduced port-specific code and added private data member 286 (JSC::Heap::Heap): 287 (JSC::Heap::~Heap): 288 (JSC::Heap::destroy): 289 (JSC::Heap::allocateBlock): 290 (JSC::Heap::freeBlockPtr): 291 292 * runtime/Collector.h: Added private data member 293 294 * wtf/symbian: Added. 295 * wtf/symbian/BlockAllocatorSymbian.cpp: Added. 296 (WTF::AlignedBlockAllocator::AlignedBlockAllocator): Helper class to allocate 297 aligned blocks more efficiently as required by Collector 298 (WTF::AlignedBlockAllocator::alloc): 299 (WTF::AlignedBlockAllocator::free): 300 (WTF::AlignedBlockAllocator::destroy): 301 (WTF::AlignedBlockAllocator::~AlignedBlockAllocator): 302 * wtf/symbian/BlockAllocatorSymbian.h: Added. 303 3042010-03-22 Geoffrey Garen <ggaren@apple.com> 305 306 Reviewed by Sam Weinig. 307 308 Fixed <rdar://problem/7728196> REGRESSION (r46701): -(-2147483648) 309 evaluates to -2147483648 on 32 bit (35842) 310 311 Two ways to fix the same bug: 312 313 1. Check for overflow when negating, since negating the largest negative 314 int causes overflow. 315 316 2. Constant-fold even when negating a negative, since, like they say in 317 high school, "math works." 318 319 * assembler/MacroAssemblerARM.h: 320 (JSC::MacroAssemblerARM::branchNeg32): 321 * assembler/MacroAssemblerX86Common.h: 322 (JSC::MacroAssemblerX86Common::branchNeg32): Added a branching version 323 of the negate operator. 324 325 * jit/JITArithmetic.cpp: 326 (JSC::JIT::emit_op_negate): Use the branching version of the negate 327 operator to check for overflow. 328 329 (JSC::JIT::emitSlow_op_negate): Link the check for overflow to a slow case. 330 (We could emit inline code for this, since we know what the result would 331 be, but that's probably just a waste of generated code.) 332 333 * parser/Grammar.y: Constant fold even when negating a negative. 334 3352010-03-17 Mike Homey <glandium@debian.org> 336 337 Reviewed by Gustavo Noronha. 338 339 Build fix for SPARC. Fix missing macro value. 340 341 * wtf/Platform.h: 342 3432010-03-03 Mark Rowe <mrowe@apple.com> 344 345 Reviewed by Geoff Garen. 346 347 Add virtual memory tags for TCMalloc and WebCore's purgeable buffers. 348 349 * wtf/TCSystemAlloc.cpp: 350 (TryMmap): Use the VM tag. 351 * wtf/VMTags.h: Make use of VM_MEMORY_TCMALLOC and VM_MEMORY_WEBCORE_PURGEABLE_BUFFERS. 352 3532010-03-01 Tor Arne Vestbø <tor.arne.vestbo@nokia.com> 354 355 Reviewed by Simon Hausmann. 356 357 Fix the Qt build on Mac OS X/Cocoa 64-bit 358 359 * JavaScriptCore.pri: Add missing implementation file to resolve JSC symbols 360 3612010-02-26 Janne Koskinen <janne.p.koskinen@digia.com> 362 363 Reviewed by Simon Hausmann. 364 365 [Qt] Symbian specific getCPUTime implemetation 366 https://bugs.webkit.org/show_bug.cgi?id=34742 367 368 Default implementation doesn't work on Symbian devices. 369 This change adds a proper implementation by 370 asking thread execution time from the current thread. 371 372 * runtime/TimeoutChecker.cpp: 373 (JSC::getCPUTime): 374 3752010-02-15 Gabor Loki <loki@webkit.org> 376 377 Reviewed by Gavin Barraclough. 378 379 Fix the SP at ctiOpThrowNotCaught on Thumb2 (JSVALUE32) 380 https://bugs.webkit.org/show_bug.cgi?id=34939 381 382 * jit/JITStubs.cpp: 383 3842010-02-15 Gavin Barraclough <barraclough@apple.com> 385 386 Reviewed by NOBODY (Build fix). 387 388 Add missing cast for !YARR (PPC) builds. 389 390 * runtime/RegExp.cpp: 391 (JSC::RegExp::match): 392 3932010-02-14 Laszlo Gombos <laszlo.1.gombos@nokia.com> 394 395 Reviewed by Adam Barth. 396 397 Implement NEVER_INLINE and NO_RETURN for RVCT 398 https://bugs.webkit.org/show_bug.cgi?id=34740 399 400 * wtf/AlwaysInline.h: 401 4022010-02-12 Gavin Barraclough <barraclough@apple.com> 403 404 Reviewed by Darin Adler. 405 406 https://bugs.webkit.org/show_bug.cgi?id=33731 407 Many false leaks in release builds due to PtrAndFlags 408 409 Remove UntypedPtrAndBitfield (similar to PtrAndFlags) in UStringImpl, 410 and steal bits from the refCount instead. 411 412 * runtime/UStringImpl.cpp: 413 (JSC::UStringImpl::baseSharedBuffer): 414 (JSC::UStringImpl::~UStringImpl): 415 * runtime/UStringImpl.h: 416 (JSC::UStringImpl::cost): 417 (JSC::UStringImpl::isIdentifier): 418 (JSC::UStringImpl::setIsIdentifier): 419 (JSC::UStringImpl::ref): 420 (JSC::UStringImpl::deref): 421 (JSC::UStringImpl::UStringImpl): 422 (JSC::UStringImpl::bufferOwnerString): 423 (JSC::UStringImpl::bufferOwnership): 424 (JSC::UStringImpl::isStatic): 425 (JSC::UStringImpl::): 426 4272010-02-12 Kwang Yul Seo <skyul@company100.net> 428 429 Reviewed by Adam Barth. 430 431 Typedef both JSChar and UChar to wchar_t in RVCT. 432 https://bugs.webkit.org/show_bug.cgi?id=34560 433 434 Define both JSChar and UChar to wchar_t as the size 435 of wchar_t is 2 bytes in RVCT. 436 437 * API/JSStringRef.h: 438 * wtf/unicode/qt4/UnicodeQt4.h: 439 4402009-10-06 Yongjun Zhang <yongjun.zhang@nokia.com> 441 442 Reviewed by Simon Hausmann. 443 444 Get rid of WINSCW hack for UnSpecifiedBoolType 445 446 Add parenthesis around (RefPtr::*UnspecifiedBoolType) to make the WINSCW 447 compiler work with the default UnSpecifiedBoolType() operator. 448 449 https://bugs.webkit.org/show_bug.cgi?id=28054 450 451 * wtf/RefPtr.h: 452 4532010-02-09 Janne Koskinen <janne.p.koskinen@digia.com> 454 455 Reviewed by Laszlo Gombos. 456 457 [Qt] use nanval() for Symbian as nonInlineNaN 458 https://bugs.webkit.org/show_bug.cgi?id=34170 459 460 numeric_limits<double>::quiet_NaN is broken in Symbian 461 causing NaN to be evaluated as a number. 462 463 * runtime/JSValue.cpp: 464 (JSC::nonInlineNaN): 465 4662010-02-01 Kent Tamura <tkent@chromium.org> 467 468 Reviewed by Darin Adler. 469 470 Date.UTC() should apply TimeClip operation. 471 https://bugs.webkit.org/show_bug.cgi?id=34461 472 473 ECMAScript 5 15.9.4.3: 474 > 9 Return TimeClip(MakeDate(MakeDay(yr, m, dt), MakeTime(h, min, s, milli))). 475 476 * runtime/DateConstructor.cpp: 477 (JSC::dateUTC): Calls WTF::timeClip(). 478 4792010-02-01 Kent Tamura <tkent@chromium.org> 480 481 Reviewed by Darin Adler. 482 483 Fix a bug that Math.round() retunrs incorrect results for huge integers 484 https://bugs.webkit.org/show_bug.cgi?id=34462 485 486 * runtime/MathObject.cpp: 487 (JSC::mathProtoFuncRound): Avoid "arg + 0.5". 488 4892010-02-01 Patrick Gansterer <paroga@paroga.com> 490 491 Reviewed by Darin Adler. 492 493 [Qt] WinCE buildfix after r52729 and fix for Q_BIG_ENDIAN typo. 494 https://bugs.webkit.org/show_bug.cgi?id=34378 495 496 * wtf/Platform.h: 497 4982010-01-31 Patrick Gansterer <paroga@paroga.com> 499 500 Reviewed by Darin Adler. 501 502 Buildfix for WinCE + style fixes (TLS_OUT_OF_INDEXES is not defined). 503 https://bugs.webkit.org/show_bug.cgi?id=34380 504 505 * wtf/ThreadSpecific.h: 506 5072010-01-31 Kent Tamura <tkent@chromium.org> 508 509 Reviewed by Darin Adler. 510 511 [Windows] Fix a bug of round() with huge integral numbers 512 https://bugs.webkit.org/show_bug.cgi?id=34297 513 514 Fix a bug that round() for huge integral numbers returns incorrect 515 results. For example, round(8639999913600001) returns 516 8639999913600002 without this change though the double type can 517 represent 8639999913600001 precisely. 518 519 Math.round() of JavaScript has a similar problem. But this change 520 doesn't fix it because Math.round() doesn't use round() of 521 MathExtra.h. 522 523 * wtf/MathExtras.h: 524 (round): Avoid to do "num + 0.5" or "num - 0.5". 525 (roundf): Fixed similarly. 526 (llround): Calls round(). 527 (llroundf): Calls roundf(). 528 (lround): Calls round(). 529 (lroundf): Calls roundf(). 530 5312010-01-27 Anton Muhin <antonm@chromium.org> 532 533 Reviewed by Darin Adler. 534 535 Remove trailing \ from inline function code 536 https://bugs.webkit.org/show_bug.cgi?id=34223 537 538 * assembler/ARMv7Assembler.h: 539 (JSC::ARMThumbImmediate::countLeadingZerosPartial): 540 5412010-01-27 Kwang Yul Seo <skyul@company100.net> 542 543 Reviewed by Oliver Hunt. 544 545 [BREWMP] Add MarkStack fastMalloc implementation for platforms without VirtualAlloc or mmap. 546 https://bugs.webkit.org/show_bug.cgi?id=33582 547 548 Use fastMalloc and fastFree to implement MarkStack::allocateStack and 549 MarkStack::releaseStack for platforms without page level allocation. 550 551 * runtime/MarkStack.h: 552 (JSC::MarkStack::MarkStackArray::shrinkAllocation): 553 * runtime/MarkStackNone.cpp: Added. 554 (JSC::MarkStack::initializePagesize): 555 (JSC::MarkStack::allocateStack): 556 (JSC::MarkStack::releaseStack): 557 5582010-01-27 Kwang Yul Seo <skyul@company100.net> 559 560 Reviewed by Eric Seidel. 561 562 [BREWMP] Don't use time function 563 https://bugs.webkit.org/show_bug.cgi?id=33577 564 565 Calling time(0) in BREW devices causes a crash because time 566 is not properly ported in most devices. Cast currentTime() to 567 time_t to get the same result as time(0). 568 569 * wtf/DateMath.cpp: 570 (WTF::calculateUTCOffset): 571 5722010-01-27 Alexey Proskuryakov <ap@apple.com> 573 574 Revert r53899 (HashMap<AtomicStringImpl*, Value> key checks) and subsequent build fixes, 575 because they make SVG tests crash in release builds. 576 577 * wtf/HashMap.h: 578 (WTF::::remove): 579 * wtf/HashSet.h: 580 (WTF::::remove): 581 * wtf/HashTable.h: 582 (WTF::::add): 583 (WTF::::addPassingHashCode): 584 (WTF::::removeAndInvalidate): 585 (WTF::::remove): 586 (WTF::::rehash): 587 (WTF::::checkTableConsistency): 588 (WTF::::checkTableConsistencyExceptSize): 589 * wtf/HashTraits.h: 590 (WTF::GenericHashTraits::emptyValue): 591 (WTF::): 592 * wtf/RefPtrHashMap.h: 593 (WTF::::remove): 594 5952010-01-26 Alexey Proskuryakov <ap@apple.com> 596 597 More Windows build fixing. 598 599 * wtf/HashTraits.h: _msize takes void*, remove const qualifier from type. 600 6012010-01-26 Alexey Proskuryakov <ap@apple.com> 602 603 Windows build fix. 604 605 * wtf/HashTraits.h: Include malloc.h for _msize(). 606 6072010-01-26 Alexey Proskuryakov <ap@apple.com> 608 609 Build fix. 610 611 * wtf/HashTable.h: (WTF::HashTable::checkTableConsistencyExceptSize): Remove const from a 612 static (empty) version of this function. 613 6142010-01-26 Alexey Proskuryakov <ap@apple.com> 615 616 Reviewed by Darin Adler. 617 618 https://bugs.webkit.org/show_bug.cgi?id=34150 619 WebKit needs a mechanism to catch stale HashMap entries 620 621 It is very difficult to catch stale pointers that are HashMap keys - since a pointer's hash 622 is just its value, it is very unlikely that any observable problem is reproducible. 623 624 This extends hash table consistency checks to check that pointers are referencing allocated 625 memory blocks, and makes it possible to invoke the checks explicitly (it is not feasible 626 to enable CHECK_HASHTABLE_CONSISTENCY by default, because that affects performance too much). 627 628 * wtf/HashMap.h: (WTF::::checkConsistency): Call through to HashTable implementation. We can 629 add similar calls to HashSet and HashCountedSet, but I haven't seen hard to debug problems 630 with those yet. 631 632 * wtf/HashSet.h: (WTF::::remove): The version of checkTableConsistency that's guarded by 633 CHECK_HASHTABLE_CONSISTENCY is now called internalCheckTableConsistency(). 634 635 * wtf/HashTable.h: 636 (WTF::HashTable::internalCheckTableConsistency): 637 (WTF::HashTable::internalCheckTableConsistencyExceptSize): 638 (WTF::HashTable::checkTableConsistencyExceptSize): 639 Expose checkTableConsistency() even if CHECK_HASHTABLE_CONSISTENCY is off. 640 (WTF::::add): Updated for checkTableConsistency renaming. 641 (WTF::::addPassingHashCode): Ditto. 642 (WTF::::removeAndInvalidate): Ditto. 643 (WTF::::remove): Ditto. 644 (WTF::::rehash): Ditto. 645 (WTF::::checkTableConsistency): The assertion for !shouldExpand() was not correct - this 646 function returns true for tables with m_table == 0. 647 (WTF::::checkTableConsistencyExceptSize): Call checkValueConsistency for key. Potentially, 648 we could do the same for values. 649 650 * wtf/HashTraits.h: 651 (WTF::GenericHashTraits::checkValueConsistency): An empty function that can be overridden 652 to add checks. Currently, the only override is for pointer hashes. 653 654 * wtf/RefPtrHashMap.h: (WTF::::remove): Updated for checkTableConsistency renaming. 655 6562010-01-26 Lyon Chen <liachen@rim.com> 657 658 Reviewed by Maciej Stachowiak. 659 660 Opcode.h use const void* for Opcode cause error #1211 for RVCT compiler 661 https://bugs.webkit.org/show_bug.cgi?id=33902 662 663 * bytecode/Opcode.h: 664 6652010-01-26 Steve Falkenburg <sfalken@apple.com> 666 667 Reviewed by Oliver Hunt. 668 669 Windows build references non-existent include paths 670 https://bugs.webkit.org/show_bug.cgi?id=34175 671 672 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: 673 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreCommon.vsprops: 674 * JavaScriptCore.vcproj/WTF/WTFCommon.vsprops: 675 * JavaScriptCore.vcproj/jsc/jscCommon.vsprops: 676 * JavaScriptCore.vcproj/testapi/testapi.vcproj: 677 * JavaScriptCore.vcproj/testapi/testapiCommon.vsprops: 678 6792010-01-26 Oliver Hunt <oliver@apple.com> 680 681 Reviewed by Geoffrey Garen. 682 683 Using JavaScriptCore API with a webkit vended context can result in slow script dialog 684 https://bugs.webkit.org/show_bug.cgi?id=34172 685 686 Make the APIShim correctly increment and decrement the timeout 687 entry counter. 688 689 * API/APIShims.h: 690 (JSC::APIEntryShimWithoutLock::APIEntryShimWithoutLock): 691 (JSC::APIEntryShimWithoutLock::~APIEntryShimWithoutLock): 692 (JSC::APICallbackShim::APICallbackShim): 693 (JSC::APICallbackShim::~APICallbackShim): 694 6952010-01-26 Simon Hausmann <simon.hausmann@nokia.com> 696 697 [Qt] Fix compilation of QtScript with non-gcc compilers 698 699 Variable length stack arrays are a gcc extension. Use QVarLengthArray 700 as a more portable solution that still tries to allocate on the stack 701 first. 702 703 * qt/api/qscriptvalue_p.h: 704 (QScriptValuePrivate::call): 705 7062010-01-26 Simon Hausmann <simon.hausmann@nokia.com> 707 708 Reviewed by Tor Arne Vestbø. 709 710 [Qt] Fix the build on platforms without JIT support. 711 712 The JIT support should be determined at compile-time via wtf/Platform.h 713 714 * qt/api/QtScript.pro: 715 7162010-01-26 Jedrzej Nowacki <jedrzej.nowacki@nokia.com> 717 718 Reviewed by Simon Hausmann. 719 720 First steps of the QtScript API. 721 722 Two new classes were created; QScriptEngine and QScriptValue. 723 The first should encapsulate a javascript context and the second a script 724 value. 725 726 This API is still in development, so it isn't compiled by default. 727 To trigger compilation, pass --qmakearg="CONFIG+=build-qtscript" to 728 build-webkit. 729 730 https://bugs.webkit.org/show_bug.cgi?id=32565 731 732 * qt/api/QtScript.pro: Added. 733 * qt/api/qscriptconverter_p.h: Added. 734 (QScriptConverter::toString): 735 * qt/api/qscriptengine.cpp: Added. 736 (QScriptEngine::QScriptEngine): 737 (QScriptEngine::~QScriptEngine): 738 (QScriptEngine::evaluate): 739 (QScriptEngine::collectGarbage): 740 * qt/api/qscriptengine.h: Added. 741 * qt/api/qscriptengine_p.cpp: Added. 742 (QScriptEnginePrivate::QScriptEnginePrivate): 743 (QScriptEnginePrivate::~QScriptEnginePrivate): 744 (QScriptEnginePrivate::evaluate): 745 * qt/api/qscriptengine_p.h: Added. 746 (QScriptEnginePrivate::get): 747 (QScriptEnginePrivate::collectGarbage): 748 (QScriptEnginePrivate::makeJSValue): 749 (QScriptEnginePrivate::context): 750 * qt/api/qscriptvalue.cpp: Added. 751 (QScriptValue::QScriptValue): 752 (QScriptValue::~QScriptValue): 753 (QScriptValue::isValid): 754 (QScriptValue::isBool): 755 (QScriptValue::isBoolean): 756 (QScriptValue::isNumber): 757 (QScriptValue::isNull): 758 (QScriptValue::isString): 759 (QScriptValue::isUndefined): 760 (QScriptValue::isError): 761 (QScriptValue::isObject): 762 (QScriptValue::isFunction): 763 (QScriptValue::toString): 764 (QScriptValue::toNumber): 765 (QScriptValue::toBool): 766 (QScriptValue::toBoolean): 767 (QScriptValue::toInteger): 768 (QScriptValue::toInt32): 769 (QScriptValue::toUInt32): 770 (QScriptValue::toUInt16): 771 (QScriptValue::call): 772 (QScriptValue::engine): 773 (QScriptValue::operator=): 774 (QScriptValue::equals): 775 (QScriptValue::strictlyEquals): 776 * qt/api/qscriptvalue.h: Added. 777 (QScriptValue::): 778 * qt/api/qscriptvalue_p.h: Added. 779 (QScriptValuePrivate::): 780 (QScriptValuePrivate::get): 781 (QScriptValuePrivate::QScriptValuePrivate): 782 (QScriptValuePrivate::isValid): 783 (QScriptValuePrivate::isBool): 784 (QScriptValuePrivate::isNumber): 785 (QScriptValuePrivate::isNull): 786 (QScriptValuePrivate::isString): 787 (QScriptValuePrivate::isUndefined): 788 (QScriptValuePrivate::isError): 789 (QScriptValuePrivate::isObject): 790 (QScriptValuePrivate::isFunction): 791 (QScriptValuePrivate::toString): 792 (QScriptValuePrivate::toNumber): 793 (QScriptValuePrivate::toBool): 794 (QScriptValuePrivate::toInteger): 795 (QScriptValuePrivate::toInt32): 796 (QScriptValuePrivate::toUInt32): 797 (QScriptValuePrivate::toUInt16): 798 (QScriptValuePrivate::equals): 799 (QScriptValuePrivate::strictlyEquals): 800 (QScriptValuePrivate::assignEngine): 801 (QScriptValuePrivate::call): 802 (QScriptValuePrivate::engine): 803 (QScriptValuePrivate::context): 804 (QScriptValuePrivate::value): 805 (QScriptValuePrivate::object): 806 (QScriptValuePrivate::inherits): 807 (QScriptValuePrivate::isJSBased): 808 (QScriptValuePrivate::isNumberBased): 809 (QScriptValuePrivate::isStringBased): 810 * qt/api/qtscriptglobal.h: Added. 811 * qt/tests/qscriptengine/qscriptengine.pro: Added. 812 * qt/tests/qscriptengine/tst_qscriptengine.cpp: Added. 813 (tst_QScriptEngine::tst_QScriptEngine): 814 (tst_QScriptEngine::~tst_QScriptEngine): 815 (tst_QScriptEngine::init): 816 (tst_QScriptEngine::cleanup): 817 (tst_QScriptEngine::collectGarbage): 818 (tst_QScriptEngine::evaluate): 819 * qt/tests/qscriptvalue/qscriptvalue.pro: Added. 820 * qt/tests/qscriptvalue/tst_qscriptvalue.cpp: Added. 821 (tst_QScriptValue::tst_QScriptValue): 822 (tst_QScriptValue::~tst_QScriptValue): 823 (tst_QScriptValue::init): 824 (tst_QScriptValue::cleanup): 825 (tst_QScriptValue::ctor): 826 (tst_QScriptValue::toString_data): 827 (tst_QScriptValue::toString): 828 (tst_QScriptValue::copyConstructor_data): 829 (tst_QScriptValue::copyConstructor): 830 (tst_QScriptValue::assignOperator_data): 831 (tst_QScriptValue::assignOperator): 832 (tst_QScriptValue::dataSharing): 833 (tst_QScriptValue::constructors_data): 834 (tst_QScriptValue::constructors): 835 (tst_QScriptValue::call): 836 * qt/tests/tests.pri: Added. 837 * qt/tests/tests.pro: Added. 838 8392010-01-25 Dmitry Titov <dimich@chromium.org> 840 841 Reviewed by David Levin. 842 843 Fix Chromium Linux tests: the pthread functions on Linux produce segfault if they receive 0 thread handle. 844 After r53714, we can have 0 thread handles passed to pthread_join and pthread_detach if corresponding threads 845 were already terminated and their threadMap entries cleared. 846 Add a 0 check. 847 848 * wtf/ThreadingPthreads.cpp: 849 (WTF::waitForThreadCompletion): 850 (WTF::detachThread): 851 8522010-01-24 Laszlo Gombos <laszlo.1.gombos@nokia.com> 853 854 Reviewed by Maciej Stachowiak. 855 856 Refactor JITStubs.cpp so that DEFINE_STUB_FUNCTION is only used once for each function 857 https://bugs.webkit.org/show_bug.cgi?id=33866 858 859 Place the guard USE(JSVALUE32_64) inside the body of the DEFINE_STUB_FUNCTION 860 macro for those functions that are always present. 861 862 * jit/JITStubs.cpp: 863 (JSC::DEFINE_STUB_FUNCTION): 864 8652010-01-22 Kevin Watters <kevinwatters@gmail.com> 866 867 Reviewed by Kevin Ollivier. 868 869 [wx] Remove the Bakefile build system, which is no longer being used. 870 871 https://bugs.webkit.org/show_bug.cgi?id=34022 872 873 * JavaScriptCoreSources.bkl: Removed. 874 * jscore.bkl: Removed. 875 8762010-01-22 Steve Falkenburg <sfalken@apple.com> 877 878 Reviewed by Darin Adler. 879 880 https://bugs.webkit.org/show_bug.cgi?id=34025 881 Enable client-based Geolocation abstraction for Mac, Windows AppleWebKit targets. 882 883 * Configurations/FeatureDefines.xcconfig: 884 8852010-01-22 Dmitry Titov <dimich@chromium.org> 886 887 Not reviewed, attempted Snow Leopard build fix. 888 889 * wtf/ThreadingPthreads.cpp: Add a forward declaration of a function which is not 'static'. 890 8912009-01-22 Dmitry Titov <dimich@chromium.org> 892 893 Reviewed by Maciej Stachowiak. 894 895 Fix the leak of ThreadIdentifiers in threadMap across threads. 896 https://bugs.webkit.org/show_bug.cgi?id=32689 897 898 Test is added to DumpRenderTree.mm. 899 900 * Android.mk: Added file ThreadIdentifierDataPthreads.(h|cpp) to build. 901 * Android.v8.wtf.mk: Ditto. 902 * GNUmakefile.am: Ditto. 903 * JavaScriptCore.gyp/JavaScriptCore.gyp: Ditto. 904 * JavaScriptCore.gypi: Ditto. 905 * JavaScriptCore.xcodeproj/project.pbxproj: Ditto. 906 907 * wtf/ThreadIdentifierDataPthreads.cpp: Added. Contains custom implementation of thread-specific data that uses custom destructor. 908 (WTF::ThreadIdentifierData::~ThreadIdentifierData): Removes the ThreadIdentifier from the threadMap. 909 (WTF::ThreadIdentifierData::identifier): 910 (WTF::ThreadIdentifierData::initialize): 911 (WTF::ThreadIdentifierData::destruct): Custom thread-specific destructor. Resets the value for the key again to cause second invoke. 912 (WTF::ThreadIdentifierData::initializeKeyOnceHelper): 913 (WTF::ThreadIdentifierData::initializeKeyOnce): Need to use pthread_once since initialization may come on any thread(s). 914 * wtf/ThreadIdentifierDataPthreads.h: Added. 915 (WTF::ThreadIdentifierData::ThreadIdentifierData): 916 917 * wtf/Threading.cpp: 918 (WTF::threadEntryPoint): Move initializeCurrentThreadInternal to after the lock to make 919 sure it is invoked when ThreadIdentifier is already established. 920 921 * wtf/Threading.h: Rename setThreadNameInternal -> initializeCurrentThreadInternal since it does more then only set the name now. 922 * wtf/ThreadingNone.cpp: 923 (WTF::initializeCurrentThreadInternal): Ditto. 924 * wtf/ThreadingWin.cpp: 925 (WTF::initializeCurrentThreadInternal): Ditto. 926 (WTF::initializeThreading): Ditto. 927 * wtf/gtk/ThreadingGtk.cpp: 928 (WTF::initializeCurrentThreadInternal): Ditto. 929 * wtf/qt/ThreadingQt.cpp: 930 (WTF::initializeCurrentThreadInternal): Ditto. 931 932 * wtf/ThreadingPthreads.cpp: 933 (WTF::establishIdentifierForPthreadHandle): 934 (WTF::clearPthreadHandleForIdentifier): Make it not 'static' so the ~ThreadIdentifierData() in another file can call it. 935 (WTF::initializeCurrentThreadInternal): Set the thread-specific data. The ThreadIdentifier is already established by creating thread. 936 (WTF::waitForThreadCompletion): Remove call to clearPthreadHandleForIdentifier(threadID) since it is now done in ~ThreadIdentifierData(). 937 (WTF::detachThread): Ditto. 938 (WTF::currentThread): Use the thread-specific data to get the ThreadIdentifier. It's many times faster then Mutex-protected iteration through the map. 939 Also, set the thread-specific data if called first time on the thread. 940 9412010-01-21 Kwang Yul Seo <skyul@company100.net> 942 943 Reviewed by Alexey Proskuryakov. 944 945 Add ThreadSpecific for ENABLE(SINGLE_THREADED) 946 https://bugs.webkit.org/show_bug.cgi?id=33878 947 948 Implement ThreadSpecific with a simple getter/setter 949 when ENABLE(SINGLE_THREADED) is true. 950 951 Due to the change in https://bugs.webkit.org/show_bug.cgi?id=33236, 952 an implementation of ThreadSpecific must be available to build WebKit. 953 This causes a build failure for platforms without a proper 954 ThreadSpecific implementation. 955 956 * wtf/ThreadSpecific.h: 957 (WTF::::ThreadSpecific): 958 (WTF::::~ThreadSpecific): 959 (WTF::::get): 960 (WTF::::set): 961 (WTF::::destroy): 962 9632010-01-21 Kwang Yul Seo <skyul@company100.net> 964 965 Reviewed by Maciej Stachowiak. 966 967 Add fastStrDup to FastMalloc 968 https://bugs.webkit.org/show_bug.cgi?id=33937 969 970 The new string returned by fastStrDup is obtained with fastMalloc, 971 and can be freed with fastFree. This makes the memory management 972 more consistent because we don't need to keep strdup allocated pointers 973 and free them with free(). Instead we can use fastFree everywhere. 974 975 * wtf/FastMalloc.cpp: 976 (WTF::fastStrDup): 977 * wtf/FastMalloc.h: 978 9792010-01-21 Brady Eidson <beidson@apple.com> 980 981 Reviewed by Maciej Stachowiak. 982 983 history.back() for same-document history traversals isn't synchronous as the specification states. 984 <rdar://problem/7535011> and https://bugs.webkit.org/show_bug.cgi?id=33538 985 986 * wtf/Platform.h: Add a "HISTORY_ALWAYS_ASYNC" enable and turn it on for Chromium. 987 9882010-01-21 Geoffrey Garen <ggaren@apple.com> 989 990 Reviewed by Oliver Hunt. 991 992 Always create a prototype for automatically managed classes. 993 994 This fixes some errors where prototype chains were not correctly hooked 995 up, and also ensures that API classes work correctly with features like 996 instanceof. 997 998 * API/JSClassRef.cpp: 999 (OpaqueJSClass::create): Cleaned up some of this code. Also changed it 1000 to always create a prototype class. 1001 1002 * API/tests/testapi.c: 1003 (Derived2_class): 1004 (main): Fixed a null value crash in the exception checking code. 1005 * API/tests/testapi.js: Added some tests for the case where a prototype 1006 chain would not be hooked up correctly. 1007 10082010-01-21 Oliver Hunt <oliver@apple.com> 1009 1010 Reviewed by Geoff Garen. 1011 1012 Force JSC to create a prototype chain for API classes with a 1013 parent class but no static functions. 1014 1015 * API/JSClassRef.cpp: 1016 (OpaqueJSClass::create): 1017 10182010-01-21 Kent Hansen <kent.hansen@nokia.com> 1019 1020 Reviewed by Geoffrey Garen. 1021 1022 Object.getOwnPropertyDescriptor always returns undefined for JS API objects 1023 https://bugs.webkit.org/show_bug.cgi?id=33946 1024 1025 Ideally the getOwnPropertyDescriptor() reimplementation should return an 1026 access descriptor that wraps the property getter and setter callbacks, but 1027 that approach is much more involved than returning a value descriptor. 1028 Keep it simple for now. 1029 1030 * API/JSCallbackObject.h: 1031 * API/JSCallbackObjectFunctions.h: 1032 (JSC::::getOwnPropertyDescriptor): 1033 * API/tests/testapi.js: 1034 10352010-01-20 Mark Rowe <mrowe@apple.com> 1036 1037 Build fix. 1038 1039 * wtf/FastMalloc.cpp: 1040 (WTF::TCMalloc_PageHeap::initializeScavenger): Remove unnecessary function call. 1041 10422010-01-20 Mark Rowe <mrowe@apple.com> 1043 1044 Reviewed by Oliver Hunt. 1045 1046 Use the inline i386 assembly for x86_64 as well rather than falling back to using pthread mutexes. 1047 1048 * wtf/TCSpinLock.h: 1049 (TCMalloc_SpinLock::Lock): 1050 (TCMalloc_SpinLock::Unlock): 1051 (TCMalloc_SlowLock): 1052 10532010-01-20 Mark Rowe <mrowe@apple.com> 1054 1055 Reviewed by Oliver Hunt. 1056 1057 <rdar://problem/7215063> Use GCD instead of an extra thread for FastMalloc scavenging on platforms where it is supported 1058 1059 Abstract the background scavenging slightly so that an alternate implementation that uses GCD can be used on platforms 1060 where it is supported. 1061 1062 * wtf/FastMalloc.cpp: 1063 (WTF::TCMalloc_PageHeap::init): 1064 (WTF::TCMalloc_PageHeap::initializeScavenger): 1065 (WTF::TCMalloc_PageHeap::signalScavenger): 1066 (WTF::TCMalloc_PageHeap::shouldContinueScavenging): 1067 (WTF::TCMalloc_PageHeap::Delete): 1068 (WTF::TCMalloc_PageHeap::periodicScavenge): 1069 * wtf/Platform.h: 1070 10712010-01-20 Geoffrey Garen <ggaren@apple.com> 1072 1073 Reviewed by Oliver Hunt. 1074 1075 <rdar://problem/7562708> REGRESSION(53460): Heap::destroy may not run 1076 all destructors 1077 1078 * runtime/Collector.cpp: 1079 (JSC::Heap::freeBlocks): Instead of fully marking protected objects, 1080 just set their mark bits. This prevents protected objects from keeping 1081 unprotected objects alive. Destructor order is not guaranteed, so it's 1082 OK to destroy objects pointed to by protected objects before destroying 1083 protected objects. 1084 10852010-01-19 David Levin <levin@chromium.org> 1086 1087 Reviewed by Oliver Hunt. 1088 1089 CrossThreadCopier needs to support ThreadSafeShared better. 1090 https://bugs.webkit.org/show_bug.cgi?id=33698 1091 1092 * wtf/TypeTraits.cpp: Added tests for the new type traits. 1093 * wtf/TypeTraits.h: 1094 (WTF::IsSubclass): Determines if a class is a derived from another class. 1095 (WTF::IsSubclassOfTemplate): Determines if a class is a derived from a 1096 template class (with one parameter that is unknown). 1097 (WTF::RemoveTemplate): Reveals the type for a template parameter. 1098 10992010-01-20 Steve Falkenburg <sfalken@apple.com> 1100 1101 Reviewed by Darin Adler and Adam Roben. 1102 1103 Feature defines are difficult to maintain on Windows builds 1104 https://bugs.webkit.org/show_bug.cgi?id=33883 1105 1106 FeatureDefines.vsprops are now maintained in a way similar to 1107 Configurations/FeatureDefines.xcconfig, with the added advantage 1108 of having a single FeatureDefines file across all projects. 1109 1110 * Configurations/FeatureDefines.xcconfig: Add comments about keeping feature definitions in sync. 1111 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: Add FeatureDefines.vsprops inherited property sheet. 1112 * JavaScriptCore.vcproj/WTF/WTF.vcproj: Add FeatureDefines.vsprops inherited property sheet. 1113 11142010-01-20 Csaba Osztrogonác <ossy@webkit.org> 1115 1116 [Qt] Unreviewed buildfix for r53547. 1117 1118 * DerivedSources.pro: 1119 11202010-01-20 Tor Arne Vestbø <tor.arne.vestbo@nokia.com> 1121 1122 Reviewed by Simon Hausmann. 1123 1124 [Qt] Make extraCompilers for generated sources depend on their scripts 1125 1126 * DerivedSources.pro: 1127 11282010-01-19 Brian Weinstein <bweinstein@apple.com> 1129 1130 Reviewed by Tim Hatcher. 1131 1132 When JavaScriptCore calls Debugger::Exception, have it pass a 1133 hasHandler variable that represents if exception is being handled 1134 in the same function (not in a parent on the call stack). 1135 1136 This just adds a new parameter, no behavior is changed. 1137 1138 * debugger/Debugger.h: 1139 * interpreter/Interpreter.cpp: 1140 (JSC::Interpreter::throwException): 1141 11422010-01-18 Maciej Stachowiak <mjs@apple.com> 1143 1144 Reviewed by Adam Barth. 1145 1146 Inline functions that are hot in DOM manipulation 1147 https://bugs.webkit.org/show_bug.cgi?id=33820 1148 1149 (3% speedup on Dromaeo DOM Core tests) 1150 1151 * runtime/WeakGCMap.h: 1152 (JSC::::get): inline 1153 11542010-01-19 Laszlo Gombos <laszlo.1.gombos@nokia.com> 1155 1156 Unreviewed build fix for JIT with RVCT. 1157 1158 Remove IMPORT statement; cti_vm_throw is already defined in JITStubs.h. 1159 Remove extra ')'. 1160 1161 * jit/JITStubs.cpp: 1162 (JSC::ctiVMThrowTrampoline): 1163 11642010-01-19 Geoffrey Garen <ggaren@apple.com> 1165 1166 Reviewed by Oliver Hunt. 1167 1168 REGRESSION (52082): Crash on worker thread when reloading http://radnan.public.iastate.edu/procedural/ 1169 https://bugs.webkit.org/show_bug.cgi?id=33826 1170 1171 This bug was caused by a GC-protected object being destroyed early by 1172 Heap::destroy. Clients of the GC protect APIs (reasonably) expect pointers 1173 to GC-protected memory to be valid. 1174 1175 The solution is to do two passes of tear-down in Heap::destroy. The first 1176 pass tears down all unprotected objects. The second pass ASSERTs that all 1177 previously protected objects are now unprotected, and then tears down 1178 all perviously protected objects. These two passes simulate the two passes 1179 that would have been required to free a protected object during normal GC. 1180 1181 * API/JSContextRef.cpp: Removed some ASSERTs that have moved into Heap. 1182 1183 * runtime/Collector.cpp: 1184 (JSC::Heap::destroy): Moved ASSERTs to here. 1185 (JSC::Heap::freeBlock): Tidied up the use of didShrink by moving its 1186 setter to the function that does the shrinking. 1187 (JSC::Heap::freeBlocks): Implemented above algorithm. 1188 (JSC::Heap::shrinkBlocks): Tidied up the use of didShrink. 1189 11902010-01-19 Gavin Barraclough <barraclough@apple.com> 1191 1192 Reviewed by NOBODY (build fix). 1193 1194 Reverting r53455, breaks 2 javascriptcore tests. 1195 1196 * API/JSContextRef.cpp: 1197 * runtime/Collector.cpp: 1198 (JSC::Heap::destroy): 1199 (JSC::Heap::freeBlock): 1200 (JSC::Heap::freeBlocks): 1201 (JSC::Heap::shrinkBlocks): 1202 12032010-01-18 Gavin Barraclough <barraclough@apple.com> 1204 1205 Reviewed by NOBODY (build fix). 1206 1207 Revert r53454, since it causes much sadness in this world. 1208 1209 * runtime/UString.cpp: 1210 (JSC::UString::spliceSubstringsWithSeparators): 1211 (JSC::UString::replaceRange): 1212 * runtime/UStringImpl.cpp: 1213 (JSC::UStringImpl::baseSharedBuffer): 1214 (JSC::UStringImpl::sharedBuffer): 1215 (JSC::UStringImpl::~UStringImpl): 1216 * runtime/UStringImpl.h: 1217 (JSC::UntypedPtrAndBitfield::UntypedPtrAndBitfield): 1218 (JSC::UntypedPtrAndBitfield::asPtr): 1219 (JSC::UntypedPtrAndBitfield::operator&=): 1220 (JSC::UntypedPtrAndBitfield::operator|=): 1221 (JSC::UntypedPtrAndBitfield::operator&): 1222 (JSC::UStringImpl::create): 1223 (JSC::UStringImpl::cost): 1224 (JSC::UStringImpl::isIdentifier): 1225 (JSC::UStringImpl::setIsIdentifier): 1226 (JSC::UStringImpl::ref): 1227 (JSC::UStringImpl::deref): 1228 (JSC::UStringImpl::checkConsistency): 1229 (JSC::UStringImpl::UStringImpl): 1230 (JSC::UStringImpl::bufferOwnerString): 1231 (JSC::UStringImpl::bufferOwnership): 1232 (JSC::UStringImpl::isStatic): 1233 * wtf/StringHashFunctions.h: 1234 (WTF::stringHash): 1235 12362010-01-18 Geoffrey Garen <ggaren@apple.com> 1237 1238 Reviewed by Oliver Hunt. 1239 1240 REGRESSION (52082): Crash on worker thread when reloading http://radnan.public.iastate.edu/procedural/ 1241 https://bugs.webkit.org/show_bug.cgi?id=33826 1242 1243 This bug was caused by a GC-protected object being destroyed early by 1244 Heap::destroy. Clients of the GC protect APIs (reasonably) expect pointers 1245 to GC-protected memory to be valid. 1246 1247 The solution is to do two passes of tear-down in Heap::destroy. The first 1248 pass tears down all unprotected objects. The second pass ASSERTs that all 1249 previously protected objects are now unprotected, and then tears down 1250 all perviously protected objects. These two passes simulate the two passes 1251 that would have been required to free a protected object during normal GC. 1252 1253 * API/JSContextRef.cpp: Removed some ASSERTs that have moved into Heap. 1254 1255 * runtime/Collector.cpp: 1256 (JSC::Heap::destroy): Moved ASSERTs to here. 1257 (JSC::Heap::freeBlock): Tidied up the use of didShrink by moving its 1258 setter to the function that does the shrinking. 1259 (JSC::Heap::freeBlocks): Implemented above algorithm. 1260 (JSC::Heap::shrinkBlocks): Tidied up the use of didShrink. 1261 12622010-01-18 Gavin Barraclough <barraclough@apple.com> 1263 1264 Reviewed by Oliver Hunt. 1265 1266 https://bugs.webkit.org/show_bug.cgi?id=33731 1267 Remove UntypedPtrAndBitfield from UStringImpl (akin to PtrAndFlags). 1268 1269 This break the OS X Leaks tool. Instead, free up some more bits from the refCount. 1270 1271 * runtime/UStringImpl.cpp: 1272 (JSC::UStringImpl::sharedBuffer): 1273 (JSC::UStringImpl::~UStringImpl): 1274 * runtime/UStringImpl.h: 1275 (JSC::UStringImpl::cost): 1276 (JSC::UStringImpl::checkConsistency): 1277 (JSC::UStringImpl::UStringImpl): 1278 (JSC::UStringImpl::bufferOwnerString): 1279 (JSC::UStringImpl::): 1280 * wtf/StringHashFunctions.h: 1281 (WTF::stringHash): 1282 12832010-01-18 Kent Tamura <tkent@chromium.org> 1284 1285 Reviewed by Darin Adler. 1286 1287 HTMLInputElement::valueAsDate setter support for type=month. 1288 https://bugs.webkit.org/show_bug.cgi?id=33021 1289 1290 Expose the following functions to be used by WebCore: 1291 - WTF::msToyear() 1292 - WTF::dayInYear() 1293 - WTF::monthFromDayInYear() 1294 - WTF::dayInMonthFromDayInYear() 1295 1296 * JavaScriptCore.exp: 1297 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: 1298 * wtf/DateMath.cpp: 1299 (WTF::msToYear): Remove "static inline". 1300 (WTF::dayInYear): Remove "static inline". 1301 (WTF::monthFromDayInYear): Remove "static inline". 1302 (WTF::dayInMonthFromDayInYear): Remove "static inline". 1303 * wtf/DateMath.h: Declare the above functions. 1304 13052010-01-18 Darin Adler <darin@apple.com> 1306 1307 Fix build by reverting the previous change. 1308 1309 * runtime/UString.h: Rolled out the FastAllocBase base class. 1310 It was making UString larger, and therefore JSString larger, 1311 and too big for a garbage collection cell. 1312 1313 This raises the unpleasant possibility that many classes became 1314 larger because we added the FastAllocBase base class. I am 1315 worried about this, and it needs to be investigated. 1316 13172010-01-18 Zoltan Horvath <zoltan@webkit.org> 1318 1319 Reviewed by Darin Adler. 1320 1321 Allow custom memory allocation control for UString class 1322 https://bugs.webkit.org/show_bug.cgi?id=27831 1323 1324 Inherits the following class from FastAllocBase because it is 1325 instantiated by 'new' and no need to be copyable: 1326 1327 class name - instantiated at: 1328 classs UString - JavaScriptCore/runtime/UString.cpp:160 1329 1330 * runtime/UString.h: 1331 13322010-01-18 Evan Cheng <evan.cheng@apple.com> 1333 1334 Reviewed by Darin Adler. 1335 1336 Add some ALWAYS_INLINE for key functions not inlined by some versions of GCC. 1337 rdar://problem/7553780 1338 1339 * runtime/JSObject.h: 1340 (JSC::JSObject::getPropertySlot): ALWAYS_INLINE both overloads. 1341 * runtime/JSString.h: 1342 (JSC::JSString::JSString): ALWAYS_INLINE the version that takes a UString. 1343 * runtime/UString.h: 1344 (JSC::operator==): ALWAYS_INLINE the version that compares two UString objects. 1345 13462010-01-18 Csaba Osztrogonác <ossy@webkit.org> 1347 1348 Reviewed by Darin Adler. 1349 1350 Delete dftables-xxxxxxxx.in files automatically. 1351 https://bugs.webkit.org/show_bug.cgi?id=33796 1352 1353 * pcre/dftables: unlink unnecessary temporary file. 1354 13552010-01-18 Tor Arne Vestbø <tor.arne.vestbo@nokia.com> 1356 1357 Reviewed by Simon Hausmann. 1358 1359 [Qt] Force qmake to generate a single makefile for DerivedSources.pro 1360 1361 * DerivedSources.pro: 1362 13632010-01-18 Csaba Osztrogonác <ossy@webkit.org> 1364 1365 Rubber-stamped by Gustavo Noronha Silva. 1366 1367 Rolling out r53391 and r53392 because of random crashes on buildbots. 1368 https://bugs.webkit.org/show_bug.cgi?id=33731 1369 1370 * bytecode/CodeBlock.h: 1371 (JSC::CallLinkInfo::seenOnce): 1372 (JSC::CallLinkInfo::setSeen): 1373 (JSC::MethodCallLinkInfo::MethodCallLinkInfo): 1374 (JSC::MethodCallLinkInfo::seenOnce): 1375 (JSC::MethodCallLinkInfo::setSeen): 1376 * jit/JIT.cpp: 1377 (JSC::JIT::unlinkCall): 1378 * jit/JITPropertyAccess.cpp: 1379 (JSC::JIT::patchMethodCallProto): 1380 * runtime/UString.cpp: 1381 (JSC::UString::spliceSubstringsWithSeparators): 1382 (JSC::UString::replaceRange): 1383 * runtime/UString.h: 1384 * runtime/UStringImpl.cpp: 1385 (JSC::UStringImpl::baseSharedBuffer): 1386 (JSC::UStringImpl::sharedBuffer): 1387 (JSC::UStringImpl::~UStringImpl): 1388 * runtime/UStringImpl.h: 1389 (JSC::UntypedPtrAndBitfield::UntypedPtrAndBitfield): 1390 (JSC::UntypedPtrAndBitfield::asPtr): 1391 (JSC::UntypedPtrAndBitfield::operator&=): 1392 (JSC::UntypedPtrAndBitfield::operator|=): 1393 (JSC::UntypedPtrAndBitfield::operator&): 1394 (JSC::UStringImpl::create): 1395 (JSC::UStringImpl::cost): 1396 (JSC::UStringImpl::isIdentifier): 1397 (JSC::UStringImpl::setIsIdentifier): 1398 (JSC::UStringImpl::ref): 1399 (JSC::UStringImpl::deref): 1400 (JSC::UStringImpl::checkConsistency): 1401 (JSC::UStringImpl::UStringImpl): 1402 (JSC::UStringImpl::bufferOwnerString): 1403 (JSC::UStringImpl::bufferOwnership): 1404 (JSC::UStringImpl::isStatic): 1405 * wtf/StringHashFunctions.h: 1406 (WTF::stringHash): 1407 14082010-01-18 Simon Hausmann <simon.hausmann@nokia.com> 1409 1410 Reviewed by Kenneth Rohde Christiansen. 1411 1412 Fix the build with strict gcc and RVCT versions: It's not legal to cast a 1413 pointer to a function to a void* without an intermediate cast to a non-pointer 1414 type. A cast to a ptrdiff_t inbetween fixes it. 1415 1416 * runtime/JSString.h: 1417 (JSC::Fiber::JSString): 1418 14192010-01-15 Gavin Barraclough <barraclough@apple.com> 1420 1421 Reviewed by Oliver Hunt. 1422 1423 https://bugs.webkit.org/show_bug.cgi?id=33731 1424 Remove UntypedPtrAndBitfield from UStringImpl (akin to PtrAndFlags). 1425 1426 This break the OS X Leaks tool. Instead, free up some more bits from the refCount. 1427 1428 * runtime/UStringImpl.cpp: 1429 (JSC::UStringImpl::sharedBuffer): 1430 (JSC::UStringImpl::~UStringImpl): 1431 * runtime/UStringImpl.h: 1432 (JSC::UStringImpl::cost): 1433 (JSC::UStringImpl::checkConsistency): 1434 (JSC::UStringImpl::UStringImpl): 1435 (JSC::UStringImpl::bufferOwnerString): 1436 (JSC::UStringImpl::): 1437 * wtf/StringHashFunctions.h: 1438 (WTF::stringHash): 1439 14402010-01-15 Gavin Barraclough <barraclough@apple.com> 1441 1442 Reviewed by Oliver Hunt. 1443 1444 https://bugs.webkit.org/show_bug.cgi?id=33731 1445 Remove uses of PtrAndFlags from JIT data stuctures. 1446 1447 These break the OS X Leaks tool. Free up a bit in CallLinkInfo, and invalid 1448 permutation of pointer states in MethodCallLinkInfo to represent the removed bits. 1449 1450 * bytecode/CodeBlock.h: 1451 (JSC::CallLinkInfo::seenOnce): 1452 (JSC::CallLinkInfo::setSeen): 1453 (JSC::MethodCallLinkInfo::MethodCallLinkInfo): 1454 (JSC::MethodCallLinkInfo::seenOnce): 1455 (JSC::MethodCallLinkInfo::setSeen): 1456 * jit/JIT.cpp: 1457 (JSC::JIT::unlinkCall): 1458 * jit/JITPropertyAccess.cpp: 1459 (JSC::JIT::patchMethodCallProto): 1460 * runtime/UString.h: 1461 14622010-01-16 Maciej Stachowiak <mjs@apple.com> 1463 1464 Reviewed by Oliver Hunt. 1465 1466 Cache JS string values made from DOM strings (Dromaeo speedup) 1467 https://bugs.webkit.org/show_bug.cgi?id=33768 1468 <rdar://problem/7353576> 1469 1470 * runtime/JSString.h: 1471 (JSC::jsStringWithFinalizer): Added new mechanism for a string to have an optional 1472 finalizer callback, for the benefit of weak-referencing caches. 1473 (JSC::): 1474 (JSC::Fiber::JSString): 1475 (JSC::Fiber::~JSString): 1476 * runtime/JSString.cpp: 1477 (JSC::JSString::resolveRope): Clear fibers so this doesn't look like a string with a finalizer. 1478 * runtime/WeakGCMap.h: Include "Collector.h" to make this header includable by itself. 1479 14802010-01-15 Sam Weinig <sam@webkit.org> 1481 1482 Reviewed by Maciej Stachowiak. 1483 1484 Fix for <rdar://problem/7548432> 1485 Add ALWAYS_INLINE to jsLess for a 1% speedup on llvm-gcc. 1486 1487 * runtime/Operations.h: 1488 (JSC::jsLess): 1489 14902010-01-14 Geoffrey Garen <ggaren@apple.com> 1491 1492 Reviewed by Oliver Hunt. 1493 1494 REGRESISON: Google maps buttons not working properly 1495 https://bugs.webkit.org/show_bug.cgi?id=31871 1496 1497 REGRESSION(r52948): JavaScript exceptions thrown on Google Maps when 1498 getting directions for a second time 1499 https://bugs.webkit.org/show_bug.cgi?id=33446 1500 1501 SunSpider and v8 report no change. 1502 1503 * interpreter/Interpreter.cpp: 1504 (JSC::Interpreter::tryCacheGetByID): Update our cached offset in case 1505 flattening the dictionary changed any of its offsets. 1506 1507 * jit/JITStubs.cpp: 1508 (JSC::JITThunks::tryCacheGetByID): 1509 (JSC::DEFINE_STUB_FUNCTION): 1510 * runtime/Operations.h: 1511 (JSC::normalizePrototypeChain): ditto 1512 15132010-01-14 Gavin Barraclough <barraclough@apple.com> 1514 1515 Reviewed by Oliver Hunt. 1516 1517 https://bugs.webkit.org/show_bug.cgi?id=33705 1518 UStringImpl::create() should use internal storage 1519 1520 When creating a UStringImpl copying of a UChar*, we can use an internal buffer, 1521 by calling UStringImpl::tryCreateUninitialized(). 1522 1523 Also, remove duplicate of copyChars from JSString, call UStringImpl's version. 1524 1525 Small (max 0.5%) progression on Sunspidey. 1526 1527 * runtime/JSString.cpp: 1528 (JSC::JSString::resolveRope): 1529 * runtime/UStringImpl.h: 1530 (JSC::UStringImpl::create): 1531 15322010-01-14 Gavin Barraclough <barraclough@apple.com> 1533 1534 Reviewed by Sam Weinig. 1535 1536 Make naming & behaviour of UString[Impl] methods more consistent. 1537 https://bugs.webkit.org/show_bug.cgi?id=33702 1538 1539 UString::create() creates a copy of the UChar* passed, but UStringImpl::create() assumes 1540 that it should assume ownership of the provided buffer (with UString::createNonCopying() 1541 and UStringImpl::createCopying() providing the alternate behaviours). Unify on create() 1542 taking a copy of the provided buffer. For non-copying cases, use the name 'adopt', and 1543 make this method take a Vector<UChar>&. For cases where non-copying construction was being 1544 used, other than from a Vector<UChar>, change the code to allocate the storage along with 1545 the UStringImpl using UStringImpl::createUninitialized(). (The adopt() method also more 1546 closely matches that of WebCore::StringImpl). 1547 1548 Also, UString::createUninitialized() and UStringImpl::createUninitialized() have incompatible 1549 behaviours, in that the UString form sets the provided UChar* to a null or non-null value to 1550 indicate success or failure, but UStringImpl uses the returned PassRefPtr<UStringImpl> to 1551 indicate when allocation has failed (potentially leaving the output Char* uninitialized). 1552 This is also incompatible with WebCore::StringImpl's behaviour, in that 1553 StringImpl::createUninitialized() will CRASH() if unable to allocate. Some uses of 1554 createUninitialized() in JSC are unsafe, since they do not test the result for null. 1555 UStringImpl's indication is preferable, since we may want a successful call to set the result 1556 buffer to 0 (specifically, StringImpl returns 0 for the buffer where createUninitialized() 1557 returns the empty string, which seems reasonable to catch bugs early). UString's method 1558 cannot support UStringImpl's behaviour directly, since it returns an object rather than a 1559 pointer. 1560 - remove UString::createUninitialized(), replace with calls to UStringImpl::createUninitialized() 1561 - create a UStringImpl::tryCreateUninitialized() form UStringImpl::createUninitialized(), 1562 with current behaviour, make createUninitialized() crash on failure to allocate. 1563 - make cases in JSC that do not check the result call createUninitialized(), and cases that do 1564 check call tryCreateUninitialized(). 1565 1566 Rename computedHash() to existingHash(), to bring this in line wih WebCore::StringImpl. 1567 1568 * API/JSClassRef.cpp: 1569 (OpaqueJSClassContextData::OpaqueJSClassContextData): 1570 * JavaScriptCore.exp: 1571 * runtime/ArrayPrototype.cpp: 1572 (JSC::arrayProtoFuncToString): 1573 * runtime/Identifier.cpp: 1574 (JSC::CStringTranslator::translate): 1575 (JSC::UCharBufferTranslator::translate): 1576 * runtime/JSString.cpp: 1577 (JSC::JSString::resolveRope): 1578 * runtime/Lookup.cpp: 1579 (JSC::HashTable::createTable): 1580 * runtime/Lookup.h: 1581 (JSC::HashTable::entry): 1582 * runtime/StringBuilder.h: 1583 (JSC::StringBuilder::release): 1584 * runtime/StringConstructor.cpp: 1585 (JSC::stringFromCharCodeSlowCase): 1586 * runtime/StringPrototype.cpp: 1587 (JSC::substituteBackreferencesSlow): 1588 (JSC::stringProtoFuncToLowerCase): 1589 (JSC::stringProtoFuncToUpperCase): 1590 (JSC::stringProtoFuncFontsize): 1591 (JSC::stringProtoFuncLink): 1592 * runtime/Structure.cpp: 1593 (JSC::Structure::despecifyDictionaryFunction): 1594 (JSC::Structure::get): 1595 (JSC::Structure::despecifyFunction): 1596 (JSC::Structure::put): 1597 (JSC::Structure::remove): 1598 (JSC::Structure::insertIntoPropertyMapHashTable): 1599 (JSC::Structure::checkConsistency): 1600 * runtime/Structure.h: 1601 (JSC::Structure::get): 1602 * runtime/StructureTransitionTable.h: 1603 (JSC::StructureTransitionTableHash::hash): 1604 * runtime/UString.cpp: 1605 (JSC::createRep): 1606 (JSC::UString::UString): 1607 (JSC::UString::spliceSubstringsWithSeparators): 1608 (JSC::UString::replaceRange): 1609 (JSC::UString::operator=): 1610 * runtime/UString.h: 1611 (JSC::UString::adopt): 1612 (JSC::IdentifierRepHash::hash): 1613 (JSC::makeString): 1614 * runtime/UStringImpl.h: 1615 (JSC::UStringImpl::adopt): 1616 (JSC::UStringImpl::create): 1617 (JSC::UStringImpl::createUninitialized): 1618 (JSC::UStringImpl::tryCreateUninitialized): 1619 (JSC::UStringImpl::existingHash): 1620 16212010-01-13 Kent Hansen <kent.hansen@nokia.com> 1622 1623 Reviewed by Oliver Hunt. 1624 1625 JSON.stringify and JSON.parse needlessly process properties in the prototype chain 1626 https://bugs.webkit.org/show_bug.cgi?id=33053 1627 1628 * runtime/JSONObject.cpp: 1629 (JSC::Stringifier::Holder::appendNextProperty): 1630 (JSC::Walker::walk): 1631 16322010-01-13 Gavin Barraclough <barraclough@apple.com> 1633 1634 Reviewed by NOBODY (buildfix). 1635 1636 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: 1637 16382010-01-13 Alexey Proskuryakov <ap@apple.com> 1639 1640 Reviewed by Darin Adler. 1641 1642 https://bugs.webkit.org/show_bug.cgi?id=33641 1643 Assertion failure in Lexer.cpp if input stream ends while in string escape 1644 1645 Test: fast/js/end-in-string-escape.html 1646 1647 * parser/Lexer.cpp: (JSC::Lexer::lex): Bail out quickly on end of stream, not giving the 1648 assertion a chance to fire. 1649 16502010-01-13 Gavin Barraclough <barraclough@apple.com> 1651 1652 Reviewed by NOBODY (buildfix). 1653 1654 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: 1655 16562010-01-13 Gavin Barraclough <barraclough@apple.com> 1657 1658 Rubber stamped by Sam Weinig & Darin Adler. 1659 1660 Three quick fixes to UStringImpl. 1661 - The destroy() method can be switched back to a normal destructor; since we've switched 1662 the way we protect static strings to be using an odd ref-count the destroy() won't abort. 1663 - The cost() calculation logic was wrong. If you have multiple JSStrings wrapping substrings 1664 of a base string, they would each report the full cost of the base string to the heap. 1665 Instead we should only be reporting once for the base string. 1666 - Remove the overloaded new operator calling fastMalloc, replace this with a 'using' to pick 1667 up the implementation from the parent class. 1668 1669 * JavaScriptCore.exp: 1670 * runtime/UStringImpl.cpp: 1671 (JSC::UStringImpl::~UStringImpl): 1672 * runtime/UStringImpl.h: 1673 (JSC::UStringImpl::cost): 1674 (JSC::UStringImpl::deref): 1675 16762010-01-13 Jocelyn Turcotte <jocelyn.turcotte@nokia.com> 1677 1678 Reviewed by Simon Hausmann. 1679 1680 [Qt] Split the build process in two different .pro files. 1681 This allows qmake to be run once all source files are available. 1682 1683 * DerivedSources.pro: Added. 1684 * JavaScriptCore.pri: Moved source generation to DerivedSources.pro 1685 * pcre/pcre.pri: Moved source generation to DerivedSources.pro 1686 16872010-01-12 Kent Hansen <kent.hansen@nokia.com> 1688 1689 Reviewed by Geoffrey Garen. 1690 1691 [ES5] Implement Object.getOwnPropertyNames 1692 https://bugs.webkit.org/show_bug.cgi?id=32242 1693 1694 Add an extra argument to getPropertyNames() and getOwnPropertyNames() 1695 (and all reimplementations thereof) that indicates whether non-enumerable 1696 properties should be added. 1697 1698 * API/JSCallbackObject.h: 1699 * API/JSCallbackObjectFunctions.h: 1700 (JSC::::getOwnPropertyNames): 1701 * JavaScriptCore.exp: 1702 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: 1703 * debugger/DebuggerActivation.cpp: 1704 (JSC::DebuggerActivation::getOwnPropertyNames): 1705 * debugger/DebuggerActivation.h: 1706 * runtime/Arguments.cpp: 1707 (JSC::Arguments::getOwnPropertyNames): 1708 * runtime/Arguments.h: 1709 * runtime/CommonIdentifiers.h: 1710 * runtime/JSArray.cpp: 1711 (JSC::JSArray::getOwnPropertyNames): 1712 * runtime/JSArray.h: 1713 * runtime/JSByteArray.cpp: 1714 (JSC::JSByteArray::getOwnPropertyNames): 1715 * runtime/JSByteArray.h: 1716 * runtime/JSFunction.cpp: 1717 (JSC::JSFunction::getOwnPropertyNames): 1718 * runtime/JSFunction.h: 1719 * runtime/JSNotAnObject.cpp: 1720 (JSC::JSNotAnObject::getOwnPropertyNames): 1721 * runtime/JSNotAnObject.h: 1722 * runtime/JSObject.cpp: 1723 (JSC::getClassPropertyNames): 1724 (JSC::JSObject::getPropertyNames): 1725 (JSC::JSObject::getOwnPropertyNames): 1726 * runtime/JSObject.h: 1727 * runtime/JSVariableObject.cpp: 1728 (JSC::JSVariableObject::getOwnPropertyNames): 1729 * runtime/JSVariableObject.h: 1730 * runtime/ObjectConstructor.cpp: 1731 (JSC::ObjectConstructor::ObjectConstructor): 1732 (JSC::objectConstructorGetOwnPropertyNames): 1733 * runtime/RegExpMatchesArray.h: 1734 (JSC::RegExpMatchesArray::getOwnPropertyNames): 1735 * runtime/StringObject.cpp: 1736 (JSC::StringObject::getOwnPropertyNames): 1737 * runtime/StringObject.h: 1738 * runtime/Structure.cpp: Rename getEnumerablePropertyNames() to getPropertyNames(), which takes an extra argument. 1739 (JSC::Structure::getPropertyNames): 1740 * runtime/Structure.h: 1741 (JSC::): 1742 17432010-01-12 Alexey Proskuryakov <ap@apple.com> 1744 1745 Reviewed by Darin Adler. 1746 1747 https://bugs.webkit.org/show_bug.cgi?id=33540 1748 Make it possible to build in debug mode with assertions disabled 1749 1750 * jit/JITStubs.cpp: (JSC::DEFINE_STUB_FUNCTION): 1751 * runtime/Identifier.cpp: (JSC::Identifier::checkSameIdentifierTable): 1752 * wtf/FastMalloc.cpp: 1753 * wtf/HashTable.h: (WTF::HashTableConstIterator::checkValidity): 1754 * yarr/RegexCompiler.cpp: (JSC::Yarr::compileRegex): 1755 17562009-11-23 Yong Li <yoli@rim.com> 1757 1758 Reviewed by Adam Treat. 1759 1760 Make GIF decoder support down-sampling 1761 https://bugs.webkit.org/show_bug.cgi?id=31806 1762 1763 * platform/image-decoders/ImageDecoder.cpp: 1764 (WebCore::ImageDecoder::upperBoundScaledY): 1765 (WebCore::ImageDecoder::lowerBoundScaledY): 1766 * platform/image-decoders/ImageDecoder.h: 1767 (WebCore::RGBA32Buffer::scaledRect): 1768 (WebCore::RGBA32Buffer::setScaledRect): 1769 (WebCore::ImageDecoder::scaledSize): 1770 * platform/image-decoders/gif/GIFImageDecoder.cpp: 1771 (WebCore::GIFImageDecoder::sizeNowAvailable): 1772 (WebCore::GIFImageDecoder::initFrameBuffer): 1773 (WebCore::copyOnePixel): 1774 (WebCore::GIFImageDecoder::haveDecodedRow): 1775 (WebCore::GIFImageDecoder::frameComplete): 1776 17772010-01-12 Adam Barth <abarth@webkit.org> 1778 1779 Reviewed by Eric Seidel. 1780 1781 ecma/Date/15.9.5.12-1.js fails every night at midnight 1782 https://bugs.webkit.org/show_bug.cgi?id=28041 1783 1784 Change the test to use a concrete time instead of "now". 1785 1786 * tests/mozilla/ecma/Date/15.9.5.10-1.js: 1787 * tests/mozilla/ecma/Date/15.9.5.12-1.js: 1788 17892010-01-11 Csaba Osztrogonác <ossy@webkit.org> 1790 1791 Reviewed by Ariya Hidayat. 1792 1793 [Qt] Enable JIT and YARR_JIT if (CPU(X86_64) && OS(LINUX) && GCC_VERSION >= 40100) 1794 1795 * wtf/Platform.h: 1796 17972010-01-11 Geoffrey Garen <ggaren@apple.com> 1798 1799 Reviewed by Alexey Proskuryakov. 1800 1801 https://bugs.webkit.org/show_bug.cgi?id=33481 1802 Uninitialized data members in ArrayStorage 1803 1804 SunSpider reports no change. 1805 1806 * runtime/JSArray.cpp: 1807 (JSC::JSArray::JSArray): Initialize missing data members in the two cases 1808 where we don't use fastZeroedMalloc, so it doesn't happen automatically. 1809 18102010-01-11 Steve Falkenburg <sfalken@apple.com> 1811 1812 Reviewed by Sam Weinig. 1813 1814 https://bugs.webkit.org/show_bug.cgi?id=33480 1815 1816 Improve debugging reliability for WTF on Windows. 1817 Store WTF static library's PDB file into a better location. 1818 1819 * JavaScriptCore.vcproj/WTF/WTF.vcproj: 1820 18212010-01-11 Steve Falkenburg <sfalken@apple.com> 1822 1823 Windows build fix. 1824 Remove extraneous entries from def file causing build warning. 1825 1826 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: 1827 18282010-01-10 Kent Hansen <kent.hansen@nokia.com> 1829 1830 Reviewed by Darin Adler. 1831 1832 RegExp.prototype.toString returns "//" for empty regular expressions 1833 https://bugs.webkit.org/show_bug.cgi?id=33319 1834 1835 "//" starts a single-line comment, hence "/(?:)/" should be used, according to ECMA. 1836 1837 * runtime/RegExpPrototype.cpp: 1838 (JSC::regExpProtoFuncToString): 1839 1840 * tests/mozilla/ecma_2/RegExp/properties-001.js: 1841 (AddRegExpCases): 1842 * tests/mozilla/js1_2/regexp/toString.js: 1843 Update relevant Mozilla tests (Mozilla has had this behavior since November 2003). 1844 18452010-01-10 Darin Adler <darin@apple.com> 1846 1847 * tests/mozilla/ecma/Array/15.4.1.1.js: Added property allow-tabs. 1848 * tests/mozilla/ecma/Array/15.4.1.2.js: Added property allow-tabs. 1849 * tests/mozilla/ecma/Array/15.4.2.1-1.js: Added property allow-tabs. 1850 * tests/mozilla/ecma/Array/15.4.2.2-1.js: Added property allow-tabs. 1851 * tests/mozilla/ecma/Array/15.4.2.2-2.js: Added property allow-tabs. 1852 * tests/mozilla/ecma/Array/15.4.2.3.js: Added property allow-tabs. 1853 * tests/mozilla/ecma/Array/15.4.3.2.js: Added property allow-tabs. 1854 * tests/mozilla/ecma/Array/15.4.3.js: Added property allow-tabs. 1855 * tests/mozilla/ecma/Array/15.4.4.1.js: Added property allow-tabs. 1856 * tests/mozilla/ecma/Array/15.4.4.js: Added property allow-tabs. 1857 * tests/mozilla/ecma/LexicalConventions/7.7.4.js: Added property allow-tabs. 1858 * tests/mozilla/ecma/Math/15.8.2.13.js: Added property allow-tabs. 1859 * tests/mozilla/ecma/Math/15.8.2.16.js: Added property allow-tabs. 1860 * tests/mozilla/ecma/Math/15.8.2.18.js: Added property allow-tabs. 1861 * tests/mozilla/ecma/Math/15.8.2.2.js: Added property allow-tabs. 1862 * tests/mozilla/ecma/Math/15.8.2.4.js: Added property allow-tabs. 1863 * tests/mozilla/ecma/Math/15.8.2.5.js: Added property allow-tabs. 1864 * tests/mozilla/ecma/Math/15.8.2.7.js: Added property allow-tabs. 1865 * tests/mozilla/ecma/String/15.5.1.js: Added property allow-tabs. 1866 * tests/mozilla/ecma/String/15.5.2.js: Added property allow-tabs. 1867 * tests/mozilla/ecma/String/15.5.3.1-3.js: Added property allow-tabs. 1868 * tests/mozilla/ecma/String/15.5.3.1-4.js: Added property allow-tabs. 1869 * tests/mozilla/ecma/String/15.5.3.js: Added property allow-tabs. 1870 * tests/mozilla/ecma/TypeConversion/9.5-2.js: Added property allow-tabs. 1871 * tests/mozilla/ecma/jsref.js: Modified property allow-tabs. 1872 * tests/mozilla/ecma/shell.js: Modified property allow-tabs. 1873 * tests/mozilla/ecma_2/LexicalConventions/keywords-001.js: Added property allow-tabs. 1874 * tests/mozilla/ecma_2/RegExp/exec-001.js: Added property allow-tabs. 1875 * tests/mozilla/ecma_2/String/match-004.js: Added property allow-tabs. 1876 * tests/mozilla/ecma_2/String/replace-001.js: Added property allow-tabs. 1877 * tests/mozilla/ecma_2/String/split-002.js: Added property allow-tabs. 1878 * tests/mozilla/ecma_2/jsref.js: Modified property allow-tabs. 1879 * tests/mozilla/ecma_2/shell.js: Added property allow-tabs. 1880 * tests/mozilla/ecma_3/Date/shell.js: Modified property allow-tabs. 1881 * tests/mozilla/ecma_3/Exceptions/regress-181654.js: Added property allow-tabs. 1882 * tests/mozilla/ecma_3/RegExp/regress-209067.js: Added property allow-tabs. 1883 * tests/mozilla/ecma_3/RegExp/regress-85721.js: Added property allow-tabs. 1884 * tests/mozilla/importList.html: Added property allow-tabs. 1885 * tests/mozilla/js1_1/shell.js: Added property allow-tabs. 1886 * tests/mozilla/js1_2/Array/general1.js: Added property allow-tabs. 1887 * tests/mozilla/js1_2/Array/general2.js: Added property allow-tabs. 1888 * tests/mozilla/js1_2/Array/slice.js: Added property allow-tabs. 1889 * tests/mozilla/js1_2/Array/splice1.js: Added property allow-tabs. 1890 * tests/mozilla/js1_2/Array/splice2.js: Added property allow-tabs. 1891 * tests/mozilla/js1_2/Objects/toString-001.js: Added property allow-tabs. 1892 * tests/mozilla/js1_2/String/charCodeAt.js: Added property allow-tabs. 1893 * tests/mozilla/js1_2/String/concat.js: Modified property allow-tabs. 1894 * tests/mozilla/js1_2/String/match.js: Added property allow-tabs. 1895 * tests/mozilla/js1_2/String/slice.js: Added property allow-tabs. 1896 * tests/mozilla/js1_2/function/Function_object.js: Added property allow-tabs. 1897 * tests/mozilla/js1_2/function/Number.js: Modified property allow-tabs. 1898 * tests/mozilla/js1_2/function/String.js: Modified property allow-tabs. 1899 * tests/mozilla/js1_2/function/nesting.js: Added property allow-tabs. 1900 * tests/mozilla/js1_2/function/regexparg-1.js: Added property allow-tabs. 1901 * tests/mozilla/js1_2/function/regexparg-2-n.js: Added property allow-tabs. 1902 * tests/mozilla/js1_2/jsref.js: Added property allow-tabs. 1903 * tests/mozilla/js1_2/operator/equality.js: Added property allow-tabs. 1904 * tests/mozilla/js1_2/operator/strictEquality.js: Added property allow-tabs. 1905 * tests/mozilla/js1_2/regexp/RegExp_dollar_number.js: Added property allow-tabs. 1906 * tests/mozilla/js1_2/regexp/RegExp_input.js: Added property allow-tabs. 1907 * tests/mozilla/js1_2/regexp/RegExp_input_as_array.js: Added property allow-tabs. 1908 * tests/mozilla/js1_2/regexp/RegExp_lastIndex.js: Added property allow-tabs. 1909 * tests/mozilla/js1_2/regexp/RegExp_lastMatch.js: Added property allow-tabs. 1910 * tests/mozilla/js1_2/regexp/RegExp_lastMatch_as_array.js: Added property allow-tabs. 1911 * tests/mozilla/js1_2/regexp/RegExp_lastParen.js: Added property allow-tabs. 1912 * tests/mozilla/js1_2/regexp/RegExp_lastParen_as_array.js: Added property allow-tabs. 1913 * tests/mozilla/js1_2/regexp/RegExp_leftContext.js: Added property allow-tabs. 1914 * tests/mozilla/js1_2/regexp/RegExp_leftContext_as_array.js: Added property allow-tabs. 1915 * tests/mozilla/js1_2/regexp/RegExp_multiline.js: Added property allow-tabs. 1916 * tests/mozilla/js1_2/regexp/RegExp_multiline_as_array.js: Added property allow-tabs. 1917 * tests/mozilla/js1_2/regexp/RegExp_object.js: Added property allow-tabs. 1918 * tests/mozilla/js1_2/regexp/RegExp_rightContext.js: Added property allow-tabs. 1919 * tests/mozilla/js1_2/regexp/RegExp_rightContext_as_array.js: Added property allow-tabs. 1920 * tests/mozilla/js1_2/regexp/alphanumeric.js: Added property allow-tabs. 1921 * tests/mozilla/js1_2/regexp/asterisk.js: Added property allow-tabs. 1922 * tests/mozilla/js1_2/regexp/backslash.js: Added property allow-tabs. 1923 * tests/mozilla/js1_2/regexp/backspace.js: Added property allow-tabs. 1924 * tests/mozilla/js1_2/regexp/beginLine.js: Added property allow-tabs. 1925 * tests/mozilla/js1_2/regexp/character_class.js: Added property allow-tabs. 1926 * tests/mozilla/js1_2/regexp/compile.js: Added property allow-tabs. 1927 * tests/mozilla/js1_2/regexp/control_characters.js: Added property allow-tabs. 1928 * tests/mozilla/js1_2/regexp/digit.js: Added property allow-tabs. 1929 * tests/mozilla/js1_2/regexp/dot.js: Added property allow-tabs. 1930 * tests/mozilla/js1_2/regexp/endLine.js: Added property allow-tabs. 1931 * tests/mozilla/js1_2/regexp/everything.js: Added property allow-tabs. 1932 * tests/mozilla/js1_2/regexp/exec.js: Added property allow-tabs. 1933 * tests/mozilla/js1_2/regexp/flags.js: Added property allow-tabs. 1934 * tests/mozilla/js1_2/regexp/global.js: Added property allow-tabs. 1935 * tests/mozilla/js1_2/regexp/hexadecimal.js: Added property allow-tabs. 1936 * tests/mozilla/js1_2/regexp/ignoreCase.js: Added property allow-tabs. 1937 * tests/mozilla/js1_2/regexp/interval.js: Added property allow-tabs. 1938 * tests/mozilla/js1_2/regexp/octal.js: Added property allow-tabs. 1939 * tests/mozilla/js1_2/regexp/parentheses.js: Added property allow-tabs. 1940 * tests/mozilla/js1_2/regexp/plus.js: Added property allow-tabs. 1941 * tests/mozilla/js1_2/regexp/question_mark.js: Added property allow-tabs. 1942 * tests/mozilla/js1_2/regexp/simple_form.js: Added property allow-tabs. 1943 * tests/mozilla/js1_2/regexp/source.js: Added property allow-tabs. 1944 * tests/mozilla/js1_2/regexp/special_characters.js: Added property allow-tabs. 1945 * tests/mozilla/js1_2/regexp/string_replace.js: Added property allow-tabs. 1946 * tests/mozilla/js1_2/regexp/string_search.js: Added property allow-tabs. 1947 * tests/mozilla/js1_2/regexp/string_split.js: Added property allow-tabs. 1948 * tests/mozilla/js1_2/regexp/test.js: Added property allow-tabs. 1949 * tests/mozilla/js1_2/regexp/toString.js: Added property allow-tabs. 1950 * tests/mozilla/js1_2/regexp/vertical_bar.js: Added property allow-tabs. 1951 * tests/mozilla/js1_2/regexp/whitespace.js: Added property allow-tabs. 1952 * tests/mozilla/js1_2/regexp/word_boundary.js: Added property allow-tabs. 1953 * tests/mozilla/js1_2/shell.js: Added property allow-tabs. 1954 * tests/mozilla/js1_2/statements/break.js: Added property allow-tabs. 1955 * tests/mozilla/js1_2/statements/continue.js: Added property allow-tabs. 1956 * tests/mozilla/js1_2/statements/do_while.js: Added property allow-tabs. 1957 * tests/mozilla/js1_2/statements/switch.js: Added property allow-tabs. 1958 * tests/mozilla/js1_2/statements/switch2.js: Added property allow-tabs. 1959 * tests/mozilla/js1_3/shell.js: Added property allow-tabs. 1960 * tests/mozilla/js1_4/shell.js: Added property allow-tabs. 1961 * tests/mozilla/js1_5/Regress/regress-111557.js: Added property allow-tabs. 1962 * tests/mozilla/js1_5/Regress/regress-216320.js: Added property allow-tabs. 1963 * tests/mozilla/menuhead.html: Added property allow-tabs. 1964 * tests/mozilla/mklistpage.pl: Added property allow-tabs. 1965 * tests/mozilla/runtests.pl: Added property allow-tabs. 1966 19672010-01-08 Daniel Bates <dbates@webkit.org> 1968 1969 Reviewed by Adam Barth. 1970 1971 https://bugs.webkit.org/show_bug.cgi?id=33417 1972 1973 Cleans up style errors exposed by the patch for bug #33198. 1974 Moreover, fixes all "Weird number of spaces at line-start. Are you using a 4-space indent?" 1975 errors reported by check-webkit-style. 1976 1977 No functionality was changed. So, no new tests. 1978 1979 * wtf/Platform.h: 1980 19812010-01-08 Kent Hansen <kent.hansen@nokia.com> 1982 1983 Reviewed by Eric Seidel. 1984 1985 Don't store RegExp flags string representation 1986 https://bugs.webkit.org/show_bug.cgi?id=33321 1987 1988 It's unused; the string representation is reconstructed from flags. 1989 1990 * runtime/RegExp.cpp: 1991 (JSC::RegExp::RegExp): 1992 * runtime/RegExp.h: 1993 19942010-01-08 Geoffrey Garen <ggaren@apple.com> 1995 1996 Reviewed by Oliver Hunt. 1997 1998 Memory use grows grows possibly unbounded in this JavaScript Array test case 1999 https://bugs.webkit.org/show_bug.cgi?id=31675 2000 2001 This fixes one observed bug in this test case, which is that 2002 arrays don't report extra cost for the sparse value maps. 2003 2004 SunSpider reports a small speedup. 2005 2006 * runtime/JSArray.cpp: 2007 (JSC::JSArray::putSlowCase): Report extra memory cost for 2008 the sparse value map. 2009 * runtime/JSArray.h: 2010 20112010-01-08 Yong Li <yoli@rim.com> 2012 2013 Reviewed by Darin Adler. 2014 2015 Remove unnecessary #include from FastMalloc.cpp 2016 https://bugs.webkit.org/show_bug.cgi?id=33393 2017 2018 * wtf/FastMalloc.cpp: 2019 20202010-01-08 Eric Seidel <eric@webkit.org> 2021 2022 No review, rolling out r52983. 2023 http://trac.webkit.org/changeset/52983 2024 https://bugs.webkit.org/show_bug.cgi?id=33321 2025 2026 Broke 59 JavaScriptCore tests. I don't think Kent knew about 2027 run-javascriptcore-tests. Sadly neither does the commit-bot, 2028 yet. 2029 2030 * runtime/RegExp.cpp: 2031 (JSC::RegExp::RegExp): 2032 * runtime/RegExp.h: 2033 (JSC::RegExp::flags): 2034 20352010-01-08 Eric Seidel <eric@webkit.org> 2036 2037 No review, rolling out r52981. 2038 http://trac.webkit.org/changeset/52981 2039 https://bugs.webkit.org/show_bug.cgi?id=33319 2040 2041 Caused two JS tests to start failing: 2042 ecma_2/RegExp/properties-001.js and js1_2/regexp/toString.js 2043 2044 * runtime/RegExpPrototype.cpp: 2045 (JSC::regExpProtoFuncToString): 2046 20472010-01-08 Kent Hansen <kent.hansen@nokia.com> 2048 2049 Reviewed by Darin Adler. 2050 2051 Don't store RegExp flags string representation 2052 https://bugs.webkit.org/show_bug.cgi?id=33321 2053 2054 It's unused; the string representation is reconstructed from flags. 2055 2056 * runtime/RegExp.cpp: 2057 (JSC::RegExp::RegExp): 2058 * runtime/RegExp.h: 2059 20602010-01-08 Kent Hansen <kent.hansen@nokia.com> 2061 2062 Reviewed by Darin Adler. 2063 2064 RegExp.prototype.toString returns "//" for empty regular expressions 2065 https://bugs.webkit.org/show_bug.cgi?id=33319 2066 2067 "//" starts a single-line comment, hence "/(?:)/" should be used, according to ECMA. 2068 2069 * runtime/RegExpPrototype.cpp: 2070 (JSC::regExpProtoFuncToString): 2071 20722010-01-08 Norbert Leser <norbert.leser@nokia.com> 2073 2074 Reviewed by Darin Adler. 2075 2076 RVCT compiler with "-Otime -O3" optimization tries to optimize out 2077 inline new'ed pointers that are passed as arguments. 2078 Proposed patch assigns new'ed pointer explicitly outside function call. 2079 2080 https://bugs.webkit.org/show_bug.cgi?id=33084 2081 2082 * API/JSClassRef.cpp: 2083 (OpaqueJSClass::OpaqueJSClass): 2084 (OpaqueJSClassContextData::OpaqueJSClassContextData): 2085 20862010-01-08 Gabor Loki <loki@webkit.org> 2087 2088 Reviewed by Gavin Barraclough. 2089 2090 Remove an unnecessary cacheFlush from ARM_TRADITIONAL JIT 2091 https://bugs.webkit.org/show_bug.cgi?id=33203 2092 2093 * assembler/ARMAssembler.cpp: Remove obsolete linkBranch function. 2094 (JSC::ARMAssembler::executableCopy): Inline a clean linkBranch code. 2095 * assembler/ARMAssembler.h: 2096 (JSC::ARMAssembler::getLdrImmAddress): Use inline function. 2097 (JSC::ARMAssembler::getLdrImmAddressOnPool): Ditto. 2098 (JSC::ARMAssembler::patchPointerInternal): Remove an unnecessary cacheFlush. 2099 (JSC::ARMAssembler::linkJump): Use patchPointerInternal instead of linkBranch. 2100 (JSC::ARMAssembler::linkCall): Ditto. 2101 (JSC::ARMAssembler::relinkCall): Ditto. 2102 21032010-01-07 Gabor Loki <loki@webkit.org> 2104 2105 Reviewed by Gavin Barraclough. 2106 2107 Build fix for JSVALUE32 when ENABLE_JIT_OPTIMIZE* are disabled 2108 https://bugs.webkit.org/show_bug.cgi?id=33311 2109 2110 Move compileGetDirectOffset function to common part of JSVALUE32 2111 2112 * jit/JITPropertyAccess.cpp: 2113 (JSC::JIT::compileGetDirectOffset): 2114 21152010-01-07 Laszlo Gombos <laszlo.1.gombos@nokia.com> 2116 2117 Reviewed by Maciej Stachowiak. 2118 2119 Allow call sites to determine if ASSERT_* and LOG_* macros are operational 2120 https://bugs.webkit.org/show_bug.cgi?id=33020 2121 2122 * wtf/Assertions.h: Set ASSERT_MSG_DISABLED, FATAL_DISABLED, 2123 ERROR_DISABLED, LOG_DISABLED to 1 if the compiler does not support 2124 variadic macros. Refactor for better readibility. 2125 21262010-01-07 Daniel Bates <dbates@rim.com> 2127 2128 Reviewed by Eric Seidel. 2129 2130 https://bugs.webkit.org/show_bug.cgi?id=32987 2131 2132 Added ENABLE_XHTMLMP flag. Disabled by default. 2133 2134 * Configurations/FeatureDefines.xcconfig: 2135 21362010-01-07 Laszlo Gombos <laszlo.1.gombos@nokia.com> 2137 2138 Reviewed by Gavin Barraclough. 2139 2140 [Symbian] Port ARM traditional JIT Trampolines to RVCT 2141 https://bugs.webkit.org/show_bug.cgi?id=30552 2142 2143 Take the GCC implementation and mechanically convert 2144 it to RVCT syntax. 2145 2146 Use 'bx rX' instead of 'mov pc, rX' when it is available. 2147 2148 Developed in cooperation with Iain Campbell and Gabor Loki. 2149 2150 * JavaScriptCore.pri: Extra step to generate RVCT stubs. The 2151 script generation intentionally executed all the time not just 2152 for RVCT targets. 2153 2154 * create_rvct_stubs: Added. Perl script to expand precompiler macros 2155 for RVCT assembler - the template is defined in JITStubs.cpp. 2156 2157 * jit/JITStubs.cpp: 2158 (JSC::ctiTrampoline): 2159 (JSC::ctiVMThrowTrampoline): 2160 (JSC::ctiOpThrowNotCaught): 2161 21622010-01-07 Geoffrey Garen <ggaren@apple.com> 2163 2164 Reviewed by Sam Weinig. 2165 2166 Fix a crash seen on the buildbots. 2167 2168 * runtime/JSGlobalObject.cpp: 2169 (JSC::JSGlobalObject::init): Disable specific function tracking here, 2170 instead of in WebCore, to ensure that the disabling happens before a 2171 specific function can be registered. 2172 21732010-01-07 Alexey Proskuryakov <ap@apple.com> 2174 2175 Mac build fix. 2176 2177 * JavaScriptCore.exp: Export new JSGlobalData static data members. 2178 21792010-01-07 Alexey Proskuryakov <ap@apple.com> 2180 2181 Reviewed by Geoffrey Garen. 2182 2183 https://bugs.webkit.org/show_bug.cgi?id=33057 2184 REGRESSION(r49365): typeof(xhr.responseText) != "string" in Windows 2185 2186 <rdar://problem/7296920> REGRESSION: WebKit fails to start PeaceKeeper benchmark 2187 2188 Test: fast/js/webcore-string-comparison.html 2189 2190 In r49365, some code was moved from JSString.cpp to JSString.h, and as a result, WebCore 2191 got a way to directly instantiate JSStrings over DLL borders. Since vftable for JSString was 2192 not exported, objects created from WebCore got a different vptr, and JavaScriptCore 2193 optimizations that relied on vptr of all JSString objects being equal failed. 2194 2195 * config.h: Added a JS_EXPORTCLASS macro for exporting classes. It's currently the same as 2196 JS_EXPORTDATA, but it clearly needed a new name. 2197 2198 * runtime/InitializeThreading.cpp: 2199 (JSC::initializeThreadingOnce): 2200 * runtime/JSGlobalData.cpp: 2201 (JSC::JSGlobalData::storeVPtrs): 2202 (JSC::JSGlobalData::JSGlobalData): 2203 (JSC::JSGlobalData::createNonDefault): 2204 (JSC::JSGlobalData::create): 2205 (JSC::JSGlobalData::sharedInstance): 2206 * runtime/JSGlobalData.h: 2207 Store vptrs just once, no need to repeatedly pick and copy them. This makes it possible to 2208 assert vptr correctness in object destructors (which don't have access to JSGlobalData, 2209 and even Heap::heap(this) will fail for fake objects created from storeVPtrs()). 2210 2211 * runtime/JSArray.cpp: (JSC::JSArray::~JSArray): Assert that vptr is what we expect it to be. 2212 It's important to assert in destructor, because MSVC changes the vptr after constructor 2213 is invoked. 2214 * runtime/JSByteArray.cpp: (JSC::JSByteArray::~JSByteArray): Ditto. 2215 * runtime/JSByteArray.h: Ditto. 2216 * runtime/JSFunction.h: Ditto. 2217 * runtime/JSFunction.cpp: (JSC::JSFunction::~JSFunction): Ditto. 2218 2219 * runtime/JSCell.h: (JSC::JSCell::setVPtr): Added a method to substitute vptr for another 2220 one. 2221 2222 * runtime/JSString.h: Export JSString class together with its vftable, and tell other 2223 libraries tp import it. This is needed on platforms that have a separate JavaScriptCore 2224 dynamic library - and on Mac, we already did the export via JavaScriptCore.exp. 2225 (JSC::JSString::~JSString): Assert tha vptr is what we expect it to be. 2226 (JSC::fixupVPtr): Store a previously saved primary vftable pointer (do nothing if building 2227 JavaScriptCore itself). 2228 (JSC::jsSingleCharacterString): Call fixupVPtr in case this is call across DLL boundary. 2229 (JSC::jsSingleCharacterSubstring): Ditto. 2230 (JSC::jsNontrivialString): Ditto. 2231 (JSC::jsString): Ditto. 2232 (JSC::jsSubstring): Ditto. 2233 (JSC::jsOwnedString): Ditto. 2234 2235 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: Export the new static 2236 JSGlobalData members that are used in WebCore via inline functions. 2237 22382010-01-07 Geoffrey Garen <ggaren@apple.com> 2239 2240 Reviewed by Sam Weinig. 2241 2242 Safari memory usage skyrockets using new Google AdWords interface 2243 https://bugs.webkit.org/show_bug.cgi?id=33343 2244 2245 The memory use was caused by the global object creating too many structures 2246 as it thrashed between different specific functions. 2247 2248 * runtime/Structure.cpp: 2249 (JSC::Structure::Structure): 2250 (JSC::Structure::addPropertyTransition): 2251 (JSC::Structure::changePrototypeTransition): 2252 (JSC::Structure::despecifyFunctionTransition): 2253 (JSC::Structure::addAnonymousSlotsTransition): 2254 (JSC::Structure::getterSetterTransition): 2255 (JSC::Structure::toDictionaryTransition): 2256 (JSC::Structure::addPropertyWithoutTransition): 2257 (JSC::Structure::despecifyAllFunctions): 2258 * runtime/Structure.h: 2259 (JSC::Structure::disableSpecificFunctionTracking): Track a thrash count 2260 for specific functions. Disable specific function tracking once the 2261 thrash count has been hit. 2262 22632010-01-07 Csaba Osztrogonác <ossy@webkit.org> 2264 2265 Reviewed by Simon Hausmann. 2266 2267 [Qt] Enable JIT in debug mode on win32 after r51141 fixed the crashes. 2268 2269 * JavaScriptCore.pri: 2270 22712010-01-07 Zoltan Horvath <zoltan@webkit.org> 2272 2273 Reviewed by Holger Freyther. 2274 2275 [Mac] Build fix when FAST_MALLOC_MATCH_VALIDATION=1 2276 https://bugs.webkit.org/show_bug.cgi?id=33312 2277 2278 Using of operator += cause compile error on Mac, so it is changed to 2279 "= static_cast<AllocAlignmentInteger*>(old_ptr) + 1". 2280 2281 * wtf/FastMalloc.cpp: 2282 (WTF::TCMallocStats::realloc): 2283 22842010-01-07 Zoltan Horvath <zoltan@webkit.org> 2285 2286 Reviewed by Holger Freyther. 2287 2288 [Qt] Build fix when FAST_MALLOC_MATCH_VALIDATION=1 2289 https://bugs.webkit.org/show_bug.cgi?id=33312 2290 2291 Remove pByte (committed in r42344 from #20422), because pByte doesn't 2292 exist and it is unnecessary. 2293 2294 * wtf/FastMalloc.cpp: 2295 (WTF::TCMallocStats::realloc): 2296 22972010-01-06 Gavin Barraclough <barraclough@apple.com> 2298 2299 QT build fix. 2300 2301 * runtime/Identifier.cpp: 2302 (JSC::createIdentifierTableSpecific): 2303 23042010-01-06 Gavin Barraclough <barraclough@apple.com> 2305 2306 Windows build fix part I. 2307 2308 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: 2309 23102010-01-06 Dan Bernstein <mitz@apple.com> 2311 2312 Build fix 2313 2314 * runtime/Identifier.cpp: 2315 (JSC::createIdentifierTableSpecificCallback): 2316 23172010-01-05 Gavin Barraclough <barraclough@apple.com> 2318 2319 Reviewed by Sam Weinig. 2320 2321 https://bugs.webkit.org/show_bug.cgi?id=33236 2322 Remove m_identifierTable pointer from UString 2323 2324 Currently every string holds a pointer so that during destruction, 2325 if a string has been used as an identifier, it can remove itself 2326 from the table. By instead accessing the identifierTable via a 2327 thread specific tracking the table associated with the current 2328 globaldata, we can save the memory cost of this pointer. 2329 2330 * API/APIShims.h: 2331 (JSC::APIEntryShimWithoutLock::APIEntryShimWithoutLock): 2332 (JSC::APIEntryShimWithoutLock::~APIEntryShimWithoutLock): 2333 (JSC::APICallbackShim::APICallbackShim): 2334 (JSC::APICallbackShim::~APICallbackShim): 2335 2336 - change the API shims to track the identifierTable of the current JSGlobalData. 2337 2338 * API/JSContextRef.cpp: 2339 (JSContextGroupCreate): 2340 2341 - update creation of JSGlobalData for API usage to use new create method. 2342 - fix shim instanciation bug in JSGlobalContextCreateInGroup. 2343 2344 * JavaScriptCore.exp: 2345 * runtime/Completion.cpp: 2346 (JSC::checkSyntax): 2347 (JSC::evaluate): 2348 2349 - add asserts to check the identifierTable is being tracked correctly. 2350 2351 * runtime/Identifier.cpp: 2352 (JSC::IdentifierTable::~IdentifierTable): 2353 (JSC::IdentifierTable::add): 2354 (JSC::Identifier::remove): 2355 (JSC::Identifier::checkSameIdentifierTable): 2356 (JSC::createIdentifierTableSpecificCallback): 2357 (JSC::createIdentifierTableSpecific): 2358 (JSC::createDefaultDataSpecific): 2359 2360 - Use currentIdentifierTable() instead of UStringImpl::m_identifierTable. 2361 - Define methods to access the thread specific identifier tables. 2362 2363 * runtime/Identifier.h: 2364 (JSC::ThreadIdentifierTableData::ThreadIdentifierTableData): 2365 (JSC::defaultIdentifierTable): 2366 (JSC::setDefaultIdentifierTable): 2367 (JSC::currentIdentifierTable): 2368 (JSC::setCurrentIdentifierTable): 2369 (JSC::resetCurrentIdentifierTable): 2370 2371 - Declare methods to access the thread specific identifier tables. 2372 2373 * runtime/JSGlobalData.cpp: 2374 (JSC::JSGlobalData::createNonDefault): 2375 (JSC::JSGlobalData::create): 2376 (JSC::JSGlobalData::sharedInstance): 2377 2378 - creation of JSGlobalData objects, other than for API usage, associate themselves with the current thread. 2379 2380 * runtime/JSGlobalData.h: 2381 * runtime/UStringImpl.cpp: 2382 (JSC::UStringImpl::destroy): 2383 2384 - destroy() method should be using isIdentifier(). 2385 2386 * runtime/UStringImpl.h: 2387 (JSC::UStringImpl::isIdentifier): 2388 (JSC::UStringImpl::setIsIdentifier): 2389 (JSC::UStringImpl::checkConsistency): 2390 (JSC::UStringImpl::UStringImpl): 2391 2392 - replace m_identifierTable with a single m_isIdentifier bit. 2393 2394 * wtf/StringHashFunctions.h: 2395 (WTF::stringHash): 2396 2397 - change string hash result from 32-bit to 31-bit, to free a bit in UStringImpl for m_isIdentifier. 2398 23992009-12-25 Patrick Gansterer <paroga@paroga.com> 2400 2401 Reviewed by Eric Seidel. 2402 2403 Buildfix for WinCE + style fixes. 2404 https://bugs.webkit.org/show_bug.cgi?id=32939 2405 2406 * jsc.cpp: 2407 (functionPrint): 2408 (functionQuit): 2409 (parseArguments): 2410 (fillBufferWithContentsOfFile): 2411 24122010-01-05 Patrick Gansterer <paroga@paroga.com> 2413 2414 Reviewed by Eric Seidel. 2415 2416 WinCE buildfix after r52791 (renamed PLATFORM(WINCE) to OS(WINCE)). 2417 https://bugs.webkit.org/show_bug.cgi?id=33205 2418 2419 * jit/ExecutableAllocator.h: 2420 24212010-01-05 Patrick Gansterer <paroga@paroga.com> 2422 2423 Reviewed by Darin Adler. 2424 2425 Added compiler error for unsupported platforms. 2426 https://bugs.webkit.org/show_bug.cgi?id=33112 2427 2428 * jit/JITStubs.cpp: 2429 24302010-01-05 Gabor Loki <loki@webkit.org> 2431 2432 Reviewed by Maciej Stachowiak. 2433 2434 Follow r52729 in ARMAssembler. 2435 https://bugs.webkit.org/show_bug.cgi?id=33208 2436 2437 Use WTF_ARM_ARCH_AT_LEAST instead of ARM_ARCH_VERSION 2438 2439 * assembler/ARMAssembler.cpp: 2440 (JSC::ARMAssembler::encodeComplexImm): Move tmp declaration to ARMv7 2441 * assembler/ARMAssembler.h: 2442 (JSC::ARMAssembler::): 2443 (JSC::ARMAssembler::bkpt): 2444 24452010-01-05 Maciej Stachowiak <mjs@apple.com> 2446 2447 Unreviewed build fix for Gtk+ 2448 2449 Don't use // comments in Platform.h, at least some of them seem to make the version of GCC 2450 used on the Gtk buildbot unhappy. 2451 2452 * wtf/Platform.h: 2453 24542010-01-04 Maciej Stachowiak <mjs@apple.com> 2455 2456 Reviewed by Darin Fisher. 2457 2458 Reorganize, document and rename OS() platform macros. 2459 https://bugs.webkit.org/show_bug.cgi?id=33198 2460 2461 * wtf/Platform.h: Rename, reorganize and document OS() macros. 2462 2463 Adapt to name changes. Also fixed a few incorrect OS checks. 2464 2465 * API/JSContextRef.cpp: 2466 * assembler/MacroAssemblerARM.cpp: 2467 (JSC::isVFPPresent): 2468 * assembler/MacroAssemblerX86Common.h: 2469 * bytecode/SamplingTool.cpp: 2470 * config.h: 2471 * interpreter/RegisterFile.cpp: 2472 (JSC::RegisterFile::~RegisterFile): 2473 * interpreter/RegisterFile.h: 2474 (JSC::RegisterFile::RegisterFile): 2475 (JSC::RegisterFile::grow): 2476 * jit/ExecutableAllocator.h: 2477 * jit/ExecutableAllocatorFixedVMPool.cpp: 2478 * jit/ExecutableAllocatorPosix.cpp: 2479 * jit/ExecutableAllocatorSymbian.cpp: 2480 * jit/ExecutableAllocatorWin.cpp: 2481 * jit/JITOpcodes.cpp: 2482 (JSC::JIT::privateCompileCTIMachineTrampolines): 2483 * jit/JITStubs.cpp: 2484 * jsc.cpp: 2485 (main): 2486 * parser/Grammar.y: 2487 * profiler/ProfileNode.cpp: 2488 (JSC::getCount): 2489 * runtime/Collector.cpp: 2490 (JSC::Heap::Heap): 2491 (JSC::Heap::allocateBlock): 2492 (JSC::Heap::freeBlockPtr): 2493 (JSC::currentThreadStackBase): 2494 (JSC::getCurrentPlatformThread): 2495 (JSC::suspendThread): 2496 (JSC::resumeThread): 2497 (JSC::getPlatformThreadRegisters): 2498 (JSC::otherThreadStackPointer): 2499 * runtime/Collector.h: 2500 * runtime/DateConstructor.cpp: 2501 * runtime/DatePrototype.cpp: 2502 (JSC::formatLocaleDate): 2503 * runtime/InitializeThreading.cpp: 2504 (JSC::initializeThreading): 2505 * runtime/MarkStack.h: 2506 (JSC::MarkStack::MarkStackArray::shrinkAllocation): 2507 * runtime/MarkStackPosix.cpp: 2508 * runtime/MarkStackSymbian.cpp: 2509 * runtime/MarkStackWin.cpp: 2510 * runtime/StringPrototype.cpp: 2511 (JSC::stringProtoFuncLastIndexOf): 2512 * runtime/TimeoutChecker.cpp: 2513 (JSC::getCPUTime): 2514 * runtime/UString.cpp: 2515 (JSC::UString::from): 2516 * wtf/Assertions.cpp: 2517 * wtf/Assertions.h: 2518 * wtf/CurrentTime.cpp: 2519 (WTF::lowResUTCTime): 2520 * wtf/CurrentTime.h: 2521 (WTF::getLocalTime): 2522 * wtf/DateMath.cpp: 2523 * wtf/FastMalloc.cpp: 2524 (WTF::TCMalloc_ThreadCache::InitModule): 2525 (WTF::TCMallocStats::): 2526 * wtf/FastMalloc.h: 2527 * wtf/MathExtras.h: 2528 * wtf/RandomNumber.cpp: 2529 (WTF::randomNumber): 2530 * wtf/RandomNumberSeed.h: 2531 (WTF::initializeRandomNumberGenerator): 2532 * wtf/StringExtras.h: 2533 * wtf/TCSpinLock.h: 2534 (TCMalloc_SpinLock::Unlock): 2535 (TCMalloc_SlowLock): 2536 * wtf/TCSystemAlloc.cpp: 2537 * wtf/ThreadSpecific.h: 2538 (WTF::::destroy): 2539 * wtf/Threading.h: 2540 * wtf/ThreadingPthreads.cpp: 2541 (WTF::initializeThreading): 2542 (WTF::isMainThread): 2543 * wtf/ThreadingWin.cpp: 2544 (WTF::wtfThreadEntryPoint): 2545 (WTF::createThreadInternal): 2546 * wtf/VMTags.h: 2547 * wtf/unicode/icu/CollatorICU.cpp: 2548 (WTF::Collator::userDefault): 2549 * wtf/win/MainThreadWin.cpp: 2550 (WTF::initializeMainThreadPlatform): 2551 25522010-01-04 Gustavo Noronha Silva <gns@gnome.org> 2553 2554 Add missing files to the build system - make distcheck build fix. 2555 2556 * GNUmakefile.am: 2557 25582010-01-04 Gavin Barraclough <barraclough@apple.com> 2559 2560 Reviewed by Sam Weinig, additional coding by Mark Rowe. 2561 2562 https://bugs.webkit.org/show_bug.cgi?id=33163 2563 Add string hashing functions to WTF. 2564 Use WTF's string hashing functions from UStringImpl. 2565 2566 * GNUmakefile.am: 2567 * JavaScriptCore.exp: 2568 * JavaScriptCore.gypi: 2569 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: 2570 * JavaScriptCore.xcodeproj/project.pbxproj: 2571 * runtime/UStringImpl.cpp: 2572 * runtime/UStringImpl.h: 2573 (JSC::UStringImpl::computeHash): 2574 * wtf/HashFunctions.h: 2575 * wtf/StringHashFunctions.h: Added. 2576 (WTF::stringHash): 2577 25782010-01-04 Dmitry Titov <dimich@chromium.org> 2579 2580 Not reviewed, attempt to fix ARM bulid. 2581 2582 * wtf/Platform.h: 2583 25842010-01-04 Gavin Barraclough <barraclough@apple.com> 2585 2586 Rubber stamped by Geoff Garen. 2587 2588 Add an 'isIdentifier' to UStringImpl, use this where appropriate 2589 (where previously 'identifierTable' was being tested). 2590 2591 * API/JSClassRef.cpp: 2592 (OpaqueJSClass::~OpaqueJSClass): 2593 (OpaqueJSClassContextData::OpaqueJSClassContextData): 2594 * runtime/Identifier.cpp: 2595 (JSC::Identifier::addSlowCase): 2596 * runtime/Identifier.h: 2597 (JSC::Identifier::add): 2598 * runtime/PropertyNameArray.cpp: 2599 (JSC::PropertyNameArray::add): 2600 * runtime/UStringImpl.h: 2601 (JSC::UStringImpl::isIdentifier): 2602 26032010-01-04 Gavin Barraclough <barraclough@apple.com> 2604 2605 Reviewed by Sam "Shimmey Shimmey" Weinig. 2606 2607 https://bugs.webkit.org/show_bug.cgi?id=33158 2608 Refactor JSC API entry/exit to use RAII instead of copy/pasting code. 2609 Make it easier to change set of actions taken when passing across the API boundary. 2610 2611 * API/APIShims.h: Added. 2612 (JSC::APIEntryShimWithoutLock::APIEntryShimWithoutLock): 2613 (JSC::APIEntryShimWithoutLock::~APIEntryShimWithoutLock): 2614 (JSC::APIEntryShim::APIEntryShim): 2615 (JSC::APICallbackShim::APICallbackShim): 2616 (JSC::APICallbackShim::~APICallbackShim): 2617 * API/JSBase.cpp: 2618 (JSEvaluateScript): 2619 (JSCheckScriptSyntax): 2620 (JSGarbageCollect): 2621 (JSReportExtraMemoryCost): 2622 * API/JSCallbackConstructor.cpp: 2623 (JSC::constructJSCallback): 2624 * API/JSCallbackFunction.cpp: 2625 (JSC::JSCallbackFunction::call): 2626 * API/JSCallbackObjectFunctions.h: 2627 (JSC::::init): 2628 (JSC::::getOwnPropertySlot): 2629 (JSC::::put): 2630 (JSC::::deleteProperty): 2631 (JSC::::construct): 2632 (JSC::::hasInstance): 2633 (JSC::::call): 2634 (JSC::::getOwnPropertyNames): 2635 (JSC::::toNumber): 2636 (JSC::::toString): 2637 (JSC::::staticValueGetter): 2638 (JSC::::callbackGetter): 2639 * API/JSContextRef.cpp: 2640 * API/JSObjectRef.cpp: 2641 (JSObjectMake): 2642 (JSObjectMakeFunctionWithCallback): 2643 (JSObjectMakeConstructor): 2644 (JSObjectMakeFunction): 2645 (JSObjectMakeArray): 2646 (JSObjectMakeDate): 2647 (JSObjectMakeError): 2648 (JSObjectMakeRegExp): 2649 (JSObjectGetPrototype): 2650 (JSObjectSetPrototype): 2651 (JSObjectHasProperty): 2652 (JSObjectGetProperty): 2653 (JSObjectSetProperty): 2654 (JSObjectGetPropertyAtIndex): 2655 (JSObjectSetPropertyAtIndex): 2656 (JSObjectDeleteProperty): 2657 (JSObjectCallAsFunction): 2658 (JSObjectCallAsConstructor): 2659 (JSObjectCopyPropertyNames): 2660 (JSPropertyNameArrayRelease): 2661 (JSPropertyNameAccumulatorAddName): 2662 * API/JSValueRef.cpp: 2663 (JSValueGetType): 2664 (JSValueIsUndefined): 2665 (JSValueIsNull): 2666 (JSValueIsBoolean): 2667 (JSValueIsNumber): 2668 (JSValueIsString): 2669 (JSValueIsObject): 2670 (JSValueIsObjectOfClass): 2671 (JSValueIsEqual): 2672 (JSValueIsStrictEqual): 2673 (JSValueIsInstanceOfConstructor): 2674 (JSValueMakeUndefined): 2675 (JSValueMakeNull): 2676 (JSValueMakeBoolean): 2677 (JSValueMakeNumber): 2678 (JSValueMakeString): 2679 (JSValueToBoolean): 2680 (JSValueToNumber): 2681 (JSValueToStringCopy): 2682 (JSValueToObject): 2683 (JSValueProtect): 2684 (JSValueUnprotect): 2685 * JavaScriptCore.xcodeproj/project.pbxproj: 2686 26872010-01-04 Dan Bernstein <mitz@apple.com> 2688 2689 Reviewed by Ada Chan and Mark Rowe. 2690 2691 Updated copyright string 2692 2693 * Info.plist: 2694 * JavaScriptCore.vcproj/JavaScriptCore.resources/Info.plist: 2695 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.rc: 2696 26972010-01-04 Adam Roben <aroben@apple.com> 2698 2699 No review, rolling out r52741. 2700 http://trac.webkit.org/changeset/52741 2701 https://bugs.webkit.org/show_bug.cgi?id=33056 2702 2703 * wtf/AlwaysInline.h: 2704 27052010-01-04 Patrick Gansterer <paroga@paroga.com> 2706 2707 Reviewed by Darin Adler. 2708 2709 Add cacheFlush support for WinCE 2710 https://bugs.webkit.org/show_bug.cgi?id=33110 2711 2712 * jit/ExecutableAllocator.h: 2713 (JSC::ExecutableAllocator::cacheFlush): 2714 27152010-01-04 Patrick Gansterer <paroga@paroga.com> 2716 2717 Reviewed by Adam Roben. 2718 2719 Implement NO_RETURN for COMPILER(MSVC). 2720 https://bugs.webkit.org/show_bug.cgi?id=33056 2721 2722 * wtf/AlwaysInline.h: 2723 27242010-01-04 Maciej Stachowiak <mjs@apple.com> 2725 2726 Reviewed by Simon Hausmann. 2727 2728 Fix some PLATFORM(*_ENDIAN) uses to CPU() 2729 https://bugs.webkit.org/show_bug.cgi?id=33148 2730 2731 * runtime/JSCell.cpp: 2732 (JSC::): 2733 * runtime/JSValue.h: 2734 (JSC::JSValue::): 2735 27362010-01-04 Maciej Stachowiak <mjs@apple.com> 2737 2738 Reviewed by Adam Barth. 2739 2740 Document CPU() macros in comments. 2741 https://bugs.webkit.org/show_bug.cgi?id=33147 2742 2743 * wtf/Platform.h: 2744 27452010-01-04 Maciej Stachowiak <mjs@apple.com> 2746 2747 Reviewed by Adam Barth. 2748 2749 Reorganize, document and rename CPU() platform macros. 2750 https://bugs.webkit.org/show_bug.cgi?id=33145 2751 ExecutableAllocatorSymbian appears to have buggy ARM version check 2752 https://bugs.webkit.org/show_bug.cgi?id=33138 2753 2754 * wtf/Platform.h: 2755 Rename all macros related to detection of particular CPUs or 2756 classes of CPUs to CPU(), reorganize and document them. 2757 2758 All remaining changes are adapting to the renames, plus fixing the 2759 second bug cited above. 2760 2761 * assembler/ARMAssembler.cpp: 2762 * assembler/ARMAssembler.h: 2763 * assembler/ARMv7Assembler.h: 2764 * assembler/AbstractMacroAssembler.h: 2765 (JSC::AbstractMacroAssembler::Imm32::Imm32): 2766 * assembler/MacroAssembler.h: 2767 * assembler/MacroAssemblerARM.cpp: 2768 * assembler/MacroAssemblerARM.h: 2769 * assembler/MacroAssemblerCodeRef.h: 2770 (JSC::MacroAssemblerCodePtr::MacroAssemblerCodePtr): 2771 * assembler/MacroAssemblerX86.h: 2772 * assembler/MacroAssemblerX86Common.h: 2773 * assembler/MacroAssemblerX86_64.h: 2774 * assembler/X86Assembler.h: 2775 (JSC::X86Registers::): 2776 (JSC::X86Assembler::): 2777 (JSC::X86Assembler::movl_mEAX): 2778 (JSC::X86Assembler::movl_EAXm): 2779 (JSC::X86Assembler::repatchLoadPtrToLEA): 2780 (JSC::X86Assembler::X86InstructionFormatter::memoryModRM): 2781 * jit/ExecutableAllocator.h: 2782 * jit/ExecutableAllocatorFixedVMPool.cpp: 2783 * jit/ExecutableAllocatorPosix.cpp: 2784 * jit/ExecutableAllocatorSymbian.cpp: 2785 (JSC::ExecutableAllocator::intializePageSize): 2786 * jit/JIT.cpp: 2787 * jit/JIT.h: 2788 * jit/JITArithmetic.cpp: 2789 * jit/JITInlineMethods.h: 2790 (JSC::JIT::beginUninterruptedSequence): 2791 (JSC::JIT::restoreArgumentReferenceForTrampoline): 2792 (JSC::JIT::emitCount): 2793 * jit/JITOpcodes.cpp: 2794 (JSC::JIT::privateCompileCTIMachineTrampolines): 2795 * jit/JITPropertyAccess.cpp: 2796 (JSC::JIT::privateCompileGetByIdProto): 2797 (JSC::JIT::privateCompileGetByIdProtoList): 2798 (JSC::JIT::privateCompileGetByIdChainList): 2799 (JSC::JIT::privateCompileGetByIdChain): 2800 * jit/JITStubs.cpp: 2801 (JSC::JITThunks::JITThunks): 2802 * jit/JITStubs.h: 2803 * runtime/Collector.cpp: 2804 (JSC::currentThreadStackBase): 2805 (JSC::getPlatformThreadRegisters): 2806 (JSC::otherThreadStackPointer): 2807 * wrec/WREC.h: 2808 * wrec/WRECGenerator.cpp: 2809 (JSC::WREC::Generator::generateEnter): 2810 (JSC::WREC::Generator::generateReturnSuccess): 2811 (JSC::WREC::Generator::generateReturnFailure): 2812 * wrec/WRECGenerator.h: 2813 * wtf/FastMalloc.cpp: 2814 * wtf/TCSpinLock.h: 2815 (TCMalloc_SpinLock::Lock): 2816 (TCMalloc_SpinLock::Unlock): 2817 (TCMalloc_SlowLock): 2818 * wtf/Threading.h: 2819 * wtf/dtoa.cpp: 2820 * yarr/RegexJIT.cpp: 2821 (JSC::Yarr::RegexGenerator::generateEnter): 2822 (JSC::Yarr::RegexGenerator::generateReturn): 2823 * yarr/RegexJIT.h: 2824 28252010-01-04 Maciej Stachowiak <mjs@apple.com> 2826 2827 Reviewed by Adam Barth. 2828 2829 Clean up COMPILER macros and remove unused ones. 2830 https://bugs.webkit.org/show_bug.cgi?id=33132 2831 2832 Removed values are COMPILER(BORLAND) and COMPILER(CYGWIN) - they were 2833 not used anywhere. 2834 2835 * wtf/Platform.h: 2836 28372010-01-03 Maciej Stachowiak <mjs@apple.com> 2838 2839 Reviewed by Eric Seidel. 2840 2841 Update wtf/Platform.h to document the new system for porting macros. 2842 https://bugs.webkit.org/show_bug.cgi?id=33130 2843 2844 * wtf/Platform.h: 2845 28462009-12-29 Laszlo Gombos <laszlo.1.gombos@nokia.com> 2847 2848 Reviewed by Maciej Stachowiak. 2849 2850 PLATFORM(CAIRO) should be defined by WIN_CAIRO define 2851 https://bugs.webkit.org/show_bug.cgi?id=22250 2852 2853 * wtf/Platform.h: Define WTF_PLATFORM_CAIRO for GTK port only 2854 For the WinCairo port WTF_PLATFORM_CAIRO is already defined in config.h 2855 28562009-12-28 Shu Chang <Chang.Shu@nokia.com> 2857 2858 Reviewed by Laszlo Gombos. 2859 2860 [Qt] Delete ThreadPrivate instance after it is finished. 2861 https://bugs.webkit.org/show_bug.cgi?id=32614 2862 2863 * wtf/qt/ThreadingQt.cpp: 2864 (WTF::ThreadMonitor::instance): 2865 (WTF::ThreadMonitor::threadFinished): 2866 (WTF::createThreadInternal): 2867 (WTF::detachThread): 2868 28692009-12-28 Patrick Gansterer <paroga@paroga.com> 2870 2871 Reviewed by Maciej Stachowiak. 2872 2873 Cleanup of #define JS_EXPORT. 2874 2875 * API/JSBase.h: 2876 28772009-12-27 Patrick Gansterer <paroga@paroga.com> 2878 2879 Reviewed by Adam Barth. 2880 2881 WinCE buildfix (HWND_MESSAGE isn't supported there) 2882 2883 * wtf/win/MainThreadWin.cpp: 2884 (WTF::initializeMainThreadPlatform): 2885 28862009-12-27 Patrick Gansterer <paroga@paroga.com> 2887 2888 Reviewed by Adam Barth. 2889 2890 Added a file with WinMain function to link agains in WinCE. 2891 2892 * os-win32/WinMain.cpp: Added. 2893 (convertToUtf8): 2894 (WinMain): 2895 28962009-12-24 Laszlo Gombos <laszlo.1.gombos@nokia.com> 2897 2898 Unreviewed; revert of r52550. 2899 2900 The change regressed the following LayoutTests for QtWebKit. 2901 2902 fast/workers/worker-call.html -> crashed 2903 fast/workers/worker-close.html -> crashed 2904 2905 * wtf/qt/ThreadingQt.cpp: 2906 (WTF::waitForThreadCompletion): 2907 (WTF::detachThread): 2908 29092009-12-24 Shu Chang <Chang.Shu@nokia.com> 2910 2911 Reviewed by Laszlo Gombos. 2912 2913 [Qt] Fix memory leak by deleting instance of ThreadPrivate 2914 in function waitForThreadCompletion(), synchronously, or in 2915 detachThread(), asynchronously. 2916 https://bugs.webkit.org/show_bug.cgi?id=32614 2917 2918 * wtf/qt/ThreadingQt.cpp: 2919 (WTF::waitForThreadCompletion): 2920 (WTF::detachThread): 2921 29222009-12-23 Kwang Yul Seo <skyul@company100.net> 2923 2924 Reviewed by Laszlo Gombos. 2925 2926 Include stddef.h for ptrdiff_t 2927 https://bugs.webkit.org/show_bug.cgi?id=32891 2928 2929 ptrdiff_t is typedef-ed in stddef.h. 2930 Include stddef.h in jit/ExecutableAllocator.h. 2931 2932 * jit/ExecutableAllocator.h: 2933 29342009-12-23 Patrick Gansterer <paroga@paroga.com> 2935 2936 Reviewed by Eric Seidel. 2937 2938 Buildfix after r47092. 2939 2940 * wtf/wince/MemoryManager.cpp: 2941 (WTF::tryFastMalloc): 2942 (WTF::tryFastZeroedMalloc): 2943 (WTF::tryFastCalloc): 2944 (WTF::tryFastRealloc): 2945 29462009-12-23 Kent Tamura <tkent@chromium.org> 2947 2948 Reviewed by Darin Adler. 2949 2950 HTMLInputElement::valueAsDate getter support. 2951 https://bugs.webkit.org/show_bug.cgi?id=32876 2952 2953 Expose dateToDaysFrom1970(). 2954 2955 * JavaScriptCore.exp: 2956 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: 2957 * wtf/DateMath.cpp: 2958 (WTF::dateToDaysFrom1970): 2959 * wtf/DateMath.h: 2960 29612009-12-22 Darin Adler <darin@apple.com> 2962 2963 Reviewed by Mark Rowe. 2964 2965 Turn off datagrid by default, at least for all platforms Apple ships. 2966 The datagrid implementation isn't ready for general web use yet. 2967 2968 * Configurations/FeatureDefines.xcconfig: Turn off datagrid by default. 2969 29702009-12-22 Steve Block <steveblock@google.com> 2971 2972 Reviewed by David Levin. 2973 2974 Updates Android's scheduleDispatchFunctionsOnMainThread() to use new 2975 AndroidThreading class, rather than using JavaSharedClient directly. 2976 This fixes the current layering violation. 2977 https://bugs.webkit.org/show_bug.cgi?id=32651 2978 2979 The pattern is copied from Chromium, which uses the ChromiumThreading 2980 class. This patch also fixes the style in ChromiumThreading.h. 2981 2982 * wtf/android/AndroidThreading.h: Added. Declares AndroidThreading. 2983 * wtf/android/MainThreadAndroid.cpp: Modified 2984 (WTF::scheduleDispatchFunctionsOnMainThread): Uses AndroidThreading. 2985 * wtf/chromium/ChromiumThreading.h: Modified. Fixes style. 2986 29872009-12-22 Gavin Barraclough <barraclough@apple.com> 2988 2989 Reviewed by Sam Weinig. 2990 2991 Fix a couple of problems with UntypedPtrAndBitfield. 2992 2993 Add a m_leaksPtr to reduce false positives from leaks in debug builds 2994 (this isn't perfect because we'd like a solution for release builds, 2995 but this is now at least as good as a PtrAndFlags would be). 2996 2997 Switch SmallStringsto use a regular string for the base, rather than 2998 a static one. UntypedPtrAndBitfield assumes all strings are at least 2999 8 byte aligned; this migt not be true of static strings. Shared buffers 3000 are heap allocated, as are all UStringImpls other than static strings. 3001 Static strings cannot end up being the owner string of substrings, 3002 since the only static strings are length 0. 3003 3004 * runtime/SmallStrings.cpp: 3005 (JSC::SmallStringsStorage::SmallStringsStorage): 3006 * runtime/UStringImpl.h: 3007 (JSC::UntypedPtrAndBitfield::UntypedPtrAndBitfield): 3008 (JSC::UStringImpl::UStringImpl): 3009 30102009-12-22 Kwang Yul Seo <skyul@company100.net> 3011 3012 Reviewed by Darin Adler. 3013 3014 RVCT (__ARMCC_VERSION < 400000) does not provide strcasecmp and strncasecmp 3015 https://bugs.webkit.org/show_bug.cgi?id=32857 3016 3017 Add implementation of strcasecmp and strncasecmp for RVCT < 4.0 3018 because earlier versions of RVCT 4.0 does not provide these functions. 3019 3020 * wtf/StringExtras.cpp: Added. 3021 (strcasecmp): 3022 (strncasecmp): 3023 * wtf/StringExtras.h: 3024 30252009-12-22 Kwang Yul Seo <skyul@company100.net> 3026 3027 Reviewed by Darin Adler. 3028 3029 Define ALWAYS_INLINE and WTF_PRIVATE_INLINE to __forceinline for RVCT 3030 https://bugs.webkit.org/show_bug.cgi?id=32853 3031 3032 Use __forceinline forces RVCT to compile a C or C++ function 3033 inline. The compiler attempts to inline the function, regardless of 3034 the characteristics of the function. 3035 3036 * wtf/AlwaysInline.h: 3037 * wtf/FastMalloc.h: 3038 30392009-12-21 Simon Hausmann <simon.hausmann@nokia.com> 3040 3041 Prospective GTK build fix: Add UStringImpl.cpp/h to the build. 3042 3043 * GNUmakefile.am: 3044 30452009-12-21 Simon Hausmann <simon.hausmann@nokia.com> 3046 3047 Fix the Qt build, add UStringImpl.cpp to the build. 3048 3049 * JavaScriptCore.pri: 3050 30512009-12-21 Gavin Barraclough <barraclough@apple.com> 3052 3053 Windows Build fix part 5. 3054 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: 3055 30562009-12-21 Gavin Barraclough <barraclough@apple.com> 3057 3058 Reviewed by NOBODY (build fix). 3059 Fix breakage of world introduced in build fix to r52463. 3060 3061 * runtime/UStringImpl.h: 3062 30632009-12-21 Gavin Barraclough <barraclough@apple.com> 3064 3065 Reviewed by Darin Adler. 3066 3067 https://bugs.webkit.org/show_bug.cgi?id=32831 3068 Replace UString::Rep implementation, following introduction of ropes to JSC. 3069 3070 * Remove redundant overcapacity mechanisms. 3071 * Reduce memory cost of Rep's. 3072 * Add an inline storage mechanism akin to that in WebCore's StringImpl. 3073 3074 ~1% Sunspider progression. 3075 3076 * JavaScriptCore.exp: 3077 * JavaScriptCore.xcodeproj/project.pbxproj: 3078 * runtime/JSString.cpp: 3079 (JSC::JSString::resolveRope): 3080 * runtime/SmallStrings.cpp: 3081 (JSC::SmallStringsStorage::SmallStringsStorage): 3082 * runtime/UString.cpp: 3083 (JSC::initializeUString): 3084 (JSC::createRep): 3085 (JSC::UString::createFromUTF8): 3086 (JSC::UString::createUninitialized): 3087 (JSC::UString::spliceSubstringsWithSeparators): 3088 (JSC::UString::replaceRange): 3089 (JSC::UString::ascii): 3090 (JSC::UString::operator=): 3091 (JSC::UString::toStrictUInt32): 3092 (JSC::equal): 3093 * runtime/UString.h: 3094 (JSC::UString::isEmpty): 3095 (JSC::UString::cost): 3096 (JSC::makeString): 3097 * runtime/UStringImpl.cpp: Added. 3098 (JSC::UStringImpl::baseSharedBuffer): 3099 (JSC::UStringImpl::sharedBuffer): 3100 (JSC::UStringImpl::destroy): 3101 (JSC::UStringImpl::computeHash): 3102 * runtime/UStringImpl.h: Added. 3103 (JSC::UntypedPtrAndBitfield::UntypedPtrAndBitfield): 3104 (JSC::UntypedPtrAndBitfield::asPtr): 3105 (JSC::UntypedPtrAndBitfield::operator&=): 3106 (JSC::UntypedPtrAndBitfield::operator|=): 3107 (JSC::UntypedPtrAndBitfield::operator&): 3108 (JSC::UStringImpl::create): 3109 (JSC::UStringImpl::createCopying): 3110 (JSC::UStringImpl::createUninitialized): 3111 (JSC::UStringImpl::data): 3112 (JSC::UStringImpl::size): 3113 (JSC::UStringImpl::cost): 3114 (JSC::UStringImpl::hash): 3115 (JSC::UStringImpl::computedHash): 3116 (JSC::UStringImpl::setHash): 3117 (JSC::UStringImpl::identifierTable): 3118 (JSC::UStringImpl::setIdentifierTable): 3119 (JSC::UStringImpl::ref): 3120 (JSC::UStringImpl::deref): 3121 (JSC::UStringImpl::allocChars): 3122 (JSC::UStringImpl::copyChars): 3123 (JSC::UStringImpl::computeHash): 3124 (JSC::UStringImpl::null): 3125 (JSC::UStringImpl::empty): 3126 (JSC::UStringImpl::checkConsistency): 3127 (JSC::UStringImpl::): 3128 (JSC::UStringImpl::UStringImpl): 3129 (JSC::UStringImpl::operator new): 3130 (JSC::UStringImpl::bufferOwnerString): 3131 (JSC::UStringImpl::bufferOwnership): 3132 (JSC::UStringImpl::isStatic): 3133 31342009-12-18 Laszlo Gombos <laszlo.1.gombos@nokia.com> 3135 3136 Reviewed by Kenneth Rohde Christiansen. 3137 3138 Move some build decisions from Qt build system into source files 3139 https://bugs.webkit.org/show_bug.cgi?id=31956 3140 3141 * JavaScriptCore.pri: Compile files unconditionally 3142 * jit/ExecutableAllocatorPosix.cpp: Guard with PLATFORM(UNIX) && !PLATFORM(SYMBIAN) 3143 * jit/ExecutableAllocatorWin.cpp: Guard with PLATFORM(WIN_OS) 3144 * runtime/MarkStackPosix.cpp: Guard with PLATFORM(UNIX) && !PLATFORM(SYMBIAN) 3145 * runtime/MarkStackSymbian.cpp: Guard with PLATFORM(SYMBIAN) 3146 * runtime/MarkStackWin.cpp: Guard with PLATFORM(WIN_OS) 3147 * wtf/Platform.h: Guard ENABLE_JSC_MULTIPLE_THREADS with ENABLE_SINGLE_THREADED for the Qt port 3148 * wtf/ThreadingNone.cpp: Guard with ENABLE(SINGLE_THREADED) 3149 * wtf/qt/ThreadingQt.cpp: Guard with !ENABLE(SINGLE_THREADED) 3150 31512009-12-18 Gavin Barraclough <barraclough@apple.com> 3152 3153 Reviewed by Sam Weinig. 3154 3155 Add createNonCopying method to UString to make replace constructor passed bool, 3156 to make behaviour more explicit. Add createFromUTF8 to UString (wrapping method 3157 on UString::Rep), since other cases of transliteration (e.g. from ascii) are 3158 performed in UString constructors. Add/use setHash & size() accessors on Rep, 3159 rather than accessing _hash/len directly. 3160 3161 * API/JSClassRef.cpp: 3162 (OpaqueJSClass::OpaqueJSClass): 3163 * API/OpaqueJSString.cpp: 3164 (OpaqueJSString::ustring): 3165 * JavaScriptCore.exp: 3166 * runtime/ArrayPrototype.cpp: 3167 (JSC::arrayProtoFuncToString): 3168 * runtime/Identifier.cpp: 3169 (JSC::Identifier::equal): 3170 (JSC::CStringTranslator::translate): 3171 (JSC::UCharBufferTranslator::translate): 3172 (JSC::Identifier::addSlowCase): 3173 * runtime/JSString.cpp: 3174 (JSC::JSString::resolveRope): 3175 * runtime/JSString.h: 3176 (JSC::JSString::Rope::Fiber::refAndGetLength): 3177 (JSC::JSString::Rope::append): 3178 * runtime/StringBuilder.h: 3179 (JSC::StringBuilder::release): 3180 * runtime/StringConstructor.cpp: 3181 (JSC::stringFromCharCodeSlowCase): 3182 * runtime/StringPrototype.cpp: 3183 (JSC::substituteBackreferencesSlow): 3184 (JSC::stringProtoFuncToLowerCase): 3185 (JSC::stringProtoFuncToUpperCase): 3186 (JSC::stringProtoFuncFontsize): 3187 (JSC::stringProtoFuncLink): 3188 * runtime/UString.cpp: 3189 (JSC::UString::UString): 3190 (JSC::UString::createNonCopying): 3191 (JSC::UString::createFromUTF8): 3192 * runtime/UString.h: 3193 (JSC::UString::Rep::setHash): 3194 (JSC::UString::~UString): 3195 (JSC::makeString): 3196 31972009-12-18 Geoffrey Garen <ggaren@apple.com> 3198 3199 Reviewed by Cameron Zwarich and Gavin Barraclough. 3200 3201 Changed Register constructors to assignment operators, to streamline 3202 moving values into registers. (In theory, there's no difference between 3203 the two, since the constructor should just inline away, but there seems 3204 to be a big difference in the addled mind of the GCC optimizer.) 3205 3206 In the interpreter, this is a 3.5% SunSpider speedup and a 1K-2K 3207 reduction in stack usage per privateExecute stack frame. 3208 3209 * interpreter/CallFrame.h: 3210 (JSC::ExecState::setCalleeArguments): 3211 (JSC::ExecState::setCallerFrame): 3212 (JSC::ExecState::setScopeChain): 3213 (JSC::ExecState::init): 3214 (JSC::ExecState::setArgumentCount): 3215 (JSC::ExecState::setCallee): 3216 (JSC::ExecState::setCodeBlock): Added a little bit of casting so these 3217 functions could use the new Register assignment operators. 3218 3219 * interpreter/Register.h: 3220 (JSC::Register::withInt): 3221 (JSC::Register::Register): 3222 (JSC::Register::operator=): Swapped in assignment operators for constructors. 3223 32242009-12-18 Yongjun Zhang <yongjun.zhang@nokia.com> 3225 3226 Reviewed by Simon Hausmann. 3227 3228 https://bugs.webkit.org/show_bug.cgi?id=32713 3229 [Qt] make wtf/Assertions.h compile in winscw compiler. 3230 3231 Add string arg before ellipsis to help winscw compiler resolve variadic 3232 macro definitions in wtf/Assertions.h. 3233 3234 * wtf/Assertions.h: 3235 32362009-12-18 Geoffrey Garen <ggaren@apple.com> 3237 3238 Reviewed by Adam Roben. 3239 3240 Fixed intermittent failure seen on Windows buildbot, and in other JSC 3241 API clients. 3242 3243 Added a WeakGCPtr class and changed OpaqueJSClass::cachedPrototype to 3244 use it, to avoid vending a stale object as a prototype. 3245 3246 * API/JSClassRef.cpp: 3247 (OpaqueJSClassContextData::OpaqueJSClassContextData): 3248 (OpaqueJSClass::prototype): 3249 * API/JSClassRef.h: Use WeakGCPtr. 3250 3251 * JavaScriptCore.xcodeproj/project.pbxproj: 3252 * runtime/WeakGCPtr.h: Added. 3253 (JSC::WeakGCPtr::WeakGCPtr): 3254 (JSC::WeakGCPtr::get): 3255 (JSC::WeakGCPtr::clear): 3256 (JSC::WeakGCPtr::operator*): 3257 (JSC::WeakGCPtr::operator->): 3258 (JSC::WeakGCPtr::operator!): 3259 (JSC::WeakGCPtr::operator bool): 3260 (JSC::WeakGCPtr::operator UnspecifiedBoolType): 3261 (JSC::WeakGCPtr::assign): 3262 (JSC::::operator): 3263 (JSC::operator==): 3264 (JSC::operator!=): 3265 (JSC::static_pointer_cast): 3266 (JSC::const_pointer_cast): 3267 (JSC::getPtr): Added WeakGCPtr to the project. 3268 32692009-12-18 Gavin Barraclough <barraclough@apple.com> 3270 3271 Reviewed by Sam Weinig. 3272 3273 https://bugs.webkit.org/show_bug.cgi?id=32720 3274 3275 * JavaScriptCore.exp: 3276 - Remove exports for UString::append 3277 * JavaScriptCore.xcodeproj/project.pbxproj: 3278 - Make StringBuilder a private header (was project). 3279 32802009-12-18 Martin Robinson <martin.james.robinson@gmail.com> 3281 3282 Reviewed by Gustavo Noronha Silva. 3283 3284 [GTK] GRefPtr does not take a reference when assigned a raw pointer 3285 https://bugs.webkit.org/show_bug.cgi?id=32709 3286 3287 Ensure that when assigning a raw pointer to a GRefPtr, the reference 3288 count is incremented. Also remove the GRefPtr conversion overload as 3289 GRefPtr types have necessarily incompatible reference counting. 3290 3291 * wtf/gtk/GRefPtr.h: 3292 (WTF::GRefPtr::operator=): 3293 32942009-12-18 Simon Hausmann <simon.hausmann@nokia.com> 3295 3296 Reviewed by Tor Arne Vestbø. 3297 3298 [Qt] Clean up the qmake build system to distinguish between trunk builds and package builds 3299 3300 https://bugs.webkit.org/show_bug.cgi?id=32716 3301 3302 * pcre/pcre.pri: Use standalone_package instead of QTDIR_build 3303 33042009-12-18 Martin Robinson <martin.james.robinson@gmail.com> 3305 3306 Reviewed by Gustavo Noronha Silva. 3307 3308 [GTK] Compile warning from line 29 of GRefPtr.cpp 3309 https://bugs.webkit.org/show_bug.cgi?id=32703 3310 3311 Fix memory leak and compiler warning in GRefPtr GHashTable template 3312 specialization. 3313 3314 * wtf/gtk/GRefPtr.cpp: 3315 (WTF::refGPtr): 3316 33172009-12-17 Sam Weinig <sam@webkit.org> 3318 3319 Reviewed by Mark Rowe. 3320 3321 Add BUILDING_ON_SNOW_LEOPARD and TARGETING_SNOW_LEOPARD #defines. 3322 3323 * wtf/Platform.h: 3324 33252009-12-17 Adam Roben <aroben@apple.com> 3326 3327 Sync JavaScriptCore.vcproj with JavaScriptCore.xcodeproj and the 3328 source tree 3329 3330 Fixes <http://webkit.org/b/32665>. 3331 3332 Reviewed by Ada Chan. 3333 3334 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: Moved 3335 around files and filters so that the structure matches 3336 JavaScriptCore.xcodeproj and the source tree. A few headers that were 3337 previously omitted have been added, as well as JSZombie.{cpp,h}. 3338 33392009-12-17 Adam Roben <aroben@apple.com> 3340 3341 Remove HeavyProfile and TreeProfile completely 3342 3343 These were mostly removed in r42808, but the empty files were left in 3344 place. 3345 3346 Fixes <http://webkit.org/b/32664>. 3347 3348 Reviewed by John Sullivan. 3349 3350 * Android.mk: 3351 * GNUmakefile.am: 3352 * JavaScriptCore.gypi: 3353 * JavaScriptCore.pri: 3354 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: 3355 * JavaScriptCoreSources.bkl: 3356 Removed HeavyProfile/TreeProfile source files. 3357 3358 * profiler/HeavyProfile.cpp: Removed. 3359 * profiler/HeavyProfile.h: Removed. 3360 * profiler/TreeProfile.cpp: Removed. 3361 * profiler/TreeProfile.h: Removed. 3362 33632009-12-17 Martin Robinson <martin.james.robinson@gmail.com> 3364 3365 Reviewed by Gustavo Noronha Silva. 3366 3367 [GTK] WebKit GTK needs a wrapper for ref counted glib/gobject structs 3368 https://bugs.webkit.org/show_bug.cgi?id=21599 3369 3370 Implement GRefPtr, a smart pointer for reference counted GObject types. 3371 3372 * GNUmakefile.am: 3373 * wtf/gtk/GOwnPtr.cpp: 3374 (WTF::GDir): 3375 * wtf/gtk/GRefPtr.h: Added. 3376 (WTF::): 3377 (WTF::GRefPtr::GRefPtr): 3378 (WTF::GRefPtr::~GRefPtr): 3379 (WTF::GRefPtr::clear): 3380 (WTF::GRefPtr::get): 3381 (WTF::GRefPtr::operator*): 3382 (WTF::GRefPtr::operator->): 3383 (WTF::GRefPtr::operator!): 3384 (WTF::GRefPtr::operator UnspecifiedBoolType): 3385 (WTF::GRefPtr::hashTableDeletedValue): 3386 (WTF::::operator): 3387 (WTF::::swap): 3388 (WTF::swap): 3389 (WTF::operator==): 3390 (WTF::operator!=): 3391 (WTF::static_pointer_cast): 3392 (WTF::const_pointer_cast): 3393 (WTF::getPtr): 3394 (WTF::adoptGRef): 3395 (WTF::refGPtr): 3396 (WTF::derefGPtr): 3397 33982009-12-17 Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk> 3399 3400 Unreviewed. Build fixes for make distcheck. 3401 3402 * GNUmakefile.am: 3403 34042009-12-16 Geoffrey Garen <ggaren@apple.com> 3405 3406 Reviewed by Oliver Hunt. 3407 3408 Fixed <rdar://problem/7355025> Interpreter::privateExecute macro generates 3409 bloated code 3410 3411 This patch cuts Interpreter stack use by about a third. 3412 3413 * bytecode/Opcode.h: Changed Opcode to const void* to work with the 3414 const static initiliazation we want to do in Interpreter::privateExecute. 3415 3416 * interpreter/Interpreter.cpp: 3417 (JSC::Interpreter::Interpreter): Moved hashtable initialization here to 3418 avoid polluting Interpreter::privateExecute's stack, and changed it from a 3419 series of add() calls to one add() call in a loop, to cut down on code size. 3420 3421 (JSC::Interpreter::privateExecute): Changed a series of label computations 3422 to a copy of a compile-time constant array to cut down on code size. 3423 34242009-12-16 Mark Rowe <mrowe@apple.com> 3425 3426 Build fix. Disable debug variants of WebKit frameworks. 3427 3428 * JavaScriptCore.xcodeproj/project.pbxproj: 3429 34302009-12-15 Geoffrey Garen <ggaren@apple.com> 3431 3432 Reviewed by Sam "r=me" Weinig. 3433 3434 https://bugs.webkit.org/show_bug.cgi?id=32498 3435 <rdar://problem/7471495> 3436 REGRESSION(r51978-r52039): AJAX "Mark This Forum Read" function no longer 3437 works 3438 3439 Fixed a tyop. 3440 3441 * runtime/Operations.h: 3442 (JSC::jsAdd): Use the '&&' operator, not the ',' operator. 3443 34442009-12-15 Geoffrey Garen <ggaren@apple.com> 3445 3446 Try to fix the windows build: don't export this inlined function. 3447 3448 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: 3449 34502009-12-15 Geoffrey Garen <ggaren@apple.com> 3451 3452 Reviewed by Beth Dakin. 3453 3454 Inlined JSCell's operator new. 3455 3456 3.7% speedup on bench-allocate-nonretained.js. 3457 3458 * JavaScriptCore.exp: 3459 * runtime/JSCell.cpp: 3460 * runtime/JSCell.h: 3461 (JSC::JSCell::operator new): 3462 34632009-12-15 Geoffrey Garen <ggaren@apple.com> 3464 3465 Reviewed by Oliver Hunt. 3466 3467 Removed the number heap, replacing it with a one-item free list for 3468 numbers, taking advantage of the fact that two number cells fit inside 3469 the space for one regular cell, and number cells don't require destruction. 3470 3471 SunSpider says 1.6% faster in JSVALUE32 mode (the only mode that 3472 heap-allocates numbers). 3473 3474 SunSpider says 1.1% faster in JSVALUE32_64 mode. v8 says 0.8% faster 3475 in JSVALUE32_64 mode. 10% speedup on bench-alloc-nonretained.js. 6% 3476 speedup on bench-alloc-retained.js. 3477 3478 There's a lot of formulaic change in this patch, but not much substance. 3479 3480 * JavaScriptCore.exp: 3481 * debugger/Debugger.cpp: 3482 (JSC::Debugger::recompileAllJSFunctions): 3483 * runtime/Collector.cpp: 3484 (JSC::Heap::Heap): 3485 (JSC::Heap::destroy): 3486 (JSC::Heap::allocateBlock): 3487 (JSC::Heap::freeBlock): 3488 (JSC::Heap::freeBlockPtr): 3489 (JSC::Heap::freeBlocks): 3490 (JSC::Heap::recordExtraCost): 3491 (JSC::Heap::allocate): 3492 (JSC::Heap::resizeBlocks): 3493 (JSC::Heap::growBlocks): 3494 (JSC::Heap::shrinkBlocks): 3495 (JSC::Heap::markConservatively): 3496 (JSC::Heap::clearMarkBits): 3497 (JSC::Heap::markedCells): 3498 (JSC::Heap::sweep): 3499 (JSC::Heap::markRoots): 3500 (JSC::Heap::objectCount): 3501 (JSC::Heap::addToStatistics): 3502 (JSC::Heap::statistics): 3503 (JSC::Heap::isBusy): 3504 (JSC::Heap::reset): 3505 (JSC::Heap::collectAllGarbage): 3506 (JSC::Heap::primaryHeapBegin): 3507 (JSC::Heap::primaryHeapEnd): 3508 * runtime/Collector.h: 3509 (JSC::): Removed all code pertaining to the number heap, and changed all 3510 heap template functions and classes to non-template functions and classes. 3511 3512 (JSC::Heap::allocateNumber): A new optimization to replace the number 3513 heap: allocate half-sized number cells in pairs, returning the first 3514 cell and caching the second cell for the next allocation. 3515 3516 * runtime/CollectorHeapIterator.h: 3517 (JSC::LiveObjectIterator::LiveObjectIterator): 3518 (JSC::LiveObjectIterator::operator++): 3519 (JSC::DeadObjectIterator::DeadObjectIterator): 3520 (JSC::DeadObjectIterator::operator++): 3521 (JSC::ObjectIterator::ObjectIterator): 3522 (JSC::ObjectIterator::operator++): 3523 * runtime/JSCell.h: 3524 (JSC::JSCell::isNumber): Removed all code pertaining to the number heap, 3525 and changed all heap template functions and classes to non-template functions 3526 and classes. 3527 35282009-12-15 Zoltan Horvath <zoltan@webkit.org> 3529 3530 Reviewed by Darin Adler. 3531 3532 Allow custom memory allocation control for WeakGCMap class 3533 https://bugs.webkit.org/show_bug.cgi?id=32547 3534 3535 Inherits WeakGCMap from FastAllocBase because it is instantiated by 3536 'new' at: WebCore/dom/Document.cpp:512. 3537 3538 * runtime/WeakGCMap.h: 3539 35402009-12-15 Zoltan Horvath <zoltan@webkit.org> 3541 3542 Reviewed by Darin Adler. 3543 3544 Allow custom memory allocation control for dtoa's P5Node struct 3545 https://bugs.webkit.org/show_bug.cgi?id=32544 3546 3547 Inherits P5Node struct from Noncopyable because it is instantiated by 3548 'new' at wtf/dtoa.cpp:588 and don't need to be copyable. 3549 3550 * wtf/dtoa.cpp: 3551 35522009-12-14 Geoffrey Garen <ggaren@apple.com> 3553 3554 Reviewed by Simon Fraser. 3555 3556 https://bugs.webkit.org/show_bug.cgi?id=32524 3557 REGRESSION(52084): fast/dom/prototypes.html failing two CSS tests 3558 3559 * wtf/StdLibExtras.h: 3560 (WTF::bitCount): The original patch put the parentheses in the wrong 3561 place, completely changing the calculation and making it almost always 3562 wrong. Moved the parentheses around the '+' operation, like the original 3563 compiler warning suggested. 3564 35652009-12-14 Gabor Loki <loki@inf.u-szeged.hu> 3566 3567 Unreviewed trivial buildfix. 3568 3569 Fix crosses initialization of usedPrimaryBlocks for JSValue32 3570 3571 * runtime/Collector.cpp: 3572 (JSC::Heap::markConservatively): 3573 35742009-12-14 Csaba Osztrogonác <ossy@webkit.org> 3575 3576 Reviewed by Simon Hausmann. 3577 3578 GCC 4.3.x warning fixed. Suggested parantheses added. 3579 warning: ../../../JavaScriptCore/wtf/StdLibExtras.h:77: warning: suggest parentheses around + or - in operand of & 3580 3581 * wtf/StdLibExtras.h: 3582 (WTF::bitCount): 3583 35842009-12-13 Geoffrey Garen <ggaren@apple.com> 3585 3586 Reviewed by Sam Weinig. 3587 3588 Changed GC from mark-sweep to mark-allocate. 3589 3590 Added WeakGCMap to keep WebCore blissfully ignorant about objects that 3591 have become garbage but haven't run their destructors yet. 3592 3593 1% SunSpider speedup. 3594 7.6% v8 speedup (37% splay speedup). 3595 17% speedup on bench-alloc-nonretained.js. 3596 18% speedup on bench-alloc-retained.js. 3597 3598 * API/JSBase.cpp: 3599 (JSGarbageCollect): 3600 * API/JSContextRef.cpp: 3601 * JavaScriptCore.exp: 3602 * JavaScriptCore.xcodeproj/project.pbxproj: Updated for renames and new 3603 files. 3604 3605 * debugger/Debugger.cpp: 3606 (JSC::Debugger::recompileAllJSFunctions): Updated to use the Collector 3607 iterator abstraction. 3608 3609 * jsc.cpp: 3610 (functionGC): Updated for rename. 3611 3612 * runtime/Collector.cpp: Slightly reduced the number of allocations per 3613 collection, so that small workloads only allocate on collector block, 3614 rather than two. 3615 3616 (JSC::Heap::Heap): Updated to use the new allocateBlock function. 3617 3618 (JSC::Heap::destroy): Updated to use the new freeBlocks function. 3619 3620 (JSC::Heap::allocateBlock): New function to initialize a block when 3621 allocating it. 3622 3623 (JSC::Heap::freeBlock): Consolidated the responsibility for running 3624 destructors into this function. 3625 3626 (JSC::Heap::freeBlocks): Updated to use freeBlock. 3627 3628 (JSC::Heap::recordExtraCost): Sweep the heap in this reporting function, 3629 so that allocation, which is more common, doesn't have to check extraCost. 3630 3631 (JSC::Heap::heapAllocate): Run destructors right before recycling a 3632 garbage cell. This has better cache utilization than a separate sweep phase. 3633 3634 (JSC::Heap::resizeBlocks): 3635 (JSC::Heap::growBlocks): 3636 (JSC::Heap::shrinkBlocks): New set of functions for managing the size of 3637 the heap, now that the heap doesn't maintain any information about its 3638 size. 3639 3640 (JSC::isPointerAligned): 3641 (JSC::isHalfCellAligned): 3642 (JSC::isPossibleCell): 3643 (JSC::isCellAligned): 3644 (JSC::Heap::markConservatively): Cleaned up this code a bit. 3645 3646 (JSC::Heap::clearMarkBits): 3647 (JSC::Heap::markedCells): Some helper functions for examining the the mark 3648 bitmap. 3649 3650 (JSC::Heap::sweep): Simplified this function by using a DeadObjectIterator. 3651 3652 (JSC::Heap::markRoots): Reordered some operations for clarity. 3653 3654 (JSC::Heap::objectCount): 3655 (JSC::Heap::addToStatistics): 3656 (JSC::Heap::statistics): Rewrote these functions to calculate an object 3657 count on demand, since the heap doesn't maintain this information by 3658 itself. 3659 3660 (JSC::Heap::reset): New function for resetting the heap once we've 3661 exhausted heap space. 3662 3663 (JSC::Heap::collectAllGarbage): This function matches the old collect() 3664 behavior, but it's now an uncommon function used only by API. 3665 3666 * runtime/Collector.h: 3667 (JSC::CollectorBitmap::count): 3668 (JSC::CollectorBitmap::isEmpty): Added some helper functions for managing 3669 the collector mark bitmap. 3670 3671 (JSC::Heap::reportExtraMemoryCost): Changed reporting from cell equivalents 3672 to bytes, so it's easier to understand. 3673 3674 * runtime/CollectorHeapIterator.h: 3675 (JSC::CollectorHeapIterator::CollectorHeapIterator): 3676 (JSC::CollectorHeapIterator::operator!=): 3677 (JSC::CollectorHeapIterator::operator*): 3678 (JSC::CollectorHeapIterator::advance): 3679 (JSC::::LiveObjectIterator): 3680 (JSC::::operator): 3681 (JSC::::DeadObjectIterator): 3682 (JSC::::ObjectIterator): New iterators for encapsulating details about 3683 heap layout, and what's live and dead on the heap. 3684 3685 * runtime/JSArray.cpp: 3686 (JSC::JSArray::putSlowCase): 3687 (JSC::JSArray::increaseVectorLength): Delay reporting extra cost until 3688 we're fully constructed, so the heap mark phase won't visit us in an 3689 invalid state. 3690 3691 * runtime/JSCell.h: 3692 (JSC::JSCell::): 3693 (JSC::JSCell::createDummyStructure): 3694 (JSC::JSCell::JSCell): 3695 * runtime/JSGlobalData.cpp: 3696 (JSC::JSGlobalData::JSGlobalData): 3697 * runtime/JSGlobalData.h: Added a dummy cell to simplify allocation logic. 3698 3699 * runtime/JSString.h: 3700 (JSC::jsSubstring): Don't report extra cost for substrings, since they 3701 share a buffer that's already reported extra cost. 3702 3703 * runtime/Tracing.d: 3704 * runtime/Tracing.h: Changed these dtrace hooks not to report object 3705 counts, since they're no longer cheap to compute. 3706 3707 * runtime/UString.h: Updated for renames. 3708 3709 * runtime/WeakGCMap.h: Added. 3710 (JSC::WeakGCMap::isEmpty): 3711 (JSC::WeakGCMap::uncheckedGet): 3712 (JSC::WeakGCMap::uncheckedBegin): 3713 (JSC::WeakGCMap::uncheckedEnd): 3714 (JSC::::get): 3715 (JSC::::take): 3716 (JSC::::set): 3717 (JSC::::uncheckedRemove): Mentioned above. 3718 3719 * wtf/StdLibExtras.h: 3720 (WTF::bitCount): Added a bit population count function, so the heap can 3721 count live objects to fulfill statistics questions. 3722 3723The very last cell in the block is not allocated -- should not be marked. 3724 37252009-12-13 Geoffrey Garen <ggaren@apple.com> 3726 3727 Windows build fix: Export some new symbols. 3728 3729 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: 3730 37312009-12-13 Geoffrey Garen <ggaren@apple.com> 3732 3733 Windows build fix: Removed some old exports. 3734 3735 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: 3736 37372009-12-13 Geoffrey Garen <ggaren@apple.com> 3738 3739 Windows build fix: Use unsigned instead of uint32_t to avoid dependencies. 3740 3741 * wtf/StdLibExtras.h: 3742 (WTF::bitCount): 3743 37442009-12-13 Gavin Barraclough <barraclough@apple.com> 3745 3746 Reviewed by NOBODY (speculative Windows build fix). 3747 3748 * runtime/JSGlobalObjectFunctions.cpp: 3749 37502009-12-13 Gavin Barraclough <barraclough@apple.com> 3751 3752 Reviewed by Sam Weinig. 3753 3754 https://bugs.webkit.org/show_bug.cgi?id=32496 3755 Switch remaining cases of string construction to use StringBuilder. 3756 Builds strings using a vector rather than using string append / addition. 3757 3758 * JavaScriptCore.exp: 3759 * JavaScriptCore.xcodeproj/project.pbxproj: 3760 * runtime/Executable.cpp: 3761 (JSC::FunctionExecutable::paramString): 3762 * runtime/FunctionConstructor.cpp: 3763 (JSC::constructFunction): 3764 * runtime/JSGlobalObjectFunctions.cpp: 3765 (JSC::encode): 3766 (JSC::decode): 3767 (JSC::globalFuncEscape): 3768 (JSC::globalFuncUnescape): 3769 * runtime/JSONObject.cpp: 3770 (JSC::Stringifier::stringify): 3771 (JSC::Stringifier::indent): 3772 * runtime/JSString.h: 3773 * runtime/LiteralParser.cpp: 3774 (JSC::LiteralParser::Lexer::lexString): 3775 * runtime/NumberPrototype.cpp: 3776 (JSC::integerPartNoExp): 3777 (JSC::numberProtoFuncToFixed): 3778 (JSC::numberProtoFuncToPrecision): 3779 * runtime/Operations.h: 3780 (JSC::jsString): 3781 * runtime/StringPrototype.cpp: 3782 (JSC::substituteBackreferencesSlow): 3783 (JSC::substituteBackreferences): 3784 (JSC::stringProtoFuncConcat): 3785 37862009-12-08 Jeremy Moskovich <jeremy@chromium.org> 3787 3788 Reviewed by Eric Seidel. 3789 3790 Add code to allow toggling ATSUI/Core Text rendering at runtime in ComplexTextController. 3791 https://bugs.webkit.org/show_bug.cgi?id=31802 3792 3793 The goal here is to allow for a zero runtime hit for ports that decide to select 3794 the API at compile time. 3795 When both USE(ATSUI) and USE(CORE_TEXT) are true, the API is toggled 3796 at runtime. Core Text is used for OS Versions >= 10.6. 3797 3798 * wtf/Platform.h: #define USE_CORE_TEXT and USE_ATSUI on Chrome/Mac. 3799 38002009-12-11 Maciej Stachowiak <mjs@apple.com> 3801 3802 Reviewed by Oliver Hunt. 3803 3804 Unify codegen for forward and backward variants of branches 3805 https://bugs.webkit.org/show_bug.cgi?id=32463 3806 3807 * jit/JIT.h: 3808 (JSC::JIT::emit_op_loop): Implemented in terms of forward variant. 3809 (JSC::JIT::emit_op_loop_if_true): ditto 3810 (JSC::JIT::emitSlow_op_loop_if_true): ditto 3811 (JSC::JIT::emit_op_loop_if_false): ditto 3812 (JSC::JIT::emitSlow_op_loop_if_false): ditto 3813 (JSC::JIT::emit_op_loop_if_less): ditto 3814 (JSC::JIT::emitSlow_op_loop_if_less): ditto 3815 * jit/JITOpcodes.cpp: 3816 38172009-12-11 Sam Weinig <sam@webkit.org> 3818 3819 Reviewed by Anders Carlsson. 3820 3821 Allow WTFs concept of the main thread to differ from pthreads when necessary. 3822 3823 * wtf/ThreadingPthreads.cpp: 3824 (WTF::initializeThreading): 3825 (WTF::isMainThread): 3826 * wtf/mac/MainThreadMac.mm: 3827 (WTF::initializeMainThreadPlatform): 3828 (WTF::scheduleDispatchFunctionsOnMainThread): 3829 38302009-12-11 Gavin Barraclough <barraclough@apple.com> 3831 3832 Reviewed by Oliver Hunt. 3833 3834 https://bugs.webkit.org/show_bug.cgi?id=32454 3835 Refactor construction of simple strings to avoid string concatenation. 3836 3837 Building strings through concatenation has a memory and performance cost - 3838 a memory cost since we must over-allocate the buffer to leave space to append 3839 into, and performance in that the string may still require reallocation (and 3840 thus copying during construction). Instead move the full construction to 3841 within a single function call (makeString), so that the arguments' lengths 3842 can be calculated and an appropriate sized buffer allocated before copying 3843 any characters. 3844 3845 ~No performance change (~2% progression on date tests). 3846 3847 * bytecode/CodeBlock.cpp: 3848 (JSC::escapeQuotes): 3849 (JSC::valueToSourceString): 3850 (JSC::constantName): 3851 (JSC::idName): 3852 (JSC::CodeBlock::registerName): 3853 (JSC::regexpToSourceString): 3854 (JSC::regexpName): 3855 * bytecompiler/NodesCodegen.cpp: 3856 (JSC::substitute): 3857 * profiler/Profiler.cpp: 3858 (JSC::Profiler::createCallIdentifier): 3859 * runtime/DateConstructor.cpp: 3860 (JSC::callDate): 3861 * runtime/DateConversion.cpp: 3862 (JSC::formatDate): 3863 (JSC::formatDateUTCVariant): 3864 (JSC::formatTime): 3865 (JSC::formatTimeUTC): 3866 * runtime/DateConversion.h: 3867 (JSC::): 3868 * runtime/DatePrototype.cpp: 3869 (JSC::dateProtoFuncToString): 3870 (JSC::dateProtoFuncToUTCString): 3871 (JSC::dateProtoFuncToDateString): 3872 (JSC::dateProtoFuncToTimeString): 3873 (JSC::dateProtoFuncToGMTString): 3874 * runtime/ErrorPrototype.cpp: 3875 (JSC::errorProtoFuncToString): 3876 * runtime/ExceptionHelpers.cpp: 3877 (JSC::createUndefinedVariableError): 3878 (JSC::createErrorMessage): 3879 (JSC::createInvalidParamError): 3880 * runtime/FunctionPrototype.cpp: 3881 (JSC::insertSemicolonIfNeeded): 3882 (JSC::functionProtoFuncToString): 3883 * runtime/ObjectPrototype.cpp: 3884 (JSC::objectProtoFuncToString): 3885 * runtime/RegExpConstructor.cpp: 3886 (JSC::constructRegExp): 3887 * runtime/RegExpObject.cpp: 3888 (JSC::RegExpObject::match): 3889 * runtime/RegExpPrototype.cpp: 3890 (JSC::regExpProtoFuncCompile): 3891 (JSC::regExpProtoFuncToString): 3892 * runtime/StringPrototype.cpp: 3893 (JSC::stringProtoFuncBig): 3894 (JSC::stringProtoFuncSmall): 3895 (JSC::stringProtoFuncBlink): 3896 (JSC::stringProtoFuncBold): 3897 (JSC::stringProtoFuncFixed): 3898 (JSC::stringProtoFuncItalics): 3899 (JSC::stringProtoFuncStrike): 3900 (JSC::stringProtoFuncSub): 3901 (JSC::stringProtoFuncSup): 3902 (JSC::stringProtoFuncFontcolor): 3903 (JSC::stringProtoFuncFontsize): 3904 (JSC::stringProtoFuncAnchor): 3905 * runtime/UString.h: 3906 (JSC::): 3907 (JSC::makeString): 3908 39092009-12-10 Gavin Barraclough <barraclough@apple.com> 3910 3911 Reviewed by Oliver Hunt. 3912 3913 https://bugs.webkit.org/show_bug.cgi?id=32400 3914 Switch remaining cases of string addition to use ropes. 3915 3916 Re-landing r51975 - added toPrimitiveString method, 3917 performs toPrimitive then subsequent toString operations. 3918 3919 ~1% progression on Sunspidey. 3920 3921 * jit/JITStubs.cpp: 3922 (JSC::DEFINE_STUB_FUNCTION): 3923 * runtime/JSString.h: 3924 (JSC::JSString::JSString): 3925 (JSC::JSString::appendStringInConstruct): 3926 * runtime/Operations.cpp: 3927 (JSC::jsAddSlowCase): 3928 * runtime/Operations.h: 3929 (JSC::jsString): 3930 (JSC::jsAdd): 3931 39322009-12-11 Adam Roben <aroben@apple.com> 3933 3934 Windows build fix 3935 3936 * JavaScriptCore.vcproj/jsc/jscCommon.vsprops: Added 3937 $(WebKitOutputDir)/include/private to the include path. 3938 39392009-12-11 Adam Roben <aroben@apple.com> 3940 3941 Move QuartzCorePresent.h to include/private 3942 3943 This fixes other projects that use wtf/Platform.h 3944 3945 Rubber-stamped by Steve Falkenburg. 3946 3947 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: Let VS do its thang. 3948 * JavaScriptCore.vcproj/JavaScriptCore/build-generated-files.sh: Write 3949 QuartzCorePresent.h to $(WebKitOutputDir)/include/private. 3950 3951 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreCommon.vsprops: 3952 * JavaScriptCore.vcproj/WTF/WTFCommon.vsprops: 3953 Added $(WebKitOutputDir)/include/private to the include path. 3954 39552009-12-11 Adam Roben <aroben@apple.com> 3956 3957 Fix clean builds and everything rebuilding on every build 3958 3959 Reviewed by Sam Weinig. 3960 3961 * JavaScriptCore.vcproj/JavaScriptCore/build-generated-files.sh: Don't 3962 write out QuartzCorePresent.h if it exists but is older than 3963 QuartzCore.h. Also, create the directory we write QuartzCorePresent.h 3964 into first. 3965 39662009-12-11 Adam Roben <aroben@apple.com> 3967 3968 Windows build fix for systems with spaces in their paths 3969 3970 * JavaScriptCore.vcproj/JavaScriptCore/build-generated-files.sh: Quote some paths. 3971 39722009-12-11 Chris Marrin <cmarrin@apple.com> 3973 3974 Reviewed by Adam Roben. 3975 3976 Add check for presence of QuartzCore headers 3977 https://bugs.webkit.org/show_bug.cgi?id=31856 3978 3979 The script now checks for the presence of QuartzCore.h. If present 3980 it will turn on ACCELERATED_COMPOSITING and 3D_RENDERING to enable 3981 HW compositing on Windows. The script writes QuartzCorePresent.h to 3982 the build directory which has a define telling whether QuartzCore is 3983 present. 3984 3985 * JavaScriptCore.vcproj/JavaScriptCore/build-generated-files.sh: 3986 * wtf/Platform.h: 3987 39882009-12-11 Kent Tamura <tkent@chromium.org> 3989 3990 Reviewed by Darin Adler. 3991 3992 Fix a problem that JSC::gregorianDateTimeToMS() returns a negative 3993 value for a huge year value. 3994 https://bugs.webkit.org/show_bug.cgi?id=32304 3995 3996 * wtf/DateMath.cpp: 3997 (WTF::dateToDaysFrom1970): Renamed from dateToDayInYear, and changed the return type to double. 3998 (WTF::calculateDSTOffset): Follow the dateToDaysFrom1970() change. 3999 (WTF::timeClip): Use maxECMAScriptTime. 4000 (JSC::gregorianDateTimeToMS): Follow the dateToDaysFrom1970() change. 4001 40022009-12-10 Adam Barth <abarth@webkit.org> 4003 4004 No review, rolling out r51975. 4005 http://trac.webkit.org/changeset/51975 4006 4007 * jit/JITStubs.cpp: 4008 (JSC::DEFINE_STUB_FUNCTION): 4009 * runtime/JSString.h: 4010 (JSC::JSString::JSString): 4011 (JSC::JSString::appendStringInConstruct): 4012 * runtime/Operations.cpp: 4013 (JSC::jsAddSlowCase): 4014 * runtime/Operations.h: 4015 (JSC::jsString): 4016 (JSC::jsAdd): 4017 40182009-12-10 Oliver Hunt <oliver@apple.com> 4019 4020 Reviewed by Gavin Barraclough. 4021 4022 Incorrect caching of prototype lookup with dictionary base 4023 https://bugs.webkit.org/show_bug.cgi?id=32402 4024 4025 Make sure we don't add cached prototype lookup to the proto_list 4026 lookup chain if the top level object is a dictionary. 4027 4028 * jit/JITStubs.cpp: 4029 (JSC::JITThunks::tryCacheGetByID): 4030 40312009-12-10 Gavin Barraclough <barraclough@apple.com> 4032 4033 Reviewed by Oliver Hunt. 4034 4035 https://bugs.webkit.org/show_bug.cgi?id=32400 4036 Switch remaining cases of string addition to use ropes. 4037 4038 ~1% progression on Sunspidey. 4039 4040 * jit/JITStubs.cpp: 4041 (JSC::DEFINE_STUB_FUNCTION): 4042 * runtime/JSString.h: 4043 (JSC::JSString::JSString): 4044 (JSC::JSString::appendStringInConstruct): 4045 * runtime/Operations.cpp: 4046 (JSC::jsAddSlowCase): 4047 * runtime/Operations.h: 4048 (JSC::jsString): 4049 (JSC::jsAdd): 4050 40512009-12-10 Kent Hansen <kent.hansen@nokia.com> 4052 4053 Reviewed by Geoffrey Garen. 4054 4055 Remove JSObject::getPropertyAttributes() and all usage of it. 4056 https://bugs.webkit.org/show_bug.cgi?id=31933 4057 4058 getOwnPropertyDescriptor() should be used instead. 4059 4060 * JavaScriptCore.exp: 4061 * JavaScriptCore.order: 4062 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: 4063 * debugger/DebuggerActivation.cpp: 4064 (JSC::DebuggerActivation::getOwnPropertyDescriptor): 4065 * debugger/DebuggerActivation.h: 4066 * runtime/JSObject.cpp: 4067 (JSC::JSObject::propertyIsEnumerable): 4068 * runtime/JSObject.h: 4069 * runtime/JSVariableObject.cpp: 4070 * runtime/JSVariableObject.h: 4071 40722009-12-10 Gavin Barraclough <barraclough@apple.com> 4073 4074 Reviewed by Oliver Hunt & Mark Rowe. 4075 4076 https://bugs.webkit.org/show_bug.cgi?id=32367 4077 Add support for short Ropes (up to 3 entries) inline within JSString. 4078 (rather than externally allocating an object to hold the rope). 4079 Switch jsAdd of (JSString* + JSString*) to now make use of Ropes. 4080 4081 ~1% progression on Sunspidey. 4082 4083 * interpreter/Interpreter.cpp: 4084 (JSC::Interpreter::privateExecute): 4085 * jit/JITOpcodes.cpp: 4086 (JSC::JIT::privateCompileCTIMachineTrampolines): 4087 * jit/JITStubs.cpp: 4088 (JSC::DEFINE_STUB_FUNCTION): 4089 * runtime/JSString.cpp: 4090 (JSC::JSString::resolveRope): 4091 (JSC::JSString::toBoolean): 4092 (JSC::JSString::getStringPropertyDescriptor): 4093 * runtime/JSString.h: 4094 (JSC::JSString::Rope::Fiber::deref): 4095 (JSC::JSString::Rope::Fiber::ref): 4096 (JSC::JSString::Rope::Fiber::refAndGetLength): 4097 (JSC::JSString::Rope::append): 4098 (JSC::JSString::JSString): 4099 (JSC::JSString::~JSString): 4100 (JSC::JSString::value): 4101 (JSC::JSString::tryGetValue): 4102 (JSC::JSString::length): 4103 (JSC::JSString::canGetIndex): 4104 (JSC::JSString::appendStringInConstruct): 4105 (JSC::JSString::appendValueInConstructAndIncrementLength): 4106 (JSC::JSString::isRope): 4107 (JSC::JSString::string): 4108 (JSC::JSString::ropeLength): 4109 (JSC::JSString::getStringPropertySlot): 4110 * runtime/Operations.h: 4111 (JSC::jsString): 4112 (JSC::jsAdd): 4113 (JSC::resolveBase): 4114 41152009-12-09 Anders Carlsson <andersca@apple.com> 4116 4117 Reviewed by Geoffrey Garen. 4118 4119 Fix three more things found by compiling with clang++. 4120 4121 * runtime/Structure.h: 4122 (JSC::StructureTransitionTable::reifySingleTransition): 4123 Add the 'std' qualifier to the call to make_pair. 4124 4125 * wtf/DateMath.cpp: 4126 (WTF::initializeDates): 4127 Incrementing a bool is deprecated according to the C++ specification. 4128 4129 * wtf/PtrAndFlags.h: 4130 (WTF::PtrAndFlags::PtrAndFlags): 4131 Name lookup should not be done in dependent bases, so explicitly qualify the call to set. 4132 41332009-12-09 Maciej Stachowiak <mjs@apple.com> 4134 4135 Reviewed by Oliver Hunt. 4136 4137 Google reader gets stuck in the "Loading..." state and does not complete 4138 https://bugs.webkit.org/show_bug.cgi?id=32256 4139 <rdar://problem/7456388> 4140 4141 * jit/JITArithmetic.cpp: 4142 (JSC::JIT::emitSlow_op_jless): Fix some backward branches. 4143 41442009-12-09 Gavin Barraclough <barraclough@apple.com> 4145 4146 Reviewed by Oliver Hunt. 4147 4148 https://bugs.webkit.org/show_bug.cgi?id=32228 4149 Make destruction of ropes non-recursive to prevent stack exhaustion. 4150 Also, pass a UString& into initializeFiber rather than a Ustring::Rep*, 4151 since the Rep is not being ref counted this could result in usage of a 4152 Rep with refcount zero (where the Rep comes from a temporary UString 4153 returned from a function). 4154 4155 * runtime/JSString.cpp: 4156 (JSC::JSString::Rope::destructNonRecursive): 4157 (JSC::JSString::Rope::~Rope): 4158 * runtime/JSString.h: 4159 (JSC::JSString::Rope::initializeFiber): 4160 * runtime/Operations.h: 4161 (JSC::concatenateStrings): 4162 41632009-12-09 Zoltan Herczeg <zherczeg@inf.u-szeged.hu> 4164 4165 Reviewed by Eric Seidel. 4166 4167 https://bugs.webkit.org/show_bug.cgi?id=31930 4168 4169 Update to r51457. ASSERTs changed to COMPILE_ASSERTs. 4170 The speedup is 25%. 4171 4172 * runtime/JSGlobalData.cpp: 4173 (JSC::VPtrSet::VPtrSet): 4174 41752009-12-09 Steve Block <steveblock@google.com> 4176 4177 Reviewed by Adam Barth. 4178 4179 Updates Android Makefiles with latest additions. 4180 https://bugs.webkit.org/show_bug.cgi?id=32278 4181 4182 * Android.mk: Modified. 4183 * Android.v8.wtf.mk: Modified. 4184 41852009-12-09 Sam Weinig <sam@webkit.org> 4186 4187 Reviewed by Gavin Barraclough. 4188 4189 Fix a bug found while trying to compile JavaScriptCore with clang++. 4190 4191 * yarr/RegexPattern.h: 4192 (JSC::Yarr::PatternTerm::PatternTerm): Don't self assign here. Use false instead. 4193 41942009-12-09 Anders Carlsson <andersca@apple.com> 4195 4196 Reviewed by Sam Weinig. 4197 4198 Attempt to fix the Windows build. 4199 4200 * wtf/FastMalloc.h: 4201 42022009-12-09 Anders Carlsson <andersca@apple.com> 4203 4204 Reviewed by Sam Weinig. 4205 4206 Fix some things found while trying to compile JavaScriptCore with clang++. 4207 4208 * wtf/FastMalloc.h: 4209 Add correct exception specifications for the allocation/deallocation operators. 4210 4211 * wtf/Vector.h: 4212 * wtf/VectorTraits.h: 4213 Fix a bunch of struct/class mismatches. 4214 42152009-12-08 Maciej Stachowiak <mjs@apple.com> 4216 4217 Reviewed by Darin Adler. 4218 4219 move code generation portions of Nodes.cpp to bytecompiler directory 4220 https://bugs.webkit.org/show_bug.cgi?id=32284 4221 4222 * bytecompiler/NodesCodegen.cpp: Copied from parser/Nodes.cpp. Removed parts that 4223 are not about codegen. 4224 * parser/Nodes.cpp: Removed everything that is about codegen. 4225 4226 Update build systems: 4227 4228 * Android.mk: 4229 * GNUmakefile.am: 4230 * JavaScriptCore.gypi: 4231 * JavaScriptCore.pri: 4232 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: 4233 * JavaScriptCore.xcodeproj/project.pbxproj: 4234 * JavaScriptCoreSources.bkl: 4235 42362009-12-08 Kevin Watters <kevinwatters@gmail.com> 4237 4238 Reviewed by Kevin Ollivier. 4239 4240 [wx] Mac plugins support. 4241 4242 https://bugs.webkit.org/show_bug.cgi?id=32236 4243 4244 * wtf/Platform.h: 4245 42462009-12-08 Dmitry Titov <dimich@chromium.org> 4247 4248 Rubber-stamped by David Levin. 4249 4250 Revert and reopen "Add asserts to RefCounted to make sure ref/deref happens on the right thread." 4251 It may have caused massive increase of reported leaks on the bots. 4252 https://bugs.webkit.org/show_bug.cgi?id=31639 4253 4254 * GNUmakefile.am: 4255 * JavaScriptCore.gypi: 4256 * JavaScriptCore.vcproj/WTF/WTF.vcproj: 4257 * JavaScriptCore.xcodeproj/project.pbxproj: 4258 * runtime/Structure.cpp: 4259 (JSC::Structure::Structure): 4260 * wtf/RefCounted.h: 4261 (WTF::RefCountedBase::ref): 4262 (WTF::RefCountedBase::hasOneRef): 4263 (WTF::RefCountedBase::refCount): 4264 (WTF::RefCountedBase::derefBase): 4265 * wtf/ThreadVerifier.h: Removed. 4266 42672009-12-08 Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk> 4268 4269 Reviewed by Darin Adler. 4270 4271 Make WebKit build correctly on FreeBSD, IA64, and Alpha. 4272 Based on work by Petr Salinger <Petr.Salinger@seznam.cz>, 4273 and Colin Watson <cjwatson@ubuntu.com>. 4274 4275 * wtf/Platform.h: 4276 42772009-12-08 Dmitry Titov <dimich@chromium.org> 4278 4279 Reviewed by Darin Adler. 4280 4281 Add asserts to RefCounted to make sure ref/deref happens on the right thread. 4282 https://bugs.webkit.org/show_bug.cgi?id=31639 4283 4284 * runtime/Structure.cpp: 4285 (JSC::Structure::Structure): Disable thread verification on this class since it uses addressOfCount(). 4286 * wtf/RefCounted.h: 4287 (WTF::RefCountedBase::ref): Add ASSERT. 4288 (WTF::RefCountedBase::hasOneRef): Ditto. 4289 (WTF::RefCountedBase::refCount): Ditto. 4290 (WTF::RefCountedBase::derefBase): Ditto. 4291 (WTF::RefCountedBase::disableThreadVerification): delegate to ThreadVerifier method. 4292 * wtf/ThreadVerifier.h: Added. 4293 (WTF::ThreadVerifier::ThreadVerifier): New Debug-only class to verify that ref/deref of RefCounted is done on the same thread. 4294 (WTF::ThreadVerifier::activate): Activates checks. Called when ref count becomes above 2. 4295 (WTF::ThreadVerifier::deactivate): Deactivates checks. Called when ref count drops below 2. 4296 (WTF::ThreadVerifier::disableThreadVerification): used on objects that should not be checked (StringImpl etc) 4297 (WTF::ThreadVerifier::verifyThread): 4298 * GNUmakefile.am: Add ThreadVerifier.h to the build file. 4299 * JavaScriptCore.gypi: Ditto. 4300 * JavaScriptCore.vcproj/WTF/WTF.vcproj: Ditto. 4301 * JavaScriptCore.xcodeproj/project.pbxproj: Ditto. 4302 43032009-12-08 Steve Block <steveblock@google.com> 4304 4305 Reviewed by Adam Barth. 4306 4307 [Android] Adds Makefiles for Android port. 4308 https://bugs.webkit.org/show_bug.cgi?id=31325 4309 4310 * Android.mk: Added. 4311 * Android.v8.wtf.mk: Added. 4312 43132009-12-07 Dmitry Titov <dimich@chromium.org> 4314 4315 Rubber-stamped by Darin Adler. 4316 4317 Remove ENABLE_SHARED_SCRIPT flags 4318 https://bugs.webkit.org/show_bug.cgi?id=32245 4319 This patch was obtained by "git revert" command and then un-reverting of ChangeLog files. 4320 4321 * Configurations/FeatureDefines.xcconfig: 4322 * wtf/Platform.h: 4323 43242009-12-07 Gavin Barraclough <barraclough@apple.com> 4325 4326 Reviewed by NOBODY (Windows build fixage part I). 4327 4328 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: 4329 43302009-12-05 Gavin Barraclough <barraclough@apple.com> 4331 4332 Reviewed by Oliver Hunt. 4333 4334 https://bugs.webkit.org/show_bug.cgi?id=32184 4335 Handle out-of-memory conditions with JSC Ropes with a JS exception, rather than crashing. 4336 Switch from using fastMalloc to tryFastMalloc, pass an ExecState to record the exception on. 4337 4338 * API/JSCallbackObjectFunctions.h: 4339 (JSC::::toString): 4340 * API/JSValueRef.cpp: 4341 (JSValueIsStrictEqual): 4342 * JavaScriptCore.exp: 4343 * bytecompiler/BytecodeGenerator.cpp: 4344 (JSC::BytecodeGenerator::emitEqualityOp): 4345 * debugger/DebuggerCallFrame.cpp: 4346 (JSC::DebuggerCallFrame::functionName): 4347 (JSC::DebuggerCallFrame::calculatedFunctionName): 4348 * interpreter/Interpreter.cpp: 4349 (JSC::Interpreter::callEval): 4350 (JSC::Interpreter::privateExecute): 4351 * jit/JITStubs.cpp: 4352 (JSC::DEFINE_STUB_FUNCTION): 4353 * profiler/ProfileGenerator.cpp: 4354 (JSC::ProfileGenerator::addParentForConsoleStart): 4355 * profiler/Profiler.cpp: 4356 (JSC::Profiler::willExecute): 4357 (JSC::Profiler::didExecute): 4358 (JSC::Profiler::createCallIdentifier): 4359 (JSC::createCallIdentifierFromFunctionImp): 4360 * profiler/Profiler.h: 4361 * runtime/ArrayPrototype.cpp: 4362 (JSC::arrayProtoFuncIndexOf): 4363 (JSC::arrayProtoFuncLastIndexOf): 4364 * runtime/DateConstructor.cpp: 4365 (JSC::constructDate): 4366 * runtime/FunctionPrototype.cpp: 4367 (JSC::functionProtoFuncToString): 4368 * runtime/InternalFunction.cpp: 4369 (JSC::InternalFunction::name): 4370 (JSC::InternalFunction::displayName): 4371 (JSC::InternalFunction::calculatedDisplayName): 4372 * runtime/InternalFunction.h: 4373 * runtime/JSCell.cpp: 4374 (JSC::JSCell::getString): 4375 * runtime/JSCell.h: 4376 (JSC::JSValue::getString): 4377 * runtime/JSONObject.cpp: 4378 (JSC::gap): 4379 (JSC::Stringifier::Stringifier): 4380 (JSC::Stringifier::appendStringifiedValue): 4381 * runtime/JSObject.cpp: 4382 (JSC::JSObject::putDirectFunction): 4383 (JSC::JSObject::putDirectFunctionWithoutTransition): 4384 (JSC::JSObject::defineOwnProperty): 4385 * runtime/JSObject.h: 4386 * runtime/JSPropertyNameIterator.cpp: 4387 (JSC::JSPropertyNameIterator::get): 4388 * runtime/JSString.cpp: 4389 (JSC::JSString::Rope::~Rope): 4390 (JSC::JSString::resolveRope): 4391 (JSC::JSString::getPrimitiveNumber): 4392 (JSC::JSString::toNumber): 4393 (JSC::JSString::toString): 4394 (JSC::JSString::toThisString): 4395 (JSC::JSString::getStringPropertyDescriptor): 4396 * runtime/JSString.h: 4397 (JSC::JSString::Rope::createOrNull): 4398 (JSC::JSString::Rope::operator new): 4399 (JSC::JSString::value): 4400 (JSC::JSString::tryGetValue): 4401 (JSC::JSString::getIndex): 4402 (JSC::JSString::getStringPropertySlot): 4403 (JSC::JSValue::toString): 4404 * runtime/JSValue.h: 4405 * runtime/NativeErrorConstructor.cpp: 4406 (JSC::NativeErrorConstructor::NativeErrorConstructor): 4407 * runtime/Operations.cpp: 4408 (JSC::JSValue::strictEqualSlowCase): 4409 * runtime/Operations.h: 4410 (JSC::JSValue::equalSlowCaseInline): 4411 (JSC::JSValue::strictEqualSlowCaseInline): 4412 (JSC::JSValue::strictEqual): 4413 (JSC::jsLess): 4414 (JSC::jsLessEq): 4415 (JSC::jsAdd): 4416 (JSC::concatenateStrings): 4417 * runtime/PropertyDescriptor.cpp: 4418 (JSC::PropertyDescriptor::equalTo): 4419 * runtime/PropertyDescriptor.h: 4420 * runtime/StringPrototype.cpp: 4421 (JSC::stringProtoFuncReplace): 4422 (JSC::stringProtoFuncToLowerCase): 4423 (JSC::stringProtoFuncToUpperCase): 4424 44252009-12-07 Nikolas Zimmermann <nzimmermann@rim.com> 4426 4427 Reviewed by Holger Freyther. 4428 4429 Turn on (SVG) Filters support, by default. 4430 https://bugs.webkit.org/show_bug.cgi?id=32224 4431 4432 * Configurations/FeatureDefines.xcconfig: Enable FILTERS build flag. 4433 44342009-12-07 Steve Falkenburg <sfalken@apple.com> 4435 4436 Build fix. Be flexible about which version of ICU is used on Windows. 4437 4438 * JavaScriptCore.vcproj/jsc/jscCommon.vsprops: Add optional xcopy commands to copy ICU 4.2. 4439 44402009-12-07 Maciej Stachowiak <mjs@apple.com> 4441 4442 Reviewed by Oliver Hunt. 4443 4444 op_loop_if_less JIT codegen is broken for 64-bit 4445 https://bugs.webkit.org/show_bug.cgi?id=32221 4446 4447 * jit/JITOpcodes.cpp: 4448 (JSC::JIT::emit_op_loop_if_false): Fix codegen in this version - test was backwards. 4449 44502009-12-07 Oliver Hunt <oliver@apple.com> 4451 4452 Reviewed by Maciej Stachowiak. 4453 4454 Object.create fails if properties on the descriptor are getters 4455 https://bugs.webkit.org/show_bug.cgi?id=32219 4456 4457 Correctly initialise the PropertySlots with the descriptor object. 4458 4459 * runtime/ObjectConstructor.cpp: 4460 (JSC::toPropertyDescriptor): 4461 44622009-12-06 Maciej Stachowiak <mjs@apple.com> 4463 4464 Not reviewed, build fix. 4465 4466 Actually tested 64-bit *and* 32-bit build this time. 4467 4468 * jit/JITOpcodes.cpp: 4469 (JSC::JIT::emit_op_loop_if_false): 4470 44712009-12-06 Maciej Stachowiak <mjs@apple.com> 4472 4473 Not reviewed, build fix. 4474 4475 Really really fix 64-bit build for prior patch (actually tested this time). 4476 4477 * jit/JITOpcodes.cpp: 4478 (JSC::JIT::emit_op_loop_if_false): 4479 (JSC::JIT::emitSlow_op_loop_if_false): 4480 44812009-12-06 Maciej Stachowiak <mjs@apple.com> 4482 4483 Not reviewed, build fix. 4484 4485 Really fix 64-bit build for prior patch. 4486 4487 * jit/JITArithmetic.cpp: 4488 (JSC::JIT::emitSlow_op_jless): 4489 44902009-12-06 Maciej Stachowiak <mjs@apple.com> 4491 4492 Not reviewed, build fix. 4493 4494 Fix 64-bit build for prior patch. 4495 4496 * jit/JITOpcodes.cpp: 4497 (JSC::JIT::emitSlow_op_loop_if_less): 4498 44992009-12-05 Maciej Stachowiak <mjs@apple.com> 4500 4501 Reviewed by Oliver Hunt. 4502 4503 conway benchmark spends half it's time in op_less (jump fusion fails) 4504 https://bugs.webkit.org/show_bug.cgi?id=32190 4505 4506 <1% speedup on SunSpider and V8 4507 2x speedup on "conway" benchmark 4508 4509 Two optimizations: 4510 1) Improve codegen for logical operators &&, || and ! in a condition context 4511 4512 When generating code for combinations of &&, || and !, in a 4513 condition context (i.e. in an if statement or loop condition), we 4514 used to produce a value, and then separately jump based on its 4515 truthiness. Now we pass the false and true targets in, and let the 4516 logical operators generate jumps directly. This helps in four 4517 ways: 4518 4519 a) Individual clauses of a short-circuit logical operator can now 4520 jump directly to the then or else clause of an if statement (or to 4521 the top or exit of a loop) instead of jumping to a jump. 4522 4523 b) It used to be that jump fusion with the condition of the first 4524 clause of a logical operator was inhibited, because the register 4525 was ref'd to be used later, in the actual condition jump; this no 4526 longer happens since a jump straight to the final target is 4527 generated directly. 4528 4529 c) It used to be that jump fusion with the condition of the second 4530 clause of a logical operator was inhibited, because there was a 4531 jump target right after the second clause and before the actual 4532 condition jump. But now it's no longer necessary for the first 4533 clause to jump there so jump fusion is not blocked. 4534 4535 d) We avoid generating excess mov statements in some cases. 4536 4537 As a concrete example this source: 4538 4539 if (!((x < q && y < q) || (t < q && z < q))) { 4540 // ... 4541 } 4542 4543 Used to generate this bytecode: 4544 4545 [ 34] less r1, r-15, r-19 4546 [ 38] jfalse r1, 7(->45) 4547 [ 41] less r1, r-16, r-19 4548 [ 45] jtrue r1, 14(->59) 4549 [ 48] less r1, r-17, r-19 4550 [ 52] jfalse r1, 7(->59) 4551 [ 55] less r1, r-18, r-19 4552 [ 59] jtrue r1, 17(->76) 4553 4554 And now generates this bytecode (also taking advantage of the second optimization below): 4555 4556 [ 34] jnless r-15, r-19, 8(->42) 4557 [ 38] jless r-16, r-19, 26(->64) 4558 [ 42] jnless r-17, r-19, 8(->50) 4559 [ 46] jless r-18, r-19, 18(->64) 4560 4561 Note the jump fusion and the fact that there's less jump 4562 indirection - three of the four jumps go straight to the target 4563 clause instead of indirecting through another jump. 4564 4565 2) Implement jless opcode to take advantage of the above, since we'll now often generate 4566 a less followed by a jtrue where fusion is not forbidden. 4567 4568 * parser/Nodes.h: 4569 (JSC::ExpressionNode::hasConditionContextCodegen): Helper function to determine 4570 whether a node supports special conditional codegen. Return false as this is the default. 4571 (JSC::ExpressionNode::emitBytecodeInConditionContext): Assert not reached - only really 4572 defined for nodes that do have conditional codegen. 4573 (JSC::UnaryOpNode::expr): Add const version. 4574 (JSC::LogicalNotNode::hasConditionContextCodegen): Returne true only if subexpression 4575 supports it. 4576 (JSC::LogicalOpNode::hasConditionContextCodegen): Return true. 4577 * parser/Nodes.cpp: 4578 (JSC::LogicalNotNode::emitBytecodeInConditionContext): Implemented - just swap 4579 the true and false targets for the child node. 4580 (JSC::LogicalOpNode::emitBytecodeInConditionContext): Implemented - handle jumps 4581 directly, improving codegen quality. Also handles further nested conditional codegen. 4582 (JSC::ConditionalNode::emitBytecode): Use condition context codegen when available. 4583 (JSC::IfNode::emitBytecode): ditto 4584 (JSC::IfElseNode::emitBytecode): ditto 4585 (JSC::DoWhileNode::emitBytecode): ditto 4586 (JSC::WhileNode::emitBytecode): ditto 4587 (JSC::ForNode::emitBytecode): ditto 4588 4589 * bytecode/Opcode.h: 4590 - Added loop_if_false opcode - needed now that falsey jumps can be backwards. 4591 - Added jless opcode to take advantage of new fusion opportunities. 4592 * bytecode/CodeBlock.cpp: 4593 (JSC::CodeBlock::dump): Handle above. 4594 * bytecompiler/BytecodeGenerator.cpp: 4595 (JSC::BytecodeGenerator::emitJumpIfTrue): Add peephole for less + jtrue ==> jless. 4596 (JSC::BytecodeGenerator::emitJumpIfFalse): Add handling of backwrds falsey jumps. 4597 * bytecompiler/BytecodeGenerator.h: 4598 (JSC::BytecodeGenerator::emitNodeInConditionContext): Wrapper to handle tracking of 4599 overly deep expressions etc. 4600 * interpreter/Interpreter.cpp: 4601 (JSC::Interpreter::privateExecute): Implement the two new opcodes (loop_if_false, jless). 4602 * jit/JIT.cpp: 4603 (JSC::JIT::privateCompileMainPass): Implement JIT support for the two new opcodes. 4604 (JSC::JIT::privateCompileSlowCases): ditto 4605 * jit/JIT.h: 4606 * jit/JITArithmetic.cpp: 4607 (JSC::JIT::emit_op_jless): 4608 (JSC::JIT::emitSlow_op_jless): ditto 4609 (JSC::JIT::emitBinaryDoubleOp): ditto 4610 * jit/JITOpcodes.cpp: 4611 (JSC::JIT::emitSlow_op_loop_if_less): ditto 4612 (JSC::JIT::emit_op_loop_if_false): ditto 4613 (JSC::JIT::emitSlow_op_loop_if_false): ditto 4614 * jit/JITStubs.cpp: 4615 * jit/JITStubs.h: 4616 (JSC::): 4617 46182009-12-04 Kent Hansen <kent.hansen@nokia.com> 4619 4620 Reviewed by Darin Adler. 4621 4622 JavaScript delete operator should return false for string properties 4623 https://bugs.webkit.org/show_bug.cgi?id=32012 4624 4625 * runtime/StringObject.cpp: 4626 (JSC::StringObject::deleteProperty): 4627 46282009-12-03 Drew Wilson <atwilson@chromium.org> 4629 4630 Rolled back r51633 because it causes a perf regression in Chromium. 4631 4632 * wtf/Platform.h: 4633 46342009-12-03 Gavin Barraclough <barraclough@apple.com> 4635 4636 Try and fix the Windows build. 4637 4638 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: Export a symbol that should be exported. 4639 46402009-12-03 Mark Rowe <mrowe@apple.com> 4641 4642 Try and fix the Mac build. 4643 4644 * JavaScriptCore.exp: Export a symbol that should be exported. 4645 46462009-12-03 Oliver Hunt <oliver@apple.com> 4647 4648 Reviewed by Gavin Barraclough. 4649 4650 REGRESSION(4.0.3-48777): Crash in JSC::ExecState::propertyNames() (Debug-only?) 4651 https://bugs.webkit.org/show_bug.cgi?id=32133 4652 4653 Work around odd GCC-ism and correct the scopechain for use by 4654 calls made while a cachedcall is active on the callstack. 4655 4656 * interpreter/CachedCall.h: 4657 (JSC::CachedCall::newCallFrame): 4658 * runtime/JSArray.cpp: 4659 (JSC::AVLTreeAbstractorForArrayCompare::compare_key_key): 4660 * runtime/StringPrototype.cpp: 4661 (JSC::stringProtoFuncReplace): 4662 46632009-12-03 Gavin Barraclough <barraclough@apple.com> 4664 4665 Reviewed by Oliver "Brraaaaiiiinnnnnzzzzzzzz" Hunt. 4666 4667 https://bugs.webkit.org/show_bug.cgi?id=32136 4668 Add a rope representation to JSString. Presently JSString always holds its data in UString form. 4669 Instead, allow the result of a string concatenation to be represented in a tree form - with a 4670 variable sized, reference-counted rope node retaining a set of UString::Reps (or other rope nopes). 4671 4672 Strings must still currently be resolved down to a flat UString representation before being used, 4673 but by holding the string in a rope representation during construction we can avoid copying data 4674 until we know the final size of the string. 4675 4676 ~2% progression on SunSpider (~25% on date-format-xparb, ~20% on string-validate-input). 4677 4678 * JavaScriptCore.exp: 4679 4680 - Update exports. 4681 4682 * interpreter/Interpreter.cpp: 4683 (JSC::Interpreter::privateExecute): 4684 4685 - Make use of new JSString::length() method to avoid prematurely resolving ropes. 4686 4687 * jit/JITOpcodes.cpp: 4688 (JSC::JIT::privateCompileCTIMachineTrampolines): 4689 4690 - Switch the string length trampoline to read the length directly from JSString::m_length, 4691 rather than from the JSString's UString::Rep's 'len' property. 4692 4693 * jit/JITStubs.cpp: 4694 (JSC::DEFINE_STUB_FUNCTION): 4695 4696 - Modify op_add such that addition of two strings, where either or both strings are already 4697 in rope representation, produces a rope as a result. 4698 4699 * runtime/JSString.cpp: 4700 (JSC::JSString::Rope::~Rope): 4701 (JSC::copyChars): 4702 (JSC::JSString::resolveRope): 4703 (JSC::JSString::getPrimitiveNumber): 4704 (JSC::JSString::toBoolean): 4705 (JSC::JSString::toNumber): 4706 (JSC::JSString::toString): 4707 (JSC::JSString::toThisString): 4708 (JSC::JSString::getStringPropertyDescriptor): 4709 * runtime/JSString.h: 4710 (JSC::JSString::Rope::Fiber::Fiber): 4711 (JSC::JSString::Rope::Fiber::destroy): 4712 (JSC::JSString::Rope::Fiber::isRope): 4713 (JSC::JSString::Rope::Fiber::rope): 4714 (JSC::JSString::Rope::Fiber::string): 4715 (JSC::JSString::Rope::create): 4716 (JSC::JSString::Rope::initializeFiber): 4717 (JSC::JSString::Rope::ropeLength): 4718 (JSC::JSString::Rope::stringLength): 4719 (JSC::JSString::Rope::fibers): 4720 (JSC::JSString::Rope::Rope): 4721 (JSC::JSString::Rope::operator new): 4722 (JSC::JSString::JSString): 4723 (JSC::JSString::value): 4724 (JSC::JSString::length): 4725 (JSC::JSString::isRope): 4726 (JSC::JSString::rope): 4727 (JSC::JSString::string): 4728 (JSC::JSString::canGetIndex): 4729 (JSC::jsSingleCharacterSubstring): 4730 (JSC::JSString::getIndex): 4731 (JSC::jsSubstring): 4732 (JSC::JSString::getStringPropertySlot): 4733 4734 - Add rope form. 4735 4736 * runtime/Operations.h: 4737 (JSC::jsAdd): 4738 (JSC::concatenateStrings): 4739 4740 - Update string concatenation, and addition of ropes, to produce ropes. 4741 4742 * runtime/StringObject.cpp: 4743 (JSC::StringObject::getOwnPropertyNames): 4744 4745 - Make use of new JSString::length() method to avoid prematurely resolving ropes. 4746 47472009-11-23 Jeremy Moskovich <jeremy@chromium.org> 4748 4749 Reviewed by Eric Seidel. 4750 4751 Switch Chrome/Mac to use Core Text APIs rather than ATSUI APIs. 4752 https://bugs.webkit.org/show_bug.cgi?id=31802 4753 4754 No test since this is already covered by existing pixel tests. 4755 4756 * wtf/Platform.h: #define USE_CORE_TEXT for Chrome/Mac. 4757 47582009-12-02 Oliver Hunt <oliver@apple.com> 4759 4760 Reviewed by Gavin Barraclough. 4761 4762 Add files missed in prior patch. 4763 4764 * runtime/JSZombie.cpp: 4765 (JSC::): 4766 (JSC::JSZombie::leakedZombieStructure): 4767 * runtime/JSZombie.h: Added. 4768 (JSC::JSZombie::JSZombie): 4769 (JSC::JSZombie::isZombie): 4770 (JSC::JSZombie::classInfo): 4771 (JSC::JSZombie::isGetterSetter): 4772 (JSC::JSZombie::isAPIValueWrapper): 4773 (JSC::JSZombie::isPropertyNameIterator): 4774 (JSC::JSZombie::getCallData): 4775 (JSC::JSZombie::getConstructData): 4776 (JSC::JSZombie::getUInt32): 4777 (JSC::JSZombie::toPrimitive): 4778 (JSC::JSZombie::getPrimitiveNumber): 4779 (JSC::JSZombie::toBoolean): 4780 (JSC::JSZombie::toNumber): 4781 (JSC::JSZombie::toString): 4782 (JSC::JSZombie::toObject): 4783 (JSC::JSZombie::markChildren): 4784 (JSC::JSZombie::put): 4785 (JSC::JSZombie::deleteProperty): 4786 (JSC::JSZombie::toThisObject): 4787 (JSC::JSZombie::toThisString): 4788 (JSC::JSZombie::toThisJSString): 4789 (JSC::JSZombie::getJSNumber): 4790 (JSC::JSZombie::getOwnPropertySlot): 4791 47922009-12-02 Oliver Hunt <oliver@apple.com> 4793 4794 Reviewed by Gavin Barraclough. 4795 4796 Add zombies to JSC 4797 https://bugs.webkit.org/show_bug.cgi?id=32103 4798 4799 Add a compile time flag to make the JSC collector replace "unreachable" 4800 objects with zombie objects. The zombie object is a JSCell subclass that 4801 ASSERTs on any attempt to use the JSCell methods. In addition there are 4802 a number of additional assertions in bottleneck code to catch zombie usage 4803 as quickly as possible. 4804 4805 Grrr. Argh. Brains. 4806 4807 * JavaScriptCore.xcodeproj/project.pbxproj: 4808 * interpreter/Register.h: 4809 (JSC::Register::Register): 4810 * runtime/ArgList.h: 4811 (JSC::MarkedArgumentBuffer::append): 4812 (JSC::ArgList::ArgList): 4813 * runtime/Collector.cpp: 4814 (JSC::Heap::destroy): 4815 (JSC::Heap::sweep): 4816 * runtime/Collector.h: 4817 * runtime/JSCell.h: 4818 (JSC::JSCell::isZombie): 4819 (JSC::JSValue::isZombie): 4820 * runtime/JSValue.h: 4821 (JSC::JSValue::decode): 4822 (JSC::JSValue::JSValue): 4823 * wtf/Platform.h: 4824 48252009-12-01 Jens Alfke <snej@chromium.org> 4826 4827 Reviewed by Darin Adler. 4828 4829 Added variants of find/contains/add that allow a foreign key type to be used. 4830 This will allow AtomicString-keyed maps to be queried by C string without 4831 having to create a temporary AtomicString (see HTTPHeaderMap.) 4832 The code for this is adapted from the equivalent in HashSet.h. 4833 4834 * wtf/HashMap.h: 4835 (WTF::HashMap::find): 4836 (WTF::HashMap::contains): 4837 (WTF::HashMap::add): 4838 * wtf/HashSet.h: Changed "method" to "function member" in a comment. 4839 48402009-12-01 Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk> 4841 4842 Revert 51551 because it broke GTK+. 4843 4844 * wtf/Platform.h: 4845 48462009-11-30 Gavin Barraclough <barraclough@apple.com> 4847 4848 Windows Build fix. Reviewed by NOBODY. 4849 4850 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: 4851 48522009-11-24 Gavin Barraclough <barraclough@apple.com> 4853 4854 Reviewed by Geoff Garen. 4855 4856 Bug 31859 - Make world selection for JSC IsolatedWorlds automagical. 4857 4858 WebCore presently has to explicitly specify the world before entering into JSC, 4859 which is a little fragile (particularly since property access via a 4860 getter/setter might invoke execution). Instead derive the current world from 4861 the lexical global object. 4862 4863 Remove the temporary duct tape of willExecute/didExecute virtual hooks on the JSGlobalData::ClientData - these are no longer necessary. 4864 4865 * API/JSBase.cpp: 4866 (JSEvaluateScript): 4867 * API/JSObjectRef.cpp: 4868 (JSObjectCallAsFunction): 4869 * JavaScriptCore.exp: 4870 * runtime/JSGlobalData.cpp: 4871 * runtime/JSGlobalData.h: 4872 48732009-11-30 Laszlo Gombos <laszlo.1.gombos@nokia.com> 4874 4875 Reviewed by Kenneth Rohde Christiansen. 4876 4877 [Qt] Remove obsolete PLATFORM(KDE) code 4878 https://bugs.webkit.org/show_bug.cgi?id=31958 4879 4880 KDE is now using unpatched QtWebKit. 4881 4882 * parser/Lexer.cpp: Remove obsolete KDE_USE_FINAL guard 4883 * wtf/Platform.h: Remove PLATFORM(KDE) definition and code 4884 section that is guarded with it. 4885 48862009-11-30 Jan-Arve Sæther <jan-arve.saether@nokia.com> 4887 4888 Reviewed by Simon Hausmann. 4889 4890 [Qt] Fix compilation with win32-icc 4891 4892 The Intel compiler does not support the __has_trivial_constructor type 4893 trait. The Intel Compiler can report itself as _MSC_VER >= 1400. The 4894 reason for that is that the Intel Compiler depends on the Microsoft 4895 Platform SDK, and in order to try to be "fully" MS compatible it will 4896 "pretend" to be the same MS compiler as was shipped with the MS PSDK. 4897 (Thus, compiling with win32-icc with VC8 SDK will make the source code 4898 "think" the compiler at hand supports this type trait). 4899 4900 * wtf/TypeTraits.h: 4901 49022009-11-29 Laszlo Gombos <laszlo.1.gombos@nokia.com> 4903 4904 Reviewed by Eric Seidel. 4905 4906 [Qt] Mac build has JIT disabled 4907 https://bugs.webkit.org/show_bug.cgi?id=31828 4908 4909 * wtf/Platform.h: Enable JIT for Qt Mac builds 4910 49112009-11-28 Laszlo Gombos <laszlo.1.gombos@nokia.com> 4912 4913 Reviewed by Eric Seidel. 4914 4915 Apply workaround for the limitation of VirtualFree with MEM_RELEASE to all ports running on Windows 4916 https://bugs.webkit.org/show_bug.cgi?id=31943 4917 4918 * runtime/MarkStack.h: 4919 (JSC::MarkStack::MarkStackArray::shrinkAllocation): 4920 49212009-11-28 Zoltan Herczeg <zherczeg@inf.u-szeged.hu> 4922 4923 Reviewed by Gavin Barraclough. 4924 4925 https://bugs.webkit.org/show_bug.cgi?id=31930 4926 4927 Seems a typo. We don't need ~270k memory to determine the vptrs. 4928 4929 * runtime/JSGlobalData.cpp: 4930 (JSC::VPtrSet::VPtrSet): 4931 49322009-11-27 Shinichiro Hamaji <hamaji@chromium.org> 4933 4934 Unreviewed. 4935 4936 Move GOwnPtr* from wtf to wtf/gtk 4937 https://bugs.webkit.org/show_bug.cgi?id=31793 4938 4939 Build fix for chromium after r51423. 4940 Exclude gtk directory from chromium build. 4941 4942 * JavaScriptCore.gyp/JavaScriptCore.gyp: 4943 49442009-11-25 Oliver Hunt <oliver@apple.com> 4945 4946 Reviewed by Gavin Barraclough. 4947 4948 Incorrect behaviour of jneq_null in the interpreter 4949 https://bugs.webkit.org/show_bug.cgi?id=31901 4950 4951 Correct the logic of jneq_null. This is already covered by existing tests. 4952 4953 * interpreter/Interpreter.cpp: 4954 (JSC::Interpreter::privateExecute): 4955 49562009-11-26 Laszlo Gombos <laszlo.1.gombos@nokia.com> 4957 4958 Reviewed by Oliver Hunt. 4959 4960 Move GOwnPtr* from wtf to wtf/gtk 4961 https://bugs.webkit.org/show_bug.cgi?id=31793 4962 4963 * GNUmakefile.am: Change the path for GOwnPtr.*. 4964 * JavaScriptCore.gyp/JavaScriptCore.gyp: Remove 4965 GOwnPtr.cpp from the exclude list. 4966 * JavaScriptCore.gypi: Change the path for GOwnPtr.*. 4967 * wscript: Remove GOwnPtr.cpp from the exclude list. 4968 * wtf/GOwnPtr.cpp: Removed. 4969 * wtf/GOwnPtr.h: Removed. 4970 * wtf/Threading.h: Change the path for GOwnPtr.h. 4971 * wtf/gtk/GOwnPtr.cpp: Copied from JavaScriptCore/wtf/GOwnPtr.cpp. 4972 * wtf/gtk/GOwnPtr.h: Copied from JavaScriptCore/wtf/GOwnPtr.h. 4973 * wtf/unicode/glib/UnicodeGLib.h: Change the path for GOwnPtr.h. 4974 49752009-11-24 Dmitry Titov <dimich@chromium.org> 4976 4977 Reviewed by Eric Seidel. 4978 4979 Add ENABLE_SHARED_SCRIPT feature define and flag for build-webkit 4980 https://bugs.webkit.org/show_bug.cgi?id=31444 4981 4982 * Configurations/FeatureDefines.xcconfig: 4983 * wtf/Platform.h: 4984 49852009-11-24 Chris Marrin <cmarrin@apple.com> 4986 4987 Reviewed by Simon Fraser. 4988 4989 Add ability to enable ACCELERATED_COMPOSITING on Windows (currently disabled) 4990 https://bugs.webkit.org/show_bug.cgi?id=27314 4991 4992 * wtf/Platform.h: 4993 49942009-11-24 Jason Smith <dark.panda@gmail.com> 4995 4996 Reviewed by Alexey Proskuryakov. 4997 4998 RegExp#exec's returned Array-like object behaves differently from 4999 regular Arrays 5000 https://bugs.webkit.org/show_bug.cgi?id=31689 5001 5002 * JavaScriptCore/runtime/RegExpConstructor.cpp: ensure that undefined 5003 values are added to the returned RegExpMatchesArray 5004 50052009-11-24 Oliver Hunt <oliver@apple.com> 5006 5007 Reviewed by Alexey Proskuryakov. 5008 5009 JSON.stringify performance on undefined is very poor 5010 https://bugs.webkit.org/show_bug.cgi?id=31839 5011 5012 Switch from a UString to a Vector<UChar> when building 5013 the JSON string, allowing us to safely remove the substr-copy 5014 we otherwise did when unwinding an undefined property. 5015 5016 Also turns out to be a ~5% speedup on stringification. 5017 5018 * runtime/JSONObject.cpp: 5019 (JSC::Stringifier::StringBuilder::append): 5020 (JSC::Stringifier::stringify): 5021 (JSC::Stringifier::Holder::appendNextProperty): 5022 50232009-11-24 Mark Rowe <mrowe@apple.com> 5024 5025 Fix production builds where the source tree may be read-only. 5026 5027 * JavaScriptCore.xcodeproj/project.pbxproj: 5028 50292009-11-23 Laszlo Gombos <laszlo.1.gombos@nokia.com> 5030 5031 Reviewed by Kenneth Rohde Christiansen. 5032 5033 Include "config.h" to meet Coding Style Guidelines 5034 https://bugs.webkit.org/show_bug.cgi?id=31792 5035 5036 * wtf/unicode/UTF8.cpp: 5037 * wtf/unicode/glib/UnicodeGLib.cpp: 5038 * wtf/unicode/wince/UnicodeWince.cpp: 5039 50402009-11-23 Geoffrey Garen <ggaren@apple.com> 5041 5042 Reviewed by Oliver Hunt. 5043 5044 Streamlined some Math functions where we expect or know the result not 5045 to be representable as an int. 5046 5047 SunSpider says 0.6% faster. 5048 5049 * runtime/JSNumberCell.h: 5050 (JSC::JSValue::JSValue): 5051 * runtime/JSValue.h: 5052 (JSC::JSValue::): 5053 (JSC::jsDoubleNumber): 5054 (JSC::JSValue::JSValue): Added a function for making a numeric JSValue 5055 and skipping the "can I encode this as an int?" check, avoiding the 5056 overhead of int <-> double roundtripping and double <-> double comparison 5057 and branching. 5058 5059 * runtime/MathObject.cpp: 5060 (JSC::mathProtoFuncACos): 5061 (JSC::mathProtoFuncASin): 5062 (JSC::mathProtoFuncATan): 5063 (JSC::mathProtoFuncATan2): 5064 (JSC::mathProtoFuncCos): 5065 (JSC::mathProtoFuncExp): 5066 (JSC::mathProtoFuncLog): 5067 (JSC::mathProtoFuncRandom): 5068 (JSC::mathProtoFuncSin): 5069 (JSC::mathProtoFuncSqrt): 5070 (JSC::mathProtoFuncTan): For these functions, which we expect or know 5071 to produce results not representable as ints, call jsDoubleNumber instead 5072 of jsNumber. 5073 50742009-11-23 Mark Rowe <mrowe@apple.com> 5075 5076 Unreviewed. Unbreak the regression tests after r51329. 5077 5078 * API/JSBase.cpp: 5079 (JSEvaluateScript): Null-check clientData before dereferencing it. 5080 * API/JSObjectRef.cpp: 5081 (JSObjectCallAsFunction): Ditto. 5082 50832009-11-23 Gavin Barraclough <barraclough@apple.com> 5084 5085 Reviewed by Geoff Garen. 5086 5087 Part 1/3 of <rdar://problem/7377477> REGRESSION: Many web pages fail to render after interesting script runs in isolated world 5088 5089 Some clients of the JavaScriptCore API expect to be able to make callbacks over the JSC API, 5090 and for this to automagically cause execution to take place in the world associated with the 5091 global object associated with the ExecState (JSContextRef) passed. However this is not how 5092 things work - the world must be explicitly set within WebCore. 5093 5094 Making this work just for API calls to evaluate & call will be a far from perfect solution, 5095 since direct (non-API) use of JSC still relies on WebCore setting the current world correctly. 5096 A better solution would be to make this all work automagically all throughout WebCore, but this 5097 will require more refactoring. 5098 5099 Since the API is in JSC but worlds only exist in WebCore, add callbacks on the JSGlobalData::ClientData 5100 to allow it to update the current world on entry/exit via the JSC API. This is temporary duck 5101 tape, and should be removed once the current world no longer needs to be explicitly tracked. 5102 5103 * API/JSBase.cpp: 5104 (JSEvaluateScript): 5105 * API/JSObjectRef.cpp: 5106 (JSObjectCallAsFunction): 5107 * JavaScriptCore.exp: 5108 * runtime/JSGlobalData.cpp: 5109 (JSC::JSGlobalData::ClientData::beginningExecution): 5110 (JSC::JSGlobalData::ClientData::completedExecution): 5111 * runtime/JSGlobalData.h: 5112 51132009-11-23 Steve Block <steveblock@google.com> 5114 5115 Reviewed by Dmitry Titov. 5116 5117 Adds MainThreadAndroid.cpp with Android-specific WTF threading functions. 5118 https://bugs.webkit.org/show_bug.cgi?id=31807 5119 5120 * wtf/android: Added. 5121 * wtf/android/MainThreadAndroid.cpp: Added. 5122 (WTF::timeoutFired): 5123 (WTF::initializeMainThreadPlatform): 5124 (WTF::scheduleDispatchFunctionsOnMainThread): 5125 51262009-11-23 Alexey Proskuryakov <ap@apple.com> 5127 5128 Reviewed by Brady Eidson. 5129 5130 https://bugs.webkit.org/show_bug.cgi?id=31748 5131 Make WebSocketHandleCFNet respect proxy auto-configuration files via CFProxySupport 5132 5133 * JavaScriptCore.exp: Export callOnMainThreadAndWait. 5134 51352009-11-23 Laszlo Gombos <laszlo.1.gombos@nokia.com> 5136 5137 Reviewed by Kenneth Rohde Christiansen. 5138 5139 [Symbian] Fix lastIndexOf() for Symbian 5140 https://bugs.webkit.org/show_bug.cgi?id=31773 5141 5142 Symbian soft floating point library has problems with operators 5143 comparing NaN to numbers. Without a workaround lastIndexOf() 5144 function does not work. 5145 5146 Patch developed by David Leong. 5147 5148 * runtime/StringPrototype.cpp: 5149 (JSC::stringProtoFuncLastIndexOf):Add an extra test 5150 to check for NaN for Symbian. 5151 51522009-11-23 Steve Block <steveblock@google.com> 5153 5154 Reviewed by Eric Seidel. 5155 5156 Android port lacks implementation of atomicIncrement and atomicDecrement. 5157 https://bugs.webkit.org/show_bug.cgi?id=31715 5158 5159 * wtf/Threading.h: Modified. 5160 (WTF::atomicIncrement): Added Android implementation. 5161 (WTF::atomicDecrement): Added Android implementation. 5162 51632009-11-22 Laszlo Gombos <laszlo.1.gombos@nokia.com> 5164 5165 Unreviewed. 5166 5167 [Qt] Sort source lists and remove obsolete comments 5168 from the build system. 5169 5170 * JavaScriptCore.pri: 5171 51722009-11-21 Laszlo Gombos <laszlo.1.gombos@nokia.com> 5173 5174 Reviewed by Eric Seidel. 5175 5176 [Qt][Mac] Turn on multiple JavaScript threads for QtWebkit on Mac 5177 https://bugs.webkit.org/show_bug.cgi?id=31753 5178 5179 * wtf/Platform.h: 5180 51812009-11-19 Steve Block <steveblock@google.com> 5182 5183 Android port lacks configuration in Platform.h and config.h. 5184 https://bugs.webkit.org/show_bug.cgi?id=31671 5185 5186 * wtf/Platform.h: Modified. Added Android-specific configuration. 5187 51882009-11-19 Alexey Proskuryakov <ap@apple.com> 5189 5190 Reviewed by Darin Adler. 5191 5192 https://bugs.webkit.org/show_bug.cgi?id=31690 5193 Make SocketStreamHandleCFNet work on Windows 5194 5195 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: 5196 * wtf/MainThread.cpp: 5197 (WTF::FunctionWithContext::FunctionWithContext): 5198 (WTF::dispatchFunctionsFromMainThread): 5199 (WTF::callOnMainThreadAndWait): 5200 * wtf/MainThread.h: 5201 Re-add callOnMainThreadAndWait(), which was removed in bug 23926. 5202 52032009-11-19 Dmitry Titov <dimich@chromium.org> 5204 5205 Reviewed by David Levin. 5206 5207 isMainThread() on Chromium (Mac and Linux) is so slow it timeouts LayoutTests.. 5208 https://bugs.webkit.org/show_bug.cgi?id=31693 5209 5210 * wtf/ThreadingPthreads.cpp: 5211 (WTF::initializeThreading): grab and use the pthread_t of the main thread instead of ThreadIdentifier. 5212 (WTF::isMainThread): Ditto. 5213 52142009-11-19 Laszlo Gombos <laszlo.1.gombos@nokia.com> 5215 5216 Reviewed by Darin Adler. 5217 5218 Remove HAVE(STRING_H) guard from JavaScriptCore 5219 https://bugs.webkit.org/show_bug.cgi?id=31668 5220 5221 * config.h: 5222 * runtime/UString.cpp: 5223 52242009-11-19 Dumitru Daniliuc <dumi@chromium.org> 5225 5226 Reviewed by Dmitry Titov. 5227 5228 Fixing a bug in MessageQueue::removeIf() that leads to an 5229 assertion failure. 5230 5231 https://bugs.webkit.org/show_bug.cgi?id=31657 5232 5233 * wtf/MessageQueue.h: 5234 (WTF::MessageQueue::removeIf): 5235 52362009-11-19 Laszlo Gombos <laszlo.1.gombos@nokia.com> 5237 5238 Reviewed by Darin Adler. 5239 5240 Remove HAVE(FLOAT_H) guard 5241 https://bugs.webkit.org/show_bug.cgi?id=31661 5242 5243 JavaScriptCore has a dependency on float.h, there is 5244 no need to guard float.h. 5245 5246 * runtime/DatePrototype.cpp: Remove include directive 5247 for float.h as it is included in MathExtras.h already. 5248 * runtime/Operations.cpp: Ditto. 5249 * runtime/UString.cpp: Ditto. 5250 * wtf/dtoa.cpp: Ditto. 5251 * wtf/MathExtras.h: Remove HAVE(FLOAT_H) guard. 5252 * wtf/Platform.h: Ditto. 5253 52542009-11-19 Thiago Macieira <thiago.macieira@nokia.com> 5255 5256 Reviewed by Simon Hausmann. 5257 5258 Build fix for 32-bit Sparc machines: these machines are big-endian. 5259 5260 * wtf/Platform.h: 5261 52622009-11-18 Laszlo Gombos <laszlo.1.gombos@nokia.com> 5263 5264 Reviewed by Kenneth Rohde Christiansen. 5265 5266 [Qt] Remove support for Qt v4.3 or older versions 5267 https://bugs.webkit.org/show_bug.cgi?id=29469 5268 5269 * JavaScriptCore.pro: 5270 * jsc.pro: 5271 * wtf/unicode/qt4/UnicodeQt4.h: 5272 52732009-11-18 Kent Tamura <tkent@chromium.org> 5274 5275 Reviewed by Darin Adler. 5276 5277 Move UString::from(double) implementation to new 5278 WTF::doubleToStringInJavaScriptFormat(), and expose it because WebCore 5279 code will use it. 5280 https://bugs.webkit.org/show_bug.cgi?id=31330 5281 5282 - Introduce new function createRep(const char*, unsigned) and 5283 UString::UString(const char*, unsigned) to reduce 2 calls to strlen(). 5284 - Fix a bug that dtoa() doesn't update *rve if the input value is NaN 5285 or Infinity. 5286 5287 No new tests because this doesn't change the behavior. 5288 5289 * JavaScriptCore.exp: 5290 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: 5291 * runtime/UString.cpp: 5292 (JSC::createRep): 5293 (JSC::UString::UString): 5294 (JSC::UString::from): Move the code to doubleToStringInJavaScriptFormat(). 5295 * runtime/UString.h: 5296 * wtf/dtoa.cpp: 5297 (WTF::dtoa): Fix a bug about rve. 5298 (WTF::append): A helper for doubleToStringInJavaScriptFormat(). 5299 (WTF::doubleToStringInJavaScriptFormat): Move the code from UString::from(double). 5300 * wtf/dtoa.h: 5301 53022009-11-18 Laszlo Gombos <laszlo.1.gombos@nokia.com> 5303 5304 Reviewed by Kenneth Rohde Christiansen. 5305 5306 [Qt] Remove WTF_USE_JAVASCRIPTCORE_BINDINGS as it is no longer used 5307 https://bugs.webkit.org/show_bug.cgi?id=31643 5308 5309 * JavaScriptCore.pro: 5310 53112009-11-18 Nate Chapin <japhet@chromium.org> 5312 5313 Reviewed by Darin Fisher. 5314 5315 Remove Chromium's unnecessary dependency on wtf's tcmalloc files. 5316 5317 https://bugs.webkit.org/show_bug.cgi?id=31648 5318 5319 * JavaScriptCore.gyp/JavaScriptCore.gyp: 5320 53212009-11-18 Thiago Macieira <thiago.macieira@nokia.com> 5322 5323 Reviewed by Gavin Barraclough. 5324 5325 [Qt] Implement symbol hiding for JSC's JIT functions. 5326 5327 These functions are implemented directly in assembly, so they need the 5328 proper directives to enable/disable visibility. On ELF systems, it's 5329 .hidden, whereas on Mach-O systems (Mac) it's .private_extern. On 5330 Windows, it's not necessary since you have to explicitly export. I 5331 also implemented the AIX idiom, though it's unlikely anyone will 5332 implement AIX/POWER JIT. 5333 https://bugs.webkit.org/show_bug.cgi?id=30864 5334 5335 * jit/JITStubs.cpp: 5336 53372009-11-18 Oliver Hunt <oliver@apple.com> 5338 5339 Reviewed by Alexey Proskuryakov. 5340 5341 Interpreter may do an out of range access when throwing an exception in the profiler. 5342 https://bugs.webkit.org/show_bug.cgi?id=31635 5343 5344 Add bounds check. 5345 5346 * interpreter/Interpreter.cpp: 5347 (JSC::Interpreter::throwException): 5348 53492009-11-18 Gabor Loki <loki@inf.u-szeged.hu> 5350 5351 Reviewed by Darin Adler. 5352 5353 Fix the clobber list of cacheFlush for ARM and Thumb2 on Linux 5354 https://bugs.webkit.org/show_bug.cgi?id=31631 5355 5356 * jit/ExecutableAllocator.h: 5357 (JSC::ExecutableAllocator::cacheFlush): 5358 53592009-11-18 Harald Fernengel <harald.fernengel@nokia.com> 5360 5361 Reviewed by Simon Hausmann. 5362 5363 [Qt] Fix detection of linux-g++ 5364 5365 Never use "linux-g++*" to check for linux-g++, since this will break embedded 5366 builds which use linux-arm-g++ and friends. Use 'linux*-g++*' to check for any 5367 g++ on linux mkspec. 5368 5369 * JavaScriptCore.pri: 5370 53712009-11-17 Jon Honeycutt <jhoneycutt@apple.com> 5372 5373 Add JSContextRefPrivate.h to list of copied files. 5374 5375 Reviewed by Mark Rowe. 5376 5377 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreGenerated.make: 5378 53792009-11-17 Martin Robinson <martin.james.robinson@gmail.com> 5380 5381 Reviewed by Adam Barth. 5382 5383 [GTK] Style cleanup for GOwnPtr 5384 https://bugs.webkit.org/show_bug.cgi?id=31506 5385 5386 Remove forward declaration in GOwnPtr and do some style cleanup. 5387 5388 * wtf/GOwnPtr.cpp: 5389 * wtf/GOwnPtr.h: 5390 (WTF::GOwnPtr::GOwnPtr): 5391 (WTF::GOwnPtr::~GOwnPtr): 5392 (WTF::GOwnPtr::get): 5393 (WTF::GOwnPtr::release): 5394 (WTF::GOwnPtr::outPtr): 5395 (WTF::GOwnPtr::set): 5396 (WTF::GOwnPtr::clear): 5397 (WTF::GOwnPtr::operator*): 5398 (WTF::GOwnPtr::operator->): 5399 (WTF::GOwnPtr::operator!): 5400 (WTF::GOwnPtr::operator UnspecifiedBoolType): 5401 (WTF::GOwnPtr::swap): 5402 (WTF::swap): 5403 (WTF::operator==): 5404 (WTF::operator!=): 5405 (WTF::getPtr): 5406 (WTF::freeOwnedGPtr): 5407 54082009-11-17 Oliver Hunt <oliver@apple.com> 5409 5410 Reviewed by Maciej Stachowiak. 5411 5412 Incorrect use of JavaScriptCore API in DumpRenderTree 5413 https://bugs.webkit.org/show_bug.cgi?id=31577 5414 5415 Add assertions to the 'toJS' functions to catch mistakes like 5416 this early. Restructure existing code which blindly passed potentially 5417 null values to toJS when forwarding exceptions so that a null check is 5418 performed first. 5419 5420 * API/APICast.h: 5421 (toJS): 5422 (toJSForGC): 5423 * API/JSCallbackObjectFunctions.h: 5424 (JSC::::getOwnPropertySlot): 5425 (JSC::::put): 5426 (JSC::::deleteProperty): 5427 (JSC::::construct): 5428 (JSC::::hasInstance): 5429 (JSC::::call): 5430 (JSC::::toNumber): 5431 (JSC::::toString): 5432 (JSC::::staticValueGetter): 5433 (JSC::::callbackGetter): 5434 * API/tests/testapi.c: Fix errors in the API tester. 5435 (MyObject_getProperty): 5436 (MyObject_convertToType): 5437 (EvilExceptionObject_convertToType): 5438 54392009-11-16 Zoltan Herczeg <zherczeg@inf.u-szeged.hu> 5440 5441 Reviewed by Gavin Barraclough. 5442 5443 https://bugs.webkit.org/show_bug.cgi?id=31050 5444 5445 Minor fixes for JSVALUE32_64: branchConvertDoubleToInt32 5446 failed on a CortexA8 CPU, but not on a simulator; and 5447 JITCall.cpp modifications was somehow not committed to mainline. 5448 5449 * assembler/ARMAssembler.h: 5450 (JSC::ARMAssembler::fmrs_r): 5451 * assembler/MacroAssemblerARM.h: 5452 (JSC::MacroAssemblerARM::branchConvertDoubleToInt32): 5453 * jit/JITCall.cpp: 5454 (JSC::JIT::compileOpCall): 5455 54562009-11-16 Joerg Bornemann <joerg.bornemann@trolltech.com> 5457 5458 Reviewed by Simon Hausmann. 5459 5460 Fix Qt build on Windows CE 6. 5461 5462 * JavaScriptCore.pri: Add missing include path. 5463 * wtf/Platform.h: Include ce_time.h for Windows CE 6. 5464 54652009-11-13 Zoltan Herczeg <zherczeg@inf.u-szeged.hu> 5466 5467 Reviewed by Gavin Barraclough. 5468 5469 https://bugs.webkit.org/show_bug.cgi?id=31050 5470 5471 Adding optimization support for mode JSVALUE32_64 5472 on ARM systems. 5473 5474 * jit/JIT.h: 5475 * jit/JITCall.cpp: 5476 (JSC::JIT::compileOpCall): 5477 * jit/JITPropertyAccess.cpp: 5478 (JSC::JIT::emit_op_method_check): 5479 (JSC::JIT::compileGetByIdHotPath): 5480 (JSC::JIT::compileGetByIdSlowCase): 5481 (JSC::JIT::emit_op_put_by_id): 5482 54832009-11-14 Zoltan Herczeg <zherczeg@inf.u-szeged.hu> 5484 5485 Reviewed by Gavin Barraclough. 5486 5487 https://bugs.webkit.org/show_bug.cgi?id=31050 5488 5489 Adding JSVALUE32_64 support for ARM (but not turning it 5490 on by default). All optimizations must be disabled, since 5491 this patch is only the first of a series of patches. 5492 5493 During the work, a lot of x86 specific code revealed and 5494 made platform independent. 5495 See revisions: 50531 50541 50593 50594 50595 5496 5497 * assembler/ARMAssembler.h: 5498 (JSC::ARMAssembler::): 5499 (JSC::ARMAssembler::fdivd_r): 5500 * assembler/MacroAssemblerARM.h: 5501 (JSC::MacroAssemblerARM::lshift32): 5502 (JSC::MacroAssemblerARM::neg32): 5503 (JSC::MacroAssemblerARM::rshift32): 5504 (JSC::MacroAssemblerARM::branchOr32): 5505 (JSC::MacroAssemblerARM::set8): 5506 (JSC::MacroAssemblerARM::setTest8): 5507 (JSC::MacroAssemblerARM::loadDouble): 5508 (JSC::MacroAssemblerARM::divDouble): 5509 (JSC::MacroAssemblerARM::convertInt32ToDouble): 5510 (JSC::MacroAssemblerARM::zeroDouble): 5511 * jit/JIT.cpp: 5512 * jit/JIT.h: 5513 * jit/JITOpcodes.cpp: 5514 (JSC::JIT::privateCompileCTIMachineTrampolines): 5515 * jit/JITStubs.cpp: 5516 * wtf/StdLibExtras.h: 5517 55182009-11-13 Dominik Röttsches <dominik.roettsches@access-company.com> 5519 5520 Reviewed by Eric Seidel. 5521 5522 Unify TextBoundaries implementations by only relying on WTF Unicode abstractions 5523 https://bugs.webkit.org/show_bug.cgi?id=31468 5524 5525 Adding isAlphanumeric abstraction, required 5526 by TextBoundaries.cpp. 5527 5528 * wtf/unicode/glib/UnicodeGLib.h: 5529 (WTF::Unicode::isAlphanumeric): 5530 * wtf/unicode/icu/UnicodeIcu.h: 5531 (WTF::Unicode::isAlphanumeric): 5532 55332009-11-13 Norbert Leser <norbert.leser&nokia.com> 5534 5535 Reviewed by Eric Seidel. 5536 5537 Added macros for USERINCLUDE paths within symbian blocks 5538 to guarantee inclusion of respective header files from local path 5539 first (to avoid clashes with same names of header files in system include path). 5540 5541 * JavaScriptCore.pri: 5542 55432009-11-13 Oliver Hunt <oliver@apple.com> 5544 5545 Reviewed by Geoff Garen. 5546 5547 JSValueProtect and JSValueUnprotect don't protect API wrapper values 5548 https://bugs.webkit.org/show_bug.cgi?id=31485 5549 5550 Make JSValueProtect/Unprotect use a new 'toJS' function, 'toJSForGC' that 5551 does not attempt to to strip out API wrapper objects. 5552 5553 * API/APICast.h: 5554 (toJSForGC): 5555 * API/JSValueRef.cpp: 5556 (JSValueProtect): 5557 (JSValueUnprotect): 5558 * API/tests/testapi.c: 5559 (makeGlobalNumberValue): 5560 (main): 5561 55622009-11-13 İsmail Dönmez <ismail@namtrac.org> 5563 5564 Reviewed by Antti Koivisto. 5565 5566 Fix typo, ce_time.cpp should be ce_time.c 5567 5568 * JavaScriptCore.pri: 5569 55702009-11-12 Steve VanDeBogart <vandebo@chromium.org> 5571 5572 Reviewed by Adam Barth. 5573 5574 Calculate the time offset only if we were able to parse 5575 the date string. This saves an IPC in Chromium for 5576 invalid date strings. 5577 https://bugs.webkit.org/show_bug.cgi?id=31416 5578 5579 * wtf/DateMath.cpp: 5580 (WTF::parseDateFromNullTerminatedCharacters): 5581 (JSC::parseDateFromNullTerminatedCharacters): 5582 55832009-11-12 Oliver Hunt <oliver@apple.com> 5584 5585 Rollout r50896 until i can work out why it causes failures. 5586 5587 * bytecompiler/BytecodeGenerator.cpp: 5588 (JSC::BytecodeGenerator::emitReturn): 5589 * interpreter/Interpreter.cpp: 5590 (JSC::Interpreter::execute): 5591 * parser/Nodes.cpp: 5592 (JSC::EvalNode::emitBytecode): 5593 55942009-11-12 Steve Falkenburg <sfalken@apple.com> 5595 5596 Reviewed by Stephanie Lewis. 5597 5598 Remove LIBRARY directive from def file to fix Debug_All target. 5599 5600 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: 5601 56022009-11-12 Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk> 5603 5604 Rubber-stamped by Holger Freyther. 5605 5606 Revert r50204, since it makes DRT crash on 32 bits release builds 5607 for GTK+. 5608 5609 * wtf/FastMalloc.h: 5610 56112009-11-12 Oliver Hunt <oliver@apple.com> 5612 5613 Reviewed by Gavin Barraclough. 5614 5615 Start unifying entry logic for function and eval code. 5616 5617 Eval now uses a ret instruction to end execution, and sets up 5618 a callframe more in line with what we do for function entry. 5619 5620 * bytecompiler/BytecodeGenerator.cpp: 5621 (JSC::BytecodeGenerator::emitReturn): 5622 * interpreter/Interpreter.cpp: 5623 (JSC::Interpreter::execute): 5624 * parser/Nodes.cpp: 5625 (JSC::EvalNode::emitBytecode): 5626 56272009-11-12 Richard Moe Gustavsen <richard.gustavsen@nokia.com> 5628 5629 Reviewed by Kenneth Rohde Christiansen. 5630 5631 [Qt] Disable pthread_setname_np. 5632 5633 This allows Qt builds on Mac from 10.6 to run on earlier version 5634 where this symbol is not present. 5635 https://bugs.webkit.org/show_bug.cgi?id=31403 5636 5637 * wtf/Platform.h: 5638 56392009-11-12 Thiago Macieira <thiago.macieira@nokia.com> 5640 5641 Reviewed by Kenneth Rohde Christiansen. 5642 5643 [Qt] Fix linking on Linux 32-bit. 5644 5645 It was missing the ".text" directive at the top of the file, 5646 indicating that code would follow. Without it, the assembler created 5647 "NOTYPE" symbols, which would result in linker errors. 5648 https://bugs.webkit.org/show_bug.cgi?id=30863 5649 5650 * jit/JITStubs.cpp: 5651 56522009-11-11 Laszlo Gombos <laszlo.1.gombos@nokia.com> 5653 5654 Reviewed by Alexey Proskuryakov. 5655 5656 Refactor multiple JavaScriptCore threads 5657 https://bugs.webkit.org/show_bug.cgi?id=31328 5658 5659 Remove the id field from the PlatformThread structure 5660 as it is not used. 5661 5662 * runtime/Collector.cpp: 5663 (JSC::getCurrentPlatformThread): 5664 (JSC::suspendThread): 5665 (JSC::resumeThread): 5666 (JSC::getPlatformThreadRegisters): 5667 56682009-11-10 Geoffrey Garen <ggaren@apple.com> 5669 5670 Linux build fix: Added an #include for UINT_MAX. 5671 5672 * runtime/WeakRandom.h: 5673 56742009-11-10 Geoffrey Garen <ggaren@apple.com> 5675 5676 JavaScriptGlue build fix: Marked a file 'private' instead of 'project'. 5677 5678 * JavaScriptCore.xcodeproj/project.pbxproj: 5679 56802009-11-10 Geoffrey Garen <ggaren@apple.com> 5681 5682 Reviewed by Gavin "avGni arBalroguch" Barraclough. 5683 5684 Faster Math.random, based on GameRand. 5685 5686 SunSpider says 1.4% faster. 5687 5688 * GNUmakefile.am: 5689 * JavaScriptCore.gypi: 5690 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: 5691 * JavaScriptCore.xcodeproj/project.pbxproj: Added the header to the project. 5692 5693 * runtime/JSGlobalData.cpp: 5694 (JSC::JSGlobalData::JSGlobalData): 5695 * runtime/JSGlobalData.h: Use an object to track random number generation 5696 state, initialized to the current time. 5697 5698 * runtime/MathObject.cpp: 5699 (JSC::MathObject::MathObject): 5700 (JSC::mathProtoFuncRandom): Use the new hotness. 5701 5702 * runtime/WeakRandom.h: Added. 5703 (JSC::WeakRandom::WeakRandom): 5704 (JSC::WeakRandom::get): 5705 (JSC::WeakRandom::advance): The new hotness. 5706 57072009-11-09 Geoffrey Garen <ggaren@apple.com> 5708 5709 Reviewed by Oliver Hunt. 5710 5711 Imported the v8 DST cache. 5712 5713 SunSpider says 1.5% faster. 5714 5715 * runtime/JSGlobalData.cpp: 5716 (JSC::JSGlobalData::resetDateCache): Reset the DST cache when resetting 5717 other date data. 5718 5719 * runtime/JSGlobalData.h: 5720 (JSC::DSTOffsetCache::DSTOffsetCache): 5721 (JSC::DSTOffsetCache::reset): Added a struct for the DST cache. 5722 5723 * wtf/DateMath.cpp: 5724 (WTF::calculateDSTOffsetSimple): 5725 (WTF::calculateDSTOffset): 5726 (WTF::parseDateFromNullTerminatedCharacters): 5727 (JSC::getDSTOffset): 5728 (JSC::gregorianDateTimeToMS): 5729 (JSC::msToGregorianDateTime): 5730 (JSC::parseDateFromNullTerminatedCharacters): 5731 * wtf/DateMath.h: The imported code for probing and updating the cache. 5732 57332009-11-09 Geoffrey Garen <ggaren@apple.com> 5734 5735 Reviewed by Oliver Hunt. 5736 5737 Fixed an edge case that could cause the engine not to notice a timezone 5738 change. 5739 5740 No test because this case would require manual intervention to change 5741 the timezone during the test. 5742 5743 SunSpider reports no change. 5744 5745 * runtime/DateInstanceCache.h: 5746 (JSC::DateInstanceCache::DateInstanceCache): 5747 (JSC::DateInstanceCache::reset): Added a helper function for resetting 5748 this cache. Also, shrank the cache, since we'll be resetting it often. 5749 5750 * runtime/JSGlobalData.cpp: 5751 (JSC::JSGlobalData::resetDateCache): Include resetting the DateInstanceCache 5752 in resetting Date data. (Otherwise, a cache hit could bypass a necessary 5753 timezone update check.) 5754 57552009-11-09 Geoffrey Garen <ggaren@apple.com> 5756 5757 Reviewed by Sam Weinig. 5758 5759 Some manual inlining and constant propogation in Date code. 5760 5761 SunSpider reports a 0.4% speedup on date-*, no overall speedup. Shark 5762 says some previously evident stalls are now gone. 5763 5764 * runtime/DateConstructor.cpp: 5765 (JSC::callDate): 5766 * runtime/DateConversion.cpp: 5767 (JSC::formatTime): 5768 (JSC::formatTimeUTC): Split formatTime into UTC and non-UTC variants. 5769 5770 * runtime/DateConversion.h: 5771 * runtime/DateInstance.cpp: 5772 (JSC::DateInstance::calculateGregorianDateTime): 5773 (JSC::DateInstance::calculateGregorianDateTimeUTC): 5774 * runtime/DateInstance.h: 5775 (JSC::DateInstance::gregorianDateTime): 5776 (JSC::DateInstance::gregorianDateTimeUTC): Split gregorianDateTime into 5777 a UTC and non-UTC variant, and split each variant into a fast inline 5778 case and a slow out-of-line case. 5779 5780 * runtime/DatePrototype.cpp: 5781 (JSC::formatLocaleDate): 5782 (JSC::dateProtoFuncToString): 5783 (JSC::dateProtoFuncToUTCString): 5784 (JSC::dateProtoFuncToISOString): 5785 (JSC::dateProtoFuncToDateString): 5786 (JSC::dateProtoFuncToTimeString): 5787 (JSC::dateProtoFuncGetFullYear): 5788 (JSC::dateProtoFuncGetUTCFullYear): 5789 (JSC::dateProtoFuncToGMTString): 5790 (JSC::dateProtoFuncGetMonth): 5791 (JSC::dateProtoFuncGetUTCMonth): 5792 (JSC::dateProtoFuncGetDate): 5793 (JSC::dateProtoFuncGetUTCDate): 5794 (JSC::dateProtoFuncGetDay): 5795 (JSC::dateProtoFuncGetUTCDay): 5796 (JSC::dateProtoFuncGetHours): 5797 (JSC::dateProtoFuncGetUTCHours): 5798 (JSC::dateProtoFuncGetMinutes): 5799 (JSC::dateProtoFuncGetUTCMinutes): 5800 (JSC::dateProtoFuncGetSeconds): 5801 (JSC::dateProtoFuncGetUTCSeconds): 5802 (JSC::dateProtoFuncGetTimezoneOffset): 5803 (JSC::setNewValueFromTimeArgs): 5804 (JSC::setNewValueFromDateArgs): 5805 (JSC::dateProtoFuncSetYear): 5806 (JSC::dateProtoFuncGetYear): Updated for the gregorianDateTime change above. 5807 58082009-11-09 Geoffrey Garen <ggaren@apple.com> 5809 5810 Build fix: export a new symbol. 5811 5812 * JavaScriptCore.exp: 5813 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: 5814 58152009-11-09 Geoffrey Garen <ggaren@apple.com> 5816 5817 Reviewed by Sam "Home Wrecker" Weinig. 5818 5819 Added a tiny cache for Date parsing. 5820 5821 SunSpider says 1.2% faster. 5822 5823 * runtime/DateConversion.cpp: 5824 (JSC::parseDate): Try to reuse the last parsed Date, if present. 5825 5826 * runtime/JSGlobalData.cpp: 5827 (JSC::JSGlobalData::resetDateCache): 5828 * runtime/JSGlobalData.h: Added storage for last parsed Date. Refactored 5829 this code to make resetting the date cache easier. 5830 5831 * runtime/JSGlobalObject.h: 5832 (JSC::DynamicGlobalObjectScope::DynamicGlobalObjectScope): Updated for 5833 refactoring. 5834 5835 * wtf/DateMath.cpp: 5836 (JSC::parseDateFromNullTerminatedCharacters): 5837 * wtf/DateMath.h: Changed ExecState to be first parameter, as is the JSC custom. 5838 58392009-11-09 Oliver Hunt <oliver@apple.com> 5840 5841 Reviewed by Gavin Barraclough. 5842 5843 Can cache prototype lookups on uncacheable dictionaries. 5844 https://bugs.webkit.org/show_bug.cgi?id=31198 5845 5846 Replace fromDictionaryTransition with flattenDictionaryObject and 5847 flattenDictionaryStructure. This change is necessary as we need to 5848 guarantee that our attempt to convert away from a dictionary structure 5849 will definitely succeed, and in some cases this requires mutating the 5850 object storage itself. 5851 5852 * interpreter/Interpreter.cpp: 5853 (JSC::Interpreter::tryCacheGetByID): 5854 * jit/JITStubs.cpp: 5855 (JSC::JITThunks::tryCacheGetByID): 5856 (JSC::DEFINE_STUB_FUNCTION): 5857 * runtime/BatchedTransitionOptimizer.h: 5858 (JSC::BatchedTransitionOptimizer::~BatchedTransitionOptimizer): 5859 * runtime/JSObject.h: 5860 (JSC::JSObject::flattenDictionaryObject): 5861 * runtime/Operations.h: 5862 (JSC::normalizePrototypeChain): 5863 * runtime/Structure.cpp: 5864 (JSC::Structure::flattenDictionaryStructure): 5865 (JSC::comparePropertyMapEntryIndices): 5866 * runtime/Structure.h: 5867 58682009-11-09 Laszlo Gombos <laszlo.1.gombos@nokia.com> 5869 5870 Not reviewed, build fix. 5871 5872 Remove extra character from r50701. 5873 5874 * JavaScriptCore.pri: 5875 58762009-11-09 Laszlo Gombos <laszlo.1.gombos@nokia.com> 5877 5878 Not reviewed, build fix. 5879 5880 Revert r50695 because it broke QtWebKit (clean builds). 5881 5882 * JavaScriptCore.pri: 5883 58842009-11-09 Norbert Leser <norbert.leser@nokia.com> 5885 5886 Reviewed by Kenneth Rohde Christiansen. 5887 5888 Prepended $$PWD to GENERATED_SOURCES_DIR to avoid potential ambiguities when included from WebCore.pro. 5889 Some preprocessors consider this GENERATED_SOURCES_DIR relative to current invoking dir (e.g., ./WebCore), 5890 and not the working dir of JavaCriptCore.pri (i.e., ../JavaScriptCore/). 5891 5892 * JavaScriptCore.pri: 5893 58942009-11-09 Laszlo Gombos <laszlo.1.gombos@nokia.com> 5895 5896 Reviewed by Kenneth Rohde Christiansen. 5897 5898 Use explicit parentheses to silence gcc 4.4 -Wparentheses warnings 5899 https://bugs.webkit.org/show_bug.cgi?id=31040 5900 5901 * interpreter/Interpreter.cpp: 5902 (JSC::Interpreter::privateExecute): 5903 59042009-11-08 David Levin <levin@chromium.org> 5905 5906 Reviewed by NOBODY (speculative snow leopard and windows build fixes). 5907 5908 * wtf/DateMath.cpp: 5909 (WTF::parseDateFromNullTerminatedCharacters): 5910 (JSC::gregorianDateTimeToMS): 5911 (JSC::msToGregorianDateTime): 5912 (JSC::parseDateFromNullTerminatedCharacters): 5913 * wtf/DateMath.h: 5914 (JSC::GregorianDateTime::GregorianDateTime): 5915 59162009-11-08 David Levin <levin@chromium.org> 5917 5918 Reviewed by NOBODY (chromium build fix). 5919 5920 Hopefully, the last build fix. 5921 5922 Create better separation in DateMath about the JSC 5923 and non-JSC portions. Also, only expose the non-JSC 5924 version in the exports. 5925 5926 * JavaScriptCore.exp: 5927 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: 5928 * wtf/DateMath.cpp: 5929 (WTF::parseDateFromNullTerminatedCharacters): 5930 (JSC::getUTCOffset): 5931 (JSC::gregorianDateTimeToMS): 5932 (JSC::msToGregorianDateTime): 5933 (JSC::parseDateFromNullTerminatedCharacters): 5934 * wtf/DateMath.h: 5935 (JSC::gmtoffset): 5936 59372009-11-08 David Levin <levin@chromium.org> 5938 5939 Reviewed by NOBODY (chromium build fix). 5940 5941 For the change in DateMath. 5942 5943 * config.h: 5944 * wtf/DateMath.cpp: 5945 59462009-11-06 Geoffrey Garen <ggaren@apple.com> 5947 5948 Windows build fix: export some symbols. 5949 5950 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: 5951 59522009-11-06 Geoffrey Garen <ggaren@apple.com> 5953 5954 Build fix: updated export file. 5955 5956 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: 5957 59582009-11-06 Geoffrey Garen <ggaren@apple.com> 5959 5960 Build fix: added some #includes. 5961 5962 * wtf/CurrentTime.h: 5963 * wtf/DateMath.h: 5964 59652009-11-06 Geoffrey Garen <ggaren@apple.com> 5966 5967 Reviewed by Oliver Hunt. 5968 5969 https://bugs.webkit.org/show_bug.cgi?id=31197 5970 Implemented a timezone cache not based on Mac OS X's notify_check API. 5971 5972 If the VM calculates the local timezone offset from UTC, it caches the 5973 result until the end of the current VM invocation. (We don't want to cache 5974 forever, because the user's timezone may change over time.) 5975 5976 This removes notify_* overhead on Mac, and, more significantly, removes 5977 OS time and date call overhead on non-Mac platforms. 5978 5979 ~8% speedup on Date microbenchmark on Mac. SunSpider reports maybe a tiny 5980 speedup on Mac. (Speedup on non-Mac platforms should be even more noticeable.) 5981 5982 * JavaScriptCore.exp: 5983 5984 * interpreter/CachedCall.h: 5985 (JSC::CachedCall::CachedCall): 5986 * interpreter/Interpreter.cpp: 5987 (JSC::Interpreter::execute): 5988 * runtime/JSGlobalObject.h: 5989 (JSC::DynamicGlobalObjectScope::DynamicGlobalObjectScope): Made the 5990 DynamicGlobalObjectScope constructor responsible for checking whether a 5991 dynamicGlobalObject has already been set. This eliminated some duplicate 5992 client code, and allowed me to avoid adding even more duplicate client 5993 code. Made DynamicGlobalObjectScope responsible for resetting the 5994 local timezone cache upon first entry to the VM. 5995 5996 * runtime/DateConstructor.cpp: 5997 (JSC::constructDate): 5998 (JSC::callDate): 5999 (JSC::dateParse): 6000 (JSC::dateUTC): 6001 * runtime/DateConversion.cpp: 6002 (JSC::parseDate): 6003 * runtime/DateConversion.h: 6004 * runtime/DateInstance.cpp: 6005 (JSC::DateInstance::gregorianDateTime): 6006 * runtime/DateInstance.h: 6007 * runtime/DateInstanceCache.h: 6008 * runtime/DatePrototype.cpp: 6009 (JSC::setNewValueFromTimeArgs): 6010 (JSC::setNewValueFromDateArgs): 6011 (JSC::dateProtoFuncSetYear): 6012 * runtime/InitializeThreading.cpp: 6013 (JSC::initializeThreadingOnce): 6014 * runtime/JSGlobalData.cpp: 6015 (JSC::JSGlobalData::JSGlobalData): 6016 * runtime/JSGlobalData.h: 6017 * wtf/DateMath.cpp: 6018 (WTF::getCurrentUTCTime): 6019 (WTF::getCurrentUTCTimeWithMicroseconds): 6020 (WTF::getLocalTime): 6021 (JSC::getUTCOffset): Use the new cache. Also, see below. 6022 (JSC::gregorianDateTimeToMS): 6023 (JSC::msToGregorianDateTime): 6024 (JSC::initializeDates): 6025 (JSC::parseDateFromNullTerminatedCharacters): Simplified the way this function 6026 accounts for the local timezone offset, to accomodate our new caching API, 6027 and a (possibly misguided) caller in WebCore. Also, see below. 6028 * wtf/DateMath.h: 6029 (JSC::GregorianDateTime::GregorianDateTime): Moved most of the code in 6030 DateMath.* into the JSC namespace. The code needed to move so it could 6031 naturally interact with ExecState and JSGlobalData to support caching. 6032 Logically, it seemed right to move it, too, since this code is not really 6033 as low-level as the WTF namespace might imply -- it implements a set of 6034 date parsing and conversion quirks that are finely tuned to the JavaScript 6035 language. Also removed the Mac OS X notify_* infrastructure. 6036 6037 * wtf/CurrentTime.h: 6038 (WTF::currentTimeMS): 6039 (WTF::getLocalTime): Moved the rest of the DateMath code here, and renamed 6040 it to make it consistent with WTF's currentTime function. 6041 60422009-11-06 Gabor Loki <loki@inf.u-szeged.hu> 6043 6044 Unreviewed trivial buildfix after r50595. 6045 6046 Rename the remaining rshiftPtr calls to rshift32 6047 6048 * jit/JITArithmetic.cpp: 6049 (JSC::JIT::emit_op_rshift): 6050 * jit/JITInlineMethods.h: 6051 (JSC::JIT::emitFastArithImmToInt): 6052 60532009-11-06 Gavin Barraclough <barraclough@apple.com> 6054 6055 Reviewed by Oliver Hunt. 6056 6057 Tidy up the shift methods on the macro-assembler interface. 6058 6059 Currently behaviour of shifts of a magnitude > 0x1f is undefined. 6060 Instead defined that all shifts are masked to this range. This makes a lot of 6061 practical sense, both since having undefined behaviour is not particularly 6062 desirable, and because this behaviour is commonly required (particularly since 6063 it is required bt ECMA-262 for shifts). 6064 6065 Update the ARM assemblers to provide this behaviour. Remove (now) redundant 6066 masks from JITArithmetic, and remove rshiftPtr (this was used in case that 6067 could be rewritten in a simpler form using rshift32, only optimized JSVALUE32 6068 on x86-64, which uses JSVALUE64!) 6069 6070 * assembler/MacroAssembler.h: 6071 * assembler/MacroAssemblerARM.h: 6072 (JSC::MacroAssemblerARM::lshift32): 6073 (JSC::MacroAssemblerARM::rshift32): 6074 * assembler/MacroAssemblerARMv7.h: 6075 (JSC::MacroAssemblerARMv7::lshift32): 6076 (JSC::MacroAssemblerARMv7::rshift32): 6077 * assembler/MacroAssemblerX86_64.h: 6078 * jit/JITArithmetic.cpp: 6079 (JSC::JIT::emit_op_lshift): 6080 (JSC::JIT::emit_op_rshift): 6081 60822009-11-05 Gavin Barraclough <barraclough@apple.com> 6083 6084 Rubber Stamped by Oliver Hunt. 6085 6086 Remove a magic number (1) from the JIT, instead compute the value with OBJECT_OFFSET. 6087 6088 * jit/JITInlineMethods.h: 6089 (JSC::JIT::emitPutJITStubArg): 6090 (JSC::JIT::emitPutJITStubArgConstant): 6091 (JSC::JIT::emitGetJITStubArg): 6092 (JSC::JIT::emitPutJITStubArgFromVirtualRegister): 6093 * jit/JITStubCall.h: 6094 (JSC::JITStubCall::JITStubCall): 6095 (JSC::JITStubCall::getArgument): 6096 * jit/JITStubs.h: 6097 60982009-11-05 Zoltan Herczeg <zherczeg@inf.u-szeged.hu> 6099 6100 Reviewed by Gavin Barraclough. 6101 6102 https://bugs.webkit.org/show_bug.cgi?id=31159 6103 Fix branchDouble behaviour on ARM THUMB2 JIT. 6104 6105 The x86 branchDouble behaviour is reworked, and all JIT 6106 ports should follow the x86 port. See bug 31104 and 31151 6107 6108 This patch contains a fix for the traditional ARM port 6109 6110 * assembler/ARMAssembler.h: 6111 (JSC::ARMAssembler::): 6112 (JSC::ARMAssembler::fmrs_r): 6113 (JSC::ARMAssembler::ftosid_r): 6114 * assembler/MacroAssemblerARM.h: 6115 (JSC::MacroAssemblerARM::): 6116 (JSC::MacroAssemblerARM::branchDouble): 6117 (JSC::MacroAssemblerARM::branchConvertDoubleToInt32): 6118 61192009-11-05 Chris Jerdonek <chris.jerdonek@gmail.com> 6120 6121 Reviewed by Eric Seidel. 6122 6123 Removed the "this is part of the KDE project" comments from 6124 all *.h, *.cpp, *.idl, and *.pm files. 6125 6126 https://bugs.webkit.org/show_bug.cgi?id=31167 6127 6128 The maintenance and architecture page in the project wiki lists 6129 this as a task. 6130 6131 This change includes no changes or additions to test cases 6132 since the change affects only comments. 6133 6134 * wtf/wince/FastMallocWince.h: 6135 61362009-11-05 Gabor Loki <loki@inf.u-szeged.hu> 6137 6138 Reviewed by Gavin Barraclough. 6139 6140 Use ARMv7 specific encoding for immediate constants on ARMv7 target 6141 https://bugs.webkit.org/show_bug.cgi?id=31060 6142 6143 * assembler/ARMAssembler.cpp: 6144 (JSC::ARMAssembler::getOp2): Use INVALID_IMM 6145 (JSC::ARMAssembler::getImm): Use encodeComplexImm for complex immediate 6146 (JSC::ARMAssembler::moveImm): Ditto. 6147 (JSC::ARMAssembler::encodeComplexImm): Encode a constant by one or two 6148 instructions or a PC relative load. 6149 * assembler/ARMAssembler.h: Use INVALID_IMM if a constant cannot be 6150 encoded as an immediate constant. 6151 (JSC::ARMAssembler::): 6152 (JSC::ARMAssembler::movw_r): 16-bit immediate load 6153 (JSC::ARMAssembler::movt_r): High halfword 16-bit immediate load 6154 (JSC::ARMAssembler::getImm16Op2): Encode immediate constant for 6155 movw_r and mowt_r 6156 61572009-11-04 Mark Mentovai <mark@chromium.org> 6158 6159 Reviewed by Mark Rowe. 6160 6161 Provide TARGETING_TIGER and TARGETING_LEOPARD as analogues to 6162 BUILDING_ON_TIGER and BUILDING_ON_LEOPARD. The TARGETING_ macros 6163 consider the deployment target; the BUILDING_ON_ macros consider the 6164 headers being built against. 6165 6166 * wtf/Platform.h: 6167 61682009-11-04 Gavin Barraclough <barraclough@apple.com> 6169 6170 Reviewed by Oliver Hunt. 6171 6172 https://bugs.webkit.org/show_bug.cgi?id=31151 6173 Fix branchDouble behaviour on ARM THUMB2 JIT. 6174 6175 The ARMv7 JIT is currently using ARMv7Assembler::ConditionEQ to branch 6176 for DoubleEqualOrUnordered, however this is incorrect – ConditionEQ won't 6177 branch on unordered operands. Similarly, DoubleLessThanOrUnordered & 6178 DoubleLessThanOrEqualOrUnordered use ARMv7Assembler::ConditionLO & 6179 ARMv7Assembler::ConditionLS, whereas they should be using 6180 ARMv7Assembler::ConditionLT & ARMv7Assembler::ConditionLE. 6181 6182 Fix these, and fill out the missing DoubleConditions. 6183 6184 * assembler/MacroAssemblerARMv7.h: 6185 (JSC::MacroAssemblerARMv7::): 6186 (JSC::MacroAssemblerARMv7::branchDouble): 6187 61882009-11-04 Gavin Barraclough <barraclough@apple.com> 6189 6190 Rubber Stamped by Oliver Hunt. 6191 6192 Enable native call optimizations on ARMv7. (Existing ARM_TRADITIONAL 6193 implementation was generic, worked perfectly, just needed turning on). 6194 6195 * jit/JITOpcodes.cpp: 6196 * wtf/Platform.h: 6197 61982009-11-04 Gavin Barraclough <barraclough@apple.com> 6199 6200 Rubber Stamped by Mark Rowe, Oliver Hunt, and Sam Weinig. 6201 6202 Add a missing assert to the ARMv7 JIT. 6203 6204 * assembler/ARMv7Assembler.h: 6205 (JSC::ARMThumbImmediate::ARMThumbImmediate): 6206 62072009-11-04 Mark Rowe <mrowe@apple.com> 6208 6209 Rubber-stamped by Oliver Hunt. 6210 6211 Remove bogus op_ prefix on dumped version of three opcodes. 6212 6213 * bytecode/CodeBlock.cpp: 6214 (JSC::CodeBlock::dump): 6215 62162009-11-04 Mark Rowe <mrowe@apple.com> 6217 6218 Reviewed by Sam Weinig. 6219 6220 Fix dumping of constants in bytecode so that they aren't printed as large positive register numbers. 6221 6222 We do this by having the registerName function return information about the constant if the register 6223 number corresponds to a constant. This requires that registerName, and several functions that call it, 6224 be converted to member functions of CodeBlock so that the constant value can be retrieved. The 6225 ExecState also needs to be threaded down through these functions so that it can be passed on to 6226 constantName when needed. 6227 6228 * bytecode/CodeBlock.cpp: 6229 (JSC::constantName): 6230 (JSC::CodeBlock::registerName): 6231 (JSC::CodeBlock::printUnaryOp): 6232 (JSC::CodeBlock::printBinaryOp): 6233 (JSC::CodeBlock::printConditionalJump): 6234 (JSC::CodeBlock::printGetByIdOp): 6235 (JSC::CodeBlock::printPutByIdOp): 6236 (JSC::CodeBlock::dump): 6237 * bytecode/CodeBlock.h: 6238 (JSC::CodeBlock::isConstantRegisterIndex): 6239 62402009-11-04 Pavel Heimlich <tropikhajma@gmail.com> 6241 6242 Reviewed by Alexey Proskuryakov. 6243 6244 https://bugs.webkit.org/show_bug.cgi?id=30647 6245 Solaris build failure due to strnstr. 6246 6247 * wtf/StringExtras.h: Enable strnstr on Solaris, too. 6248 62492009-11-04 Gavin Barraclough <barraclough@apple.com> 6250 6251 Reviewed by Oliver Hunt. 6252 6253 https://bugs.webkit.org/show_bug.cgi?id=31104 6254 Refactor x86-specific behaviour out of the JIT. 6255 6256 - Add explicit double branch conditions for ordered and unordered comparisons (presently the brehaviour is a mix). 6257 - Refactor double to int conversion out into the MacroAssembler. 6258 - Remove broken double to int conversion for !JSVALUE32_64 builds - this code was broken and slowing us down, fixing it showed it not to be an improvement. 6259 - Remove exclusion of double to int conversion from (1 % X) cases in JSVALUE32_64 builds - if this was of benefit this is no longer the case; simplify. 6260 6261 * assembler/MacroAssemblerARM.h: 6262 (JSC::MacroAssemblerARM::): 6263 * assembler/MacroAssemblerARMv7.h: 6264 (JSC::MacroAssemblerARMv7::): 6265 * assembler/MacroAssemblerX86Common.h: 6266 (JSC::MacroAssemblerX86Common::): 6267 (JSC::MacroAssemblerX86Common::convertInt32ToDouble): 6268 (JSC::MacroAssemblerX86Common::branchDouble): 6269 (JSC::MacroAssemblerX86Common::branchConvertDoubleToInt32): 6270 * jit/JITArithmetic.cpp: 6271 (JSC::JIT::emitBinaryDoubleOp): 6272 (JSC::JIT::emit_op_div): 6273 (JSC::JIT::emitSlow_op_jnless): 6274 (JSC::JIT::emitSlow_op_jnlesseq): 6275 * jit/JITOpcodes.cpp: 6276 (JSC::JIT::emit_op_jfalse): 6277 62782009-11-04 Mark Mentovai <mark@chromium.org> 6279 6280 Reviewed by Eric Seidel. 6281 6282 Remove BUILDING_ON_LEOPARD from JavaScriptCore.gyp. This is supposed 6283 to be set as needed only in wtf/Platform.h. 6284 6285 * JavaScriptCore.gyp/JavaScriptCore.gyp: 6286 62872009-11-02 Oliver Hunt <oliver@apple.com> 6288 6289 Reviewed by Gavin Barraclough. 6290 6291 REGRESSION (r48573): JSC may incorrectly cache chain lookups with a dictionary at the head of the chain 6292 https://bugs.webkit.org/show_bug.cgi?id=31045 6293 6294 Add guards to prevent caching of prototype chain lookups with dictionaries at the 6295 head of the chain. Also add a few tighter assertions to cached prototype lookups 6296 to catch this in future. 6297 6298 * interpreter/Interpreter.cpp: 6299 (JSC::Interpreter::tryCacheGetByID): 6300 (JSC::Interpreter::privateExecute): 6301 * jit/JITStubs.cpp: 6302 (JSC::JITThunks::tryCacheGetByID): 6303 63042009-11-02 Laszlo Gombos <laszlo.1.gombos@nokia.com> 6305 6306 Reviewed by Darin Adler. 6307 6308 PLATFORM(CF) should be set when building for Qt on Darwin 6309 https://bugs.webkit.org/show_bug.cgi?id=23671 6310 6311 * wtf/Platform.h: Turn on CF support if both QT and DARWIN 6312 platforms are defined. 6313 63142009-11-02 Dmitry Titov <dimich@chromium.org> 6315 6316 Reviewed by David Levin. 6317 6318 Remove threadsafe refcounting from tasks used with WTF::MessageQueue. 6319 https://bugs.webkit.org/show_bug.cgi?id=30612 6320 6321 * wtf/MessageQueue.h: 6322 (WTF::MessageQueue::alwaysTruePredicate): 6323 (WTF::MessageQueue::~MessageQueue): 6324 (WTF::MessageQueue::append): 6325 (WTF::MessageQueue::appendAndCheckEmpty): 6326 (WTF::MessageQueue::prepend): 6327 (WTF::MessageQueue::waitForMessage): 6328 (WTF::MessageQueue::waitForMessageFilteredWithTimeout): 6329 (WTF::MessageQueue::tryGetMessage): 6330 (WTF::MessageQueue::removeIf): 6331 The MessageQueue is changed to act as a queue of OwnPtr<DataType>. It takes ownership 6332 of posted tasks and passes it to the new owner (in another thread) when the task is fetched. 6333 All methods have arguments of type PassOwnPtr<DataType> and return the same type. 6334 6335 * wtf/Threading.cpp: 6336 (WTF::createThread): 6337 Superficial change to trigger rebuild of JSC project on Windows, 6338 workaround for https://bugs.webkit.org/show_bug.cgi?id=30890 6339 63402009-10-30 Geoffrey Garen <ggaren@apple.com> 6341 6342 Reviewed by Oliver Hunt. 6343 6344 Fixed failing layout test: restore a special case I accidentally deleted. 6345 6346 * runtime/DatePrototype.cpp: 6347 (JSC::setNewValueFromDateArgs): In the case of applying a change to a date 6348 that is NaN, reset the date to 0 *and* then apply the change; don't just 6349 reset the date to 0. 6350 63512009-10-30 Geoffrey Garen <ggaren@apple.com> 6352 6353 Windows build fix: update for object-to-pointer change. 6354 6355 * runtime/DatePrototype.cpp: 6356 (JSC::formatLocaleDate): 6357 63582009-10-29 Geoffrey Garen <ggaren@apple.com> 6359 6360 Reviewed by Darin Adler. 6361 6362 https://bugs.webkit.org/show_bug.cgi?id=30942 6363 Use pointers instead of copies to pass GregorianDateTime objects around. 6364 6365 SunSpider reports a shocking 4.5% speedup on date-format-xparb, and 1.3% 6366 speedup on date-format-tofte. 6367 6368 * runtime/DateInstance.cpp: 6369 (JSC::DateInstance::gregorianDateTime): 6370 * runtime/DateInstance.h: 6371 * runtime/DatePrototype.cpp: 6372 (JSC::formatLocaleDate): 6373 (JSC::dateProtoFuncToString): 6374 (JSC::dateProtoFuncToUTCString): 6375 (JSC::dateProtoFuncToISOString): 6376 (JSC::dateProtoFuncToDateString): 6377 (JSC::dateProtoFuncToTimeString): 6378 (JSC::dateProtoFuncGetFullYear): 6379 (JSC::dateProtoFuncGetUTCFullYear): 6380 (JSC::dateProtoFuncToGMTString): 6381 (JSC::dateProtoFuncGetMonth): 6382 (JSC::dateProtoFuncGetUTCMonth): 6383 (JSC::dateProtoFuncGetDate): 6384 (JSC::dateProtoFuncGetUTCDate): 6385 (JSC::dateProtoFuncGetDay): 6386 (JSC::dateProtoFuncGetUTCDay): 6387 (JSC::dateProtoFuncGetHours): 6388 (JSC::dateProtoFuncGetUTCHours): 6389 (JSC::dateProtoFuncGetMinutes): 6390 (JSC::dateProtoFuncGetUTCMinutes): 6391 (JSC::dateProtoFuncGetSeconds): 6392 (JSC::dateProtoFuncGetUTCSeconds): 6393 (JSC::dateProtoFuncGetTimezoneOffset): 6394 (JSC::setNewValueFromTimeArgs): 6395 (JSC::setNewValueFromDateArgs): 6396 (JSC::dateProtoFuncSetYear): 6397 (JSC::dateProtoFuncGetYear): Renamed getGregorianDateTime to gregorianDateTime, 6398 since it no longer has an out parameter. Uses 0 to indicate invalid dates. 6399 64002009-10-30 Zoltan Horvath <zoltan@webkit.org> 6401 6402 Reviewed by Darin Adler. 6403 6404 Allow custom memory allocation control for JavaScriptCore's ListHashSet 6405 https://bugs.webkit.org/show_bug.cgi?id=30853 6406 6407 Inherits ListHashSet class from FastAllocBase because it is 6408 instantiated by 'new' in WebCore/rendering/RenderBlock.cpp:1813. 6409 6410 * wtf/ListHashSet.h: 6411 64122009-10-30 Oliver Hunt <oliver@apple.com> 6413 6414 Reviewed by Gavin Barraclough. 6415 6416 Regression: crash enumerating properties of an object with getters or setters 6417 https://bugs.webkit.org/show_bug.cgi?id=30948 6418 6419 Add a guard to prevent us trying to cache property enumeration on 6420 objects with getters or setters. 6421 6422 * runtime/JSPropertyNameIterator.cpp: 6423 (JSC::JSPropertyNameIterator::create): 6424 64252009-10-30 Roland Steiner <rolandsteiner@chromium.org> 6426 6427 Reviewed by Eric Seidel. 6428 6429 Remove ENABLE_RUBY guards as discussed with Dave Hyatt and Maciej Stachowiak. 6430 6431 Bug 28420 - Implement HTML5 <ruby> rendering 6432 (https://bugs.webkit.org/show_bug.cgi?id=28420) 6433 6434 No new tests (no functional change). 6435 6436 * Configurations/FeatureDefines.xcconfig: 6437 64382009-10-29 Oliver Hunt <oliver@apple.com> 6439 6440 Reviewed by Maciej Stachowiak. 6441 6442 REGRESSION (r50218-r50262): E*TRADE accounts page is missing content 6443 https://bugs.webkit.org/show_bug.cgi?id=30947 6444 <rdar://problem/7348833> 6445 6446 The logic for flagging that a structure has non-enumerable properties 6447 was in addPropertyWithoutTransition, rather than in the core Structure::put 6448 method. Despite this I was unable to produce a testcase that caused 6449 the failure that etrade was experiencing, but the new assertion in 6450 getEnumerablePropertyNames triggers on numerous layout tests without 6451 the fix, so in effecti all for..in enumeration in any test ends up 6452 doing the required consistency check. 6453 6454 * runtime/Structure.cpp: 6455 (JSC::Structure::addPropertyWithoutTransition): 6456 (JSC::Structure::put): 6457 (JSC::Structure::getEnumerablePropertyNames): 6458 (JSC::Structure::checkConsistency): 6459 64602009-10-29 Gabor Loki <loki@inf.u-szeged.hu> 6461 6462 Reviewed by Gavin Barraclough. 6463 6464 Add cacheFlush support for Thumb-2 on Linux 6465 https://bugs.webkit.org/show_bug.cgi?id=30865 6466 6467 * jit/ExecutableAllocator.h: 6468 (JSC::ExecutableAllocator::cacheFlush): 6469 64702009-10-28 Gavin Barraclough <barraclough@apple.com> 6471 6472 Reviewed by Oliver Hunt. 6473 6474 JSC JIT on ARMv7 cannot link jumps >16Mb range 6475 https://bugs.webkit.org/show_bug.cgi?id=30891 6476 6477 Start planing all relative jumps as move-32-bit-immediate-to-register-BX. 6478 In the cases where the jump would fall within a relative jump range, use a relative jump. 6479 6480 * JavaScriptCore.xcodeproj/project.pbxproj: 6481 * assembler/ARMv7Assembler.h: 6482 (JSC::ARMv7Assembler::~ARMv7Assembler): 6483 (JSC::ARMv7Assembler::LinkRecord::LinkRecord): 6484 (JSC::ARMv7Assembler::): 6485 (JSC::ARMv7Assembler::executableCopy): 6486 (JSC::ARMv7Assembler::linkJump): 6487 (JSC::ARMv7Assembler::relinkJump): 6488 (JSC::ARMv7Assembler::setInt32): 6489 (JSC::ARMv7Assembler::isB): 6490 (JSC::ARMv7Assembler::isBX): 6491 (JSC::ARMv7Assembler::isMOV_imm_T3): 6492 (JSC::ARMv7Assembler::isMOVT): 6493 (JSC::ARMv7Assembler::isNOP_T1): 6494 (JSC::ARMv7Assembler::isNOP_T2): 6495 (JSC::ARMv7Assembler::linkJumpAbsolute): 6496 (JSC::ARMv7Assembler::twoWordOp5i6Imm4Reg4EncodedImmFirst): 6497 (JSC::ARMv7Assembler::twoWordOp5i6Imm4Reg4EncodedImmSecond): 6498 (JSC::ARMv7Assembler::ARMInstructionFormatter::twoWordOp5i6Imm4Reg4EncodedImm): 6499 * assembler/MacroAssemblerARMv7.h: 6500 (JSC::MacroAssemblerARMv7::makeJump): 6501 (JSC::MacroAssemblerARMv7::makeBranch): 6502 * jit/JIT.h: 6503 * wtf/Platform.h: 6504 65052009-10-28 Oliver Hunt <oliver@apple.com> 6506 6507 Reviewed by Geoff Garen. 6508 6509 Improve for..in enumeration performance 6510 https://bugs.webkit.org/show_bug.cgi?id=30887 6511 6512 Improve indexing of an object with a for..in iterator by 6513 identifying cases where get_by_val is being used with a iterator 6514 as the subscript and replace it with a new get_by_pname 6515 bytecode. get_by_pname then optimizes lookups that directly access 6516 the base object. 6517 6518 * bytecode/CodeBlock.cpp: 6519 (JSC::CodeBlock::dump): 6520 * bytecode/Opcode.h: 6521 * bytecompiler/BytecodeGenerator.cpp: 6522 (JSC::BytecodeGenerator::emitGetByVal): 6523 * bytecompiler/BytecodeGenerator.h: 6524 (JSC::BytecodeGenerator::pushOptimisedForIn): 6525 (JSC::BytecodeGenerator::popOptimisedForIn): 6526 * interpreter/Interpreter.cpp: 6527 (JSC::Interpreter::privateExecute): 6528 * jit/JIT.cpp: 6529 (JSC::JIT::privateCompileMainPass): 6530 (JSC::JIT::privateCompileSlowCases): 6531 * jit/JIT.h: 6532 * jit/JITPropertyAccess.cpp: 6533 (JSC::JIT::compileGetDirectOffset): 6534 (JSC::JIT::emit_op_get_by_pname): 6535 (JSC::JIT::emitSlow_op_get_by_pname): 6536 * parser/Nodes.cpp: 6537 (JSC::ForInNode::emitBytecode): 6538 * runtime/JSObject.h: 6539 * runtime/JSPropertyNameIterator.cpp: 6540 (JSC::JSPropertyNameIterator::create): 6541 * runtime/JSPropertyNameIterator.h: 6542 (JSC::JSPropertyNameIterator::getOffset): 6543 (JSC::JSPropertyNameIterator::JSPropertyNameIterator): 6544 * runtime/JSValue.h: 6545 (JSC::JSValue::): 6546 * runtime/Structure.cpp: 6547 (JSC::Structure::addPropertyTransition): 6548 (JSC::Structure::changePrototypeTransition): 6549 (JSC::Structure::despecifyFunctionTransition): 6550 (JSC::Structure::addAnonymousSlotsTransition): 6551 (JSC::Structure::getterSetterTransition): 6552 (JSC::Structure::toDictionaryTransition): 6553 (JSC::Structure::addPropertyWithoutTransition): 6554 Track the existence (or not) of non-enumerable properties. 6555 * runtime/Structure.h: 6556 (JSC::Structure::propertyStorageCapacity): 6557 (JSC::Structure::propertyStorageSize): 6558 (JSC::Structure::hasNonEnumerableProperties): 6559 (JSC::Structure::hasAnonymousSlots): 6560 65612009-10-28 Dmitry Titov <dimich@chromium.org> 6562 6563 Not reviewed, attemp to fix Windows build. 6564 6565 Touch the cpp file to cause recompile. 6566 6567 * wtf/Threading.cpp: 6568 (WTF::threadEntryPoint): 6569 65702009-10-28 Dmitry Titov <dimich@chromium.org> 6571 6572 Reviewed by David Levin. 6573 6574 https://bugs.webkit.org/show_bug.cgi?id=30805 6575 Add MessageQueue::removeIf(Predicate&) to remove certain tasks without pulling them from the queue. 6576 Existing Database tests cover this since Database removes tasks when it is stopped. 6577 6578 * wtf/MessageQueue.h: 6579 (WTF::::removeIf): 6580 65812009-10-28 Afonso R. Costa Jr. <afonso.costa@openbossa.org> 6582 6583 Reviewed by Oliver Hunt. 6584 6585 [Qt] Enable YARR when YARR_JIT is enabled 6586 https://bugs.webkit.org/show_bug.cgi?id=30730 6587 6588 When enabling or disabling JIT using JAVASCRIPTCORE_JIT, the ENABLE_YARR should 6589 be toggled also. 6590 6591 * JavaScriptCore.pri: 6592 65932009-10-24 Martin Robinson <martin.james.robinson@gmail.com> 6594 6595 Reviewed by Oliver Hunt. 6596 6597 Fix strict aliasing warning by switching reinterpret_cast to bitwise_cast. 6598 6599 strict-aliasing warnings in JSFunction.h 6600 https://bugs.webkit.org/show_bug.cgi?id=27869 6601 6602 * runtime/JSFunction.h: 6603 (JSC::JSFunction::nativeFunction): 6604 (JSC::JSFunction::scopeChain): 6605 (JSC::JSFunction::setScopeChain): 6606 (JSC::JSFunction::setNativeFunction): 6607 66082009-10-28 Jan-Arve Sæther <jan-arve.saether@nokia.com> 6609 6610 Reviewed by Tor Arne Vestbø. 6611 6612 Build-fix for 64-bit Windows 6613 6614 * wtf/Platform.h: Make sure to use WTF_USE_JSVALUE64 6615 66162009-10-28 Gavin Barraclough <barraclough@apple.com> 6617 6618 Reviewed by NOBODY (build fix!). 6619 6620 * jit/JIT.h: 6621 66222009-10-26 Holger Hans Peter Freyther <zecke@selfish.org> 6623 6624 Rubber-stamped by Darin Adler. 6625 6626 Export fastMalloc, fastCalloc, fastRealloc and fastFree on GCC/Unix 6627 https://bugs.webkit.org/show_bug.cgi?id=30769 6628 6629 When using -fvisibility=hidden to hide all internal symbols by default 6630 the malloc symbols will be hidden as well. For memory instrumentation 6631 it is needed to provide an instrumented version of these symbols and 6632 override the normal routines and by changing the visibility back to 6633 default this becomes possible. 6634 6635 The only other solution would be to use system malloc instead of the 6636 TCmalloc implementation but this will not allow to analyze memory 6637 behavior with the default allocator. 6638 6639 * wtf/FastMalloc.h: Define WTF_FAST_MALLOC_EXPORT for GCC and !darwin 6640 66412009-10-27 Gavin Barraclough <barraclough@apple.com> 6642 6643 Rubber Stamped by Samuel Q. Weinig. 6644 6645 Make the asserts protecting the offsets in the JIT more descriptive. 6646 6647 * jit/JIT.h: 6648 * jit/JITCall.cpp: 6649 (JSC::JIT::compileOpCall): 6650 * jit/JITPropertyAccess.cpp: 6651 (JSC::JIT::emit_op_method_check): 6652 (JSC::JIT::compileGetByIdHotPath): 6653 (JSC::JIT::compileGetByIdSlowCase): 6654 (JSC::JIT::emit_op_put_by_id): 6655 66562009-10-27 Geoffrey Garen <ggaren@apple.com> 6657 6658 Reviewed by Sam Weinig. 6659 6660 A little bit of refactoring in the date code. 6661 6662 * JavaScriptCore.exp: Don't export this unused symbol. 6663 6664 * runtime/DateConstructor.cpp: 6665 (JSC::constructDate): 6666 6667 * runtime/DateInstance.cpp: 6668 (JSC::DateInstance::DateInstance): 6669 * runtime/DateInstance.h: Removed some unused functions. Changed the default 6670 constructor to ensure that a DateInstance is always initialized. 6671 6672 * runtime/DatePrototype.cpp: 6673 (JSC::DatePrototype::DatePrototype): Pass an initializer to our constructor, 6674 since it now requires one. 6675 6676 * wtf/DateMath.cpp: 6677 (WTF::msToGregorianDateTime): Only compute our offset from UTC if our 6678 output will require it. Otherwise, our offset is 0. 6679 66802009-10-27 Geoffrey Garen <ggaren@apple.com> 6681 6682 Build fix: Mark DateInstaceCache.h private, so other frameworks can see it. 6683 6684 * JavaScriptCore.xcodeproj/project.pbxproj: 6685 66862009-10-27 Geoffrey Garen <ggaren@apple.com> 6687 6688 Build fix: re-readded this file. 6689 6690 * runtime/DateInstanceCache.h: Added. 6691 (JSC::DateInstanceData::create): 6692 (JSC::DateInstanceData::DateInstanceData): 6693 (JSC::DateInstanceCache::DateInstanceCache): 6694 (JSC::DateInstanceCache::add): 6695 (JSC::DateInstanceCache::lookup): 6696 66972009-10-27 Geoffrey Garen <ggaren@apple.com> 6698 6699 Reviewed by Darin Adler and Oliver Hunt. 6700 6701 https://bugs.webkit.org/show_bug.cgi?id=30800 6702 Cache recently computed date data. 6703 6704 SunSpider reports a ~0.5% speedup, mostly from date-format-tofte.js. 6705 6706 * GNUmakefile.am: 6707 * JavaScriptCore.gypi: 6708 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: 6709 * JavaScriptCore.xcodeproj/project.pbxproj: Added new file. 6710 6711 * runtime/DateInstance.cpp: 6712 (JSC::DateInstance::DateInstance): 6713 (JSC::DateInstance::getGregorianDateTime): Use the shared cache. 6714 6715 * runtime/DateInstance.h: Renamed m_cache to m_data, to avoid the confusion 6716 of a "cache cache". 6717 6718 * runtime/DatePrototype.cpp: 6719 (JSC::formatLocaleDate): 6720 (JSC::dateProtoFuncToString): 6721 (JSC::dateProtoFuncToUTCString): 6722 (JSC::dateProtoFuncToISOString): 6723 (JSC::dateProtoFuncToDateString): 6724 (JSC::dateProtoFuncToTimeString): 6725 (JSC::dateProtoFuncGetFullYear): 6726 (JSC::dateProtoFuncGetUTCFullYear): 6727 (JSC::dateProtoFuncToGMTString): 6728 (JSC::dateProtoFuncGetMonth): 6729 (JSC::dateProtoFuncGetUTCMonth): 6730 (JSC::dateProtoFuncGetDate): 6731 (JSC::dateProtoFuncGetUTCDate): 6732 (JSC::dateProtoFuncGetDay): 6733 (JSC::dateProtoFuncGetUTCDay): 6734 (JSC::dateProtoFuncGetHours): 6735 (JSC::dateProtoFuncGetUTCHours): 6736 (JSC::dateProtoFuncGetMinutes): 6737 (JSC::dateProtoFuncGetUTCMinutes): 6738 (JSC::dateProtoFuncGetSeconds): 6739 (JSC::dateProtoFuncGetUTCSeconds): 6740 (JSC::dateProtoFuncGetTimezoneOffset): 6741 (JSC::setNewValueFromTimeArgs): 6742 (JSC::setNewValueFromDateArgs): 6743 (JSC::dateProtoFuncSetYear): 6744 (JSC::dateProtoFuncGetYear): Pass an ExecState to these functions, so they 6745 can access the DateInstanceCache. 6746 6747 * runtime/JSGlobalData.h: Keep a DateInstanceCache. 6748 67492009-10-27 James Robinson <jamesr@chromium.org> 6750 6751 Reviewed by Darin Fisher. 6752 6753 Ensures that JavaScriptCore/wtf/CurrentTime.cpp is not built in PLATFORM(CHROMIUM) builds. 6754 6755 Chromium uses a different method to calculate the current time than is used in 6756 JavaScriptCore/wtf/CurrentTime.cpp. This can lead to time skew when calls to currentTime() and Chromium's time 6757 function are mixed. In particular, timers can get scheduled in the past which leads to 100% CPU use. 6758 See http://code.google.com/p/chromium/issues/detail?id=25892 for an example. 6759 6760 https://bugs.webkit.org/show_bug.cgi?id=30833 6761 6762 * JavaScriptCore.gyp/JavaScriptCore.gyp: 6763 * wtf/CurrentTime.cpp: 6764 67652009-10-27 Peter Varga <pvarga@inf.u-szeged.hu> 6766 6767 Rubber-stamped by Tor Arne Vestbø. 6768 6769 Fix typo in RegexInterpreter.cpp and RegexJIT.cpp alterantive to 6770 alternative. 6771 6772 * yarr/RegexInterpreter.cpp: 6773 (JSC::Yarr::ByteCompiler::alternativeBodyDisjunction): 6774 (JSC::Yarr::ByteCompiler::alternativeDisjunction): 6775 (JSC::Yarr::ByteCompiler::emitDisjunction): 6776 * yarr/RegexJIT.cpp: 6777 (JSC::Yarr::RegexGenerator::generateDisjunction): 6778 67792009-10-26 Laszlo Gombos <laszlo.1.gombos@nokia.com> 6780 6781 Reviewed by Darin Adler. 6782 6783 Make .rc files compile on Windows without depending on MFC headers 6784 https://bugs.webkit.org/show_bug.cgi?id=30750 6785 6786 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.rc: Use 6787 winresrc.h because it exists even when MFC is not installed, and is 6788 all that's needed here. 6789 67902009-10-26 Gabor Loki <loki@inf.u-szeged.hu> 6791 6792 Reviewed by Gavin Barraclough. 6793 6794 The thunkReturnAddress is on JITStackFrame on ARM JIT as well 6795 https://bugs.webkit.org/show_bug.cgi?id=30782 6796 6797 Move the thunkReturnAddress from top of the stack into the JITStackFrame 6798 structure. This is a requirement for JSValue32_64 support on ARM. 6799 6800 * assembler/MacroAssemblerARM.h: 6801 (JSC::MacroAssemblerARM::ret): Return with link register 6802 (JSC::MacroAssemblerARM::prepareCall): Store the return address in link register 6803 * jit/JIT.h: Remove unused ctiReturnRegister 6804 * jit/JITInlineMethods.h: Same as ARMv7 6805 (JSC::JIT::restoreArgumentReference): Ditto. 6806 (JSC::JIT::restoreArgumentReferenceForTrampoline): Ditto. 6807 * jit/JITOpcodes.cpp: Remove ctiReturnRegister related instruction 6808 * jit/JITStubs.cpp: Store thunkReturnAddress on JITStackFrame. Use 6809 small trampoline functions which handle return addresses for each 6810 CTI_STUB_FUNCTION. 6811 * jit/JITStubs.h: Store thunkReturnAddress on JITStackFrame 6812 (JSC::JITStackFrame::returnAddressSlot): Return with the address of thunkReturnAddress 6813 * yarr/RegexJIT.cpp: 6814 (JSC::Yarr::RegexGenerator::generateEnter): Remove the unnecessary instruction 6815 68162009-10-26 Steve Block <steveblock@google.com> 6817 6818 Reviewed by Darin Adler. 6819 6820 Adds ability to disable ReadWriteLock on platforms (eg Android) that use pthreads but do not support pthread_rwlock. 6821 https://bugs.webkit.org/show_bug.cgi?id=30713 6822 6823 * wtf/Platform.h: Modified. Defines HAVE_PTHREAD_RWLOCK for all platforms currently using pthreads. 6824 * wtf/Threading.h: Modified. Use pthread_rwlock_t only when HAVE_PTHREAD_RWLOCK is defined. 6825 * wtf/ThreadingPthreads.cpp: Modified. Build ReadWriteLock methods only when HAVE_PTHREAD_RWLOCK is defined. 6826 68272009-10-24 Laszlo Gombos <laszlo.1.gombos@nokia.com> 6828 6829 Reviewed by Holger Freyther. 6830 6831 [Qt] [Symbian] Set the capability and memory required to run QtWebKit for Symbian 6832 https://bugs.webkit.org/show_bug.cgi?id=30476 6833 6834 Assign ReadUserData WriteUserData NetworkServices Symbian capabilities 6835 to jsc.exe. 6836 6837 * jsc.pro: 6838 68392009-10-23 Steve Block <steveblock@google.com> 6840 6841 Reviewed by Dmitry Titov. 6842 6843 Fixes a leak in createThreadInternal on Android. 6844 https://bugs.webkit.org/show_bug.cgi?id=30698 6845 6846 * wtf/ThreadingPthreads.cpp: Modified. 6847 (WTF::createThreadInternal): Avoid leaking a ThreadData object on failure. 6848 68492009-10-22 Geoffrey Garen <ggaren@apple.com> 6850 6851 Reviewed by Alexey Proskuryakov. 6852 6853 Fixed ASSERT when opening Safari's Caches window while the Web Inspector 6854 is open. 6855 6856 * runtime/Collector.cpp: 6857 (JSC::typeName): Added two new types to the type name list in the Collector. 6858 These types have been around for a while, but nobody remembered to consider them here. 6859 6860 * runtime/JSCell.h: 6861 (JSC::JSCell::isPropertyNameIterator): 6862 * runtime/JSPropertyNameIterator.h: 6863 (JSC::JSPropertyNameIterator::isPropertyNameIterator): Give the Collector 6864 a way to tell if a cell is a JSPropertyNameIterator. 6865 68662009-10-22 Steve Falkenburg <sfalken@apple.com> 6867 6868 Reviewed by Jon Honeycutt. 6869 6870 https://bugs.webkit.org/show_bug.cgi?id=30686 6871 Remove debug-specific def file. 6872 Only Debug_All target uses JavaScriptCore_debug.dll naming, and since 6873 that target is only used internally, maintaining two files just to 6874 suppress a single link warning isn't worthwhile. 6875 6876 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreCommon.vsprops: 6877 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def: Removed. 6878 68792009-10-21 Jon Honeycutt <jhoneycutt@apple.com> 6880 6881 <rdar://problem/7270320> Screenshots of off-screen plug-ins are blank 6882 <rdar://problem/7270314> After halting a transparent PluginView on 6883 Windows, the transparency is applied twice 6884 6885 Reviewed by Dan Bernstein. 6886 6887 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: 6888 Export WTF::deleteOwnedPtr(HDC). 6889 6890 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def: 6891 Ditto. 6892 68932009-10-20 Geoffrey Garen <ggaren@apple.com> 6894 6895 Windows build fix: updated variable name. 6896 6897 * runtime/DatePrototype.cpp: 6898 (JSC::formatLocaleDate): 6899 69002009-10-20 Geoffrey Garen <ggaren@apple.com> 6901 6902 Reviewed by Mark Rowe. 6903 6904 * jit/JITOpcodes.cpp: 6905 (JSC::JIT::emit_op_next_pname): Slightly tweaked this #ifdef to match the 6906 size of a JSValue because m_jsStrings is an array of JSValues. 6907 69082009-10-20 Geoffrey Garen <ggaren@apple.com> 6909 6910 Reviewed by Mark Rowe. 6911 6912 Fixed a 64-bit regression caused by the fix for 6913 https://bugs.webkit.org/show_bug.cgi?id=30570. 6914 6915 * jit/JITOpcodes.cpp: 6916 (JSC::JIT::emit_op_next_pname): Use TimesEight stepping on 64-bit, since 6917 64-bit pointers are eight bytes long. 6918 69192009-10-20 Geoffrey Garen <ggaren@apple.com> 6920 6921 Reviewed by Sam Weinig. 6922 6923 Refactored DateInstance::msToGregorianDateTime so that a DateInstance's 6924 caller doesn't need to supply the DateInstance's own internal value to 6925 the DateInstance. 6926 6927 * runtime/DateInstance.cpp: 6928 (JSC::DateInstance::getGregorianDateTime): Renamed from "msToGregorianDateTime". 6929 6930 * runtime/DateInstance.h: 6931 * runtime/DatePrototype.cpp: 6932 (JSC::formatLocaleDate): 6933 (JSC::dateProtoFuncToString): 6934 (JSC::dateProtoFuncToUTCString): 6935 (JSC::dateProtoFuncToISOString): 6936 (JSC::dateProtoFuncToDateString): 6937 (JSC::dateProtoFuncToTimeString): 6938 (JSC::dateProtoFuncToLocaleString): 6939 (JSC::dateProtoFuncToLocaleDateString): 6940 (JSC::dateProtoFuncToLocaleTimeString): 6941 (JSC::dateProtoFuncGetTime): 6942 (JSC::dateProtoFuncGetFullYear): 6943 (JSC::dateProtoFuncGetUTCFullYear): 6944 (JSC::dateProtoFuncToGMTString): 6945 (JSC::dateProtoFuncGetMonth): 6946 (JSC::dateProtoFuncGetUTCMonth): 6947 (JSC::dateProtoFuncGetDate): 6948 (JSC::dateProtoFuncGetUTCDate): 6949 (JSC::dateProtoFuncGetDay): 6950 (JSC::dateProtoFuncGetUTCDay): 6951 (JSC::dateProtoFuncGetHours): 6952 (JSC::dateProtoFuncGetUTCHours): 6953 (JSC::dateProtoFuncGetMinutes): 6954 (JSC::dateProtoFuncGetUTCMinutes): 6955 (JSC::dateProtoFuncGetSeconds): 6956 (JSC::dateProtoFuncGetUTCSeconds): 6957 (JSC::dateProtoFuncGetTimezoneOffset): 6958 (JSC::setNewValueFromTimeArgs): 6959 (JSC::setNewValueFromDateArgs): 6960 (JSC::dateProtoFuncSetYear): 6961 (JSC::dateProtoFuncGetYear): Also renamed "utc" to "outputIsUTC", for clarity. 6962 69632009-10-20 Gabor Loki <loki@inf.u-szeged.hu> 6964 6965 Reviewed by Geoffrey Garen. 6966 6967 The op_next_pname should use 4 bytes addressing mode in case of JSValue32 6968 https://bugs.webkit.org/show_bug.cgi?id=30570 6969 6970 * jit/JITOpcodes.cpp: 6971 (JSC::JIT::emit_op_next_pname): 6972 69732009-10-20 Gabor Loki <loki@inf.u-szeged.hu> 6974 6975 Reviewed by Oliver Hunt. 6976 6977 Move OverridesMarkChildren flag from DatePrototype to its parent class 6978 https://bugs.webkit.org/show_bug.cgi?id=30372 6979 6980 * runtime/DateInstance.h: 6981 (JSC::DateInstance::createStructure): 6982 * runtime/DatePrototype.h: 6983 69842009-10-19 Geoffrey Garen <ggaren@apple.com> 6985 6986 Reviewed by Oliver Hunt. 6987 6988 Tightened up some put_by_id_transition code generation. 6989 https://bugs.webkit.org/show_bug.cgi?id=30539 6990 6991 * jit/JIT.h: 6992 * jit/JITPropertyAccess.cpp: 6993 (JSC::JIT::testPrototype): 6994 (JSC::JIT::privateCompilePutByIdTransition): No need to do object type 6995 checks or read Structures and prototypes from objects: they're all known 6996 constants at compile time. 6997 69982009-10-19 Geoffrey Garen <ggaren@apple.com> 6999 7000 Reviewed by Sam Weinig. 7001 7002 Added a private API for getting a global context from a context, for 7003 clients who want to preserve a context for a later callback. 7004 7005 * API/APICast.h: 7006 (toGlobalRef): Added an ASSERT, since this function is used more often 7007 than before. 7008 7009 * API/JSContextRef.cpp: 7010 * API/JSContextRefPrivate.h: Added. The new API. 7011 7012 * API/tests/testapi.c: 7013 (print_callAsFunction): 7014 (main): Test the new API. 7015 7016 * JavaScriptCore.exp: 7017 * JavaScriptCore.xcodeproj/project.pbxproj: Build and export the new API. 7018 70192009-10-17 Geoffrey Garen <ggaren@apple.com> 7020 7021 Reviewed by Oliver Hunt. 7022 7023 Tightened up some instanceof code generation. 7024 https://bugs.webkit.org/show_bug.cgi?id=30488 7025 7026 * jit/JITOpcodes.cpp: 7027 (JSC::JIT::emit_op_instanceof): 7028 (JSC::JIT::emitSlow_op_instanceof): No need to do object type checks - 7029 cell type checks and ImplementsDefaultHasIntance checks implicitly 7030 supersede object type checks. 7031 70322009-10-18 Kwang Yul Seo <skyul@company100.net> 7033 7034 Reviewed by Darin Adler. 7035 7036 Use _stricmp and _strnicmp instead of deprecated stricmp and strnicmp. 7037 https://bugs.webkit.org/show_bug.cgi?id=30474 7038 7039 stricmp and strnicmp are deprecated beginning in Visual 7040 C++ 2005. Use _stricmp and _strnicmp instead in StringExtras.h. 7041 7042 * wtf/StringExtras.h: 7043 (strncasecmp): 7044 (strcasecmp): 7045 70462009-10-16 Geoffrey Garen <ggaren@apple.com> 7047 7048 Build fix: apparently we shouldn't export those symbols? 7049 7050 * JavaScriptCore.exp: 7051 70522009-10-16 Geoffrey Garen <ggaren@apple.com> 7053 7054 Build fix: export some symbols. 7055 7056 * JavaScriptCore.exp: 7057 70582009-10-16 Oliver Hunt <oliver@apple.com> 7059 7060 Reviewed by Gavin Barraclough. 7061 7062 structure typeinfo flags should be inherited. 7063 https://bugs.webkit.org/show_bug.cgi?id=30468 7064 7065 Add StructureFlag constant to the various JSC classes and use 7066 it for the TypeInfo construction. This allows us to simply 7067 accumulate flags by basing each classes StructureInfo on its parents. 7068 7069 * API/JSCallbackConstructor.h: 7070 (JSC::JSCallbackConstructor::createStructure): 7071 * API/JSCallbackFunction.h: 7072 (JSC::JSCallbackFunction::createStructure): 7073 * API/JSCallbackObject.h: 7074 (JSC::JSCallbackObject::createStructure): 7075 * debugger/DebuggerActivation.h: 7076 (JSC::DebuggerActivation::createStructure): 7077 * runtime/Arguments.h: 7078 (JSC::Arguments::createStructure): 7079 * runtime/BooleanObject.h: 7080 (JSC::BooleanObject::createStructure): 7081 * runtime/DatePrototype.h: 7082 (JSC::DatePrototype::createStructure): 7083 * runtime/FunctionPrototype.h: 7084 (JSC::FunctionPrototype::createStructure): 7085 * runtime/GlobalEvalFunction.h: 7086 (JSC::GlobalEvalFunction::createStructure): 7087 * runtime/InternalFunction.h: 7088 (JSC::InternalFunction::createStructure): 7089 * runtime/JSActivation.h: 7090 (JSC::JSActivation::createStructure): 7091 * runtime/JSArray.h: 7092 (JSC::JSArray::createStructure): 7093 * runtime/JSByteArray.cpp: 7094 (JSC::JSByteArray::createStructure): 7095 * runtime/JSByteArray.h: 7096 * runtime/JSFunction.h: 7097 (JSC::JSFunction::createStructure): 7098 * runtime/JSGlobalObject.h: 7099 (JSC::JSGlobalObject::createStructure): 7100 * runtime/JSNotAnObject.h: 7101 (JSC::JSNotAnObject::createStructure): 7102 * runtime/JSONObject.h: 7103 (JSC::JSONObject::createStructure): 7104 * runtime/JSObject.h: 7105 (JSC::JSObject::createStructure): 7106 * runtime/JSStaticScopeObject.h: 7107 (JSC::JSStaticScopeObject::createStructure): 7108 * runtime/JSVariableObject.h: 7109 (JSC::JSVariableObject::createStructure): 7110 * runtime/JSWrapperObject.h: 7111 (JSC::JSWrapperObject::createStructure): 7112 * runtime/MathObject.h: 7113 (JSC::MathObject::createStructure): 7114 * runtime/NumberConstructor.h: 7115 (JSC::NumberConstructor::createStructure): 7116 * runtime/NumberObject.h: 7117 (JSC::NumberObject::createStructure): 7118 * runtime/RegExpConstructor.h: 7119 (JSC::RegExpConstructor::createStructure): 7120 * runtime/RegExpObject.h: 7121 (JSC::RegExpObject::createStructure): 7122 * runtime/StringObject.h: 7123 (JSC::StringObject::createStructure): 7124 * runtime/StringObjectThatMasqueradesAsUndefined.h: 7125 (JSC::StringObjectThatMasqueradesAsUndefined::createStructure): 7126 71272009-10-16 Geoffrey Garen <ggaren@apple.com> 7128 7129 Reviewed by Oliver Hunt. 7130 7131 Fast for-in enumeration: Cache JSPropertyNameIterator; cache JSStrings 7132 in JSPropertyNameIterator; inline more code. 7133 7134 1.024x as fast on SunSpider (fasta: 1.43x as fast). 7135 7136 * bytecode/CodeBlock.cpp: 7137 (JSC::CodeBlock::dump): 7138 * bytecode/Opcode.h: 7139 * bytecompiler/BytecodeGenerator.cpp: 7140 (JSC::BytecodeGenerator::emitGetPropertyNames): 7141 (JSC::BytecodeGenerator::emitNextPropertyName): 7142 * bytecompiler/BytecodeGenerator.h: Added a few extra operands to 7143 op_get_pnames and op_next_pname so that we can track iteration state 7144 in the register file instead of in the JSPropertyNameIterator. (To be 7145 cacheable, the JSPropertyNameIterator must be stateless.) 7146 7147 * interpreter/Interpreter.cpp: 7148 (JSC::Interpreter::tryCachePutByID): 7149 (JSC::Interpreter::tryCacheGetByID): Updated for rename to 7150 "normalizePrototypeChain" and removal of "isCacheable". 7151 7152 (JSC::Interpreter::privateExecute): Updated for in-RegisterFile 7153 iteration state tracking. 7154 7155 * jit/JIT.cpp: 7156 (JSC::JIT::privateCompileMainPass): 7157 * jit/JIT.h: 7158 * jit/JITOpcodes.cpp: 7159 (JSC::JIT::emit_op_get_pnames): Updated for in-RegisterFile 7160 iteration state tracking. 7161 7162 (JSC::JIT::emit_op_next_pname): Inlined code generation for op_next_pname. 7163 7164 * jit/JITStubs.cpp: 7165 (JSC::JITThunks::tryCachePutByID): 7166 (JSC::JITThunks::tryCacheGetByID): Updated for rename to 7167 "normalizePrototypeChain" and removal of "isCacheable". 7168 7169 (JSC::DEFINE_STUB_FUNCTION): 7170 * jit/JITStubs.h: 7171 (JSC::): Added has_property and to_object stubs. Removed op_next_pname 7172 stub, since has_property is all we need anymore. 7173 7174 * parser/Nodes.cpp: 7175 (JSC::ForInNode::emitBytecode): Updated for in-RegisterFile 7176 iteration state tracking. 7177 7178 * runtime/JSCell.h: 7179 * runtime/JSObject.cpp: 7180 (JSC::JSObject::getPropertyNames): Don't do caching at this layer 7181 anymore, since we don't create a JSPropertyNameIterator at this layer. 7182 7183 * runtime/JSPropertyNameIterator.cpp: 7184 (JSC::JSPropertyNameIterator::create): Do do caching at this layer. 7185 (JSC::JSPropertyNameIterator::get): Updated for in-RegisterFile 7186 iteration state tracking. 7187 (JSC::JSPropertyNameIterator::markChildren): Mark our JSStrings. 7188 7189 * runtime/JSPropertyNameIterator.h: 7190 (JSC::JSPropertyNameIterator::size): 7191 (JSC::JSPropertyNameIterator::setCachedStructure): 7192 (JSC::JSPropertyNameIterator::cachedStructure): 7193 (JSC::JSPropertyNameIterator::setCachedPrototypeChain): 7194 (JSC::JSPropertyNameIterator::cachedPrototypeChain): 7195 (JSC::JSPropertyNameIterator::JSPropertyNameIterator): 7196 (JSC::Structure::setEnumerationCache): Don't store iteration state in 7197 a JSPropertyNameIterator. Do cache a JSPropertyNameIterator in a 7198 Structure. 7199 7200 * runtime/JSValue.h: 7201 (JSC::asCell): 7202 * runtime/MarkStack.h: Make those mischievous #include gods happy. 7203 7204 * runtime/ObjectConstructor.cpp: 7205 7206 * runtime/Operations.h: 7207 (JSC::normalizePrototypeChain): Renamed countPrototypeChainEntriesAndCheckForProxies 7208 to normalizePrototypeChain, since it changes dictionary prototypes to 7209 non-dictionary objects. 7210 7211 * runtime/PropertyNameArray.cpp: 7212 (JSC::PropertyNameArray::add): 7213 * runtime/PropertyNameArray.h: 7214 (JSC::PropertyNameArrayData::PropertyNameArrayData): 7215 (JSC::PropertyNameArray::data): 7216 (JSC::PropertyNameArray::size): 7217 (JSC::PropertyNameArray::begin): 7218 (JSC::PropertyNameArray::end): Simplified some code here to help with 7219 current and future refactoring. 7220 7221 * runtime/Protect.h: 7222 * runtime/Structure.cpp: 7223 (JSC::Structure::~Structure): 7224 (JSC::Structure::addPropertyWithoutTransition): 7225 (JSC::Structure::removePropertyWithoutTransition): No need to clear 7226 the enumeration cache with adding / removing properties without 7227 transition. It is an error to add / remove properties without transition 7228 once an object has been observed, and we can ASSERT to catch that. 7229 7230 * runtime/Structure.h: 7231 (JSC::Structure::enumerationCache): Changed the enumeration cache to 7232 hold a JSPropertyNameIterator. 7233 7234 * runtime/StructureChain.cpp: 7235 * runtime/StructureChain.h: 7236 (JSC::StructureChain::head): Removed StructureChain::isCacheable because 7237 it was wrong-headed in two ways: (1) It gave up when a prototype was a 7238 dictionary, but instead we want un-dictionary heavily accessed 7239 prototypes; (2) It folded a test for hasDefaultGetPropertyNames() into 7240 a generic test for "cacheable-ness", but hasDefaultGetPropertyNames() 7241 is only releavant to for-in caching. 7242 72432009-10-16 Steve Falkenburg <sfalken@apple.com> 7244 7245 Reviewed by Adam Roben. 7246 7247 Add a Debug_All configuration to build entire stack as debug. 7248 Change Debug_Internal to: 7249 - stop using _debug suffix for all WebKit/Safari binaries 7250 - not use _debug as a DLL naming suffix 7251 - use non-debug C runtime lib. 7252 7253 * JavaScriptCore.vcproj/JavaScriptCore.make: Debug build in makefile should build Debug_All. 7254 * JavaScriptCore.vcproj/JavaScriptCore.sln: Add Debug_All configuration. 7255 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: Add Debug_All configuration. 7256 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreGenerated.vcproj: Renamed single configuration from "Release" to "all". 7257 * JavaScriptCore.vcproj/JavaScriptCoreSubmit.sln: Add Debug_All configuration. 7258 * JavaScriptCore.vcproj/WTF/WTF.vcproj: Add Debug_All configuration. 7259 * JavaScriptCore.vcproj/jsc/jsc.vcproj: Add Debug_All configuration. 7260 * JavaScriptCore.vcproj/testapi/testapi.vcproj: Add Debug_All configuration. 7261 72622009-10-16 Oliver Hunt <oliver@apple.com> 7263 7264 Reviewed by Gavin Barraclough. 7265 7266 Make typeinfo flags default to false 7267 https://bugs.webkit.org/show_bug.cgi?id=30372 7268 7269 Last part -- replace HasDefaultGetPropertyNames with OverridesGetPropertyNames 7270 flag. 7271 7272 * API/JSCallbackConstructor.h: 7273 (JSC::JSCallbackConstructor::createStructure): 7274 * API/JSCallbackObject.h: 7275 (JSC::JSCallbackObject::createStructure): 7276 * debugger/DebuggerActivation.h: 7277 (JSC::DebuggerActivation::createStructure): 7278 * runtime/Arguments.h: 7279 (JSC::Arguments::createStructure): 7280 * runtime/BooleanObject.h: 7281 (JSC::BooleanObject::createStructure): 7282 * runtime/DatePrototype.h: 7283 (JSC::DatePrototype::createStructure): 7284 * runtime/FunctionPrototype.h: 7285 (JSC::FunctionPrototype::createStructure): 7286 * runtime/GlobalEvalFunction.h: 7287 (JSC::GlobalEvalFunction::createStructure): 7288 * runtime/JSAPIValueWrapper.h: 7289 (JSC::JSAPIValueWrapper::createStructure): 7290 * runtime/JSActivation.h: 7291 (JSC::JSActivation::createStructure): 7292 * runtime/JSArray.h: 7293 (JSC::JSArray::createStructure): 7294 * runtime/JSByteArray.cpp: 7295 (JSC::JSByteArray::createStructure): 7296 * runtime/JSFunction.h: 7297 (JSC::JSFunction::createStructure): 7298 * runtime/JSGlobalObject.h: 7299 (JSC::JSGlobalObject::createStructure): 7300 * runtime/JSNotAnObject.h: 7301 (JSC::JSNotAnObject::createStructure): 7302 * runtime/JSONObject.h: 7303 (JSC::JSONObject::createStructure): 7304 * runtime/JSObject.cpp: 7305 (JSC::JSObject::getPropertyNames): 7306 * runtime/JSObject.h: 7307 (JSC::JSObject::createStructure): 7308 * runtime/JSStaticScopeObject.h: 7309 (JSC::JSStaticScopeObject::createStructure): 7310 * runtime/JSTypeInfo.h: 7311 (JSC::TypeInfo::overridesGetPropertyNames): 7312 * runtime/JSVariableObject.h: 7313 (JSC::JSVariableObject::createStructure): 7314 * runtime/JSWrapperObject.h: 7315 (JSC::JSWrapperObject::createStructure): 7316 * runtime/MathObject.h: 7317 (JSC::MathObject::createStructure): 7318 * runtime/NumberConstructor.h: 7319 (JSC::NumberConstructor::createStructure): 7320 * runtime/NumberObject.h: 7321 (JSC::NumberObject::createStructure): 7322 * runtime/RegExpConstructor.h: 7323 (JSC::RegExpConstructor::createStructure): 7324 * runtime/RegExpObject.h: 7325 (JSC::RegExpObject::createStructure): 7326 * runtime/StringObject.h: 7327 (JSC::StringObject::createStructure): 7328 * runtime/StringObjectThatMasqueradesAsUndefined.h: 7329 (JSC::StringObjectThatMasqueradesAsUndefined::createStructure): 7330 * runtime/StructureChain.cpp: 7331 (JSC::StructureChain::isCacheable): 7332 73332009-10-16 Kevin Ollivier <kevino@theolliviers.com> 7334 7335 wxMSW build fix, we can't use the simple hash there because the PlatformModuleVersion 7336 structure differs. 7337 7338 * wtf/Platform.h: 7339 73402009-10-16 Laszlo Gombos <laszlo.1.gombos@nokia.com> 7341 7342 Reviewed by Simon Hausmann. 7343 7344 [Qt] Implement ExecutableAllocator for Symbian 7345 https://bugs.webkit.org/show_bug.cgi?id=29946 7346 7347 Tested with YARR JIT enabled for Symbian; 7348 This patch does not (yet) enable YARR JIT by default. 7349 7350 * JavaScriptCore.pri: 7351 * jit/ExecutableAllocator.h: 7352 * jit/ExecutableAllocatorSymbian.cpp: Added. 7353 (JSC::ExecutableAllocator::intializePageSize): 7354 (JSC::ExecutablePool::systemAlloc): 7355 (JSC::ExecutablePool::systemRelease): 7356 73572009-10-15 Oliver Hunt <oliver@apple.com> 7358 7359 Reviewed by Darin Adler. 7360 7361 Make typeinfo flags default to false 7362 https://bugs.webkit.org/show_bug.cgi?id=30372 7363 7364 Part 2 -- Reverse the TypeInfo HasDefaultMark flag to OverridesMarkChildren, etc 7365 7366 * API/JSCallbackConstructor.h: 7367 (JSC::JSCallbackConstructor::createStructure): 7368 * API/JSCallbackFunction.h: 7369 (JSC::JSCallbackFunction::createStructure): 7370 * API/JSCallbackObject.h: 7371 (JSC::JSCallbackObject::createStructure): 7372 * debugger/DebuggerActivation.h: 7373 (JSC::DebuggerActivation::createStructure): 7374 * runtime/Arguments.h: 7375 (JSC::Arguments::createStructure): 7376 * runtime/BooleanObject.h: 7377 (JSC::BooleanObject::createStructure): 7378 * runtime/DatePrototype.h: 7379 (JSC::DatePrototype::createStructure): 7380 * runtime/FunctionPrototype.h: 7381 (JSC::FunctionPrototype::createStructure): 7382 * runtime/GetterSetter.h: 7383 (JSC::GetterSetter::createStructure): 7384 * runtime/GlobalEvalFunction.h: 7385 (JSC::GlobalEvalFunction::createStructure): 7386 * runtime/InternalFunction.h: 7387 (JSC::InternalFunction::createStructure): 7388 * runtime/JSAPIValueWrapper.h: 7389 (JSC::JSAPIValueWrapper::createStructure): 7390 * runtime/JSActivation.h: 7391 (JSC::JSActivation::createStructure): 7392 * runtime/JSArray.h: 7393 (JSC::JSArray::createStructure): 7394 (JSC::MarkStack::markChildren): 7395 * runtime/JSByteArray.cpp: 7396 (JSC::JSByteArray::createStructure): 7397 * runtime/JSFunction.h: 7398 (JSC::JSFunction::createStructure): 7399 * runtime/JSGlobalObject.h: 7400 (JSC::JSGlobalObject::createStructure): 7401 * runtime/JSNotAnObject.h: 7402 (JSC::JSNotAnObject::createStructure): 7403 * runtime/JSNumberCell.h: 7404 (JSC::JSNumberCell::createStructure): 7405 * runtime/JSONObject.h: 7406 (JSC::JSONObject::createStructure): 7407 * runtime/JSObject.h: 7408 (JSC::JSObject::createStructure): 7409 * runtime/JSPropertyNameIterator.h: 7410 (JSC::JSPropertyNameIterator::createStructure): 7411 * runtime/JSStaticScopeObject.h: 7412 (JSC::JSStaticScopeObject::createStructure): 7413 * runtime/JSString.h: 7414 (JSC::JSString::createStructure): 7415 * runtime/JSTypeInfo.h: 7416 (JSC::TypeInfo::overridesMarkChildren): 7417 * runtime/JSVariableObject.h: 7418 (JSC::JSVariableObject::createStructure): 7419 * runtime/JSWrapperObject.h: 7420 (JSC::JSWrapperObject::createStructure): 7421 * runtime/MathObject.h: 7422 (JSC::MathObject::createStructure): 7423 * runtime/NumberConstructor.h: 7424 (JSC::NumberConstructor::createStructure): 7425 * runtime/NumberObject.h: 7426 (JSC::NumberObject::createStructure): 7427 * runtime/RegExpConstructor.h: 7428 (JSC::RegExpConstructor::createStructure): 7429 * runtime/RegExpObject.h: 7430 (JSC::RegExpObject::createStructure): 7431 * runtime/StringObject.h: 7432 (JSC::StringObject::createStructure): 7433 * runtime/StringObjectThatMasqueradesAsUndefined.h: 7434 (JSC::StringObjectThatMasqueradesAsUndefined::createStructure): 7435 74362009-10-14 Oliver Hunt <oliver@apple.com> 7437 7438 Reviewed by Geoff Garen. 7439 7440 Make typeinfo flags default to false 7441 https://bugs.webkit.org/show_bug.cgi?id=30372 7442 7443 Part 1. Reverse the HasStandardGetOwnPropertySlot flag. 7444 7445 * API/JSCallbackConstructor.h: 7446 (JSC::JSCallbackConstructor::createStructure): 7447 * API/JSCallbackFunction.h: 7448 (JSC::JSCallbackFunction::createStructure): 7449 * API/JSCallbackObject.h: 7450 (JSC::JSCallbackObject::createStructure): 7451 * debugger/DebuggerActivation.h: 7452 (JSC::DebuggerActivation::createStructure): 7453 * jit/JITStubs.cpp: 7454 (JSC::DEFINE_STUB_FUNCTION): 7455 * runtime/Arguments.h: 7456 (JSC::Arguments::createStructure): 7457 * runtime/BooleanObject.h: 7458 (JSC::BooleanObject::createStructure): 7459 * runtime/DatePrototype.h: 7460 (JSC::DatePrototype::createStructure): 7461 * runtime/FunctionPrototype.h: 7462 (JSC::FunctionPrototype::createStructure): 7463 * runtime/GlobalEvalFunction.h: 7464 (JSC::GlobalEvalFunction::createStructure): 7465 * runtime/InternalFunction.h: 7466 (JSC::InternalFunction::createStructure): 7467 * runtime/JSActivation.h: 7468 (JSC::JSActivation::createStructure): 7469 * runtime/JSArray.h: 7470 (JSC::JSArray::createStructure): 7471 * runtime/JSByteArray.cpp: 7472 (JSC::JSByteArray::createStructure): 7473 * runtime/JSFunction.h: 7474 (JSC::JSFunction::createStructure): 7475 * runtime/JSGlobalObject.h: 7476 (JSC::JSGlobalObject::createStructure): 7477 * runtime/JSNumberCell.h: 7478 (JSC::JSNumberCell::createStructure): 7479 * runtime/JSONObject.h: 7480 (JSC::JSONObject::createStructure): 7481 * runtime/JSObject.h: 7482 (JSC::JSObject::createStructure): 7483 (JSC::JSCell::fastGetOwnPropertySlot): 7484 * runtime/JSStaticScopeObject.h: 7485 (JSC::JSStaticScopeObject::createStructure): 7486 * runtime/JSString.h: 7487 (JSC::JSString::createStructure): 7488 * runtime/JSTypeInfo.h: 7489 (JSC::TypeInfo::overridesGetOwnPropertySlot): 7490 * runtime/JSVariableObject.h: 7491 (JSC::JSVariableObject::createStructure): 7492 * runtime/JSWrapperObject.h: 7493 (JSC::JSWrapperObject::createStructure): 7494 * runtime/MathObject.h: 7495 (JSC::MathObject::createStructure): 7496 * runtime/NumberConstructor.h: 7497 (JSC::NumberConstructor::createStructure): 7498 * runtime/NumberObject.h: 7499 (JSC::NumberObject::createStructure): 7500 * runtime/RegExpConstructor.h: 7501 (JSC::RegExpConstructor::createStructure): 7502 * runtime/RegExpObject.h: 7503 (JSC::RegExpObject::createStructure): 7504 * runtime/StringObject.h: 7505 (JSC::StringObject::createStructure): 7506 * runtime/StringObjectThatMasqueradesAsUndefined.h: 7507 (JSC::StringObjectThatMasqueradesAsUndefined::createStructure): 7508 75092009-10-14 Kevin Ollivier <kevino@theolliviers.com> 75102009-10-14 Darin Adler <darin@apple.com> 7511 7512 Additions so fix for https://bugs.webkit.org/show_bug.cgi?id=18994 7513 can build on Windows. 7514 7515 * wtf/MathExtras.h: Added llround and llroundf for Windows. 7516 75172009-10-14 Kevin Ollivier <kevino@theolliviers.com> 7518 7519 wx build fix. Set ENABLE_PLUGIN_PACKAGE_SIMPLE_HASH for plugins while we're still building stubs. 7520 7521 * wtf/Platform.h: 7522 75232009-10-13 Laszlo Gombos <laszlo.1.gombos@nokia.com> 7524 7525 Reviewed by Simon Hausmann. 7526 7527 Refactor ENABLE_PLUGIN_PACKAGE_SIMPLE_HASH 7528 https://bugs.webkit.org/show_bug.cgi?id=30278 7529 7530 Move the definition of ENABLE_PLUGIN_PACKAGE_SIMPLE_HASH 7531 from the make system into common code. 7532 7533 * wtf/Platform.h: 7534 75352009-10-13 Laszlo Gombos <laszlo.1.gombos@nokia.com> 7536 7537 Reviewed by Darin Adler. 7538 7539 ARM compiler does not understand reinterpret_cast<void*> 7540 https://bugs.webkit.org/show_bug.cgi?id=29034 7541 7542 Change reinterpret_cast<void*> to regular C style (void*) cast 7543 for the ARM RVCT compiler. 7544 7545 * assembler/MacroAssemblerCodeRef.h: 7546 (JSC::FunctionPtr::FunctionPtr): 7547 * jit/JITOpcodes.cpp: Cast to FunctionPtr first 7548 instead of directly casting to reinterpret_cast 7549 * jit/JITStubCall.h: Ditto + change the type of m_stub 7550 from void* to FunctionPtr. 7551 (JSC::JITStubCall::JITStubCall): 7552 (JSC::JITStubCall::call): 7553 * jit/JITStubs.cpp: Ditto. 7554 (JSC::DEFINE_STUB_FUNCTION(EncodedJSValue, op_throw)): 7555 75562009-10-11 Oliver Hunt <oliver@apple.com> 7557 7558 Re-enable the JIT. 7559 7560 * wtf/Platform.h: 7561 75622009-10-10 Oliver Hunt <oliver@apple.com> 7563 7564 Reviewed by Maciej Stachowiak. 7565 7566 Support for String.trim(), String.trimLeft() and String.trimRight() methods 7567 https://bugs.webkit.org/show_bug.cgi?id=26590 7568 7569 Implement trim, trimLeft, and trimRight 7570 7571 * runtime/StringPrototype.cpp: 7572 (JSC::isTrimWhitespace): 7573 Our normal string whitespace function does not include U+200B which 7574 is needed for compatibility with mozilla's implementation of trim. 7575 U+200B does not appear to be expected according to spec, however I am 7576 choosing to be lax, and match mozilla behavior so have added this 7577 exception. 7578 (JSC::trimString): 7579 75802009-10-09 Geoffrey Garen <ggaren@apple.com> 7581 7582 Reviewed by Oliver Hunt. 7583 7584 Eliminated some legacy bytecode weirdness. 7585 7586 Use vPC[x] subscripting instead of ++vPC to access instruction operands. 7587 This is simpler, and often more efficient. 7588 7589 To support this, and to remove use of hard-coded offsets in bytecode and 7590 JIT code generation and dumping, calculate jump offsets from the beginning 7591 of an instruction, rather than the middle or end. 7592 7593 Also, use OPCODE_LENGTH instead of hard-coded constants for the sizes of 7594 opcodes. 7595 7596 SunSpider reports no change in JIT mode, and a 1.01x speedup in Interpreter 7597 mode. 7598 7599 * bytecode/CodeBlock.cpp: 7600 (JSC::printConditionalJump): 7601 (JSC::CodeBlock::dump): 7602 * bytecompiler/BytecodeGenerator.cpp: 7603 (JSC::BytecodeGenerator::emitJump): 7604 (JSC::BytecodeGenerator::emitJumpIfTrue): 7605 (JSC::BytecodeGenerator::emitJumpIfFalse): 7606 (JSC::BytecodeGenerator::emitJumpIfNotFunctionCall): 7607 (JSC::BytecodeGenerator::emitJumpIfNotFunctionApply): 7608 (JSC::BytecodeGenerator::emitComplexJumpScopes): 7609 (JSC::BytecodeGenerator::emitJumpScopes): 7610 (JSC::BytecodeGenerator::emitNextPropertyName): 7611 (JSC::BytecodeGenerator::emitCatch): 7612 (JSC::BytecodeGenerator::emitJumpSubroutine): 7613 (JSC::prepareJumpTableForImmediateSwitch): 7614 (JSC::prepareJumpTableForCharacterSwitch): 7615 (JSC::prepareJumpTableForStringSwitch): 7616 (JSC::BytecodeGenerator::endSwitch): 7617 * bytecompiler/Label.h: 7618 (JSC::Label::setLocation): 7619 (JSC::Label::bind): 7620 * interpreter/Interpreter.cpp: 7621 (JSC::Interpreter::resolve): 7622 (JSC::Interpreter::resolveSkip): 7623 (JSC::Interpreter::resolveGlobal): 7624 (JSC::Interpreter::resolveBase): 7625 (JSC::Interpreter::resolveBaseAndProperty): 7626 (JSC::Interpreter::createExceptionScope): 7627 (JSC::Interpreter::privateExecute): 7628 * interpreter/Interpreter.h: 7629 * jit/JIT.cpp: 7630 (JSC::JIT::privateCompile): 7631 * jit/JITArithmetic.cpp: 7632 (JSC::JIT::emit_op_jnless): 7633 (JSC::JIT::emitSlow_op_jnless): 7634 (JSC::JIT::emit_op_jnlesseq): 7635 (JSC::JIT::emitSlow_op_jnlesseq): 7636 (JSC::JIT::emitBinaryDoubleOp): 7637 * jit/JITOpcodes.cpp: 7638 (JSC::JIT::emit_op_jmp): 7639 (JSC::JIT::emit_op_loop): 7640 (JSC::JIT::emit_op_loop_if_less): 7641 (JSC::JIT::emitSlow_op_loop_if_less): 7642 (JSC::JIT::emit_op_loop_if_lesseq): 7643 (JSC::JIT::emitSlow_op_loop_if_lesseq): 7644 (JSC::JIT::emit_op_loop_if_true): 7645 (JSC::JIT::emitSlow_op_loop_if_true): 7646 (JSC::JIT::emit_op_jfalse): 7647 (JSC::JIT::emitSlow_op_jfalse): 7648 (JSC::JIT::emit_op_jtrue): 7649 (JSC::JIT::emitSlow_op_jtrue): 7650 (JSC::JIT::emit_op_jeq_null): 7651 (JSC::JIT::emit_op_jneq_null): 7652 (JSC::JIT::emit_op_jneq_ptr): 7653 (JSC::JIT::emit_op_jsr): 7654 (JSC::JIT::emit_op_next_pname): 7655 (JSC::JIT::emit_op_jmp_scopes): 7656 76572009-10-09 Geoffrey Garen <ggaren@apple.com> 7658 7659 Reviewed by Sam Weinig. 7660 7661 Migrated some code that didn't belong out of Structure. 7662 7663 SunSpider says maybe 1.03x faster. 7664 7665 * runtime/JSCell.h: Nixed Structure::markAggregate, and made marking of 7666 a Structure's prototype the direct responsility of the object using it. 7667 (Giving Structure a mark function was misleading because it implied that 7668 all live structures get marked during GC, when they don't.) 7669 7670 * runtime/JSGlobalObject.cpp: 7671 (JSC::markIfNeeded): 7672 (JSC::JSGlobalObject::markChildren): Added code to mark prototypes stored 7673 on the global object. Maybe this wasn't necessary, but now we don't have 7674 to wonder. 7675 7676 * runtime/JSObject.cpp: 7677 (JSC::JSObject::getPropertyNames): 7678 (JSC::JSObject::getOwnPropertyNames): 7679 (JSC::JSObject::getEnumerableNamesFromClassInfoTable): 7680 * runtime/JSObject.h: 7681 (JSC::JSObject::markChildrenDirect): 7682 * runtime/PropertyNameArray.h: 7683 * runtime/Structure.cpp: 7684 * runtime/Structure.h: 7685 (JSC::Structure::setEnumerationCache): 7686 (JSC::Structure::enumerationCache): Moved property name gathering code 7687 from Structure to JSObject because having a Structure iterate its JSObject 7688 was a layering violation. A JSObject is implemented using a Structure; not 7689 the other way around. 7690 76912009-10-09 Mark Rowe <mrowe@apple.com> 7692 7693 Attempt to fix the GTK release build. 7694 7695 * GNUmakefile.am: Include Grammar.cpp in release builds now that 7696 AllInOneFile.cpp is gone. 7697 76982009-10-09 Gabor Loki <loki@inf.u-szeged.hu> 7699 7700 Rubber-stamped by Eric Seidel. 7701 7702 Add ARM JIT support for Gtk port (disabled by default) 7703 https://bugs.webkit.org/show_bug.cgi?id=30228 7704 7705 * GNUmakefile.am: 7706 77072009-10-08 Geoffrey Garen <ggaren@apple.com> 7708 7709 Tiger build fix: added a few more variable initializations. 7710 7711 * runtime/StringPrototype.cpp: 7712 (JSC::stringProtoFuncReplace): 7713 (JSC::stringProtoFuncSearch): 7714 77152009-10-08 Geoffrey Garen <ggaren@apple.com> 7716 7717 Qt build fix: added missing #include. 7718 7719 * jsc.cpp: 7720 77212009-10-08 Geoffrey Garen <ggaren@apple.com> 7722 7723 Tiger build fix: initialize variable whose initialization the compiler 7724 can't otherwise figure out. 7725 7726 * runtime/RegExpObject.cpp: 7727 (JSC::RegExpObject::match): 7728 77292009-10-08 Geoffrey Garen <ggaren@apple.com> 7730 7731 Windows build fix: updated exports. 7732 7733 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: 7734 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def: 7735 77362009-10-08 Geoffrey Garen <ggaren@apple.com> 7737 7738 Tiger build fix: fixed file name case. 7739 7740 * JavaScriptCore.xcodeproj/project.pbxproj: 7741 77422009-10-08 Geoffrey Garen <ggaren@apple.com> 7743 7744 Reviewed by Maciej Stachowiak. 7745 7746 At long last, I pronounce the death of AllInOneFile.cpp. 7747 7748 SunSpider reports a 1.01x speedup. 7749 7750 * AllInOneFile.cpp: Removed. 7751 * GNUmakefile.am: 7752 * JavaScriptCore.exp: 7753 * JavaScriptCore.gypi: 7754 * JavaScriptCore.xcodeproj/project.pbxproj: Added missing project files 7755 to compilation stages. 7756 7757 * parser/Grammar.y: 7758 * parser/Lexer.cpp: 7759 * parser/Lexer.h: 7760 (JSC::jscyylex): 7761 * runtime/ArrayConstructor.cpp: 7762 (JSC::constructArrayWithSizeQuirk): 7763 * runtime/Collector.h: 7764 * runtime/JSCell.cpp: 7765 (JSC::JSCell::operator new): 7766 * runtime/JSCell.h: 7767 (JSC::JSCell::operator new): 7768 * runtime/JSGlobalObject.cpp: 7769 (JSC::JSGlobalObject::operator new): 7770 * runtime/JSNumberCell.h: 7771 (JSC::JSNumberCell::operator new): 7772 * runtime/JSString.cpp: 7773 * runtime/JSString.h: 7774 (JSC::jsString): 7775 (JSC::jsSubstring): 7776 (JSC::jsOwnedString): 7777 * runtime/RegExpConstructor.cpp: 7778 * runtime/RegExpConstructor.h: 7779 (JSC::RegExpConstructorPrivate::RegExpConstructorPrivate): 7780 (JSC::RegExpConstructorPrivate::lastOvector): 7781 (JSC::RegExpConstructorPrivate::tempOvector): 7782 (JSC::RegExpConstructorPrivate::changeLastOvector): 7783 (JSC::RegExpConstructor::performMatch): 7784 * runtime/StringPrototype.cpp: 7785 (JSC::stringProtoFuncMatch): 7786 * yarr/RegexJIT.cpp: 7787 * yarr/RegexJIT.h: 7788 (JSC::Yarr::executeRegex): Inlined a few things that Shark said 7789 were hot, on the presumption that AllInOneFile.cpp used to inline them 7790 automatically. 7791 77922009-10-08 Zoltan Herczeg <zherczeg@inf.u-szeged.hu> 7793 7794 Reviewed by Gavin Barraclough. 7795 7796 Fix for JIT'ed op_call instructions (evals, constructs, etc.) 7797 when !ENABLE(JIT_OPTIMIZE_CALL) && USE(JSVALUE32_64) 7798 7799 https://bugs.webkit.org/show_bug.cgi?id=30201 7800 7801 * jit/JITCall.cpp: 7802 (JSC::JIT::compileOpCall): 7803 78042009-10-07 Geoffrey Garen <ggaren@apple.com> 7805 7806 Windows build fix: removed no longer exported symbol. 7807 7808 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: 7809 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def: 7810 78112009-10-07 Geoffrey Garen <ggaren@apple.com> 7812 7813 Reviewed by Oliver Hunt. 7814 7815 Fixed <rdar://problem/5751979> Database code takes JSLock on secondary 7816 thread, permanently slowing down JavaScript 7817 7818 Removed the optional lock from Heap::protect, Heap::unprotect, and friends, 7819 since WebCore no longer uses it. 7820 7821 * JavaScriptCore.exp: 7822 * runtime/Collector.cpp: 7823 (JSC::Heap::protect): 7824 (JSC::Heap::unprotect): 7825 (JSC::Heap::markProtectedObjects): 7826 (JSC::Heap::protectedGlobalObjectCount): 7827 (JSC::Heap::protectedObjectCount): 7828 (JSC::Heap::protectedObjectTypeCounts): 7829 * runtime/Collector.h: 7830 78312009-10-07 Zoltan Horvath <zoltan@webkit.org> 7832 7833 Reviewed by Darin Adler. 7834 7835 Allow custom memory allocation control for JavaScriptCore's IdentifierArena 7836 https://bugs.webkit.org/show_bug.cgi?id=30158 7837 7838 Inherits IdentifierArena class from FastAllocBase because it has been 7839 instantiated by 'new' in JavaScriptCore/parser/ParserArena.cpp:36. 7840 7841 * parser/ParserArena.h: 7842 78432009-10-07 Adam Roben <aroben@apple.com> 7844 7845 Export DateInstance::info in a way that works on Windows 7846 7847 Fixes <http://webkit.org/b/30171> 7848 fast/dom/Window/window-postmessage-clone.html fails on Windows 7849 7850 Reviewed by Anders Carlsson. 7851 7852 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: 7853 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def: 7854 Removed the export of DateInstance::info from here. 7855 7856 * runtime/DateInstance.h: Use JS_EXPORTDATA to export 7857 DateInstance::info, which is the required way of exporting data on 7858 Windows. 7859 78602009-10-07 Jørgen Lind <jorgen.lind@nokia.com> 7861 7862 Reviewed by Simon Hausmann. 7863 7864 When enabling or disabling the JIT through .qmake.cache, make sure 7865 to also toggle ENABLE_YARR_JIT. 7866 7867 * JavaScriptCore.pri: 7868 78692009-10-06 Priit Laes <plaes@plaes.org> 7870 7871 Reviewed by Gavin Barraclough. 7872 7873 Linking fails with "relocation R_X86_64_PC32 against symbol 7874 `cti_vm_throw'" 7875 https://bugs.webkit.org/show_bug.cgi?id=28422 7876 7877 * jit/JITStubs.cpp: 7878 Mark cti_vm_throw symbol as PLT-indirect symbol, so it doesn't end up 7879 in text segment causing relocation errors on amd64 architecture. 7880 Introduced new define SYMBOL_STRING_RELOCATION for such symbols. 7881 78822009-10-06 Oliver Hunt <oliver@apple.com> 7883 7884 Windows linking fix 7885 7886 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: 7887 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def: 7888 78892009-10-06 Oliver Hunt <oliver@apple.com> 7890 7891 Reviewed by NOBODY (build fix). 7892 7893 Windows build fix. 7894 7895 * runtime/DateInstance.cpp: 7896 78972009-10-05 Oliver Hunt <oliver@apple.com> 7898 7899 Reviewed by Gavin Barraclough. 7900 7901 It should be possible to post (clone) built-in JS objects to Workers 7902 https://bugs.webkit.org/show_bug.cgi?id=22878 7903 7904 Expose helpers to throw correct exceptions during object graph walk 7905 used for cloning and add a helper function to create Date instances 7906 without going through the JS Date constructor function. 7907 7908 * JavaScriptCore.exp: 7909 * JavaScriptCore.xcodeproj/project.pbxproj: 7910 * runtime/DateInstance.cpp: 7911 (JSC::DateInstance::DateInstance): 7912 * runtime/DateInstance.h: 7913 * runtime/ExceptionHelpers.cpp: 7914 (JSC::createTypeError): 7915 * runtime/ExceptionHelpers.h: 7916 79172009-10-06 David Levin <levin@chromium.org> 7918 7919 Reviewed by Oliver Hunt. 7920 7921 StringImpl needs a method to get an instance for another thread which doesn't copy the underlying buffer. 7922 https://bugs.webkit.org/show_bug.cgi?id=30095 7923 7924 * wtf/CrossThreadRefCounted.h: 7925 Removed an unused function and assert improvement. 7926 (WTF::CrossThreadRefCounted::isOwnedByCurrentThread): Moved out common code from asserts. 7927 (WTF::CrossThreadRefCounted::ref): Changed assert to use the common method. 7928 (WTF::CrossThreadRefCounted::deref): Changed assert to use the common method. 7929 (WTF::CrossThreadRefCounted::crossThreadCopy): Since this includes a potentially 7930 non-threadsafe operation, add an assert that the class is owned by the current thread. 7931 79322009-10-05 Kevin Ollivier <kevino@theolliviers.com> 7933 7934 wx build fix. Add Symbian files to the list of excludes. 7935 7936 * wscript: 7937 79382009-10-05 Jocelyn Turcotte <jocelyn.turcotte@nokia.com> 7939 7940 Reviewed by Simon Hausmann. 7941 7942 [Qt] Remove precompiled header from JavaScriptCore compilation to 7943 prevent qmake warning during autonomous compilation. 7944 https://bugs.webkit.org/show_bug.cgi?id=30069 7945 7946 * JavaScriptCore.pro: 7947 79482009-10-02 Geoffrey Garen <ggaren@apple.com> 7949 7950 Reviewed by Sam Weinig. 7951 7952 Removed the concept of a "fast access cutoff" in arrays, because it 7953 punished some patterns of array access too much, and made things too 7954 complex for inlining in some cases. 7955 7956 1.3% speedup on SunSpider. 7957 7958 * jit/JITOpcodes.cpp: 7959 (JSC::JIT::emitSlow_op_get_by_val): 7960 (JSC::JIT::emitSlow_op_put_by_val): 7961 * jit/JITPropertyAccess.cpp: 7962 (JSC::JIT::emit_op_get_by_val): 7963 (JSC::JIT::emitSlow_op_get_by_val): 7964 (JSC::JIT::emit_op_put_by_val): 7965 (JSC::JIT::emitSlow_op_put_by_val): 7966 * jit/JITStubs.cpp: 7967 * jit/JITStubs.h: 7968 (JSC::): Check m_vectorLength instead of m_fastAccessCutoff when 7969 getting / putting from / to an array. Inline putting past the end of 7970 the array. 7971 7972 * runtime/JSArray.cpp: 7973 (JSC::JSArray::JSArray): 7974 (JSC::JSArray::getOwnPropertySlot): 7975 (JSC::JSArray::getOwnPropertyDescriptor): 7976 (JSC::JSArray::put): 7977 (JSC::JSArray::putSlowCase): 7978 (JSC::JSArray::deleteProperty): 7979 (JSC::JSArray::getOwnPropertyNames): 7980 (JSC::JSArray::increaseVectorLength): 7981 (JSC::JSArray::setLength): 7982 (JSC::JSArray::pop): 7983 (JSC::JSArray::push): 7984 (JSC::JSArray::sort): 7985 (JSC::JSArray::fillArgList): 7986 (JSC::JSArray::copyToRegisters): 7987 (JSC::JSArray::compactForSorting): 7988 (JSC::JSArray::checkConsistency): 7989 * runtime/JSArray.h: 7990 (JSC::JSArray::canGetIndex): 7991 (JSC::JSArray::canSetIndex): 7992 (JSC::JSArray::setIndex): 7993 (JSC::JSArray::markChildrenDirect): Removed m_fastAccessCutoff, and 7994 replaced with checks for JSValue() to detect reads and writes from / to 7995 uninitialized parts of the array. 7996 79972009-10-02 Jonni Rainisto <jonni.rainisto@nokia.com> 7998 7999 Reviewed by Darin Adler. 8000 8001 Math.random() gives too low values on Win32 when _CRT_RAND_S is not defined 8002 https://bugs.webkit.org/show_bug.cgi?id=29956 8003 8004 * wtf/RandomNumber.cpp: 8005 (WTF::randomNumber): Added PLATFORM(WIN_OS) to handle 15bit rand() 8006 80072009-10-02 Geoffrey Garen <ggaren@apple.com> 8008 8009 Reviewed by Sam Weinig. 8010 8011 Take one branch instead of two to test for JSValue(). 8012 8013 1.1% SunSpider speedup. 8014 8015 * jit/JITCall.cpp: 8016 (JSC::JIT::compileOpCall): 8017 * jit/JITOpcodes.cpp: 8018 (JSC::JIT::emit_op_to_jsnumber): 8019 (JSC::JIT::emit_op_create_arguments): 8020 * jit/JITPropertyAccess.cpp: 8021 (JSC::JIT::emitSlow_op_get_by_val): 8022 (JSC::JIT::emit_op_put_by_val): Test for the empty value tag, instead 8023 of testing for the cell tag with a 0 payload. 8024 8025 * runtime/JSValue.cpp: 8026 (JSC::JSValue::description): Added support for dumping the new empty value, 8027 and deleted values, in debug builds. 8028 8029 * runtime/JSValue.h: 8030 (JSC::JSValue::JSValue()): Construct JSValue() with the empty value tag. 8031 8032 (JSC::JSValue::JSValue(JSCell*)): Convert null pointer to the empty value 8033 tag, to avoid having two different c++ versions of null / empty. 8034 8035 (JSC::JSValue::operator bool): Test for the empty value tag, instead 8036 of testing for the cell tag with a 0 payload. 8037 80382009-10-02 Steve Falkenburg <sfalken@apple.com> 8039 8040 Reviewed by Mark Rowe. 8041 8042 <https://bugs.webkit.org/show_bug.cgi?id=29989> 8043 Safari version number shouldn't be exposed in WebKit code 8044 8045 For a WebKit version of 532.3.4: 8046 Product version is: 5.32.3.4 (was 4.0.3.0) 8047 File version is: 5.32.3.4 (was 4.532.3.4) 8048 8049 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.rc: 8050 80512009-10-02 Tor Arne Vestbø <tor.arne.vestbo@nokia.com> 8052 8053 Rubber-stamped by Simon Hausmann. 8054 8055 Fix the Qt on Mac OS X build. 8056 8057 * wtf/FastMalloc.cpp: 8058 80592009-10-02 Jørgen Lind <jorgen.lind@nokia.com> 8060 8061 Reviewed by Simon Hausmann. 8062 8063 Allow enabling and disabling of the JIT through a qmake variable. 8064 8065 Qt's configure may set this variable through .qmake.cache if a 8066 commandline option is given and/or the compile test for hwcap.h 8067 failed/succeeded. 8068 8069 * JavaScriptCore.pri: 8070 80712009-10-01 Mark Rowe <mrowe@apple.com> 8072 8073 Fix the Tiger build. Don't unconditionally enable 3D canvas as it is not supported on Tiger. 8074 8075 * Configurations/FeatureDefines.xcconfig: 8076 80772009-10-01 Yongjun Zhang <yongjun.zhang@nokia.com> 8078 8079 Reviewed by Darin Adler. 8080 8081 https://bugs.webkit.org/show_bug.cgi?id=29187 8082 8083 Don't inline ~ListRefPtr() to work around winscw compiler forward declaration 8084 bug regarding templated classes. 8085 8086 The compiler bug is reported at: 8087 https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=9812 8088 8089 The change will be reverted when the above bug is fixed in winscw compiler. 8090 8091 * wtf/ListRefPtr.h: 8092 (WTF::::~ListRefPtr): 8093 80942009-10-01 Zoltan Horvath <zoltan@webkit.org> 8095 8096 Reviewed by Simon Hausmann. 8097 8098 [Qt] Allow custom memory allocation control for the whole JavaScriptCore 8099 https://bugs.webkit.org/show_bug.cgi?id=27029 8100 8101 Since in JavaScriptCore almost every class which has been instantiated by operator new is 8102 inherited from FastAllocBase (bug #20422), we disable customizing global operator new for the Qt-port 8103 when USE_SYSTEM_MALLOC=0. 8104 8105 Add #include <unistd.h> to FastMalloc.cpp because it's used by TCMalloc_PageHeap::scavengerThread(). 8106 (It's needed for the functionality of TCmalloc.) 8107 8108 Add TCSystemAlloc.cpp to JavaScriptCore.pri if USE_SYSTEM_MALLOC is disabled. 8109 8110 * JavaScriptCore.pri: 8111 * wtf/FastMalloc.cpp: 8112 (WTF::sleep): 8113 * wtf/FastMalloc.h: 8114 81152009-09-30 Gabor Loki <loki@inf.u-szeged.hu> 8116 8117 Reviewed by George Staikos. 8118 8119 Defines two pseudo-platforms for ARM and Thumb-2 instruction set. 8120 https://bugs.webkit.org/show_bug.cgi?id=29122 8121 8122 Introduces WTF_PLATFORM_ARM_TRADITIONAL and WTF_PLATFORM_ARM_THUMB2 8123 macros on ARM platforms. The PLATFORM(ARM_THUMB2) should be used 8124 when Thumb-2 instruction set is the required target. The 8125 PLATFORM(ARM_TRADITIONAL) is for generic ARM instruction set. In 8126 case where the code is common the PLATFORM(ARM) have to be used. 8127 8128 Modified by George Wright <gwright@rim.com> to correctly work 8129 with the RVCT-defined __TARGET_ARCH_ARM and __TARGET_ARCH_THUMB 8130 compiler macros, as well as adding readability changes. 8131 8132 * wtf/Platform.h: 8133 81342009-09-30 Oliver Hunt <oliver@apple.com> 8135 8136 Reviewed by Geoff Garen. 8137 8138 Devirtualise array toString conversion 8139 8140 Tweak the implementation of Array.prototype.toString to have a fast path 8141 when acting on a true JSArray. 8142 8143 * runtime/ArrayPrototype.cpp: 8144 (JSC::arrayProtoFuncToString): 8145 81462009-09-30 Csaba Osztrogonac <oszi@inf.u-szeged.hu> 8147 8148 Reviewed by Geoffrey Garen. 8149 8150 Buildfix for platforms using JSVALUE32. 8151 https://bugs.webkit.org/show_bug.cgi?id=29915 8152 8153 After http://trac.webkit.org/changeset/48905 the build broke in JSVALUE32 case. 8154 Also removed unreachable code. 8155 8156 * jit/JITArithmetic.cpp: 8157 (JSC::JIT::emit_op_add): 8158 - Declaration of "OperandTypes types" moved before first use. 8159 - Typos fixed: dst modified to result, regT2 added. 8160 - Unreachable code removed. 8161 (JSC::JIT::emitSlow_op_add): 8162 - Missing declaration of "OperandTypes types" added. 8163 81642009-09-30 Janne Koskinen <janne.p.koskinen@digia.com> 8165 8166 Reviewed by Simon Hausmann. 8167 8168 Reduce heap size on Symbian from 64MB to 8MB. 8169 8170 This is not a perfect fix, it requires more fine tuning. 8171 But this makes it possible again to debug in the emulator, 8172 which is more important in order to be able to fix other 8173 run-time issues. 8174 8175 * runtime/Collector.h: 8176 81772009-09-30 Janne Koskinen <janne.p.koskinen@digia.com> 8178 8179 Reviewed by Simon Hausmann. 8180 8181 Fix CRASH() macro for Symbian build. 8182 8183 * wtf/Assertions.h: Added missing } 8184 81852009-09-29 Geoffrey Garen <ggaren@apple.com> 8186 8187 Reviewed by Gavin Barraclough. 8188 8189 Inlined a few math operations. 8190 8191 ~1% SunSpider speedup. 8192 8193 * jit/JIT.h: 8194 * jit/JITArithmetic.cpp: 8195 (JSC::JIT::compileBinaryArithOpSlowCase): 8196 (JSC::JIT::emitSlow_op_add): 8197 (JSC::JIT::emitSlow_op_mul): 8198 (JSC::JIT::emit_op_sub): 8199 (JSC::JIT::emitSlow_op_sub): Don't take a stub call when operating on 8200 a constant int and a double. 8201 82022009-09-28 Oliver Hunt <oliver@apple.com> 8203 8204 Reviewed by Gavin Barraclough. 8205 8206 Tidy up codeblock sampler 8207 https://bugs.webkit.org/show_bug.cgi?id=29836 8208 8209 Some rather simple refactoring of codeblock sampler so that 8210 it's easier for us to use it to find problems in non-jsc 8211 environments 8212 8213 * JavaScriptCore.exp: 8214 * bytecode/SamplingTool.h: 8215 * debugger/Debugger.cpp: 8216 (JSC::evaluateInGlobalCallFrame): 8217 * debugger/DebuggerCallFrame.cpp: 8218 (JSC::DebuggerCallFrame::evaluate): 8219 * interpreter/Interpreter.cpp: 8220 (JSC::Interpreter::Interpreter): 8221 (JSC::Interpreter::execute): 8222 (JSC::Interpreter::privateExecute): 8223 (JSC::Interpreter::enableSampler): 8224 (JSC::Interpreter::dumpSampleData): 8225 (JSC::Interpreter::startSampling): 8226 (JSC::Interpreter::stopSampling): 8227 * interpreter/Interpreter.h: 8228 (JSC::Interpreter::sampler): 8229 * jit/JIT.h: 8230 * jsc.cpp: 8231 (runWithScripts): 8232 * runtime/Completion.cpp: 8233 (JSC::checkSyntax): 8234 (JSC::evaluate): 8235 * runtime/Executable.h: 8236 (JSC::EvalExecutable::EvalExecutable): 8237 (JSC::ProgramExecutable::create): 8238 (JSC::ProgramExecutable::ProgramExecutable): 8239 * runtime/JSGlobalData.cpp: 8240 (JSC::JSGlobalData::startSampling): 8241 (JSC::JSGlobalData::stopSampling): 8242 (JSC::JSGlobalData::dumpSampleData): 8243 * runtime/JSGlobalData.h: 8244 * runtime/JSGlobalObjectFunctions.cpp: 8245 (JSC::globalFuncEval): 8246 82472009-09-29 Jeremy Orlow <jorlow@chromium.org> 8248 8249 Reviewed by Dimitri Glazkov. 8250 8251 Add GYP generated files to svn:ignore 8252 https://bugs.webkit.org/show_bug.cgi?id=29895 8253 8254 The following files are generated by JavaScriptCore's GYP file and should be ignored: 8255 8256 pcre.mk 8257 wtf.scons 8258 wtf.mk 8259 SConstruct 8260 wtf_config.scons 8261 wtf_config.mk 8262 pcre.scons 8263 8264 * JavaScriptCore.gyp: Changed property svn:ignore. 8265 82662009-09-29 Geoffrey Garen <ggaren@apple.com> 8267 8268 Reviewed by Sam Weinig. 8269 8270 Standardized an optimization for adding non-numbers. 8271 8272 SunSpider says maybe a tiny speedup. 8273 8274 * jit/JITArithmetic.cpp: 8275 (JSC::JIT::emit_op_add): 8276 (JSC::JIT::emitSlow_op_add): 8277 82782009-09-29 Geoffrey Garen <ggaren@apple.com> 8279 8280 Windows build fix: export a new symbol. 8281 8282 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: 8283 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def: 8284 82852009-09-28 Geoffrey Garen <ggaren@apple.com> 8286 8287 Reviewed by Sam Weinig. 8288 8289 Removed virtual destructor from JSGlobalObjectData to eliminate pointer 8290 fix-ups when accessing JSGlobalObject::d. 8291 8292 Replaced with an explicit destructor function pointer. 8293 8294 6% speedup on bench-alloc-nonretained.js. 8295 8296 * JavaScriptCore.exp: 8297 * runtime/JSGlobalObject.cpp: 8298 (JSC::JSGlobalObject::~JSGlobalObject): 8299 (JSC::JSGlobalObject::destroyJSGlobalObjectData): 8300 * runtime/JSGlobalObject.h: 8301 (JSC::JSGlobalObject::JSGlobalObjectData::JSGlobalObjectData): 8302 (JSC::JSGlobalObject::JSGlobalObject): 8303 83042009-09-29 Janne Koskinen <janne.p.koskinen@digia.com> 8305 8306 Reviewed by David Kilzer. 8307 8308 [Qt] Assert messages prints visible in Symbian 8309 https://bugs.webkit.org/show_bug.cgi?id=29808 8310 8311 Asserts use vprintf to print the messages to stderr. 8312 In Symbian Open C it is not possible to see stderr so 8313 I routed the messages to stdout instead. 8314 8315 * wtf/Assertions.cpp: 8316 83172009-09-29 Janne Koskinen <janne.p.koskinen@digia.com> 8318 8319 Reviewed by Darin Adler. 8320 8321 [Qt] Symbian CRASH macro implementation 8322 8323 Added Symbian specific crash macro that 8324 stops to crash line if JIT debugging is used. 8325 Additional differentiation of access violation 8326 (KERN-EXEC 3) and CRASH panic. 8327 8328 * wtf/Assertions.h: 8329 83302009-09-28 Mark Rowe <mrowe@apple.com> 8331 8332 Fix the PowerPC build. 8333 8334 * JavaScriptCore.exp: 8335 83362009-09-28 Mark Rowe <mrowe@apple.com> 8337 8338 Reviewed by Gavin Barraclough. 8339 8340 <rdar://problem/7195704> JavaScriptCore fails to mark registers when built for x86_64 using LLVM GCC. 8341 8342 * runtime/Collector.cpp: 8343 (JSC::Heap::markCurrentThreadConservatively): Force jmp_buf to use the appropriate alignment for a pointer 8344 to ensure that we correctly interpret the contents of registers during marking. 8345 83462009-09-28 Geoffrey Garen <ggaren@apple.com> 8347 8348 Windows build fix: added new exports. 8349 8350 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: 8351 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def: 8352 83532009-09-28 Geoffrey Garen <ggaren@apple.com> 8354 8355 Windows build fix: removed exports that no longer exist. 8356 8357 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: 8358 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def: 8359 83602009-09-28 Geoffrey Garen <ggaren@apple.com> 8361 8362 Reviewed by Darin Adler. 8363 8364 NotNullPassRefPtr: smart pointer optimized for passing references that are not null 8365 https://bugs.webkit.org/show_bug.cgi?id=29822 8366 8367 Added NotNullPassRefPtr, and deployed it in all places that initialize 8368 JavaScript objects. 8369 8370 2.2% speedup on bench-allocate-nonretained.js. 8371 8372 * API/JSCallbackConstructor.cpp: 8373 (JSC::JSCallbackConstructor::JSCallbackConstructor): 8374 * API/JSCallbackConstructor.h: 8375 * API/JSCallbackObject.h: 8376 * API/JSCallbackObjectFunctions.h: 8377 (JSC::JSCallbackObject::JSCallbackObject): 8378 * JavaScriptCore.exp: 8379 * bytecode/CodeBlock.h: 8380 (JSC::CodeBlock::addFunctionDecl): 8381 (JSC::CodeBlock::addFunctionExpr): 8382 * runtime/ArrayConstructor.cpp: 8383 (JSC::ArrayConstructor::ArrayConstructor): 8384 * runtime/ArrayConstructor.h: 8385 * runtime/ArrayPrototype.cpp: 8386 (JSC::ArrayPrototype::ArrayPrototype): 8387 * runtime/ArrayPrototype.h: 8388 * runtime/BooleanConstructor.cpp: 8389 (JSC::BooleanConstructor::BooleanConstructor): 8390 * runtime/BooleanConstructor.h: 8391 * runtime/BooleanObject.cpp: 8392 (JSC::BooleanObject::BooleanObject): 8393 * runtime/BooleanObject.h: 8394 * runtime/BooleanPrototype.cpp: 8395 (JSC::BooleanPrototype::BooleanPrototype): 8396 * runtime/BooleanPrototype.h: 8397 * runtime/DateConstructor.cpp: 8398 (JSC::DateConstructor::DateConstructor): 8399 * runtime/DateConstructor.h: 8400 * runtime/DateInstance.cpp: 8401 (JSC::DateInstance::DateInstance): 8402 * runtime/DateInstance.h: 8403 * runtime/DatePrototype.cpp: 8404 (JSC::DatePrototype::DatePrototype): 8405 * runtime/DatePrototype.h: 8406 * runtime/ErrorConstructor.cpp: 8407 (JSC::ErrorConstructor::ErrorConstructor): 8408 * runtime/ErrorConstructor.h: 8409 * runtime/ErrorInstance.cpp: 8410 (JSC::ErrorInstance::ErrorInstance): 8411 * runtime/ErrorInstance.h: 8412 * runtime/ErrorPrototype.cpp: 8413 (JSC::ErrorPrototype::ErrorPrototype): 8414 * runtime/ErrorPrototype.h: 8415 * runtime/FunctionConstructor.cpp: 8416 (JSC::FunctionConstructor::FunctionConstructor): 8417 * runtime/FunctionConstructor.h: 8418 * runtime/FunctionPrototype.cpp: 8419 (JSC::FunctionPrototype::FunctionPrototype): 8420 * runtime/FunctionPrototype.h: 8421 * runtime/GlobalEvalFunction.cpp: 8422 (JSC::GlobalEvalFunction::GlobalEvalFunction): 8423 * runtime/GlobalEvalFunction.h: 8424 * runtime/InternalFunction.cpp: 8425 (JSC::InternalFunction::InternalFunction): 8426 * runtime/InternalFunction.h: 8427 (JSC::InternalFunction::InternalFunction): 8428 * runtime/JSActivation.cpp: 8429 (JSC::JSActivation::JSActivation): 8430 * runtime/JSActivation.h: 8431 (JSC::JSActivation::JSActivationData::JSActivationData): 8432 * runtime/JSArray.cpp: 8433 (JSC::JSArray::JSArray): 8434 * runtime/JSArray.h: 8435 * runtime/JSByteArray.cpp: 8436 (JSC::JSByteArray::JSByteArray): 8437 * runtime/JSByteArray.h: 8438 * runtime/JSFunction.cpp: 8439 (JSC::JSFunction::JSFunction): 8440 * runtime/JSFunction.h: 8441 * runtime/JSGlobalObject.h: 8442 (JSC::JSGlobalObject::JSGlobalObject): 8443 * runtime/JSONObject.h: 8444 (JSC::JSONObject::JSONObject): 8445 * runtime/JSObject.h: 8446 (JSC::JSObject::JSObject): 8447 (JSC::JSObject::setStructure): 8448 * runtime/JSVariableObject.h: 8449 (JSC::JSVariableObject::JSVariableObject): 8450 * runtime/JSWrapperObject.h: 8451 (JSC::JSWrapperObject::JSWrapperObject): 8452 * runtime/MathObject.cpp: 8453 (JSC::MathObject::MathObject): 8454 * runtime/MathObject.h: 8455 * runtime/NativeErrorConstructor.cpp: 8456 (JSC::NativeErrorConstructor::NativeErrorConstructor): 8457 * runtime/NativeErrorConstructor.h: 8458 * runtime/NativeErrorPrototype.cpp: 8459 (JSC::NativeErrorPrototype::NativeErrorPrototype): 8460 * runtime/NativeErrorPrototype.h: 8461 * runtime/NumberConstructor.cpp: 8462 (JSC::NumberConstructor::NumberConstructor): 8463 * runtime/NumberConstructor.h: 8464 * runtime/NumberObject.cpp: 8465 (JSC::NumberObject::NumberObject): 8466 * runtime/NumberObject.h: 8467 * runtime/NumberPrototype.cpp: 8468 (JSC::NumberPrototype::NumberPrototype): 8469 * runtime/NumberPrototype.h: 8470 * runtime/ObjectConstructor.cpp: 8471 (JSC::ObjectConstructor::ObjectConstructor): 8472 * runtime/ObjectConstructor.h: 8473 * runtime/ObjectPrototype.cpp: 8474 (JSC::ObjectPrototype::ObjectPrototype): 8475 * runtime/ObjectPrototype.h: 8476 * runtime/PropertyNameArray.h: 8477 (JSC::PropertyNameArrayData::setCachedPrototypeChain): 8478 * runtime/PrototypeFunction.cpp: 8479 (JSC::PrototypeFunction::PrototypeFunction): 8480 * runtime/PrototypeFunction.h: 8481 * runtime/RegExpConstructor.cpp: 8482 (JSC::RegExpConstructor::RegExpConstructor): 8483 * runtime/RegExpConstructor.h: 8484 * runtime/RegExpObject.cpp: 8485 (JSC::RegExpObject::RegExpObject): 8486 * runtime/RegExpObject.h: 8487 (JSC::RegExpObject::RegExpObjectData::RegExpObjectData): 8488 * runtime/RegExpPrototype.cpp: 8489 (JSC::RegExpPrototype::RegExpPrototype): 8490 * runtime/RegExpPrototype.h: 8491 * runtime/StringConstructor.cpp: 8492 (JSC::StringConstructor::StringConstructor): 8493 * runtime/StringConstructor.h: 8494 * runtime/StringObject.cpp: 8495 (JSC::StringObject::StringObject): 8496 * runtime/StringObject.h: 8497 * runtime/StringObjectThatMasqueradesAsUndefined.h: 8498 (JSC::StringObjectThatMasqueradesAsUndefined::StringObjectThatMasqueradesAsUndefined): 8499 * runtime/StringPrototype.cpp: 8500 (JSC::StringPrototype::StringPrototype): 8501 * runtime/StringPrototype.h: 8502 * wtf/PassRefPtr.h: 8503 (WTF::NotNullPassRefPtr::NotNullPassRefPtr): 8504 (WTF::NotNullPassRefPtr::~NotNullPassRefPtr): 8505 (WTF::NotNullPassRefPtr::get): 8506 (WTF::NotNullPassRefPtr::clear): 8507 (WTF::NotNullPassRefPtr::releaseRef): 8508 (WTF::NotNullPassRefPtr::operator*): 8509 (WTF::NotNullPassRefPtr::operator->): 8510 (WTF::NotNullPassRefPtr::operator!): 8511 (WTF::NotNullPassRefPtr::operator UnspecifiedBoolType): 8512 * wtf/RefPtr.h: 8513 (WTF::RefPtr::RefPtr): 8514 (WTF::operator==): 8515 85162009-09-28 Oliver Hunt <oliver@apple.com> 8517 8518 Reviewed by Geoff Garen. 8519 8520 Hard dependency on SSE2 instruction set with JIT 8521 https://bugs.webkit.org/show_bug.cgi?id=29779 8522 8523 Add floating point support checks to op_jfalse and op_jtrue, and 8524 fix the logic for the slow case of op_add 8525 8526 * jit/JITArithmetic.cpp: 8527 (JSC::JIT::emitSlow_op_add): 8528 * jit/JITOpcodes.cpp: 8529 (JSC::JIT::emit_op_jfalse): 8530 (JSC::JIT::emit_op_jtrue): 8531 85322009-09-28 Yaar Schnitman <yaar@chromium.org> 8533 8534 Reviewed by Dimitri Glazkov. 8535 8536 Chromium port - recognize we are being built independently 8537 of chromium and look for dependencies under webkit/chromium rather 8538 than chromium/src. 8539 8540 https://bugs.webkit.org/show_bug.cgi?id=29722 8541 8542 * JavaScriptCore.gyp/JavaScriptCore.gyp: 8543 85442009-09-28 Jakub Wieczorek <faw217@gmail.com> 8545 8546 Reviewed by Simon Hausmann. 8547 8548 [Qt] Implement XSLT support with QtXmlPatterns. 8549 https://bugs.webkit.org/show_bug.cgi?id=28303 8550 8551 * wtf/Platform.h: Add a WTF_USE_QXMLQUERY #define. 8552 85532009-09-28 Gabor Loki <loki@inf.u-szeged.hu> 8554 8555 Reviewed by Simon Hausmann. 8556 8557 Remove __clear_cache which is an internal function of GCC 8558 https://bugs.webkit.org/show_bug.cgi?id=28886 8559 8560 Although __clear_cache is exported from GCC, this is an internal 8561 function. GCC makes no promises about it. 8562 8563 * jit/ExecutableAllocator.h: 8564 (JSC::ExecutableAllocator::cacheFlush): 8565 85662009-09-28 Sam Weinig <sam@webkit.org> 8567 8568 Reviewed by Oliver Hunt. 8569 8570 Fix an absolute path to somewhere in Oliver's machine to a relative path 8571 for derived JSONObject.lut.h. 8572 8573 * JavaScriptCore.xcodeproj/project.pbxproj: 8574 85752009-09-28 Joerg Bornemann <joerg.bornemann@nokia.com> 8576 8577 Reviewed by Simon Hausmann. 8578 8579 Add ARM version detection for Windows CE. 8580 8581 * wtf/Platform.h: 8582 85832009-09-26 Yongjun Zhang <yongjun.zhang@nokia.com> 8584 8585 Reviewed by Simon Hausmann. 8586 8587 Add MarkStackSymbian.cpp to build JavascriptCore for Symbian. 8588 8589 Re-use Windows shrinkAllocation implementation because Symbian doesn't 8590 support releasing part of memory region. 8591 8592 Use fastMalloc and fastFree to implement allocateStack and releaseStack 8593 for Symbian port. 8594 8595 * JavaScriptCore.pri: 8596 * runtime/MarkStack.h: 8597 (JSC::MarkStack::MarkStackArray::shrinkAllocation): 8598 * runtime/MarkStackSymbian.cpp: Added. 8599 (JSC::MarkStack::initializePagesize): 8600 (JSC::MarkStack::allocateStack): 8601 (JSC::MarkStack::releaseStack): 8602 86032009-09-25 Gabor Loki <loki@inf.u-szeged.hu> 8604 8605 Reviewed by Gavin Barraclough. 8606 8607 Fix unaligned data access in YARR_JIT on ARMv5 and below. 8608 https://bugs.webkit.org/show_bug.cgi?id=29695 8609 8610 On ARMv5 and below all data access should be naturally aligned. 8611 In the YARR_JIT there is a case when character pairs are 8612 loaded from the input string, but this data access is not 8613 naturally aligned. This fix introduces load32WithUnalignedHalfWords 8614 and branch32WithUnalignedHalfWords functions which contain 8615 naturally aligned memory loads - half word loads - on ARMv5 and below. 8616 8617 * assembler/MacroAssemblerARM.cpp: 8618 (JSC::MacroAssemblerARM::load32WithUnalignedHalfWords): 8619 * assembler/MacroAssemblerARM.h: 8620 (JSC::MacroAssemblerARM::load32WithUnalignedHalfWords): 8621 (JSC::MacroAssemblerARM::branch32WithUnalignedHalfWords): 8622 * assembler/MacroAssemblerARMv7.h: 8623 (JSC::MacroAssemblerARMv7::load32WithUnalignedHalfWords): 8624 (JSC::MacroAssemblerARMv7::branch32): 8625 (JSC::MacroAssemblerARMv7::branch32WithUnalignedHalfWords): 8626 * assembler/MacroAssemblerX86Common.h: 8627 (JSC::MacroAssemblerX86Common::load32WithUnalignedHalfWords): 8628 (JSC::MacroAssemblerX86Common::branch32WithUnalignedHalfWords): 8629 * wtf/Platform.h: 8630 * yarr/RegexJIT.cpp: 8631 (JSC::Yarr::RegexGenerator::generatePatternCharacterPair): 8632 86332009-09-25 Jeremy Orlow <jorlow@chromium.org> 8634 8635 This is breaking Chromium try bots, so I'm counting this as a build fix. 8636 8637 Add more svn:ignore exceptions. On different platforms, these files are 8638 generated with different case for JavaScriptCore. Also there are some 8639 wtf project files that get built apparently. 8640 8641 * JavaScriptCore.gyp: Changed property svn:ignore. 8642 86432009-09-25 Ada Chan <adachan@apple.com> 8644 8645 Build fix. 8646 8647 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: 8648 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def: 8649 86502009-09-25 Geoffrey Garen <ggaren@apple.com> 8651 8652 Reviewed by Darin Adler. 8653 8654 Inlined some object creation code, including lexicalGlobalObject access 8655 https://bugs.webkit.org/show_bug.cgi?id=29750 8656 8657 SunSpider says 0.5% faster. 8658 8659 0.8% speedup on bench-alloc-nonretained.js. 8660 2.5% speedup on v8-splay.js. 8661 8662 * interpreter/CachedCall.h: 8663 (JSC::CachedCall::CachedCall): 8664 * interpreter/CallFrame.h: 8665 (JSC::ExecState::lexicalGlobalObject): 8666 (JSC::ExecState::globalThisValue): 8667 * interpreter/Interpreter.cpp: 8668 (JSC::Interpreter::dumpRegisters): 8669 (JSC::Interpreter::execute): 8670 (JSC::Interpreter::privateExecute): 8671 * jit/JITStubs.cpp: 8672 (JSC::DEFINE_STUB_FUNCTION): 8673 * runtime/FunctionConstructor.cpp: 8674 (JSC::constructFunction): 8675 * runtime/ScopeChain.cpp: 8676 (JSC::ScopeChainNode::print): 8677 * runtime/ScopeChain.h: 8678 (JSC::ScopeChainNode::ScopeChainNode): 8679 (JSC::ScopeChainNode::~ScopeChainNode): 8680 (JSC::ScopeChainNode::push): 8681 (JSC::ScopeChain::ScopeChain): 8682 (JSC::ScopeChain::globalObject): Added a globalObject data member to ScopeChainNode. 8683 Replaced accessor function for globalObject() with data member. Replaced 8684 globalThisObject() accessor with direct access to globalThis, to match. 8685 8686 * runtime/JSGlobalObject.cpp: 8687 (JSC::JSGlobalObject::init): 8688 * runtime/JSGlobalObject.h: Inlined array and object construction. 8689 86902009-09-25 Laszlo Gombos <laszlo.1.gombos@nokia.com> 8691 8692 Reviewed by Gavin Barraclough. 8693 8694 Add ARM version detection rules for Symbian 8695 https://bugs.webkit.org/show_bug.cgi?id=29715 8696 8697 * wtf/Platform.h: 8698 86992009-09-24 Xan Lopez <xlopez@igalia.com> 8700 8701 Reviewed by Mark "Do It!" Rowe. 8702 8703 Some GCC versions don't like C++-style comments in preprocessor 8704 directives, change to C-style to shut them up. 8705 8706 * wtf/Platform.h: 8707 87082009-09-24 Oliver Hunt <oliver@apple.com> 8709 8710 Reviewed by Gavin Barraclough. 8711 8712 Division is needlessly slow in 64-bit 8713 https://bugs.webkit.org/show_bug.cgi?id=29723 8714 8715 Add codegen for op_div on x86-64 8716 8717 * jit/JIT.cpp: 8718 (JSC::JIT::privateCompileMainPass): 8719 (JSC::JIT::privateCompileSlowCases): 8720 * jit/JIT.h: 8721 * jit/JITArithmetic.cpp: 8722 (JSC::JIT::compileBinaryArithOpSlowCase): 8723 (JSC::JIT::emit_op_div): 8724 (JSC::JIT::emitSlow_op_div): 8725 * jit/JITInlineMethods.h: 8726 (JSC::JIT::isOperandConstantImmediateDouble): 8727 (JSC::JIT::addressFor): 8728 (JSC::JIT::emitLoadDouble): 8729 (JSC::JIT::emitLoadInt32ToDouble): 8730 (JSC::JIT::emitJumpSlowCaseIfNotImmediateNumber): 8731 87322009-09-24 Jeremy Orlow <jorlow@chromium.org> 8733 8734 Reviewed by Dimitri Glazkov. 8735 8736 Add GYP generated files to svn:ignore 8737 https://bugs.webkit.org/show_bug.cgi?id=29724 8738 8739 Adding the following files to the svn:ignore list (all in the 8740 JavaScriptCore/JavaScriptCore.gyp directory) 8741 8742 JavaScriptCore.xcodeproj 8743 JavaScriptCore.sln 8744 JavaScriptCore.vcproj 8745 JavaScriptCore_Debug.rules 8746 JavaScriptCore_Release.rules 8747 JavaScriptCore_Release - no tcmalloc.rules 8748 JavaScriptCore_Purify.rules 8749 JavaScriptCore.mk 8750 JavaScriptCore_Debug_rules.mk 8751 JavaScriptCore_Release_rules.mk 8752 JavaScriptCore_Release - no tcmalloc_rules.mk 8753 JavaScriptCore_Purify_rules.mk 8754 JavaScriptCore.scons 8755 JavaScriptCore_main.scons 8756 8757 * JavaScriptCore.gyp: Changed property svn:ignore. 8758 87592009-09-24 Yong Li <yong.li@torchmobile.com> 8760 8761 Reviewed by Adam Barth. 8762 8763 Replace platform-dependent code with WTF::currentTime() 8764 https://bugs.webkit.org/show_bug.cgi?id=29148 8765 8766 * jsc.cpp: 8767 (StopWatch::start): 8768 (StopWatch::stop): 8769 (StopWatch::getElapsedMS): 8770 * runtime/TimeoutChecker.cpp: 8771 (JSC::getCPUTime): 8772 87732009-09-24 Mark Rowe <mrowe@apple.com> 8774 8775 Reviewed by Sam Weinig. 8776 8777 <rdar://problem/7215058> FastMalloc scavenging thread should be named 8778 8779 * wtf/FastMalloc.cpp: 8780 (WTF::TCMalloc_PageHeap::scavengerThread): Set the thread name. 8781 * wtf/Platform.h: Move the knowledge of whether pthread_setname_np exists to here as HAVE(PTHREAD_SETNAME_NP). 8782 * wtf/ThreadingPthreads.cpp: 8783 (WTF::setThreadNameInternal): Use HAVE(PTHREAD_SETNAME_NP). 8784 87852009-09-24 Geoffrey Garen <ggaren@apple.com> 8786 8787 Reviewed by Sam Weinig. 8788 8789 Renamed clear to removeAll, as suggested by Darin Adler. 8790 8791 * wtf/HashCountedSet.h: 8792 (WTF::::removeAll): 8793 87942009-09-24 Mark Rowe <mrowe@apple.com> 8795 8796 Reviewed by Gavin Barraclough. 8797 8798 Fix FastMalloc to build with assertions enabled. 8799 8800 * wtf/FastMalloc.cpp: 8801 (WTF::TCMalloc_Central_FreeList::ReleaseToSpans): 8802 * wtf/TCSpinLock.h: 8803 (TCMalloc_SpinLock::IsHeld): 8804 88052009-09-24 Geoffrey Garen <ggaren@apple.com> 8806 8807 Suggested by Darin Adler. 8808 8809 Removed some unnecessary parameter names. 8810 8811 * wtf/HashCountedSet.h: 8812 88132009-09-24 Janne Koskinen <janne.p.koskinen@digia.com> 8814 8815 Reviewed by Simon Hausmann. 8816 8817 On Windows JSChar is typedef'ed to wchar_t. 8818 8819 When building with WINSCW for Symbian we need to do the 8820 same typedef. 8821 8822 * API/JSStringRef.h: 8823 88242009-09-23 Geoffrey Garen <ggaren@apple.com> 8825 8826 A piece of my last patch that I forgot. 8827 8828 * wtf/HashCountedSet.h: 8829 (WTF::::clear): Added HashCountedSet::clear. 8830 88312009-09-24 Gabor Loki <loki@inf.u-szeged.hu> 8832 8833 Reviewed by Gavin Barraclough. 8834 8835 Avoid __clear_cache built-in function if DISABLE_BUILTIN_CLEAR_CACHE define is set 8836 https://bugs.webkit.org/show_bug.cgi?id=28886 8837 8838 There are some GCC packages (for example GCC-2006q3 from CodeSourcery) 8839 which contain __clear_cache built-in function only for C while the C++ 8840 version of __clear_cache is missing on ARM architectures. 8841 8842 Fixed a small bug in the inline assembly of cacheFlush function on 8843 ARM_TRADITIONAL. 8844 8845 * jit/ExecutableAllocator.h: 8846 (JSC::ExecutableAllocator::cacheFlush): 8847 88482009-09-23 Geoffrey Garen <ggaren@apple.com> 8849 8850 Reviewed by Sam Weinig. 8851 8852 Added the ability to swap vectors with inline capacities, so you can 8853 store a vector with inline capacity in a hash table. 8854 8855 * wtf/Vector.h: 8856 (WTF::swap): 8857 (WTF::VectorBuffer::swap): 8858 88592009-09-23 David Kilzer <ddkilzer@apple.com> 8860 8861 Move definition of USE(PLUGIN_HOST_PROCESS) from WebKitPrefix.h to Platform.h 8862 8863 Reviewed by Mark Rowe. 8864 8865 * wtf/Platform.h: Define WTF_USE_PLUGIN_HOST_PROCESS to 1 when 8866 building on 64-bit SnowLeopard. Define to 0 elsewhere. 8867 88682009-09-22 Oliver Hunt <oliver@apple.com> 8869 8870 Reviewed by Geoff Garen. 8871 8872 Code sampling builds are broken. 8873 https://bugs.webkit.org/show_bug.cgi?id=29662 8874 8875 Fix build. 8876 8877 * bytecode/EvalCodeCache.h: 8878 (JSC::EvalCodeCache::get): 8879 * bytecode/SamplingTool.cpp: 8880 (JSC::ScriptSampleRecord::sample): 8881 (JSC::SamplingTool::doRun): 8882 (JSC::SamplingTool::notifyOfScope): 8883 (JSC::compareScriptSampleRecords): 8884 (JSC::SamplingTool::dump): 8885 * bytecode/SamplingTool.h: 8886 (JSC::ScriptSampleRecord::ScriptSampleRecord): 8887 (JSC::ScriptSampleRecord::~ScriptSampleRecord): 8888 (JSC::SamplingTool::SamplingTool): 8889 * bytecompiler/BytecodeGenerator.cpp: 8890 (JSC::BytecodeGenerator::BytecodeGenerator): 8891 (JSC::BytecodeGenerator::emitNewFunction): 8892 (JSC::BytecodeGenerator::emitNewFunctionExpression): 8893 * bytecompiler/BytecodeGenerator.h: 8894 (JSC::BytecodeGenerator::makeFunction): 8895 * debugger/Debugger.cpp: 8896 (JSC::evaluateInGlobalCallFrame): 8897 * debugger/DebuggerCallFrame.cpp: 8898 (JSC::DebuggerCallFrame::evaluate): 8899 * parser/Nodes.cpp: 8900 (JSC::ScopeNode::ScopeNode): 8901 * runtime/Completion.cpp: 8902 (JSC::checkSyntax): 8903 (JSC::evaluate): 8904 * runtime/Executable.cpp: 8905 (JSC::FunctionExecutable::fromGlobalCode): 8906 * runtime/Executable.h: 8907 (JSC::ScriptExecutable::ScriptExecutable): 8908 (JSC::EvalExecutable::EvalExecutable): 8909 (JSC::EvalExecutable::create): 8910 (JSC::ProgramExecutable::ProgramExecutable): 8911 (JSC::FunctionExecutable::create): 8912 (JSC::FunctionExecutable::FunctionExecutable): 8913 * runtime/JSGlobalObjectFunctions.cpp: 8914 (JSC::globalFuncEval): 8915 89162009-09-22 Darin Adler <darin@apple.com> 8917 8918 Reviewed by Sam Weinig. 8919 8920 * wtf/Forward.h: Added PassOwnPtr. 8921 89222009-09-22 Yaar Schnitman <yaar@chromium.org> 8923 8924 Reviewed by David Levin. 8925 8926 Ported chromium.org's javascriptcore.gyp for the webkit chromium port. 8927 8928 https://bugs.webkit.org/show_bug.cgi?id=29617 8929 8930 * JavaScriptCore.gyp/JavaScriptCore.gyp: Added. 8931 89322009-09-22 Thiago Macieira <thiago.macieira@nokia.com> 8933 8934 Reviewed by Simon Hausmann. 8935 8936 Fix compilation with WINSCW: no varargs macros 8937 8938 Disable variadic arguments for WINSCW just like we do 8939 for MSVC7. 8940 8941 * wtf/Assertions.h: 8942 89432009-09-22 Kent Hansen <khansen@trolltech.com> 8944 8945 Reviewed by Simon Hausmann. 8946 8947 Disable variadic macros on MSVC7. 8948 8949 This was originally added in r26589 but not extended 8950 when LOG_DISABLED/ASSERT_DISABLED was introduced. 8951 8952 * wtf/Assertions.h: 8953 89542009-09-22 Simon Hausmann <simon.hausmann@nokia.com> 8955 8956 Unreviewed build fix for Windows CE < 5 8957 8958 Define WINCEBASIC to disable the IsDebuggerPresent() code in 8959 wtf/Assertions.cpp. 8960 8961 * JavaScriptCore.pri: 8962 89632009-09-22 Joerg Bornemann <joerg.bornemann@nokia.com> 8964 8965 Reviewed by Simon Hausmann. 8966 8967 Fix major memory leak in JavaScriptCore RegisterFile on Windows CE 8968 8969 https://bugs.webkit.org/show_bug.cgi?id=29367 8970 8971 On Widows CE we must decommit all committed pages before we release 8972 them. See VirtualFree documentation. 8973 Desktop Windows behaves much smoother in this situation. 8974 8975 * interpreter/RegisterFile.cpp: 8976 (JSC::RegisterFile::~RegisterFile): 8977 89782009-09-21 Greg Bolsinga <bolsinga@apple.com> 8979 8980 Reviewed by Simon Fraser & Sam Weinig. 8981 8982 Add ENABLE(ORIENTATION_EVENTS) 8983 https://bugs.webkit.org/show_bug.cgi?id=29508 8984 8985 * wtf/Platform.h: Also sort PLATFORM(IPHONE) #defines. 8986 89872009-09-21 Jedrzej Nowacki <jedrzej.nowacki@nokia.com> 8988 8989 Reviewed by Eric Seidel. 8990 8991 [Fix] SourceCode's uninitialized member 8992 8993 Potential source of crashes and bugs was fixed. Default constructor 8994 didn't initialized m_provider member. 8995 8996 https://bugs.webkit.org/show_bug.cgi?id=29364 8997 8998 * parser/SourceCode.h: 8999 (JSC::SourceCode::SourceCode): 9000 90012009-09-21 Oliver Hunt <oliver@apple.com> 9002 9003 Reviewed by Geoff Garen. 9004 9005 REGRESSION (r48582): Crash in StructureStubInfo::initPutByIdTransition when reloading trac.webkit.org 9006 https://bugs.webkit.org/show_bug.cgi?id=29599 9007 9008 It is unsafe to attempt to cache new property transitions on 9009 dictionaries of any type. 9010 9011 * interpreter/Interpreter.cpp: 9012 (JSC::Interpreter::tryCachePutByID): 9013 * jit/JITStubs.cpp: 9014 (JSC::JITThunks::tryCachePutByID): 9015 90162009-09-21 Oliver Hunt <oliver@apple.com> 9017 9018 RS=Maciej Stachowiak. 9019 9020 Re-land SNES fix with corrected assertion. 9021 9022 * interpreter/Interpreter.cpp: 9023 (JSC::Interpreter::resolveGlobal): 9024 (JSC::Interpreter::tryCachePutByID): 9025 (JSC::Interpreter::tryCacheGetByID): 9026 * jit/JITStubs.cpp: 9027 (JSC::JITThunks::tryCachePutByID): 9028 (JSC::JITThunks::tryCacheGetByID): 9029 (JSC::DEFINE_STUB_FUNCTION): 9030 * runtime/BatchedTransitionOptimizer.h: 9031 (JSC::BatchedTransitionOptimizer::BatchedTransitionOptimizer): 9032 * runtime/JSObject.cpp: 9033 (JSC::JSObject::removeDirect): 9034 * runtime/Structure.cpp: 9035 (JSC::Structure::Structure): 9036 (JSC::Structure::getEnumerablePropertyNames): 9037 (JSC::Structure::despecifyDictionaryFunction): 9038 (JSC::Structure::addPropertyTransitionToExistingStructure): 9039 (JSC::Structure::addPropertyTransition): 9040 (JSC::Structure::removePropertyTransition): 9041 (JSC::Structure::toDictionaryTransition): 9042 (JSC::Structure::toCacheableDictionaryTransition): 9043 (JSC::Structure::toUncacheableDictionaryTransition): 9044 (JSC::Structure::fromDictionaryTransition): 9045 (JSC::Structure::removePropertyWithoutTransition): 9046 * runtime/Structure.h: 9047 (JSC::Structure::isDictionary): 9048 (JSC::Structure::isUncacheableDictionary): 9049 (JSC::Structure::): 9050 * runtime/StructureChain.cpp: 9051 (JSC::StructureChain::isCacheable): 9052 90532009-09-21 Adam Roben <aroben@apple.com> 9054 9055 Revert r48573, as it caused many assertion failures 9056 9057 * interpreter/Interpreter.cpp: 9058 * jit/JITStubs.cpp: 9059 * runtime/BatchedTransitionOptimizer.h: 9060 * runtime/JSObject.cpp: 9061 * runtime/Structure.cpp: 9062 * runtime/Structure.h: 9063 * runtime/StructureChain.cpp: 9064 90652009-09-21 Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk> 9066 9067 Unreviewed make dist build fix. Missing files. 9068 9069 * GNUmakefile.am: 9070 90712009-09-19 Gavin Barraclough <barraclough@apple.com> 9072 9073 Reviewed by Sam 'Cabin Boy' Weinig. 9074 9075 Fix stack alignment with ARM THUMB2 JIT. 9076 https://bugs.webkit.org/show_bug.cgi?id=29526 9077 9078 Stack is currently being decremented by 0x3c, bump this to 0x40 to make this a 9079 multiple of 16 bytes. 9080 9081 * jit/JITStubs.cpp: 9082 (JSC::JITThunks::JITThunks): 9083 * jit/JITStubs.h: 9084 90852009-09-20 Oliver Hunt <oliver@apple.com> 9086 9087 Reviewed by Maciej Stachowiak. 9088 9089 SNES is too slow 9090 https://bugs.webkit.org/show_bug.cgi?id=29534 9091 9092 The problem was that the emulator used multiple classes with 9093 more properties than our dictionary cutoff allowed, this resulted 9094 in more or less all critical logic inside the emulator requiring 9095 uncached property access. 9096 9097 Rather than simply bumping the dictionary cutoff, this patch 9098 recognises that there are two ways to create a "dictionary" 9099 structure. Either by adding a large number of properties, or 9100 by removing a property. In the case of adding properties we 9101 know all the existing properties will maintain their existing 9102 offsets, so we could cache access to those properties, if we 9103 know they won't be removed. 9104 9105 To make this possible, this patch adds the logic required to 9106 distinguish a dictionary created by addition from one created 9107 by removal. With this logic in place we can now cache access 9108 to objects with large numbers of properties. 9109 9110 SNES performance improved by more than 6x. 9111 9112 * interpreter/Interpreter.cpp: 9113 (JSC::Interpreter::resolveGlobal): 9114 (JSC::Interpreter::tryCachePutByID): 9115 (JSC::Interpreter::tryCacheGetByID): 9116 * jit/JITStubs.cpp: 9117 (JSC::JITThunks::tryCachePutByID): 9118 (JSC::JITThunks::tryCacheGetByID): 9119 (JSC::DEFINE_STUB_FUNCTION): 9120 * runtime/BatchedTransitionOptimizer.h: 9121 (JSC::BatchedTransitionOptimizer::BatchedTransitionOptimizer): 9122 * runtime/JSObject.cpp: 9123 (JSC::JSObject::removeDirect): 9124 * runtime/Structure.cpp: 9125 (JSC::Structure::Structure): 9126 (JSC::Structure::getEnumerablePropertyNames): 9127 (JSC::Structure::despecifyDictionaryFunction): 9128 (JSC::Structure::addPropertyTransitionToExistingStructure): 9129 (JSC::Structure::addPropertyTransition): 9130 (JSC::Structure::removePropertyTransition): 9131 (JSC::Structure::toDictionaryTransition): 9132 (JSC::Structure::toCacheableDictionaryTransition): 9133 (JSC::Structure::toUncacheableDictionaryTransition): 9134 (JSC::Structure::fromDictionaryTransition): 9135 (JSC::Structure::removePropertyWithoutTransition): 9136 * runtime/Structure.h: 9137 (JSC::Structure::isDictionary): 9138 (JSC::Structure::isUncacheableDictionary): 9139 (JSC::Structure::): 9140 * runtime/StructureChain.cpp: 9141 (JSC::StructureChain::isCacheable): 9142 91432009-09-19 Oliver Hunt <oliver@apple.com> 9144 9145 Reviewed by Maciej Stachowiak. 9146 9147 Implement ES5 Object.create function 9148 https://bugs.webkit.org/show_bug.cgi?id=29524 9149 9150 Implement Object.create. Very simple patch, effectively Object.defineProperties 9151 only creating the target object itself. 9152 9153 * runtime/CommonIdentifiers.h: 9154 * runtime/ObjectConstructor.cpp: 9155 (JSC::ObjectConstructor::ObjectConstructor): 9156 (JSC::objectConstructorCreate): 9157 91582009-09-19 Dan Bernstein <mitz@apple.com> 9159 9160 Fix clean debug builds. 9161 9162 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def: 9163 91642009-09-19 Joerg Bornemann <joerg.bornemann@nokia.com> 9165 9166 Reviewed by George Staikos. 9167 9168 QtWebKit Windows CE compile fix 9169 9170 https://bugs.webkit.org/show_bug.cgi?id=29379 9171 9172 There is no _aligned_alloc or _aligned_free on Windows CE. 9173 We just use the Windows code that was there before and use VirtualAlloc. 9174 But that also means that the BLOCK_SIZE must be 64K as this function 9175 allocates on 64K boundaries. 9176 9177 * runtime/Collector.cpp: 9178 (JSC::Heap::allocateBlock): 9179 (JSC::Heap::freeBlock): 9180 * runtime/Collector.h: 9181 91822009-09-19 Oliver Hunt <oliver@apple.com> 9183 9184 Reviewed by Sam Weinig. 9185 9186 Implement ES5 Object.defineProperties function 9187 https://bugs.webkit.org/show_bug.cgi?id=29522 9188 9189 Implement Object.defineProperties. Fairly simple patch, simply makes use of 9190 existing functionality used for defineProperty. 9191 9192 * runtime/CommonIdentifiers.h: 9193 * runtime/ObjectConstructor.cpp: 9194 (JSC::ObjectConstructor::ObjectConstructor): 9195 (JSC::defineProperties): 9196 (JSC::objectConstructorDefineProperties): 9197 91982009-09-19 Oliver Hunt <oliver@apple.com> 9199 9200 Reviewed by NOBODY (Build fix). 9201 9202 Windows build fix part2 9203 9204 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: 9205 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def: 9206 92072009-09-19 Oliver Hunt <oliver@apple.com> 9208 9209 Reviewed by NOBODY (Buildfix). 9210 9211 Windows build fix part 1. 9212 9213 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: 9214 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def: 9215 92162009-09-18 Oliver Hunt <oliver@apple.com> 9217 9218 Reviewed by Geoff Garen. 9219 9220 Implement ES5 Object.defineProperty function 9221 https://bugs.webkit.org/show_bug.cgi?id=29503 9222 9223 Implement Object.defineProperty. This requires adding the API to 9224 ObjectConstructor, along with a helper function that implements the 9225 ES5 internal [[ToPropertyDescriptor]] function. It then adds 9226 JSObject::defineOwnProperty that implements the appropriate ES5 semantics. 9227 Currently defineOwnProperty uses a delete followed by a put to redefine 9228 attributes of a property, clearly this is less efficient than it could be 9229 but we can improve this if it needs to be possible in future. 9230 9231 * JavaScriptCore.exp: 9232 * debugger/DebuggerActivation.cpp: 9233 (JSC::DebuggerActivation::defineGetter): 9234 (JSC::DebuggerActivation::defineSetter): 9235 * debugger/DebuggerActivation.h: 9236 * interpreter/Interpreter.cpp: 9237 (JSC::Interpreter::privateExecute): 9238 * jit/JITStubs.cpp: 9239 Update defineGetter/Setter calls 9240 * runtime/CommonIdentifiers.h: 9241 * runtime/JSArray.cpp: 9242 (JSC::JSArray::getOwnPropertySlot): 9243 * runtime/JSGlobalObject.cpp: 9244 (JSC::JSGlobalObject::defineGetter): 9245 (JSC::JSGlobalObject::defineSetter): 9246 * runtime/JSGlobalObject.h: 9247 * runtime/JSObject.cpp: 9248 (JSC::JSObject::defineGetter): 9249 (JSC::JSObject::defineSetter): 9250 (JSC::putDescriptor): 9251 (JSC::JSObject::defineOwnProperty): 9252 * runtime/JSObject.h: 9253 * runtime/ObjectConstructor.cpp: 9254 (JSC::ObjectConstructor::ObjectConstructor): 9255 (JSC::objectConstructorGetOwnPropertyDescriptor): 9256 (JSC::toPropertyDescriptor): 9257 (JSC::objectConstructorDefineProperty): 9258 * runtime/ObjectPrototype.cpp: 9259 (JSC::objectProtoFuncDefineGetter): 9260 (JSC::objectProtoFuncDefineSetter): 9261 * runtime/PropertyDescriptor.cpp: 9262 (JSC::PropertyDescriptor::writable): 9263 (JSC::PropertyDescriptor::enumerable): 9264 (JSC::PropertyDescriptor::configurable): 9265 (JSC::PropertyDescriptor::isDataDescriptor): 9266 (JSC::PropertyDescriptor::isGenericDescriptor): 9267 (JSC::PropertyDescriptor::isAccessorDescriptor): 9268 (JSC::PropertyDescriptor::getter): 9269 (JSC::PropertyDescriptor::setter): 9270 (JSC::PropertyDescriptor::setDescriptor): 9271 (JSC::PropertyDescriptor::setAccessorDescriptor): 9272 (JSC::PropertyDescriptor::setWritable): 9273 (JSC::PropertyDescriptor::setEnumerable): 9274 (JSC::PropertyDescriptor::setConfigurable): 9275 (JSC::PropertyDescriptor::setSetter): 9276 (JSC::PropertyDescriptor::setGetter): 9277 (JSC::PropertyDescriptor::equalTo): 9278 (JSC::PropertyDescriptor::attributesEqual): 9279 (JSC::PropertyDescriptor::attributesWithOverride): 9280 * runtime/PropertyDescriptor.h: 9281 (JSC::PropertyDescriptor::PropertyDescriptor): 9282 (JSC::PropertyDescriptor::value): 9283 (JSC::PropertyDescriptor::setValue): 9284 (JSC::PropertyDescriptor::isEmpty): 9285 (JSC::PropertyDescriptor::writablePresent): 9286 (JSC::PropertyDescriptor::enumerablePresent): 9287 (JSC::PropertyDescriptor::configurablePresent): 9288 (JSC::PropertyDescriptor::setterPresent): 9289 (JSC::PropertyDescriptor::getterPresent): 9290 (JSC::PropertyDescriptor::operator==): 9291 (JSC::PropertyDescriptor::): 9292 92932009-09-18 Gabor Loki <loki@inf.u-szeged.hu> 9294 9295 Reviewed by Gavin Barraclough. 9296 9297 Build fix to enable ARM_THUMB2 on Linux 9298 https://bugs.webkit.org/show_bug.cgi?id= 9299 9300 * jit/ExecutableAllocator.h: 9301 (JSC::ExecutableAllocator::cacheFlush): 9302 * jit/JITStubs.cpp: 9303 * wtf/Platform.h: 9304 93052009-09-18 Gabor Loki <loki@inf.u-szeged.hu> 9306 9307 Reviewed by Gavin Barraclough. 9308 9309 Defines two pseudo-platforms for ARM and Thumb-2 instruction set. 9310 https://bugs.webkit.org/show_bug.cgi?id=29122 9311 9312 Introduces WTF_PLATFORM_ARM_TRADITIONAL and WTF_PLATFORM_ARM_THUMB2 9313 macros on ARM platforms. The PLATFORM(ARM_THUMB2) should be used 9314 when Thumb-2 instruction set is the required target. The 9315 PLATFORM(ARM_TRADITIONAL) is for generic ARM instruction set. In 9316 case where the code is common the PLATFORM(ARM) have to be used. 9317 9318 * assembler/ARMAssembler.cpp: 9319 * assembler/ARMAssembler.h: 9320 * assembler/ARMv7Assembler.h: 9321 * assembler/MacroAssembler.h: 9322 * assembler/MacroAssemblerARM.cpp: 9323 * assembler/MacroAssemblerARM.h: 9324 * assembler/MacroAssemblerCodeRef.h: 9325 (JSC::MacroAssemblerCodePtr::MacroAssemblerCodePtr): 9326 * jit/ExecutableAllocator.h: 9327 * jit/JIT.h: 9328 * jit/JITInlineMethods.h: 9329 (JSC::JIT::beginUninterruptedSequence): 9330 (JSC::JIT::preserveReturnAddressAfterCall): 9331 (JSC::JIT::restoreReturnAddressBeforeReturn): 9332 (JSC::JIT::restoreArgumentReference): 9333 (JSC::JIT::restoreArgumentReferenceForTrampoline): 9334 * jit/JITOpcodes.cpp: 9335 * jit/JITStubs.cpp: 9336 (JSC::JITThunks::JITThunks): 9337 * jit/JITStubs.h: 9338 * wtf/Platform.h: 9339 * yarr/RegexJIT.cpp: 9340 (JSC::Yarr::RegexGenerator::generateEnter): 9341 93422009-09-18 Joerg Bornemann <joerg.bornemann@nokia.com> 9343 9344 Reviewed by Simon Hausmann. 9345 9346 Fix the Qt/Windows CE build. 9347 9348 * JavaScriptCore.pri: Build the ce_time.cpp functions from 9349 within Qt externally. 9350 * wtf/DateMath.cpp: Removed unnecessary Qt #ifdef, for the 9351 Qt build these functions are no external, too. 9352 93532009-09-17 Janne Koskinen <janne.p.koskinen@digia.com> 9354 9355 Reviewed by Simon Hausmann. 9356 9357 Symbian/WINSCW build fox. 9358 9359 Repeat Q_OS_WIN wchar_t hack for WINSCW, similar to 9360 revision 24774. 9361 9362 WINSCW defines wchar_t, thus UChar has to be wchar_t 9363 9364 * wtf/unicode/qt4/UnicodeQt4.h: 9365 93662009-09-17 Janne Koskinen <janne.p.koskinen@digia.com> 9367 9368 Reviewed by Simon Hausmann. 9369 9370 Symbian/WINSCW build fix. 9371 9372 https://bugs.webkit.org/show_bug.cgi?id=29186 9373 9374 WINSCW Template specialisation name in declaration must the be the same as in implementation. 9375 9376 * runtime/LiteralParser.h: 9377 93782009-09-15 Norbert Leser <norbert.leser@nokia.com> 9379 9380 Reviewed by Darin Adler. 9381 9382 https://bugs.webkit.org/show_bug.cgi?id=27060 9383 9384 Symbian compiler for emulator target (WINSCW) fails with 9385 "illegal operand" for m_attributesInPrevious in structure.ccp 9386 (when calling make_pair functions). 9387 This error is apparently due to the compiler not properly 9388 resolving the unsigned type of the declared bitfield. 9389 9390 Initial patch explicitly casted m_attributesInPrevious 9391 to unsigned, but since bitfield optimization is not critical for 9392 the emulator target, this conditional change in header file 9393 appears to be least intrusive. 9394 9395 * runtime/Structure.h: 9396 93972009-09-16 Gabor Loki <loki@inf.u-szeged.hu> 9398 9399 Reviewed by Darin Adler. 9400 9401 Fix GCC warnings on ARM_THUMB2 platform 9402 9403 * assembler/ARMv7Assembler.h: 9404 (JSC::ARMThumbImmediate::countLeadingZerosPartial): 9405 * assembler/MacroAssemblerARMv7.h: 9406 (JSC::MacroAssemblerARMv7::branchTruncateDoubleToInt32): 9407 (JSC::MacroAssemblerARMv7::moveFixedWidthEncoding): 9408 94092009-09-16 Greg Bolsinga <bolsinga@apple.com> 9410 9411 Add ENABLE(INSPECTOR) 9412 https://bugs.webkit.org/show_bug.cgi?id=29260 9413 9414 Reviewed by David Kilzer. 9415 9416 * wtf/Platform.h: 9417 94182009-09-16 Greg Bolsinga <bolsinga@apple.com> 9419 9420 Add ENABLE(CONTEXT_MENUS) 9421 https://bugs.webkit.org/show_bug.cgi?id=29225 9422 9423 Reviewed by David Kilzer. 9424 9425 * wtf/Platform.h: 9426 94272009-09-16 Benjamin C Meyer <benjamin.meyer@torchmobile.com> 9428 9429 Reviewed by Eric Seidel. 9430 9431 The webkit stdint and stdbool headers exists because 9432 the compiler MSVC doesn't include them. The check 9433 should not check for PLATFORM(WIN_OS) but for MSVC. 9434 9435 * os-win32/stdbool.h: 9436 * os-win32/stdint.h: 9437 94382009-09-16 Greg Bolsinga <bolsinga@apple.com> 9439 9440 Add ENABLE(DRAG_SUPPORT) 9441 https://bugs.webkit.org/show_bug.cgi?id=29233 9442 9443 Reviewed by David Kilzer. 9444 9445 * wtf/Platform.h: 9446 94472009-09-16 Kevin Ollivier <kevino@theolliviers.com> 9448 9449 waf build fix after flag was moved to correct place. 9450 9451 * wscript: 9452 94532009-09-16 Tor Arne Vestbø <tor.arne.vestbo@nokia.com> 9454 9455 Reviewed by Simon Hausmann. 9456 9457 [Qt] Build fix for 64-bit Qt on Mac OS X 9458 9459 * wtf/Platform.h: Use JSVALUE64 on DARWIN, not only on MAC 9460 94612009-09-16 Zoltan Herczeg <zherczeg@inf.u-szeged.hu> 9462 9463 Reviewed by Simon Hausmann. 9464 9465 [Qt] Fix wtf/ThreadSpecific.h under Qt to free thread local objects. 9466 https://bugs.webkit.org/show_bug.cgi?id=29295 9467 9468 This is an important fix when JavaScript workers are in use, since 9469 unfreed ThreadGlobalDatas leak a big amount of memory (50-100k each). 9470 QThreadStorage calls the destructor of a given object, which is the 9471 ThreadSpecific::Data. Unlike pthread, Qt is object oriented, and does 9472 not support the calling of a static utility function when the thread 9473 is about to close. In this patch we call the ThreadSpecific::destroy() 9474 utility function from the destructor of ThreadSpecific::Data. Moreover, 9475 since Qt resets all thread local values to 0 before the calling of the 9476 appropriate destructors, we set back the pointer to its original value. 9477 This is necessary because the get() method of the ThreadSpecific 9478 object may be called during the exuction of the destructor. 9479 9480 * wtf/ThreadSpecific.h: 9481 (WTF::ThreadSpecific::Data::~Data): 9482 (WTF::::~ThreadSpecific): 9483 (WTF::::set): 9484 (WTF::::destroy): 9485 94862009-09-10 Oliver Hunt <oliver@apple.com> 9487 9488 Reviewed by Geoff Garen. 9489 9490 Allow anonymous storage inside JSObject 9491 https://bugs.webkit.org/show_bug.cgi?id=29168 9492 9493 Add the concept of anonymous slots to Structures so that it is 9494 possible to store references to values that need marking in the 9495 standard JSObject storage buffer. This allows us to reduce the 9496 malloc overhead of some objects (by allowing them to store JS 9497 values in the inline storage of the object) and reduce the 9498 dependence of custom mark functions (if all an objects children 9499 are in the standard object property storage there's no need to 9500 mark them manually). 9501 9502 * JavaScriptCore.exp: 9503 * runtime/JSObject.h: 9504 (JSC::JSObject::putAnonymousValue): 9505 (JSC::JSObject::getAnonymousValue): 9506 (JSC::JSObject::addAnonymousSlots): 9507 * runtime/JSWrapperObject.h: 9508 (JSC::JSWrapperObject::createStructure): 9509 (JSC::JSWrapperObject::JSWrapperObject): 9510 (JSC::JSWrapperObject::setInternalValue): 9511 * runtime/PropertyMapHashTable.h: 9512 * runtime/Structure.cpp: 9513 (JSC::Structure::~Structure): 9514 (JSC::Structure::materializePropertyMap): 9515 (JSC::Structure::addAnonymousSlotsTransition): 9516 (JSC::Structure::copyPropertyTable): 9517 (JSC::Structure::put): 9518 (JSC::Structure::rehashPropertyMapHashTable): 9519 * runtime/Structure.h: 9520 (JSC::Structure::propertyStorageSize): 9521 (JSC::StructureTransitionTable::reifySingleTransition): 9522 * runtime/StructureTransitionTable.h: 9523 (JSC::StructureTransitionTable::TransitionTable::addSlotTransition): 9524 (JSC::StructureTransitionTable::TransitionTable::removeSlotTransition): 9525 (JSC::StructureTransitionTable::TransitionTable::getSlotTransition): 9526 (JSC::StructureTransitionTable::getAnonymousSlotTransition): 9527 (JSC::StructureTransitionTable::addAnonymousSlotTransition): 9528 (JSC::StructureTransitionTable::removeAnonymousSlotTransition): 9529 95302009-09-15 Alex Milowski <alex@milowski.com> 9531 9532 Reviewed by Tor Arne Vestbø. 9533 9534 Added the ENABLE_MATHML define to the features 9535 9536 * Configurations/FeatureDefines.xcconfig: 9537 95382009-09-15 Csaba Osztrogonac <oszi@inf.u-szeged.hu> 9539 9540 Reviewed by Tor Arne Vestbø. 9541 9542 [Qt] Build fix for windows. 9543 9544 After http://trac.webkit.org/changeset/47795 the MinGW build broke, 9545 because MinGW has __mingw_aligned_malloc instead of _aligned_malloc. 9546 9547 * runtime/Collector.cpp: 9548 (JSC::Heap::allocateBlock): MinGW case added. 9549 (JSC::Heap::freeBlock): MinGW case added. 9550 95512009-09-15 Csaba Osztrogonac <oszi@inf.u-szeged.hu> 9552 9553 Reviewed by Tor Arne Vestbø. 9554 9555 [Qt] Build fix for Windows/MinGW 9556 9557 https://bugs.webkit.org/show_bug.cgi?id=29268 9558 9559 * wtf/Platform.h: JSVALUE32_64 temporarily disabled on PLATFORM(WIN_OS) with COMPILER(MINGW) 9560 95612009-09-14 Gabor Loki <loki@inf.u-szeged.hu> 9562 9563 Reviewed by Gavin Barraclough. 9564 9565 Detect VFP at runtime in generic ARM port on Linux platform. 9566 https://bugs.webkit.org/show_bug.cgi?id=29076 9567 9568 * JavaScriptCore.pri: 9569 * assembler/MacroAssemblerARM.cpp: Added. 9570 (JSC::isVFPPresent): 9571 * assembler/MacroAssemblerARM.h: 9572 (JSC::MacroAssemblerARM::supportsFloatingPoint): 9573 95742009-09-14 Csaba Osztrogonac <oszi@inf.u-szeged.hu> 9575 9576 Reviewed by Tor Arne Vestbø. 9577 9578 [Qt] Build fix for windows build. 9579 9580 * JavaScriptCore.pri: Correct a logic error. 9581 * pcre/dftables: Add missing paranthesis for tmpdir function. 9582 95832009-09-12 Oliver Hunt <oliver@apple.com> 9584 9585 Reviewed by NOBODY (Build fix). 9586 9587 Build fix for windows exports (again). 9588 9589 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: 9590 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def: 9591 95922009-09-12 Oliver Hunt <oliver@apple.com> 9593 9594 Reviewed by NOBODY (Build fix). 9595 9596 Build fix for windows exports. 9597 9598 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: 9599 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def: 9600 96012009-09-12 Oliver Hunt <oliver@apple.com> 9602 9603 Reviewed by NOBODY (Build fix). 9604 9605 Correct fix for non-allinonefile builds 9606 9607 * runtime/ObjectConstructor.cpp: 9608 96092009-09-12 Oliver Hunt <oliver@apple.com> 9610 9611 Reviewed by NOBODY (Build fix). 9612 9613 Fix non-allinonefile builds 9614 9615 * runtime/ObjectConstructor.cpp: 9616 96172009-09-12 Oliver Hunt <oliver@apple.com> 9618 9619 Reviewed by Maciej Stachowiak. 9620 9621 [ES5] Implement Object.keys 9622 https://bugs.webkit.org/show_bug.cgi?id=29170 9623 9624 This patch basically requires two separate steps, the first is to split getPropertyNames 9625 into two functions -- getOwnPropertyNames and getPropertyNames, basically making them behave 9626 in the same way as getOwnPropertySlot and getPropertySlot. In essence getOwnPropertyNames 9627 produces the list of properties on an object excluding its prototype chain and getPropertyNames 9628 just iterates the the object and its prototype chain calling getOwnPropertyNames at each level. 9629 9630 * API/JSCallbackObject.h: 9631 * API/JSCallbackObjectFunctions.h: 9632 (JSC::::getOwnPropertyNames): 9633 * JavaScriptCore.exp: 9634 * debugger/DebuggerActivation.cpp: 9635 (JSC::DebuggerActivation::getOwnPropertyNames): 9636 * debugger/DebuggerActivation.h: 9637 * runtime/CommonIdentifiers.h: 9638 * runtime/JSArray.cpp: 9639 (JSC::JSArray::getOwnPropertyNames): 9640 * runtime/JSArray.h: 9641 * runtime/JSByteArray.cpp: 9642 (JSC::JSByteArray::getOwnPropertyNames): 9643 * runtime/JSByteArray.h: 9644 * runtime/JSNotAnObject.cpp: 9645 (JSC::JSNotAnObject::getOwnPropertyNames): 9646 * runtime/JSNotAnObject.h: 9647 * runtime/JSObject.cpp: 9648 (JSC::JSObject::getOwnPropertyNames): 9649 * runtime/JSObject.h: 9650 * runtime/JSVariableObject.cpp: 9651 (JSC::JSVariableObject::getOwnPropertyNames): 9652 * runtime/JSVariableObject.h: 9653 * runtime/ObjectConstructor.cpp: 9654 (JSC::ObjectConstructor::ObjectConstructor): 9655 (JSC::objectConstructorKeys): 9656 * runtime/RegExpMatchesArray.h: 9657 (JSC::RegExpMatchesArray::getOwnPropertyNames): 9658 * runtime/StringObject.cpp: 9659 (JSC::StringObject::getOwnPropertyNames): 9660 * runtime/StringObject.h: 9661 * runtime/Structure.cpp: 9662 (JSC::Structure::getOwnEnumerablePropertyNames): 9663 (JSC::Structure::getEnumerablePropertyNames): 9664 * runtime/Structure.h: 9665 96662009-09-11 Oliver Hunt <oliver@apple.com> 9667 9668 Reviewed by Sam Weinig. 9669 9670 getPropertyNames caching is invalid when the prototype chain contains objects with custom getPropertyNames 9671 https://bugs.webkit.org/show_bug.cgi?id=29214 9672 9673 Add a flag to TypeInfo to indicate whether a type overrides getPropertyNames. 9674 This flag is used to make sure that caching of the property name data is safe. 9675 9676 * API/JSCallbackConstructor.h: 9677 (JSC::JSCallbackConstructor::createStructure): 9678 * debugger/DebuggerActivation.h: 9679 (JSC::DebuggerActivation::createStructure): 9680 * runtime/BooleanObject.h: 9681 (JSC::BooleanObject::createStructure): 9682 * runtime/DatePrototype.h: 9683 (JSC::DatePrototype::createStructure): 9684 * runtime/FunctionPrototype.h: 9685 (JSC::FunctionPrototype::createStructure): 9686 * runtime/JSONObject.h: 9687 (JSC::JSONObject::createStructure): 9688 * runtime/JSObject.h: 9689 (JSC::JSObject::createStructure): 9690 * runtime/JSTypeInfo.h: 9691 (JSC::TypeInfo::hasDefaultGetPropertyNames): 9692 * runtime/JSVariableObject.h: 9693 (JSC::JSVariableObject::createStructure): 9694 * runtime/JSWrapperObject.h: 9695 (JSC::JSWrapperObject::createStructure): 9696 * runtime/MathObject.h: 9697 (JSC::MathObject::createStructure): 9698 * runtime/NumberConstructor.h: 9699 (JSC::NumberConstructor::createStructure): 9700 * runtime/NumberObject.h: 9701 (JSC::NumberObject::createStructure): 9702 * runtime/RegExpConstructor.h: 9703 (JSC::RegExpConstructor::createStructure): 9704 * runtime/RegExpObject.h: 9705 (JSC::RegExpObject::createStructure): 9706 * runtime/StructureChain.cpp: 9707 (JSC::StructureChain::isCacheable): 9708 97092009-09-11 Alexey Proskuryakov <ap@webkit.org> 9710 9711 Reviewed by Geoff Garen. 9712 9713 https://bugs.webkit.org/show_bug.cgi?id=29207 9714 Add checks for using WebCore JS context on secondary threads 9715 9716 * runtime/JSGlobalData.cpp: (JSC::JSGlobalData::JSGlobalData): 9717 * runtime/JSGlobalData.h: 9718 Added a new mainThreadOnly flag that WebCore would set. 9719 9720 * runtime/Collector.cpp: (JSC::Heap::registerThread): JSC API methods always call this, 9721 so this is a good place to check that the API isn't used form a wrong thread. 9722 97232009-09-11 Jocelyn Turcotte <jocelyn.turcotte@nokia.com> 9724 9725 Reviewed by Simon Hausmann. 9726 9727 Compiling JavaScriptCore on sparc 64 with gcc fails. 9728 9729 ThreadSafeShared uses the atomic __gnu_cxx::__exchange_and_add with an int, 9730 however on sparc 64 the _Atomic_word argument is typedefed to long (8 bytes). 9731 9732 The patch disables WTF_USE_LOCKFREE_THREADSAFESHARED in ThreadSafeShared to use 9733 a mutex instead when compiling for sparc 64 with gcc. 9734 9735 https://bugs.webkit.org/show_bug.cgi?id=29175 9736 9737 * wtf/Platform.h: 9738 __sparc64__ is not defined on all OS. 9739 Uses instead: __sparc__ && __arch64__ || __sparcv9 9740 * wtf/Threading.h: 9741 97422009-09-11 Prasanth Ullattil <prasanth.ullattil@nokia.com> 9743 9744 Reviewed by Simon Hausmann. 9745 9746 Fix compile error on Windows7(64Bit) with latest SDK. 9747 9748 Added the missing include file. 9749 9750 * runtime/UString.cpp: 9751 97522009-09-11 Joerg Bornemann <joerg.bornemann@trolltech.com> 9753 9754 Reviewed by Simon Hausmann. 9755 9756 Qt/Windows CE compile fix, include the executable allocator and 9757 markstack implementation in the windows build. 9758 9759 * JavaScriptCore.pri: 9760 97612009-09-08 John Abd-El-Malek <jam@chromium.org> 9762 9763 Reviewed by Dimitri Glazkov. 9764 9765 Remove unneeded define for ActiveX. 9766 https://bugs.webkit.org/show_bug.cgi?id=29054 9767 9768 * wtf/Platform.h: 9769 97702009-09-10 Mark Rowe <mrowe@apple.com> 9771 9772 Rubber-stamped by Sam Weinig. 9773 9774 Update JavaScriptCore and WebKit's FeatureDefines.xcconfig so that they are in sync with WebCore as they need to be. 9775 9776 * Configurations/FeatureDefines.xcconfig: 9777 97782009-09-10 Fumitoshi Ukai <ukai@chromium.org> 9779 9780 Reviewed by Alexey Proskuryakov. 9781 9782 Export WTF::tryFastMalloc used in WebSocketChannel. 9783 https://bugs.webkit.org/show_bug.cgi?id=28038 9784 9785 * JavaScriptCore.exp: 9786 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: 9787 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def: 9788 97892009-09-10 Oliver Hunt <oliver@apple.com> 9790 9791 Reviewed by NOBODY (Build fix). 9792 9793 Make StructureTransitionTable use an enum for the PtrAndFlags member 9794 used for the single transition slot optimisation. 9795 9796 * runtime/StructureTransitionTable.h: 9797 (JSC::StructureTransitionTable::StructureTransitionTable): 9798 (JSC::StructureTransitionTable::usingSingleTransitionSlot): 9799 (JSC::StructureTransitionTable::): 9800 98012009-09-10 Oliver Hunt <oliver@apple.com> 9802 9803 Reviewed by Geoff Garen. 9804 9805 Refactor StructureTransitionTable and Structure to unify handling of the single slot optimization 9806 https://bugs.webkit.org/show_bug.cgi?id=29141 9807 9808 Make StructureTransitionTable encapsulate the single transition slot optimization. 9809 9810 * runtime/Structure.cpp: 9811 (JSC::Structure::Structure): 9812 (JSC::Structure::~Structure): 9813 (JSC::Structure::addPropertyTransitionToExistingStructure): 9814 (JSC::Structure::addPropertyTransition): 9815 (JSC::Structure::addPropertyWithoutTransition): 9816 (JSC::Structure::removePropertyWithoutTransition): 9817 (JSC::Structure::hasTransition): 9818 * runtime/Structure.h: 9819 (JSC::StructureTransitionTable::contains): 9820 (JSC::StructureTransitionTable::get): 9821 (JSC::StructureTransitionTable::hasTransition): 9822 (JSC::StructureTransitionTable::reifySingleTransition): 9823 * runtime/StructureTransitionTable.h: 9824 (JSC::StructureTransitionTable::StructureTransitionTable): 9825 (JSC::StructureTransitionTable::~StructureTransitionTable): 9826 (JSC::StructureTransitionTable::remove): 9827 (JSC::StructureTransitionTable::add): 9828 (JSC::StructureTransitionTable::table): 9829 (JSC::StructureTransitionTable::singleTransition): 9830 (JSC::StructureTransitionTable::usingSingleTransitionSlot): 9831 (JSC::StructureTransitionTable::setSingleTransition): 9832 (JSC::StructureTransitionTable::setTransitionTable): 9833 (JSC::StructureTransitionTable::): 9834 * wtf/PtrAndFlags.h: 9835 (WTF::PtrAndFlags::PtrAndFlags): 9836 98372009-09-10 Zoltan Horvath <zoltan@webkit.org> 9838 9839 Reviewed by Darin Adler. 9840 9841 Implement fastDeleteSkippingDestructor for FastAllocBase and fastDeleteAllValues for HashSet 9842 https://bugs.webkit.org/show_bug.cgi?id=25930 9843 9844 FastAllocBase has been extended with fastDeleteSkippingDestructor function which 9845 releases memory without destructor call. fastDeleteAllValues has been implemented 9846 similar as deleteAllValues but it uses fastDelete function to release memory. 9847 9848 * wtf/FastAllocBase.h: 9849 (WTF::fastDeleteSkippingDestructor): 9850 * wtf/HashSet.h: 9851 (WTF::fastDeleteAllValues): 9852 98532009-09-10 Laszlo Gombos <laszlo.1.gombos@nokia.com> 9854 9855 Reviewed by Darin Adler. 9856 9857 ARM compiler does not understand GCC visibility attribute 9858 https://bugs.webkit.org/show_bug.cgi?id=29079 9859 9860 * API/JSBase.h: Make the test more specific to hit only 9861 the GCC compiler 9862 98632009-09-10 Adam Barth <abarth@webkit.org> 9864 9865 Unreviewed revert of the previous change. It broke the tests. 9866 9867 * wtf/dtoa.cpp: 9868 (WTF::dtoa): 9869 98702009-09-10 Ben Laurie <benl@google.com> 9871 9872 Reviewed by Adam Barth. 9873 9874 <https://bugs.webkit.org/show_bug.cgi?id=26836> 9875 9876 If dtoa was given a small buffer and the number was either infinite or 9877 NaN, then the buffer would be overflowed. 9878 9879 * wtf/dtoa.cpp: 9880 98812009-09-09 Laszlo Gombos <laszlo.1.gombos@nokia.com> 9882 9883 Reviewed by Darin Adler. 9884 9885 Change reinterpret_cast to static_cast in r48212. 9886 9887 * jit/ExecutableAllocator.h: 9888 (JSC::ExecutableAllocator::cacheFlush): 9889 98902009-09-09 Laszlo Gombos <laszlo.1.gombos@nokia.com> 9891 9892 Reviewed by Darin Adler. 9893 9894 Remove WTF_PLATFORM_FORCE_PACK as it is no longer used 9895 https://bugs.webkit.org/show_bug.cgi?id=29066 9896 9897 * wtf/Platform.h: 9898 98992009-09-09 Laszlo Gombos <laszlo.1.gombos@nokia.com> 9900 9901 Reviewed by Ariya Hidayat. 9902 9903 Implement flushing the instruction cache for Symbian 9904 https://bugs.webkit.org/show_bug.cgi?id=29075 9905 9906 * jit/ExecutableAllocator.h: 9907 (JSC::ExecutableAllocator::cacheFlush): Call IMB_Range to flush 9908 the instruction cache on Symbian 9909 99102009-09-09 Kent Hansen <khansen@trolltech.com> 9911 9912 Reviewed by Darin Adler. 9913 9914 https://bugs.webkit.org/show_bug.cgi?id=29024 9915 Make JavaScriptCore compile on platforms with case-insensitive file systems and typeinfo.h in STL 9916 9917 These platforms include Microsoft Visual Studio 2003, and Symbian with Metrowerks compiler. 9918 9919 * JavaScriptCore.gypi: 9920 * JavaScriptCore.xcodeproj/project.pbxproj: 9921 * runtime/JSTypeInfo.h: Copied from JavaScriptCore/runtime/TypeInfo.h. 9922 * runtime/Structure.h: 9923 * runtime/TypeInfo.h: Removed. 9924 99252009-09-08 Oliver Hunt <oliver@apple.com> 9926 9927 Reviewed by Maciej Stachowiak. 9928 9929 JSON.stringify(Date) loses the milliseconds information 9930 https://bugs.webkit.org/show_bug.cgi?id=29063 9931 9932 Make sure we include milliseconds in the output of toISOString. 9933 9934 * runtime/DatePrototype.cpp: 9935 (JSC::dateProtoFuncToISOString): 9936 99372009-09-08 Kevin Ollivier <kevino@theolliviers.com> 9938 9939 wx build fix, generate derived sources earlier in order to make sure 9940 they're found by the build system when generating the list of sources to build. 9941 9942 * wscript: 9943 99442009-09-08 Laszlo Gombos <laszlo.1.gombos@nokia.com> 9945 9946 Reviewed by Simon Hausmann. 9947 9948 Build fix when USE(LOCKFREE_THREADSAFESHARED) is not defined 9949 https://bugs.webkit.org/show_bug.cgi?id=29011 9950 9951 * wtf/Threading.h: Use LOCKFREE_THREADSAFESHARED guard for 9952 atomicIncrement and atomicDecrement 9953 99542009-09-07 Zoltan Horvath <zoltan@webkit.org> 9955 9956 Reviewed by Darin Adler. 9957 9958 Allow custom memory allocation control in Yarr's RegexInterpreter 9959 https://bugs.webkit.org/show_bug.cgi?id=29025 9960 9961 Inherits RegexInterpreter classes from FastAllocBase (bug #20422), which has 9962 been instantiated by 'new': 9963 9964 class ByteDisjunction 9965 -> instantiated in JavaScriptCore/yarr/RegexInterpreter.cpp:1462 9966 9967 struct BytecodePattern 9968 -> instantiated in JavaScriptCore/yarr/RegexInterpreter.cpp:1279 9969 9970 * yarr/RegexInterpreter.h: 9971 99722009-09-07 Drew Wilson <atwilson@google.com> 9973 9974 Reverting r48121 to fix Windows build errors. 9975 9976 * JavaScriptCore.exp: 9977 99782009-09-07 Drew Wilson <atwilson@google.com> 9979 9980 Reviewed by David Levin. 9981 9982 Enable SHARED_WORKERS by default 9983 https://bugs.webkit.org/show_bug.cgi?id=28959 9984 9985 * Configurations/FeatureDefines.xcconfig: 9986 99872009-09-07 Fumitoshi Ukai <ukai@chromium.org> 9988 9989 Reviewed by Alexey Proskuryakov. 9990 9991 Export WTF::tryFastMalloc used in WebSocketChannel. 9992 https://bugs.webkit.org/show_bug.cgi?id=28038 9993 9994 * JavaScriptCore.exp: 9995 99962009-09-04 Oliver Hunt <oliver@apple.com> 9997 9998 Reviewed by NOBODY (Build fix). 9999 10000 Fix windows export files 10001 10002 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: 10003 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def: 10004 100052009-09-04 Oliver Hunt <oliver@apple.com> 10006 10007 Reviewed by Gavin Barraclough. 10008 10009 [[ToString]] conversion should use the actual toString function for String objects. 10010 10011 Remove incorrect specialisations of toString conversions on StringObject. 10012 10013 * JavaScriptCore.exp: 10014 * runtime/StringObject.cpp: 10015 * runtime/StringObject.h: 10016 100172009-09-04 Steve Falkenburg <sfalken@apple.com> 10018 10019 Windows build fix. 10020 10021 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: Add new export. 10022 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def: Add new export. 10023 100242009-09-04 Steve Falkenburg <sfalken@apple.com> 10025 10026 Windows build fix. 10027 10028 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: Remove unneeded export. 10029 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def: Remove unneeded export. 10030 100312009-09-04 Darin Adler <darin@apple.com> 10032 10033 Reviewed by Geoff Garen. 10034 10035 DateInstance object collected on ARM JIT (JSValue: WTF_USE_JSVALUE32) 10036 https://bugs.webkit.org/show_bug.cgi?id=28909 10037 10038 Part two. 10039 10040 Make some improvements to garbage collection code: 10041 10042 1) Create a runtime assertion that catches any classes that 10043 override markChildren but have the HasDefaultMark bit set. 10044 2) Remove checks of the mark bit outside the MarkStack::append 10045 function; they are redundant. 10046 3) Improve the efficiency of the asObject and asArray functions 10047 when called on JSCell* to avoid a round trip to JSValue. 10048 4) Make more callers use the checked asCell and asObject 10049 casting functions rather than unchecked casts. 10050 5) Removed the JSCell::marked function and other GC-related 10051 functions because these operations are no longer things that 10052 code other than the core GC code needs to do directly. Fixed 10053 callers that were calling them. 10054 10055 * runtime/Collector.cpp: 10056 (JSC::Heap::markConservatively): Removed unneeded call to MarkStack::drain. 10057 (JSC::Heap::markProtectedObjects): Removed unneeded check of the mark 10058 bit and call to MarkStack::drain. 10059 (JSC::Heap::collect): Removed unneeded checks of the mark bit and also 10060 changed call to SmallStrings::mark to call markChildren instead to match 10061 the rest of the objects. 10062 (JSC::typeName): Removed unneeded cast to JSObject*. 10063 10064 * runtime/JSArray.h: 10065 (JSC::asArray): Added an overload for JSCell* and changed the JSValue 10066 version to call it. Removed some unneeded casts. 10067 (JSC::JSArray::markChildrenDirect): Marked this function inline. It's in 10068 a header, and if not marked inline this could lead to linking problems. 10069 (JSC::MarkStack::markChildren): Added. This helper function is used by 10070 the drain function to avoid repating code. Also added the code here to 10071 check fro default mark violations in debug code. If a markChildren 10072 function adds something to the mark stack, but the type info claimed 10073 hasDefaultMark was true, then we will get an assertion now. Also fixed 10074 the assertion about the mark bit to use the Heap function directly 10075 because we don't have a JSCell::marked function any more. 10076 (JSC::MarkStack::drain): Changed a local variable from "v" to "value", 10077 and from "currentCell" to "cell". Changed to call markChildren in two 10078 places instead of repeating a chain of if statements twice. Changed 10079 code that reads and writes the mark bit to use Heap::isCellMarked and 10080 Heap::markCell so we can eliminate the JSCell::marked and 10081 JSCell::markCellDirect functions. 10082 10083 * runtime/JSCell.h: Removed JSCell's markCellDirect and marked member 10084 functions. Added a comment explaining that asCell should be deprecated 10085 in favor of the JSValue asCell member function. 10086 (JSC::MarkStack::append): Added the assertion that catches callers 10087 that have set the HasDefaultMark bit incorrectly. Changed 10088 code that reads and writes the mark bit to use Heap::isCellMarked and 10089 Heap::markCell so we can eliminate the JSCell::marked and 10090 JSCell::markCellDirect functions. Moved the overload of 10091 MarkStack::append for JSValue here so it can call through to the cell 10092 version. The old version had a copy of all the code instead, but that 10093 repeated the conversion from JSValue to JSCell* and the check for 10094 whether a value is a cell multiple times. 10095 (JSC::Structure::markAggregate): Moved this function here to avoid 10096 dependencies for Structure.h, since this calls MarkStack::append. 10097 10098 * runtime/JSObject.cpp: 10099 (JSC::JSObject::markChildren): Added code to clear 10100 m_isCheckingForDefaultMarkViolation so the marking done by JSObject 10101 doesn't trigger the assertion. 10102 10103 * runtime/JSValue.h: Moved some stray includes that were outside the 10104 header guard inside it. Not sure how that happened! Removed the 10105 GC-related member functions markChildren, hasChildren, marked, and 10106 markDirect. 10107 10108 * runtime/JSWrapperObject.h: Made markChildren private. 10109 (JSC::JSWrapperObject::createStructure): Added. Fixes a bug where the 10110 HasDefaultMark bit was set. 10111 10112 * runtime/MarkStack.h: Added m_isCheckingForDefaultMarkViolation and 10113 initialized it to false. Moved the append function body from here to 10114 JSCell.h. Added a declaration of a private markChildren function used 10115 inside the drain function. 10116 10117 * runtime/SmallStrings.cpp: 10118 (JSC::SmallStrings::markChildren): Changed the name and style of this 10119 function to match other functions. This allows us to share the normal 10120 mark stack code path. 10121 10122 * runtime/SmallStrings.h: Changed the name and interface of mark to 10123 the more-normal markChildren style. 10124 10125 * runtime/Structure.h: Moved the body of markAggregate into the 10126 JSCell.h to avoid a circular dependency with JSCell.h. 10127 101282009-09-04 Darin Adler <darin@apple.com> 10129 10130 Reviewed by Geoff Garen. 10131 10132 DateInstance object collected on ARM JIT (JSValue: WTF_USE_JSVALUE32) 10133 https://bugs.webkit.org/show_bug.cgi?id=28909 10134 10135 Part one. 10136 10137 Make some improvements to garbage collection code: 10138 10139 1) Fix the two classes that had the default mark bit set but 10140 should not. 10141 2) Remove checks of the mark bit outside the MarkStack::append 10142 function; they are redundant. 10143 3) Make more callers use the checked asCell and asObject 10144 casting functions rather than unchecked casts. 10145 4) Removed some GC-related functions because these operations are 10146 no longer things that code other than the core GC code needs 10147 to do directly. Fixed callers that were calling them. 10148 10149 * bytecode/CodeBlock.cpp: 10150 (JSC::CodeBlock::markAggregate): Removed unneeded check of the mark 10151 bit before calling MarkStack::append. 10152 10153 * interpreter/Register.h: Removed unneeded marked and markChildren 10154 functions. 10155 10156 * jit/JITStubs.cpp: 10157 (op_eq): Removed unneeded assertions, instead using checked casting 10158 functions such as asObject. 10159 10160 * runtime/ArgList.h: Added now-needed forward declaration of MarkStack. 10161 10162 * runtime/GetterSetter.cpp: 10163 (JSC::GetterSetter::markChildren): Remmoved unneeded check of the mark bit. 10164 10165 * runtime/GlobalEvalFunction.h: 10166 (JSC::GlobalEvalFunction::createStructure): Added. Fixes a bug where the 10167 HasDefaultMark bit was set. 10168 10169 * runtime/JSCell.cpp: 10170 (JSC::JSCell::getObject): Use asObject to avoid a direct static_cast. 10171 10172 * runtime/JSObject.h: 10173 (JSC::asObject): Added an overload for JSCell* and changed the JSValue 10174 version to call it. 10175 (JSC::JSValue::get): Use asObject to avoid a direct static_cast. 10176 10177 * runtime/JSWrapperObject.h: Made markChildren private. 10178 (JSC::JSWrapperObject::createStructure): Added. Fixes a bug where the 10179 HasDefaultMark bit was set. Later we may want to optimize this for 10180 wrapper types that never have cells in their internal values, but there 10181 is no measured performance regression in SunSpider or V8 doing this 10182 all the time. 10183 10184 * runtime/MarkStack.cpp: Tweaked formatting. 10185 101862009-09-04 Kevin Ollivier <kevino@theolliviers.com> 10187 10188 wx build fix. Switch USE_ defines over to the compiler so that they can be 10189 checked by files not including config.h (like WebCorePrefix.h). 10190 10191 * wtf/Platform.h: 10192 101932009-09-03 Yong Li <yong.li@torchmobile.com> 10194 10195 Reviewed by David Levin. 10196 10197 Remove unnecessary dependency on unistd.h 10198 https://bugs.webkit.org/show_bug.cgi?id=28962 10199 10200 * runtime/Completion.cpp: 10201 102022009-09-03 Fumitoshi Ukai <ukai@chromium.org> 10203 10204 Reviewed by Eric Seidel. 10205 10206 Add strnstr for Linux and Windows in StringExtras.h 10207 https://bugs.webkit.org/show_bug.cgi?id=28901 10208 10209 * wtf/StringExtras.h: 10210 (strnstr): 10211 102122009-09-03 Zoltan Horvath <hzoltan@inf.u-szeged.hu> 10213 10214 Reviewed by Darin Adler. 10215 10216 Allow custom memory allocation control for JavaScriptCore's HashEntry class 10217 https://bugs.webkit.org/show_bug.cgi?id=27830 10218 10219 Inherits HashEntry class from FastAllocBase because it has been 10220 instantiated by 'new' JavaScriptCore/runtime/Lookup.cpp:32. 10221 10222 * runtime/Lookup.h: 10223 102242009-09-02 Gavin Barraclough <barraclough@apple.com> 10225 10226 Should crash if JIT code buffer allocation fails. 10227 10228 https://bugs.webkit.org/show_bug.cgi?id=28926 10229 <rdar://problem/7031922> 10230 10231 * jit/ExecutableAllocatorPosix.cpp: 10232 (JSC::ExecutablePool::systemAlloc): 10233 * jit/ExecutableAllocatorWin.cpp: 10234 (JSC::ExecutablePool::systemAlloc): 10235 102362009-09-02 Kevin Ollivier <kevino@theolliviers.com> 10237 10238 waf build fixes for Windows/MSVC. 10239 10240 * wscript: 10241 102422009-09-02 Kevin Ollivier <kevino@theolliviers.com> 10243 10244 Build fix for building on Windows. 10245 10246 * wtf/ThreadingPthreads.cpp: 10247 102482009-09-02 Norbert Leser <norbert.leser@nokia.com> 10249 10250 Reviewed by Eric Seidel. 10251 10252 Use fastMalloc when neither MMAP nor VIRTUALALLOC are enabled 10253 10254 RegisterFile constructor currently throws #error when both 10255 MMAP and VIRTUALALLOC conditions fail. 10256 On any platform that does not provide these features 10257 (for instance, Symbian), 10258 the fallback should be regular malloc (or fastMalloc). 10259 It is functionally equivalent in this case, even though it may 10260 have certain drawbacks such as lack of dynamic pre-allocation. 10261 10262 * interpreter/RegisterFile.cpp: 10263 (JSC::RegisterFile::~RegisterFile): 10264 * interpreter/RegisterFile.h: 10265 (JSC::RegisterFile::RegisterFile): 10266 102672009-08-31 Robert Agoston <Agoston.Robert@stud.u-szeged.hu> 10268 10269 Reviewed by Gavin Barraclough. 10270 10271 Fixed typo. 10272 https://bugs.webkit.org/show_bug.cgi?id=28691 10273 10274 * parser/Parser.h: 10275 (JSC::Parser::parse): 10276 102772009-08-27 Oliver Hunt <oliver@apple.com> 10278 10279 Reviewed by Maciej Stachowiak. 10280 10281 JSON Stringifier does not follow ES5 spec for handling of Number, String and Boolean objects 10282 https://bugs.webkit.org/show_bug.cgi?id=28797 10283 10284 Fixed unwrapBoxedPrimitive to do the right thing, which necessitated a couple of new exception 10285 checks, and corrected the logic in gap to correctly convert Number and String objects. 10286 10287 * runtime/JSONObject.cpp: 10288 (JSC::unwrapBoxedPrimitive): 10289 (JSC::gap): 10290 (JSC::Stringifier::Stringifier): 10291 (JSC::Stringifier::appendStringifiedValue): 10292 102932009-08-27 Oliver Hunt <oliver@apple.com> 10294 10295 Reviewed by Adam Roben. 10296 10297 JSON.stringify replacer array does not accept values that are not string primitives. 10298 https://bugs.webkit.org/show_bug.cgi?id=28788 10299 10300 Update the JSON stringifier to initialise its replacer array according to the most 10301 recent version of the spec. 10302 10303 * runtime/Identifier.h: 10304 (JSC::Identifier::from): 10305 * runtime/JSONObject.cpp: 10306 (JSC::Stringifier::Stringifier): 10307 103082009-08-27 Alexey Proskuryakov <ap@apple.com> 10309 10310 Reviewed by Oliver Hunt. 10311 10312 https://bugs.webkit.org/show_bug.cgi?id=28753 10313 <rdar://problem/7173448> Excessive number of threads (and a crash) 10314 10315 * wtf/Threading.h: (WTF::atomicIncrement): Changed atomicIncrement to match decrement 10316 and return the new value. Also added using directives for these functions, to match 10317 te rest of WTF. 10318 103192009-08-27 Brent Fulgham <bfulgham@webkit.org> 10320 10321 Reviewed by Adam Roben. 10322 10323 Link the testapi against CFLite when building the WinCairo port. 10324 10325 * JavaScriptCore.vcproj/testapi/testapi.vcproj: Add new Release_CFLite 10326 target. Update all targets to inherit from either the 10327 JavaScriptCF.vsprops (Apple target) or the JavaScriptCFLite.vsprops 10328 file (WinCairo target). 10329 * JavaScriptCore.vcproj/testapi/testapiCommon.vsprops: Remove 10330 input file CoreFoundation.lib. This is provided by either the 10331 JavaScriptCF.vsprops or JavaScriptCFLite.vsprops file. 10332 103332009-08-27 Steve Falkenburg <sfalken@apple.com> 10334 10335 Reviewed by Geoff Garen. 10336 10337 Fix Windows-specific crash due to missing memory clearing call. 10338 10339 * runtime/Collector.cpp: 10340 (JSC::Heap::allocateBlock): 10341 103422009-08-27 Brent Fulgham <bfulgham@webkit.org> 10343 10344 Build fix: JavaScriptCore_debug.def missing some exports. Apple 10345 Windows build does not use this file, so it was not noticed previously. 10346 10347 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def: 10348 103492009-08-27 Gavin Barraclough <barraclough@apple.com> 10350 10351 Reviewed by Oliver Hunt. 10352 10353 x86-64 GTK broken due to code offsets changing, pointers sometimes packed into immediates. 10354 https://bugs.webkit.org/show_bug.cgi?id=28317 10355 10356 Missed one, fix part II. 10357 10358 * assembler/MacroAssemblerX86Common.h: 10359 (JSC::MacroAssemblerX86Common::move): 10360 * assembler/X86Assembler.h: 10361 (JSC::CAN_SIGN_EXTEND_8_32): 10362 103632009-08-27 Oliver Hunt <oliver@apple.com> 10364 10365 Reviewed by Adam Roben. 10366 10367 JSON.stringify replacer array does not accept values that are not string primitives. 10368 https://bugs.webkit.org/show_bug.cgi?id=28788 10369 10370 Update the JSON stringifier to initialise its replacer array according to the most 10371 recent version of the spec. 10372 10373 * runtime/Identifier.h: 10374 (JSC::Identifier::from): 10375 * runtime/JSONObject.cpp: 10376 (JSC::Stringifier::Stringifier): 10377 103782009-08-27 Oliver Hunt <oliver@apple.com> 10379 10380 Reviewed by Alexey Proskuryakov. 10381 10382 JSON parser accepts trailing comma in array literals 10383 https://bugs.webkit.org/show_bug.cgi?id=28779 10384 10385 Update parser to correctly fail if there's a trailing comma. 10386 10387 * runtime/LiteralParser.cpp: 10388 (JSC::LiteralParser::parse): 10389 103902009-08-26 Oliver Hunt <oliver@apple.com> 10391 10392 Reviewed by Gavin Barraclough. 10393 10394 'this' in JSON.parse reviver is the global object 10395 https://bugs.webkit.org/show_bug.cgi?id=28752 10396 10397 This is a technically simple change, we merely update the code for calling 10398 the reviver function to pass the correct this object. Doing so however 10399 exposes the holder to arbitrary mutation by the reviver function so it is 10400 necessary for us to now guard all property accesses against the possibility 10401 of failure. 10402 10403 * runtime/JSArray.h: 10404 JSON needs to delete a property from the array, so we friend its 10405 Walker class so that we can make a non-virtual call to the arrays 10406 delete and getOwnPropertySlot methods. 10407 * runtime/JSONObject.cpp: 10408 (JSC::Walker::callReviver): 10409 We need to pass the correct this object 10410 (JSC::Walker::walk): 10411 Update calls to callReviver, and update property logic logic 10412 to correctly handle the holder being mutated by the reviver 10413 function. 10414 104152009-08-26 Alice Liu <alice.liu@apple.com> 10416 10417 Windows build fix: added some exported symbols 10418 10419 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: 10420 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def: 10421 104222009-08-26 Geoffrey Garen <ggaren@apple.com> 10423 10424 Windows build fix: Removed some exported symbols that no longer exist. 10425 10426 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: 10427 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def: 10428 104292009-08-26 Gavin Barraclough <barraclough@apple.com> 10430 10431 Reviewed by Olliejver Hunt. 10432 10433 x86-64 GTK broken due to code offsets changing, pointers sometimes packed into immediates. 10434 https://bugs.webkit.org/show_bug.cgi?id=28317 10435 10436 We rely on a slightly OS X specific behaviour, that x86-64 applications have a 4Gb zero page, 10437 so pointers are never representable as a 32-bit integer, and always have to be represented by 10438 a separate immediate load instruction, rather than within the immediate field of an arithmetic 10439 or memory operation. 10440 10441 We explicitly check for a couple of cases where a value might be representable in 32-bit, but 10442 these probably never kick in on Mac OS, and only kick in to hose GTK. Deleting these does not 10443 show a performance degradation on SunSpider. Remove. 10444 10445 * assembler/MacroAssemblerX86_64.h: 10446 (JSC::MacroAssemblerX86_64::storePtr): 10447 (JSC::MacroAssemblerX86_64::branchPtr): 10448 104492009-08-26 Geoffrey Garen <ggaren@apple.com> 10450 10451 Reviewed by Oliver Hunt. 10452 10453 A bit of Collector refatoring. 10454 10455 SunSpider says no change. v8 says 1.003x faster (1.02x faster on splay). 10456 10457 * JavaScriptCore.exp: 10458 10459 * runtime/JSCell.cpp: 10460 (JSC::JSCell::toPrimitive): 10461 (JSC::JSCell::getPrimitiveNumber): 10462 (JSC::JSCell::toBoolean): 10463 (JSC::JSCell::toNumber): 10464 (JSC::JSCell::toString): 10465 (JSC::JSCell::toObject): Removed pure virtual functions from 10466 JSCell, so the collector can construct one. This allowed 10467 me to remove a bunch of ASSERT_NOT_REACHED throughout the 10468 code, too. 10469 10470 * runtime/JSCell.h: 10471 (JSC::JSCell::JSCell): ditto 10472 (JSC::Heap::heap): Inlined this function because it's trivial. 10473 10474 * JavaScriptCore.exp: 10475 10476 * runtime/Collector.cpp: 10477 (JSC::Heap::destroy): 10478 (JSC::Heap::allocateBlock): 10479 (JSC::Heap::freeBlock): 10480 (JSC::Heap::freeBlocks): Renamed freeHeap to freeBlocks, since 10481 it doesn't actually free the Heap object. 10482 (JSC::Heap::heapAllocate): 10483 (JSC::Heap::sweep): 10484 * runtime/Collector.h: Refactored block allocation and destruction 10485 into helper functions. 10486 10487 * runtime/GetterSetter.cpp: 10488 * runtime/JSAPIValueWrapper.cpp: 10489 * runtime/JSPropertyNameIterator.cpp: Removed dummy implementations 10490 of pure virtual functions. (See above.) 10491 10492=== End re-roll-in of r47738:47740 with Windows crash fixed === 10493 104942009-08-26 Geoffrey Garen <ggaren@apple.com> 10495 10496 Build fix: start out with a 32-bit value to avoid a shortening warning. 10497 10498 * runtime/Collector.cpp: 10499 (JSC::Heap::sweep): 10500 105012009-08-24 Geoffrey Garen <ggaren@apple.com> 10502 10503 Reviewed by Oliver Hunt. 10504 10505 Substantially reduced VM thrash in the GC heap. 10506 10507 1.08x faster on v8 (1.60x faster on v8-splay). 10508 10509 1.40x faster on bench-alloc-nonretained. 10510 10511 1.90x faster on bench-alloc-retained. 10512 10513 SunSpider says no change. 10514 10515 * runtime/Collector.cpp: 10516 (JSC::Heap::heapAllocate): Fixed a long-standing bug: update a few local 10517 variables unconditionally after calling collect(), since they may be used 10518 even if we don't "goto scan". (In the bug I saw, usedBlocks got out of 10519 sync with heap.usedBlocks). 10520 (JSC::Heap::sweep): Keep enough free heap space to accomodate 10521 the number of objects we'll allocate before the next GC, plus 25%, for 10522 good measure. 10523 * runtime/Collector.h: Bumped the block size to 256k. This seems to give 10524 the best cache performance, and it prevents us from initiating lots of 10525 VM traffic to recover very small chunks of memory. 10526 10527=== Begin re-roll-in of r47738:47740 with Windows crash fixed === 10528 105292009-08-25 Drew Wilson <atwilson@google.com> 10530 10531 Reviewed by David Levin. 10532 10533 postMessage() spec now supports sending arrays of ports 10534 https://bugs.webkit.org/show_bug.cgi?id=26902 10535 10536 Added OwnPtr to VectorTraits so we can store OwnPtrs in Vectors. 10537 10538 * wtf/VectorTraits.h: 10539 105402009-08-26 Xan Lopez <xlopez@igalia.com> 10541 10542 Rubber-stamped by Gustavo Noronha. 10543 10544 Remove duplicated files from file list. 10545 10546 * GNUmakefile.am: 10547 105482009-08-26 Oliver Hunt <oliver@apple.com> 10549 10550 Reviewed by NOBODY (Build fix). 10551 10552 More export fixes. 10553 10554 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: 10555 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def: 10556 105572009-08-26 Oliver Hunt <oliver@apple.com> 10558 10559 Reviewed by NOBODY (Build fix). 10560 10561 Hopefully fix all the exports from JSC on windows 10562 10563 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: 10564 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def: 10565 105662009-08-26 Oliver Hunt <oliver@apple.com> 10567 10568 Reviewed by NOBODY (Build fixes). 10569 10570 Forgot I added files to JavaScriptCore. 10571 10572 * GNUmakefile.am: 10573 * JavaScriptCore.gypi: 10574 * JavaScriptCore.pri: 10575 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: 10576 * JavaScriptCoreSources.bkl: 10577 105782009-08-25 Oliver Hunt <oliver@apple.com> 10579 10580 Reviewed by Gavin Barraclough. 10581 10582 [ES5] Implement getOwnPropertyDescriptor 10583 https://bugs.webkit.org/show_bug.cgi?id=28724 10584 10585 Implement the core runtime support for getOwnPropertyDescriptor. 10586 This adds a virtual getOwnPropertyDescriptor method to every class 10587 that implements getOwnPropertySlot that shadows the behaviour of 10588 getOwnPropertySlot. The alternative would be to make getOwnPropertySlot 10589 (or PropertySlots in general) provide property attribute information, 10590 but quick testing showed this to be a regression. 10591 10592 * JavaScriptCore.exp: 10593 * JavaScriptCore.xcodeproj/project.pbxproj: 10594 * runtime/Arguments.cpp: 10595 (JSC::Arguments::getOwnPropertyDescriptor): 10596 * runtime/Arguments.h: 10597 * runtime/ArrayPrototype.cpp: 10598 (JSC::ArrayPrototype::getOwnPropertyDescriptor): 10599 * runtime/ArrayPrototype.h: 10600 * runtime/CommonIdentifiers.h: 10601 * runtime/DatePrototype.cpp: 10602 (JSC::DatePrototype::getOwnPropertyDescriptor): 10603 * runtime/DatePrototype.h: 10604 * runtime/JSArray.cpp: 10605 (JSC::JSArray::getOwnPropertyDescriptor): 10606 * runtime/JSArray.h: 10607 * runtime/JSByteArray.cpp: 10608 (JSC::JSByteArray::getOwnPropertyDescriptor): 10609 * runtime/JSByteArray.h: 10610 * runtime/JSFunction.cpp: 10611 (JSC::JSFunction::getOwnPropertyDescriptor): 10612 * runtime/JSFunction.h: 10613 * runtime/JSGlobalObject.h: 10614 (JSC::JSGlobalObject::getOwnPropertyDescriptor): 10615 * runtime/JSNotAnObject.cpp: 10616 (JSC::JSNotAnObject::getOwnPropertyDescriptor): 10617 * runtime/JSNotAnObject.h: 10618 * runtime/JSONObject.cpp: 10619 (JSC::JSONObject::getOwnPropertySlot): 10620 (JSC::JSONObject::getOwnPropertyDescriptor): 10621 * runtime/JSONObject.h: 10622 * runtime/JSObject.cpp: 10623 (JSC::JSObject::getOwnPropertyDescriptor): 10624 (JSC::JSObject::getPropertyDescriptor): 10625 * runtime/JSObject.h: 10626 * runtime/JSString.cpp: 10627 (JSC::JSString::getStringPropertyDescriptor): 10628 (JSC::JSString::getOwnPropertyDescriptor): 10629 * runtime/JSString.h: 10630 * runtime/JSVariableObject.cpp: 10631 (JSC::JSVariableObject::symbolTableGet): 10632 * runtime/JSVariableObject.h: 10633 * runtime/Lookup.h: 10634 (JSC::getStaticPropertyDescriptor): 10635 (JSC::getStaticFunctionDescriptor): 10636 (JSC::getStaticValueDescriptor): 10637 Add property descriptor equivalents of the lookup 10638 table access functions 10639 10640 * runtime/MathObject.cpp: 10641 (JSC::MathObject::getOwnPropertySlot): 10642 (JSC::MathObject::getOwnPropertyDescriptor): 10643 * runtime/MathObject.h: 10644 * runtime/NumberConstructor.cpp: 10645 (JSC::NumberConstructor::getOwnPropertyDescriptor): 10646 * runtime/NumberConstructor.h: 10647 * runtime/ObjectConstructor.cpp: 10648 (JSC::ObjectConstructor::ObjectConstructor): 10649 (JSC::objectConstructorGetOwnPropertyDescriptor): 10650 * runtime/PropertyDescriptor.cpp: Added. 10651 (JSC::PropertyDescriptor::writable): 10652 (JSC::PropertyDescriptor::enumerable): 10653 (JSC::PropertyDescriptor::configurable): 10654 (JSC::PropertyDescriptor::hasAccessors): 10655 (JSC::PropertyDescriptor::setUndefined): 10656 (JSC::PropertyDescriptor::getter): 10657 (JSC::PropertyDescriptor::setter): 10658 (JSC::PropertyDescriptor::setDescriptor): 10659 (JSC::PropertyDescriptor::setAccessorDescriptor): 10660 * runtime/PropertyDescriptor.h: Added. 10661 (JSC::PropertyDescriptor::PropertyDescriptor): 10662 (JSC::PropertyDescriptor::attributes): 10663 (JSC::PropertyDescriptor::isValid): 10664 (JSC::PropertyDescriptor::value): 10665 * runtime/RegExpConstructor.cpp: 10666 (JSC::RegExpConstructor::getOwnPropertyDescriptor): 10667 * runtime/RegExpConstructor.h: 10668 * runtime/RegExpMatchesArray.h: 10669 (JSC::RegExpMatchesArray::getOwnPropertyDescriptor): 10670 * runtime/RegExpObject.cpp: 10671 (JSC::RegExpObject::getOwnPropertyDescriptor): 10672 * runtime/RegExpObject.h: 10673 * runtime/StringObject.cpp: 10674 (JSC::StringObject::getOwnPropertyDescriptor): 10675 * runtime/StringObject.h: 10676 * runtime/StringPrototype.cpp: 10677 (JSC::StringPrototype::getOwnPropertyDescriptor): 10678 * runtime/StringPrototype.h: 10679 106802009-08-24 Gavin Barraclough <barraclough@apple.com> 10681 10682 Reviewed by Darin Adler. 10683 10684 How many copies of the parameters do you need? 10685 https://bugs.webkit.org/show_bug.cgi?id=28701 10686 10687 The function parameters in JSC get copied a lot - and unnecessarily so. 10688 10689 Originally this happened due to duplicating FunctionBodyNodes on recompilation, 10690 though the problem has been exacerbated by copying the parameters from the 10691 original function body onto the executable, then back onto the real body that 10692 will be generated (this happens on every function). And this is all made worse 10693 since the data structures in question are a little ugly - C style arrays of C++ 10694 objects containing ref counts, so they need a full copy-construct (rather than 10695 a simple memcpy). 10696 10697 This can all be greatly simplified by just punting the parameters off into 10698 their own ref-counted object, and forgoing all the copying. 10699 10700 ~no performance change, possible slight progression. 10701 10702 * bytecompiler/BytecodeGenerator.cpp: 10703 (JSC::BytecodeGenerator::BytecodeGenerator): 10704 * bytecompiler/BytecodeGenerator.h: 10705 (JSC::BytecodeGenerator::makeFunction): 10706 * parser/Nodes.cpp: 10707 (JSC::FunctionParameters::FunctionParameters): 10708 (JSC::FunctionBodyNode::FunctionBodyNode): 10709 (JSC::FunctionBodyNode::finishParsing): 10710 * parser/Nodes.h: 10711 (JSC::FunctionBodyNode::parameters): 10712 (JSC::FunctionBodyNode::parameterCount): 10713 * runtime/Executable.cpp: 10714 (JSC::FunctionExecutable::~FunctionExecutable): 10715 (JSC::FunctionExecutable::compile): 10716 (JSC::FunctionExecutable::reparseExceptionInfo): 10717 (JSC::FunctionExecutable::fromGlobalCode): 10718 (JSC::FunctionExecutable::paramString): 10719 * runtime/Executable.h: 10720 (JSC::FunctionExecutable::FunctionExecutable): 10721 (JSC::FunctionExecutable::parameterCount): 10722 107232009-08-25 Brent Fulgham <bfulgham@webkit.org> 10724 10725 Reviewed by NOBODY (Buildfix). 10726 10727 * JavaScriptCore.vcproj/jsc/jsc.vcproj: Add Debug_CFLite target 10728 that inherits from the debug_wincairo property sheet and therefore 10729 links to the proper debug library. 10730 * JavaScriptCore.vcproj/testapi/testapi.vcproj: Add Debug_CFLite target 10731 that inherits from the debug_wincairo property sheet and therefore 10732 links to the proper debug library. 10733 107342009-08-25 Chris Marrin <cmarrin@apple.com> 10735 10736 Reviewed by Simon Fraser. 10737 10738 Export tryFastMalloc for Canvas3D work 10739 https://bugs.webkit.org/show_bug.cgi?id=28018 10740 10741 * JavaScriptCore.exp: 10742 107432009-08-25 David Levin <levin@chromium.org> 10744 10745 Reviewed by Adam Roben. 10746 10747 PLATFORM(CFNETWORK) should be USE(CFNETWORK). 10748 https://bugs.webkit.org/show_bug.cgi?id=28713 10749 10750 * wtf/Platform.h: Added a #define to catch this issue in the 10751 future. The define would generate an error on gcc without the 10752 space in the expansion, but Visual C++ needs the space to cause an error. 10753 107542009-08-24 Brent Fulgham <bfulgham@webkit.org> 10755 10756 Reviewed by Steve Falkenburg. 10757 10758 Revise CFLite Debug build to emit DLL's with _debug label. 10759 https://bugs.webkit.org/show_bug.cgi?id=28695. 10760 10761 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: Modify 10762 Cairo debug build to inherit from new debug_cairo property sheet. 10763 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreCFLite.vsprops: 10764 Modify to look for debug CFLite when in debug build. 10765 107662009-08-24 Gavin Barraclough <barraclough@apple.com> 10767 10768 Reviewed by Oliver Adler & Darin Hunt. 10769 10770 https://bugs.webkit.org/show_bug.cgi?id=28691 10771 Do not retain ScopeNodes outside of parsing 10772 10773 There is now no need for these to exist outside of parsing - their use in the runtime is replaced by Executable types. 10774 10775 * bytecode/EvalCodeCache.h: 10776 (JSC::EvalCodeCache::get): 10777 * bytecompiler/BytecodeGenerator.cpp: 10778 (JSC::BytecodeGenerator::BytecodeGenerator): 10779 (JSC::BytecodeGenerator::emitNewFunction): 10780 (JSC::BytecodeGenerator::emitNewFunctionExpression): 10781 * bytecompiler/BytecodeGenerator.h: 10782 (JSC::BytecodeGenerator::makeFunction): 10783 * debugger/Debugger.cpp: 10784 (JSC::Debugger::recompileAllJSFunctions): 10785 (JSC::evaluateInGlobalCallFrame): 10786 * debugger/DebuggerCallFrame.cpp: 10787 (JSC::DebuggerCallFrame::evaluate): 10788 * interpreter/Interpreter.cpp: 10789 (JSC::Interpreter::execute): 10790 (JSC::Interpreter::prepareForRepeatCall): 10791 (JSC::Interpreter::privateExecute): 10792 * jit/JITStubs.cpp: 10793 (JSC::DEFINE_STUB_FUNCTION): 10794 * parser/Nodes.cpp: 10795 (JSC::ScopeNodeData::ScopeNodeData): 10796 (JSC::ProgramNode::create): 10797 (JSC::EvalNode::create): 10798 (JSC::FunctionBodyNode::create): 10799 * parser/Nodes.h: 10800 (JSC::ScopeNode::adoptData): 10801 (JSC::FunctionBodyNode::parameterCount): 10802 * parser/Parser.cpp: 10803 * parser/Parser.h: 10804 (JSC::Parser::arena): 10805 (JSC::Parser::Parser): 10806 (JSC::Parser::parse): 10807 * runtime/ArrayPrototype.cpp: 10808 (JSC::isNumericCompareFunction): 10809 (JSC::arrayProtoFuncSort): 10810 * runtime/Completion.cpp: 10811 (JSC::checkSyntax): 10812 (JSC::evaluate): 10813 * runtime/Executable.cpp: 10814 (JSC::FunctionExecutable::~FunctionExecutable): 10815 (JSC::EvalExecutable::compile): 10816 (JSC::ProgramExecutable::checkSyntax): 10817 (JSC::ProgramExecutable::compile): 10818 (JSC::FunctionExecutable::compile): 10819 (JSC::EvalExecutable::generateJITCode): 10820 (JSC::ProgramExecutable::generateJITCode): 10821 (JSC::FunctionExecutable::generateJITCode): 10822 (JSC::FunctionExecutable::reparseExceptionInfo): 10823 (JSC::EvalExecutable::reparseExceptionInfo): 10824 (JSC::FunctionExecutable::recompile): 10825 (JSC::FunctionExecutable::fromGlobalCode): 10826 (JSC::FunctionExecutable::copyParameters): 10827 (JSC::FunctionExecutable::paramString): 10828 * runtime/Executable.h: 10829 (JSC::ScriptExecutable::ScriptExecutable): 10830 (JSC::ScriptExecutable::sourceID): 10831 (JSC::ScriptExecutable::sourceURL): 10832 (JSC::ScriptExecutable::lineNo): 10833 (JSC::ScriptExecutable::lastLine): 10834 (JSC::ScriptExecutable::usesEval): 10835 (JSC::ScriptExecutable::usesArguments): 10836 (JSC::ScriptExecutable::needsActivation): 10837 (JSC::ScriptExecutable::recordParse): 10838 (JSC::EvalExecutable::bytecode): 10839 (JSC::EvalExecutable::jitCode): 10840 (JSC::ProgramExecutable::bytecode): 10841 (JSC::ProgramExecutable::reparseExceptionInfo): 10842 (JSC::ProgramExecutable::jitCode): 10843 (JSC::FunctionExecutable::FunctionExecutable): 10844 (JSC::FunctionExecutable::make): 10845 (JSC::FunctionExecutable::bytecode): 10846 (JSC::FunctionExecutable::isGenerated): 10847 (JSC::FunctionExecutable::name): 10848 (JSC::FunctionExecutable::parameterCount): 10849 (JSC::FunctionExecutable::jitCode): 10850 * runtime/FunctionConstructor.cpp: 10851 (JSC::constructFunction): 10852 * runtime/JSGlobalData.cpp: 10853 (JSC::JSGlobalData::numericCompareFunction): 10854 * runtime/JSGlobalObjectFunctions.cpp: 10855 (JSC::globalFuncEval): 10856 108572009-08-24 Darin Adler <darin@apple.com> 10858 10859 * runtime/ObjectPrototype.cpp: 10860 (JSC::ObjectPrototype::put): Landed revised version I had tested but forgot 10861 to land. Leave out the branch, since we don't need one. 10862 108632009-08-24 Darin Adler <darin@apple.com> 10864 10865 Reviewed by Geoff Garen. 10866 10867 Array index miss case creates a string every time 10868 https://bugs.webkit.org/show_bug.cgi?id=28664 10869 10870 SunSpider test results I saw: 10871 10872 0.5% faster overall 10873 1% faster on crypto-aes 10874 20% faster on crypto-md5 10875 13% faster on crypto-sha1 10876 10877 * runtime/ObjectPrototype.cpp: 10878 (JSC::ObjectPrototype::ObjectPrototype): Initialize m_hasNoPropertiesWithUInt32Names 10879 to true. 10880 (JSC::ObjectPrototype::put): Clearly m_hasNoPropertiesWithUInt32Names if the new 10881 property has a name that is the string form of a UInt32. 10882 (JSC::ObjectPrototype::getOwnPropertySlot): Don't call JSObject::getOwnPropertySlot 10883 if m_hasNoPropertiesWithUInt32Names is true, and it is highly likely to be true. 10884 10885 * runtime/ObjectPrototype.h: Added declarations for the above. 10886 108872009-08-24 Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk> 10888 10889 Unreviewed. Fix a typo in my distcheck build fix. 10890 10891 * GNUmakefile.am: 10892 108932009-08-23 Gustavo Noronha Silva <gns@gnome.org> 10894 10895 Unreviewed build fix for make distcheck. 10896 10897 * GNUmakefile.am: Added files required for the build. 10898 108992009-08-22 Maciej Stachowiak <mjs@apple.com> 10900 10901 Reviewed by Mark Rowe. 10902 10903 REGRESSION(r47639-r47660): Webkit crashes on launch on PowerPC 10904 https://bugs.webkit.org/show_bug.cgi?id=28655 10905 10906 * runtime/JSFunction.cpp: 10907 (JSC::JSFunction::JSFunction): Initialize properly with a VPtrHackExecutable. 10908 * wtf/Platform.h: 10909 109102009-08-22 Darin Adler <darin@apple.com> 10911 10912 Fix storage leak from syntax tree arena allocation patch. 10913 10914 * parser/Nodes.h: CommaNode needs to inherit from ParserArenaDeletable 10915 because it has a vector. 10916 109172009-08-21 Darin Adler <darin@apple.com> 10918 10919 Fix Qt build. 10920 10921 * parser/Nodes.cpp: 10922 (JSC::ScopeNodeData::ScopeNodeData): Made non-inline again. 10923 This is used outside Nodes.cpp so can't be inline unless 10924 it is in the header. 10925 109262009-08-21 Darin Adler <darin@apple.com> 10927 10928 Two loose ends from the last commit. 10929 10930 * JavaScriptCore.xcodeproj/project.pbxproj: Made ParserArena.h 10931 and create_hash_table project-internal instead of "private". 10932 * runtime/Executable.h: Removed accidentally-added constructor. 10933 109342009-08-21 Darin Adler <darin@apple.com> 10935 10936 Reviewed by Gavin Barraclough. 10937 10938 Syntax tree nodes should use arena allocation 10939 https://bugs.webkit.org/show_bug.cgi?id=25674 10940 10941 Use an actual arena now. 0.6% speedup on SunSpider. 10942 10943 New and improved with 100% less leaking of the universe. 10944 10945 * JavaScriptCore.exp: 10946 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: 10947 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def: 10948 Removed all exports involving the class FunctionBodyNode, which no 10949 longer needs to be used outside JavaScriptCore. 10950 10951 * JavaScriptCore.xcodeproj/project.pbxproj: Made Nodes.h and 10952 Executable.h project-internal instead of "private". 10953 10954 * bytecompiler/BytecodeGenerator.cpp: 10955 (JSC::BytecodeGenerator::BytecodeGenerator): Updated since VarStack 10956 contains const Identifier* now. 10957 10958 * parser/Grammar.y: Made identifiers from the lexer be const 10959 Identifier* and updated since VarStack contains const Identifier* now. 10960 10961 * parser/Lexer.cpp: 10962 (JSC::Lexer::setCode): Pass in ParserArena, used for identifiers. 10963 (JSC::Lexer::makeIdentifier): Changed return type to const Identifier* 10964 and changed to call ParserArena. 10965 (JSC::Lexer::clear): Removed the code to manage m_identifiers and 10966 added code to set m_arena to 0. 10967 * parser/Lexer.h: Updated for changes above. 10968 10969 * parser/NodeConstructors.h: 10970 (JSC::ParserArenaFreeable::operator new): Added. Calls allocateFreeable 10971 on the arena. 10972 (JSC::ParserArenaDeletable::operator new): Changed to call the 10973 allocateDeletable function on the arena instead of deleteWithArena. 10974 (JSC::PropertyNode::PropertyNode): Added new constructor that makes 10975 numeric identifiers. Some day we might want to optimize this for 10976 integers so it doesn't create a string for each one. 10977 (JSC::ContinueNode::ContinueNode): Initialize m_ident to nullIdentifier 10978 since it's now a const Identifier& so it can't be left uninitialized. 10979 (JSC::BreakNode::BreakNode): Ditto. 10980 (JSC::CaseClauseNode::CaseClauseNode): Updated to use SourceElements* 10981 to keep track of the statements rather than a separate statement vector. 10982 (JSC::BlockNode::BlockNode): Ditto. 10983 (JSC::ForInNode::ForInNode): Initialize m_ident to nullIdentifier. 10984 10985 * parser/Nodes.cpp: Moved the comment explaining emitBytecode in here. 10986 It seemed strangely out of place in the header. 10987 (JSC::ThrowableExpressionData::emitThrowError): Added an overload for 10988 UString as well as Identifier. 10989 (JSC::SourceElements::singleStatement): Added. 10990 (JSC::SourceElements::lastStatement): Added. 10991 (JSC::RegExpNode::emitBytecode): Changed the throwError code to use 10992 the substitution mechanism instead of doing a string append. 10993 (JSC::SourceElements::emitBytecode): Added. Replaces the old 10994 statementListEmitCode function, since we now keep the SourceElements 10995 objects around. 10996 (JSC::BlockNode::lastStatement): Added. 10997 (JSC::BlockNode::emitBytecode): Changed to use emitBytecode instead of 10998 statementListEmitCode. 10999 (JSC::CaseClauseNode::emitBytecode): Added. 11000 (JSC::CaseBlockNode::emitBytecodeForBlock): Changed to use emitBytecode 11001 instead of statementListEmitCode. 11002 (JSC::ScopeNodeData::ScopeNodeData): Changed to store the 11003 SourceElements* instead of using releaseContentsIntoVector. 11004 (JSC::ScopeNode::emitStatementsBytecode): Added. 11005 (JSC::ScopeNode::singleStatement): Added. 11006 (JSC::ProgramNode::emitBytecode): Call emitStatementsBytecode instead 11007 of statementListEmitCode. 11008 (JSC::EvalNode::emitBytecode): Ditto. 11009 (JSC::FunctionBodyNode::emitBytecode): Call emitStatementsBytecode 11010 insetad of statementListEmitCode and check for the return node using 11011 the new functions. 11012 11013 * parser/Nodes.h: Changed VarStack to store const Identifier* instead 11014 of Identifier and rely on the arena to control lifetime. Added a new 11015 ParserArenaFreeable class. Made ParserArenaDeletable inherit from 11016 FastAllocBase instead of having its own operator new. Base the Node 11017 class on ParserArenaFreeable. Changed the various Node classes 11018 to use const Identifier& instead of Identifier to avoid the need to 11019 call their destructors and allow them to function as "freeable" in the 11020 arena. Removed extraneous JSC_FAST_CALL on definitions of inline functions. 11021 Changed ElementNode, PropertyNode, ArgumentsNode, ParameterNode, 11022 CaseClauseNode, ClauseListNode, and CaseBlockNode to use ParserArenaFreeable 11023 as a base class since they do not descend from Node. Eliminated the 11024 StatementVector type and instead have various classes use SourceElements* 11025 instead of StatementVector. This prevents those classes from having to 11026 use ParserArenaDeletable to make sure the vector destructor is called. 11027 11028 * parser/Parser.cpp: 11029 (JSC::Parser::parse): Pass the arena to the lexer. 11030 11031 * parser/Parser.h: Added an include of ParserArena.h, which is no longer 11032 included by Nodes.h. 11033 (JSC::Parser::parseFunctionFromGlobalCode): Changed to use the 11034 singleStatement function, since there is no longer any children function. 11035 Removed some unneeded use of RefPtr. 11036 11037 * parser/ParserArena.cpp: 11038 (JSC::ParserArena::ParserArena): Added. Initializes the new members, 11039 m_freeableMemory, m_freeablePoolEnd, and m_identifiers. 11040 (JSC::ParserArena::freeablePool): Added. Computes the pool pointer, 11041 since we store only the current pointer and the end of pool pointer. 11042 (JSC::ParserArena::deallocateObjects): Added. Contains the common 11043 memory-deallocation logic used by both the destructor and the 11044 reset function. 11045 (JSC::ParserArena::~ParserArena): Changed to call deallocateObjects. 11046 (JSC::ParserArena::reset): Ditto. Also added code to zero out the 11047 new structures, and switched to use clear() instead of shrink(0) since 11048 we don't really reuse arenas. 11049 (JSC::ParserArena::makeNumericIdentifier): Added. 11050 (JSC::ParserArena::allocateFreeablePool): Added. Used when the pool 11051 is empty. 11052 (JSC::ParserArena::isEmpty): Added. No longer inline, which is fine 11053 since this is used only for assertions at the moment. 11054 (JSC::ParserArena::derefWithArena): Make non-inline. 11055 11056 * parser/ParserArena.h: Added an actual arena of "freeable" objects, 11057 ones that don't need destructors to be called. Also added a separate 11058 IdentifierArena object, a segmented vector of identifiers that used 11059 to be in the Lexer. 11060 11061 * runtime/Executable.h: Moved the definition of the 11062 FunctionExecutable::make function here. It can't go in JSFunction.h 11063 since that header has to be used outside JavaScriptCore and so can't 11064 include this, which includes Nodes.h. The function could be moved 11065 elswhere if we don't want to include JSFunction.h in this header, but 11066 for now this seems to be the best place. 11067 11068 * runtime/JSFunction.h: Removed the include of Executable.h and 11069 definition of the FunctionExecutable::make function. 11070 11071 * wtf/FastMalloc.cpp: Fixed an incorrect comment. 11072 110732009-08-21 Mark Rowe <mrowe@apple.com> 11074 11075 Fix the non-JIT build. 11076 11077 * runtime/Executable.cpp: 11078 * runtime/Executable.h: 11079 110802009-08-21 Gavin Barraclough <barraclough@apple.com> 11081 11082 Speculative QuickTime build fix. 11083 11084 * runtime/JSArray.cpp: 11085 110862009-08-21 Gavin Barraclough <barraclough@apple.com> 11087 11088 Speculative QT build fix. 11089 11090 * runtime/StringPrototype.cpp: 11091 110922009-08-21 Gavin Barraclough <barraclough@apple.com> 11093 11094 Reviewed by Oliver Hunt. 11095 11096 Restructure Executable types so that host functions do not hold a FunctionExecutable. 11097 https://bugs.webkit.org/show_bug.cgi?id=28621 11098 11099 All JSFunction objects have a pointer to an Executable*. This is currently always a 11100 FunctionExecutable, however this has a couple of drawbacks. Host functions do not 11101 store a range of information that the FunctionExecutable provides (source, name, 11102 CodeBlock & information presently held on the FunctionBodyNode). 11103 11104 [ * nearly all... see below! ] 11105 11106 Instead, make JSFunctions hold a pointer to an ExecutableBase, move fields specific 11107 to JS sourced executable types (source, node) into a new subclass (ScriptExecutable), 11108 and create a new NativeExecutable type. We now provide a new method in JSFunction 11109 to access & downcast to FunctionExecutable, but in doing so we can make an early 11110 check (with an ASSERT) to ensure that the Executable read from a function will only 11111 be treated as a FunctionExecutable (and thus the JS sepcific fields will only be 11112 accessed) if the JSFunction is not a host function. 11113 11114 There is one JSFunction that currently does not have an Executable, which is the 11115 object created to allow us to read out the vtable pointer. By making this change 11116 we can also add a new Executable type fror this object (VPtrHackExecutable). 11117 Since this means that really all JSFunctions have an Executable we no longer have 11118 to null-check m_executable before us it - particularly in isHostFunction(). 11119 11120 This patch removes CacheableEvalExecutable, since all subclasses of ExecutableBase 11121 can now be ref-counted - since both JSFunction holds (and ref-counts) an ExecutableBase 11122 that might be a FunctionExecutable or a NativeExecutable. This does now mean that all 11123 ProgramExecutables and EvalExecutables (unnecessarily) provide an interface to be 11124 ref-counted, however this seems less-bad than host functions unnecessarily providing 11125 interface to access non-host specific information. 11126 11127 The class hierarcy has changed from this: 11128 11129 - ExecutableBase 11130 - ProgramExecutable 11131 - EvalExecutable 11132 - CacheableEvalExecutable (also RefCounted by multiple-inheritance) 11133 - FunctionExecutable (also RefCounted by multiple-inheritance, 'special' FunctionExecutable also used for host functions) 11134 11135 To this: 11136 11137 - RefCounted 11138 - ExecutableBase 11139 - NativeExecutable 11140 - VPtrHackExecutable 11141 - ScriptExecutable 11142 - ProgramExecutable 11143 - EvalExecutable 11144 - FunctionExecutable 11145 11146 This patch speeds up sunspidey by a couple of ms (presumably due to the changes to isHostFunction()). 11147 11148 * bytecode/CodeBlock.cpp: 11149 (JSC::CodeBlock::CodeBlock): 11150 * bytecode/CodeBlock.h: 11151 (JSC::CodeBlock::ownerExecutable): 11152 (JSC::GlobalCodeBlock::GlobalCodeBlock): 11153 * bytecode/EvalCodeCache.h: 11154 (JSC::EvalCodeCache::get): 11155 * debugger/Debugger.cpp: 11156 (JSC::Debugger::recompileAllJSFunctions): 11157 * interpreter/CachedCall.h: 11158 (JSC::CachedCall::CachedCall): 11159 * interpreter/Interpreter.cpp: 11160 (JSC::Interpreter::callEval): 11161 (JSC::Interpreter::privateExecute): 11162 * jit/JITStubs.cpp: 11163 (JSC::DEFINE_STUB_FUNCTION): 11164 * profiler/Profiler.cpp: 11165 (JSC::createCallIdentifierFromFunctionImp): 11166 * runtime/Arguments.h: 11167 (JSC::Arguments::getArgumentsData): 11168 (JSC::Arguments::Arguments): 11169 * runtime/Executable.cpp: 11170 (JSC::NativeExecutable::~NativeExecutable): 11171 (JSC::VPtrHackExecutable::~VPtrHackExecutable): 11172 * runtime/Executable.h: 11173 (JSC::ExecutableBase::ExecutableBase): 11174 (JSC::ExecutableBase::~ExecutableBase): 11175 (JSC::ExecutableBase::isHostFunction): 11176 (JSC::NativeExecutable::NativeExecutable): 11177 (JSC::VPtrHackExecutable::VPtrHackExecutable): 11178 (JSC::ScriptExecutable::ScriptExecutable): 11179 (JSC::ScriptExecutable::source): 11180 (JSC::ScriptExecutable::sourceID): 11181 (JSC::ScriptExecutable::sourceURL): 11182 (JSC::ScriptExecutable::lineNo): 11183 (JSC::ScriptExecutable::lastLine): 11184 (JSC::ScriptExecutable::usesEval): 11185 (JSC::ScriptExecutable::usesArguments): 11186 (JSC::ScriptExecutable::needsActivation): 11187 (JSC::EvalExecutable::EvalExecutable): 11188 (JSC::EvalExecutable::create): 11189 (JSC::ProgramExecutable::ProgramExecutable): 11190 (JSC::FunctionExecutable::FunctionExecutable): 11191 * runtime/FunctionPrototype.cpp: 11192 (JSC::functionProtoFuncToString): 11193 * runtime/JSFunction.cpp: 11194 (JSC::JSFunction::JSFunction): 11195 (JSC::JSFunction::~JSFunction): 11196 (JSC::JSFunction::markChildren): 11197 (JSC::JSFunction::getCallData): 11198 (JSC::JSFunction::call): 11199 (JSC::JSFunction::lengthGetter): 11200 (JSC::JSFunction::getConstructData): 11201 (JSC::JSFunction::construct): 11202 * runtime/JSFunction.h: 11203 (JSC::JSFunction::executable): 11204 (JSC::JSFunction::jsExecutable): 11205 (JSC::JSFunction::isHostFunction): 11206 112072009-08-20 Oliver Hunt <oliver@apple.com> 11208 11209 Reviewed by Maciej Stachowiak. 11210 11211 Browser hangs on opening Web Inspector. 11212 https://bugs.webkit.org/show_bug.cgi?id=28438 11213 11214 Code generation needs to be able to walk the entire scopechain in some 11215 cases, however the symbol table used by activations was a member of the 11216 codeblock. Following recompilation this may no longer exist, leading 11217 to a crash or hang on lookup. 11218 11219 We fix this by introducing a refcounted SymbolTable subclass, SharedSymbolTable, 11220 for the CodeBlocks used by function code. This allows activations to 11221 maintain ownership of a copy of the symbol table even after recompilation so 11222 they can continue to work. 11223 11224 * bytecode/CodeBlock.cpp: 11225 (JSC::CodeBlock::CodeBlock): 11226 * bytecode/CodeBlock.h: 11227 (JSC::CodeBlock::symbolTable): 11228 (JSC::CodeBlock::sharedSymbolTable): 11229 (JSC::GlobalCodeBlock::GlobalCodeBlock): 11230 (JSC::FunctionCodeBlock::FunctionCodeBlock): 11231 (JSC::FunctionCodeBlock::~FunctionCodeBlock): 11232 * interpreter/Interpreter.cpp: 11233 (JSC::Interpreter::retrieveArguments): 11234 * runtime/Executable.cpp: 11235 (JSC::EvalExecutable::generateBytecode): 11236 (JSC::FunctionExecutable::generateBytecode): 11237 (JSC::FunctionExecutable::reparseExceptionInfo): 11238 (JSC::EvalExecutable::reparseExceptionInfo): 11239 * runtime/JSActivation.h: 11240 (JSC::JSActivation::JSActivationData::JSActivationData): 11241 (JSC::JSActivation::JSActivationData::~JSActivationData): 11242 * runtime/SymbolTable.h: 11243 112442009-08-20 Xan Lopez <xlopez@igalia.com> 11245 11246 Add new file to GTK+ build. 11247 11248 * GNUmakefile.am: 11249 112502009-08-20 Geoffrey Garen <ggaren@apple.com> 11251 11252 Reviewed by Maciej Stachowiak. 11253 11254 Added a number => string cache. 11255 11256 1.07x faster on v8 (1.7x faster on v8-splay). 11257 1.004x faster on SunSpider. 11258 11259 * runtime/JSCell.h: Moved JSValue::toString to JSString.h. 11260 * runtime/JSGlobalData.h: Holds the cache. 11261 * runtime/JSNumberCell.cpp: 11262 (JSC::JSNumberCell::toString): 11263 (JSC::JSNumberCell::toThisString): Removed -0 special case. 11264 UString handles this now, since too many clients were 11265 special-casing it. 11266 11267 * runtime/JSString.h: 11268 (JSC::JSValue::toString): Use the cache when converting 11269 an int or double to string. 11270 11271 * runtime/Operations.h: 11272 (JSC::concatenateStrings): Call toString to take advantage 11273 of the cache. 11274 11275 * runtime/SmallStrings.h: 11276 (JSC::NumericStrings::add): 11277 (JSC::NumericStrings::lookup): The cache. 11278 11279 * runtime/UString.cpp: 11280 (JSC::UString::from): Added -0 special case mentioned above. 11281 Removed appendNumeric because it's mutually exclusive with the 11282 cache. 11283 112842009-08-20 Oliver Hunt <oliver@apple.com> 11285 11286 Reviewed by Gavin Barraclough. 11287 11288 REGRESSION: fast/profiler/call.html is crashing occasionally 11289 https://bugs.webkit.org/show_bug.cgi?id=28476 11290 11291 Using the codeblock for information about how many parameters and 11292 locals a function has is unsafe in certain circumstances. The 11293 basic scenario is all function code being cleared in response to 11294 the debugger or profiler being enabled, and then an activation is 11295 marked before its associated function is re-executed. 11296 11297 To deal with this scenario we store the variable count of a function 11298 directly in the FunctionExecutable, and then use that information. 11299 11300 * runtime/Arguments.h: 11301 (JSC::Arguments::getArgumentsData): 11302 * runtime/Executable.cpp: 11303 (JSC::FunctionExecutable::generateBytecode): 11304 * runtime/Executable.h: 11305 (JSC::FunctionExecutable::FunctionExecutable): 11306 (JSC::FunctionExecutable::variableCount): 11307 * runtime/JSActivation.cpp: 11308 (JSC::JSActivation::markChildren): 11309 113102009-08-20 Gavin Barraclough <barraclough@apple.com> 11311 11312 Reviewed by Oliver Hunt. 11313 11314 Numbering of arguments to emitGetJITStubArg/emitPutJITStubArg incorrect 11315 <bug lost in the great bug disasteroony of 08/20/09!> 11316 11317 The argumentNumber argument to emitGetJITStubArg/emitPutJITStubArg should match 11318 the argument number used within the stub functions in JITStubs.cpp, but it doesn't. 11319 11320 Firstly, all the numbers changed when we added a void* 'reserved' as the first slot 11321 (rather than leaving argument 0 unused), and secondly in 32_64 builds the index to 11322 peek/poke needs to be multiplies by 2 (since the argument to peek/poke is a number 11323 of machine words, and on 32_64 build the argument slots to stub functions are two 11324 words wide). 11325 11326 * jit/JIT.h: 11327 * jit/JITCall.cpp: 11328 (JSC::JIT::compileOpCallSetupArgs): 11329 (JSC::JIT::compileOpConstructSetupArgs): 11330 (JSC::JIT::compileOpCallVarargsSetupArgs): 11331 (JSC::JIT::compileOpCall): 11332 * jit/JITInlineMethods.h: 11333 (JSC::JIT::emitPutJITStubArg): 11334 (JSC::JIT::emitPutJITStubArgConstant): 11335 (JSC::JIT::emitGetJITStubArg): 11336 (JSC::JIT::emitPutJITStubArgFromVirtualRegister): 11337 * jit/JITOpcodes.cpp: 11338 (JSC::JIT::privateCompileCTIMachineTrampolines): 11339 * jit/JITPropertyAccess.cpp: 11340 (JSC::JIT::privateCompilePutByIdTransition): 11341 113422009-08-20 Oliver Hunt <oliver@apple.com> 11343 11344 Reviewed by Geoff Garen. 11345 11346 REGRESSION: significant slowdown on Celtic Kane "AJAX declaration" subtest 11347 https://bugs.webkit.org/show_bug.cgi?id=28332 11348 11349 Follow up style fixes that were missed in review. 11350 11351 * runtime/Structure.cpp: 11352 (JSC::Structure::hasTransition): 11353 * runtime/Structure.h: 11354 (JSC::Structure::get): 11355 (JSC::StructureTransitionTable::contains): 11356 * runtime/StructureTransitionTable.h: 11357 (JSC::StructureTransitionTable::add): 11358 113592009-08-20 Oliver Hunt <oliver@apple.com> 11360 11361 Add new exports to windows jsc build 11362 11363 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: 11364 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def: 11365 113662009-08-20 Oliver Hunt <oliver@apple.com> 11367 11368 Reviewed by Gavin Barraclough. 11369 11370 REGRESSION: significant slowdown on Celtic Kane "AJAX declaration" subtest 11371 https://bugs.webkit.org/show_bug.cgi?id=28332 11372 11373 The method check optimisation made transitions aware of the value being 11374 assigned when a transition was assigning a function. This had the side 11375 effect of making every assignment of a function expression result in a 11376 new transition, and thus a new Structure. The net result of this is that 11377 the common JS idiom of 11378 11379 function MyObject() { 11380 this.myFunction = function(...){...}; 11381 } 11382 new MyObject(); 11383 11384 Will produce a unique structure on every iteration, meaning that all 11385 caching is defeated and there is a significant amount of structure churn. 11386 11387 The fix is to return the transition to its original form where it is 11388 keyed off a property name + attributes tuple, but have each transition 11389 support an optional transition on a specific value. 11390 11391 * JavaScriptCore.exp: 11392 * runtime/JSObject.h: 11393 (JSC::JSObject::putDirectInternal): 11394 * runtime/Structure.cpp: 11395 (JSC::Structure::~Structure): 11396 (JSC::Structure::addPropertyTransitionToExistingStructure): 11397 (JSC::Structure::addPropertyTransition): 11398 (JSC::Structure::hasTransition): 11399 * runtime/Structure.h: 11400 (JSC::Structure::transitionedFor): 11401 (JSC::Structure::hasTransition): 11402 (JSC::Structure::): 11403 (JSC::StructureTransitionTable::contains): 11404 (JSC::StructureTransitionTable::get): 11405 * runtime/StructureTransitionTable.h: 11406 (JSC::StructureTransitionTableHashTraits::emptyValue): 11407 (JSC::StructureTransitionTable::hasTransition): 11408 (JSC::StructureTransitionTable::remove): 11409 (JSC::StructureTransitionTable::add): 11410 114112009-08-20 Gavin Barraclough <barraclough@apple.com> 11412 11413 Reviewed by Oliver Hunt. 11414 11415 Remove FunctionCodeBlock. 11416 https://bugs.webkit.org/show_bug.cgi?id=28502 11417 11418 These only exist to allow JIT code to dereference properties off the 11419 CodeBlock for any callee, regardless of whether it is a host function. 11420 11421 Instead just use the FunctionExecutable. Copy the m_parameters field 11422 from the CodeBlock into the Executable, and use this to distinguish 11423 between host functions, functions that have been bytecompiled, and 11424 functions that have not. 11425 11426 m_parameters is moved to ExecutableBase rather than FunctionExecutable 11427 so that (as a separate change) we can move make a separate class of 11428 executable for host code, which is not devived from FunctionExecutable 11429 (host code does not feature any of the properties that normal executable 11430 do and will provide, such as source, attributes, and a parsed name). 11431 11432 1% win on v8 tests, 0.5% on sunspider. 11433 11434 * bytecode/CodeBlock.cpp: 11435 (JSC::CodeBlock::derefStructures): 11436 (JSC::CodeBlock::refStructures): 11437 (JSC::CodeBlock::reparseForExceptionInfoIfNecessary): 11438 (JSC::CodeBlock::handlerForBytecodeOffset): 11439 (JSC::CodeBlock::lineNumberForBytecodeOffset): 11440 (JSC::CodeBlock::expressionRangeForBytecodeOffset): 11441 (JSC::CodeBlock::getByIdExceptionInfoForBytecodeOffset): 11442 (JSC::CodeBlock::functionRegisterForBytecodeOffset): 11443 (JSC::CodeBlock::hasGlobalResolveInstructionAtBytecodeOffset): 11444 (JSC::CodeBlock::hasGlobalResolveInfoAtBytecodeOffset): 11445 * bytecode/CodeBlock.h: 11446 (JSC::): 11447 (JSC::CodeBlock::source): 11448 (JSC::CodeBlock::sourceOffset): 11449 (JSC::CodeBlock::evalCodeCache): 11450 (JSC::CodeBlock::createRareDataIfNecessary): 11451 11452 remove NativeCodeBlocks and the NativeCode code type. 11453 11454 * jit/JIT.cpp: 11455 (JSC::JIT::linkCall): 11456 11457 Revert to previous behaviour (as currently still commented!) that Hhost functions have a null codeblock. 11458 11459 * jit/JITCall.cpp: 11460 (JSC::JIT::compileOpCallInitializeCallFrame): 11461 (JSC::JIT::compileOpCallSetupArgs): 11462 (JSC::JIT::compileOpCallVarargsSetupArgs): 11463 (JSC::JIT::compileOpConstructSetupArgs): 11464 (JSC::JIT::compileOpCallVarargs): 11465 (JSC::JIT::compileOpCall): 11466 (JSC::JIT::compileOpCallSlowCase): 11467 11468 Bring the 32_64 & non-32_64 JITs into line with each other, callee in regT0. 11469 11470 * jit/JITOpcodes.cpp: 11471 (JSC::JIT::privateCompileCTIMachineTrampolines): 11472 11473 Rewrite call trampolines to not use the CodeBlock. 11474 11475 * jit/JITStubs.cpp: 11476 (JSC::DEFINE_STUB_FUNCTION): 11477 11478 Make call_JSFunction & call_arityCheck return the callee, don't expect to be passed the CodeBlock. 11479 11480 * runtime/Executable.cpp: 11481 (JSC::FunctionExecutable::generateBytecode): 11482 (JSC::FunctionExecutable::recompile): 11483 (JSC::FunctionExecutable::FunctionExecutable): 11484 * runtime/Executable.h: 11485 (JSC::ExecutableBase::): 11486 (JSC::ExecutableBase::ExecutableBase): 11487 (JSC::FunctionExecutable::isHostFunction): 11488 11489 Add m_numParameters. 11490 11491 * runtime/JSFunction.cpp: 11492 (JSC::JSFunction::~JSFunction): 11493 11494 Only call generatedBytecode() on JSFunctions non-host FunctionExecutables. 11495 114962009-08-20 Yongjun Zhang <yongjun.zhang@nokia.com> 11497 11498 Reviewed by Eric Seidel. 11499 11500 https://bugs.webkit.org/show_bug.cgi?id=28054 11501 11502 Use a helper function to work around winscw compiler forward declaration bug 11503 regarding templated classes. 11504 11505 Add parenthesis around (PassRefPtr::*UnspecifiedBoolType) to make winscw compiler 11506 work with the default UnSpecifiedBoolType() operator, which removes the winscw 11507 specific bool cast hack. 11508 11509 * wtf/PassRefPtr.h: 11510 (WTF::derefIfNotNull): 11511 (WTF::PassRefPtr::~PassRefPtr): 11512 115132009-08-19 Yong Li <yong.li@torchmobile.com> 11514 11515 Reviewed by Gavin Barraclough. 11516 11517 Change namespace ARM to ARMRegisters 11518 X86 to X86Registers to avoid conflict with macros 11519 https://bugs.webkit.org/show_bug.cgi?id=28428 11520 11521 * assembler/ARMAssembler.cpp: 11522 * assembler/ARMAssembler.h: 11523 * assembler/ARMv7Assembler.h: 11524 * assembler/MacroAssemblerARM.h: 11525 * assembler/MacroAssemblerARMv7.h: 11526 * assembler/MacroAssemblerX86Common.h: 11527 * assembler/MacroAssemblerX86_64.h: 11528 * assembler/X86Assembler.h: 11529 * jit/JIT.h: 11530 * jit/JITArithmetic.cpp: 11531 * jit/JITInlineMethods.h: 11532 * jit/JITOpcodes.cpp: 11533 * wrec/WRECGenerator.cpp: 11534 * wrec/WRECGenerator.h: 11535 * yarr/RegexJIT.cpp: 11536 115372009-08-19 Oliver Hunt <oliver@apple.com> 11538 11539 Reviewed by Gavin Barraclough. 11540 11541 Devirtualise marking 11542 https://bugs.webkit.org/show_bug.cgi?id=28294 11543 11544 We actually need to mark the value in a number object if we're using the 11545 32bit number representation. 11546 11547 * runtime/NumberObject.h: 11548 (JSC::NumberObject::createStructure): 11549 115502009-08-19 Gavin Barraclough <barraclough@apple.com> 11551 11552 Reviewed by Darin Adler. 11553 11554 We probably shouldn't be keeping the AST for eval nodes around forevar. 11555 https://bugs.webkit.org/show_bug.cgi?id=28469 11556 11557 EvalNodes don't destroyData() (delete their parser data) since they need to hold onto 11558 their varStack. Copy a list of variable onto EvalCodeBlock, and this can go away. 11559 11560 * bytecode/CodeBlock.h: 11561 (JSC::EvalCodeBlock::variable): 11562 (JSC::EvalCodeBlock::numVariables): 11563 (JSC::EvalCodeBlock::adoptVariables): 11564 * bytecompiler/BytecodeGenerator.cpp: 11565 (JSC::BytecodeGenerator::BytecodeGenerator): 11566 * interpreter/Interpreter.cpp: 11567 (JSC::Interpreter::execute): 11568 * parser/Nodes.h: 11569 * runtime/Executable.cpp: 11570 (JSC::EvalExecutable::generateBytecode): 11571 * runtime/Executable.h: 11572 115732009-08-19 Jungshik Shin <jshin@chromium.org> 11574 11575 Reviewed by Darin Adler. 11576 11577 http://bugs.webkit.org/show_bug.cgi?id=28441 11578 11579 Fix a build issue with ICU 4.2 or later on Windows with Visual C++. 11580 Instead of defining all isXXX and toupper/tolower as 11581 WTF_Please_use_ASCIICType_instead_of_ctype_see_comment_in_ASCIICType_h, 11582 #define them to be different by prepending 'WTF_...ASCIIType_h' with 11583 the originial names like 'toupper_WTF_...ASCIIType_h'. 11584 11585 * wtf/DisallowCType.h: 11586 115872009-08-18 Oliver Hunt <oliver@apple.com> 11588 11589 Reviewed by Gavin Barraclough. 11590 11591 Assigning a function to an object should always use the existing transition, even if the transition is not specialized 11592 https://bugs.webkit.org/show_bug.cgi?id=28442 11593 11594 Check for an unspecialized transition as an alternative to always failing if specialisation does not match. 11595 11596 * runtime/Structure.cpp: 11597 (JSC::Structure::addPropertyTransitionToExistingStructure): 11598 115992009-08-18 Dirk Schulze <krit@webkit.org> 11600 11601 Reviewed by Oliver Hunt. 11602 11603 Added additional getter to ByteArray with an unsigned char as return. 11604 ByteArray can take unsigned char directly now. 11605 11606 * wtf/ByteArray.h: 11607 (WTF::ByteArray::set): 11608 (WTF::ByteArray::get): 11609 116102009-08-18 Peter Kasting <pkasting@google.com> 11611 11612 Reviewed by Eric Seidel. 11613 11614 https://bugs.webkit.org/show_bug.cgi?id=28415 11615 Set svn:eol-style CRLF on all .sln and .vcproj files that don't already 11616 have it. 11617 11618 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreGenerated.vcproj: 11619 * JavaScriptCore.vcproj/testapi/testapi.vcproj: 11620 116212009-08-18 Xan Lopez <xlopez@igalia.com> 11622 11623 Try to fix the GTK+ build. 11624 11625 * GNUmakefile.am: 11626 116272009-08-17 Gavin Barraclough <barraclough@apple.com> 11628 11629 Reviewed by Sam Weinig. 11630 11631 No, silly runtime, AST nodes are not for you. 11632 11633 We still use AST nodes (ScopeNodes, particularly FunctionBodyNodes) within 11634 the runtime, which means that these nodes must be persisted outside of the 11635 arena, contain both parser & runtime data, etc. This is all a bit of a mess. 11636 11637 Move functionality into a new FunctionExecutable class. 11638 11639 * API/JSCallbackFunction.cpp: 11640 * API/JSObjectRef.cpp: 11641 * JavaScriptCore.exp: 11642 * JavaScriptCore.xcodeproj/project.pbxproj: 11643 * bytecode/CodeBlock.cpp: 11644 (JSC::CodeBlock::CodeBlock): 11645 (JSC::CodeBlock::markAggregate): 11646 (JSC::CodeBlock::reparseForExceptionInfoIfNecessary): 11647 (JSC::CodeBlock::lineNumberForBytecodeOffset): 11648 (JSC::CodeBlock::shrinkToFit): 11649 * bytecode/CodeBlock.h: 11650 (JSC::CodeBlock::getBytecodeIndex): 11651 (JSC::CodeBlock::discardBytecode): 11652 (JSC::CodeBlock::instructionCount): 11653 (JSC::CodeBlock::getJITCode): 11654 (JSC::CodeBlock::executablePool): 11655 (JSC::CodeBlock::ownerExecutable): 11656 (JSC::CodeBlock::extractExceptionInfo): 11657 (JSC::CodeBlock::addFunctionDecl): 11658 (JSC::CodeBlock::functionDecl): 11659 (JSC::CodeBlock::numberOfFunctionDecls): 11660 (JSC::CodeBlock::addFunctionExpr): 11661 (JSC::CodeBlock::functionExpr): 11662 (JSC::GlobalCodeBlock::GlobalCodeBlock): 11663 (JSC::ProgramCodeBlock::ProgramCodeBlock): 11664 (JSC::EvalCodeBlock::EvalCodeBlock): 11665 (JSC::FunctionCodeBlock::FunctionCodeBlock): 11666 (JSC::NativeCodeBlock::NativeCodeBlock): 11667 * bytecode/EvalCodeCache.h: 11668 * bytecode/SamplingTool.cpp: 11669 (JSC::SamplingTool::doRun): 11670 * bytecompiler/BytecodeGenerator.cpp: 11671 (JSC::BytecodeGenerator::BytecodeGenerator): 11672 (JSC::BytecodeGenerator::emitNewFunction): 11673 (JSC::BytecodeGenerator::emitNewFunctionExpression): 11674 * bytecompiler/BytecodeGenerator.h: 11675 * debugger/Debugger.cpp: 11676 (JSC::Debugger::recompileAllJSFunctions): 11677 * interpreter/CachedCall.h: 11678 (JSC::CachedCall::CachedCall): 11679 * interpreter/CallFrameClosure.h: 11680 * interpreter/Interpreter.cpp: 11681 (JSC::Interpreter::unwindCallFrame): 11682 (JSC::Interpreter::throwException): 11683 (JSC::Interpreter::execute): 11684 (JSC::Interpreter::prepareForRepeatCall): 11685 (JSC::Interpreter::debug): 11686 (JSC::Interpreter::privateExecute): 11687 (JSC::Interpreter::retrieveLastCaller): 11688 * interpreter/Interpreter.h: 11689 * jit/JIT.cpp: 11690 (JSC::JIT::privateCompile): 11691 * jit/JIT.h: 11692 (JSC::JIT::compile): 11693 * jit/JITOpcodes.cpp: 11694 (JSC::JIT::privateCompileCTIMachineTrampolines): 11695 (JSC::JIT::emit_op_new_func): 11696 (JSC::JIT::emit_op_new_func_exp): 11697 * jit/JITStubs.cpp: 11698 (JSC::DEFINE_STUB_FUNCTION): 11699 * jit/JITStubs.h: 11700 (JSC::): 11701 * parser/Nodes.cpp: 11702 (JSC::FunctionBodyNode::reparseDataIfNecessary): 11703 * parser/Nodes.h: 11704 (JSC::EvalNode::partialDestroyData): 11705 * parser/Parser.h: 11706 * profiler/ProfileGenerator.cpp: 11707 * profiler/Profiler.cpp: 11708 (JSC::Profiler::createCallIdentifier): 11709 (JSC::createCallIdentifierFromFunctionImp): 11710 * runtime/Arguments.h: 11711 (JSC::Arguments::getArgumentsData): 11712 (JSC::Arguments::Arguments): 11713 (JSC::JSActivation::copyRegisters): 11714 * runtime/ArrayPrototype.cpp: 11715 (JSC::isNumericCompareFunction): 11716 * runtime/CallData.h: 11717 (JSC::): 11718 * runtime/Collector.cpp: 11719 (JSC::Heap::collect): 11720 * runtime/ConstructData.h: 11721 (JSC::): 11722 * runtime/ExceptionHelpers.cpp: 11723 (JSC::createUndefinedVariableError): 11724 (JSC::createInvalidParamError): 11725 (JSC::createNotAConstructorError): 11726 (JSC::createNotAFunctionError): 11727 (JSC::createNotAnObjectError): 11728 * runtime/Executable.cpp: Added. 11729 (JSC::EvalExecutable::generateBytecode): 11730 (JSC::ProgramExecutable::generateBytecode): 11731 (JSC::FunctionExecutable::generateBytecode): 11732 (JSC::EvalExecutable::generateJITCode): 11733 (JSC::ProgramExecutable::generateJITCode): 11734 (JSC::FunctionExecutable::generateJITCode): 11735 (JSC::FunctionExecutable::isHostFunction): 11736 (JSC::FunctionExecutable::markAggregate): 11737 (JSC::FunctionExecutable::reparseExceptionInfo): 11738 (JSC::EvalExecutable::reparseExceptionInfo): 11739 (JSC::FunctionExecutable::recompile): 11740 (JSC::FunctionExecutable::FunctionExecutable): 11741 * runtime/Executable.h: 11742 (JSC::ExecutableBase::~ExecutableBase): 11743 (JSC::ExecutableBase::ExecutableBase): 11744 (JSC::ExecutableBase::source): 11745 (JSC::ExecutableBase::sourceID): 11746 (JSC::ExecutableBase::lastLine): 11747 (JSC::ExecutableBase::usesEval): 11748 (JSC::ExecutableBase::usesArguments): 11749 (JSC::ExecutableBase::needsActivation): 11750 (JSC::ExecutableBase::astNode): 11751 (JSC::ExecutableBase::generatedJITCode): 11752 (JSC::ExecutableBase::getExecutablePool): 11753 (JSC::EvalExecutable::EvalExecutable): 11754 (JSC::EvalExecutable::bytecode): 11755 (JSC::EvalExecutable::varStack): 11756 (JSC::EvalExecutable::evalNode): 11757 (JSC::EvalExecutable::jitCode): 11758 (JSC::ProgramExecutable::ProgramExecutable): 11759 (JSC::ProgramExecutable::reparseExceptionInfo): 11760 (JSC::ProgramExecutable::bytecode): 11761 (JSC::ProgramExecutable::programNode): 11762 (JSC::ProgramExecutable::jitCode): 11763 (JSC::FunctionExecutable::FunctionExecutable): 11764 (JSC::FunctionExecutable::name): 11765 (JSC::FunctionExecutable::bytecode): 11766 (JSC::FunctionExecutable::generatedBytecode): 11767 (JSC::FunctionExecutable::usesEval): 11768 (JSC::FunctionExecutable::usesArguments): 11769 (JSC::FunctionExecutable::parameterCount): 11770 (JSC::FunctionExecutable::paramString): 11771 (JSC::FunctionExecutable::isGenerated): 11772 (JSC::FunctionExecutable::body): 11773 (JSC::FunctionExecutable::jitCode): 11774 (JSC::FunctionExecutable::createNativeThunk): 11775 * runtime/FunctionConstructor.cpp: 11776 (JSC::constructFunction): 11777 * runtime/FunctionPrototype.cpp: 11778 (JSC::functionProtoFuncToString): 11779 * runtime/JSActivation.cpp: 11780 (JSC::JSActivation::JSActivation): 11781 (JSC::JSActivation::markChildren): 11782 (JSC::JSActivation::isDynamicScope): 11783 (JSC::JSActivation::argumentsGetter): 11784 * runtime/JSActivation.h: 11785 (JSC::JSActivation::JSActivationData::JSActivationData): 11786 * runtime/JSFunction.cpp: 11787 (JSC::JSFunction::isHostFunction): 11788 (JSC::JSFunction::JSFunction): 11789 (JSC::JSFunction::~JSFunction): 11790 (JSC::JSFunction::markChildren): 11791 (JSC::JSFunction::getCallData): 11792 (JSC::JSFunction::call): 11793 (JSC::JSFunction::lengthGetter): 11794 (JSC::JSFunction::getConstructData): 11795 (JSC::JSFunction::construct): 11796 * runtime/JSFunction.h: 11797 (JSC::JSFunction::executable): 11798 (JSC::FunctionExecutable::make): 11799 * runtime/JSGlobalData.cpp: 11800 (JSC::JSGlobalData::JSGlobalData): 11801 (JSC::JSGlobalData::numericCompareFunction): 11802 * runtime/JSGlobalData.h: 11803 118042009-08-17 Mark Rowe <mrowe@apple.com> 11805 11806 Reviewed by Darin Adler. 11807 11808 Fix 300,000+ leaks seen during the regression tests. 11809 11810 EvalCodeCache::get was heap-allocating an EvalExecutable instance without adopting the initial reference. 11811 While fixing this we noticed that EvalExecutable was a RefCounted type that was sometimes stack allocated. 11812 To make this cleaner and to prevent clients from attempting to ref a stack-allocated instance, we move the 11813 refcounting down to a new CacheableEvalExecutable class that derives from EvalExecutable. EvalCodeCache::get 11814 now uses CacheableEvalExecutable::create and avoids the leak. 11815 11816 * bytecode/EvalCodeCache.h: 11817 (JSC::EvalCodeCache::get): 11818 * interpreter/Interpreter.cpp: 11819 (JSC::Interpreter::callEval): 11820 * runtime/Executable.h: 11821 (JSC::CacheableEvalExecutable::create): 11822 (JSC::CacheableEvalExecutable::CacheableEvalExecutable): 11823 118242009-08-17 Oliver Hunt <oliver@apple.com> 11825 11826 RS=Mark Rowe. 11827 11828 REGRESSION (r47292): Prototype.js is broken by ES5 Arguments changes 11829 https://bugs.webkit.org/show_bug.cgi?id=28341 11830 <rdar://problem/7145615> 11831 11832 Reverting r47292. Alas Prototype.js breaks with Arguments inheriting 11833 from Array as ES5 attempted. Prototype.js defines $A in terms of a 11834 function it places on (among other global objects) the Array prototype, 11835 thus breaking $A for arrays. 11836 11837 * runtime/Arguments.h: 11838 (JSC::Arguments::Arguments): 11839 * runtime/JSGlobalObject.cpp: 11840 (JSC::JSGlobalObject::reset): 11841 (JSC::JSGlobalObject::markChildren): 11842 * runtime/JSGlobalObject.h: 11843 (JSC::JSGlobalObject::JSGlobalObjectData::JSGlobalObjectData): 11844 * runtime/ObjectPrototype.cpp: 11845 (JSC::ObjectPrototype::ObjectPrototype): 11846 * runtime/ObjectPrototype.h: 11847 * tests/mozilla/ecma_3/Function/arguments-001.js: 11848 118492009-08-17 Peter Kasting <pkasting@google.com> 11850 11851 Reviewed by Steve Falkenburg. 11852 11853 https://bugs.webkit.org/show_bug.cgi?id=27323 11854 Only add Cygwin to the path when it isn't already there. This avoids 11855 causing problems for people who purposefully have non-Cygwin versions of 11856 executables like svn in front of the Cygwin ones in their paths. 11857 11858 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreCommon.vsprops: 11859 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreGenerated.vcproj: 11860 * JavaScriptCore.vcproj/WTF/WTFCommon.vsprops: 11861 * JavaScriptCore.vcproj/jsc/jscCommon.vsprops: 11862 * JavaScriptCore.vcproj/testapi/testapiCommon.vsprops: 11863 118642009-08-17 Xan Lopez <xlopez@igalia.com> 11865 11866 Reviewed by Mark Rowe. 11867 11868 Fix build with FAST_MALLOC_MATCH_VALIDATION enabled. 11869 11870 * wtf/FastMalloc.cpp: 11871 (WTF::fastMalloc): 11872 (WTF::fastCalloc): 11873 (WTF::fastRealloc): 11874 118752009-08-16 Holger Hans Peter Freyther <zecke@selfish.org> 11876 11877 Reviewed by Mark Rowe. 11878 11879 Fix crash on ./ecma_2/RegExp/exec-002.js. 11880 https://bugs.webkit.org/show_bug.cgi?id=28353 11881 11882 Change the order of freeParenthesesDisjunctionContext and 11883 popParenthesesDisjunctionContext on all call sites as the pop 11884 method is accessing backTrack->lastContext which is the context 11885 that is about to be freed. 11886 11887 * yarr/RegexInterpreter.cpp: 11888 (JSC::Yarr::Interpreter::parenthesesDoBacktrack): 11889 (JSC::Yarr::Interpreter::backtrackParentheses): 11890 118912009-08-16 Holger Hans Peter Freyther <zecke@selfish.org> 11892 11893 Reviewed by Mark Rowe. 11894 11895 https://bugs.webkit.org/show_bug.cgi?id=28352 11896 11897 Fix coding style violations. Use m_ for C++ class members. Remove 11898 trailing whitespace on empty lines. 11899 11900 * yarr/RegexInterpreter.cpp: 11901 (JSC::Yarr::Interpreter::ParenthesesDisjunctionContext::ParenthesesDisjunctionContext): 11902 (JSC::Yarr::Interpreter::tryConsumeCharacter): 11903 (JSC::Yarr::Interpreter::tryConsumeBackReference): 11904 (JSC::Yarr::Interpreter::parenthesesDoBacktrack): 11905 (JSC::Yarr::Interpreter::backtrackParentheses): 11906 (JSC::Yarr::ByteCompiler::ByteCompiler): 11907 (JSC::Yarr::ByteCompiler::compile): 11908 (JSC::Yarr::ByteCompiler::checkInput): 11909 (JSC::Yarr::ByteCompiler::assertionBOL): 11910 (JSC::Yarr::ByteCompiler::assertionEOL): 11911 (JSC::Yarr::ByteCompiler::assertionWordBoundary): 11912 (JSC::Yarr::ByteCompiler::atomPatternCharacter): 11913 (JSC::Yarr::ByteCompiler::atomCharacterClass): 11914 (JSC::Yarr::ByteCompiler::atomBackReference): 11915 (JSC::Yarr::ByteCompiler::atomParenthesesSubpatternBegin): 11916 (JSC::Yarr::ByteCompiler::atomParentheticalAssertionBegin): 11917 (JSC::Yarr::ByteCompiler::popParenthesesStack): 11918 (JSC::Yarr::ByteCompiler::closeAlternative): 11919 (JSC::Yarr::ByteCompiler::closeBodyAlternative): 11920 (JSC::Yarr::ByteCompiler::atomParenthesesEnd): 11921 (JSC::Yarr::ByteCompiler::regexBegin): 11922 (JSC::Yarr::ByteCompiler::alterantiveBodyDisjunction): 11923 (JSC::Yarr::ByteCompiler::alterantiveDisjunction): 11924 (JSC::Yarr::ByteCompiler::emitDisjunction): 11925 119262009-08-15 Mark Rowe <mrowe@apple.com> 11927 11928 Fix the build with JIT disabled. 11929 11930 * runtime/Arguments.h: Only compile the jitCode method when the JIT is enabled. 11931 * runtime/Executable.h: Include PrototypeFunction.h so the compiler knows what 11932 NativeFunctionWrapper is when the JIT is disabled. 11933 119342009-08-15 Adam Bergkvist <adam.bergkvist@ericsson.com> 11935 11936 Reviewed by Sam Weinig. 11937 11938 Added ENABLE_EVENTSOURCE flag. 11939 https://bugs.webkit.org/show_bug.cgi?id=14997 11940 11941 * Configurations/FeatureDefines.xcconfig: 11942 119432009-08-14 Gavin Barraclough <barraclough@apple.com> 11944 11945 * parser/Parser.h: 11946 (JSC::EvalExecutable::parse): 11947 (JSC::ProgramExecutable::parse): 11948 * runtime/Executable.h: 11949 119502009-08-14 Gavin Barraclough <barraclough@apple.com> 11951 11952 Reviewed by Oliver Hunt. 11953 11954 Remove AST nodes from use within the Runtime (outside of parsing), stage 1 11955 https://bugs.webkit.org/show_bug.cgi?id=28330 11956 11957 Remove the EvalNode and ProgramNode from use in the runtime. They still exist 11958 after this patch, but are hidden behind EvalExecutable and FunctionExecutable, 11959 and are also still reachable behind CodeBlock::m_ownerNode. 11960 11961 The next step will be to beat back FunctionBodyNode in the same fashion. 11962 Then remove the usage via CodeBlock, then only construct these nodes only on 11963 demand during bytecode generation. 11964 11965 * JavaScriptCore.xcodeproj/project.pbxproj: 11966 * bytecode/CodeBlock.h: 11967 (JSC::GlobalCodeBlock::GlobalCodeBlock): 11968 (JSC::GlobalCodeBlock::~GlobalCodeBlock): 11969 (JSC::ProgramCodeBlock::ProgramCodeBlock): 11970 (JSC::EvalCodeBlock::EvalCodeBlock): 11971 (JSC::FunctionCodeBlock::FunctionCodeBlock): 11972 (JSC::NativeCodeBlock::NativeCodeBlock): 11973 * bytecode/EvalCodeCache.h: 11974 (JSC::EvalCodeCache::get): 11975 * debugger/Debugger.cpp: 11976 (JSC::evaluateInGlobalCallFrame): 11977 * debugger/DebuggerCallFrame.cpp: 11978 (JSC::DebuggerCallFrame::evaluate): 11979 * interpreter/Interpreter.cpp: 11980 (JSC::Interpreter::callEval): 11981 (JSC::Interpreter::execute): 11982 * interpreter/Interpreter.h: 11983 * parser/Nodes.cpp: 11984 (JSC::FunctionBodyNode::createNativeThunk): 11985 (JSC::FunctionBodyNode::generateBytecode): 11986 (JSC::FunctionBodyNode::bytecodeForExceptionInfoReparse): 11987 * parser/Parser.h: 11988 (JSC::Parser::parse): 11989 (JSC::Parser::reparse): 11990 (JSC::Parser::parseFunctionFromGlobalCode): 11991 (JSC::::parse): 11992 * runtime/Completion.cpp: 11993 (JSC::checkSyntax): 11994 (JSC::evaluate): 11995 * runtime/Error.cpp: 11996 (JSC::throwError): 11997 * runtime/Error.h: 11998 * runtime/Executable.h: Added. 11999 (JSC::TemplateExecutable::TemplateExecutable): 12000 (JSC::TemplateExecutable::markAggregate): 12001 (JSC::TemplateExecutable::sourceURL): 12002 (JSC::TemplateExecutable::lineNo): 12003 (JSC::TemplateExecutable::bytecode): 12004 (JSC::TemplateExecutable::jitCode): 12005 (JSC::EvalExecutable::EvalExecutable): 12006 (JSC::ProgramExecutable::ProgramExecutable): 12007 * runtime/FunctionConstructor.cpp: 12008 (JSC::constructFunction): 12009 * runtime/FunctionConstructor.h: 12010 * runtime/JSGlobalData.cpp: 12011 (JSC::JSGlobalData::numericCompareFunction): 12012 * runtime/JSGlobalObject.cpp: 12013 (JSC::JSGlobalObject::~JSGlobalObject): 12014 (JSC::JSGlobalObject::markChildren): 12015 * runtime/JSGlobalObject.h: 12016 (JSC::JSGlobalObject::codeBlocks): 12017 * runtime/JSGlobalObjectFunctions.cpp: 12018 (JSC::globalFuncEval): 12019 120202009-08-14 Darin Adler <darin@apple.com> 12021 12022 Reviewed by Sam Weinig. 12023 12024 Rename the confusing isObject(<class>) to inherits(<class>). 12025 It still works on non-objects, returning false. 12026 12027 * runtime/ArrayConstructor.cpp: 12028 (JSC::arrayConstructorIsArray): Removed unneeded isObject call 12029 and updated remaining isObject call to new name, inherits. 12030 12031 * runtime/JSCell.h: Renamed isObject(<class>) to inherits(<class>) 12032 but more importantly, made it non-virtual (it was already inline) 12033 so it is now as fast as JSObject::inherits was. 12034 12035 * runtime/JSObject.h: Removed inherits function since the one 12036 in the base class is fine as-is. Also made various JSCell functions 12037 that should not be called on JSObject uncallable by making them 12038 both private and not implemented. 12039 (JSC::JSCell::inherits): Updated name. 12040 (JSC::JSValue::inherits): Ditto. 12041 12042 * debugger/Debugger.cpp: 12043 (JSC::Debugger::recompileAllJSFunctions): 12044 * interpreter/Interpreter.cpp: 12045 (JSC::Interpreter::unwindCallFrame): 12046 * runtime/ArrayPrototype.cpp: 12047 (JSC::arrayProtoFuncToString): 12048 (JSC::arrayProtoFuncToLocaleString): 12049 (JSC::arrayProtoFuncConcat): 12050 * runtime/BooleanPrototype.cpp: 12051 (JSC::booleanProtoFuncToString): 12052 (JSC::booleanProtoFuncValueOf): 12053 * runtime/DateConstructor.cpp: 12054 (JSC::constructDate): 12055 * runtime/DatePrototype.cpp: 12056 (JSC::dateProtoFuncToString): 12057 (JSC::dateProtoFuncToUTCString): 12058 (JSC::dateProtoFuncToISOString): 12059 (JSC::dateProtoFuncToDateString): 12060 (JSC::dateProtoFuncToTimeString): 12061 (JSC::dateProtoFuncToLocaleString): 12062 (JSC::dateProtoFuncToLocaleDateString): 12063 (JSC::dateProtoFuncToLocaleTimeString): 12064 (JSC::dateProtoFuncGetTime): 12065 (JSC::dateProtoFuncGetFullYear): 12066 (JSC::dateProtoFuncGetUTCFullYear): 12067 (JSC::dateProtoFuncToGMTString): 12068 (JSC::dateProtoFuncGetMonth): 12069 (JSC::dateProtoFuncGetUTCMonth): 12070 (JSC::dateProtoFuncGetDate): 12071 (JSC::dateProtoFuncGetUTCDate): 12072 (JSC::dateProtoFuncGetDay): 12073 (JSC::dateProtoFuncGetUTCDay): 12074 (JSC::dateProtoFuncGetHours): 12075 (JSC::dateProtoFuncGetUTCHours): 12076 (JSC::dateProtoFuncGetMinutes): 12077 (JSC::dateProtoFuncGetUTCMinutes): 12078 (JSC::dateProtoFuncGetSeconds): 12079 (JSC::dateProtoFuncGetUTCSeconds): 12080 (JSC::dateProtoFuncGetMilliSeconds): 12081 (JSC::dateProtoFuncGetUTCMilliseconds): 12082 (JSC::dateProtoFuncGetTimezoneOffset): 12083 (JSC::dateProtoFuncSetTime): 12084 (JSC::setNewValueFromTimeArgs): 12085 (JSC::setNewValueFromDateArgs): 12086 (JSC::dateProtoFuncSetYear): 12087 (JSC::dateProtoFuncGetYear): 12088 * runtime/FunctionPrototype.cpp: 12089 (JSC::functionProtoFuncToString): 12090 * runtime/JSActivation.cpp: 12091 (JSC::JSActivation::argumentsGetter): 12092 * runtime/JSValue.h: 12093 * runtime/RegExpConstructor.cpp: 12094 (JSC::constructRegExp): 12095 * runtime/RegExpPrototype.cpp: 12096 (JSC::regExpProtoFuncTest): 12097 (JSC::regExpProtoFuncExec): 12098 (JSC::regExpProtoFuncCompile): 12099 (JSC::regExpProtoFuncToString): 12100 * runtime/ScopeChain.cpp: 12101 (JSC::ScopeChain::localDepth): 12102 * runtime/StringPrototype.cpp: 12103 (JSC::stringProtoFuncReplace): 12104 (JSC::stringProtoFuncToString): 12105 (JSC::stringProtoFuncMatch): 12106 (JSC::stringProtoFuncSearch): 12107 (JSC::stringProtoFuncSplit): 12108 Updated to new name, inherits, from old name, isObject. 12109 121102009-07-31 Harald Fernengel <harald.fernengel@nokia.com> 12111 12112 Reviewed by Simon Hausmann. 12113 12114 Adding QNX as a platform. Currently only tested with Qt. 12115 12116 https://bugs.webkit.org/show_bug.cgi?id=27885 12117 12118 * JavaScriptCore/runtime/Collector.cpp: Added retrieving of stack base 12119 since QNX doesn't have the pthread _nt functions 12120 * JavaScriptCore/wtf/Platform.h: Added WTF_PLATFORM_QNX and corresponding 12121 defines 12122 * WebCore/bridge/npapi.h: Build fix for missing typedefs on QNX 12123 121242009-08-14 Gabor Loki <loki@inf.u-szeged.hu> 12125 12126 Reviewed by Simon Hausmann. 12127 12128 Currently generic ARM and ARMv7 platforms work only with JSVALUE32 12129 https://bugs.webkit.org/show_bug.cgi?id=28300 12130 12131 * wtf/Platform.h: 12132 121332009-08-14 Gabor Loki <loki@inf.u-szeged.hu> 12134 12135 Reviewed by Simon Hausmann. 12136 12137 Enable JIT on ARM for QT by default 12138 https://bugs.webkit.org/show_bug.cgi?id=28259 12139 12140 * wtf/Platform.h: 12141 121422009-08-14 Gabor Loki <loki@inf.u-szeged.hu> 12143 12144 Reviewed by Simon Hausmann. 12145 12146 Enable YARR_JIT on ARM for QT by default 12147 https://bugs.webkit.org/show_bug.cgi?id=28259 12148 12149 * wtf/Platform.h: 12150 121512009-08-14 Oliver Hunt <oliver@apple.com> 12152 12153 Reviewed by Gavin Barraclough. 12154 12155 [ES5] Arguments object should inherit from Array 12156 https://bugs.webkit.org/show_bug.cgi?id=28298 12157 12158 Make the Arguments object conform to the behaviour specified in ES5. 12159 The simple portion of this is to make Arguments use Array.prototype 12160 as its prototype rather than Object.prototype. 12161 12162 The spec then requires us to set instance.constructor to the pristine 12163 Object constructor, and instance.toString and instance.toLocaleString 12164 to the pristine versions from Object.prototype. To do this we now 12165 make the ObjectPrototype constructor return its toString and 12166 toLocaleString functions (similar to the call and apply functions 12167 from FunctionPrototype). 12168 12169 Oddly enough this reports itself as a slight win, but given the code 12170 isn't hit in the tests that claim to have improved I put this down to 12171 code motion. 12172 12173 * runtime/Arguments.h: 12174 (JSC::Arguments::Arguments): 12175 (JSC::Arguments::initializeStandardProperties): 12176 * runtime/JSGlobalObject.cpp: 12177 (JSC::JSGlobalObject::reset): 12178 (JSC::JSGlobalObject::markChildren): 12179 * runtime/JSGlobalObject.h: 12180 (JSC::JSGlobalObject::JSGlobalObjectData::JSGlobalObjectData): 12181 (JSC::JSGlobalObject::objectConstructor): 12182 (JSC::JSGlobalObject::objectToStringFunction): 12183 (JSC::JSGlobalObject::objectToLocaleStringFunction): 12184 * runtime/ObjectPrototype.cpp: 12185 (JSC::ObjectPrototype::ObjectPrototype): 12186 * runtime/ObjectPrototype.h: 12187 * tests/mozilla/ecma_3/Function/arguments-001.js: 12188 Update test to new es5 behaviour 12189 121902009-08-14 Oliver Hunt <oliver@apple.com> 12191 12192 Remove MarkStack::drain from the JSC exports file 12193 12194 MarkStack::drain is now marked inline, the including it in the exports file 12195 produces an ld warning 12196 12197 * JavaScriptCore.exp: 12198 121992009-08-13 Sam Weinig <sam@webkit.org> 12200 12201 Reviewed by Oliver Hunt. 12202 12203 Remove accidentally left in debugging statement. 12204 12205 * runtime/JSArray.h: 12206 (JSC::MarkStack::drain): 12207 122082009-08-13 Oliver Hunt <oliver@apple.com> 12209 12210 Reviewed by Maciej Stachowiak. 12211 12212 [ES5] Implement Array.isArray 12213 https://bugs.webkit.org/show_bug.cgi?id=28296 12214 12215 Add support for Array.isArray to the Array constructor 12216 12217 * runtime/ArrayConstructor.cpp: 12218 (JSC::ArrayConstructor::ArrayConstructor): 12219 (JSC::arrayConstructorIsArray): 12220 * runtime/ArrayConstructor.h: 12221 * runtime/CommonIdentifiers.h: 12222 * runtime/JSArray.h: 12223 (JSC::MarkStack::drain): 12224 * runtime/JSGlobalObject.cpp: 12225 (JSC::JSGlobalObject::reset): 12226 122272009-08-13 Oliver Hunt <oliver@apple.com> 12228 12229 Reviewed by NOBODY (Buildfix). 12230 12231 Attempt to fix windows build 12232 12233 * runtime/Collector.cpp: 12234 122352009-08-13 Oliver Hunt <oliver@apple.com> 12236 12237 Reviewed by Maciej Stachowiak. 12238 12239 Devirtualise marking 12240 https://bugs.webkit.org/show_bug.cgi?id=28294 12241 12242 Add a bit to TypeInfo to indicate that an object uses the standard 12243 JSObject::markChildren method. This allows us to devirtualise marking 12244 of most objects (though a branch is still needed). We also add a branch 12245 to identify arrays thus devirtualising marking in that case as well. 12246 12247 In order to make the best use of this devirtualisation I've also reworked 12248 the MarkStack::drain() logic to make the iteration more efficient. 12249 12250 * API/JSCallbackConstructor.h: 12251 (JSC::JSCallbackConstructor::createStructure): 12252 * API/JSCallbackFunction.h: 12253 (JSC::JSCallbackFunction::createStructure): 12254 * JavaScriptCore.exp: 12255 * runtime/BooleanObject.h: 12256 (JSC::BooleanObject::createStructure): 12257 * runtime/FunctionPrototype.h: 12258 (JSC::FunctionPrototype::createStructure): 12259 * runtime/InternalFunction.h: 12260 (JSC::InternalFunction::createStructure): 12261 * runtime/JSAPIValueWrapper.h: 12262 (JSC::JSAPIValueWrapper::JSAPIValueWrapper): 12263 * runtime/JSArray.cpp: 12264 (JSC::JSArray::markChildren): 12265 * runtime/JSArray.h: 12266 (JSC::JSArray::markChildrenDirect): 12267 (JSC::MarkStack::drain): 12268 * runtime/JSByteArray.cpp: 12269 (JSC::JSByteArray::createStructure): 12270 * runtime/JSCell.h: 12271 (JSC::MarkStack::append): 12272 * runtime/JSGlobalData.cpp: 12273 (JSC::JSGlobalData::JSGlobalData): 12274 * runtime/JSNumberCell.h: 12275 (JSC::JSNumberCell::createStructure): 12276 * runtime/JSONObject.h: 12277 (JSC::JSONObject::createStructure): 12278 * runtime/JSObject.cpp: 12279 (JSC::JSObject::markChildren): 12280 * runtime/JSObject.h: 12281 (JSC::JSObject::markChildrenDirect): 12282 (JSC::JSObject::createStructure): 12283 * runtime/JSString.h: 12284 (JSC::JSString::createStructure): 12285 * runtime/JSType.h: 12286 (JSC::): 12287 * runtime/MarkStack.h: 12288 (JSC::MarkStack::MarkStack): 12289 (JSC::MarkStack::MarkSet::MarkSet): 12290 (JSC::MarkStack::MarkStackArray::last): 12291 * runtime/MathObject.h: 12292 (JSC::MathObject::createStructure): 12293 * runtime/NumberConstructor.h: 12294 (JSC::NumberConstructor::createStructure): 12295 * runtime/NumberObject.h: 12296 (JSC::NumberObject::createStructure): 12297 * runtime/RegExpConstructor.h: 12298 (JSC::RegExpConstructor::createStructure): 12299 * runtime/RegExpObject.h: 12300 (JSC::RegExpObject::createStructure): 12301 * runtime/StringObjectThatMasqueradesAsUndefined.h: 12302 (JSC::StringObjectThatMasqueradesAsUndefined::createStructure): 12303 * runtime/TypeInfo.h: 12304 (JSC::TypeInfo::hasDefaultMark): 12305 123062009-08-13 Darin Adler <darin@apple.com> 12307 12308 Reviewed by Mark Rowe. 12309 12310 Some small bits of housekeeping. 12311 12312 * JavaScriptCore.xcodeproj/project.pbxproj: Make Parser.h 12313 project instead of private. Remove JSONObject.lut.h. 12314 12315 * assembler/ARMAssembler.h: Remove unneeded WTF prefix. 12316 * assembler/AssemblerBufferWithConstantPool.h: Ditto. 12317 * bytecompiler/BytecodeGenerator.h: Ditto. 12318 12319 * wtf/SegmentedVector.h: Add a "using" statement as we do 12320 with the other WTF headers. 12321 123222009-08-13 Darin Adler <darin@apple.com> 12323 12324 Fix Tiger build. 12325 12326 * parser/Grammar.y: Use a template function so we can compile 12327 setStatementLocation even if it comes before YYLTYPE is defined. 12328 123292009-08-13 Darin Adler <darin@apple.com> 12330 12331 Reviewed by George Staikos. 12332 12333 Too much use of void* in Grammar.y 12334 https://bugs.webkit.org/show_bug.cgi?id=28287 12335 12336 * parser/Grammar.y: Changed all the helper functions to 12337 take a JSGlobalData* instead of a void*. A couple formatting 12338 tweaks that I missed when breaking this into pieces. 12339 123402009-08-13 Darin Adler <darin@apple.com> 12341 12342 Reviewed by George Staikos. 12343 12344 Another part of https://bugs.webkit.org/show_bug.cgi?id=28287 12345 12346 * parser/Grammar.y: Reduced and sorted includes. Tweaked comment 12347 format. Marked a few more functions inline. 12348 123492009-08-13 Darin Adler <darin@apple.com> 12350 12351 Reviewed by George Staikos. 12352 12353 Another part of https://bugs.webkit.org/show_bug.cgi?id=28287 12354 12355 * parser/Grammar.y: Pass the number to the PropertyNode instead of 12356 first turning it into an Identifier. 12357 12358 * parser/NodeConstructors.h: 12359 (JSC::PropertyNode::PropertyNode): Add an overload that takes a double 12360 so the code to convert to a string can be here instead of Grammar.y. 12361 * parser/Nodes.h: Ditto. 12362 123632009-08-13 Darin Adler <darin@apple.com> 12364 12365 Reviewed by George Staikos. 12366 12367 Another part of https://bugs.webkit.org/show_bug.cgi?id=28287 12368 12369 * parser/Grammar.y: Eliminate the DBG macro. 12370 123712009-08-13 Darin Adler <darin@apple.com> 12372 12373 Reviewed by George Staikos. 12374 12375 Another part of https://bugs.webkit.org/show_bug.cgi?id=28287 12376 12377 * parser/Grammar.y: Eliminate the SET_EXCEPTION_LOCATION macro. 12378 123792009-08-13 Darin Adler <darin@apple.com> 12380 12381 Reviewed by George Staikos. 12382 12383 George asked me to break the patch from 12384 https://bugs.webkit.org/show_bug.cgi?id=28287 12385 into smaller pieces and land it in stages. 12386 12387 * parser/Grammar.y: Eliminate the LEXER macro. 12388 123892009-08-13 Mark Rowe <mrowe@apple.com> 12390 12391 Try some more to fix the Windows build. 12392 12393 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: Export a new symbol. 12394 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def: Ditto. 12395 123962009-08-13 Mark Rowe <mrowe@apple.com> 12397 12398 Try and fix the Windows build. 12399 12400 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: Export a new symbol. 12401 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def: Ditto. 12402 124032009-08-13 Darin Adler <darin@apple.com> 12404 12405 Reviewed by David Levin. 12406 12407 JavaScriptCore tweaks to get ready for the parser arena 12408 https://bugs.webkit.org/show_bug.cgi?id=28243 12409 12410 Eliminate dependencies on Nodes.h outside JavaScriptCore, 12411 and cut down on them inside JavaScriptCore. 12412 12413 Change regular expression parsing to use identifiers as 12414 with other strings we parse. 12415 12416 Fix a couple things that are needed to use const Identifier 12417 more, which will be part of the parser arena work. 12418 12419 * JavaScriptCore.exp: Resorted and updated. 12420 12421 * JavaScriptCore.xcodeproj/project.pbxproj: Changed 12422 CollectorHeapIterator.h to be project-internal. 12423 12424 * bytecompiler/BytecodeGenerator.cpp: 12425 (JSC::BytecodeGenerator::emitPushNewScope): Added const. 12426 * bytecompiler/BytecodeGenerator.h: Ditto. 12427 12428 * debugger/Debugger.cpp: 12429 (JSC::Debugger::recompileAllJSFunctions): Moved this function 12430 here from WebCore. Here is better since it uses so many internals. 12431 Removed unimportant optimization for the no listener case. 12432 * debugger/Debugger.h: Ditto. Also removed unneeded include 12433 and tweaked formatting and comments. 12434 12435 * debugger/DebuggerCallFrame.cpp: 12436 (JSC::DebuggerCallFrame::functionName): Call asFunction instead 12437 of doing the unchecked static_cast. 12438 (JSC::DebuggerCallFrame::calculatedFunctionName): Ditto. 12439 12440 * jit/JITStubs.cpp: 12441 (JSC::op_call_JSFunction): Call isHostFunction on the body rather 12442 than on the JSFunction. 12443 (JSC::vm_lazyLinkCall): Ditto. 12444 (JSC::op_construct_JSConstruct): Ditto. 12445 12446 * parser/Grammar.y: Changed callers to use new scanRegExp with 12447 out arguments instead of relying on state in the Lexer. And 12448 callers that just want to skip a regular expression to use 12449 skipRegExp. 12450 12451 * parser/Lexer.cpp: 12452 (JSC::Lexer::scanRegExp): Changed to use out arguments, and to 12453 add a prefix argument so we can add in the "=" character as needed. 12454 Also rewrote to streamline the logic a bit inspired by suggestions 12455 by David Levin. 12456 (JSC::Lexer::skipRegExp): Added. Version of the function above that 12457 does not actually put the regular expression into a string. 12458 (JSC::Lexer::clear): Removed code to clear m_pattern and m_flags. 12459 * parser/Lexer.h: Changed scanRegExp to have out arguments. Added 12460 skipRegExp. Eliminated pattern, flags, m_pattern, and m_flags. 12461 12462 * parser/NodeConstructors.h: 12463 (JSC::RegExpNode::RegExpNode): Changed to take const Identifier&. 12464 * parser/Nodes.cpp: 12465 (JSC::RegExpNode::emitBytecode): Changed since m_pattern and 12466 m_flags are now Identifier instead of UString. 12467 (JSC::FunctionBodyNode::make): Moved this function here instead 12468 of putting it in the JSFunction.h header. 12469 * parser/Nodes.h: Changed RegExpNode to use Identifier. 12470 12471 * profiler/Profiler.cpp: 12472 (JSC::Profiler::createCallIdentifier): Changed to use isHostFunction 12473 on the body instead of on the JSFunction object. 12474 * runtime/FunctionPrototype.cpp: 12475 (JSC::functionProtoFuncToString): Ditto. 12476 12477 * runtime/JSFunction.cpp: 12478 (JSC::JSFunction::isHostFunction): Moved here from header. 12479 (JSC::JSFunction::isHostFunctionNonInline): Added. 12480 (JSC::JSFunction::JSFunction): Removed unneeded initialization of 12481 m_body to 0. 12482 (JSC::JSFunction::setBody): Moved here from header. 12483 12484 * runtime/JSFunction.h: Removed unneeded includes. Moved private 12485 constructor down to the private section. Made virtual functions 12486 private. Removed unneeded overload of setBody and moved the body 12487 of the function into the .cpp file. Changed assertions to use 12488 the non-inline version of isHostFunction. 12489 12490 * runtime/PropertySlot.cpp: 12491 (JSC::PropertySlot::functionGetter): Use asFunction instead 12492 of doing the unchecked static_cast. 12493 12494 * wtf/SegmentedVector.h: 12495 (WTF::SegmentedVector::isEmpty): Added. 12496 124972009-08-13 Mark Rowe <mrowe@apple.com> 12498 12499 Rubber-stamped by Darin Adler. 12500 12501 Use the version of operator new that takes a JSGlobalData when allocating FuncDeclNode and FuncExprNode 12502 from within the grammar to prevent these nodes from being leaked. 12503 12504 * parser/Grammar.y: 12505 125062009-08-13 Simon Hausmann <simon.hausmann@nokia.com> 12507 12508 Reviewed by Ariya Hidayat. 12509 12510 Remove the special-case for Qt wrt JSVALUE_32 introduced in 12511 r46709. It must've been a dependency issue on the bot, as 12512 after a manual build all the tests pass on amd64 and ia32. 12513 12514 * wtf/Platform.h: 12515 125162009-08-12 Gabor Loki <loki@inf.u-szeged.hu> 12517 12518 Reviewed by Gavin Barraclough. 12519 12520 Add optimize call and property access support for ARM JIT. 12521 https://bugs.webkit.org/show_bug.cgi?id=24986 12522 12523 For tightly coupled sequences the BEGIN_UNINTERRUPTED_SEQUENCE and 12524 END_UNINTERRUPTED_SEQUENCE macros have been introduced which ensure 12525 space for instructions and constants of the named sequence. This 12526 method is vital for those architecture which are using constant pool. 12527 12528 The 'latePatch' method - which was linked to JmpSrc - is replaced with 12529 a port specific solution (each calls are marked to place their address 12530 on the constant pool). 12531 12532 * assembler/ARMAssembler.cpp: 12533 (JSC::ARMAssembler::linkBranch): 12534 (JSC::ARMAssembler::executableCopy): Add extra align for constant pool. 12535 * assembler/ARMAssembler.h: 12536 (JSC::ARMAssembler::JmpSrc::JmpSrc): 12537 (JSC::ARMAssembler::sizeOfConstantPool): 12538 (JSC::ARMAssembler::jmp): 12539 (JSC::ARMAssembler::linkCall): 12540 * assembler/ARMv7Assembler.h: 12541 * assembler/AbstractMacroAssembler.h: 12542 * assembler/AssemblerBufferWithConstantPool.h: 12543 (JSC::AssemblerBufferWithConstantPool::flushIfNoSpaceFor): Fix the 12544 computation of the remaining space. 12545 * assembler/MacroAssemblerARM.h: 12546 (JSC::MacroAssemblerARM::branch32): 12547 (JSC::MacroAssemblerARM::nearCall): 12548 (JSC::MacroAssemblerARM::call): 12549 (JSC::MacroAssemblerARM::branchPtrWithPatch): 12550 (JSC::MacroAssemblerARM::ensureSpace): 12551 (JSC::MacroAssemblerARM::sizeOfConstantPool): 12552 (JSC::MacroAssemblerARM::prepareCall): 12553 * assembler/X86Assembler.h: 12554 * jit/JIT.h: 12555 * jit/JITCall.cpp: 12556 (JSC::JIT::compileOpCall): 12557 * jit/JITInlineMethods.h: 12558 (JSC::JIT::beginUninterruptedSequence): 12559 (JSC::JIT::endUninterruptedSequence): 12560 * jit/JITPropertyAccess.cpp: 12561 (JSC::JIT::emit_op_method_check): 12562 (JSC::JIT::compileGetByIdHotPath): 12563 (JSC::JIT::compileGetByIdSlowCase): 12564 (JSC::JIT::emit_op_put_by_id): 12565 125662009-08-12 Gavin Barraclough <barraclough@apple.com> 12567 12568 Rubber Stamped by Dave Kilzer. 12569 12570 Disable WTF_USE_JSVALUE32_64 on iPhone for now (support not yet added for ARMv7). 12571 12572 * wtf/Platform.h: 12573 125742009-08-12 Gavin Barraclough <barraclough@apple.com> 12575 12576 Reviewed by Maciej Stachoviak. 12577 12578 Ooops - moved code that had been accidentally added to op_new_func instead of 12579 op_new_func_exp, to where it shoulds be. 12580 12581 * interpreter/Interpreter.cpp: 12582 (JSC::Interpreter::privateExecute): 12583 * wtf/Platform.h: 12584 125852009-08-12 Ada Chan <adachan@apple.com> 12586 12587 Added workaround for the limitation that VirtualFree with MEM_RELEASE 12588 can only accept the base address returned by VirtualAlloc when the region 12589 was reserved and it can only free the entire region, and not a part of it. 12590 12591 Reviewed by Oliver Hunt. 12592 12593 * runtime/MarkStack.h: 12594 (JSC::MarkStack::MarkStackArray::shrinkAllocation): 12595 * runtime/MarkStackWin.cpp: 12596 (JSC::MarkStack::releaseStack): 12597 125982009-08-12 Balazs Kelemen <kelemen.balazs.3@stud.u-szeged.hu> 12599 12600 Reviewed by Ariya Hidayat. 12601 12602 Build fix: use std::numeric_limits<long long>::min() instead of LLONG_MIN 12603 since LLONG_MIN is not defined in standard c++. 12604 12605 * runtime/UString.cpp: 12606 (JSC::UString::from): 12607 126082009-08-12 Benjamin Otte <otte@gnome.org> 12609 12610 Reviewed by Jan Alonzo. 12611 12612 Buildfix for Gtk platforms debug builds. 12613 12614 * GNUmakefile.am: Choose MarkStackPosix.cpp or MarkStackWin.cpp 12615 depending on platform. 12616 126172009-08-12 Simon Hausmann <simon.hausmann@nokia.com> 12618 12619 Prospective build fix for Mac and 32-bit Windows. 12620 12621 * runtime/UString.cpp: Include wtf/StringExtras.h for snprintf. 12622 (JSC::UString::from): Use %lld instead of %I64d for snprintf 12623 on non-windows platforms. 12624 126252009-08-12 Prasanth Ullattil <prasanth.ullattil@nokia.com> 12626 12627 Reviewed by Simon Hausmann. 12628 12629 Fix compile error on 64Bit Windows, when UString::from 12630 is called with an intptr_t. 12631 12632 Added new UString::From overload with long long parameter. 12633 12634 Thanks to Holger for the long long idea. 12635 12636 * runtime/UString.cpp: 12637 (JSC::UString::from): 12638 * runtime/UString.h: 12639 126402009-08-11 Oliver Hunt <oliver@apple.com> 12641 12642 Reviewed by Mark Rowe. 12643 12644 Minor style fixes. 12645 12646 * runtime/UString.h: 12647 (JSC::UString::Rep::createEmptyBuffer): 12648 * wtf/FastMalloc.h: 12649 (WTF::TryMallocReturnValue::getValue): 12650 126512009-08-11 Oliver Hunt <oliver@apple.com> 12652 12653 Reviewed by Gavin Barraclough. 12654 12655 Make it harder to misuse try* allocation routines 12656 https://bugs.webkit.org/show_bug.cgi?id=27469 12657 12658 Jump through a few hoops to make it much harder to accidentally 12659 miss null-checking of values returned by the try-* allocation 12660 routines. 12661 12662 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: 12663 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def: 12664 * JavaScriptCore.xcodeproj/project.pbxproj: 12665 * runtime/JSArray.cpp: 12666 (JSC::JSArray::putSlowCase): 12667 (JSC::JSArray::increaseVectorLength): 12668 * runtime/StringPrototype.cpp: 12669 (JSC::stringProtoFuncFontsize): 12670 (JSC::stringProtoFuncLink): 12671 * runtime/UString.cpp: 12672 (JSC::allocChars): 12673 (JSC::reallocChars): 12674 (JSC::expandCapacity): 12675 (JSC::UString::Rep::reserveCapacity): 12676 (JSC::UString::expandPreCapacity): 12677 (JSC::createRep): 12678 (JSC::concatenate): 12679 (JSC::UString::spliceSubstringsWithSeparators): 12680 (JSC::UString::replaceRange): 12681 (JSC::UString::append): 12682 (JSC::UString::operator=): 12683 * runtime/UString.h: 12684 (JSC::UString::Rep::createEmptyBuffer): 12685 * wtf/FastMalloc.cpp: 12686 (WTF::tryFastZeroedMalloc): 12687 (WTF::tryFastMalloc): 12688 (WTF::tryFastCalloc): 12689 (WTF::tryFastRealloc): 12690 (WTF::TCMallocStats::tryFastMalloc): 12691 (WTF::TCMallocStats::tryFastCalloc): 12692 (WTF::TCMallocStats::tryFastRealloc): 12693 * wtf/FastMalloc.h: 12694 (WTF::TryMallocReturnValue::TryMallocReturnValue): 12695 (WTF::TryMallocReturnValue::~TryMallocReturnValue): 12696 (WTF::TryMallocReturnValue::operator PossiblyNull<T>): 12697 (WTF::TryMallocReturnValue::getValue): 12698 * wtf/Platform.h: 12699 * wtf/PossiblyNull.h: Added. 12700 (WTF::PossiblyNull::PossiblyNull): 12701 (WTF::PossiblyNull::~PossiblyNull): 12702 (WTF::::getValue): 12703 127042009-08-11 Gavin Barraclough <barraclough@apple.com> 12705 12706 Reviewed by NOBODY (build fix part deux). 12707 12708 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: 12709 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def: 12710 127112009-08-11 Gavin Barraclough <barraclough@apple.com> 12712 12713 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: 12714 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def: 12715 127162009-08-11 Gavin Barraclough <barraclough@apple.com> 12717 12718 Reviewed by Oliver Hunt. 12719 12720 Restrict use of FuncDeclNode & FuncExprNode to the parser. 12721 https://bugs.webkit.org/show_bug.cgi?id=28209 12722 12723 These objects were also being referenced from the CodeBlock. By changing this 12724 to just retain pointers to FunctionBodyNodes these classes can be restricted to 12725 use during parsing. 12726 12727 No performance impact (or sub-percent progression). 12728 12729 * JavaScriptCore.exp: 12730 Update symbols. 12731 12732 * bytecode/CodeBlock.cpp: 12733 (JSC::CodeBlock::mark): 12734 (JSC::CodeBlock::reparseForExceptionInfoIfNecessary): 12735 (JSC::CodeBlock::shrinkToFit): 12736 * bytecode/CodeBlock.h: 12737 (JSC::CodeBlock::addFunction): 12738 (JSC::CodeBlock::function): 12739 Unify m_functions & m_functionExpressions into a single Vector<RefPtr<FuncExprNode> >. 12740 12741 * bytecompiler/BytecodeGenerator.cpp: 12742 (JSC::BytecodeGenerator::BytecodeGenerator): 12743 (JSC::BytecodeGenerator::addConstant): 12744 (JSC::BytecodeGenerator::emitNewFunction): 12745 (JSC::BytecodeGenerator::emitNewFunctionExpression): 12746 * bytecompiler/BytecodeGenerator.h: 12747 FunctionStacks now contain FunctionBodyNodes not FuncDeclNodes. 12748 12749 * interpreter/Interpreter.cpp: 12750 (JSC::Interpreter::execute): 12751 (JSC::Interpreter::privateExecute): 12752 Update to reflect chnages in CodeBlock. 12753 12754 * jit/JITOpcodes.cpp: 12755 (JSC::JIT::emit_op_new_func_exp): 12756 * jit/JITStubs.cpp: 12757 (JSC::DEFINE_STUB_FUNCTION): 12758 * jit/JITStubs.h: 12759 (JSC::): 12760 Update to reflect chnages in CodeBlock. 12761 12762 * parser/Grammar.y: 12763 FunctionStacks now contain FunctionBodyNodes not FuncDeclNodes. 12764 12765 * parser/NodeConstructors.h: 12766 (JSC::FuncExprNode::FuncExprNode): 12767 (JSC::FuncDeclNode::FuncDeclNode): 12768 * parser/Nodes.cpp: 12769 (JSC::ScopeNodeData::mark): 12770 (JSC::FunctionBodyNode::finishParsing): 12771 * parser/Nodes.h: 12772 (JSC::FunctionBodyNode::ident): 12773 Move m_ident & make methods from FuncDeclNode & FuncExprNode to FunctionBodyNode. 12774 12775 * runtime/JSFunction.h: 12776 (JSC::FunctionBodyNode::make): 12777 Make this method inline (was FuncDeclNode::makeFunction). 12778 127792009-08-11 Oliver Hunt <oliver@apple.com> 12780 12781 Reviewed by Gavin Barraclough. 12782 12783 Native JSON.stringify does not omit functions 12784 https://bugs.webkit.org/show_bug.cgi?id=28117 12785 12786 Objects that are callable should be treated as undefined when 12787 serialising to JSON. 12788 12789 * runtime/JSONObject.cpp: 12790 (JSC::Stringifier::appendStringifiedValue): 12791 127922009-08-11 Oliver Hunt <oliver@apple.com> 12793 12794 Reviewed by Geoff Garen. 12795 12796 REGRESSION: Hang/crash in BytecodeGenerator::constRegisterFor loading simple page 12797 https://bugs.webkit.org/show_bug.cgi?id=28169 12798 12799 Handle the case where someone has attempted to shadow a property 12800 on the global object with a constant. 12801 12802 * bytecompiler/BytecodeGenerator.cpp: 12803 (JSC::BytecodeGenerator::constRegisterFor): 12804 * parser/Nodes.cpp: 12805 (JSC::ConstDeclNode::emitCodeSingle): 12806 128072009-08-11 John Gregg <johnnyg@google.com> 12808 12809 Reviewed by Maciej Stachowiak. 12810 12811 Desktop Notifications API 12812 https://bugs.webkit.org/show_bug.cgi?id=25463 12813 12814 Adds ENABLE_NOTIFICATION flag. 12815 12816 * Configurations/FeatureDefines.xcconfig: 12817 * wtf/Platform.h: 12818 128192009-08-11 Maxime Simon <simon.maxime@gmail.com> 12820 12821 Reviewed by Eric Seidel. 12822 12823 Modifications on JavaScriptCore to allow Haiku port. 12824 https://bugs.webkit.org/show_bug.cgi?id=28121 12825 12826 * runtime/Collector.cpp: Haiku doesn't have sys/mman.h, using OS.h instead. 12827 (JSC::currentThreadStackBase): Haiku uses its own threading system. 12828 * wtf/Platform.h: Defining all Haiku platform values. 12829 * wtf/haiku/MainThreadHaiku.cpp: Adding a missing header (NotImplemented.h). 12830 128312009-08-11 Jessie Berlin <jberlin@apple.com> 12832 12833 Reviewed by Adam Roben. 12834 12835 Fix windows build. 12836 12837 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def: 12838 128392009-08-11 Csaba Osztrogonac <oszi@inf.u-szeged.hu> 12840 12841 Reviewed by Tor Arne Vestbø. 12842 12843 Buildfix for Qt-win platforms. 12844 12845 * JavaScriptCore.pri: Choose MarkStackPosix.cpp or MarkStackWin.cpp depend on platform. 12846 128472009-08-10 Oliver Hunt <oliver@apple.com> 12848 12849 Reviewed by NOBODY (And another build fix). 12850 12851 Add new exports for MSVC 12852 12853 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: 12854 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def: 12855 * JavaScriptCore.xcodeproj/project.pbxproj: 12856 128572009-08-10 Oliver Hunt <oliver@apple.com> 12858 12859 Reviewed by NOBODY (yet another build fix). 12860 12861 Remove obsolete entries from MSVC exports file 12862 12863 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: 12864 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def: 12865 128662009-08-10 Oliver Hunt <oliver@apple.com> 12867 12868 Add includes needed for non-allinonefile builds 12869 12870 * runtime/GetterSetter.h: 12871 * runtime/ScopeChain.h: 12872 128732009-08-10 Oliver Hunt <oliver@apple.com> 12874 12875 Fix export file for last build fix 12876 12877 * JavaScriptCore.exp: 12878 128792009-08-10 Oliver Hunt <oliver@apple.com> 12880 12881 Hoist page size initialization into platform specific code. 12882 12883 * jit/ExecutableAllocatorPosix.cpp: 12884 * jit/ExecutableAllocatorWin.cpp: 12885 * runtime/MarkStack.h: 12886 (JSC::MarkStack::pageSize): 12887 * runtime/MarkStackPosix.cpp: 12888 (JSC::MarkStack::initializePagesize): 12889 * runtime/MarkStackWin.cpp: 12890 (JSC::MarkStack::initializePagesize): 12891 128922009-08-07 Oliver Hunt <oliver@apple.com> 12893 12894 Reviewed by Gavin Barraclough. 12895 12896 Stack overflow crash in JavaScript garbage collector mark pass 12897 https://bugs.webkit.org/show_bug.cgi?id=12216 12898 12899 Make the GC mark phase iterative by using an explicit mark stack. 12900 To do this marking any single object is performed in multiple stages 12901 * The object is appended to the MarkStack, this sets the marked 12902 bit for the object using the new markDirect() function, and then 12903 returns 12904 * When the MarkStack is drain()ed the object is popped off the stack 12905 and markChildren(MarkStack&) is called on the object to collect 12906 all of its children. drain() then repeats until the stack is empty. 12907 12908 Additionally I renamed a number of methods from 'mark' to 'markAggregate' 12909 in order to make it more clear that marking of those object was not 12910 going to result in an actual recursive mark. 12911 12912 * GNUmakefile.am 12913 * JavaScriptCore.exp: 12914 * JavaScriptCore.gypi: 12915 * JavaScriptCore.pri: 12916 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: 12917 * JavaScriptCore.xcodeproj/project.pbxproj: 12918 * bytecode/CodeBlock.cpp: 12919 (JSC::CodeBlock::markAggregate): 12920 * bytecode/CodeBlock.h: 12921 * bytecode/EvalCodeCache.h: 12922 (JSC::EvalCodeCache::markAggregate): 12923 * debugger/DebuggerActivation.cpp: 12924 (JSC::DebuggerActivation::markChildren): 12925 * debugger/DebuggerActivation.h: 12926 * interpreter/Register.h: 12927 * interpreter/RegisterFile.h: 12928 (JSC::RegisterFile::markGlobals): 12929 (JSC::RegisterFile::markCallFrames): 12930 * parser/Nodes.cpp: 12931 (JSC::ScopeNodeData::markAggregate): 12932 (JSC::EvalNode::markAggregate): 12933 (JSC::FunctionBodyNode::markAggregate): 12934 * parser/Nodes.h: 12935 (JSC::ScopeNode::markAggregate): 12936 * runtime/ArgList.cpp: 12937 (JSC::MarkedArgumentBuffer::markLists): 12938 * runtime/ArgList.h: 12939 * runtime/Arguments.cpp: 12940 (JSC::Arguments::markChildren): 12941 * runtime/Arguments.h: 12942 * runtime/Collector.cpp: 12943 (JSC::Heap::markConservatively): 12944 (JSC::Heap::markCurrentThreadConservativelyInternal): 12945 (JSC::Heap::markCurrentThreadConservatively): 12946 (JSC::Heap::markOtherThreadConservatively): 12947 (JSC::Heap::markStackObjectsConservatively): 12948 (JSC::Heap::markProtectedObjects): 12949 (JSC::Heap::collect): 12950 * runtime/Collector.h: 12951 * runtime/GetterSetter.cpp: 12952 (JSC::GetterSetter::markChildren): 12953 * runtime/GetterSetter.h: 12954 (JSC::GetterSetter::GetterSetter): 12955 (JSC::GetterSetter::createStructure): 12956 * runtime/GlobalEvalFunction.cpp: 12957 (JSC::GlobalEvalFunction::markChildren): 12958 * runtime/GlobalEvalFunction.h: 12959 * runtime/JSActivation.cpp: 12960 (JSC::JSActivation::markChildren): 12961 * runtime/JSActivation.h: 12962 * runtime/JSArray.cpp: 12963 (JSC::JSArray::markChildren): 12964 * runtime/JSArray.h: 12965 * runtime/JSCell.h: 12966 (JSC::JSCell::markCellDirect): 12967 (JSC::JSCell::markChildren): 12968 (JSC::JSValue::markDirect): 12969 (JSC::JSValue::markChildren): 12970 (JSC::JSValue::hasChildren): 12971 (JSC::MarkStack::append): 12972 (JSC::MarkStack::drain): 12973 * runtime/JSFunction.cpp: 12974 (JSC::JSFunction::markChildren): 12975 * runtime/JSFunction.h: 12976 * runtime/JSGlobalData.cpp: 12977 (JSC::JSGlobalData::JSGlobalData): 12978 * runtime/JSGlobalData.h: 12979 * runtime/JSGlobalObject.cpp: 12980 (JSC::markIfNeeded): 12981 (JSC::JSGlobalObject::markChildren): 12982 * runtime/JSGlobalObject.h: 12983 * runtime/JSNotAnObject.cpp: 12984 (JSC::JSNotAnObject::markChildren): 12985 * runtime/JSNotAnObject.h: 12986 * runtime/JSONObject.cpp: 12987 (JSC::Stringifier::markAggregate): 12988 (JSC::JSONObject::markStringifiers): 12989 * runtime/JSONObject.h: 12990 * runtime/JSObject.cpp: 12991 (JSC::JSObject::markChildren): 12992 (JSC::JSObject::defineGetter): 12993 (JSC::JSObject::defineSetter): 12994 * runtime/JSObject.h: 12995 * runtime/JSPropertyNameIterator.cpp: 12996 (JSC::JSPropertyNameIterator::markChildren): 12997 * runtime/JSPropertyNameIterator.h: 12998 (JSC::JSPropertyNameIterator::createStructure): 12999 (JSC::JSPropertyNameIterator::JSPropertyNameIterator): 13000 (JSC::JSPropertyNameIterator::create): 13001 * runtime/JSStaticScopeObject.cpp: 13002 (JSC::JSStaticScopeObject::markChildren): 13003 * runtime/JSStaticScopeObject.h: 13004 * runtime/JSType.h: 13005 (JSC::): 13006 * runtime/JSValue.h: 13007 * runtime/JSWrapperObject.cpp: 13008 (JSC::JSWrapperObject::markChildren): 13009 * runtime/JSWrapperObject.h: 13010 * runtime/MarkStack.cpp: Added. 13011 (JSC::MarkStack::compact): 13012 * runtime/MarkStack.h: Added. 13013 (JSC::): 13014 (JSC::MarkStack::MarkStack): 13015 (JSC::MarkStack::append): 13016 (JSC::MarkStack::appendValues): 13017 (JSC::MarkStack::~MarkStack): 13018 (JSC::MarkStack::MarkSet::MarkSet): 13019 (JSC::MarkStack::pageSize): 13020 13021 MarkStackArray is a non-shrinking, mmap-based vector type 13022 used for storing objects to be marked. 13023 (JSC::MarkStack::MarkStackArray::MarkStackArray): 13024 (JSC::MarkStack::MarkStackArray::~MarkStackArray): 13025 (JSC::MarkStack::MarkStackArray::expand): 13026 (JSC::MarkStack::MarkStackArray::append): 13027 (JSC::MarkStack::MarkStackArray::removeLast): 13028 (JSC::MarkStack::MarkStackArray::isEmpty): 13029 (JSC::MarkStack::MarkStackArray::size): 13030 (JSC::MarkStack::MarkStackArray::shrinkAllocation): 13031 * runtime/MarkStackPosix.cpp: Added. 13032 (JSC::MarkStack::allocateStack): 13033 (JSC::MarkStack::releaseStack): 13034 * runtime/MarkStackWin.cpp: Added. 13035 (JSC::MarkStack::allocateStack): 13036 (JSC::MarkStack::releaseStack): 13037 13038 * runtime/ScopeChain.h: 13039 * runtime/ScopeChainMark.h: 13040 (JSC::ScopeChain::markAggregate): 13041 * runtime/SmallStrings.cpp: 13042 (JSC::SmallStrings::mark): 13043 * runtime/Structure.h: 13044 (JSC::Structure::markAggregate): 13045 130462009-08-10 Mark Rowe <mrowe@apple.com> 13047 13048 Reviewed by Darin Adler. 13049 13050 Fix hundreds of "pointer being freed was not allocated" errors seen on the build bot. 13051 13052 * wtf/FastMalloc.h: Implement nothrow variants of the delete and delete[] operators since 13053 we implement the nothrow variants of new and new[]. The nothrow variant of delete is called 13054 explicitly in the implementation of std::sort which was resulting in FastMalloc-allocated 13055 memory being passed to the system allocator to free. 13056 130572009-08-10 Jan Michael Alonzo <jmalonzo@webkit.org> 13058 13059 [Gtk] Unreviewed build fix. Move JSAPIValueWrapper.cpp/.h in the debug 13060 section. This file is already part of AllInOneFile in Release builds. 13061 13062 * GNUmakefile.am: 13063 130642009-08-10 Darin Adler <darin@apple.com> 13065 13066 * wtf/FastMalloc.h: Fix build. 13067 130682009-08-10 Darin Adler <darin@apple.com> 13069 13070 Reviewed by Mark Rowe. 13071 13072 FastMalloc.h has cross-platform code but marked as WinCE-only 13073 https://bugs.webkit.org/show_bug.cgi?id=28160 13074 13075 1) The support for nothrow was inside #if PLATFORM(WINCE) even though it is 13076 not platform-specific. 13077 2) The code tried to override operator delete nothrow, which does not exist. 13078 3) The code in the header checks the value of USE_SYSTEM_MALLOC, but the code 13079 in FastMalloc.cpp checks only if the macro is defined. 13080 13081 * wtf/FastMalloc.h: See above. 13082 * wtf/FastMalloc.cpp: Ditto. 13083 130842009-08-10 Sam Weinig <sam@webkit.org> 13085 13086 Reviewed by Anders Carlsson. 13087 13088 Fix an annoying indentation issue. 13089 13090 * runtime/DateConstructor.cpp: 13091 (JSC::constructDate): 13092 130932009-08-10 Xan Lopez <xlopez@igalia.com> 13094 13095 Unreviewed build fix. 13096 13097 Add new files to makefile. 13098 13099 * GNUmakefile.am: 13100 131012009-08-10 Simon Hausmann <simon.hausmann@nokia.com> 13102 13103 Fix compilation with the interpreter instead of the JIT by including 13104 PrototypeFunction.h as forward-declared through NativeFunctionWrapper.h. 13105 13106 * runtime/ObjectConstructor.cpp: 13107 131082009-08-09 Oliver Hunt <oliver@apple.com> 13109 13110 Reviewed by George Staikos. 13111 13112 JSON.stringify replacer returning undefined does not omit object properties 13113 https://bugs.webkit.org/show_bug.cgi?id=28118 13114 13115 Correct behaviour of stringify when using a replacer function that returns 13116 undefined. This is a simple change to move the undefined value check to 13117 after the replacer function is called. This means that the replacer function 13118 is now called for properties with the value undefined, however i've confirmed 13119 that this behaviour is correct. 13120 13121 In addition I've made the cyclic object exception have a more useful error 13122 message. 13123 13124 * runtime/JSONObject.cpp: 13125 (JSC::Stringifier::appendStringifiedValue): 13126 131272009-08-08 Oliver Hunt <oliver@apple.com> 13128 13129 Reviewed by Eric Seidel and Sam Weinig. 13130 13131 [ES5] Implement Object.getPrototypeOf 13132 https://bugs.webkit.org/show_bug.cgi?id=28114 13133 13134 Implement getPrototypeOf 13135 13136 * runtime/CommonIdentifiers.h: 13137 * runtime/JSGlobalObject.cpp: 13138 (JSC::JSGlobalObject::reset): 13139 * runtime/ObjectConstructor.cpp: 13140 (JSC::ObjectConstructor::ObjectConstructor): 13141 (JSC::objectConsGetPrototypeOf): 13142 * runtime/ObjectConstructor.h: 13143 131442009-08-07 Zoltan Horvath <hzoltan@inf.u-szeged.hu> 13145 13146 Reviewed by Eric Seidel. 13147 13148 Allow custom memory allocation control for Noncopyable class 13149 https://bugs.webkit.org/show_bug.cgi?id=27879 13150 13151 Several classes which are inherited from Noncopyable are instantiated by 13152 operator new, so Noncopyable class has been inherited from FastAllocBase. 13153 13154 * wtf/Noncopyable.h: 13155 131562009-08-07 George Staikos <george.staikos@torchmobile.com> 13157 13158 Reviewed by Eric Seidel. 13159 13160 https://bugs.webkit.org/show_bug.cgi?id=27305 13161 Implement WinCE-specific unicode layer. 13162 Written by George Staikos <george.staikos@torchmobile.com> 13163 with bug fixes by Yong Li <yong.li@torchmobile.com> 13164 refactored by Joe Mason <joe.mason@torchmobile.com> 13165 13166 * wtf/Platform.h: 13167 * wtf/unicode/Unicode.h: 13168 * wtf/unicode/wince/UnicodeWince.cpp: Added. 13169 (WTF::Unicode::toLower): 13170 (WTF::Unicode::toUpper): 13171 (WTF::Unicode::foldCase): 13172 (WTF::Unicode::isPrintableChar): 13173 (WTF::Unicode::isSpace): 13174 (WTF::Unicode::isLetter): 13175 (WTF::Unicode::isUpper): 13176 (WTF::Unicode::isLower): 13177 (WTF::Unicode::isDigit): 13178 (WTF::Unicode::isPunct): 13179 (WTF::Unicode::toTitleCase): 13180 (WTF::Unicode::direction): 13181 (WTF::Unicode::category): 13182 (WTF::Unicode::decompositionType): 13183 (WTF::Unicode::combiningClass): 13184 (WTF::Unicode::mirroredChar): 13185 (WTF::Unicode::digitValue): 13186 * wtf/unicode/wince/UnicodeWince.h: Added. 13187 (WTF::Unicode::): 13188 (WTF::Unicode::isSeparatorSpace): 13189 (WTF::Unicode::isHighSurrogate): 13190 (WTF::Unicode::isLowSurrogate): 13191 (WTF::Unicode::isArabicChar): 13192 (WTF::Unicode::hasLineBreakingPropertyComplexContext): 13193 (WTF::Unicode::umemcasecmp): 13194 (WTF::Unicode::surrogateToUcs4): 13195 131962009-08-07 Yongjun Zhang <yongjun.zhang@nokia.com> 13197 13198 Reviewed by Eric Seidel. 13199 13200 https://bugs.webkit.org/show_bug.cgi?id=28069 13201 13202 Add inline to help winscw compiler resolve specialized argument in 13203 templated functions. 13204 13205 * runtime/LiteralParser.cpp: 13206 (JSC::LiteralParser::Lexer::lexString): 13207 132082009-08-07 Zoltan Horvath <hzoltan@inf.u-szeged.hu> 13209 13210 Reviewed by Eric Seidel. 13211 13212 Allow custom memory allocation control for RegExpObjectData struct 13213 http://bugs.webkit.org/show_bug.cgi?id=26750 13214 13215 Inherits RegExpObjectData struct from FastAllocBase because 13216 it has been instantiated by 'new' in JavaScriptCore/runtime/RegExpObject.cpp:62 13217 13218 * runtime/RegExpObject.h: 13219 132202009-08-06 Norbert Leser <norbert.leser@nokia.com> 13221 13222 Reviewed by Darin Adler. 13223 13224 Updated patch for bug #27059: 13225 Symbian platform always uses little endian encoding, 13226 regardless of compiler. 13227 We need to make sure that we correctly detect EABI architecture 13228 for armv5 targets on Symbian, 13229 where __EABI__ is set but not __ARM_EABI__ 13230 13231 * wtf/Platform.h: 13232 132332009-08-06 Adam Barth <abarth@webkit.org> 13234 13235 Unreviewed revert. 13236 13237 http://bugs.webkit.org/show_bug.cgi?id=27879 13238 13239 Revert 46877 because it broke GTK. 13240 13241 * wtf/Noncopyable.h: 13242 132432009-08-06 Gavin Barraclough <barraclough@apple.com> 13244 13245 Reviewed by Oliver Hunt. 13246 13247 Make get_by_id/put_by_id/method_check/call defer optimization using a data flag rather than a code modification. 13248 ( https://bugs.webkit.org/show_bug.cgi?id=27635 ) 13249 13250 This improves performance of ENABLE(ASSEMBLER_WX_EXCLUSIVE) builds by 2-2.5%, reducing the overhead to about 2.5%. 13251 (No performance impact with ASSEMBLER_WX_EXCLUSIVE disabled). 13252 13253 * bytecode/CodeBlock.cpp: 13254 (JSC::printStructureStubInfo): 13255 - Make StructureStubInfo store the type as an integer, rather than an OpcodeID. 13256 13257 * bytecode/CodeBlock.h: 13258 (JSC::): 13259 (JSC::CallLinkInfo::seenOnce): 13260 (JSC::CallLinkInfo::setSeen): 13261 (JSC::MethodCallLinkInfo::seenOnce): 13262 (JSC::MethodCallLinkInfo::setSeen): 13263 - Change a pointer in CallLinkInfo/MethodCallLinkInfo to use a PtrAndFlags, use a flag to track when an op has been executed once. 13264 13265 * bytecode/StructureStubInfo.cpp: 13266 (JSC::StructureStubInfo::deref): 13267 - Make StructureStubInfo store the type as an integer, rather than an OpcodeID. 13268 13269 * bytecode/StructureStubInfo.h: 13270 (JSC::StructureStubInfo::StructureStubInfo): 13271 (JSC::StructureStubInfo::initGetByIdSelf): 13272 (JSC::StructureStubInfo::initGetByIdProto): 13273 (JSC::StructureStubInfo::initGetByIdChain): 13274 (JSC::StructureStubInfo::initGetByIdSelfList): 13275 (JSC::StructureStubInfo::initGetByIdProtoList): 13276 (JSC::StructureStubInfo::initPutByIdTransition): 13277 (JSC::StructureStubInfo::initPutByIdReplace): 13278 (JSC::StructureStubInfo::seenOnce): 13279 (JSC::StructureStubInfo::setSeen): 13280 - Make StructureStubInfo store the type as an integer, rather than an OpcodeID, add a flag to track when an op has been executed once. 13281 13282 * bytecompiler/BytecodeGenerator.cpp: 13283 (JSC::BytecodeGenerator::emitGetById): 13284 (JSC::BytecodeGenerator::emitPutById): 13285 - Make StructureStubInfo store the type as an integer, rather than an OpcodeID. 13286 13287 * jit/JIT.cpp: 13288 (JSC::JIT::privateCompileCTIMachineTrampolines): 13289 (JSC::JIT::unlinkCall): 13290 - Remove the "don't lazy link" stage of calls. 13291 13292 * jit/JIT.h: 13293 (JSC::JIT::compileCTIMachineTrampolines): 13294 - Remove the "don't lazy link" stage of calls. 13295 13296 * jit/JITCall.cpp: 13297 (JSC::JIT::compileOpCallSlowCase): 13298 - Remove the "don't lazy link" stage of calls. 13299 13300 * jit/JITStubs.cpp: 13301 (JSC::JITThunks::JITThunks): 13302 (JSC::JITThunks::tryCachePutByID): 13303 (JSC::JITThunks::tryCacheGetByID): 13304 (JSC::JITStubs::DEFINE_STUB_FUNCTION): 13305 (JSC::JITStubs::getPolymorphicAccessStructureListSlot): 13306 - Remove the "don't lazy link" stage of calls, and the "_second" stage of get_by_id/put_by_id/method_check. 13307 13308 * jit/JITStubs.h: 13309 (JSC::JITThunks::ctiStringLengthTrampoline): 13310 (JSC::JITStubs::): 13311 - Remove the "don't lazy link" stage of calls, and the "_second" stage of get_by_id/put_by_id/method_check. 13312 13313 * wtf/PtrAndFlags.h: 13314 (WTF::PtrAndFlags::PtrAndFlags): 13315 (WTF::PtrAndFlags::operator!): 13316 (WTF::PtrAndFlags::operator->): 13317 - Add ! and -> operators, add constuctor with pointer argument. 13318 133192009-08-06 Zoltan Horvath <hzoltan@inf.u-szeged.hu> 13320 13321 Reviewed by Adam Barth. 13322 13323 Allow custom memory allocation control for Noncopyable class 13324 https://bugs.webkit.org/show_bug.cgi?id=27879 13325 13326 Several classes which inherited from Noncopyable are instantiated by 13327 operator new, so Noncopyable class has been inherited from FastAllocBase. 13328 13329 * wtf/Noncopyable.h: 13330 133312009-08-06 Mark Rowe <mrowe@apple.com> 13332 13333 Rubber-stamped by Sam Weinig. 13334 13335 Add explicit dependencies for our build verification scripts to ensure that they always run after linking has completed. 13336 13337 * JavaScriptCore.xcodeproj/project.pbxproj: 13338 133392009-08-06 Mark Rowe <mrowe@apple.com> 13340 13341 Bring a little order to our otherwise out of control lives. 13342 13343 * JavaScriptCore.xcodeproj/project.pbxproj: 13344 133452009-08-06 Zoltan Horvath <hzoltan@inf.u-szeged.hu> 13346 13347 Reviewed by Darin Adler. 13348 13349 Allow custom memory allocation control for JavaScriptCore's PolymorphicAccessStructureList struct 13350 https://bugs.webkit.org/show_bug.cgi?id=27877 13351 13352 Inherits PolymorphicAccessStructureList struct from FastAllocBase because it has been instantiated by 13353 'new' in JavaScriptCore/jit/JITStubs.cpp:1229. 13354 13355 * bytecode/Instruction.h: 13356 133572009-08-05 Zoltan Horvath <hzoltan@inf.u-szeged.hu> 13358 13359 Reviewed by Darin Adler. 13360 13361 Allow custom memory allocation control for JavaScriptCore's ScopeNodeData struct 13362 https://bugs.webkit.org/show_bug.cgi?id=27875 13363 13364 Inherits ScopeNodeData struct from FastAllocBase because it has been instantiated by 13365 'new' in JavaScriptCore/parser/Nodes.cpp:1848. 13366 13367 * parser/Nodes.h: 13368 133692009-08-05 Zoltan Herczeg <zherczeg@inf.u-szeged.hu> 13370 13371 Reviewed by Gavin Barraclough. 13372 13373 Add floating point support for generic ARM port. 13374 https://bugs.webkit.org/show_bug.cgi?id=24986 13375 13376 * assembler/ARMAssembler.cpp: 13377 (JSC::ARMAssembler::doubleTransfer): 13378 * assembler/ARMAssembler.h: 13379 (JSC::ARM::): 13380 (JSC::ARMAssembler::): 13381 (JSC::ARMAssembler::faddd_r): 13382 (JSC::ARMAssembler::fsubd_r): 13383 (JSC::ARMAssembler::fmuld_r): 13384 (JSC::ARMAssembler::fcmpd_r): 13385 (JSC::ARMAssembler::fdtr_u): 13386 (JSC::ARMAssembler::fdtr_d): 13387 (JSC::ARMAssembler::fmsr_r): 13388 (JSC::ARMAssembler::fsitod_r): 13389 (JSC::ARMAssembler::fmstat): 13390 * assembler/MacroAssemblerARM.h: 13391 (JSC::MacroAssemblerARM::): 13392 (JSC::MacroAssemblerARM::supportsFloatingPoint): 13393 (JSC::MacroAssemblerARM::loadDouble): 13394 (JSC::MacroAssemblerARM::storeDouble): 13395 (JSC::MacroAssemblerARM::addDouble): 13396 (JSC::MacroAssemblerARM::subDouble): 13397 (JSC::MacroAssemblerARM::mulDouble): 13398 (JSC::MacroAssemblerARM::convertInt32ToDouble): 13399 (JSC::MacroAssemblerARM::branchDouble): 13400 * jit/JIT.h: 13401 134022009-08-05 Zoltan Herczeg <zherczeg@inf.u-szeged.hu> 13403 13404 Reviewed by Gavin Barraclough. 13405 13406 Add JIT support for generic ARM port without optimizations. 13407 https://bugs.webkit.org/show_bug.cgi?id=24986 13408 13409 All JIT optimizations are disabled. 13410 13411 Signed off by Zoltan Herczeg <zherczeg@inf.u-szeged.hu> 13412 Signed off by Gabor Loki <loki@inf.u-szeged.hu> 13413 13414 * assembler/ARMAssembler.cpp: 13415 (JSC::ARMAssembler::baseIndexTransfer32): 13416 * assembler/AbstractMacroAssembler.h: 13417 (JSC::AbstractMacroAssembler::Imm32::Imm32): 13418 * assembler/MacroAssemblerARM.h: 13419 (JSC::MacroAssemblerARM::store32): 13420 (JSC::MacroAssemblerARM::move): 13421 (JSC::MacroAssemblerARM::branch32): 13422 (JSC::MacroAssemblerARM::add32): 13423 (JSC::MacroAssemblerARM::sub32): 13424 (JSC::MacroAssemblerARM::load32): 13425 * bytecode/CodeBlock.h: 13426 (JSC::CodeBlock::getBytecodeIndex): 13427 * jit/JIT.h: 13428 * jit/JITInlineMethods.h: 13429 (JSC::JIT::restoreArgumentReference): 13430 * jit/JITOpcodes.cpp: 13431 * jit/JITStubs.cpp: 13432 * jit/JITStubs.h: 13433 (JSC::JITStackFrame::returnAddressSlot): 13434 * wtf/Platform.h: 13435 134362009-08-04 Gavin Barraclough <barraclough@apple.com> 13437 13438 Rubber Stamped by Oiver Hunt. 13439 13440 Revert r46643 since this breaks the Yarr::Interpreter running the v8 tests. 13441 https://bugs.webkit.org/show_bug.cgi?id=27874 13442 13443 * yarr/RegexInterpreter.cpp: 13444 (JSC::Yarr::Interpreter::allocDisjunctionContext): 13445 (JSC::Yarr::Interpreter::freeDisjunctionContext): 13446 (JSC::Yarr::Interpreter::allocParenthesesDisjunctionContext): 13447 (JSC::Yarr::Interpreter::freeParenthesesDisjunctionContext): 13448 134492009-08-04 Oliver Hunt <oliver@apple.com> 13450 13451 PPC64 Build fix 13452 13453 * wtf/Platform.h: 13454 134552009-08-04 Benjamin C Meyer <benjamin.meyer@torchmobile.com> 13456 13457 Reviewed by Adam Treat 13458 13459 Explicitly include limits.h header when using INT_MAX and INT_MIN 13460 13461 * interpreter/Interpreter.cpp 13462 134632009-08-03 Harald Fernengel <harald.fernengel@nokia.com> 13464 13465 Reviewed by Darin Adler. 13466 13467 Fix compile error for ambigous call to abs() 13468 https://bugs.webkit.org/show_bug.cgi?id=27873 13469 13470 Fix ambiguity in abs(long int) call by calling labs() instead 13471 13472 * wtf/DateMath.cpp: replace call to abs() with labs() 13473 134742009-08-03 Laszlo Gombos <laszlo.1.gombos@nokia.com> 13475 13476 Reviewed by Eric Seidel. 13477 13478 [Qt] Consolidate common gcc flags to WebKit.pri 13479 https://bugs.webkit.org/show_bug.cgi?id=27934 13480 13481 * JavaScriptCore.pro: 13482 134832009-08-03 Ada Chan <adachan@apple.com> 13484 13485 Fixed the Tiger build. 13486 13487 * wtf/FastMalloc.cpp: 13488 134892009-08-03 Ada Chan <adachan@apple.com> 13490 13491 Reviewed by Darin Adler. 13492 13493 Don't use background thread to scavenge memory on Tiger until we figure out why it causes a crash. 13494 https://bugs.webkit.org/show_bug.cgi?id=27900 13495 13496 * wtf/FastMalloc.cpp: 13497 134982009-08-03 Fumitoshi Ukai <ukai@chromium.org> 13499 13500 Reviewed by Jan Alonzo. 13501 13502 Fix build break on Gtk/x86_64. 13503 https://bugs.webkit.org/show_bug.cgi?id=27936 13504 13505 Use JSVALUE64 for X86_64 LINUX, except Qt. 13506 13507 * wtf/Platform.h: 13508 135092009-08-02 Xan Lopez <xlopez@igalia.com> 13510 13511 Fix the GTK+ build. 13512 13513 * wtf/Platform.h: 13514 135152009-08-02 Geoffrey Garen <ggaren@apple.com> 13516 13517 Reviewed by Sam Weinig. 13518 13519 Disabled JSVALUE32_64 on Qt builds, since all layout tests mysteriously 13520 crash with it enabled. 13521 13522 * wtf/Platform.h: 13523 135242009-08-02 Geoffrey Garen <ggaren@apple.com> 13525 13526 Qt build fix. 13527 13528 Added JSAPIValueWrapper.cpp to the build. 13529 13530 * JavaScriptCore.pri: 13531 135322009-08-02 Geoffrey Garen <ggaren@apple.com> 13533 13534 Windows build fix. 13535 13536 Exported symbols for JSAPIValueWrapper. 13537 13538 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: 13539 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def: 13540 135412009-08-02 Geoffrey Garen <ggaren@apple.com> 13542 13543 GTK build fix. 13544 13545 * jit/JITStubs.cpp: #include <stdarg.h>, for a definition of va_start. 13546 135472009-08-02 Geoffrey Garen <ggaren@apple.com> 13548 13549 Qt build fix. 13550 13551 * runtime/Collector.cpp: #include <limits.h>, for a definition of ULONG_MAX. 13552 135532009-08-02 Geoffrey Garen <ggaren@apple.com> 13554 13555 Windows build fix: Nixed JSImmediate::prototype, JSImmediate::toObject, 13556 and JSImmediate::toThisObject, and removed their exported symbols. 13557 13558 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: 13559 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def: 13560 * runtime/JSImmediate.cpp: 13561 * runtime/JSImmediate.h: 13562 135632009-08-02 Geoffrey Garen <ggaren@apple.com> 13564 13565 Reviewed by Mark Rowe. 13566 13567 Enabled JSVALUE32_64 by default on all platforms other than x86_64 (which uses JSVALUE64). 13568 13569 * wtf/Platform.h: 13570 135712009-08-02 Kevin Ollivier <kevino@theolliviers.com> 13572 13573 Reviewed by Jan Alonzo. 13574 13575 Script for building the JavaScriptCore library for wx. 13576 https://bugs.webkit.org/show_bug.cgi?id=27619 13577 13578 * wscript: Added. 13579 135802009-08-02 Yong Li <yong.li@torchmobile.com> 13581 13582 Reviewed by George Staikos. 13583 13584 DateMath depends on strftime and localtime, which need to be imported manually on WinCE 13585 https://bugs.webkit.org/show_bug.cgi?id=26558 13586 13587 * wtf/DateMath.cpp: 13588 135892009-08-01 David Kilzer <ddkilzer@apple.com> 13590 13591 wtf/Threading.h: added include of Platform.h 13592 13593 Reviewed by Mark Rowe. 13594 13595 * wtf/Threading.h: Added #include "Platform.h" since this header 13596 uses PLATFORM() and other macros. 13597 135982009-08-01 Mark Rowe <mrowe@apple.com> 13599 13600 Rubber-stamped by Oliver Hunt. 13601 13602 Roll out r46668 as it was misinformed. ScopeChain is only used with placement new. 13603 13604 * runtime/ScopeChain.h: 13605 136062009-08-01 Zoltan Horvath <hzoltan@inf.u-szeged.hu> 13607 13608 Allow custom memory allocation control for JavaScriptCore's HashMap class 13609 http://bugs.webkit.org/show_bug.cgi?id=27871 13610 13611 Inherits HashMap class from FastAllocBase because it has been 13612 instantiated by 'new' in JavaScriptCore/API/JSClassRef.cpp:148. 13613 13614 * wtf/RefPtrHashMap.h: 13615 (WTF::): 13616 136172009-08-01 Zoltan Horvath <hzoltan@inf.u-szeged.hu> 13618 13619 Allow custom memory allocation control for JavaScriptCore's ScopeChain class 13620 https://bugs.webkit.org/show_bug.cgi?id=27834 13621 13622 Inherits ScopeChain class from FastAllocBase because it has been 13623 instantiated by 'new' in JavaScriptCore/runtime/JSFunction.h:109. 13624 13625 * runtime/ScopeChain.h: 13626 136272009-08-01 Zoltan Horvath <hzoltan@inf.u-szeged.hu> 13628 13629 Reviewed by Darin Adler. 13630 13631 Allow custom memory allocation control for JavaScriptCore's RegExpConstructorPrivate struct 13632 https://bugs.webkit.org/show_bug.cgi?id=27833 13633 13634 Inherits RegExpConstructorPrivate class from FastAllocBase because it has been 13635 instantiated by 'new' in JavaScriptCore/runtime/RegExpConstructor.cpp:152. 13636 13637 * runtime/RegExpConstructor.cpp: 13638 136392009-07-31 Yong Li <yong.li@torchmobile.com> 13640 13641 Reviewed by George Staikos. 13642 13643 Resurrect the old GetTickCount implementation of currentTime, controlled by WTF_USE_QUERY_PERFORMANCE_COUNTER 13644 currentSystemTime taken from older WebKit; currentTime written by Yong Li <yong.li@torchmobile.com>; cleanup by Joe Mason <joe.mason@torchmobile.com> 13645 https://bugs.webkit.org/show_bug.cgi?id=27848 13646 13647 * wtf/CurrentTime.cpp: 13648 (WTF::currentSystemTime): get current time with GetCurrentFT 13649 (WTF::currentTime): track msec elapsed since first currentSystemTime call using GetTickCount 13650 * wtf/Platform.h: 13651 136522009-07-31 Ada Chan <adachan@apple.com> 13653 13654 Fixes the Windows release-PGO build. 13655 13656 Reviewed by Jon Honeycutt. 13657 13658 * JavaScriptCore.vcproj/WTF/WTF.vcproj: Suppresses the warning about unreachable code that we get by adding "return 0" to WTF::TCMalloc_PageHeap::runScavengerThread(). 13659 * wtf/FastMalloc.cpp: 13660 (WTF::TCMalloc_PageHeap::runScavengerThread): Fixes the error about the method not returning a value in the release-PGO build. 13661 136622009-07-31 Zoltan Horvath <hzoltan@inf.u-szeged.hu> 13663 13664 Change malloc to fastMalloc and free to fastFree in Yarr's RegexInterpreter.cpp 13665 https://bugs.webkit.org/show_bug.cgi?id=27874 13666 13667 Use fastMalloc and fastFree instead of malloc and free in RegexInterpreter.cpp's methods. 13668 13669 * yarr/RegexInterpreter.cpp: 13670 (JSC::Yarr::Interpreter::allocDisjunctionContext): 13671 (JSC::Yarr::Interpreter::freeDisjunctionContext): 13672 (JSC::Yarr::Interpreter::allocParenthesesDisjunctionContext): 13673 (JSC::Yarr::Interpreter::freeParenthesesDisjunctionContext): 13674 136752009-07-30 Xan Lopez <xlopez@igalia.com> 13676 13677 Reviewed by Jan Alonzo. 13678 13679 Fix compiler warning. 13680 13681 GCC does not like C++-style comments in preprocessor directives. 13682 13683 * wtf/Platform.h: 13684 136852009-07-30 John McCall <rjmccall@apple.com> 13686 13687 Reviewed by Gavin Barraclough. 13688 13689 Optimize the X86_64 trampolines: avoid the need for filler arguments 13690 and move the stub-args area closer to the stack pointer. 13691 13692 * jit/JIT.h: adjust patch offsets because of slight code-size change 13693 * jit/JITCode.h: 13694 (JSC::JITCode::execute): don't pass filler args 13695 * jit/JITStubs.cpp: 13696 (ctiTrampoline): (X86_64): push args onto stack, use args directly 13697 (ctiVMThrowTrampoline): (X86_64): adjust %rsp by correct displacement 13698 (ctiOpThrowNotCaught): (X86_64): adjust %rsp by correct displacement 13699 * jit/JITStubs.h: 13700 (JITStackFrame): (X86_64): move args area earlier 13701 (ctiTrampoline): remove filler args from prototype 13702 137032009-07-30 Gavin Barraclough <barraclough@apple.com> 13704 13705 Temporarily revert r46618 since this is b0rking on Linux. 13706 137072009-07-23 Gavin Barraclough <barraclough@apple.com> 13708 13709 Reviewed by Oliver Hunt. 13710 13711 Make get_by_id/put_by_id/method_check/call defer optimization using a data flag rather than a code modification. 13712 ( https://bugs.webkit.org/show_bug.cgi?id=27635 ) 13713 13714 This improves performance of ENABLE(ASSEMBLER_WX_EXCLUSIVE) builds by 2-2.5%, reducing the overhead to about 2.5%. 13715 (No performance impact with ASSEMBLER_WX_EXCLUSIVE disabled). 13716 13717 * bytecode/CodeBlock.cpp: 13718 (JSC::printStructureStubInfo): 13719 - Make StructureStubInfo store the type as an integer, rather than an OpcodeID. 13720 13721 * bytecode/CodeBlock.h: 13722 (JSC::): 13723 (JSC::CallLinkInfo::seenOnce): 13724 (JSC::CallLinkInfo::setSeen): 13725 (JSC::MethodCallLinkInfo::seenOnce): 13726 (JSC::MethodCallLinkInfo::setSeen): 13727 - Change a pointer in CallLinkInfo/MethodCallLinkInfo to use a PtrAndFlags, use a flag to track when an op has been executed once. 13728 13729 * bytecode/StructureStubInfo.cpp: 13730 (JSC::StructureStubInfo::deref): 13731 - Make StructureStubInfo store the type as an integer, rather than an OpcodeID. 13732 13733 * bytecode/StructureStubInfo.h: 13734 (JSC::StructureStubInfo::StructureStubInfo): 13735 (JSC::StructureStubInfo::initGetByIdSelf): 13736 (JSC::StructureStubInfo::initGetByIdProto): 13737 (JSC::StructureStubInfo::initGetByIdChain): 13738 (JSC::StructureStubInfo::initGetByIdSelfList): 13739 (JSC::StructureStubInfo::initGetByIdProtoList): 13740 (JSC::StructureStubInfo::initPutByIdTransition): 13741 (JSC::StructureStubInfo::initPutByIdReplace): 13742 (JSC::StructureStubInfo::seenOnce): 13743 (JSC::StructureStubInfo::setSeen): 13744 - Make StructureStubInfo store the type as an integer, rather than an OpcodeID, add a flag to track when an op has been executed once. 13745 13746 * bytecompiler/BytecodeGenerator.cpp: 13747 (JSC::BytecodeGenerator::emitGetById): 13748 (JSC::BytecodeGenerator::emitPutById): 13749 - Make StructureStubInfo store the type as an integer, rather than an OpcodeID. 13750 13751 * jit/JIT.cpp: 13752 (JSC::JIT::privateCompileCTIMachineTrampolines): 13753 (JSC::JIT::unlinkCall): 13754 - Remove the "don't lazy link" stage of calls. 13755 13756 * jit/JIT.h: 13757 (JSC::JIT::compileCTIMachineTrampolines): 13758 - Remove the "don't lazy link" stage of calls. 13759 13760 * jit/JITCall.cpp: 13761 (JSC::JIT::compileOpCallSlowCase): 13762 - Remove the "don't lazy link" stage of calls. 13763 13764 * jit/JITStubs.cpp: 13765 (JSC::JITThunks::JITThunks): 13766 (JSC::JITThunks::tryCachePutByID): 13767 (JSC::JITThunks::tryCacheGetByID): 13768 (JSC::JITStubs::DEFINE_STUB_FUNCTION): 13769 (JSC::JITStubs::getPolymorphicAccessStructureListSlot): 13770 - Remove the "don't lazy link" stage of calls, and the "_second" stage of get_by_id/put_by_id/method_check. 13771 13772 * jit/JITStubs.h: 13773 (JSC::JITThunks::ctiStringLengthTrampoline): 13774 (JSC::JITStubs::): 13775 - Remove the "don't lazy link" stage of calls, and the "_second" stage of get_by_id/put_by_id/method_check. 13776 13777 * wtf/PtrAndFlags.h: 13778 (WTF::PtrAndFlags::PtrAndFlags): 13779 (WTF::PtrAndFlags::operator!): 13780 (WTF::PtrAndFlags::operator->): 13781 - Add ! and -> operators, add constuctor with pointer argument. 13782 137832009-07-30 Geoffrey Garen <ggaren@apple.com> 13784 13785 Reviewed by Gavin Barraclough. 13786 13787 Fixed failing tests seen on Windows buildbot. 13788 13789 * jit/JITStubs.cpp: 13790 (JSC::DEFINE_STUB_FUNCTION): 13791 * jit/JITStubs.h: 13792 (JSC::): Use "int" instead of "bool" to guarantee a 32-bit result, 13793 regardless of compiler. gcc on mac uses 32-bit values for bool, 13794 but gcc on linux and MSVC on Windows use 8-bit values. 13795 137962009-07-30 Geoffrey Garen <ggaren@apple.com> 13797 13798 Windows build fix: added missing symbols on Windows. 13799 13800 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: 13801 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def: 13802 138032009-07-30 Geoffrey Garen <ggaren@apple.com> 13804 13805 Windows build fix: removed stale symbols on Windows. 13806 13807 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: 13808 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def: 13809 13810=== End merge of nitro-extreme branch 2009-07-30 === 13811 138122009-07-20 Geoffrey Garen <ggaren@apple.com> 13813 13814 Fixed a post-review typo in r46066 that caused tons of test failures. 13815 13816 SunSpider reports no change. 13817 13818 * runtime/JSArray.cpp: 13819 (JSC::JSArray::JSArray): Initialize the full vector capacity, to avoid 13820 uninitialized members at the end. 13821 138222009-07-20 Geoffrey Garen <ggaren@apple.com> 13823 13824 Windows WebKit build fix: Added some missing exports. 13825 13826 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: 13827 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def: 13828 138292009-07-17 Geoffrey Garen <ggaren@apple.com> 13830 13831 Reviewed by Sam Weinig. 13832 13833 Get the branch working on windows. 13834 https://bugs.webkit.org/show_bug.cgi?id=27391 13835 13836 SunSpider says 0.3% faster. 13837 13838 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: 13839 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def: Updated 13840 MSVC export lists to fix linker errors. 13841 13842 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: Added / removed 13843 new / old project files. 13844 13845 * jit/JIT.cpp: 13846 (JSC::JIT::privateCompileCTIMachineTrampolines): Used #pragma pack to tell 13847 MSVC that these structures represent actual memory layout, and should not be 13848 automatically aligned. Changed the return value load to load a 64bit quantity 13849 into the canonical registers. 13850 13851 * jit/JIT.h: Moved OBJECT_OFFSETOF definition to StdLibExtras.h because 13852 it's needed by more than just the JIT, and it supplements a standard library 13853 macro (offsetof). 13854 13855 * jit/JITCall.cpp: 13856 (JSC::JIT::compileOpCallInitializeCallFrame): Fixed an incorrectly signed 13857 cast to resolve an MSVC warning. 13858 13859 * jit/JITStubs.h: Used #pragma pack to tell MSVC that these structures 13860 represent actual memory layout, and should not be automatically aligned. 13861 13862 * runtime/JSArray.cpp: 13863 (JSC::JSArray::JSArray): Replaced memset_pattern8 with a for loop, since 13864 memset_pattern8 is not portable. (I verified that this version of the loop 13865 gives the best performance / generated code in GCC.) 13866 13867 * runtime/JSObject.h: 13868 (JSC::JSObject::JSObject): Removed accidental usage of FIELD_OFFSET -- 13869 OBJECT_OFFSETOF is our new macro name. (FIELD_OFFSET conflicts with a 13870 definition in winnt.h.) 13871 13872 * runtime/JSValue.cpp: Added some headers needed by non-all-in-one builds. 13873 13874 * runtime/JSValue.h: 13875 (JSC::JSValue::): Made the tag signed, to match MSVC's signed enum values. 13876 (GCC doesn't seem to care one way or the other.) 13877 13878 * wtf/MainThread.cpp: Moved the StdLibExtras.h #include -- I did this a 13879 while ago to resolve a conflict with winnt.h. I can't remember if it's truly 13880 still needed, but what the heck. 13881 13882 * wtf/StdLibExtras.h: Moved OBJECT_OFFSETOF definition here. 13883 138842009-07-06 Geoffrey Garen <ggaren@apple.com> 13885 13886 Reviewed by Sam Weinig (?). 13887 13888 Fixed an assertion seen during the stress test. 13889 13890 Don't assume that, if op1 is constant, op2 is not, and vice versa. Sadly, 13891 not all constants get folded. 13892 13893 * jit/JITArithmetic.cpp: 13894 (JSC::JIT::emit_op_jnless): 13895 (JSC::JIT::emitSlow_op_jnless): 13896 (JSC::JIT::emit_op_jnlesseq): 13897 (JSC::JIT::emitSlow_op_jnlesseq): 13898 138992009-07-06 Geoffrey Garen <ggaren@apple.com> 13900 13901 Reviewed by Sam Weinig. 13902 13903 Include op_convert_this in result caching. 13904 13905 No change on SunSpider or v8. 13906 13907 * jit/JITOpcodes.cpp: 13908 (JSC::JIT::emit_op_convert_this): 13909 13910 * jit/JITStubs.cpp: 13911 (JSC::DEFINE_STUB_FUNCTION): 13912 * jit/JITStubs.h: 13913 (JSC::): Made the op_convert_this JIT stub return an EncodedJSValue, so 13914 to maintain the result caching contract that { tag, payload } can be 13915 found in { regT1, regT0 }. 13916 139172009-07-06 Geoffrey Garen <ggaren@apple.com> 13918 13919 Reviewed by Sam Weinig. 13920 13921 Implemented result chaining. 13922 13923 1% faster on SunSpider. 4%-5% faster on v8. 13924 13925 * assembler/MacroAssemblerX86Common.h: 13926 (JSC::MacroAssemblerX86Common::move): 13927 * assembler/X86Assembler.h: 13928 (JSC::X86Assembler::movl_rr): Added an optimization to eliminate 13929 no-op mov instructions, to simplify chaining. 13930 13931 * jit/JIT.cpp: 13932 (JSC::JIT::JIT): 13933 * jit/JIT.h: Added data members and helper functions for recording 13934 chained results. We record both a mapping from virtual to machine register 13935 and the opcode for which the mapping is valid, to help ensure that the 13936 mapping isn't used after the mapped register has been stomped by other 13937 instructions. 13938 13939 * jit/JITCall.cpp: 13940 (JSC::JIT::compileOpCallVarargs): 13941 (JSC::JIT::compileOpCallVarargsSlowCase): 13942 (JSC::JIT::emit_op_ret): 13943 (JSC::JIT::emit_op_construct_verify): 13944 (JSC::JIT::compileOpCall): 13945 (JSC::JIT::compileOpCallSlowCase): Chain function call results. 13946 13947 * jit/JITInlineMethods.h: 13948 (JSC::JIT::emitLoadTag): 13949 (JSC::JIT::emitLoadPayload): 13950 (JSC::JIT::emitLoad): 13951 (JSC::JIT::emitLoad2): 13952 (JSC::JIT::isLabeled): 13953 (JSC::JIT::map): 13954 (JSC::JIT::unmap): 13955 (JSC::JIT::isMapped): 13956 (JSC::JIT::getMappedPayload): 13957 (JSC::JIT::getMappedTag): Use helper functions when loading virtual 13958 registers into machine registers, in case the loads can be eliminated 13959 by chaining. 13960 13961 * jit/JITOpcodes.cpp: 13962 (JSC::JIT::emit_op_mov): 13963 (JSC::JIT::emit_op_end): 13964 (JSC::JIT::emit_op_instanceof): 13965 (JSC::JIT::emit_op_get_global_var): 13966 (JSC::JIT::emit_op_put_global_var): 13967 (JSC::JIT::emit_op_get_scoped_var): 13968 (JSC::JIT::emit_op_put_scoped_var): 13969 (JSC::JIT::emit_op_to_primitive): 13970 (JSC::JIT::emit_op_resolve_global): 13971 (JSC::JIT::emit_op_jneq_ptr): 13972 (JSC::JIT::emit_op_next_pname): 13973 (JSC::JIT::emit_op_to_jsnumber): 13974 (JSC::JIT::emit_op_catch): Chain results from these opcodes. 13975 13976 (JSC::JIT::emit_op_profile_will_call): 13977 (JSC::JIT::emit_op_profile_did_call): Load the profiler into regT2 to 13978 avoid stomping a chained result. 13979 13980 * jit/JITPropertyAccess.cpp: 13981 (JSC::JIT::emit_op_method_check): 13982 (JSC::JIT::emit_op_get_by_val): 13983 (JSC::JIT::emit_op_get_by_id): Chain results from these opcodes. 13984 13985 * jit/JITStubCall.h: 13986 (JSC::JITStubCall::addArgument): Always use { regT1, regT0 }, to facilitate 13987 chaining. 13988 13989 (JSC::JITStubCall::call): Unmap all mapped registers, since our callee 13990 stub might stomp them. 13991 139922009-07-01 Sam Weinig <sam@webkit.org> 13993 13994 Reviewed by Gavin Barraclough. 13995 13996 Don't reload values in emitBinaryDoubleOp. 13997 13998 SunSpider reports a 0.6% progression. 13999 14000 * jit/JIT.h: 14001 * jit/JITArithmetic.cpp: 14002 (JSC::JIT::emit_op_jnless): 14003 (JSC::JIT::emit_op_jnlesseq): 14004 (JSC::JIT::emitBinaryDoubleOp): 14005 140062009-07-01 Sam Weinig <sam@webkit.org> 14007 14008 Reviewed by Geoffrey Garen. 14009 14010 Convert op_div to load op1 and op2 up front. 14011 14012 * jit/JITArithmetic.cpp: 14013 (JSC::JIT::emit_op_div): 14014 140152009-07-01 Sam Weinig <sam@webkit.org> 14016 14017 Reviewed by Geoffrey Garen. 14018 14019 Don't emit code in emitBinaryDoubleOp if code is unreachable, observable 14020 via an empty (unlinked) jumplist passed in. This only effects op_jnless 14021 and op_jnlesseq at present. 14022 14023 * jit/JITArithmetic.cpp: 14024 (JSC::JIT::emitSlow_op_jnless): 14025 (JSC::JIT::emitSlow_op_jnlesseq): 14026 (JSC::JIT::emitBinaryDoubleOp): 14027 140282009-07-01 Geoffrey Garen <ggaren@apple.com> 14029 14030 Reviewed by Sam Weinig. 14031 14032 Converted op_mod to put { tag, payload } in { regT1, regT0 }, and 14033 tidied up its constant case. 14034 14035 SunSpider reports a 0.2% regression, but a micro-benchmark of op_mod 14036 shows a 12% speedup, and the SunSpider test that uses op_mod most should 14037 benefit a lot from result caching in the end, since it almost always 14038 performs (expression) % constant. 14039 14040 * jit/JITArithmetic.cpp: 14041 (JSC::JIT::emit_op_mod): 14042 (JSC::JIT::emitSlow_op_mod): 14043 140442009-06-30 Sam Weinig <sam@webkit.org> 14045 14046 Reviewed by Geoffrey Garen. 14047 14048 Converted some more arithmetic ops to put { tag, payload } in 14049 { regT1, regT0 }. 14050 14051 * jit/JITArithmetic.cpp: 14052 (JSC::JIT::emit_op_mul): 14053 (JSC::JIT::emitSlow_op_mul): 14054 140552009-06-30 Geoffrey Garen <ggaren@apple.com> 14056 14057 Reviewed by Sam Weinig. 14058 14059 Converted some more arithmetic ops to put { tag, payload } in 14060 { regT1, regT0 }, and added a case for subtract constant. 14061 14062 SunSpider says no change. v8 says 0.3% slower. 14063 14064 * jit/JIT.h: 14065 * jit/JITArithmetic.cpp: 14066 (JSC::JIT::emit_op_add): 14067 (JSC::JIT::emitAdd32Constant): 14068 (JSC::JIT::emitSlow_op_add): 14069 (JSC::JIT::emit_op_sub): 14070 (JSC::JIT::emitSub32Constant): 14071 (JSC::JIT::emitSlow_op_sub): 14072 140732009-06-30 Gavin Barraclough <barraclough@apple.com> 14074 14075 Reviewed by Sam Weinig. 14076 14077 Remove more uses of addressFor(), load double constants directly from 14078 the constantpool in the CodeBlock, rather than from the register file. 14079 14080 * jit/JITArithmetic.cpp: 14081 (JSC::JIT::emitAdd32Constant): 14082 (JSC::JIT::emitBinaryDoubleOp): 14083 140842009-06-30 Geoffrey Garen <ggaren@apple.com> 14085 14086 Reviewed by Sam Weinig. 14087 14088 Fixed a bug in postfix ops, where we would treat x = x++ and x = x-- 14089 as a no-op, even if x were not an int, and the ++/-- could have side-effects. 14090 14091 * jit/JITArithmetic.cpp: 14092 (JSC::JIT::emit_op_post_inc): 14093 (JSC::JIT::emitSlow_op_post_inc): 14094 (JSC::JIT::emit_op_post_dec): 14095 (JSC::JIT::emitSlow_op_post_dec): 14096 140972009-06-30 Geoffrey Garen <ggaren@apple.com> 14098 14099 Reviewed by Sam Weinig. 14100 14101 Converted some arithmetic ops to put { tag, payload } in 14102 { regT1, regT0 }. 14103 14104 SunSpider says 0.7% faster. v8 says no change. 14105 14106 * jit/JIT.h: 14107 * jit/JITArithmetic.cpp: 14108 (JSC::JIT::emit_op_jnless): 14109 (JSC::JIT::emit_op_jnlesseq): 14110 (JSC::JIT::emit_op_lshift): 14111 (JSC::JIT::emit_op_rshift): 14112 (JSC::JIT::emit_op_bitand): 14113 (JSC::JIT::emit_op_bitor): 14114 (JSC::JIT::emit_op_bitxor): 14115 * jit/JITInlineMethods.h: 14116 (JSC::JIT::isOperandConstantImmediateInt): 14117 (JSC::JIT::getOperandConstantImmediateInt): 14118 141192009-06-30 Gavin Barraclough <barraclough@apple.com> 14120 14121 Reviewed by Sam Weinig. 14122 14123 Start removing cases of addressFor(). 14124 14125 * jit/JIT.h: 14126 * jit/JITArithmetic.cpp: 14127 (JSC::JIT::emitAdd32Constant): 14128 (JSC::JIT::emitBinaryDoubleOp): 14129 (JSC::JIT::emit_op_div): 14130 * jit/JITInlineMethods.h: 14131 (JSC::JIT::emitLoadDouble): 14132 (JSC::JIT::emitLoadInt32ToDouble): 14133 (JSC::JIT::emitStoreDouble): 14134 * jit/JITOpcodes.cpp: 14135 (JSC::JIT::emit_op_jfalse): 14136 (JSC::JIT::emit_op_jtrue): 14137 141382009-06-30 Geoffrey Garen <ggaren@apple.com> 14139 14140 Rolled back in my last patch with regression fixed. 14141 14142 * jit/JIT.cpp: 14143 (JSC::JIT::privateCompileSlowCases): 14144 * jit/JIT.h: 14145 * jit/JITOpcodes.cpp: 14146 (JSC::JIT::emit_op_loop_if_less): 14147 (JSC::JIT::emit_op_loop_if_lesseq): 14148 (JSC::JIT::emit_op_resolve_global): 14149 (JSC::JIT::emitSlow_op_resolve_global): 14150 (JSC::JIT::emit_op_eq): 14151 (JSC::JIT::emitSlow_op_eq): 14152 (JSC::JIT::emit_op_neq): 14153 (JSC::JIT::emitSlow_op_neq): 14154 141552009-06-30 Geoffrey Garen <ggaren@apple.com> 14156 14157 Rolled out my last patch because it was a 2% SunSpider regression. 14158 14159 * jit/JIT.cpp: 14160 (JSC::JIT::privateCompileSlowCases): 14161 * jit/JIT.h: 14162 * jit/JITOpcodes.cpp: 14163 (JSC::JIT::emit_op_loop_if_less): 14164 (JSC::JIT::emit_op_loop_if_lesseq): 14165 (JSC::JIT::emit_op_resolve_global): 14166 (JSC::JIT::emit_op_eq): 14167 (JSC::JIT::emitSlow_op_eq): 14168 (JSC::JIT::emit_op_neq): 14169 (JSC::JIT::emitSlow_op_neq): 14170 141712009-06-30 Geoffrey Garen <ggaren@apple.com> 14172 14173 Reviewed by Gavin "Sam Weinig" Barraclough. 14174 14175 Standardized the rest of our opcodes to put { tag, payload } in 14176 { regT1, regT0 } where possible. 14177 14178 * jit/JIT.cpp: 14179 (JSC::JIT::privateCompileSlowCases): 14180 * jit/JIT.h: 14181 * jit/JITOpcodes.cpp: 14182 (JSC::JIT::emit_op_loop_if_less): 14183 (JSC::JIT::emit_op_loop_if_lesseq): 14184 (JSC::JIT::emit_op_resolve_global): 14185 (JSC::JIT::emitSlow_op_resolve_global): 14186 (JSC::JIT::emit_op_eq): 14187 (JSC::JIT::emitSlow_op_eq): 14188 (JSC::JIT::emit_op_neq): 14189 (JSC::JIT::emitSlow_op_neq): 14190 141912009-06-30 Gavin Barraclough <barraclough@apple.com> 14192 14193 Reviewed by Geoffrey Garen. 14194 14195 Replace calls to store32(tagFor()) and store32(payloadFor()) 14196 with emitStoreInt32(), emitStoreBool(), and emitStoreCell(). 14197 14198 * jit/JIT.h: 14199 * jit/JITArithmetic.cpp: 14200 (JSC::JIT::emit_op_negate): 14201 (JSC::JIT::emit_op_lshift): 14202 (JSC::JIT::emit_op_rshift): 14203 (JSC::JIT::emit_op_bitand): 14204 (JSC::JIT::emitBitAnd32Constant): 14205 (JSC::JIT::emit_op_bitor): 14206 (JSC::JIT::emitBitOr32Constant): 14207 (JSC::JIT::emit_op_bitxor): 14208 (JSC::JIT::emitBitXor32Constant): 14209 (JSC::JIT::emit_op_bitnot): 14210 (JSC::JIT::emit_op_post_inc): 14211 (JSC::JIT::emit_op_post_dec): 14212 (JSC::JIT::emit_op_pre_inc): 14213 (JSC::JIT::emit_op_pre_dec): 14214 (JSC::JIT::emit_op_add): 14215 (JSC::JIT::emitAdd32Constant): 14216 (JSC::JIT::emit_op_sub): 14217 (JSC::JIT::emitSub32ConstantLeft): 14218 (JSC::JIT::emitSub32ConstantRight): 14219 (JSC::JIT::emit_op_mul): 14220 (JSC::JIT::emitSlow_op_mul): 14221 (JSC::JIT::emit_op_div): 14222 (JSC::JIT::emit_op_mod): 14223 * jit/JITCall.cpp: 14224 (JSC::JIT::emit_op_load_varargs): 14225 * jit/JITInlineMethods.h: 14226 (JSC::JIT::emitStoreInt32): 14227 (JSC::JIT::emitStoreCell): 14228 (JSC::JIT::emitStoreBool): 14229 (JSC::JIT::emitStore): 14230 * jit/JITOpcodes.cpp: 14231 (JSC::JIT::emit_op_instanceof): 14232 (JSC::JIT::emit_op_not): 14233 (JSC::JIT::emit_op_eq): 14234 (JSC::JIT::emitSlow_op_eq): 14235 (JSC::JIT::emit_op_neq): 14236 (JSC::JIT::emitSlow_op_neq): 14237 (JSC::JIT::compileOpStrictEq): 14238 (JSC::JIT::emit_op_eq_null): 14239 (JSC::JIT::emit_op_neq_null): 14240 * jit/JITStubCall.h: 14241 (JSC::JITStubCall::call): 14242 142432009-06-30 Geoffrey Garen <ggaren@apple.com> 14244 14245 Reviewed by Sam Weinig. 14246 14247 Standardized the rest of the property access instructions to put { tag, 14248 payload } in { regT1, regT0 }. 14249 14250 Small v8 speedup, 0.2% SunSpider slowdown. 14251 14252 * jit/JIT.h: 14253 * jit/JITInlineMethods.h: 14254 (JSC::JIT::emitLoad): 14255 (JSC::JIT::emitLoad2): 14256 * jit/JITPropertyAccess.cpp: 14257 (JSC::JIT::emit_op_get_by_val): 14258 (JSC::JIT::emitSlow_op_get_by_val): 14259 (JSC::JIT::emit_op_put_by_val): 14260 (JSC::JIT::emitSlow_op_put_by_val): 14261 (JSC::JIT::emit_op_put_by_id): 14262 (JSC::JIT::emitSlow_op_put_by_id): 14263 (JSC::JIT::patchPutByIdReplace): 14264 142652009-06-29 Sam Weinig <sam@webkit.org> 14266 14267 Reviewed by Gavin Barraclough. 14268 14269 Various cleanups. 14270 - Use fpRegT* instead of X86::xmm*. 14271 - Use a switch statement in emitBinaryDoubleOp instead of a bunch of 14272 if/elses. 14273 14274 * jit/JITArithmetic.cpp: 14275 (JSC::JIT::emitAdd32Constant): 14276 (JSC::JIT::emitBinaryDoubleOp): 14277 (JSC::JIT::emit_op_div): 14278 142792009-06-29 Sam Weinig <sam@webkit.org> 14280 14281 Reviewed by Geoffrey Garen. 14282 14283 Add inline code dealing with doubles for op_jfalse and op_jtrue. 14284 14285 * assembler/MacroAssemblerX86Common.h: 14286 (JSC::MacroAssemblerX86Common::): 14287 (JSC::MacroAssemblerX86Common::zeroDouble): 14288 * jit/JITOpcodes.cpp: 14289 (JSC::JIT::emit_op_jfalse): 14290 (JSC::JIT::emit_op_jtrue): 14291 142922009-06-28 Geoffrey Garen <ggaren@apple.com> 14293 14294 Reviewed by Sam Weinig. 14295 14296 Standardized op_get_by_id to put { tag, payload } in { regT1, regT0 }. 14297 14298 SunSpider and v8 report maybe 0.2%-0.4% regressions, but the optimization 14299 this enables will win much more than that back. 14300 14301 * jit/JIT.cpp: 14302 (JSC::JIT::privateCompileCTIMachineTrampolines): 14303 * jit/JIT.h: 14304 * jit/JITPropertyAccess.cpp: 14305 (JSC::JIT::emit_op_method_check): 14306 (JSC::JIT::emit_op_get_by_id): 14307 (JSC::JIT::compileGetByIdHotPath): 14308 (JSC::JIT::compileGetByIdSlowCase): 14309 (JSC::JIT::patchGetByIdSelf): 14310 (JSC::JIT::privateCompilePatchGetArrayLength): 14311 (JSC::JIT::privateCompileGetByIdProto): 14312 (JSC::JIT::privateCompileGetByIdSelfList): 14313 (JSC::JIT::privateCompileGetByIdProtoList): 14314 (JSC::JIT::privateCompileGetByIdChainList): 14315 (JSC::JIT::privateCompileGetByIdChain): 14316 143172009-06-26 Geoffrey Garen <ggaren@apple.com> 14318 14319 Reviewed by Maciej Stachowiak. 14320 14321 Standardized op_call to put { tag, payload } in { regT1, regT0 }. 14322 14323 SunSpider and v8 report no change. 14324 14325 * jit/JIT.cpp: 14326 (JSC::JIT::privateCompileCTIMachineTrampolines): 14327 * jit/JITCall.cpp: 14328 (JSC::JIT::compileOpCallInitializeCallFrame): 14329 (JSC::JIT::compileOpCallSetupArgs): 14330 (JSC::JIT::compileOpConstructSetupArgs): 14331 (JSC::JIT::compileOpCallVarargsSetupArgs): 14332 (JSC::JIT::compileOpCallVarargs): 14333 (JSC::JIT::compileOpCall): 14334 (JSC::JIT::compileOpCallSlowCase): 14335 143362009-06-26 Sam Weinig <sam@webkit.org> 14337 14338 Reviewed by Geoffrey Garen. 14339 14340 Handle multiplying by zero a little better by 14341 inlining the case that both operands are non-negative 14342 into the slowpath. 14343 14344 * assembler/MacroAssemblerX86Common.h: 14345 (JSC::MacroAssemblerX86Common::branchOr32): 14346 * jit/JITArithmetic.cpp: 14347 (JSC::JIT::emit_op_mul): 14348 (JSC::JIT::emitSlow_op_mul): 14349 143502009-06-25 Geoffrey Garen <ggaren@apple.com> 14351 14352 Reviewed by Sam Weinig. 14353 14354 Optimize x++ to ++x inside for loops. 14355 14356 Sadly, no measurable speedup, but this should help with result chaining. 14357 14358 * parser/Nodes.cpp: 14359 (JSC::ForNode::emitBytecode): 14360 143612009-06-25 Geoffrey Garen <ggaren@apple.com> 14362 14363 Reviewed by Sam Weinig. 14364 14365 Standardized some more opcodes to put { tag, payload } in { regT1, regT0 }. 14366 14367 * jit/JITArithmetic.cpp: 14368 (JSC::JIT::emitSlow_op_bitnot): 14369 (JSC::JIT::emit_op_post_inc): 14370 143712009-06-25 Geoffrey Garen <ggaren@apple.com> 14372 14373 Reviewed by Sam Weinig. 14374 14375 Standardized some more opcodes to put { tag, payload } in { regT1, regT0 }. 14376 14377 * jit/JITArithmetic.cpp: 14378 (JSC::JIT::emit_op_bitnot): 14379 (JSC::JIT::emit_op_post_dec): 14380 (JSC::JIT::emit_op_pre_inc): 14381 (JSC::JIT::emitSlow_op_pre_inc): 14382 (JSC::JIT::emit_op_pre_dec): 14383 (JSC::JIT::emitSlow_op_pre_dec): 14384 143852009-06-25 Geoffrey Garen <ggaren@apple.com> 14386 14387 Reviewed by Sam Weinig. 14388 14389 Standardized some more opcodes to put { tag, payload } in { regT1, regT0 }. 14390 14391 * jit/JITArithmetic.cpp: 14392 (JSC::JIT::emit_op_negate): 14393 (JSC::JIT::emitSlow_op_negate): 14394 * jit/JITCall.cpp: 14395 (JSC::JIT::emit_op_construct_verify): 14396 (JSC::JIT::emitSlow_op_construct_verify): 14397 143982009-06-25 Geoffrey Garen <ggaren@apple.com> 14399 14400 Reviewed by Sam Weinig. 14401 14402 Standardized some more opcodes to put { tag, payload } in { regT1, regT0 }. 14403 14404 * jit/JITOpcodes.cpp: 14405 (JSC::JIT::emit_op_loop_if_true): 14406 (JSC::JIT::emit_op_jfalse): 14407 (JSC::JIT::emit_op_jtrue): 14408 (JSC::JIT::emit_op_jeq_null): 14409 (JSC::JIT::emit_op_jneq_null): 14410 (JSC::JIT::emit_op_eq_null): 14411 (JSC::JIT::emit_op_neq_null): 14412 144132009-06-25 Geoffrey Garen <ggaren@apple.com> 14414 14415 Reviewed by Sam Weinig (sort of, maybe). 14416 14417 Fixed some ASSERTs in http/tests/security. 14418 14419 These ASSERTs were introduced by http://trac.webkit.org/changeset/45057, 14420 but the underlying problem was actually older. http://trac.webkit.org/changeset/45057 14421 just exposed the problem by enabling optimization in more cases. 14422 14423 The ASSERTs fired because we tested PropertySlot::slotBase() for validity, 14424 but slotBase() ASSERTs if it's invalid, so we would ASSERT before 14425 the test could happen. Solution: Remove the ASSERT. Maybe it was valid 14426 once, but it clearly goes against a pattern we've deployed of late. 14427 14428 The underlying problem was that WebCore would re-use a PropertySlot in 14429 the case of a forwarding access, and the second use would not completely 14430 overwrite the first use. Solution: Make sure to overwrite m_offset when 14431 setting a value on a PropertySlot. (Other values already get implicitly 14432 overwritten during reuse.) 14433 14434 * runtime/PropertySlot.h: 14435 (JSC::PropertySlot::PropertySlot): 14436 (JSC::PropertySlot::setValueSlot): 14437 (JSC::PropertySlot::setValue): 14438 (JSC::PropertySlot::setRegisterSlot): 14439 (JSC::PropertySlot::setUndefined): 14440 (JSC::PropertySlot::slotBase): 14441 (JSC::PropertySlot::clearOffset): 14442 144432009-06-24 Gavin Barraclough <barraclough@apple.com> 14444 14445 Reviewed by Geoff Garen. 14446 14447 Enable JIT_OPTIMIZE_METHOD_CALLS on the branch, implementation matches current implemenatation in ToT. 14448 14449 * jit/JIT.h: 14450 * jit/JITPropertyAccess.cpp: 14451 (JSC::JIT::emit_op_method_check): 14452 (JSC::JIT::emitSlow_op_method_check): 14453 (JSC::JIT::emit_op_get_by_id): 14454 (JSC::JIT::compileGetByIdHotPath): 14455 (JSC::JIT::emitSlow_op_get_by_id): 14456 (JSC::JIT::compileGetByIdSlowCase): 14457 144582009-06-23 Geoffrey Garen <ggaren@apple.com> 14459 14460 Reviewed by Sam Weinig. 14461 14462 Bit off a tiny bit more of standardizing opcode behavior to help with result 14463 caching. 14464 14465 SunSpider reports no change, v8 maybe a tiny speedup. 14466 14467 * jit/JITOpcodes.cpp: 14468 (JSC::JIT::emit_op_to_jsnumber): 14469 (JSC::JIT::emitSlow_op_to_jsnumber): 14470 (JSC::JIT::emit_op_convert_this): 14471 (JSC::JIT::emitSlow_op_convert_this): 14472 144732009-06-23 Geoffrey Garen <ggaren@apple.com> 14474 14475 Reviewed by Sam Weinig. 14476 14477 Bit off a tiny bit more of standardizing opcode behavior to help with result 14478 caching -- including removing my old enemy, op_resolve_function, because 14479 it was non-standard, and removing it felt better than helping it limp along. 14480 14481 SunSpider reports no change, v8 maybe a tiny speedup. 14482 14483 * bytecode/CodeBlock.cpp: 14484 (JSC::CodeBlock::dump): 14485 * bytecode/Opcode.h: 14486 * bytecompiler/BytecodeGenerator.cpp: 14487 * bytecompiler/BytecodeGenerator.h: 14488 * interpreter/Interpreter.cpp: 14489 (JSC::Interpreter::privateExecute): 14490 * jit/JIT.cpp: 14491 (JSC::JIT::privateCompileMainPass): 14492 * jit/JIT.h: 14493 * jit/JITOpcodes.cpp: 14494 (JSC::JIT::emit_op_get_scoped_var): 14495 (JSC::JIT::emit_op_put_scoped_var): 14496 (JSC::JIT::emit_op_to_primitive): 14497 (JSC::JIT::emitSlow_op_to_primitive): 14498 * jit/JITStubs.cpp: 14499 * jit/JITStubs.h: 14500 * parser/Nodes.cpp: 14501 (JSC::FunctionCallResolveNode::emitBytecode): 14502 145032009-06-23 Geoffrey Garen <ggaren@apple.com> 14504 14505 Reviewed by Sam Weinig. 14506 14507 Bit off a tiny bit of standardizing opcode behavior to help with result 14508 caching. 14509 14510 0.6% SunSpider speedup. 0.3% v8 speedup. 14511 14512 * jit/JITInlineMethods.h: 14513 (JSC::JIT::emitLoad): Accomodate a base register that overlaps with payload 14514 by loading tag before payload, to avoid stomping base/payload. 14515 14516 * jit/JITOpcodes.cpp: 14517 (JSC::JIT::emit_op_mov): Abide by the standard "tag in regT1, payload in 14518 regT0" semantics. 14519 14520 (JSC::JIT::emit_op_get_global_var): 14521 (JSC::JIT::emit_op_put_global_var): Ditto. Also, removed some irrelevent 14522 loads while I was at it. The global object's "d" pointer never changes 14523 after construction. 14524 145252009-06-23 Gavin Barraclough <barraclough@apple.com> 14526 14527 Reviewed by Sam Weinig. 14528 14529 Remove 'arguments' field from Register union (again). 14530 This time do so without breaking tests (radical, I know). 14531 14532 * interpreter/CallFrame.h: 14533 (JSC::ExecState::optionalCalleeArguments): 14534 (JSC::ExecState::setArgumentCount): 14535 (JSC::ExecState::init): 14536 * interpreter/Interpreter.cpp: 14537 (JSC::Interpreter::dumpRegisters): 14538 (JSC::Interpreter::unwindCallFrame): 14539 (JSC::Interpreter::privateExecute): 14540 (JSC::Interpreter::retrieveArguments): 14541 * interpreter/Register.h: 14542 (JSC::Register::withInt): 14543 (JSC::Register::): 14544 (JSC::Register::Register): 14545 (JSC::Register::i): 14546 * jit/JITStubs.cpp: 14547 (JSC::JITStubs::cti_op_tear_off_arguments): 14548 * runtime/Arguments.h: 14549 (JSC::JSActivation::copyRegisters): 14550 (JSC::Register::arguments): 14551 * runtime/JSActivation.cpp: 14552 (JSC::JSActivation::argumentsGetter): 14553 * runtime/JSActivation.h: 14554 145552009-06-23 Geoffrey Garen <ggaren@apple.com> 14556 14557 Reviewed by Sam Weinig. 14558 14559 Removed some result register tracking cruft in preparation for a new 14560 result tracking mechanism. 14561 14562 SunSpider reports no change. 14563 14564 * assembler/AbstractMacroAssembler.h: 14565 * assembler/X86Assembler.h: 14566 (JSC::X86Assembler::JmpDst::JmpDst): No need to track jump targets in 14567 machine code; we already do this in bytecode. 14568 14569 * jit/JIT.cpp: 14570 (JSC::JIT::JIT): 14571 (JSC::JIT::emitTimeoutCheck): Make sure to save and restore the result 14572 registers, so an opcode with a timeout check can still benefit from result 14573 register caching. 14574 14575 (JSC::JIT::privateCompileMainPass): 14576 (JSC::JIT::privateCompileSlowCases): Removed calls to killLastResultRegister() 14577 in preparation for something new. 14578 14579 * jit/JIT.h: 14580 * jit/JITArithmetic.cpp: 14581 (JSC::JIT::emit_op_jnless): 14582 (JSC::JIT::emit_op_jnlesseq): 14583 * jit/JITInlineMethods.h: 14584 (JSC::JIT::emitGetFromCallFrameHeaderPtr): 14585 (JSC::JIT::emitGetFromCallFrameHeader32): 14586 * jit/JITOpcodes.cpp: 14587 (JSC::JIT::emit_op_jmp): 14588 (JSC::JIT::emit_op_jfalse): 14589 (JSC::JIT::emit_op_jtrue): 14590 (JSC::JIT::emit_op_jeq_null): 14591 (JSC::JIT::emit_op_jneq_null): 14592 (JSC::JIT::emit_op_jneq_ptr): 14593 (JSC::JIT::emit_op_jsr): 14594 (JSC::JIT::emit_op_sret): 14595 (JSC::JIT::emit_op_jmp_scopes): ditto 14596 14597 * jit/JITStubCall.h: 14598 (JSC::JITStubCall::JITStubCall): 14599 (JSC::JITStubCall::getArgument): added a mechanism for reloading an argument 14600 you passed to a JIT stub, for use in emitTimeoutCheck. 14601 146022009-06-23 Sam Weinig <sam@webkit.org> 14603 14604 Reviewed by Geoffrey Garen. 14605 14606 Remove now-useless inplace variants of binary ops. 14607 14608 * jit/JIT.h: 14609 * jit/JITArithmetic.cpp: 14610 (JSC::JIT::emit_op_bitand): 14611 (JSC::JIT::emit_op_bitor): 14612 (JSC::JIT::emit_op_bitxor): 14613 (JSC::JIT::emit_op_add): 14614 (JSC::JIT::emit_op_sub): 14615 (JSC::JIT::emit_op_mul): 14616 146172009-06-23 Sam Weinig <sam@webkit.org> 14618 14619 Reviewed by Geoffrey Garen. 14620 14621 Move off memory operands to aid in re-enabling result caching. 14622 14623 - No regression measured. 14624 14625 * jit/JIT.h: 14626 * jit/JITArithmetic.cpp: 14627 (JSC::JIT::emit_op_negate): 14628 (JSC::JIT::emit_op_jnless): 14629 (JSC::JIT::emit_op_jnlesseq): 14630 (JSC::JIT::emit_op_lshift): 14631 (JSC::JIT::emit_op_rshift): 14632 (JSC::JIT::emit_op_bitand): 14633 (JSC::JIT::emitBitAnd32Constant): 14634 (JSC::JIT::emitBitAnd32InPlace): 14635 (JSC::JIT::emit_op_bitor): 14636 (JSC::JIT::emitBitOr32Constant): 14637 (JSC::JIT::emitBitOr32InPlace): 14638 (JSC::JIT::emit_op_bitxor): 14639 (JSC::JIT::emitBitXor32Constant): 14640 (JSC::JIT::emitBitXor32InPlace): 14641 (JSC::JIT::emit_op_bitnot): 14642 (JSC::JIT::emit_op_post_inc): 14643 (JSC::JIT::emit_op_post_dec): 14644 (JSC::JIT::emit_op_pre_inc): 14645 (JSC::JIT::emitSlow_op_pre_inc): 14646 (JSC::JIT::emit_op_pre_dec): 14647 (JSC::JIT::emitSlow_op_pre_dec): 14648 (JSC::JIT::emit_op_add): 14649 (JSC::JIT::emitAdd32Constant): 14650 (JSC::JIT::emitAdd32InPlace): 14651 (JSC::JIT::emitSlow_op_add): 14652 (JSC::JIT::emitSlowAdd32Constant): 14653 (JSC::JIT::emit_op_sub): 14654 (JSC::JIT::emitSlow_op_sub): 14655 (JSC::JIT::emitSub32ConstantLeft): 14656 (JSC::JIT::emitSub32ConstantRight): 14657 (JSC::JIT::emitSub32InPlaceLeft): 14658 (JSC::JIT::emitSub32InPlaceRight): 14659 (JSC::JIT::emitBinaryDoubleOp): 14660 (JSC::JIT::emit_op_mul): 14661 (JSC::JIT::emitMul32InPlace): 14662 (JSC::JIT::emit_op_div): 14663 (JSC::JIT::emit_op_mod): 14664 * jit/JITCall.cpp: 14665 (JSC::JIT::compileOpCallVarargs): 14666 * jit/JITOpcodes.cpp: 14667 (JSC::JIT::emit_op_loop_if_less): 14668 (JSC::JIT::emit_op_loop_if_lesseq): 14669 (JSC::JIT::emit_op_instanceof): 14670 (JSC::JIT::emit_op_to_primitive): 14671 (JSC::JIT::emit_op_not): 14672 (JSC::JIT::emit_op_jneq_ptr): 14673 (JSC::JIT::emit_op_eq): 14674 (JSC::JIT::emit_op_neq): 14675 (JSC::JIT::emit_op_to_jsnumber): 14676 * jit/JITPropertyAccess.cpp: 14677 (JSC::JIT::emit_op_get_by_val): 14678 (JSC::JIT::emit_op_put_by_val): 14679 146802009-06-23 Geoffrey Garen <ggaren@apple.com> 14681 14682 Reviewed by Sam Weinig. 14683 14684 Fixed some missing and/or misplaced labels in bytecode generation, so 14685 we don't have to work around them in JIT code generation. 14686 14687 * bytecompiler/BytecodeGenerator.cpp: 14688 (JSC::BytecodeGenerator::emitJumpSubroutine): 14689 * parser/Nodes.cpp: 14690 (JSC::TryNode::emitBytecode): 14691 146922009-06-22 Geoffrey Garen <ggaren@apple.com> 14693 14694 Reviewed by Sam Weinig. 14695 14696 For member function calls, emit "this" directly into the "this" slot 14697 for the function call, instead of moving it there later. This reduces 14698 time spent in op_mov during certain calls, like "a.b.c()". 14699 14700 1%-2% speedup on v8, mostly richards and delta-blue. 14701 14702 * parser/Nodes.cpp: 14703 (JSC::FunctionCallDotNode::emitBytecode): 14704 147052009-06-22 Gavin Barraclough <barraclough@apple.com> 14706 14707 Reviewed by Sam Weinig. 14708 14709 Remove 'arguments' field from Register union. Having JSCell derived types in the union is 14710 dangerous since it opens the possibility for the field to be written as a raw pointer but 14711 then read as a JSValue. This will lead to statle data being read for the tag, which may 14712 be dangerous. Having removed Arguments* types form Register, all arguments objects must 14713 always explicitly be stored in the register file as JSValues. 14714 14715 * interpreter/CallFrame.h: 14716 (JSC::ExecState::optionalCalleeArguments): 14717 * interpreter/Interpreter.cpp: 14718 (JSC::Interpreter::unwindCallFrame): 14719 (JSC::Interpreter::privateExecute): 14720 (JSC::Interpreter::retrieveArguments): 14721 * interpreter/Register.h: 14722 (JSC::Register::): 14723 * jit/JITStubs.cpp: 14724 (JSC::JITStubs::cti_op_tear_off_arguments): 14725 * runtime/Arguments.h: 14726 (JSC::JSActivation::copyRegisters): 14727 * runtime/JSActivation.cpp: 14728 (JSC::JSActivation::argumentsGetter): 14729 * runtime/JSActivation.h: 14730 147312009-06-03 Sam Weinig <sam@webkit.org> 14732 14733 Reviewed by Geoffrey Garen. 14734 14735 Add back known this value optimization by abstracting 14736 slow case if not JSCell jumps. 14737 14738 * jit/JIT.h: 14739 * jit/JITCall.cpp: 14740 (JSC::JIT::compileOpCallVarargs): 14741 (JSC::JIT::compileOpCallVarargsSlowCase): 14742 (JSC::JIT::compileOpCall): 14743 (JSC::JIT::compileOpCallSlowCase): 14744 * jit/JITInlineMethods.h: 14745 (JSC::JIT::emitJumpSlowCaseIfNotJSCell): 14746 (JSC::JIT::linkSlowCaseIfNotJSCell): 14747 * jit/JITOpcodes.cpp: 14748 (JSC::JIT::emit_op_instanceof): 14749 (JSC::JIT::emitSlow_op_instanceof): 14750 * jit/JITPropertyAccess.cpp: 14751 (JSC::JIT::emit_op_get_by_val): 14752 (JSC::JIT::emitSlow_op_get_by_val): 14753 (JSC::JIT::emit_op_put_by_val): 14754 (JSC::JIT::emitSlow_op_put_by_val): 14755 (JSC::JIT::emit_op_get_by_id): 14756 (JSC::JIT::emitSlow_op_get_by_id): 14757 (JSC::JIT::emit_op_put_by_id): 14758 (JSC::JIT::emitSlow_op_put_by_id): 14759 147602009-06-01 Geoffrey Garen <ggaren@apple.com> 14761 14762 Reviewed by Sam Weinig. 14763 14764 Fixed some of the regression in crypto-aes.js. (8.5% speedup in 14765 crypto-aes.js.) 14766 14767 SunSpider reports no change overall. 14768 14769 Division was producing double results, which took the slow path through 14770 array access code. 14771 14772 Strangely, all my attempts at versions of this patch that modified array 14773 access code to accept ints encoded as doubles along the fast or slow paths 14774 were regressions. So I did this instead. 14775 14776 * jit/JITArithmetic.cpp: 14777 (JSC::JIT::emit_op_div): When dividing an int by an int, go ahead and try 14778 to turn the result into an int. Don't just do int division, though, because 14779 testing shows it to be slower than SSE double division, and the corner 14780 cases are pretty complicated / lengthy on top of that. Also, don't try 14781 to canonicalize division of known tiny numerators into ints, since that's a 14782 waste of time. 14783 147842009-05-26 Geoffrey Garen <ggaren@apple.com> 14785 14786 Reviewed by Oliver Hunt. 14787 14788 Fixed a regression caused by my recent fix for NaN. 14789 14790 * jit/JITArithmetic.cpp: 14791 (JSC::JIT::emitBinaryDoubleOp): Actually do the comparison in reverse 14792 order, like the ChangeLog said we would, bokay? 14793 147942009-05-26 Geoffrey Garen <ggaren@apple.com> 14795 14796 Reviewed by Sam Weinig and Oliver Hunt. 14797 14798 Fixed two edge cases in %: 14799 14800 - Don't do -2147483648 % x as a fast case, since you might do -2147483648 % -1, 14801 which will signal a hardware exception due to overflow. 14802 14803 - In the case of a zero remainder, be sure to store negative zero if the 14804 dividend was zero. 14805 14806 SunSpider reports no change. 14807 14808 * jit/JITArithmetic.cpp: 14809 (JSC::JIT::emit_op_mod): 14810 (JSC::JIT::emitSlow_op_mod): 14811 148122009-05-25 Geoffrey Garen <ggaren@apple.com> 14813 14814 Reviewed by Maciej Stachowiak. 14815 14816 Fixed a regression when comparing to NaN. 14817 14818 * jit/JITArithmetic.cpp: 14819 (JSC::JIT::emitBinaryDoubleOp): For op_jnless and op_jnless_eq, do the 14820 comparison in reverse order, and jump if the result is below or 14821 below-or-equal. This ensures that we do jump in the case of NaN. 14822 148232009-05-25 Geoffrey Garen <ggaren@apple.com> 14824 14825 Reviewed by Oliver Hunt. 14826 14827 SunSpider says no change. 14828 14829 Fixed regressions in fast/js/var-declarations-shadowing.html and 14830 fast/js/equality.html, caused by recent == and != optimizations. 14831 14832 * jit/JITStubs.cpp: 14833 (JSC::JITStubs::cti_op_eq): Don't treat "compare to string" as always 14834 numeric or string comparison. If the second operand is an object, you 14835 need to ToPrimitive it, and start all over again. Also, I wrote out each 14836 of the possible cases explicitly, to cut down on redundant branching. 14837 148382009-05-25 Sam Weinig <sam@webkit.org> 14839 14840 Reviewed by Mark Rowe. 14841 14842 Fix bug in fast/js/constant-folding.html where we were not negating 14843 -0 properly. 14844 14845 * jit/JITArithmetic.cpp: 14846 (JSC::JIT::emit_op_negate): 14847 148482009-05-23 Geoffrey Garen <ggaren@apple.com> 14849 14850 Reviewed by Oliver Hunt. 14851 14852 Refactored new slow case codegen for == and !=. 14853 14854 SunSpider reports no change, maybe a tiny speedup. 14855 14856 * jit/JITOpcodes.cpp: 14857 (JSC::JIT::emitSlow_op_eq): 14858 (JSC::JIT::emitSlow_op_neq): Made a vptr comparison a *Ptr operation, 14859 instead of *32, to make it portable to 64bit. Reorganized the string 14860 and generic cases to make their control flow a little clearer. 14861 148622009-05-23 Geoffrey Garen <ggaren@apple.com> 14863 14864 Reviewed by Maciej Stachowiak. 14865 14866 Optimized == and != for our new value representation -- especially for strings. 14867 14868 14% speedup on date-format-tofte. 14869 14870 * jit/JITOpcodes.cpp: 14871 (JSC::JIT::emit_op_eq): 14872 (JSC::JIT::emitSlow_op_eq): 14873 (JSC::JIT::emit_op_neq): 14874 (JSC::JIT::emitSlow_op_neq): 14875 * jit/JITStubCall.h: 14876 (JSC::JITStubCall::JITStubCall): 14877 * jit/JITStubs.cpp: 14878 (JSC::JITStubs::cti_op_eq): 14879 (JSC::JITStubs::cti_op_eq_strings): 14880 (JSC::JITStubs::cti_op_call_eval): 14881 * jit/JITStubs.h: 14882 (JSC::): 14883 * runtime/JSValue.h: 14884 148852009-05-22 Sam Weinig <sam@webkit.org> 14886 14887 Reviewed by Gavin Barraclough. 14888 14889 Fix non-SSE enabled builds. 14890 14891 * jit/JITArithmetic.cpp: 14892 (JSC::JIT::emitSlow_op_add): Don't early return here, we still need to call the JIT stub. 14893 (JSC::JIT::emitSlow_op_sub): Ditto. 14894 148952009-05-22 Geoffrey Garen <ggaren@apple.com> 14896 14897 Reviewed by Sam Weinig. 14898 14899 Here's a thought: let's not take a jit stub call just to multiply by 1, 14900 bokay? 14901 14902 imul doesn't set the zero flag, so to test for a zero result, we need 14903 an explicit instruction. (Luckily, it does set the overflow flag, so 14904 we can still use that.) 14905 14906 * jit/JIT.h: 14907 * jit/JITArithmetic.cpp: 14908 (JSC::JIT::emit_op_mul): 14909 (JSC::JIT::emitSlow_op_mul): 14910 (JSC::JIT::emitMul32InPlace): 14911 149122009-05-22 Sam Weinig <sam@webkit.org> 14913 14914 Reviewed by Geoffrey "Premature Commit" Garen. 14915 14916 Add back constant integer cases for op_add. 14917 14918 * jit/JIT.h: 14919 * jit/JITArithmetic.cpp: 14920 (JSC::JIT::emit_op_add): 14921 (JSC::JIT::emitAdd32Constant): 14922 (JSC::JIT::emitSlow_op_add): 14923 (JSC::JIT::emitSlowAdd32Constant): 14924 * jit/JITInlineMethods.h: 14925 (JSC::JIT::getConstantOperandImmediateDouble): 14926 (JSC::JIT::isOperandConstantImmediateDouble): 14927 149282009-05-22 Geoffrey Garen <ggaren@apple.com> 14929 14930 Reviewed by Sam Weinig. 14931 14932 Added fast double cases for op_jnless and op_jnlesseq. 14933 14934 * assembler/AbstractMacroAssembler.h: 14935 (JSC::AbstractMacroAssembler::JumpList::jumps): New accesor, used by 14936 addSlowCase. 14937 14938 * assembler/X86Assembler.h: 14939 (JSC::X86Assembler::ucomisd_rm): New method for comparing register to 14940 memory. 14941 14942 * jit/JIT.h: 14943 * jit/JITArithmetic.cpp: 14944 (JSC::JIT::emit_op_jnless): 14945 (JSC::JIT::emitSlow_op_jnless): 14946 (JSC::JIT::emit_op_jnlesseq): 14947 (JSC::JIT::emitSlow_op_jnlesseq): 14948 (JSC::JIT::emit_op_add): 14949 (JSC::JIT::emit_op_sub): 14950 (JSC::JIT::emitBinaryDoubleOp): 14951 (JSC::JIT::emit_op_mul): 14952 (JSC::JIT::emit_op_div): Modified emitBinaryDoubleOp to accept comparison/jump 14953 operations in addition to operations with explicit result registers. 14954 14955 * jit/JITInlineMethods.h: 14956 (JSC::JIT::addSlowCase): Added an "addSlowCase" for JumpLists, so clients 14957 can track multiple jumps to the same slow case condition together. 14958 149592009-05-21 Sam Weinig <sam@webkit.org> 14960 14961 Reviewed by Gavin Barraclough. 14962 14963 Implement op_negate inline fast cases. 14964 14965 * assembler/MacroAssemblerX86Common.h: 14966 (JSC::MacroAssemblerX86Common::neg32): 14967 * assembler/X86Assembler.h: 14968 (JSC::X86Assembler::): 14969 (JSC::X86Assembler::negl_m): 14970 (JSC::X86Assembler::xorpd_rr): 14971 * jit/JIT.cpp: 14972 (JSC::JIT::privateCompileMainPass): 14973 (JSC::JIT::privateCompileSlowCases): 14974 * jit/JIT.h: 14975 * jit/JITArithmetic.cpp: 14976 (JSC::JIT::emit_op_negate): 14977 (JSC::JIT::emitSlow_op_negate): 14978 149792009-05-20 Sam Weinig <sam@webkit.org> 14980 14981 Reviewed by Gavin Barraclough. 14982 14983 Update the patchOffsetGetByIdSlowCaseCall constant for the 14984 case that OPCODE_SAMPLING is enabled. 14985 14986 * jit/JIT.h: 14987 149882009-05-20 Geoffrey Garen <ggaren@apple.com> 14989 14990 Reviewed by Sam Weinig. 14991 14992 Added support for inline subtraction of doubles. 14993 14994 * jit/JITArithmetic.cpp: 14995 (JSC::JIT::emit_op_sub): 14996 (JSC::JIT::emitSlow_op_sub): 14997 (JSC::JIT::emitSlowSub32InPlaceLeft): 14998 (JSC::JIT::emitBinaryDoubleOp): 14999 150002009-05-20 Sam Weinig <sam@webkit.org> 15001 15002 Reviewed by Geoffrey Garen. 15003 15004 Added support for inline division. 15005 15006 * assembler/X86Assembler.h: 15007 (JSC::X86Assembler::): 15008 (JSC::X86Assembler::divsd_rr): 15009 (JSC::X86Assembler::divsd_mr): 15010 * bytecode/CodeBlock.cpp: 15011 (JSC::CodeBlock::dump): 15012 * bytecode/Opcode.h: 15013 * bytecompiler/BytecodeGenerator.cpp: 15014 (JSC::BytecodeGenerator::emitBinaryOp): 15015 * interpreter/Interpreter.cpp: 15016 (JSC::Interpreter::privateExecute): 15017 * jit/JIT.cpp: 15018 (JSC::JIT::privateCompileMainPass): 15019 (JSC::JIT::privateCompileSlowCases): 15020 * jit/JIT.h: 15021 * jit/JITArithmetic.cpp: 15022 (JSC::JIT::emitBinaryDoubleOp): 15023 (JSC::JIT::emit_op_div): 15024 (JSC::JIT::emitSlow_op_div): 15025 150262009-05-20 Geoffrey Garen <ggaren@apple.com> 15027 15028 Reviewed by Sam Weinig. 15029 15030 Added support for inline addition of doubles. 15031 15032 * jit/JITArithmetic.cpp: 15033 (JSC::JIT::emit_op_add): 15034 (JSC::JIT::emitSlow_op_add): 15035 (JSC::JIT::emitSlowAdd32InPlace): 15036 (JSC::JIT::emitBinaryDoubleOp): 15037 (JSC::JIT::emit_op_mul): 15038 (JSC::JIT::emitSlow_op_mul): 15039 150402009-05-20 Geoffrey Garen <ggaren@apple.com> 15041 15042 Reviewed by Sam Weinig. 15043 15044 Factored inline double operations into a helper function, so that we 15045 can reuse this code for other math operations. 15046 15047 * jit/JIT.h: 15048 * jit/JITArithmetic.cpp: 15049 (JSC::JIT::emitBinaryDoubleOp): 15050 (JSC::JIT::emit_op_mul): 15051 * jit/JITCall.cpp: 15052 (JSC::JIT::compileOpCallInitializeCallFrame): 15053 150542009-05-20 Geoffrey Garen <ggaren@apple.com> 15055 15056 Reviewed by Sam Weinig. 15057 15058 Added support for inline multiplication of doubles. 15059 15060 * assembler/X86Assembler.h: 15061 (JSC::X86Assembler::cvtsi2sd_mr): New function, useful for loading an 15062 int32 into a double register. 15063 15064 * jit/JITArithmetic.cpp: 15065 (JSC::JIT::emit_op_mul): 15066 (JSC::JIT::emitSlow_op_mul): Filled out these cases for double arithmetic. 15067 15068 * jit/JIT.h: 15069 * jit/JITInlineMethods.h: 15070 (JSC::JIT::addressFor): New function, useful for addressing a JSValue's 15071 full 64bits as a double. 15072 150732009-05-19 Sam Weinig <sam@webkit.org> 15074 15075 Reviewed by Geoffrey Garen. 15076 15077 Implement and enable optimized calls. 15078 15079 * jit/JIT.cpp: 15080 (JSC::JIT::privateCompileCTIMachineTrampolines): Add ENABLE(JIT_OPTIMIZE_CALL) guards 15081 around the the optimize call only trampolines (virtualCallPreLink and virtualCallLink). 15082 Update the trampolines to account for the new JSValue representation. 15083 (JSC::JIT::unlinkCall): Use NULL instead of JSValue noValue. 15084 15085 * jit/JITCall.cpp: 15086 (JSC::JIT::compileOpCall): Update to account for the new JSValue representation 15087 (JSC::JIT::compileOpCallSlowCase): Ditto. 15088 15089 * jit/JITStubs.h: Remove incorrect !ENABLE(JIT_OPTIMIZE_CALL) guard. 15090 15091 * wtf/Platform.h: Enable ENABLE_JIT_OPTIMIZE_CALL. 15092 150932009-05-19 Sam Weinig <sam@webkit.org> 15094 15095 Reviewed by Geoffrey Garen. 15096 15097 Implement and enable optimized property access. 15098 15099 * assembler/AbstractMacroAssembler.h: Fix comment. 15100 * jit/JIT.cpp: 15101 (JSC::JIT::privateCompileCTIMachineTrampolines): Remove array length trampoline 15102 and implement the string length trampoline. 15103 * jit/JIT.h: Add new constants for patch offsets. 15104 * jit/JITInlineMethods.h: Remove FIELD_OFFSET which is now in StdLibExtras.h. 15105 * jit/JITPropertyAccess.cpp: 15106 (JSC::JIT::emit_op_get_by_id): 15107 (JSC::JIT::emitSlow_op_get_by_id): 15108 (JSC::JIT::emit_op_put_by_id): 15109 (JSC::JIT::emitSlow_op_put_by_id): 15110 (JSC::JIT::compilePutDirectOffset): 15111 (JSC::JIT::compileGetDirectOffset): 15112 (JSC::JIT::privateCompilePutByIdTransition): 15113 (JSC::JIT::patchGetByIdSelf): 15114 (JSC::JIT::patchPutByIdReplace): 15115 (JSC::JIT::privateCompilePatchGetArrayLength): 15116 (JSC::JIT::privateCompileGetByIdProto): 15117 (JSC::JIT::privateCompileGetByIdSelfList): 15118 (JSC::JIT::privateCompileGetByIdProtoList): 15119 (JSC::JIT::privateCompileGetByIdChainList): 15120 (JSC::JIT::privateCompileGetByIdChain): 15121 * jit/JITStubCall.h: 15122 (JSC::JITStubCall::addArgument): Add version of addArgument that takes 15123 two registers for the tag and payload. 15124 * jit/JITStubs.cpp: 15125 (JSC::JITStubs::JITStubs): Remove array length trampoline pointer. 15126 (JSC::JITStubs::cti_op_get_by_id_self_fail): 15127 * jit/JITStubs.h: 15128 * runtime/JSObject.h: 15129 (JSC::JSObject::JSObject): Move m_inheritorID below the property storage 15130 to align it to a 16 byte boundary. 15131 * wtf/Platform.h: Enable ENABLE_JIT_OPTIMIZE_PROPERTY_ACCESS 15132 * wtf/StdLibExtras.h: Move FIELD_OFFSET here. 15133 151342009-05-17 Sam Weinig <sam@webkit.org> 15135 15136 Reviewed by Geoffrey Garen. 15137 15138 Remove unneeded ExecState parameter from the number JSValue constructors. 15139 15140 * runtime/JSValue.h: 15141 (JSC::jsNumber): 15142 (JSC::jsNaN): 15143 (JSC::JSValue::JSValue): 15144 151452009-05-15 Sam Weinig <sam@webkit.org> 15146 15147 Reviewed by Geoffrey Garen. 15148 15149 Implemented fast path for op_put_by_val when putting to arrays. 15150 15151 * jit/JITPropertyAccess.cpp: 15152 (JSC::JIT::emit_op_put_by_val): 15153 (JSC::JIT::emitSlow_op_put_by_val): 15154 151552009-05-15 Geoffrey Garen <ggaren@apple.com> (Mostly by Sam) 15156 15157 Reviewed by Sam Weinig. 15158 15159 Implemented fast path for op_get_by_val when accessing array. 15160 15161 * jit/JIT.cpp: 15162 * jit/JITPropertyAccess.cpp: 15163 (JSC::JIT::emit_op_get_by_val): 15164 (JSC::JIT::emitSlow_op_get_by_val): 15165 151662009-05-14 Geoffrey Garen <ggaren@apple.com> 15167 15168 Reviewed by Sam Weinig. 15169 15170 Fixed a failure in fast/js/math-transforms.html caused by failing to 15171 preserve -0 in multiplication. 15172 15173 * assembler/X86Assembler.h: 15174 (JSC::X86Assembler::jz): 15175 * jit/JITArithmetic.cpp: 15176 (JSC::JIT::emit_op_mul): 15177 (JSC::JIT::emitSlow_op_mul): 15178 (JSC::JIT::emitMul32Constant): 15179 (JSC::JIT::emitMul32InPlace): Check both for overflow and for zero when 15180 doing multiplication. Use a slow case to get these right. 15181 151822009-05-14 Geoffrey Garen <ggaren@apple.com> 15183 15184 Reviewed by Sam Weinig. 15185 15186 Fixed a bug in the varargs calling convention. 15187 15188 * jit/JITCall.cpp: 15189 (JSC::JIT::compileOpCallVarargs): Move the argument count into regT1, 15190 since that's where ctiVirtualCall expects it to be. 15191 151922009-05-14 Geoffrey Garen <ggaren@apple.com> 15193 15194 Reviewed by Sam Weinig. 15195 15196 Fixed a small bug in instanceof's looping code. 15197 15198 * jit/JITOpcodes.cpp: 15199 (JSC::JIT::emit_op_instanceof): NULL means the object has no prototype, 15200 so only loop when *not* equal to NULL. 15201 152022009-05-14 Geoffrey Garen <ggaren@apple.com> 15203 15204 Reviewed by Sam Weinig. 15205 15206 Fixed a small bug in instanceof's result writing code. 15207 15208 * jit/JITOpcodes.cpp: 15209 (JSC::JIT::emit_op_instanceof): Make sure to fill out the payload bits 15210 in all cases. 15211 152122009-05-14 Sam Weinig <sam@webkit.org> 15213 15214 Reviewed by Geoffrey Garen. 15215 15216 Removed an invalid assertion in cti_op_urshift which 15217 depended on a fast path for op_urshift which has 15218 never existed. 15219 15220 * jit/JITStubs.cpp: 15221 (JSC::JITStubs::cti_op_urshift): 15222 152232009-05-14 Geoffrey Garen <ggaren@apple.com> 15224 15225 Reviewed by Sam Weinig. 15226 15227 Fixed loop_if_true, which had the same reversed test that jtrue had. 15228 15229 * jit/JITOpcodes.cpp: 15230 (JSC::JIT::emit_op_loop_if_true): 15231 152322009-05-14 Sam Weinig <sam@webkit.org> 15233 15234 Reviewed by Geoffrey Garen. 15235 15236 In op_neq, we apparently want to check that one value 15237 does *not* equal another. Go figure. 15238 15239 * jit/JITOpcodes.cpp: 15240 (JSC::JIT::emit_op_neq): 15241 152422009-05-14 Sam Weinig <sam@webkit.org> 15243 15244 Reviewed by Geoffrey Garen. 15245 15246 The slow case of op_mod should call op_mod's jit stub, 15247 not op_mul. That would be dumb. 15248 15249 * jit/JITArithmetic.cpp: 15250 (JSC::JIT::emitSlow_op_mod): 15251 152522009-05-14 Geoffrey Garen <ggaren@apple.com> 15253 15254 Reviewed by Sam Weinig. 15255 15256 Fixed problems when using 'arguments' due to a half-initialized register. 15257 15258 * interpreter/CallFrame.h: 15259 (JSC::ExecState::setCalleeArguments): 15260 (JSC::ExecState::init): Require a full JSValue when setting up the 15261 'arguments' virtual register, since this register is accessible from JIT 15262 code and bytecode, and needs to be a true JSValue. 15263 15264 * interpreter/CallFrameClosure.h: 15265 (JSC::CallFrameClosure::resetCallFrame): ditto 15266 15267 * interpreter/Interpreter.cpp: 15268 (JSC::Interpreter::privateExecute): ditto 15269 15270 * interpreter/Register.h: Removed the constructor that allowed assignment 15271 of a JSArguments* to a register. That is not safe. See above. 15272 15273 * jit/JITStubs.cpp: 15274 (JSC::JITStubs::cti_op_create_arguments): 15275 (JSC::JITStubs::cti_op_create_arguments_no_params): ditto 15276 152772009-05-14 Sam Weinig <sam@webkit.org> 15278 15279 Reviewed by Geoffrey Garen. 15280 15281 We really want to go to the slow case in op_jfalse and 15282 op_jtrue if the value is *not* boolean. 15283 15284 * jit/JITOpcodes.cpp: 15285 (JSC::JIT::emit_op_jfalse): 15286 (JSC::JIT::emit_op_jtrue): 15287 152882009-05-14 Sam Weinig <sam@webkit.org> 15289 15290 Reviewed by Geoffrey Garen. 15291 15292 Flipped the condition when emitting a an op_loop_if_less or op_loop_if_lesseq 15293 if the first operand is a constant. 15294 15295 * jit/JITOpcodes.cpp: 15296 (JSC::JIT::emit_op_loop_if_less): 15297 (JSC::JIT::emit_op_loop_if_lesseq): 15298 152992009-05-14 Sam Weinig <sam@webkit.org> 15300 15301 Reviewed by Geoffrey Garen. 15302 15303 Added missing return in op_jnless and op_jnlesseq. 15304 15305 * jit/JITArithmetic.cpp: 15306 (JSC::JIT::emit_op_jnless): 15307 (JSC::JIT::emit_op_jnlesseq): 15308 153092009-05-14 Sam Weinig <sam@webkit.org> 15310 15311 Reviewed by Geoffrey Garen. 15312 15313 Load constants into the the register file as a temporary measure to 15314 aid bring up. This allows us to use to treat constants like any 15315 other virtual register. 15316 15317 * jit/JITOpcodes.cpp: 15318 (JSC::JIT::emit_op_enter): 15319 (JSC::JIT::emit_op_enter_with_activation): 15320 153212009-05-14 Geoffrey Garen <ggaren@apple.com> 15322 15323 Reviewed by Sam Weinig. 15324 15325 Implemented op_strict_eq. Original patch by Snowy, by way of Sam and Gavin. 15326 15327 * assembler/MacroAssemblerX86Common.h: 15328 (JSC::MacroAssemblerX86Common::set8): Added set8, since it's slightly 15329 faster than set32, and the new value representation usually doesn't 15330 need set32. 15331 15332 * jit/JIT.cpp: 15333 * jit/JIT.h: 15334 * jit/JITInlineMethods.h: 15335 (JSC::JIT::emitLoadTag): 15336 (JSC::JIT::emitLoadPayload): Added helper functions for dealing with 15337 constants. Eventually, we should write special cases for all constants, 15338 but these are helpful in the short term. 15339 15340 * jit/JITOpcodes.cpp: 15341 (JSC::JIT::compileOpStrictEq): 15342 (JSC::JIT::emitSlow_op_stricteq): 15343 (JSC::JIT::emitSlow_op_nstricteq): teh opcodez. 15344 15345 * runtime/JSValue.h: 15346 (JSC::JSValue::): 15347 (JSC::JSValue::isDouble): Added a LowestTag for clarity. 15348 153492009-05-13 Geoffrey Garen <ggaren@apple.com> 15350 15351 Reviewed by Sam Weinig. 15352 15353 Fixed some bugs in host function calls. 15354 15355 testapi now passes! 15356 15357 * jit/JIT.cpp: Changed some registers around to avoid overwriting edx:eax, 15358 which is how JSValues are now returned. Also changed the code that 15359 passes thisValue to pass the full 64bits of the value. Also added 15360 an #error compiler directive to other platform builds, since the JSValue 15361 return signature probably won't return in edx:eax on those platforms, 15362 and we'll have to investigate a solution. 15363 153642009-05-13 Geoffrey Garen <ggaren@apple.com> 15365 15366 Reviewed by Sam Weinig. 15367 15368 Removed parameters from functions that are intended never to use their 15369 parameters. 15370 15371 * jit/JITPropertyAccess.cpp: 15372 (JSC::JIT::emitSlow_op_get_by_val): 15373 (JSC::JIT::emitSlow_op_put_by_val): 15374 153752009-05-13 Geoffrey Garen <ggaren@apple.com> 15376 15377 Reviewed by Sam Weinig. 15378 15379 Ported op_instance_of from TOT. It's basically the same, but some register 15380 stuff changed to memory stuff. 15381 15382 * jit/JITInlineMethods.h: 15383 (JSC::JIT::emitPutJITStubArgFromVirtualRegister): 15384 (JSC::JIT::emitStore): Changed to use helper functions. 15385 15386 * jit/JITOpcodes.cpp: 15387 (JSC::JIT::emit_op_instanceof): 15388 (JSC::JIT::emitSlow_op_instanceof): Ported from TOT. 15389 153902009-05-13 Geoffrey Garen <ggaren@apple.com> 15391 15392 Reviewed by Gavin Barraclough. 15393 15394 Added a comment to explain an exception-handling subtelty that we found 15395 hard to remember when reviewing my last patch. 15396 15397 * jit/JITOpcodes.cpp: 15398 (JSC::JIT::emit_op_catch): 15399 154002009-05-13 Geoffrey Garen <ggaren@apple.com> 15401 15402 Reviewed by Sam Weinig. 15403 15404 Implemented try/catch. 15405 15406 * jit/JITOpcodes.cpp: 15407 (JSC::JIT::emit_op_throw): Updated to use JITStackFrame abstraction. 15408 (JSC::JIT::emit_op_catch): Filled out. 15409 154102009-05-13 Sam Weinig <sam@webkit.org> 15411 15412 Reviewed by Geoffrey Garen. 15413 15414 Implemented op_loop_if_true, op_jfalse, op_jtrue, op_jeq_null and op_jneq_null 15415 15416 * jit/JITOpcodes.cpp: 15417 (JSC::JIT::emitSlow_op_instanceof): Moved from below to be next to its 15418 fast brother. 15419 15420 (JSC::JIT::emit_op_loop_if_true): Similar to the old version 15421 in that it tries to do the integer case first and reduce the 15422 number of jumps you might need to take. 15423 (JSC::JIT::emitSlow_op_loop_if_true): 15424 15425 (JSC::JIT::emit_op_jfalse): Very similar to op_loop_if_true, only 15426 the inverse and without a timeout check. 15427 (JSC::JIT::emitSlow_op_jfalse): 15428 15429 (JSC::JIT::emit_op_jtrue): Very similar to op_loop_if_true except 15430 without the timeout check. 15431 (JSC::JIT::emitSlow_op_jtrue): 15432 15433 (JSC::JIT::emit_op_jeq_null): Very similar to the implementation 15434 of op_eq, except it takes jumps instead of copying the condition 15435 to a dst. 15436 (JSC::JIT::emit_op_jneq_null): Ditto but for op_neq. 15437 154382009-05-13 Geoffrey Garen <ggaren@apple.com> 15439 15440 Reviewed by Sam Weinig. 15441 15442 Implemented op_call_varargs. 15443 15444 * jit/JITCall.cpp: 15445 (JSC::JIT::compileOpCallVarargsSetupArgs): 15446 (JSC::JIT::compileOpCallVarargs): 15447 (JSC::JIT::emit_op_call): 15448 (JSC::JIT::emit_op_call_eval): 15449 (JSC::JIT::emit_op_load_varargs): 15450 (JSC::JIT::emit_op_call_varargs): 15451 (JSC::JIT::emit_op_construct): 15452 * jit/JITOpcodes.cpp: 15453 (JSC::JIT::emit_op_jneq_ptr): 15454 154552009-05-13 Geoffrey Garen <ggaren@apple.com> 15456 15457 Reviewed by Sam Weinig. 15458 15459 Implemented op_call_eval. 15460 15461 * jit/JITCall.cpp: 15462 (JSC::JIT::compileOpCallVarargsSetupArgs): 15463 (JSC::JIT::compileOpCall): 15464 * jit/JITStubCall.h: 15465 (JSC::CallEvalJITStub::CallEvalJITStub): 15466 154672009-05-13 Sam Weinig <sam@webkit.org> 15468 15469 Reviewed by Gavin Barraclough. 15470 15471 Implemented op_not. (Gavin did most of the work!) 15472 15473 * jit/JITOpcodes.cpp: 15474 (JSC::JIT::emit_op_not): 15475 (JSC::JIT::emitSlow_op_not): 15476 154772009-05-13 Geoffrey Garen <ggaren@apple.com> 15478 15479 Reviewed by Sam Weinig. 15480 15481 Implemented op_global_resolve. 15482 15483 * jit/JITOpcodes.cpp: 15484 (JSC::JIT::emit_op_loop_if_less): 15485 (JSC::JIT::emit_op_loop_if_lesseq): Added back accidentally removed 15486 early returns. 15487 15488 (JSC::JIT::emit_op_resolve_global): 15489 * jit/JITStubs.cpp: 15490 (JSC::JITStubs::cti_op_resolve_global): Pretty similar to the old code, 15491 but we need two reads and a TimesEight step in order to account for the 15492 64bit value size. 15493 15494 * jit/JITStubs.h: 15495 (JSC::): Slightly tweaked this code to specialize for a JSGlobalObject*, 15496 to avoid having to pass an irrelevant tag pointer to the stub. 15497 154982009-05-13 Sam Weinig <sam@webkit.org> 15499 15500 Reviewed by Geoffrey Garen. 15501 15502 Implemented op_to_jsnumber. 15503 15504 * jit/JITOpcodes.cpp: 15505 (JSC::JIT::emit_op_to_jsnumber): 15506 (JSC::JIT::emitSlow_op_to_jsnumber): 15507 155082009-05-13 Sam Weinig <sam@webkit.org> 15509 15510 Reviewed by Geoffrey Garen. 15511 15512 Implemented op_convert_this. 15513 15514 * jit/JITOpcodes.cpp: 15515 (JSC::JIT::emit_op_convert_this): 15516 (JSC::JIT::emitSlow_op_convert_this): 15517 155182009-05-13 Geoffrey Garen <ggaren@apple.com> 15519 15520 Reviewed by Sam Weinig. 15521 15522 Got basic JS function and constructor calls working. 15523 15524 * jit/JIT.cpp: 15525 (JSC::JIT::privateCompileCTIMachineTrampolines): 15526 * jit/JIT.h: 15527 * jit/JITCall.cpp: 15528 (JSC::JIT::compileOpCallSetupArgs): 15529 (JSC::JIT::compileOpCallVarargsSetupArgs): 15530 (JSC::JIT::compileOpConstructSetupArgs): 15531 (JSC::JIT::emit_op_ret): 15532 (JSC::JIT::emit_op_construct_verify): 15533 (JSC::JIT::emitSlow_op_construct_verify): 15534 (JSC::JIT::emitSlow_op_call): 15535 (JSC::JIT::emitSlow_op_call_eval): 15536 (JSC::JIT::emitSlow_op_call_varargs): 15537 (JSC::JIT::emitSlow_op_construct): 15538 (JSC::JIT::compileOpCall): Filled out these cases, with call_eval #if'd out. 15539 15540 * jit/JITInlineMethods.h: 15541 (JSC::JIT::emitPutJITStubArgFromVirtualRegister): 15542 (JSC::JIT::emitLoad): Restored some legacy "*CTIArg*" functions, 15543 since I wanted to avoid the complexity of revamping the API here while 15544 trying to bring it up. Eventually, we should re-remove all of these functions. 15545 15546 (JSC::JIT::recordJumpTarget): Removed unnecessary macro cruft. You will 15547 not silence me, Sam Weinig! The world will know that you are a crufty, 15548 crufty, crufty programmer!!! 15549 15550 * jit/JITOpcodes.cpp: 15551 * jit/JITStubs.cpp: 15552 (JSC::): 15553 * jit/JITStubs.h: Changed up some offsets in the JITStackFrame class, since 15554 and off-by-one error was causing stack misalignment. 15555 155562009-05-13 Sam Weinig <sam@webkit.org> 15557 15558 Reviewed by Geoffrey Garen. 15559 15560 Implement op_eq_null and op_neq_null. 15561 15562 * assembler/MacroAssemblerX86Common.h: 15563 (JSC::MacroAssemblerX86Common::set8): 15564 (JSC::MacroAssemblerX86Common::setTest8): 15565 * jit/JITOpcodes.cpp: 15566 (JSC::JIT::emit_op_stricteq): 15567 (JSC::JIT::emitSlow_op_stricteq): 15568 (JSC::JIT::emit_op_nstricteq): 15569 (JSC::JIT::emitSlow_op_nstricteq): 15570 (JSC::JIT::emit_op_eq_null): 15571 (JSC::JIT::emit_op_neq_null): 15572 * jsc.cpp: 15573 155742009-05-12 Sam Weinig <sam@webkit.org> 15575 15576 Reviewed by Geoffrey Garen. 15577 15578 Implement op_new_error. 15579 15580 * jit/JITOpcodes.cpp: 15581 (JSC::JIT::emit_op_new_error): 15582 * jit/JITStubCall.h: 15583 (JSC::JITStubCall::addArgument): Add a version of addArgument 15584 that takes a constant JSValue. 15585 155862009-05-12 Sam Weinig <sam@webkit.org> 15587 15588 Reviewed by Geoffrey Garen. 15589 15590 Remove now unused emitGetVariableObjectRegister and emitPutVariableObjectRegister. 15591 15592 * jit/JIT.cpp: 15593 * jit/JIT.h: 15594 155952009-05-12 Sam Weinig <sam@webkit.org> 15596 15597 Reviewed by Geoffrey Garen. 15598 15599 Implement op_to_primitive and op_next_pname. 15600 15601 * jit/JITOpcodes.cpp: 15602 (JSC::JIT::emitSlow_op_construct_verify): 15603 (JSC::JIT::emit_op_to_primitive): 15604 (JSC::JIT::emitSlow_op_to_primitive): 15605 (JSC::JIT::emitSlow_op_loop_if_true): 15606 (JSC::JIT::emit_op_jtrue): 15607 (JSC::JIT::emit_op_next_pname): 15608 156092009-05-12 Sam Weinig <sam@webkit.org> 15610 15611 Reviewed by Geoffrey Garen. 15612 15613 Add op_get_global_var, op_put_global_var, emit_op_get_scoped_var, emit_op_put_scoped_var and 15614 op_unexpected_load. 15615 15616 * jit/JIT.h: 15617 * jit/JITInlineMethods.h: 15618 (JSC::JIT::tagFor): 15619 (JSC::JIT::payloadFor): 15620 (JSC::JIT::emitLoad): 15621 (JSC::JIT::emitStore): 15622 (JSC::JIT::emitLoadReturnValue): 15623 * jit/JITOpcodes.cpp: 15624 (JSC::JIT::emit_op_get_global_var): 15625 (JSC::JIT::emit_op_put_global_var): 15626 (JSC::JIT::emit_op_get_scoped_var): 15627 (JSC::JIT::emit_op_put_scoped_var): 15628 (JSC::JIT::emit_op_unexpected_load): 15629 156302009-05-12 Geoffrey Garen <ggaren@apple.com> 15631 15632 Reviewed by Sam Weinig. 15633 15634 Added overflow handling to op_sub. 15635 15636 * jit/JIT.h: 15637 * jit/JITArithmetic.cpp: 15638 (JSC::JIT::emitSlow_op_sub): 15639 (JSC::JIT::emitSlowSub32InPlaceLeft): 15640 156412009-05-12 Sam Weinig <sam@webkit.org> 15642 15643 Reviewed by Geoffrey Garen. 15644 15645 Remove a function call by folding op_get_by_id and op_put_by_id into 15646 their respective compile functions. 15647 15648 * jit/JIT.h: 15649 * jit/JITPropertyAccess.cpp: 15650 (JSC::JIT::emit_op_get_by_id): 15651 (JSC::JIT::emitSlow_op_get_by_id): 15652 (JSC::JIT::emit_op_put_by_id): 15653 (JSC::JIT::emitSlow_op_put_by_id): 15654 156552009-05-12 Sam Weinig <sam@webkit.org> 15656 15657 Reviewed by Geoffrey Garen. 15658 15659 Make JITStubCall work in 64bit by making the stack index 15660 step dependent on the size of void*. 15661 15662 * jit/JITStubCall.h: 15663 (JSC::JITStubCall::JITStubCall): 15664 (JSC::JITStubCall::addArgument): 15665 156662009-05-12 Sam Weinig <sam@webkit.org> 15667 15668 Reviewed by Geoffrey Garen. 15669 15670 Implement simple version of property access opcodes 15671 which just call a stub functions. 15672 15673 * jit/JITOpcodes.cpp: 15674 * jit/JITPropertyAccess.cpp: 15675 (JSC::JIT::emitSlow_op_put_by_id): 15676 (JSC::JIT::emitSlow_op_get_by_id): 15677 (JSC::JIT::emit_op_get_by_val): 15678 (JSC::JIT::emitSlow_op_get_by_val): 15679 (JSC::JIT::emit_op_put_by_val): 15680 (JSC::JIT::emitSlow_op_put_by_val): 15681 (JSC::JIT::emit_op_put_by_index): 15682 (JSC::JIT::emit_op_put_getter): 15683 (JSC::JIT::emit_op_put_setter): 15684 (JSC::JIT::emit_op_del_by_id): 15685 (JSC::JIT::compileGetByIdHotPath): 15686 (JSC::JIT::compilePutByIdHotPath): 15687 * jit/JITStubCall.h: 15688 (JSC::JITStubCall::addArgument): 15689 * jsc.cpp: 15690 156912009-05-12 Geoffrey Garen <ggaren@apple.com> 15692 15693 Reviewed by Sam Weinig. 15694 15695 Added work-around for XCode debugging echo problem. 15696 15697 * jsc.cpp: 15698 (runInteractive): 15699 157002009-05-12 Geoffrey Garen <ggaren@apple.com> 15701 15702 Reviewed by Sam Weinig. 15703 15704 Added overflow handling to op_add. 15705 15706 * jit/JIT.h: 15707 * jit/JITArithmetic.cpp: 15708 (JSC::JIT::emitSlow_op_add): 15709 (JSC::JIT::emitSlowAdd32InPlace): 15710 157112009-05-12 Sam Weinig <sam@webkit.org> 15712 15713 Reviewed by Geoffrey Garen. 15714 15715 Add slow cases for op_jnless or emit_op_jnlesseq. 15716 15717 * jit/JITArithmetic.cpp: 15718 (JSC::JIT::emitSlow_op_jnless): 15719 (JSC::JIT::emitSlow_op_jnlesseq): 15720 157212009-05-12 Sam Weinig <sam@webkit.org> 15722 15723 Reviewed by Geoffrey Garen. 15724 15725 Add implementations for op_jnless, emit_op_jnlesseq, op_loop_if_less and op_loop_if_lesseq. 15726 No slow cases for op_jnless or emit_op_jnlesseq yet. 15727 15728 * jit/JITArithmetic.cpp: 15729 (JSC::JIT::emit_op_jnless): 15730 (JSC::JIT::emitSlow_op_jnless): 15731 (JSC::JIT::emit_op_jnlesseq): 15732 (JSC::JIT::emitSlow_op_jnlesseq): 15733 * jit/JITOpcodes.cpp: 15734 (JSC::JIT::emit_op_loop_if_less): 15735 (JSC::JIT::emitSlow_op_loop_if_less): 15736 (JSC::JIT::emit_op_loop_if_lesseq): 15737 (JSC::JIT::emitSlow_op_loop_if_lesseq): 15738 157392009-05-12 Sam Weinig <sam@webkit.org> 15740 15741 Reviewed by Geoffrey Garen. 15742 15743 Turn the RECORD_JUMP_TARGET macro into an inline function. 15744 15745 * jit/JIT.h: 15746 * jit/JITInlineMethods.h: 15747 (JSC::JIT::recordJumpTarget): 15748 * jit/JITOpcodes.cpp: 15749 (JSC::JIT::emit_op_jmp): 15750 (JSC::JIT::emit_op_jsr): 15751 (JSC::JIT::emit_op_jmp_scopes): 15752 157532009-05-12 Sam Weinig <sam@webkit.org> 15754 15755 Add MacroAssemblerX86Common::set8 to fix the build. 15756 15757 * assembler/MacroAssemblerX86Common.h: 15758 (JSC::MacroAssemblerX86Common::set8): 15759 157602009-05-12 Geoffrey Garen <ggaren@apple.com> 15761 15762 Reviewed by Sam Weinig. 15763 15764 Added overflow recovery for pre_inc and pre_dec. 15765 15766 Turned some short-circuit code into early returns, as is the WebKit style. 15767 15768 * jit/JITArithmetic.cpp: 15769 (JSC::JIT::emit_op_post_inc): 15770 (JSC::JIT::emitSlow_op_post_inc): 15771 (JSC::JIT::emit_op_post_dec): 15772 (JSC::JIT::emitSlow_op_post_dec): 15773 (JSC::JIT::emitSlow_op_pre_inc): 15774 (JSC::JIT::emitSlow_op_pre_dec): 15775 157762009-05-12 Sam Weinig <sam@webkit.org> 15777 15778 Reviewed by Geoffrey Garen. 15779 15780 Implement op_jmp, op_loop, op_eq and op_neq. 15781 15782 * jit/JITOpcodes.cpp: 15783 (JSC::JIT::emit_op_jmp): 15784 (JSC::JIT::emit_op_loop): 15785 (JSC::JIT::emit_op_eq): 15786 (JSC::JIT::emitSlow_op_eq): 15787 (JSC::JIT::emit_op_neq): 15788 (JSC::JIT::emitSlow_op_neq): 15789 (JSC::JIT::emit_op_enter): 15790 (JSC::JIT::emit_op_enter_with_activation): 15791 157922009-05-12 Sam Weinig <sam@webkit.org> 15793 15794 Reviewed by Geoffrey Garen. 15795 15796 Implement the slow cases for arithmetic opcodes. 15797 15798 * jit/JITArithmetic.cpp: 15799 (JSC::JIT::emitSlow_op_lshift): 15800 (JSC::JIT::emitSlow_op_rshift): 15801 (JSC::JIT::emitSlow_op_bitand): 15802 (JSC::JIT::emitSlow_op_bitor): 15803 (JSC::JIT::emitSlow_op_bitxor): 15804 (JSC::JIT::emitSlow_op_bitnot): 15805 (JSC::JIT::emitSlow_op_sub): 15806 (JSC::JIT::emitSlow_op_mul): 15807 (JSC::JIT::emitSlow_op_mod): 15808 (JSC::JIT::emit_op_mod): 15809 158102009-05-12 Sam Weinig <sam@webkit.org> 15811 15812 Reviewed by Geoffrey Garen. 15813 15814 Implement op_bitnot. 15815 15816 * assembler/MacroAssemblerX86Common.h: 15817 (JSC::MacroAssemblerX86Common::not32): 15818 * assembler/X86Assembler.h: 15819 (JSC::X86Assembler::notl_m): 15820 * jit/JITArithmetic.cpp: 15821 (JSC::JIT::emit_op_bitnot): 15822 158232009-05-12 Sam Weinig <sam@webkit.org> 15824 15825 Reviewed by Geoffrey Garen. 15826 15827 Add arithmetic opcode implementations from the old nitro-extreme branch. 15828 15829 * jit/JIT.h: 15830 * jit/JITArithmetic.cpp: 15831 (JSC::JIT::emit_op_jnless): 15832 (JSC::JIT::emitSlow_op_jnless): 15833 (JSC::JIT::emit_op_jnlesseq): 15834 (JSC::JIT::emitSlow_op_jnlesseq): 15835 (JSC::JIT::emit_op_lshift): 15836 (JSC::JIT::emitSlow_op_lshift): 15837 (JSC::JIT::emit_op_rshift): 15838 (JSC::JIT::emitSlow_op_rshift): 15839 (JSC::JIT::emit_op_bitand): 15840 (JSC::JIT::emitBitAnd32Constant): 15841 (JSC::JIT::emitBitAnd32InPlace): 15842 (JSC::JIT::emit_op_bitor): 15843 (JSC::JIT::emitSlow_op_bitor): 15844 (JSC::JIT::emitBitOr32Constant): 15845 (JSC::JIT::emitBitOr32InPlace): 15846 (JSC::JIT::emit_op_bitxor): 15847 (JSC::JIT::emitSlow_op_bitxor): 15848 (JSC::JIT::emitBitXor32Constant): 15849 (JSC::JIT::emitBitXor32InPlace): 15850 (JSC::JIT::emit_op_bitnot): 15851 (JSC::JIT::emitSlow_op_bitnot): 15852 (JSC::JIT::emit_op_post_inc): 15853 (JSC::JIT::emitSlow_op_post_inc): 15854 (JSC::JIT::emit_op_post_dec): 15855 (JSC::JIT::emitSlow_op_post_dec): 15856 (JSC::JIT::emit_op_pre_inc): 15857 (JSC::JIT::emitSlow_op_pre_inc): 15858 (JSC::JIT::emit_op_pre_dec): 15859 (JSC::JIT::emitSlow_op_pre_dec): 15860 (JSC::JIT::emit_op_add): 15861 (JSC::JIT::emitAdd32Constant): 15862 (JSC::JIT::emitAdd32InPlace): 15863 (JSC::JIT::emitSlow_op_add): 15864 (JSC::JIT::emit_op_sub): 15865 (JSC::JIT::emitSlow_op_sub): 15866 (JSC::JIT::emitSub32ConstantLeft): 15867 (JSC::JIT::emitSub32ConstantRight): 15868 (JSC::JIT::emitSub32InPlaceLeft): 15869 (JSC::JIT::emitSub32InPlaceRight): 15870 (JSC::JIT::emit_op_mul): 15871 (JSC::JIT::emitSlow_op_mul): 15872 (JSC::JIT::emitMul32Constant): 15873 (JSC::JIT::emitMul32InPlace): 15874 (JSC::JIT::emit_op_mod): 15875 (JSC::JIT::emitSlow_op_mod): 15876 * jit/JITOpcodes.cpp: 15877 158782009-05-12 Geoffrey Garen <ggaren@apple.com> 15879 15880 Removed JIT_OPTIMIZE_ARITHMETIC setting, since it was all about 32bit 15881 value representations. 15882 15883 Added JSAPIValueWrapper to the repository. 15884 15885 * jit/JIT.h: 15886 * jit/JITArithmetic.cpp: 15887 * runtime/JSAPIValueWrapper.cpp: Added. 15888 (JSC::JSAPIValueWrapper::toPrimitive): 15889 (JSC::JSAPIValueWrapper::getPrimitiveNumber): 15890 (JSC::JSAPIValueWrapper::toBoolean): 15891 (JSC::JSAPIValueWrapper::toNumber): 15892 (JSC::JSAPIValueWrapper::toString): 15893 (JSC::JSAPIValueWrapper::toObject): 15894 * runtime/JSAPIValueWrapper.h: Added. 15895 (JSC::JSAPIValueWrapper::value): 15896 (JSC::JSAPIValueWrapper::isAPIValueWrapper): 15897 (JSC::JSAPIValueWrapper::JSAPIValueWrapper): 15898 (JSC::jsAPIValueWrapper): 15899 * wtf/Platform.h: 15900 159012009-05-12 Geoffrey Garen <ggaren@apple.com> 15902 15903 Turned on the JIT and got it building and running the most trivial of 15904 programs. 15905 15906 All configurable optimizations are turned off, and a few opcodes are ad 15907 hoc #if'd out. 15908 15909 So far, I've only merged op_mov and op_end, but some stub-reliant 15910 opcodes work as-is from TOT. 15911 15912 * bytecode/CodeBlock.cpp: 15913 (JSC::CodeBlock::~CodeBlock): 15914 * bytecode/CodeBlock.h: 15915 * jit/JIT.cpp: 15916 (JSC::JIT::compileOpStrictEq): 15917 * jit/JIT.h: 15918 * jit/JITArithmetic.cpp: 15919 (JSC::JIT::emit_op_lshift): 15920 (JSC::JIT::emitSlow_op_lshift): 15921 (JSC::JIT::emit_op_rshift): 15922 (JSC::JIT::emitSlow_op_rshift): 15923 (JSC::JIT::emit_op_jnless): 15924 (JSC::JIT::emitSlow_op_jnless): 15925 (JSC::JIT::emit_op_jnlesseq): 15926 (JSC::JIT::emitSlow_op_jnlesseq): 15927 (JSC::JIT::emit_op_bitand): 15928 (JSC::JIT::emitSlow_op_bitand): 15929 (JSC::JIT::emit_op_post_inc): 15930 (JSC::JIT::emitSlow_op_post_inc): 15931 (JSC::JIT::emit_op_post_dec): 15932 (JSC::JIT::emitSlow_op_post_dec): 15933 (JSC::JIT::emit_op_pre_inc): 15934 (JSC::JIT::emitSlow_op_pre_inc): 15935 (JSC::JIT::emit_op_pre_dec): 15936 (JSC::JIT::emitSlow_op_pre_dec): 15937 (JSC::JIT::emit_op_mod): 15938 (JSC::JIT::emitSlow_op_mod): 15939 (JSC::JIT::emit_op_add): 15940 (JSC::JIT::emit_op_mul): 15941 (JSC::JIT::emit_op_sub): 15942 (JSC::JIT::compileBinaryArithOpSlowCase): 15943 (JSC::JIT::emitSlow_op_add): 15944 (JSC::JIT::emitSlow_op_mul): 15945 * jit/JITCall.cpp: 15946 (JSC::JIT::compileOpCallInitializeCallFrame): 15947 (JSC::JIT::compileOpConstructSetupArgs): 15948 (JSC::JIT::compileOpCallVarargs): 15949 (JSC::JIT::compileOpCall): 15950 (JSC::JIT::compileOpCallSlowCase): 15951 * jit/JITInlineMethods.h: 15952 (JSC::JIT::getConstantOperandImmediateInt): 15953 (JSC::JIT::isOperandConstantImmediateInt): 15954 (JSC::JIT::emitInitRegister): 15955 (JSC::JIT::addSlowCase): 15956 (JSC::JIT::addJump): 15957 (JSC::JIT::emitJumpSlowToHot): 15958 (JSC::JIT::tagFor): 15959 (JSC::JIT::payloadFor): 15960 (JSC::JIT::emitLoad): 15961 (JSC::JIT::emitLoadReturnValue): 15962 (JSC::JIT::emitStore): 15963 (JSC::JIT::emitStoreReturnValue): 15964 * jit/JITOpcodes.cpp: 15965 (JSC::JIT::emit_op_mov): 15966 (JSC::JIT::emit_op_end): 15967 (JSC::JIT::emit_op_jmp): 15968 (JSC::JIT::emit_op_loop): 15969 (JSC::JIT::emit_op_loop_if_less): 15970 (JSC::JIT::emit_op_loop_if_lesseq): 15971 (JSC::JIT::emit_op_instanceof): 15972 (JSC::JIT::emit_op_get_global_var): 15973 (JSC::JIT::emit_op_put_global_var): 15974 (JSC::JIT::emit_op_get_scoped_var): 15975 (JSC::JIT::emit_op_put_scoped_var): 15976 (JSC::JIT::emit_op_tear_off_activation): 15977 (JSC::JIT::emit_op_ret): 15978 (JSC::JIT::emit_op_construct_verify): 15979 (JSC::JIT::emit_op_to_primitive): 15980 (JSC::JIT::emit_op_loop_if_true): 15981 (JSC::JIT::emit_op_resolve_global): 15982 (JSC::JIT::emit_op_not): 15983 (JSC::JIT::emit_op_jfalse): 15984 (JSC::JIT::emit_op_jeq_null): 15985 (JSC::JIT::emit_op_jneq_null): 15986 (JSC::JIT::emit_op_jneq_ptr): 15987 (JSC::JIT::emit_op_unexpected_load): 15988 (JSC::JIT::emit_op_eq): 15989 (JSC::JIT::emit_op_bitnot): 15990 (JSC::JIT::emit_op_jtrue): 15991 (JSC::JIT::emit_op_neq): 15992 (JSC::JIT::emit_op_bitxor): 15993 (JSC::JIT::emit_op_bitor): 15994 (JSC::JIT::emit_op_throw): 15995 (JSC::JIT::emit_op_next_pname): 15996 (JSC::JIT::emit_op_push_scope): 15997 (JSC::JIT::emit_op_to_jsnumber): 15998 (JSC::JIT::emit_op_push_new_scope): 15999 (JSC::JIT::emit_op_catch): 16000 (JSC::JIT::emit_op_switch_imm): 16001 (JSC::JIT::emit_op_switch_char): 16002 (JSC::JIT::emit_op_switch_string): 16003 (JSC::JIT::emit_op_new_error): 16004 (JSC::JIT::emit_op_eq_null): 16005 (JSC::JIT::emit_op_neq_null): 16006 (JSC::JIT::emit_op_convert_this): 16007 (JSC::JIT::emit_op_profile_will_call): 16008 (JSC::JIT::emit_op_profile_did_call): 16009 (JSC::JIT::emitSlow_op_construct_verify): 16010 (JSC::JIT::emitSlow_op_get_by_val): 16011 (JSC::JIT::emitSlow_op_loop_if_less): 16012 (JSC::JIT::emitSlow_op_loop_if_lesseq): 16013 (JSC::JIT::emitSlow_op_put_by_val): 16014 (JSC::JIT::emitSlow_op_not): 16015 (JSC::JIT::emitSlow_op_instanceof): 16016 * jit/JITPropertyAccess.cpp: 16017 (JSC::JIT::emit_op_get_by_val): 16018 (JSC::JIT::emit_op_put_by_val): 16019 (JSC::JIT::emit_op_put_by_index): 16020 (JSC::JIT::emit_op_put_getter): 16021 (JSC::JIT::emit_op_put_setter): 16022 (JSC::JIT::emit_op_del_by_id): 16023 (JSC::JIT::compileGetByIdHotPath): 16024 (JSC::JIT::compilePutByIdHotPath): 16025 * jit/JITStubCall.h: 16026 (JSC::JITStubCall::JITStubCall): 16027 (JSC::JITStubCall::addArgument): 16028 (JSC::JITStubCall::call): 16029 (JSC::JITStubCall::): 16030 (JSC::CallEvalJITStub::CallEvalJITStub): 16031 * jit/JITStubs.cpp: 16032 (JSC::): 16033 (JSC::JITStubs::cti_op_add): 16034 (JSC::JITStubs::cti_op_pre_inc): 16035 (JSC::JITStubs::cti_op_mul): 16036 (JSC::JITStubs::cti_op_get_by_val): 16037 (JSC::JITStubs::cti_op_get_by_val_string): 16038 (JSC::JITStubs::cti_op_get_by_val_byte_array): 16039 (JSC::JITStubs::cti_op_sub): 16040 (JSC::JITStubs::cti_op_put_by_val): 16041 (JSC::JITStubs::cti_op_put_by_val_array): 16042 (JSC::JITStubs::cti_op_put_by_val_byte_array): 16043 (JSC::JITStubs::cti_op_negate): 16044 (JSC::JITStubs::cti_op_div): 16045 (JSC::JITStubs::cti_op_pre_dec): 16046 (JSC::JITStubs::cti_op_post_inc): 16047 (JSC::JITStubs::cti_op_eq): 16048 (JSC::JITStubs::cti_op_lshift): 16049 (JSC::JITStubs::cti_op_bitand): 16050 (JSC::JITStubs::cti_op_rshift): 16051 (JSC::JITStubs::cti_op_bitnot): 16052 (JSC::JITStubs::cti_op_mod): 16053 (JSC::JITStubs::cti_op_neq): 16054 (JSC::JITStubs::cti_op_post_dec): 16055 (JSC::JITStubs::cti_op_urshift): 16056 (JSC::JITStubs::cti_op_bitxor): 16057 (JSC::JITStubs::cti_op_bitor): 16058 (JSC::JITStubs::cti_op_switch_imm): 16059 * jit/JITStubs.h: 16060 * runtime/JSArray.cpp: 16061 (JSC::JSArray::JSArray): 16062 * runtime/JSFunction.cpp: 16063 (JSC::JSFunction::~JSFunction): 16064 * runtime/JSValue.h: 16065 (JSC::JSValue::payload): 16066 * wtf/Platform.h: 16067 160682009-05-07 Sam Weinig <sam@webkit.org> 16069 16070 Reviewed by Geoffrey Garen. 16071 16072 Add some new MacroAssembler and assembler functions that will be needed shortly. 16073 16074 * assembler/MacroAssemblerX86Common.h: 16075 (JSC::MacroAssemblerX86Common::add32): 16076 (JSC::MacroAssemblerX86Common::and32): 16077 (JSC::MacroAssemblerX86Common::mul32): 16078 (JSC::MacroAssemblerX86Common::neg32): 16079 (JSC::MacroAssemblerX86Common::or32): 16080 (JSC::MacroAssemblerX86Common::sub32): 16081 (JSC::MacroAssemblerX86Common::xor32): 16082 (JSC::MacroAssemblerX86Common::branchAdd32): 16083 (JSC::MacroAssemblerX86Common::branchMul32): 16084 (JSC::MacroAssemblerX86Common::branchSub32): 16085 * assembler/X86Assembler.h: 16086 (JSC::X86Assembler::): 16087 (JSC::X86Assembler::addl_rm): 16088 (JSC::X86Assembler::andl_mr): 16089 (JSC::X86Assembler::andl_rm): 16090 (JSC::X86Assembler::andl_im): 16091 (JSC::X86Assembler::negl_r): 16092 (JSC::X86Assembler::notl_r): 16093 (JSC::X86Assembler::orl_rm): 16094 (JSC::X86Assembler::orl_im): 16095 (JSC::X86Assembler::subl_rm): 16096 (JSC::X86Assembler::xorl_mr): 16097 (JSC::X86Assembler::xorl_rm): 16098 (JSC::X86Assembler::xorl_im): 16099 (JSC::X86Assembler::imull_mr): 16100 161012009-05-11 Sam Weinig <sam@webkit.org> 16102 16103 Reviewed by Cameron Zwarich. 16104 16105 Remove the NumberHeap. 16106 16107 * JavaScriptCore.exp: 16108 * runtime/Collector.cpp: 16109 (JSC::Heap::Heap): 16110 (JSC::Heap::destroy): 16111 (JSC::Heap::recordExtraCost): 16112 (JSC::Heap::heapAllocate): 16113 (JSC::Heap::markConservatively): 16114 (JSC::Heap::sweep): 16115 (JSC::Heap::collect): 16116 (JSC::Heap::objectCount): 16117 (JSC::Heap::statistics): 16118 (JSC::typeName): 16119 (JSC::Heap::isBusy): 16120 * runtime/Collector.h: 16121 (JSC::Heap::globalData): 16122 * runtime/JSCell.h: 16123 161242009-05-11 Geoffrey Garen <ggaren@apple.com> 16125 16126 Reviewed by Sam Weinig. 16127 16128 Land initial commit of new number representation for 32 bit platforms, 16129 with JIT disabled. 16130 16131 * API/APICast.h: 16132 (toJS): 16133 (toRef): 16134 * API/JSCallbackObjectFunctions.h: 16135 (JSC::::hasInstance): 16136 (JSC::::toNumber): 16137 (JSC::::toString): 16138 * API/tests/testapi.c: 16139 (EvilExceptionObject_convertToType): 16140 * AllInOneFile.cpp: 16141 * JavaScriptCore.exp: 16142 * JavaScriptCore.xcodeproj/project.pbxproj: 16143 * bytecode/CodeBlock.cpp: 16144 (JSC::valueToSourceString): 16145 * bytecompiler/BytecodeGenerator.cpp: 16146 (JSC::BytecodeGenerator::emitLoad): 16147 (JSC::BytecodeGenerator::emitUnexpectedLoad): 16148 (JSC::keyForImmediateSwitch): 16149 * bytecompiler/BytecodeGenerator.h: 16150 * interpreter/Interpreter.cpp: 16151 (JSC::Interpreter::dumpRegisters): 16152 (JSC::Interpreter::privateExecute): 16153 * parser/Nodes.cpp: 16154 (JSC::ArrayNode::emitBytecode): 16155 (JSC::processClauseList): 16156 * runtime/ArgList.h: 16157 * runtime/Collector.h: 16158 (JSC::sizeof): 16159 * runtime/DateMath.cpp: 16160 * runtime/ExceptionHelpers.h: 16161 * runtime/InitializeThreading.cpp: 16162 * runtime/JSArray.cpp: 16163 (JSC::JSArray::JSArray): 16164 * runtime/JSCell.cpp: 16165 * runtime/JSCell.h: 16166 (JSC::JSCell::isAPIValueWrapper): 16167 (JSC::JSValue::isString): 16168 (JSC::JSValue::isGetterSetter): 16169 (JSC::JSValue::isObject): 16170 (JSC::JSValue::getString): 16171 (JSC::JSValue::getObject): 16172 (JSC::JSValue::getCallData): 16173 (JSC::JSValue::getConstructData): 16174 (JSC::JSValue::getUInt32): 16175 (JSC::JSValue::marked): 16176 (JSC::JSValue::toPrimitive): 16177 (JSC::JSValue::getPrimitiveNumber): 16178 (JSC::JSValue::toBoolean): 16179 (JSC::JSValue::toNumber): 16180 (JSC::JSValue::toString): 16181 (JSC::JSValue::needsThisConversion): 16182 (JSC::JSValue::toThisString): 16183 (JSC::JSValue::getJSNumber): 16184 (JSC::JSValue::toObject): 16185 (JSC::JSValue::toThisObject): 16186 * runtime/JSGlobalData.cpp: 16187 (JSC::JSGlobalData::JSGlobalData): 16188 * runtime/JSGlobalData.h: 16189 * runtime/JSGlobalObject.h: 16190 (JSC::Structure::prototypeForLookup): 16191 * runtime/JSGlobalObjectFunctions.cpp: 16192 (JSC::globalFuncParseInt): 16193 * runtime/JSImmediate.h: 16194 * runtime/JSNumberCell.cpp: Removed. 16195 * runtime/JSNumberCell.h: Removed. 16196 * runtime/JSObject.h: 16197 (JSC::JSValue::get): 16198 (JSC::JSValue::put): 16199 * runtime/JSString.h: 16200 (JSC::JSValue::toThisJSString): 16201 * runtime/JSValue.cpp: 16202 (JSC::JSValue::toInteger): 16203 (JSC::JSValue::toIntegerPreserveNaN): 16204 (JSC::JSValue::toObjectSlowCase): 16205 (JSC::JSValue::toThisObjectSlowCase): 16206 (JSC::JSValue::synthesizeObject): 16207 (JSC::JSValue::synthesizePrototype): 16208 (JSC::JSValue::description): 16209 (JSC::nonInlineNaN): 16210 * runtime/JSValue.h: 16211 (JSC::JSValue::): 16212 (JSC::EncodedJSValueHashTraits::emptyValue): 16213 (JSC::jsNaN): 16214 (JSC::operator==): 16215 (JSC::operator!=): 16216 (JSC::toInt32): 16217 (JSC::toUInt32): 16218 (JSC::JSValue::encode): 16219 (JSC::JSValue::decode): 16220 (JSC::JSValue::JSValue): 16221 (JSC::JSValue::operator bool): 16222 (JSC::JSValue::operator==): 16223 (JSC::JSValue::operator!=): 16224 (JSC::JSValue::isUndefined): 16225 (JSC::JSValue::isNull): 16226 (JSC::JSValue::isUndefinedOrNull): 16227 (JSC::JSValue::isCell): 16228 (JSC::JSValue::isInt32): 16229 (JSC::JSValue::isUInt32): 16230 (JSC::JSValue::isDouble): 16231 (JSC::JSValue::isTrue): 16232 (JSC::JSValue::isFalse): 16233 (JSC::JSValue::tag): 16234 (JSC::JSValue::asInt32): 16235 (JSC::JSValue::asUInt32): 16236 (JSC::JSValue::asDouble): 16237 (JSC::JSValue::asCell): 16238 (JSC::JSValue::isNumber): 16239 (JSC::JSValue::isBoolean): 16240 (JSC::JSValue::getBoolean): 16241 (JSC::JSValue::uncheckedGetNumber): 16242 (JSC::JSValue::toJSNumber): 16243 (JSC::JSValue::getNumber): 16244 (JSC::JSValue::toInt32): 16245 (JSC::JSValue::toUInt32): 16246 * runtime/Operations.h: 16247 (JSC::JSValue::equal): 16248 (JSC::JSValue::equalSlowCaseInline): 16249 (JSC::JSValue::strictEqual): 16250 (JSC::JSValue::strictEqualSlowCaseInline): 16251 (JSC::jsLess): 16252 (JSC::jsLessEq): 16253 (JSC::jsAdd): 16254 * runtime/PropertySlot.h: 16255 * runtime/StringPrototype.cpp: 16256 (JSC::stringProtoFuncCharAt): 16257 (JSC::stringProtoFuncCharCodeAt): 16258 (JSC::stringProtoFuncIndexOf): 16259 * wtf/Platform.h: 16260 16261=== Start merge of nitro-extreme branch 2009-07-30 === 16262 162632009-07-29 Laszlo Gombos <laszlo.1.gombos@nokia.com> 16264 16265 Reviewed by George Staikos. 16266 16267 Resolve class/struct mixup in forward declarations 16268 https://bugs.webkit.org/show_bug.cgi?id=27708 16269 16270 * API/JSClassRef.h: 16271 * bytecode/SamplingTool.h: 16272 * interpreter/Interpreter.h: 16273 * jit/JIT.h: 16274 * profiler/ProfileGenerator.h: 16275 * profiler/Profiler.h: 16276 * runtime/ClassInfo.h: 16277 * runtime/ExceptionHelpers.h: 16278 * runtime/JSByteArray.h: 16279 * runtime/JSCell.h: 16280 * runtime/JSFunction.h: 16281 * runtime/JSGlobalData.h: 16282 * runtime/JSObject.h: 16283 * runtime/JSString.h: 16284 162852009-07-28 Ada Chan <adachan@apple.com> 16286 16287 Reviewed by Darin Adler. 16288 16289 https://bugs.webkit.org/show_bug.cgi?id=27236 16290 - Implement TCMalloc_SystemRelease and TCMalloc_SystemCommit for Windows. 16291 - Use a background thread to periodically scavenge memory to release back to the system. 16292 16293 * wtf/FastMalloc.cpp: 16294 (WTF::TCMalloc_PageHeap::init): 16295 (WTF::TCMalloc_PageHeap::runScavengerThread): 16296 (WTF::TCMalloc_PageHeap::scavenge): 16297 (WTF::TCMalloc_PageHeap::shouldContinueScavenging): 16298 (WTF::TCMalloc_PageHeap::New): 16299 (WTF::TCMalloc_PageHeap::AllocLarge): 16300 (WTF::TCMalloc_PageHeap::Delete): 16301 (WTF::TCMalloc_PageHeap::GrowHeap): 16302 (WTF::sleep): 16303 (WTF::TCMalloc_PageHeap::scavengerThread): 16304 * wtf/TCSystemAlloc.cpp: 16305 (TCMalloc_SystemRelease): 16306 (TCMalloc_SystemCommit): 16307 * wtf/TCSystemAlloc.h: 16308 163092009-07-28 Xan Lopez <xlopez@igalia.com> 16310 16311 Add new files, fixes distcheck. 16312 16313 * GNUmakefile.am: 16314 163152009-07-28 Csaba Osztrogonac <oszi@inf.u-szeged.hu> 16316 16317 Reviewed by Simon Hausmann. 16318 16319 [Qt] Determining whether to use JIT or interpreter 16320 moved from JavaScriptCore.pri to Platform.h 16321 16322 * JavaScriptCore.pri: 16323 * wtf/Platform.h: 16324 163252009-07-27 Brian Weinstein <bweinstein@apple.com> 16326 16327 Fix of misuse of sort command. 16328 16329 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: 16330 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def: 16331 163322009-07-27 Brian Weinstein <bweinstein@apple.com> 16333 16334 Build fix for Windows. 16335 16336 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: 16337 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def: 16338 163392009-07-27 Gavin Barraclough <barraclough@apple.com> 16340 16341 Rubber stamped by Oliver Hunt. 16342 16343 Fix tyop in JIT, renamed preverveReturnAddressAfterCall -> preserveReturnAddressAfterCall. 16344 16345 * jit/JIT.cpp: 16346 (JSC::JIT::privateCompile): 16347 (JSC::JIT::privateCompileCTIMachineTrampolines): 16348 * jit/JIT.h: 16349 * jit/JITInlineMethods.h: 16350 (JSC::JIT::preserveReturnAddressAfterCall): 16351 * jit/JITPropertyAccess.cpp: 16352 (JSC::JIT::privateCompilePutByIdTransition): 16353 163542009-07-27 Alexey Proskuryakov <ap@webkit.org> 16355 16356 Gtk build fix. 16357 16358 * runtime/JSLock.cpp: (JSC::JSLock::JSLock): Fix "no threading" case. 16359 163602009-07-27 Alexey Proskuryakov <ap@webkit.org> 16361 16362 Release build fix. 16363 16364 * runtime/JSLock.h: (JSC::JSLock::~JSLock): 16365 163662009-07-27 Alexey Proskuryakov <ap@webkit.org> 16367 16368 Reviewed by Darin Adler. 16369 16370 https://bugs.webkit.org/show_bug.cgi?id=27735 16371 Give a helpful name to JSLock constructor argument 16372 16373 * API/JSBase.cpp: 16374 (JSGarbageCollect): 16375 * API/JSContextRef.cpp: 16376 * API/JSObjectRef.cpp: 16377 (JSPropertyNameArrayRelease): 16378 (JSPropertyNameAccumulatorAddName): 16379 * JavaScriptCore.exp: 16380 * jsc.cpp: 16381 (functionGC): 16382 (cleanupGlobalData): 16383 (jscmain): 16384 * runtime/Collector.cpp: 16385 (JSC::Heap::destroy): 16386 * runtime/JSLock.cpp: 16387 (JSC::JSLock::JSLock): 16388 (JSC::JSLock::lock): 16389 (JSC::JSLock::unlock): 16390 (JSC::JSLock::DropAllLocks::DropAllLocks): 16391 (JSC::JSLock::DropAllLocks::~DropAllLocks): 16392 * runtime/JSLock.h: 16393 (JSC::): 16394 (JSC::JSLock::JSLock): 16395 (JSC::JSLock::~JSLock): 16396 163972009-07-25 Zoltan Horvath <hzoltan@inf.u-szeged.hu> 16398 16399 Reviewed by Eric Seidel. 16400 16401 Allow custom memory allocation control for OpaqueJSPropertyNameArray struct 16402 https://bugs.webkit.org/show_bug.cgi?id=27342 16403 16404 Inherits OpaqueJSPropertyNameArray struct from FastAllocBase because it has been 16405 instantiated by 'new' JavaScriptCore/API/JSObjectRef.cpp:473. 16406 16407 * API/JSObjectRef.cpp: 16408 164092009-07-24 Ada Chan <adachan@apple.com> 16410 16411 In preparation for https://bugs.webkit.org/show_bug.cgi?id=27236: 16412 Remove TCMALLOC_TRACK_DECOMMITED_SPANS. We'll always track decommitted spans. 16413 We have tested this and show it has little impact on performance. 16414 16415 Reviewed by Mark Rowe. 16416 16417 * wtf/FastMalloc.cpp: 16418 (WTF::TCMalloc_PageHeap::New): 16419 (WTF::TCMalloc_PageHeap::AllocLarge): 16420 (WTF::propagateDecommittedState): 16421 (WTF::mergeDecommittedStates): 16422 (WTF::TCMalloc_PageHeap::Delete): 16423 (WTF::TCMalloc_PageHeap::IncrementalScavenge): 16424 164252009-07-24 Csaba Osztrogonac <oszi@inf.u-szeged.hu> 16426 16427 Reviewed by Darin Adler and Adam Barth. 16428 16429 Build fix for x86 platforms. 16430 https://bugs.webkit.org/show_bug.cgi?id=27602 16431 16432 * jit/JIT.cpp: 16433 164342009-07-23 Kevin Ollivier <kevino@theolliviers.com> 16435 16436 wx build fix, adding missing header. 16437 16438 * jit/JIT.cpp: 16439 164402009-07-22 Yong Li <yong.li@torchmobile.com> 16441 16442 Reviewed by George Staikos. 16443 16444 Add wince specific memory files into wtf/wince 16445 https://bugs.webkit.org/show_bug.cgi?id=27550 16446 16447 * wtf/wince/FastMallocWince.h: Added. 16448 * wtf/wince/MemoryManager.cpp: Added. 16449 * wtf/wince/MemoryManager.h: Added. 16450 164512009-07-23 Norbert Leser <norbert.leser@nokia.com> 16452 16453 Reviewed by Simon Hausmann. 16454 16455 Fix for missing mmap features in Symbian 16456 https://bugs.webkit.org/show_bug.cgi?id=24540 16457 16458 Fix, conditionally for PLATFORM(SYMBIAN), as an alternative 16459 to missing support for the MAP_ANON property flag in mmap. 16460 It utilizes Symbian specific memory allocation features. 16461 16462 * runtime/Collector.cpp 16463 164642009-07-22 Gavin Barraclough <barraclough@apple.com> 16465 16466 Reviewed by Sam Weinig. 16467 16468 With ENABLE(ASSEMBLER_WX_EXCLUSIVE), only change permissions once per repatch event. 16469 ( https://bugs.webkit.org/show_bug.cgi?id=27564 ) 16470 16471 Currently we change permissions forwards and backwards for each instruction modified, 16472 instead we should only change permissions once per complete repatching event. 16473 16474 2.5% progression running with ENABLE(ASSEMBLER_WX_EXCLUSIVE) enabled, 16475 which recoups 1/3 of the penalty of running with this mode enabled. 16476 16477 * assembler/ARMAssembler.cpp: 16478 (JSC::ARMAssembler::linkBranch): 16479 - Replace usage of MakeWritable with cacheFlush. 16480 16481 * assembler/ARMAssembler.h: 16482 (JSC::ARMAssembler::patchPointerInternal): 16483 (JSC::ARMAssembler::repatchLoadPtrToLEA): 16484 - Replace usage of MakeWritable with cacheFlush. 16485 16486 * assembler/ARMv7Assembler.h: 16487 (JSC::ARMv7Assembler::relinkJump): 16488 (JSC::ARMv7Assembler::relinkCall): 16489 (JSC::ARMv7Assembler::repatchInt32): 16490 (JSC::ARMv7Assembler::repatchPointer): 16491 (JSC::ARMv7Assembler::repatchLoadPtrToLEA): 16492 (JSC::ARMv7Assembler::setInt32): 16493 - Replace usage of MakeWritable with cacheFlush. 16494 16495 * assembler/LinkBuffer.h: 16496 (JSC::LinkBuffer::performFinalization): 16497 - Make explicit call to cacheFlush. 16498 16499 * assembler/MacroAssemblerCodeRef.h: 16500 (JSC::MacroAssemblerCodeRef::MacroAssemblerCodeRef): 16501 - Make size always available. 16502 16503 * assembler/RepatchBuffer.h: 16504 (JSC::RepatchBuffer::RepatchBuffer): 16505 (JSC::RepatchBuffer::~RepatchBuffer): 16506 - Add calls to MakeWritable & makeExecutable. 16507 16508 * assembler/X86Assembler.h: 16509 (JSC::X86Assembler::relinkJump): 16510 (JSC::X86Assembler::relinkCall): 16511 (JSC::X86Assembler::repatchInt32): 16512 (JSC::X86Assembler::repatchPointer): 16513 (JSC::X86Assembler::repatchLoadPtrToLEA): 16514 - Remove usage of MakeWritable. 16515 16516 * bytecode/CodeBlock.h: 16517 (JSC::CodeBlock::getJITCode): 16518 - Provide access to CodeBlock's JITCode. 16519 16520 * jit/ExecutableAllocator.h: 16521 (JSC::ExecutableAllocator::makeExecutable): 16522 (JSC::ExecutableAllocator::cacheFlush): 16523 - Remove MakeWritable, make cacheFlush public. 16524 16525 * jit/JIT.cpp: 16526 (JSC::ctiPatchNearCallByReturnAddress): 16527 (JSC::ctiPatchCallByReturnAddress): 16528 (JSC::JIT::privateCompile): 16529 (JSC::JIT::unlinkCall): 16530 (JSC::JIT::linkCall): 16531 - Add CodeBlock argument to RepatchBuffer. 16532 16533 * jit/JIT.h: 16534 - Pass CodeBlock argument for use by RepatchBuffer. 16535 16536 * jit/JITCode.h: 16537 (JSC::JITCode::start): 16538 (JSC::JITCode::size): 16539 - Provide access to code start & size. 16540 16541 * jit/JITPropertyAccess.cpp: 16542 (JSC::JIT::privateCompilePutByIdTransition): 16543 (JSC::JIT::patchGetByIdSelf): 16544 (JSC::JIT::patchMethodCallProto): 16545 (JSC::JIT::patchPutByIdReplace): 16546 (JSC::JIT::privateCompilePatchGetArrayLength): 16547 (JSC::JIT::privateCompileGetByIdProto): 16548 (JSC::JIT::privateCompileGetByIdSelfList): 16549 (JSC::JIT::privateCompileGetByIdProtoList): 16550 (JSC::JIT::privateCompileGetByIdChainList): 16551 (JSC::JIT::privateCompileGetByIdChain): 16552 - Add CodeBlock argument to RepatchBuffer. 16553 16554 * jit/JITStubs.cpp: 16555 (JSC::JITThunks::tryCachePutByID): 16556 (JSC::JITThunks::tryCacheGetByID): 16557 (JSC::JITStubs::DEFINE_STUB_FUNCTION): 16558 - Pass CodeBlock argument for use by RepatchBuffer. 16559 165602009-07-21 Zoltan Herczeg <zherczeg@inf.u-szeged.hu> 16561 16562 Reviewed by Gavin Barraclough. 16563 16564 Cache not only the structure of the method, but the 16565 structure of its prototype as well. 16566 https://bugs.webkit.org/show_bug.cgi?id=27077 16567 16568 * bytecode/CodeBlock.cpp: 16569 (JSC::CodeBlock::~CodeBlock): 16570 * bytecode/CodeBlock.h: 16571 (JSC::MethodCallLinkInfo::MethodCallLinkInfo): 16572 * jit/JITPropertyAccess.cpp: 16573 (JSC::JIT::patchMethodCallProto): 16574 165752009-07-21 Gavin Barraclough <barraclough@apple.com> 16576 16577 Reviewed by Sam Weinig. 16578 16579 Move call linking / repatching down from AbstractMacroAssembler into MacroAssemblerARCH classes. 16580 ( https://bugs.webkit.org/show_bug.cgi?id=27527 ) 16581 16582 This allows the implementation to be defined per architecture. Specifically this addresses the 16583 fact that x86-64 MacroAssembler implements far calls as a load to register, followed by a call 16584 to register. Patching the call actually requires the pointer load to be patched, rather than 16585 the call to be patched. This is implementation detail specific to MacroAssemblerX86_64, and as 16586 such is best handled there. 16587 16588 * assembler/AbstractMacroAssembler.h: 16589 * assembler/MacroAssemblerARM.h: 16590 (JSC::MacroAssemblerARM::linkCall): 16591 (JSC::MacroAssemblerARM::repatchCall): 16592 * assembler/MacroAssemblerARMv7.h: 16593 (JSC::MacroAssemblerARMv7::linkCall): 16594 (JSC::MacroAssemblerARMv7::repatchCall): 16595 * assembler/MacroAssemblerX86.h: 16596 (JSC::MacroAssemblerX86::linkCall): 16597 (JSC::MacroAssemblerX86::repatchCall): 16598 * assembler/MacroAssemblerX86_64.h: 16599 (JSC::MacroAssemblerX86_64::linkCall): 16600 (JSC::MacroAssemblerX86_64::repatchCall): 16601 166022009-07-21 Adam Treat <adam.treat@torchmobile.com> 16603 16604 Reviewed by George Staikos. 16605 16606 Every wtf file includes other wtf files with <> style includes 16607 except this one. Fix the exception. 16608 16609 * wtf/ByteArray.h: 16610 166112009-07-21 Gavin Barraclough <barraclough@apple.com> 16612 16613 Reviewed by Oliver Hunt. 16614 16615 Move LinkBuffer/RepatchBuffer out of AbstractMacroAssembler. 16616 ( https://bugs.webkit.org/show_bug.cgi?id=27485 ) 16617 16618 This change is the first step in a process to move code that should be in 16619 the architecture-specific MacroAssembler classes up out of Assmbler and 16620 AbstractMacroAssembler. 16621 16622 * JavaScriptCore.xcodeproj/project.pbxproj: 16623 - added new files 16624 16625 * assembler/ARMAssembler.h: 16626 (JSC::ARMAssembler::linkPointer): 16627 - rename patchPointer to bring it in line with the current link/repatch naming scheme 16628 16629 * assembler/ARMv7Assembler.h: 16630 (JSC::ARMv7Assembler::linkCall): 16631 (JSC::ARMv7Assembler::linkPointer): 16632 (JSC::ARMv7Assembler::relinkCall): 16633 (JSC::ARMv7Assembler::repatchInt32): 16634 (JSC::ARMv7Assembler::repatchPointer): 16635 (JSC::ARMv7Assembler::setInt32): 16636 (JSC::ARMv7Assembler::setPointer): 16637 - rename patchPointer to bring it in line with the current link/repatch naming scheme 16638 16639 * assembler/AbstractMacroAssembler.h: 16640 (JSC::AbstractMacroAssembler::linkJump): 16641 (JSC::AbstractMacroAssembler::linkCall): 16642 (JSC::AbstractMacroAssembler::linkPointer): 16643 (JSC::AbstractMacroAssembler::getLinkerAddress): 16644 (JSC::AbstractMacroAssembler::getLinkerCallReturnOffset): 16645 (JSC::AbstractMacroAssembler::repatchJump): 16646 (JSC::AbstractMacroAssembler::repatchCall): 16647 (JSC::AbstractMacroAssembler::repatchNearCall): 16648 (JSC::AbstractMacroAssembler::repatchInt32): 16649 (JSC::AbstractMacroAssembler::repatchPointer): 16650 (JSC::AbstractMacroAssembler::repatchLoadPtrToLEA): 16651 - remove the LinkBuffer/RepatchBuffer classes, but leave a set of (private, friended) methods to interface to the Assembler 16652 16653 * assembler/LinkBuffer.h: Added. 16654 (JSC::LinkBuffer::LinkBuffer): 16655 (JSC::LinkBuffer::~LinkBuffer): 16656 (JSC::LinkBuffer::link): 16657 (JSC::LinkBuffer::patch): 16658 (JSC::LinkBuffer::locationOf): 16659 (JSC::LinkBuffer::locationOfNearCall): 16660 (JSC::LinkBuffer::returnAddressOffset): 16661 (JSC::LinkBuffer::finalizeCode): 16662 (JSC::LinkBuffer::finalizeCodeAddendum): 16663 (JSC::LinkBuffer::code): 16664 (JSC::LinkBuffer::performFinalization): 16665 - new file containing the LinkBuffer class, previously a member of AbstractMacroAssembler 16666 16667 * assembler/RepatchBuffer.h: Added. 16668 (JSC::RepatchBuffer::RepatchBuffer): 16669 (JSC::RepatchBuffer::relink): 16670 (JSC::RepatchBuffer::repatch): 16671 (JSC::RepatchBuffer::repatchLoadPtrToLEA): 16672 (JSC::RepatchBuffer::relinkCallerToTrampoline): 16673 (JSC::RepatchBuffer::relinkCallerToFunction): 16674 (JSC::RepatchBuffer::relinkNearCallerToTrampoline): 16675 - new file containing the RepatchBuffer class, previously a member of AbstractMacroAssembler 16676 16677 * assembler/X86Assembler.h: 16678 (JSC::X86Assembler::linkJump): 16679 (JSC::X86Assembler::linkCall): 16680 (JSC::X86Assembler::linkPointerForCall): 16681 (JSC::X86Assembler::linkPointer): 16682 (JSC::X86Assembler::relinkJump): 16683 (JSC::X86Assembler::relinkCall): 16684 (JSC::X86Assembler::repatchInt32): 16685 (JSC::X86Assembler::repatchPointer): 16686 (JSC::X86Assembler::setPointer): 16687 (JSC::X86Assembler::setInt32): 16688 (JSC::X86Assembler::setRel32): 16689 - rename patchPointer to bring it in line with the current link/repatch naming scheme 16690 16691 * jit/JIT.cpp: 16692 (JSC::ctiPatchNearCallByReturnAddress): 16693 (JSC::ctiPatchCallByReturnAddress): 16694 - include new headers 16695 - remove MacroAssembler:: specification from RepatchBuffer usage 16696 16697 * jit/JITPropertyAccess.cpp: 16698 * yarr/RegexJIT.cpp: 16699 - include new headers 16700 167012009-07-21 Robert Agoston <Agoston.Robert@stud.u-szeged.hu> 16702 16703 Reviewed by David Levin. 16704 16705 Fixed #undef typo. 16706 https://bugs.webkit.org/show_bug.cgi?id=27506 16707 16708 * bytecode/Opcode.h: 16709 167102009-07-21 Adam Roben <aroben@apple.com> 16711 16712 Roll out r46153, r46154, and r46155 16713 16714 These changes were causing build failures and assertion failures on 16715 Windows. 16716 16717 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: 16718 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def: 16719 * JavaScriptCore.xcodeproj/project.pbxproj: 16720 * runtime/JSArray.cpp: 16721 * runtime/StringPrototype.cpp: 16722 * runtime/UString.cpp: 16723 * runtime/UString.h: 16724 * wtf/FastMalloc.cpp: 16725 * wtf/FastMalloc.h: 16726 * wtf/Platform.h: 16727 * wtf/PossiblyNull.h: Removed. 16728 167292009-07-21 Roland Steiner <rolandsteiner@google.com> 16730 16731 Reviewed by David Levin. 16732 16733 Add ENABLE_RUBY to list of build options 16734 https://bugs.webkit.org/show_bug.cgi?id=27324 16735 16736 * Configurations/FeatureDefines.xcconfig: Added flag ENABLE_RUBY. 16737 167382009-07-20 Oliver Hunt <oliver@apple.com> 16739 16740 Build fix attempt #2 16741 16742 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: 16743 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def: 16744 167452009-07-20 Oliver Hunt <oliver@apple.com> 16746 16747 Build fix attempt #1 16748 16749 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: 16750 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def: 16751 167522009-07-20 Oliver Hunt <oliver@apple.com> 16753 16754 Reviewed by Gavin Barraclough. 16755 16756 Make it harder to misuse try* allocation routines 16757 https://bugs.webkit.org/show_bug.cgi?id=27469 16758 16759 Jump through a few hoops to make it much harder to accidentally 16760 miss null-checking of values returned by the try-* allocation 16761 routines. 16762 16763 * JavaScriptCore.xcodeproj/project.pbxproj: 16764 * runtime/JSArray.cpp: 16765 (JSC::JSArray::putSlowCase): 16766 (JSC::JSArray::increaseVectorLength): 16767 * runtime/StringPrototype.cpp: 16768 (JSC::stringProtoFuncFontsize): 16769 (JSC::stringProtoFuncLink): 16770 * runtime/UString.cpp: 16771 (JSC::allocChars): 16772 (JSC::reallocChars): 16773 (JSC::expandCapacity): 16774 (JSC::UString::Rep::reserveCapacity): 16775 (JSC::UString::expandPreCapacity): 16776 (JSC::createRep): 16777 (JSC::concatenate): 16778 (JSC::UString::spliceSubstringsWithSeparators): 16779 (JSC::UString::replaceRange): 16780 (JSC::UString::append): 16781 (JSC::UString::operator=): 16782 * runtime/UString.h: 16783 (JSC::UString::Rep::createEmptyBuffer): 16784 * wtf/FastMalloc.cpp: 16785 (WTF::tryFastZeroedMalloc): 16786 (WTF::tryFastMalloc): 16787 (WTF::tryFastCalloc): 16788 (WTF::tryFastRealloc): 16789 (WTF::TCMallocStats::tryFastMalloc): 16790 (WTF::TCMallocStats::tryFastCalloc): 16791 (WTF::TCMallocStats::tryFastRealloc): 16792 * wtf/FastMalloc.h: 16793 (WTF::TryMallocReturnValue::TryMallocReturnValue): 16794 (WTF::TryMallocReturnValue::~TryMallocReturnValue): 16795 (WTF::TryMallocReturnValue::operator Maybe<T>): 16796 (WTF::TryMallocReturnValue::getValue): 16797 * wtf/PossiblyNull.h: 16798 (WTF::PossiblyNull::PossiblyNull): 16799 (WTF::PossiblyNull::~PossiblyNull): 16800 (WTF::PossiblyNull::getValue): 16801 * wtf/Platform.h: 16802 168032009-07-20 Gavin Barraclough <barraclough@apple.com> 16804 16805 RS Oliver Hunt. 16806 16807 Add ARM assembler files to xcodeproj, for convenience editing. 16808 16809 * JavaScriptCore.xcodeproj/project.pbxproj: 16810 168112009-07-20 Jessie Berlin <jberlin@apple.com> 16812 16813 Reviewed by David Levin. 16814 16815 Fix an incorrect assertion in Vector::remove. 16816 16817 https://bugs.webkit.org/show_bug.cgi?id=27477 16818 16819 * wtf/Vector.h: 16820 (WTF::::remove): 16821 Assert that the position at which to start removing elements + the 16822 length (the number of elements to remove) is less than or equal to the 16823 size of the entire Vector. 16824 168252009-07-20 Peter Kasting <pkasting@google.com> 16826 16827 Reviewed by Mark Rowe. 16828 16829 https://bugs.webkit.org/show_bug.cgi?id=27468 16830 Back out r46060, which caused problems for some Apple developers. 16831 16832 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreCommon.vsprops: 16833 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreGenerated.vcproj: 16834 * JavaScriptCore.vcproj/WTF/WTFCommon.vsprops: 16835 * JavaScriptCore.vcproj/jsc/jscCommon.vsprops: 16836 * JavaScriptCore.vcproj/testapi/testapiCommon.vsprops: 16837 168382009-07-20 Zoltan Horvath <hzoltan@inf.u-szeged.hu> 16839 16840 Reviewed by Oliver Hunt. 16841 16842 Allow custom memory allocation control in NewThreadContext 16843 https://bugs.webkit.org/show_bug.cgi?id=27338 16844 16845 Inherits NewThreadContext struct from FastAllocBase because it 16846 has been instantiated by 'new' JavaScriptCore/wtf/Threading.cpp:76. 16847 16848 * wtf/Threading.cpp: 16849 168502009-07-20 Zoltan Horvath <hzoltan@inf.u-szeged.hu> 16851 16852 Reviewed by Oliver Hunt. 16853 16854 Allow custom memory allocation control in JavaScriptCore's JSClassRef.h 16855 https://bugs.webkit.org/show_bug.cgi?id=27340 16856 16857 Inherit StaticValueEntry and StaticFunctionEntry struct from FastAllocBase because these 16858 have been instantiated by 'new' in JavaScriptCore/API/JSClassRef.cpp:153 16859 and in JavaScriptCore/API/JSClassRef.cpp:166. 16860 16861 * API/JSClassRef.h: 16862 168632009-07-20 Zoltan Horvath <hzoltan@inf.u-szeged.hu> 16864 16865 Reviewed by Darin Adler. 16866 16867 Allow custom memory allocation control in JavaScriptCore's RegexPattern.h 16868 https://bugs.webkit.org/show_bug.cgi?id=27343 16869 16870 Inherits RegexPattern.h's structs (which have been instantiated by operator new) from FastAllocBase: 16871 16872 CharacterClass (new call: JavaScriptCore/yarr/RegexCompiler.cpp:144) 16873 PatternAlternative (new call: JavaScriptCore/yarr/RegexPattern.h:221) 16874 PatternDisjunction (new call: JavaScriptCore/yarr/RegexCompiler.cpp:446) 16875 16876 * yarr/RegexPattern.h: 16877 168782009-07-20 Zoltan Horvath <hzoltan@inf.u-szeged.hu> 16879 16880 Reviewed by Darin Adler. 16881 16882 Allow custom memory allocation control for JavaScriptCore's MatchFrame struct 16883 https://bugs.webkit.org/show_bug.cgi?id=27344 16884 16885 Inherits MatchFrame struct from FastAllocBase because it has 16886 been instantiated by 'new' JavaScriptCore/pcre/pcre_exec.cpp:359. 16887 16888 * pcre/pcre_exec.cpp: 16889 168902009-07-20 Laszlo Gombos <laszlo.1.gombos@nokia.com> 16891 16892 Reviewed by Holger Freyther. 16893 16894 Remove some outdated S60 platform specific code 16895 https://bugs.webkit.org/show_bug.cgi?id=27423 16896 16897 * wtf/Platform.h: 16898 168992009-07-20 Csaba Osztrogonac <oszi@inf.u-szeged.hu> 16900 16901 Reviewed by Simon Hausmann. 16902 16903 Qt build fix with MSVC and MinGW. 16904 16905 * jsc.pro: Make sure jsc is a console application, and turn off 16906 exceptions and stl support to fix the build. 16907 169082009-07-20 Xan Lopez <xlopez@igalia.com> 16909 16910 Reviewed by Gustavo Noronha. 16911 16912 Do not use C++-style comments in preprocessor directives. 16913 16914 GCC does not like this in some configurations, using C-style 16915 comments is safer. 16916 16917 * wtf/Platform.h: 16918 169192009-07-17 Peter Kasting <pkasting@google.com> 16920 16921 Reviewed by Steve Falkenburg. 16922 16923 https://bugs.webkit.org/show_bug.cgi?id=27323 16924 Only add Cygwin to the path when it isn't already there. This avoids 16925 causing problems for people who purposefully have non-Cygwin versions of 16926 executables like svn in front of the Cygwin ones in their paths. 16927 16928 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreCommon.vsprops: 16929 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreGenerated.vcproj: 16930 * JavaScriptCore.vcproj/WTF/WTFCommon.vsprops: 16931 * JavaScriptCore.vcproj/jsc/jscCommon.vsprops: 16932 * JavaScriptCore.vcproj/testapi/testapiCommon.vsprops: 16933 169342009-07-17 Gabor Loki <loki@inf.u-szeged.hu> 16935 16936 Reviewed by Gavin Barraclough. 16937 16938 Add YARR support for generic ARM platforms (disabled by default). 16939 https://bugs.webkit.org/show_bug.cgi?id=24986 16940 16941 Add generic ARM port for MacroAssembler. It supports the whole 16942 MacroAssembler functionality except floating point. 16943 16944 The class JmpSrc is extended with a flag which enables to patch 16945 the jump destination offset during execution. This feature is 16946 required for generic ARM port. 16947 16948 Signed off by Zoltan Herczeg <zherczeg@inf.u-szeged.hu> 16949 Signed off by Gabor Loki <loki@inf.u-szeged.hu> 16950 16951 * JavaScriptCore.pri: 16952 * assembler/ARMAssembler.cpp: Added. 16953 (JSC::ARMAssembler::getLdrImmAddress): 16954 (JSC::ARMAssembler::linkBranch): 16955 (JSC::ARMAssembler::patchConstantPoolLoad): 16956 (JSC::ARMAssembler::getOp2): 16957 (JSC::ARMAssembler::genInt): 16958 (JSC::ARMAssembler::getImm): 16959 (JSC::ARMAssembler::moveImm): 16960 (JSC::ARMAssembler::dataTransfer32): 16961 (JSC::ARMAssembler::baseIndexTransfer32): 16962 (JSC::ARMAssembler::executableCopy): 16963 * assembler/ARMAssembler.h: Added. 16964 (JSC::ARM::): 16965 (JSC::ARMAssembler::ARMAssembler): 16966 (JSC::ARMAssembler::): 16967 (JSC::ARMAssembler::JmpSrc::JmpSrc): 16968 (JSC::ARMAssembler::JmpSrc::enableLatePatch): 16969 (JSC::ARMAssembler::JmpDst::JmpDst): 16970 (JSC::ARMAssembler::JmpDst::isUsed): 16971 (JSC::ARMAssembler::JmpDst::used): 16972 (JSC::ARMAssembler::emitInst): 16973 (JSC::ARMAssembler::and_r): 16974 (JSC::ARMAssembler::ands_r): 16975 (JSC::ARMAssembler::eor_r): 16976 (JSC::ARMAssembler::eors_r): 16977 (JSC::ARMAssembler::sub_r): 16978 (JSC::ARMAssembler::subs_r): 16979 (JSC::ARMAssembler::rsb_r): 16980 (JSC::ARMAssembler::rsbs_r): 16981 (JSC::ARMAssembler::add_r): 16982 (JSC::ARMAssembler::adds_r): 16983 (JSC::ARMAssembler::adc_r): 16984 (JSC::ARMAssembler::adcs_r): 16985 (JSC::ARMAssembler::sbc_r): 16986 (JSC::ARMAssembler::sbcs_r): 16987 (JSC::ARMAssembler::rsc_r): 16988 (JSC::ARMAssembler::rscs_r): 16989 (JSC::ARMAssembler::tst_r): 16990 (JSC::ARMAssembler::teq_r): 16991 (JSC::ARMAssembler::cmp_r): 16992 (JSC::ARMAssembler::orr_r): 16993 (JSC::ARMAssembler::orrs_r): 16994 (JSC::ARMAssembler::mov_r): 16995 (JSC::ARMAssembler::movs_r): 16996 (JSC::ARMAssembler::bic_r): 16997 (JSC::ARMAssembler::bics_r): 16998 (JSC::ARMAssembler::mvn_r): 16999 (JSC::ARMAssembler::mvns_r): 17000 (JSC::ARMAssembler::mul_r): 17001 (JSC::ARMAssembler::muls_r): 17002 (JSC::ARMAssembler::mull_r): 17003 (JSC::ARMAssembler::ldr_imm): 17004 (JSC::ARMAssembler::ldr_un_imm): 17005 (JSC::ARMAssembler::dtr_u): 17006 (JSC::ARMAssembler::dtr_ur): 17007 (JSC::ARMAssembler::dtr_d): 17008 (JSC::ARMAssembler::dtr_dr): 17009 (JSC::ARMAssembler::ldrh_r): 17010 (JSC::ARMAssembler::ldrh_d): 17011 (JSC::ARMAssembler::ldrh_u): 17012 (JSC::ARMAssembler::strh_r): 17013 (JSC::ARMAssembler::push_r): 17014 (JSC::ARMAssembler::pop_r): 17015 (JSC::ARMAssembler::poke_r): 17016 (JSC::ARMAssembler::peek_r): 17017 (JSC::ARMAssembler::clz_r): 17018 (JSC::ARMAssembler::bkpt): 17019 (JSC::ARMAssembler::lsl): 17020 (JSC::ARMAssembler::lsr): 17021 (JSC::ARMAssembler::asr): 17022 (JSC::ARMAssembler::lsl_r): 17023 (JSC::ARMAssembler::lsr_r): 17024 (JSC::ARMAssembler::asr_r): 17025 (JSC::ARMAssembler::size): 17026 (JSC::ARMAssembler::ensureSpace): 17027 (JSC::ARMAssembler::label): 17028 (JSC::ARMAssembler::align): 17029 (JSC::ARMAssembler::jmp): 17030 (JSC::ARMAssembler::patchPointerInternal): 17031 (JSC::ARMAssembler::patchConstantPoolLoad): 17032 (JSC::ARMAssembler::patchPointer): 17033 (JSC::ARMAssembler::repatchInt32): 17034 (JSC::ARMAssembler::repatchPointer): 17035 (JSC::ARMAssembler::repatchLoadPtrToLEA): 17036 (JSC::ARMAssembler::linkJump): 17037 (JSC::ARMAssembler::relinkJump): 17038 (JSC::ARMAssembler::linkCall): 17039 (JSC::ARMAssembler::relinkCall): 17040 (JSC::ARMAssembler::getRelocatedAddress): 17041 (JSC::ARMAssembler::getDifferenceBetweenLabels): 17042 (JSC::ARMAssembler::getCallReturnOffset): 17043 (JSC::ARMAssembler::getOp2Byte): 17044 (JSC::ARMAssembler::placeConstantPoolBarrier): 17045 (JSC::ARMAssembler::RM): 17046 (JSC::ARMAssembler::RS): 17047 (JSC::ARMAssembler::RD): 17048 (JSC::ARMAssembler::RN): 17049 (JSC::ARMAssembler::getConditionalField): 17050 * assembler/ARMv7Assembler.h: 17051 (JSC::ARMv7Assembler::JmpSrc::enableLatePatch): 17052 * assembler/AbstractMacroAssembler.h: 17053 (JSC::AbstractMacroAssembler::Call::enableLatePatch): 17054 (JSC::AbstractMacroAssembler::Jump::enableLatePatch): 17055 * assembler/MacroAssembler.h: 17056 * assembler/MacroAssemblerARM.h: Added. 17057 (JSC::MacroAssemblerARM::): 17058 (JSC::MacroAssemblerARM::add32): 17059 (JSC::MacroAssemblerARM::and32): 17060 (JSC::MacroAssemblerARM::lshift32): 17061 (JSC::MacroAssemblerARM::mul32): 17062 (JSC::MacroAssemblerARM::not32): 17063 (JSC::MacroAssemblerARM::or32): 17064 (JSC::MacroAssemblerARM::rshift32): 17065 (JSC::MacroAssemblerARM::sub32): 17066 (JSC::MacroAssemblerARM::xor32): 17067 (JSC::MacroAssemblerARM::load32): 17068 (JSC::MacroAssemblerARM::load32WithAddressOffsetPatch): 17069 (JSC::MacroAssemblerARM::loadPtrWithPatchToLEA): 17070 (JSC::MacroAssemblerARM::load16): 17071 (JSC::MacroAssemblerARM::store32WithAddressOffsetPatch): 17072 (JSC::MacroAssemblerARM::store32): 17073 (JSC::MacroAssemblerARM::pop): 17074 (JSC::MacroAssemblerARM::push): 17075 (JSC::MacroAssemblerARM::move): 17076 (JSC::MacroAssemblerARM::swap): 17077 (JSC::MacroAssemblerARM::signExtend32ToPtr): 17078 (JSC::MacroAssemblerARM::zeroExtend32ToPtr): 17079 (JSC::MacroAssemblerARM::branch32): 17080 (JSC::MacroAssemblerARM::branch16): 17081 (JSC::MacroAssemblerARM::branchTest32): 17082 (JSC::MacroAssemblerARM::jump): 17083 (JSC::MacroAssemblerARM::branchAdd32): 17084 (JSC::MacroAssemblerARM::mull32): 17085 (JSC::MacroAssemblerARM::branchMul32): 17086 (JSC::MacroAssemblerARM::branchSub32): 17087 (JSC::MacroAssemblerARM::breakpoint): 17088 (JSC::MacroAssemblerARM::nearCall): 17089 (JSC::MacroAssemblerARM::call): 17090 (JSC::MacroAssemblerARM::ret): 17091 (JSC::MacroAssemblerARM::set32): 17092 (JSC::MacroAssemblerARM::setTest32): 17093 (JSC::MacroAssemblerARM::tailRecursiveCall): 17094 (JSC::MacroAssemblerARM::makeTailRecursiveCall): 17095 (JSC::MacroAssemblerARM::moveWithPatch): 17096 (JSC::MacroAssemblerARM::branchPtrWithPatch): 17097 (JSC::MacroAssemblerARM::storePtrWithPatch): 17098 (JSC::MacroAssemblerARM::supportsFloatingPoint): 17099 (JSC::MacroAssemblerARM::supportsFloatingPointTruncate): 17100 (JSC::MacroAssemblerARM::loadDouble): 17101 (JSC::MacroAssemblerARM::storeDouble): 17102 (JSC::MacroAssemblerARM::addDouble): 17103 (JSC::MacroAssemblerARM::subDouble): 17104 (JSC::MacroAssemblerARM::mulDouble): 17105 (JSC::MacroAssemblerARM::convertInt32ToDouble): 17106 (JSC::MacroAssemblerARM::branchDouble): 17107 (JSC::MacroAssemblerARM::branchTruncateDoubleToInt32): 17108 (JSC::MacroAssemblerARM::ARMCondition): 17109 (JSC::MacroAssemblerARM::prepareCall): 17110 (JSC::MacroAssemblerARM::call32): 17111 * assembler/X86Assembler.h: 17112 (JSC::X86Assembler::JmpSrc::enableLatePatch): 17113 * jit/ExecutableAllocator.h: 17114 (JSC::ExecutableAllocator::cacheFlush): 17115 * wtf/Platform.h: 17116 * yarr/RegexJIT.cpp: 17117 (JSC::Yarr::RegexGenerator::generateEnter): 17118 (JSC::Yarr::RegexGenerator::generateReturn): 17119 171202009-07-17 Gabor Loki <loki@inf.u-szeged.hu> 17121 17122 Reviewed by Gavin Barraclough. 17123 17124 Extend AssemblerBuffer with constant pool handling mechanism. 17125 https://bugs.webkit.org/show_bug.cgi?id=24986 17126 17127 Add a platform independed constant pool framework. 17128 This pool can store 32 or 64 bits values which is enough to hold 17129 any integer, pointer or double constant. 17130 17131 * assembler/AssemblerBuffer.h: 17132 (JSC::AssemblerBuffer::putIntUnchecked): 17133 (JSC::AssemblerBuffer::putInt64Unchecked): 17134 (JSC::AssemblerBuffer::append): 17135 (JSC::AssemblerBuffer::grow): 17136 * assembler/AssemblerBufferWithConstantPool.h: Added. 17137 (JSC::): 17138 171392009-07-17 Eric Roman <eroman@chromium.org> 17140 17141 Reviewed by Darin Adler. 17142 17143 Build fix for non-Darwin. 17144 Add a guard for inclusion of RetainPtr.h which includes CoreFoundation.h 17145 17146 https://bugs.webkit.org/show_bug.cgi?id=27382 17147 17148 * wtf/unicode/icu/CollatorICU.cpp: 17149 171502009-07-17 Alexey Proskuryakov <ap@webkit.org> 17151 17152 Reviewed by John Sullivan. 17153 17154 Get user default collation order via a CFLocale API when available. 17155 17156 * wtf/unicode/icu/CollatorICU.cpp: (WTF::Collator::userDefault): 17157 171582009-07-17 Laszlo Gombos <laszlo.1.gombos@nokia.com> 17159 17160 Reviewed by Simon Hausmann. 17161 17162 [Qt] Fix the include path for the Symbian port 17163 https://bugs.webkit.org/show_bug.cgi?id=27358 17164 17165 * JavaScriptCore.pri: 17166 171672009-07-17 Csaba Osztrogonac <oszi@inf.u-szeged.hu> 17168 17169 Reviewed by David Levin. 17170 17171 Build fix on platforms don't have MMAP. 17172 https://bugs.webkit.org/show_bug.cgi?id=27365 17173 17174 * interpreter/RegisterFile.h: Including stdio.h irrespectively of HAVE(MMAP) 17175 171762009-07-16 Fumitoshi Ukai <ukai@chromium.org> 17177 17178 Reviewed by David Levin. 17179 17180 Add --web-sockets flag and ENABLE_WEB_SOCKETS define. 17181 https://bugs.webkit.org/show_bug.cgi?id=27206 17182 17183 Add ENABLE_WEB_SOCKETS 17184 17185 * Configurations/FeatureDefines.xcconfig: add ENABLE_WEB_SOCKETS 17186 171872009-07-16 Maxime Simon <simon.maxime@gmail.com> 17188 17189 Reviewed by Eric Seidel. 17190 17191 Added Haiku-specific files for JavaScriptCore. 17192 https://bugs.webkit.org/show_bug.cgi?id=26620 17193 17194 * wtf/haiku/MainThreadHaiku.cpp: Added. 17195 (WTF::initializeMainThreadPlatform): 17196 (WTF::scheduleDispatchFunctionsOnMainThread): 17197 171982009-07-16 Gavin Barraclough <barraclough@apple.com> 17199 17200 RS by Oliver Hunt. 17201 17202 Revert r45969, this fix does not appear to be valid. 17203 https://bugs.webkit.org/show_bug.cgi?id=27077 17204 17205 * bytecode/CodeBlock.cpp: 17206 (JSC::CodeBlock::~CodeBlock): 17207 (JSC::CodeBlock::unlinkCallers): 17208 * jit/JIT.cpp: 17209 * jit/JIT.h: 17210 172112009-07-16 Zoltan Horvath <hzoltan@inf.u-szeged.hu> 17212 17213 Reviewed by Oliver Hunt. 17214 17215 Allow custom memory allocation control in ExceptionInfo and RareData struct 17216 https://bugs.webkit.org/show_bug.cgi?id=27336 17217 17218 Inherits ExceptionInfo and RareData struct from FastAllocBase because these 17219 have been instantiated by 'new' in JavaScriptCore/bytecode/CodeBlock.cpp:1289 and 17220 in JavaScriptCore/bytecode/CodeBlock.h:453. 17221 17222 Remove unnecessary WTF:: namespace from CodeBlock inheritance. 17223 17224 * bytecode/CodeBlock.h: 17225 172262009-07-16 Mark Rowe <mrowe@apple.com> 17227 17228 Rubber-stamped by Geoff Garen. 17229 17230 Fix FeatureDefines.xcconfig to not be out of sync with the rest of the world. 17231 17232 * Configurations/FeatureDefines.xcconfig: 17233 172342009-07-16 Yong Li <yong.li@torchmobile.com> 17235 17236 Reviewed by George Staikos. 17237 17238 https://bugs.webkit.org/show_bug.cgi?id=27320 17239 _countof is only included in CE6; for CE5 we need to define it ourself 17240 17241 * wtf/Platform.h: 17242 172432009-07-16 Zoltan Herczeg <zherczeg@inf.u-szeged.hu> 17244 17245 Reviewed by Oliver Hunt. 17246 17247 Workers + garbage collector: weird crashes 17248 https://bugs.webkit.org/show_bug.cgi?id=27077 17249 17250 We need to unlink cached method call sites when a function is destroyed. 17251 17252 * JavaScriptCore.xcodeproj/project.pbxproj: 17253 * bytecode/CodeBlock.cpp: 17254 (JSC::CodeBlock::~CodeBlock): 17255 (JSC::CodeBlock::unlinkCallers): 17256 * jit/JIT.cpp: 17257 (JSC::JIT::unlinkMethodCall): 17258 * jit/JIT.h: 17259 172602009-07-15 Steve Falkenburg <sfalken@apple.com> 17261 17262 Windows Build fix. 17263 17264 Visual Studio reset our intermediate directory on us. 17265 This sets it back. 17266 17267 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: 17268 * JavaScriptCore.vcproj/testapi/testapi.vcproj: 17269 172702009-07-15 Kwang Yul Seo <skyul@company100.net> 17271 17272 Reviewed by Eric Seidel. 17273 17274 https://bugs.webkit.org/show_bug.cgi?id=26794 17275 Make Yacc-generated parsers to use fastMalloc/fastFree. 17276 17277 Define YYMALLOC and YYFREE to fastMalloc and fastFree 17278 respectively. 17279 17280 * parser/Grammar.y: 17281 172822009-07-15 Darin Adler <darin@apple.com> 17283 17284 Fix a build for a particular Apple configuration. 17285 17286 * wtf/FastAllocBase.h: Change include to use "" style for 17287 including another wtf header. This is the style we use for 17288 including other public headers in the same directory. 17289 172902009-07-15 George Staikos <george.staikos@torchmobile.com> 17291 17292 Reviewed by Adam Treat. 17293 17294 https://bugs.webkit.org/show_bug.cgi?id=27303 17295 Implement createThreadInternal for WinCE. 17296 Contains changes by George Staikos <george.staikos@torchmobile.com> and Joe Mason <joe.mason@torchmobile.com> 17297 17298 * wtf/ThreadingWin.cpp: 17299 (WTF::createThreadInternal): 17300 173012009-07-15 Joe Mason <joe.mason@torchmobile.com> 17302 17303 Reviewed by George Staikos. 17304 17305 https://bugs.webkit.org/show_bug.cgi?id=27298 17306 Platform defines for WINCE. 17307 Contains changes by Yong Li <yong.li@torchmobile.com>, 17308 George Staikos <george.staikos@torchmobile.com> and Joe Mason <joe.mason@torchmobile.com> 17309 17310 * wtf/Platform.h: 17311 173122009-07-15 Yong Li <yong.li@torchmobile.com> 17313 17314 Reviewed by Adam Treat. 17315 17316 https://bugs.webkit.org/show_bug.cgi?id=27306 17317 Use RegisterClass instead of RegisterClassEx on WinCE. 17318 17319 * wtf/win/MainThreadWin.cpp: 17320 (WTF::initializeMainThreadPlatform): 17321 173222009-07-15 Yong Li <yong.li@torchmobile.com> 17323 17324 Reviewed by George Staikos. 17325 17326 https://bugs.webkit.org/show_bug.cgi?id=27301 17327 Use OutputDebugStringW on WinCE since OutputDebugStringA is not supported 17328 Originally written by Yong Li <yong.li@torchmobile.com> and refactored by 17329 Joe Mason <joe.mason@torchmobile.com> 17330 17331 * wtf/Assertions.cpp: vprintf_stderr_common 17332 173332009-07-15 Yong Li <yong.li@torchmobile.com> 17334 17335 Reviewed by George Staikos. 17336 17337 https://bugs.webkit.org/show_bug.cgi?id=27020 17338 msToGregorianDateTime should set utcOffset to 0 when outputIsUTC is false 17339 17340 * wtf/DateMath.cpp: 17341 (WTF::gregorianDateTimeToMS): 17342 173432009-07-15 Laszlo Gombos <laszlo.1.gombos@nokia.com> 17344 17345 Reviewed by Simon Hausmann. 17346 17347 [Qt] Cleanup - Remove obsolete code from the make system 17348 https://bugs.webkit.org/show_bug.cgi?id=27299 17349 17350 * JavaScriptCore.pro: 17351 * jsc.pro: 17352 173532009-07-07 Norbert Leser <norbert.leser@nokia.com> 17354 17355 Reviewed by Simon Hausmann. 17356 17357 https://bugs.webkit.org/show_bug.cgi?id=27056 17358 17359 Alternate bool operator for codewarrior compiler (WINSCW). 17360 Compiler (latest b482) reports error for UnspecifiedBoolType construct: 17361 "illegal explicit conversion from 'WTF::OwnArrayPtr<JSC::Register>' to 'bool'" 17362 17363 Same fix as in r38391. 17364 17365 * JavaScriptCore/wtf/OwnArrayPtr.h: 17366 173672009-07-15 Norbert Leser <norbert.leser@nokia.com> 17368 17369 Reviewed by Darin Adler. 17370 17371 Qualify include path with wtf to fix compilation 17372 on Symbian. 17373 https://bugs.webkit.org/show_bug.cgi?id=27055 17374 17375 * interpreter/Interpreter.h: 17376 173772009-07-15 Laszlo Gombos <laszlo.1.gombos@nokia.com> 17378 17379 Reviewed by Dave Kilzer. 17380 17381 Turn off non-portable date manipulations for SYMBIAN 17382 https://bugs.webkit.org/show_bug.cgi?id=27064 17383 17384 Introduce HAVE(TM_GMTOFF), HAVE(TM_ZONE) and HAVE(TIMEGM) guards 17385 and place the rules for controlling the guards in Platform.h. 17386 Turn off these newly introduced guards for SYMBIAN. 17387 17388 * wtf/DateMath.cpp: 17389 (WTF::calculateUTCOffset): 17390 * wtf/DateMath.h: 17391 (WTF::GregorianDateTime::GregorianDateTime): 17392 (WTF::GregorianDateTime::operator tm): 17393 * wtf/Platform.h: 17394 173952009-07-15 Norbert Leser <norbert.leser@nokia.com> 17396 17397 Reviewed by Simon Hausmann. 17398 17399 Undef ASSERT on Symbian, to avoid excessive warnings 17400 https://bugs.webkit.org/show_bug.cgi?id=27052 17401 17402 * wtf/Assertions.h: 17403 174042009-07-15 Oliver Hunt <oliver@apple.com> 17405 17406 Reviewed by Simon Hausmann. 17407 17408 REGRESSION: fast/js/postfix-syntax.html fails with interpreter 17409 https://bugs.webkit.org/show_bug.cgi?id=27294 17410 17411 When postfix operators operating on locals assign to the same local 17412 the order of operations has to be to store the incremented value, then 17413 store the unmodified number. Rather than implementing this subtle 17414 semantic in the interpreter I've just made the logic explicit in the 17415 bytecode generator, so x=x++ effectively becomes x=ToNumber(x) (for a 17416 local var x). 17417 17418 * parser/Nodes.cpp: 17419 (JSC::emitPostIncOrDec): 17420 174212009-07-15 Oliver Hunt <oliver@apple.com> 17422 17423 Reviewed by Simon Hausmann. 17424 17425 REGRESSION(43559): fast/js/kde/arguments-scope.html fails with interpreter 17426 https://bugs.webkit.org/show_bug.cgi?id=27259 17427 17428 The interpreter was incorrectly basing its need to create the arguments object 17429 based on the presence of the callframe's argument reference rather than the local 17430 arguments reference. Based on this it then overrode the local variable reference. 17431 17432 * interpreter/Interpreter.cpp: 17433 (JSC::Interpreter::privateExecute): 17434 174352009-07-14 Steve Falkenburg <sfalken@apple.com> 17436 17437 Reorganize JavaScriptCore headers into: 17438 API: include/JavaScriptCore/ 17439 Private: include/private/JavaScriptCore/ 17440 17441 Reviewed by Darin Adler. 17442 17443 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: 17444 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreCommon.vsprops: 17445 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreGenerated.make: 17446 * JavaScriptCore.vcproj/testapi/testapi.vcproj: 17447 * JavaScriptCore.vcproj/testapi/testapiCommon.vsprops: 17448 174492009-07-14 Zoltan Horvath <hzoltan@inf.u-szeged.hu> 17450 17451 Reviewed by Darin Adler. 17452 17453 Change JSCell's superclass to NoncopyableCustomAllocated 17454 https://bugs.webkit.org/show_bug.cgi?id=27248 17455 17456 JSCell class customizes operator new, since Noncopyable will be 17457 inherited from FastAllocBase, NoncopyableCustomAllocated has 17458 to be used. 17459 17460 * runtime/JSCell.h: 17461 174622009-07-14 Zoltan Horvath <hzoltan@inf.u-szeged.hu> 17463 17464 Reviewed by Darin Adler. 17465 17466 Change all Noncopyable inheriting visibility to public. 17467 https://bugs.webkit.org/show_bug.cgi?id=27225 17468 17469 Change all Noncopyable inheriting visibility to public because 17470 it is needed to the custom allocation framework (bug #20422). 17471 17472 * bytecode/SamplingTool.h: 17473 * bytecompiler/RegisterID.h: 17474 * interpreter/CachedCall.h: 17475 * interpreter/RegisterFile.h: 17476 * parser/Lexer.h: 17477 * parser/Parser.h: 17478 * runtime/ArgList.h: 17479 * runtime/BatchedTransitionOptimizer.h: 17480 * runtime/Collector.h: 17481 * runtime/CommonIdentifiers.h: 17482 * runtime/JSCell.h: 17483 * runtime/JSGlobalObject.h: 17484 * runtime/JSLock.h: 17485 * runtime/JSONObject.cpp: 17486 * runtime/SmallStrings.cpp: 17487 * runtime/SmallStrings.h: 17488 * wtf/CrossThreadRefCounted.h: 17489 * wtf/GOwnPtr.h: 17490 * wtf/Locker.h: 17491 * wtf/MessageQueue.h: 17492 * wtf/OwnArrayPtr.h: 17493 * wtf/OwnFastMallocPtr.h: 17494 * wtf/OwnPtr.h: 17495 * wtf/RefCounted.h: 17496 * wtf/ThreadSpecific.h: 17497 * wtf/Threading.h: 17498 * wtf/Vector.h: 17499 * wtf/unicode/Collator.h: 17500 175012009-07-14 Zoltan Horvath <hzoltan@inf.u-szeged.hu> 17502 17503 Reviewed by Darin Adler. 17504 17505 Change ParserArenaRefCounted's superclass to RefCountedCustomAllocated 17506 https://bugs.webkit.org/show_bug.cgi?id=27249 17507 17508 ParserArenaDeletable customizes operator new, to avoid double inheritance 17509 ParserArenaDeletable's superclass has been changed to RefCountedCustomAllocated. 17510 17511 * parser/Nodes.h: 17512 175132009-07-14 Zoltan Horvath <hzoltan@inf.u-szeged.hu> 17514 17515 Reviewed by Darin Adler. 17516 17517 Add RefCountedCustomAllocated to RefCounted.h 17518 https://bugs.webkit.org/show_bug.cgi?id=27232 17519 17520 Some class which are inherited from RefCounted customize 17521 operator new, but RefCounted is inherited from Noncopyable 17522 which will be inherited from FastAllocBase. To avoid 17523 conflicts Noncopyable inheriting was moved down to RefCounted 17524 and to avoid double inheritance this class has been added. 17525 17526 * wtf/RefCounted.h: 17527 (WTF::RefCountedCustomAllocated::deref): 17528 (WTF::RefCountedCustomAllocated::~RefCountedCustomAllocated): 17529 175302009-07-14 Zoltan Horvath <hzoltan@inf.u-szeged.hu> 17531 17532 Reviewed by Darin Adler. 17533 17534 Add NoncopyableCustomAllocated to Noncopyable.h. 17535 https://bugs.webkit.org/show_bug.cgi?id=27228 17536 17537 Some classes which inherited from Noncopyable overrides operator new 17538 since Noncopyable'll be inherited from FastAllocBase, Noncopyable.h 17539 needs to be extended with this new class to support the overriding. 17540 17541 * wtf/Noncopyable.h: 17542 (WTFNoncopyable::NoncopyableCustomAllocated::NoncopyableCustomAllocated): 17543 (WTFNoncopyable::NoncopyableCustomAllocated::~NoncopyableCustomAllocated): 17544 175452009-07-14 Zoltan Horvath <hzoltan@inf.u-szeged.hu> 17546 17547 Reviewed by Darin Adler. 17548 17549 Allow custom memory allocation control for JavaScriptCore's IdentifierTable class 17550 https://bugs.webkit.org/show_bug.cgi?id=27260 17551 17552 Inherits IdentifierTable class from FastAllocBase because it has been 17553 instantiated by 'new' in JavaScriptCore/runtime/Identifier.cpp:70. 17554 17555 * runtime/Identifier.cpp: 17556 175572009-07-14 Zoltan Horvath <hzoltan@inf.u-szeged.hu> 17558 17559 Reviewed by Darin Adler. 17560 17561 Allow custom memory allocation control for JavaScriptCore's Profiler class 17562 https://bugs.webkit.org/show_bug.cgi?id=27253 17563 17564 Inherits Profiler class from FastAllocBase because it has been instantiated by 17565 'new' in JavaScriptCore/profiler/Profiler.cpp:56. 17566 17567 * profiler/Profiler.h: 17568 175692009-07-06 George Staikos <george.staikos@torchmobile.com> 17570 17571 Reviewed by Adam Treat. 17572 17573 Authors: George Staikos <george.staikos@torchmobile.com>, Joe Mason <joe.mason@torchmobile.com>, Makoto Matsumoto <matumoto@math.keio.ac.jp>, Takuji Nishimura 17574 17575 https://bugs.webkit.org/show_bug.cgi?id=27030 17576 Implement custom RNG for WinCE using Mersenne Twister 17577 17578 * wtf/RandomNumber.cpp: 17579 (WTF::randomNumber): 17580 * wtf/RandomNumberSeed.h: 17581 (WTF::initializeRandomNumberGenerator): 17582 * wtf/wince/mt19937ar.c: Added. 17583 (init_genrand): 17584 (init_by_array): 17585 (genrand_int32): 17586 (genrand_int31): 17587 (genrand_real1): 17588 (genrand_real2): 17589 (genrand_real3): 17590 (genrand_res53): 17591 175922009-07-13 Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk> 17593 17594 Unreviewed make dist build fix. 17595 17596 * GNUmakefile.am: 17597 175982009-07-13 Drew Wilson <atwilson@google.com> 17599 17600 Reviewed by David Levin. 17601 17602 Add ENABLE(SHARED_WORKERS) flag and define SharedWorker APIs 17603 https://bugs.webkit.org/show_bug.cgi?id=26932 17604 17605 Added ENABLE(SHARED_WORKERS) flag (off by default). 17606 17607 * Configurations/FeatureDefines.xcconfig: 17608 176092009-07-07 Norbert Leser <norbert.leser@nokia.com> 17610 17611 Reviewed by Maciej Stachoviak. 17612 17613 https://bugs.webkit.org/show_bug.cgi?id=27058 17614 17615 Removed superfluous parenthesis around single expression. 17616 Compilers on Symbian platform fail to properly parse and compile. 17617 17618 * JavaScriptCore/wtf/Platform.h: 17619 176202009-07-13 Norbert Leser <norbert.leser@nokia.com> 17621 17622 Reviewed by Maciej Stachoviak. 17623 17624 https://bugs.webkit.org/show_bug.cgi?id=27054 17625 17626 Renamed Translator to HashTranslator 17627 17628 Codewarrior compiler (WINSCW) latest b482 cannot resolve typename 17629 mismatch between template declaration and definition 17630 (HashTranslator / Translator) 17631 17632 * wtf/HashSet.h: 17633 176342009-07-13 Norbert Leser <norbert.leser@nokia.com> 17635 17636 Reviewed by Eric Seidel. 17637 17638 https://bugs.webkit.org/show_bug.cgi?id=27053 17639 17640 Ambiguity in LabelScope initialization 17641 17642 Codewarrior compiler (WINSCW) latest b482 on Symbian cannot resolve 17643 type of "0" unambiguously. Set expression explicitly to 17644 PassRefPtr<Label>::PassRefPtr() 17645 17646 * bytecompiler/BytecodeGenerator.cpp 17647 176482009-07-11 Simon Fraser <simon.fraser@apple.com> 17649 17650 Enable support for accelerated compositing and 3d transforms on Leopard. 17651 <https://bugs.webkit.org/show_bug.cgi?id=20166> 17652 <rdar://problem/6120614> 17653 17654 Reviewed by Oliver Hunt. 17655 17656 * Configurations/FeatureDefines.xcconfig: 17657 * wtf/Platform.h: 17658 176592009-07-10 Mark Rowe <mrowe@apple.com> 17660 17661 Second part of the "make Windows happier" dance. 17662 17663 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: 17664 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def: 17665 176662009-07-10 Mark Rowe <mrowe@apple.com> 17667 17668 Try and make the Windows build happy. 17669 17670 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: 17671 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def: 17672 176732009-07-10 Kevin McCullough <kmccullough@apple.com> 17674 17675 Reviewed by Geoffrey Garen. 17676 17677 * debugger/Debugger.h: Made this function virtual for use in WebCore's 17678 WebInspector. 17679 176802009-07-10 Kwang Yul Seo <skyul@company100.net> 17681 17682 Reviewed by Darin Adler. 17683 17684 ParserArenaDeletable should override delete 17685 https://bugs.webkit.org/show_bug.cgi?id=26790 17686 17687 ParserArenaDeletable overrides new, but it does not override delete. 17688 ParserArenaDeletable must be freed by fastFree 17689 because it is allocated by fastMalloc. 17690 17691 * parser/NodeConstructors.h: 17692 (JSC::ParserArenaDeletable::operator delete): 17693 * parser/Nodes.h: 17694 176952009-07-10 Adam Roben <aroben@apple.com> 17696 17697 Sort all our Xcode projects 17698 17699 Accomplished using sort-Xcode-project-file. 17700 17701 Requested by Dave Kilzer. 17702 17703 * JavaScriptCore.xcodeproj/project.pbxproj: 17704 177052009-07-09 Maciej Stachowiak <mjs@apple.com> 17706 17707 Not reviewed, build fix. 17708 17709 Windows build fix for the last change. 17710 17711 * wtf/dtoa.cpp: Forgot to include Vector.h 17712 177132009-07-09 Maciej Stachowiak <mjs@apple.com> 17714 17715 Reviewed by Darin Adler. 17716 17717 REGRESSION: crash in edge cases of floating point parsing. 17718 https://bugs.webkit.org/show_bug.cgi?id=27110 17719 <rdar://problem/7044458> 17720 17721 Tests: fast/css/number-parsing-crash.html 17722 fast/css/number-parsing-crash.html 17723 fast/js/number-parsing-crash.html 17724 17725 * wtf/dtoa.cpp: 17726 (WTF::BigInt::BigInt): Converted this to more a proper class, using a Vector 17727 with inline capacity 17728 17729 (WTF::lshift): Rearranged logic somewhat nontrivially to deal with the new way of sizing BigInts. 17730 Added an assertion to verify that invariants are maintained. 17731 17732 All other functions are adapted fairly mechanically to the above changes. 17733 (WTF::BigInt::clear): 17734 (WTF::BigInt::size): 17735 (WTF::BigInt::resize): 17736 (WTF::BigInt::words): 17737 (WTF::BigInt::append): 17738 (WTF::multadd): 17739 (WTF::s2b): 17740 (WTF::i2b): 17741 (WTF::mult): 17742 (WTF::cmp): 17743 (WTF::diff): 17744 (WTF::b2d): 17745 (WTF::d2b): 17746 (WTF::ratio): 17747 (WTF::strtod): 17748 (WTF::quorem): 17749 (WTF::dtoa): 17750 177512009-07-09 Drew Wilson <atwilson@google.com> 17752 17753 Reviewed by Alexey Proskuryakov. 17754 17755 Turned on CHANNEL_MESSAGING by default because the MessageChannel API 17756 can now be implemented for Web Workers and is reasonably stable. 17757 17758 * Configurations/FeatureDefines.xcconfig: 17759 177602009-07-09 Oliver Hunt <oliver@apple.com> 17761 17762 * interpreter/Interpreter.cpp: 17763 (JSC::Interpreter::privateExecute): 17764 177652009-07-09 Oliver Hunt <oliver@apple.com> 17766 17767 Reviewed by Darin Adler. 17768 17769 Bug 27016 - Interpreter crashes due to invalid array indexes 17770 <https://bugs.webkit.org/show_bug.cgi?id=27016> 17771 17772 Unsigned vs signed conversions results in incorrect behaviour in 17773 64bit interpreter builds. 17774 17775 * interpreter/Interpreter.cpp: 17776 (JSC::Interpreter::privateExecute): 17777 177782009-07-09 Dimitri Glazkov <dglazkov@chromium.org> 17779 17780 Reviewed by Darin Fisher. 17781 17782 [Chromium] Upstream JavaScriptCore.gypi, the project file for Chromium build. 17783 https://bugs.webkit.org/show_bug.cgi?id=27135 17784 17785 * JavaScriptCore.gypi: Added. 17786 177872009-07-09 Joe Mason <joe.mason@torchmobile.com> 17788 17789 Reviewed by George Staikos. 17790 17791 Authors: Yong Li <yong.li@torchmobile.com>, Joe Mason <joe.mason@torchmobile.com> 17792 17793 https://bugs.webkit.org/show_bug.cgi?id=27031 17794 Add an override for deleteOwnedPtr(HDC) on Windows 17795 17796 * wtf/OwnPtrCommon.h: 17797 * wtf/OwnPtrWin.cpp: 17798 (WTF::deleteOwnedPtr): 17799 178002009-07-09 Laszlo Gombos <laszlo.1.gombos@nokia.com> 17801 17802 Reviewed by Darin Adler. 17803 17804 Guard singal.h dependency with HAVE(SIGNAL_H) to enable building jsc 17805 on SYMBIAN. 17806 17807 https://bugs.webkit.org/show_bug.cgi?id=27026 17808 17809 Based on Norbert Leser's work. 17810 17811 * jsc.cpp: 17812 (printUsageStatement): 17813 (parseArguments): 17814 * wtf/Platform.h: 17815 178162009-07-07 Gavin Barraclough <barraclough@apple.com> 17817 17818 Reviewed by Sam Weinig. 17819 17820 Stop loading constants into the register file. 17821 17822 Instead, use high register values (highest bit bar the sign bit set) to indicate 17823 constants in the instruction stream, and when we encounter such a value load it 17824 directly from the CodeBlock. 17825 17826 Since constants are no longer copied into the register file, this patch renders 17827 the 'unexpected constant' mechanism redundant, and removes it. 17828 17829 2% improvement, thanks to Sam Weinig. 17830 17831 * bytecode/CodeBlock.cpp: 17832 (JSC::CodeBlock::dump): 17833 (JSC::CodeBlock::CodeBlock): 17834 (JSC::CodeBlock::mark): 17835 (JSC::CodeBlock::shrinkToFit): 17836 * bytecode/CodeBlock.h: 17837 (JSC::CodeBlock::isTemporaryRegisterIndex): 17838 (JSC::CodeBlock::constantRegister): 17839 (JSC::CodeBlock::isConstantRegisterIndex): 17840 (JSC::CodeBlock::getConstant): 17841 (JSC::ExecState::r): 17842 * bytecode/Opcode.h: 17843 * bytecompiler/BytecodeGenerator.cpp: 17844 (JSC::BytecodeGenerator::preserveLastVar): 17845 (JSC::BytecodeGenerator::BytecodeGenerator): 17846 (JSC::BytecodeGenerator::addConstantValue): 17847 (JSC::BytecodeGenerator::emitEqualityOp): 17848 (JSC::BytecodeGenerator::emitLoad): 17849 (JSC::BytecodeGenerator::emitResolveBase): 17850 (JSC::BytecodeGenerator::emitResolveWithBase): 17851 (JSC::BytecodeGenerator::emitNewError): 17852 * bytecompiler/BytecodeGenerator.h: 17853 (JSC::BytecodeGenerator::emitNode): 17854 * interpreter/CallFrame.h: 17855 (JSC::ExecState::noCaller): 17856 (JSC::ExecState::hasHostCallFrameFlag): 17857 (JSC::ExecState::addHostCallFrameFlag): 17858 (JSC::ExecState::removeHostCallFrameFlag): 17859 * interpreter/Interpreter.cpp: 17860 (JSC::Interpreter::resolve): 17861 (JSC::Interpreter::resolveSkip): 17862 (JSC::Interpreter::resolveGlobal): 17863 (JSC::Interpreter::resolveBase): 17864 (JSC::Interpreter::resolveBaseAndProperty): 17865 (JSC::Interpreter::resolveBaseAndFunc): 17866 (JSC::Interpreter::dumpRegisters): 17867 (JSC::Interpreter::throwException): 17868 (JSC::Interpreter::createExceptionScope): 17869 (JSC::Interpreter::privateExecute): 17870 (JSC::Interpreter::retrieveArguments): 17871 * jit/JIT.cpp: 17872 (JSC::JIT::privateCompileMainPass): 17873 * jit/JITInlineMethods.h: 17874 (JSC::JIT::emitLoadDouble): 17875 (JSC::JIT::emitLoadInt32ToDouble): 17876 * jit/JITOpcodes.cpp: 17877 (JSC::JIT::emit_op_new_error): 17878 (JSC::JIT::emit_op_enter): 17879 (JSC::JIT::emit_op_enter_with_activation): 17880 * parser/Nodes.cpp: 17881 (JSC::DeleteResolveNode::emitBytecode): 17882 (JSC::DeleteValueNode::emitBytecode): 17883 (JSC::PrefixResolveNode::emitBytecode): 17884 * runtime/JSActivation.cpp: 17885 (JSC::JSActivation::JSActivation): 17886 * wtf/Platform.h: 17887 178882009-07-07 Mark Rowe <mrowe@apple.com> 17889 17890 Reviewed by Darin Adler. 17891 17892 Fix <https://bugs.webkit.org/show_bug.cgi?id=27025> / <rdar://problem/7033448>. 17893 Bug 27025: Crashes and regression test failures related to regexps in 64-bit 17894 17895 For x86_64 RegexGenerator uses rbx, a callee-save register, as a scratch register but 17896 neglects to save and restore it. The change in handling of the output vector in r45545 17897 altered code generation so that the RegExp::match was now storing important data in rbx, 17898 which caused crashes and bogus results when it was clobbered. 17899 17900 * yarr/RegexJIT.cpp: 17901 (JSC::Yarr::RegexGenerator::generateEnter): Save rbx. 17902 (JSC::Yarr::RegexGenerator::generateReturn): Restore rbx. 17903 179042009-07-06 Ada Chan <adachan@apple.com> 17905 17906 Reviewed by Darin Adler and Mark Rowe. 17907 17908 Decommitted spans are added to the list of normal spans rather than 17909 the returned spans in TCMalloc_PageHeap::Delete(). 17910 https://bugs.webkit.org/show_bug.cgi?id=26998 17911 17912 In TCMalloc_PageHeap::Delete(), the deleted span can be decommitted in 17913 the process of merging with neighboring spans that are also decommitted. 17914 The merged span needs to be placed in the list of returned spans (spans 17915 whose memory has been returned to the system). Right now it's always added 17916 to the list of the normal spans which can theoretically cause thrashing. 17917 17918 * wtf/FastMalloc.cpp: 17919 (WTF::TCMalloc_PageHeap::Delete): 17920 179212009-07-05 Lars Knoll <lars.knoll@nokia.com> 17922 17923 Reviewed by Maciej Stachowiak. 17924 17925 https://bugs.webkit.org/show_bug.cgi?id=26843 17926 17927 Fix run-time crashes in JavaScriptCore with the Metrowerks compiler on Symbian. 17928 17929 The Metrowerks compiler on the Symbian platform moves the globally 17930 defined Hashtables into read-only memory, despite one of the members 17931 being mutable. This causes crashes at run-time due to write access to 17932 read-only memory. 17933 17934 Avoid the use of const with this compiler by introducing the 17935 JSC_CONST_HASHTABLE macro. 17936 17937 Based on idea by Norbert Leser. 17938 17939 * runtime/Lookup.h: Define JSC_CONST_HASHTABLE as const for !WINSCW. 17940 * create_hash_table: Use JSC_CONST_HASHTABLE for hashtables. 17941 * runtime/JSGlobalData.cpp: Import various global hashtables via the macro. 17942 179432009-07-04 Dan Bernstein <mitz@apple.com> 17944 17945 - debug build fix 17946 17947 * runtime/RegExpConstructor.cpp: 17948 (JSC::RegExpConstructor::getLastParen): 17949 179502009-07-03 Yong Li <yong.li@torchmobile.com> 17951 17952 Reviewed by Maciej Stachowiak (and revised slightly) 17953 17954 RegExp::match to be optimized 17955 https://bugs.webkit.org/show_bug.cgi?id=26957 17956 17957 Allow regexp matching to use Vectors with inline capacity instead of 17958 allocating a new ovector buffer every time. 17959 17960 ~5% speedup on SunSpider string-unpack-code test, 0.3% on SunSpider overall. 17961 17962 * runtime/RegExp.cpp: 17963 (JSC::RegExp::match): 17964 * runtime/RegExp.h: 17965 * runtime/RegExpConstructor.cpp: 17966 (JSC::RegExpConstructorPrivate::RegExpConstructorPrivate): 17967 (JSC::RegExpConstructorPrivate::lastOvector): 17968 (JSC::RegExpConstructorPrivate::tempOvector): 17969 (JSC::RegExpConstructorPrivate::changeLastOvector): 17970 (JSC::RegExpConstructor::performMatch): 17971 (JSC::RegExpMatchesArray::RegExpMatchesArray): 17972 (JSC::RegExpMatchesArray::fillArrayInstance): 17973 (JSC::RegExpConstructor::getBackref): 17974 (JSC::RegExpConstructor::getLastParen): 17975 (JSC::RegExpConstructor::getLeftContext): 17976 (JSC::RegExpConstructor::getRightContext): 17977 * runtime/StringPrototype.cpp: 17978 (JSC::stringProtoFuncSplit): 17979 179802009-06-30 Kwang Yul Seo <skyul@company100.net> 17981 17982 Reviewed by Eric Seidel. 17983 17984 Override operator new/delete with const std::nothrow_t& as the second 17985 argument. 17986 https://bugs.webkit.org/show_bug.cgi?id=26792 17987 17988 On Windows CE, operator new/delete, new[]/delete[] with const 17989 std::nothrow_t& must be overrided because some standard template 17990 libraries use these operators. 17991 17992 The problem occurs when memory allocated by new(size_t s, const 17993 std::nothrow_t&) is freed by delete(void* p). This causes the umatched 17994 malloc/free problem. 17995 17996 The patch overrides all new, delete, new[] and delete[] to use 17997 fastMaloc and fastFree consistently. 17998 17999 * wtf/FastMalloc.h: 18000 (throw): 18001 180022009-06-30 Gabor Loki <loki@inf.u-szeged.hu> 18003 18004 Reviewed by Sam Weinig. 18005 18006 <https://bugs.webkit.org/show_bug.cgi?id=24986> 18007 18008 Remove unnecessary references to AssemblerBuffer. 18009 18010 * interpreter/Interpreter.cpp: 18011 * interpreter/Interpreter.h: 18012 180132009-06-29 David Levin <levin@chromium.org> 18014 18015 Reviewed by Oliver Hunt. 18016 18017 Still seeing occasional leaks from UString::sharedBuffer code 18018 https://bugs.webkit.org/show_bug.cgi?id=26420 18019 18020 The problem is that the pointer to the memory allocation isn't visible 18021 by "leaks" due to the lower bits being used as flags. The fix is to 18022 make the pointer visible in memory (in debug only). The downside of 18023 this fix that the memory allocated by sharedBuffer will still look like 18024 a leak in non-debug builds when any flags are set. 18025 18026 * wtf/PtrAndFlags.h: 18027 (WTF::PtrAndFlags::set): 18028 180292009-06-29 Sam Weinig <sam@webkit.org> 18030 18031 Reviewed by Mark Rowe. 18032 18033 Remove more unused scons support. 18034 18035 * SConstruct: Removed. 18036 180372009-06-29 Oliver Hunt <oliver@apple.com> 18038 18039 Reviewed by Gavin Barraclough. 18040 18041 <rdar://problem/7016214> JSON.parse fails to parse valid JSON with most Unicode characters 18042 <https://bugs.webkit.org/show_bug.cgi?id=26802> 18043 18044 In the original JSON.parse patch unicode was handled correctly, however in some last 18045 minute "clean up" I oversimplified isSafeStringCharacter. This patch corrects this bug. 18046 18047 * runtime/LiteralParser.cpp: 18048 (JSC::isSafeStringCharacter): 18049 (JSC::LiteralParser::Lexer::lexString): 18050 180512009-06-26 Oliver Hunt <oliver@apple.com> 18052 18053 Reviewed by Dan Bernstein. 18054 18055 <rdar://problem/7009684> REGRESSION(r45039): Crashes inside JSEvent::put on PowerPC (26746) 18056 <https://bugs.webkit.org/show_bug.cgi?id=26746> 18057 18058 Fix for r45039 incorrectly uncached a get_by_id by converting it to put_by_id. Clearly this 18059 is less than correct. This patch corrects that error. 18060 18061 * interpreter/Interpreter.cpp: 18062 (JSC::Interpreter::tryCacheGetByID): 18063 180642009-06-26 Eric Seidel <eric@webkit.org> 18065 18066 No review, only rolling out r45259. 18067 18068 Roll out r45259 after crash appeared on the bots: 18069 plugins/undefined-property-crash.html 18070 ASSERTION FAILED: s <= HeapConstants<heapType>::cellSize 18071 (leopard-intel-debug-tests/build/JavaScriptCore/runtime/Collector.cpp:278 18072 void* JSC::Heap::heapAllocate(size_t) [with JSC::HeapType heapType = PrimaryHeap]) 18073 18074 * runtime/DateInstance.cpp: 18075 * runtime/Identifier.cpp: 18076 * runtime/Lookup.h: 18077 * runtime/RegExpConstructor.cpp: 18078 * runtime/RegExpObject.h: 18079 * runtime/ScopeChain.h: 18080 * runtime/UString.h: 18081 180822009-06-26 Jedrzej Nowacki <jedrzej.nowacki@nokia.com> 18083 18084 Reviewed by Simon Hausmann. 18085 18086 Add support for QDataStream operators to Vector. 18087 18088 * wtf/Vector.h: 18089 (WTF::operator<<): 18090 (WTF::operator>>): 18091 180922009-06-24 Sam Weinig <sam@webkit.org> 18093 18094 Reviewed by Gavin Barraclough. 18095 18096 Make the opcode sampler work once again. 18097 18098 * jit/JIT.h: 18099 (JSC::JIT::compileGetByIdProto): 18100 (JSC::JIT::compileGetByIdSelfList): 18101 (JSC::JIT::compileGetByIdProtoList): 18102 (JSC::JIT::compileGetByIdChainList): 18103 (JSC::JIT::compileGetByIdChain): 18104 (JSC::JIT::compilePutByIdTransition): 18105 (JSC::JIT::compileCTIMachineTrampolines): 18106 (JSC::JIT::compilePatchGetArrayLength): 18107 * jit/JITStubCall.h: 18108 (JSC::JITStubCall::call): 18109 181102009-06-24 Zoltan Horvath <hzoltan@inf.u-szeged.hu> 18111 18112 Reviewed by Maciej Stachowiak. 18113 18114 Extend FastAllocBase.h with 'using WTF::FastAllocBase' to avoid 18115 unnecessary WTF:: usings. 18116 Remove existing unnecessary WTF:: usings. 18117 18118 * interpreter/Interpreter.h: 18119 * profiler/CallIdentifier.h: 18120 * runtime/ScopeChain.h: 18121 * wtf/FastAllocBase.h: 18122 181232009-06-24 David Levin <levin@chromium.org> 18124 18125 Fix all builds. 18126 18127 * bytecode/CodeBlock.h: 18128 * bytecompiler/BytecodeGenerator.h: 18129 * interpreter/Register.h: 18130 181312009-06-24 Zoltan Horvath <hzoltan@inf.u-szeged.hu> 18132 18133 Reviewed by Maciej Stachowiak. 18134 18135 https://bugs.webkit.org/show_bug.cgi?id=26677 18136 18137 Inherits CodeBlock class from FastAllocBase because it 18138 has been instantiated by 'new' in JavaScriptCore/bytecode/CodeBlock.h:217. 18139 18140 * bytecode/CodeBlock.h: 18141 181422009-06-24 Zoltan Horvath <hzoltan@inf.u-szeged.hu> 18143 18144 Reviewed by Maciej Stachowiak. 18145 18146 https://bugs.webkit.org/show_bug.cgi?id=26676 18147 18148 Inherits BytecodeGenerator class from FastAllocBase because it has been 18149 instantiated by 'new' in JavaScriptCore/parser/Nodes.cpp:1892. 18150 18151 * bytecompiler/BytecodeGenerator.h: 18152 181532009-06-24 Zoltan Horvath <hzoltan@inf.u-szeged.hu> 18154 18155 Reviewed by Maciej Stachowiak. 18156 18157 https://bugs.webkit.org/show_bug.cgi?id=26675 18158 18159 Inherits Register class from FastAllocBase because it has been 18160 instantiated by 'new' in JavaScriptCore/runtime/JSVariableObject.h:149. 18161 18162 * interpreter/Register.h: 18163 181642009-06-24 Zoltan Horvath <hzoltan@inf.u-szeged.hu> 18165 18166 Reviewed by Darin Adler. 18167 18168 https://bugs.webkit.org/show_bug.cgi?id=26674 18169 18170 Inherits HashMap class from FastAllocBase because it has been 18171 instantiated by 'new' in JavaScriptCore/runtime/Structure.cpp:458. 18172 18173 * wtf/HashMap.h: 18174 181752009-06-24 Oliver Hunt <oliver@apple.com> 18176 18177 Reviewed by Darin Adler. 18178 18179 <rdar://problem/6940519> REGRESSION (Safari 4 Public Beta - TOT): google.com/adplanner shows blank page instead of site details in "basic research' 18180 18181 The problem was caused by the page returned with a function using a 18182 var declaration list containing around ~3000 variables. The solution 18183 to this is to flatten the comma expression representation and make 18184 codegen comma expressions and initializer lists iterative rather than 18185 recursive. 18186 18187 * parser/Grammar.y: 18188 * parser/NodeConstructors.h: 18189 (JSC::CommaNode::CommaNode): 18190 * parser/Nodes.cpp: 18191 (JSC::CommaNode::emitBytecode): 18192 * parser/Nodes.h: 18193 (JSC::ExpressionNode::isCommaNode): 18194 (JSC::CommaNode::isCommaNode): 18195 (JSC::CommaNode::append): 18196 181972009-06-24 Zoltan Horvath <hzoltan@inf.u-szeged.hu> 18198 18199 Reviewed by Maciej Stachowiak. 18200 18201 https://bugs.webkit.org/show_bug.cgi?id=26645 18202 18203 Inherits ScopeChainNode class from FastAllocBase because it has been 18204 instantiated by 'new' in JavaScriptCore/runtime/ScopeChain.h:95. 18205 18206 * wtf/RefPtr.h: 18207 182082009-06-24 Zoltan Horvath <hzoltan@inf.u-szeged.hu> 18209 18210 Reviewed by Darin Adler. 18211 18212 https://bugs.webkit.org/show_bug.cgi?id=26648 18213 18214 Inherits Deque class from FastAllocBase because it has been 18215 instantiated by 'new' with DEFINE_STATIC_LOCAL macro in 18216 JavaScriptCore/wtf/MainThread.cpp:62. 18217 18218 * wtf/Deque.h: 18219 182202009-06-24 Zoltan Horvath <hzoltan@inf.u-szeged.hu> 18221 18222 Reviewed by Darin Adler. 18223 18224 https://bugs.webkit.org/show_bug.cgi?id=26644 18225 18226 Inherits RefPtr class from FastAllocBase because it has been 18227 instantiated by 'new' in JavaScriptCore/runtime/StructureChain.cpp:41. 18228 18229 * wtf/RefPtr.h: 18230 182312009-06-24 Zoltan Horvath <hzoltan@inf.u-szeged.hu> 18232 18233 Reviewed by Darin Adler. 18234 18235 Inherits HashSet class from FastAllocBase, because it has been 18236 instantiated by 'new' in JavaScriptCore/runtime/Collector.h:116. 18237 18238 * wtf/HashSet.h: 18239 182402009-06-24 Zoltan Horvath <hzoltan@inf.u-szeged.hu> 18241 18242 Reviewed by Darin Adler. 18243 18244 Inherits Vector class from FastAllocBase because it has been 18245 instantiated by 'new' in JavaScriptCore/runtime/Structure.cpp:633. 18246 18247 * wtf/Vector.h: 18248 182492009-06-24 Norbert Leser <norbert.leser@nokia.com> 18250 18251 Reviewed by Maciej Stachoviak. 18252 18253 The BytecodeGenerator objects were instantiated on stack, which takes up ~38kB per instance 18254 (each instance includes copy of JSC::CodeBlock with large SymbolTable, etc.). 18255 Specifically, since there is nested invocation (e.g., GlobalCode --> FunctionCode), 18256 the stack overflows immediately on Symbian hardware (max. 80 kB). 18257 Proposed change allocates generator objects on heap. 18258 Performance impact (if any) should be negligible and change is proposed as general fix, 18259 rather than ifdef'd for SYMBIAN. 18260 18261 * parser/Nodes.cpp: 18262 (JSC::ProgramNode::generateBytecode): 18263 (JSC::EvalNode::generateBytecode): 18264 (JSC::EvalNode::bytecodeForExceptionInfoReparse): 18265 (JSC::FunctionBodyNode::generateBytecode): 18266 (JSC::FunctionBodyNode::bytecodeForExceptionInfoReparse): 18267 182682009-06-23 Oliver Hunt <oliver@apple.com> 18269 18270 Reviewed by Gavin Barraclough. 18271 18272 <rdar://problem/6992806> REGRESSION: Enumeration can skip new properties in cases of prototypes that have more than 64 (26593) 18273 <https://bugs.webkit.org/show_bug.cgi?id=26593> 18274 18275 Do not attempt to cache structure chains if they contain a dictionary at any level. 18276 18277 * interpreter/Interpreter.cpp: 18278 (JSC::Interpreter::tryCachePutByID): 18279 (JSC::Interpreter::tryCacheGetByID): 18280 * jit/JITStubs.cpp: 18281 (JSC::JITThunks::tryCachePutByID): 18282 * runtime/Structure.cpp: 18283 (JSC::Structure::getEnumerablePropertyNames): 18284 (JSC::Structure::addPropertyTransition): 18285 * runtime/StructureChain.cpp: 18286 (JSC::StructureChain::isCacheable): 18287 * runtime/StructureChain.h: 18288 182892009-06-23 Yong Li <yong.li@torchmobile.com> 18290 18291 Reviewed by George Staikos. 18292 18293 https://bugs.webkit.org/show_bug.cgi?id=26654 18294 Add the proper export define for the JavaScriptCore API when building for WINCE. 18295 18296 * API/JSBase.h: 18297 182982009-06-23 Joe Mason <joe.mason@torchmobile.com> 18299 18300 Reviewed by Adam Treat. 18301 18302 Authors: Yong Li <yong.li@torchmobile.com>, Joe Mason <joe.mason@torchmobile.com> 18303 18304 https://bugs.webkit.org/show_bug.cgi?id=26611 18305 Implement currentThreadStackBase on WINCE by adding a global, 18306 g_stackBase, which must be set to the address of a local variable 18307 by the caller before calling any WebKit function that invokes JSC. 18308 18309 * runtime/Collector.cpp: 18310 (JSC::isPageWritable): 18311 (JSC::getStackBase): 18312 Starts at the top of the stack and returns the entire range of 18313 consecutive writable pages as an estimate of the actual stack. 18314 This will be much bigger than the actual stack range, so some 18315 dead objects can't be collected, but it guarantees live objects 18316 aren't collected prematurely. 18317 18318 (JSC::currentThreadStackBase): 18319 On WinCE, returns g_stackBase if set or call getStackBase as a 18320 fallback if not. 18321 183222009-06-23 Oliver Hunt <oliver@apple.com> 18323 18324 Reviewed by Alexey Proskuryakov. 18325 18326 Fix stupid performance problem in the LiteralParser 18327 18328 The LiteralParser was making a new UString in order to use 18329 toDouble, however UString's toDouble allows a much wider range 18330 of numberic strings than the LiteralParser accepts, and requires 18331 an additional heap allocation or two for the construciton of the 18332 UString. To rectify this we just call WTF::dtoa directly using 18333 a stack allocated buffer to hold the validated numeric literal. 18334 18335 * runtime/LiteralParser.cpp: 18336 (JSC::LiteralParser::Lexer::lexNumber): 18337 (JSC::LiteralParser::parse): 18338 * runtime/LiteralParser.h: 18339 183402009-06-22 Oliver Hunt <oliver@apple.com> 18341 18342 Reviewed by Alexey Proskuryakov. 18343 18344 Bug 26640: JSON.stringify needs to special case Boolean objects 18345 <https://bugs.webkit.org/show_bug.cgi?id=26640> 18346 18347 Add special case handling of the Boolean object so we match current 18348 ES5 errata. 18349 18350 * runtime/JSONObject.cpp: 18351 (JSC::unwrapBoxedPrimitive): renamed from unwrapNumberOrString 18352 (JSC::gap): 18353 (JSC::Stringifier::appendStringifiedValue): 18354 183552009-06-22 Oliver Hunt <oliver@apple.com> 18356 18357 Reviewed by Darin Adler. 18358 18359 Bug 26591: Support revivers in JSON.parse 18360 <https://bugs.webkit.org/show_bug.cgi?id=26591> 18361 18362 Add reviver support to JSON.parse. This completes the JSON object. 18363 18364 * runtime/JSONObject.cpp: 18365 (JSC::Walker::Walker): 18366 (JSC::Walker::callReviver): 18367 (JSC::Walker::walk): 18368 (JSC::JSONProtoFuncParse): 18369 183702009-06-21 Oliver Hunt <oliver@apple.com> 18371 18372 Reviewed by Darin Adler. 18373 18374 Bug 26592: Support standard toJSON functions 18375 <https://bugs.webkit.org/show_bug.cgi?id=26592> 18376 18377 Add support for the standard Date.toJSON function. 18378 18379 * runtime/DatePrototype.cpp: 18380 (JSC::dateProtoFuncToJSON): 18381 183822009-06-21 Oliver Hunt <oliver@apple.com> 18383 18384 Reviewed by Sam Weinig. 18385 18386 Bug 26594: JSC needs to support Date.toISOString 18387 <https://bugs.webkit.org/show_bug.cgi?id=26594> 18388 18389 Add support for Date.toISOString. 18390 18391 * runtime/DatePrototype.cpp: 18392 (JSC::dateProtoFuncToISOString): 18393 183942009-06-21 Oliver Hunt <oliver@apple.com> 18395 18396 Remove dead code. 18397 18398 * runtime/LiteralParser.cpp: 18399 (JSC::LiteralParser::parse): 18400 184012009-06-21 Oliver Hunt <oliver@apple.com> 18402 18403 Reviewed by Darin Adler and Cameron Zwarich. 18404 18405 Bug 26587: Support JSON.parse 18406 <https://bugs.webkit.org/show_bug.cgi?id=26587> 18407 18408 Extend the LiteralParser to support the full strict JSON 18409 grammar, fix a few places where the grammar was incorrectly 18410 lenient. Doesn't yet support the JSON.parse reviver function 18411 but that does not block the JSON.parse functionality itself. 18412 18413 * interpreter/Interpreter.cpp: 18414 (JSC::Interpreter::callEval): 18415 * runtime/JSGlobalObjectFunctions.cpp: 18416 (JSC::globalFuncEval): 18417 * runtime/JSONObject.cpp: 18418 (JSC::JSONProtoFuncParse): 18419 * runtime/LiteralParser.cpp: 18420 (JSC::LiteralParser::Lexer::lex): 18421 (JSC::isSafeStringCharacter): 18422 (JSC::LiteralParser::Lexer::lexString): 18423 (JSC::LiteralParser::parse): 18424 * runtime/LiteralParser.h: 18425 (JSC::LiteralParser::LiteralParser): 18426 (JSC::LiteralParser::tryJSONParse): 18427 (JSC::LiteralParser::): 18428 (JSC::LiteralParser::Lexer::Lexer): 18429 184302009-06-21 David Levin <levin@chromium.org> 18431 18432 Reviewed by NOBODY (speculative build fix for windows). 18433 18434 Simply removed some whitespace form this file to make windows build wtf and 18435 hopefully copy the new MessageQueque.h so that WebCore picks it up. 18436 18437 * wtf/Assertions.cpp: 18438 184392009-06-21 Drew Wilson <atwilson@google.com> 18440 18441 Reviewed by David Levin. 18442 18443 <https://bugs.webkit.org/show_bug.cgi?id=25043> 18444 Added support for multi-threaded MessagePorts. 18445 18446 * wtf/MessageQueue.h: 18447 (WTF::::appendAndCheckEmpty): 18448 Added API to test whether the queue was empty before adding an element. 18449 184502009-06-20 David D. Kilzer <ddkilzer@webkit.org> 18451 18452 Fix namespace comment in SegmentedVector.h 18453 18454 * wtf/SegmentedVector.h: Updated namespace comment to reflect 18455 new namespace after r44897. 18456 184572009-06-20 Zoltan Herczeg <zherczeg@inf.u-szeged.hu> 18458 18459 Bug 24986: ARM JIT port 18460 <https://bugs.webkit.org/show_bug.cgi?id=24986> 18461 18462 Reviewed by Oliver Hunt. 18463 18464 An Iterator added for SegmentedVector. Currently 18465 only the pre ++ operator is supported. 18466 18467 * wtf/SegmentedVector.h: 18468 (WTF::SegmentedVectorIterator::~SegmentedVectorIterator): 18469 (WTF::SegmentedVectorIterator::operator*): 18470 (WTF::SegmentedVectorIterator::operator->): 18471 (WTF::SegmentedVectorIterator::operator++): 18472 (WTF::SegmentedVectorIterator::operator==): 18473 (WTF::SegmentedVectorIterator::operator!=): 18474 (WTF::SegmentedVectorIterator::operator=): 18475 (WTF::SegmentedVectorIterator::SegmentedVectorIterator): 18476 (WTF::SegmentedVector::alloc): 18477 (WTF::SegmentedVector::begin): 18478 (WTF::SegmentedVector::end): 18479 184802009-06-20 Zoltan Herczeg <zherczeg@inf.u-szeged.hu> 18481 18482 Bug 24986: ARM JIT port 18483 <https://bugs.webkit.org/show_bug.cgi?id=24986> 18484 18485 Reviewed by Oliver Hunt. 18486 18487 Move SegmentedVector to /wtf subdirectory 18488 and change "namespace JSC" to "namespace WTF" 18489 18490 Additional build file updates by David Kilzer. 18491 18492 * GNUmakefile.am: Updated path to SegmentedVector.h. 18493 * JavaScriptCore.order: Updated SegmentedVector namespace from 18494 JSC to WTF in mangled C++ method name. 18495 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: 18496 Removed reference to bytecompiler\SegmentedVector.h. 18497 * JavaScriptCore.vcproj/WTF/WTF.vcproj: Added reference to 18498 wtf\SegmentedVector.h. 18499 * JavaScriptCore.xcodeproj/project.pbxproj: Moved 18500 SegmentedVector.h definition from bytecompiler subdirectory to 18501 wtf subdirectory. 18502 * bytecompiler/BytecodeGenerator.h: Updated #include path to 18503 SegmentedVector.h and prepended WTF:: namespace to its use. 18504 * parser/Lexer.h: Ditto. 18505 * wtf/SegmentedVector.h: Renamed from JavaScriptCore/bytecompiler/SegmentedVector.h. 18506 (WTF::SegmentedVector::SegmentedVector): 18507 (WTF::SegmentedVector::~SegmentedVector): 18508 (WTF::SegmentedVector::size): 18509 (WTF::SegmentedVector::at): 18510 (WTF::SegmentedVector::operator[]): 18511 (WTF::SegmentedVector::last): 18512 (WTF::SegmentedVector::append): 18513 (WTF::SegmentedVector::removeLast): 18514 (WTF::SegmentedVector::grow): 18515 (WTF::SegmentedVector::clear): 18516 (WTF::SegmentedVector::deleteAllSegments): 18517 (WTF::SegmentedVector::segmentExistsFor): 18518 (WTF::SegmentedVector::segmentFor): 18519 (WTF::SegmentedVector::subscriptFor): 18520 (WTF::SegmentedVector::ensureSegmentsFor): 18521 (WTF::SegmentedVector::ensureSegment): 18522 185232009-06-19 Gavin Barraclough <barraclough@apple.com> 18524 18525 Reviewed by NOBODY (build fix take 2 - rename FIELD_OFFSET to something that doesn't conflict with winnt.h). 18526 18527 * jit/JIT.cpp: 18528 (JSC::JIT::privateCompile): 18529 (JSC::JIT::privateCompileCTIMachineTrampolines): 18530 (JSC::JIT::emitGetVariableObjectRegister): 18531 (JSC::JIT::emitPutVariableObjectRegister): 18532 * jit/JIT.h: 18533 * jit/JITArithmetic.cpp: 18534 (JSC::JIT::emit_op_rshift): 18535 (JSC::JIT::emitSlow_op_jnless): 18536 (JSC::JIT::emitSlow_op_jnlesseq): 18537 (JSC::JIT::compileBinaryArithOp): 18538 * jit/JITCall.cpp: 18539 (JSC::JIT::compileOpCallInitializeCallFrame): 18540 (JSC::JIT::compileOpCall): 18541 * jit/JITInlineMethods.h: 18542 (JSC::JIT::restoreArgumentReference): 18543 (JSC::JIT::checkStructure): 18544 * jit/JITOpcodes.cpp: 18545 (JSC::JIT::emit_op_instanceof): 18546 (JSC::JIT::emit_op_get_scoped_var): 18547 (JSC::JIT::emit_op_put_scoped_var): 18548 (JSC::JIT::emit_op_construct_verify): 18549 (JSC::JIT::emit_op_resolve_global): 18550 (JSC::JIT::emit_op_jeq_null): 18551 (JSC::JIT::emit_op_jneq_null): 18552 (JSC::JIT::emit_op_to_jsnumber): 18553 (JSC::JIT::emit_op_catch): 18554 (JSC::JIT::emit_op_eq_null): 18555 (JSC::JIT::emit_op_neq_null): 18556 (JSC::JIT::emit_op_convert_this): 18557 (JSC::JIT::emit_op_profile_will_call): 18558 (JSC::JIT::emit_op_profile_did_call): 18559 (JSC::JIT::emitSlow_op_get_by_val): 18560 * jit/JITPropertyAccess.cpp: 18561 (JSC::JIT::emit_op_get_by_val): 18562 (JSC::JIT::emit_op_put_by_val): 18563 (JSC::JIT::emit_op_method_check): 18564 (JSC::JIT::compileGetByIdHotPath): 18565 (JSC::JIT::emit_op_put_by_id): 18566 (JSC::JIT::compilePutDirectOffset): 18567 (JSC::JIT::compileGetDirectOffset): 18568 (JSC::JIT::privateCompilePutByIdTransition): 18569 (JSC::JIT::privateCompilePatchGetArrayLength): 18570 * jit/JITStubs.cpp: 18571 (JSC::JITThunks::JITThunks): 18572 185732009-06-19 Gavin Barraclough <barraclough@apple.com> 18574 18575 Reviewed by NOBODY (Windows build fix). 18576 18577 * jit/JIT.h: 18578 * jit/JITInlineMethods.h: 18579 185802009-06-19 Gabor Loki <loki@inf.u-szeged.hu> 18581 18582 Reviewed by Gavin Barraclough. 18583 18584 Reorganize ARM architecture specific macros. 18585 Use PLATFORM_ARM_ARCH(7) instead of PLATFORM(ARM_V7). 18586 18587 Bug 24986: ARM JIT port 18588 <https://bugs.webkit.org/show_bug.cgi?id=24986> 18589 18590 * assembler/ARMv7Assembler.h: 18591 * assembler/AbstractMacroAssembler.h: 18592 (JSC::AbstractMacroAssembler::Imm32::Imm32): 18593 * assembler/MacroAssembler.h: 18594 * assembler/MacroAssemblerCodeRef.h: 18595 (JSC::MacroAssemblerCodePtr::MacroAssemblerCodePtr): 18596 * jit/ExecutableAllocator.h: 18597 (JSC::ExecutableAllocator::cacheFlush): 18598 * jit/JIT.h: 18599 * jit/JITInlineMethods.h: 18600 (JSC::JIT::restoreArgumentReferenceForTrampoline): 18601 * jit/JITStubs.cpp: 18602 * jit/JITStubs.h: 18603 * wtf/Platform.h: 18604 * yarr/RegexJIT.cpp: 18605 (JSC::Yarr::RegexGenerator::generateEnter): 18606 (JSC::Yarr::RegexGenerator::generateReturn): 18607 186082009-06-19 Gavin Barraclough <barraclough@apple.com> 18609 18610 Reviewed by Oliver Hunt. 18611 18612 Fix armv7 JIT build issues. 18613 18614 Unfortunate the arm compiler does not like the use of offsetof on JITStackFrame (since it now contains non POD types), 18615 and the FIELD_OFFSET macro does not appear constantish enough for it to be happy with its use in COMPILE_ASSERT macros. 18616 18617 * Replace offsetofs with FIELD_OFFSETs (safe on C++ objects). 18618 * Move COMPILE_ASSERTs defending layout of JITStackFrame structure on armv7 into JITThunks constructor. 18619 18620 * jit/JIT.cpp: 18621 * jit/JIT.h: 18622 * jit/JITInlineMethods.h: 18623 (JSC::JIT::restoreArgumentReference): 18624 * jit/JITOpcodes.cpp: 18625 (JSC::JIT::emit_op_catch): 18626 * jit/JITStubs.cpp: 18627 (JSC::JITThunks::JITThunks): 18628 186292009-06-19 Adam Treat <adam.treat@torchmobile.com> 18630 18631 Blind attempt at build fix. 18632 18633 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: 18634 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def: 18635 186362009-06-19 Zoltan Horvath <hzoltan@inf.u-szeged.hu> 18637 18638 Reviewed by Oliver Hunt. 18639 18640 Inherits CallIdentifier struct from FastAllocBase because it has been 18641 instantiated by 'new' in JavaScriptCore/profiler/CallIdentifier.h:86. 18642 18643 * wtf/HashCountedSet.h: 18644 186452009-06-19 Adam Treat <adam.treat@torchmobile.com> 18646 18647 Reviewed by Oliver Hunt. 18648 18649 https://bugs.webkit.org/show_bug.cgi?id=26540 18650 Modify the test shell to add a new function 'checkSyntax' that will 18651 only parse the source instead of executing it. In this way we can test 18652 pure parsing performance against some of the larger scripts in the wild. 18653 18654 * jsc.cpp: 18655 (GlobalObject::GlobalObject): 18656 (functionCheckSyntax): 18657 186582009-06-19 Zoltan Horvath <hzoltan@inf.u-szeged.hu> 18659 18660 Reviewed by Darin Adler. 18661 18662 Inherits HashCountedSet class from FastAllocBase because it has been 18663 instantiated by 'new' in JavaScriptCore/runtime/Collector.cpp:1095. 18664 18665 * wtf/HashCountedSet.h: 18666 186672009-06-19 Yong Li <yong.li@torchmobile.com> 18668 18669 Reviewed by George Staikos. 18670 18671 https://bugs.webkit.org/show_bug.cgi?id=26558 18672 Declare these symbols extern for WINCE as they are provided by libce. 18673 18674 * runtime/DateConstructor.cpp: 18675 * runtime/DatePrototype.cpp: 18676 (JSC::formatLocaleDate): 18677 186782009-06-19 Oliver Hunt <oliver@apple.com> 18679 18680 Reviewed by Maciej Stachowiak. 18681 18682 <rdar://problem/6988973> ScopeChain leak in interpreter builds 18683 18684 Move the Scopechain destruction code in JSFunction outside of the ENABLE(JIT) 18685 path. 18686 18687 * runtime/JSFunction.cpp: 18688 (JSC::JSFunction::~JSFunction): 18689 * wtf/Platform.h: 18690 186912009-06-19 Yong Li <yong.li@torchmobile.com> 18692 18693 Reviewed by George Staikos. 18694 18695 https://bugs.webkit.org/show_bug.cgi?id=26543 18696 Windows CE uses 'GetLastError' instead of 'errno.' 18697 18698 * interpreter/RegisterFile.h: 18699 (JSC::RegisterFile::RegisterFile): 18700 (JSC::RegisterFile::grow): 18701 187022009-06-19 David Levin <levin@chromium.org> 18703 18704 Reviewed by NOBODY (Windows build fix). 18705 18706 Add export for Windows corresponding to OSX export done in r44844. 18707 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: 18708 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def: 18709 187102009-06-18 Oliver Hunt <oliver@apple.com> 18711 18712 Reviewed by Gavin "Viceroy of Venezuela" Barraclough. 18713 18714 Bug 26532: Native functions do not correctly unlink from optimised callsites when they're collected 18715 <https://bugs.webkit.org/show_bug.cgi?id=26532> <rdar://problem/6625385> 18716 18717 We need to make sure that each native function instance correctly unlinks any references to it 18718 when it is collected. Allowing this to happen required a few changes: 18719 * Every native function needs a codeblock to track the link information 18720 * To have this codeblock, every function now also needs its own functionbodynode 18721 so we no longer get to have a single shared instance. 18722 * Identifying a host function is now done by looking for CodeBlock::codeType() == NativeCode 18723 18724 * JavaScriptCore.exp: 18725 * bytecode/CodeBlock.cpp: 18726 (JSC::CodeBlock::CodeBlock): 18727 Constructor for NativeCode CodeBlock 18728 (JSC::CodeBlock::derefStructures): 18729 (JSC::CodeBlock::refStructures): 18730 (JSC::CodeBlock::reparseForExceptionInfoIfNecessary): 18731 (JSC::CodeBlock::handlerForBytecodeOffset): 18732 (JSC::CodeBlock::lineNumberForBytecodeOffset): 18733 (JSC::CodeBlock::expressionRangeForBytecodeOffset): 18734 (JSC::CodeBlock::getByIdExceptionInfoForBytecodeOffset): 18735 (JSC::CodeBlock::functionRegisterForBytecodeOffset): 18736 (JSC::CodeBlock::hasGlobalResolveInstructionAtBytecodeOffset): 18737 (JSC::CodeBlock::hasGlobalResolveInfoAtBytecodeOffset): 18738 (JSC::CodeBlock::setJITCode): 18739 Add assertions to ensure we don't try and use NativeCode CodeBlocks as 18740 a normal codeblock. 18741 18742 * bytecode/CodeBlock.h: 18743 (JSC::): 18744 (JSC::CodeBlock::source): 18745 (JSC::CodeBlock::sourceOffset): 18746 (JSC::CodeBlock::evalCodeCache): 18747 (JSC::CodeBlock::createRareDataIfNecessary): 18748 More assertions. 18749 18750 * jit/JIT.cpp: 18751 (JSC::JIT::privateCompileCTIMachineTrampolines): 18752 (JSC::JIT::linkCall): 18753 Update logic to allow native function caching 18754 18755 * jit/JITStubs.cpp: 18756 * parser/Nodes.cpp: 18757 (JSC::FunctionBodyNode::createNativeThunk): 18758 (JSC::FunctionBodyNode::isHostFunction): 18759 * parser/Nodes.h: 18760 * runtime/JSFunction.cpp: 18761 (JSC::JSFunction::JSFunction): 18762 (JSC::JSFunction::~JSFunction): 18763 (JSC::JSFunction::mark): 18764 * runtime/JSGlobalData.cpp: 18765 (JSC::JSGlobalData::~JSGlobalData): 18766 * runtime/JSGlobalData.h: 18767 187682009-06-18 Gavin Barraclough <barraclough@apple.com> 18769 18770 Reviewed by NOBODY (Windows build fix). 18771 18772 * wtf/DateMath.cpp: 18773 (WTF::calculateUTCOffset): 18774 187752009-06-18 Gavin Barraclough <barraclough@apple.com> 18776 18777 Reviewed by Geoff Garen. 18778 18779 Timezone calculation incorrect in Venezuela. 18780 18781 https://bugs.webkit.org/show_bug.cgi?id=26531 18782 <rdar://problem/6646169> Time is incorrectly reported to JavaScript in both Safari 3 and Firefox 3 18783 18784 The problem is that we're calculating the timezone relative to 01/01/2000, 18785 but the VET timezone changed from -4 hours to -4:30 hours on 12/09/2007. 18786 According to the spec, section 15.9.1.9 states "the time since the beginning 18787 of the year", presumably meaning the *current* year. Change the calculation 18788 to be based on whatever the current year is, rather than a canned date. 18789 18790 No performance impact. 18791 18792 * wtf/DateMath.cpp: 18793 (WTF::calculateUTCOffset): 18794 187952009-06-18 Gavin Barraclough <barraclough@apple.com> 18796 18797 Rubber Stamped by Mark Rowe (originally reviewed by Sam Weinig). 18798 18799 (Reintroducing patch added in r44492, and reverted in r44796.) 18800 18801 Change the implementation of op_throw so the stub function always modifies its 18802 return address - if it doesn't find a 'catch' it will switch to a trampoline 18803 to force a return from JIT execution. This saves memory, by avoiding the need 18804 for a unique return for every op_throw. 18805 18806 * jit/JITOpcodes.cpp: 18807 (JSC::JIT::emit_op_throw): 18808 JITStubs::cti_op_throw now always changes its return address, 18809 remove return code generated after the stub call (this is now 18810 handled by ctiOpThrowNotCaught). 18811 * jit/JITStubs.cpp: 18812 (JSC::): 18813 Add ctiOpThrowNotCaught definitions. 18814 (JSC::JITStubs::DEFINE_STUB_FUNCTION): 18815 Change cti_op_throw to always change its return address. 18816 * jit/JITStubs.h: 18817 Add ctiOpThrowNotCaught declaration. 18818 188192009-06-18 Kevin McCullough <kmccullough@apple.com> 18820 18821 Reviewed by Oliver Hunt. 18822 18823 <rdar://problem/6940880> REGRESSION: Breakpoints don't break in 64-bit 18824 18825 - Exposed functions now needed by WebCore. 18826 18827 * JavaScriptCore.exp: 18828 188292009-06-17 Darin Adler <darin@apple.com> 18830 18831 Reviewed by Oliver Hunt. 18832 18833 Bug 26429: Make JSON.stringify non-recursive so it can handle objects 18834 of arbitrary complexity 18835 https://bugs.webkit.org/show_bug.cgi?id=26429 18836 18837 For marking I decided not to use gcProtect, because this is inside the engine 18838 so it's easy enough to just do marking. And that darned gcProtect does locking! 18839 Oliver tried to convince me to used MarkedArgumentBuffer, but the constructor 18840 for that class says "FIXME: Remove all clients of this API, then remove this API." 18841 18842 * runtime/Collector.cpp: 18843 (JSC::Heap::collect): Add a call to JSONObject::markStringifiers. 18844 18845 * runtime/CommonIdentifiers.cpp: 18846 (JSC::CommonIdentifiers::CommonIdentifiers): Added emptyIdentifier. 18847 * runtime/CommonIdentifiers.h: Ditto. 18848 18849 * runtime/JSGlobalData.cpp: 18850 (JSC::JSGlobalData::JSGlobalData): Initialize firstStringifierToMark to 0. 18851 * runtime/JSGlobalData.h: Added firstStringifierToMark. 18852 18853 * runtime/JSONObject.cpp: Cut down the includes to the needed ones only. 18854 (JSC::unwrapNumberOrString): Added. Helper for unwrapping number and string 18855 objects to get their number and string values. 18856 (JSC::ReplacerPropertyName::ReplacerPropertyName): Added. The class is used 18857 to wrap an identifier or integer so we don't have to do any work unless we 18858 actually call a replacer. 18859 (JSC::ReplacerPropertyName::value): Added. 18860 (JSC::gap): Added. Helper function for the Stringifier constructor. 18861 (JSC::PropertyNameForFunctionCall::PropertyNameForFunctionCall): Added. 18862 The class is used to wrap an identifier or integer so we don't have to 18863 allocate a number or string until we actually call toJSON or a replacer. 18864 (JSC::PropertyNameForFunctionCall::asJSValue): Added. 18865 (JSC::Stringifier::Stringifier): Updated and moved out of the class 18866 definition. Added code to hook this into a singly linked list for marking. 18867 (JSC::Stringifier::~Stringifier): Remove from the singly linked list. 18868 (JSC::Stringifier::mark): Mark all the objects in the holder stacks. 18869 (JSC::Stringifier::stringify): Updated. 18870 (JSC::Stringifier::appendQuotedString): Tweaked and streamlined a bit. 18871 (JSC::Stringifier::toJSON): Renamed from toJSONValue. 18872 (JSC::Stringifier::appendStringifiedValue): Renamed from stringify. 18873 Added code to use the m_holderStack to do non-recursive stringify of 18874 objects and arrays. This code also uses the timeout checker since in 18875 pathological cases it could be slow even without calling into the 18876 JavaScript virtual machine. 18877 (JSC::Stringifier::willIndent): Added. 18878 (JSC::Stringifier::indent): Added. 18879 (JSC::Stringifier::unindent): Added. 18880 (JSC::Stringifier::startNewLine): Added. 18881 (JSC::Stringifier::Holder::Holder): Added. 18882 (JSC::Stringifier::Holder::appendNextProperty): Added. This is the 18883 function that handles the format of arrays and objects. 18884 (JSC::JSONObject::getOwnPropertySlot): Moved this down to the bottom 18885 of the file so the JSONObject class is not interleaved with the 18886 Stringifier class. 18887 (JSC::JSONObject::markStringifiers): Added. Calls mark. 18888 (JSC::JSONProtoFuncStringify): Streamlined the code here. The code 18889 to compute the gap string is now a separate function. 18890 18891 * runtime/JSONObject.h: Made everything private. Added markStringifiers. 18892 188932009-06-17 Oliver Hunt <oliver@apple.com> 18894 18895 Reviewed by Gavin Barraclough. 18896 18897 <rdar://problem/6974140> REGRESSION(r43849): Crash in cti_op_call_NotJSFunction when getting directions on maps.google.com 18898 18899 Roll out r43849 as it appears that we cannot rely on the address of 18900 an objects property storage being constant even if the structure is 18901 unchanged. 18902 18903 * jit/JIT.h: 18904 * jit/JITPropertyAccess.cpp: 18905 (JSC::JIT::compileGetDirectOffset): 18906 (JSC::JIT::privateCompileGetByIdProto): 18907 (JSC::JIT::privateCompileGetByIdProtoList): 18908 (JSC::JIT::privateCompileGetByIdChainList): 18909 (JSC::JIT::privateCompileGetByIdChain): 18910 189112009-06-17 Gavin Barraclough <barraclough@apple.com> 18912 18913 Rubber Stamped by Mark Rowe. 18914 18915 Fully revert r44492 & r44748 while we fix a bug they cause on internal builds <rdar://problem/6955963>. 18916 18917 * jit/JITOpcodes.cpp: 18918 (JSC::JIT::emit_op_throw): 18919 * jit/JITStubs.cpp: 18920 (JSC::): 18921 (JSC::JITStubs::DEFINE_STUB_FUNCTION): 18922 * jit/JITStubs.h: 18923 189242009-06-17 Gavin Barraclough <barraclough@apple.com> 18925 18926 Reviewed by Mark Rowe. 18927 18928 <rdar://problem/6947426> sunspider math-cordic.js exhibits different intermediate results running 32-bit vs. 64-bit 18929 18930 On 64-bit, NaN-encoded values must be detagged before they can be used in rshift. 18931 18932 No performance impact. 18933 18934 * jit/JITArithmetic.cpp: 18935 (JSC::JIT::emit_op_rshift): 18936 189372009-06-17 Adam Treat <adam.treat@torchmobile.com> 18938 18939 Reviewed by George Staikos. 18940 18941 https://bugs.webkit.org/show_bug.cgi?id=23155 18942 Move WIN_CE -> WINCE as previously discussed with Qt WINCE folks. 18943 18944 * jsc.cpp: 18945 (main): 18946 189472009-06-17 George Staikos <george.staikos@torchmobile.com> 18948 18949 Reviewed by Adam Treat. 18950 18951 https://bugs.webkit.org/show_bug.cgi?id=23155 18952 Move WIN_CE -> WINCE as previously discussed with Qt WINCE folks. 18953 18954 * config.h: 18955 * jsc.cpp: 18956 * wtf/Assertions.cpp: 18957 * wtf/Assertions.h: 18958 * wtf/CurrentTime.cpp: 18959 (WTF::lowResUTCTime): 18960 * wtf/DateMath.cpp: 18961 (WTF::getLocalTime): 18962 * wtf/MathExtras.h: 18963 * wtf/Platform.h: 18964 * wtf/StringExtras.h: 18965 * wtf/Threading.h: 18966 * wtf/win/MainThreadWin.cpp: 18967 189682009-06-17 Gavin Barraclough <barraclough@apple.com> 18969 18970 Reviewed by Oliver Hunt. 18971 18972 <rdar://problem/6974175> ASSERT in JITStubs.cpp at appsaccess.apple.com 18973 18974 Remove PropertySlot::putValue - PropertySlots should only be used for getting, 18975 not putting. Rename JSGlobalObject::getOwnPropertySlot to hasOwnPropertyForWrite, 18976 which is what it really was being used to ask, and remove some other getOwnPropertySlot 18977 & getOwnPropertySlotForWrite methods, which were unused and likely to lead to confusion. 18978 18979 * runtime/JSGlobalObject.h: 18980 (JSC::JSGlobalObject::hasOwnPropertyForWrite): 18981 * runtime/JSObject.h: 18982 * runtime/JSStaticScopeObject.cpp: 18983 * runtime/JSStaticScopeObject.h: 18984 * runtime/PropertySlot.h: 18985 189862009-06-16 Gavin Barraclough <barraclough@apple.com> 18987 18988 Reviewed by Oliver hunt. 18989 18990 Temporarily partially disable r44492, since this is causing some problems on internal builds. 18991 18992 * jit/JITOpcodes.cpp: 18993 (JSC::JIT::emit_op_throw): 18994 * jit/JITStubs.cpp: 18995 (JSC::JITStubs::DEFINE_STUB_FUNCTION): 18996 189972009-06-16 Sam Weinig <sam@webkit.org> 18998 18999 Fix windows build. 19000 19001 * jit/JIT.cpp: 19002 (JSC::JIT::JIT): 19003 190042009-06-16 Sam Weinig <sam@webkit.org> 19005 19006 Reviewed by Oliver Hunt. 19007 19008 Initialize m_bytecodeIndex to -1 in JIT, and correctly initialize 19009 it for each type of stub using the return address to find the correct 19010 offset. 19011 19012 * jit/JIT.cpp: 19013 (JSC::JIT::JIT): 19014 * jit/JIT.h: 19015 (JSC::JIT::compileGetByIdProto): 19016 (JSC::JIT::compileGetByIdSelfList): 19017 (JSC::JIT::compileGetByIdProtoList): 19018 (JSC::JIT::compileGetByIdChainList): 19019 (JSC::JIT::compileGetByIdChain): 19020 (JSC::JIT::compilePutByIdTransition): 19021 (JSC::JIT::compileCTIMachineTrampolines): 19022 (JSC::JIT::compilePatchGetArrayLength): 19023 * jit/JITStubCall.h: 19024 (JSC::JITStubCall::call): 19025 19026== Rolled over to ChangeLog-2009-06-16 == 19027