1 2011-02-15 Gavin Barraclough <barraclough (a] apple.com> 2 3 Reviewed by Geoff Garen. 4 5 Bug 54524 - Allow JSObject to fully utilize cell's capacity for inline storage. 6 7 Currently JSObject is both directly instantiated for regular JS objects, and 8 derived to implement subtypes. A consequence of this is that we need to ensure 9 that sufficient space from the cell is left unused and available for any data 10 members that will be introduced by subclasses of JSObject. By restructuring 11 the internal storage array out of JSObject we can increase the size in the 12 internal storage for regular objects. 13 14 Add classes JSFinalObject and JSNonFinalObject. JSNonFinalObject retains as 15 much additional capacity as is currently available to allow for data members 16 in subclasses. JSFinalObject utilizes all available space for internal storage, 17 and only allows construction through JSFinalObject::create(). 18 19 The additional storage made available in the JSObject means that we need no 20 longer rely on a union of the internal storage with a pointer to storage that 21 is only valid for external storage. This means we can go back to always having 22 a valid pointer to property storage, regardless of whether this is internal or 23 external. This simplifies some cases of access to the array from C code, and 24 significantly simplifies JIT access, since repatching no longer needs to be 25 able to change between a load of the storage pointer / a LEA of the internal 26 storage. 27 28 * API/JSObjectRef.cpp: 29 (JSObjectMake): 30 * assembler/ARMAssembler.h: 31 * assembler/ARMv7Assembler.h: 32 * assembler/AbstractMacroAssembler.h: 33 (JSC::AbstractMacroAssembler::repatchPointer): 34 * assembler/MIPSAssembler.h: 35 * assembler/MacroAssemblerARM.h: 36 * assembler/MacroAssemblerARMv7.h: 37 * assembler/MacroAssemblerMIPS.h: 38 * assembler/MacroAssemblerX86.h: 39 * assembler/MacroAssemblerX86_64.h: 40 * assembler/RepatchBuffer.h: 41 * assembler/X86Assembler.h: 42 * debugger/DebuggerActivation.cpp: 43 (JSC::DebuggerActivation::DebuggerActivation): 44 * debugger/DebuggerActivation.h: 45 * interpreter/Interpreter.cpp: 46 (JSC::Interpreter::privateExecute): 47 * jit/JIT.h: 48 * jit/JITOpcodes.cpp: 49 (JSC::JIT::emit_op_resolve_global): 50 * jit/JITOpcodes32_64.cpp: 51 (JSC::JIT::emit_op_resolve_global): 52 * jit/JITPropertyAccess.cpp: 53 (JSC::JIT::compileGetDirectOffset): 54 (JSC::JIT::emit_op_get_by_pname): 55 (JSC::JIT::compileGetByIdHotPath): 56 (JSC::JIT::emit_op_put_by_id): 57 (JSC::JIT::compilePutDirectOffset): 58 (JSC::JIT::patchGetByIdSelf): 59 (JSC::JIT::patchPutByIdReplace): 60 (JSC::JIT::privateCompileGetByIdProto): 61 (JSC::JIT::privateCompileGetByIdSelfList): 62 (JSC::JIT::privateCompileGetByIdProtoList): 63 (JSC::JIT::privateCompileGetByIdChainList): 64 (JSC::JIT::privateCompileGetByIdChain): 65 * jit/JITPropertyAccess32_64.cpp: 66 (JSC::JIT::compileGetByIdHotPath): 67 (JSC::JIT::emit_op_put_by_id): 68 (JSC::JIT::compilePutDirectOffset): 69 (JSC::JIT::compileGetDirectOffset): 70 (JSC::JIT::patchGetByIdSelf): 71 (JSC::JIT::patchPutByIdReplace): 72 (JSC::JIT::privateCompileGetByIdProto): 73 (JSC::JIT::privateCompileGetByIdSelfList): 74 (JSC::JIT::privateCompileGetByIdProtoList): 75 (JSC::JIT::privateCompileGetByIdChainList): 76 (JSC::JIT::privateCompileGetByIdChain): 77 (JSC::JIT::emit_op_get_by_pname): 78 * jit/JITStubs.cpp: 79 (JSC::DEFINE_STUB_FUNCTION): 80 * runtime/Arguments.h: 81 (JSC::Arguments::Arguments): 82 * runtime/ErrorInstance.cpp: 83 (JSC::ErrorInstance::ErrorInstance): 84 * runtime/ErrorInstance.h: 85 * runtime/ExceptionHelpers.cpp: 86 (JSC::InterruptedExecutionError::InterruptedExecutionError): 87 (JSC::TerminatedExecutionError::TerminatedExecutionError): 88 * runtime/JSArray.cpp: 89 (JSC::JSArray::JSArray): 90 * runtime/JSArray.h: 91 * runtime/JSByteArray.cpp: 92 (JSC::JSByteArray::JSByteArray): 93 * runtime/JSByteArray.h: 94 (JSC::JSByteArray::JSByteArray): 95 * runtime/JSFunction.cpp: 96 (JSC::JSFunction::getOwnPropertySlot): 97 * runtime/JSGlobalData.cpp: 98 (JSC::JSGlobalData::JSGlobalData): 99 * runtime/JSGlobalObject.h: 100 (JSC::constructEmptyObject): 101 * runtime/JSNotAnObject.h: 102 (JSC::JSNotAnObject::JSNotAnObject): 103 * runtime/JSObject.cpp: 104 (JSC::JSObject::createInheritorID): 105 (JSC::JSObject::allocatePropertyStorage): 106 * runtime/JSObject.h: 107 (JSC::JSObject::propertyStorage): 108 (JSC::JSNonFinalObject::JSNonFinalObject): 109 (JSC::JSNonFinalObject::createStructure): 110 (JSC::JSFinalObject::create): 111 (JSC::JSFinalObject::createStructure): 112 (JSC::JSFinalObject::JSFinalObject): 113 (JSC::JSObject::offsetOfInlineStorage): 114 (JSC::constructEmptyObject): 115 (JSC::createEmptyObjectStructure): 116 (JSC::JSObject::JSObject): 117 (JSC::JSObject::~JSObject): 118 (JSC::Structure::isUsingInlineStorage): 119 * runtime/JSObjectWithGlobalObject.cpp: 120 (JSC::JSObjectWithGlobalObject::JSObjectWithGlobalObject): 121 * runtime/JSObjectWithGlobalObject.h: 122 (JSC::JSObjectWithGlobalObject::JSObjectWithGlobalObject): 123 * runtime/JSTypeInfo.h: 124 (JSC::TypeInfo::TypeInfo): 125 (JSC::TypeInfo::isVanilla): 126 * runtime/JSVariableObject.h: 127 (JSC::JSVariableObject::JSVariableObject): 128 * runtime/JSWrapperObject.h: 129 (JSC::JSWrapperObject::JSWrapperObject): 130 * runtime/ObjectConstructor.cpp: 131 (JSC::constructObject): 132 * runtime/ObjectPrototype.cpp: 133 (JSC::ObjectPrototype::ObjectPrototype): 134 * runtime/ObjectPrototype.h: 135 * runtime/StrictEvalActivation.cpp: 136 (JSC::StrictEvalActivation::StrictEvalActivation): 137 * runtime/StrictEvalActivation.h: 138 * runtime/Structure.cpp: 139 (JSC::Structure::Structure): 140 (JSC::Structure::growPropertyStorageCapacity): 141 142 2011-02-16 Oliver Hunt <oliver (a] apple.com> 143 144 Reviewed by Geoff Garen. 145 146 Incorrect handling of global writes in dynamic contexts 147 https://bugs.webkit.org/show_bug.cgi?id=49383 148 149 * interpreter/Interpreter.cpp: 150 (JSC::Interpreter::privateExecute): 151 Can't use the existing callframe to return an uncaught exception 152 as by definition that callframe has already been torn down. 153 * parser/ASTBuilder.h: 154 (JSC::ASTBuilder::ASTBuilder): 155 (JSC::ASTBuilder::varDeclarations): 156 (JSC::ASTBuilder::funcDeclarations): 157 (JSC::ASTBuilder::features): 158 (JSC::ASTBuilder::numConstants): 159 (JSC::ASTBuilder::createFuncDeclStatement): 160 (JSC::ASTBuilder::addVar): 161 (JSC::ASTBuilder::incConstants): 162 (JSC::ASTBuilder::usesThis): 163 (JSC::ASTBuilder::usesCatch): 164 (JSC::ASTBuilder::usesClosures): 165 (JSC::ASTBuilder::usesArguments): 166 (JSC::ASTBuilder::usesAssignment): 167 (JSC::ASTBuilder::usesWith): 168 (JSC::ASTBuilder::usesEval): 169 Don't need a vector of scopes in the ASTBuilder 170 * runtime/Operations.h: 171 (JSC::resolveBase): 172 In strict mode the optimisation that we use to skip a lookup 173 on the global object is incorrect and lead to us always 174 disallowing global writes when we needed to do a dynamic slot 175 lookup. Now the strict mode path actually checks for the 176 property. 177 178 2011-02-15 Jon Honeycutt <jhoneycutt (a] apple.com> 179 180 Windows build fix for 181 https://bugs.webkit.org/show_bug.cgi?id=54415 182 183 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: 184 Remove deleted files. 185 186 2011-02-15 Oliver Hunt <oliver (a] apple.com> 187 188 Fix EFL build for 189 https://bugs.webkit.org/show_bug.cgi?id=54415 190 191 * CMakeLists.txt: 192 193 2011-02-14 Oliver Hunt <oliver (a] apple.com> 194 195 Reviewed by Gavin Barraclough and Geoff Garen. 196 197 Refactor handles and weak pointers to become nicer and more automatic 198 https://bugs.webkit.org/show_bug.cgi?id=54415 199 200 Move to a true handle based mechanism for GC value protection. This 201 also allows us to switch to a more sensible behaviour for weak pointers 202 in which weak pointers are automatically updated. 203 204 This allows us to remove the old (and convoluted) that required all 205 objects that may be held by a weak reference to be aware of the reference 206 and manually clear them in their destructors. 207 208 This also adds a few new data types to JSC that we use to efficiently 209 allocate and return the underlying handle storage. 210 211 This patch is largely renaming and removing now unnecessary destructors 212 from objects. 213 214 * API/JSClassRef.cpp: 215 (OpaqueJSClass::create): 216 (OpaqueJSClassContextData::OpaqueJSClassContextData): 217 (OpaqueJSClass::contextData): 218 (OpaqueJSClass::prototype): 219 * API/JSClassRef.h: 220 * CMakeLists.txt: 221 * GNUmakefile.am: 222 * JavaScriptCore.exp: 223 * JavaScriptCore.gypi: 224 * JavaScriptCore.pro: 225 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: 226 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: 227 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreCommon.vsprops: 228 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreGenerated.make: 229 * JavaScriptCore.vcproj/WTF/WTF.vcproj: 230 * JavaScriptCore.vcproj/jsc/jscCommon.vsprops: 231 * JavaScriptCore.xcodeproj/project.pbxproj: 232 * collector/handles/Global.h: Added. 233 New Global handle type used to keep gc objects live, even if they're not 234 marked. 235 (JSC::Global::Global): 236 (JSC::Global::~Global): 237 (JSC::Global::set): 238 We can only assign directly to a global from another global. 239 In all other cases we need the JSGlobalData to be provided 240 explicitly so we use a set function. 241 (JSC::Global::operator=): 242 (JSC::Global::clear): 243 (JSC::Global::isHashTableDeletedValue): 244 (JSC::Global::internalSet): 245 * collector/handles/Handle.h: Added. 246 Root "Handle" type used for immutable handles and to provide the basic 247 APIs needed for pointer-like behaviour. 248 (JSC::HandleBase::operator!): 249 (JSC::HandleBase::operator UnspecifiedBoolType*): 250 (JSC::HandleBase::isEmpty): 251 (JSC::HandleBase::HandleBase): 252 (JSC::HandleBase::slot): 253 (JSC::HandleBase::invalidate): 254 (JSC::HandleBase::setSlot): 255 (JSC::HandleTypes::getFromSlot): 256 (JSC::HandleTypes::toJSValue): 257 (JSC::HandleTypes::validateUpcast): 258 (JSC::HandleConverter::operator->): 259 (JSC::HandleConverter::operator*): 260 (JSC::Handle::Handle): 261 (JSC::Handle::get): 262 (JSC::Handle::wrapSlot): 263 (JSC::operator==): 264 (JSC::operator!=): 265 * collector/handles/HandleHeap.cpp: Added. 266 New heap for global handles. 267 (JSC::HandleHeap::HandleHeap): 268 (JSC::HandleHeap::grow): 269 (JSC::HandleHeap::markStrongHandles): 270 (JSC::HandleHeap::updateAfterMark): 271 (JSC::HandleHeap::clearWeakPointers): 272 (JSC::HandleHeap::writeBarrier): 273 * collector/handles/HandleHeap.h: Added. 274 (JSC::HandleHeap::heapFor): 275 (JSC::HandleHeap::toHandle): 276 (JSC::HandleHeap::toNode): 277 (JSC::HandleHeap::allocate): 278 (JSC::HandleHeap::deallocate): 279 (JSC::HandleHeap::makeWeak): 280 Convert a hard handle into weak handle that does not 281 protect the object it points to. 282 (JSC::HandleHeap::makeSelfDestroying): 283 Converts a handle to a weak handle that will be returned 284 to the free list when the referenced object dies. 285 (JSC::HandleHeap::Node::Node): 286 (JSC::HandleHeap::Node::slot): 287 (JSC::HandleHeap::Node::handleHeap): 288 (JSC::HandleHeap::Node::setFinalizer): 289 (JSC::HandleHeap::Node::makeWeak): 290 (JSC::HandleHeap::Node::isWeak): 291 (JSC::HandleHeap::Node::makeSelfDestroying): 292 (JSC::HandleHeap::Node::isSelfDestroying): 293 (JSC::HandleHeap::Node::finalizer): 294 (JSC::HandleHeap::Node::setPrev): 295 (JSC::HandleHeap::Node::prev): 296 (JSC::HandleHeap::Node::setNext): 297 (JSC::HandleHeap::Node::next): 298 * interpreter/Interpreter.cpp: 299 (JSC::Interpreter::Interpreter): 300 * interpreter/Interpreter.h: 301 * interpreter/RegisterFile.cpp: 302 (JSC::RegisterFile::globalObjectCollected): 303 * interpreter/RegisterFile.h: 304 (JSC::RegisterFile::RegisterFile): 305 * runtime/GCHandle.cpp: Removed. 306 * runtime/GCHandle.h: Removed. 307 * runtime/Heap.cpp: 308 (JSC::Heap::Heap): 309 (JSC::Heap::destroy): 310 (JSC::Heap::markRoots): 311 * runtime/Heap.h: 312 (JSC::Heap::allocateGlobalHandle): 313 (JSC::Heap::reportExtraMemoryCost): 314 * runtime/JSGlobalData.cpp: 315 (JSC::JSGlobalData::JSGlobalData): 316 * runtime/JSGlobalData.h: 317 (JSC::JSGlobalData::allocateGlobalHandle): 318 * runtime/JSGlobalObject.cpp: 319 (JSC::JSGlobalObject::~JSGlobalObject): 320 * runtime/JSPropertyNameIterator.cpp: 321 (JSC::JSPropertyNameIterator::create): 322 (JSC::JSPropertyNameIterator::~JSPropertyNameIterator): 323 * runtime/JSPropertyNameIterator.h: 324 (JSC::JSPropertyNameIterator::createStructure): 325 (JSC::Structure::setEnumerationCache): 326 (JSC::Structure::clearEnumerationCache): 327 * runtime/Protect.h: 328 * runtime/Structure.cpp: 329 (JSC::Structure::~Structure): 330 * runtime/Structure.h: 331 * runtime/WeakGCPtr.h: 332 (JSC::WeakGCPtrBase::get): 333 (JSC::WeakGCPtrBase::clear): 334 (JSC::WeakGCPtrBase::operator!): 335 (JSC::WeakGCPtrBase::operator UnspecifiedBoolType*): 336 (JSC::WeakGCPtrBase::~WeakGCPtrBase): 337 (JSC::WeakGCPtrBase::WeakGCPtrBase): 338 (JSC::WeakGCPtrBase::internalSet): 339 (JSC::LazyWeakGCPtr::LazyWeakGCPtr): 340 (JSC::LazyWeakGCPtr::set): 341 (JSC::WeakGCPtr::WeakGCPtr): 342 (JSC::WeakGCPtr::operator=): 343 * runtime/WriteBarrier.h: 344 * wtf/BlockStack.h: Added. 345 (WTF::::BlockStack): 346 (WTF::::~BlockStack): 347 (WTF::::blocks): 348 (WTF::::grow): 349 (WTF::::shrink): 350 * wtf/SentinelLinkedList.h: Added. 351 (WTF::::SentinelLinkedList): 352 (WTF::::begin): 353 (WTF::::end): 354 (WTF::::push): 355 (WTF::::remove): 356 * wtf/SinglyLinkedList.h: Added. 357 (WTF::::SinglyLinkedList): 358 (WTF::::isEmpty): 359 (WTF::::push): 360 (WTF::::pop): 361 362 2011-02-15 Pratik Solanki <psolanki (a] apple.com> 363 364 Move WTF_USE_CFNETWORK to Platform.h 365 https://bugs.webkit.org/show_bug.cgi?id=54168 366 367 Reviewed by Darin Adler. 368 369 * wtf/Platform.h: Define WTF_USE_CFNETWORK for Windows builds. 370 371 2011-02-15 Geoffrey Garen <ggaren (a] apple.com> 372 373 Reviewed by Darin Adler. 374 375 Moved MarkedBlock data members to the head of the block 376 https://bugs.webkit.org/show_bug.cgi?id=54482 377 378 This allows for a variable-sized tail, to accommodate oversized blocks. 379 380 SunSpider reports no change. 381 382 * runtime/JSCell.h: 383 (JSC::JSCell::MarkedBlock::allocate): 384 * runtime/MarkedBlock.cpp: 385 (JSC::MarkedBlock::destroy): 386 (JSC::MarkedBlock::MarkedBlock): 387 (JSC::MarkedBlock::sweep): 388 * runtime/MarkedBlock.h: Added missing element to the CELLS_PER_BLOCK 389 calculation. This kind of error is why we want to migrate to the system 390 described below. 391 392 (JSC::roundUpToMultipleOf): 393 (JSC::MarkedBlock::firstCell): 394 (JSC::MarkedBlock::cells): 395 (JSC::MarkedBlock::cellNumber): Use subtraction instead of masking to 396 calculate cell number. The mask is no longer correct because the first 397 cell is not at the head of the block. 398 399 (JSC::MarkedBlock::forEach): Replaced m_cells data member with a cells() 400 accessor. We want to use sizeof(MarkedBlock) to calculate the size of the 401 block header, so we can't have an explicit data member to represent the block tail. 402 403 Also replaced iteration from zero with iteration from startCell(), since 404 the first N cells are now occupied by the header. 405 406 * runtime/MarkedSpace.cpp: 407 (JSC::MarkedSpace::MarkedSpace): 408 (JSC::MarkedSpace::reset): Replaced iteration from zero as above. 409 410 2011-02-15 Chris Rogers <crogers (a] google.com> 411 412 Reviewed by Alexey Proskuryakov. 413 414 Fix Mutex::tryLock() on Windows to work properly with PlatformCondition::timedWait() 415 https://bugs.webkit.org/show_bug.cgi?id=54408 416 417 * wtf/ThreadingWin.cpp: 418 (WTF::PlatformCondition::timedWait): 419 420 2011-02-15 Xan Lopez <xlopez (a] igalia.com> 421 422 Reviewed by Martin Robinson. 423 424 Remove some dead code in ARMv7 425 https://bugs.webkit.org/show_bug.cgi?id=54461 426 427 * assembler/ARMv7Assembler.h: remove dead code. 428 429 2011-02-14 Geoffrey Garen <ggaren (a] apple.com> 430 431 Rubber-stamped by Gavin Barraclough. 432 433 Some MarkedBlock refactoring. 434 435 Made cells private. 436 437 Renamed cells => m_cells 438 marked => m_marks. 439 440 * runtime/JSCell.h: 441 (JSC::JSCell::MarkedBlock::allocate): 442 * runtime/MarkedBlock.cpp: 443 (JSC::MarkedBlock::destroy): 444 (JSC::MarkedBlock::MarkedBlock): 445 (JSC::MarkedBlock::sweep): 446 * runtime/MarkedBlock.h: 447 (JSC::MarkedBlock::isEmpty): 448 (JSC::MarkedBlock::clearMarks): 449 (JSC::MarkedBlock::markCount): 450 (JSC::MarkedBlock::isMarked): 451 (JSC::MarkedBlock::testAndSetMarked): 452 (JSC::MarkedBlock::setMarked): 453 (JSC::MarkedBlock::forEach): 454 455 2011-02-14 Adam Barth <abarth (a] webkit.org> 456 457 Reviewed by Eric Seidel. 458 459 Add basic parser for Content Security Policy 460 https://bugs.webkit.org/show_bug.cgi?id=54379 461 462 Add a constructor for copying a Vector into a String. I suspect there 463 are a number of call sites that are doing this manually that would 464 benefit from being moved to this API. 465 466 * wtf/text/WTFString.h: 467 (WTF::String::String): 468 469 2011-02-14 Pavel Podivilov <podivilov (a] chromium.org> 470 471 Reviewed by Yury Semikhatsky. 472 473 Web Inspector: use call frame column to determine execution line in source frame. 474 https://bugs.webkit.org/show_bug.cgi?id=54001 475 476 * wtf/text/TextPosition.h: 477 (WTF::ZeroBasedNumber::convertAsOneBasedInt): 478 479 2011-02-13 Jeremy Moskovich <jeremy (a] chromium.org> 480 481 Reviewed by Adam Barth. 482 483 Add a compile-time option to completely disable WebArchive support. 484 https://bugs.webkit.org/show_bug.cgi?id=52712 485 486 Add an ENABLE(WEB_ARCHIVE) compile-time setting and use it for all WebArchive code. 487 Ports Affected: 488 WebArchive support is currently enabled for all ports that define PLATFORM(CF) apart from Qt. 489 This patch preserves this behavior except that it also disables support in the Chromium port. 490 491 * wtf/Platform.h: Add ENABLE_WEB_ARCHIVE definition and turn it off explicitly for Qt & Chromium ports. 492 493 2011-02-13 Cameron Zwarich <zwarich (a] apple.com> 494 495 Reviewed by Dan Bernstein. 496 497 Bug 53760 - JSC fails to build with TOT Clang 498 https://bugs.webkit.org/show_bug.cgi?id=53760 499 500 Fix -Woverloaded-virtual warnings. This is also a 6% speedup on the v8 raytrace 501 benchmark; it is nothing-to-noise on everything else. 502 503 * API/JSCallbackObject.h: Remove pointlessly overloaded method. 504 * API/JSCallbackObjectFunctions.h: Ditto. 505 * runtime/Arguments.cpp: 506 (JSC::Arguments::put): Change signature to match the base class. This implementation 507 was no longer being called by anyone. This wasn't noticed because it is merely an 508 optimization of the base class' implementation. 509 * runtime/Arguments.h: Ditto. 510 511 2011-02-12 Adam Barth <abarth (a] webkit.org> 512 513 Reviewed by Mark Rowe. 514 515 Use /dev/urandom as the OSRandomSource on OS(DARWIN) 516 https://bugs.webkit.org/show_bug.cgi?id=54279 517 518 I'm not sure it makes much of a difference whether we use arc4random or 519 /dev/urandom on Mac. However, there's some aesthetic benefit to using 520 the same underlying API on as many platforms as reasonable. 521 522 * config.h: 523 * wtf/OSRandomSource.cpp: 524 (WTF::cryptographicallyRandomValuesFromOS): 525 526 2011-02-12 Adam Barth <abarth (a] webkit.org> 527 528 Reviewed by Kenneth Russell. 529 530 Enable ArrayBuffers by default 531 https://bugs.webkit.org/show_bug.cgi?id=54310 532 533 Export the required functions. 534 535 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: 536 537 2011-02-11 Daniel Bates <dbates (a] rim.com> 538 539 Reviewed by Geoffrey Garen. 540 541 Remove explicit disable ENABLE_ASSEMBLER_WX_EXCLUSIVE on non-iOS ports 542 https://bugs.webkit.org/show_bug.cgi?id=54107 543 544 It is unnecessary to explicitly disable ENABLE_ASSEMBLER_WX_EXCLUSIVE 545 by the definition of ENABLE(). 546 547 * wtf/Platform.h: 548 549 2011-02-11 Geoffrey Garen <ggaren (a] apple.com> 550 551 Not reviewed. 552 553 Randomly touch some build files in the hopes of fixing the Qt build. 554 555 * JavaScriptCore.gypi: 556 * JavaScriptCore.pri: 557 * JavaScriptCore.pro: 558 559 2011-02-11 Geoffrey Garen <ggaren (a] apple.com> 560 561 Reviewed by Sam Weinig. 562 563 Garbage collection timer cycles forever, even when nothing is happening 564 https://bugs.webkit.org/show_bug.cgi?id=54320 565 566 (Rolling back in r78386 with the build fixed.) 567 568 * runtime/GCActivityCallbackCF.cpp: 569 (JSC::DefaultGCActivityCallbackPlatformData::trigger): Be sure to make 570 our timer inert after forcing a GC, to avoid GC'ing repeatedly. 571 572 2011-02-11 Geoffrey Garen <ggaren (a] apple.com> 573 574 Not reviewed. 575 576 Used svn merge -r78386:78385 to roll out r78386 because it broke the build. 577 578 * runtime/GCActivityCallbackCF.cpp: 579 (JSC::DefaultGCActivityCallbackPlatformData::trigger): 580 581 2011-02-11 Geoffrey Garen <ggaren (a] apple.com> 582 583 Reviewed by Sam Weinig. 584 585 Garbage collection timer cycles forever, even when nothing is happening 586 https://bugs.webkit.org/show_bug.cgi?id=54320 587 588 * runtime/GCActivityCallbackCF.cpp: 589 (JSC::DefaultGCActivityCallbackPlatformData::trigger): Be sure to make 590 our timer inert after forcing a GC, to avoid GC'ing repeatedly. 591 592 2011-02-11 Geoffrey Garen <ggaren (a] apple.com> 593 594 Try to fix the Windows build: added an exported symbol. 595 596 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: 597 598 2011-02-11 Geoffrey Garen <ggaren (a] apple.com> 599 600 Reviewed by Oliver Hunt. 601 602 A little more encapsulation for the heap: Removed CollectorHeapIterator 603 https://bugs.webkit.org/show_bug.cgi?id=54298 604 605 CollectorHeapIterator is a God object that knows the internals of each 606 of the pieces of the heap. This undermines the encapsulation I'm trying 607 to achieve by splitting concepts into different classes. 608 609 As an alternative, I've given each class a forEach iteration function, 610 which takes a functor as an argument. Now, each class just needs to 611 know how to iterate the things it knows about. 612 613 * GNUmakefile.am: 614 * JavaScriptCore.exp: 615 * JavaScriptCore.gypi: 616 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: Removed CollectorHeapIterator. 617 618 * debugger/Debugger.cpp: 619 (JSC::Recompiler::Recompiler): 620 (JSC::Recompiler::~Recompiler): 621 (JSC::Recompiler::operator()): 622 (JSC::Debugger::recompileAllJSFunctions): Updated to use forEach interface 623 instead of an iterator. 624 625 * runtime/CollectorHeapIterator.h: Removed. 626 627 * runtime/Heap.cpp: 628 (JSC::TypeCounter::TypeCounter): 629 (JSC::TypeCounter::typeName): 630 (JSC::TypeCounter::operator()): 631 (JSC::TypeCounter::take): 632 (JSC::Heap::protectedObjectTypeCounts): 633 (JSC::Heap::objectTypeCounts): Added forEach and removed iterator. 634 635 * runtime/Heap.h: 636 (JSC::Heap::forEach): 637 * runtime/JSGlobalData.cpp: 638 (JSC::Recompiler::operator()): 639 (JSC::JSGlobalData::recompileAllJSFunctions): 640 641 * runtime/MarkedBlock.h: 642 (JSC::MarkedBlock::forEach): Added forEach. Removed friend declaration 643 for CollectorHeapIterator. Now, we can make all our data private and 644 change it without breaking any other classes. 645 646 * runtime/MarkedSpace.cpp: 647 * runtime/MarkedSpace.h: 648 (JSC::MarkedSpace::forEach): Added forEach and removed iterator. 649 650 2011-02-11 Adam Barth <abarth (a] webkit.org> 651 652 Reviewed by Andreas Kling. 653 654 CryptographicRandomNumber has its threading ifdefs backwards 655 https://bugs.webkit.org/show_bug.cgi?id=54280 656 657 Turns out we want the mutex when thread is enabled. :) 658 659 * wtf/CryptographicallyRandomNumber.cpp: 660 (WTF::ARC4Stream::ARC4RandomNumberGenerator::randomNumber): 661 (WTF::ARC4Stream::ARC4RandomNumberGenerator::randomValues): 662 663 2011-02-10 Adam Barth <abarth (a] webkit.org> 664 665 Reviewed by Eric Seidel. 666 667 WebKit should have a cryptographic RNG 668 https://bugs.webkit.org/show_bug.cgi?id=22049 669 670 Teach JavaScriptCore how to export this function. 671 672 * JavaScriptCore.exp: 673 * JavaScriptCore.xcodeproj/project.pbxproj: 674 675 2011-02-10 Geoffrey Garen <ggaren (a] apple.com> 676 677 Reviewed by Sam Weinig. 678 679 A little more encapsulation for MarkedBlock: Made all constants private 680 so clients don't know whether allocations are fixed-sized or not 681 https://bugs.webkit.org/show_bug.cgi?id=54270 682 683 SunSpider reports no change. 684 685 * runtime/CollectorHeapIterator.h: 686 (JSC::CollectorHeapIterator::advance): Updated for removal of HeapConstants. 687 688 * runtime/Error.cpp: Switched to using ASSERT_CLASS_FITS_IN_CELL, like 689 all other classes. 690 691 * runtime/Heap.cpp: 692 (JSC::Heap::allocate): Updated for removal of HeapConstants. 693 (JSC::Heap::reset): Updated to use size(), instead of calculating size 694 on our own. 695 696 * runtime/Heap.h: Moved the ASSERT here to MarkedBlock, since it enforces 697 on special knowledge of fixed-sizery, which only MarkedBlock is supposed 698 to know about. 699 700 * runtime/JSCell.h: 701 (JSC::JSCell::MarkedBlock::allocate): Updated for removal of HeapConstants. 702 Also changed to reset nextCell to 0 at the end of a block, since that 703 seems more consistent. 704 705 * runtime/JSGlobalData.cpp: 706 (JSC::JSGlobalData::storeVPtrs): Changed to use a fixed array of char. 707 This hard-coded size is a little wonky, but the compiler will tell us 708 if it's ever wrong, so I think it's OK. 709 710 * runtime/MarkedBlock.cpp: 711 (JSC::MarkedBlock::destroy): 712 (JSC::MarkedBlock::MarkedBlock): 713 (JSC::MarkedBlock::sweep): Updated for removal of HeapConstants. 714 715 * runtime/MarkedBlock.h: 716 (JSC::MarkedBlock::isEmpty): 717 (JSC::MarkedBlock::clearMarks): 718 (JSC::MarkedBlock::size): 719 (JSC::MarkedBlock::capacity): Made constants private to this class. 720 Removed HeapConstants. Added size() and capacity() functions. 721 722 * runtime/MarkedSpace.cpp: 723 (JSC::MarkedSpace::allocate): 724 (JSC::MarkedSpace::objectCount): 725 (JSC::MarkedSpace::size): 726 (JSC::MarkedSpace::capacity): 727 * runtime/MarkedSpace.h: Use MarkedBlock helper functions instead of 728 direct knowledge of MarkedBlock internals. 729 730 2011-02-10 Geoffrey Garen <ggaren (a] apple.com> 731 732 Reviewed by Sam Weinig. 733 734 A little more encapsulation for MarkedBlock: Made mark bits private 735 https://bugs.webkit.org/show_bug.cgi?id=54264 736 737 SunSpider reports no change. 738 739 * runtime/Heap.cpp: 740 (JSC::Heap::markRoots): 741 (JSC::Heap::reset): Renamed clearMarkBits => clearMarks, since clients 742 don't need to know that marks are represented as bits. Renamed 743 markedCells => markCount, since clients don't need to know that blocks 744 are split into cells. 745 746 * runtime/MarkedBlock.h: 747 (JSC::MarkedBlock::isEmpty): 748 (JSC::MarkedBlock::clearMarks): 749 (JSC::MarkedBlock::markCount): New helper functions for encapsulating 750 the information clients actually need. 751 752 * runtime/MarkedSpace.cpp: 753 (JSC::MarkedSpace::destroy): 754 (JSC::MarkedSpace::shrink): 755 (JSC::MarkedSpace::clearMarks): 756 (JSC::MarkedSpace::markCount): 757 (JSC::MarkedSpace::objectCount): 758 * runtime/MarkedSpace.h: Use new helper functions instead of accessing 759 MarkedBlock data directly. 760 761 2011-02-10 Michael Saboff <msaboff (a] apple.com> 762 763 Reviewed by Geoffrey Garen. 764 765 Cached JavaScript Parser Data Being Left in Memory Cache 766 https://bugs.webkit.org/show_bug.cgi?id=54245 767 768 Added clear method which removes SourceProviderCache items. 769 Cleaned up extraneous whitespace. 770 771 * JavaScriptCore.exp: 772 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: 773 * parser/SourceProviderCache.cpp: 774 (JSC::SourceProviderCache::~SourceProviderCache): 775 (JSC::SourceProviderCache::clear): 776 (JSC::SourceProviderCache::byteSize): 777 (JSC::SourceProviderCache::add): 778 * parser/SourceProviderCache.h: 779 780 2011-02-10 Joseph Pecoraro <joepeck (a] webkit.org> 781 782 Follow-up fix to r78291. I should pass (int) 0, not '0' to memset. 783 784 * runtime/GCActivityCallbackCF.cpp: 785 (JSC::DefaultGCActivityCallback::commonConstructor): fix mistaken post-review change. 786 787 2011-02-10 Joseph Pecoraro <joepeck (a] webkit.org> 788 789 Reviewed by Geoffrey Garen. 790 791 Make DefaultGCActivityCallback for PLATFORM(CF) Easier to Subclass 792 https://bugs.webkit.org/show_bug.cgi?id=54257 793 794 A subclass may want to specify the CFRunLoop that the Garbage Collection 795 will happen on. It was difficult to manipulate this in a subclass because 796 the current DefaultGCActivityCallback class does this in its constructor. 797 This patch generalizes things a bit more so that a specific run loop can 798 be passed in to the constructor. This makes it so all run loop management 799 can stay in DefaultGCActivityCallback and a subclass can specify any runloop. 800 801 * runtime/GCActivityCallback.h: expose a PLATFORM(CF) constructor that can 802 specify the runloop GC can be scheduled on. 803 * runtime/GCActivityCallbackCF.cpp: 804 (JSC::DefaultGCActivityCallback::DefaultGCActivityCallback): two constructors, 805 one that specifies the run loop and passes that on to commonConstructor and 806 the old constructor defaults to the current run loop. 807 (JSC::DefaultGCActivityCallback::commonConstructor): do normal construction, 808 adding the timer to the given runloop. 809 810 2011-02-10 Geoffrey Garen <ggaren (a] apple.com> 811 812 Reviewed by Oliver Hunt. 813 814 A little more encapsulation for MarkedBlock: Moved allocate() and sweep() into MarkedBlock 815 https://bugs.webkit.org/show_bug.cgi?id=54253 816 817 SunSpider reports no change. 818 819 * runtime/CollectorHeapIterator.h: Removed DeadObjectIterator, since it 820 is now unused. 821 822 * runtime/Heap.cpp: 823 (JSC::Heap::reset): Moved the call to shrink() here, since it seems a 824 little more clear for MarkedSpace's client to tell it explicitly when to 825 shrink. 826 827 * runtime/JSCell.h: 828 (JSC::JSCell::MarkedBlock::allocate): Split out from MarkedSpace::allocate. 829 830 * runtime/MarkedBlock.cpp: 831 (JSC::MarkedBlock::sweep): Split out from MarkedSpace::sweep, and 832 converted to more directly iterate a MarkedBlock based on knowing its 833 internal structure. 834 835 * runtime/MarkedBlock.h: 836 * runtime/MarkedSpace.cpp: 837 (JSC::MarkedSpace::allocate): 838 (JSC::MarkedSpace::sweep): 839 * runtime/MarkedSpace.h: Split out the code mentioned above. 840 841 2011-02-10 Patrick Gansterer <paroga (a] webkit.org> 842 843 Reviewed by Andreas Kling. 844 845 Fix compilation error on OpenBSD 846 https://bugs.webkit.org/show_bug.cgi?id=53766 847 848 Add a HAVE_STRNSTR in Platform.h and define it only on Darwin and FreeBSD. 849 850 * wtf/Platform.h: 851 * wtf/StringExtras.h: Use HAVE(STRNSTR) now. 852 853 2011-02-10 Adam Roben <aroben (a] apple.com> 854 855 Print locations of assertions and logs in a way that Visual Studio understands 856 857 With this change, double-clicking one of these locations in Visual Studio's Output Window 858 will focus that line of code in the editor. 859 860 Fixes <http://webkit.org/b/54208> Double-clicking locations of assertions/logs in Visual 861 Studio's Output Window does nothing 862 863 Reviewed by Alexey Proskuryakov. 864 865 * wtf/Assertions.cpp: 866 (printCallSite): Use OS(WINDOWS) instead of the meaningless OS(WIN). When we aren't using 867 the debug CRT (and thus can't call _CrtDbgReport), print the file and line number using the 868 same format that cl.exe uses when it prints compiler errors. 869 870 2011-02-10 Dan Bernstein <mitz (a] apple.com> 871 872 LLVM Compiler build fix. 873 874 * runtime/MarkedBlock.cpp: 875 (JSC::MarkedBlock::create): 876 877 2011-02-10 Peter Varga <pvarga (a] webkit.org> 878 879 Reviewed by Csaba Osztrogonc. 880 881 Remove PCRE source from trunk 882 https://bugs.webkit.org/show_bug.cgi?id=54188 883 884 * Android.mk: 885 * Android.v8.wtf.mk: 886 * CMakeLists.txt: 887 * DerivedSources.make: 888 * DerivedSources.pro: 889 * GNUmakefile.am: 890 * JavaScriptCore.gypi: 891 * JavaScriptCore.order: 892 * JavaScriptCore.pri: 893 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: 894 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreCommon.vsprops: 895 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreGenerated.make: 896 * JavaScriptCore.vcproj/WTF/WTFCommon.vsprops: 897 * JavaScriptCore.vcproj/jsc/jscCommon.vsprops: 898 * JavaScriptCore.xcodeproj/project.pbxproj: 899 * pcre/AUTHORS: Removed. 900 * pcre/COPYING: Removed. 901 * pcre/dftables: Removed. 902 * pcre/pcre.h: Removed. 903 * pcre/pcre.pri: Removed. 904 * pcre/pcre_compile.cpp: Removed. 905 * pcre/pcre_exec.cpp: Removed. 906 * pcre/pcre_internal.h: Removed. 907 * pcre/pcre_tables.cpp: Removed. 908 * pcre/pcre_ucp_searchfuncs.cpp: Removed. 909 * pcre/pcre_xclass.cpp: Removed. 910 * pcre/ucpinternal.h: Removed. 911 * pcre/ucptable.cpp: Removed. 912 * wscript: 913 914 2011-02-10 Patrick Gansterer <paroga (a] webkit.org> 915 916 Reviewed by Adam Barth. 917 918 Add randomValuesFromOS for OS(WINDOWS) 919 https://bugs.webkit.org/show_bug.cgi?id=54155 920 921 Use CryptGenRandom for generating cryptographically secure random numbers. 922 This will work on WinCE and MinGW too. 923 924 * config.h: 925 * wtf/OSRandomSource.cpp: 926 (WTF::randomValuesFromOS): 927 928 2011-02-10 Jarred Nicholls <jarred (a] sencha.com> 929 930 Reviewed by Adam Barth. 931 932 REGRESSION(r78149): Return value of read() shouldn't be ignored. 933 https://bugs.webkit.org/show_bug.cgi?id=54167 934 935 stdio read should have its return value handled. Build error in gcc 4.4.5. 936 937 * wtf/OSRandomSource.cpp: 938 (WTF::randomValuesFromOS): 939 940 2011-02-10 Patrick Gansterer <paroga (a] webkit.org> 941 942 Reviewed by Adam Barth. 943 944 Rename randomValuesFromOS to cryptographicallyRandomValuesFromOS 945 https://bugs.webkit.org/show_bug.cgi?id=54156 946 947 randomValuesFromOS generates random numbers of cryptographic quality. 948 Make this clear by adding "cryptographically" to the function name. 949 950 * wtf/CryptographicallyRandomNumber.cpp: 951 (WTF::ARC4Stream::ARC4RandomNumberGenerator::stir): 952 * wtf/OSRandomSource.cpp: 953 (WTF::cryptographicallyRandomValuesFromOS): 954 * wtf/OSRandomSource.h: 955 956 2011-02-09 Mark Rowe <mrowe (a] apple.com> 957 958 Reviewed by Sam Weinig. 959 960 <rdar://problem/8805364> Malloc zone enumeration code should be safe in the face of errors from the memory reader. 961 962 * wtf/FastMalloc.cpp: 963 (WTF::PageHeapAllocator::recordAdministrativeRegions): Use the new helper function to walk the linked list safely. 964 (WTF::TCMalloc_ThreadCache_FreeList::enumerateFreeObjects): Ditto. 965 (WTF::TCMalloc_Central_FreeList::enumerateFreeObjects): Ditto. 966 (WTF::TCMallocStats::PageMapFreeObjectFinder::visit): Bail out if the span could not be read. 967 (WTF::TCMallocStats::PageMapMemoryUsageRecorder::visit): Ditto. 968 * wtf/MallocZoneSupport.h: 969 (WTF::RemoteMemoryReader::operator()): Remove an assert that is not valid. 970 (WTF::RemoteMemoryReader::nextEntryInLinkedList): Add a helper function for retrieving the next entry in 971 a linked list. It maps a failed read of the remote memory in to a null pointer, which all callers can 972 handle gracefully. 973 974 2011-02-09 Gavin Barraclough <barraclough (a] apple.com> 975 976 Reviewed by Sam Weinig. 977 978 Bug 54164 - Optimize global_var accesses on JSVALUE64 979 980 Directly embed the pointer to d->registers, optimize out the load 981 from the variable object, as we do already in JSVALUE32_64. 982 983 This is a ~1.5% win on sunspidey. 984 985 * jit/JIT.cpp: 986 * jit/JIT.h: 987 * jit/JITOpcodes.cpp: 988 (JSC::JIT::emit_op_get_global_var): 989 (JSC::JIT::emit_op_put_global_var): 990 (JSC::JIT::emit_op_get_scoped_var): 991 (JSC::JIT::emit_op_put_scoped_var): 992 993 2011-02-09 Geoffrey Garen <ggaren (a] apple.com> 994 995 Reviewed by Oliver Hunt. 996 997 A little more encapsulation for MarkedBlock: Made MarkedBlock responsible 998 for its own initialization and destruction 999 https://bugs.webkit.org/show_bug.cgi?id=54137 1000 1001 * runtime/CollectorHeapIterator.h: Removed ObjectIterator since it is 1002 now unused. 1003 1004 * runtime/JSCell.h: Maded MarkedBlock a friend so it can construct and 1005 destruct JSCells. 1006 1007 * runtime/MarkedBlock.cpp: 1008 (JSC::MarkedBlock::create): 1009 (JSC::MarkedBlock::destroy): 1010 (JSC::MarkedBlock::MarkedBlock): Migrated initialization and destruction 1011 code from MarkedSpace, updating it not to use ObjectIterator. We don't 1012 want to use an abstract iterator since iteration will be unique to each 1013 block in the future. 1014 1015 * runtime/MarkedBlock.h: Made the consructor private and moved it into 1016 the .cpp file because it's big now. 1017 1018 * runtime/MarkedSpace.cpp: 1019 (JSC::MarkedSpace::allocateBlock): 1020 (JSC::MarkedSpace::freeBlock): Migrated code. 1021 1022 * runtime/MarkedSpace.h: 1023 (JSC::CollectorHeap::collectorBlock): Keep a vector of MarkedBlock 1024 pointers instead of aligned allocations -- how MarkedBlocks are allocated 1025 is now an implementation detail of MarkedBlock. 1026 1027 2011-02-09 Adam Barth <abarth (a] webkit.org> 1028 1029 Another attempt to fix the Qt Windows build. 1030 1031 * config.h: 1032 * wtf/OSRandomSource.cpp: 1033 (WTF::randomValuesFromOS): 1034 1035 2011-02-09 Adam Barth <abarth (a] webkit.org> 1036 1037 Attempt to fix the Qt Windows build. 1038 1039 * wtf/OSRandomSource.cpp: 1040 (WTF::randomValuesFromOS): 1041 1042 2011-02-09 Adam Barth <abarth (a] webkit.org> 1043 1044 Reviewed by Eric Seidel. 1045 1046 Add WTF::cryptographicallyRandomNumber 1047 https://bugs.webkit.org/show_bug.cgi?id=54083 1048 1049 Introduce a cryptographically strong random number generator to WTF. 1050 The random number generator is based on arc4random as found in: 1051 1052 http://www.openbsd.org/cgi-bin/cvsweb/src/lib/libc/crypt/arc4random.c?rev=1.22 1053 1054 I've changed to source to WebKit style and abstracted the operating 1055 system interaction to OSRandomSource. We'll use this functionality to 1056 expose a cryptographically strong random number generator to 1057 JavaScript. 1058 1059 * Android.mk: 1060 * Android.v8.wtf.mk: 1061 * GNUmakefile.am: 1062 * JavaScriptCore.gypi: 1063 * JavaScriptCore.vcproj/WTF/WTF.vcproj: 1064 * JavaScriptCore.xcodeproj/project.pbxproj: 1065 * config.h: 1066 * wtf/CMakeLists.txt: 1067 * wtf/CryptographicallyRandomNumber.cpp: Added. 1068 (WTF::initMutexIfNeeded): 1069 (WTF::init): 1070 (WTF::addRandomData): 1071 (WTF::stir): 1072 (WTF::stirIfNeeded): 1073 (WTF::getByte): 1074 (WTF::getWord): 1075 (WTF::cryptographicallyRandomNumber): 1076 (WTF::cryptographicallyRandomValues): 1077 * wtf/CryptographicallyRandomNumber.h: Added. 1078 * wtf/OSRandomSource.cpp: Added. 1079 (WTF::randomValuesFromOS): 1080 * wtf/OSRandomSource.h: Added. 1081 * wtf/wtf.pri: 1082 1083 2011-02-09 Geoffrey Garen <ggaren (a] apple.com> 1084 1085 Try to fix the build. 1086 1087 * wtf/Bitmap.h: Include string.h for memset. Not sure why this started 1088 failing now. 1089 1090 2011-02-09 Geoffrey Garen <ggaren (a] apple.com> 1091 1092 Reviewed by Sam Weinig. 1093 1094 A tiny bit of encapsulation for MarkedBlock: made its heap data member private 1095 https://bugs.webkit.org/show_bug.cgi?id=54129 1096 1097 * runtime/MarkedBlock.h: 1098 (JSC::MarkedBlock::isCellAligned): 1099 (JSC::MarkedBlock::MarkedBlock): 1100 (JSC::MarkedBlock::heap): Made the heap data member private, and provided 1101 a constructor and an accessor. 1102 1103 * runtime/MarkedSpace.cpp: 1104 (JSC::MarkedSpace::allocateBlock): 1105 * runtime/MarkedSpace.h: 1106 (JSC::MarkedSpace::heap): Use the constructor and accessor. 1107 1108 2011-02-09 Peter Varga <pvarga (a] webkit.org> 1109 1110 Reviewed by Gavin Barraclough. 1111 1112 Replace PCRE with Yarr in WebCore 1113 https://bugs.webkit.org/show_bug.cgi?id=53496 1114 1115 * JavaScriptCore.exp: 1116 * JavaScriptCore.gyp/JavaScriptCore.gyp: 1117 * JavaScriptCore.gypi: 1118 * JavaScriptCore.pro: 1119 * JavaScriptCore.xcodeproj/project.pbxproj: 1120 * create_regex_tables: 1121 * runtime/RegExp.cpp: 1122 * wtf/Platform.h: 1123 * yarr/Yarr.h: 1124 * yarr/YarrJIT.cpp: 1125 * yarr/YarrJIT.h: 1126 * yarr/YarrParser.h: 1127 * yarr/YarrPattern.h: 1128 * yarr/YarrSyntaxChecker.h: 1129 * yarr/yarr.pri: Added. 1130 1131 2011-02-08 Geoffrey Garen <ggaren (a] apple.com> 1132 1133 Reviewed by Sam Weinig. 1134 1135 Removed some dead code from Heap 1136 https://bugs.webkit.org/show_bug.cgi?id=54064 1137 1138 * runtime/MarkedSpace.cpp: Removed some now-unused constants and 1139 declarations. 1140 1141 (JSC::MarkedSpace::allocate): Removed some ASSERTs that are also ASSERTed 1142 by our caller. Removed redundant typedefs. 1143 1144 2011-02-08 Geoffrey Garen <ggaren (a] apple.com> 1145 1146 Reviewed by Sam Weinig. 1147 1148 Use a vector to track blocks in the Heap, instead of hand-rolled vector-like code 1149 https://bugs.webkit.org/show_bug.cgi?id=54062 1150 1151 SunSpider reports no change. 1152 1153 * runtime/CollectorHeapIterator.h: 1154 (JSC::CollectorHeapIterator::isValid): 1155 (JSC::CollectorHeapIterator::isLive): Updated for new mark invariant: To 1156 know if an object is live, you just need to test its mark bit. 1157 1158 * runtime/MarkedSpace.cpp: 1159 (JSC::MarkedSpace::MarkedSpace): Moved waterMark and highWaterMark from 1160 CollectorHeap into MarkedSpace, since they're global state. Removed call 1161 to memset since CollectorHeap is a true class with its own constructor now. 1162 1163 (JSC::MarkedSpace::destroy): Change uses of m_heap.usedBlocks to 1164 m_heap.blocks.size(), and m_heap.numBlocks to m_heap.blocks.capacity(). 1165 1166 (JSC::MarkedSpace::allocateBlock): 1167 (JSC::MarkedSpace::freeBlock): No need to manage our vector manually anymore. 1168 1169 (JSC::MarkedSpace::allocate): 1170 (JSC::MarkedSpace::shrink): 1171 (JSC::MarkedSpace::clearMarkBits): 1172 (JSC::MarkedSpace::markedCells): 1173 (JSC::MarkedSpace::sweep): 1174 (JSC::MarkedSpace::objectCount): 1175 (JSC::MarkedSpace::capacity): 1176 (JSC::MarkedSpace::reset): 1177 (JSC::MarkedSpace::primaryHeapEnd): 1178 * runtime/MarkedSpace.h: 1179 (JSC::CollectorHeap::CollectorHeap): 1180 (JSC::MarkedSpace::highWaterMark): 1181 (JSC::MarkedSpace::setHighWaterMark): 1182 (JSC::MarkedSpace::contains): Same as above. 1183 1184 2011-02-08 Geoffrey Garen <ggaren (a] apple.com> 1185 1186 Reviewed by Darin Adler. 1187 1188 Give each MarkedBlock enough mark bits to cover the whole block 1189 https://bugs.webkit.org/show_bug.cgi?id=54029 1190 1191 SunSpider reports no change. 1192 1193 This simplifies access to mark bits, since any cell-aligned pointer 1194 into a block now has a valid mark bit to test. 1195 1196 * runtime/MarkedBlock.h: Changed CELLS_PER_BLOCK to account for the extra 1197 mark bits. This happens not to change its actual value. 1198 (JSC::MarkedBlock::cellNumber): 1199 (JSC::MarkedBlock::isMarked): 1200 (JSC::MarkedBlock::testAndSetMarked): 1201 (JSC::MarkedBlock::setMarked): Changed const JSCell* to const void* to 1202 remove a cast from our caller, and to more accurately reflect the fact 1203 that MarkedBlock is agnostic about the types pointed to by the pointers 1204 you pass to it. 1205 1206 (JSC::MarkedBlock::isPossibleCell): Removed a null check. We now consider 1207 the null pointer to be a possible cell with a 0 (impossible) block. This 1208 removes a null check from marking. 1209 1210 * runtime/MarkedSpace.cpp: 1211 * runtime/MarkedSpace.h: 1212 (JSC::MarkedSpace::contains): Simplified the contains check, and inlined 1213 the whole thing, now that it's so simple. 1214 1215 2011-02-08 Daniel Bates <dbates (a] rim.com> 1216 1217 Rubber-stamped by Martin Robinson. 1218 1219 Rename enum ProtectionSeting [sic] to ProtectionSetting. 1220 1221 * jit/ExecutableAllocator.cpp: 1222 (JSC::ExecutableAllocator::reprotectRegion): 1223 * jit/ExecutableAllocator.h: 1224 1225 2011-02-08 Balazs Kelemen <kbalazs (a] webkit.org> 1226 1227 Reviewed by Andreas Kling. 1228 1229 [Qt] Should not always define USE_SYSTEM_MALLOC 1230 https://bugs.webkit.org/show_bug.cgi?id=54007 1231 1232 * wtf/Platform.h: 1233 1234 2011-02-08 Dan Bernstein <mitz (a] apple.com> 1235 1236 Reviewed by Maciej Stachowiak. 1237 1238 LLVM Compiler build fix. 1239 1240 * runtime/WriteBarrier.h: 1241 (JSC::WriteBarrier::WriteBarrier): 1242 1243 2011-02-07 Ryosuke Niwa <rniwa (a] webkit.org> 1244 1245 Reviewed by Darin Adler. 1246 1247 JSVariableObject::setRegisters should take PassOwnArrayPtr for registersArray. 1248 https://bugs.webkit.org/show_bug.cgi?id=53902 1249 1250 * runtime/Arguments.h: 1251 (JSC::JSActivation::copyRegisters): Uses OwnArrayPtr<Register> instead of Register*. 1252 * runtime/JSGlobalObject.cpp: 1253 (JSC::JSGlobalObject::copyGlobalsFrom): Ditto. 1254 * runtime/JSGlobalObject.h: 1255 (JSC::JSGlobalObject::setRegisters): Takes PassOwnArrayPtr<Register> instead of Register* 1256 for registerArray. 1257 * runtime/JSVariableObject.h: 1258 (JSC::JSVariableObject::copyRegisterArray): Returns PassOwnArrayPtr<Register> instead of Register*. 1259 (JSC::JSVariableObject::setRegisters): Takes PassOwnArrayPtr<Register> instead of Register* 1260 for registerArray. 1261 1262 2011-02-07 Geoffrey Garen <ggaren (a] apple.com> 1263 1264 Reviewed by Sam Weinig. 1265 1266 Removed some dead code from Heap 1267 https://bugs.webkit.org/show_bug.cgi?id=53969 1268 1269 SunSpider reports no change. 1270 1271 * runtime/MarkedSpace.cpp: 1272 (JSC::MarkedSpace::shrink): 1273 (JSC::MarkedSpace::sweep): 1274 * runtime/MarkedSpace.h: Removed resizeBlocks and growBlocks, and 1275 renamed shrinkBlocks to shrink, making it unconditionally shrink as 1276 much as possible. 1277 1278 2011-02-07 Geoffrey Garen <ggaren (a] apple.com> 1279 1280 Reviewed by Oliver Hunt. 1281 1282 Simplified the marked space's mark invariant 1283 https://bugs.webkit.org/show_bug.cgi?id=53968 1284 1285 SunSpider reports no change. 1286 1287 * runtime/MarkedSpace.cpp: 1288 (JSC::MarkedSpace::allocate): Mark objects when allocating them. This 1289 means that, at all times other than the mark phase, an object is live 1290 if and only if it is marked. 1291 1292 (JSC::MarkedSpace::containsSlowCase): Use the new mark invariant to 1293 simplify testing whether an object is live. 1294 1295 2011-02-07 Beth Dakin <bdakin (a] apple.com> 1296 1297 Reviewed by Eric Seidel. 1298 1299 Fix for https://bugs.webkit.org/show_bug.cgi?id=53950 1300 USE_WK_SCROLLBAR_PAINTER in ScrollbarThemeMac should be in 1301 Platform.h instead 1302 1303 * wtf/Platform.h: 1304 1305 2011-02-07 Darin Adler <darin (a] apple.com> 1306 1307 Reviewed by Antti Koivisto. 1308 1309 Add built-in decoder for UTF-8 for improved performance 1310 https://bugs.webkit.org/show_bug.cgi?id=53898 1311 1312 * wtf/unicode/UnicodeMacrosFromICU.h: Added U8_MAX_LENGTH and 1313 U8_APPEND_UNSAFE. Also fixed header. 1314 1315 2011-02-07 Adam Roben <aroben (a] apple.com> 1316 1317 Delete precompiled headers whenever any .vsprops file changes 1318 1319 Precompiled headers need to be rebuilt if, e.g., an ENABLE_* macro is changed in one of our 1320 .vsprops files. Unfortunately, Visual Studio isn't smart enough to figure this out, so we 1321 give it some assistance by deleting the precompiled headers whenever any .vsprops file 1322 changes. 1323 1324 I also made some drive-by fixes while I was in the area. 1325 1326 Fixes <http://webkit.org/b/53826> react-to-vsprops-changes.py doesn't force precompiled 1327 headers to be rebuilt, but should 1328 1329 Reviewed by David Kilzer. 1330 1331 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreGenerated.make: Stop ignoring the 1332 return code from react-to-vsprops-changes.py so we will notice when errors are introduced. 1333 But skip the script entirely in production builds, where it is both unnecessary and can't 1334 function correctly (due to not having the entire source tree available to it). 1335 1336 * JavaScriptCore.vcproj/JavaScriptCore/react-to-vsprops-changes.py: 1337 (main): Removed an extra '*' in the glob for finding manifest files. The extra '*' was 1338 leftover from before we rearranged WebKitBuild in r75138. Moved code to delete an old file 1339 to the new delete_if_older_than function. Added code to delete any precompiled headers older 1340 than the newest .vsprops file. 1341 (delete_if_older_than): Added. Code came from main. 1342 1343 2011-02-07 Antti Koivisto <antti (a] apple.com> 1344 1345 Not reviewed. 1346 1347 ASSERTS_DISABLED -> ASSERT_DISABLED 1348 1349 * wtf/BloomFilter.h: 1350 1351 2011-02-06 Ryosuke Niwa <rniwa (a] webkit.org> 1352 1353 Unreviewed; speculative Qt build fix. 1354 1355 * JavaScriptCore.pro: 1356 1357 2011-02-06 Ryosuke Niwa <rniwa (a] webkit.org> 1358 1359 Reviewed by Darin Adler. 1360 1361 OwnArraryPtr.h uses deleteOwnedPtr but doesnt include OwnPtrCommon.h 1362 https://bugs.webkit.org/show_bug.cgi?id=52867 1363 1364 Removed LOOSE_OWN_ARRAY_PTR and OwnArrayPtr<T>::set. Replaced all calls to OwnArrayPtr::set 1365 and loose instantiation of OwnArrayPtr by calls to operator= and adoptArrayPtr. Also removed 1366 OwnArrayPtrCommon.h since PassOwnArrayPtr.h needs to include OwnArrayPtr.h and there is 1367 no point in putting deleteOwnedArrayPtr into a separate header. 1368 1369 Note: if this patch breaks build, the code is either instiantiating OwnArrayPtr 1370 without calling adoptArrayPtr or calling set on ArrayOwnPtr instead of operator=. 1371 1372 No tests are added since this is a refactoring. 1373 1374 * API/JSStringRefCF.cpp: 1375 (JSStringCreateWithCFString): Calls adoptArrayPtr. 1376 * GNUmakefile.am: Removed OwnArrayPtrCommon.h 1377 * JavaScriptCore.vcproj/WTF/WTF.vcproj: Ditto. 1378 * JavaScriptCore.xcodeproj/project.pbxproj: Ditto. 1379 * runtime/Arguments.cpp: 1380 (JSC::Arguments::deleteProperty): Calls adoptArrayPtr. 1381 * runtime/Arguments.h: 1382 (JSC::Arguments::copyRegisters): Ditto. 1383 * runtime/JSPropertyNameIterator.cpp: 1384 (JSC::JSPropertyNameIterator::JSPropertyNameIterator): Ditto. 1385 * runtime/JSVariableObject.h: 1386 (JSC::JSVariableObject::setRegisters): Calls operator= instead of set. 1387 * runtime/StructureChain.cpp: 1388 (JSC::StructureChain::StructureChain): Ditto. 1389 * wtf/CMakeLists.txt: 1390 * wtf/DateMath.h: 1391 (JSC::GregorianDateTime::GregorianDateTime): No longer instnatiates OwnArrayPtr 1392 with a null pointer. 1393 * wtf/OwnArrayPtr.h: 1394 * wtf/OwnArrayPtrCommon.h: Removed. 1395 * wtf/PassOwnArrayPtr.h: No longer includes OwnArrayCommon.h 1396 (WTF::deleteOwnedArrayPtr): Moved from OwnArrayPtrCommon.h 1397 1398 2011-02-06 Antti Koivisto <antti (a] apple.com> 1399 1400 Reviewed by Maciej Stachowiak. 1401 1402 Use bloom filter for descendant selector filtering 1403 https://bugs.webkit.org/show_bug.cgi?id=53880 1404 1405 Implement a bloom filter with k=2 and 8 bit counting. 1406 1407 * GNUmakefile.am: 1408 * JavaScriptCore.gypi: 1409 * JavaScriptCore.vcproj/WTF/WTF.vcproj: 1410 * JavaScriptCore.xcodeproj/project.pbxproj: 1411 * wtf/BloomFilter.h: Added. 1412 (WTF::BloomFilter::maximumCount): 1413 (WTF::BloomFilter::BloomFilter): 1414 (WTF::BloomFilter::mayContain): 1415 (WTF::BloomFilter::add): 1416 (WTF::BloomFilter::remove): 1417 (WTF::BloomFilter::firstSlot): 1418 (WTF::BloomFilter::secondSlot): 1419 (WTF::::add): 1420 (WTF::::remove): 1421 (WTF::::clear): 1422 (WTF::::likelyEmpty): 1423 (WTF::::isClear): 1424 1425 2011-02-04 Geoffrey Garen <ggaren (a] apple.com> 1426 1427 Reviewed by Oliver Hunt. 1428 1429 Rolled back in r77612 with ASSERT/crash fixed. 1430 https://bugs.webkit.org/show_bug.cgi?id=53759 1431 1432 Don't shrink the heap to 0 unconditionally. Instead, shrink to 1 if 1433 necessary. For now, the heap assumes that it always has at least one 1434 block live. 1435 1436 * runtime/Heap.cpp: 1437 (JSC::Heap::Heap): 1438 (JSC::Heap::reset): 1439 * runtime/Heap.h: 1440 * runtime/MarkedSpace.cpp: 1441 (JSC::MarkedSpace::allocate): 1442 (JSC::MarkedSpace::shrinkBlocks): 1443 (JSC::MarkedSpace::sweep): 1444 (JSC::MarkedSpace::reset): 1445 * runtime/MarkedSpace.h: 1446 (JSC::MarkedSpace::highWaterMark): 1447 (JSC::MarkedSpace::setHighWaterMark): 1448 1449 2011-02-04 David Kilzer <ddkilzer (a] apple.com> 1450 1451 BUILD FIX: REALLY remove the last vestiges of JSVALUE32! 1452 1453 <rdar://problem/8957409> Remove last vestiges of JSVALUE32 1454 <http://webkit.org/b/53779> 1455 1456 * DerivedSources.make: Removed dependency on 1457 JavaScriptCore.JSVALUE32.exp. 1458 1459 2011-02-04 David Kilzer <ddkilzer (a] apple.com> 1460 1461 <rdar://problem/8957409> Remove last vestiges of JSVALUE32 1462 <http://webkit.org/b/53779> 1463 1464 Reviewed by Darin Adler. 1465 1466 Support for JSVALUE32 was originaly removed in r70111. 1467 1468 * Configurations/JavaScriptCore.xcconfig: Changed armv6 to use 1469 JavaScriptCore.JSVALUE32_64.exp and ppc64 to use 1470 JavaScriptCore.JSVALUE64.exp to match Platform.h. 1471 * DerivedSources.make: Removed rule for 1472 JavaScriptCore.JSVALUE32.exp. 1473 * JavaScriptCore.JSVALUE32only.exp: Removed. 1474 * JavaScriptCore.xcodeproj/project.pbxproj: Removed references 1475 to JavaScriptCore.JSVALUE32only.exp. 1476 1477 2011-02-04 David Kilzer <ddkilzer (a] apple.com> 1478 1479 Use static_cast and other style cleanup in YarrInterpreter.cpp 1480 <http://webkit.org/b/53772> 1481 1482 Reviewed by John Sullivan. 1483 1484 * yarr/YarrInterpreter.cpp: 1485 (JSC::Yarr::Interpreter::InputStream::readChecked): Use 1486 static_cast. 1487 (JSC::Yarr::Interpreter::InputStream::checkInput): Remove 1488 unnecessary else block. 1489 (JSC::Yarr::Interpreter::matchAssertionEOL): Ditto. 1490 (JSC::Yarr::Interpreter::backtrackBackReference): Ditto. 1491 (JSC::Yarr::ByteCompiler::emitDisjunction): Use static_cast. 1492 1493 2011-02-04 Sheriff Bot <webkit.review.bot (a] gmail.com> 1494 1495 Unreviewed, rolling out r77625 and r77626. 1496 http://trac.webkit.org/changeset/77625 1497 http://trac.webkit.org/changeset/77626 1498 https://bugs.webkit.org/show_bug.cgi?id=53765 1499 1500 It broke Windows builds (Requested by Ossy_ on #webkit). 1501 1502 * JavaScriptCore.exp: 1503 * JavaScriptCore.gyp/JavaScriptCore.gyp: 1504 * JavaScriptCore.gypi: 1505 * JavaScriptCore.pro: 1506 * JavaScriptCore.xcodeproj/project.pbxproj: 1507 * create_regex_tables: 1508 * runtime/RegExp.cpp: 1509 * wtf/Platform.h: 1510 * yarr/Yarr.h: 1511 * yarr/YarrJIT.cpp: 1512 * yarr/YarrJIT.h: 1513 * yarr/YarrParser.h: 1514 * yarr/YarrPattern.h: 1515 * yarr/YarrSyntaxChecker.h: 1516 * yarr/yarr.pri: Removed. 1517 1518 2011-02-04 Jessie Berlin <jberlin (a] apple.com> 1519 1520 Windows build fix. Unreviewed. 1521 1522 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreGenerated.make: 1523 1524 2011-02-04 Peter Varga <pvarga (a] webkit.org> 1525 1526 Reviewed by Gavin Barraclough. 1527 1528 Replace PCRE with Yarr in WebCore 1529 https://bugs.webkit.org/show_bug.cgi?id=53496 1530 1531 * JavaScriptCore.exp: 1532 * JavaScriptCore.gyp/JavaScriptCore.gyp: 1533 * JavaScriptCore.gypi: 1534 * JavaScriptCore.pro: 1535 * JavaScriptCore.xcodeproj/project.pbxproj: 1536 * create_regex_tables: 1537 * runtime/RegExp.cpp: 1538 * wtf/Platform.h: 1539 * yarr/Yarr.h: 1540 * yarr/YarrJIT.cpp: 1541 * yarr/YarrJIT.h: 1542 * yarr/YarrParser.h: 1543 * yarr/YarrPattern.h: 1544 * yarr/YarrSyntaxChecker.h: 1545 * yarr/yarr.pri: Added. 1546 1547 2011-02-04 Ilya Tikhonovsky <loislo (a] chromium.org> 1548 1549 Unreviewed rollout two patches r77614 and r77612. 1550 1551 REGRESSION: Snow Leopard Intel Release anumber of failing tests. 1552 1553 * runtime/Heap.cpp: 1554 (JSC::Heap::Heap): 1555 (JSC::Heap::reset): 1556 * runtime/Heap.h: 1557 * runtime/MarkedSpace.cpp: 1558 (JSC::MarkedSpace::allocate): 1559 (JSC::MarkedSpace::sweep): 1560 (JSC::MarkedSpace::reset): 1561 * runtime/MarkedSpace.h: 1562 1563 2011-02-04 Geoffrey Garen <ggaren (a] apple.com> 1564 1565 Try to fix 32bit build. 1566 1567 * runtime/Heap.cpp: 1568 (JSC::Heap::reset): Use an explicit cast to avoid shortening warnings, 1569 since 1.5 is double (64bit), and the result is size_t (32bit). 1570 1571 2011-02-03 Geoffrey Garen <ggaren (a] apple.com> 1572 1573 Reviewed by Cameron Zwarich. 1574 1575 Changed MarkedSpace to delegate grow/shrink decisions to Heap 1576 https://bugs.webkit.org/show_bug.cgi?id=53759 1577 1578 SunSpider reports no change. 1579 1580 * runtime/Heap.cpp: 1581 (JSC::Heap::Heap): 1582 (JSC::Heap::reset): 1583 * runtime/Heap.h: Reorganized a few data members for better cache locality. 1584 Added a grow policy. 1585 1586 * runtime/MarkedSpace.cpp: 1587 (JSC::MarkedSpace::allocate): 1588 (JSC::MarkedSpace::sweep): 1589 (JSC::MarkedSpace::reset): Don't shrink automatically. Instead, wait for 1590 the heap to make an explicit sweep call. 1591 1592 * runtime/MarkedSpace.h: 1593 (JSC::MarkedSpace::highWaterMark): 1594 (JSC::MarkedSpace::setHighWaterMark): Use a watermark to determine how 1595 many bytes to allocate before failing and giving the heap an opportunity 1596 to collect garbage. This also means that we allocate blocks on demand, 1597 instead of ahead of time. 1598 1599 2011-02-03 James Kozianski <koz (a] chromium.org> 1600 1601 Reviewed by Dimitri Glazkov. 1602 1603 Add navigator.registerProtocolHandler behind a flag. 1604 https://bugs.webkit.org/show_bug.cgi?id=52609 1605 1606 * Configurations/FeatureDefines.xcconfig: 1607 1608 2011-02-03 Geoffrey Garen <ggaren (a] apple.com> 1609 1610 Reviewed by Oliver Hunt. 1611 1612 Not all blocks are freed when the heap is freed (counting is hard!) 1613 https://bugs.webkit.org/show_bug.cgi?id=53732 1614 1615 * runtime/MarkedSpace.cpp: 1616 (JSC::MarkedSpace::destroy): Freeing a block compacts the list, so just 1617 keep freeing block 0 until there are no blocks left. 1618 1619 2011-02-03 Geoffrey Garen <ggaren (a] apple.com> 1620 1621 Try to fix the Mac build. 1622 1623 * JavaScriptCore.xcodeproj/project.pbxproj: The new MarkedBlock.h header 1624 needs to be private, not project, so other projects can include headers 1625 that depend on it. 1626 1627 2011-02-03 Geoffrey Garen <ggaren (a] apple.com> 1628 1629 Reviewed by Sam Weinig. 1630 1631 Start using MarkedBlock instead of CollectorBlock 1632 https://bugs.webkit.org/show_bug.cgi?id=53693 1633 1634 SunSpider reports no change. 1635 1636 * runtime/MarkedBlock.h: 1637 (JSC::MarkedBlock::blockFor): 1638 (JSC::MarkedBlock::setMarked): 1639 (JSC::MarkedBlock::isCellAligned): 1640 (JSC::MarkedBlock::isPossibleCell): Updated for const-ness. 1641 1642 * runtime/MarkedSpace.cpp: 1643 (JSC::MarkedSpace::allocateBlock): 1644 (JSC::MarkedSpace::containsSlowCase): 1645 (JSC::MarkedSpace::clearMarkBits): Updated for const-ness. 1646 1647 * runtime/MarkedSpace.h: 1648 (JSC::CollectorHeap::collectorBlock): 1649 (JSC::MarkedSpace::heap): 1650 (JSC::MarkedSpace::isMarked): 1651 (JSC::MarkedSpace::testAndSetMarked): 1652 (JSC::MarkedSpace::setMarked): 1653 (JSC::MarkedSpace::contains): Switched from CollectorBlock to MarkedBlock, 1654 and deleted dead CollectorBlock-related code. 1655 1656 2011-02-03 Patrick Gansterer <paroga (a] webkit.org> 1657 1658 Reviewed by Darin Adler. 1659 1660 Avoid strlen() in AtomicString::fromUTF8 1661 https://bugs.webkit.org/show_bug.cgi?id=50516 1662 1663 Add an overload to calculateStringHashFromUTF8 to get 1664 strlen() of the input data with only one call. 1665 1666 This change shows about 3% performance win on the xml-parser benchmark. 1667 1668 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: 1669 * wtf/text/AtomicString.cpp: 1670 (WTF::AtomicString::fromUTF8): 1671 * wtf/unicode/UTF8.cpp: 1672 (WTF::Unicode::calculateStringHashAndLengthFromUTF8Internal): 1673 (WTF::Unicode::calculateStringHashFromUTF8): 1674 (WTF::Unicode::calculateStringHashAndLengthFromUTF8): 1675 * wtf/unicode/UTF8.h: 1676 1677 2011-02-02 Gavin Barraclough <barraclough (a] apple.com> 1678 1679 Windows build fix. 1680 1681 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: 1682 1683 2011-02-02 Gavin Barraclough <barraclough (a] apple.com> 1684 1685 oops, build fix! 1686 1687 * wtf/Assertions.cpp: 1688 1689 2011-02-02 Gavin Barraclough <barraclough (a] apple.com> 1690 1691 Reviewed by Sam Weinig. 1692 1693 Bug 53650 - Add a BACKTRACE macro to Assertions.h 1694 1695 Add a BACKTRACE macro to Assertions.h, which will print a backtrace on 1696 debug Mac builds, make CRASH (and thus ASSERT) automatically call this. 1697 1698 * JavaScriptCore.exp: 1699 * wtf/Assertions.cpp: 1700 * wtf/Assertions.h: 1701 1702 2011-02-02 Michael Saboff <msaboff (a] apple.com> 1703 1704 Reviewed by Gavin Barraclough. 1705 1706 Improper backtrack of nested non-capturing greedy paren to prior paren 1707 https://bugs.webkit.org/show_bug.cgi?id=53261 1708 1709 A paren that follows a non-capturing greedy paren nested within a 1710 non-capturing fixed paren was back tracking to the last paren 1711 processed instead of the immediately prior paren. 1712 Refactored default backtracking of parens to prior paren to work for 1713 both nested (within) and immediately prior (after) parens. 1714 1715 * yarr/YarrJIT.cpp: 1716 (JSC::Yarr::YarrGenerator::GenerationState::addParenthesesTail): 1717 (JSC::Yarr::YarrGenerator::TermGenerationState::TermGenerationState): 1718 (JSC::Yarr::YarrGenerator::TermGenerationState::setJumpListToPriorParen): 1719 (JSC::Yarr::YarrGenerator::TermGenerationState::getJumpListToPriorParen): 1720 (JSC::Yarr::YarrGenerator::ParenthesesTail::ParenthesesTail): 1721 (JSC::Yarr::YarrGenerator::ParenthesesTail::generateCode): 1722 (JSC::Yarr::YarrGenerator::generateParenthesesDisjunction): 1723 (JSC::Yarr::YarrGenerator::generateParenthesesSingle): 1724 (JSC::Yarr::YarrGenerator::generateDisjunction): 1725 1726 2011-02-02 Jeff Miller <jeffm (a] apple.com> 1727 1728 Reviewed by Darin Adler and Steve Falkenburg. 1729 1730 Add DerivedSources.make to some Visual Studio projects 1731 https://bugs.webkit.org/show_bug.cgi?id=53607 1732 1733 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreGenerated.vcproj: Add DerivedSources.make. 1734 1735 2011-02-02 Steve Lacey <sjl (a] chromium.org> 1736 1737 Reviewed by Eric Carlson. 1738 1739 Implement basic media statistics on media elements. 1740 https://bugs.webkit.org/show_bug.cgi?id=53322 1741 1742 * Configurations/FeatureDefines.xcconfig: 1743 1744 2011-02-02 Kevin Ollivier <kevino (a] theolliviers.com> 1745 1746 [wx] Build fixes for wxWebKit. 1747 1748 * wtf/wx/StringWx.cpp: 1749 (WTF::String::String): 1750 1751 2011-02-01 Geoffrey Garen <ggaren (a] apple.com> 1752 1753 Reviewed by Sam Weinig. 1754 1755 A little more Heap refactoring 1756 https://bugs.webkit.org/show_bug.cgi?id=53577 1757 1758 SunSpider reports no change. 1759 1760 Split out MarkedBlock into its own file / class. 1761 1762 Did the following renames: 1763 isCellMarked => isMarked 1764 checkMarkCell => testAndSetMarked 1765 markCell => setMarked 1766 cellOffset => cellNumber 1767 collectorBlock => blockFor 1768 1769 * Android.mk: 1770 * CMakeLists.txt: 1771 * GNUmakefile.am: 1772 * JavaScriptCore.gypi: 1773 * JavaScriptCore.pro: 1774 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: 1775 * JavaScriptCore.xcodeproj/project.pbxproj: 1776 * runtime/Heap.cpp: 1777 (JSC::WeakGCHandlePool::update): 1778 * runtime/Heap.h: 1779 (JSC::Heap::isMarked): 1780 (JSC::Heap::testAndSetMarked): 1781 (JSC::Heap::setMarked): 1782 * runtime/JSArray.h: 1783 (JSC::MarkStack::markChildren): 1784 (JSC::MarkStack::drain): 1785 * runtime/JSCell.h: 1786 (JSC::JSCell::MarkStack::internalAppend): 1787 * runtime/MarkedBlock.cpp: Added. 1788 * runtime/MarkedBlock.h: Added. 1789 (JSC::MarkedBlock::blockFor): 1790 (JSC::MarkedBlock::cellNumber): 1791 (JSC::MarkedBlock::isMarked): 1792 (JSC::MarkedBlock::testAndSetMarked): 1793 (JSC::MarkedBlock::setMarked): 1794 (JSC::MarkedBlock::isCellAligned): 1795 (JSC::MarkedBlock::isPossibleCell): 1796 * runtime/MarkedSpace.h: 1797 (JSC::MarkedSpace::isMarked): 1798 (JSC::MarkedSpace::testAndSetMarked): 1799 (JSC::MarkedSpace::setMarked): 1800 * runtime/SmallStrings.cpp: 1801 (JSC::isMarked): 1802 * runtime/WeakGCMap.h: 1803 (JSC::WeakGCMap::isValid): 1804 (JSC::::get): 1805 (JSC::::take): 1806 (JSC::::set): 1807 1808 2011-02-02 Sam Weinig <sam (a] webkit.org> 1809 1810 Fix windows clean build. 1811 1812 * DerivedSources.make: 1813 1814 2011-02-02 Alejandro G. Castro <alex (a] igalia.com> 1815 1816 Reviewed by Martin Robinson. 1817 1818 [GTK] Fix dist compilation 1819 https://bugs.webkit.org/show_bug.cgi?id=53579 1820 1821 * GNUmakefile.am: Added WriteBarrier.h to the sources, it was 1822 added in r77151 1823 1824 2011-02-01 Sheriff Bot <webkit.review.bot (a] gmail.com> 1825 1826 Unreviewed, rolling out r77297. 1827 http://trac.webkit.org/changeset/77297 1828 https://bugs.webkit.org/show_bug.cgi?id=53538 1829 1830 caused leopard crashes (Requested by paroga on #webkit). 1831 1832 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: 1833 * wtf/text/AtomicString.cpp: 1834 (WTF::AtomicString::fromUTF8): 1835 * wtf/unicode/UTF8.cpp: 1836 (WTF::Unicode::calculateStringHashFromUTF8): 1837 * wtf/unicode/UTF8.h: 1838 1839 2011-02-01 Sam Weinig <sam (a] webkit.org> 1840 1841 Fix Mac production builds. 1842 1843 * JavaScriptCore.xcodeproj/project.pbxproj: 1844 1845 2011-02-01 Sam Weinig <sam (a] webkit.org> 1846 1847 Try to fix the windows build. 1848 1849 * DerivedSources.make: 1850 1851 2011-02-01 Patrick Gansterer <paroga (a] webkit.org> 1852 1853 Reviewed by Darin Adler. 1854 1855 Avoid strlen() in AtomicString::fromUTF8 1856 https://bugs.webkit.org/show_bug.cgi?id=50516 1857 1858 Add an overload to calculateStringHashFromUTF8 to get 1859 strlen() of the input data with only one call. 1860 1861 This change shows about 3% performance win on the xml-parser benchmark. 1862 1863 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: 1864 * wtf/text/AtomicString.cpp: 1865 (WTF::AtomicString::fromUTF8): 1866 * wtf/unicode/UTF8.cpp: 1867 (WTF::Unicode::calculateStringHashAndLengthFromUTF8Internal): 1868 (WTF::Unicode::calculateStringHashFromUTF8): 1869 (WTF::Unicode::calculateStringHashAndLengthFromUTF8): 1870 * wtf/unicode/UTF8.h: 1871 1872 2011-02-01 Sam Weinig <sam (a] webkit.org> 1873 1874 Reviewed by Beth Dakin. 1875 1876 Part 2 for <rdar://problem/8492788> 1877 Adopt WKScrollbarPainterController 1878 1879 Use header detection to define scrollbar painting controller #define. 1880 1881 * DerivedSources.make: 1882 * JavaScriptCore.xcodeproj/project.pbxproj: 1883 1884 2011-02-01 Geoffrey Garen <ggaren (a] apple.com> 1885 1886 Reviewed by Oliver Hunt. 1887 1888 Refactor JSGlobalObject-related tear-down 1889 https://bugs.webkit.org/show_bug.cgi?id=53478 1890 1891 While investigating crashes caused by r77082, I noticed some strange 1892 destructor-time behaviors. This patch makes them less strange. 1893 1894 * bytecode/CodeBlock.cpp: 1895 (JSC::CodeBlock::CodeBlock): 1896 (JSC::CodeBlock::markAggregate): 1897 * bytecode/CodeBlock.h: 1898 (JSC::CodeBlock::globalObject): 1899 (JSC::GlobalCodeBlock::GlobalCodeBlock): 1900 (JSC::GlobalCodeBlock::~GlobalCodeBlock): Store the set of global code 1901 blocks on the Heap, instead of on independent global objects. The heap 1902 is guaranteed to outlast any GC-owned data structure. The heap is also 1903 a natural place to store objects that needs out-of-band marking, since 1904 the heap is responsible for marking all roots. 1905 1906 * runtime/Heap.cpp: 1907 (JSC::Heap::markRoots): 1908 (JSC::Heap::globalObjectCount): 1909 (JSC::Heap::protectedGlobalObjectCount): 1910 * runtime/Heap.h: 1911 (JSC::Heap::codeBlocks): 1912 * runtime/JSGlobalData.cpp: 1913 (JSC::JSGlobalData::JSGlobalData): 1914 * runtime/JSGlobalData.h: 1915 * runtime/JSGlobalObject.cpp: 1916 (JSC::JSGlobalObject::~JSGlobalObject): 1917 (JSC::JSGlobalObject::init): 1918 (JSC::JSGlobalObject::markChildren): 1919 * runtime/JSGlobalObject.h: 1920 * runtime/MarkedSpace.cpp: Store the set of global objects in a weak map 1921 owned by JSGlobalData, instead of an instrusive circular linked list. 1922 This is simpler, and it avoids destructor-time access between garbage 1923 collected objects, which is hard to get right. 1924 1925 (JSC::MarkedSpace::destroy): Make sure to clear mark bits before tearing 1926 everything down. Otherwise, weak data structures will incorrectly report 1927 that objects pending destruction are still alive. 1928 1929 2011-02-01 Geoffrey Garen <ggaren (a] apple.com> 1930 1931 Reviewed by Oliver Hunt. 1932 1933 REGRESSION(77082): GC-related crashes seen: on WebKit2 bot; on GTK 32bit 1934 bot; loading trac pages; typing in search field 1935 https://bugs.webkit.org/show_bug.cgi?id=53519 1936 1937 The crashes were all caused by failure to run an object's destructor. 1938 1939 * runtime/CollectorHeapIterator.h: 1940 (JSC::ObjectIterator::ObjectIterator): Don't skip forward upon 1941 construction. The iterator class used to do that when it was designed 1942 for prior-to-beginning initialization. I forgot to remove this line 1943 of code when I changed the iterator to normal initialization. 1944 1945 Skipping forward upon construction was causing the heap to skip running 1946 the destructor for the very first object in a block when destroying the 1947 block. This usually did not crash, since block destruction is rare and 1948 most objects have pretty trivial destructors. However, in the rare case 1949 when the heap would destroy a block whose first object was a global 1950 object or a DOM node, BOOM. 1951 1952 2011-01-31 Oliver Hunt <oliver (a] apple.com> 1953 1954 Reviewed by Geoffrey Garen. 1955 1956 Update JSObject storage for new marking API 1957 https://bugs.webkit.org/show_bug.cgi?id=53467 1958 1959 JSObject no longer uses EncodedJSValue for its property storage. 1960 This produces a stream of mechanical changes to PropertySlot and 1961 anonymous storage APIs. 1962 1963 * JavaScriptCore.exp: 1964 * runtime/ArrayPrototype.cpp: 1965 (JSC::ArrayPrototype::ArrayPrototype): 1966 * runtime/BooleanConstructor.cpp: 1967 (JSC::constructBoolean): 1968 (JSC::constructBooleanFromImmediateBoolean): 1969 * runtime/BooleanObject.cpp: 1970 (JSC::BooleanObject::BooleanObject): 1971 * runtime/BooleanObject.h: 1972 * runtime/BooleanPrototype.cpp: 1973 (JSC::BooleanPrototype::BooleanPrototype): 1974 * runtime/DateInstance.cpp: 1975 (JSC::DateInstance::DateInstance): 1976 * runtime/DatePrototype.cpp: 1977 (JSC::DatePrototype::DatePrototype): 1978 * runtime/JSActivation.cpp: 1979 (JSC::JSActivation::getOwnPropertySlot): 1980 * runtime/JSArray.cpp: 1981 (JSC::JSArray::getOwnPropertySlot): 1982 * runtime/JSFunction.cpp: 1983 (JSC::JSFunction::getOwnPropertySlot): 1984 * runtime/JSGlobalObject.h: 1985 (JSC::JSGlobalObject::JSGlobalObject): 1986 * runtime/JSObject.cpp: 1987 (JSC::JSObject::fillGetterPropertySlot): 1988 * runtime/JSObject.h: 1989 (JSC::JSObject::getDirectLocation): 1990 (JSC::JSObject::offsetForLocation): 1991 (JSC::JSObject::putAnonymousValue): 1992 (JSC::JSObject::clearAnonymousValue): 1993 (JSC::JSObject::getAnonymousValue): 1994 (JSC::JSObject::putThisToAnonymousValue): 1995 (JSC::JSObject::locationForOffset): 1996 (JSC::JSObject::inlineGetOwnPropertySlot): 1997 * runtime/JSObjectWithGlobalObject.cpp: 1998 (JSC::JSObjectWithGlobalObject::JSObjectWithGlobalObject): 1999 * runtime/JSWrapperObject.h: 2000 (JSC::JSWrapperObject::JSWrapperObject): 2001 (JSC::JSWrapperObject::setInternalValue): 2002 * runtime/Lookup.cpp: 2003 (JSC::setUpStaticFunctionSlot): 2004 * runtime/NumberConstructor.cpp: 2005 (JSC::constructWithNumberConstructor): 2006 * runtime/NumberObject.cpp: 2007 (JSC::NumberObject::NumberObject): 2008 (JSC::constructNumber): 2009 * runtime/NumberObject.h: 2010 * runtime/NumberPrototype.cpp: 2011 (JSC::NumberPrototype::NumberPrototype): 2012 * runtime/PropertySlot.h: 2013 (JSC::PropertySlot::getValue): 2014 (JSC::PropertySlot::setValue): 2015 (JSC::PropertySlot::setRegisterSlot): 2016 * runtime/StringObject.cpp: 2017 (JSC::StringObject::StringObject): 2018 * runtime/StringPrototype.cpp: 2019 (JSC::StringPrototype::StringPrototype): 2020 * runtime/WriteBarrier.h: 2021 (JSC::WriteBarrierBase::setWithoutWriteBarrier): 2022 2023 2011-02-01 Daniel Bates <dbates (a] rim.com> 2024 2025 Reviewed by Antonio Gomes. 2026 2027 Modify RandomNumberSeed.h to use USE(MERSENNE_TWISTER_19937) 2028 https://bugs.webkit.org/show_bug.cgi?id=53506 2029 2030 Currently, use of the Mersenne Twister pseudorandom number generator 2031 is hardcoded to the Windows CE port. With the passing of bug #53253, 2032 we can generalize support for this PRNG to all ports that use srand(3) 2033 and rand(3), including Windows CE. 2034 2035 * wtf/RandomNumberSeed.h: 2036 (WTF::initializeRandomNumberGenerator): 2037 2038 2011-02-01 Dave Tapuska <dtapuska (a] rim.com> 2039 2040 Reviewed by Gavin Barraclough. 2041 2042 MacroAssemblerARM would generate code that did 32bit loads 2043 on addresses that were not aligned. More specifically it would 2044 generate a ldr r8,[r1, #7] which isn't valid on ARMv5 and lower. 2045 The intended instruction really is ldrb r8,[r1, #7]; ensure we 2046 call load8 instead of load32. 2047 2048 https://bugs.webkit.org/show_bug.cgi?id=46095 2049 2050 * assembler/MacroAssemblerARM.h: 2051 (JSC::MacroAssemblerARM::set32Test32): 2052 (JSC::MacroAssemblerARM::set32Test8): 2053 2054 2011-02-01 Darin Fisher <darin (a] chromium.org> 2055 2056 Reviewed by Eric Seidel. 2057 2058 Fix some Visual Studio compiler warnings. 2059 https://bugs.webkit.org/show_bug.cgi?id=53476 2060 2061 * wtf/MathExtras.h: 2062 (clampToInteger): 2063 (clampToPositiveInteger): 2064 * wtf/ThreadingWin.cpp: 2065 (WTF::absoluteTimeToWaitTimeoutInterval): 2066 2067 2011-01-31 Oliver Hunt <oliver (a] apple.com> 2068 2069 Reviewed by Sam Weinig. 2070 2071 Bogus callframe during stack unwinding 2072 https://bugs.webkit.org/show_bug.cgi?id=53454 2073 2074 Trying to access a callframe's globalData after destroying its 2075 ScopeChain is not a good thing. While we could access the 2076 globalData directly through the (known valid) scopechain we're 2077 holding on to, it feels fragile. Instead we push the valid 2078 ScopeChain onto the callframe again to ensure that the callframe 2079 itself remains valid. 2080 2081 * interpreter/Interpreter.cpp: 2082 (JSC::Interpreter::unwindCallFrame): 2083 2084 2011-01-31 Michael Saboff <msaboff (a] apple.com> 2085 2086 Reviewed by Geoffrey Garen. 2087 2088 Potentially Unsafe HashSet of RuntimeObject* in RootObject definition 2089 https://bugs.webkit.org/show_bug.cgi?id=53271 2090 2091 Reapplying this change again. 2092 Changed isValid() to use .get() as a result of change r77151. 2093 2094 Added new isValid() methods to check if a contained object in 2095 a WeakGCMap is valid when using an unchecked iterator. 2096 2097 * runtime/WeakGCMap.h: 2098 (JSC::WeakGCMap::isValid): 2099 2100 2011-01-31 Oliver Hunt <oliver (a] apple.com> 2101 2102 Convert markstack to a slot visitor API 2103 https://bugs.webkit.org/show_bug.cgi?id=53219 2104 2105 rolling r77098, r77099, r77100, r77109, and 2106 r77111 back in, along with a few more Qt fix attempts. 2107 2108 * API/JSCallbackObject.h: 2109 (JSC::JSCallbackObjectData::setPrivateProperty): 2110 (JSC::JSCallbackObjectData::JSPrivatePropertyMap::getPrivateProperty): 2111 (JSC::JSCallbackObjectData::JSPrivatePropertyMap::setPrivateProperty): 2112 (JSC::JSCallbackObjectData::JSPrivatePropertyMap::markChildren): 2113 (JSC::JSCallbackObject::setPrivateProperty): 2114 * API/JSCallbackObjectFunctions.h: 2115 (JSC::::put): 2116 (JSC::::staticFunctionGetter): 2117 * API/JSObjectRef.cpp: 2118 (JSObjectMakeConstructor): 2119 (JSObjectSetPrivateProperty): 2120 * API/JSWeakObjectMapRefInternal.h: 2121 * JavaScriptCore.exp: 2122 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: 2123 * JavaScriptCore.xcodeproj/project.pbxproj: 2124 * bytecode/CodeBlock.cpp: 2125 (JSC::CodeBlock::markAggregate): 2126 * bytecode/CodeBlock.h: 2127 (JSC::CodeBlock::globalObject): 2128 * bytecompiler/BytecodeGenerator.cpp: 2129 (JSC::BytecodeGenerator::BytecodeGenerator): 2130 (JSC::BytecodeGenerator::emitJumpIfNotFunctionCall): 2131 (JSC::BytecodeGenerator::emitJumpIfNotFunctionApply): 2132 (JSC::BytecodeGenerator::findScopedProperty): 2133 * debugger/Debugger.cpp: 2134 (JSC::evaluateInGlobalCallFrame): 2135 * debugger/DebuggerActivation.cpp: 2136 (JSC::DebuggerActivation::DebuggerActivation): 2137 (JSC::DebuggerActivation::markChildren): 2138 * debugger/DebuggerActivation.h: 2139 * debugger/DebuggerCallFrame.cpp: 2140 (JSC::DebuggerCallFrame::evaluate): 2141 * interpreter/CallFrame.h: 2142 (JSC::ExecState::exception): 2143 * interpreter/Interpreter.cpp: 2144 (JSC::Interpreter::resolve): 2145 (JSC::Interpreter::resolveSkip): 2146 (JSC::Interpreter::resolveGlobal): 2147 (JSC::Interpreter::resolveGlobalDynamic): 2148 (JSC::Interpreter::resolveBaseAndProperty): 2149 (JSC::Interpreter::unwindCallFrame): 2150 (JSC::appendSourceToError): 2151 (JSC::Interpreter::execute): 2152 (JSC::Interpreter::tryCacheGetByID): 2153 (JSC::Interpreter::privateExecute): 2154 * jit/JITStubs.cpp: 2155 (JSC::JITThunks::tryCacheGetByID): 2156 (JSC::DEFINE_STUB_FUNCTION): 2157 * jsc.cpp: 2158 (GlobalObject::GlobalObject): 2159 * runtime/ArgList.cpp: 2160 (JSC::MarkedArgumentBuffer::markLists): 2161 * runtime/Arguments.cpp: 2162 (JSC::Arguments::markChildren): 2163 (JSC::Arguments::getOwnPropertySlot): 2164 (JSC::Arguments::getOwnPropertyDescriptor): 2165 (JSC::Arguments::put): 2166 * runtime/Arguments.h: 2167 (JSC::Arguments::setActivation): 2168 (JSC::Arguments::Arguments): 2169 * runtime/ArrayConstructor.cpp: 2170 (JSC::ArrayConstructor::ArrayConstructor): 2171 (JSC::constructArrayWithSizeQuirk): 2172 * runtime/ArrayPrototype.cpp: 2173 (JSC::arrayProtoFuncSplice): 2174 * runtime/BatchedTransitionOptimizer.h: 2175 (JSC::BatchedTransitionOptimizer::BatchedTransitionOptimizer): 2176 (JSC::BatchedTransitionOptimizer::~BatchedTransitionOptimizer): 2177 * runtime/BooleanConstructor.cpp: 2178 (JSC::BooleanConstructor::BooleanConstructor): 2179 (JSC::constructBoolean): 2180 (JSC::constructBooleanFromImmediateBoolean): 2181 * runtime/BooleanPrototype.cpp: 2182 (JSC::BooleanPrototype::BooleanPrototype): 2183 * runtime/ConservativeSet.cpp: 2184 (JSC::ConservativeSet::grow): 2185 * runtime/ConservativeSet.h: 2186 (JSC::ConservativeSet::~ConservativeSet): 2187 (JSC::ConservativeSet::mark): 2188 * runtime/DateConstructor.cpp: 2189 (JSC::DateConstructor::DateConstructor): 2190 * runtime/DateInstance.cpp: 2191 (JSC::DateInstance::DateInstance): 2192 * runtime/DatePrototype.cpp: 2193 (JSC::dateProtoFuncSetTime): 2194 (JSC::setNewValueFromTimeArgs): 2195 (JSC::setNewValueFromDateArgs): 2196 (JSC::dateProtoFuncSetYear): 2197 * runtime/ErrorConstructor.cpp: 2198 (JSC::ErrorConstructor::ErrorConstructor): 2199 * runtime/ErrorInstance.cpp: 2200 (JSC::ErrorInstance::ErrorInstance): 2201 * runtime/ErrorPrototype.cpp: 2202 (JSC::ErrorPrototype::ErrorPrototype): 2203 * runtime/FunctionConstructor.cpp: 2204 (JSC::FunctionConstructor::FunctionConstructor): 2205 * runtime/FunctionPrototype.cpp: 2206 (JSC::FunctionPrototype::FunctionPrototype): 2207 * runtime/GetterSetter.cpp: 2208 (JSC::GetterSetter::markChildren): 2209 * runtime/GetterSetter.h: 2210 (JSC::GetterSetter::GetterSetter): 2211 (JSC::GetterSetter::getter): 2212 (JSC::GetterSetter::setGetter): 2213 (JSC::GetterSetter::setter): 2214 (JSC::GetterSetter::setSetter): 2215 * runtime/GlobalEvalFunction.cpp: 2216 (JSC::GlobalEvalFunction::GlobalEvalFunction): 2217 (JSC::GlobalEvalFunction::markChildren): 2218 * runtime/GlobalEvalFunction.h: 2219 (JSC::GlobalEvalFunction::cachedGlobalObject): 2220 * runtime/Heap.cpp: 2221 (JSC::Heap::markProtectedObjects): 2222 (JSC::Heap::markTempSortVectors): 2223 (JSC::Heap::markRoots): 2224 * runtime/InternalFunction.cpp: 2225 (JSC::InternalFunction::InternalFunction): 2226 * runtime/JSAPIValueWrapper.h: 2227 (JSC::JSAPIValueWrapper::value): 2228 (JSC::JSAPIValueWrapper::JSAPIValueWrapper): 2229 * runtime/JSActivation.cpp: 2230 (JSC::JSActivation::markChildren): 2231 (JSC::JSActivation::put): 2232 * runtime/JSArray.cpp: 2233 (JSC::JSArray::JSArray): 2234 (JSC::JSArray::getOwnPropertySlot): 2235 (JSC::JSArray::getOwnPropertyDescriptor): 2236 (JSC::JSArray::put): 2237 (JSC::JSArray::putSlowCase): 2238 (JSC::JSArray::deleteProperty): 2239 (JSC::JSArray::increaseVectorLength): 2240 (JSC::JSArray::setLength): 2241 (JSC::JSArray::pop): 2242 (JSC::JSArray::push): 2243 (JSC::JSArray::unshiftCount): 2244 (JSC::JSArray::sort): 2245 (JSC::JSArray::fillArgList): 2246 (JSC::JSArray::copyToRegisters): 2247 (JSC::JSArray::compactForSorting): 2248 * runtime/JSArray.h: 2249 (JSC::JSArray::getIndex): 2250 (JSC::JSArray::setIndex): 2251 (JSC::JSArray::uncheckedSetIndex): 2252 (JSC::JSArray::markChildrenDirect): 2253 * runtime/JSByteArray.cpp: 2254 (JSC::JSByteArray::JSByteArray): 2255 * runtime/JSCell.h: 2256 (JSC::JSCell::MarkStack::append): 2257 (JSC::JSCell::MarkStack::internalAppend): 2258 (JSC::JSCell::MarkStack::deprecatedAppend): 2259 * runtime/JSFunction.cpp: 2260 (JSC::JSFunction::JSFunction): 2261 (JSC::JSFunction::getOwnPropertySlot): 2262 * runtime/JSGlobalData.h: 2263 * runtime/JSGlobalObject.cpp: 2264 (JSC::markIfNeeded): 2265 (JSC::JSGlobalObject::reset): 2266 (JSC::JSGlobalObject::resetPrototype): 2267 (JSC::JSGlobalObject::markChildren): 2268 * runtime/JSGlobalObject.h: 2269 (JSC::JSGlobalObject::JSGlobalObjectData::JSGlobalObjectData): 2270 (JSC::JSGlobalObject::regExpConstructor): 2271 (JSC::JSGlobalObject::errorConstructor): 2272 (JSC::JSGlobalObject::evalErrorConstructor): 2273 (JSC::JSGlobalObject::rangeErrorConstructor): 2274 (JSC::JSGlobalObject::referenceErrorConstructor): 2275 (JSC::JSGlobalObject::syntaxErrorConstructor): 2276 (JSC::JSGlobalObject::typeErrorConstructor): 2277 (JSC::JSGlobalObject::URIErrorConstructor): 2278 (JSC::JSGlobalObject::evalFunction): 2279 (JSC::JSGlobalObject::objectPrototype): 2280 (JSC::JSGlobalObject::functionPrototype): 2281 (JSC::JSGlobalObject::arrayPrototype): 2282 (JSC::JSGlobalObject::booleanPrototype): 2283 (JSC::JSGlobalObject::stringPrototype): 2284 (JSC::JSGlobalObject::numberPrototype): 2285 (JSC::JSGlobalObject::datePrototype): 2286 (JSC::JSGlobalObject::regExpPrototype): 2287 (JSC::JSGlobalObject::methodCallDummy): 2288 (JSC::Structure::prototypeForLookup): 2289 (JSC::constructArray): 2290 * runtime/JSONObject.cpp: 2291 (JSC::Stringifier::Holder::object): 2292 (JSC::Stringifier::Holder::objectSlot): 2293 (JSC::Stringifier::markAggregate): 2294 (JSC::Stringifier::stringify): 2295 (JSC::Stringifier::Holder::appendNextProperty): 2296 (JSC::Walker::callReviver): 2297 (JSC::Walker::walk): 2298 * runtime/JSObject.cpp: 2299 (JSC::JSObject::defineGetter): 2300 (JSC::JSObject::defineSetter): 2301 (JSC::JSObject::removeDirect): 2302 (JSC::JSObject::putDirectFunction): 2303 (JSC::JSObject::putDirectFunctionWithoutTransition): 2304 (JSC::putDescriptor): 2305 (JSC::JSObject::defineOwnProperty): 2306 * runtime/JSObject.h: 2307 (JSC::JSObject::getDirectOffset): 2308 (JSC::JSObject::putDirectOffset): 2309 (JSC::JSObject::putUndefinedAtDirectOffset): 2310 (JSC::JSObject::flattenDictionaryObject): 2311 (JSC::JSObject::putDirectInternal): 2312 (JSC::JSObject::putDirect): 2313 (JSC::JSObject::putDirectFunction): 2314 (JSC::JSObject::putDirectWithoutTransition): 2315 (JSC::JSObject::putDirectFunctionWithoutTransition): 2316 (JSC::JSValue::putDirect): 2317 (JSC::JSObject::allocatePropertyStorageInline): 2318 (JSC::JSObject::markChildrenDirect): 2319 * runtime/JSPropertyNameIterator.cpp: 2320 (JSC::JSPropertyNameIterator::JSPropertyNameIterator): 2321 (JSC::JSPropertyNameIterator::get): 2322 * runtime/JSPropertyNameIterator.h: 2323 * runtime/JSStaticScopeObject.cpp: 2324 (JSC::JSStaticScopeObject::markChildren): 2325 * runtime/JSString.cpp: 2326 (JSC::StringObject::create): 2327 * runtime/JSValue.h: 2328 * runtime/JSWrapperObject.cpp: 2329 (JSC::JSWrapperObject::markChildren): 2330 * runtime/JSWrapperObject.h: 2331 (JSC::JSWrapperObject::internalValue): 2332 (JSC::JSWrapperObject::setInternalValue): 2333 * runtime/LiteralParser.cpp: 2334 (JSC::LiteralParser::parse): 2335 * runtime/Lookup.cpp: 2336 (JSC::setUpStaticFunctionSlot): 2337 * runtime/Lookup.h: 2338 (JSC::lookupPut): 2339 * runtime/MarkStack.h: 2340 (JSC::MarkStack::MarkStack): 2341 (JSC::MarkStack::deprecatedAppendValues): 2342 (JSC::MarkStack::appendValues): 2343 * runtime/MathObject.cpp: 2344 (JSC::MathObject::MathObject): 2345 * runtime/NativeErrorConstructor.cpp: 2346 (JSC::NativeErrorConstructor::NativeErrorConstructor): 2347 * runtime/NativeErrorPrototype.cpp: 2348 (JSC::NativeErrorPrototype::NativeErrorPrototype): 2349 * runtime/NumberConstructor.cpp: 2350 (JSC::NumberConstructor::NumberConstructor): 2351 (JSC::constructWithNumberConstructor): 2352 * runtime/NumberObject.cpp: 2353 (JSC::constructNumber): 2354 * runtime/NumberPrototype.cpp: 2355 (JSC::NumberPrototype::NumberPrototype): 2356 * runtime/ObjectConstructor.cpp: 2357 (JSC::ObjectConstructor::ObjectConstructor): 2358 (JSC::objectConstructorGetOwnPropertyDescriptor): 2359 * runtime/Operations.h: 2360 (JSC::normalizePrototypeChain): 2361 (JSC::resolveBase): 2362 * runtime/PrototypeFunction.cpp: 2363 (JSC::PrototypeFunction::PrototypeFunction): 2364 * runtime/PutPropertySlot.h: 2365 (JSC::PutPropertySlot::setExistingProperty): 2366 (JSC::PutPropertySlot::setNewProperty): 2367 (JSC::PutPropertySlot::base): 2368 * runtime/RegExpConstructor.cpp: 2369 (JSC::RegExpConstructor::RegExpConstructor): 2370 * runtime/ScopeChain.cpp: 2371 (JSC::ScopeChainNode::print): 2372 * runtime/ScopeChain.h: 2373 (JSC::ScopeChainNode::~ScopeChainNode): 2374 (JSC::ScopeChainIterator::operator*): 2375 (JSC::ScopeChainIterator::operator->): 2376 (JSC::ScopeChain::top): 2377 * runtime/ScopeChainMark.h: 2378 (JSC::ScopeChain::markAggregate): 2379 * runtime/SmallStrings.cpp: 2380 (JSC::isMarked): 2381 (JSC::SmallStrings::markChildren): 2382 * runtime/SmallStrings.h: 2383 (JSC::SmallStrings::emptyString): 2384 (JSC::SmallStrings::singleCharacterString): 2385 (JSC::SmallStrings::singleCharacterStrings): 2386 * runtime/StringConstructor.cpp: 2387 (JSC::StringConstructor::StringConstructor): 2388 * runtime/StringObject.cpp: 2389 (JSC::StringObject::StringObject): 2390 * runtime/StringObject.h: 2391 * runtime/StringPrototype.cpp: 2392 (JSC::StringPrototype::StringPrototype): 2393 * runtime/Structure.cpp: 2394 (JSC::Structure::Structure): 2395 (JSC::Structure::addPropertyTransition): 2396 (JSC::Structure::toDictionaryTransition): 2397 (JSC::Structure::flattenDictionaryStructure): 2398 * runtime/Structure.h: 2399 (JSC::Structure::storedPrototype): 2400 (JSC::Structure::storedPrototypeSlot): 2401 * runtime/WeakGCMap.h: 2402 (JSC::WeakGCMap::uncheckedGet): 2403 (JSC::WeakGCMap::uncheckedGetSlot): 2404 (JSC::::get): 2405 (JSC::::take): 2406 (JSC::::set): 2407 (JSC::::uncheckedRemove): 2408 * runtime/WriteBarrier.h: Added. 2409 (JSC::DeprecatedPtr::DeprecatedPtr): 2410 (JSC::DeprecatedPtr::get): 2411 (JSC::DeprecatedPtr::operator*): 2412 (JSC::DeprecatedPtr::operator->): 2413 (JSC::DeprecatedPtr::slot): 2414 (JSC::DeprecatedPtr::operator UnspecifiedBoolType*): 2415 (JSC::DeprecatedPtr::operator!): 2416 (JSC::WriteBarrierBase::set): 2417 (JSC::WriteBarrierBase::get): 2418 (JSC::WriteBarrierBase::operator*): 2419 (JSC::WriteBarrierBase::operator->): 2420 (JSC::WriteBarrierBase::clear): 2421 (JSC::WriteBarrierBase::slot): 2422 (JSC::WriteBarrierBase::operator UnspecifiedBoolType*): 2423 (JSC::WriteBarrierBase::operator!): 2424 (JSC::WriteBarrier::WriteBarrier): 2425 (JSC::operator==): 2426 2427 2011-01-31 Dan Winship <danw (a] gnome.org> 2428 2429 Reviewed by Gustavo Noronha Silva. 2430 2431 wss (websockets ssl) support for gtk via new gio TLS support 2432 https://bugs.webkit.org/show_bug.cgi?id=50344 2433 2434 Add a GPollableOutputStream typedef for TLS WebSockets support 2435 2436 * wtf/gobject/GTypedefs.h: 2437 2438 2011-01-31 Gavin Barraclough <barraclough (a] apple.com> 2439 2440 Reviewed by Geoff Garen. 2441 2442 https://bugs.webkit.org/show_bug.cgi?id=53352 2443 Heavy external fragmentation in FixedVMPoolAllocator can lead to a CRASH(). 2444 2445 The FixedVMPoolAllocator currently uses a best fix policy - 2446 switch to first fit, this is less prone to external fragmentation. 2447 2448 * jit/ExecutableAllocatorFixedVMPool.cpp: 2449 (JSC::AllocationTableSizeClass::AllocationTableSizeClass): 2450 (JSC::AllocationTableSizeClass::blockSize): 2451 (JSC::AllocationTableSizeClass::blockCount): 2452 (JSC::AllocationTableSizeClass::blockAlignment): 2453 (JSC::AllocationTableSizeClass::size): 2454 (JSC::AllocationTableLeaf::AllocationTableLeaf): 2455 (JSC::AllocationTableLeaf::~AllocationTableLeaf): 2456 (JSC::AllocationTableLeaf::allocate): 2457 (JSC::AllocationTableLeaf::free): 2458 (JSC::AllocationTableLeaf::isEmpty): 2459 (JSC::AllocationTableLeaf::isFull): 2460 (JSC::AllocationTableLeaf::size): 2461 (JSC::AllocationTableLeaf::classForSize): 2462 (JSC::AllocationTableLeaf::dump): 2463 (JSC::LazyAllocationTable::LazyAllocationTable): 2464 (JSC::LazyAllocationTable::~LazyAllocationTable): 2465 (JSC::LazyAllocationTable::allocate): 2466 (JSC::LazyAllocationTable::free): 2467 (JSC::LazyAllocationTable::isEmpty): 2468 (JSC::LazyAllocationTable::isFull): 2469 (JSC::LazyAllocationTable::size): 2470 (JSC::LazyAllocationTable::dump): 2471 (JSC::LazyAllocationTable::classForSize): 2472 (JSC::AllocationTableDirectory::AllocationTableDirectory): 2473 (JSC::AllocationTableDirectory::~AllocationTableDirectory): 2474 (JSC::AllocationTableDirectory::allocate): 2475 (JSC::AllocationTableDirectory::free): 2476 (JSC::AllocationTableDirectory::isEmpty): 2477 (JSC::AllocationTableDirectory::isFull): 2478 (JSC::AllocationTableDirectory::size): 2479 (JSC::AllocationTableDirectory::classForSize): 2480 (JSC::AllocationTableDirectory::dump): 2481 (JSC::FixedVMPoolAllocator::FixedVMPoolAllocator): 2482 (JSC::FixedVMPoolAllocator::alloc): 2483 (JSC::FixedVMPoolAllocator::free): 2484 (JSC::FixedVMPoolAllocator::allocated): 2485 (JSC::FixedVMPoolAllocator::isValid): 2486 (JSC::FixedVMPoolAllocator::classForSize): 2487 (JSC::FixedVMPoolAllocator::offsetToPointer): 2488 (JSC::FixedVMPoolAllocator::pointerToOffset): 2489 (JSC::ExecutableAllocator::committedByteCount): 2490 (JSC::ExecutableAllocator::isValid): 2491 (JSC::ExecutableAllocator::underMemoryPressure): 2492 (JSC::ExecutablePool::systemAlloc): 2493 (JSC::ExecutablePool::systemRelease): 2494 * wtf/PageReservation.h: 2495 (WTF::PageReservation::PageReservation): 2496 (WTF::PageReservation::commit): 2497 (WTF::PageReservation::decommit): 2498 (WTF::PageReservation::committed): 2499 2500 2011-01-31 Sheriff Bot <webkit.review.bot (a] gmail.com> 2501 2502 Unreviewed, rolling out r76969. 2503 http://trac.webkit.org/changeset/76969 2504 https://bugs.webkit.org/show_bug.cgi?id=53418 2505 2506 "It is causing crashes in GTK+ and Leopard bots" (Requested by 2507 alexg__ on #webkit). 2508 2509 * runtime/WeakGCMap.h: 2510 2511 2011-01-30 Csaba Osztrogonc <ossy (a] webkit.org> 2512 2513 Unreviewed, rolling out r77098, r77099, r77100, r77109, and 2514 r77111. 2515 http://trac.webkit.org/changeset/77098 2516 http://trac.webkit.org/changeset/77099 2517 http://trac.webkit.org/changeset/77100 2518 http://trac.webkit.org/changeset/77109 2519 http://trac.webkit.org/changeset/77111 2520 https://bugs.webkit.org/show_bug.cgi?id=53219 2521 2522 Qt build is broken 2523 2524 * API/JSCallbackObject.h: 2525 (JSC::JSCallbackObjectData::setPrivateProperty): 2526 (JSC::JSCallbackObjectData::JSPrivatePropertyMap::getPrivateProperty): 2527 (JSC::JSCallbackObjectData::JSPrivatePropertyMap::setPrivateProperty): 2528 (JSC::JSCallbackObjectData::JSPrivatePropertyMap::markChildren): 2529 (JSC::JSCallbackObject::setPrivateProperty): 2530 * API/JSCallbackObjectFunctions.h: 2531 (JSC::::put): 2532 (JSC::::staticFunctionGetter): 2533 * API/JSObjectRef.cpp: 2534 (JSObjectMakeConstructor): 2535 (JSObjectSetPrivateProperty): 2536 * API/JSWeakObjectMapRefInternal.h: 2537 * JavaScriptCore.exp: 2538 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: 2539 * JavaScriptCore.xcodeproj/project.pbxproj: 2540 * bytecode/CodeBlock.cpp: 2541 (JSC::CodeBlock::markAggregate): 2542 * bytecode/CodeBlock.h: 2543 (JSC::CodeBlock::globalObject): 2544 * bytecompiler/BytecodeGenerator.cpp: 2545 (JSC::BytecodeGenerator::BytecodeGenerator): 2546 (JSC::BytecodeGenerator::emitJumpIfNotFunctionCall): 2547 (JSC::BytecodeGenerator::emitJumpIfNotFunctionApply): 2548 (JSC::BytecodeGenerator::findScopedProperty): 2549 * debugger/Debugger.cpp: 2550 (JSC::evaluateInGlobalCallFrame): 2551 * debugger/DebuggerActivation.cpp: 2552 (JSC::DebuggerActivation::DebuggerActivation): 2553 (JSC::DebuggerActivation::markChildren): 2554 * debugger/DebuggerActivation.h: 2555 * debugger/DebuggerCallFrame.cpp: 2556 (JSC::DebuggerCallFrame::evaluate): 2557 * interpreter/CallFrame.h: 2558 (JSC::ExecState::exception): 2559 * interpreter/Interpreter.cpp: 2560 (JSC::Interpreter::resolve): 2561 (JSC::Interpreter::resolveSkip): 2562 (JSC::Interpreter::resolveGlobal): 2563 (JSC::Interpreter::resolveGlobalDynamic): 2564 (JSC::Interpreter::resolveBaseAndProperty): 2565 (JSC::Interpreter::unwindCallFrame): 2566 (JSC::appendSourceToError): 2567 (JSC::Interpreter::execute): 2568 (JSC::Interpreter::tryCacheGetByID): 2569 (JSC::Interpreter::privateExecute): 2570 * jit/JITStubs.cpp: 2571 (JSC::JITThunks::tryCacheGetByID): 2572 (JSC::DEFINE_STUB_FUNCTION): 2573 * jsc.cpp: 2574 (GlobalObject::GlobalObject): 2575 * runtime/ArgList.cpp: 2576 (JSC::MarkedArgumentBuffer::markLists): 2577 * runtime/Arguments.cpp: 2578 (JSC::Arguments::markChildren): 2579 (JSC::Arguments::getOwnPropertySlot): 2580 (JSC::Arguments::getOwnPropertyDescriptor): 2581 (JSC::Arguments::put): 2582 * runtime/Arguments.h: 2583 (JSC::Arguments::setActivation): 2584 (JSC::Arguments::Arguments): 2585 * runtime/ArrayConstructor.cpp: 2586 (JSC::ArrayConstructor::ArrayConstructor): 2587 (JSC::constructArrayWithSizeQuirk): 2588 * runtime/ArrayPrototype.cpp: 2589 (JSC::arrayProtoFuncSplice): 2590 * runtime/BatchedTransitionOptimizer.h: 2591 (JSC::BatchedTransitionOptimizer::BatchedTransitionOptimizer): 2592 (JSC::BatchedTransitionOptimizer::~BatchedTransitionOptimizer): 2593 * runtime/BooleanConstructor.cpp: 2594 (JSC::BooleanConstructor::BooleanConstructor): 2595 (JSC::constructBoolean): 2596 (JSC::constructBooleanFromImmediateBoolean): 2597 * runtime/BooleanPrototype.cpp: 2598 (JSC::BooleanPrototype::BooleanPrototype): 2599 * runtime/ConservativeSet.cpp: 2600 (JSC::ConservativeSet::grow): 2601 * runtime/ConservativeSet.h: 2602 (JSC::ConservativeSet::~ConservativeSet): 2603 (JSC::ConservativeSet::mark): 2604 * runtime/DateConstructor.cpp: 2605 (JSC::DateConstructor::DateConstructor): 2606 * runtime/DateInstance.cpp: 2607 (JSC::DateInstance::DateInstance): 2608 * runtime/DatePrototype.cpp: 2609 (JSC::dateProtoFuncSetTime): 2610 (JSC::setNewValueFromTimeArgs): 2611 (JSC::setNewValueFromDateArgs): 2612 (JSC::dateProtoFuncSetYear): 2613 * runtime/ErrorConstructor.cpp: 2614 (JSC::ErrorConstructor::ErrorConstructor): 2615 * runtime/ErrorInstance.cpp: 2616 (JSC::ErrorInstance::ErrorInstance): 2617 * runtime/ErrorPrototype.cpp: 2618 (JSC::ErrorPrototype::ErrorPrototype): 2619 * runtime/FunctionConstructor.cpp: 2620 (JSC::FunctionConstructor::FunctionConstructor): 2621 * runtime/FunctionPrototype.cpp: 2622 (JSC::FunctionPrototype::FunctionPrototype): 2623 * runtime/GetterSetter.cpp: 2624 (JSC::GetterSetter::markChildren): 2625 * runtime/GetterSetter.h: 2626 (JSC::GetterSetter::GetterSetter): 2627 (JSC::GetterSetter::getter): 2628 (JSC::GetterSetter::setGetter): 2629 (JSC::GetterSetter::setter): 2630 (JSC::GetterSetter::setSetter): 2631 * runtime/GlobalEvalFunction.cpp: 2632 (JSC::GlobalEvalFunction::GlobalEvalFunction): 2633 (JSC::GlobalEvalFunction::markChildren): 2634 * runtime/GlobalEvalFunction.h: 2635 (JSC::GlobalEvalFunction::cachedGlobalObject): 2636 * runtime/Heap.cpp: 2637 (JSC::Heap::markProtectedObjects): 2638 (JSC::Heap::markTempSortVectors): 2639 (JSC::Heap::markRoots): 2640 * runtime/InternalFunction.cpp: 2641 (JSC::InternalFunction::InternalFunction): 2642 * runtime/JSAPIValueWrapper.h: 2643 (JSC::JSAPIValueWrapper::value): 2644 (JSC::JSAPIValueWrapper::JSAPIValueWrapper): 2645 * runtime/JSActivation.cpp: 2646 (JSC::JSActivation::markChildren): 2647 (JSC::JSActivation::put): 2648 * runtime/JSArray.cpp: 2649 (JSC::JSArray::JSArray): 2650 (JSC::JSArray::getOwnPropertySlot): 2651 (JSC::JSArray::getOwnPropertyDescriptor): 2652 (JSC::JSArray::put): 2653 (JSC::JSArray::putSlowCase): 2654 (JSC::JSArray::deleteProperty): 2655 (JSC::JSArray::increaseVectorLength): 2656 (JSC::JSArray::setLength): 2657 (JSC::JSArray::pop): 2658 (JSC::JSArray::push): 2659 (JSC::JSArray::unshiftCount): 2660 (JSC::JSArray::sort): 2661 (JSC::JSArray::fillArgList): 2662 (JSC::JSArray::copyToRegisters): 2663 (JSC::JSArray::compactForSorting): 2664 * runtime/JSArray.h: 2665 (JSC::JSArray::getIndex): 2666 (JSC::JSArray::setIndex): 2667 (JSC::JSArray::uncheckedSetIndex): 2668 (JSC::JSArray::markChildrenDirect): 2669 * runtime/JSByteArray.cpp: 2670 (JSC::JSByteArray::JSByteArray): 2671 * runtime/JSCell.h: 2672 (JSC::JSCell::JSValue::toThisObject): 2673 (JSC::JSCell::MarkStack::append): 2674 * runtime/JSFunction.cpp: 2675 (JSC::JSFunction::JSFunction): 2676 (JSC::JSFunction::getOwnPropertySlot): 2677 * runtime/JSGlobalData.h: 2678 * runtime/JSGlobalObject.cpp: 2679 (JSC::markIfNeeded): 2680 (JSC::JSGlobalObject::reset): 2681 (JSC::JSGlobalObject::resetPrototype): 2682 (JSC::JSGlobalObject::markChildren): 2683 * runtime/JSGlobalObject.h: 2684 (JSC::JSGlobalObject::JSGlobalObjectData::JSGlobalObjectData): 2685 (JSC::JSGlobalObject::regExpConstructor): 2686 (JSC::JSGlobalObject::errorConstructor): 2687 (JSC::JSGlobalObject::evalErrorConstructor): 2688 (JSC::JSGlobalObject::rangeErrorConstructor): 2689 (JSC::JSGlobalObject::referenceErrorConstructor): 2690 (JSC::JSGlobalObject::syntaxErrorConstructor): 2691 (JSC::JSGlobalObject::typeErrorConstructor): 2692 (JSC::JSGlobalObject::URIErrorConstructor): 2693 (JSC::JSGlobalObject::evalFunction): 2694 (JSC::JSGlobalObject::objectPrototype): 2695 (JSC::JSGlobalObject::functionPrototype): 2696 (JSC::JSGlobalObject::arrayPrototype): 2697 (JSC::JSGlobalObject::booleanPrototype): 2698 (JSC::JSGlobalObject::stringPrototype): 2699 (JSC::JSGlobalObject::numberPrototype): 2700 (JSC::JSGlobalObject::datePrototype): 2701 (JSC::JSGlobalObject::regExpPrototype): 2702 (JSC::JSGlobalObject::methodCallDummy): 2703 (JSC::Structure::prototypeForLookup): 2704 (JSC::constructArray): 2705 * runtime/JSONObject.cpp: 2706 (JSC::Stringifier::Holder::object): 2707 (JSC::Stringifier::markAggregate): 2708 (JSC::Stringifier::stringify): 2709 (JSC::Stringifier::Holder::appendNextProperty): 2710 (JSC::Walker::callReviver): 2711 (JSC::Walker::walk): 2712 * runtime/JSObject.cpp: 2713 (JSC::JSObject::defineGetter): 2714 (JSC::JSObject::defineSetter): 2715 (JSC::JSObject::removeDirect): 2716 (JSC::JSObject::putDirectFunction): 2717 (JSC::JSObject::putDirectFunctionWithoutTransition): 2718 (JSC::putDescriptor): 2719 (JSC::JSObject::defineOwnProperty): 2720 * runtime/JSObject.h: 2721 (JSC::JSObject::getDirectOffset): 2722 (JSC::JSObject::putDirectOffset): 2723 (JSC::JSObject::flattenDictionaryObject): 2724 (JSC::JSObject::putDirectInternal): 2725 (JSC::JSObject::putDirect): 2726 (JSC::JSObject::putDirectFunction): 2727 (JSC::JSObject::putDirectWithoutTransition): 2728 (JSC::JSObject::putDirectFunctionWithoutTransition): 2729 (JSC::JSValue::putDirect): 2730 (JSC::JSObject::allocatePropertyStorageInline): 2731 (JSC::JSObject::markChildrenDirect): 2732 * runtime/JSPropertyNameIterator.cpp: 2733 (JSC::JSPropertyNameIterator::JSPropertyNameIterator): 2734 (JSC::JSPropertyNameIterator::get): 2735 * runtime/JSPropertyNameIterator.h: 2736 * runtime/JSStaticScopeObject.cpp: 2737 (JSC::JSStaticScopeObject::markChildren): 2738 * runtime/JSString.cpp: 2739 (JSC::StringObject::create): 2740 * runtime/JSValue.h: 2741 * runtime/JSWrapperObject.cpp: 2742 (JSC::JSWrapperObject::markChildren): 2743 * runtime/JSWrapperObject.h: 2744 (JSC::JSWrapperObject::internalValue): 2745 (JSC::JSWrapperObject::setInternalValue): 2746 * runtime/LiteralParser.cpp: 2747 (JSC::LiteralParser::parse): 2748 * runtime/Lookup.cpp: 2749 (JSC::setUpStaticFunctionSlot): 2750 * runtime/Lookup.h: 2751 (JSC::lookupPut): 2752 * runtime/MarkStack.h: 2753 (JSC::MarkStack::appendValues): 2754 * runtime/MathObject.cpp: 2755 (JSC::MathObject::MathObject): 2756 * runtime/NativeErrorConstructor.cpp: 2757 (JSC::NativeErrorConstructor::NativeErrorConstructor): 2758 * runtime/NativeErrorPrototype.cpp: 2759 (JSC::NativeErrorPrototype::NativeErrorPrototype): 2760 * runtime/NumberConstructor.cpp: 2761 (JSC::NumberConstructor::NumberConstructor): 2762 (JSC::constructWithNumberConstructor): 2763 * runtime/NumberObject.cpp: 2764 (JSC::constructNumber): 2765 * runtime/NumberPrototype.cpp: 2766 (JSC::NumberPrototype::NumberPrototype): 2767 * runtime/ObjectConstructor.cpp: 2768 (JSC::ObjectConstructor::ObjectConstructor): 2769 (JSC::objectConstructorGetOwnPropertyDescriptor): 2770 * runtime/Operations.h: 2771 (JSC::normalizePrototypeChain): 2772 (JSC::resolveBase): 2773 * runtime/PrototypeFunction.cpp: 2774 (JSC::PrototypeFunction::PrototypeFunction): 2775 * runtime/PutPropertySlot.h: 2776 (JSC::PutPropertySlot::setExistingProperty): 2777 (JSC::PutPropertySlot::setNewProperty): 2778 (JSC::PutPropertySlot::base): 2779 * runtime/RegExpConstructor.cpp: 2780 (JSC::RegExpConstructor::RegExpConstructor): 2781 * runtime/ScopeChain.cpp: 2782 (JSC::ScopeChainNode::print): 2783 * runtime/ScopeChain.h: 2784 (JSC::ScopeChainNode::~ScopeChainNode): 2785 (JSC::ScopeChainIterator::operator*): 2786 (JSC::ScopeChainIterator::operator->): 2787 (JSC::ScopeChain::top): 2788 * runtime/ScopeChainMark.h: 2789 (JSC::ScopeChain::markAggregate): 2790 * runtime/SmallStrings.cpp: 2791 (JSC::isMarked): 2792 (JSC::SmallStrings::markChildren): 2793 * runtime/SmallStrings.h: 2794 (JSC::SmallStrings::emptyString): 2795 (JSC::SmallStrings::singleCharacterString): 2796 (JSC::SmallStrings::singleCharacterStrings): 2797 * runtime/StringConstructor.cpp: 2798 (JSC::StringConstructor::StringConstructor): 2799 * runtime/StringObject.cpp: 2800 (JSC::StringObject::StringObject): 2801 * runtime/StringObject.h: 2802 * runtime/StringPrototype.cpp: 2803 (JSC::StringPrototype::StringPrototype): 2804 * runtime/Structure.cpp: 2805 (JSC::Structure::Structure): 2806 (JSC::Structure::addPropertyTransition): 2807 (JSC::Structure::toDictionaryTransition): 2808 (JSC::Structure::flattenDictionaryStructure): 2809 * runtime/Structure.h: 2810 (JSC::Structure::storedPrototype): 2811 * runtime/WeakGCMap.h: 2812 (JSC::WeakGCMap::uncheckedGet): 2813 (JSC::WeakGCMap::isValid): 2814 (JSC::::get): 2815 (JSC::::take): 2816 (JSC::::set): 2817 (JSC::::uncheckedRemove): 2818 * runtime/WriteBarrier.h: Removed. 2819 2820 2011-01-30 Simon Fraser <simon.fraser (a] apple.com> 2821 2822 Build fix the build fix. I assume Oliver meant m_cell, not m_value. 2823 2824 * runtime/WriteBarrier.h: 2825 (JSC::WriteBarrierBase::clear): 2826 2827 2011-01-30 Oliver Hunt <oliver (a] apple.com> 2828 2829 More Qt build fixes 2830 2831 * runtime/WriteBarrier.h: 2832 (JSC::WriteBarrierBase::clear): 2833 2834 2011-01-30 Oliver Hunt <oliver (a] apple.com> 2835 2836 Convert markstack to a slot visitor API 2837 https://bugs.webkit.org/show_bug.cgi?id=53219 2838 2839 rolling r77006 and r77020 back in. 2840 2841 * API/JSCallbackObject.h: 2842 (JSC::JSCallbackObjectData::setPrivateProperty): 2843 (JSC::JSCallbackObjectData::JSPrivatePropertyMap::getPrivateProperty): 2844 (JSC::JSCallbackObjectData::JSPrivatePropertyMap::setPrivateProperty): 2845 (JSC::JSCallbackObjectData::JSPrivatePropertyMap::markChildren): 2846 (JSC::JSCallbackObject::setPrivateProperty): 2847 * API/JSCallbackObjectFunctions.h: 2848 (JSC::::put): 2849 (JSC::::staticFunctionGetter): 2850 * API/JSObjectRef.cpp: 2851 (JSObjectMakeConstructor): 2852 (JSObjectSetPrivateProperty): 2853 * API/JSWeakObjectMapRefInternal.h: 2854 * JavaScriptCore.exp: 2855 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: 2856 * JavaScriptCore.xcodeproj/project.pbxproj: 2857 * bytecode/CodeBlock.cpp: 2858 (JSC::CodeBlock::markAggregate): 2859 * bytecode/CodeBlock.h: 2860 (JSC::CodeBlock::globalObject): 2861 * bytecompiler/BytecodeGenerator.cpp: 2862 (JSC::BytecodeGenerator::BytecodeGenerator): 2863 (JSC::BytecodeGenerator::emitJumpIfNotFunctionCall): 2864 (JSC::BytecodeGenerator::emitJumpIfNotFunctionApply): 2865 (JSC::BytecodeGenerator::findScopedProperty): 2866 * debugger/Debugger.cpp: 2867 (JSC::evaluateInGlobalCallFrame): 2868 * debugger/DebuggerActivation.cpp: 2869 (JSC::DebuggerActivation::DebuggerActivation): 2870 (JSC::DebuggerActivation::markChildren): 2871 * debugger/DebuggerActivation.h: 2872 * debugger/DebuggerCallFrame.cpp: 2873 (JSC::DebuggerCallFrame::evaluate): 2874 * interpreter/CallFrame.h: 2875 (JSC::ExecState::exception): 2876 * interpreter/Interpreter.cpp: 2877 (JSC::Interpreter::resolve): 2878 (JSC::Interpreter::resolveSkip): 2879 (JSC::Interpreter::resolveGlobal): 2880 (JSC::Interpreter::resolveGlobalDynamic): 2881 (JSC::Interpreter::resolveBaseAndProperty): 2882 (JSC::Interpreter::unwindCallFrame): 2883 (JSC::appendSourceToError): 2884 (JSC::Interpreter::execute): 2885 (JSC::Interpreter::tryCacheGetByID): 2886 (JSC::Interpreter::privateExecute): 2887 * jit/JITStubs.cpp: 2888 (JSC::JITThunks::tryCacheGetByID): 2889 (JSC::DEFINE_STUB_FUNCTION): 2890 * jsc.cpp: 2891 (GlobalObject::GlobalObject): 2892 * runtime/ArgList.cpp: 2893 (JSC::MarkedArgumentBuffer::markLists): 2894 * runtime/Arguments.cpp: 2895 (JSC::Arguments::markChildren): 2896 (JSC::Arguments::getOwnPropertySlot): 2897 (JSC::Arguments::getOwnPropertyDescriptor): 2898 (JSC::Arguments::put): 2899 * runtime/Arguments.h: 2900 (JSC::Arguments::setActivation): 2901 (JSC::Arguments::Arguments): 2902 * runtime/ArrayConstructor.cpp: 2903 (JSC::ArrayConstructor::ArrayConstructor): 2904 (JSC::constructArrayWithSizeQuirk): 2905 * runtime/ArrayPrototype.cpp: 2906 (JSC::arrayProtoFuncSplice): 2907 * runtime/BatchedTransitionOptimizer.h: 2908 (JSC::BatchedTransitionOptimizer::BatchedTransitionOptimizer): 2909 (JSC::BatchedTransitionOptimizer::~BatchedTransitionOptimizer): 2910 * runtime/BooleanConstructor.cpp: 2911 (JSC::BooleanConstructor::BooleanConstructor): 2912 (JSC::constructBoolean): 2913 (JSC::constructBooleanFromImmediateBoolean): 2914 * runtime/BooleanPrototype.cpp: 2915 (JSC::BooleanPrototype::BooleanPrototype): 2916 * runtime/ConservativeSet.cpp: 2917 (JSC::ConservativeSet::grow): 2918 * runtime/ConservativeSet.h: 2919 (JSC::ConservativeSet::~ConservativeSet): 2920 (JSC::ConservativeSet::mark): 2921 * runtime/DateConstructor.cpp: 2922 (JSC::DateConstructor::DateConstructor): 2923 * runtime/DateInstance.cpp: 2924 (JSC::DateInstance::DateInstance): 2925 * runtime/DatePrototype.cpp: 2926 (JSC::dateProtoFuncSetTime): 2927 (JSC::setNewValueFromTimeArgs): 2928 (JSC::setNewValueFromDateArgs): 2929 (JSC::dateProtoFuncSetYear): 2930 * runtime/ErrorConstructor.cpp: 2931 (JSC::ErrorConstructor::ErrorConstructor): 2932 * runtime/ErrorInstance.cpp: 2933 (JSC::ErrorInstance::ErrorInstance): 2934 * runtime/ErrorPrototype.cpp: 2935 (JSC::ErrorPrototype::ErrorPrototype): 2936 * runtime/FunctionConstructor.cpp: 2937 (JSC::FunctionConstructor::FunctionConstructor): 2938 * runtime/FunctionPrototype.cpp: 2939 (JSC::FunctionPrototype::FunctionPrototype): 2940 * runtime/GetterSetter.cpp: 2941 (JSC::GetterSetter::markChildren): 2942 * runtime/GetterSetter.h: 2943 (JSC::GetterSetter::GetterSetter): 2944 (JSC::GetterSetter::getter): 2945 (JSC::GetterSetter::setGetter): 2946 (JSC::GetterSetter::setter): 2947 (JSC::GetterSetter::setSetter): 2948 * runtime/GlobalEvalFunction.cpp: 2949 (JSC::GlobalEvalFunction::GlobalEvalFunction): 2950 (JSC::GlobalEvalFunction::markChildren): 2951 * runtime/GlobalEvalFunction.h: 2952 (JSC::GlobalEvalFunction::cachedGlobalObject): 2953 * runtime/Heap.cpp: 2954 (JSC::Heap::markProtectedObjects): 2955 (JSC::Heap::markTempSortVectors): 2956 (JSC::Heap::markRoots): 2957 * runtime/InternalFunction.cpp: 2958 (JSC::InternalFunction::InternalFunction): 2959 * runtime/JSAPIValueWrapper.h: 2960 (JSC::JSAPIValueWrapper::value): 2961 (JSC::JSAPIValueWrapper::JSAPIValueWrapper): 2962 * runtime/JSActivation.cpp: 2963 (JSC::JSActivation::markChildren): 2964 (JSC::JSActivation::put): 2965 * runtime/JSArray.cpp: 2966 (JSC::JSArray::JSArray): 2967 (JSC::JSArray::getOwnPropertySlot): 2968 (JSC::JSArray::getOwnPropertyDescriptor): 2969 (JSC::JSArray::put): 2970 (JSC::JSArray::putSlowCase): 2971 (JSC::JSArray::deleteProperty): 2972 (JSC::JSArray::increaseVectorLength): 2973 (JSC::JSArray::setLength): 2974 (JSC::JSArray::pop): 2975 (JSC::JSArray::push): 2976 (JSC::JSArray::unshiftCount): 2977 (JSC::JSArray::sort): 2978 (JSC::JSArray::fillArgList): 2979 (JSC::JSArray::copyToRegisters): 2980 (JSC::JSArray::compactForSorting): 2981 * runtime/JSArray.h: 2982 (JSC::JSArray::getIndex): 2983 (JSC::JSArray::setIndex): 2984 (JSC::JSArray::uncheckedSetIndex): 2985 (JSC::JSArray::markChildrenDirect): 2986 * runtime/JSByteArray.cpp: 2987 (JSC::JSByteArray::JSByteArray): 2988 * runtime/JSCell.h: 2989 (JSC::JSCell::MarkStack::append): 2990 (JSC::JSCell::MarkStack::internalAppend): 2991 (JSC::JSCell::MarkStack::deprecatedAppend): 2992 * runtime/JSFunction.cpp: 2993 (JSC::JSFunction::JSFunction): 2994 (JSC::JSFunction::getOwnPropertySlot): 2995 * runtime/JSGlobalData.h: 2996 * runtime/JSGlobalObject.cpp: 2997 (JSC::markIfNeeded): 2998 (JSC::JSGlobalObject::reset): 2999 (JSC::JSGlobalObject::resetPrototype): 3000 (JSC::JSGlobalObject::markChildren): 3001 * runtime/JSGlobalObject.h: 3002 (JSC::JSGlobalObject::JSGlobalObjectData::JSGlobalObjectData): 3003 (JSC::JSGlobalObject::regExpConstructor): 3004 (JSC::JSGlobalObject::errorConstructor): 3005 (JSC::JSGlobalObject::evalErrorConstructor): 3006 (JSC::JSGlobalObject::rangeErrorConstructor): 3007 (JSC::JSGlobalObject::referenceErrorConstructor): 3008 (JSC::JSGlobalObject::syntaxErrorConstructor): 3009 (JSC::JSGlobalObject::typeErrorConstructor): 3010 (JSC::JSGlobalObject::URIErrorConstructor): 3011 (JSC::JSGlobalObject::evalFunction): 3012 (JSC::JSGlobalObject::objectPrototype): 3013 (JSC::JSGlobalObject::functionPrototype): 3014 (JSC::JSGlobalObject::arrayPrototype): 3015 (JSC::JSGlobalObject::booleanPrototype): 3016 (JSC::JSGlobalObject::stringPrototype): 3017 (JSC::JSGlobalObject::numberPrototype): 3018 (JSC::JSGlobalObject::datePrototype): 3019 (JSC::JSGlobalObject::regExpPrototype): 3020 (JSC::JSGlobalObject::methodCallDummy): 3021 (JSC::Structure::prototypeForLookup): 3022 (JSC::constructArray): 3023 * runtime/JSONObject.cpp: 3024 (JSC::Stringifier::Holder::object): 3025 (JSC::Stringifier::Holder::objectSlot): 3026 (JSC::Stringifier::markAggregate): 3027 (JSC::Stringifier::stringify): 3028 (JSC::Stringifier::Holder::appendNextProperty): 3029 (JSC::Walker::callReviver): 3030 (JSC::Walker::walk): 3031 * runtime/JSObject.cpp: 3032 (JSC::JSObject::defineGetter): 3033 (JSC::JSObject::defineSetter): 3034 (JSC::JSObject::removeDirect): 3035 (JSC::JSObject::putDirectFunction): 3036 (JSC::JSObject::putDirectFunctionWithoutTransition): 3037 (JSC::putDescriptor): 3038 (JSC::JSObject::defineOwnProperty): 3039 * runtime/JSObject.h: 3040 (JSC::JSObject::getDirectOffset): 3041 (JSC::JSObject::putDirectOffset): 3042 (JSC::JSObject::putUndefinedAtDirectOffset): 3043 (JSC::JSObject::flattenDictionaryObject): 3044 (JSC::JSObject::putDirectInternal): 3045 (JSC::JSObject::putDirect): 3046 (JSC::JSObject::putDirectFunction): 3047 (JSC::JSObject::putDirectWithoutTransition): 3048 (JSC::JSObject::putDirectFunctionWithoutTransition): 3049 (JSC::JSValue::putDirect): 3050 (JSC::JSObject::allocatePropertyStorageInline): 3051 (JSC::JSObject::markChildrenDirect): 3052 * runtime/JSPropertyNameIterator.cpp: 3053 (JSC::JSPropertyNameIterator::JSPropertyNameIterator): 3054 (JSC::JSPropertyNameIterator::get): 3055 * runtime/JSPropertyNameIterator.h: 3056 * runtime/JSStaticScopeObject.cpp: 3057 (JSC::JSStaticScopeObject::markChildren): 3058 * runtime/JSString.cpp: 3059 (JSC::StringObject::create): 3060 * runtime/JSValue.h: 3061 * runtime/JSWrapperObject.cpp: 3062 (JSC::JSWrapperObject::markChildren): 3063 * runtime/JSWrapperObject.h: 3064 (JSC::JSWrapperObject::internalValue): 3065 (JSC::JSWrapperObject::setInternalValue): 3066 * runtime/LiteralParser.cpp: 3067 (JSC::LiteralParser::parse): 3068 * runtime/Lookup.cpp: 3069 (JSC::setUpStaticFunctionSlot): 3070 * runtime/Lookup.h: 3071 (JSC::lookupPut): 3072 * runtime/MarkStack.h: 3073 (JSC::MarkStack::MarkStack): 3074 (JSC::MarkStack::deprecatedAppendValues): 3075 (JSC::MarkStack::appendValues): 3076 * runtime/MathObject.cpp: 3077 (JSC::MathObject::MathObject): 3078 * runtime/NativeErrorConstructor.cpp: 3079 (JSC::NativeErrorConstructor::NativeErrorConstructor): 3080 * runtime/NativeErrorPrototype.cpp: 3081 (JSC::NativeErrorPrototype::NativeErrorPrototype): 3082 * runtime/NumberConstructor.cpp: 3083 (JSC::NumberConstructor::NumberConstructor): 3084 (JSC::constructWithNumberConstructor): 3085 * runtime/NumberObject.cpp: 3086 (JSC::constructNumber): 3087 * runtime/NumberPrototype.cpp: 3088 (JSC::NumberPrototype::NumberPrototype): 3089 * runtime/ObjectConstructor.cpp: 3090 (JSC::ObjectConstructor::ObjectConstructor): 3091 (JSC::objectConstructorGetOwnPropertyDescriptor): 3092 * runtime/Operations.h: 3093 (JSC::normalizePrototypeChain): 3094 (JSC::resolveBase): 3095 * runtime/PrototypeFunction.cpp: 3096 (JSC::PrototypeFunction::PrototypeFunction): 3097 * runtime/PutPropertySlot.h: 3098 (JSC::PutPropertySlot::setExistingProperty): 3099 (JSC::PutPropertySlot::setNewProperty): 3100 (JSC::PutPropertySlot::base): 3101 * runtime/RegExpConstructor.cpp: 3102 (JSC::RegExpConstructor::RegExpConstructor): 3103 * runtime/ScopeChain.cpp: 3104 (JSC::ScopeChainNode::print): 3105 * runtime/ScopeChain.h: 3106 (JSC::ScopeChainNode::~ScopeChainNode): 3107 (JSC::ScopeChainIterator::operator*): 3108 (JSC::ScopeChainIterator::operator->): 3109 (JSC::ScopeChain::top): 3110 * runtime/ScopeChainMark.h: 3111 (JSC::ScopeChain::markAggregate): 3112 * runtime/SmallStrings.cpp: 3113 (JSC::isMarked): 3114 (JSC::SmallStrings::markChildren): 3115 * runtime/SmallStrings.h: 3116 (JSC::SmallStrings::emptyString): 3117 (JSC::SmallStrings::singleCharacterString): 3118 (JSC::SmallStrings::singleCharacterStrings): 3119 * runtime/StringConstructor.cpp: 3120 (JSC::StringConstructor::StringConstructor): 3121 * runtime/StringObject.cpp: 3122 (JSC::StringObject::StringObject): 3123 * runtime/StringObject.h: 3124 * runtime/StringPrototype.cpp: 3125 (JSC::StringPrototype::StringPrototype): 3126 * runtime/Structure.cpp: 3127 (JSC::Structure::Structure): 3128 (JSC::Structure::addPropertyTransition): 3129 (JSC::Structure::toDictionaryTransition): 3130 (JSC::Structure::flattenDictionaryStructure): 3131 * runtime/Structure.h: 3132 (JSC::Structure::storedPrototype): 3133 (JSC::Structure::storedPrototypeSlot): 3134 * runtime/WeakGCMap.h: 3135 (JSC::WeakGCMap::uncheckedGet): 3136 (JSC::WeakGCMap::uncheckedGetSlot): 3137 (JSC::WeakGCMap::isValid): 3138 (JSC::::get): 3139 (JSC::::take): 3140 (JSC::::set): 3141 (JSC::::uncheckedRemove): 3142 * runtime/WriteBarrier.h: Added. 3143 (JSC::DeprecatedPtr::DeprecatedPtr): 3144 (JSC::DeprecatedPtr::get): 3145 (JSC::DeprecatedPtr::operator*): 3146 (JSC::DeprecatedPtr::operator->): 3147 (JSC::DeprecatedPtr::slot): 3148 (JSC::DeprecatedPtr::operator UnspecifiedBoolType*): 3149 (JSC::DeprecatedPtr::operator!): 3150 (JSC::WriteBarrierBase::set): 3151 (JSC::WriteBarrierBase::get): 3152 (JSC::WriteBarrierBase::operator*): 3153 (JSC::WriteBarrierBase::operator->): 3154 (JSC::WriteBarrierBase::slot): 3155 (JSC::WriteBarrierBase::operator UnspecifiedBoolType*): 3156 (JSC::WriteBarrierBase::operator!): 3157 (JSC::WriteBarrier::WriteBarrier): 3158 (JSC::operator==): 3159 3160 2011-01-30 Geoffrey Garen <ggaren (a] apple.com> 3161 3162 Reviewed by Oliver Hunt. 3163 3164 Filter all Heap collection through a common reset function, in 3165 preparation for adding features triggered by collection. 3166 https://bugs.webkit.org/show_bug.cgi?id=53396 3167 3168 SunSpider reports no change. 3169 3170 * runtime/Heap.cpp: 3171 (JSC::Heap::reportExtraMemoryCostSlowCase): When we're over the extraCost 3172 limit, just call collectAllGarbage() instead of rolling our own special 3173 way of resetting the heap. In theory, this may be slower in some cases, 3174 but it also fixes cases of pathological heap growth that we've seen, 3175 where the only objects being allocated are temporary and huge 3176 (<rdar://problem/8885843>). 3177 3178 (JSC::Heap::allocate): 3179 (JSC::Heap::collectAllGarbage): Use the shared reset function. 3180 3181 (JSC::Heap::reset): 3182 * runtime/Heap.h: Carved a new shared reset function out of the old 3183 collectAllGarbage. 3184 3185 2011-01-30 Sheriff Bot <webkit.review.bot (a] gmail.com> 3186 3187 Unreviewed, rolling out r77025. 3188 http://trac.webkit.org/changeset/77025 3189 https://bugs.webkit.org/show_bug.cgi?id=53401 3190 3191 It made js1_5/Regress/regress-159334.js fail on 64 bit Linux 3192 (Requested by Ossy on #webkit). 3193 3194 * jit/ExecutableAllocatorFixedVMPool.cpp: 3195 (JSC::FreeListEntry::FreeListEntry): 3196 (JSC::AVLTreeAbstractorForFreeList::get_less): 3197 (JSC::AVLTreeAbstractorForFreeList::set_less): 3198 (JSC::AVLTreeAbstractorForFreeList::get_greater): 3199 (JSC::AVLTreeAbstractorForFreeList::set_greater): 3200 (JSC::AVLTreeAbstractorForFreeList::get_balance_factor): 3201 (JSC::AVLTreeAbstractorForFreeList::set_balance_factor): 3202 (JSC::AVLTreeAbstractorForFreeList::null): 3203 (JSC::AVLTreeAbstractorForFreeList::compare_key_key): 3204 (JSC::AVLTreeAbstractorForFreeList::compare_key_node): 3205 (JSC::AVLTreeAbstractorForFreeList::compare_node_node): 3206 (JSC::reverseSortFreeListEntriesByPointer): 3207 (JSC::reverseSortCommonSizedAllocations): 3208 (JSC::FixedVMPoolAllocator::release): 3209 (JSC::FixedVMPoolAllocator::reuse): 3210 (JSC::FixedVMPoolAllocator::addToFreeList): 3211 (JSC::FixedVMPoolAllocator::coalesceFreeSpace): 3212 (JSC::FixedVMPoolAllocator::FixedVMPoolAllocator): 3213 (JSC::FixedVMPoolAllocator::alloc): 3214 (JSC::FixedVMPoolAllocator::free): 3215 (JSC::FixedVMPoolAllocator::isValid): 3216 (JSC::FixedVMPoolAllocator::allocInternal): 3217 (JSC::FixedVMPoolAllocator::isWithinVMPool): 3218 (JSC::FixedVMPoolAllocator::addToCommittedByteCount): 3219 (JSC::ExecutableAllocator::committedByteCount): 3220 (JSC::maybeModifyVMPoolSize): 3221 (JSC::ExecutableAllocator::isValid): 3222 (JSC::ExecutableAllocator::underMemoryPressure): 3223 (JSC::ExecutablePool::systemAlloc): 3224 (JSC::ExecutablePool::systemRelease): 3225 * wtf/PageReservation.h: 3226 (WTF::PageReservation::PageReservation): 3227 (WTF::PageReservation::commit): 3228 (WTF::PageReservation::decommit): 3229 3230 2011-01-30 Leo Yang <leo.yang (a] torchmobile.com.cn> 3231 3232 Reviewed by Daniel Bates. 3233 3234 Code style issue in JavaScriptCore/wtf/CurrentTime.h 3235 https://bugs.webkit.org/show_bug.cgi?id=53394 3236 3237 According to rule #3 at http://webkit.org/coding/coding-style.html, 3238 This patch fix style issue in CurrentTime.h. 3239 3240 No functionality change, no new tests. 3241 3242 * wtf/CurrentTime.h: 3243 (WTF::currentTimeMS): 3244 (WTF::getLocalTime): 3245 3246 2011-01-30 Benjamin Poulain <ikipou (a] gmail.com> 3247 3248 Reviewed by Kenneth Rohde Christiansen. 3249 3250 [Qt] JavaScriptCore does not link on Mac if building WebKit 2 3251 https://bugs.webkit.org/show_bug.cgi?id=53377 3252 3253 The option "-whole-archive" is not availabe with the libtool of Mac OS X, 3254 instead, we can use "-all_load" on Mac. 3255 3256 * JavaScriptCore.pri: 3257 3258 2011-01-29 Geoffrey Garen <ggaren (a] apple.com> 3259 3260 Sorry Leopard bot -- I committed a change by accident. 3261 3262 * JavaScriptCore.exp: You may have your symbols back now. 3263 3264 2011-01-29 Geoffrey Garen <ggaren (a] apple.com> 3265 3266 Reviewed by Cameron Zwarich. 3267 3268 Simplified Heap iteration 3269 https://bugs.webkit.org/show_bug.cgi?id=53393 3270 3271 * runtime/CollectorHeapIterator.h: 3272 (JSC::CollectorHeapIterator::isValid): 3273 (JSC::CollectorHeapIterator::isLive): 3274 (JSC::CollectorHeapIterator::advance): Removed "max" argument to 3275 advance because it's a constant. 3276 (JSC::LiveObjectIterator::LiveObjectIterator): 3277 (JSC::LiveObjectIterator::operator++): 3278 (JSC::DeadObjectIterator::DeadObjectIterator): 3279 (JSC::DeadObjectIterator::operator++): 3280 (JSC::ObjectIterator::ObjectIterator): 3281 (JSC::ObjectIterator::operator++): Factored out common checks into 3282 two helper functions -- isValid() for "Am I past the end?" and isLive() 3283 for "Is the cell I'm pointing to live?". 3284 3285 * runtime/MarkedSpace.cpp: 3286 (JSC::MarkedSpace::freeBlock): 3287 (JSC::MarkedSpace::sweep): Always sweep from the beginning of the heap 3288 to the end, to avoid making sweep subtly reliant on internal Heap state. 3289 (JSC::MarkedSpace::primaryHeapBegin): 3290 (JSC::MarkedSpace::primaryHeapEnd): Always be explicit about where 3291 iteration begins. 3292 3293 2011-01-29 Geoffrey Garen <ggaren (a] apple.com> 3294 3295 Reviewed by Cameron Zwarich. 3296 3297 Simplified heap destruction 3298 https://bugs.webkit.org/show_bug.cgi?id=53392 3299 3300 * JavaScriptCore.exp: 3301 * runtime/Heap.cpp: 3302 (JSC::Heap::destroy): 3303 * runtime/Heap.h: 3304 * runtime/MarkedSpace.cpp: 3305 (JSC::MarkedSpace::destroy): 3306 * runtime/MarkedSpace.h: Don't go out of our way to destroy GC-protected 3307 cells last -- the difficult contortions required to do so just don't seem 3308 justified. We make no guarantees about GC protection after the client 3309 throws away JSGlobalData, and it doesn't seem like any meaningful 3310 guarantee is even possible. 3311 3312 2011-01-29 Geoffrey Garen <ggaren (a] apple.com> 3313 3314 Reviewed by Maciej Stachowiak. 3315 3316 Switched heap to use the Bitmap class and removed CollectorBitmap 3317 https://bugs.webkit.org/show_bug.cgi?id=53391 3318 3319 SunSpider says 1.005x as fast. Seems like a fluke. 3320 3321 * runtime/MarkedSpace.cpp: 3322 (JSC::MarkedSpace::allocate): Updated for rename and returning a value 3323 rather than taking a value by reference. 3324 3325 * runtime/MarkedSpace.h: Code reuse is good. 3326 3327 * wtf/Bitmap.h: 3328 (WTF::::testAndSet): Added, since this is the one thing Bitmap was missing 3329 which CollectorBitmap had. (Renamed from the less conventional "getset".) 3330 3331 (WTF::::nextPossiblyUnset): Renamed and changed to return a value for 3332 clarity. It's all the same with inlining. 3333 3334 2011-01-28 Geoffrey Garen <ggaren (a] apple.com> 3335 3336 Reviewed by Maciej Stachowiak. 3337 3338 Some more Heap cleanup. 3339 https://bugs.webkit.org/show_bug.cgi?id=53357 3340 3341 * JavaScriptCore.exp: 3342 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: Updated exported symbols. 3343 3344 * runtime/Heap.cpp: 3345 (JSC::Heap::reportExtraMemoryCostSlowCase): Renamed recordExtraCost to 3346 reportExtraMemoryCostSlowCase to match our naming conventions. 3347 3348 (JSC::Heap::capacity): Renamed size to capacity because this function 3349 returns the capacity of the heap, including unused portions. 3350 3351 * runtime/Heap.h: 3352 (JSC::Heap::globalData): 3353 (JSC::Heap::markedSpace): 3354 (JSC::Heap::machineStackMarker): 3355 (JSC::Heap::reportExtraMemoryCost): Moved statics to the top of the file. 3356 Moved ctor and dtor to the beginning of the class definition. Grouped 3357 functions by purpose. 3358 3359 * runtime/MarkedSpace.cpp: 3360 (JSC::MarkedSpace::capacity): Renamed size to capacity because this 3361 function returns the capacity of the heap, including unused portions. 3362 3363 * runtime/MarkedSpace.h: Removed statistics and the Statistics class because 3364 the same information can be gotten just by calling size() and capacity(). 3365 3366 * runtime/MemoryStatistics.cpp: 3367 * runtime/MemoryStatistics.h: Ditto. 3368 3369 2011-01-29 Daniel Bates <dbates (a] rim.com> 3370 3371 Reviewed by Eric Seidel. 3372 3373 Move wince/mt19937ar.c to ThirdParty and make it a policy choice 3374 https://bugs.webkit.org/show_bug.cgi?id=53253 3375 3376 Make inclusion of MT19937 a policy decision. 3377 3378 Currently, we hardcoded to use MT19937 when building for 3379 Windows CE. Instead, we should make this a policy decision 3380 with the Windows CE port using this by default. 3381 3382 * JavaScriptCore.pri: Append Source/ThirdParty to the end 3383 of the list include directories. 3384 * wtf/CMakeLists.txt: Ditto. 3385 * wtf/Platform.h: Defined WTF_USE_MERSENNE_TWISTER_19937 when 3386 building for Windows CE. 3387 * wtf/RandomNumber.cpp: 3388 (WTF::randomNumber): Substituted USE(MERSENNE_TWISTER_19937) for OS(WINCE). 3389 3390 2011-01-29 Cameron Zwarich <zwarich (a] apple.com> 3391 3392 Reviewed by David Kilzer. 3393 3394 Bug 53374 - Remove uses of unsafe string functions in debugging code 3395 https://bugs.webkit.org/show_bug.cgi?id=53374 3396 3397 * runtime/RegExp.cpp: 3398 (JSC::RegExp::printTraceData): 3399 3400 2011-01-29 Cameron Zwarich <zwarich (a] apple.com> 3401 3402 Reviewed by Oliver Hunt. 3403 3404 JavaScriptCoreUseJIT environment variable broken 3405 https://bugs.webkit.org/show_bug.cgi?id=53372 3406 3407 * runtime/JSGlobalData.cpp: 3408 (JSC::JSGlobalData::JSGlobalData): Check the actual value in the string returned 3409 by getenv() rather than just doing a NULL check on the return value. 3410 3411 2011-01-29 Patrick Gansterer <paroga (a] webkit.org> 3412 3413 Reviewed by David Kilzer. 3414 3415 Move CharacterNames.h into WTF directory 3416 https://bugs.webkit.org/show_bug.cgi?id=49618 3417 3418 * GNUmakefile.am: 3419 * JavaScriptCore.gypi: 3420 * JavaScriptCore.vcproj/WTF/WTF.vcproj: 3421 * JavaScriptCore.xcodeproj/project.pbxproj: 3422 * wtf/CMakeLists.txt: 3423 * wtf/unicode/CharacterNames.h: Renamed from WebCore/platform/text/CharacterNames.h. 3424 * wtf/unicode/UTF8.cpp: 3425 3426 2011-01-28 Simon Fraser <simon.fraser (a] apple.com> 3427 3428 Reviewed by Gavin Barraclough. 3429 3430 Add various clampToInt() methods to MathExtras.h 3431 https://bugs.webkit.org/show_bug.cgi?id=52910 3432 3433 Add functions for clamping doubles and floats to valid int 3434 ranges, for signed and positive integers. 3435 3436 * wtf/MathExtras.h: 3437 (clampToInteger): 3438 (clampToPositiveInteger): 3439 3440 2011-01-28 Sheriff Bot <webkit.review.bot (a] gmail.com> 3441 3442 Unreviewed, rolling out r77006 and r77020. 3443 http://trac.webkit.org/changeset/77006 3444 http://trac.webkit.org/changeset/77020 3445 https://bugs.webkit.org/show_bug.cgi?id=53360 3446 3447 "Broke Windows tests" (Requested by rniwa on #webkit). 3448 3449 * API/JSCallbackObject.h: 3450 (JSC::JSCallbackObjectData::setPrivateProperty): 3451 (JSC::JSCallbackObjectData::JSPrivatePropertyMap::getPrivateProperty): 3452 (JSC::JSCallbackObjectData::JSPrivatePropertyMap::setPrivateProperty): 3453 (JSC::JSCallbackObjectData::JSPrivatePropertyMap::markChildren): 3454 (JSC::JSCallbackObject::setPrivateProperty): 3455 * API/JSCallbackObjectFunctions.h: 3456 (JSC::::put): 3457 (JSC::::staticFunctionGetter): 3458 * API/JSObjectRef.cpp: 3459 (JSObjectMakeConstructor): 3460 (JSObjectSetPrivateProperty): 3461 * API/JSWeakObjectMapRefInternal.h: 3462 * JavaScriptCore.exp: 3463 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: 3464 * JavaScriptCore.xcodeproj/project.pbxproj: 3465 * bytecode/CodeBlock.cpp: 3466 (JSC::CodeBlock::markAggregate): 3467 * bytecode/CodeBlock.h: 3468 (JSC::CodeBlock::globalObject): 3469 * bytecompiler/BytecodeGenerator.cpp: 3470 (JSC::BytecodeGenerator::BytecodeGenerator): 3471 (JSC::BytecodeGenerator::emitJumpIfNotFunctionCall): 3472 (JSC::BytecodeGenerator::emitJumpIfNotFunctionApply): 3473 (JSC::BytecodeGenerator::findScopedProperty): 3474 * debugger/Debugger.cpp: 3475 (JSC::evaluateInGlobalCallFrame): 3476 * debugger/DebuggerActivation.cpp: 3477 (JSC::DebuggerActivation::DebuggerActivation): 3478 (JSC::DebuggerActivation::markChildren): 3479 * debugger/DebuggerActivation.h: 3480 * debugger/DebuggerCallFrame.cpp: 3481 (JSC::DebuggerCallFrame::evaluate): 3482 * interpreter/CallFrame.h: 3483 (JSC::ExecState::exception): 3484 * interpreter/Interpreter.cpp: 3485 (JSC::Interpreter::resolve): 3486 (JSC::Interpreter::resolveSkip): 3487 (JSC::Interpreter::resolveGlobal): 3488 (JSC::Interpreter::resolveGlobalDynamic): 3489 (JSC::Interpreter::resolveBaseAndProperty): 3490 (JSC::Interpreter::unwindCallFrame): 3491 (JSC::appendSourceToError): 3492 (JSC::Interpreter::execute): 3493 (JSC::Interpreter::tryCacheGetByID): 3494 (JSC::Interpreter::privateExecute): 3495 * jit/JITStubs.cpp: 3496 (JSC::JITThunks::tryCacheGetByID): 3497 (JSC::DEFINE_STUB_FUNCTION): 3498 * jsc.cpp: 3499 (GlobalObject::GlobalObject): 3500 * runtime/ArgList.cpp: 3501 (JSC::MarkedArgumentBuffer::markLists): 3502 * runtime/Arguments.cpp: 3503 (JSC::Arguments::markChildren): 3504 (JSC::Arguments::getOwnPropertySlot): 3505 (JSC::Arguments::getOwnPropertyDescriptor): 3506 (JSC::Arguments::put): 3507 * runtime/Arguments.h: 3508 (JSC::Arguments::setActivation): 3509 (JSC::Arguments::Arguments): 3510 * runtime/ArrayConstructor.cpp: 3511 (JSC::ArrayConstructor::ArrayConstructor): 3512 (JSC::constructArrayWithSizeQuirk): 3513 * runtime/ArrayPrototype.cpp: 3514 (JSC::arrayProtoFuncSplice): 3515 * runtime/BatchedTransitionOptimizer.h: 3516 (JSC::BatchedTransitionOptimizer::BatchedTransitionOptimizer): 3517 (JSC::BatchedTransitionOptimizer::~BatchedTransitionOptimizer): 3518 * runtime/BooleanConstructor.cpp: 3519 (JSC::BooleanConstructor::BooleanConstructor): 3520 (JSC::constructBoolean): 3521 (JSC::constructBooleanFromImmediateBoolean): 3522 * runtime/BooleanPrototype.cpp: 3523 (JSC::BooleanPrototype::BooleanPrototype): 3524 * runtime/ConservativeSet.cpp: 3525 (JSC::ConservativeSet::grow): 3526 * runtime/ConservativeSet.h: 3527 (JSC::ConservativeSet::~ConservativeSet): 3528 (JSC::ConservativeSet::mark): 3529 * runtime/DateConstructor.cpp: 3530 (JSC::DateConstructor::DateConstructor): 3531 * runtime/DateInstance.cpp: 3532 (JSC::DateInstance::DateInstance): 3533 * runtime/DatePrototype.cpp: 3534 (JSC::dateProtoFuncSetTime): 3535 (JSC::setNewValueFromTimeArgs): 3536 (JSC::setNewValueFromDateArgs): 3537 (JSC::dateProtoFuncSetYear): 3538 * runtime/ErrorConstructor.cpp: 3539 (JSC::ErrorConstructor::ErrorConstructor): 3540 * runtime/ErrorInstance.cpp: 3541 (JSC::ErrorInstance::ErrorInstance): 3542 * runtime/ErrorPrototype.cpp: 3543 (JSC::ErrorPrototype::ErrorPrototype): 3544 * runtime/FunctionConstructor.cpp: 3545 (JSC::FunctionConstructor::FunctionConstructor): 3546 * runtime/FunctionPrototype.cpp: 3547 (JSC::FunctionPrototype::FunctionPrototype): 3548 * runtime/GetterSetter.cpp: 3549 (JSC::GetterSetter::markChildren): 3550 * runtime/GetterSetter.h: 3551 (JSC::GetterSetter::GetterSetter): 3552 (JSC::GetterSetter::getter): 3553 (JSC::GetterSetter::setGetter): 3554 (JSC::GetterSetter::setter): 3555 (JSC::GetterSetter::setSetter): 3556 * runtime/GlobalEvalFunction.cpp: 3557 (JSC::GlobalEvalFunction::GlobalEvalFunction): 3558 (JSC::GlobalEvalFunction::markChildren): 3559 * runtime/GlobalEvalFunction.h: 3560 (JSC::GlobalEvalFunction::cachedGlobalObject): 3561 * runtime/Heap.cpp: 3562 (JSC::Heap::markProtectedObjects): 3563 (JSC::Heap::markTempSortVectors): 3564 (JSC::Heap::markRoots): 3565 * runtime/InternalFunction.cpp: 3566 (JSC::InternalFunction::InternalFunction): 3567 * runtime/JSAPIValueWrapper.h: 3568 (JSC::JSAPIValueWrapper::value): 3569 (JSC::JSAPIValueWrapper::JSAPIValueWrapper): 3570 * runtime/JSActivation.cpp: 3571 (JSC::JSActivation::markChildren): 3572 (JSC::JSActivation::put): 3573 * runtime/JSArray.cpp: 3574 (JSC::JSArray::JSArray): 3575 (JSC::JSArray::getOwnPropertySlot): 3576 (JSC::JSArray::getOwnPropertyDescriptor): 3577 (JSC::JSArray::put): 3578 (JSC::JSArray::putSlowCase): 3579 (JSC::JSArray::deleteProperty): 3580 (JSC::JSArray::increaseVectorLength): 3581 (JSC::JSArray::setLength): 3582 (JSC::JSArray::pop): 3583 (JSC::JSArray::push): 3584 (JSC::JSArray::unshiftCount): 3585 (JSC::JSArray::sort): 3586 (JSC::JSArray::fillArgList): 3587 (JSC::JSArray::copyToRegisters): 3588 (JSC::JSArray::compactForSorting): 3589 * runtime/JSArray.h: 3590 (JSC::JSArray::getIndex): 3591 (JSC::JSArray::setIndex): 3592 (JSC::JSArray::uncheckedSetIndex): 3593 (JSC::JSArray::markChildrenDirect): 3594 * runtime/JSByteArray.cpp: 3595 (JSC::JSByteArray::JSByteArray): 3596 * runtime/JSCell.h: 3597 (JSC::JSCell::JSValue::toThisObject): 3598 (JSC::JSCell::MarkStack::append): 3599 * runtime/JSFunction.cpp: 3600 (JSC::JSFunction::JSFunction): 3601 (JSC::JSFunction::getOwnPropertySlot): 3602 * runtime/JSGlobalData.h: 3603 * runtime/JSGlobalObject.cpp: 3604 (JSC::markIfNeeded): 3605 (JSC::JSGlobalObject::reset): 3606 (JSC::JSGlobalObject::resetPrototype): 3607 (JSC::JSGlobalObject::markChildren): 3608 * runtime/JSGlobalObject.h: 3609 (JSC::JSGlobalObject::JSGlobalObjectData::JSGlobalObjectData): 3610 (JSC::JSGlobalObject::regExpConstructor): 3611 (JSC::JSGlobalObject::errorConstructor): 3612 (JSC::JSGlobalObject::evalErrorConstructor): 3613 (JSC::JSGlobalObject::rangeErrorConstructor): 3614 (JSC::JSGlobalObject::referenceErrorConstructor): 3615 (JSC::JSGlobalObject::syntaxErrorConstructor): 3616 (JSC::JSGlobalObject::typeErrorConstructor): 3617 (JSC::JSGlobalObject::URIErrorConstructor): 3618 (JSC::JSGlobalObject::evalFunction): 3619 (JSC::JSGlobalObject::objectPrototype): 3620 (JSC::JSGlobalObject::functionPrototype): 3621 (JSC::JSGlobalObject::arrayPrototype): 3622 (JSC::JSGlobalObject::booleanPrototype): 3623 (JSC::JSGlobalObject::stringPrototype): 3624 (JSC::JSGlobalObject::numberPrototype): 3625 (JSC::JSGlobalObject::datePrototype): 3626 (JSC::JSGlobalObject::regExpPrototype): 3627 (JSC::JSGlobalObject::methodCallDummy): 3628 (JSC::Structure::prototypeForLookup): 3629 (JSC::constructArray): 3630 * runtime/JSONObject.cpp: 3631 (JSC::Stringifier::Holder::object): 3632 (JSC::Stringifier::markAggregate): 3633 (JSC::Stringifier::stringify): 3634 (JSC::Stringifier::Holder::appendNextProperty): 3635 (JSC::Walker::callReviver): 3636 (JSC::Walker::walk): 3637 * runtime/JSObject.cpp: 3638 (JSC::JSObject::defineGetter): 3639 (JSC::JSObject::defineSetter): 3640 (JSC::JSObject::removeDirect): 3641 (JSC::JSObject::putDirectFunction): 3642 (JSC::JSObject::putDirectFunctionWithoutTransition): 3643 (JSC::putDescriptor): 3644 (JSC::JSObject::defineOwnProperty): 3645 * runtime/JSObject.h: 3646 (JSC::JSObject::getDirectOffset): 3647 (JSC::JSObject::putDirectOffset): 3648 (JSC::JSObject::flattenDictionaryObject): 3649 (JSC::JSObject::putDirectInternal): 3650 (JSC::JSObject::putDirect): 3651 (JSC::JSObject::putDirectFunction): 3652 (JSC::JSObject::putDirectWithoutTransition): 3653 (JSC::JSObject::putDirectFunctionWithoutTransition): 3654 (JSC::JSValue::putDirect): 3655 (JSC::JSObject::allocatePropertyStorageInline): 3656 (JSC::JSObject::markChildrenDirect): 3657 * runtime/JSPropertyNameIterator.cpp: 3658 (JSC::JSPropertyNameIterator::JSPropertyNameIterator): 3659 (JSC::JSPropertyNameIterator::get): 3660 * runtime/JSPropertyNameIterator.h: 3661 * runtime/JSStaticScopeObject.cpp: 3662 (JSC::JSStaticScopeObject::markChildren): 3663 * runtime/JSString.cpp: 3664 (JSC::StringObject::create): 3665 * runtime/JSValue.h: 3666 * runtime/JSWrapperObject.cpp: 3667 (JSC::JSWrapperObject::markChildren): 3668 * runtime/JSWrapperObject.h: 3669 (JSC::JSWrapperObject::internalValue): 3670 (JSC::JSWrapperObject::setInternalValue): 3671 * runtime/LiteralParser.cpp: 3672 (JSC::LiteralParser::parse): 3673 * runtime/Lookup.cpp: 3674 (JSC::setUpStaticFunctionSlot): 3675 * runtime/Lookup.h: 3676 (JSC::lookupPut): 3677 * runtime/MarkStack.h: 3678 (JSC::MarkStack::appendValues): 3679 * runtime/MathObject.cpp: 3680 (JSC::MathObject::MathObject): 3681 * runtime/NativeErrorConstructor.cpp: 3682 (JSC::NativeErrorConstructor::NativeErrorConstructor): 3683 * runtime/NativeErrorPrototype.cpp: 3684 (JSC::NativeErrorPrototype::NativeErrorPrototype): 3685 * runtime/NumberConstructor.cpp: 3686 (JSC::NumberConstructor::NumberConstructor): 3687 (JSC::constructWithNumberConstructor): 3688 * runtime/NumberObject.cpp: 3689 (JSC::constructNumber): 3690 * runtime/NumberPrototype.cpp: 3691 (JSC::NumberPrototype::NumberPrototype): 3692 * runtime/ObjectConstructor.cpp: 3693 (JSC::ObjectConstructor::ObjectConstructor): 3694 (JSC::objectConstructorGetOwnPropertyDescriptor): 3695 * runtime/Operations.h: 3696 (JSC::normalizePrototypeChain): 3697 (JSC::resolveBase): 3698 * runtime/PrototypeFunction.cpp: 3699 (JSC::PrototypeFunction::PrototypeFunction): 3700 * runtime/PutPropertySlot.h: 3701 (JSC::PutPropertySlot::setExistingProperty): 3702 (JSC::PutPropertySlot::setNewProperty): 3703 (JSC::PutPropertySlot::base): 3704 * runtime/RegExpConstructor.cpp: 3705 (JSC::RegExpConstructor::RegExpConstructor): 3706 * runtime/ScopeChain.cpp: 3707 (JSC::ScopeChainNode::print): 3708 * runtime/ScopeChain.h: 3709 (JSC::ScopeChainNode::~ScopeChainNode): 3710 (JSC::ScopeChainIterator::operator*): 3711 (JSC::ScopeChainIterator::operator->): 3712 (JSC::ScopeChain::top): 3713 * runtime/ScopeChainMark.h: 3714 (JSC::ScopeChain::markAggregate): 3715 * runtime/SmallStrings.cpp: 3716 (JSC::isMarked): 3717 (JSC::SmallStrings::markChildren): 3718 * runtime/SmallStrings.h: 3719 (JSC::SmallStrings::emptyString): 3720 (JSC::SmallStrings::singleCharacterString): 3721 (JSC::SmallStrings::singleCharacterStrings): 3722 * runtime/StringConstructor.cpp: 3723 (JSC::StringConstructor::StringConstructor): 3724 * runtime/StringObject.cpp: 3725 (JSC::StringObject::StringObject): 3726 * runtime/StringObject.h: 3727 * runtime/StringPrototype.cpp: 3728 (JSC::StringPrototype::StringPrototype): 3729 * runtime/Structure.cpp: 3730 (JSC::Structure::Structure): 3731 (JSC::Structure::addPropertyTransition): 3732 (JSC::Structure::toDictionaryTransition): 3733 (JSC::Structure::flattenDictionaryStructure): 3734 * runtime/Structure.h: 3735 (JSC::Structure::storedPrototype): 3736 * runtime/WeakGCMap.h: 3737 (JSC::WeakGCMap::uncheckedGet): 3738 (JSC::WeakGCMap::isValid): 3739 (JSC::::get): 3740 (JSC::::take): 3741 (JSC::::set): 3742 (JSC::::uncheckedRemove): 3743 * runtime/WriteBarrier.h: Removed. 3744 3745 2011-01-28 Gavin Barraclough <barraclough (a] apple.com> 3746 3747 Reviewed by Geoff Garen. 3748 3749 https://bugs.webkit.org/show_bug.cgi?id=53352 3750 Heavy external fragmentation in FixedVMPoolAllocator can lead to a CRASH(). 3751 3752 The FixedVMPoolAllocator currently uses a best fix policy - 3753 switch to first fit, this is less prone to external fragmentation. 3754 3755 * jit/ExecutableAllocatorFixedVMPool.cpp: 3756 (JSC::AllocationTableSizeClass::AllocationTableSizeClass): 3757 (JSC::AllocationTableSizeClass::blockSize): 3758 (JSC::AllocationTableSizeClass::blockCount): 3759 (JSC::AllocationTableSizeClass::blockAlignment): 3760 (JSC::AllocationTableSizeClass::size): 3761 (JSC::AllocationTableLeaf::AllocationTableLeaf): 3762 (JSC::AllocationTableLeaf::~AllocationTableLeaf): 3763 (JSC::AllocationTableLeaf::allocate): 3764 (JSC::AllocationTableLeaf::free): 3765 (JSC::AllocationTableLeaf::isEmpty): 3766 (JSC::AllocationTableLeaf::isFull): 3767 (JSC::AllocationTableLeaf::size): 3768 (JSC::AllocationTableLeaf::classForSize): 3769 (JSC::AllocationTableLeaf::dump): 3770 (JSC::LazyAllocationTable::LazyAllocationTable): 3771 (JSC::LazyAllocationTable::~LazyAllocationTable): 3772 (JSC::LazyAllocationTable::allocate): 3773 (JSC::LazyAllocationTable::free): 3774 (JSC::LazyAllocationTable::isEmpty): 3775 (JSC::LazyAllocationTable::isFull): 3776 (JSC::LazyAllocationTable::size): 3777 (JSC::LazyAllocationTable::dump): 3778 (JSC::LazyAllocationTable::classForSize): 3779 (JSC::AllocationTableDirectory::AllocationTableDirectory): 3780 (JSC::AllocationTableDirectory::~AllocationTableDirectory): 3781 (JSC::AllocationTableDirectory::allocate): 3782 (JSC::AllocationTableDirectory::free): 3783 (JSC::AllocationTableDirectory::isEmpty): 3784 (JSC::AllocationTableDirectory::isFull): 3785 (JSC::AllocationTableDirectory::size): 3786 (JSC::AllocationTableDirectory::classForSize): 3787 (JSC::AllocationTableDirectory::dump): 3788 (JSC::FixedVMPoolAllocator::FixedVMPoolAllocator): 3789 (JSC::FixedVMPoolAllocator::alloc): 3790 (JSC::FixedVMPoolAllocator::free): 3791 (JSC::FixedVMPoolAllocator::allocated): 3792 (JSC::FixedVMPoolAllocator::isValid): 3793 (JSC::FixedVMPoolAllocator::classForSize): 3794 (JSC::FixedVMPoolAllocator::offsetToPointer): 3795 (JSC::FixedVMPoolAllocator::pointerToOffset): 3796 (JSC::ExecutableAllocator::committedByteCount): 3797 (JSC::ExecutableAllocator::isValid): 3798 (JSC::ExecutableAllocator::underMemoryPressure): 3799 (JSC::ExecutablePool::systemAlloc): 3800 (JSC::ExecutablePool::systemRelease): 3801 * wtf/PageReservation.h: 3802 (WTF::PageReservation::PageReservation): 3803 (WTF::PageReservation::commit): 3804 (WTF::PageReservation::decommit): 3805 (WTF::PageReservation::committed): 3806 3807 2011-01-27 Oliver Hunt <oliver (a] apple.com> 3808 3809 Reviewed by Geoffrey Garen. 3810 3811 Convert markstack to a slot visitor API 3812 https://bugs.webkit.org/show_bug.cgi?id=53219 3813 3814 Move the MarkStack over to a slot based marking API. 3815 3816 In order to avoiding aliasing concerns there are two new types 3817 that need to be used when holding on to JSValues and JSCell that 3818 need to be marked: WriteBarrier and DeprecatedPtr. WriteBarrier 3819 is expected to be used for any JSValue or Cell that's lifetime and 3820 marking is controlled by another GC object. DeprecatedPtr is used 3821 for any value that we need to rework ownership for. 3822 3823 The change over to this model has produced a large amount of 3824 code changes, but they are mostly mechanical (forwarding JSGlobalData, 3825 etc). 3826 3827 * API/JSCallbackObject.h: 3828 (JSC::JSCallbackObjectData::setPrivateProperty): 3829 (JSC::JSCallbackObjectData::JSPrivatePropertyMap::getPrivateProperty): 3830 (JSC::JSCallbackObjectData::JSPrivatePropertyMap::setPrivateProperty): 3831 (JSC::JSCallbackObjectData::JSPrivatePropertyMap::markChildren): 3832 (JSC::JSCallbackObject::setPrivateProperty): 3833 * API/JSCallbackObjectFunctions.h: 3834 (JSC::::put): 3835 (JSC::::staticFunctionGetter): 3836 * API/JSObjectRef.cpp: 3837 (JSObjectMakeConstructor): 3838 (JSObjectSetPrivateProperty): 3839 * API/JSWeakObjectMapRefInternal.h: 3840 * JavaScriptCore.exp: 3841 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: 3842 * JavaScriptCore.xcodeproj/project.pbxproj: 3843 * bytecode/CodeBlock.cpp: 3844 (JSC::CodeBlock::markAggregate): 3845 * bytecode/CodeBlock.h: 3846 (JSC::CodeBlock::globalObject): 3847 * bytecompiler/BytecodeGenerator.cpp: 3848 (JSC::BytecodeGenerator::BytecodeGenerator): 3849 (JSC::BytecodeGenerator::emitJumpIfNotFunctionCall): 3850 (JSC::BytecodeGenerator::emitJumpIfNotFunctionApply): 3851 (JSC::BytecodeGenerator::findScopedProperty): 3852 * debugger/DebuggerActivation.cpp: 3853 (JSC::DebuggerActivation::DebuggerActivation): 3854 (JSC::DebuggerActivation::markChildren): 3855 * debugger/DebuggerActivation.h: 3856 * interpreter/Interpreter.cpp: 3857 (JSC::Interpreter::resolve): 3858 (JSC::Interpreter::resolveSkip): 3859 (JSC::Interpreter::resolveGlobalDynamic): 3860 (JSC::Interpreter::resolveBaseAndProperty): 3861 (JSC::Interpreter::unwindCallFrame): 3862 (JSC::appendSourceToError): 3863 (JSC::Interpreter::execute): 3864 (JSC::Interpreter::privateExecute): 3865 * interpreter/Register.h: 3866 (JSC::Register::jsValueSlot): 3867 * jit/JITStubs.cpp: 3868 (JSC::JITThunks::tryCacheGetByID): 3869 (JSC::DEFINE_STUB_FUNCTION): 3870 * jsc.cpp: 3871 (GlobalObject::GlobalObject): 3872 * runtime/Arguments.cpp: 3873 (JSC::Arguments::markChildren): 3874 (JSC::Arguments::getOwnPropertySlot): 3875 (JSC::Arguments::getOwnPropertyDescriptor): 3876 (JSC::Arguments::put): 3877 * runtime/Arguments.h: 3878 (JSC::Arguments::setActivation): 3879 (JSC::Arguments::Arguments): 3880 * runtime/ArrayConstructor.cpp: 3881 (JSC::ArrayConstructor::ArrayConstructor): 3882 (JSC::constructArrayWithSizeQuirk): 3883 * runtime/ArrayPrototype.cpp: 3884 (JSC::arrayProtoFuncSplice): 3885 * runtime/BatchedTransitionOptimizer.h: 3886 (JSC::BatchedTransitionOptimizer::BatchedTransitionOptimizer): 3887 (JSC::BatchedTransitionOptimizer::~BatchedTransitionOptimizer): 3888 * runtime/BooleanConstructor.cpp: 3889 (JSC::BooleanConstructor::BooleanConstructor): 3890 (JSC::constructBoolean): 3891 (JSC::constructBooleanFromImmediateBoolean): 3892 * runtime/BooleanPrototype.cpp: 3893 (JSC::BooleanPrototype::BooleanPrototype): 3894 * runtime/ConservativeSet.h: 3895 (JSC::ConservativeSet::mark): 3896 * runtime/DateConstructor.cpp: 3897 (JSC::DateConstructor::DateConstructor): 3898 * runtime/DateInstance.cpp: 3899 (JSC::DateInstance::DateInstance): 3900 * runtime/DatePrototype.cpp: 3901 (JSC::dateProtoFuncSetTime): 3902 (JSC::setNewValueFromTimeArgs): 3903 (JSC::setNewValueFromDateArgs): 3904 (JSC::dateProtoFuncSetYear): 3905 * runtime/ErrorConstructor.cpp: 3906 (JSC::ErrorConstructor::ErrorConstructor): 3907 * runtime/ErrorInstance.cpp: 3908 (JSC::ErrorInstance::ErrorInstance): 3909 * runtime/ErrorPrototype.cpp: 3910 (JSC::ErrorPrototype::ErrorPrototype): 3911 * runtime/FunctionConstructor.cpp: 3912 (JSC::FunctionConstructor::FunctionConstructor): 3913 * runtime/FunctionPrototype.cpp: 3914 (JSC::FunctionPrototype::FunctionPrototype): 3915 * runtime/GetterSetter.cpp: 3916 (JSC::GetterSetter::markChildren): 3917 * runtime/GetterSetter.h: 3918 (JSC::GetterSetter::GetterSetter): 3919 (JSC::GetterSetter::getter): 3920 (JSC::GetterSetter::setGetter): 3921 (JSC::GetterSetter::setter): 3922 (JSC::GetterSetter::setSetter): 3923 * runtime/GlobalEvalFunction.cpp: 3924 (JSC::GlobalEvalFunction::GlobalEvalFunction): 3925 (JSC::GlobalEvalFunction::markChildren): 3926 * runtime/GlobalEvalFunction.h: 3927 (JSC::GlobalEvalFunction::cachedGlobalObject): 3928 * runtime/Heap.cpp: 3929 (JSC::Heap::markProtectedObjects): 3930 (JSC::Heap::markTempSortVectors): 3931 (JSC::Heap::markRoots): 3932 * runtime/InternalFunction.cpp: 3933 (JSC::InternalFunction::InternalFunction): 3934 * runtime/JSAPIValueWrapper.h: 3935 (JSC::JSAPIValueWrapper::value): 3936 (JSC::JSAPIValueWrapper::JSAPIValueWrapper): 3937 * runtime/JSActivation.cpp: 3938 (JSC::JSActivation::put): 3939 * runtime/JSArray.cpp: 3940 (JSC::JSArray::JSArray): 3941 (JSC::JSArray::getOwnPropertySlot): 3942 (JSC::JSArray::getOwnPropertyDescriptor): 3943 (JSC::JSArray::put): 3944 (JSC::JSArray::putSlowCase): 3945 (JSC::JSArray::deleteProperty): 3946 (JSC::JSArray::increaseVectorLength): 3947 (JSC::JSArray::setLength): 3948 (JSC::JSArray::pop): 3949 (JSC::JSArray::push): 3950 (JSC::JSArray::unshiftCount): 3951 (JSC::JSArray::sort): 3952 (JSC::JSArray::fillArgList): 3953 (JSC::JSArray::copyToRegisters): 3954 (JSC::JSArray::compactForSorting): 3955 * runtime/JSArray.h: 3956 (JSC::JSArray::getIndex): 3957 (JSC::JSArray::setIndex): 3958 (JSC::JSArray::uncheckedSetIndex): 3959 (JSC::JSArray::markChildrenDirect): 3960 * runtime/JSByteArray.cpp: 3961 (JSC::JSByteArray::JSByteArray): 3962 * runtime/JSCell.h: 3963 (JSC::JSCell::MarkStack::append): 3964 (JSC::JSCell::MarkStack::appendCell): 3965 * runtime/JSFunction.cpp: 3966 (JSC::JSFunction::JSFunction): 3967 (JSC::JSFunction::getOwnPropertySlot): 3968 * runtime/JSGlobalObject.cpp: 3969 (JSC::markIfNeeded): 3970 (JSC::JSGlobalObject::reset): 3971 (JSC::JSGlobalObject::resetPrototype): 3972 (JSC::JSGlobalObject::markChildren): 3973 * runtime/JSGlobalObject.h: 3974 (JSC::JSGlobalObject::JSGlobalObjectData::JSGlobalObjectData): 3975 (JSC::JSGlobalObject::regExpConstructor): 3976 (JSC::JSGlobalObject::errorConstructor): 3977 (JSC::JSGlobalObject::evalErrorConstructor): 3978 (JSC::JSGlobalObject::rangeErrorConstructor): 3979 (JSC::JSGlobalObject::referenceErrorConstructor): 3980 (JSC::JSGlobalObject::syntaxErrorConstructor): 3981 (JSC::JSGlobalObject::typeErrorConstructor): 3982 (JSC::JSGlobalObject::URIErrorConstructor): 3983 (JSC::JSGlobalObject::evalFunction): 3984 (JSC::JSGlobalObject::objectPrototype): 3985 (JSC::JSGlobalObject::functionPrototype): 3986 (JSC::JSGlobalObject::arrayPrototype): 3987 (JSC::JSGlobalObject::booleanPrototype): 3988 (JSC::JSGlobalObject::stringPrototype): 3989 (JSC::JSGlobalObject::numberPrototype): 3990 (JSC::JSGlobalObject::datePrototype): 3991 (JSC::JSGlobalObject::regExpPrototype): 3992 (JSC::JSGlobalObject::methodCallDummy): 3993 (JSC::constructArray): 3994 * runtime/JSONObject.cpp: 3995 (JSC::Stringifier::Holder::object): 3996 (JSC::Stringifier::Holder::objectSlot): 3997 (JSC::Stringifier::markAggregate): 3998 (JSC::Stringifier::stringify): 3999 (JSC::Stringifier::Holder::appendNextProperty): 4000 (JSC::Walker::callReviver): 4001 (JSC::Walker::walk): 4002 * runtime/JSObject.cpp: 4003 (JSC::JSObject::defineGetter): 4004 (JSC::JSObject::defineSetter): 4005 (JSC::JSObject::removeDirect): 4006 (JSC::JSObject::putDirectFunction): 4007 (JSC::JSObject::putDirectFunctionWithoutTransition): 4008 (JSC::putDescriptor): 4009 (JSC::JSObject::defineOwnProperty): 4010 * runtime/JSObject.h: 4011 (JSC::JSObject::putDirectOffset): 4012 (JSC::JSObject::putUndefinedAtDirectOffset): 4013 (JSC::JSObject::flattenDictionaryObject): 4014 (JSC::JSObject::putDirectInternal): 4015 (JSC::JSObject::putDirect): 4016 (JSC::JSObject::putDirectFunction): 4017 (JSC::JSObject::putDirectWithoutTransition): 4018 (JSC::JSObject::putDirectFunctionWithoutTransition): 4019 (JSC::JSValue::putDirect): 4020 (JSC::JSObject::allocatePropertyStorageInline): 4021 (JSC::JSObject::markChildrenDirect): 4022 * runtime/JSStaticScopeObject.cpp: 4023 (JSC::JSStaticScopeObject::markChildren): 4024 * runtime/JSString.cpp: 4025 (JSC::StringObject::create): 4026 * runtime/JSValue.h: 4027 * runtime/JSWrapperObject.cpp: 4028 (JSC::JSWrapperObject::markChildren): 4029 * runtime/JSWrapperObject.h: 4030 (JSC::JSWrapperObject::internalValue): 4031 (JSC::JSWrapperObject::setInternalValue): 4032 * runtime/LiteralParser.cpp: 4033 (JSC::LiteralParser::parse): 4034 * runtime/Lookup.cpp: 4035 (JSC::setUpStaticFunctionSlot): 4036 * runtime/Lookup.h: 4037 (JSC::lookupPut): 4038 * runtime/MarkStack.h: 4039 * runtime/MathObject.cpp: 4040 (JSC::MathObject::MathObject): 4041 * runtime/NativeErrorConstructor.cpp: 4042 (JSC::NativeErrorConstructor::NativeErrorConstructor): 4043 * runtime/NativeErrorPrototype.cpp: 4044 (JSC::NativeErrorPrototype::NativeErrorPrototype): 4045 * runtime/NumberConstructor.cpp: 4046 (JSC::NumberConstructor::NumberConstructor): 4047 (JSC::constructWithNumberConstructor): 4048 * runtime/NumberObject.cpp: 4049 (JSC::constructNumber): 4050 * runtime/NumberPrototype.cpp: 4051 (JSC::NumberPrototype::NumberPrototype): 4052 * runtime/ObjectConstructor.cpp: 4053 (JSC::ObjectConstructor::ObjectConstructor): 4054 (JSC::objectConstructorGetOwnPropertyDescriptor): 4055 * runtime/Operations.h: 4056 (JSC::normalizePrototypeChain): 4057 (JSC::resolveBase): 4058 * runtime/PrototypeFunction.cpp: 4059 (JSC::PrototypeFunction::PrototypeFunction): 4060 * runtime/PutPropertySlot.h: 4061 (JSC::PutPropertySlot::setExistingProperty): 4062 (JSC::PutPropertySlot::setNewProperty): 4063 (JSC::PutPropertySlot::base): 4064 * runtime/RegExpConstructor.cpp: 4065 (JSC::RegExpConstructor::RegExpConstructor): 4066 * runtime/ScopeChain.cpp: 4067 (JSC::ScopeChainNode::print): 4068 * runtime/ScopeChain.h: 4069 (JSC::ScopeChainNode::~ScopeChainNode): 4070 (JSC::ScopeChainIterator::operator*): 4071 (JSC::ScopeChainIterator::operator->): 4072 (JSC::ScopeChain::top): 4073 * runtime/ScopeChainMark.h: 4074 (JSC::ScopeChain::markAggregate): 4075 * runtime/SmallStrings.cpp: 4076 (JSC::isMarked): 4077 (JSC::SmallStrings::markChildren): 4078 * runtime/SmallStrings.h: 4079 (JSC::SmallStrings::emptyString): 4080 (JSC::SmallStrings::singleCharacterString): 4081 (JSC::SmallStrings::singleCharacterStrings): 4082 * runtime/StringConstructor.cpp: 4083 (JSC::StringConstructor::StringConstructor): 4084 * runtime/StringObject.cpp: 4085 (JSC::StringObject::StringObject): 4086 * runtime/StringObject.h: 4087 * runtime/StringPrototype.cpp: 4088 (JSC::StringPrototype::StringPrototype): 4089 * runtime/Structure.cpp: 4090 (JSC::Structure::flattenDictionaryStructure): 4091 * runtime/Structure.h: 4092 (JSC::Structure::storedPrototypeSlot): 4093 * runtime/WeakGCMap.h: 4094 (JSC::WeakGCMap::uncheckedGet): 4095 (JSC::WeakGCMap::uncheckedGetSlot): 4096 (JSC::::get): 4097 (JSC::::take): 4098 (JSC::::set): 4099 (JSC::::uncheckedRemove): 4100 * runtime/WriteBarrier.h: Added. 4101 (JSC::DeprecatedPtr::DeprecatedPtr): 4102 (JSC::DeprecatedPtr::get): 4103 (JSC::DeprecatedPtr::operator*): 4104 (JSC::DeprecatedPtr::operator->): 4105 (JSC::DeprecatedPtr::slot): 4106 (JSC::DeprecatedPtr::operator UnspecifiedBoolType*): 4107 (JSC::DeprecatedPtr::operator!): 4108 (JSC::WriteBarrierBase::set): 4109 (JSC::WriteBarrierBase::get): 4110 (JSC::WriteBarrierBase::operator*): 4111 (JSC::WriteBarrierBase::operator->): 4112 (JSC::WriteBarrierBase::slot): 4113 (JSC::WriteBarrierBase::operator UnspecifiedBoolType*): 4114 (JSC::WriteBarrierBase::operator!): 4115 (JSC::WriteBarrier::WriteBarrier): 4116 (JSC::operator==): 4117 4118 2011-01-28 Adam Roben <aroben (a] apple.com> 4119 4120 Chromium build fix after r76967 4121 4122 * wtf/ThreadingPrimitives.h: Use OS(WINDOWS) instead of PLATFORM(WIN), to match other 4123 similar macros in this file. 4124 4125 2011-01-28 Michael Saboff <msaboff (a] apple.com> 4126 4127 Potentially Unsafe HashSet of RuntimeObject* in RootObject definition 4128 https://bugs.webkit.org/show_bug.cgi?id=53271 4129 4130 Reapplying this this change. No change from prior patch in 4131 JavaScriptCore. 4132 4133 Added new isValid() methods to check if a contained object in 4134 a WeakGCMap is valid when using an unchecked iterator. 4135 4136 * runtime/WeakGCMap.h: 4137 (JSC::WeakGCMap::isValid): 4138 4139 2011-01-27 Adam Roben <aroben (a] apple.com> 4140 4141 Extract code to convert a WTF absolute time to a Win32 wait interval into a separate 4142 function 4143 4144 Fixes <http://webkit.org/b/53208> <rdar://problem/8922490> BinarySemaphore should wrap a 4145 Win32 event 4146 4147 Reviewed by Dave Hyatt. 4148 4149 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: Export the new function. 4150 4151 * wtf/ThreadingPrimitives.h: Declare the new function. 4152 4153 * wtf/ThreadingWin.cpp: 4154 (WTF::ThreadCondition::timedWait): Moved code to convert the absolute time to a wait 4155 interval from here... 4156 (WTF::absoluteTimeToWaitTimeoutInterval): ...to here. 4157 4158 2011-01-28 Sam Weinig <sam (a] webkit.org> 4159 4160 Reviewed by Maciej Stachowiak. 4161 4162 Add basic rubber banding support 4163 <rdar://problem/8219429> 4164 https://bugs.webkit.org/show_bug.cgi?id=53277 4165 4166 * wtf/Platform.h: Add ENABLE for rubber banding. 4167 4168 2011-01-28 Sheriff Bot <webkit.review.bot (a] gmail.com> 4169 4170 Unreviewed, rolling out r76893. 4171 http://trac.webkit.org/changeset/76893 4172 https://bugs.webkit.org/show_bug.cgi?id=53287 4173 4174 It made some tests crash on GTK and Qt debug bots (Requested 4175 by Ossy on #webkit). 4176 4177 * runtime/WeakGCMap.h: 4178 4179 2011-01-27 Adam Barth <abarth (a] webkit.org> 4180 4181 Reviewed by Eric Seidel. 4182 4183 Add WTFString method to compare equality with Vector<UChar> 4184 https://bugs.webkit.org/show_bug.cgi?id=53266 4185 4186 I'm planning to use this method in the new XSS filter implementation, 4187 but it seems generally useful. 4188 4189 * wtf/text/StringImpl.h: 4190 (WTF::equalIgnoringNullity): 4191 * wtf/text/WTFString.h: 4192 (WTF::equalIgnoringNullity): 4193 4194 2011-01-27 Michael Saboff <msaboff (a] apple.com> 4195 4196 Potentially Unsafe HashSet of RuntimeObject* in RootObject definition 4197 https://bugs.webkit.org/show_bug.cgi?id=53271 4198 4199 Added new isValid() methods to check if a contained object in 4200 a WeakGCMap is valid when using an unchecked iterator. 4201 4202 * runtime/WeakGCMap.h: 4203 (JSC::WeakGCMap::isValid): 4204 4205 2011-01-26 Sam Weinig <sam (a] webkit.org> 4206 4207 Reviewed by Maciej Stachowiak. 4208 4209 Add events to represent the start/end of a gesture scroll 4210 https://bugs.webkit.org/show_bug.cgi?id=53215 4211 4212 * wtf/Platform.h: Add ENABLE for gesture events. 4213 4214 2011-01-26 Yael Aharon <yael.aharon (a] nokia.com> 4215 4216 Reviewed by Laszlo Gombos. 4217 4218 [Qt][Symbian] Fix --minimal build 4219 https://bugs.webkit.org/show_bug.cgi?id=52839 4220 4221 Move definition of USE_SYSTEM_MALLOC out of pri file. 4222 Put it in platform.h instead. 4223 4224 * wtf/Platform.h: 4225 * wtf/TCSystemAlloc.cpp: 4226 * wtf/wtf.pri: 4227 4228 2011-01-26 Patrick Gansterer <paroga (a] webkit.org> 4229 4230 Reviewed by Andreas Kling. 4231 4232 [WINCE] Add JIT support to build system 4233 https://bugs.webkit.org/show_bug.cgi?id=53079 4234 4235 * CMakeListsWinCE.txt: 4236 4237 2011-01-25 Adam Roben <aroben (a] apple.com> 4238 4239 Windows Production build fix 4240 4241 Reviewed by Steve Falkenburg. 4242 4243 * JavaScriptCore.vcproj/JavaScriptCore.make: Set BUILDSTYLE to Release_PGO at the very start 4244 of the file so that ConfigurationBuildDir takes that into account. Also set it the right way 4245 (by redefining the macro) rather than the wrong way (by modifying the environment variable). 4246 4247 2011-01-25 Steve Falkenburg <sfalken (a] apple.com> 4248 4249 Rubber-stamped by Adam Roben. 4250 4251 Windows production build fix. 4252 Use correct environment variable escaping 4253 4254 * JavaScriptCore.vcproj/JavaScriptCore.make: 4255 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreGenerated.make: 4256 4257 2011-01-25 Oliver Hunt <oliver (a] apple.com> 4258 4259 Reviewed by Gavin Barraclough. 4260 4261 JSON.stringify processing time exponentially grows with size of object 4262 https://bugs.webkit.org/show_bug.cgi?id=51922 4263 4264 Remove last use of reserveCapacity from JSON stringification, as it results 4265 in appalling append behaviour when there are a large number of property names 4266 and nothing else. 4267 4268 * runtime/JSONObject.cpp: 4269 (JSC::Stringifier::appendQuotedString): 4270 4271 2011-01-25 Antti Koivisto <antti (a] apple.com> 4272 4273 Not reviewed. 4274 4275 Try to fix windows build. 4276 4277 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: 4278 4279 2011-01-25 Antti Koivisto <antti (a] apple.com> 4280 4281 Reviewed by Oliver Hunt. 4282 4283 REGRESSION: Leak in JSParser::Scope::copyCapturedVariablesToVector() 4284 https://bugs.webkit.org/show_bug.cgi?id=53061 4285 4286 Cache did not know about the subclass so failed to fully delete the items. 4287 Got rid of the subclass and moved the classes to separate files. 4288 4289 * CMakeLists.txt: 4290 * GNUmakefile.am: 4291 * JavaScriptCore.exp: 4292 * JavaScriptCore.gypi: 4293 * JavaScriptCore.pro: 4294 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: 4295 * JavaScriptCore.xcodeproj/project.pbxproj: 4296 * parser/JSParser.cpp: 4297 (JSC::JSParser::Scope::saveFunctionInfo): 4298 (JSC::JSParser::Scope::restoreFunctionInfo): 4299 (JSC::JSParser::findCachedFunctionInfo): 4300 (JSC::JSParser::parseFunctionInfo): 4301 * parser/SourceProvider.h: 4302 * parser/SourceProviderCache.cpp: Added. 4303 (JSC::SourceProviderCache::~SourceProviderCache): 4304 (JSC::SourceProviderCache::byteSize): 4305 * parser/SourceProviderCache.h: Added. 4306 (JSC::SourceProviderCache::SourceProviderCache): 4307 (JSC::SourceProviderCache::add): 4308 (JSC::SourceProviderCache::get): 4309 * parser/SourceProviderCacheItem.h: Added. 4310 (JSC::SourceProviderCacheItem::SourceProviderCacheItem): 4311 (JSC::SourceProviderCacheItem::approximateByteSize): 4312 (JSC::SourceProviderCacheItem::closeBraceToken): 4313 4314 2011-01-25 Marcilio Mendonca <mamendonca (a] rim.com> 4315 4316 Reviewed by Darin Adler. 4317 4318 Bug 53087: Refactoring: replaced a hanging "else" with a "return" 4319 statement 4320 https://bugs.webkit.org/show_bug.cgi?id=53087. 4321 4322 Refactoring work: Replaced a hanging "else" within an #if PLATFORM(M 4323 with a "return" so that the code is more readable and less error pro 4324 (e.g., "else" doesn't use braces so adding extra lines to the else 4325 block won't have any effect; even worse, code still compiles 4326 successfully. 4327 4328 * wtf/Assertions.cpp: 4329 4330 2011-01-24 Chris Marrin <cmarrin (a] apple.com> 4331 4332 Reviewed by Eric Seidel. 4333 4334 Change ENABLE_3D_CANVAS to ENABLE_WEBGL 4335 https://bugs.webkit.org/show_bug.cgi?id=53041 4336 4337 * Configurations/FeatureDefines.xcconfig: 4338 4339 2011-01-25 Adam Roben <aroben (a] apple.com> 4340 4341 Windows Production build fix 4342 4343 * JavaScriptCore.vcproj/JavaScriptCore.make: Added a missing "set". 4344 4345 2011-01-25 Patrick Gansterer <paroga (a] webkit.org> 4346 4347 Reviewed by Eric Seidel. 4348 4349 Add missing defines for COMPILER(RVCT) && CPU(ARM_THUMB2) 4350 https://bugs.webkit.org/show_bug.cgi?id=52949 4351 4352 * jit/JITStubs.cpp: 4353 4354 2011-01-24 Adam Roben <aroben (a] apple.com> 4355 4356 Windows Production build fix 4357 4358 * JavaScriptCore.vcproj/JavaScriptCore.make: Update for move of JavaScriptCore into Source. 4359 4360 2011-01-24 Peter Varga <pvarga (a] webkit.org> 4361 4362 Reviewed by Oliver Hunt. 4363 4364 Optimize regex patterns which contain empty alternatives 4365 https://bugs.webkit.org/show_bug.cgi?id=51395 4366 4367 Eliminate the empty alternatives from the regex pattern and convert it to do 4368 the matching in an easier way. 4369 4370 * yarr/YarrPattern.cpp: 4371 (JSC::Yarr::YarrPatternConstructor::atomParenthesesEnd): 4372 4373 2011-01-24 Andras Becsi <abecsi (a] webkit.org> 4374 4375 Reviewed by Csaba Osztrogonc. 4376 4377 [Qt] Move project files into Source 4378 https://bugs.webkit.org/show_bug.cgi?id=52891 4379 4380 * JavaScriptCore.pri: 4381 * JavaScriptCore.pro: 4382 * jsc.pro: 4383 4384 2011-01-23 Mark Rowe <mrowe (a] apple.com> 4385 4386 Follow-up to r76477. 4387 4388 Fix the scripts that detect problematic code such as static initializers 4389 and destructors, weak vtables, inappropriate files in the framework wrappers, 4390 and public headers including private headers. These had all been broken 4391 since the projects were moved in to the Source directory as the paths to the 4392 scripts were not updated at that time. 4393 4394 * JavaScriptCore.xcodeproj/project.pbxproj: 4395 4396 2011-01-23 Patrick Gansterer <paroga (a] webkit.org> 4397 4398 Reviewed by Darin Adler. 4399 4400 Use WTF::StringHasher in WebCore 4401 https://bugs.webkit.org/show_bug.cgi?id=52934 4402 4403 Add an additional function to calculate the hash 4404 of data with a runtimedependent size. 4405 4406 * wtf/StringHasher.h: 4407 (WTF::StringHasher::createBlobHash): 4408 4409 2011-01-23 Patrick Gansterer <paroga (a] webkit.org> 4410 4411 Reviewed by David Kilzer. 4412 4413 Fix comment in String::ascii() 4414 https://bugs.webkit.org/show_bug.cgi?id=52980 4415 4416 * wtf/text/WTFString.cpp: 4417 (WTF::String::ascii): 4418 4419 2011-01-23 Patrick Gansterer <paroga (a] webkit.org> 4420 4421 Reviewed by David Kilzer. 4422 4423 Add String::containsOnlyLatin1() 4424 https://bugs.webkit.org/show_bug.cgi?id=52979 4425 4426 * wtf/text/WTFString.h: 4427 (WTF::String::containsOnlyLatin1): 4428 (WTF::charactersAreAllLatin1): 4429 4430 2011-01-23 Patrick Gansterer <paroga (a] webkit.org> 4431 4432 Reviewed by Oliver Hunt. 4433 4434 Remove obsolete JSVALUE32 code 4435 https://bugs.webkit.org/show_bug.cgi?id=52948 4436 4437 r70111 removed support for JSVALUE32. 4438 ARM, MIPS and X86 support JSVALUE32_64 only. 4439 4440 * jit/JITStubs.cpp: 4441 4442 2011-01-22 Geoffrey Garen <ggaren (a] apple.com> 4443 4444 Reviewed by Dan Bernstein. 4445 4446 ASSERT running run-webkit-tests --threaded. 4447 https://bugs.webkit.org/show_bug.cgi?id=52971 4448 4449 SunSpider and v8 report no change. 4450 4451 * runtime/ConservativeSet.cpp: 4452 (JSC::ConservativeSet::grow): 4453 (JSC::ConservativeSet::add): 4454 * runtime/ConservativeSet.h: Tweaked the inline capacity to 128, and 4455 the growth policy to 2X, to make SunSpider and v8 happy. 4456 (JSC::ConservativeSet::ConservativeSet): 4457 (JSC::ConservativeSet::~ConservativeSet): 4458 (JSC::ConservativeSet::mark): Use OSAllocator directly, instead of malloc. 4459 Malloc is forbidden during a multi-threaded mark phase because it can 4460 cause deadlock. 4461 4462 2011-01-22 Geoffrey Garen <ggaren (a] apple.com> 4463 4464 Reviewed by Geoffrey Garen. 4465 4466 Rubber-stamped by Maciej Stachowiak. 4467 4468 A few of Maciej's review suggestions for my last patch. 4469 https://bugs.webkit.org/show_bug.cgi?id=52946 4470 4471 SunSpider reports no change. 4472 4473 * Android.mk: 4474 * CMakeLists.txt: 4475 * GNUmakefile.am: 4476 * JavaScriptCore.gypi: 4477 * JavaScriptCore.pro: 4478 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: 4479 * JavaScriptCore.xcodeproj/project.pbxproj: Updated build systems. 4480 4481 * runtime/ConservativeSet.cpp: Added. 4482 (JSC::isPointerAligned): 4483 (JSC::ConservativeSet::add): 4484 * runtime/ConservativeSet.h: Added. 4485 (JSC::ConservativeSet::ConservativeSet): 4486 (JSC::ConservativeSet::mark): Split ConservativeSet out into its own 4487 file, and moved the conservative check into ConservativeSet::add, making 4488 ConservativeSet's responsibility clearer. 4489 4490 * runtime/Heap.cpp: 4491 (JSC::Heap::markRoots): 4492 * runtime/MachineStackMarker.cpp: 4493 (JSC::MachineStackMarker::markCurrentThreadConservativelyInternal): 4494 (JSC::MachineStackMarker::markOtherThreadConservatively): 4495 * runtime/MachineStackMarker.h: 4496 * runtime/MarkStack.h: Updated for changes above. 4497 4498 2011-01-22 Patrick Gansterer <paroga (a] webkit.org> 4499 4500 Unreviewed WinCE build fix for r76430. 4501 4502 * runtime/MachineStackMarker.cpp: 4503 (JSC::swapIfBackwards): 4504 4505 2011-01-21 Geoffrey Garen <ggaren (a] apple.com> 4506 4507 Reviewed by Beth Dakin. 4508 4509 Reorganized MarkedSpace, making many of its functions private. 4510 4511 * runtime/JSCell.h: 4512 (JSC::JSCell::Heap::heap): 4513 * runtime/MarkedSpace.h: 4514 (JSC::MarkedSpace::globalData): 4515 (JSC::MarkedSpace::heap): 4516 4517 2011-01-21 Geoffrey Garen <ggaren (a] apple.com> 4518 4519 Try to fix build: moved helper function out of #ifdef. 4520 4521 * runtime/MachineStackMarker.cpp: 4522 (JSC::swapIfBackwards): 4523 4524 2011-01-21 Geoffrey Garen <ggaren (a] apple.com> 4525 4526 Rubber-stamped by Maciej Stachowiak. 4527 4528 A few of Maciej's review suggestions for my last patch. 4529 https://bugs.webkit.org/show_bug.cgi?id=52946 4530 4531 SunSpider reports no change. 4532 4533 * runtime/MachineStackMarker.cpp: 4534 (JSC::swapIfBackwards): Added a helper function for handling platforms 4535 where the stack can grow in any direction. 4536 4537 (JSC::MachineStackMarker::markCurrentThreadConservativelyInternal): 4538 (JSC::MachineStackMarker::markOtherThreadConservatively): Use the helper 4539 function. 4540 4541 (JSC::isPointerAligned): Use "!" instead of "==0" because a robot told me to. 4542 4543 (JSC::MachineStackMarker::markConservatively): Changed to use a more 4544 standard looping idiom, and to use the helper function above. 4545 4546 * runtime/MarkedSpace.h: 4547 (JSC::MarkedSpace::isCellAligned): Use "!" instead of "==0" because a robot told me to. 4548 4549 2011-01-21 Geoffrey Garen <ggaren (a] apple.com> 4550 4551 Reviewed by Maciej Stachowiak. 4552 4553 Cleaned up some conservative marking code. 4554 https://bugs.webkit.org/show_bug.cgi?id=52946 4555 4556 SunSpider reports no change. 4557 4558 * interpreter/RegisterFile.h: No need for a special marking function, 4559 since we already expose a start() and end(). 4560 4561 * runtime/Heap.cpp: 4562 (JSC::Heap::registerFile): 4563 (JSC::Heap::markRoots): 4564 * runtime/Heap.h: 4565 (JSC::Heap::contains): Migrated markConservatively() to the machine stack 4566 marker class. Now, Heap just provides a contains() function, which the 4567 machine stack marker uses for checking whether a pointer points into the heap. 4568 4569 * runtime/MachineStackMarker.cpp: 4570 (JSC::MachineStackMarker::markCurrentThreadConservativelyInternal): 4571 (JSC::MachineStackMarker::markOtherThreadConservatively): 4572 (JSC::isPointerAligned): 4573 (JSC::MachineStackMarker::markConservatively): 4574 * runtime/MachineStackMarker.h: Move the conservative marking code here. 4575 4576 * runtime/MarkStack.h: 4577 (JSC::ConservativeSet::add): 4578 (JSC::ConservativeSet::mark): Changed to using a vector instead of hash 4579 set. Vector seems to be a bit faster, and it generates smaller code. 4580 4581 * runtime/MarkedSpace.cpp: 4582 (JSC::MarkedSpace::containsSlowCase): 4583 * runtime/MarkedSpace.h: 4584 (JSC::MarkedSpace::isCellAligned): 4585 (JSC::MarkedSpace::isPossibleCell): 4586 (JSC::MarkedSpace::contains): Kept the code for determining whether a 4587 pointer pointed into marked space, and moved the code for marking 4588 a set of conservative pointers into the machine stack marker. 4589 4590 * wtf/HashSet.h: 4591 (WTF::::add): Added two missing inlines that I noticed while testing 4592 vector vs hash set. 4593 4594 2011-01-21 Mark Rowe <mrowe (a] apple.com> 4595 4596 Reviewed by Sam Weinig. 4597 4598 Work around a Clang bug <rdar://problem/8876150> that leads to it incorrectly emitting an access 4599 control warning when a client tries to use operator bool exposed above via "using PageBlock::operator bool". 4600 4601 * wtf/PageAllocation.h: 4602 (WTF::PageAllocation::operator bool): 4603 * wtf/PageReservation.h: 4604 (WTF::PageReservation::operator bool): 4605 4606 2011-01-21 Michael Saboff <msaboff (a] apple.com> 4607 4608 Reviewed by Oliver Hunt. 4609 4610 [RegexFuzz] Hang with forward assertion 4611 https://bugs.webkit.org/show_bug.cgi?id=52825 4612 <rdar://problem/8894332> 4613 4614 The backtrackTo label from the first term in a list of terms is 4615 being overwritten by processing of subsequent terms. Changed 4616 copyBacktrackToLabel() to check for an existing bcaktrackTo label 4617 before copying and renamed it to propagateBacktrackToLabel() since 4618 it no longer copies. 4619 4620 * yarr/YarrJIT.cpp: 4621 (JSC::Yarr::YarrGenerator::BacktrackDestination::propagateBacktrackToLabel): 4622 (JSC::Yarr::YarrGenerator::generateParenthesesSingle): 4623 4624 2011-01-21 Geoffrey Garen <ggaren (a] apple.com> 4625 4626 Reviewed by Sam Weinig. 4627 4628 Moved the mark stack from global data to the heap, since it pertains 4629 to the heap, and not the virtual machine as a whole. 4630 https://bugs.webkit.org/show_bug.cgi?id=52930 4631 4632 SunSpider reports no change. 4633 4634 * runtime/Heap.cpp: 4635 (JSC::Heap::Heap): 4636 (JSC::Heap::markRoots): 4637 * runtime/Heap.h: 4638 * runtime/JSGlobalData.cpp: 4639 (JSC::JSGlobalData::JSGlobalData): 4640 * runtime/JSGlobalData.h: 4641 4642 2011-01-21 Peter Gal <galpeter (a] inf.u-szeged.hu> 4643 4644 Reviewed by Darin Adler. 4645 4646 REGRESSION(r76177): All JavaScriptCore tests fail on ARM 4647 https://bugs.webkit.org/show_bug.cgi?id=52814 4648 4649 Get the approximateByteSize value before releasing the OwnPtr. 4650 4651 * parser/JSParser.cpp: 4652 (JSC::JSParser::parseFunctionInfo): 4653 4654 2011-01-21 Xan Lopez <xlopez (a] igalia.com> 4655 4656 Reviewed by Martin Robinson. 4657 4658 Remove unnecessary <stdio.h> include 4659 https://bugs.webkit.org/show_bug.cgi?id=52884 4660 4661 * jit/JIT.cpp: remove unnecessary include. 4662 4663 2011-01-20 Ryosuke Niwa <rniwa (a] webkit.org> 4664 4665 Reviewed by Maciej Stachowiak. 4666 4667 Added OwnPtrCommon.h because OwnArrayPtr::set calls deleteOwnedPtr. 4668 4669 * wtf/OwnArrayPtr.h: 4670 4671 2011-01-20 Patrick Gansterer <paroga (a] webkit.org> 4672 4673 Reviewed by Oliver Hunt. 4674 4675 [WINCE] Remove obsolete JSVALUE32 code 4676 https://bugs.webkit.org/show_bug.cgi?id=52450 4677 4678 Remove the "offset hack" in create_jit_stubs, since we 4679 only support JSVALUE32_64 in the meantime. 4680 4681 * create_jit_stubs: Removed offset argument 4682 * jit/JITStubs.cpp: 4683 4684 2011-01-20 Geoffrey Garen <ggaren (a] apple.com> 4685 4686 Reviewed by Oliver Hunt. 4687 4688 When marking conservatively, guard against reviving dead objects. 4689 https://bugs.webkit.org/show_bug.cgi?id=52840 4690 4691 SunSpider and v8 say no change. 4692 4693 * interpreter/RegisterFile.h: 4694 (JSC::RegisterFile::markCallFrames): Updated to use the ConservativeSet API. 4695 4696 * runtime/Heap.cpp: 4697 (JSC::Heap::recordExtraCost): No need to guard against conservative 4698 marking reviving dead objects anymore, since the conservative marking 4699 mechanism guards against this now. 4700 4701 (JSC::Heap::markConservatively): 4702 (JSC::Heap::markProtectedObjects): 4703 (JSC::Heap::markTempSortVectors): Don't drain the mark stack inside a 4704 marking function. We want to establish a separation of concerns between 4705 visiting roots and draining the mark stack. 4706 4707 (JSC::Heap::markRoots): Gather the set of conservative references before 4708 clearning mark bits, because conservative marking now uses the mark bits 4709 to determine if a reference is valid, and avoid reviving dead objects. 4710 4711 (JSC::Heap::collectAllGarbage): No need to guard against conservative 4712 marking reviving dead objects anymore, since the conservative marking 4713 mechanism guards against this now. 4714 4715 * runtime/Heap.h: Updated to use the ConservativeSet API. 4716 4717 * runtime/MachineStackMarker.cpp: 4718 (JSC::MachineStackMarker::markCurrentThreadConservativelyInternal): 4719 (JSC::MachineStackMarker::markCurrentThreadConservatively): 4720 (JSC::MachineStackMarker::markOtherThreadConservatively): 4721 (JSC::MachineStackMarker::markMachineStackConservatively): 4722 * runtime/MachineStackMarker.h: Ditto. 4723 4724 * runtime/MarkStack.h: 4725 (JSC::ConservativeSet::add): 4726 (JSC::ConservativeSet::mark): Added ConservativeSet, for gathering the 4727 set of conservative references. This is different from MarkStack, since 4728 we don't mark the set until it is completely gathered. 4729 4730 * runtime/MarkedSpace.cpp: 4731 (JSC::MarkedSpace::freeBlock): 4732 (JSC::MarkedSpace::resizeBlocks): 4733 (JSC::MarkedSpace::markConservatively): 4734 * runtime/MarkedSpace.h: When marking conservatively, guard against 4735 reviving dead objects. 4736 4737 2011-01-20 Siddharth Mathur <siddharth.mathur (a] nokia.com> 4738 4739 Reviewed by Geoffrey Garen. 4740 4741 [Symbian] Fix StackBounds::initialize() 4742 https://bugs.webkit.org/show_bug.cgi?id=52842 4743 4744 * wtf/StackBounds.cpp: 4745 (WTF::StackBounds::initialize): Use TThreadStackInfo.iLimit for stack limit 4746 4747 2011-01-20 Michael Saboff <msaboff (a] apple.com> 4748 4749 Reviewed by Oliver Hunt. 4750 4751 <rdar://problem/8890203> [RegexFuzz] Crash in generated code (52773) 4752 https://bugs.webkit.org/show_bug.cgi?id=52773 4753 4754 Fixed case where an existing DataLabelPtr is overwritten. The 4755 replacing DataLabelPtr is now resolved immediately in 4756 linkDataLabelToBacktrackIfExists(). Cleanup - eliminated bool 4757 return value for the routine as it was never used. 4758 4759 * yarr/YarrJIT.cpp: 4760 (JSC::Yarr::YarrGenerator::TermGenerationState::linkDataLabelToBacktrackIfExists): 4761 4762 2011-01-20 Andras Becsi <abecsi (a] webkit.org> 4763 4764 Reviewed by Csaba Osztrogonc. 4765 4766 [Qt][WK2] WebKit2 enabled build fails to link 4767 4768 Work around undefined reference linking issues until the buildsystem gets redesigned. 4769 These issues first occured in minimal builds (see BUG 50519). 4770 4771 * JavaScriptCore.pri: link as whole-archive for WebKit2 builds 4772 4773 2011-01-20 Zoltan Horvath <zoltan (a] webkit.org> 4774 4775 Reviewed by Csaba Osztrogonc. 4776 4777 Refactoring of the custom allocation framework 4778 https://bugs.webkit.org/show_bug.cgi?id=49897 4779 4780 Inheriting from FastAllocBase can result in objects getting larger (bug #33896, #46589). 4781 The modification replaces Noncopyable and FastAllocBase classes and these inherits with their 4782 equivalent macro implementation at the necessary places. 4783 4784 * wtf/FastAllocBase.h: Turn FastAllocBase's implementation into a macro. 4785 4786 2011-01-20 Mark Rowe <mrowe (a] apple.com> 4787 4788 Reviewed by Maciej Stachowiak. 4789 4790 Follow-up to r75766 / <rdar://problem/5469576>. 4791 4792 We were failing to initialize the key, causing all sorts of unexpected behavior. 4793 4794 * wtf/FastMalloc.cpp: 4795 (WTF::setThreadHeap): 4796 (WTF::TCMalloc_ThreadCache::GetThreadHeap): 4797 (WTF::TCMalloc_ThreadCache::InitTSD): Ensure that the key is initialized. 4798 4799 2011-01-18 Geoffrey Garen <ggaren (a] apple.com> 4800 4801 Reviewed by Darin Adler. 4802 4803 Rolled back in r76078, with crash fixed. 4804 https://bugs.webkit.org/show_bug.cgi?id=52668 4805 4806 * runtime/JSGlobalObject.cpp: 4807 (JSC::JSGlobalObject::markChildren): Account for the fact that the global 4808 object moves its variables into and out of the register file. While out 4809 of the register file, the symbol table's size is not an accurate count 4810 for the size of the register array, since the BytecodeGenerator might 4811 be compiling, adding items to the symbol table. 4812 4813 2011-01-18 Darin Adler <darin (a] apple.com> 4814 4815 Reviewed by Geoffrey Garen. 4816 4817 Stack overflow when converting an Error object to string 4818 https://bugs.webkit.org/show_bug.cgi?id=46410 4819 4820 * Android.mk: Added StringRecursionChecker.cpp and 4821 StringRecursionChecker.h. 4822 * CMakeLists.txt: Ditto. 4823 * GNUmakefile.am: Ditto. 4824 * JavaScriptCore.gypi: Ditto. 4825 * JavaScriptCore.pro: Ditto. 4826 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: Ditto. 4827 * JavaScriptCore.xcodeproj/project.pbxproj: Ditto. 4828 4829 * runtime/ArrayPrototype.cpp: 4830 (JSC::arrayProtoFuncToString): Use StringRecursionChecker instead 4831 of the older hand-written code to do the same thing. 4832 (JSC::arrayProtoFuncToLocaleString): Ditto. 4833 (JSC::arrayProtoFuncJoin): Ditto. 4834 4835 * runtime/ErrorPrototype.cpp: 4836 (JSC::errorProtoFuncToString): Use StringRecursionChecker. 4837 4838 * runtime/JSGlobalData.h: Renamed arrayVisitedElements to 4839 stringRecursionCheckVisitedObjects. 4840 4841 * runtime/RegExpPrototype.cpp: 4842 (JSC::regExpProtoFuncToString): Use StringRecursionChecker. 4843 4844 * runtime/StringRecursionChecker.cpp: Added. 4845 * runtime/StringRecursionChecker.h: Added. 4846 4847 2011-01-19 Oliver Hunt <oliver (a] apple.com> 4848 4849 Reviewed by Gavin Barraclough. 4850 4851 Remove non-spec support for callable RegExp 4852 https://bugs.webkit.org/show_bug.cgi?id=28285 4853 4854 Remove support for callable regexps. If it breaks sites we can 4855 just roll this out. 4856 4857 * runtime/RegExpObject.cpp: 4858 * runtime/RegExpObject.h: 4859 * tests/mozilla/expected.html: update results. 4860 4861 2011-01-19 Antti Koivisto <antti (a] apple.com> 4862 4863 Reviewed by Oliver Hunt. 4864 4865 Cache function offsets to speed up javascript parsing 4866 https://bugs.webkit.org/show_bug.cgi?id=52622 4867 4868 Use cache to save function offsets and some other info. 4869 This avoids quite a bit of work when reparsing the source. 4870 4871 * parser/ASTBuilder.h: 4872 * parser/JSParser.cpp: 4873 (JSC::JSParser::CachedFunctionInfo::CachedFunctionInfo): 4874 (JSC::JSParser::CachedFunctionInfo::approximateByteSize): 4875 (JSC::JSParser::CachedFunctionInfo::closeBraceToken): 4876 (JSC::JSParser::Scope::copyCapturedVariablesToVector): 4877 (JSC::JSParser::Scope::saveFunctionInfo): 4878 (JSC::JSParser::Scope::restoreFunctionInfo): 4879 (JSC::JSParser::findCachedFunctionInfo): 4880 (JSC::JSParser::JSParser): 4881 (JSC::JSParser::parseProgram): 4882 (JSC::JSParser::parseFunctionInfo): 4883 * parser/Lexer.h: 4884 (JSC::Lexer::setOffset): 4885 (JSC::Lexer::setLineNumber): 4886 (JSC::Lexer::sourceProvider): 4887 * parser/SourceProvider.h: 4888 (JSC::SourceProviderCache::SourceProviderCache): 4889 (JSC::SourceProviderCache::~SourceProviderCache): 4890 (JSC::SourceProviderCache::byteSize): 4891 (JSC::SourceProviderCache::add): 4892 (JSC::SourceProviderCache::get): 4893 (JSC::SourceProvider::SourceProvider): 4894 (JSC::SourceProvider::~SourceProvider): 4895 (JSC::SourceProvider::cache): 4896 (JSC::SourceProvider::notifyCacheSizeChanged): 4897 (JSC::SourceProvider::cacheSizeChanged): 4898 * parser/SyntaxChecker.h: 4899 4900 2011-01-19 Mark Rowe <mrowe (a] apple.com> 4901 4902 Reviewed by Darin Adler. 4903 4904 Follow-up to r75766 / <rdar://problem/5469576>. 4905 4906 * DerivedSources.make: Evaluate the SDKROOT variable correctly. 4907 4908 2011-01-19 Oliver Hunt <oliver (a] apple.com> 4909 4910 Reviewed by Gavin Barraclough. 4911 4912 [jsfunfuzz] Defining a function called __proto__ inside an eval triggers an assertion 4913 https://bugs.webkit.org/show_bug.cgi?id=52672 4914 4915 Rather than coming up with a somewhat convoluted mechanism to ensure that 4916 developers can override the global objects prototype with a function named 4917 __proto__ and expect it to work, we just disallow it at the syntax level. 4918 4919 * parser/JSParser.cpp: 4920 (JSC::JSParser::parseFunctionInfo): 4921 4922 2011-01-19 Michael Saboff <msaboff (a] apple.com> 4923 4924 Reviewed by Darin Adler. 4925 4926 <rdar://problem/8882994> Regression: Simple nested backtrack hangs 4927 https://bugs.webkit.org/show_bug.cgi?id=52675 4928 4929 The changeset (r76076) for https://bugs.webkit.org/show_bug.cgi?id=52540 4930 broke simple backtracking in some cases. Reworked that change to 4931 link both jumps and labels. 4932 4933 * yarr/YarrJIT.cpp: 4934 (JSC::Yarr::YarrGenerator::BacktrackDestination::hasBacktrackToLabel): 4935 (JSC::Yarr::YarrGenerator::TermGenerationState::propagateBacktrackingFrom): 4936 (JSC::Yarr::YarrGenerator::generateParenthesesSingle): 4937 4938 2011-01-19 Pavel Podivilov <podivilov (a] chromium.org> 4939 4940 Reviewed by Yury Semikhatsky. 4941 4942 Web Inspector: [JSC] scripts have incorrect starting line (always 1). 4943 https://bugs.webkit.org/show_bug.cgi?id=52721 4944 4945 * debugger/Debugger.cpp: 4946 (JSC::Debugger::recompileAllJSFunctions): 4947 * debugger/Debugger.h: 4948 * parser/Parser.h: 4949 (JSC::Parser::parse): 4950 * parser/SourceCode.h: 4951 (JSC::SourceCode::SourceCode): 4952 * parser/SourceProvider.h: 4953 (JSC::SourceProvider::startPosition): 4954 4955 2011-01-19 Csaba Osztrogonc <ossy (a] webkit.org> 4956 4957 Reviewed by Laszlo Gombos and Tor Arne Vestb. 4958 4959 [Qt] Remove unnecessary "../Source" from paths 4960 after moving source files into Source is finished. 4961 4962 * JavaScriptCore.pri: 4963 4964 2011-01-19 Benjamin Kalman <kalman (a] chromium.org> 4965 4966 Reviewed by Darin Adler. 4967 4968 Don't return void from void function String::split 4969 https://bugs.webkit.org/show_bug.cgi?id=52684 4970 4971 * wtf/text/WTFString.cpp: 4972 (WTF::String::split): 4973 4974 2011-01-18 Kenneth Russell <kbr (a] google.com> 4975 4976 Unreviewed, rolling out r76078. 4977 http://trac.webkit.org/changeset/76078 4978 https://bugs.webkit.org/show_bug.cgi?id=52668 4979 4980 Caused crashes of fast/canvas/webgl/constants.html, 4981 fast/canvas/webgl/gl-enum-tests.html, and possibly other layout 4982 test crashes in Release mode. WebGL crashes were observed with 4983 "run-webkit-tests fast/canvas/webgl". It was necessary to run 4984 multiple tests to provoke the crash. 4985 4986 * interpreter/RegisterFile.h: 4987 (JSC::RegisterFile::markGlobals): 4988 * runtime/JSActivation.cpp: 4989 (JSC::JSActivation::markChildren): 4990 * runtime/JSGlobalObject.cpp: 4991 (JSC::JSGlobalObject::markChildren): 4992 4993 2011-01-18 Oliver Hunt <oliver (a] apple.com> 4994 4995 Reviewed by Gavin Barraclough. 4996 4997 [jsfunfuzz] Assertion asking activation for arguments when arguments is overridden 4998 https://bugs.webkit.org/show_bug.cgi?id=52690 4999 5000 Clean up code to retrieve arguments from activation and function objects. 5001 Remove the incorrect assertion from JSActivation's argumentsGetter. 5002 5003 * interpreter/Interpreter.cpp: 5004 (JSC::Interpreter::retrieveArguments): 5005 * runtime/JSActivation.cpp: 5006 (JSC::JSActivation::argumentsGetter): 5007 5008 2011-01-18 Geoffrey Garen <ggaren (a] apple.com> 5009 5010 Reviewed by Darin Adler. 5011 5012 Removed RegisterFile::markGlobals because it was obtuse, and it 5013 unnecessarily relied on conservative marking. 5014 https://bugs.webkit.org/show_bug.cgi?id=52668 5015 5016 * interpreter/RegisterFile.h: Removed markGlobals. 5017 5018 * runtime/JSActivation.cpp: 5019 (JSC::JSActivation::markChildren): Added a comment explaning why some 5020 JSActivations don't always mark their registers arrays. 5021 5022 * runtime/JSGlobalObject.cpp: 5023 (JSC::JSGlobalObject::markChildren): Instead of calling markGlobals, mark 5024 the registers array directly. 5025 5026 2011-01-18 Michael Saboff <msaboff (a] apple.com> 5027 5028 Reviewed by Oliver Hunt. 5029 5030 <rdar://problem/8875432> Regression: Some text-only e-mails cause hang beneath RegExp::match (52540) 5031 https://bugs.webkit.org/show_bug.cgi?id=52540 5032 https://bugs.webkit.org/show_bug.cgi?id=52662 5033 5034 Directly use backtrack label with parentheses nested under a 5035 non-capturing parentheses. Also linked current parentheses 5036 tail code object for possible parens nested within a non-capturing 5037 parentheses. 5038 5039 * yarr/YarrJIT.cpp: 5040 (JSC::Yarr::YarrGenerator::BacktrackDestination::linkBacktrackToLabel): 5041 (JSC::Yarr::YarrGenerator::generateParenthesesSingle): 5042 5043 2011-01-18 Daniel Bates <dbates (a] rim.com> 5044 5045 Reviewed by Gavin Barraclough. 5046 5047 Only use moving memory model assumption in ExecutableAllocator::intializePageSize() for Symbian OS 5048 https://bugs.webkit.org/show_bug.cgi?id=52517 5049 5050 Patch by David Tapuska 5051 5052 Currently, we compile code with respect to the Symbian-specific moving memory model 5053 assumption for all ARMv5 or lower architectures. Instead, we should only compile 5054 such code when building for Symbian OS on those architectures because this model 5055 is Symbian-specific. 5056 5057 * jit/ExecutableAllocator.cpp: 5058 (JSC::ExecutableAllocator::intializePageSize): 5059 5060 2011-01-18 Dimitry Andric <dim (a] freebsd.org> 5061 5062 Reviewed by Andreas Kling. 5063 5064 Fix linking JavaScriptCore on FreeBSD/amd64 5065 https://bugs.webkit.org/show_bug.cgi?id=52591 5066 5067 Linking of JavaScriptCore on FreeBSD/amd64 fails, for the same reason as 5068 in bug 28422: cti_vm_throw needs a "@plt" suffix, otherwise the linker 5069 complains about the relocation type. 5070 5071 * jit/JITStubs.cpp: use @plt suffix on x86_64 platforms, for both Linux 5072 and FreeBSD. 5073 5074 2011-01-18 Oliver Hunt <oliver (a] apple.com> 5075 5076 Reviewed by Antti Koivisto. 5077 5078 [jsfunfuzz] Assertion in codegen for array of NaN constants 5079 https://bugs.webkit.org/show_bug.cgi?id=52643 5080 5081 Don't cache NaN literals in the code generator, as NaN doesn't compare 5082 as equal to itself it causes problems when rehashing the number cache. 5083 5084 * bytecompiler/BytecodeGenerator.cpp: 5085 (JSC::BytecodeGenerator::emitLoad): 5086 5087 2011-01-17 Jarred Nicholls <jarred (a] sencha.com> 5088 5089 Reviewed by Csaba Osztrogonc. 5090 5091 REGRESSION(r75709): Return value of fscanf() shouldn't be ignored. 5092 https://bugs.webkit.org/show_bug.cgi?id=52585 5093 5094 gcc 4.4.4+ has warn_unused_value attribute on fscanf, so we should check 5095 the return value to get around the gcc warning 5096 5097 * jit/ExecutableAllocatorFixedVMPool.cpp: 5098 (JSC::maybeModifyVMPoolSize): 5099 5100 2011-01-17 Michael Saboff <msaboff (a] apple.com> 5101 5102 Reviewed by Oliver Hunt. 5103 5104 [regexfuzz] Crash running regex with lookahead 5105 https://bugs.webkit.org/show_bug.cgi?id=52548 5106 5107 Eliminated agressive chaining of backtracks. This code was overwriting 5108 already valid backtrack information. 5109 5110 * yarr/YarrJIT.cpp: 5111 (JSC::Yarr::YarrGenerator::ParenthesesTail::processBacktracks): 5112 5113 2011-01-17 Tony Gentilcore <tonyg (a] chromium.org> 5114 5115 Reviewed by Alexey Proskuryakov. 5116 5117 Fix some headers with missing or misspelled #ifndef guards 5118 https://bugs.webkit.org/show_bug.cgi?id=52545 5119 5120 * wtf/RefPtrHashMap.h: 5121 5122 2011-01-17 Dan Bernstein <mitz (a] apple.com> 5123 5124 Rubber-stamped by Mark Rowe. 5125 5126 Update xcodeproj svn:ignore to include xcuserdata. 5127 5128 * JavaScriptCore.xcodeproj: Modified property svn:ignore. 5129 5130 2011-01-16 Adam Barth <abarth (a] webkit.org> 5131 5132 Rubber-stamped by Eric Seidel. 5133 5134 Move WebKit into Source 5135 https://bugs.webkit.org/show_bug.cgi?id=52530 5136 5137 * JavaScriptCore.gyp/JavaScriptCore.gyp: 5138 5139 2011-01-16 Oliver Hunt <oliver (a] apple.com> 5140 5141 Reviewed by Sam Weinig. 5142 5143 [jsfunfuzz] Parser doesn't correctly validate for-loop syntax 5144 https://bugs.webkit.org/show_bug.cgi?id=52516 5145 5146 Ensure that we always check for a semicolon after encountering 5147 multiple declarations in the initialiser portion of a for-loop. 5148 5149 * parser/JSParser.cpp: 5150 (JSC::JSParser::parseForStatement): 5151 5152 2011-01-16 Oliver Hunt <oliver (a] apple.com> 5153 5154 Reviewed by Geoffrey Garen. 5155 5156 Strict mode restrictions on arguments and eval usage aren't complete 5157 https://bugs.webkit.org/show_bug.cgi?id=52528 5158 5159 Fix a few bugs in strict mode where we incorrect allow mutation of 5160 arguments and eval in the parser. 5161 5162 Alas the "optimisation" used by the syntax checker for validating 5163 binary and unary expressions was too aggressive: we do actually need 5164 a stack for operations and operands although it needn't be as complete 5165 as that used for the full AST builder. 5166 5167 Also disallow assignment to arguments in all cases as allowing arguments 5168 to be assignable is always an error in strict mode, regardless of context. 5169 5170 * parser/ASTBuilder.h: 5171 (JSC::ASTBuilder::BinaryExprContext::BinaryExprContext): 5172 (JSC::ASTBuilder::UnaryExprContext::UnaryExprContext): 5173 * parser/JSParser.cpp: 5174 (JSC::JSParser::parseAssignmentExpression): 5175 (JSC::JSParser::parseBinaryExpression): 5176 (JSC::JSParser::parseUnaryExpression): 5177 * parser/SyntaxChecker.h: 5178 (JSC::SyntaxChecker::BinaryExprContext::BinaryExprContext): 5179 (JSC::SyntaxChecker::BinaryExprContext::~BinaryExprContext): 5180 (JSC::SyntaxChecker::UnaryExprContext::UnaryExprContext): 5181 (JSC::SyntaxChecker::UnaryExprContext::~UnaryExprContext): 5182 (JSC::SyntaxChecker::appendBinaryExpressionInfo): 5183 (JSC::SyntaxChecker::operatorStackPop): 5184 5185 2011-01-15 Geoffrey Garen <ggaren (a] apple.com> 5186 5187 Reviewed by Oliver Hunt. 5188 5189 Rolled back in r75886. 5190 https://bugs.webkit.org/show_bug.cgi?id=52527 5191 5192 r75886 broke the GTK Linux bot because Linux was -- quite surprisingly -- 5193 set up to use the constants for embedded devices. 5194 5195 * jit/ExecutableAllocatorFixedVMPool.cpp: 5196 (JSC::maybeModifyVMPoolSize): Separated Linux constants from embedded 5197 constants. 5198 5199 2011-01-15 Sheriff Bot <webkit.review.bot (a] gmail.com> 5200 5201 Unreviewed, rolling out r75886. 5202 http://trac.webkit.org/changeset/75886 5203 https://bugs.webkit.org/show_bug.cgi?id=52526 5204 5205 "Broke GTK+ 64bit" (Requested by xan_ on #webkit). 5206 5207 * jit/ExecutableAllocatorFixedVMPool.cpp: 5208 5209 2011-01-15 Geoffrey Garen <ggaren (a] apple.com> 5210 5211 Reviewed by Sam Weinig. 5212 5213 <rdar://problem/8870429> Shrink the executable pool on embedded devices 5214 5215 * jit/ExecutableAllocatorFixedVMPool.cpp: Dropped the pool size from 32MB 5216 to 16MB. 5217 5218 2011-01-15 Oliver Hunt <oliver (a] apple.com> 5219 5220 Reviewed by Maciej Stachowiak. 5221 5222 Incorrect behavior changing attributes of an accessor 5223 https://bugs.webkit.org/show_bug.cgi?id=52515 5224 5225 defineProperty doesn't correctly handle changing attributes of an accessor 5226 property. This is because we don't pass the full descriptor to the 5227 putDescriptor helper function, which means we have insufficient information 5228 to do the right thing. Once that's passed the correct behavior is relatively 5229 simple to implement. 5230 5231 * runtime/JSObject.cpp: 5232 (JSC::putDescriptor): 5233 (JSC::JSObject::defineOwnProperty): 5234 5235 2011-01-14 Oliver Hunt <oliver (a] apple.com> 5236 5237 Reviewed by Maciej Stachowiak. 5238 5239 [jsfunfuzz] Incorrect handling of consecutive duplicate labels 5240 https://bugs.webkit.org/show_bug.cgi?id=52505 5241 5242 Compare StringImpl*'s instead of Identifier*'s when looking for duplicate 5243 labels. 5244 5245 * parser/JSParser.cpp: 5246 (JSC::JSParser::parseExpressionOrLabelStatement): 5247 5248 2011-01-14 Simon Fraser <simon.fraser (a] apple.com> 5249 5250 No review. 5251 5252 Initialize m_operationInProgress after r75855. 5253 5254 * runtime/Heap.cpp: 5255 (JSC::Heap::Heap): 5256 5257 2011-01-14 Geoffrey Garen <ggaren (a] apple.com> 5258 5259 Reverted accidentally committed code from my last checkin. 5260 5261 * runtime/Heap.cpp: 5262 (JSC::Heap::markRoots): 5263 5264 2011-01-14 Geoffrey Garen <ggaren (a] apple.com> 5265 5266 Reviewed by Sam Weinig. 5267 5268 Try to fix the GTK bot. 5269 5270 * runtime/Heap.cpp: 5271 (JSC::Heap::Heap): 5272 (JSC::Heap::markRoots): Kids, remember to initialize your data members. 5273 Knowing is half the battle. 5274 5275 2011-01-14 Oliver Hunt <oliver (a] apple.com> 5276 5277 Reviewed by Stephanie Lewis. 5278 5279 [jsfunfuzz] We should be clearing the lexers temporary character buffers when switching to strict mode 5280 https://bugs.webkit.org/show_bug.cgi?id=52501 5281 5282 Clear the temporary character buffers used for reading escaped characters and 5283 numbers. 5284 5285 * parser/Lexer.h: 5286 (JSC::Lexer::setOffset): 5287 5288 2011-01-14 Geoffrey Garen <ggaren (a] apple.com> 5289 5290 Try to fix non-Dtrace builds: #include Tracing.h instead of TracingDtrace.h. 5291 5292 * runtime/Heap.cpp: 5293 5294 2011-01-13 Geoffrey Garen <ggaren (a] apple.com> 5295 5296 Reviewed by Oliver Hunt. 5297 5298 Split out a MarkedSpace strategy object from Heap. 5299 https://bugs.webkit.org/show_bug.cgi?id=52421 5300 5301 SunSpider reports no change. 5302 5303 * Android.mk: 5304 * CMakeLists.txt: 5305 * GNUmakefile.am: 5306 * JavaScriptCore.gypi: 5307 * JavaScriptCore.pro: 5308 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: 5309 * JavaScriptCore.xcodeproj/project.pbxproj: Updated our 7 build systems. Which is cool. 5310 5311 * runtime/Heap.cpp: 5312 (JSC::Heap::Heap): 5313 (JSC::Heap::destroy): 5314 (JSC::Heap::recordExtraCost): 5315 (JSC::Heap::allocate): 5316 (JSC::Heap::markConservatively): 5317 (JSC::Heap::markRoots): 5318 (JSC::Heap::objectCount): 5319 (JSC::Heap::statistics): 5320 (JSC::Heap::size): 5321 (JSC::Heap::isBusy): 5322 (JSC::Heap::collectAllGarbage): 5323 (JSC::Heap::primaryHeapBegin): 5324 (JSC::Heap::primaryHeapEnd): 5325 * runtime/Heap.h: 5326 (JSC::Heap::globalData): 5327 (JSC::Heap::markedSpace): 5328 (JSC::Heap::isCellMarked): 5329 (JSC::Heap::checkMarkCell): 5330 (JSC::Heap::markCell): Moved all code pertaining to managing chunks of 5331 collector memory out of this class. Heap now just delegates to MarkedSpace. 5332 5333 * runtime/JSCell.h: 5334 (JSC::JSCell::Heap::heap): Updated for MarkedSpace delegation. 5335 5336 * runtime/JSValue.h: Moved the ValueStringPair typedef to help with #includes. 5337 5338 * runtime/MarkedSpace.cpp: Copied from runtime/Heap.cpp. 5339 (JSC::MarkedSpace::MarkedSpace): 5340 (JSC::MarkedSpace::destroy): 5341 (JSC::MarkedSpace::allocateBlock): 5342 (JSC::MarkedSpace::freeBlock): 5343 (JSC::MarkedSpace::allocate): 5344 (JSC::MarkedSpace::resizeBlocks): 5345 (JSC::MarkedSpace::growBlocks): 5346 (JSC::MarkedSpace::shrinkBlocks): 5347 (JSC::MarkedSpace::markConservatively): 5348 (JSC::MarkedSpace::clearMarkBits): 5349 (JSC::MarkedSpace::markedCells): 5350 (JSC::MarkedSpace::sweep): 5351 (JSC::MarkedSpace::objectCount): 5352 (JSC::MarkedSpace::addToStatistics): 5353 (JSC::MarkedSpace::statistics): 5354 (JSC::MarkedSpace::size): 5355 (JSC::MarkedSpace::reset): 5356 (JSC::MarkedSpace::primaryHeapBegin): 5357 (JSC::MarkedSpace::primaryHeapEnd): 5358 * runtime/MarkedSpace.h: Copied from runtime/Heap.h. 5359 (JSC::MarkedSpace::globalData): 5360 (JSC::MarkedSpace::didShrink): 5361 (JSC::MarkedSpace::cellBlock): 5362 (JSC::MarkedSpace::cellOffset): 5363 (JSC::MarkedSpace::isCellMarked): 5364 (JSC::MarkedSpace::checkMarkCell): 5365 (JSC::MarkedSpace::markCell): Moved all code pertaining to managing chunks of 5366 collector memory into this class. 5367 5368 * runtime/MemoryStatistics.cpp: 5369 (JSC::heapStatistics): 5370 * runtime/MemoryStatistics.h: Updated for MarkedSpace delegation. 5371 5372 2011-01-14 Oliver Hunt <oliver (a] apple.com> 5373 5374 Reviewed by Gavin Barraclough. 5375 5376 [jsfunfuzz] parser doesn't enforce continue restrictions correctly. 5377 https://bugs.webkit.org/show_bug.cgi?id=52493 5378 5379 This patch reworks handling of break, continue and label statements 5380 to correctly handle all the valid and invalid cases. Previously certain 5381 errors would be missed by the parser in strict mode, but the bytecode 5382 generator needed to handle those cases for non-strict code so nothing 5383 failed, it simply became non-standard behaviour. 5384 5385 Now that we treat break and continue errors as early faults in non-strict 5386 mode as well that safety net has been removed so the parser bugs result in 5387 crashes at codegen time. 5388 5389 * parser/JSParser.cpp: 5390 (JSC::JSParser::ScopeLabelInfo::ScopeLabelInfo): 5391 (JSC::JSParser::next): 5392 (JSC::JSParser::nextTokenIsColon): 5393 (JSC::JSParser::continueIsValid): 5394 Continue is only valid in loops so we can't use breakIsValid() 5395 (JSC::JSParser::pushLabel): 5396 We now track whether the label is for a loop (and is therefore a 5397 valid target for continue. 5398 (JSC::JSParser::popLabel): 5399 (JSC::JSParser::getLabel): 5400 Replace hasLabel with getLabel so that we can validate the target 5401 when parsing continue statements. 5402 (JSC::JSParser::Scope::continueIsValid): 5403 (JSC::JSParser::Scope::pushLabel): 5404 (JSC::JSParser::Scope::getLabel): 5405 (JSC::JSParser::JSParser): 5406 (JSC::JSParser::parseBreakStatement): 5407 (JSC::JSParser::parseContinueStatement): 5408 (JSC::LabelInfo::LabelInfo): 5409 (JSC::JSParser::parseExpressionOrLabelStatement): 5410 Consecutive labels now get handled iteratively so that we can determine 5411 whether they're valid targets for continue. 5412 * parser/Lexer.cpp: 5413 (JSC::Lexer::nextTokenIsColon): 5414 * parser/Lexer.h: 5415 (JSC::Lexer::setOffset): 5416 5417 2011-01-14 Patrick Gansterer <paroga (a] webkit.org> 5418 5419 Reviewed by Adam Roben. 5420 5421 Use the Windows thread pool instead of an extra thread for FastMalloc scavenging 5422 https://bugs.webkit.org/show_bug.cgi?id=45186 5423 5424 * wtf/FastMalloc.cpp: 5425 (WTF::TCMalloc_PageHeap::scheduleScavenger): Added missing this pointer to CreateTimerQueueTimer(). 5426 5427 2011-01-14 Patrick Gansterer <paroga (a] webkit.org> 5428 5429 Reviewed by Adam Roben. 5430 5431 Use the Windows thread pool instead of an extra thread for FastMalloc scavenging 5432 https://bugs.webkit.org/show_bug.cgi?id=45186 5433 5434 r75819 accidentally changed the initial state of the scavenge timer. 5435 5436 * wtf/FastMalloc.cpp: 5437 (WTF::TCMalloc_PageHeap::initializeScavenger): Changed initial state of m_scavengingSuspended to true. 5438 5439 2011-01-14 Patrick Gansterer <paroga (a] webkit.org> 5440 5441 Unreviewed Windows Release build fix. 5442 5443 * wtf/FastMalloc.cpp: 5444 (WTF::TCMalloc_PageHeap::scavengerTimerFired): 5445 5446 2011-01-14 Patrick Gansterer <paroga (a] webkit.org> 5447 5448 Unreviewed Windows Release build fix. 5449 5450 * wtf/FastMalloc.cpp: 5451 (WTF::TCMalloc_PageHeap::scavengerTimerFired): 5452 5453 2011-01-14 Patrick Gansterer <paroga (a] webkit.org> 5454 5455 Reviewed by Adam Roben. 5456 5457 Use the Windows thread pool instead of an extra thread for FastMalloc scavenging 5458 https://bugs.webkit.org/show_bug.cgi?id=45186 5459 5460 Use CreateTimerQueueTimer() to start periodicScavenge() and stop it with DeleteTimerQueueTimer(). 5461 5462 * wtf/FastMalloc.cpp: 5463 (WTF::TCMalloc_PageHeap::initializeScavenger): 5464 (WTF::TCMalloc_PageHeap::isScavengerSuspended): 5465 (WTF::TCMalloc_PageHeap::scheduleScavenger): 5466 (WTF::TCMalloc_PageHeap::rescheduleScavenger): 5467 (WTF::TCMalloc_PageHeap::suspendScavenger): 5468 (WTF::scavengerTimerFired): 5469 (WTF::TCMalloc_PageHeap::periodicScavenge): 5470 (WTF::TCMalloc_PageHeap::signalScavenger): 5471 5472 2011-01-14 Laszlo Gombos <laszlo.1.gombos (a] nokia.com> 5473 5474 Reviewed by Kenneth Rohde Christiansen. 5475 5476 Align import/export directives 5477 https://bugs.webkit.org/show_bug.cgi?id=52208 5478 5479 * API/JSBase.h: Align import/export directives with 5480 WebKit2/Shared/API/c/WKBase.h 5481 5482 2011-01-14 Michael Saboff <msaboff (a] apple.com> 5483 5484 Reviewed by Oliver Hunt. 5485 5486 Incorrect backtracking for nested alternatives 5487 https://bugs.webkit.org/show_bug.cgi?id=52387 5488 5489 In the process of propigating a datalabel it wasn't getting connected 5490 to a destination when the destination was an indirect jump. Added 5491 code to recognize a direct backtrack destination that was an indirect 5492 jump and added mechanism to associate DataLabelPtrs with indirect 5493 jump entries. 5494 Removed dead method 5495 BacktrackDestination::linkDataLabelToHereIfExists() 5496 5497 * yarr/YarrJIT.cpp: 5498 (JSC::Yarr::YarrGenerator::IndirectJumpEntry::IndirectJumpEntry): 5499 (JSC::Yarr::YarrGenerator::IndirectJumpEntry::addDataLabel): 5500 (JSC::Yarr::YarrGenerator::GenerationState::addIndirectJumpEntry): 5501 (JSC::Yarr::YarrGenerator::GenerationState::emitIndirectJumpTable): 5502 Changes to link indirect jumps with DataLabelPtr's. 5503 (JSC::Yarr::YarrGenerator::BacktrackDestination::clearSubDataLabelPtr): 5504 (JSC::Yarr::YarrGenerator::TermGenerationState::linkDataLabelToBacktrackIfExists): 5505 Updated to handle immediate linking of indirect jumps to 5506 DataLabelPtr. 5507 (JSC::Yarr::YarrGenerator::generateParenthesesDisjunction): Changed to 5508 reflect updated linkDataLabelToBacktrackIfExists(). 5509 5510 2011-01-14 Pavel Podivilov <podivilov (a] chromium.org> 5511 5512 Reviewed by Yury Semikhatsky. 5513 5514 Web Inspector: provide script column offset to frontend. 5515 https://bugs.webkit.org/show_bug.cgi?id=52377 5516 5517 * parser/SourceCode.h: 5518 (JSC::SourceCode::SourceCode): 5519 (JSC::SourceCode::firstColumn): 5520 5521 2011-01-13 Darin Adler <darin (a] apple.com> 5522 5523 Reviewed by Geoff Garen. 5524 5525 <rdar://problem/5469576> Use __PTK_FRAMEWORK_JAVASCRIPTCORE_KEY0 if available. 5526 5527 * DerivedSources.make: Create a header file, HeaderDetection.h, that tells 5528 us whether pthread_machdep.h is available. 5529 * wtf/FastMalloc.cpp: If __PTK_FRAMEWORK_JAVASCRIPTCORE_KEY0 is available, then 5530 don't do the pthread_getspecific_function_pointer trick. 5531 (WTF::setThreadHeap): Ditto, but set thread-specific data. 5532 (WTF::TCMalloc_ThreadCache::GetThreadHeap): Ditto, but get rather than set. 5533 5534 2011-01-13 Xan Lopez <xlopez (a] igalia.com> 5535 5536 Reviewed by Gavin Barraclough. 5537 5538 JIT requires VM overcommit (particularly on x86-64), Linux does not by default support this without swap? 5539 https://bugs.webkit.org/show_bug.cgi?id=42756 5540 5541 The FixedVMPool Allocator does not work well on systems where 5542 allocating very large amounts of memory upfront is not reasonable, 5543 like Linux without overcommit enabled. As a workaround, on Linux, 5544 default to the values used in embedded environments (in the MB 5545 range), and only jump to the GB range if we detect at runtime that 5546 overcommit is enabled. Should fix crashes on Linux/x86_64 with 5547 less than 3 or 4GB of RAM. 5548 5549 * jit/ExecutableAllocatorFixedVMPool.cpp: 5550 (JSC::FixedVMPoolAllocator::free): use new variables for VM pool 5551 size and coalesce limit. 5552 (JSC::ExecutableAllocator::isValid): swap the variables from 5553 embedded to generic values at runtime, on linux, if overcommit is 5554 enabled. 5555 (JSC::ExecutableAllocator::underMemoryPressure): use new variables 5556 for VM pool size and coalesce limit. 5557 5558 2011-01-12 Xan Lopez <xlopez (a] igalia.com> 5559 5560 Reviewed by Martin Robinson. 5561 5562 Add new Yarr.h header to the list file. 5563 5564 * GNUmakefile.am: ditto. 5565 5566 2011-01-12 Martin Robinson <mrobinson (a] igalia.com> 5567 5568 Missing Source/JavaScriptCore/assembler/MacroAssemblerARMv7.h in WebKitGtk tarball 5569 https://bugs.webkit.org/show_bug.cgi?id=52299 5570 5571 * GNUmakefile.am: Fix the GTK+ build on ARMv7 by including missing source 5572 files in the source list. 5573 5574 2011-01-12 Peter Varga <pvarga (a] webkit.org> 5575 5576 Reviewed by Gavin Barraclough. 5577 5578 Add Yarr.h to YARR 5579 https://bugs.webkit.org/show_bug.cgi?id=51021 5580 5581 Move other common constants and functions from YARR's different files 5582 to Yarr.h. 5583 Use Yarr.h header instead of including other YARR headers where it 5584 is possible. 5585 5586 * JavaScriptCore.gypi: 5587 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: 5588 * JavaScriptCore.xcodeproj/project.pbxproj: 5589 * runtime/RegExp.cpp: 5590 * yarr/Yarr.h: Added. 5591 * yarr/YarrInterpreter.cpp: 5592 * yarr/YarrInterpreter.h: 5593 * yarr/YarrJIT.cpp: 5594 (JSC::Yarr::jitCompile): 5595 (JSC::Yarr::execute): 5596 * yarr/YarrJIT.h: 5597 * yarr/YarrParser.h: 5598 * yarr/YarrPattern.cpp: 5599 (JSC::Yarr::YarrPattern::compile): 5600 (JSC::Yarr::YarrPattern::YarrPattern): 5601 * yarr/YarrPattern.h: 5602 5603 2011-01-12 Sheriff Bot <webkit.review.bot (a] gmail.com> 5604 5605 Unreviewed, rolling out r75595. 5606 http://trac.webkit.org/changeset/75595 5607 https://bugs.webkit.org/show_bug.cgi?id=52286 5608 5609 It broke fast/regex/pcre-test-1.html (Requested by Ossy on 5610 #webkit). 5611 5612 * JavaScriptCore.gypi: 5613 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: 5614 * JavaScriptCore.xcodeproj/project.pbxproj: 5615 * runtime/RegExp.cpp: 5616 * yarr/Yarr.h: Removed. 5617 * yarr/YarrInterpreter.cpp: 5618 * yarr/YarrInterpreter.h: 5619 * yarr/YarrJIT.cpp: 5620 (JSC::Yarr::jitCompile): 5621 * yarr/YarrJIT.h: 5622 (JSC::Yarr::execute): 5623 * yarr/YarrParser.h: 5624 * yarr/YarrPattern.cpp: 5625 (JSC::Yarr::compile): 5626 (JSC::Yarr::YarrPattern::YarrPattern): 5627 * yarr/YarrPattern.h: 5628 5629 2011-01-12 Peter Varga <pvarga (a] webkit.org> 5630 5631 Reviewed by Gavin Barraclough. 5632 5633 Add Yarr.h to YARR 5634 https://bugs.webkit.org/show_bug.cgi?id=51021 5635 5636 Move other common constants and functions from YARR's different files 5637 to Yarr.h. 5638 Use Yarr.h header instead of including other YARR headers where it 5639 is possible. 5640 5641 * JavaScriptCore.gypi: 5642 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: 5643 * JavaScriptCore.xcodeproj/project.pbxproj: 5644 * runtime/RegExp.cpp: 5645 * yarr/Yarr.h: Added. 5646 * yarr/YarrInterpreter.cpp: 5647 * yarr/YarrInterpreter.h: 5648 * yarr/YarrJIT.cpp: 5649 (JSC::Yarr::jitCompile): 5650 (JSC::Yarr::execute): 5651 * yarr/YarrJIT.h: 5652 * yarr/YarrParser.h: 5653 * yarr/YarrPattern.cpp: 5654 (JSC::Yarr::YarrPattern::compile): 5655 (JSC::Yarr::YarrPattern::YarrPattern): 5656 * yarr/YarrPattern.h: 5657 5658 2011-01-11 Michael Saboff <msaboff (a] apple.com> 5659 5660 Reviewed by Geoffrey Garen. 5661 5662 Missing call to popTempSortVector() for exception case in JSArray::sort. 5663 https://bugs.webkit.org/show_bug.cgi?id=50718 5664 5665 Fix to patch of 50718 that added pushTempSortVector() and 5666 popTempSortVector() to JSArray::sort() to mark elements during sort. 5667 Need to add popTempSortVector() for the return case if toString() 5668 had an exception. 5669 5670 * runtime/JSArray.cpp: 5671 (JSC::JSArray::sort): Added popTempSortVector() 5672 5673 2011-01-11 Xan Lopez <xlopez (a] igalia.com> 5674 5675 Reviewed by Darin Adler. 5676 5677 Microoptimization in ~JSString 5678 https://bugs.webkit.org/show_bug.cgi?id=52222 5679 5680 The case where m_fibers is 0 seems to be the most common one 5681 (almost 1/2 of the time, followed at some distance by m_fibers = 1 5682 in 1/4 of the cases in a typical SunSpider execution). We can save 5683 one comparison in this common case by doing a bit of refactoring 5684 in the JSString destructor; overall a 0.3% progression, but only 5685 the string tests show improvement. 5686 5687 * runtime/JSString.h: 5688 (JSC::RopeBuilder::~JSString): 5689 5690 2011-01-10 Michael Saboff <msaboff (a] apple.com> 5691 5692 Reviewed by Geoffrey Garen. 5693 5694 ASSERTION Failure in JSC::binaryChop 5695 https://bugs.webkit.org/show_bug.cgi?id=25614 5696 5697 Changed JITStubs::cti_register_file_check() to use the current stack's 5698 return PC to find the bytecode for handling the exception in the prior 5699 frame. Also added the appropriate arrity check routine call to the 5700 JIT to bytecode vector (m_callReturnIndexVector) in the CodeBlock. 5701 5702 * jit/JIT.cpp: 5703 (JSC::JIT::privateCompile): Changed the arrity check call location 5704 so that it gets added to the m_calls list so that it's included in 5705 CodeBlock::m_callReturnIndexVector. 5706 * jit/JITStubs.cpp: 5707 (JSC::DEFINE_STUB_FUNCTION): Use the current call frame's return PC. 5708 5709 2011-01-10 Daniel Bates <dbates (a] rim.com> 5710 5711 Reviewed by Martin Robinson. 5712 5713 Remove extraneous COMPILER(GCC) condition when checking GCC_VERSION_AT_LEAST() 5714 https://bugs.webkit.org/show_bug.cgi?id=52178 5715 5716 It is sufficient to test GCC_VERSION_AT_LEAST() instead of both COMPILER(GCC) and 5717 GCC_VERSION_AT_LEAST(). Notice GCC_VERSION_AT_LEAST() is defined to be 0 when we 5718 are not compiling with GCC. 5719 5720 Fixes style issues at the callsites (i.e. replace comma with comma-space in 5721 macro function argument list). Also, makes a spelling correction in a comment. 5722 5723 * jit/ExecutableAllocator.h: 5724 (JSC::ExecutableAllocator::cacheFlush): 5725 * wtf/Platform.h: 5726 5727 2011-01-10 Geoffrey Garen <ggaren (a] apple.com> 5728 5729 Build fix: removed some uses of nextNumber that I missed last time. 5730 5731 * runtime/Heap.cpp: 5732 (JSC::Heap::reset): 5733 (JSC::Heap::collectAllGarbage): 5734 5735 2011-01-10 Daniel Bates <dbates (a] rim.com> 5736 5737 Reviewed by Darin Adler. 5738 5739 Use __builtin_expect when compiling using RVCT in GNU mode 5740 https://bugs.webkit.org/show_bug.cgi?id=51866 5741 5742 We should only use __builtin_expect if we are compiling with GCC or RVCT 3 or higher in GNU mode 5743 as pointed out by Siddharth Mathur per <http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.dui0202h/Cjabddedbde.html>. 5744 5745 * wtf/AlwaysInline.h: 5746 * wtf/Platform.h: Removed define WTF_COMPILER_RVCT4_OR_GREATER. Instead added macro 5747 function RVCT_VERSION_AT_LEAST so that we can test for an arbitrary minimum RVCT 5748 version. 5749 5750 2011-01-10 Geoffrey Garen <ggaren (a] apple.com> 5751 5752 Reviewed by Oliver Hunt. 5753 5754 Moved Collector.* => Heap.*, since the file contains a class named "Heap". 5755 5756 * API/JSCallbackObject.cpp: 5757 * Android.mk: 5758 * CMakeLists.txt: 5759 * GNUmakefile.am: 5760 * JavaScriptCore.gypi: 5761 * JavaScriptCore.pro: 5762 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: 5763 * JavaScriptCore.xcodeproj/project.pbxproj: 5764 * interpreter/Interpreter.cpp: 5765 * interpreter/RegisterFile.h: 5766 * jit/JITStubs.cpp: 5767 * runtime/Collector.cpp: Removed. 5768 * runtime/Collector.h: Removed. 5769 * runtime/CollectorHeapIterator.h: 5770 * runtime/GCActivityCallbackCF.cpp: 5771 * runtime/Heap.cpp: Copied from JavaScriptCore/runtime/Collector.cpp. 5772 * runtime/Heap.h: Copied from JavaScriptCore/runtime/Collector.h. 5773 * runtime/InitializeThreading.cpp: 5774 * runtime/JSCell.h: 5775 * runtime/JSGlobalData.cpp: 5776 * runtime/JSGlobalData.h: 5777 * runtime/JSLock.cpp: 5778 * runtime/JSNumberCell.h: 5779 * runtime/MachineStackMarker.cpp: 5780 * runtime/MemoryStatistics.h: 5781 * runtime/Protect.h: 5782 * runtime/UString.cpp: 5783 * runtime/WeakGCMap.h: 5784 * runtime/WeakGCPtr.h: 5785 5786 2011-01-10 Xan Lopez <xlopez (a] igalia.com> 5787 5788 Reviewed by Gavin Barraclough. 5789 5790 Remove unused isString() case in JSString::toPrimitiveString() 5791 https://bugs.webkit.org/show_bug.cgi?id=52167 5792 5793 We never call toPrimitiveString() with strings, so remove the 5794 check and add an ASSERT ensuring this never happens. 0.7% overall 5795 progression in sunspider, since one of the call sites is very hot. 5796 5797 * runtime/JSString.h: 5798 (JSC::JSValue::toPrimitiveString): 5799 5800 2011-01-10 Peter Varga <pvarga (a] inf.u-szeged.hu> 5801 5802 Reviewed by Gavin Barraclough. 5803 5804 Rename the existing YARR files and classes 5805 https://bugs.webkit.org/show_bug.cgi?id=51872 5806 5807 Replace the "Regex" prefix with "Yarr" in the name of YARR files and classes. 5808 5809 * Android.mk: 5810 * CMakeLists.txt: 5811 * GNUmakefile.am: 5812 * JavaScriptCore.gypi: 5813 * JavaScriptCore.pro: 5814 * JavaScriptCore.xcodeproj/project.pbxproj: 5815 * runtime/RegExp.cpp: 5816 (JSC::RegExp::compile): 5817 (JSC::RegExp::match): 5818 (JSC::RegExp::printTraceData): 5819 * yarr/YarrInterpreter.cpp: Renamed from Source/JavaScriptCore/yarr/RegexInterpreter.cpp. 5820 (JSC::Yarr::Interpreter::appendParenthesesDisjunctionContext): 5821 (JSC::Yarr::Interpreter::popParenthesesDisjunctionContext): 5822 (JSC::Yarr::Interpreter::DisjunctionContext::DisjunctionContext): 5823 (JSC::Yarr::Interpreter::DisjunctionContext::operator new): 5824 (JSC::Yarr::Interpreter::allocDisjunctionContext): 5825 (JSC::Yarr::Interpreter::freeDisjunctionContext): 5826 (JSC::Yarr::Interpreter::ParenthesesDisjunctionContext::ParenthesesDisjunctionContext): 5827 (JSC::Yarr::Interpreter::ParenthesesDisjunctionContext::operator new): 5828 (JSC::Yarr::Interpreter::ParenthesesDisjunctionContext::restoreOutput): 5829 (JSC::Yarr::Interpreter::ParenthesesDisjunctionContext::getDisjunctionContext): 5830 (JSC::Yarr::Interpreter::allocParenthesesDisjunctionContext): 5831 (JSC::Yarr::Interpreter::freeParenthesesDisjunctionContext): 5832 (JSC::Yarr::Interpreter::InputStream::InputStream): 5833 (JSC::Yarr::Interpreter::InputStream::next): 5834 (JSC::Yarr::Interpreter::InputStream::rewind): 5835 (JSC::Yarr::Interpreter::InputStream::read): 5836 (JSC::Yarr::Interpreter::InputStream::readPair): 5837 (JSC::Yarr::Interpreter::InputStream::readChecked): 5838 (JSC::Yarr::Interpreter::InputStream::reread): 5839 (JSC::Yarr::Interpreter::InputStream::prev): 5840 (JSC::Yarr::Interpreter::InputStream::getPos): 5841 (JSC::Yarr::Interpreter::InputStream::setPos): 5842 (JSC::Yarr::Interpreter::InputStream::atStart): 5843 (JSC::Yarr::Interpreter::InputStream::atEnd): 5844 (JSC::Yarr::Interpreter::InputStream::checkInput): 5845 (JSC::Yarr::Interpreter::InputStream::uncheckInput): 5846 (JSC::Yarr::Interpreter::InputStream::isNotAvailableInput): 5847 (JSC::Yarr::Interpreter::testCharacterClass): 5848 (JSC::Yarr::Interpreter::checkCharacter): 5849 (JSC::Yarr::Interpreter::checkCasedCharacter): 5850 (JSC::Yarr::Interpreter::checkCharacterClass): 5851 (JSC::Yarr::Interpreter::tryConsumeBackReference): 5852 (JSC::Yarr::Interpreter::matchAssertionBOL): 5853 (JSC::Yarr::Interpreter::matchAssertionEOL): 5854 (JSC::Yarr::Interpreter::matchAssertionWordBoundary): 5855 (JSC::Yarr::Interpreter::backtrackPatternCharacter): 5856 (JSC::Yarr::Interpreter::backtrackPatternCasedCharacter): 5857 (JSC::Yarr::Interpreter::matchCharacterClass): 5858 (JSC::Yarr::Interpreter::backtrackCharacterClass): 5859 (JSC::Yarr::Interpreter::matchBackReference): 5860 (JSC::Yarr::Interpreter::backtrackBackReference): 5861 (JSC::Yarr::Interpreter::recordParenthesesMatch): 5862 (JSC::Yarr::Interpreter::resetMatches): 5863 (JSC::Yarr::Interpreter::parenthesesDoBacktrack): 5864 (JSC::Yarr::Interpreter::matchParenthesesOnceBegin): 5865 (JSC::Yarr::Interpreter::matchParenthesesOnceEnd): 5866 (JSC::Yarr::Interpreter::backtrackParenthesesOnceBegin): 5867 (JSC::Yarr::Interpreter::backtrackParenthesesOnceEnd): 5868 (JSC::Yarr::Interpreter::matchParenthesesTerminalBegin): 5869 (JSC::Yarr::Interpreter::matchParenthesesTerminalEnd): 5870 (JSC::Yarr::Interpreter::backtrackParenthesesTerminalBegin): 5871 (JSC::Yarr::Interpreter::backtrackParenthesesTerminalEnd): 5872 (JSC::Yarr::Interpreter::matchParentheticalAssertionBegin): 5873 (JSC::Yarr::Interpreter::matchParentheticalAssertionEnd): 5874 (JSC::Yarr::Interpreter::backtrackParentheticalAssertionBegin): 5875 (JSC::Yarr::Interpreter::backtrackParentheticalAssertionEnd): 5876 (JSC::Yarr::Interpreter::matchParentheses): 5877 (JSC::Yarr::Interpreter::backtrackParentheses): 5878 (JSC::Yarr::Interpreter::lookupForBeginChars): 5879 (JSC::Yarr::Interpreter::matchDisjunction): 5880 (JSC::Yarr::Interpreter::matchNonZeroDisjunction): 5881 (JSC::Yarr::Interpreter::interpret): 5882 (JSC::Yarr::Interpreter::Interpreter): 5883 (JSC::Yarr::ByteCompiler::ParenthesesStackEntry::ParenthesesStackEntry): 5884 (JSC::Yarr::ByteCompiler::ByteCompiler): 5885 (JSC::Yarr::ByteCompiler::compile): 5886 (JSC::Yarr::ByteCompiler::checkInput): 5887 (JSC::Yarr::ByteCompiler::assertionBOL): 5888 (JSC::Yarr::ByteCompiler::assertionEOL): 5889 (JSC::Yarr::ByteCompiler::assertionWordBoundary): 5890 (JSC::Yarr::ByteCompiler::atomPatternCharacter): 5891 (JSC::Yarr::ByteCompiler::atomCharacterClass): 5892 (JSC::Yarr::ByteCompiler::atomBackReference): 5893 (JSC::Yarr::ByteCompiler::atomParenthesesOnceBegin): 5894 (JSC::Yarr::ByteCompiler::atomParenthesesTerminalBegin): 5895 (JSC::Yarr::ByteCompiler::atomParenthesesSubpatternBegin): 5896 (JSC::Yarr::ByteCompiler::atomParentheticalAssertionBegin): 5897 (JSC::Yarr::ByteCompiler::atomParentheticalAssertionEnd): 5898 (JSC::Yarr::ByteCompiler::popParenthesesStack): 5899 (JSC::Yarr::ByteCompiler::dumpDisjunction): 5900 (JSC::Yarr::ByteCompiler::closeAlternative): 5901 (JSC::Yarr::ByteCompiler::closeBodyAlternative): 5902 (JSC::Yarr::ByteCompiler::atomParenthesesSubpatternEnd): 5903 (JSC::Yarr::ByteCompiler::atomParenthesesOnceEnd): 5904 (JSC::Yarr::ByteCompiler::atomParenthesesTerminalEnd): 5905 (JSC::Yarr::ByteCompiler::regexBegin): 5906 (JSC::Yarr::ByteCompiler::regexEnd): 5907 (JSC::Yarr::ByteCompiler::alternativeBodyDisjunction): 5908 (JSC::Yarr::ByteCompiler::alternativeDisjunction): 5909 (JSC::Yarr::ByteCompiler::emitDisjunction): 5910 (JSC::Yarr::byteCompile): 5911 (JSC::Yarr::interpret): 5912 * yarr/YarrInterpreter.h: Renamed from Source/JavaScriptCore/yarr/RegexInterpreter.h. 5913 (JSC::Yarr::ByteTerm::ByteTerm): 5914 (JSC::Yarr::ByteTerm::BOL): 5915 (JSC::Yarr::ByteTerm::CheckInput): 5916 (JSC::Yarr::ByteTerm::EOL): 5917 (JSC::Yarr::ByteTerm::WordBoundary): 5918 (JSC::Yarr::ByteTerm::BackReference): 5919 (JSC::Yarr::ByteTerm::BodyAlternativeBegin): 5920 (JSC::Yarr::ByteTerm::BodyAlternativeDisjunction): 5921 (JSC::Yarr::ByteTerm::BodyAlternativeEnd): 5922 (JSC::Yarr::ByteTerm::AlternativeBegin): 5923 (JSC::Yarr::ByteTerm::AlternativeDisjunction): 5924 (JSC::Yarr::ByteTerm::AlternativeEnd): 5925 (JSC::Yarr::ByteTerm::SubpatternBegin): 5926 (JSC::Yarr::ByteTerm::SubpatternEnd): 5927 (JSC::Yarr::ByteTerm::invert): 5928 (JSC::Yarr::ByteTerm::capture): 5929 (JSC::Yarr::ByteDisjunction::ByteDisjunction): 5930 (JSC::Yarr::BytecodePattern::BytecodePattern): 5931 (JSC::Yarr::BytecodePattern::~BytecodePattern): 5932 * yarr/YarrJIT.cpp: Renamed from Source/JavaScriptCore/yarr/RegexJIT.cpp. 5933 (JSC::Yarr::YarrGenerator::optimizeAlternative): 5934 (JSC::Yarr::YarrGenerator::matchCharacterClassRange): 5935 (JSC::Yarr::YarrGenerator::matchCharacterClass): 5936 (JSC::Yarr::YarrGenerator::jumpIfNoAvailableInput): 5937 (JSC::Yarr::YarrGenerator::jumpIfAvailableInput): 5938 (JSC::Yarr::YarrGenerator::checkInput): 5939 (JSC::Yarr::YarrGenerator::atEndOfInput): 5940 (JSC::Yarr::YarrGenerator::notAtEndOfInput): 5941 (JSC::Yarr::YarrGenerator::jumpIfCharEquals): 5942 (JSC::Yarr::YarrGenerator::jumpIfCharNotEquals): 5943 (JSC::Yarr::YarrGenerator::readCharacter): 5944 (JSC::Yarr::YarrGenerator::storeToFrame): 5945 (JSC::Yarr::YarrGenerator::storeToFrameWithPatch): 5946 (JSC::Yarr::YarrGenerator::loadFromFrame): 5947 (JSC::Yarr::YarrGenerator::loadFromFrameAndJump): 5948 (JSC::Yarr::YarrGenerator::IndirectJumpEntry::IndirectJumpEntry): 5949 (JSC::Yarr::YarrGenerator::IndirectJumpEntry::addJump): 5950 (JSC::Yarr::YarrGenerator::AlternativeBacktrackRecord::AlternativeBacktrackRecord): 5951 (JSC::Yarr::YarrGenerator::GenerationState::GenerationState): 5952 (JSC::Yarr::YarrGenerator::GenerationState::addIndirectJumpEntry): 5953 (JSC::Yarr::YarrGenerator::GenerationState::emitIndirectJumpTable): 5954 (JSC::Yarr::YarrGenerator::GenerationState::incrementParenNestingLevel): 5955 (JSC::Yarr::YarrGenerator::GenerationState::decrementParenNestingLevel): 5956 (JSC::Yarr::YarrGenerator::GenerationState::addParenthesesTail): 5957 (JSC::Yarr::YarrGenerator::GenerationState::emitParenthesesTail): 5958 (JSC::Yarr::YarrGenerator::GenerationState::addJumpToNextInteration): 5959 (JSC::Yarr::YarrGenerator::GenerationState::addJumpsToNextInteration): 5960 (JSC::Yarr::YarrGenerator::GenerationState::addDataLabelToNextIteration): 5961 (JSC::Yarr::YarrGenerator::GenerationState::linkToNextIteration): 5962 (JSC::Yarr::YarrGenerator::BacktrackDestination::BacktrackDestination): 5963 (JSC::Yarr::YarrGenerator::BacktrackDestination::clear): 5964 (JSC::Yarr::YarrGenerator::BacktrackDestination::clearDataLabel): 5965 (JSC::Yarr::YarrGenerator::BacktrackDestination::hasDestination): 5966 (JSC::Yarr::YarrGenerator::BacktrackDestination::isStackOffset): 5967 (JSC::Yarr::YarrGenerator::BacktrackDestination::isLabel): 5968 (JSC::Yarr::YarrGenerator::BacktrackDestination::isJumpList): 5969 (JSC::Yarr::YarrGenerator::BacktrackDestination::hasDataLabel): 5970 (JSC::Yarr::YarrGenerator::BacktrackDestination::copyTarget): 5971 (JSC::Yarr::YarrGenerator::BacktrackDestination::copyTo): 5972 (JSC::Yarr::YarrGenerator::BacktrackDestination::addBacktrackJump): 5973 (JSC::Yarr::YarrGenerator::BacktrackDestination::setStackOffset): 5974 (JSC::Yarr::YarrGenerator::BacktrackDestination::setLabel): 5975 (JSC::Yarr::YarrGenerator::BacktrackDestination::setNextBacktrackLabel): 5976 (JSC::Yarr::YarrGenerator::BacktrackDestination::copyBacktrackToLabel): 5977 (JSC::Yarr::YarrGenerator::BacktrackDestination::setBacktrackToLabel): 5978 (JSC::Yarr::YarrGenerator::BacktrackDestination::setBacktrackJumpList): 5979 (JSC::Yarr::YarrGenerator::BacktrackDestination::setBacktrackSourceLabel): 5980 (JSC::Yarr::YarrGenerator::BacktrackDestination::setDataLabel): 5981 (JSC::Yarr::YarrGenerator::BacktrackDestination::setSubDataLabelPtr): 5982 (JSC::Yarr::YarrGenerator::BacktrackDestination::linkToNextBacktrack): 5983 (JSC::Yarr::YarrGenerator::BacktrackDestination::getStackOffset): 5984 (JSC::Yarr::YarrGenerator::BacktrackDestination::getLabel): 5985 (JSC::Yarr::YarrGenerator::BacktrackDestination::getBacktrackJumps): 5986 (JSC::Yarr::YarrGenerator::BacktrackDestination::getDataLabel): 5987 (JSC::Yarr::YarrGenerator::BacktrackDestination::jumpToBacktrack): 5988 (JSC::Yarr::YarrGenerator::BacktrackDestination::linkDataLabelToHereIfExists): 5989 (JSC::Yarr::YarrGenerator::BacktrackDestination::plantJumpToBacktrackIfExists): 5990 (JSC::Yarr::YarrGenerator::BacktrackDestination::linkAlternativeBacktracks): 5991 (JSC::Yarr::YarrGenerator::BacktrackDestination::linkAlternativeBacktracksTo): 5992 (JSC::Yarr::YarrGenerator::TermGenerationState::TermGenerationState): 5993 (JSC::Yarr::YarrGenerator::TermGenerationState::resetAlternative): 5994 (JSC::Yarr::YarrGenerator::TermGenerationState::alternativeValid): 5995 (JSC::Yarr::YarrGenerator::TermGenerationState::nextAlternative): 5996 (JSC::Yarr::YarrGenerator::TermGenerationState::alternative): 5997 (JSC::Yarr::YarrGenerator::TermGenerationState::isLastAlternative): 5998 (JSC::Yarr::YarrGenerator::TermGenerationState::resetTerm): 5999 (JSC::Yarr::YarrGenerator::TermGenerationState::termValid): 6000 (JSC::Yarr::YarrGenerator::TermGenerationState::nextTerm): 6001 (JSC::Yarr::YarrGenerator::TermGenerationState::term): 6002 (JSC::Yarr::YarrGenerator::TermGenerationState::isLastTerm): 6003 (JSC::Yarr::YarrGenerator::TermGenerationState::getSubParenNum): 6004 (JSC::Yarr::YarrGenerator::TermGenerationState::isMainDisjunction): 6005 (JSC::Yarr::YarrGenerator::TermGenerationState::setParenthesesTail): 6006 (JSC::Yarr::YarrGenerator::TermGenerationState::getParenthesesTail): 6007 (JSC::Yarr::YarrGenerator::TermGenerationState::lookaheadTerm): 6008 (JSC::Yarr::YarrGenerator::TermGenerationState::isSinglePatternCharacterLookaheadTerm): 6009 (JSC::Yarr::YarrGenerator::TermGenerationState::inputOffset): 6010 (JSC::Yarr::YarrGenerator::TermGenerationState::clearBacktrack): 6011 (JSC::Yarr::YarrGenerator::TermGenerationState::jumpToBacktrack): 6012 (JSC::Yarr::YarrGenerator::TermGenerationState::plantJumpToBacktrackIfExists): 6013 (JSC::Yarr::YarrGenerator::TermGenerationState::linkDataLabelToBacktrackIfExists): 6014 (JSC::Yarr::YarrGenerator::TermGenerationState::addBacktrackJump): 6015 (JSC::Yarr::YarrGenerator::TermGenerationState::setBacktrackDataLabel): 6016 (JSC::Yarr::YarrGenerator::TermGenerationState::setBackTrackStackOffset): 6017 (JSC::Yarr::YarrGenerator::TermGenerationState::setBacktrackLabel): 6018 (JSC::Yarr::YarrGenerator::TermGenerationState::linkAlternativeBacktracks): 6019 (JSC::Yarr::YarrGenerator::TermGenerationState::linkAlternativeBacktracksTo): 6020 (JSC::Yarr::YarrGenerator::TermGenerationState::setBacktrackLink): 6021 (JSC::Yarr::YarrGenerator::TermGenerationState::chainBacktracks): 6022 (JSC::Yarr::YarrGenerator::TermGenerationState::chainBacktrackJumps): 6023 (JSC::Yarr::YarrGenerator::TermGenerationState::getBacktrackDestination): 6024 (JSC::Yarr::YarrGenerator::TermGenerationState::propagateBacktrackingFrom): 6025 (JSC::Yarr::YarrGenerator::ParenthesesTail::ParenthesesTail): 6026 (JSC::Yarr::YarrGenerator::ParenthesesTail::processBacktracks): 6027 (JSC::Yarr::YarrGenerator::ParenthesesTail::setNextIteration): 6028 (JSC::Yarr::YarrGenerator::ParenthesesTail::addAfterParenJump): 6029 (JSC::Yarr::YarrGenerator::ParenthesesTail::generateCode): 6030 (JSC::Yarr::YarrGenerator::generateAssertionBOL): 6031 (JSC::Yarr::YarrGenerator::generateAssertionEOL): 6032 (JSC::Yarr::YarrGenerator::matchAssertionWordchar): 6033 (JSC::Yarr::YarrGenerator::generateAssertionWordBoundary): 6034 (JSC::Yarr::YarrGenerator::generatePatternCharacterSingle): 6035 (JSC::Yarr::YarrGenerator::generatePatternCharacterPair): 6036 (JSC::Yarr::YarrGenerator::generatePatternCharacterFixed): 6037 (JSC::Yarr::YarrGenerator::generatePatternCharacterGreedy): 6038 (JSC::Yarr::YarrGenerator::generatePatternCharacterNonGreedy): 6039 (JSC::Yarr::YarrGenerator::generateCharacterClassSingle): 6040 (JSC::Yarr::YarrGenerator::generateCharacterClassFixed): 6041 (JSC::Yarr::YarrGenerator::generateCharacterClassGreedy): 6042 (JSC::Yarr::YarrGenerator::generateCharacterClassNonGreedy): 6043 (JSC::Yarr::YarrGenerator::generateParenthesesDisjunction): 6044 (JSC::Yarr::YarrGenerator::generateParenthesesSingle): 6045 (JSC::Yarr::YarrGenerator::generateParenthesesGreedyNoBacktrack): 6046 (JSC::Yarr::YarrGenerator::generateParentheticalAssertion): 6047 (JSC::Yarr::YarrGenerator::generateTerm): 6048 (JSC::Yarr::YarrGenerator::generateDisjunction): 6049 (JSC::Yarr::YarrGenerator::generateEnter): 6050 (JSC::Yarr::YarrGenerator::generateReturn): 6051 (JSC::Yarr::YarrGenerator::YarrGenerator): 6052 (JSC::Yarr::YarrGenerator::generate): 6053 (JSC::Yarr::YarrGenerator::compile): 6054 (JSC::Yarr::jitCompile): 6055 * yarr/YarrJIT.h: Renamed from Source/JavaScriptCore/yarr/RegexJIT.h. 6056 (JSC::Yarr::YarrCodeBlock::YarrCodeBlock): 6057 (JSC::Yarr::YarrCodeBlock::~YarrCodeBlock): 6058 (JSC::Yarr::YarrCodeBlock::setFallBack): 6059 (JSC::Yarr::YarrCodeBlock::isFallBack): 6060 (JSC::Yarr::YarrCodeBlock::set): 6061 (JSC::Yarr::YarrCodeBlock::execute): 6062 (JSC::Yarr::YarrCodeBlock::getAddr): 6063 (JSC::Yarr::execute): 6064 * yarr/YarrParser.h: Renamed from Source/JavaScriptCore/yarr/RegexParser.h. 6065 (JSC::Yarr::Parser::CharacterClassParserDelegate::CharacterClassParserDelegate): 6066 (JSC::Yarr::Parser::CharacterClassParserDelegate::begin): 6067 (JSC::Yarr::Parser::CharacterClassParserDelegate::atomPatternCharacter): 6068 (JSC::Yarr::Parser::CharacterClassParserDelegate::atomBuiltInCharacterClass): 6069 (JSC::Yarr::Parser::CharacterClassParserDelegate::end): 6070 (JSC::Yarr::Parser::CharacterClassParserDelegate::assertionWordBoundary): 6071 (JSC::Yarr::Parser::CharacterClassParserDelegate::atomBackReference): 6072 (JSC::Yarr::Parser::Parser): 6073 (JSC::Yarr::Parser::parseEscape): 6074 (JSC::Yarr::Parser::parseAtomEscape): 6075 (JSC::Yarr::Parser::parseCharacterClassEscape): 6076 (JSC::Yarr::Parser::parseCharacterClass): 6077 (JSC::Yarr::Parser::parseParenthesesBegin): 6078 (JSC::Yarr::Parser::parseParenthesesEnd): 6079 (JSC::Yarr::Parser::parseQuantifier): 6080 (JSC::Yarr::Parser::parseTokens): 6081 (JSC::Yarr::Parser::parse): 6082 (JSC::Yarr::Parser::saveState): 6083 (JSC::Yarr::Parser::restoreState): 6084 (JSC::Yarr::Parser::atEndOfPattern): 6085 (JSC::Yarr::Parser::peek): 6086 (JSC::Yarr::Parser::peekIsDigit): 6087 (JSC::Yarr::Parser::peekDigit): 6088 (JSC::Yarr::Parser::consume): 6089 (JSC::Yarr::Parser::consumeDigit): 6090 (JSC::Yarr::Parser::consumeNumber): 6091 (JSC::Yarr::Parser::consumeOctal): 6092 (JSC::Yarr::Parser::tryConsume): 6093 (JSC::Yarr::Parser::tryConsumeHex): 6094 (JSC::Yarr::parse): 6095 * yarr/YarrPattern.cpp: Renamed from Source/JavaScriptCore/yarr/RegexPattern.cpp. 6096 (JSC::Yarr::CharacterClassConstructor::CharacterClassConstructor): 6097 (JSC::Yarr::CharacterClassConstructor::reset): 6098 (JSC::Yarr::CharacterClassConstructor::append): 6099 (JSC::Yarr::CharacterClassConstructor::putChar): 6100 (JSC::Yarr::CharacterClassConstructor::isUnicodeUpper): 6101 (JSC::Yarr::CharacterClassConstructor::isUnicodeLower): 6102 (JSC::Yarr::CharacterClassConstructor::putRange): 6103 (JSC::Yarr::CharacterClassConstructor::charClass): 6104 (JSC::Yarr::CharacterClassConstructor::addSorted): 6105 (JSC::Yarr::CharacterClassConstructor::addSortedRange): 6106 (JSC::Yarr::BeginCharHelper::BeginCharHelper): 6107 (JSC::Yarr::BeginCharHelper::addBeginChar): 6108 (JSC::Yarr::BeginCharHelper::merge): 6109 (JSC::Yarr::BeginCharHelper::addCharacter): 6110 (JSC::Yarr::BeginCharHelper::linkHotTerms): 6111 (JSC::Yarr::YarrPatternConstructor::YarrPatternConstructor): 6112 (JSC::Yarr::YarrPatternConstructor::~YarrPatternConstructor): 6113 (JSC::Yarr::YarrPatternConstructor::reset): 6114 (JSC::Yarr::YarrPatternConstructor::assertionBOL): 6115 (JSC::Yarr::YarrPatternConstructor::assertionEOL): 6116 (JSC::Yarr::YarrPatternConstructor::assertionWordBoundary): 6117 (JSC::Yarr::YarrPatternConstructor::atomPatternCharacter): 6118 (JSC::Yarr::YarrPatternConstructor::atomBuiltInCharacterClass): 6119 (JSC::Yarr::YarrPatternConstructor::atomCharacterClassBegin): 6120 (JSC::Yarr::YarrPatternConstructor::atomCharacterClassAtom): 6121 (JSC::Yarr::YarrPatternConstructor::atomCharacterClassRange): 6122 (JSC::Yarr::YarrPatternConstructor::atomCharacterClassBuiltIn): 6123 (JSC::Yarr::YarrPatternConstructor::atomCharacterClassEnd): 6124 (JSC::Yarr::YarrPatternConstructor::atomParenthesesSubpatternBegin): 6125 (JSC::Yarr::YarrPatternConstructor::atomParentheticalAssertionBegin): 6126 (JSC::Yarr::YarrPatternConstructor::atomParenthesesEnd): 6127 (JSC::Yarr::YarrPatternConstructor::atomBackReference): 6128 (JSC::Yarr::YarrPatternConstructor::copyDisjunction): 6129 (JSC::Yarr::YarrPatternConstructor::copyTerm): 6130 (JSC::Yarr::YarrPatternConstructor::quantifyAtom): 6131 (JSC::Yarr::YarrPatternConstructor::disjunction): 6132 (JSC::Yarr::YarrPatternConstructor::regexBegin): 6133 (JSC::Yarr::YarrPatternConstructor::regexEnd): 6134 (JSC::Yarr::YarrPatternConstructor::regexError): 6135 (JSC::Yarr::YarrPatternConstructor::setupAlternativeOffsets): 6136 (JSC::Yarr::YarrPatternConstructor::setupDisjunctionOffsets): 6137 (JSC::Yarr::YarrPatternConstructor::setupOffsets): 6138 (JSC::Yarr::YarrPatternConstructor::checkForTerminalParentheses): 6139 (JSC::Yarr::YarrPatternConstructor::optimizeBOL): 6140 (JSC::Yarr::YarrPatternConstructor::addBeginTerm): 6141 (JSC::Yarr::YarrPatternConstructor::setupDisjunctionBeginTerms): 6142 (JSC::Yarr::YarrPatternConstructor::setupAlternativeBeginTerms): 6143 (JSC::Yarr::YarrPatternConstructor::setupBeginChars): 6144 (JSC::Yarr::compile): 6145 (JSC::Yarr::YarrPattern::YarrPattern): 6146 * yarr/YarrPattern.h: Renamed from Source/JavaScriptCore/yarr/RegexPattern.h. 6147 (JSC::Yarr::CharacterRange::CharacterRange): 6148 (JSC::Yarr::CharacterClassTable::create): 6149 (JSC::Yarr::CharacterClassTable::CharacterClassTable): 6150 (JSC::Yarr::CharacterClass::CharacterClass): 6151 (JSC::Yarr::PatternTerm::PatternTerm): 6152 (JSC::Yarr::PatternTerm::ForwardReference): 6153 (JSC::Yarr::PatternTerm::BOL): 6154 (JSC::Yarr::PatternTerm::EOL): 6155 (JSC::Yarr::PatternTerm::WordBoundary): 6156 (JSC::Yarr::PatternTerm::invert): 6157 (JSC::Yarr::PatternTerm::capture): 6158 (JSC::Yarr::PatternTerm::quantify): 6159 (JSC::Yarr::PatternAlternative::PatternAlternative): 6160 (JSC::Yarr::PatternAlternative::lastTerm): 6161 (JSC::Yarr::PatternAlternative::removeLastTerm): 6162 (JSC::Yarr::PatternAlternative::setOnceThrough): 6163 (JSC::Yarr::PatternAlternative::onceThrough): 6164 (JSC::Yarr::PatternDisjunction::PatternDisjunction): 6165 (JSC::Yarr::PatternDisjunction::~PatternDisjunction): 6166 (JSC::Yarr::PatternDisjunction::addNewAlternative): 6167 (JSC::Yarr::TermChain::TermChain): 6168 (JSC::Yarr::BeginChar::BeginChar): 6169 (JSC::Yarr::YarrPattern::~YarrPattern): 6170 (JSC::Yarr::YarrPattern::reset): 6171 (JSC::Yarr::YarrPattern::containsIllegalBackReference): 6172 (JSC::Yarr::YarrPattern::newlineCharacterClass): 6173 (JSC::Yarr::YarrPattern::digitsCharacterClass): 6174 (JSC::Yarr::YarrPattern::spacesCharacterClass): 6175 (JSC::Yarr::YarrPattern::wordcharCharacterClass): 6176 (JSC::Yarr::YarrPattern::nondigitsCharacterClass): 6177 (JSC::Yarr::YarrPattern::nonspacesCharacterClass): 6178 (JSC::Yarr::YarrPattern::nonwordcharCharacterClass): 6179 6180 2011-01-10 Gavin Barraclough <barraclough (a] apple.com> 6181 6182 Windows build fix. 6183 6184 * parser/SyntaxChecker.h: 6185 6186 2011-01-10 Dave Tapuska <dtapuska (a] rim.com> 6187 6188 Reviewed by Gavin Barraclough. 6189 6190 Add CTI ASM versions for RVCT ARM THUMB2 mode. 6191 6192 https://bugs.webkit.org/show_bug.cgi?id=52154 6193 6194 * jit/JITStubs.cpp: 6195 (JSC::ctiTrampoline): 6196 (JSC::ctiVMThrowTrampoline): 6197 (JSC::ctiOpThrowNotCaught): 6198 6199 2011-01-10 Gavin Barraclough <barraclough (a] apple.com> 6200 6201 Qt build fix. 6202 6203 * JavaScriptCore.pro: 6204 6205 2011-01-10 Gavin Barraclough <barraclough (a] apple.com> 6206 6207 Reviewed by Oliver Hunt. 6208 6209 Bug 52079 - Syntax errors should be early errors. 6210 6211 From chapter 16 the spec: 6212 An implementation must report most errors at the time the relevant ECMAScript language construct is 6213 evaluated. An early error is an error that can be detected and reported prior to the evaluation of 6214 any construct in the Program containing the error. An implementation must report early errors in a 6215 Program prior to the first evaluation of that Program. Early errors in eval code are reported at 6216 the time eval is called but prior to evaluation of any construct within the eval code. All errors 6217 that are not early errors are runtime errors. 6218 6219 An implementation must treat any instance of the following kinds of errors as an early error: 6220 * Any syntax error." 6221 6222 * JavaScriptCore.xcodeproj/project.pbxproj: 6223 Added new files. 6224 * bytecode/CodeBlock.cpp: 6225 Removed op_throw_syntax_error. 6226 * bytecode/Opcode.h: 6227 Removed op_throw_syntax_error. 6228 * bytecompiler/BytecodeGenerator.cpp: 6229 (JSC::BytecodeGenerator::generate): 6230 If m_expressionTooDeep then throw a runtime error. 6231 (JSC::BytecodeGenerator::BytecodeGenerator): 6232 Initialize m_expressionTooDeep. 6233 (JSC::BytecodeGenerator::emitThrowExpressionTooDeepException): 6234 Sets m_expressionTooDeep. 6235 * bytecompiler/BytecodeGenerator.h: 6236 Added m_expressionTooDeep, removed emitThrowSyntaxError. 6237 * bytecompiler/NodesCodegen.cpp: 6238 (JSC::RegExpNode::emitBytecode): 6239 (JSC::ContinueNode::emitBytecode): 6240 (JSC::BreakNode::emitBytecode): 6241 (JSC::ReturnNode::emitBytecode): 6242 (JSC::LabelNode::emitBytecode): 6243 Conditions that threw syntax error are now handled during parsing; 6244 during bytecompilation these are now just ASSERTs. 6245 * interpreter/Interpreter.cpp: 6246 (JSC::Interpreter::privateExecute): 6247 * jit/JIT.cpp: 6248 (JSC::JIT::privateCompileMainPass): 6249 * jit/JIT.h: 6250 * jit/JITOpcodes.cpp: 6251 * jit/JITOpcodes32_64.cpp: 6252 * jit/JITStubs.cpp: 6253 * jit/JITStubs.h: 6254 Removed op_throw_syntax_error. 6255 * parser/ASTBuilder.h: 6256 (JSC::ASTBuilder::createRegExp): 6257 Renamed; added syntax check. 6258 * parser/JSParser.cpp: 6259 (JSC::JSParser::breakIsValid): 6260 (JSC::JSParser::hasLabel): 6261 (JSC::JSParser::Scope::Scope): 6262 (JSC::JSParser::Scope::setIsFunction): 6263 (JSC::JSParser::Scope::isFunctionBoundary): 6264 (JSC::JSParser::ScopeRef::hasContainingScope): 6265 (JSC::JSParser::ScopeRef::containingScope): 6266 (JSC::JSParser::AutoPopScopeRef::AutoPopScopeRef): 6267 (JSC::JSParser::AutoPopScopeRef::~AutoPopScopeRef): 6268 (JSC::JSParser::AutoPopScopeRef::setPopped): 6269 (JSC::JSParser::popScopeInternal): 6270 (JSC::JSParser::popScope): 6271 (JSC::jsParse): 6272 (JSC::JSParser::JSParser): 6273 (JSC::JSParser::parseProgram): 6274 (JSC::JSParser::parseBreakStatement): 6275 (JSC::JSParser::parseContinueStatement): 6276 (JSC::JSParser::parseReturnStatement): 6277 (JSC::JSParser::parseTryStatement): 6278 (JSC::JSParser::parseFunctionInfo): 6279 (JSC::JSParser::parseExpressionOrLabelStatement): 6280 (JSC::JSParser::parsePrimaryExpression): 6281 * parser/JSParser.h: 6282 * parser/Nodes.h: 6283 * parser/Parser.cpp: 6284 (JSC::Parser::parse): 6285 * parser/SyntaxChecker.h: 6286 (JSC::SyntaxChecker::createRegExp): 6287 Renamed; added syntax check. 6288 * runtime/ExceptionHelpers.cpp: 6289 (JSC::createOutOfMemoryError): 6290 (JSC::throwOutOfMemoryError): 6291 * runtime/ExceptionHelpers.h: 6292 Broke out createOutOfMemoryError. 6293 * runtime/Executable.cpp: 6294 (JSC::EvalExecutable::compileInternal): 6295 (JSC::ProgramExecutable::compileInternal): 6296 (JSC::FunctionExecutable::compileForCallInternal): 6297 (JSC::FunctionExecutable::compileForConstructInternal): 6298 Add check for exception after bytecode generation. 6299 * runtime/RegExpConstructor.cpp: 6300 (JSC::constructRegExp): 6301 * runtime/RegExpPrototype.cpp: 6302 (JSC::regExpProtoFuncCompile): 6303 RegExp error prefixes not included in error string. 6304 * yarr/RegexParser.h: 6305 (JSC::Yarr::Parser::parse): 6306 Removed regexBegin/regexEnd/regexError. 6307 * yarr/RegexPattern.cpp: 6308 (JSC::Yarr::RegexPatternConstructor::regexBegin): 6309 Removed regexEnd/regexError. 6310 (JSC::Yarr::compileRegex): 6311 Add call to regexBegin (no longer called from the parser). 6312 * yarr/YarrSyntaxChecker.cpp: Added. 6313 (JSC::Yarr::SyntaxChecker::assertionBOL): 6314 (JSC::Yarr::SyntaxChecker::assertionEOL): 6315 (JSC::Yarr::SyntaxChecker::assertionWordBoundary): 6316 (JSC::Yarr::SyntaxChecker::atomPatternCharacter): 6317 (JSC::Yarr::SyntaxChecker::atomBuiltInCharacterClass): 6318 (JSC::Yarr::SyntaxChecker::atomCharacterClassBegin): 6319 (JSC::Yarr::SyntaxChecker::atomCharacterClassAtom): 6320 (JSC::Yarr::SyntaxChecker::atomCharacterClassRange): 6321 (JSC::Yarr::SyntaxChecker::atomCharacterClassBuiltIn): 6322 (JSC::Yarr::SyntaxChecker::atomCharacterClassEnd): 6323 (JSC::Yarr::SyntaxChecker::atomParenthesesSubpatternBegin): 6324 (JSC::Yarr::SyntaxChecker::atomParentheticalAssertionBegin): 6325 (JSC::Yarr::SyntaxChecker::atomParenthesesEnd): 6326 (JSC::Yarr::SyntaxChecker::atomBackReference): 6327 (JSC::Yarr::SyntaxChecker::quantifyAtom): 6328 (JSC::Yarr::SyntaxChecker::disjunction): 6329 (JSC::Yarr::checkSyntax): 6330 * yarr/YarrSyntaxChecker.h: Added. 6331 Check RegExp syntax. 6332 6333 2011-01-10 Adam Roben <aroben (a] apple.com> 6334 6335 Roll out r75289 6336 6337 It was causing assertion failures. See <http://webkit.org/b/52156>. 6338 6339 * wtf/StackBounds.cpp: 6340 (WTF::StackBounds::initialize): 6341 6342 2011-01-08 Patrick Gansterer <paroga (a] webkit.org> 6343 6344 Reviewed by Darin Adler. 6345 6346 Unify string table adding in AtomicString 6347 https://bugs.webkit.org/show_bug.cgi?id=51927 6348 6349 Move code for adding a string into a separate function. 6350 This removes multiple occurrence of the same logic. 6351 6352 * wtf/text/AtomicString.cpp: 6353 (WTF::addToStringTable): Added. 6354 (WTF::AtomicString::add): Use addToStringTable(). 6355 (WTF::AtomicString::fromUTF8): Ditto. 6356 6357 2011-01-07 Geoffrey Garen <ggaren (a] apple.com> 6358 6359 Reviewed by Gavin Barraclough. 6360 6361 Split machine stack marking functions into their own class (MachineStackMarker) 6362 https://bugs.webkit.org/show_bug.cgi?id=52088 6363 6364 * API/APIShims.h: 6365 (JSC::APIEntryShimWithoutLock::APIEntryShimWithoutLock): Moved registerThread() 6366 call behind an #ifdef because we shouldn't be registering threads at all 6367 if we don't support usage on multiple threads. 6368 6369 * Android.mk: 6370 * CMakeLists.txt: 6371 * GNUmakefile.am: 6372 * JavaScriptCore.gypi: 6373 * JavaScriptCore.pro: 6374 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: 6375 * JavaScriptCore.xcodeproj/project.pbxproj: Updated projects. 6376 6377 * runtime/Collector.cpp: 6378 (JSC::Heap::Heap): 6379 (JSC::Heap::destroy): 6380 (JSC::Heap::markRoots): 6381 * runtime/Collector.h: 6382 (JSC::Heap::machineStackMarker): Moved code to machineStackMarker. 6383 6384 * runtime/JSGlobalData.h: 6385 (JSC::JSGlobalData::makeUsableFromMultipleThreads): Removed an unnecessary 6386 level of indirection, to make Heap less of a God class. 6387 6388 * runtime/MachineStackMarker.h: Copied from Source/JavaScriptCore/runtime/Collector.h. 6389 * runtime/MachineStackMarker.cpp: Copied from Source/JavaScriptCore/runtime/Collector.cpp. 6390 (JSC::MachineStackMarker::MachineStackMarker): 6391 (JSC::MachineStackMarker::~MachineStackMarker): 6392 (JSC::MachineStackMarker::makeUsableFromMultipleThreads): 6393 (JSC::MachineStackMarker::registerThread): 6394 (JSC::MachineStackMarker::unregisterThread): 6395 (JSC::MachineStackMarker::markCurrentThreadConservativelyInternal): 6396 (JSC::MachineStackMarker::markCurrentThreadConservatively): 6397 (JSC::MachineStackMarker::markOtherThreadConservatively): 6398 (JSC::MachineStackMarker::markMachineStackConservatively): Moved code from Heap. 6399 6400 2011-01-07 Gavin Barraclough <barraclough (a] apple.com> 6401 6402 Reviewed by Geoff Garen. 6403 6404 Bug 26276 - Need a mechanism to determine stack extent on WINDOWS, SOLARIS, OPENBSD, SYMBIAN, HAIKU, WINCE platforms 6405 6406 Fix for win32. The base of the stack is stored in the "deallocation stack" field of the 6407 Thread Information Block - see: http://en.wikipedia.org/wiki/Win32_Thread_Information_Block 6408 for more information! 6409 6410 * wtf/StackBounds.cpp: 6411 (WTF::StackBounds::initialize): 6412 6413 2011-01-07 Adam Roben <aroben (a] apple.com> 6414 6415 Update react-to-vsprops-changes.py after r74855 6416 6417 * JavaScriptCore.vcproj/JavaScriptCore/react-to-vsprops-changes.py: 6418 6419 2011-01-07 Carlos Garcia Campos <cgarcia (a] igalia.com> 6420 6421 Reviewed by Martin Robinson. 6422 6423 [GTK] Port scrollbar painting to GtkStyleContext 6424 https://bugs.webkit.org/show_bug.cgi?id=52051 6425 6426 * wtf/gobject/GTypedefs.h: Add GtkStyleContext forward 6427 declaration. 6428 6429 2011-01-07 Daniel Bates <dbates (a] rim.com> 6430 6431 Reviewed by Martin Robinson. 6432 6433 Enable PCRE computed gotos when compiling with RCVT 4.0 or greater in GNU mode 6434 https://bugs.webkit.org/show_bug.cgi?id=52034 6435 6436 Derived from a patch by Eli Fidler. 6437 6438 RVCT 4 or greater in GNU mode supports the computed goto GNU language extension 6439 as per <http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.dui0348c/ch03s07s12.html>. 6440 6441 * pcre/pcre_exec.cpp: Modified to check for feature, HAVE(COMPUTED_GOTO), instead 6442 of hardcoding the GCC compiler. 6443 * wtf/Platform.h: Define WTF_COMPILER_RVCT4_OR_GREATER if __ARMCC_VERSION >= 400000. 6444 6445 2011-01-06 Gavin Barraclough <barraclough (a] apple.com> 6446 6447 Reviewed by Geoff Garen. 6448 6449 Bug 52035 - Unregistering DOMWrapperWorlds is unsafe 6450 6451 The method DOMWrapperWorld::unregisterWorld() effectively calls the DOMWrapperWorld's 6452 destructor early, in order to release wrappers once we know we no longer intend to use them. 6453 Whilst it is okay to have a method to throw away wrappers (assuming we know we're willing to 6454 lose any state stored on them) it is not okay to deregister the world from the JSGlobalData. 6455 A sequence of events that triggers the bug would look like this: 6456 6457 (1) Create a DOMWrapperWorld. 6458 (2) Register a timer in the world. 6459 (3) Call unregisterWorld() on the world. 6460 (4) Timer goes off, code is executed in the world, creates a Node not attached to a Document. 6461 (5) We attempt to lookup a wrapper map for the world on the JSGlobalData, but because we've 6462 called forgetWorld() none exists. 6463 (6) Attempt to add a wrapper to a NULL map. 6464 6465 Fix the problem by not removing the JSGlobalData's wrapper map until the world really goes away. 6466 6467 * runtime/WeakGCMap.h: 6468 (JSC::WeakGCMap::clear): 6469 6470 2011-01-06 Gavin Barraclough <barraclough (a] apple.com> 6471 6472 Reviewed by Darin Adler. 6473 6474 Bug 52021 - zeroDouble broken on ARMv7 6475 6476 The bug here is that zeroDouble was working incorrectly, 6477 leading to op_loop_if_true failing - specifically in the 6478 case where the value being checked is 0.0 encoded as a 6479 double (rather than an integer immediate). 6480 6481 Additionally this patch removes a redundant duplicate compare 6482 in some (many) case. 6483 6484 * assembler/ARMv7Assembler.h: 6485 (JSC::ARMv7Assembler::vcmp_F64): 6486 (JSC::ARMv7Assembler::vcmpz_F64): 6487 * assembler/MacroAssemblerARM.h: 6488 (JSC::MacroAssemblerARM::branchDoubleNonZero): 6489 (JSC::MacroAssemblerARM::branchDoubleZeroOrNaN): 6490 * assembler/MacroAssemblerARMv7.h: 6491 (JSC::MacroAssemblerARMv7::branchDouble): 6492 (JSC::MacroAssemblerARMv7::branchDoubleNonZero): 6493 (JSC::MacroAssemblerARMv7::branchDoubleZeroOrNaN): 6494 (JSC::MacroAssemblerARMv7::compare32): 6495 * assembler/MacroAssemblerMIPS.h: 6496 (JSC::MacroAssemblerMIPS::branchDoubleNonZero): 6497 (JSC::MacroAssemblerMIPS::branchDoubleZeroOrNaN): 6498 * assembler/MacroAssemblerX86Common.h: 6499 (JSC::MacroAssemblerX86Common::branchDoubleNonZero): 6500 (JSC::MacroAssemblerX86Common::branchDoubleZeroOrNaN): 6501 * jit/JITOpcodes32_64.cpp: 6502 (JSC::JIT::emit_op_jfalse): 6503 (JSC::JIT::emit_op_jtrue): 6504 6505 2011-01-06 Michael Saboff <msaboff (a] apple.com> 6506 6507 Reviewed by Gavin Barraclough. 6508 6509 Added debug code to compare the results of JIT regexp with 6510 interpreted regexp and displays discrepencies. This debug code is 6511 controlled by the ENABLE_YARR_JIT_DEBUG macro in wtf/Platform.h and 6512 is only valid if ENABLE_YARR_JIT is enabled. 6513 6514 Fixed a discovered problem in RegExp::printTraceData, changing 6515 m_pattern to the getter pattern(). 6516 Also deleted an extraneous semicolon. 6517 6518 Enhancement: Add Regexp Debug Compare between JIT and Interpreter 6519 https://bugs.webkit.org/show_bug.cgi?id=51834 6520 6521 * runtime/RegExp.cpp: 6522 (JSC::RegExp::compile): 6523 (JSC::RegExp::match): 6524 (JSC::RegExp::printTraceData): 6525 * wtf/Platform.h: 6526 6527 2011-01-06 Patrick Gansterer <paroga (a] webkit.org> 6528 6529 Reviewed by Eric Seidel. 6530 6531 [WINCE] Remove JSC::g_stackBase 6532 https://bugs.webkit.org/show_bug.cgi?id=51779 6533 6534 * wtf/StackBounds.cpp: 6535 6536 2011-01-06 Joone Hur <joone.hur (a] collabora.co.uk> 6537 6538 Reviewed by Eric Seidel. 6539 6540 WML Parser should treat line/column number in a consistent way 6541 https://bugs.webkit.org/show_bug.cgi?id=51601 6542 6543 Add the equality operators to TextPosition class. 6544 6545 * wtf/text/TextPosition.h: 6546 (WTF::TextPosition::operator==): Added. 6547 (WTF::TextPosition::operator!=): Added. 6548 (WTF::TextPosition::belowRangePosition): Use belowBase() instead of base(). 6549 (WTF::ZeroBasedNumber::operator==): Added. 6550 (WTF::ZeroBasedNumber::operator!=): Added. 6551 (WTF::OneBasedNumber::operator==): Added. 6552 (WTF::OneBasedNumber::operator!=): Added. 6553 6554 2011-01-06 Patrick Gansterer <paroga (a] webkit.org> 6555 6556 Reviewed by Gavin Barraclough. 6557 6558 [WINCE] Determine stack extent 6559 https://bugs.webkit.org/show_bug.cgi?id=26276 6560 6561 Scan the stack for writeable pages and use the limits. 6562 6563 * wtf/StackBounds.cpp: 6564 (WTF::detectGrowingDownward): 6565 (WTF::isPageWritable): 6566 (WTF::getLowerStackBound): 6567 (WTF::getUpperStackBound): 6568 (WTF::StackBounds::initialize): 6569 6570 2011-01-05 Steve Falkenburg <sfalken (a] apple.com> 6571 6572 Windows build fix. 6573 6574 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreCommon.vsprops: Revert change to additional library search path needed to find ICU. 6575 6576 2011-01-05 Steve Falkenburg <sfalken (a] apple.com> 6577 6578 Reviewed by Darin Adler. 6579 6580 Debug and Release builds on Windows clobber each other 6581 https://bugs.webkit.org/show_bug.cgi?id=49185 6582 6583 Changes the structure of WebKitBuild build products directory so we 6584 completely separate each build configuration into independent directories. 6585 6586 Although we previously had per-configuration directories for obj, this change adds 6587 per-configuration directories for bin, lib, obj, and include. Each configuration's 6588 build products are stored within a directory inside of WebKitBuild. 6589 6590 Most use of $(WebKitOutputDir) in the build files has been replaced by $(ConfigurationBuildDir), 6591 defined in common.vsprops to be $(WebKitOutputDir)\$(ConfigurationName). 6592 6593 For PGO, $(ConfigurationBuildDir) points to the same directory (Release_PGO) to allow 6594 for proper operation of the instrumentation/optimization scripts. 6595 6596 * JavaScriptCore.vcproj/JavaScriptCore.make: 6597 * JavaScriptCore.vcproj/JavaScriptCore.sln: 6598 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: 6599 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreCommon.vsprops: 6600 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreGenerated.make: 6601 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreGenerated.vcproj: 6602 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreGeneratedCommon.vsprops: 6603 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCorePGOOptimize.vsprops: Added. 6604 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCorePostBuild.cmd: 6605 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCorePreBuild.cmd: 6606 * JavaScriptCore.vcproj/JavaScriptCore/build-generated-files.sh: 6607 * JavaScriptCore.vcproj/JavaScriptCore/react-to-vsprops-changes.py: 6608 * JavaScriptCore.vcproj/JavaScriptCoreSubmit.sln: 6609 * JavaScriptCore.vcproj/WTF/WTF.vcproj: 6610 * JavaScriptCore.vcproj/WTF/WTFCommon.vsprops: 6611 * JavaScriptCore.vcproj/WTF/WTFPostBuild.cmd: 6612 * JavaScriptCore.vcproj/WTF/WTFPreBuild.cmd: 6613 * JavaScriptCore.vcproj/jsc/jsc.vcproj: 6614 * JavaScriptCore.vcproj/jsc/jscCommon.vsprops: 6615 * JavaScriptCore.vcproj/jsc/jscPostBuild.cmd: 6616 * JavaScriptCore.vcproj/jsc/jscPreBuild.cmd: 6617 * JavaScriptCore.vcproj/testapi/testapiCommon.vsprops: 6618 * JavaScriptCore.vcproj/testapi/testapiPostBuild.cmd: 6619 * JavaScriptCore.vcproj/testapi/testapiPreBuild.cmd: 6620 6621 2011-01-05 Brent Fulgham <bfulgham (a] webkit.org> 6622 6623 Unreviewed build fix. 6624 6625 * wtf/Encoder.h: Add <stdint.h> include for systems that 6626 do not natively know about uint8_t, etc. 6627 6628 2011-01-05 Patrick Gansterer <paroga (a] webkit.org> 6629 6630 Reviewed by Andreas Kling. 6631 6632 [CMake] Fix the usage of SOURCE_GROUP 6633 https://bugs.webkit.org/show_bug.cgi?id=51739 6634 6635 * CMakeLists.txt: 6636 6637 2011-01-05 Andras Becsi <abecsi (a] webkit.org> 6638 6639 Reviewed by Csaba Osztrogonc. 6640 6641 [Qt][V8] Fix the build after recent changes. 6642 6643 * pcre/pcre.pri: Correct the path after Source was introduced. 6644 6645 2011-01-04 Steve Falkenburg <sfalken (a] apple.com> 6646 6647 Build fix. Update path to FindSafari after source code reorganization. 6648 6649 * JavaScriptCore.vcproj/JavaScriptCore.sln: 6650 6651 2011-01-04 Daniel Bates <dbates (a] rim.com> 6652 6653 Fix the Android build after changeset 74975 <http://trac.webkit.org/changeset/74975> 6654 (https://bugs.webkit.org/show_bug.cgi?id=51855). 6655 6656 * wtf/ThreadingPthreads.cpp: Add include of PassOwnPtr.h. 6657 (WTF::runThreadWithRegistration): Use -> instead of . to dereference pointer. 6658 6659 2011-01-04 Martin Robinson <mrobinson (a] igalia.com> 6660 6661 Try to fix the EFL build. 6662 6663 * wtf/CMakeLists.txt: Remove PlatformRefPtr from the CMake source list. 6664 6665 2011-01-04 James Robinson <jamesr (a] chromium.org> 6666 6667 Reviewed by Darin Adler. 6668 6669 StackBounds initialization in WTFThreadData should be guarded by #if USE(JSC) 6670 https://bugs.webkit.org/show_bug.cgi?id=51881 6671 6672 The StackBounds class is only used by JavaScriptCore. 6673 6674 * wtf/WTFThreadData.cpp: 6675 (WTF::WTFThreadData::WTFThreadData): 6676 * wtf/WTFThreadData.h: 6677 (WTF::WTFThreadData::resetCurrentIdentifierTable): 6678 6679 2011-01-03 Martin Robinson <mrobinson (a] igalia.com> 6680 6681 Reviewed by Darin Adler. 6682 6683 Remove the last non-GObject usage of PlatformRefPtr and move the code to GRefPtr 6684 https://bugs.webkit.org/show_bug.cgi?id=51846 6685 6686 * GNUmakefile.am: Remove PlatformRefPtr.h from the sources list. 6687 * JavaScriptCore.vcproj/WTF/WTF.vcproj: Ditto. 6688 * jit/ExecutableAllocator.h: Change references to PlatformRefPtr to RefPtr. 6689 (JSC::ExecutableAllocator::cacheFlush): Ditto. 6690 * wtf/PlatformRefPtr.h: Removed. 6691 * wtf/RandomNumber.cpp: Change references to PlatformRefPtr to RefPtr. 6692 (WTF::randomNumber): Ditto. 6693 * wtf/brew/RefPtrBrew.h: Ditto. 6694 (WTF::refIfNotNull): Added. 6695 (WTF::derefIfNotNull): Added. 6696 * wtf/brew/ShellBrew.h: Change references to PlatformRefPtr to RefPtr. 6697 (WTF::createRefPtrInstance): Modified to return a RefPtr. 6698 * wtf/gobject/GRefPtr.cpp: 6699 (WTF::refGPtr): Moved from PlatformRefPtr here. 6700 (WTF::derefGPtr): Ditto. 6701 * wtf/gobject/GRefPtr.h: Ditto. 6702 (WTF::GRefPtr::GRefPtr): Ditto. 6703 (WTF::GRefPtr::~GRefPtr): Ditto. 6704 (WTF::GRefPtr::clear): Ditto. 6705 (WTF::GRefPtr::isHashTableDeletedValue): Ditto. 6706 (WTF::GRefPtr::get): Ditto. 6707 (WTF::GRefPtr::operator*): Ditto. 6708 (WTF::GRefPtr::operator->): Ditto. 6709 (WTF::GRefPtr::operator!): Ditto. 6710 (WTF::GRefPtr::operator UnspecifiedBoolType): Ditto. 6711 (WTF::GRefPtr::hashTableDeletedValue): Ditto. 6712 (WTF::::operator): Ditto. 6713 (WTF::::swap): Ditto. 6714 (WTF::swap): Ditto. 6715 (WTF::operator==): Ditto. 6716 (WTF::operator!=): Ditto. 6717 (WTF::static_pointer_cast): Ditto. 6718 (WTF::const_pointer_cast): Ditto. 6719 (WTF::getPtr): Ditto. 6720 (WTF::adoptGRef): Ditto. 6721 (WTF::refGPtr): Ditto. 6722 (WTF::derefGPtr): Ditto. 6723 6724 2011-01-04 Daniel Bates <dbates (a] rim.com> 6725 6726 Reviewed by Adam Roben. 6727 6728 LEAK: Deallocate instance of ThreadFunctionInvocation if thread creation fails 6729 https://bugs.webkit.org/show_bug.cgi?id=51860 6730 6731 * wtf/ThreadingWin.cpp: 6732 (WTF::createThreadInternal): 6733 6734 2011-01-04 Laszlo Gombos <laszlo.1.gombos (a] nokia.com> 6735 6736 Reviewed by Ariya Hidayat. 6737 6738 [Qt][Symbian] Make sure that WebKit headers are included before platform headers on Symbian 6739 https://bugs.webkit.org/show_bug.cgi?id=31273 6740 6741 On Symbian PREPEND_INCLUDEPATH is the best way to make sure that WebKit headers 6742 are included before platform headers. On all other platforms continue to use 6743 INCLUDEPATH (as before). This is a continuation of r65877. 6744 6745 No new tests as there is no new functionality. 6746 6747 * JavaScriptCore.pri: 6748 6749 2011-01-04 Darin Adler <darin (a] apple.com> 6750 6751 Try to fix Windows build. 6752 6753 * wtf/ThreadingWin.cpp: Added include of PassOwnPtr.h. Fixed paragraphing 6754 of conditional includes. 6755 (WTF::wtfThreadEntryPoint): Use -> instead of . to dereference pointer. 6756 (WTF::createThreadInternal): Tweaked #if to not need separate macro. 6757 6758 2011-01-04 Daniel Bates <dbates (a] rim.com> 6759 6760 Reviewed by Adam Roben. 6761 6762 Extract ThreadFunctionInvocation into separate file and share between Apple Windows and Android 6763 https://bugs.webkit.org/show_bug.cgi?id=51855 6764 6765 Both the Apple Windows and Android ports implement a similar adapter structure, 6766 called ThreadFunctionInvocation and ThreadData respectively, as part of 6767 their thread creation process. Instead, we should share such an adapter 6768 structure and remove duplicate code. 6769 6770 * JavaScriptCore.gypi: Added header wtf/ThreadFunctionInvocation.h. 6771 * wtf/ThreadFunctionInvocation.h: Added. 6772 (WTF::ThreadFunctionInvocation::ThreadFunctionInvocation): 6773 * wtf/ThreadingPthreads.cpp: Removed Android-specific structure ThreadData; Instead, use ThreadFunctionInvocation. 6774 (WTF::runThreadWithRegistration): 6775 (WTF::createThreadInternal): 6776 * wtf/ThreadingWin.cpp: Moved structure ThreadFunctionInvocation to its own file so that 6777 it can be shared with the Android implementation of createThreadInternal(). 6778 (WTF::wtfThreadEntryPoint): Use OwnPtr to hold passed instance of ThreadFunctionInvocation. 6779 6780 2011-01-04 Daniel Bates <dbates (a] rim.com> 6781 6782 Reviewed by Darin Adler. 6783 6784 Use __builtin_expect when compiling using RVCT in GNU mode 6785 https://bugs.webkit.org/show_bug.cgi?id=51866 6786 6787 Derived from a patch by Dave Tapuska. 6788 6789 * wtf/AlwaysInline.h: 6790 6791 2011-01-03 Darin Adler <darin (a] apple.com> 6792 6793 Reviewed by Brady Eidson. 6794 6795 * wtf/Forward.h: Added Decoder and Encoder. 6796 6797 2011-01-03 Brady Eidson <beidson (a] apple.com> 6798 6799 Reviewed by Darin Adler. 6800 6801 Add Encode/Decode machinery Darin and I plan to work with for back/forward stuff in WebKit2. 6802 6803 Starting out with a pure virtual interface to be implemented in WK2, but we might change that later. 6804 6805 * GNUmakefile.am: 6806 * JavaScriptCore.vcproj/WTF/WTF.vcproj: 6807 * JavaScriptCore.xcodeproj/project.pbxproj: 6808 * wtf/CMakeLists.txt: 6809 6810 * wtf/Decoder.h: Added. 6811 * wtf/Encoder.h: Added. 6812 6813 2011-01-03 Laszlo Gombos <laszlo.1.gombos (a] nokia.com> 6814 6815 Unreviewed build fix. 6816 6817 [Qt] Add NullPtr.cpp introduced in r71155 to the Qt build system. 6818 6819 This fix is required for builds where HAVE(NULLPTR) is false 6820 (e.g. some MSVC and Symbian builds). 6821 6822 * wtf/wtf.pri: 6823 6824 2011-01-02 Dan Bernstein <mitz (a] apple.com> 6825 6826 Rubber-stamped by Simon Fraser. 6827 6828 <rdar://problem/8812159> Update copyright strings 6829 6830 * Info.plist: 6831 6832 2011-01-02 Csaba Osztrogonc <ossy (a] webkit.org> 6833 6834 Fix GTK+ build after r74855. 6835 6836 Reviewed by Xan Lopez. 6837 6838 * GNUmakefile.am: Fix include pathes. 6839 6840 2011-01-02 Adam Barth <abarth (a] webkit.org> 6841 6842 One more .. missing in the Qt build. 6843 6844 * jsc.pro: 6845 6846 2011-01-02 Xan Lopez <xlopez (a] igalia.com> 6847 6848 Fix GTK+ build. 6849 6850 * GNUmakefile.am: add -I$(srcdir)/Source to the JSC cppflags so 6851 that anyone can include its headers without adding the prefix 6852 'Source/'. 6853 6854 2011-01-02 Carl Lobo <carllobo (a] gmail.com> 6855 6856 Reviewed by Adam Barth. 6857 6858 Fix Windows Build for non-production where VSPropsRedirectionDir is not defined. 6859 https://bugs.webkit.org/show_bug.cgi?id=51797 6860 6861 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: 6862 * JavaScriptCore.vcproj/JavaScriptCore/build-generated-files.sh: 6863 * JavaScriptCore.vcproj/WTF/WTF.vcproj: 6864 * JavaScriptCore.vcproj/jsc/jsc.vcproj: 6865 * JavaScriptCore.vcproj/testapi/testapi.vcproj: 6866 6867 2011-01-01 Adam Barth <abarth (a] webkit.org> 6868 6869 Fix relative include paths in an attempt to fix the Qt build. 6870 6871 * JavaScriptCore.pri: 6872 * JavaScriptCore.pro: 6873 6874 2011-01-01 Adam Barth <abarth (a] webkit.org> 6875 6876 Another speculative build fix for GTK. 6877 6878 * GNUmakefile.am: 6879 6880 2011-01-01 Adam Barth <abarth (a] webkit.org> 6881 6882 Speculative build fix for GTK. Update the paths in GNUmakefile to 6883 include "Source". 6884 6885 * GNUmakefile.am: 6886 6887 2011-01-01 Adam Barth <abarth (a] webkit.org> 6888 6889 Update relative paths in JavaScriptCore.gyp to account for the extra 6890 level of directories. 6891 6892 * JavaScriptCore.gyp/JavaScriptCore.gyp: 6893 6894 2010-12-31 Patrick Gansterer <paroga (a] webkit.org> 6895 6896 Reviewed by Darin Adler. 6897 6898 Add a fast case for ASCII strings in HashAndUTF8CharactersTranslator::equal 6899 https://bugs.webkit.org/show_bug.cgi?id=50517 6900 6901 This change shows about 2% performance win on the xml-parser benchmark. 6902 6903 * wtf/text/AtomicString.cpp: 6904 (WTF::HashAndUTF8CharactersTranslator::equal): 6905 6906 2010-12-30 Patrick Gansterer <paroga (a] webkit.org> 6907 6908 Reviewed by Ariya Hidayat. 6909 6910 [CMake] Add WTF_HEADERS 6911 https://bugs.webkit.org/show_bug.cgi?id=51741 6912 6913 Add the WTF headers to show them in Visual Studio. 6914 6915 * wtf/CMakeLists.txt: 6916 * wtf/CMakeListsWinCE.txt: 6917 6918 2010-12-30 Konstantin Tokarev <annulen (a] yandex.ru> 6919 6920 Reviewed by David Kilzer. 6921 6922 [Qt] Don't build wtf/TCSystemAlloc.cpp if --system-malloc option is 6923 used 6924 https://bugs.webkit.org/show_bug.cgi?id=51672 6925 6926 * wtf/wtf.pri: Replaced USE_SYSTEM_MALLOC with USE_SYSTEM_MALLOC=1 6927 6928 2010-12-30 Patrick Gansterer <paroga (a] webkit.org> 6929 6930 Reviewed by Darin Adler. 6931 6932 Use OS(WINDOWS) instead of COMPILER(MSVC) in FastMalloc.cpp 6933 https://bugs.webkit.org/show_bug.cgi?id=51743 6934 6935 Most of the ifdefs belong to windows and not to the MSVC compiler. 6936 6937 * wtf/FastMalloc.cpp: 6938 6939 2010-12-29 Gavin Barraclough <barraclough (a] apple.com> 6940 6941 Reviewed by Sam Weinig. 6942 6943 Bug 51724 - In strict mode string literals should allow \0, but disallow \8 and \9. 6944 6945 * parser/Lexer.cpp: 6946 (JSC::Lexer::parseString): 6947 6948 2010-12-29 Helder Correia <helder (a] sencha.com> 6949 6950 Reviewed by Eric Seidel. 6951 6952 <VT> and <FF> are not valid JSON whitespace characters 6953 https://bugs.webkit.org/show_bug.cgi?id=51671 6954 6955 Vertical Tab and Form Feed are not allowed white spaces by the JSON 6956 RFC 4627: http://www.ietf.org/rfc/rfc4627.txt (2. JSON Grammar). 6957 6958 Tests: ietestcenter/Javascript/15.12.1.1-0-2.html 6959 ietestcenter/Javascript/15.12.1.1-0-3.html 6960 6961 * runtime/LiteralParser.cpp: 6962 (JSC::isJSONWhiteSpace): 6963 (JSC::LiteralParser::Lexer::lex): 6964 6965 2010-12-28 Helder Correia <helder (a] sencha.com> 6966 6967 Reviewed by Eric Seidel. 6968 6969 JSON.stringify must exist as a function taking 3 parameters 6970 https://bugs.webkit.org/show_bug.cgi?id=51667 6971 6972 The reported function length is 1 instead. 6973 6974 Test: ietestcenter/Javascript/15.12.3-0-2.html 6975 6976 * runtime/JSONObject.cpp: 6977 6978 2010-12-28 Helder Correia <helder (a] sencha.com> 6979 6980 Reviewed by Sam Weinig. 6981 6982 JSON.parse must exist as a function taking 2 parameters 6983 https://bugs.webkit.org/show_bug.cgi?id=51666 6984 6985 Support for revivers was introduced in bug 26591, but the function 6986 length has since remained unchanged. 6987 6988 Test: ietestcenter/Javascript/15.12.2-0-2.html 6989 6990 * runtime/JSONObject.cpp: 6991 6992 2010-12-27 Jake Helfert <jake (a] jakeonthenet.com> 6993 6994 Reviewed and reworked by Darin Adler. 6995 6996 Building WebKit with Visual Studio 2010 fails due 6997 to ambiguous assignment operator errors. 6998 https://bugs.webkit.org/show_bug.cgi?id=51116 6999 7000 * wtf/NullPtr.h: Added a HAVE(NULLPTR) definition for use with 7001 Platform.h HAVE macro, and included the Visual Studio 2010 compiler 7002 as one of the ones that has nullptr. 7003 * wtf/NullPtr.cpp: Updated condition to match. 7004 7005 * wtf/PassOwnArrayPtr.h: Don't include the operator=(nullptr_t) 7006 overload if we are compiling in loose mode and the compiler has 7007 nullptr, because assignment of 0 will otherwise encounter 7008 ambiguitity with this overload and the overload for loose mode 7009 that takes a raw pointer. The conditional can be removed when we 7010 get rid of loose mode. 7011 * wtf/PassOwnPtr.h: Ditto. 7012 7013 * wtf/PassRefPtr.h: Don't include the operator=(nullptr_t) overload 7014 if the compiler has nullptr, because assignment of 0 would be 7015 ambiguous with the overload that takes a raw pointer. The conditional 7016 can be removed if we ever decide we no longer need to support 7017 assigning 0, but might need a way to catch that usage on older compilers. 7018 * wtf/RefPtr.h: Ditto. 7019 * wtf/RetainPtr.h: Ditto 7020 7021 * JavaScriptCore.xcodeproj/project.pbxproj: Added NullPtr.cpp, 7022 accidentally omitted when the file was first added. 7023 7024 2010-12-26 Xan Lopez <xlopez (a] igalia.com> 7025 7026 Reviewed by Eric Seidel. 7027 7028 [GTK] Add standalone target for JSC 7029 https://bugs.webkit.org/show_bug.cgi?id=51607 7030 7031 * GNUmakefile.am: add convenience target to only build jsc and its 7032 dependencies. 7033 7034 2010-12-24 Patrick Gansterer <paroga (a] webkit.org> 7035 7036 Reviewed by Eric Seidel. 7037 7038 [WINCE] Add CPU(MIPS) detection 7039 https://bugs.webkit.org/show_bug.cgi?id=51342 7040 7041 WinCE usually defines MIPS and _MIPS_. 7042 7043 * wtf/Platform.h: 7044 7045 2010-12-23 Gavin Barraclough <barraclough (a] apple.com> 7046 7047 Reviewed by Sam Weinig. 7048 7049 Rename RegexCompiler.cpp to RegexPattern.cpp. 7050 Implicitly call compileRegex from RegexPattern's constructor. 7051 7052 * Android.mk: 7053 * CMakeLists.txt: 7054 * GNUmakefile.am: 7055 * JavaScriptCore.gypi: 7056 * JavaScriptCore.pro: 7057 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: 7058 * JavaScriptCore.xcodeproj/project.pbxproj: 7059 * runtime/RegExp.cpp: 7060 (JSC::RegExp::compile): 7061 * yarr/RegexCompiler.cpp: Removed. 7062 * yarr/RegexCompiler.h: Removed. 7063 * yarr/RegexInterpreter.cpp: 7064 * yarr/RegexJIT.cpp: 7065 * yarr/RegexPattern.cpp: Copied from JavaScriptCore/yarr/RegexCompiler.cpp. 7066 (JSC::Yarr::compileRegex): 7067 (JSC::Yarr::RegexPattern::RegexPattern): 7068 * yarr/RegexPattern.h: 7069 7070 2010-12-23 Patrick Gansterer <paroga (a] webkit.org> 7071 7072 Unreviewed build fix for WinCE after r74360. 7073 7074 Move the OS(WINDOWS) section after the OS(WINCE) section 7075 and add missing argument to the getStackMax call. 7076 7077 * wtf/StackBounds.cpp: 7078 (WTF::StackBounds::initialize): 7079 7080 2010-12-22 Laszlo Gombos <laszlo.1.gombos (a] nokia.com> 7081 7082 Unreviewed build fix. 7083 7084 [Symbian] Make sure OSAllocatorSymbian builds 7085 7086 This patch only addresses the build problem. 7087 7088 https://bugs.webkit.org/show_bug.cgi?id=51128 tracks the full 7089 (re)implementation of the Symbian allocator. 7090 7091 * wtf/OSAllocatorSymbian.cpp: 7092 (WTF::OSAllocator::reserveUncommitted): 7093 (WTF::OSAllocator::reserveAndCommit): 7094 (WTF::OSAllocator::commit): 7095 7096 2010-12-22 Dan Bernstein <mitz (a] apple.com> 7097 7098 Changed WebKitTools to Tools. 7099 7100 * JavaScriptCore.vcproj/JavaScriptCore.sln: 7101 7102 2010-12-22 Dan Bernstein <mitz (a] apple.com> 7103 7104 Rubber-stamped by Mark Rowe. 7105 7106 Changed WebKitTools to Tools in script build phases. 7107 7108 * JavaScriptCore.xcodeproj/project.pbxproj: 7109 7110 2010-12-22 Andrei Popescu <andreip (a] google.com> 7111 7112 Unreviewed build fix. 7113 7114 Fix Chromium Linux shared library build. 7115 [Chromium] r74431 broke the Chromium Linux shared library build 7116 https://bugs.webkit.org/show_bug.cgi?id=51462 7117 7118 * JavaScriptCore.gyp/JavaScriptCore.gyp: 7119 * JavaScriptCore.gypi: 7120 7121 2010-12-21 Sheriff Bot <webkit.review.bot (a] gmail.com> 7122 7123 Unreviewed, rolling out r74462. 7124 http://trac.webkit.org/changeset/74462 7125 https://bugs.webkit.org/show_bug.cgi?id=51449 7126 7127 broke chromium win (Requested by tonyg-cr on #webkit). 7128 7129 * JavaScriptCore.gypi: 7130 7131 2010-12-21 Tony Gentilcore <tonyg (a] chromium.org> 7132 7133 Unreviewed build fix. 7134 7135 [chromium] Build fix after r74431 7136 https://bugs.webkit.org/show_bug.cgi?id=51447 7137 7138 * JavaScriptCore.gypi: 7139 7140 2010-12-21 Gavin Barraclough <barraclough (a] apple.com> 7141 7142 Windows build fix. 7143 7144 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: 7145 7146 2010-12-21 Gavin Barraclough <barraclough (a] apple.com> 7147 7148 Windows build fix. 7149 7150 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: 7151 7152 2010-12-21 Gavin Barraclough <barraclough (a] apple.com> 7153 7154 Speculative build fix. 7155 7156 * jit/ExecutableAllocator.cpp: 7157 (JSC::ExecutableAllocator::underMemoryPressure): 7158 7159 2010-12-21 Gavin Barraclough <barraclough (a] apple.com> 7160 7161 Reviewed by Oliver Hunt. 7162 7163 Bug 26276 - Need a mechanism to determine stack extent 7164 7165 This patch adds accurate stack size calculation for: 7166 DARWIN, QNX, UNIX 7167 We still need to fix: 7168 WINDOWS, SOLARIS, OPENBSD, SYMBIAN, HAIKU, WINCE 7169 7170 * wtf/StackBounds.cpp: 7171 (WTF::StackBounds::initialize): 7172 7173 2010-12-21 Gavin Barraclough <barraclough (a] apple.com> 7174 7175 Reviewed by Geoff Garen. 7176 7177 <rdar://problem/8765333> CRASH running out of executable memory, loading io9.com 7178 https://bugs.webkit.org/show_bug.cgi?id=51443 7179 7180 The problem here is that each page uses a reasonable amount of memory, (~4Mb), 7181 and that when miultiple pages are open we keep all JIT code for all functions 7182 in all pages alive. 7183 7184 Add a check to detect high memory pressure situations in the executable allocator 7185 (>50% of available memory allocated), and upon a top level entry into JSC (no code 7186 running on the stack) in this situation throw away all JIT code. 7187 7188 * JavaScriptCore.exp: 7189 * debugger/Debugger.cpp: 7190 (JSC::Debugger::recompileAllJSFunctions): stop passing exec to recompile. 7191 * jit/ExecutableAllocator.h: 7192 * jit/ExecutableAllocatorFixedVMPool.cpp: 7193 (JSC::ExecutablePool::systemAlloc): Count allocations. 7194 (JSC::ExecutablePool::systemRelease): Count deallocations. 7195 (JSC::ExecutablePool::underMemoryPressure): Check memory pressure. 7196 * jit/ExecutableAllocatorPosix.cpp: 7197 (JSC::ExecutablePool::underMemoryPressure): Stub out; only meaningful with FixedVMPool. 7198 * jit/ExecutableAllocatorWin.cpp: 7199 (JSC::ExecutablePool::underMemoryPressure): Stub out; only meaningful with FixedVMPool. 7200 * runtime/Executable.cpp: 7201 (JSC::FunctionExecutable::recompile): Remove ExecState argument to recompile. 7202 * runtime/Executable.h: 7203 * runtime/JSGlobalData.cpp: 7204 (JSC::JSGlobalData::recompileAllJSFunctions): throws away all JIT code. 7205 * runtime/JSGlobalData.h: 7206 * runtime/JSGlobalObject.h: 7207 (JSC::DynamicGlobalObjectScope::DynamicGlobalObjectScope): add check / call to throw away. 7208 7209 2010-12-21 Gavin Barraclough <barraclough (a] apple.com> 7210 7211 Reviewed by Geoff Garen. 7212 7213 <rdar://problem/8241425> JIT executable memory excessive usage due to regex caching 7214 https://bugs.webkit.org/show_bug.cgi?id=51434 7215 7216 Reduce the amount of memory the RegExpCache can hold on to on iOS. 7217 Currently the RegExpCache can hold 256 RegExp objects. If each falls into a separate 7218 ExecutablePool, with a common size of 16Kb, this means we end up holding onto 4Mb of 7219 memory. Firstly, we can reduce this by simply reducing the size of the cache to 32 7220 entries. Secondly, we can use a separate set of ExecutablePools for JIT code generated 7221 from RegExp objects. This helps in two ways (1) it increases the probability that 7222 RegExps in the cache share the same pool, and (2) it means that a RegExp can't end 7223 up holding on to a large ExecutablePool containing a translation of JS code. 7224 (A RegExp could end up keeping a larger RegExp alive that happened to be sharing the 7225 same pool, but large RegExp patterns are less common). 7226 7227 * runtime/JSGlobalData.h: 7228 * runtime/RegExpCache.h: 7229 * yarr/RegexJIT.cpp: 7230 (JSC::Yarr::RegexGenerator::compile): 7231 7232 2010-12-21 Gavin Barraclough <barraclough (a] apple.com> 7233 7234 Windows build fix. 7235 7236 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: 7237 7238 2010-12-21 Gavin Barraclough <barraclough (a] apple.com> 7239 7240 Eeeep! build fix! 7241 7242 * wtf/OSAllocator.h: 7243 (WTF::OSAllocator::decommitAndRelease): 7244 7245 2010-12-21 Gavin Barraclough <barraclough (a] apple.com> 7246 7247 Ooops, fixed typo in comment. 7248 7249 * wtf/OSAllocator.h: 7250 7251 2010-12-21 Geoffrey Garen <ggaren (a] apple.com> 7252 7253 Reviewed by Gavin Barraclough & Oliver Hunt. 7254 7255 Added PageAllocationAligned, a cross-platform abstraction for memory allocations with arbitrary alignment requirements 7256 https://bugs.webkit.org/show_bug.cgi?id=51359 7257 7258 I think this patch fixes <rdar://problem/8107952> [5.0.1] WER crash in 7259 Heap::allocateBlock (1902752929), and some other leaks and crashes as well. 7260 7261 * Android.mk: 7262 * CMakeLists.txt: 7263 * GNUmakefile.am: 7264 * JavaScriptCore.gypi: 7265 * JavaScriptCore.vcproj/WTF/WTF.vcproj: 7266 * JavaScriptCore.xcodeproj/project.pbxproj: Updated build files. 7267 7268 * runtime/AlignedMemoryAllocator.h: Removed. Supplanted by 7269 PageAllocationAligned. 7270 7271 * runtime/Collector.cpp: 7272 (JSC::Heap::destroy): 7273 (JSC::Heap::allocateBlock): 7274 (JSC::Heap::freeBlock): 7275 (JSC::Heap::addWeakGCHandle): 7276 * runtime/Collector.h: Switched from AlignedMemoryAllocator to 7277 PageAllocationAligned. 7278 7279 * runtime/GCHandle.cpp: 7280 * runtime/GCHandle.h: Ditto. 7281 7282 * wtf/PageAllocation.h: 7283 (WTF::PageAllocation::PageAllocation): Removed aligned memory allocation 7284 functions. Supplanted by PageAllocationAligned. 7285 7286 * wtf/PageAllocationAligned.cpp: Added. 7287 (WTF::PageAllocationAligned::allocate): 7288 (WTF::PageAllocationAligned::deallocate): 7289 * wtf/PageAllocationAligned.h: Added. 7290 (WTF::PageAllocationAligned::PageAllocationAligned): New cross-platform 7291 class for doing aligned memory allocation. This class properly matches 7292 allocation and deallocation library calls, fixing a long-standing bug 7293 in PageAllocation. 7294 7295 * wtf/Platform.h: Removed some defunction VM platform defines. 7296 7297 * wtf/wtf.pri: Updated build files. 7298 7299 2010-12-21 Oliver Hunt <oliver (a] apple.com> 7300 7301 Reviewed by Gavin Barraclough. 7302 7303 ASSERTION FAILED: base->index() == m_codeBlock->argumentsRegister() while loading taobao.com 7304 https://bugs.webkit.org/show_bug.cgi?id=49006 7305 7306 This problem was caused by having a parameter named 'arguments'. 7307 The fix is to treat parameters named 'arguments' as shadowing 7308 the actual arguments property, and so logically turn the function 7309 into one that doesn't "use" arguments. 7310 7311 This required a bit of fiddling in the parser to ensure we correctly 7312 propagate the 'feature' of shadowing is set correctly. 7313 7314 * bytecompiler/BytecodeGenerator.cpp: 7315 (JSC::BytecodeGenerator::createArgumentsIfNecessary): 7316 Change assertion to an early return as we may now reference 7317 a property named 'arguments' without being in a function that 7318 has the ArgumentsFeature 7319 * parser/JSParser.cpp: 7320 (JSC::JSParser::Scope::Scope): 7321 (JSC::JSParser::Scope::declareParameter): 7322 (JSC::JSParser::Scope::shadowsArguments): 7323 (JSC::JSParser::parseProgram): 7324 (JSC::JSParser::parseFormalParameters): 7325 (JSC::JSParser::parseFunctionInfo): 7326 * parser/Nodes.h: 7327 (JSC::ScopeNode::usesArguments): 7328 7329 2010-12-21 Daniel Bates <dbates (a] rim.com> 7330 7331 Reviewed by Eric Seidel and Darin Adler. 7332 7333 Deallocate GregorianDateTime.timeZone (if allocated) when copying so that we don't leak memory. 7334 https://bugs.webkit.org/show_bug.cgi?id=51367 7335 7336 Inspired by a patch by George Staikos. 7337 7338 * wtf/DateMath.cpp: 7339 (JSC::msToGregorianDateTime): Modified to set timeZone to nullptr since timeZone is now 7340 of type OwnPtrArray<char>. 7341 * wtf/DateMath.h: Change timeZone to type OwnArrayPtr<char>; Removed destructor since it is no longer needed. 7342 (JSC::GregorianDateTime::GregorianDateTime): Modified to use OwnPtrArray semantics for timeZone. 7343 (JSC::GregorianDateTime::operator tm): Ditto. 7344 (JSC::GregorianDateTime::copyFrom): Ditto. 7345 7346 2010-12-21 Sheriff Bot <webkit.review.bot (a] gmail.com> 7347 7348 Unreviewed, rolling out r74402. 7349 http://trac.webkit.org/changeset/74402 7350 https://bugs.webkit.org/show_bug.cgi?id=51402 7351 7352 This patch broke the Windows 7 Release Layout Tests (Requested 7353 by jessieberlin on #webkit). 7354 7355 * wtf/StackBounds.cpp: 7356 (WTF::estimateStackBound): 7357 (WTF::StackBounds::initialize): 7358 7359 2010-12-21 Peter Varga <pvarga (a] inf.u-szeged.hu> 7360 7361 Reviewed by Csaba Osztrogonc. 7362 7363 Unify the name of parentheses in YARR: rename parenthesis to 7364 parentheses. 7365 7366 * yarr/RegexCompiler.cpp: 7367 (JSC::Yarr::RegexPatternConstructor::atomParenthesesEnd): 7368 7369 2010-12-21 Laszlo Gombos <laszlo.1.gombos (a] nokia.com> 7370 7371 Reviewed by Andreas Kling. 7372 7373 [Qt] Set BUILDING_QT__ consistently 7374 https://bugs.webkit.org/show_bug.cgi?id=51341 7375 7376 * JavaScriptCore.pri: Remove the definition of BUILDING_QT__ as it 7377 is already defined in WebKit.pri. 7378 7379 2010-12-20 Gavin Barraclough <barraclough (a] apple.com> 7380 7381 Reviewed by Oliver Hunt. 7382 7383 Bug 26276 - Need a mechanism to determine stack extent 7384 7385 This patch adds accurate stack size calculation for: 7386 DARWIN, WINDOWS, QNX, UNIX 7387 We still need to fix: 7388 SOLARIS, OPENBSD, SYMBIAN, HAIKU, WINCE 7389 7390 * wtf/StackBounds.cpp: 7391 (WTF::StackBounds::initialize): 7392 7393 2010-12-20 Gavin Barraclough <barraclough (a] apple.com> 7394 7395 PPC build fix; stop using std::swap on PageAllocation/PageReservation, 7396 this was failing on some compilers since the lack of default construction 7397 for the m_executable/m_writable fields meant the value being swapped may 7398 not have been fully initialized. 7399 7400 * wtf/PageAllocation.h: 7401 (WTF::PageAllocation::deallocate): 7402 * wtf/PageBlock.h: 7403 * wtf/PageReservation.h: 7404 (WTF::PageReservation::deallocate): 7405 7406 2010-12-20 Oliver Hunt <oliver (a] apple.com> 7407 7408 Reviewed by Geoffrey Garen. 7409 7410 |delete name| in strict mode code should be an early error 7411 https://bugs.webkit.org/show_bug.cgi?id=50431 7412 7413 Disallow the |delete IDENTIFIER| production in strict mode, and removed 7414 a bunch of now unnecessary code. 7415 7416 * parser/JSParser.cpp: 7417 (JSC::JSParser::Scope::collectFreeVariables): 7418 (JSC::jsParse): 7419 (JSC::JSParser::parseProgram): 7420 (JSC::JSParser::parseUnaryExpression): 7421 * parser/JSParser.h: 7422 * parser/Parser.cpp: 7423 (JSC::Parser::parse): 7424 * parser/Parser.h: 7425 (JSC::Parser::parse): 7426 7427 2010-12-20 Gavin Barraclough <barraclough (a] apple.com> 7428 7429 Reviewed by Olver Hunt. 7430 7431 Bug 51358 - Should check stack depth rather than using recursion limits in byte compilation 7432 7433 The current implementation of recursion limit checking is not safe on smaller stacks. 7434 Switch to using a common mechanism, shared with the parser, to check recursion limits. 7435 7436 Make bytecompiler use StackBounds. Empirical testing shows emitStrcat to have the largest 7437 footprint on the stack, at just under 1k on x86-64. Given this, the default recursion 7438 check (requiring 4k of available space to recurse) seems reasonable. 7439 7440 * bytecompiler/BytecodeGenerator.cpp: 7441 (JSC::BytecodeGenerator::BytecodeGenerator): 7442 * bytecompiler/BytecodeGenerator.h: 7443 (JSC::BytecodeGenerator::emitNode): 7444 (JSC::BytecodeGenerator::emitNodeInConditionContext): 7445 * bytecompiler/NodesCodegen.cpp: 7446 (JSC::BinaryOpNode::emitStrcat): 7447 7448 2010-12-20 Tony Gentilcore <tonyg (a] chromium.org> 7449 7450 Unreviewed build fix. 7451 7452 Include pthread to fix chromium mac build (broken by r74360) 7453 https://bugs.webkit.org/show_bug.cgi?id=51356 7454 7455 * wtf/StackBounds.cpp: 7456 7457 2010-12-20 Xan Lopez <xlopez (a] igalia.com> 7458 7459 Reviewed by Gustavo Noronha. 7460 7461 * GNUmakefile.am: add missing files. 7462 7463 2010-12-18 Gavin Barraclough <barraclough (a] apple.com> 7464 7465 Reviewed by Oliver Hunt. 7466 7467 Bug 26276 - Need a mechanism to determine stack extent 7468 7469 This patch adds a class 'StackBounds', to hold information about the machine stack. 7470 The implementation of this class broadly adheres to the current implmentation of 7471 stack limit checking, and as such does not solve the problem of determining stack 7472 extent, but gives us a common place to do so. 7473 7474 Currently two mechanism are provided to determine the stack origin (the point the 7475 stack is growing away from). currentThreadStackBase() in Collector provides a 7476 more accurate determination of the stack origin, so use this to calculate 7477 StackBounds::m_origin; WTFThreadData::approximatedStackStart is less accurate, and 7478 as such can be removed. Cache the StackBounds on WTFThreadData such that they 7479 need only be determined once per thread, and for non-API contexts cache this 7480 information in JSGlobalData, to save a thread-specific access. 7481 7482 For the time being retain the estimate of stack size used by JSC's parser 7483 (128 * sizeof(void*) * 1024), with a view to replacing this with something more 7484 accurate in the near future. 7485 7486 * parser/JSParser.cpp: 7487 (JSC::JSParser::canRecurse): 7488 (JSC::JSParser::JSParser): 7489 Change to use StackBounds. 7490 * runtime/Collector.cpp: 7491 (JSC::Heap::registerThread): 7492 (JSC::Heap::markCurrentThreadConservativelyInternal): 7493 Change to use StackBounds, cached on JSGlobalData. 7494 * runtime/JSGlobalData.cpp: 7495 (JSC::JSGlobalData::JSGlobalData): 7496 * runtime/JSGlobalData.h: 7497 (JSC::JSGlobalData::stack): 7498 Add a cached copy of StackBounds. 7499 * wtf/StackBounds.cpp: Copied from JavaScriptCore/runtime/Collector.cpp. 7500 (WTF::estimateStackBound): 7501 (WTF::StackBounds::initialize): 7502 (WTF::getStackMax): 7503 Copy code from Collector.cpp to determine stack origin. 7504 * wtf/StackBounds.h: Added. 7505 (WTF::StackBounds::StackBounds): 7506 No argument constructor; returns a null StackBounds. 7507 (WTF::StackBounds::currentThreadStackBounds): 7508 Returns a StackBounds object representing the stack limits 7509 of the current thread. 7510 (WTF::StackBounds::origin): 7511 Returns to stack origin (the point the stack is growing away 7512 from; the highest extent of the stack on machines where the 7513 stack grows downwards. 7514 (WTF::StackBounds::recursionLimit): 7515 Returns a limit value that is 'a comfortable distance from 7516 the end of the stack'. Our concept of this is currently 1 page 7517 away from the end, however the default value may be tuned in 7518 the future, and clients may override passing a larger delta; 7519 should only be called on StackBounds object representing the 7520 stack of the thread this method is called on (checked by 7521 checkConsistency). 7522 (WTF::StackBounds::recursionCheck): 7523 Checks whether we are currently 'a comfortable distance from 7524 the end of the stack'. Our concept of this is currently 1 page 7525 away from the end, however the default value may be tuned in 7526 the future, and clients may override passing a larger delta 7527 to apply when checking, if they wish to do so. This method 7528 should only be called on StackBounds object representing the 7529 stack of the thread this method is called on (checked by 7530 checkConsistency). 7531 (WTF::StackBounds::current): 7532 Approximate current stack position. On machines where the stack 7533 is growing downwards this is the lowest address that might need 7534 conservative collection. 7535 (WTF::StackBounds::isGrowingDownward): 7536 True for all platforms other than WINCE, which has to check. 7537 (WTF::StackBounds::checkConsistency): 7538 This is called in methods that shoulds only be operating on a 7539 valid set of bounds; as such we expect m_origin != m_bounds 7540 (i.e. stack size != zero) - we're really testing that this 7541 object is not null (the constructor initializes both fields 7542 to zero). Also checks that current() is within the stack's 7543 bounds. 7544 * wtf/WTFThreadData.cpp: 7545 (WTF::WTFThreadData::WTFThreadData): 7546 * wtf/WTFThreadData.h: 7547 (WTF::WTFThreadData::stack): 7548 Add the StackBounds member variable. 7549 7550 2010-12-17 Geoffrey Garen <ggaren (a] apple.com> 7551 7552 Reviewed by Sam Weinig. 7553 7554 Factored common page set management into a new PageBlock base class 7555 https://bugs.webkit.org/show_bug.cgi?id=51285 7556 7557 * Android.mk: 7558 * CMakeLists.txt: 7559 * GNUmakefile.am: 7560 * JavaScriptCore.gypi: 7561 * JavaScriptCore.vcproj/WTF/WTF.vcproj: 7562 * JavaScriptCore.xcodeproj/project.pbxproj: 7563 * interpreter/RegisterFile.h: 7564 (JSC::RegisterFile::RegisterFile): 7565 * jit/ExecutableAllocator.cpp: 7566 (JSC::ExecutableAllocator::intializePageSize): 7567 * wtf/PageAllocation.cpp: Removed. 7568 * wtf/PageAllocation.h: 7569 (WTF::PageAllocation::deallocate): 7570 (WTF::PageAllocation::PageAllocation): 7571 * wtf/PageReservation.h: 7572 (WTF::PageReservation::commit): 7573 (WTF::PageReservation::decommit): 7574 (WTF::PageReservation::deallocate): 7575 (WTF::PageReservation::PageReservation): 7576 * wtf/wtf.pri: 7577 7578 2010-12-17 Michael Saboff <msaboff (a] apple.com> 7579 7580 Reviewed by Oliver Hunt. 7581 7582 RegExp Jit'ed expression crashes clicking link on yelp.com 7583 https://bugs.webkit.org/show_bug.cgi?id=51284 7584 7585 When transitioning between an non-repeating beginning of line 7586 anchored expression and the remaining refactored repeating 7587 expression, we should not clear any residual datalabel in 7588 state's m_backtrack. It will be resolved and cleared in subsequent 7589 code when linkAlternativeBacktracks() is called for the repeating 7590 alternative(s). 7591 7592 * yarr/RegexJIT.cpp: 7593 (JSC::Yarr::RegexGenerator::BacktrackDestination::clear): 7594 (JSC::Yarr::RegexGenerator::TermGenerationState::clearBacktrack): 7595 7596 2010-12-17 Dan Bernstein <mitz (a] apple.com> 7597 7598 Rubber-stamped by Mark Rowe. 7599 7600 Updated for the renaming of WebKitTools to Tools 7601 7602 * JavaScriptCore.vcproj/JavaScriptCore/build-generated-files.sh: 7603 7604 2010-12-17 Ariya Hidayat <ariya (a] sencha.com> 7605 7606 Reviewed by Oliver Hunt. 7607 7608 [JSC] parseAssignmentExpression should use TreeBuilder::CreatesAST 7609 https://bugs.webkit.org/show_bug.cgi?id=51268 7610 7611 * parser/JSParser.cpp: 7612 (JSC::JSParser::parseAssignmentExpression): 7613 7614 2010-12-17 Geoffrey Garen <ggaren (a] apple.com> 7615 7616 Reviewed by Oliver Hunt. 7617 7618 Removed RChunk from PageAllocation/PageReservation, since it's now unused. 7619 https://bugs.webkit.org/show_bug.cgi?id=51276 7620 7621 * wtf/PageAllocation.h: 7622 (WTF::PageAllocation::PageAllocation): 7623 * wtf/PageReservation.h: 7624 (WTF::PageReservation::PageReservation): 7625 7626 2010-12-17 Oliver Hunt <oliver (a] apple.com> 7627 7628 Reviewed by Gavin Barraclough. 7629 7630 Incorrect encoding of some constants in ARMv7 JIT 7631 https://bugs.webkit.org/show_bug.cgi?id=51273 7632 <rdar://problem/8650210> 7633 7634 When using immediate encoding 3 we need to write the byte 7635 that holds a duplicated value. 7636 7637 * assembler/ARMv7Assembler.h: 7638 (JSC::ARMThumbImmediate::makeEncodedImm): 7639 7640 2010-12-16 Evan Martin <evan (a] chromium.org> 7641 7642 Reviewed by Darin Fisher. 7643 7644 [chromium] useless warnings when building on Windows 7645 https://bugs.webkit.org/show_bug.cgi?id=50985 7646 7647 Disable some compiler warnings that aren't indicative of real problems. 7648 7649 * JavaScriptCore.gyp/JavaScriptCore.gyp: 7650 7651 2010-12-16 Pratik Solanki <psolanki (a] apple.com> 7652 7653 Reviewed by Geoffrey Garen. 7654 7655 https://bugs.webkit.org/show_bug.cgi?id=51166 7656 ExecutableAllocator::cacheFlush should call sys_cache_control 7657 7658 * jit/ExecutableAllocator.h: 7659 (JSC::ExecutableAllocator::cacheFlush): Use the more correct and forward looking API - 7660 sys_cache_control(kCacheFunctionPrepareForExecution,...). 7661 7662 2010-12-16 Ariya Hidayat <ariya (a] sencha.com> 7663 7664 Reviewed by Andreas Kling. 7665 7666 [JSC] Const correctness in ASTBuilder and SyntaxChecker 7667 https://bugs.webkit.org/show_bug.cgi?id=51141 7668 7669 * parser/ASTBuilder.h: 7670 (JSC::ASTBuilder::getName): 7671 (JSC::ASTBuilder::getType): 7672 (JSC::ASTBuilder::isResolve): 7673 * parser/SyntaxChecker.h: 7674 (JSC::SyntaxChecker::operatorStackPop): 7675 7676 2010-12-15 Kenneth Russell <kbr (a] google.com> 7677 7678 Reviewed by James Robinson. 7679 7680 Web Audio API: port FFTFrame to MKL 7681 https://bugs.webkit.org/show_bug.cgi?id=50986 7682 7683 Fixed bug in log2 emulation function provided for Windows port of 7684 Web Audio API. 7685 7686 * wtf/MathExtras.h: 7687 (log2): 7688 7689 2010-12-14 Mark Rowe <mrowe (a] apple.com> 7690 7691 Reviewed by Sam Weinig. 7692 7693 <http://webkit.org/b/51064> Reproducible crash inside WebCore::MediaPlayerPrivateQTKit::createQTMovie when loading <video> 7694 7695 * wtf/text/WTFString.h: Prevent String from being implicitly convertable to bool. 7696 It was previously implicitly convertible to bool on Mac via operator NSString*, 7697 but since that always has a non-zero return value it would give unexpected results. 7698 7699 2010-12-14 Laszlo Gombos <laszlo.1.gombos (a] nokia.com> 7700 7701 Reviewed by Eric Seidel. 7702 7703 [Qt] [Symbian] Do not use pkg-config on Symbian as it is not supported 7704 https://bugs.webkit.org/show_bug.cgi?id=50231 7705 7706 Guard CONFIG+=link_pkgconfig with !symbian. 7707 7708 * jsc.pro: 7709 7710 2010-12-14 Cameron Zwarich <zwarich (a] apple.com> 7711 7712 Not reviewed. 7713 7714 Revert accidental change disabling the JIT for most platforms. 7715 7716 * wtf/Platform.h: 7717 7718 2010-12-13 Cameron Zwarich <zwarich (a] apple.com> 7719 7720 Reviewed by Eric Seidel. 7721 7722 Clang fails to build the JSC interpreter 7723 https://bugs.webkit.org/show_bug.cgi?id=51016 7724 7725 Clang does not allow indirect gotos out of scopes with cleanup. GCC 4.2 allows 7726 them, but it does not correctly generate the cleanup, causing a leak if the 7727 cleanup decrements a reference count. 7728 7729 * interpreter/Interpreter.cpp: 7730 (JSC::Interpreter::privateExecute): Put an Identifier into its own scope. 7731 7732 2010-12-14 Carlos Garcia Campos <cgarcia (a] igalia.com> 7733 7734 Reviewed by Martin Robinson. 7735 7736 [GTK] Simplify context-menu handling code 7737 https://bugs.webkit.org/show_bug.cgi?id=49658 7738 7739 * wtf/PlatformRefPtr.h: Add leakRef() 7740 7741 2010-12-13 Cameron Zwarich <zwarich (a] apple.com> 7742 7743 Reviewed by Gavin Barraclough. 7744 7745 JavaScriptCore should not use "asm volatile" outside of a function 7746 https://bugs.webkit.org/show_bug.cgi?id=50991 7747 7748 * jit/JITStubs.cpp: Remove the volatile keyword from asm statements. 7749 7750 2010-12-13 Steve Falkenburg <sfalken (a] apple.com> 7751 7752 Windows production build fix. 7753 Try copying ICU 4.6 in addition to 4.4 and 4.2. 7754 7755 * JavaScriptCore.vcproj/jsc/jscPostBuild.cmd: 7756 7757 2010-12-13 Michael Saboff <msaboff (a] apple.com> 7758 7759 Reviewed by Oliver Hunt. 7760 7761 REGRESSION: mobileme mail viewing is broken 7762 https://bugs.webkit.org/show_bug.cgi?id=50884 7763 7764 Fixed problem where simple parenthesis (those without capture and 7765 with a fixed count) where not propagating backtrack to labels for 7766 nested parentheses. Also added the nesting level for the parentheses 7767 state created in that case as well. 7768 7769 * yarr/RegexJIT.cpp: 7770 (JSC::Yarr::RegexGenerator::BacktrackDestination::copyBacktrackToLabel): 7771 (JSC::Yarr::RegexGenerator::TermGenerationState::isLastTerm): 7772 (JSC::Yarr::RegexGenerator::ParenthesesTail::generateCode): 7773 (JSC::Yarr::RegexGenerator::generateParenthesesSingle): 7774 7775 2010-12-13 Peter Varga <pvarga (a] inf.u-szeged.hu> 7776 7777 Reviewed by Gavin Barraclough. 7778 7779 Reduce the size of the RegexStackSpaceForBackTrackInfoParentheses in YARR 7780 https://bugs.webkit.org/show_bug.cgi?id=49385 7781 7782 Remove the BackTrackInfoParentheses struct prevBegin and prevEnd members. 7783 7784 * yarr/RegexInterpreter.cpp: 7785 (JSC::Yarr::Interpreter::matchParentheses): 7786 (JSC::Yarr::Interpreter::backtrackParentheses): 7787 * yarr/RegexPattern.h: 7788 7789 2010-12-10 Michael Saboff <msaboff (a] apple.com> 7790 7791 Reviewed by Gavin Barraclough. 7792 7793 REGRESSION Hang inside Yarr::RegexCodeBlock::execute when visiting 7794 bugs.webkit.org 7795 https://bugs.webkit.org/show_bug.cgi?id=50816 7796 7797 First nested parentheses of the second or greater alternative 7798 where backtracking to the prior parentheses. Changed the default 7799 handling of initial parentheses for all alternatives to go back 7800 to the immediate outer paren. 7801 7802 * yarr/RegexJIT.cpp: 7803 (JSC::Yarr::RegexGenerator::GenerationState::addParenthesesTail): 7804 (JSC::Yarr::RegexGenerator::TermGenerationState::TermGenerationState): 7805 (JSC::Yarr::RegexGenerator::TermGenerationState::isLastTerm): 7806 (JSC::Yarr::RegexGenerator::TermGenerationState::getTermIndex): 7807 (JSC::Yarr::RegexGenerator::TermGenerationState::setParenthesesTail): 7808 (JSC::Yarr::RegexGenerator::TermGenerationState::getParenthesesTail): 7809 (JSC::Yarr::RegexGenerator::ParenthesesTail::ParenthesesTail): 7810 (JSC::Yarr::RegexGenerator::ParenthesesTail::processBacktracks): 7811 (JSC::Yarr::RegexGenerator::ParenthesesTail::generateCode): 7812 (JSC::Yarr::RegexGenerator::generateParenthesesSingle): 7813 7814 2010-12-11 Patrick Gansterer <paroga (a] webkit.org> 7815 7816 Reviewed by Darin Adler. 7817 7818 Add an overload to makeString for Vector<char> 7819 https://bugs.webkit.org/show_bug.cgi?id=50123 7820 7821 Also cleanup StringTypeAdapter. 7822 7823 * wtf/text/StringConcatenate.h: 7824 7825 2010-12-10 Siddharth Mathur <siddharth.mathur (a] nokia.com> 7826 7827 Reviewed by Eric Seidel. 7828 7829 [Qt] Build fix for Symbian: don't compile POSIX memory management implementation 7830 https://bugs.webkit.org/show_bug.cgi?id=50707 7831 7832 * wtf/wtf.pri: 7833 7834 2010-12-10 Steve Falkenburg <sfalken (a] apple.com> 7835 7836 Windows production build fix. 7837 7838 Don't stop if react-to-vsprops-changes.py exits with an error, 7839 since this will occur in production builds. 7840 7841 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreGenerated.make: 7842 7843 2010-12-10 Brian Weinstein <bweinstein (a] apple.com> 7844 7845 Reviewed by Adam Roben. 7846 7847 Turn on USE(CROSS_PLATFORM_CONTEXT_MENUS) for Windows. 7848 7849 * wtf/Platform.h: 7850 7851 2010-12-10 Martin Robinson <mrobinson (a] igalia.com> 7852 7853 Unreviewed, rolling out r73703. 7854 http://trac.webkit.org/changeset/73703 7855 https://bugs.webkit.org/show_bug.cgi?id=49658 7856 7857 This patch is causing crashes on the GTK+ bots. 7858 7859 * wtf/PlatformRefPtr.h: 7860 7861 2010-12-10 Patrick Gansterer <paroga (a] webkit.org> 7862 7863 Reviewed by Eric Seidel. 7864 7865 Cleanup StringWx.cpp 7866 https://bugs.webkit.org/show_bug.cgi?id=50525 7867 7868 Use StringImpl::createUninitialized to avoid memcpy and fix style issues. 7869 7870 * wtf/wx/StringWx.cpp: 7871 (WTF::String::String): 7872 7873 2010-12-10 Carlos Garcia Campos <cgarcia (a] igalia.com> 7874 7875 Reviewed by Martin Robinson. 7876 7877 [GTK] Simplify context-menu handling code 7878 https://bugs.webkit.org/show_bug.cgi?id=49658 7879 7880 * wtf/PlatformRefPtr.h: 7881 7882 2010-12-09 Michael Saboff <msaboff (a] apple.com> 7883 7884 Reviewed by Gavin Barraclough. 7885 7886 REGRESSION (r73065?): A regex no longer works 7887 https://bugs.webkit.org/show_bug.cgi?id=50570 7888 7889 Changed the handling of adjacent parentheses backtracks in two ways. 7890 First, only outer most paren backtracks default to back tracking 7891 to the "next character" looping code. Second, added a jump around 7892 backtracks that fall through to the next backtrack where the 7893 second backtrack has some greedy processing before the backtracking 7894 from outside the parentheses code. 7895 Also cleaned up extraneous white spce, removing white space at the 7896 end of or that makes up a whole line. 7897 7898 * yarr/RegexJIT.cpp: 7899 (JSC::Yarr::RegexGenerator::GenerationState::GenerationState): 7900 (JSC::Yarr::RegexGenerator::GenerationState::incrementParenNestingLevel): 7901 (JSC::Yarr::RegexGenerator::GenerationState::decrementParenNestingLevel): 7902 (JSC::Yarr::RegexGenerator::GenerationState::addParenthesesTail): 7903 (JSC::Yarr::RegexGenerator::GenerationState::emitParenthesesTail): 7904 (JSC::Yarr::RegexGenerator::ParenthesesTail::ParenthesesTail): 7905 (JSC::Yarr::RegexGenerator::ParenthesesTail::setNextIteration): 7906 (JSC::Yarr::RegexGenerator::ParenthesesTail::generateCode): 7907 (JSC::Yarr::RegexGenerator::generateParenthesesSingle): 7908 7909 2010-12-09 Michael Saboff <msaboff (a] apple.com> 7910 7911 Reviewed by Geoffrey Garen. 7912 7913 Addressed the "FIXME" issues in array sort for toString() methods that 7914 mutate the array in either size or contents. The change is to mark 7915 the temporary array contents so that they are not garbage collected 7916 and to make sure the array is large enough to hold the contents 7917 of the sorted temporary vector. 7918 https://bugs.webkit.org/show_bug.cgi?id=50718 7919 7920 * runtime/Collector.cpp: 7921 (JSC::Heap::addTempSortVector): 7922 (JSC::Heap::removeTempSortVector): 7923 (JSC::Heap::markTempSortVectors): 7924 (JSC::Heap::markRoots): 7925 * runtime/Collector.h: 7926 * runtime/JSArray.cpp: 7927 (JSC::JSArray::sort): 7928 * runtime/JSValue.h: 7929 7930 2010-12-09 Michael Saboff <msaboff (a] apple.com> 7931 7932 Reviewed by Darin Adler. 7933 7934 Changed setting of backtrack labels to not overwrite a prior 7935 label. Where losing prior labe which then reverted back to 7936 next character label. 7937 https://bugs.webkit.org/show_bug.cgi?id=50579 7938 7939 * yarr/RegexJIT.cpp: 7940 (JSC::Yarr::RegexGenerator::BacktrackDestination::setBacktrackToLabel): 7941 7942 2010-12-08 Gavin Barraclough <barraclough (a] apple.com> 7943 7944 Reviewed by Sam Weinig. 7945 7946 Permit Character Class Escape in CharacterRange in Character Class. 7947 https://bugs.webkit.org/show_bug.cgi?id=50483 7948 https://bugs.webkit.org/show_bug.cgi?id=50538 7949 https://bugs.webkit.org/show_bug.cgi?id=50654 7950 https://bugs.webkit.org/show_bug.cgi?id=50646 7951 7952 We recently tightened up our spec conformance in generating syntax 7953 error in these cases, however testing in the wild has shown this 7954 to be problematic. This reverts the previous change in allowing 7955 class escapes (e.g. \d) in ranges in character classes ([]), but 7956 does retain some closer conformance to the spec in only allowing 7957 ranges that would be permitted per the grammar rules in the spec 7958 (e.g. in /[\d-a-z]/ "a-z" cannot be considered as a range). 7959 7960 * yarr/RegexParser.h: 7961 (JSC::Yarr::Parser::CharacterClassParserDelegate::atomPatternCharacter): 7962 (JSC::Yarr::Parser::CharacterClassParserDelegate::atomBuiltInCharacterClass): 7963 (JSC::Yarr::Parser::parse): 7964 7965 2010-12-08 Geoffrey Garen <ggaren (a] apple.com> 7966 7967 Reviewed by Sam Weinig. 7968 7969 Try to fix crash-on-launch seen on Windows builder. 7970 7971 * wtf/OSAllocatorWin.cpp: 7972 (WTF::OSAllocator::release): Disabled an ASSERT, because it checks for 7973 a bug that hasn't been fixed yet. 7974 7975 2010-12-08 Geoffrey Garen <ggaren (a] apple.com> 7976 7977 Try to fix Windows build. 7978 7979 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: Updated .def file. 7980 7981 2010-12-08 Geoffrey Garen <ggaren (a] apple.com> 7982 7983 Try to fix Windows build. 7984 7985 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: Updated .def 7986 file to remove a symbol -- the next build failure will say which symbol 7987 to add back. 7988 7989 2010-12-08 Geoffrey Garen <ggaren (a] apple.com> 7990 7991 Try to fix Windows build. 7992 7993 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: Updated .def file. 7994 7995 2010-12-08 Geoffrey Garen <ggaren (a] apple.com> 7996 7997 Try to fix GTK Linux build. 7998 7999 * jit/ExecutableAllocator.cpp: 8000 (JSC::ExecutablePool::systemAlloc): 8001 * runtime/AlignedMemoryAllocator.h: 8002 (JSC::::AlignedMemoryAllocator): Updated for Usage enum moving to OSAllocator. 8003 8004 2010-12-07 Geoffrey Garen <ggaren (a] apple.com> 8005 8006 Reviewed by Sam Weinig. 8007 8008 Migrated OS-specific allocation code from PageReservation and PageAllocation to OSAllocator 8009 https://bugs.webkit.org/show_bug.cgi?id=50653 8010 8011 * JavaScriptCore.exp: Updated for new function signature. 8012 8013 * interpreter/RegisterFile.h: 8014 (JSC::RegisterFile::RegisterFile): 8015 (JSC::RegisterFile::grow): 8016 * jit/ExecutableAllocatorFixedVMPool.cpp: 8017 (JSC::FixedVMPoolAllocator::reuse): 8018 (JSC::FixedVMPoolAllocator::FixedVMPoolAllocator): Removed checkAllocatedOkay. 8019 OSAllocator is now the central location for verifying that allocation succeeds. 8020 This allowed me to remove some complicating cross-platform cruft. 8021 8022 * runtime/AlignedMemoryAllocator.h: 8023 (JSC::::allocate): Updated for code motion. 8024 8025 * wtf/OSAllocator.h: Added Usage, writable, and executable parameters, to 8026 support VM features required by clients of PageAllocation and PageReservation. 8027 8028 * wtf/OSAllocatorPosix.cpp: 8029 (WTF::OSAllocator::reserve): 8030 (WTF::OSAllocator::reserveAndCommit): 8031 (WTF::OSAllocator::commit): Moved PageAllocation support for randomizing 8032 executable memory here. 8033 8034 * wtf/OSAllocatorSymbian.cpp: 8035 (WTF::OSAllocator::reserve): 8036 (WTF::OSAllocator::reserveAndCommit): 8037 (WTF::OSAllocator::commit): Updated for new function signatures. 8038 8039 * wtf/OSAllocatorWin.cpp: 8040 (WTF::protection): 8041 (WTF::OSAllocator::reserve): 8042 (WTF::OSAllocator::reserveAndCommit): 8043 (WTF::OSAllocator::commit): 8044 (WTF::OSAllocator::release): Updated for new function signatures. Moved 8045 some protection-related and WINCE-related code from PageAllocation here. 8046 8047 * wtf/PageAllocation.cpp: Nixed cross-platform lastError abstraction, since 8048 it was only used by checkAllocatedOkay, which is now gone. 8049 8050 * wtf/PageAllocation.h: 8051 (WTF::PageAllocation::allocate): 8052 (WTF::PageAllocation::allocateAligned): 8053 (WTF::PageAllocation::deallocate): 8054 (WTF::PageAllocation::isPowerOfTwo): 8055 (WTF::PageAllocation::systemAllocateAligned): Removed system* functions, 8056 and replaced calls to them with calls to OSAllocator. 8057 8058 * wtf/PageReservation.h: 8059 (WTF::PageReservation::commit): 8060 (WTF::PageReservation::decommit): 8061 (WTF::PageReservation::reserve): 8062 (WTF::PageReservation::deallocate): 8063 (WTF::PageReservation::PageReservation): Ditto. Added m_writable and 8064 m_executable because these flags are now required when committing memory. 8065 8066 2010-12-08 Chris Rogers <crogers (a] google.com> 8067 8068 Reviewed by Kenneth Russell. 8069 8070 Add web audio files to mac port Xcode projects 8071 https://bugs.webkit.org/show_bug.cgi?id=50721 8072 8073 * JavaScriptCore.xcodeproj/project.pbxproj: 8074 8075 2010-12-08 Oliver Hunt <oliver (a] apple.com> 8076 8077 Reviewed by Gavin Barraclough. 8078 8079 Marking the active global object re-enters through markConservatively 8080 https://bugs.webkit.org/show_bug.cgi?id=50711 8081 8082 draining of the MarkStack is not allowed to be re-entrant, we got away 8083 with this simply due to the logic in MarkStack::drain implicitly handling 8084 changes that could be triggered by the re-entry. 8085 8086 Just to be safe this patch removes the re-entry through markConservatively 8087 so we don't accidentally introduce such an issue in future. I've also 8088 added an assertion to catch such errors. 8089 8090 * runtime/Collector.cpp: 8091 (JSC::Heap::markConservatively): 8092 (JSC::Heap::markCurrentThreadConservativelyInternal): 8093 (JSC::Heap::markOtherThreadConservatively): 8094 * runtime/JSArray.h: 8095 (JSC::MarkStack::drain): 8096 * runtime/MarkStack.h: 8097 (JSC::MarkStack::MarkStack): 8098 8099 2010-12-08 Chris Marrin <cmarrin (a] apple.com> 8100 8101 Reviewed by Simon Fraser. 8102 8103 Share code between Mac (CA) and Windows (CACF) GraphicsLayer implementations 8104 https://bugs.webkit.org/show_bug.cgi?id=49388 8105 8106 Added a WTF_PLATFORM_CA flag. Set when platform is MAC or IOS or (WINDOWS AND CG) 8107 which was decided was the best way to identify a build with CoreAnimation 8108 8109 * wtf/Platform.h: 8110 8111 2010-12-07 Anders Carlsson <andersca (a] apple.com> 8112 8113 Build fix follow up build fix. 8114 8115 * pcre/pcre_ucp_searchfuncs.cpp: 8116 (jsc_pcre_ucp_othercase): 8117 8118 2010-12-07 Anders Carlsson <andersca (a] apple.com> 8119 8120 Reviewed by Darin Adler. 8121 8122 Fix clang++ build 8123 https://bugs.webkit.org/show_bug.cgi?id=50645 8124 8125 Explicitly cast offset to int. 8126 8127 * pcre/pcre_ucp_searchfuncs.cpp: 8128 (jsc_pcre_ucp_othercase): 8129 8130 2010-12-07 Kenneth Russell <kbr (a] google.com> 8131 8132 Reviewed by David Levin. 8133 8134 Fix compilation of core web audio files on Windows 8135 https://bugs.webkit.org/show_bug.cgi?id=50603 8136 8137 Added log2 definition to MathExtras.h on Windows platform. 8138 8139 * wtf/MathExtras.h: 8140 (log2): 8141 8142 2010-12-07 Antti Koivisto <antti (a] apple.com> 8143 8144 Reviewed by Gavin Barraclough. 8145 8146 https://bugs.webkit.org/show_bug.cgi?id=50412 8147 http://www.wunderground.com/US/CA/Hayward.html causes big memory spike during page loading 8148 8149 Creating a substring caused the original string be flattened if it was in the rope form. This could use 8150 significant amount of memory by reducing buffer sharing between strings. 8151 8152 Add a rope specific substring function that constructs the substring by reusing the rope fibers 8153 instead of flattening the rope. 8154 8155 No change observed in SunSpider. 8156 8157 * runtime/JSString.cpp: 8158 (JSC::JSString::substringFromRope): 8159 * runtime/JSString.h: 8160 (JSC::jsSubstring): 8161 * runtime/StringPrototype.cpp: 8162 (JSC::stringProtoFuncSubstr): 8163 (JSC::stringProtoFuncSubstring): 8164 8165 2010-12-06 Geoffrey Garen <ggaren (a] apple.com> 8166 8167 Reviewed by Gavin Barraclough. 8168 8169 Simplified some ASLR-related code in PageAllocation/Reservation 8170 https://bugs.webkit.org/show_bug.cgi?id=50599 8171 8172 Removed reserveAt, allocateAt, and friends, since they all existed to 8173 serve one feature: ASLR for executable memory on x86_64 on Mac. Moved 8174 ASLR code down into systemAllocate -- now, any time you allocate 8175 executable memory on a supporting platform, the memory's location is 8176 randomized. 8177 8178 * jit/ExecutableAllocatorFixedVMPool.cpp: 8179 (JSC::FixedVMPoolAllocator::FixedVMPoolAllocator): No need for the caller 8180 to randomize anything. 8181 8182 * wtf/PageAllocation.h: 8183 (WTF::PageAllocation::systemAllocate): Removed some *At() functions, and 8184 beefed up executable allocation with randomization. 8185 8186 * wtf/PageReservation.h: 8187 (WTF::PageReservation::systemReserve): Removed some *At() functions. 8188 8189 2010-12-06 Geoffrey Garen <ggaren (a] apple.com> 8190 8191 Reviewed by Maciej Stachowiak. 8192 8193 reserveAndCommit doesn't commit on MADVISE_FREE_REUSE systems 8194 https://bugs.webkit.org/show_bug.cgi?id=50588 8195 8196 * wtf/OSAllocatorPosix.cpp: 8197 (WTF::OSAllocator::reserve): 8198 (WTF::OSAllocator::reserveAndCommit): 8199 (WTF::OSAllocator::commit): Tightened up some comments. Changed 8200 reserveAndCommit to actually commit on MADVISE_FREE_REUSE systems. 8201 8202 2010-12-06 Patrick Gansterer <paroga (a] webkit.org> 8203 8204 Reviewed by Andreas Kling. 8205 8206 [WINCE] Add build system 8207 https://bugs.webkit.org/show_bug.cgi?id=50522 8208 8209 * CMakeListsWinCE.txt: Added. 8210 * shell/CMakeListsWinCE.txt: Added. 8211 * wtf/CMakeListsWinCE.txt: Added. 8212 8213 2010-12-06 John Tantalo <john.tantalo (a] gmail.com> 8214 8215 Reviewed by Geoffrey Garen. 8216 8217 jsc does not ignore shebang 8218 https://bugs.webkit.org/show_bug.cgi?id=49576 8219 8220 * jsc.cpp: 8221 (fillBufferWithContentsOfFile): 8222 - translate shebang into a valid JavaScript comment so the lexer ignores it 8223 8224 2010-12-05 Adam Roben <aroben (a] apple.com> 8225 8226 Windows production build fix 8227 8228 Put spaces after trailing backslashes when setting 8229 %WebKitVSPropsRedirectionDir%. According to MSDN 8230 <http://msdn.microsoft.com/en-us/library/2kzfk8c7(v=VS.80).aspx>: 8231 8232 A backslash ( \ ) followed by a newline character is interpreted as 8233 a space in the command; use a backslash at the end of a line to 8234 continue a command onto the next line. NMAKE interprets the 8235 backslash literally if any other character, including a space or 8236 tab, follows the backslash. 8237 8238 * JavaScriptCore.vcproj/JavaScriptCore.make: 8239 8240 2010-12-04 Patrick Gansterer <paroga (a] webkit.org> 8241 8242 Unreviewed, build fix after r69132. 8243 8244 * shell/CMakeLists.txt: Fix directory name (jsc -> shell). 8245 8246 2010-12-04 Xan Lopez <xlopez (a] igalia.com> 8247 8248 Reviewed by Martin Robinson. 8249 8250 [GTK] Drop GdkDrawable usage, it's deprecated in GTK+3.x and we can use GdkWindow 8251 https://bugs.webkit.org/show_bug.cgi?id=50451 8252 8253 * wtf/gobject/GTypedefs.h: add GdkWindow defines. 8254 8255 2010-12-03 Gavin Barraclough <barraclough (a] apple.com> 8256 8257 Rubber stamped by Oliver Hunt. 8258 8259 Bug 50509 - set* methods on MacroAssembler are awfully named. 8260 8261 Methods set32 and setTest32 compare 32-bit operands, and set a 32-bit results based on the comparison. 8262 set8 compares 32-bit operands, and sets an 8-bit result based on the comparison. 8263 setTest8 compares 8-bit operands, and sets a 32-bit result based on the comparison. 8264 8265 Rename to clarify. 8266 8267 set32 -> set32Compare32 8268 setTest32 -> set32Test32 8269 set8 -> set8Compare32 8270 setTest8 -> set32Test8 8271 8272 * assembler/MacroAssembler.h: 8273 (JSC::MacroAssembler::setPtr): 8274 * assembler/MacroAssemblerARM.h: 8275 (JSC::MacroAssemblerARM::set32Compare32): 8276 (JSC::MacroAssemblerARM::set8Compare32): 8277 (JSC::MacroAssemblerARM::set32Test32): 8278 (JSC::MacroAssemblerARM::set32Test8): 8279 * assembler/MacroAssemblerARMv7.h: 8280 (JSC::MacroAssemblerARMv7::set32Compare32): 8281 (JSC::MacroAssemblerARMv7::set8Compare32): 8282 (JSC::MacroAssemblerARMv7::set32Test32): 8283 (JSC::MacroAssemblerARMv7::set32Test8): 8284 * assembler/MacroAssemblerMIPS.h: 8285 (JSC::MacroAssemblerMIPS::set8Compare32): 8286 (JSC::MacroAssemblerMIPS::set32Compare32): 8287 (JSC::MacroAssemblerMIPS::set32Test8): 8288 (JSC::MacroAssemblerMIPS::set32Test32): 8289 * assembler/MacroAssemblerX86Common.h: 8290 (JSC::MacroAssemblerX86Common::set8Compare32): 8291 (JSC::MacroAssemblerX86Common::set32Compare32): 8292 (JSC::MacroAssemblerX86Common::set32Test8): 8293 (JSC::MacroAssemblerX86Common::set32Test32): 8294 * jit/JITOpcodes.cpp: 8295 (JSC::JIT::emit_op_eq): 8296 (JSC::JIT::emit_op_neq): 8297 (JSC::JIT::compileOpStrictEq): 8298 (JSC::JIT::emit_op_eq_null): 8299 (JSC::JIT::emit_op_neq_null): 8300 * jit/JITOpcodes32_64.cpp: 8301 (JSC::JIT::emit_op_eq): 8302 (JSC::JIT::emit_op_neq): 8303 (JSC::JIT::compileOpStrictEq): 8304 (JSC::JIT::emit_op_eq_null): 8305 (JSC::JIT::emit_op_neq_null): 8306 8307 2010-12-03 Oliver Hunt <oliver (a] apple.com> 8308 8309 Reviewed by Geoff Garen. 8310 8311 Incorrect logic for returning memory at the end of linking. 8312 Reviewed by Geoff Garen. 8313 8314 At the end of linking we return any space at the end of the 8315 allocated executable region that was saved due to branch 8316 compaction. This is currently by done by subtracting the 8317 different from the m_freePtr in the allocation pool. This 8318 can be incorrect if your allocation was made from a new 8319 page that was not selected for subsequent allocations. 8320 8321 This patch corrects this behaviour by verifying that the 8322 memory being returned actually comes from the current 8323 allocation pool. 8324 8325 * assembler/LinkBuffer.h: 8326 (JSC::LinkBuffer::linkCode): 8327 * jit/ExecutableAllocator.h: 8328 (JSC::ExecutablePool::tryShrink): 8329 8330 2010-12-03 Michael Saboff <msaboff (a] apple.com> 8331 8332 Reviewed by Gavin Barraclough 8333 8334 Changes to significantly reduce branches to branches in JIT'ed 8335 parentheses backtrack processing. The changes include the following: 8336 - Taking the backtracking processing out of line and adding it as 8337 code at the end of the JIT'ed routine. 8338 - Allow backtracks to be direct via an indirect branch for an address 8339 pushed onto the stack. If the use of an indirect branch is from a 8340 conditional jump, then we emit a trampoline at the end of the 8341 routine. 8342 - Propogate backtracks instead of adding trampolines. Backtracks are 8343 propogated to where they are used. This change also eliminated 8344 trampoline branch code that aren't used. 8345 - Added global expression state to keep track of parentheses tail 8346 code and indirect branches. 8347 Other changes made to support these changes. 8348 - Split invertOrCapture flag on Patterns to two separate flags. Added 8349 getters for these flags. Rippled these changes to both the JIT 8350 and interpreter code. 8351 - Split BacktrackDestination out off TermGenerationState struct. 8352 This is done to hold references to a backtrack for later code 8353 generation. 8354 https://bugs.webkit.org/show_bug.cgi?id=50295 8355 8356 * assembler/ARMAssembler.h: 8357 (JSC::ARMAssembler::JmpDst::isSet): 8358 * assembler/ARMv7Assembler.h: 8359 (JSC::ARMv7Assembler::JmpDst::isSet): 8360 * assembler/AbstractMacroAssembler.h: 8361 (JSC::AbstractMacroAssembler::Label::isSet): 8362 (JSC::AbstractMacroAssembler::DataLabelPtr::isUsed): 8363 (JSC::AbstractMacroAssembler::DataLabelPtr::used): 8364 (JSC::AbstractMacroAssembler::JumpList::clear): 8365 * assembler/MIPSAssembler.h: 8366 (JSC::MIPSAssembler::JmpDst::isSet): 8367 * assembler/X86Assembler.h: 8368 (JSC::X86Assembler::JmpDst::isSet): 8369 * yarr/RegexCompiler.cpp: 8370 (JSC::Yarr::RegexPatternConstructor::atomParenthesesSubpatternBegin): 8371 (JSC::Yarr::RegexPatternConstructor::atomParentheticalAssertionBegin): 8372 (JSC::Yarr::RegexPatternConstructor::atomBackReference): 8373 (JSC::Yarr::RegexPatternConstructor::setupAlternativeBeginTerms): 8374 * yarr/RegexInterpreter.cpp: 8375 (JSC::Yarr::ByteCompiler::atomParenthesesOnceBegin): 8376 (JSC::Yarr::ByteCompiler::atomParenthesesTerminalBegin): 8377 (JSC::Yarr::ByteCompiler::atomParenthesesSubpatternBegin): 8378 (JSC::Yarr::ByteCompiler::atomParentheticalAssertionBegin): 8379 (JSC::Yarr::ByteCompiler::atomParentheticalAssertionEnd): 8380 (JSC::Yarr::ByteCompiler::atomParenthesesSubpatternEnd): 8381 (JSC::Yarr::ByteCompiler::atomParenthesesOnceEnd): 8382 (JSC::Yarr::ByteCompiler::atomParenthesesTerminalEnd): 8383 (JSC::Yarr::ByteCompiler::emitDisjunction): 8384 * yarr/RegexInterpreter.h: 8385 (JSC::Yarr::ByteTerm::ByteTerm): 8386 (JSC::Yarr::ByteTerm::BackReference): 8387 (JSC::Yarr::ByteTerm::invert): 8388 (JSC::Yarr::ByteTerm::capture): 8389 * yarr/RegexJIT.cpp: 8390 (JSC::Yarr::RegexGenerator::IndirectJumpEntry::IndirectJumpEntry): 8391 (JSC::Yarr::RegexGenerator::IndirectJumpEntry::addJump): 8392 (JSC::Yarr::RegexGenerator::GenerationState::GenerationState): 8393 (JSC::Yarr::RegexGenerator::GenerationState::addIndirectJumpEntry): 8394 (JSC::Yarr::RegexGenerator::GenerationState::emitIndirectJumpTable): 8395 (JSC::Yarr::RegexGenerator::GenerationState::addParenthesesTail): 8396 (JSC::Yarr::RegexGenerator::GenerationState::emitParenthesesTail): 8397 (JSC::Yarr::RegexGenerator::GenerationState::addJumpToNextInteration): 8398 (JSC::Yarr::RegexGenerator::GenerationState::addJumpsToNextInteration): 8399 (JSC::Yarr::RegexGenerator::GenerationState::addDataLabelToNextIteration): 8400 (JSC::Yarr::RegexGenerator::GenerationState::linkToNextIteration): 8401 (JSC::Yarr::RegexGenerator::BacktrackDestination::BacktrackDestination): 8402 (JSC::Yarr::RegexGenerator::BacktrackDestination::clear): 8403 (JSC::Yarr::RegexGenerator::BacktrackDestination::clearDataLabel): 8404 (JSC::Yarr::RegexGenerator::BacktrackDestination::haveDestination): 8405 (JSC::Yarr::RegexGenerator::BacktrackDestination::isStackOffset): 8406 (JSC::Yarr::RegexGenerator::BacktrackDestination::isLabel): 8407 (JSC::Yarr::RegexGenerator::BacktrackDestination::isJumpList): 8408 (JSC::Yarr::RegexGenerator::BacktrackDestination::haveDataLabel): 8409 (JSC::Yarr::RegexGenerator::BacktrackDestination::copyTarget): 8410 (JSC::Yarr::RegexGenerator::BacktrackDestination::copyTo): 8411 (JSC::Yarr::RegexGenerator::BacktrackDestination::addBacktrackJump): 8412 (JSC::Yarr::RegexGenerator::BacktrackDestination::setStackOffset): 8413 (JSC::Yarr::RegexGenerator::BacktrackDestination::setLabel): 8414 (JSC::Yarr::RegexGenerator::BacktrackDestination::setNextBacktrackLabel): 8415 (JSC::Yarr::RegexGenerator::BacktrackDestination::setBacktrackToLabel): 8416 (JSC::Yarr::RegexGenerator::BacktrackDestination::setBacktrackJumpList): 8417 (JSC::Yarr::RegexGenerator::BacktrackDestination::setBacktrackSourceLabel): 8418 (JSC::Yarr::RegexGenerator::BacktrackDestination::setDataLabel): 8419 (JSC::Yarr::RegexGenerator::BacktrackDestination::setSubDataLabelPtr): 8420 (JSC::Yarr::RegexGenerator::BacktrackDestination::linkToNextBacktrack): 8421 (JSC::Yarr::RegexGenerator::BacktrackDestination::getStackOffset): 8422 (JSC::Yarr::RegexGenerator::BacktrackDestination::getLabel): 8423 (JSC::Yarr::RegexGenerator::BacktrackDestination::getBacktrackJumps): 8424 (JSC::Yarr::RegexGenerator::BacktrackDestination::getDataLabel): 8425 (JSC::Yarr::RegexGenerator::BacktrackDestination::jumpToBacktrack): 8426 (JSC::Yarr::RegexGenerator::BacktrackDestination::linkDataLabelToHereIfExists): 8427 (JSC::Yarr::RegexGenerator::BacktrackDestination::plantJumpToBacktrackIfExists): 8428 (JSC::Yarr::RegexGenerator::BacktrackDestination::linkAlternativeBacktracks): 8429 (JSC::Yarr::RegexGenerator::BacktrackDestination::linkAlternativeBacktracksTo): 8430 (JSC::Yarr::RegexGenerator::TermGenerationState::TermGenerationState): 8431 (JSC::Yarr::RegexGenerator::TermGenerationState::resetAlternative): 8432 (JSC::Yarr::RegexGenerator::TermGenerationState::isLastAlternative): 8433 (JSC::Yarr::RegexGenerator::TermGenerationState::clearBacktrack): 8434 (JSC::Yarr::RegexGenerator::TermGenerationState::jumpToBacktrack): 8435 (JSC::Yarr::RegexGenerator::TermGenerationState::plantJumpToBacktrackIfExists): 8436 (JSC::Yarr::RegexGenerator::TermGenerationState::linkDataLabelToBacktrackIfExists): 8437 (JSC::Yarr::RegexGenerator::TermGenerationState::addBacktrackJump): 8438 (JSC::Yarr::RegexGenerator::TermGenerationState::setDataLabelPtr): 8439 (JSC::Yarr::RegexGenerator::TermGenerationState::setBackTrackStackOffset): 8440 (JSC::Yarr::RegexGenerator::TermGenerationState::setBacktrackLabel): 8441 (JSC::Yarr::RegexGenerator::TermGenerationState::linkAlternativeBacktracks): 8442 (JSC::Yarr::RegexGenerator::TermGenerationState::linkAlternativeBacktracksTo): 8443 (JSC::Yarr::RegexGenerator::TermGenerationState::setBacktrackLink): 8444 (JSC::Yarr::RegexGenerator::TermGenerationState::chainBacktracks): 8445 (JSC::Yarr::RegexGenerator::TermGenerationState::chainBacktrackJumps): 8446 (JSC::Yarr::RegexGenerator::TermGenerationState::getBacktrackDestination): 8447 (JSC::Yarr::RegexGenerator::TermGenerationState::propagateBacktrackingFrom): 8448 (JSC::Yarr::RegexGenerator::ParenthesesTail::ParenthesesTail): 8449 (JSC::Yarr::RegexGenerator::ParenthesesTail::processBacktracks): 8450 (JSC::Yarr::RegexGenerator::ParenthesesTail::setNextIteration): 8451 (JSC::Yarr::RegexGenerator::ParenthesesTail::generateCode): 8452 (JSC::Yarr::RegexGenerator::generateAssertionBOL): 8453 (JSC::Yarr::RegexGenerator::generateAssertionEOL): 8454 (JSC::Yarr::RegexGenerator::generateAssertionWordBoundary): 8455 (JSC::Yarr::RegexGenerator::generatePatternCharacterSingle): 8456 (JSC::Yarr::RegexGenerator::generatePatternCharacterPair): 8457 (JSC::Yarr::RegexGenerator::generatePatternCharacterFixed): 8458 (JSC::Yarr::RegexGenerator::generatePatternCharacterGreedy): 8459 (JSC::Yarr::RegexGenerator::generatePatternCharacterNonGreedy): 8460 (JSC::Yarr::RegexGenerator::generateCharacterClassSingle): 8461 (JSC::Yarr::RegexGenerator::generateCharacterClassFixed): 8462 (JSC::Yarr::RegexGenerator::generateCharacterClassGreedy): 8463 (JSC::Yarr::RegexGenerator::generateCharacterClassNonGreedy): 8464 (JSC::Yarr::RegexGenerator::generateParenthesesDisjunction): 8465 (JSC::Yarr::RegexGenerator::generateParenthesesSingle): 8466 (JSC::Yarr::RegexGenerator::generateParenthesesGreedyNoBacktrack): 8467 (JSC::Yarr::RegexGenerator::generateParentheticalAssertion): 8468 (JSC::Yarr::RegexGenerator::generateDisjunction): 8469 (JSC::Yarr::RegexGenerator::compile): 8470 * yarr/RegexPattern.h: 8471 (JSC::Yarr::PatternTerm::PatternTerm): 8472 (JSC::Yarr::PatternTerm::invert): 8473 (JSC::Yarr::PatternTerm::capture): 8474 8475 2010-12-03 Chris Rogers <crogers (a] google.com> 8476 8477 Reviewed by Kenneth Russell. 8478 8479 First steps to adding web audio files to build systems 8480 https://bugs.webkit.org/show_bug.cgi?id=49952 8481 8482 * wtf/Complex.h: 8483 8484 2010-12-03 Patrick Gansterer <paroga (a] webkit.org> 8485 8486 Reviewed by Andreas Kling. 8487 8488 Move StringWx.cpp into wtf directory 8489 https://bugs.webkit.org/show_bug.cgi?id=50060 8490 8491 * wtf/wx/StringWx.cpp: Renamed from WebCore/platform/text/wx/StringWx.cpp. 8492 (WTF::String::String): 8493 8494 2010-12-03 Patrick Gansterer <paroga (a] webkit.org> 8495 8496 Reviewed by Andreas Kling. 8497 8498 Move StringBrew.cpp into wtf directory 8499 https://bugs.webkit.org/show_bug.cgi?id=50058 8500 8501 * wtf/brew/StringBrew.cpp: Renamed from WebCore/platform/text/brew/StringBrew.cpp. 8502 (WTF::String::String): 8503 8504 2010-12-03 Patrick Gansterer <paroga (a] webkit.org> 8505 8506 Reviewed by Andreas Kling. 8507 8508 Move StringHaiku.cpp into wtf directory 8509 https://bugs.webkit.org/show_bug.cgi?id=50057 8510 8511 * wtf/haiku/StringHaiku.cpp: Renamed from WebCore/platform/text/haiku/StringHaiku.cpp. 8512 (WTF::String::String): 8513 (WTF::String::operator BString): 8514 8515 2010-12-02 Geoffrey Garen <ggaren (a] apple.com> 8516 8517 Try to fix Windows build. 8518 8519 * runtime/GCActivityCallback.cpp: 8520 (JSC::DefaultGCActivityCallback::synchronize): Added a non-CF implementation. 8521 8522 2010-12-02 Geoffrey Garen <ggaren (a] apple.com> 8523 8524 Reviewed by Gavin Barraclough. 8525 8526 Fixed <rdar://problem/8310571> CrashTracer: 60 crashes in Photo Booth at 8527 com.apple.JavaScriptCore: JSC::Heap::markRoots + 746 8528 8529 * API/APIShims.h: 8530 (JSC::APIEntryShimWithoutLock::APIEntryShimWithoutLock): Call our new 8531 synchronize() function. 8532 8533 * runtime/Collector.cpp: 8534 (JSC::Heap::activityCallback): 8535 * runtime/Collector.h: Added an activityCallback() accessor, for the 8536 call above. 8537 8538 * runtime/GCActivityCallback.h: 8539 (JSC::GCActivityCallback::synchronize): 8540 * runtime/GCActivityCallbackCF.cpp: 8541 (JSC::DefaultGCActivityCallback::DefaultGCActivityCallback): 8542 (JSC::DefaultGCActivityCallback::~DefaultGCActivityCallback): 8543 (JSC::DefaultGCActivityCallback::operator()): 8544 (JSC::DefaultGCActivityCallback::synchronize): Track the run loop we're 8545 scheduled in. If we begin/resume execution within a new run loop, reschedule 8546 on it. This prevents a crash when using a lockless context group on 8547 multiple threads -- the crash would happen if the GC timer scheduled on 8548 thread A, then you continued execution on thread B, then the thread A 8549 timer fired. 8550 8551 2010-12-02 Darin Adler <darin (a] apple.com> 8552 8553 * wtf/ASCIICType.h: Fix wrong type from last check-in. 8554 8555 2010-12-02 Darin Adler <darin (a] apple.com> 8556 8557 Try to fix certain builds (Qt Windows). 8558 8559 * wtf/ASCIICType.h: Added an overload for unsigned because in obsolete 8560 versions of ICU, UChar32 can be a typedef for unsigned. Adding this 8561 overload should make us compatible with these old ICUs. 8562 8563 2010-12-02 Patrick Gansterer <paroga (a] webkit.org> 8564 8565 Reviewed by Darin Adler. 8566 8567 Add AtomicString::fromUTF8 8568 https://bugs.webkit.org/show_bug.cgi?id=45594 8569 8570 Unicode::calculateStringHashFromUTF8 creates a StringHash out of UTF8 input data and 8571 calculates the required length for the UTF16 conversation in one step. 8572 This is then used in a specialized translator for the string table of AtomicString. 8573 8574 * JavaScriptCore.exp: 8575 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: 8576 * wtf/text/AtomicString.cpp: 8577 (WTF::CStringTranslator::equal): 8578 (WTF::HashAndUTF8CharactersTranslator::hash): 8579 (WTF::HashAndUTF8CharactersTranslator::equal): 8580 (WTF::HashAndUTF8CharactersTranslator::translate): 8581 (WTF::AtomicString::add): 8582 (WTF::AtomicString::addSlowCase): 8583 (WTF::AtomicString::find): 8584 (WTF::AtomicString::fromUTF8): 8585 * wtf/text/AtomicString.h: 8586 * wtf/text/StringImpl.h: 8587 * wtf/text/WTFString.h: 8588 * wtf/unicode/UTF8.cpp: 8589 (WTF::Unicode::readUTF8Sequence): 8590 (WTF::Unicode::convertUTF8ToUTF16): 8591 (WTF::Unicode::calculateStringHashFromUTF8): 8592 (WTF::Unicode::equalUTF16WithUTF8): 8593 * wtf/unicode/UTF8.h: 8594 8595 2010-12-02 Geoffrey Garen <ggaren (a] apple.com> 8596 8597 Reviewed by Sam Weinig. 8598 8599 Added a little hardening to OSAllocator. 8600 8601 * wtf/OSAllocatorPosix.cpp: 8602 (WTF::OSAllocator::release): 8603 * wtf/OSAllocatorWin.cpp: 8604 (WTF::OSAllocator::reserve): 8605 (WTF::OSAllocator::reserveAndCommit): 8606 (WTF::OSAllocator::commit): 8607 (WTF::OSAllocator::decommit): 8608 (WTF::OSAllocator::release): CRASH() if the OS's virtual memory system 8609 reports an error. 8610 8611 2010-12-02 Csaba Osztrogonc <ossy (a] webkit.org> 8612 8613 Reviewed by Geoffrey Garen. 8614 8615 [Qt] Make platform managing of OSAllocator better than r73106 8616 https://bugs.webkit.org/show_bug.cgi?id=50385 8617 8618 * wtf/OSAllocatorPosix.cpp: Remove platform specific guard. 8619 * wtf/OSAllocatorSymbian.cpp: Remove platform specific guard. 8620 * wtf/OSAllocatorWin.cpp: Remove platform specific guard. 8621 * wtf/wtf.pri: Add the correct platform specific source file instead of all of them. 8622 8623 2010-12-02 Patrick Gansterer <paroga (a] webkit.org> 8624 8625 Reviewed by Andreas Kling. 8626 8627 [WINCE] Use GetTickCount() for srand() 8628 https://bugs.webkit.org/show_bug.cgi?id=50338 8629 8630 time() is not a native function on WinCE, so use GetTickCount() instead. 8631 8632 * wtf/RandomNumberSeed.h: 8633 (WTF::initializeRandomNumberGenerator): 8634 8635 2010-12-02 Norbert Leser <norbert.leser (a] nokia.com> 8636 8637 Reviewed by Laszlo Gombos. 8638 8639 [Qt] [Symbian] Reintroduce compiler optimizations for JSC 8640 https://bugs.webkit.org/show_bug.cgi?id=50270 8641 8642 Add compiler optimization (symbian ARM target) which was lost after split from WebCore. 8643 Tested via Sunspider and V8 - both of which show significant performance improvement. 8644 8645 * JavaScriptCore.pro: 8646 8647 2010-12-02 Peter Varga <pvarga (a] inf.u-szeged.hu> 8648 8649 Reviewed by Gavin Barraclough. 8650 8651 Move regex parsing and fallback handling to runtime/RegExp.cpp 8652 https://bugs.webkit.org/show_bug.cgi?id=50015 8653 8654 * runtime/RegExp.cpp: 8655 (JSC::RegExp::RegExp): 8656 (JSC::RegExp::create): 8657 (JSC::RegExp::compile): 8658 (JSC::RegExp::match): 8659 (JSC::RegExp::printTraceData): 8660 * runtime/RegExp.h: 8661 (JSC::RegExp::pattern): 8662 * yarr/RegexInterpreter.cpp: 8663 * yarr/RegexInterpreter.h: 8664 * yarr/RegexJIT.cpp: 8665 (JSC::Yarr::RegexGenerator::compile): 8666 (JSC::Yarr::jitCompileRegex): 8667 * yarr/RegexJIT.h: 8668 (JSC::Yarr::RegexCodeBlock::RegexCodeBlock): 8669 (JSC::Yarr::RegexCodeBlock::setFallBack): 8670 (JSC::Yarr::RegexCodeBlock::isFallBack): 8671 (JSC::Yarr::executeRegex): 8672 8673 2010-12-01 Geoffrey Garen <ggaren (a] apple.com> 8674 8675 Try to fix the GTK build. 8676 8677 * GNUmakefile.am: Use a full path to OSAllocator*.cpp. 8678 8679 2010-12-01 Geoffrey Garen <ggaren (a] apple.com> 8680 8681 Try to fix the EFL Linux build. 8682 8683 * CMakeListsEfl.txt: Added OSAllocator to the project. 8684 8685 2010-12-01 Geoffrey Garen <ggaren (a] apple.com> 8686 8687 Try to fix the Qt build: Include all OS files for Qt's sake, and then 8688 use #ifdefs in the files to exclude things based on OS. 8689 8690 This is a pretty bad way to manage platforms -- hopefully we can 8691 fix the Qt build system and move away from this in the future. 8692 8693 * wtf/OSAllocatorPosix.cpp: 8694 * wtf/OSAllocatorSymbian.cpp: 8695 * wtf/OSAllocatorWin.cpp: 8696 * wtf/wtf.pri: 8697 8698 2010-12-01 Geoffrey Garen <ggaren (a] apple.com> 8699 8700 Try to fix the Chromium build. 8701 8702 * JavaScriptCore.gypi: This is a Windows build file, so use OSAllocatorWin.cpp. 8703 8704 2010-12-01 Geoffrey Garen <ggaren (a] apple.com> 8705 8706 Try to fix the GTK build. 8707 8708 * GNUmakefile.am: Added OSAllocator to another project. 8709 8710 2010-12-01 Geoffrey Garen <ggaren (a] apple.com> 8711 8712 Try to fix the GTK Linux build. 8713 8714 * JavaScriptCore.gypi: Added OSAllocator to the project. 8715 8716 2010-12-01 Geoffrey Garen <ggaren (a] apple.com> 8717 8718 Try to fix the Qt Linux build. 8719 8720 * wtf/OSAllocatorPosix.cpp: Use the right errno.h. 8721 8722 2010-12-01 Geoffrey Garen <ggaren (a] apple.com> 8723 8724 Try to fix Windows build: export some more symbols. 8725 8726 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: 8727 8728 2010-12-01 Geoffrey Garen <ggaren (a] apple.com> 8729 8730 Try to fix the Qt Linux build. 8731 8732 * wtf/wtf.pri: Use the POSIX OSAllocator for Qt Linux. 8733 8734 2010-12-01 Geoffrey Garen <ggaren (a] apple.com> 8735 8736 Windows build fix: commit doesn't have a return value. 8737 8738 * wtf/OSAllocatorWin.cpp: 8739 (WTF::OSAllocator::commit): 8740 8741 2010-12-01 Geoffrey Garen <ggaren (a] apple.com> 8742 8743 Build fix: Export some symbols. 8744 8745 * JavaScriptCore.exp: 8746 8747 2010-12-01 Geoffrey Garen <ggaren (a] apple.com> 8748 8749 Build fix. 8750 8751 * JavaScriptCore.xcodeproj/project.pbxproj: Export OSAllocator.h as private 8752 so other projects can see it. 8753 8754 * wtf/OSAllocatorPosix.cpp: #include UnusedParam.h for UNUSED_PARAM. 8755 8756 2010-12-01 Geoffrey Garen <ggaren (a] apple.com> 8757 8758 Reviewed by Sam Weinig. 8759 8760 Baby step toward a cross-platform virtual memory abstraction: created 8761 an all-static OSAllocator class and changed MarkStack to use it. 8762 8763 * JavaScriptCore.exp: These functions are inlined now. 8764 8765 * JavaScriptCore.vcproj/WTF/WTF.vcproj: Added OSAllocatorWin.cpp. 8766 8767 * JavaScriptCore.xcodeproj/project.pbxproj: Added OSAllocatorPosix.cpp. 8768 8769 * runtime/MarkStack.h: 8770 (JSC::MarkStack::allocateStack): 8771 (JSC::MarkStack::releaseStack): Use OSAllocator instead of rolling our 8772 own platform-specific code. 8773 8774 * runtime/MarkStackNone.cpp: Removed. Nothing used this. 8775 8776 * runtime/MarkStackPosix.cpp: 8777 * runtime/MarkStackSymbian.cpp: 8778 * runtime/MarkStackWin.cpp: Removed custom platform-specific code, since 8779 we use the OSAllocator abstraction now. 8780 8781 * wtf/OSAllocator.h: Added. 8782 * wtf/OSAllocatorPosix.cpp: Added. 8783 (WTF::OSAllocator::reserve): 8784 (WTF::OSAllocator::reserveAndCommit): 8785 (WTF::OSAllocator::commit): 8786 (WTF::OSAllocator::decommit): 8787 (WTF::OSAllocator::release): 8788 * wtf/OSAllocatorSymbian.cpp: Added. 8789 (WTF::OSAllocator::reserve): 8790 (WTF::OSAllocator::reserveAndCommit): 8791 (WTF::OSAllocator::commit): 8792 (WTF::OSAllocator::decommit): 8793 (WTF::OSAllocator::release): 8794 * wtf/OSAllocatorWin.cpp: Added. 8795 (WTF::OSAllocator::reserve): 8796 (WTF::OSAllocator::reserveAndCommit): 8797 (WTF::OSAllocator::commit): 8798 (WTF::OSAllocator::decommit): 8799 (WTF::OSAllocator::release): The new OSAllocator abstraction. 8800 8801 * wtf/wtf.pri: Added OSAllocatorSymbian.cpp. 8802 8803 2010-12-01 Steve Falkenburg <sfalken (a] apple.com> 8804 8805 Reviewed by Adam Roben. 8806 8807 WinCairo build should not use link-time code generation (LTCG) 8808 https://bugs.webkit.org/show_bug.cgi?id=50353 8809 8810 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: 8811 * JavaScriptCore.vcproj/WTF/WTF.vcproj: 8812 * JavaScriptCore.vcproj/jsc/jsc.vcproj: 8813 * JavaScriptCore.vcproj/testapi/testapi.vcproj: 8814 8815 010-12-01 Steve Falkenburg <sfalken (a] apple.com> 8816 8817 Reviewed by Adam Roben. 8818 8819 vcproj changes can't be applied cleanly by the Windows EWS bot 8820 https://bugs.webkit.org/show_bug.cgi?id=50328 8821 8822 * JavaScriptCore.vcproj/JavaScriptCore.sln: Modified property svn:eol-style. 8823 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: Modified property svn:eol-style. 8824 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreCF.vsprops: Added property svn:eol-style. 8825 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreCFLite.vsprops: Added property svn:eol-style. 8826 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreCommon.vsprops: Added property svn:eol-style. 8827 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreGenerated.vcproj: Modified property svn:eol-style. 8828 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreGeneratedCommon.vsprops: Added property svn:eol-style. 8829 * JavaScriptCore.vcproj/JavaScriptCoreSubmit.sln: Modified property svn:eol-style. 8830 * JavaScriptCore.vcproj/WTF/WTF.vcproj: Modified property svn:eol-style. 8831 * JavaScriptCore.vcproj/WTF/WTFCommon.vsprops: Added property svn:eol-style. 8832 * JavaScriptCore.vcproj/jsc/jsc.vcproj: Modified property svn:eol-style. 8833 * JavaScriptCore.vcproj/jsc/jscCommon.vsprops: Added property svn:eol-style. 8834 * JavaScriptCore.vcproj/testapi/testapi.vcproj: Modified property svn:eol-style. 8835 * JavaScriptCore.vcproj/testapi/testapiCommon.vsprops: Added property svn:eol-style. 8836 8837 2010-12-01 Gavin Barraclough <barraclough (a] apple.com> 8838 8839 Reviewed by Sam Weinig. 8840 8841 Bug 50298 - /()()()()()()()()()(?:(\10a|b)(X|Y))+/.exec("bXXaYYaY") ASSERTs 8842 8843 For unmatched subpattens we previously used to set the subpattern end to -1, 8844 but now we only set the start value. E.g. consider the following: 8845 /a(b)?c/.exec("ac"); 8846 Previously we would generate an internal results array of: 8847 [ 0, 2, -1, -1 ] 8848 Since fairly recently we have generated results of: 8849 [ 0, 2, -1, ??? ] 8850 (With the end index of the subpattern uninitialized). 8851 8852 Update these ASSERTs to account for this. 8853 8854 Also, when stripping out self-referencing backreferences, (e.g. /(\1)/) we 8855 were checking the wrong property on the pattern term. We should have been 8856 looking at term.parentheses.subpatternId, but instead were checking 8857 term.subpatternId. The latter is actually only the subpatternId for 8858 back reference terms. Rename this to backReferenceSubpatternId. 8859 8860 * yarr/RegexInterpreter.cpp: 8861 (JSC::Yarr::Interpreter::matchBackReference): 8862 (JSC::Yarr::Interpreter::backtrackBackReference): 8863 8864 2010-11-30 Gavin Barraclough <barraclough (a] apple.com> 8865 8866 Rubber stamped by Sam Weinig. 8867 8868 Bug 50297 - \s in YARR should match BOMs. 8869 8870 From section 15.10.2.12 CharacterClassEscape contains: 8871 8872 The production CharacterClassEscape :: s evaluates by returning the set of characters containing the 8873 characters that are on the right-hand side of the WhiteSpace (7.2) or LineTerminator (7.3) productions. 8874 8875 Table 2 in section 7.2 contains: 8876 8877 \uFEFF Byte Order Mark <BOM> 8878 8879 * create_regex_tables: 8880 Add BOM to spaces table. 8881 8882 2010-11-30 Gavin Barraclough <barraclough (a] apple.com> 8883 8884 Reviewed by Darin Adler. 8885 8886 Fixed review comments following bug #48101. 8887 Mostly typos, plus gave quantifyInfinite a symbolic name. 8888 8889 * yarr/RegexCompiler.cpp: 8890 (JSC::Yarr::RegexPatternConstructor::quantifyAtom): 8891 (JSC::Yarr::RegexPatternConstructor::checkForTerminalParentheses): 8892 * yarr/RegexInterpreter.cpp: 8893 (JSC::Yarr::Interpreter::backtrackParenthesesOnceEnd): 8894 (JSC::Yarr::Interpreter::matchParenthesesTerminalBegin): 8895 (JSC::Yarr::Interpreter::backtrackParenthesesTerminalBegin): 8896 (JSC::Yarr::Interpreter::backtrackParenthesesTerminalEnd): 8897 * yarr/RegexJIT.cpp: 8898 (JSC::Yarr::RegexGenerator::generatePatternCharacterGreedy): 8899 (JSC::Yarr::RegexGenerator::generatePatternCharacterNonGreedy): 8900 (JSC::Yarr::RegexGenerator::generateCharacterClassGreedy): 8901 * yarr/RegexParser.h: 8902 (JSC::Yarr::Parser::parseTokens): 8903 (JSC::Yarr::parse): 8904 8905 2010-11-30 Steve Falkenburg <sfalken (a] apple.com> 8906 8907 Reviewed by Darin Adler. 8908 8909 WTF project missing build-stopping code from its pre-build event 8910 https://bugs.webkit.org/show_bug.cgi?id=50281 8911 8912 * JavaScriptCore.vcproj/WTF/WTFPreBuild.cmd: 8913 8914 2010-11-30 Patrick Gansterer <paroga (a] webkit.org> 8915 8916 Reviewed by Darin Adler. 8917 8918 Cleanup UTF8.cpp 8919 https://bugs.webkit.org/show_bug.cgi?id=49581 8920 8921 Use macros and functions instead of range values directly. 8922 8923 * wtf/unicode/UTF8.cpp: 8924 (WTF::Unicode::inlineUTF8SequenceLength): 8925 (WTF::Unicode::UTF8SequenceLength): 8926 (WTF::Unicode::convertUTF16ToUTF8): 8927 (WTF::Unicode::readUTF8Sequence): 8928 (WTF::Unicode::convertUTF8ToUTF16): 8929 * wtf/unicode/UnicodeMacrosFromICU.h: Added U_IS_SUPPLEMENTARY macro. 8930 8931 2010-11-30 Geoffrey Garen <ggaren (a] apple.com> 8932 8933 Reviewed by Gavin Barraclough. 8934 8935 Fixed a crash seen when using a PageAllocation to store itself. 8936 8937 * wtf/PageAllocation.h: 8938 (WTF::PageAllocation::systemDeallocate): Zero out m_base before unmapping 8939 it, in case unmapping m_base unmaps the PageAllocation. 8940 8941 * wtf/BumpPointerAllocator.h: 8942 (WTF::BumpPointerPool::destroy): Now this work-around isn't needed! 8943 8944 2010-11-30 Xan Lopez <xlopez (a] igalia.com> 8945 8946 Reviewed by Darin Adler. 8947 8948 m_hasNonEnumerableProperties is never initialized in Structure 8949 https://bugs.webkit.org/show_bug.cgi?id=50266 8950 8951 * runtime/Structure.cpp: 8952 (JSC::Structure::Structure): initialize member variable. 8953 8954 2010-11-29 Steve Falkenburg <sfalken (a] apple.com> 8955 8956 Windows build fix (part 1). Use correct environment variable syntax in cmd files. 8957 8958 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCorePostBuild.cmd: 8959 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCorePreBuild.cmd: 8960 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCorePreLink.cmd: 8961 * JavaScriptCore.vcproj/WTF/WTFPostBuild.cmd: 8962 * JavaScriptCore.vcproj/jsc/jscPostBuild.cmd: 8963 * JavaScriptCore.vcproj/jsc/jscPreBuild.cmd: 8964 * JavaScriptCore.vcproj/jsc/jscPreLink.cmd: 8965 * JavaScriptCore.vcproj/testapi/testapiPostBuild.cmd: 8966 * JavaScriptCore.vcproj/testapi/testapiPreBuild.cmd: 8967 * JavaScriptCore.vcproj/testapi/testapiPreLink.cmd: 8968 8969 2010-11-29 Dan Bernstein <mitz (a] apple.com> 8970 8971 Reviewed by Darin Adler. 8972 8973 WTF support for <rdar://problem/8650085> adding word-prefix search options to the text search API. 8974 https://bugs.webkit.org/show_bug.cgi?id=50038 8975 8976 * wtf/unicode/UnicodeMacrosFromICU.h: Copied additional macros from icu/unicode/utf16.h. 8977 8978 2010-11-29 Steve Falkenburg <sfalken (a] apple.com> 8979 8980 Reviewed by Darin Adler. 8981 8982 JavaScriptCore projects on Windows should use cmd files for build events 8983 https://bugs.webkit.org/show_bug.cgi?id=50193 8984 8985 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreCommon.vsprops: 8986 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCorePostBuild.cmd: Added. 8987 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCorePreBuild.cmd: Added. 8988 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCorePreLink.cmd: Added. 8989 * JavaScriptCore.vcproj/WTF/WTFPostBuild.cmd: Added property svn:eol-style. 8990 * JavaScriptCore.vcproj/WTF/WTFPreBuild.cmd: Added property svn:eol-style. 8991 * JavaScriptCore.vcproj/jsc/jscCommon.vsprops: 8992 * JavaScriptCore.vcproj/jsc/jscPostBuild.cmd: Added. 8993 * JavaScriptCore.vcproj/jsc/jscPreBuild.cmd: Added. 8994 * JavaScriptCore.vcproj/jsc/jscPreLink.cmd: Added. 8995 * JavaScriptCore.vcproj/testapi/testapiCommon.vsprops: 8996 * JavaScriptCore.vcproj/testapi/testapiPostBuild.cmd: Added. 8997 * JavaScriptCore.vcproj/testapi/testapiPreBuild.cmd: Added. 8998 * JavaScriptCore.vcproj/testapi/testapiPreLink.cmd: Added. 8999 9000 2010-11-29 Dai Mikurube <dmikurube (a] google.com> 9001 9002 Reviewed by Kent Tamura. 9003 9004 when empty, clicking "down" on outer-spin-button returns "max value" 9005 https://bugs.webkit.org/show_bug.cgi?id=45491 9006 9007 It is required to calculate UTC/DST offsets to retrieve the current local milliseconds for 9008 date/time type inputs. WTF::currentTimeMS() returns a UTC time, and WTF::getLocalTime() 9009 returns a struct tm, not milliseconds. 9010 9011 Calculating milliseconds from a struct tm is not simple since timegm() cannot be used in all 9012 environments. This calculation is already done in calculateUTCOffset(), and complicated. 9013 Duplicating this complicated calculation is unreasonable because of maintainability. 9014 To achieve this without duplication, we must call calculate{UTC|DST}Offset in some way. 9015 9016 * JavaScriptCore.exp: 9017 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: 9018 * wtf/DateMath.cpp: Changed calculateUTCOffset() and calculateDSTOffset() to external functions. 9019 (WTF::calculateUTCOffset): 9020 (WTF::calculateDSTOffset): 9021 * wtf/DateMath.h: 9022 9023 2010-11-29 Chris Rogers <crogers (a] google.com> 9024 9025 Reviewed by Kenneth Russell. 9026 9027 Switch web audio code to use FloatPoint3D instead of Vector3 9028 https://bugs.webkit.org/show_bug.cgi?id=50186 9029 9030 * wtf/Vector3.h: Removed. 9031 9032 2010-11-29 Steve Falkenburg <sfalken (a] apple.com> 9033 9034 Reviewed by Adam Roben. 9035 9036 Add a mechanism for Windows pre-build/pre-link/post-build events to be separated into individual cmd files 9037 https://bugs.webkit.org/show_bug.cgi?id=49858 9038 9039 We're migrating our prebuild/prelink/postbuild steps out of vcproj and vsprops files: 9040 - To simplify editing (editing vsprops build steps is confusing). 9041 - For more readable diffs. 9042 9043 * JavaScriptCore.vcproj/WTF/WTFCommon.vsprops: 9044 * JavaScriptCore.vcproj/WTF/WTFPostBuild.cmd: Added. 9045 * JavaScriptCore.vcproj/WTF/WTFPreBuild.cmd: Added. 9046 9047 2010-11-29 Geoffrey Garen <ggaren (a] apple.com> 9048 9049 Reviewed by Gavin Barraclough. 9050 9051 Improved accuracy of command-line SunSpider. 9052 9053 * jsc.cpp: 9054 (functionRun): Changed the "run" function to run a given test in 9055 its own global object. Previously, all tests ran in the same global 9056 object, which created name conflicts, and made globals from previous 9057 tests artificially survive into later tests. 9058 9059 Also changed "run" to return the elapsed milliseconds when running a 9060 given test, for slightly more accurate numbers. 9061 9062 (functionCheckSyntax): Ditto on returning elapsed milliseconds. 9063 9064 2010-11-29 Darin Adler <darin (a] apple.com> 9065 9066 Reviewed by Andreas Kling. 9067 9068 Remove a couple unneeded overflow checks 9069 https://bugs.webkit.org/show_bug.cgi?id=49816 9070 9071 * wtf/text/CString.cpp: 9072 (WTF::CString::init): Use an ASSERT instead of 9073 an overflow check with CRASH. 9074 9075 2010-11-29 Adam Roben <aroben (a] apple.com> 9076 9077 Robustify react-to-vsprops-changes.py against changes to its location 9078 or the location of the .vsprops files 9079 9080 Suggested by John Sullivan. 9081 9082 * JavaScriptCore.vcproj/JavaScriptCore/react-to-vsprops-changes.py: 9083 Removed file_modification_times. 9084 (main): Use glob.glob to find the .vsprops files and assert that we found some. 9085 9086 2010-11-29 Adam Roben <aroben (a] apple.com> 9087 9088 Touch wtf/Platform.h whenever any .vsprops file changes 9089 9090 This will cause all files to be recompiled, which will make changes to 9091 preprocessor macros (e.g., ENABLE_*) actually take effect. 9092 9093 Fixes <http://webkit.org/b/50167> Windows build fails when ENABLE_* 9094 macros are changed (because not enough files are rebuilt) 9095 9096 Reviewed by John Sullivan. 9097 9098 * JavaScriptCore.vcproj/JavaScriptCore/react-to-vsprops-changes.py: 9099 (main): Touch wtf/Platform.h if it's older than any .vsprops file. Also 9100 added some comments and logging to make it clearer what the script is 9101 doing and why. 9102 9103 2010-11-29 Adam Roben <aroben (a] apple.com> 9104 9105 Update react-to-vsprops-changes.py after r72555 9106 9107 .vsprops files are no longer accessed relative to $WebKitLibrariesDir. 9108 9109 Fixes <http://webkit.org/b/50166> REGRESSION (r72555): 9110 react-to-vsprops-changes.py no longer works for people with a 9111 non-default $WebKitLibrariesDir 9112 9113 Reviewed by John Sullivan. 9114 9115 * JavaScriptCore.vcproj/JavaScriptCore/react-to-vsprops-changes.py: 9116 (main): Always look in WebKitLibraries/win for .vsprops files, not in 9117 $WebKitLibrariesDir. 9118 9119 2010-11-28 Gavin Barraclough <barraclough (a] apple.com> 9120 9121 Reviewed by Sam Weinig. 9122 9123 Bug 48100 - YARR allows what seems like a bogus character-class range 9124 9125 Per ECMA-262 character classes containing character ranges containing 9126 character classes are invalid, eg: 9127 /[\d-x]/ 9128 /[x-\d]/ 9129 /[\d-\d]/ 9130 These should throw a syntax error. 9131 9132 * yarr/RegexParser.h: 9133 9134 2010-11-27 Gavin Barraclough <barraclough (a] apple.com> 9135 9136 Reviewed by Sam Weinig. 9137 9138 Bug 48101 - Yarr gives different results for /(?:a*?){2,}/ 9139 9140 The test cases in the linked mozilla bug demonstrate a couple of 9141 problems in subpattern matching. These bugs lie in the optimized 9142 cases - for matching parentheses with a quantity count of 1, and 9143 for matching greedy quantified parentheses at the end of a regex 9144 (which do not backtrack). 9145 9146 In both of these cases we are failing to correctly handle empty 9147 matches. In the case of parentheses-single matches (quantity count 9148 one) we are failing to test for empty matches at all. In the case 9149 of terminal subpattern matches we do currently check, however there 9150 is a subtler bug here too. In the case of an empty match we will 9151 presently immediately fall through to the next alternative (or 9152 complete the regex match), whereas upon a failed match we should 9153 be backtracking into the failing alternative, to give it a chance 9154 to match further (e.g. consider /a??b?|a/.exec("ab") - upon first 9155 attempting to match the first alternative this will match the empty 9156 string - since a?? is non-greedy, however rather than moving on to 9157 the second alternative we should be re-matching the first one, at 9158 which point the non-greedy a?? will match, and as such the result 9159 should be "ab", not "a"). 9160 9161 Terminal subpattern matching contains a second bug, too. The frame 9162 location values in the subpattern should be being allocated with 9163 the outer disjunction's frame (as we do for the parentheses-single 9164 optimization). Consider the following three regexes: 9165 /a*(?:b*)*c*/ 9166 /a*(?:b*)c*/ 9167 /a*(?:b*)*/ 9168 Considering only the frame location required by the atoms a,b, and 9169 c, (ignoring space associated with the nested subpattern) the first 9170 regex (a normal subpattern match) requires a frame size of 2 for 9171 the outer disjunction, (to backtrack terms a & c), with each 9172 iteration of the subpattern requiring a frame of size 1 (in order 9173 to backtrack b). In the case of the second regex (where the 9174 parentheses-single optimization will kick in) the outer frame must 9175 be set up with a frame size of 3, since the outer frame will also 9176 be used when running the nested subpattern. We will currently only 9177 allocate a farme of size 1 for the outer disjuntion (to contain a), 9178 howver the frame size should be 2 (since the subpattern will be 9179 evaluated in the outer frame). In addition to failing to allocate 9180 frame space the frame offsets are also presently invalid - in the 9181 case of the last regex b's frame location will be set assuming it 9182 to be the first term in the frame, whereas in this case b lies 9183 after the term a, and should be taking a separate frame location. 9184 9185 In order to correctly allocate the frame for terminal subpattern 9186 matches we must move this optimization back up from the JIT into 9187 the compiler (and thus interpreter too), since this is where the 9188 frame allocation takes place. 9189 9190 * yarr/RegexCompiler.cpp: 9191 (JSC::Yarr::RegexPatternConstructor::setupAlternativeOffsets): 9192 (JSC::Yarr::RegexPatternConstructor::checkForTerminalParentheses): 9193 (JSC::Yarr::compileRegex): 9194 * yarr/RegexInterpreter.cpp: 9195 (JSC::Yarr::Interpreter::matchParenthesesOnceBegin): 9196 (JSC::Yarr::Interpreter::matchParenthesesOnceEnd): 9197 (JSC::Yarr::Interpreter::backtrackParenthesesOnceBegin): 9198 (JSC::Yarr::Interpreter::backtrackParenthesesOnceEnd): 9199 (JSC::Yarr::Interpreter::matchParenthesesTerminalBegin): 9200 (JSC::Yarr::Interpreter::matchParenthesesTerminalEnd): 9201 (JSC::Yarr::Interpreter::backtrackParenthesesTerminalBegin): 9202 (JSC::Yarr::Interpreter::backtrackParenthesesTerminalEnd): 9203 (JSC::Yarr::Interpreter::matchDisjunction): 9204 (JSC::Yarr::ByteCompiler::atomParenthesesOnceBegin): 9205 (JSC::Yarr::ByteCompiler::atomParenthesesTerminalBegin): 9206 (JSC::Yarr::ByteCompiler::atomParenthesesSubpatternBegin): 9207 (JSC::Yarr::ByteCompiler::atomParentheticalAssertionEnd): 9208 (JSC::Yarr::ByteCompiler::atomParenthesesSubpatternEnd): 9209 (JSC::Yarr::ByteCompiler::atomParenthesesOnceEnd): 9210 (JSC::Yarr::ByteCompiler::atomParenthesesTerminalEnd): 9211 (JSC::Yarr::ByteCompiler::emitDisjunction): 9212 * yarr/RegexInterpreter.h: 9213 * yarr/RegexJIT.cpp: 9214 (JSC::Yarr::RegexGenerator::generateParenthesesSingle): 9215 (JSC::Yarr::RegexGenerator::generateParenthesesGreedyNoBacktrack): 9216 (JSC::Yarr::RegexGenerator::generateTerm): 9217 * yarr/RegexPattern.h: 9218 (JSC::Yarr::PatternTerm::PatternTerm): 9219 9220 2010-11-24 Patrick Gansterer <paroga (a] webkit.org> 9221 9222 Reviewed by Csaba Osztrogonc. 9223 9224 Remove Bakefile build system files 9225 https://bugs.webkit.org/show_bug.cgi?id=49983 9226 9227 r53757 only removed the content, but not the files. 9228 This patch removes that empty files. 9229 9230 * JavaScriptCoreSources.bkl: Removed. 9231 * jscore.bkl: Removed. 9232 9233 2010-11-24 Gabor Loki <loki (a] webkit.org> 9234 9235 Reviewed by Csaba Osztrogonc. 9236 9237 Merge the usage of jumps and calls at ARM-JIT 9238 https://bugs.webkit.org/show_bug.cgi?id=50008 9239 9240 Those JmpSrc objects which represent jumps (not calls) should point to 9241 after the jump instruction. 9242 9243 * assembler/ARMAssembler.h: 9244 (JSC::ARMAssembler::blx): 9245 (JSC::ARMAssembler::loadBranchTarget): 9246 (JSC::ARMAssembler::getAbsoluteJumpAddress): 9247 (JSC::ARMAssembler::linkJump): 9248 (JSC::ARMAssembler::relinkJump): 9249 (JSC::ARMAssembler::linkCall): 9250 (JSC::ARMAssembler::relinkCall): 9251 (JSC::ARMAssembler::getRelocatedAddress): 9252 (JSC::ARMAssembler::getDifferenceBetweenLabels): 9253 (JSC::ARMAssembler::getCallReturnOffset): 9254 * assembler/MacroAssemblerARM.h: 9255 (JSC::MacroAssemblerARM::call): 9256 9257 2010-11-24 Carlos Garcia Campos <cgarcia (a] igalia.com> 9258 9259 Reviewed by Xan Lopez. 9260 9261 [GTK] Optimize foldCase, toLower and toUpper methods in glib unicode backend 9262 https://bugs.webkit.org/show_bug.cgi?id=48625 9263 9264 GLib methods use UTF-8 strings, so we have to convert from UTF-16 to 9265 UTF-8 to perform the case operations and then convert back the result to 9266 UTF-16. GLib conversion methods return a new allocated string, so we 9267 have to memcpy the result into the destination buffer too. Using our 9268 own methods to convert between UTF-8 and UTF-16 from wtf/unicode/UTF8.h 9269 we don't need such memcpy, since they take an already allocated buffer 9270 rather than returning a new one. There's another optimization for the 9271 case when the destination buffer is not large enough. In that case, 9272 methods should return the expected destination buffer size and are 9273 called again with a new buffer. We can avoid the conversion to UTF-16 by 9274 pre-calculating the required size for the destination buffer. 9275 9276 * wtf/unicode/glib/UnicodeGLib.cpp: 9277 (WTF::Unicode::getUTF16LengthFromUTF8): 9278 (WTF::Unicode::convertCase): 9279 (WTF::Unicode::foldCase): 9280 (WTF::Unicode::toLower): 9281 (WTF::Unicode::toUpper): 9282 9283 2010-11-23 Patrick Gansterer <paroga (a] webkit.org> 9284 9285 Reviewed by Sam Weinig. 9286 9287 Use WTF::StringHasher directly in JavaScriptCore 9288 https://bugs.webkit.org/show_bug.cgi?id=49893 9289 9290 * profiler/CallIdentifier.h: 9291 (JSC::CallIdentifier::Hash::hash): 9292 * runtime/Identifier.cpp: 9293 (JSC::IdentifierCStringTranslator::hash): 9294 (JSC::IdentifierUCharBufferTranslator::hash): 9295 9296 2010-11-22 Patrick Gansterer <paroga (a] webkit.org> 9297 9298 Reviewed by Sam Weinig. 9299 9300 Add WTF::FixedArray::size() 9301 https://bugs.webkit.org/show_bug.cgi?id=49891 9302 9303 Add a method to get the size of a FixedArray. 9304 9305 * wtf/FixedArray.h: 9306 (WTF::FixedArray::size): 9307 9308 2010-11-22 Patrick Gansterer <paroga (a] webkit.org> 9309 9310 Reviewed by Adam Roben. 9311 9312 [WINCE] Set correct preprocessor definitions 9313 https://bugs.webkit.org/show_bug.cgi?id=49887 9314 9315 * wtf/Platform.h: 9316 9317 2010-11-22 Adam Roben <aroben (a] apple.com> 9318 9319 Use paths relative to $WebKitVSPropsRedirectionDir to access shared .vsprops files 9320 9321 Apple's Windows build allows placing header files and import libraries for WebKit's 9322 dependencies (CoreGraphics, CFNetwork, SQLite, etc.) outside the source tree via the 9323 $WebKitLibrariesDir environment variable. This is both required for production builds and 9324 convenient for Apple-internal developer builds. Apple's production builds also require that 9325 WebKit's shared .vsprops files be accessed relative to $WebKitLibrariesDir. In production 9326 builds, the files are copied into that directory tree by the 9327 WebKitLibraries/win/tools/WinTools.make file. In Apple-internal developer builds, the 9328 copying is done by 9329 JavaScriptCore/JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreGenerated.make. 9330 9331 This .vsprops copying is problematic in one very important case: when a developer updates 9332 their source tree and then tries to build. Visual Studio only reads .vsprops files when a 9333 project is first loaded. So, when Visual Studio is first opened after the .vsprops files are 9334 updated, it reads in the old files that were already residing in $WebKitLibrariesDir. When a 9335 build is started, JavaScriptCoreGenerated.make copies the new .vsprops files into 9336 $WebKitLibrariesDir, but Visual Studio will not pick up the changes. The rest of the build 9337 will proceed with out-of-date .vsprops files, which will likely result in a build failure. 9338 9339 To fix this, we now use normal relative paths to access the .vsprops files in the source 9340 tree rather than in $WebKitLibrariesDir, but prefix those paths with a new environment 9341 variable, $WebKitVSPropsRedirectionDir. In developer builds, this environment variable is 9342 unset, so the normal relative paths are used to read the .vsprops files out of the source 9343 tree directly. In production builds, this environment variable is set to a fake directory 9344 that will cause the .vsprops files in $WebKitLibrariesDir to be found when the relative path 9345 is resolved. 9346 9347 For example, JavaScriptCore.vcproj uses this path for FeatureDefines.vsprops: 9348 9349 $(WebKitVSPropsRedirectionDir)..\..\..\WebKitLibraries\win\tools\vsprops\FeatureDefines.vsprops 9350 9351 In developer builds, where $WebKitVSPropsRedirectionDir is unset, this will point to the 9352 files in WebKitLibraries\win\tools\vsprops in the source tree. In production builds, 9353 JavaScriptCore.make sets $WebKitVSPropsRedirectionDir to 9354 "$(SRCROOT)\AppleInternal\tools\vsprops\OpenSource\1\2\3\", so the full path for 9355 FeatureDefines.vsprops becomes: 9356 9357 $(SRCROOT)\AppleInternal\tools\vsprops\OpenSource\1\2\3\..\..\..\WebKitLibraries\win\tools\vsprops\FeatureDefines.vsprops 9358 9359 which resolves to: 9360 9361 $(SRCROOT)\AppleInternal\tools\vsprops\OpenSource\WebKitLibraries\win\tools\vsprops\FeatureDefines.vsprops 9362 9363 (We rely on the fact that Windows doesn't care whether the directories "1", "2", and "3" 9364 actually exist since they are matched by an equal number of ".." path components.) 9365 9366 Note that Visual Studio still won't pick up changes made to .vsprops files while Visual 9367 Studio is open, but that problem hasn't seemed to cause developers many headaches so far. 9368 9369 Fixes <http://webkit.org/b/49181> Windows build fails mysteriously when .vsprops files are 9370 updated 9371 9372 Reviewed by Dave Hyatt. 9373 9374 * JavaScriptCore.vcproj/JavaScriptCore.make: Set $WebKitVSPropsRedirectionDir so that 9375 production builds can find the .vsprops files. 9376 9377 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreGenerated.make: Stopy copying the 9378 .vsprops files. It isn't needed anymore. 9379 9380 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: 9381 * JavaScriptCore.vcproj/WTF/WTF.vcproj: 9382 * JavaScriptCore.vcproj/jsc/jsc.vcproj: 9383 * JavaScriptCore.vcproj/testapi/testapi.vcproj: 9384 Changed to use paths relative to $WebKitVSPropsRedirectionDir to access shared .vsprops 9385 files. 9386 9387 2010-11-19 Peter Varga <pvarga (a] inf.u-szeged.hu> 9388 9389 Reviewed by Gavin Barraclough. 9390 9391 YARR JIT should fallback to YARR Interpreter instead of PCRE. 9392 https://bugs.webkit.org/show_bug.cgi?id=46719 9393 9394 Remove the ENABLE_YARR macro and the option of matching regular 9395 expressions with PCRE from JavaScriptCore. 9396 9397 * runtime/JSGlobalData.h: 9398 * runtime/RegExp.cpp: 9399 (JSC::RegExp::compile): 9400 (JSC::RegExp::match): 9401 * tests/mozilla/expected.html: 9402 * wtf/Platform.h: 9403 * yarr/RegexCompiler.cpp: 9404 * yarr/RegexCompiler.h: 9405 * yarr/RegexInterpreter.cpp: 9406 (JSC::Yarr::byteCompileRegex): 9407 * yarr/RegexInterpreter.h: 9408 * yarr/RegexJIT.cpp: 9409 (JSC::Yarr::jitCompileRegex): 9410 * yarr/RegexJIT.h: 9411 (JSC::Yarr::RegexCodeBlock::RegexCodeBlock): 9412 (JSC::Yarr::RegexCodeBlock::~RegexCodeBlock): 9413 (JSC::Yarr::RegexCodeBlock::getFallback): 9414 (JSC::Yarr::RegexCodeBlock::isFallback): 9415 (JSC::Yarr::RegexCodeBlock::setFallback): 9416 (JSC::Yarr::executeRegex): 9417 * yarr/RegexParser.h: 9418 * yarr/RegexPattern.h: 9419 9420 2010-11-20 Kwang Yul Seo <skyul (a] company100.net> 9421 9422 Reviewed by David Kilzer. 9423 9424 [BREWMP] Replace DBGPRINTF and DBGPRINTF_FATAL with dbg_Message 9425 https://bugs.webkit.org/show_bug.cgi?id=49520 9426 9427 DBGPRINTF and DBGPRINTF_FATAL macros are prohibited in Mod1. Use dbg_Message instead. 9428 9429 * wtf/Assertions.cpp: 9430 * wtf/Assertions.h: 9431 9432 2010-11-20 Gabor Loki <loki (a] webkit.org> 9433 9434 Reviewed by Gavin Barraclough. 9435 9436 Support JIT_OPTIMIZE_MOD on Thumb-2 9437 https://bugs.webkit.org/show_bug.cgi?id=49432 9438 9439 Rewrite the soft modulo operation into macroassembler form, and move it 9440 to JSValue32_64 section. 9441 Add support for soft modulo on Thumb-2 JIT also. 9442 9443 * assembler/ARMv7Assembler.h: 9444 (JSC::ARMv7Assembler::clz): 9445 * assembler/MacroAssemblerARM.h: 9446 (JSC::MacroAssemblerARM::countLeadingZeros32): 9447 (JSC::MacroAssemblerARM::relativeTableJump): 9448 * assembler/MacroAssemblerARMv7.h: 9449 (JSC::MacroAssemblerARMv7::countLeadingZeros32): 9450 (JSC::MacroAssemblerARMv7::relativeTableJump): 9451 * jit/JITArithmetic.cpp: 9452 (JSC::JIT::emit_op_mod): 9453 * jit/JITOpcodes.cpp: 9454 (JSC::JIT::privateCompileCTIMachineTrampolines): 9455 * jit/JITOpcodes32_64.cpp: 9456 (JSC::JIT::softModulo): 9457 * jit/JITStubs.cpp: 9458 (JSC::JITThunks::JITThunks): 9459 * wtf/Platform.h: 9460 9461 2010-11-20 David Kilzer <ddkilzer (a] apple.com> 9462 9463 <http://webkit.org/b/49848> Make it possible to display the last character of a secure text field unobscured 9464 9465 Reviewed by Darin Adler. 9466 9467 * JavaScriptCore.exp: 9468 * wtf/text/StringImpl.cpp: 9469 (WTF::StringImpl::secure): Added argument that controls whether 9470 the last character is obscured or not. Implemented behavior. 9471 * wtf/text/StringImpl.h: 9472 (WTF::StringImpl::LastCharacterBehavior): Added enum. 9473 (WTF::StringImpl::secure): Updated method signature. 9474 9475 2010-11-19 William Chan <willchan (a] chromium.org> 9476 9477 Reviewed by David Levin. 9478 9479 Add USE(CHROMIUM_NET) 9480 9481 Indicates the use of Chromium's network stack. Chromium's network 9482 stack performs better when it has full view of all resource requests, 9483 so USE(CHROMIUM_NET) can be used to bypass throttles. 9484 9485 https://bugs.webkit.org/show_bug.cgi?id=49778 9486 9487 * wtf/Platform.h: 9488 9489 2010-11-19 Steve Falkenburg <sfalken (a] apple.com> 9490 9491 Reviewed by Adam Roben. 9492 9493 Add Debug_Cairo_CFLite and Release_Cairo_CFLite configurations for all vcproj files 9494 https://bugs.webkit.org/show_bug.cgi?id=49819 9495 9496 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: 9497 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreGenerated.vcproj: 9498 * JavaScriptCore.vcproj/WTF/WTF.vcproj: 9499 * JavaScriptCore.vcproj/WTF/WTFCommon.vsprops: 9500 * JavaScriptCore.vcproj/jsc/jsc.vcproj: 9501 * JavaScriptCore.vcproj/testapi/testapi.vcproj: 9502 9503 2010-11-19 Oliver Hunt <oliver (a] apple.com> 9504 9505 Reviewed by Geoffrey Garen. 9506 9507 Don't check for constant registers when we can guarantee that the register won't be in the constant pool 9508 https://bugs.webkit.org/show_bug.cgi?id=49814 9509 9510 Add uncheckedR(int) to CallFrame, and replace all the uses of r() with uncheckedR() 9511 when we can guarantee that the register is not referring to a constant. 9512 This makes the interpreter about 0.5% faster, and makes the CallFrame initialisation 9513 logic correct when we're using a faked callframe (as in the case of the globalExec). 9514 9515 * bytecode/CodeBlock.cpp: 9516 (JSC::CodeBlock::createActivation): 9517 * debugger/DebuggerCallFrame.cpp: 9518 (JSC::DebuggerCallFrame::thisObject): 9519 * interpreter/CallFrame.h: 9520 (JSC::ExecState::uncheckedR): 9521 * interpreter/Interpreter.cpp: 9522 (JSC::Interpreter::resolve): 9523 (JSC::Interpreter::resolveSkip): 9524 (JSC::Interpreter::resolveGlobal): 9525 (JSC::Interpreter::resolveGlobalDynamic): 9526 (JSC::Interpreter::resolveBase): 9527 (JSC::Interpreter::resolveBaseAndProperty): 9528 (JSC::Interpreter::callEval): 9529 (JSC::Interpreter::unwindCallFrame): 9530 (JSC::Interpreter::throwException): 9531 (JSC::Interpreter::execute): 9532 (JSC::Interpreter::executeCall): 9533 (JSC::Interpreter::executeConstruct): 9534 (JSC::Interpreter::prepareForRepeatCall): 9535 (JSC::Interpreter::createExceptionScope): 9536 (JSC::Interpreter::privateExecute): 9537 * jit/JITStubs.cpp: 9538 (JSC::DEFINE_STUB_FUNCTION): 9539 * runtime/JSActivation.cpp: 9540 (JSC::JSActivation::argumentsGetter): 9541 9542 2010-11-19 Steve Falkenburg <sfalken (a] apple.com> 9543 9544 Reviewed by Darin Adler. 9545 9546 Normalize Cairo/CFLite project/solution configuration names 9547 https://bugs.webkit.org/show_bug.cgi?id=49818 9548 9549 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: 9550 * JavaScriptCore.vcproj/jsc/jsc.vcproj: 9551 * JavaScriptCore.vcproj/testapi/testapi.vcproj: 9552 9553 2010-11-18 Steve Falkenburg <sfalken (a] apple.com> 9554 9555 Reviewed by Adam Roben. 9556 9557 Windows vcproj configuration names should be normalized across projects 9558 https://bugs.webkit.org/show_bug.cgi?id=49776 9559 9560 * JavaScriptCore.vcproj/JavaScriptCore.sln: 9561 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreGenerated.vcproj: 9562 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreGeneratedCommon.vsprops: Added. 9563 * JavaScriptCore.vcproj/JavaScriptCoreSubmit.sln: 9564 9565 2010-11-19 Patrick Gansterer <paroga (a] webkit.org> 9566 9567 Unreviewed, build fix after r72360. 9568 9569 * bytecode/CodeBlock.h: 9570 (JSC::CodeBlock::bytecodeOffset): 9571 9572 2010-11-18 Gavin Barraclough <barraclough (a] apple.com> 9573 9574 Rubber stamped by Geoff Garen. 9575 9576 Bug 49577 - Function.prototype should be non-configurable 9577 9578 Ooops, Function.prototype should not be enumerable! 9579 9580 * runtime/JSFunction.cpp: 9581 (JSC::JSFunction::getOwnPropertySlot): 9582 9583 2010-11-18 Gavin Barraclough <barraclough (a] apple.com> 9584 9585 Reviewed by Oliver Hunt. 9586 9587 Bug 49708 - Stop recompiling functions to regenerate exception info. 9588 9589 Instead only hold info as necessary keep divot info is the inspector 9590 is enabled, line number info is debugging or profiling, and handler 9591 info for functions with try/catch. 9592 9593 * bytecode/CodeBlock.cpp: 9594 (JSC::CodeBlock::dumpStatistics): 9595 (JSC::CodeBlock::CodeBlock): 9596 (JSC::CodeBlock::lineNumberForBytecodeOffset): 9597 (JSC::CodeBlock::expressionRangeForBytecodeOffset): 9598 (JSC::CodeBlock::shrinkToFit): 9599 * bytecode/CodeBlock.h: 9600 (JSC::CodeBlock::bytecodeOffset): 9601 (JSC::CodeBlock::addExpressionInfo): 9602 (JSC::CodeBlock::addLineInfo): 9603 (JSC::CodeBlock::hasExpressionInfo): 9604 (JSC::CodeBlock::hasLineInfo): 9605 (JSC::CodeBlock::needsCallReturnIndices): 9606 (JSC::CodeBlock::callReturnIndexVector): 9607 * bytecode/SamplingTool.cpp: 9608 (JSC::SamplingTool::dump): 9609 * bytecompiler/BytecodeGenerator.cpp: 9610 (JSC::BytecodeGenerator::generate): 9611 (JSC::BytecodeGenerator::BytecodeGenerator): 9612 * bytecompiler/BytecodeGenerator.h: 9613 (JSC::BytecodeGenerator::emitNode): 9614 (JSC::BytecodeGenerator::emitNodeInConditionContext): 9615 (JSC::BytecodeGenerator::emitExpressionInfo): 9616 (JSC::BytecodeGenerator::addLineInfo): 9617 * interpreter/Interpreter.cpp: 9618 (JSC::Interpreter::unwindCallFrame): 9619 (JSC::appendSourceToError): 9620 (JSC::Interpreter::throwException): 9621 (JSC::Interpreter::privateExecute): 9622 (JSC::Interpreter::retrieveLastCaller): 9623 * interpreter/Interpreter.h: 9624 * jit/JIT.cpp: 9625 (JSC::JIT::privateCompile): 9626 * jit/JITStubs.cpp: 9627 (JSC::jitThrow): 9628 (JSC::DEFINE_STUB_FUNCTION): 9629 * runtime/Collector.cpp: 9630 (JSC::Heap::markRoots): 9631 * runtime/Executable.cpp: 9632 (JSC::EvalExecutable::compileInternal): 9633 (JSC::ProgramExecutable::compileInternal): 9634 (JSC::FunctionExecutable::compileForCallInternal): 9635 (JSC::FunctionExecutable::compileForConstructInternal): 9636 * runtime/Executable.h: 9637 * runtime/JSGlobalData.cpp: 9638 (JSC::JSGlobalData::JSGlobalData): 9639 * runtime/JSGlobalData.h: 9640 (JSC::JSGlobalData::usingAPI): 9641 * runtime/JSGlobalObject.h: 9642 (JSC::JSGlobalObject::supportsRichSourceInfo): 9643 (JSC::JSGlobalObject::globalData): 9644 9645 2010-11-18 Adam Roben <aroben (a] apple.com> 9646 9647 Add a script to delete manifest-related files when they are older than 9648 any .vsprops file 9649 9650 Changes to .vsprops files can cause the manifest files to become 9651 invalid, and Visual Studio doesn't always figure out that it needs to 9652 rebuild them. 9653 9654 Reviewed by Sam Weinig. 9655 9656 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreGenerated.make: 9657 Call the new script. 9658 9659 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreGenerated.vcproj: 9660 Added the new script. 9661 9662 * JavaScriptCore.vcproj/JavaScriptCore/react-to-vsprops-changes.py: Added. 9663 (file_modification_times): Generator to return the modification time of 9664 each file in a directory hierarchy. 9665 (main): Get the modification time of the newest vsprops file, then find 9666 all manifest-related files in the obj directory. Delete all 9667 manifest-related files that are older than the newest vsprops file. 9668 9669 2010-11-18 Mark Rowe <mrowe (a] apple.com> 9670 9671 Rubber-stamped by Adam Roben. 9672 9673 <rdar://problem/8602509&8602717&8602724> Enable compaction support. 9674 9675 * Configurations/JavaScriptCore.xcconfig: 9676 9677 2010-11-18 Gavin Barraclough <barraclough (a] apple.com> 9678 9679 Reviewed by Oliver Hunt. 9680 9681 Bug 49635 - Profiler implementation is fragile 9682 9683 The profile presently requires the exception handling mechanism to explicitly 9684 remove all stack frames that are exited during the exception unwind mechanism. 9685 This is fragile in a number of ways: 9686 * We have to change bytecode register allocation when compiling code to run 9687 when profiling, to preserve the callee function (this is also required to 9688 call did_call after the call has returned). 9689 * In the JIT we have to maintain additional data structures 9690 (CodeBlock::RareData::m_functionRegisterInfos) to map back to the register 9691 containing the callee. 9692 * In the interpreter we use 'magic values' to offset into the instruction 9693 stream to rediscover the register containing the function. 9694 9695 Instead, move profiling into the head and tail of functions. 9696 * This correctly accounts the cost of the call itself to the caller. 9697 * This allows us to access the callee function object from the callframe. 9698 * This means that at the point a call is made we can track the stack depth 9699 on the ProfileNode. 9700 * When unwinding we can simply report the depth at which the exception is 9701 being handled - all call frames above this level are freed. 9702 9703 * bytecode/CodeBlock.cpp: 9704 (JSC::CodeBlock::shrinkToFit): 9705 * bytecode/CodeBlock.h: 9706 (JSC::CodeBlock::bytecodeOffset): 9707 (JSC::CodeBlock::methodCallLinkInfo): 9708 * bytecompiler/BytecodeGenerator.cpp: 9709 (JSC::BytecodeGenerator::emitCall): 9710 (JSC::BytecodeGenerator::emitCallVarargs): 9711 * interpreter/Interpreter.cpp: 9712 (JSC::Interpreter::unwindCallFrame): 9713 (JSC::Interpreter::throwException): 9714 (JSC::Interpreter::execute): 9715 (JSC::Interpreter::executeCall): 9716 (JSC::Interpreter::executeConstruct): 9717 (JSC::Interpreter::privateExecute): 9718 * jit/JITStubs.cpp: 9719 (JSC::DEFINE_STUB_FUNCTION): 9720 * profiler/Profile.cpp: 9721 (JSC::Profile::Profile): 9722 * profiler/ProfileGenerator.cpp: 9723 (JSC::ProfileGenerator::addParentForConsoleStart): 9724 (JSC::ProfileGenerator::willExecute): 9725 (JSC::ProfileGenerator::didExecute): 9726 (JSC::ProfileGenerator::exceptionUnwind): 9727 (JSC::ProfileGenerator::stopProfiling): 9728 * profiler/ProfileGenerator.h: 9729 * profiler/ProfileNode.cpp: 9730 (JSC::ProfileNode::ProfileNode): 9731 (JSC::ProfileNode::willExecute): 9732 * profiler/ProfileNode.h: 9733 (JSC::ProfileNode::create): 9734 (JSC::ProfileNode::callerCallFrame): 9735 * profiler/Profiler.cpp: 9736 (JSC::dispatchFunctionToProfiles): 9737 (JSC::Profiler::_willExecute): 9738 (JSC::Profiler::_didExecute): 9739 (JSC::Profiler::exceptionUnwind): 9740 * profiler/Profiler.h: 9741 9742 2010-11-18 Steve Falkenburg <sfalken (a] apple.com> 9743 9744 Reviewed by Adam Roben. 9745 9746 Remove leftover Windows Debug_Internal configurations 9747 https://bugs.webkit.org/show_bug.cgi?id=49758 9748 9749 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: 9750 * JavaScriptCore.vcproj/WTF/WTF.vcproj: 9751 * JavaScriptCore.vcproj/jsc/jsc.vcproj: 9752 * JavaScriptCore.vcproj/testapi/testapi.vcproj: 9753 9754 2010-11-18 Chao-ying Fu <fu (a] mips.com> 9755 9756 Reviewed by Csaba Osztrogonc. 9757 9758 Avoid increasing required alignment of target type warning 9759 https://bugs.webkit.org/show_bug.cgi?id=43963 9760 9761 * runtime/UString.h: 9762 (JSC::UStringHash::equal): 9763 * wtf/StdLibExtras.h: 9764 9765 2010-11-17 Sam Weinig <sam (a] webkit.org> 9766 9767 Reviewed by Anders Carlsson. 9768 9769 Add stubbed out ScrollAnimator for the Mac 9770 https://bugs.webkit.org/show_bug.cgi?id=49678 9771 9772 * wtf/Platform.h: Enable SMOOTH_SCROLLING on the Mac, this has no 9773 change in behavior at the moment. 9774 9775 2010-11-17 David Kilzer <ddkilzer (a] apple.com> 9776 9777 <http://webkit.org/b/49634> Make overflow guards in WTF::String::utf8 explicit 9778 9779 Reviewed by Darin Adler. 9780 9781 Add an explicit overflow check prior to allocating our buffer, 9782 rather than implicitly relying on the guard in convertUTF16ToUTF8. 9783 9784 * wtf/text/WTFString.cpp: 9785 (WTF::String::utf8): 9786 9787 2010-11-17 Sheriff Bot <webkit.review.bot (a] gmail.com> 9788 9789 Unreviewed, rolling out r72197. 9790 http://trac.webkit.org/changeset/72197 9791 https://bugs.webkit.org/show_bug.cgi?id=49661 9792 9793 broke fast/regex/test1.html (Requested by stampho on #webkit). 9794 9795 * runtime/JSGlobalData.h: 9796 * runtime/RegExp.cpp: 9797 (JSC::RegExpRepresentation::~RegExpRepresentation): 9798 (JSC::RegExp::compile): 9799 (JSC::RegExp::match): 9800 * tests/mozilla/expected.html: 9801 * wtf/Platform.h: 9802 * yarr/RegexCompiler.cpp: 9803 * yarr/RegexCompiler.h: 9804 * yarr/RegexInterpreter.cpp: 9805 * yarr/RegexInterpreter.h: 9806 * yarr/RegexJIT.cpp: 9807 (JSC::Yarr::jitCompileRegex): 9808 * yarr/RegexJIT.h: 9809 (JSC::Yarr::RegexCodeBlock::RegexCodeBlock): 9810 (JSC::Yarr::RegexCodeBlock::~RegexCodeBlock): 9811 (JSC::Yarr::RegexCodeBlock::getFallback): 9812 (JSC::Yarr::RegexCodeBlock::setFallback): 9813 (JSC::Yarr::executeRegex): 9814 * yarr/RegexParser.h: 9815 * yarr/RegexPattern.h: 9816 9817 2010-11-17 Peter Varga <pvarga (a] inf.u-szeged.hu> 9818 9819 Reviewed by Gavin Barraclough. 9820 9821 YARR JIT should fallback to YARR Interpreter instead of PCRE. 9822 https://bugs.webkit.org/show_bug.cgi?id=46719 9823 9824 Remove the ENABLE_YARR macro and the option of matching regular 9825 expressions with PCRE from JavaScriptCore. 9826 9827 * runtime/JSGlobalData.h: 9828 * runtime/RegExp.cpp: 9829 (JSC::RegExp::compile): 9830 (JSC::RegExp::match): 9831 * tests/mozilla/expected.html: 9832 * wtf/Platform.h: 9833 * yarr/RegexCompiler.cpp: 9834 * yarr/RegexCompiler.h: 9835 * yarr/RegexInterpreter.cpp: 9836 (JSC::Yarr::byteCompileRegex): 9837 * yarr/RegexInterpreter.h: 9838 * yarr/RegexJIT.cpp: 9839 (JSC::Yarr::jitCompileRegex): 9840 * yarr/RegexJIT.h: 9841 (JSC::Yarr::RegexCodeBlock::RegexCodeBlock): 9842 (JSC::Yarr::RegexCodeBlock::~RegexCodeBlock): 9843 (JSC::Yarr::RegexCodeBlock::getFallback): 9844 (JSC::Yarr::RegexCodeBlock::isFallback): 9845 (JSC::Yarr::RegexCodeBlock::setFallback): 9846 (JSC::Yarr::executeRegex): 9847 * yarr/RegexParser.h: 9848 * yarr/RegexPattern.h: 9849 9850 2010-11-17 Peter Varga <pvarga (a] inf.u-szeged.hu> 9851 9852 Reviewed by Gavin Barraclough. 9853 9854 Extend YARR Interpreter with beginning character look-up optimization 9855 https://bugs.webkit.org/show_bug.cgi?id=45751 9856 9857 Add beginning character look-up optimization which sets the start 9858 index to the first possible successful pattern match. 9859 Extend YARR Interpreter with lookupForBeginChars function which 9860 implements the beginning character look-up optimization. 9861 9862 * yarr/RegexInterpreter.cpp: 9863 (JSC::Yarr::Interpreter::InputStream::readPair): 9864 (JSC::Yarr::Interpreter::InputStream::isNotAvailableInput): 9865 (JSC::Yarr::Interpreter::lookupForBeginChars): 9866 (JSC::Yarr::Interpreter::matchDisjunction): 9867 (JSC::Yarr::Interpreter::interpret): 9868 * yarr/RegexInterpreter.h: 9869 (JSC::Yarr::BytecodePattern::BytecodePattern): 9870 9871 2010-11-17 Alexis Menard <alexis.menard (a] nokia.com>, Simon Hausmann <simon.hausmann (a] nokia.com> 9872 9873 Reviewed by Kenneth Christiansen, Tor Arne Vestb. 9874 9875 [Qt] Add support for use GStreamer with the Qt build 9876 9877 Enable the build/inclusion of the wtf/QObject convenience classes. 9878 9879 * JavaScriptCore.pri: 9880 * wtf/wtf.pri: 9881 9882 2010-11-17 Peter Varga <pvarga (a] inf.u-szeged.hu> 9883 9884 Reviewed by Gavin Barraclough. 9885 9886 Collect the beginning characters in a RegExp pattern for look-up 9887 optimization 9888 https://bugs.webkit.org/show_bug.cgi?id=45748 9889 9890 Extend the YARR's parser with an algorithm which collects the potential 9891 beginning characters from a RegExp pattern for later look-up optimization. 9892 9893 * yarr/RegexCompiler.cpp: 9894 (JSC::Yarr::BeginCharHelper::BeginCharHelper): 9895 (JSC::Yarr::BeginCharHelper::addBeginChar): 9896 (JSC::Yarr::BeginCharHelper::merge): 9897 (JSC::Yarr::BeginCharHelper::addCharacter): 9898 (JSC::Yarr::BeginCharHelper::linkHotTerms): 9899 (JSC::Yarr::RegexPatternConstructor::RegexPatternConstructor): 9900 (JSC::Yarr::RegexPatternConstructor::addBeginTerm): 9901 (JSC::Yarr::RegexPatternConstructor::setupDisjunctionBeginTerms): 9902 (JSC::Yarr::RegexPatternConstructor::setupAlternativeBeginTerms): 9903 (JSC::Yarr::RegexPatternConstructor::setupBeginChars): 9904 (JSC::Yarr::compileRegex): 9905 * yarr/RegexPattern.h: 9906 (JSC::Yarr::TermChain::TermChain): 9907 (JSC::Yarr::BeginChar::BeginChar): 9908 (JSC::Yarr::RegexPattern::RegexPattern): 9909 (JSC::Yarr::RegexPattern::reset): 9910 9911 2010-11-17 Sheriff Bot <webkit.review.bot (a] gmail.com> 9912 9913 Unreviewed, rolling out r72160. 9914 http://trac.webkit.org/changeset/72160 9915 https://bugs.webkit.org/show_bug.cgi?id=49646 9916 9917 Broke lots of fast/profiler tests, among others (Requested by 9918 aroben on #webkit). 9919 9920 * bytecode/CodeBlock.cpp: 9921 (JSC::CodeBlock::dump): 9922 (JSC::CodeBlock::functionRegisterForBytecodeOffset): 9923 (JSC::CodeBlock::shrinkToFit): 9924 * bytecode/CodeBlock.h: 9925 (JSC::CodeBlock::addFunctionRegisterInfo): 9926 * bytecode/Opcode.h: 9927 * bytecompiler/BytecodeGenerator.cpp: 9928 (JSC::BytecodeGenerator::BytecodeGenerator): 9929 (JSC::BytecodeGenerator::emitCall): 9930 (JSC::BytecodeGenerator::emitCallVarargs): 9931 (JSC::BytecodeGenerator::emitReturn): 9932 (JSC::BytecodeGenerator::emitConstruct): 9933 * bytecompiler/BytecodeGenerator.h: 9934 (JSC::CallArguments::profileHookRegister): 9935 * bytecompiler/NodesCodegen.cpp: 9936 (JSC::CallArguments::CallArguments): 9937 * interpreter/Interpreter.cpp: 9938 (JSC::Interpreter::unwindCallFrame): 9939 (JSC::Interpreter::throwException): 9940 (JSC::Interpreter::execute): 9941 (JSC::Interpreter::executeCall): 9942 (JSC::Interpreter::executeConstruct): 9943 (JSC::Interpreter::privateExecute): 9944 * jit/JIT.cpp: 9945 (JSC::JIT::privateCompileMainPass): 9946 * jit/JIT.h: 9947 * jit/JITOpcodes.cpp: 9948 (JSC::JIT::emit_op_profile_will_call): 9949 (JSC::JIT::emit_op_profile_did_call): 9950 * jit/JITOpcodes32_64.cpp: 9951 (JSC::JIT::emit_op_profile_will_call): 9952 (JSC::JIT::emit_op_profile_did_call): 9953 * jit/JITStubs.cpp: 9954 (JSC::DEFINE_STUB_FUNCTION): 9955 * jit/JITStubs.h: 9956 * profiler/Profile.cpp: 9957 (JSC::Profile::Profile): 9958 * profiler/ProfileGenerator.cpp: 9959 (JSC::ProfileGenerator::addParentForConsoleStart): 9960 (JSC::ProfileGenerator::willExecute): 9961 (JSC::ProfileGenerator::didExecute): 9962 (JSC::ProfileGenerator::stopProfiling): 9963 * profiler/ProfileGenerator.h: 9964 * profiler/ProfileNode.cpp: 9965 (JSC::ProfileNode::ProfileNode): 9966 (JSC::ProfileNode::willExecute): 9967 * profiler/ProfileNode.h: 9968 (JSC::ProfileNode::create): 9969 (JSC::ProfileNode::operator==): 9970 * profiler/Profiler.cpp: 9971 (JSC::dispatchFunctionToProfiles): 9972 (JSC::Profiler::willExecute): 9973 (JSC::Profiler::didExecute): 9974 * profiler/Profiler.h: 9975 9976 2010-11-16 Gavin Barraclough <barraclough (a] apple.com> 9977 9978 Reviewed by Sam Weinig. 9979 9980 Bug 49635 - Profiler implementation is fragile 9981 9982 The profile presently requires the exception handling mechanism to explicitly 9983 remove all stack frames that are exited during the exception unwind mechanism. 9984 This is fragile in a number of ways: 9985 * We have to change bytecode register allocation when compiling code to run 9986 when profiling, to preserve the callee function (this is also required to 9987 call did_call after the call has returned). 9988 * In the JIT we have to maintain additional data structures 9989 (CodeBlock::RareData::m_functionRegisterInfos) to map back to the register 9990 containing the callee. 9991 * In the interpreter we use 'magic values' to offset into the instruction 9992 stream to rediscover the register containing the function. 9993 9994 Instead, move profiling into the head and tail of functions. 9995 * This correctly accounts the cost of the call itself to the caller. 9996 * This allows us to access the callee function object from the callframe. 9997 * This means that at the point a call is made we can track the stack depth 9998 on the ProfileNode. 9999 * When unwinding we can simply report the depth at which the exception is 10000 being handled - all call frames above this level are freed. 10001 10002 * JavaScriptCore.xcodeproj/project.pbxproj: 10003 * bytecode/CodeBlock.cpp: 10004 (JSC::CodeBlock::dump): 10005 (JSC::CodeBlock::shrinkToFit): 10006 * bytecode/CodeBlock.h: 10007 (JSC::CodeBlock::bytecodeOffset): 10008 (JSC::CodeBlock::methodCallLinkInfo): 10009 * bytecode/Opcode.h: 10010 * bytecompiler/BytecodeGenerator.cpp: 10011 (JSC::BytecodeGenerator::BytecodeGenerator): 10012 (JSC::BytecodeGenerator::emitCall): 10013 (JSC::BytecodeGenerator::emitCallVarargs): 10014 (JSC::BytecodeGenerator::emitReturn): 10015 (JSC::BytecodeGenerator::emitConstruct): 10016 * bytecompiler/BytecodeGenerator.h: 10017 (JSC::CallArguments::count): 10018 * bytecompiler/NodesCodegen.cpp: 10019 (JSC::CallArguments::CallArguments): 10020 * interpreter/Interpreter.cpp: 10021 (JSC::ProfileHostCall::ProfileHostCall): 10022 (JSC::ProfileHostCall::~ProfileHostCall): 10023 (JSC::Interpreter::unwindCallFrame): 10024 (JSC::Interpreter::throwException): 10025 (JSC::Interpreter::execute): 10026 (JSC::Interpreter::executeCall): 10027 (JSC::Interpreter::executeConstruct): 10028 (JSC::Interpreter::privateExecute): 10029 * jit/JIT.cpp: 10030 (JSC::JIT::privateCompileMainPass): 10031 * jit/JIT.h: 10032 * jit/JITOpcodes.cpp: 10033 (JSC::JIT::emit_op_profile_has_called): 10034 (JSC::JIT::emit_op_profile_will_return): 10035 * jit/JITOpcodes32_64.cpp: 10036 (JSC::JIT::emit_op_profile_has_called): 10037 (JSC::JIT::emit_op_profile_will_return): 10038 * jit/JITStubs.cpp: 10039 (JSC::DEFINE_STUB_FUNCTION): 10040 * jit/JITStubs.h: 10041 * profiler/Profile.cpp: 10042 (JSC::Profile::Profile): 10043 * profiler/ProfileGenerator.cpp: 10044 (JSC::ProfileGenerator::addParentForConsoleStart): 10045 (JSC::ProfileGenerator::willExecute): 10046 (JSC::ProfileGenerator::didExecute): 10047 (JSC::ProfileGenerator::exceptionUnwind): 10048 (JSC::ProfileGenerator::stopProfiling): 10049 * profiler/ProfileGenerator.h: 10050 * profiler/ProfileNode.cpp: 10051 (JSC::ProfileNode::ProfileNode): 10052 (JSC::ProfileNode::willExecute): 10053 * profiler/ProfileNode.h: 10054 (JSC::ProfileNode::create): 10055 (JSC::ProfileNode::operator==): 10056 (JSC::ProfileNode::exec): 10057 * profiler/Profiler.cpp: 10058 (JSC::dispatchFunctionToProfiles): 10059 (JSC::Profiler::hasCalled): 10060 (JSC::Profiler::willEvaluate): 10061 (JSC::Profiler::willReturn): 10062 (JSC::Profiler::didEvaluate): 10063 (JSC::Profiler::exceptionUnwind): 10064 * profiler/Profiler.h: 10065 10066 2010-11-16 Brian Weinstein <bweinstein (a] apple.com> 10067 10068 Reviewed by Adam Roben and Steve Falkenburg. 10069 10070 Touch Platform.h to force a rebuild for Windows. 10071 10072 * wtf/Platform.h: 10073 10074 2010-11-16 Steve Falkenburg <sfalken (a] apple.com> 10075 10076 Reviewed by Adam Roben. 10077 10078 Disable LTCG for Windows Release builds. Add new Release_LTCG configuration. 10079 https://bugs.webkit.org/show_bug.cgi?id=49632 10080 10081 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: 10082 * JavaScriptCore.vcproj/WTF/WTF.vcproj: 10083 * JavaScriptCore.vcproj/jsc/jsc.vcproj: 10084 * JavaScriptCore.vcproj/testapi/testapi.vcproj: 10085 10086 2010-11-16 Peter Varga <pvarga (a] inf.u-szeged.hu> 10087 10088 Reviewed by Gavin Barraclough. 10089 10090 The number of recursive match calls isn't limited in YARR Interpreter 10091 https://bugs.webkit.org/show_bug.cgi?id=47906 10092 10093 Check the number of the matchDisjunction recursive calls to avoid unbounded 10094 recursion. 10095 Now the matchDisjunction function returns JSRegExpResult instead of bool. 10096 The JSRegExpResult enum contains the result of matching or the error code 10097 of the failure (like HitLimit) which terminates the matching. 10098 The error codes are based on pcre's jsRegExpExecute error codes. 10099 10100 * yarr/RegexInterpreter.cpp: 10101 (JSC::Yarr::Interpreter::parenthesesDoBacktrack): 10102 (JSC::Yarr::Interpreter::matchParentheses): 10103 (JSC::Yarr::Interpreter::backtrackParentheses): 10104 (JSC::Yarr::Interpreter::matchDisjunction): 10105 (JSC::Yarr::Interpreter::matchNonZeroDisjunction): 10106 (JSC::Yarr::Interpreter::interpret): 10107 (JSC::Yarr::Interpreter::Interpreter): 10108 * yarr/RegexInterpreter.h: 10109 10110 2010-11-16 Brian Weinstein <bweinstein (a] apple.com> 10111 10112 Rest of the Windows build fix. 10113 10114 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: 10115 10116 2010-11-16 Gavin Barraclough <barraclough (a] apple.com> 10117 10118 Windows build fix pt 1. 10119 10120 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: 10121 10122 2010-11-16 Gavin Barraclough <barraclough (a] apple.com> 10123 10124 Reviewed by Oliver Hunt. 10125 10126 https://bugs.webkit.org/show_bug.cgi?id=49606 10127 10128 The bug here is that we read the prototype from the RHS argument using a regular 10129 op_get_by_id before op_instanceof has checked that this is an object implementing 10130 HasInstance. This incorrect behaviour gives rise to further unnecessary complexity 10131 in the code base, since we have additional logic (implemented using the 10132 GetByIdExceptionInfo data structures on CodeBlock) to convert not an object errors 10133 from the get_by_id into invalid parameter errors. Having fixed this bug this code 10134 is all redundant, since in these cases the get_by_id will never have been reached. 10135 10136 * bytecode/CodeBlock.cpp: 10137 (JSC::CodeBlock::dump): 10138 (JSC::CodeBlock::shrinkToFit): 10139 * bytecode/CodeBlock.h: 10140 (JSC::CodeBlock::addExpressionInfo): 10141 * bytecode/Opcode.h: 10142 * bytecompiler/BytecodeGenerator.cpp: 10143 (JSC::BytecodeGenerator::BytecodeGenerator): 10144 (JSC::BytecodeGenerator::emitCheckHasInstance): 10145 * bytecompiler/BytecodeGenerator.h: 10146 * bytecompiler/NodesCodegen.cpp: 10147 (JSC::InstanceOfNode::emitBytecode): 10148 * interpreter/Interpreter.cpp: 10149 (JSC::Interpreter::throwException): 10150 (JSC::Interpreter::privateExecute): 10151 * jit/JIT.cpp: 10152 (JSC::JIT::privateCompileMainPass): 10153 (JSC::JIT::privateCompileSlowCases): 10154 * jit/JIT.h: 10155 * jit/JITOpcodes.cpp: 10156 (JSC::JIT::emit_op_check_has_instance): 10157 (JSC::JIT::emit_op_instanceof): 10158 (JSC::JIT::emitSlow_op_check_has_instance): 10159 (JSC::JIT::emitSlow_op_instanceof): 10160 * jit/JITOpcodes32_64.cpp: 10161 (JSC::JIT::emit_op_check_has_instance): 10162 (JSC::JIT::emit_op_instanceof): 10163 (JSC::JIT::emitSlow_op_check_has_instance): 10164 (JSC::JIT::emitSlow_op_instanceof): 10165 * jit/JITStubs.cpp: 10166 (JSC::DEFINE_STUB_FUNCTION): 10167 * jit/JITStubs.h: 10168 * runtime/ExceptionHelpers.cpp: 10169 (JSC::createInterruptedExecutionException): 10170 (JSC::createTerminatedExecutionException): 10171 (JSC::createUndefinedVariableError): 10172 (JSC::createNotAFunctionError): 10173 (JSC::createNotAnObjectError): 10174 * runtime/ExceptionHelpers.h: 10175 * runtime/JSGlobalData.cpp: 10176 (JSC::JSGlobalData::JSGlobalData): 10177 * runtime/JSGlobalData.h: 10178 * runtime/JSNotAnObject.cpp: 10179 (JSC::JSNotAnObject::toPrimitive): 10180 (JSC::JSNotAnObject::getPrimitiveNumber): 10181 (JSC::JSNotAnObject::toBoolean): 10182 (JSC::JSNotAnObject::toNumber): 10183 (JSC::JSNotAnObject::toString): 10184 (JSC::JSNotAnObject::toObject): 10185 (JSC::JSNotAnObject::getOwnPropertySlot): 10186 (JSC::JSNotAnObject::getOwnPropertyDescriptor): 10187 (JSC::JSNotAnObject::put): 10188 (JSC::JSNotAnObject::deleteProperty): 10189 (JSC::JSNotAnObject::getOwnPropertyNames): 10190 * runtime/JSNotAnObject.h: 10191 (JSC::JSNotAnObject::JSNotAnObject): 10192 * runtime/JSObject.h: 10193 (JSC::JSObject::isActivationObject): 10194 * runtime/JSValue.cpp: 10195 (JSC::JSValue::toObjectSlowCase): 10196 (JSC::JSValue::synthesizeObject): 10197 (JSC::JSValue::synthesizePrototype): 10198 10199 2010-11-15 Darin Adler <darin (a] apple.com> 10200 10201 Reviewed by Sam Weinig. 10202 10203 Harden additional string functions against large lengths 10204 https://bugs.webkit.org/show_bug.cgi?id=49574 10205 10206 * wtf/text/CString.cpp: 10207 (WTF::CString::init): Check for length that is too large for CString. 10208 (WTF::CString::newUninitialized): Ditto. 10209 (WTF::CString::copyBufferIfNeeded): Fix types so the length stays 10210 in a size_t. 10211 10212 * wtf/text/WTFString.cpp: 10213 (WTF::String::append): Check for length that is too large. 10214 10215 2010-11-15 Gavin Barraclough <barraclough (a] apple.com> 10216 10217 Reviewed by Sam Weinig. 10218 10219 Bug 49577 - Function.prototype should be non-configurable 10220 10221 JSC lazily allocates the prototype property of Function objects. 10222 10223 We check the prototype exists on 'get', but not on 'put'. 10224 If you 'put' without having first done a 'get' you can end up with a configurable 10225 prototype (prototype should only ever be non-configurable). 10226 10227 This is visible in a couple of ways: 10228 * 'delete' on the property may succeed. (the next access will result in a new, 10229 reset prototype object). 10230 * the prototype may be set to a getter. 10231 10232 * runtime/JSFunction.cpp: 10233 (JSC::JSFunction::getOwnPropertyNames): 10234 Reify the prototype property before allowing an enumerate including don't enum properties. 10235 (JSC::JSFunction::put): 10236 Reify the prototype property before any put to it. 10237 10238 2010-11-15 Gavin Barraclough <barraclough (a] apple.com> 10239 10240 Reviewed by Geoff Garen. 10241 10242 Bug 49488 - Only add source specific information to exceptions in Interpreter::throwException 10243 10244 Three types of source location information are added to errors. 10245 10246 (1) Divot information. 10247 10248 This was added with the intention of using it to provide better source highlighting in the inspector. 10249 We may still want to do so, but we probably should not be exposing these values in a manner visible to 10250 user scripts only through an internal C++ interface. The code adding divot properties to objects has 10251 been removed. 10252 10253 (2) Line number information. 10254 10255 Line number information is presently sometimes added at the point the exception is created, and sometimes 10256 added at the point the exception passes through throwException. Change this so that throwException has 10257 the sole responsibility for adding line number and source file information. 10258 10259 (3) Source snippets in the message of certain type errors (e.g. 'doc' in `Result of expression 'doc' [undefined] is not an object.`). 10260 10261 These messages are currently created at the point the exceptions is raised. Instead reformat the message 10262 such that the source snippet is located at the end (`Result of expression 'b1' [undefined] is not an object.` 10263 becomes `'undefined' is not an object (evaluating 'b1.property')`), and append these to the message at 10264 the in throw Exception. This presents a number of advantages: 10265 * we no longer need to have source location information to create these TypeErrors. 10266 * we can chose to append source location information in other error messages, including those where 10267 passing source location to the point of construction would be inconvenient. 10268 * we can chose in future to omit to append source location information when running in a non-debug mode. 10269 10270 This also cleans up some error output, e.g. removing double brackets ('[[]]') around objects in output, 10271 removing double periods (..) at end of lines, and adding slightly more context to some errors. 10272 10273 * bytecode/CodeBlock.cpp: 10274 (JSC::CodeBlock::expressionRangeForBytecodeOffset): 10275 - Separated called to access line and range information. 10276 10277 * bytecode/CodeBlock.h: 10278 - Separated called to access line and range information. 10279 10280 * interpreter/Interpreter.cpp: 10281 (JSC::Interpreter::resolve): 10282 (JSC::Interpreter::resolveSkip): 10283 (JSC::Interpreter::resolveGlobal): 10284 (JSC::Interpreter::resolveGlobalDynamic): 10285 (JSC::Interpreter::resolveBaseAndProperty): 10286 (JSC::isInvalidParamForIn): 10287 (JSC::isInvalidParamForInstanceOf): 10288 - Update parameters passed to error constructors. 10289 (JSC::appendSourceToError): 10290 - Update message property to add location information (previously added in createErrorMessage, in ExceptionHelpers) 10291 (JSC::Interpreter::throwException): 10292 - Updated to call appendSourceToError. 10293 (JSC::Interpreter::privateExecute): 10294 - Update parameters passed to error constructors. 10295 10296 * jit/JITStubs.cpp: 10297 (JSC::DEFINE_STUB_FUNCTION): 10298 - Update parameters passed to error constructors. 10299 10300 * runtime/Error.cpp: 10301 (JSC::addErrorInfo): 10302 (JSC::hasErrorInfo): 10303 - Removed divot properties. 10304 10305 * runtime/Error.h: 10306 - Removed divot properties. 10307 10308 * runtime/ErrorInstance.cpp: 10309 (JSC::ErrorInstance::ErrorInstance): 10310 - Initialize new property. 10311 10312 * runtime/ErrorInstance.h: 10313 (JSC::ErrorInstance::appendSourceToMessage): 10314 (JSC::ErrorInstance::setAppendSourceToMessage): 10315 (JSC::ErrorInstance::clearAppendSourceToMessage): 10316 - Added flag to check for errors needing location information appending. 10317 (JSC::ErrorInstance::isErrorInstance): 10318 - Added virtual method to check for ErrorInstances. 10319 10320 * runtime/ExceptionHelpers.cpp: 10321 (JSC::createUndefinedVariableError): 10322 (JSC::createInvalidParamError): 10323 (JSC::createNotAConstructorError): 10324 (JSC::createNotAFunctionError): 10325 (JSC::createNotAnObjectError): 10326 - Update parameters passed to error constructors, stopped adding line number information early, changed TypeError messages. 10327 10328 * runtime/ExceptionHelpers.h: 10329 - Updated function signatures. 10330 10331 * runtime/JSFunction.cpp: 10332 (JSC::callHostFunctionAsConstructor): 10333 - Update parameters passed to error constructors. 10334 10335 * runtime/JSObject.h: 10336 (JSC::JSObject::isErrorInstance): 10337 - Added virtual method to check for ErrorInstances. 10338 10339 2010-11-12 Anders Carlsson <andersca (a] apple.com> 10340 10341 Reviewed by Adam Roben. 10342 10343 CString(const char*) crashes when passed a null pointer 10344 https://bugs.webkit.org/show_bug.cgi?id=49450 10345 10346 * wtf/text/CString.cpp: 10347 (WTF::CString::CString): 10348 Return early if str is null. 10349 10350 2010-11-11 Gavin Barraclough <barraclough (a] apple.com> 10351 10352 Reviewed by Oliver Hunt. 10353 10354 Bug 49420 - Clean up syntax/reference error throw. 10355 10356 Some errors detected at compile time are thrown at runtime. We currently do so using a op_new_error/op_throw bytecode pair. 10357 This is not ideal. op_throw is used for explicit user throw statements, and has different requirements in terms or meta data 10358 attached to the exception (controlled by the explicitThrow parameter passed to Interpreter::throwException). To work around 10359 this, op_new_error has to add the meta data at an early stage, which is unlike other VM exceptions being raised. 10360 10361 We can simplify this and bring into line with other exception behaviour by changing new_error from just allocating an 10362 Exception instance to also throwing it but as a regular VM throw, correctly passing explicitThrow as false. 10363 10364 * JavaScriptCore.xcodeproj/project.pbxproj: 10365 * bytecode/CodeBlock.cpp: 10366 (JSC::CodeBlock::dump): 10367 (JSC::CodeBlock::expressionRangeForBytecodeOffset): 10368 * bytecode/Opcode.h: 10369 * bytecompiler/BytecodeGenerator.cpp: 10370 (JSC::BytecodeGenerator::emitThrowReferenceError): 10371 (JSC::BytecodeGenerator::emitThrowSyntaxError): 10372 (JSC::BytecodeGenerator::emitThrowExpressionTooDeepException): 10373 * bytecompiler/BytecodeGenerator.h: 10374 (JSC::BytecodeGenerator::emitNodeInConditionContext): 10375 * bytecompiler/NodesCodegen.cpp: 10376 (JSC::ThrowableExpressionData::emitThrowReferenceError): 10377 (JSC::ThrowableExpressionData::emitThrowSyntaxError): 10378 (JSC::RegExpNode::emitBytecode): 10379 (JSC::PostfixErrorNode::emitBytecode): 10380 (JSC::PrefixErrorNode::emitBytecode): 10381 (JSC::AssignErrorNode::emitBytecode): 10382 (JSC::ForInNode::emitBytecode): 10383 (JSC::ContinueNode::emitBytecode): 10384 (JSC::BreakNode::emitBytecode): 10385 (JSC::ReturnNode::emitBytecode): 10386 (JSC::LabelNode::emitBytecode): 10387 * interpreter/Interpreter.cpp: 10388 (JSC::Interpreter::privateExecute): 10389 * jit/JIT.cpp: 10390 (JSC::JIT::privateCompileMainPass): 10391 * jit/JIT.h: 10392 * jit/JITOpcodes.cpp: 10393 (JSC::JIT::emit_op_throw_reference_error): 10394 (JSC::JIT::emit_op_throw_syntax_error): 10395 * jit/JITOpcodes32_64.cpp: 10396 (JSC::JIT::emit_op_throw_reference_error): 10397 (JSC::JIT::emit_op_throw_syntax_error): 10398 * jit/JITStubs.cpp: 10399 (JSC::DEFINE_STUB_FUNCTION): 10400 * jit/JITStubs.h: 10401 * parser/Nodes.h: 10402 10403 2010-11-11 Darin Adler <darin (a] apple.com> 10404 10405 Reviewed by Sam Weinig. 10406 10407 Harden some string functions against large lengths 10408 https://bugs.webkit.org/show_bug.cgi?id=49293 10409 10410 * wtf/text/StringImpl.cpp: 10411 (WTF::StringImpl::create): Fix incorrect use of PassRefPtr. Check for 10412 strlen results that are too large for StringImpl. 10413 (WTF::StringImpl::lower): Check for lengths that are too large for 10414 int32_t. 10415 (WTF::StringImpl::upper): Fix incorrect use of PassRefPtr. Check for 10416 lengths that are too large for int32_t. 10417 (WTF::StringImpl::secure): Fix incorect use of PassRefPtr. Use unsigned 10418 rather than int and int32_t so we can handle any length. 10419 (WTF::StringImpl::foldCase): Fix incorrect use of PassRefPtr. Check for 10420 lengths that are too large for int32_t. 10421 (WTF::StringImpl::find): Check for strlen results that are too large for 10422 StringImpl. 10423 (WTF::StringImpl::findIgnoringCase): Ditto. 10424 (WTF::StringImpl::replace): Fix incorrect use of PassRefPtr. 10425 (WTF::StringImpl::createWithTerminatingNullCharacter): Check before 10426 incrementing length. 10427 10428 2010-11-11 Dan Hork <dan (a] danny.cz> 10429 10430 Reviewed by Andreas Kling. 10431 10432 Add support for the s390/s390x architectures, it's big-endian 10433 with s390 being 32-bit and s390x being 64-bit. 10434 10435 https://bugs.webkit.org/show_bug.cgi?id=34786 10436 10437 * wtf/Platform.h: 10438 10439 2010-11-10 Csaba Osztrogonc <ossy (a] webkit.org> 10440 10441 Reviewed by David Hyatt. 10442 10443 HTML5 Ruby support should be mandatory feature 10444 https://bugs.webkit.org/show_bug.cgi?id=49272 10445 10446 Remove Ruby as optional feature. 10447 10448 * Configurations/FeatureDefines.xcconfig: 10449 * JavaScriptCorePrefix.h:: Touch it to avoid incremental build failure on Windows. 10450 10451 2010-11-10 Peter Rybin <peter.rybin (a] gmail.com> 10452 10453 Reviewed by Adam Barth. 10454 10455 HTML parser should provide script column position within HTML document to JavaScript engine 10456 https://bugs.webkit.org/show_bug.cgi?id=45271 10457 10458 Adds TextPosition* classes -- a structure that stores line/column/generation 10459 level coordinates inside text document. Adds *BasedNumber classes -- typesafe int 10460 wrappers that emphasize whether int number is used as zero-based or 10461 one-based. 10462 10463 * GNUmakefile.am: 10464 * JavaScriptCore.gypi: 10465 * JavaScriptCore.xcodeproj/project.pbxproj: 10466 * wtf/text/TextPosition.h: Added. 10467 (WTF::TextPosition::TextPosition): 10468 (WTF::TextPosition::minimumPosition): 10469 (WTF::TextPosition::belowRangePosition): 10470 (WTF::ZeroBasedNumber::fromZeroBasedInt): 10471 (WTF::ZeroBasedNumber::ZeroBasedNumber): 10472 (WTF::ZeroBasedNumber::zeroBasedInt): 10473 (WTF::ZeroBasedNumber::base): 10474 (WTF::ZeroBasedNumber::belowBase): 10475 (WTF::OneBasedNumber::fromOneBasedInt): 10476 (WTF::OneBasedNumber::OneBasedNumber): 10477 (WTF::OneBasedNumber::oneBasedInt): 10478 (WTF::OneBasedNumber::convertAsZeroBasedInt): 10479 (WTF::OneBasedNumber::convertToZeroBased): 10480 (WTF::OneBasedNumber::base): 10481 (WTF::OneBasedNumber::belowBase): 10482 (WTF::toZeroBasedTextPosition): 10483 (WTF::toOneBasedTextPosition): 10484 (WTF::ZeroBasedNumber::convertToOneBased): 10485 10486 2010-11-09 Gabor Loki <loki (a] webkit.org> 10487 10488 Reviewed by Gavin Barraclough. 10489 10490 ARM JIT asserts when loading http://reader.google.com in debug mode 10491 https://bugs.webkit.org/show_bug.cgi?id=48912 10492 10493 There are several cases when the uninterrupted sequence is larger than 10494 maximum required offset for pathing the same sequence. Eg.: if in a 10495 uninterrupted sequence the last macroassembler's instruction is a stub 10496 call, it emits store instruction(s) which should not be included in the 10497 calculation of length of uninterrupted sequence. So, the insnSpace and 10498 constSpace should be upper limit instead of hard limit. 10499 10500 * jit/JIT.h: 10501 * jit/JITInlineMethods.h: 10502 (JSC::JIT::endUninterruptedSequence): 10503 10504 2010-11-09 David Kilzer <ddkilzer (a] apple.com> 10505 10506 <http://webkit.org/b/49279> Fix include statements for local headers 10507 10508 Reviewed by Gavin Barraclough. 10509 10510 Use "Foo.h" instead of <Foo.h> for local headers. 10511 10512 * assembler/AbstractMacroAssembler.h: Also fixed sort order. 10513 * assembler/CodeLocation.h: 10514 * yarr/RegexJIT.h: 10515 * yarr/RegexParser.h: 10516 10517 2010-11-08 Adam Roben <aroben (a] apple.com> 10518 10519 Roll out r71532 10520 10521 It broke the build for Cygwin 1.7 installs. Cygwin 1.7's default 10522 .bashrc unsets %TEMP%, which broke copy-tools.cmd. 10523 10524 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreGenerated.make: 10525 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreGenerated.vcproj: 10526 * JavaScriptCore.vcproj/JavaScriptCore/copy-tools.cmd: Removed. 10527 * JavaScriptCore.vcproj/JavaScriptCore/show-alert.js: Removed. 10528 10529 2010-11-08 Martin Robinson <mrobinson (a] igalia.com> 10530 10531 Reviewed by Xan Lopez. 10532 10533 >=webkitgtk-1.2.5: parallel build fails with libtool: link: cannot find the library `libwebkit-1.0.la' or unhandled argument `libwebkit-1.0.la' 10534 https://bugs.webkit.org/show_bug.cgi?id=49128 10535 10536 r59042 introduced a C++-style comment in Platform.h, which is often 10537 included in C source files. Change it to a C-style comment. 10538 10539 * wtf/Platform.h: Fix the C++-style comment. 10540 10541 2010-11-08 Adam Roben <aroben (a] apple.com> 10542 10543 Show a message and cause the build to immediately fail when any 10544 .vsprops files are copied 10545 10546 When $WebKitLibrariesDir is set to a non-standard location, the 10547 .vsprops files have to be copied from WebKitLibraries/win to 10548 $WebKitLibrariesDir. When this happens, Visual Studio doesn't pick up 10549 changes to the .vsprops files until the next time it opens the solution 10550 file. Before this patch, the build would soldier on with the old 10551 .vsprops files, leading to strange build failures. Now we detect that 10552 the .vsprops files have been updated, display a message to the user 10553 telling them what to do, and make the build fail immediately. 10554 10555 Fixes <http://webkit.org/b/49181> Windows build fail mysteriously when 10556 .vsprops files are updated 10557 10558 Reviewed by Steve Falkenburg. 10559 10560 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreGenerated.make: 10561 Moved code to copy the tools directory to the new copy-tools.cmd 10562 script. Moved that after the command that writes the buildfailed file 10563 so the build will be considered a failure if copy-tools.cmd fails. 10564 Changed to write the project name into buildfailed like all our other 10565 projects do, so those other projects will know that the failure was due 10566 to this project. 10567 10568 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreGenerated.vcproj: 10569 Added new scripts. 10570 10571 * JavaScriptCore.vcproj/JavaScriptCore/copy-tools.cmd: Added. Copies 10572 the tools directory to $WebKitLibrariesDir. If any files were copied, 10573 we display a message to the user and exit with error code 1 to cause 10574 the build to fail. In non-interactive builds, we just print the message 10575 to the build log. In interactive builds, we show the message in an 10576 alert. 10577 10578 * JavaScriptCore.vcproj/JavaScriptCore/show-alert.js: Added. Uses 10579 Windows Scripting Host to display a message in an alert. 10580 10581 2010-11-07 Sam Magnuson <smagnuson (a] netflix.com> 10582 10583 Reviewed by Andreas Kling. 10584 10585 [Qt] make install does not cause JavaScriptCore to be built 10586 https://bugs.webkit.org/show_bug.cgi?id=49114 10587 10588 * JavaScriptCore.pro: 10589 10590 2010-11-05 Oliver Hunt <oliver (a] apple.com> 10591 10592 Reviewed by Gavin Barraclough. 10593 10594 Website consistently crashing TOT in JIT::execute() on news.com.au 10595 https://bugs.webkit.org/show_bug.cgi?id=48954 10596 10597 The problem here was the strict pass of this conversion was loading the 10598 this structure into one register but doing the flags check off a different 10599 register. This is clearly wrong. I have been unable to trigger the crash 10600 with a reduction, but I've added an assertion to the this conversion to 10601 attempt to make it more readily catchable in future. 10602 10603 * jit/JITOpcodes.cpp: 10604 (JSC::JIT::emit_op_convert_this_strict): 10605 * jit/JITOpcodes32_64.cpp: 10606 (JSC::JIT::emit_op_convert_this_strict): 10607 * jit/JITStubs.cpp: 10608 (JSC::DEFINE_STUB_FUNCTION): 10609 10610 2010-11-04 Xan Lopez <xlopez (a] igalia.com> 10611 10612 Reviewed by Adam Barth. 10613 10614 Use leakRef instead of releaseRef 10615 https://bugs.webkit.org/show_bug.cgi?id=48974 10616 10617 Use leakRef instead of the deprecated releaseRef. This was renamed 10618 some time ago because 'releaseRef' is too close to 'release', 10619 which does something completely different. 10620 10621 2010-11-04 Eric Seidel <eric (a] webkit.org> 10622 10623 Reviewed by Gavin Barraclough. 10624 10625 REGRESSION(49798): Crash in HTMLObjectElement::parseMappedAttribute 10626 https://bugs.webkit.org/show_bug.cgi?id=48789 10627 10628 The contract for all String/AtomicString methods seems to be that it's 10629 safe to call them, even when the String is null (impl() returns 0). 10630 This contract was broken by r49798 (unintentionally) when optimizing 10631 for dromeo. 10632 This patch adds a null check to AtomicString::lower() fixing this 10633 crash and preventing future confusion. 10634 10635 * wtf/text/AtomicString.cpp: 10636 (WTF::AtomicString::lower): 10637 10638 2010-11-04 Adam Barth <abarth (a] webkit.org> 10639 10640 Enabled ICCJPEG on Chromium Mac 10641 https://bugs.webkit.org/show_bug.cgi?id=48977 10642 10643 * wtf/Platform.h: 10644 10645 2010-11-03 Oliver Hunt <oliver (a] apple.com> 10646 10647 Reviewed by Gavin Barraclough. 10648 10649 Crash in Function.prototype.call.apply 10650 https://bugs.webkit.org/show_bug.cgi?id=48485 10651 10652 The problem here was op_load_varargs failing to ensure that 10653 there was sufficient space for the entire callframe prior to 10654 op_call_varargs. This meant that when we then re-entered the 10655 VM it was possible to stomp over an earlier portion of the 10656 stack, so causing sub-optimal behaviour. 10657 10658 * bytecode/Opcode.h: 10659 * bytecompiler/BytecodeGenerator.cpp: 10660 (JSC::BytecodeGenerator::emitLoadVarargs): 10661 * bytecompiler/BytecodeGenerator.h: 10662 * bytecompiler/NodesCodegen.cpp: 10663 (JSC::ApplyFunctionCallDotNode::emitBytecode): 10664 * jit/JIT.cpp: 10665 (JSC::JIT::privateCompile): 10666 * jit/JITOpcodes.cpp: 10667 (JSC::JIT::emit_op_load_varargs): 10668 10669 2010-11-03 Kenneth Russell <kbr (a] google.com> 10670 10671 Reviewed by Chris Marrin. 10672 10673 Redesign extension mechanism in GraphicsContext3D 10674 https://bugs.webkit.org/show_bug.cgi?id=46894 10675 10676 * JavaScriptCore.exp: 10677 - Exposed String::split(const String&, Vector<String>). 10678 10679 2010-11-03 Adam Roben <aroben (a] apple.com> 10680 10681 Bring WTF.vcproj up to date 10682 10683 * JavaScriptCore.vcproj/WTF/WTF.vcproj: Added filters for the text and 10684 unicode directories, added new files, removed old files. 10685 10686 2010-11-03 Gabor Loki <loki (a] webkit.org> 10687 10688 Reviewed by Andreas Kling. 10689 10690 Remove unused initializeWeakRandomNumberGenerator 10691 https://bugs.webkit.org/show_bug.cgi?id=48899 10692 10693 WeakRandom class is used instead of weakRandomNumber and its initializer. 10694 10695 * wtf/RandomNumberSeed.h: 10696 10697 2010-11-03 Gabor Loki <loki (a] webkit.org> 10698 10699 Reviewed by Geoffrey Garen. 10700 10701 Unused class: JSFastMath with JSValue64 10702 https://bugs.webkit.org/show_bug.cgi?id=48835 10703 10704 Remove unused JSFastMath class. 10705 10706 * runtime/JSImmediate.h: 10707 10708 2010-11-02 Adam Roben <aroben (a] apple.com> 10709 10710 Windows build fix after r71127 10711 10712 MSVC isn't smart enough to figure out that the definition of the global 10713 nullptr variable isn't needed, so we provide one for it. 10714 10715 Fixes <http://webkit.org/b/48862> Windows build is broken due to 10716 undefined symbol nullptr 10717 10718 Reviewed by Anders Carlsson. 10719 10720 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: Export nullptr. 10721 10722 * JavaScriptCore.vcproj/WTF/WTF.vcproj: Added NullPtr.cpp and let VS 10723 resort the files. 10724 10725 * wtf/NullPtr.cpp: Added. 10726 10727 2010-11-02 Martin Robinson <mrobinson (a] igalia.com> 10728 10729 Reviewed by Xan Lopez. 10730 10731 Remove special handling of HashTableDeletedValue in PlatformRefPtr and manually manage memory that cannot be controlled by HashTraits 10732 https://bugs.webkit.org/show_bug.cgi?id=48841 10733 10734 Remove special handling of HashTableDeletedValue in PlatformRefPtr. 10735 This is better handled on a case-by-case basis, when HashTraits 10736 cannot account for it. 10737 10738 * wtf/PlatformRefPtr.h: 10739 (WTF::PlatformRefPtr::~PlatformRefPtr): 10740 (WTF::PlatformRefPtr::clear): 10741 (WTF::::operator): 10742 10743 2010-10-29 Oliver Hunt <oliver (a] apple.com> 10744 10745 Reviewed by Gavin Barraclough. 10746 10747 REGRESSION: r69429-r69611: Crash in JSC::Interpreter::privateExecute 10748 https://bugs.webkit.org/show_bug.cgi?id=47573 10749 10750 I think the interpreter portion of this was introduced by 10751 an incorrect but silent merge when I updated prior to committing. 10752 The JIT change is basically just a correctness fix, but it is 10753 needed to prevent the testcase from asserting in debug builds. 10754 10755 The basic problem is incorrectly setting the activation object 10756 on an arguments object. The crash was due to us setting a null 10757 activation in the interpreter, in the jit we were setting the 10758 activation of a strict mode arguments object. 10759 10760 * interpreter/Interpreter.cpp: 10761 (JSC::Interpreter::privateExecute): 10762 * jit/JITStubs.cpp: 10763 (JSC::DEFINE_STUB_FUNCTION): 10764 * wtf/Platform.h: 10765 10766 2010-10-29 Csaba Osztrogonc <ossy (a] webkit.org> 10767 10768 Reviewed by Adam Roben and David Kilzer. 10769 10770 Fix and cleanup of build systems 10771 https://bugs.webkit.org/show_bug.cgi?id=48342 10772 10773 * Configurations/FeatureDefines.xcconfig: Add missing ENABLE_FULLSCREEN_API 10774 10775 2010-10-28 Kwang Yul Seo <skyul (a] company100.net> 10776 10777 Reviewed by Darin Adler. 10778 10779 Include stddef.h unconditionally in Assertions.h 10780 https://bugs.webkit.org/show_bug.cgi?id=48573 10781 10782 There is no reason to have stddef.h include be MSVC-only. 10783 10784 * wtf/Assertions.h: 10785 10786 2010-10-28 Herczeg Zoltan <zherczeg (a] webkit.org> 10787 10788 Rubber stamped by Csaba Osztrogonc. 10789 10790 Try to fix interpreter build. 10791 10792 Needed parentheses around assignment to avoid GCC warning after 10793 http://trac.webkit.org/changeset/70703 10794 10795 * interpreter/Interpreter.cpp: 10796 (JSC::Interpreter::privateExecute): 10797 10798 2010-10-28 Peter Varga <pvarga (a] inf.u-szeged.hu> 10799 10800 Reviewed by Csaba Osztrogonc. 10801 10802 resetAssertionMatches() is an unused function in YARR Interpreter 10803 https://bugs.webkit.org/show_bug.cgi?id=48503 10804 10805 The resetAssertionMatches() function is removed from YARR Interpreter 10806 because it's never called. 10807 10808 * yarr/RegexInterpreter.cpp: 10809 (JSC::Yarr::Interpreter::resetMatches): 10810 10811 2010-10-28 Zoltan Herczeg <zherczeg (a] webkit.org> 10812 10813 Reviewed by Andreas Kling. 10814 10815 Wrong instruction form for BKPT 10816 https://bugs.webkit.org/show_bug.cgi?id=48427 10817 10818 One '0' is missing from BKPT instruction. 10819 Thanks for Jacob Bramley for reporting this error. 10820 10821 * assembler/ARMAssembler.h: 10822 10823 2010-10-28 Xan Lopez <xlopez (a] igalia.com> 10824 10825 Try to fix Snow Leopard build. 10826 10827 * jit/JITPropertyAccess.cpp: 10828 (JSC::JIT::testPrototype): 10829 10830 2010-10-28 Xan Lopez <xlopez (a] igalia.com> 10831 10832 Reviewed by Oliver Hunt. 10833 10834 Do not have two different asCell APIs in JSValue 10835 https://bugs.webkit.org/show_bug.cgi?id=47979 10836 10837 Remove JSCell* asCell(JSValue) in favor of only using 10838 JSValue::asCell(). 10839 10840 * API/APICast.h: 10841 (toRef): 10842 * jit/JITPropertyAccess32_64.cpp: 10843 (JSC::JIT::testPrototype): 10844 * jit/JITStubs.cpp: 10845 (JSC::JITThunks::tryCachePutByID): 10846 (JSC::JITThunks::tryCacheGetByID): 10847 (JSC::DEFINE_STUB_FUNCTION): 10848 * runtime/GetterSetter.h: 10849 (JSC::asGetterSetter): 10850 * runtime/JSByteArray.h: 10851 (JSC::asByteArray): 10852 * runtime/JSCell.h: 10853 (JSC::JSCell::getCallData): 10854 (JSC::JSCell::getConstructData): 10855 * runtime/JSString.h: 10856 (JSC::RopeBuilder::appendValueInConstructAndIncrementLength): 10857 (JSC::asString): 10858 * runtime/JSValue.h: 10859 * runtime/Operations.cpp: 10860 (JSC::jsIsObjectType): 10861 * runtime/Operations.h: 10862 (JSC::normalizePrototypeChain): 10863 * runtime/Protect.h: 10864 (JSC::gcProtect): 10865 (JSC::gcUnprotect): 10866 10867 2010-10-27 Chao-ying Fu <fu (a] mips.com> 10868 10869 Reviewed by Oliver Hunt. 10870 10871 Support emit_op_mod() for MIPS on JSVALUE32_64 10872 https://bugs.webkit.org/show_bug.cgi?id=46511 10873 10874 This patch uses MIPS div instructions for op_mod to improve performance. 10875 10876 * jit/JITArithmetic32_64.cpp: 10877 (JSC::JIT::emit_op_mod): 10878 10879 2010-10-27 Brent Fulgham <bfulgham (a] webkit.org> 10880 10881 Unreviewed build correction. 10882 10883 * wtf/Platform.h: Make sure ACCELERATED_COMPOSITING is 10884 turned off in the WinCairo port. This isn't supported (yet.) 10885 10886 2010-10-27 Chris Rogers <crogers (a] google.com> 10887 10888 Reviewed by Chris Marrin. 10889 10890 Add ENABLE_WEB_AUDIO feature enable flag (initially disabled) to build-webkit 10891 https://bugs.webkit.org/show_bug.cgi?id=48279 10892 10893 * Configurations/FeatureDefines.xcconfig: 10894 10895 2010-10-27 Brian Weinstein <bweinstein (a] apple.com> 10896 10897 Windows build fix. 10898 10899 * jit/JITStubs.cpp: 10900 (JSC::jitThrow): 10901 10902 2010-10-27 Gavin Barraclough <barraclough (a] apple.com> 10903 10904 Reviewed by Oliver Hunt. 10905 10906 Bug 48365 - Remove output parameters from JITStackFrame 10907 10908 The JIT stub functions presently use the stackframe to provide a couple of additional return values. 10909 * In the case of uncaught exceptions the exception value is returned on the stackframe.exception property. 10910 * In the case of caught exceptions the updated value for the callFrame register is returned on the stackframe.callFrame property. 10911 10912 Change exception returns such that exceptions are always returned on JSGlobalData::exception. 10913 Change op_catch such that the new CallFrame value is returned from op_throw / vm_throw in regT0. 10914 10915 * JavaScriptCore.xcodeproj/project.pbxproj: 10916 * debugger/Debugger.cpp: 10917 (JSC::evaluateInGlobalCallFrame): 10918 * debugger/DebuggerCallFrame.cpp: 10919 (JSC::DebuggerCallFrame::evaluate): 10920 * interpreter/CachedCall.h: 10921 (JSC::CachedCall::CachedCall): 10922 (JSC::CachedCall::call): 10923 * interpreter/CallFrame.h: 10924 (JSC::ExecState::exception): 10925 * interpreter/Interpreter.cpp: 10926 (JSC::Interpreter::callEval): 10927 (JSC::Interpreter::Interpreter): 10928 (JSC::Interpreter::execute): 10929 (JSC::Interpreter::executeCall): 10930 (JSC::Interpreter::executeConstruct): 10931 (JSC::Interpreter::prepareForRepeatCall): 10932 (JSC::Interpreter::privateExecute): 10933 * interpreter/Interpreter.h: 10934 * jit/JITCode.h: 10935 (JSC::JITCode::execute): 10936 * jit/JITOpcodes.cpp: 10937 (JSC::JIT::emit_op_catch): 10938 * jit/JITOpcodes32_64.cpp: 10939 (JSC::JIT::emit_op_catch): 10940 * jit/JITStubs.cpp: 10941 (JSC::ctiTrampoline): 10942 (JSC::jitThrow): 10943 (JSC::DEFINE_STUB_FUNCTION): 10944 * jit/JITStubs.h: 10945 * runtime/ArrayPrototype.cpp: 10946 (JSC::arrayProtoFuncFilter): 10947 (JSC::arrayProtoFuncMap): 10948 (JSC::arrayProtoFuncEvery): 10949 (JSC::arrayProtoFuncForEach): 10950 (JSC::arrayProtoFuncSome): 10951 (JSC::arrayProtoFuncReduce): 10952 (JSC::arrayProtoFuncReduceRight): 10953 * runtime/CallData.cpp: 10954 (JSC::call): 10955 * runtime/Completion.cpp: 10956 (JSC::evaluate): 10957 * runtime/ConstructData.cpp: 10958 (JSC::construct): 10959 * runtime/ExceptionHelpers.cpp: 10960 (JSC::createErrorForInvalidGlobalAssignment): 10961 (JSC::throwOutOfMemoryError): 10962 (JSC::throwStackOverflowError): 10963 * runtime/ExceptionHelpers.h: 10964 * runtime/JSArray.cpp: 10965 (JSC::JSArray::sort): 10966 * runtime/JSGlobalObjectFunctions.cpp: 10967 (JSC::globalFuncEval): 10968 * runtime/StringPrototype.cpp: 10969 (JSC::stringProtoFuncReplace): 10970 10971 2010-10-27 Gabor Loki <loki (a] webkit.org> 10972 10973 Reviewed by Oliver Hunt. 10974 10975 https://bugs.webkit.org/show_bug.cgi?id=48060 10976 Speed up op_jeq_null and op_jneq_null. 10977 10978 For both opcodes the NullTag and UndefinedTag are checked to control the 10979 jump. These values can be simply checked by AboveOrEqual or Below 10980 condition if they are the two highest unsigned integers from JSValue's 10981 Tag field. 10982 10983 * jit/JITOpcodes32_64.cpp: 10984 (JSC::JIT::emit_op_jeq_null): 10985 (JSC::JIT::emit_op_jneq_null): 10986 * runtime/JSValue.h: 10987 10988 2010-10-25 Geoffrey Garen <ggaren (a] apple.com> 10989 10990 Reviewed by Oliver Hunt. 10991 10992 https://bugs.webkit.org/show_bug.cgi?id=41948 10993 REGRESSION(r60392): Registerfile can be unwound too far following an exception 10994 10995 SunSpider reports no change. 10996 10997 * interpreter/Interpreter.cpp: 10998 (JSC::Interpreter::throwException): Walk the stack to calculate the high 10999 water mark currently in use. It's not safe to assume that the current 11000 CallFrame's high water mark is the highest high water mark because 11001 calls do not always set up at the end of a CallFrame. A large caller 11002 CallFrame can encompass a small callee CallFrame. 11003 11004 * jit/JITOpcodes.cpp: 11005 (JSC::JIT::privateCompileCTINativeCall): 11006 * jit/JITOpcodes32_64.cpp: 11007 (JSC::JIT::privateCompileCTINativeCall): Make sure to set a 0 CodeBlock 11008 in the CallFrame of a host call, like the Interpreter does, instead of 11009 leaving the CodeBlock field uninitialized. The backtracing code requires 11010 a valid CodeBlock field in each CallFrame. 11011 11012 2010-10-27 Gabor Loki <loki (a] webkit.org> 11013 11014 Reviewed by Csaba Osztrogonc. 11015 11016 Add cmn to branch32(reg, imm) on ARM 11017 https://bugs.webkit.org/show_bug.cgi?id=48062 11018 11019 The conditional comparison can be done with cmn if the imm value is 11020 negative and can fit into the cmn instruction. 11021 11022 * assembler/MacroAssemblerARM.h: 11023 (JSC::MacroAssemblerARM::branch32): 11024 11025 2010-10-26 Oliver Hunt <oliver (a] apple.com> 11026 11027 Interpreter build fix. 11028 11029 * interpreter/Interpreter.cpp: 11030 (JSC::Interpreter::privateExecute): 11031 11032 2010-10-25 Oliver Hunt <oliver (a] apple.com> 11033 11034 Reviewed by Gavin Barraclough. 11035 11036 Remove exec and globalData arguments from jsNumber 11037 https://bugs.webkit.org/show_bug.cgi?id=48270 11038 11039 Remove the now unused exec and globalData arguments from jsNumber 11040 and mechanically update all users of jsNumber. 11041 11042 * API/JSValueRef.cpp: 11043 (JSValueMakeNumber): 11044 * bytecompiler/BytecodeGenerator.cpp: 11045 (JSC::BytecodeGenerator::emitLoad): 11046 * bytecompiler/NodesCodegen.cpp: 11047 (JSC::ArrayNode::emitBytecode): 11048 * jit/JITArithmetic.cpp: 11049 (JSC::JIT::emit_op_mod): 11050 * jit/JITArithmetic32_64.cpp: 11051 (JSC::JIT::emit_op_mod): 11052 * jit/JITOpcodes.cpp: 11053 (JSC::JIT::emit_op_jfalse): 11054 (JSC::JIT::emit_op_jtrue): 11055 * jit/JITStubs.cpp: 11056 (JSC::DEFINE_STUB_FUNCTION): 11057 * jsc.cpp: 11058 (functionRun): 11059 * runtime/Arguments.cpp: 11060 (JSC::Arguments::getOwnPropertySlot): 11061 (JSC::Arguments::getOwnPropertyDescriptor): 11062 * runtime/ArrayConstructor.cpp: 11063 (JSC::ArrayConstructor::ArrayConstructor): 11064 * runtime/ArrayPrototype.cpp: 11065 (JSC::arrayProtoFuncPop): 11066 (JSC::arrayProtoFuncPush): 11067 (JSC::arrayProtoFuncShift): 11068 (JSC::arrayProtoFuncSplice): 11069 (JSC::arrayProtoFuncUnShift): 11070 (JSC::arrayProtoFuncFilter): 11071 (JSC::arrayProtoFuncMap): 11072 (JSC::arrayProtoFuncEvery): 11073 (JSC::arrayProtoFuncForEach): 11074 (JSC::arrayProtoFuncSome): 11075 (JSC::arrayProtoFuncReduce): 11076 (JSC::arrayProtoFuncReduceRight): 11077 (JSC::arrayProtoFuncIndexOf): 11078 (JSC::arrayProtoFuncLastIndexOf): 11079 * runtime/BooleanConstructor.cpp: 11080 (JSC::BooleanConstructor::BooleanConstructor): 11081 * runtime/CachedTranscendentalFunction.h: 11082 (JSC::CachedTranscendentalFunction::operator()): 11083 * runtime/DateConstructor.cpp: 11084 (JSC::DateConstructor::DateConstructor): 11085 (JSC::dateParse): 11086 (JSC::dateNow): 11087 (JSC::dateUTC): 11088 * runtime/DateInstance.cpp: 11089 (JSC::DateInstance::DateInstance): 11090 * runtime/DatePrototype.cpp: 11091 (JSC::dateProtoFuncGetFullYear): 11092 (JSC::dateProtoFuncGetUTCFullYear): 11093 (JSC::dateProtoFuncGetMonth): 11094 (JSC::dateProtoFuncGetUTCMonth): 11095 (JSC::dateProtoFuncGetDate): 11096 (JSC::dateProtoFuncGetUTCDate): 11097 (JSC::dateProtoFuncGetDay): 11098 (JSC::dateProtoFuncGetUTCDay): 11099 (JSC::dateProtoFuncGetHours): 11100 (JSC::dateProtoFuncGetUTCHours): 11101 (JSC::dateProtoFuncGetMinutes): 11102 (JSC::dateProtoFuncGetUTCMinutes): 11103 (JSC::dateProtoFuncGetSeconds): 11104 (JSC::dateProtoFuncGetUTCSeconds): 11105 (JSC::dateProtoFuncGetMilliSeconds): 11106 (JSC::dateProtoFuncGetUTCMilliseconds): 11107 (JSC::dateProtoFuncGetTimezoneOffset): 11108 (JSC::dateProtoFuncSetTime): 11109 (JSC::setNewValueFromTimeArgs): 11110 (JSC::setNewValueFromDateArgs): 11111 (JSC::dateProtoFuncSetYear): 11112 (JSC::dateProtoFuncGetYear): 11113 * runtime/Error.cpp: 11114 (JSC::addErrorSourceInfo): 11115 (JSC::addErrorDivotInfo): 11116 * runtime/ErrorConstructor.cpp: 11117 (JSC::ErrorConstructor::ErrorConstructor): 11118 * runtime/FunctionConstructor.cpp: 11119 (JSC::FunctionConstructor::FunctionConstructor): 11120 * runtime/FunctionPrototype.cpp: 11121 (JSC::FunctionPrototype::FunctionPrototype): 11122 * runtime/JSArray.cpp: 11123 (JSC::JSArray::getOwnPropertySlot): 11124 (JSC::JSArray::getOwnPropertyDescriptor): 11125 * runtime/JSByteArray.cpp: 11126 (JSC::JSByteArray::JSByteArray): 11127 * runtime/JSByteArray.h: 11128 (JSC::JSByteArray::getIndex): 11129 * runtime/JSFunction.cpp: 11130 (JSC::JSFunction::JSFunction): 11131 (JSC::JSFunction::lengthGetter): 11132 (JSC::JSFunction::getOwnPropertyDescriptor): 11133 * runtime/JSGlobalObject.cpp: 11134 (JSC::JSGlobalObject::reset): 11135 * runtime/JSGlobalObjectFunctions.cpp: 11136 (JSC::globalFuncParseInt): 11137 (JSC::globalFuncParseFloat): 11138 * runtime/JSNumberCell.h: 11139 (JSC::JSValue::JSValue): 11140 (JSC::jsNaN): 11141 (JSC::JSValue::toJSNumber): 11142 * runtime/JSONObject.cpp: 11143 (JSC::unwrapBoxedPrimitive): 11144 (JSC::PropertyNameForFunctionCall::value): 11145 (JSC::JSONStringify): 11146 * runtime/JSString.cpp: 11147 (JSC::JSString::getStringPropertyDescriptor): 11148 * runtime/JSString.h: 11149 (JSC::JSString::getStringPropertySlot): 11150 * runtime/JSValue.h: 11151 (JSC::jsDoubleNumber): 11152 (JSC::jsNumber): 11153 (JSC::jsNaN): 11154 (JSC::JSValue::JSValue): 11155 (JSC::JSValue::toJSNumber): 11156 * runtime/LiteralParser.cpp: 11157 (JSC::LiteralParser::parse): 11158 * runtime/MathObject.cpp: 11159 (JSC::MathObject::MathObject): 11160 (JSC::mathProtoFuncAbs): 11161 (JSC::mathProtoFuncACos): 11162 (JSC::mathProtoFuncASin): 11163 (JSC::mathProtoFuncATan): 11164 (JSC::mathProtoFuncATan2): 11165 (JSC::mathProtoFuncCeil): 11166 (JSC::mathProtoFuncCos): 11167 (JSC::mathProtoFuncExp): 11168 (JSC::mathProtoFuncFloor): 11169 (JSC::mathProtoFuncLog): 11170 (JSC::mathProtoFuncMax): 11171 (JSC::mathProtoFuncMin): 11172 (JSC::mathProtoFuncPow): 11173 (JSC::mathProtoFuncRandom): 11174 (JSC::mathProtoFuncRound): 11175 (JSC::mathProtoFuncSin): 11176 (JSC::mathProtoFuncSqrt): 11177 (JSC::mathProtoFuncTan): 11178 * runtime/NativeErrorConstructor.cpp: 11179 (JSC::NativeErrorConstructor::NativeErrorConstructor): 11180 * runtime/NumberConstructor.cpp: 11181 (JSC::NumberConstructor::NumberConstructor): 11182 (JSC::numberConstructorNaNValue): 11183 (JSC::numberConstructorNegInfinity): 11184 (JSC::numberConstructorPosInfinity): 11185 (JSC::numberConstructorMaxValue): 11186 (JSC::numberConstructorMinValue): 11187 (JSC::constructWithNumberConstructor): 11188 (JSC::callNumberConstructor): 11189 * runtime/NumberPrototype.cpp: 11190 (JSC::NumberPrototype::NumberPrototype): 11191 * runtime/ObjectConstructor.cpp: 11192 (JSC::ObjectConstructor::ObjectConstructor): 11193 * runtime/Operations.cpp: 11194 (JSC::jsAddSlowCase): 11195 * runtime/Operations.h: 11196 (JSC::jsAdd): 11197 * runtime/PrototypeFunction.cpp: 11198 (JSC::PrototypeFunction::PrototypeFunction): 11199 * runtime/RegExpConstructor.cpp: 11200 (JSC::RegExpConstructor::RegExpConstructor): 11201 (JSC::RegExpMatchesArray::fillArrayInstance): 11202 * runtime/RegExpObject.cpp: 11203 (JSC::regExpObjectLastIndex): 11204 * runtime/StringConstructor.cpp: 11205 (JSC::StringConstructor::StringConstructor): 11206 * runtime/StringPrototype.cpp: 11207 (JSC::StringPrototype::StringPrototype): 11208 (JSC::stringProtoFuncReplace): 11209 (JSC::stringProtoFuncCharCodeAt): 11210 (JSC::stringProtoFuncIndexOf): 11211 (JSC::stringProtoFuncLastIndexOf): 11212 (JSC::stringProtoFuncSearch): 11213 (JSC::stringProtoFuncLocaleCompare): 11214 11215 2010-10-25 David Tapuska <dtapuska (a] rim.com> 11216 11217 Reviewed by David Kilzer. 11218 11219 Enable VFP if our compiler settings indicated we had a hardware 11220 VFP. 11221 11222 https://bugs.webkit.org/show_bug.cgi?id=46096 11223 11224 * assembler/MacroAssemblerARM.cpp: 11225 (JSC::isVFPPresent): 11226 11227 2010-10-25 Sheriff Bot <webkit.review.bot (a] gmail.com> 11228 11229 Unreviewed, rolling out r70451. 11230 http://trac.webkit.org/changeset/70451 11231 https://bugs.webkit.org/show_bug.cgi?id=48249 11232 11233 Broke set-unloaded-frame-location.html under Qt (Requested by 11234 caseq on #webkit). 11235 11236 * GNUmakefile.am: 11237 * JavaScriptCore.gypi: 11238 * JavaScriptCore.xcodeproj/project.pbxproj: 11239 * wtf/text/TextPosition.h: Removed. 11240 11241 2010-10-25 Patrick Gansterer <paroga (a] webkit.org> 11242 11243 Reviewed by David Kilzer. 11244 11245 Replace _countof with WTF_ARRAY_LENGTH 11246 https://bugs.webkit.org/show_bug.cgi?id=48229 11247 11248 * wtf/Platform.h: 11249 11250 2010-10-25 Peter Rybin <peter.rybin (a] gmail.com> 11251 11252 Reviewed by Adam Barth. 11253 11254 HTML parser should provide script column position within HTML document to JavaScript engine 11255 https://bugs.webkit.org/show_bug.cgi?id=45271 11256 11257 Adds TextPosition* classes -- a structure that stores line/column/generation 11258 level coordinates inside text document. Adds *BasedNumber classes -- typesafe int 11259 wrappers that emphasize whether int number is used as zero-based or 11260 one-based. 11261 11262 * GNUmakefile.am: 11263 * JavaScriptCore.gypi: 11264 * JavaScriptCore.xcodeproj/project.pbxproj: 11265 * wtf/text/TextPosition.h: Added. 11266 (WTF::TextPosition::TextPosition): 11267 (WTF::TextPosition::minimumPosition): 11268 (WTF::TextPosition::belowRangePosition): 11269 (WTF::ZeroBasedNumber::fromZeroBasedInt): 11270 (WTF::ZeroBasedNumber::ZeroBasedNumber): 11271 (WTF::ZeroBasedNumber::zeroBasedInt): 11272 (WTF::ZeroBasedNumber::base): 11273 (WTF::ZeroBasedNumber::belowBase): 11274 (WTF::OneBasedNumber::fromOneBasedInt): 11275 (WTF::OneBasedNumber::OneBasedNumber): 11276 (WTF::OneBasedNumber::oneBasedInt): 11277 (WTF::OneBasedNumber::convertAsZeroBasedInt): 11278 (WTF::OneBasedNumber::convertToZeroBased): 11279 (WTF::OneBasedNumber::base): 11280 (WTF::OneBasedNumber::belowBase): 11281 (WTF::toZeroBasedTextPosition): 11282 (WTF::toOneBasedTextPosition): 11283 (WTF::ZeroBasedNumber::convertToOneBased): 11284 11285 2010-10-24 Kwang Yul Seo <skyul (a] company100.net> 11286 11287 Reviewed by David Kilzer. 11288 11289 Check endianness with __BIG_ENDIAN in RVCT. 11290 https://bugs.webkit.org/show_bug.cgi?id=46122 11291 11292 RVCT defines __BIG_ENDIAN if compiling for a big-endian target. 11293 11294 * wtf/Platform.h: 11295 11296 2010-10-24 Dan Bernstein <mitz (a] apple.com> 11297 11298 Rubber-stamped by Dave Kilzer. 11299 11300 Removed empty directories. 11301 11302 * JavaScriptCore: Removed. 11303 * JavaScriptCore/runtime: Removed. 11304 11305 2010-10-24 Patrick Gansterer <paroga (a] webkit.org> 11306 11307 Unreviewed, fix typo of last build fix. 11308 11309 * wtf/DateMath.cpp: 11310 11311 2010-10-24 Patrick Gansterer <paroga (a] webkit.org> 11312 11313 Unreviewed build fix for chromium. 11314 11315 * wtf/DateMath.cpp: Added missing include. 11316 11317 2010-10-24 Patrick Gansterer <paroga (a] webkit.org> 11318 11319 Reviewed by David Kilzer. 11320 11321 Add WTF_ARRAY_LENGTH macro to WTF 11322 https://bugs.webkit.org/show_bug.cgi?id=32828 11323 11324 Unify the different implementations and usages. 11325 11326 * interpreter/Interpreter.cpp: 11327 (JSC::Interpreter::privateExecute): 11328 * runtime/DatePrototype.cpp: 11329 (JSC::formatLocaleDate): 11330 * runtime/JSGlobalObject.cpp: 11331 (JSC::JSGlobalObject::reset): 11332 * runtime/JSONObject.cpp: 11333 (JSC::Stringifier::appendQuotedString): 11334 (JSC::Stringifier::toJSON): 11335 (JSC::Stringifier::appendStringifiedValue): 11336 * runtime/UString.cpp: 11337 (JSC::UString::number): 11338 * wtf/DateMath.cpp: 11339 (WTF::parseDateFromNullTerminatedCharacters): 11340 * wtf/StdLibExtras.h: 11341 11342 2010-10-24 Dirk Schulze <krit (a] webkit.org> 11343 11344 Reviewed by Nikolas Zimmermann. 11345 11346 Filter example Chiseled from SVG Wow! is slow 11347 https://bugs.webkit.org/show_bug.cgi?id=48174 11348 11349 Added 'using WTF::ByteArray;' at the end of ByteArray.h 11350 11351 * wtf/ByteArray.h: 11352 11353 2010-10-24 Patrick Gansterer <paroga (a] webkit.org> 11354 11355 Reviewed by David Kilzer. 11356 11357 Inline WTF::bitwise_cast and fix style 11358 https://bugs.webkit.org/show_bug.cgi?id=48208 11359 11360 * wtf/StdLibExtras.h: 11361 (WTF::bitwise_cast): 11362 (WTF::bitCount): 11363 11364 2010-10-23 Xan Lopez <xlopez (a] igalia.com> 11365 11366 Reviewed by Sam Weinig. 11367 11368 Unify globalData APIs 11369 https://bugs.webkit.org/show_bug.cgi?id=47969 11370 11371 Make JSGlobalObject::globalData return a reference and adapt 11372 callers. This unifies the API with the existing 11373 CallFrame::globalData, which also returns a reference. 11374 11375 * debugger/Debugger.cpp: 11376 (JSC::evaluateInGlobalCallFrame): 11377 * interpreter/CallFrame.h: 11378 * interpreter/Interpreter.cpp: 11379 (JSC::Interpreter::dumpRegisters): 11380 * jsc.cpp: 11381 (runWithScripts): 11382 * parser/JSParser.cpp: 11383 (JSC::jsParse): 11384 * parser/Parser.cpp: 11385 (JSC::Parser::parse): 11386 * parser/Parser.h: 11387 (JSC::Parser::parse): 11388 * runtime/Error.cpp: 11389 (JSC::createError): 11390 (JSC::createEvalError): 11391 (JSC::createRangeError): 11392 (JSC::createReferenceError): 11393 (JSC::createSyntaxError): 11394 (JSC::createTypeError): 11395 (JSC::createURIError): 11396 * runtime/FunctionConstructor.cpp: 11397 (JSC::constructFunction): 11398 * runtime/JSGlobalObject.cpp: 11399 (JSC::JSGlobalObject::~JSGlobalObject): 11400 (JSC::JSGlobalObject::markChildren): 11401 * runtime/JSGlobalObject.h: 11402 (JSC::JSGlobalObject::globalData): 11403 11404 2010-10-23 Dimitri Glazkov <dglazkov (a] chromium.org> 11405 11406 Unreviewed, rolling out r70369. 11407 http://trac.webkit.org/changeset/70369 11408 https://bugs.webkit.org/show_bug.cgi?id=47974 11409 11410 Caused weird artifacts in expected results. 11411 11412 * wtf/Platform.h: 11413 11414 2010-10-23 Martin Robinson <mrobinson (a] igalia.com> 11415 11416 Reviewed by Xan Lopez. 11417 11418 Crashes randomly in cairo_scaled_font_destroy 11419 https://bugs.webkit.org/show_bug.cgi?id=46794 11420 11421 Make PlatformRefPtr aware of hashTableDeletedValue. When PlatformRefPtr 11422 goes away this should probably be handled in the future via some special 11423 hooks in RefCounted (or its contained type). 11424 11425 * wtf/PlatformRefPtr.h: 11426 (WTF::PlatformRefPtr::~PlatformRefPtr): 11427 (WTF::PlatformRefPtr::clear): 11428 (WTF::::operator): 11429 11430 2010-10-22 Adam Roben <aroben (a] apple.com> 11431 11432 Remove the QuartzCorePresent.h mechanism 11433 11434 This header was used to detect whether QuartzCore headers were present 11435 on the system. Everyone should have these headers now so we no longer 11436 need to detect. 11437 11438 Reviewed by Sam Weinig. 11439 11440 * JavaScriptCore.vcproj/JavaScriptCore/build-generated-files.sh: Remove 11441 code to generate QuartzCorePresent.h. 11442 11443 * wtf/Platform.h: Stop including QuartzCorePresent.h on Windows and 11444 collapse all USE_ACCELERATED_COMPOSITING settings into one #ifdef. 11445 11446 2010-10-22 Adam Barth <abarth (a] webkit.org> 11447 11448 Unreviewed, rolling out r70290. 11449 http://trac.webkit.org/changeset/70290 11450 https://bugs.webkit.org/show_bug.cgi?id=48111 11451 11452 Undelete Android build files. 11453 11454 * Android.mk: Added. 11455 11456 2010-10-22 Zoltan Herczeg <zherczeg (a] webkit.org> 11457 11458 Reviewed by Csaba Osztrogonc. 11459 11460 JSC interpreter regressions after r69940 11461 https://bugs.webkit.org/show_bug.cgi?id=47839 11462 11463 Wrong "if": It should test whether the result exists, 11464 and not the opposite. It is an interpreter bug, hence 11465 the bots does not capture it. 11466 11467 * interpreter/Interpreter.cpp: 11468 (JSC::Interpreter::resolveBase): 11469 11470 2010-10-21 Adam Barth <abarth (a] webkit.org> 11471 11472 Reviewed by David Levin. 11473 11474 Remove Android build system 11475 https://bugs.webkit.org/show_bug.cgi?id=48111 11476 11477 * Android.mk: Removed. 11478 11479 2010-10-21 Kwang Yul Seo <skyul (a] company100.net> 11480 11481 Reviewed by Kent Tamura. 11482 11483 [BREWMP] Add a String constructor which takes AECHAR* 11484 https://bugs.webkit.org/show_bug.cgi?id=45043 11485 11486 Add String(const AECHAR*) constructor for convenience. 11487 11488 * wtf/text/WTFString.h: 11489 11490 2010-10-21 Carlos Garcia Campos <cgarcia (a] igalia.com> 11491 11492 Reviewed by Martin Robinson. 11493 11494 [GTK] Use GCharsetConverter instead of g_iconv in TextCodecGtk 11495 https://bugs.webkit.org/show_bug.cgi?id=47896 11496 11497 * wtf/gobject/GTypedefs.h: 11498 11499 2010-10-21 Adam Barth <abarth (a] webkit.org> 11500 11501 Unreviewed, rolling out r70174. 11502 http://trac.webkit.org/changeset/70174 11503 https://bugs.webkit.org/show_bug.cgi?id=41948 11504 11505 This patch reverts a change that causes 11506 http/tests/xmlhttprequest/origin-whitelisting-removal.html to crash. 11507 11508 * interpreter/Interpreter.cpp: 11509 (JSC::Interpreter::throwException): 11510 11511 2010-10-20 Simon Fraser <simon.fraser (a] apple.com> 11512 11513 Fix the EFL build. 11514 11515 * wtf/CMakeLists.txt: 11516 11517 2010-10-20 Simon Fraser <simon.fraser (a] apple.com> 11518 11519 Fix Windows build: export needed symbols. 11520 11521 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: 11522 11523 2010-10-19 Simon Fraser <simon.fraser (a] apple.com> 11524 11525 Reviewed by Gavin Barraclough. 11526 11527 https://bugs.webkit.org/show_bug.cgi?id=47851 11528 11529 Add methods to DecimalNumber to return the buffer length 11530 required for decimal and exponential output. 11531 11532 Make some of the DecimalNumber code non-inline (no 11533 effect on Sunspider), adding DecimalNumber.cpp to various 11534 build systems. 11535 11536 Make some DecimalNumber methods 'const'. 11537 11538 * Android.mk: 11539 * Android.v8.wtf.mk: 11540 * GNUmakefile.am: 11541 * JavaScriptCore.exp: 11542 * JavaScriptCore.gypi: 11543 * JavaScriptCore.vcproj/WTF/WTF.vcproj: 11544 * JavaScriptCore.xcodeproj/project.pbxproj: 11545 * runtime/NumberPrototype.cpp: 11546 (JSC::numberProtoFuncToExponential): 11547 (JSC::numberProtoFuncToFixed): 11548 (JSC::numberProtoFuncToPrecision): 11549 * wtf/DecimalNumber.cpp: Added. 11550 (WTF::DecimalNumber::bufferLengthForStringDecimal): 11551 (WTF::DecimalNumber::bufferLengthForStringExponential): 11552 (WTF::DecimalNumber::toStringDecimal): 11553 (WTF::DecimalNumber::toStringExponential): 11554 * wtf/DecimalNumber.h: 11555 (WTF::DecimalNumber::sign): 11556 (WTF::DecimalNumber::exponent): 11557 (WTF::DecimalNumber::significand): 11558 (WTF::DecimalNumber::precision): 11559 * wtf/dtoa.cpp: 11560 (WTF::dtoa): 11561 * wtf/dtoa.h: 11562 * wtf/wtf.pri: 11563 11564 2010-10-20 Sheriff Bot <webkit.review.bot (a] gmail.com> 11565 11566 Unreviewed, rolling out r70165. 11567 http://trac.webkit.org/changeset/70165 11568 https://bugs.webkit.org/show_bug.cgi?id=48007 11569 11570 It broke tests on Qt bot (Requested by Ossy on #webkit). 11571 11572 * GNUmakefile.am: 11573 * JavaScriptCore.gypi: 11574 * JavaScriptCore.xcodeproj/project.pbxproj: 11575 * wtf/text/TextPosition.h: Removed. 11576 11577 2010-10-20 Brian Weinstein <bweinstein (a] apple.com> 11578 11579 Reviewed by Adam Roben. 11580 11581 Fix the Windows build after r70165. Move the copying of JavaScript headers from JavaScriptCore's post-build 11582 step to JavaScriptCoreGenerated, so the copying is done even when a cpp file in JavaScriptCore is changed. 11583 11584 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreCommon.vsprops: 11585 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreGenerated.make: 11586 11587 2010-10-20 Dumitru Daniliuc <dumi (a] chromium.org> 11588 11589 Unreviewed, fixing the Win build. 11590 11591 * JavaScriptCore.vcproj/WTF/WTF.vcproj: 11592 11593 2010-10-20 Geoffrey Garen <ggaren (a] apple.com> 11594 11595 Reviewed by Darin Adler. 11596 11597 https://bugs.webkit.org/show_bug.cgi?id=41948 11598 REGRESSION(r60392): Registerfile can be unwound too far following an exception 11599 11600 * interpreter/Interpreter.cpp: 11601 (JSC::Interpreter::throwException): Walk the stack to calculate the high 11602 water mark currently in use. It's not safe to assume that the current 11603 CallFrame's high water mark is the highest high water mark because 11604 calls do not always set up at the end of a CallFrame. A large caller 11605 CallFrame can encompass a small callee CallFrame. 11606 11607 2010-10-20 Peter Rybin <peter.rybin (a] gmail.com> 11608 11609 Reviewed by Adam Barth. 11610 11611 HTML parser should provide script column position within HTML document to JavaScript engine 11612 https://bugs.webkit.org/show_bug.cgi?id=45271 11613 11614 Adds TextPosition* classes -- a structure that stores line/column/generation 11615 level coordinates inside text document. Adds *BasedNumber classes -- typesafe int 11616 wrappers that emphasize whether int number is used as zero-based or 11617 one-based. 11618 11619 * GNUmakefile.am: 11620 * JavaScriptCore.gypi: 11621 * JavaScriptCore.xcodeproj/project.pbxproj: 11622 * wtf/text/TextPosition.h: Added. 11623 (WTF::TextPosition::TextPosition): 11624 (WTF::TextPosition::minimumPosition): 11625 (WTF::TextPosition::belowRangePosition): 11626 (WTF::ZeroBasedNumber::fromZeroBasedInt): 11627 (WTF::ZeroBasedNumber::ZeroBasedNumber): 11628 (WTF::ZeroBasedNumber::zeroBasedInt): 11629 (WTF::ZeroBasedNumber::base): 11630 (WTF::ZeroBasedNumber::belowBase): 11631 (WTF::OneBasedNumber::fromOneBasedInt): 11632 (WTF::OneBasedNumber::OneBasedNumber): 11633 (WTF::OneBasedNumber::oneBasedInt): 11634 (WTF::OneBasedNumber::convertAsZeroBasedInt): 11635 (WTF::OneBasedNumber::convertToZeroBased): 11636 (WTF::OneBasedNumber::base): 11637 (WTF::OneBasedNumber::belowBase): 11638 (WTF::toZeroBasedTextPosition): 11639 (WTF::toOneBasedTextPosition): 11640 (WTF::ZeroBasedNumber::convertToOneBased): 11641 11642 2010-10-19 Kwang Yul Seo <skyul (a] company100.net> 11643 11644 Reviewed by David Kilzer. 11645 11646 [BREWMP] Turn off JIT for simulator build 11647 https://bugs.webkit.org/show_bug.cgi?id=47937 11648 11649 We don't need to test x86 JIT. 11650 11651 * wtf/Platform.h: 11652 11653 2010-10-19 Oliver Hunt <oliver (a] apple.com> 11654 11655 Reviewed by Geoffrey Garen. 11656 11657 Remove support for JSVALUE32 from JSC 11658 https://bugs.webkit.org/show_bug.cgi?id=47948 11659 11660 Remove all the code for supporting JSVALUE32 from JSC. 11661 11662 * jit/JIT.cpp: 11663 (JSC::JIT::privateCompileMainPass): 11664 (JSC::JIT::privateCompileSlowCases): 11665 * jit/JIT.h: 11666 * jit/JITArithmetic.cpp: 11667 (JSC::JIT::emit_op_lshift): 11668 (JSC::JIT::emitSlow_op_lshift): 11669 (JSC::JIT::emit_op_rshift): 11670 (JSC::JIT::emitSlow_op_rshift): 11671 (JSC::JIT::emit_op_urshift): 11672 (JSC::JIT::emitSlow_op_urshift): 11673 (JSC::JIT::emit_op_jnless): 11674 (JSC::JIT::emitSlow_op_jnless): 11675 (JSC::JIT::emit_op_jless): 11676 (JSC::JIT::emitSlow_op_jless): 11677 (JSC::JIT::emit_op_jlesseq): 11678 (JSC::JIT::emitSlow_op_jlesseq): 11679 (JSC::JIT::emit_op_bitand): 11680 (JSC::JIT::emit_op_post_inc): 11681 (JSC::JIT::emit_op_post_dec): 11682 (JSC::JIT::emit_op_pre_inc): 11683 (JSC::JIT::emit_op_pre_dec): 11684 (JSC::JIT::emit_op_mod): 11685 (JSC::JIT::emitSlow_op_mod): 11686 * jit/JITCall.cpp: 11687 * jit/JITInlineMethods.h: 11688 (JSC::JIT::emitGetFromCallFrameHeaderPtr): 11689 (JSC::JIT::emitGetFromCallFrameHeader32): 11690 * jit/JITOpcodes.cpp: 11691 (JSC::JIT::emit_op_loop_if_lesseq): 11692 (JSC::JIT::emit_op_bitnot): 11693 (JSC::JIT::emit_op_next_pname): 11694 * jit/JITPropertyAccess.cpp: 11695 (JSC::JIT::emit_op_get_by_val): 11696 (JSC::JIT::emit_op_put_by_val): 11697 * jit/JITStubs.h: 11698 * jit/JSInterfaceJIT.h: 11699 * jit/SpecializedThunkJIT.h: 11700 (JSC::SpecializedThunkJIT::returnDouble): 11701 (JSC::SpecializedThunkJIT::tagReturnAsInt32): 11702 * jit/ThunkGenerators.cpp: 11703 (JSC::sqrtThunkGenerator): 11704 (JSC::powThunkGenerator): 11705 * runtime/Collector.cpp: 11706 (JSC::isPossibleCell): 11707 (JSC::typeName): 11708 * runtime/JSCell.h: 11709 * runtime/JSGlobalData.cpp: 11710 (JSC::JSGlobalData::JSGlobalData): 11711 * runtime/JSGlobalData.h: 11712 * runtime/JSGlobalObject.h: 11713 (JSC::Structure::prototypeForLookup): 11714 * runtime/JSImmediate.h: 11715 (JSC::reinterpretIntptrToDouble): 11716 (JSC::JSImmediate::isIntegerNumber): 11717 (JSC::JSImmediate::isDouble): 11718 (JSC::JSImmediate::areBothImmediateIntegerNumbers): 11719 (JSC::JSImmediate::makeDouble): 11720 (JSC::JSImmediate::doubleValue): 11721 (JSC::JSImmediate::toBoolean): 11722 (JSC::JSImmediate::fromNumberOutsideIntegerRange): 11723 (JSC::JSImmediate::from): 11724 (JSC::JSImmediate::toDouble): 11725 (JSC::JSFastMath::rightShiftImmediateNumbers): 11726 * runtime/JSNumberCell.cpp: 11727 * runtime/JSNumberCell.h: 11728 * runtime/JSObject.h: 11729 (JSC::JSObject::JSObject): 11730 * runtime/JSValue.h: 11731 * runtime/NumberObject.h: 11732 * wtf/Platform.h: 11733 11734 2010-10-19 Csaba Osztrogonc <ossy (a] webkit.org> 11735 11736 Reviewed by Geoffrey Garen. 11737 11738 BytecodeGenerator::m_lastOpcodePosition must be initialized in all constructors 11739 https://bugs.webkit.org/show_bug.cgi?id=47920 11740 11741 * bytecompiler/BytecodeGenerator.cpp: 11742 (JSC::BytecodeGenerator::BytecodeGenerator): Add missing member initialization. 11743 11744 2010-10-19 Kwang Yul Seo <skyul (a] company100.net> 11745 11746 Reviewed by David Kilzer. 11747 11748 RVCT fails to compile DateMath.cpp due to overloaded function pow 11749 https://bugs.webkit.org/show_bug.cgi?id=47844 11750 11751 Choose std::pow(double, double) among multiple overloaded pow functions 11752 to fix build for RVCT. 11753 11754 * wtf/DateMath.cpp: 11755 (WTF::parseES5DateFromNullTerminatedCharacters): 11756 11757 2010-10-19 Patrick Gansterer <paroga (a] webkit.org> 11758 11759 Reviewed by David Kilzer. 11760 11761 Use UChar instead of wchar_t in UnicodeWinCE 11762 https://bugs.webkit.org/show_bug.cgi?id=47904 11763 11764 Make UnicodeWinCE more portable, so we can use it for other ports too. 11765 11766 * wtf/unicode/wince/UnicodeWinCE.cpp: 11767 (WTF::Unicode::toLower): 11768 (WTF::Unicode::toUpper): 11769 (WTF::Unicode::foldCase): 11770 (WTF::Unicode::isPrintableChar): 11771 (WTF::Unicode::isSpace): 11772 (WTF::Unicode::isLetter): 11773 (WTF::Unicode::isUpper): 11774 (WTF::Unicode::isLower): 11775 (WTF::Unicode::isDigit): 11776 (WTF::Unicode::isPunct): 11777 (WTF::Unicode::isAlphanumeric): 11778 (WTF::Unicode::toTitleCase): 11779 (WTF::Unicode::mirroredChar): 11780 (WTF::Unicode::digitValue): 11781 * wtf/unicode/wince/UnicodeWinCE.h: 11782 (WTF::Unicode::isSeparatorSpace): 11783 (WTF::Unicode::isHighSurrogate): 11784 (WTF::Unicode::isLowSurrogate): 11785 (WTF::Unicode::umemcasecmp): 11786 (WTF::Unicode::surrogateToUcs4): 11787 11788 2010-10-19 Patrick Gansterer <paroga (a] webkit.org> 11789 11790 Reviewed by Andreas Kling. 11791 11792 Fix style of UnicodeWinCE 11793 https://bugs.webkit.org/show_bug.cgi?id=47818 11794 11795 * wtf/unicode/wince/UnicodeWinCE.cpp: 11796 (WTF::Unicode::toLower): 11797 (WTF::Unicode::toUpper): 11798 * wtf/unicode/wince/UnicodeWinCE.h: 11799 11800 2010-10-18 Xan Lopez <xlopez (a] igalia.com> 11801 11802 Reviewed by Martin Robinson. 11803 11804 * GNUmakefile.am: add missing file. 11805 11806 2010-10-18 Oliver Hunt <oliver (a] apple.com> 11807 11808 Reviewed by Sam Weinig. 11809 11810 Strict mode: Functions created with the function constructor don't implement strict mode semantics 11811 https://bugs.webkit.org/show_bug.cgi?id=47860 11812 11813 When creating the FunctionExecutable for a new function the function constructor 11814 was always passing false for whether or not a function was strict, rather than 11815 using the information from the freshly parsed function itself. 11816 11817 * runtime/Executable.cpp: 11818 (JSC::FunctionExecutable::fromGlobalCode): 11819 11820 2010-10-18 Oliver Hunt <oliver (a] apple.com> 11821 11822 Reviewed by Darin Adler. 11823 11824 Strict mode: |this| should be undefined if it is not explicitly provided 11825 https://bugs.webkit.org/show_bug.cgi?id=47833 11826 11827 To make strict mode behave correctly we want to pass undefined instead of null 11828 as the default this value. This has no impact on behaviour outside of strict 11829 mode as both values are replaced with the global object if necessary. 11830 11831 * bytecompiler/NodesCodegen.cpp: 11832 (JSC::FunctionCallValueNode::emitBytecode): 11833 (JSC::FunctionCallResolveNode::emitBytecode): 11834 (JSC::CallFunctionCallDotNode::emitBytecode): 11835 (JSC::ApplyFunctionCallDotNode::emitBytecode): 11836 11837 11838 2010-10-18 Darin Adler <darin (a] apple.com> 11839 11840 Reviewed by Anders Carlsson. 11841 11842 Make a nullptr that works with OwnPtr and RefPtr 11843 https://bugs.webkit.org/show_bug.cgi?id=47756 11844 11845 * JavaScriptCore.xcodeproj/project.pbxproj: Added NullPtr.h. 11846 11847 * wtf/NullPtr.h: Added. 11848 11849 * wtf/OwnArrayPtr.h: Add an overload of = taking nullptr. 11850 * wtf/OwnPtr.h: Ditto. 11851 * wtf/PassOwnArrayPtr.h: Ditto. 11852 * wtf/PassOwnPtr.h: Ditto. 11853 * wtf/PassRefPtr.h: Ditto. 11854 * wtf/RefPtr.h: Ditto. 11855 * wtf/RetainPtr.h: Ditto. 11856 11857 2010-10-18 Oliver Hunt <oliver (a] apple.com> 11858 11859 Reviewed by Sam Weinig. 11860 11861 Strict mode: JIT doesn't check for |this| being an immediate before dereferencing 11862 https://bugs.webkit.org/show_bug.cgi?id=47826 11863 11864 There's no guarantee that |this| will be a cell in a strict mode function, so 11865 don't claim that it is. 11866 11867 * bytecode/CodeBlock.h: 11868 (JSC::CodeBlock::isKnownNotImmediate): 11869 11870 2010-10-18 Zoltan Herczeg <zherczeg (a] webkit.org> 11871 11872 Reviewed by Oliver Hunt. 11873 11874 if (0) throw "x" ; else { } throws parse error after r69906 11875 https://bugs.webkit.org/show_bug.cgi?id=47807 11876 11877 r69906 introduced a bug: the semicolon is not parsed after a throw 11878 expression anymore. Thus, the semicolon terminates the "if" parsing 11879 in the example above, and the else token results a parse error. 11880 11881 * parser/JSParser.cpp: 11882 (JSC::JSParser::parseThrowStatement): 11883 11884 2010-10-18 Peter Varga <pvarga (a] inf.u-szeged.hu> 11885 11886 Reviewed by Andreas Kling. 11887 11888 Remove some unnecessary lines of code from Parser.cpp 11889 https://bugs.webkit.org/show_bug.cgi?id=47816 11890 11891 * parser/Parser.cpp: 11892 11893 2010-10-18 Xan Lopez <xlopez (a] igalia.com> 11894 11895 Reviewed by Csaba Osztrogonc. 11896 11897 Build broken with JIT disabled 11898 https://bugs.webkit.org/show_bug.cgi?id=47801 11899 11900 This is a regression caused by r69940. 11901 11902 * interpreter/Interpreter.cpp: 11903 (JSC::Interpreter::resolveBase): 11904 11905 2010-10-18 Zoltan Horvath <zoltan (a] webkit.org> 11906 11907 Reviewed by Darin Adler. 11908 11909 Change FastAllocBase implementation into a macro 11910 https://bugs.webkit.org/show_bug.cgi?id=42998 11911 11912 It was investigated in bug #33896 that inheriting classes from FastAllocBase 11913 can result in objects getting larger which leads to memory regressions. 11914 Using a macro instead of inheriting classes from FastAllocBase would solve the issue. 11915 11916 * wtf/FastAllocBase.h: Add a WTF_MAKE_FAST_ALLOCATED macro 11917 11918 2010-10-17 Oliver Hunt <oliver (a] apple.com> 11919 11920 Reviewed by Sam Weinig. 11921 11922 Strict mode: arguments is not valid as the base expression for pre- or post-fix expressions 11923 https://bugs.webkit.org/show_bug.cgi?id=47791 11924 11925 Simple fix, check for arguments in addition to eval. 11926 11927 * parser/JSParser.cpp: 11928 (JSC::JSParser::parseUnaryExpression): 11929 11930 2010-10-17 Oliver Hunt <oliver (a] apple.com> 11931 11932 Reviewed by Sam Weinig. 11933 11934 Strict mode: Assignment that would create a global should be a late ReferenceError, not a syntax failure 11935 https://bugs.webkit.org/show_bug.cgi?id=47788 11936 11937 Fixing this required a couple of changes: 11938 * resolve_base now has a flag to indicate whether it is being used for a put in strict mode. 11939 this allows us to throw an exception when we're doing a completely generic resolve for 11940 assignment, and that assignment would create a new global. 11941 * There is a new opcode 'op_ensure_property_exists' that is used to determine whether 11942 the property being assigned to already exists on the global object. This currently 11943 has no caching, but such caching could be added relatively trivially. It is only used 11944 in the case where we know that a property will be placed on the global object, and 11945 we cannot verify that the property already exists. 11946 11947 In the jit we plant a call to cti_op_resolve_base_strict_put in the effected case rather 11948 than making op_resolve_base have an additional runtime branch. 11949 11950 There's also a new helper function to create the exception for the invalid assignment. 11951 11952 * bytecode/CodeBlock.cpp: 11953 (JSC::CodeBlock::dump): 11954 * bytecode/Opcode.h: 11955 * bytecompiler/BytecodeGenerator.cpp: 11956 (JSC::BytecodeGenerator::emitResolveBase): 11957 (JSC::BytecodeGenerator::emitResolveBaseForPut): 11958 * bytecompiler/BytecodeGenerator.h: 11959 * bytecompiler/NodesCodegen.cpp: 11960 (JSC::AssignResolveNode::emitBytecode): 11961 (JSC::ForInNode::emitBytecode): 11962 * interpreter/Interpreter.cpp: 11963 (JSC::Interpreter::resolveBase): 11964 (JSC::Interpreter::privateExecute): 11965 * jit/JIT.cpp: 11966 (JSC::JIT::privateCompileMainPass): 11967 * jit/JIT.h: 11968 * jit/JITOpcodes.cpp: 11969 (JSC::JIT::emit_op_resolve_base): 11970 (JSC::JIT::emit_op_ensure_property_exists): 11971 * jit/JITOpcodes32_64.cpp: 11972 (JSC::JIT::emit_op_resolve_base): 11973 (JSC::JIT::emit_op_ensure_property_exists): 11974 * jit/JITStubs.cpp: 11975 (JSC::DEFINE_STUB_FUNCTION): 11976 * jit/JITStubs.h: 11977 * parser/JSParser.cpp: 11978 (JSC::JSParser::parseProgram): 11979 * runtime/ExceptionHelpers.cpp: 11980 (JSC::createErrorForInvalidGlobalAssignment): 11981 * runtime/ExceptionHelpers.h: 11982 * runtime/Operations.h: 11983 (JSC::resolveBase): 11984 11985 2010-10-17 Simon Fraser <simon.fraser (a] apple.com> 11986 11987 First part of fix for Windows build failure. Will wait for the 11988 next set of link errors to determine the mangled forms for dtoaRoundSF 11989 and dtoaRoundDP. 11990 11991 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: 11992 11993 2010-10-17 Simon Fraser <simon.fraser (a] apple.com> 11994 11995 Reviewed by Nikolas Zimmermann. 11996 11997 Very large and small numbers fail to round-trip through CSS 11998 https://bugs.webkit.org/show_bug.cgi?id=20674 11999 12000 New exports required to use DecimalNumber in WebCore. 12001 12002 * JavaScriptCore.exp: 12003 * JavaScriptCore.xcodeproj/project.pbxproj: 12004 12005 2010-10-16 Kyusun Kim <maniagoon (a] company100.net> 12006 12007 Reviewed by Alexey Proskuryakov. 12008 12009 Add using declarations for currentTimeMS() and parseDateFromNullTerminatedCharacters() 12010 https://bugs.webkit.org/show_bug.cgi?id=47758 12011 12012 * wtf/CurrentTime.h: 12013 * wtf/DateMath.h: 12014 12015 2010-10-16 Patrick Gansterer <paroga (a] webkit.org> 12016 12017 Reviewed by Adam Barth. 12018 12019 Rename StringHasherFunctions.h to StringHasher.h 12020 https://bugs.webkit.org/show_bug.cgi?id=47200 12021 12022 Now StringHasherFunctions.h only contains the StringHasher class, so rename it to the correct name. 12023 12024 * GNUmakefile.am: 12025 * JavaScriptCore.gypi: 12026 * JavaScriptCore.xcodeproj/project.pbxproj: 12027 * wtf/StringHashFunctions.h: Removed. 12028 * wtf/StringHasher.h: Copied from JavaScriptCore/wtf/StringHashFunctions.h. 12029 * wtf/text/StringHash.h: 12030 * wtf/text/StringImpl.h: 12031 12032 2010-10-15 Oliver Hunt <oliver (a] apple.com> 12033 12034 Reviewed by Sam Weinig. 12035 12036 Automatic Semicolon Insertion incorrectly inserts semicolon after break, continue, and return followed by a newline 12037 https://bugs.webkit.org/show_bug.cgi?id=47762 12038 12039 The old YACC parser depended on the lexer for some classes of semicolon insertion. 12040 The new parser handles ASI entirely on its own so when the lexer inserts a semicolon 12041 on its own the net result is a spurious semicolon in the input stream. This can result 12042 in incorrect parsing in some cases: 12043 12044 if (0) 12045 break 12046 ;else {} 12047 12048 Would result in a parse failure as the output from the lexer is essentially 12049 12050 if (0) 12051 break 12052 ;;else 12053 12054 So the second semicolon is interpreted as a empty statement, which terminates the if, 12055 making the else an error. 12056 12057 12058 * parser/JSParser.cpp: 12059 (JSC::JSParser::parseThrowStatement): 12060 Parsing of throw statement was wrong, and only worked due to the weird behaviour 12061 in the lexer 12062 * parser/Lexer.cpp: 12063 (JSC::Lexer::lex): 12064 Remove bogus semicolon insertion from the newline handling 12065 12066 2010-10-15 Nikolas Zimmermann <nzimmermann (a] rim.com> 12067 12068 Reviewed by Dirk Schulze. 12069 12070 Replace some String::format() usages by StringConcatenate in WebKit 12071 https://bugs.webkit.org/show_bug.cgi?id=47714 12072 12073 * wtf/text/StringConcatenate.h: Add UChar specific StringTypeAdapter, to accept single UChars in makeString(). 12074 12075 2010-10-15 Ilya Tikhonovsky <loislo (a] chromium.org> 12076 12077 Unreviewed build fix for Debug Leopard which is failng to compile after r69842. 12078 12079 * yarr/RegexInterpreter.cpp: 12080 (JSC::Yarr::ByteCompiler::emitDisjunction): 12081 12082 2010-10-15 Peter Varga <pvarga (a] inf.u-szeged.hu> 12083 12084 Reviewed by Gavin Barraclough. 12085 12086 The parenthetical assertion checking isn't working in some cases with YARR 12087 Interpreter 12088 https://bugs.webkit.org/show_bug.cgi?id=46893 12089 12090 Calculate the countToCheck value of a TypeParentheticalAssertion by 12091 subtracting the number of characters which follows 12092 a TypeParentheticalAssertion term with the number of characters which should 12093 be matched by terms which are contained 12094 in the TypeParentheticalAssertion term (minimumSize). 12095 12096 * yarr/RegexInterpreter.cpp: 12097 (JSC::Yarr::ByteCompiler::emitDisjunction): 12098 12099 2010-10-14 Nathan Vander Wilt <nate (a] andyet.net> 12100 12101 Reviewed by Darin Adler. 12102 12103 Added parser for ECMAScript 5 standard date format, so Date.parse can handle RFC 3339 timestamps: https://bugs.webkit.org/show_bug.cgi?id=44632 12104 12105 * runtime/DateConversion.cpp: 12106 (JSC::parseDate): 12107 * wtf/DateMath.cpp: 12108 (WTF::ymdhmsToSeconds): 12109 (WTF::parseES5DateFromNullTerminatedCharacters): 12110 * wtf/DateMath.h: 12111 12112 2010-10-14 Nikolas Zimmermann <nzimmermann (a] rim.com> 12113 12114 Reviewed by Gavin Barraclough. 12115 12116 Replace lots of String::format() usages by StringConcatenate 12117 https://bugs.webkit.org/show_bug.cgi?id=47664 12118 12119 Add StringTypeAdapter<char> to accept single characters for makeString(). 12120 12121 * wtf/text/StringConcatenate.h: 12122 (WTF::makeString): 12123 12124 2010-10-14 David Goodwin <david_goodwin (a] apple.com> 12125 12126 Reviewed by Darin Adler. 12127 12128 need way to measure size of JITed ARM code 12129 https://bugs.webkit.org/show_bug.cgi?id=47121 12130 12131 * assembler/LinkBuffer.h: 12132 (JSC::LinkBuffer::linkCode): 12133 (JSC::LinkBuffer::dumpLinkStats): 12134 (JSC::LinkBuffer::dumpCode): 12135 12136 2010-10-14 Peter Varga <pvarga (a] inf.u-szeged.hu> 12137 12138 Reviewed by Gavin Barraclough. 12139 12140 The backreference checking isn't working in some cases with YARR Interpreter 12141 https://bugs.webkit.org/show_bug.cgi?id=46904 12142 12143 The Interpreter::matchBackReference() function returns true without matching 12144 when a backreference points to the same parentheses where it is. 12145 12146 * yarr/RegexInterpreter.cpp: 12147 (JSC::Yarr::Interpreter::matchBackReference): 12148 12149 2010-10-14 No'am Rosenthal <noam.rosenthal (a] nokia.com> 12150 12151 Reviewed by Andreas Kling. 12152 12153 [Qt] Text breaking is slow: enable ICU as an opt-in 12154 https://bugs.webkit.org/show_bug.cgi?id=40332 12155 12156 Added a config flag that enables ICU as an opt-in instead of the Qt specific code. 12157 Because of the inclusion of ICU headers, some explicit casting was necessary in UnicodeQt4.h 12158 12159 * JavaScriptCore.pri: 12160 * wtf/unicode/qt4/UnicodeQt4.h: 12161 (WTF::Unicode::toLower): 12162 (WTF::Unicode::toUpper): 12163 (WTF::Unicode::toTitleCase): 12164 (WTF::Unicode::foldCase): 12165 (WTF::Unicode::isPrintableChar): 12166 (WTF::Unicode::isSeparatorSpace): 12167 (WTF::Unicode::isPunct): 12168 (WTF::Unicode::isLower): 12169 (WTF::Unicode::mirroredChar): 12170 (WTF::Unicode::combiningClass): 12171 (WTF::Unicode::direction): 12172 (WTF::Unicode::category): 12173 12174 2010-10-14 Anton Faern <anton (a] bladehawke.com> 12175 12176 Reviewed by Csaba Osztrogonc. 12177 12178 https://bugs.webkit.org/show_bug.cgi?id=47658 12179 NetBSD was not included in the WTF_PLATFORM_FOO to WTF_OS_FOO 12180 change. This means that OS(NETBSD) is also undefined. 12181 12182 * wtf/Platform.h: s/_PLATFORM_/_OS_/ for NetBSD 12183 12184 2010-10-13 David Goodwin <david_goodwin (a] apple.com> 12185 12186 Reviewed by Oliver Hunt. 12187 12188 ARMv7 JIT should generated conditional branches when possible 12189 https://bugs.webkit.org/show_bug.cgi?id=47384 12190 12191 Use different jump padding sizes for conditional and unconditional 12192 jumps (12 bytes and 10 bytes respectively). This allows the JIT to 12193 include the IT instruction as part of the conditional jump sequence 12194 which in turn allows it to optimize away the IT using an ARMv7 12195 conditional branch instruction. Use 2-byte B(T1) and 4-byte B(T3) for 12196 conditional branches when displacement is in range. Also use IT/B(T4) 12197 for conditional branch when displacement does not fit in B(T3). 12198 12199 For unconditional jump, instruction selection options are: 12200 B(T2), B(T4), MOVW/MOVT/BX. For conditional jump, instruction selection 12201 options are: B(T1), B(T3), IT/B(T4), ITTT/MOVW/MOVT/BX. 12202 12203 * assembler/ARMv7Assembler.cpp: 12204 * assembler/ARMv7Assembler.h: 12205 (JSC::ARMv7Assembler::JmpSrc::JmpSrc): 12206 (JSC::ARMv7Assembler::ifThenElse): 12207 (JSC::ARMv7Assembler::jumpSizeDelta): 12208 (JSC::ARMv7Assembler::canCompact): 12209 (JSC::ARMv7Assembler::computeJumpType): 12210 (JSC::ARMv7Assembler::link): 12211 (JSC::ARMv7Assembler::canBeJumpT1): 12212 (JSC::ARMv7Assembler::canBeJumpT3): 12213 (JSC::ARMv7Assembler::canBeJumpT4): 12214 (JSC::ARMv7Assembler::linkJumpT1): 12215 (JSC::ARMv7Assembler::linkJumpT3): 12216 (JSC::ARMv7Assembler::linkJumpT4): 12217 (JSC::ARMv7Assembler::linkConditionalJumpT4): 12218 (JSC::ARMv7Assembler::linkBX): 12219 (JSC::ARMv7Assembler::linkConditionalBX): 12220 (JSC::ARMv7Assembler::linkJumpAbsolute): 12221 * assembler/LinkBuffer.h: 12222 (JSC::LinkBuffer::linkCode): 12223 * assembler/MacroAssemblerARMv7.h: 12224 (JSC::MacroAssemblerARMv7::canCompact): 12225 (JSC::MacroAssemblerARMv7::computeJumpType): 12226 (JSC::MacroAssemblerARMv7::jumpSizeDelta): 12227 (JSC::MacroAssemblerARMv7::jump): 12228 (JSC::MacroAssemblerARMv7::nearCall): 12229 (JSC::MacroAssemblerARMv7::call): 12230 (JSC::MacroAssemblerARMv7::ret): 12231 (JSC::MacroAssemblerARMv7::tailRecursiveCall): 12232 (JSC::MacroAssemblerARMv7::makeJump): 12233 (JSC::MacroAssemblerARMv7::makeBranch): 12234 12235 2010-10-13 Fridrich Strba <fridrich.strba (a] bluewin.ch> 12236 12237 Reviewed by Darin Adler. 12238 12239 Don't depend on Windows on sched_yield and sched.h 12240 https://bugs.webkit.org/show_bug.cgi?id=45543 12241 12242 sched.h is part of pthreads and sched_yield is implemented 12243 in pthreads-win32 as Sleep(0). This patch avoids a gratuitous 12244 dependency on pthreads-win32 in this file. 12245 12246 * wtf/TCSpinLock.h: 12247 (TCMalloc_SlowLock): 12248 12249 2010-10-13 Kwang Yul Seo <skyul (a] company100.net> 12250 12251 Reviewed by Kent Tamura. 12252 12253 [BREWMP] Port unicode 12254 https://bugs.webkit.org/show_bug.cgi?id=45716 12255 12256 Brew MP port uses only the subset of ICU library to reduce the binary size. 12257 Follow the WinCE's implementation. 12258 12259 * wtf/Platform.h: 12260 * wtf/unicode/Unicode.h: 12261 * wtf/unicode/brew/UnicodeBrew.cpp: Added. 12262 (WTF::Unicode::toLower): 12263 (WTF::Unicode::toUpper): 12264 (WTF::Unicode::foldCase): 12265 (WTF::Unicode::isPrintableChar): 12266 (WTF::Unicode::isUpper): 12267 (WTF::Unicode::isLower): 12268 (WTF::Unicode::isDigit): 12269 (WTF::Unicode::isPunct): 12270 (WTF::Unicode::isAlphanumeric): 12271 (WTF::Unicode::toTitleCase): 12272 (WTF::Unicode::direction): 12273 (WTF::Unicode::category): 12274 (WTF::Unicode::decompositionType): 12275 (WTF::Unicode::combiningClass): 12276 (WTF::Unicode::mirroredChar): 12277 (WTF::Unicode::digitValue): 12278 (WTF::Unicode::isSpace): 12279 (WTF::Unicode::isLetter): 12280 * wtf/unicode/brew/UnicodeBrew.h: Added. 12281 (WTF::Unicode::isArabicChar): 12282 (WTF::Unicode::isSeparatorSpace): 12283 (WTF::Unicode::hasLineBreakingPropertyComplexContext): 12284 (WTF::Unicode::hasLineBreakingPropertyComplexContextOrIdeographic): 12285 (WTF::Unicode::umemcasecmp): 12286 12287 2010-10-13 Gavin Barraclough <barraclough (a] apple.com> 12288 12289 Windows build fix. 12290 12291 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: 12292 12293 2010-10-13 Adam Barth <abarth (a] webkit.org> 12294 12295 Reviewed by Maciej Stachowiak. 12296 12297 [WTFURL] Add URLQueryCanonicalizer 12298 https://bugs.webkit.org/show_bug.cgi?id=45088 12299 12300 This class canonicalizes the query component of URLs. The main tricky 12301 bit there is the convertCharset function, which I've moved to a 12302 templated dependency. There'll likely be more about that in future 12303 patches. 12304 12305 * JavaScriptCore.xcodeproj/project.pbxproj: 12306 * wtf/url/src/URLEscape.cpp: Added. 12307 * wtf/url/src/URLEscape.h: Added. 12308 (WTF::appendEscapedCharacter): 12309 * wtf/url/src/URLQueryCanonicalizer.h: Added. 12310 (WTF::URLQueryCanonicalizer::canonicalize): 12311 (WTF::URLQueryCanonicalizer::isAllASCII): 12312 (WTF::URLQueryCanonicalizer::appendRaw8BitQueryString): 12313 (WTF::URLQueryCanonicalizer::convertToQueryEncoding): 12314 12315 2010-10-13 Gavin Barraclough <barraclough (a] apple.com> 12316 12317 Reviewed by Oliver Hunt. 12318 12319 Bug 43987 - Downloading using XHR is much slower than before 12320 Change StringBuilder to use overcapacity in a StringImpl, rather than a Vector. 12321 Fundamentally this should be the same (copies current contents to expand capacity, 12322 rather than using a rope), but this approach allows the intermadiate state of the 12323 String to be inspected in the buffer without copying to resolve. 12324 12325 * runtime/JSONObject.cpp: 12326 (JSC::Stringifier::appendQuotedString): 12327 (JSC::Stringifier::Holder::appendNextProperty): 12328 Renamed StringBuilder::size() -> length() (to match other String types). 12329 12330 * runtime/UStringBuilder.h: 12331 (JSC::UStringBuilder::append): 12332 (JSC::UStringBuilder::toUString): 12333 Update for changes in parent class, can just 'using' the append methods. 12334 12335 * wtf/text/StringBuilder.cpp: Added. 12336 (WTF::StringBuilder::reifyString): 12337 (WTF::StringBuilder::resize): 12338 (WTF::StringBuilder::reserveCapacity): 12339 (WTF::StringBuilder::allocateBuffer): 12340 (WTF::StringBuilder::appendUninitialized): 12341 (WTF::StringBuilder::append): 12342 (WTF::StringBuilder::shrinkToFit): 12343 * wtf/text/StringBuilder.h: 12344 (WTF::StringBuilder::StringBuilder): 12345 (WTF::StringBuilder::append): 12346 (WTF::StringBuilder::toString): 12347 (WTF::StringBuilder::toStringPreserveCapacity): 12348 (WTF::StringBuilder::length): 12349 (WTF::StringBuilder::isEmpty): 12350 (WTF::StringBuilder::operator[]): 12351 (WTF::StringBuilder::clear): 12352 Class updated to use overcapacity in a StringImpl, rather than a Vector. 12353 12354 * Android.mk: 12355 * Android.v8.wtf.mk: 12356 * GNUmakefile.am: 12357 * JavaScriptCore.exp: 12358 * JavaScriptCore.gypi: 12359 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreCommon.vsprops: 12360 * JavaScriptCore.vcproj/WTF/WTF.vcproj: 12361 * JavaScriptCore.vcproj/jsc/jsc.vcproj: 12362 * JavaScriptCore.xcodeproj/project.pbxproj: 12363 * wtf/CMakeLists.txt: 12364 * wtf/wtf.pri: 12365 12366 2010-10-13 Adam Roben <aroben (a] apple.com> 12367 12368 Export tryFastRealloc for WebKit2's benefit 12369 12370 Rubber-stamped by Anders Carlsson. 12371 12372 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: Added 12373 tryFastRealloc. Removed RegExpObject::info, which is now exported via 12374 JS_EXPORTDATA. 12375 12376 2010-10-13 Adam Barth <abarth (a] webkit.org> 12377 12378 Reviewed by Maciej Stachowiak. 12379 12380 [WTFURL] Add a mechanism for classifying types of characters 12381 https://bugs.webkit.org/show_bug.cgi?id=45085 12382 12383 Various characters have different escaping rules depending on where 12384 they are in URLs. This patch adds a table containing that information. 12385 12386 * JavaScriptCore.xcodeproj/project.pbxproj: 12387 * wtf/url/src/URLCharacterTypes.cpp: Added. 12388 * wtf/url/src/URLCharacterTypes.h: Added. 12389 (WTF::URLCharacterTypes::isQueryChar): 12390 (WTF::URLCharacterTypes::isIPv4Char): 12391 (WTF::URLCharacterTypes::isHexChar): 12392 (WTF::URLCharacterTypes::isCharOfType): 12393 12394 2010-10-13 Xan Lopez <xlopez (a] igalia.com> 12395 12396 Reviewed by Csaba Osztrogonc. 12397 12398 Missing parameters for bytecode dump of next_pname 12399 https://bugs.webkit.org/show_bug.cgi?id=47590 12400 12401 * bytecode/CodeBlock.cpp: 12402 (JSC::CodeBlock::dump): add missing parameters to the dump. 12403 12404 2010-10-13 Nikolas Zimmermann <nzimmermann (a] rim.com> 12405 12406 Reviewed by Dirk Schulze. 12407 12408 Add wtf/text/StringConcatenate 12409 https://bugs.webkit.org/show_bug.cgi?id=47584 12410 12411 Move runtime/StringConcatenate.h to wtf/text, make it work for Strings too. 12412 Add a special runtime/UStringConcatenate.h class that inherits from StringConcatenate, and extends it for use with UString. 12413 Exactly the same design that has been followed while refactoring StringBuilder. 12414 12415 The UString variants can all be removed as soon as WTF::String & JSC::UString converge. 12416 12417 * GNUmakefile.am: Add wtf/text/StringConcatenate.h and runtime/UStringConcatenate.h. 12418 * JavaScriptCore.gypi: Ditto. 12419 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: Ditto. 12420 * JavaScriptCore.vcproj/WTF/WTF.vcproj: Ditto. 12421 * JavaScriptCore.xcodeproj/project.pbxproj: Ditto. 12422 * bytecode/CodeBlock.cpp: s/makeString/makeUString/ 12423 (JSC::escapeQuotes): 12424 (JSC::valueToSourceString): 12425 (JSC::constantName): 12426 (JSC::idName): 12427 (JSC::CodeBlock::registerName): 12428 (JSC::regexpToSourceString): 12429 (JSC::regexpName): 12430 * bytecompiler/NodesCodegen.cpp: Ditto. 12431 (JSC::substitute): 12432 * profiler/Profiler.cpp: Ditto. 12433 (JSC::Profiler::createCallIdentifier): 12434 * runtime/ExceptionHelpers.cpp: Ditto. 12435 (JSC::createUndefinedVariableError): 12436 (JSC::createErrorMessage): 12437 (JSC::createInvalidParamError): 12438 * runtime/FunctionConstructor.cpp: Ditto. 12439 (JSC::constructFunction): 12440 * runtime/FunctionPrototype.cpp: Ditto. 12441 (JSC::insertSemicolonIfNeeded): 12442 * runtime/JSONObject.cpp: Ditto. 12443 (JSC::Stringifier::indent): 12444 * runtime/JSStringBuilder.h: 12445 (JSC::jsMakeNontrivialString): 12446 * runtime/RegExpConstructor.cpp: Ditto. 12447 (JSC::constructRegExp): 12448 * runtime/RegExpObject.cpp: Ditto. 12449 (JSC::RegExpObject::match): 12450 * runtime/RegExpPrototype.cpp: Ditto. 12451 (JSC::regExpProtoFuncCompile): 12452 * runtime/StringConcatenate.h: Removed. 12453 * runtime/UStringConcatenate.h: Added. Only contains the StringTypeAdapter<JSC::UString> code and the makeUString variants, the rest lives in wtf/text/StringConcatenate.h 12454 (JSC::makeUString): 12455 * wtf/text/StringConcatenate.h: Copied from runtime/StringConcatenate.h. 12456 (WTF::makeString): 12457 12458 2010-10-12 Gavin Barraclough <barraclough (a] apple.com> 12459 12460 Windows build fix. 12461 12462 * wtf/text/StringBuilder.h: 12463 (WTF::StringBuilder::length): 12464 12465 2010-10-12 Nikolas Zimmermann <nzimmermann (a] rim.com> 12466 12467 Reviewed by Gavin Barraclough. 12468 12469 Unify JSC::StringBuilder & WebCore::StringBuilder 12470 https://bugs.webkit.org/show_bug.cgi?id=47538 12471 12472 Move runtime/StringBuilder.h to wtf/text/StringBuilder.h. Rename build() to toString() and return a WTF::String(). 12473 Move the append(const JSC::UString&) method into runtime/UStringBuilder.h. 12474 UStringBuilder inherits from StringBuilder.h and adds append(const JSC::UString&) and UString toUString() functionality. 12475 12476 No new code, just move code around. 12477 12478 * GNUmakefile.am: Add wtf/text/StringBuilder.h / runtime/UStringBuilder.h. Remove runtime/StringBuilder.h. 12479 * JavaScriptCore.gypi: Ditto. 12480 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: Ditto. 12481 * JavaScriptCore.vcproj/WTF/WTF.vcproj: Ditto. 12482 * JavaScriptCore.xcodeproj/project.pbxproj: Ditto. 12483 * runtime/Executable.cpp: 12484 (JSC::FunctionExecutable::paramString): Use UStringBuilder, instead of StringBuilder. Rename build() -> toUString(). 12485 * runtime/FunctionConstructor.cpp: 12486 (JSC::constructFunction): Ditto. 12487 * runtime/JSGlobalObjectFunctions.cpp: 12488 (JSC::globalFuncUnescape): Ditto. 12489 * runtime/JSONObject.cpp: 12490 (JSC::Stringifier::stringify): Ditto. 12491 (JSC::Stringifier::appendQuotedString): Ditto. 12492 (JSC::Stringifier::appendStringifiedValue): Ditto. 12493 (JSC::Stringifier::startNewLine): Ditto. 12494 (JSC::Stringifier::Holder::appendNextProperty): Ditto. 12495 * runtime/LiteralParser.cpp: 12496 (JSC::LiteralParser::Lexer::lexString): Ditto. 12497 * runtime/NumberPrototype.cpp: Remove unneeded JSStringBuilder.h / StringBuilder.h include. 12498 * runtime/StringBuilder.h: Removed. 12499 * runtime/UStringBuilder.h: Added. Inherits from WTF::StringBuilder, extending it by two methods. 12500 (JSC::UStringBuilder::append): append(const JSC::UString&) 12501 (JSC::UStringBuilder::toUString): 12502 * wtf/text/StringBuilder.h: Copied from runtime/StringBuilder.h. Move JSC::UString parts into runtime/UStringBuilder.h 12503 (WTF::StringBuilder::append): Renamed m_buffer to buffer everywhere. 12504 (WTF::StringBuilder::isEmpty): Ditto (+ constify method). 12505 (WTF::StringBuilder::reserveCapacity): Ditto. 12506 (WTF::StringBuilder::resize): Ditto. 12507 (WTF::StringBuilder::size): Ditto. 12508 (WTF::StringBuilder::operator[]): Ditto. 12509 (WTF::StringBuilder::toString): Ditto (+ renamed from build()). Returns a String, not an UString. The old build() method is now named toUString() and lives in UStringBuilder. 12510 12511 2010-10-12 Michael Saboff <msaboff (a] apple.com> 12512 12513 Reviewed by Oliver Hunt. 12514 12515 Cleaned up the processing of replacements after regular expression 12516 processing, especially the case where there wasn't a match. 12517 Changed to use empty strings instead of computing a zero length sub 12518 string. 12519 https://bugs.webkit.org/show_bug.cgi?id=47506 12520 12521 * runtime/StringPrototype.cpp: 12522 (JSC::jsSpliceSubstringsWithSeparators): 12523 (JSC::stringProtoFuncReplace): 12524 12525 2010-10-11 Patrick Gansterer <paroga (a] webkit.org> 12526 12527 Unreviewed. 12528 12529 Clang build fix after r69472. 12530 https://bugs.webkit.org/show_bug.cgi?id=46523 12531 12532 * wtf/text/StringHash.h: 12533 12534 2010-10-11 Oliver Hunt <oliver (a] apple.com> 12535 12536 Undo last minute change to 32bit build. 12537 12538 * jit/JITOpcodes32_64.cpp: 12539 (JSC::JIT::emit_op_convert_this_strict): 12540 12541 2010-10-11 Brian Weinstein <bweinstein (a] apple.com> 12542 12543 Build fix for Windows. Add a necessary export from r69516. 12544 12545 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: 12546 12547 2010-10-11 Oliver Hunt <oliver (a] apple.com> 12548 12549 Fix interpreter build -- was broken by incorrect merge. 12550 12551 * interpreter/Interpreter.cpp: 12552 (JSC::Interpreter::privateExecute): 12553 12554 2010-10-01 Oliver Hunt <oliver (a] apple.com> 12555 12556 Reviewed by Gavin Barraclough. 12557 12558 [ES5] Implement strict mode 12559 https://bugs.webkit.org/show_bug.cgi?id=10701 12560 12561 Initial strict mode implementation. This is the simplest 12562 implementation that could possibly work and adds (hopefully) 12563 all of the restrictions required by strict mode. There are 12564 a number of inefficiencies, especially in the handling of 12565 arguments and eval as smart implementations would make this 12566 patch more complicated. 12567 12568 The SyntaxChecker AST builder has become somewhat more complex 12569 as strict mode does require more parse tree information to 12570 validate the syntax. 12571 12572 Summary of major changes to the parser: 12573 * We track when we enter strict mode (this may come as a surprise) 12574 * Strict mode actually requires a degree of AST knowledge to validate 12575 so the SyntaxChecker now produces values that can be used to distinguish 12576 "node" types. 12577 * We now track variables that are written to. We do this to 12578 statically identify writes to global properties that don't exist 12579 and abort at that point. This should actually make it possible 12580 to optimise some other cases in the future but for now it's 12581 purely for validity checking. Currently writes are only tracked 12582 in strict mode code. 12583 * Labels are now tracked as it is now a syntax error to jump to a label 12584 that does not exist (or to use break, continue, or return in a context 12585 where they would be invalid). 12586 12587 Runtime changes: 12588 * In order to get correct hanlding of the Arguments object all 12589 strict mode functions that reference arguments create and tearoff 12590 the arguments object on entry. This is not strictly necessary 12591 but was the least work necessary to get the correct behaviour. 12592 * PutPropertySlot now tracks whether it is being used for a strict 12593 mode write, and if so Object::put will throw when a write can't be 12594 completed. 12595 * StrictEvalActivation was added as an "activation" object for strict 12596 mode eval (so that strict eval does not introduce new variables into 12597 the containing scope). 12598 12599 * CMakeLists.txt: 12600 * GNUmakefile.am: 12601 * JavaScriptCore.exp: 12602 * JavaScriptCore.pro: 12603 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: 12604 * JavaScriptCore.xcodeproj/project.pbxproj: 12605 * bytecode/CodeBlock.cpp: 12606 (JSC::CodeBlock::dump): 12607 (JSC::CodeBlock::CodeBlock): 12608 (JSC::CodeBlock::reparseForExceptionInfoIfNecessary): 12609 * bytecode/CodeBlock.h: 12610 (JSC::CodeBlock::isStrictMode): 12611 * bytecode/EvalCodeCache.h: 12612 (JSC::EvalCodeCache::get): 12613 * bytecode/Opcode.h: 12614 * bytecompiler/BytecodeGenerator.cpp: 12615 (JSC::BytecodeGenerator::BytecodeGenerator): 12616 (JSC::BytecodeGenerator::createArgumentsIfNecessary): 12617 (JSC::BytecodeGenerator::emitReturn): 12618 * bytecompiler/BytecodeGenerator.h: 12619 (JSC::BytecodeGenerator::isStrictMode): 12620 (JSC::BytecodeGenerator::makeFunction): 12621 * debugger/Debugger.cpp: 12622 (JSC::evaluateInGlobalCallFrame): 12623 * debugger/DebuggerCallFrame.cpp: 12624 (JSC::DebuggerCallFrame::evaluate): 12625 * interpreter/Interpreter.cpp: 12626 (JSC::Interpreter::callEval): 12627 (JSC::Interpreter::unwindCallFrame): 12628 (JSC::Interpreter::execute): 12629 (JSC::Interpreter::privateExecute): 12630 * jit/JIT.cpp: 12631 (JSC::JIT::privateCompileMainPass): 12632 (JSC::JIT::privateCompileSlowCases): 12633 * jit/JIT.h: 12634 * jit/JITOpcodes.cpp: 12635 (JSC::JIT::emit_op_get_pnames): 12636 (JSC::JIT::emit_op_convert_this_strict): 12637 (JSC::JIT::emitSlow_op_convert_this_strict): 12638 * jit/JITOpcodes32_64.cpp: 12639 (JSC::JIT::emit_op_get_pnames): 12640 * jit/JITStubs.cpp: 12641 (JSC::DEFINE_STUB_FUNCTION): 12642 * jit/JITStubs.h: 12643 * parser/ASTBuilder.h: 12644 (JSC::ASTBuilder::createFunctionBody): 12645 (JSC::ASTBuilder::isResolve): 12646 * parser/JSParser.cpp: 12647 (JSC::JSParser::next): 12648 (JSC::JSParser::startLoop): 12649 (JSC::JSParser::endLoop): 12650 (JSC::JSParser::startSwitch): 12651 (JSC::JSParser::endSwitch): 12652 (JSC::JSParser::setStrictMode): 12653 (JSC::JSParser::strictMode): 12654 (JSC::JSParser::isValidStrictMode): 12655 (JSC::JSParser::declareParameter): 12656 (JSC::JSParser::breakIsValid): 12657 (JSC::JSParser::pushLabel): 12658 (JSC::JSParser::popLabel): 12659 (JSC::JSParser::hasLabel): 12660 (JSC::JSParser::DepthManager::DepthManager): 12661 (JSC::JSParser::DepthManager::~DepthManager): 12662 (JSC::JSParser::Scope::Scope): 12663 (JSC::JSParser::Scope::startSwitch): 12664 (JSC::JSParser::Scope::endSwitch): 12665 (JSC::JSParser::Scope::startLoop): 12666 (JSC::JSParser::Scope::endLoop): 12667 (JSC::JSParser::Scope::inLoop): 12668 (JSC::JSParser::Scope::breakIsValid): 12669 (JSC::JSParser::Scope::pushLabel): 12670 (JSC::JSParser::Scope::popLabel): 12671 (JSC::JSParser::Scope::hasLabel): 12672 (JSC::JSParser::Scope::isFunction): 12673 (JSC::JSParser::Scope::declareVariable): 12674 (JSC::JSParser::Scope::declareWrite): 12675 (JSC::JSParser::Scope::deleteProperty): 12676 (JSC::JSParser::Scope::declareParameter): 12677 (JSC::JSParser::Scope::setNeedsFullActivation): 12678 (JSC::JSParser::Scope::collectFreeVariables): 12679 (JSC::JSParser::Scope::getUncapturedWrittenVariables): 12680 (JSC::JSParser::Scope::getDeletedVariables): 12681 (JSC::JSParser::Scope::setStrictMode): 12682 (JSC::JSParser::Scope::strictMode): 12683 (JSC::JSParser::Scope::isValidStrictMode): 12684 (JSC::JSParser::pushScope): 12685 (JSC::JSParser::popScope): 12686 (JSC::JSParser::declareVariable): 12687 (JSC::JSParser::declareWrite): 12688 (JSC::JSParser::deleteProperty): 12689 (JSC::jsParse): 12690 (JSC::JSParser::JSParser): 12691 (JSC::JSParser::parseProgram): 12692 (JSC::JSParser::parseSourceElements): 12693 (JSC::JSParser::parseDoWhileStatement): 12694 (JSC::JSParser::parseWhileStatement): 12695 (JSC::JSParser::parseVarDeclarationList): 12696 (JSC::JSParser::parseConstDeclarationList): 12697 (JSC::JSParser::parseForStatement): 12698 (JSC::JSParser::parseBreakStatement): 12699 (JSC::JSParser::parseContinueStatement): 12700 (JSC::JSParser::parseReturnStatement): 12701 (JSC::JSParser::parseWithStatement): 12702 (JSC::JSParser::parseSwitchStatement): 12703 (JSC::JSParser::parseSwitchClauses): 12704 (JSC::JSParser::parseSwitchDefaultClause): 12705 (JSC::JSParser::parseTryStatement): 12706 (JSC::JSParser::parseBlockStatement): 12707 (JSC::JSParser::parseStatement): 12708 (JSC::JSParser::parseFormalParameters): 12709 (JSC::JSParser::parseFunctionBody): 12710 (JSC::JSParser::parseFunctionInfo): 12711 (JSC::JSParser::parseFunctionDeclaration): 12712 (JSC::JSParser::parseExpressionOrLabelStatement): 12713 (JSC::JSParser::parseIfStatement): 12714 (JSC::JSParser::parseExpression): 12715 (JSC::JSParser::parseAssignmentExpression): 12716 (JSC::JSParser::parseConditionalExpression): 12717 (JSC::JSParser::parseBinaryExpression): 12718 (JSC::JSParser::parseStrictObjectLiteral): 12719 (JSC::JSParser::parsePrimaryExpression): 12720 (JSC::JSParser::parseMemberExpression): 12721 (JSC::JSParser::parseUnaryExpression): 12722 * parser/JSParser.h: 12723 * parser/Lexer.cpp: 12724 (JSC::Lexer::parseString): 12725 (JSC::Lexer::lex): 12726 * parser/Lexer.h: 12727 (JSC::Lexer::isReparsing): 12728 * parser/Nodes.cpp: 12729 (JSC::ScopeNode::ScopeNode): 12730 (JSC::FunctionBodyNode::FunctionBodyNode): 12731 (JSC::FunctionBodyNode::create): 12732 * parser/Nodes.h: 12733 (JSC::ScopeNode::isStrictMode): 12734 * parser/Parser.cpp: 12735 (JSC::Parser::parse): 12736 * parser/Parser.h: 12737 (JSC::Parser::parse): 12738 * parser/SyntaxChecker.h: 12739 (JSC::SyntaxChecker::SyntaxChecker): 12740 (JSC::SyntaxChecker::makeFunctionCallNode): 12741 (JSC::SyntaxChecker::appendToComma): 12742 (JSC::SyntaxChecker::createCommaExpr): 12743 (JSC::SyntaxChecker::makeAssignNode): 12744 (JSC::SyntaxChecker::makePrefixNode): 12745 (JSC::SyntaxChecker::makePostfixNode): 12746 (JSC::SyntaxChecker::makeTypeOfNode): 12747 (JSC::SyntaxChecker::makeDeleteNode): 12748 (JSC::SyntaxChecker::makeNegateNode): 12749 (JSC::SyntaxChecker::makeBitwiseNotNode): 12750 (JSC::SyntaxChecker::createLogicalNot): 12751 (JSC::SyntaxChecker::createUnaryPlus): 12752 (JSC::SyntaxChecker::createVoid): 12753 (JSC::SyntaxChecker::thisExpr): 12754 (JSC::SyntaxChecker::createResolve): 12755 (JSC::SyntaxChecker::createObjectLiteral): 12756 (JSC::SyntaxChecker::createArray): 12757 (JSC::SyntaxChecker::createNumberExpr): 12758 (JSC::SyntaxChecker::createString): 12759 (JSC::SyntaxChecker::createBoolean): 12760 (JSC::SyntaxChecker::createNull): 12761 (JSC::SyntaxChecker::createBracketAccess): 12762 (JSC::SyntaxChecker::createDotAccess): 12763 (JSC::SyntaxChecker::createRegex): 12764 (JSC::SyntaxChecker::createNewExpr): 12765 (JSC::SyntaxChecker::createConditionalExpr): 12766 (JSC::SyntaxChecker::createAssignResolve): 12767 (JSC::SyntaxChecker::createFunctionExpr): 12768 (JSC::SyntaxChecker::createFunctionBody): 12769 (JSC::SyntaxChecker::appendBinaryExpressionInfo): 12770 (JSC::SyntaxChecker::operatorStackPop): 12771 * runtime/Arguments.cpp: 12772 (JSC::Arguments::createStrictModeCallerIfNecessary): 12773 (JSC::Arguments::createStrictModeCalleeIfNecessary): 12774 (JSC::Arguments::getOwnPropertySlot): 12775 (JSC::Arguments::getOwnPropertyDescriptor): 12776 (JSC::Arguments::put): 12777 (JSC::Arguments::deleteProperty): 12778 * runtime/Arguments.h: 12779 (JSC::Arguments::Arguments): 12780 * runtime/CommonIdentifiers.cpp: 12781 (JSC::CommonIdentifiers::CommonIdentifiers): 12782 * runtime/CommonIdentifiers.h: 12783 * runtime/Error.cpp: 12784 (JSC::StrictModeTypeErrorFunction::StrictModeTypeErrorFunction): 12785 (JSC::StrictModeTypeErrorFunction::constructThrowTypeError): 12786 (JSC::StrictModeTypeErrorFunction::getConstructData): 12787 (JSC::StrictModeTypeErrorFunction::callThrowTypeError): 12788 (JSC::StrictModeTypeErrorFunction::getCallData): 12789 (JSC::createTypeErrorFunction): 12790 * runtime/Error.h: 12791 * runtime/Executable.cpp: 12792 (JSC::EvalExecutable::EvalExecutable): 12793 (JSC::ProgramExecutable::ProgramExecutable): 12794 (JSC::FunctionExecutable::FunctionExecutable): 12795 (JSC::EvalExecutable::compileInternal): 12796 (JSC::ProgramExecutable::checkSyntax): 12797 (JSC::ProgramExecutable::compileInternal): 12798 (JSC::FunctionExecutable::compileForCallInternal): 12799 (JSC::FunctionExecutable::compileForConstructInternal): 12800 (JSC::FunctionExecutable::reparseExceptionInfo): 12801 (JSC::EvalExecutable::reparseExceptionInfo): 12802 (JSC::FunctionExecutable::fromGlobalCode): 12803 (JSC::ProgramExecutable::reparseExceptionInfo): 12804 * runtime/Executable.h: 12805 (JSC::ScriptExecutable::ScriptExecutable): 12806 (JSC::ScriptExecutable::isStrictMode): 12807 (JSC::EvalExecutable::create): 12808 (JSC::FunctionExecutable::create): 12809 * runtime/JSActivation.cpp: 12810 (JSC::JSActivation::toStrictThisObject): 12811 * runtime/JSActivation.h: 12812 * runtime/JSFunction.cpp: 12813 (JSC::createDescriptorForThrowingProperty): 12814 (JSC::JSFunction::getOwnPropertySlot): 12815 (JSC::JSFunction::getOwnPropertyDescriptor): 12816 (JSC::JSFunction::put): 12817 * runtime/JSGlobalData.cpp: 12818 (JSC::JSGlobalData::JSGlobalData): 12819 * runtime/JSGlobalData.h: 12820 * runtime/JSGlobalObject.cpp: 12821 (JSC::JSGlobalObject::reset): 12822 * runtime/JSGlobalObject.h: 12823 (JSC::JSGlobalObject::internalFunctionStructure): 12824 * runtime/JSGlobalObjectFunctions.cpp: 12825 (JSC::globalFuncEval): 12826 * runtime/JSObject.cpp: 12827 (JSC::JSObject::put): 12828 (JSC::JSObject::toStrictThisObject): 12829 (JSC::throwTypeError): 12830 * runtime/JSObject.h: 12831 (JSC::JSObject::isStrictModeFunction): 12832 (JSC::JSObject::putDirectInternal): 12833 (JSC::JSObject::putDirect): 12834 (JSC::JSValue::putDirect): 12835 (JSC::JSValue::toStrictThisObject): 12836 * runtime/JSStaticScopeObject.cpp: 12837 (JSC::JSStaticScopeObject::toStrictThisObject): 12838 * runtime/JSStaticScopeObject.h: 12839 * runtime/JSValue.h: 12840 * runtime/JSZombie.h: 12841 (JSC::JSZombie::toStrictThisObject): 12842 * runtime/PutPropertySlot.h: 12843 (JSC::PutPropertySlot::PutPropertySlot): 12844 (JSC::PutPropertySlot::isStrictMode): 12845 * runtime/StrictEvalActivation.cpp: Added. 12846 (JSC::StrictEvalActivation::StrictEvalActivation): 12847 (JSC::StrictEvalActivation::deleteProperty): 12848 (JSC::StrictEvalActivation::toThisObject): 12849 (JSC::StrictEvalActivation::toStrictThisObject): 12850 * runtime/StrictEvalActivation.h: Added. 12851 12852 2010-10-10 Patrick Gansterer <paroga (a] webkit.org> 12853 12854 Unreviewed. 12855 12856 Windows build fix after r69472. 12857 12858 * wtf/text/StringHash.h: 12859 (WTF::CaseFoldingHash::hash): 12860 12861 2010-10-10 Patrick Gansterer <paroga (a] webkit.org> 12862 12863 Reviewed by Adam Barth. 12864 12865 Use WTF::StringHasher in WTF::CaseFoldingHash 12866 https://bugs.webkit.org/show_bug.cgi?id=46523 12867 12868 * wtf/text/StringHash.h: 12869 (WTF::CaseFoldingHash::foldCase): 12870 (WTF::CaseFoldingHash::hash): 12871 12872 2010-10-09 Pratik Solanki <psolanki (a] apple.com> 12873 12874 Reviewed by Xan Lopez. 12875 12876 https://bugs.webkit.org/show_bug.cgi?id=47445 12877 Remove unused function WTFThreadData::initializeIdentifierTable() 12878 12879 * wtf/WTFThreadData.h: 12880 12881 2010-10-08 Michael Saboff <msaboff (a] apple.com> 12882 12883 Reviewed by Darin Adler. 12884 12885 Added check to start of subexpression being positive before using 12886 subexpression in replacement. 12887 https://bugs.webkit.org/show_bug.cgi?id=47324 12888 12889 * runtime/StringPrototype.cpp: 12890 (JSC::substituteBackreferencesSlow): 12891 12892 2010-10-08 Chris Evans <cevans (a] google.com> 12893 12894 Reviewed by David Levin. 12895 12896 https://bugs.webkit.org/show_bug.cgi?id=47393 12897 12898 Use unsigned consistently to check for max StringImpl length. 12899 Add a few integer overflow checks. 12900 Uses the existing paradigm of CRASH() when we can't reasonably handle a crazily large request. 12901 12902 * wtf/text/WTFString.cpp: 12903 * wtf/text/StringImpl.h: 12904 * wtf/text/StringImpl.cpp: 12905 Better use of size_t vs. unsigned; check for integer overflows. 12906 12907 2010-10-07 David Goodwin <david_goodwin (a] apple.com> 12908 12909 Reviewed by Oliver Hunt. 12910 12911 ARM JIT generates undefined operations due to partially uninitialized ShiftTypeAndAmount 12912 https://bugs.webkit.org/show_bug.cgi?id=47356 12913 12914 * assembler/ARMv7Assembler.h: 12915 12916 2010-10-06 Chris Evans <cevans (a] google.com> 12917 12918 Reviewed by David Levin. 12919 12920 https://bugs.webkit.org/show_bug.cgi?id=47248 12921 12922 Use size_t consistently in CString, to prevent theoretical trouble 12923 with > 4GB strings on 64-bit platforms. 12924 12925 * wtf/text/CString.h: 12926 * wtf/text/CString.cpp: 12927 Use size_t for string lengths. 12928 * wtf/MD5.cpp: 12929 (WTF::expectMD5): use suitable format string + cast for size_t. 12930 * JavaScriptCore.exp: 12931 Update symbol name. 12932 12933 2010-10-06 Anders Carlsson <andersca (a] apple.com> 12934 12935 Reviewed by Sam Weinig. 12936 12937 Start cleaning up Arguments.h 12938 https://bugs.webkit.org/show_bug.cgi?id=47304 12939 12940 * wtf/TypeTraits.h: 12941 * wtf/TypeTraits.cpp: 12942 Add RemoveReference type trait. 12943 12944 2010-10-06 Rafael Antognolli <antognolli (a] profusion.mobi> 12945 12946 Unreviewed build fix. 12947 12948 [EFL] Build fix for glib support. 12949 https://bugs.webkit.org/show_bug.cgi?id=47221 12950 12951 If compiling with GLib support enabled, we also need to link wtf against 12952 glib library. 12953 12954 * wtf/CMakeListsEfl.txt: 12955 12956 2010-10-05 Kwang Yul Seo <skyul (a] company100.net> 12957 12958 Reviewed by Gavin Barraclough. 12959 12960 [BREWMP] Port ExecutableAllocator::cacheFlush to enable ARM JIT 12961 https://bugs.webkit.org/show_bug.cgi?id=47117 12962 12963 Use IMemCache1 to flush data cache and invalidate instruction cache. 12964 12965 * jit/ExecutableAllocator.h: 12966 (JSC::ExecutableAllocator::cacheFlush): 12967 12968 2010-10-05 Leandro Pereira <leandro (a] profusion.mobi> 12969 12970 Unreviewed. Build fix. 12971 12972 Moved "jsc" directory to "shell", so that the name does not clash with the 12973 JavaScriptCore shell in some build systems. 12974 http://webkit.org/b/47049 12975 12976 * CMakeLists.txt: Changed reference from "jsc" to "shell". 12977 * jsc: Removed. 12978 * jsc/CMakeLists.txt: Removed. 12979 * jsc/CMakeListsEfl.txt: Removed. 12980 * shell: Copied from JavaScriptCore/jsc. 12981 12982 2010-10-05 Kwang Yul Seo <skyul (a] company100.net> 12983 12984 Reviewed by Kent Tamura. 12985 12986 [BREWMP] Use PlatformRefPtr in randomNumber 12987 https://bugs.webkit.org/show_bug.cgi?id=46989 12988 12989 Use PlatformRefPtr to free memory automatically. 12990 12991 * wtf/RandomNumber.cpp: 12992 (WTF::randomNumber): 12993 12994 2010-10-05 Oliver Hunt <oliver (a] apple.com> 12995 12996 Reviewed by Darin Adler. 12997 12998 REGRESSION(r68338): JavaScript error on PowerPC only (crashes on Interpreter built for x86_64) 12999 https://bugs.webkit.org/show_bug.cgi?id=46690 13000 13001 Use the correct register value when initialising the arguments 13002 object in the interpreter. This is covered by existing tests. 13003 13004 * interpreter/Interpreter.cpp: 13005 (JSC::Interpreter::privateExecute): 13006 13007 2010-10-04 David Goodwin <david_goodwin (a] apple.com> 13008 13009 Reviewed by Oliver Hunt. 13010 13011 ARMv7 JIT should take advantage of 2-byte branches to reduce code size 13012 https://bugs.webkit.org/show_bug.cgi?id=47007 13013 13014 * assembler/ARMv7Assembler.cpp: 13015 * assembler/ARMv7Assembler.h: 13016 (JSC::ARMv7Assembler::computeJumpType): 13017 (JSC::ARMv7Assembler::link): 13018 (JSC::ARMv7Assembler::canBeJumpT2): 13019 (JSC::ARMv7Assembler::canBeJumpT4): 13020 (JSC::ARMv7Assembler::linkBX): 13021 (JSC::ARMv7Assembler::linkJumpT4): 13022 (JSC::ARMv7Assembler::linkJumpT2): 13023 (JSC::ARMv7Assembler::linkJumpAbsolute): 13024 13025 2010-10-04 Gyuyoung Kim <gyuyoung.kim (a] samsung.com> 13026 13027 Reviewed by Antonio Gomes. 13028 13029 [EFL] Use fast malloc for WebKit EFL 13030 https://bugs.webkit.org/show_bug.cgi?id=46691 13031 13032 Use fast malloc for WebKit EFL because the fast malloc is to allocate 13033 memory quickly. 13034 13035 * wtf/CMakeListsEfl.txt: 13036 13037 2010-10-04 Oliver Hunt <oliver (a] apple.com> 13038 13039 Reviewed by Geoff Garen. 13040 13041 Lazily create activation objects 13042 https://bugs.webkit.org/show_bug.cgi?id=47107 13043 13044 Make it possible to lazily create the activation object 13045 for a function that needs one. This allows us to reduce 13046 the overhead of entering a function that may require 13047 an activation in some cases, but not always. 13048 13049 This does make exception handling a little more complex as 13050 it's now necessary to verify that a callframes activation 13051 has been created, and create it if not, in all of the 13052 paths used in exception handling. 13053 13054 We also need to add logic to check for the existence of 13055 the activation in the scoped_var opcodes, as well as 13056 op_ret, op_ret_object_or_this and op_tearoff_activation 13057 so that we can avoid creating an activation unnecesarily 13058 on function exit. 13059 13060 * bytecode/CodeBlock.cpp: 13061 (JSC::CodeBlock::dump): 13062 (JSC::CodeBlock::reparseForExceptionInfoIfNecessary): 13063 (JSC::CodeBlock::createActivation): 13064 * bytecode/CodeBlock.h: 13065 (JSC::CodeBlock::setActivationRegister): 13066 (JSC::CodeBlock::activationRegister): 13067 * bytecode/Opcode.h: 13068 * bytecompiler/BytecodeGenerator.cpp: 13069 (JSC::BytecodeGenerator::BytecodeGenerator): 13070 (JSC::BytecodeGenerator::emitNewFunctionInternal): 13071 (JSC::BytecodeGenerator::emitNewFunctionExpression): 13072 (JSC::BytecodeGenerator::createActivationIfNecessary): 13073 * bytecompiler/BytecodeGenerator.h: 13074 * interpreter/Interpreter.cpp: 13075 (JSC::Interpreter::resolveSkip): 13076 (JSC::Interpreter::resolveGlobalDynamic): 13077 (JSC::Interpreter::resolveBase): 13078 (JSC::Interpreter::unwindCallFrame): 13079 (JSC::Interpreter::throwException): 13080 (JSC::Interpreter::privateExecute): 13081 * jit/JIT.cpp: 13082 (JSC::JIT::privateCompileMainPass): 13083 * jit/JIT.h: 13084 * jit/JITCall32_64.cpp: 13085 (JSC::JIT::emit_op_ret): 13086 (JSC::JIT::emit_op_ret_object_or_this): 13087 * jit/JITOpcodes.cpp: 13088 (JSC::JIT::emit_op_end): 13089 (JSC::JIT::emit_op_get_scoped_var): 13090 (JSC::JIT::emit_op_put_scoped_var): 13091 (JSC::JIT::emit_op_tear_off_activation): 13092 (JSC::JIT::emit_op_ret): 13093 (JSC::JIT::emit_op_ret_object_or_this): 13094 (JSC::JIT::emit_op_create_activation): 13095 (JSC::JIT::emit_op_resolve_global_dynamic): 13096 * jit/JITOpcodes32_64.cpp: 13097 (JSC::JIT::emit_op_get_scoped_var): 13098 (JSC::JIT::emit_op_put_scoped_var): 13099 (JSC::JIT::emit_op_tear_off_activation): 13100 (JSC::JIT::emit_op_create_activation): 13101 * jit/JITStubs.cpp: 13102 (JSC::DEFINE_STUB_FUNCTION): 13103 13104 2010-10-04 Adam Barth <abarth (a] webkit.org> 13105 13106 Reviewed by Sam Weinig. 13107 13108 Remove ENABLE_SANDBOX 13109 https://bugs.webkit.org/show_bug.cgi?id=47032 13110 13111 * Configurations/FeatureDefines.xcconfig: 13112 13113 2010-10-01 Pratik Solanki <psolanki (a] apple.com> 13114 13115 Reviewed by Geoffrey Garen. 13116 Specify ALWAYS_INLINE at function declaration not function definition 13117 https://bugs.webkit.org/show_bug.cgi?id=46960 13118 13119 For functions defined with ALWAYS_INLINE, add the attribute to the declaration as well. 13120 13121 * bytecompiler/BytecodeGenerator.h: 13122 * wtf/FastMalloc.cpp: 13123 13124 2010-10-01 Kwang Yul Seo <skyul (a] company100.net> 13125 13126 Unreviewed. 13127 13128 [BREWMP] Change Collector BLOCK_SIZE to 64KB 13129 https://bugs.webkit.org/show_bug.cgi?id=46436 13130 13131 Lower BLOCK_SIZE to 64KB because Brew MP runs on low end devices. 13132 13133 * runtime/Collector.h: 13134 13135 2010-10-01 Viatcheslav Ostapenko <ostapenko.viatcheslav (a] nokia.com> 13136 13137 Reviewed by Andreas Kling. 13138 13139 [Qt] Stack overflow on symbian platform. 13140 https://bugs.webkit.org/show_bug.cgi?id=40598 13141 13142 Move big allocation in arrayProtoFuncToString from stack to heap. 13143 JSC::arrayProtoFuncToString function can be called recursivly and 13144 1K allocation on stack cahse stack overflow. 13145 Can be useful for other platforms with limited stack size. 13146 13147 * runtime/ArrayPrototype.cpp: 13148 (JSC::arrayProtoFuncToString): 13149 13150 2010-09-30 Kwang Yul Seo <skyul (a] company100.net> 13151 13152 Reviewed by Kent Tamura. 13153 13154 [BREWMP] Add a factory function which returns an instance wrapped in PlatformRefPtr. 13155 https://bugs.webkit.org/show_bug.cgi?id=46373 13156 13157 A Brew MP instance has reference count 1 when it is created, so call adoptPlatformRef 13158 to wrap the instance in PlatformRefPtr. 13159 13160 * wtf/brew/ShellBrew.h: 13161 (WTF::createRefPtrInstance): 13162 13163 2010-09-30 Kwang Yul Seo <skyul (a] company100.net> 13164 13165 Reviewed by Kent Tamura. 13166 13167 [BREWMP] Port PlatformRefPtr 13168 https://bugs.webkit.org/show_bug.cgi?id=46370 13169 13170 Implement refPlatformPtr and derefPlatformPtr to use PlatformRefPtr in Brew MP. 13171 13172 * wtf/brew/RefPtrBrew.h: Added. 13173 (WTF::refPlatformPtr): 13174 (WTF::derefPlatformPtr): 13175 13176 2010-09-29 Sam Weinig <sam (a] webkit.org> 13177 13178 Reviewed by Darin Adler. 13179 13180 Add additional checks to StringBuffer. 13181 <rdar://problem/7756381> 13182 13183 * wtf/text/StringBuffer.h: 13184 (WTF::StringBuffer::StringBuffer): 13185 (WTF::StringBuffer::resize): 13186 13187 2010-09-30 Chris Marrin <cmarrin (a] apple.com> 13188 13189 Reviewed by Simon Fraser. 13190 13191 Make 2D accelerated canvas rendering build on Mac 13192 https://bugs.webkit.org/show_bug.cgi?id=46007 13193 13194 Added ACCELERATED_2D_CANVAS to FeatureDefines 13195 13196 * Configurations/FeatureDefines.xcconfig: 13197 13198 2010-09-30 Kevin Ollivier <kevino (a] theolliviers.com> 13199 13200 [wx] wxMSW build fix. Make sure we copy the compiler flags and remove exception handling from 13201 the copy so as not to alter global settings. 13202 13203 * wscript: 13204 13205 2010-09-30 Peter Varga <pvarga (a] inf.u-szeged.hu> 13206 13207 Reviewed by Gavin Barraclough. 13208 13209 The case-insensitivity backreference checking isn't working with YARR 13210 Interpreter 13211 https://bugs.webkit.org/show_bug.cgi?id=46882 13212 13213 Add ignorecase checking to the Interpreter::tryConsumeBackReference() function. 13214 13215 * yarr/RegexInterpreter.cpp: 13216 (JSC::Yarr::Interpreter::tryConsumeBackReference): 13217 13218 2010-09-30 Kwang Yul Seo <skyul (a] company100.net> 13219 13220 Reviewed by Andreas Kling. 13221 13222 [BREWMP] Leave initializeRandomNumberGenerator empty. 13223 https://bugs.webkit.org/show_bug.cgi?id=46851 13224 13225 On Brew MP, AEECLSID_RANDOM initializes itself. 13226 13227 * wtf/RandomNumberSeed.h: 13228 (WTF::initializeRandomNumberGenerator): 13229 13230 2010-09-30 Gabor Loki <loki (a] webkit.org> 13231 13232 Reviewed by Csaba Osztrogonc. 13233 13234 Remove unnecessary cacheFlush calls from Thumb-2 13235 https://bugs.webkit.org/show_bug.cgi?id=46702 13236 13237 * assembler/ARMv7Assembler.h: 13238 (JSC::ARMv7Assembler::relinkCall): 13239 (JSC::ARMv7Assembler::repatchInt32): 13240 (JSC::ARMv7Assembler::repatchPointer): 13241 13242 2010-09-29 Patrick Gansterer <paroga (a] webkit.org> 13243 13244 Unreviewed. 13245 13246 Next try to fix cygwin build. 13247 13248 * wtf/Assertions.cpp: 13249 13250 2010-09-29 Patrick Gansterer <paroga (a] webkit.org> 13251 13252 Unreviewed. 13253 13254 Build fix for cygwin #2. It's OS(WINDOWS), not OS(WIN). 13255 13256 * wtf/Assertions.cpp: 13257 13258 2010-09-29 Patrick Gansterer <paroga (a] webkit.org> 13259 13260 Unreviewed. 13261 13262 Build fix for cygwin. 13263 13264 * wtf/Assertions.cpp: 13265 13266 2010-09-29 Patrick Gansterer <paroga (a] webkit.org> 13267 13268 Reviewed by Andreas Kling. 13269 13270 [WINCE] Buildfix for Assertions.cpp after r68511. 13271 https://bugs.webkit.org/show_bug.cgi?id=46807 13272 13273 Some, but not all WinCE environments have support for IsDebuggerPresent(). 13274 Add HAVE(ISDEBUGGERPRESENT) to make this a build option. 13275 HAVE(ISDEBUGGERPRESENT) will be 1 for all OS(WIN) by default. 13276 13277 * wtf/Assertions.cpp: 13278 * wtf/Platform.h: 13279 13280 2010-09-29 Peter Varga <pvarga (a] inf.u-szeged.hu> 13281 13282 Reviewed by Csaba Osztrogonc. 13283 13284 JSC compile fails on 32bit platform when Regexp Tracing is enabled 13285 https://bugs.webkit.org/show_bug.cgi?id=46713 13286 13287 Fix the cast of pointer in regexp tracing to avoid the warning. 13288 13289 * runtime/RegExp.cpp: 13290 (JSC::RegExp::match): 13291 13292 2010-09-28 Anders Carlsson <andersca (a] apple.com> 13293 13294 Reviewed by Sam Weinig. 13295 13296 Begin hooking up painting in the plug-in process 13297 https://bugs.webkit.org/show_bug.cgi?id=46766 13298 13299 * JavaScriptCore.exp: 13300 Add tryFastRealloc, used by WebKit2. 13301 13302 2010-09-28 Philippe Normand <pnormand (a] igalia.com> 13303 13304 Reviewed by Martin Robinson. 13305 13306 Guard GRefPtr/GOwnPtr files with ENABLE(GLIB_SUPPORT) 13307 https://bugs.webkit.org/show_bug.cgi?id=46721 13308 13309 Enable GOwnPtr/GRefPtr build only if glib support has been 13310 explicitly enabled using the WTF_ENABLE_GLIB_SUPPORT macro. 13311 13312 * wtf/gobject/GOwnPtr.cpp: 13313 * wtf/gobject/GOwnPtr.h: 13314 * wtf/gobject/GRefPtr.cpp: 13315 * wtf/gobject/GRefPtr.h: 13316 13317 2010-09-28 smail Dnmez <ismail (a] namtrac.org> 13318 13319 Reviewed by Andreas Kling. 13320 13321 Test for WINCE instead of WINCEBASIC, compiler always defines WINCE. 13322 Remove reference to unexisting path JavaScriptCore/os-wince. 13323 13324 * JavaScriptCore.pri: 13325 * wtf/Assertions.cpp: 13326 13327 2010-09-27 Michael Saboff <msaboff (a] apple.com> 13328 13329 Reviewed by Geoffrey Garen. 13330 13331 Changed the initialization of JSArray objects to have space for 13332 3 elements for the constructor that takes a ArgList argument. 13333 This improves v8-deltablue performance by about 2.8% by reducing 13334 the number of realloc() calls. 13335 https://bugs.webkit.org/show_bug.cgi?id=46664 13336 13337 * runtime/JSArray.cpp: 13338 (JSC::JSArray::JSArray): 13339 13340 2010-09-27 Gavin Barraclough <barraclough (a] apple.com> 13341 13342 Reviewed by Darin Adler. 13343 13344 Bug 46680 - Inlining string concatenation can regress interpreter performance 13345 <rdar://problem/8362752> REGRESSION: ~6.4% sunspider regression in interpreter 13346 Do not inline calls to string concatenation in the interpret loop. 13347 13348 * interpreter/Interpreter.cpp: 13349 (JSC::concatenateStrings): 13350 (JSC::Interpreter::privateExecute): 13351 13352 2010-09-27 Anders Carlsson <andersca (a] apple.com> 13353 13354 Fix thinko. 13355 13356 * runtime/JSCell.h: 13357 13358 2010-09-27 Anders Carlsson <andersca (a] apple.com> 13359 13360 Reviewed by Adam Roben. 13361 13362 Try to fix Windows build. 13363 13364 * runtime/JSCell.h: 13365 (JSC::MSVCBugWorkaround::MSVCBugWorkaround): 13366 (JSC::MSVCBugWorkaround::~MSVCBugWorkaround): 13367 13368 2010-09-27 Erik Arvidsson <arv (a] chromium.org> 13369 13370 Reviewed by Darin Adler. 13371 13372 Add operator == for AtomicString and Vector<Uchar> 13373 https://bugs.webkit.org/show_bug.cgi?id=46509 13374 13375 * JavaScriptCore.exp: 13376 * wtf/text/AtomicString.cpp: 13377 (WTF::operator==): 13378 * wtf/text/AtomicString.h: 13379 (WTF::operator==): 13380 (WTF::operator!=): 13381 13382 2010-09-27 Anders Carlsson <andersca (a] apple.com> 13383 13384 Try to fix the Windows build. 13385 13386 * wtf/Noncopyable.h: 13387 13388 2010-09-26 Anders Carlsson <andersca (a] apple.com> 13389 13390 Reviewed by Alexey Proskuryakov and Adam Barth. 13391 13392 Add WTF_MAKE_NONCOPYABLE macro 13393 https://bugs.webkit.org/show_bug.cgi?id=46589 13394 13395 Going forward, we'd like to get rid of the Noncopyable and FastAllocBase classes. The 13396 reason for this is that the Itanium C++ ABI states that no empty classes of the same type 13397 can be laid out at the same offset in the class. This can result in objects getting larger 13398 which leads to memory regressions. (One example of this is the String class which grew by 13399 sizeof(void*) when both its base class and its first member variable inherited indirectly 13400 from FastAllocBase). 13401 13402 * wtf/Noncopyable.h: 13403 Add a WTF_MAKE_NONCOPYABLE macro and get rid of NoncopyableCustomAllocated. 13404 13405 * runtime/JSCell.h: 13406 * wtf/RefCounted.h: 13407 Don't inherit from NoncopyableCustomAllocated. Instead, use WTF_MAKE_NONCOPYABLE. 13408 13409 2010-09-27 Philippe Normand <pnormand (a] igalia.com> 13410 13411 Reviewed by Martin Robinson. 13412 13413 [GTK] use ENABLE(GLIB_SUPPORT) 13414 https://bugs.webkit.org/show_bug.cgi?id=46630 13415 13416 * wtf/Platform.h: Include GTypedefs.h only if glib support 13417 is explicitly enabled. 13418 13419 2010-09-25 Holger Hans Peter Freyther <holger (a] moiji-mobile.com> 13420 13421 Reviewed by Adam Barth. 13422 13423 jsc: Document the strcat opcode. 13424 https://bugs.webkit.org/show_bug.cgi?id=46571 13425 13426 * interpreter/Interpreter.cpp: 13427 (JSC::Interpreter::privateExecute): 13428 13429 2010-09-21 Holger Hans Peter Freyther <holger (a] moiji-mobile.com> 13430 13431 Reviewed by Adam Barth. 13432 13433 make-bytecode-docs.pl: Add a comment to the generated HTML 13434 https://bugs.webkit.org/show_bug.cgi?id=46570 13435 13436 Generate an HTML Comment that this file was generated from 13437 Interpreter.cpp with the make-bytecode-docs.pl script. 13438 13439 * docs/make-bytecode-docs.pl: 13440 13441 2010-09-27 Patrick Gansterer <paroga (a] webkit.org> 13442 13443 Reviewed by Adam Barth. 13444 13445 Remove WTF::stringHash functions 13446 https://bugs.webkit.org/show_bug.cgi?id=46520 13447 13448 Since r68289 the stringHash functions are only wrappers around StringHasher::createHash. 13449 So use StringHasher::createHash directly and remove stringHash. 13450 13451 * wtf/StringHashFunctions.h: 13452 * wtf/text/StringImpl.h: 13453 (WTF::StringImpl::computeHash): Use WTF::StringHasher::createHash directly. 13454 13455 2010-09-26 Patrick Gansterer <paroga (a] webkit.org> 13456 13457 Reviewed by Adam Barth. 13458 13459 Add WTF::StringHasher::createBlobHash 13460 https://bugs.webkit.org/show_bug.cgi?id=46514 13461 13462 Add this function for hashing FormElementKey and QualifiedNameComponents. 13463 13464 * wtf/StringHashFunctions.h: 13465 (WTF::StringHasher::createBlobHash): 13466 13467 2010-09-26 Patrick Gansterer <paroga (a] webkit.org> 13468 13469 Reviewed by Adam Barth. 13470 13471 REGRESSION (r68289): Assertion failure in StringHasher::addCharacter() (ch != invalidCharacterValue) 13472 running websocket/tests/bad-sub-protocol-non-ascii.html 13473 https://bugs.webkit.org/show_bug.cgi?id=46553 13474 13475 Because we use StringHasher for binary data too, so the check for invalid unicode input is wrong. 13476 Add an additional member variable to indicate if we have an pending character 13477 instead of only using an invalid character for this purpose. 13478 13479 * wtf/StringHashFunctions.h: 13480 (WTF::StringHasher::StringHasher): 13481 (WTF::StringHasher::addCharacters): 13482 (WTF::StringHasher::addCharacter): 13483 (WTF::StringHasher::hash): 13484 13485 2010-09-26 Mark Hahnenberg <mhahnenb (a] gmail.com> 13486 13487 Reviewed by Oliver Hunt. 13488 13489 valueOf called in wrong order in atan2 and date constructors. 13490 https://bugs.webkit.org/show_bug.cgi?id=26978 13491 13492 Fixed the bug where the arguments to atan2 were being evaluated 13493 out of order. 13494 13495 * runtime/MathObject.cpp: 13496 (JSC::mathProtoFuncATan2): 13497 13498 2010-09-26 Mark Hahnenberg <mhahnenb (a] gmail.com> 13499 13500 Reviewed by Oliver Hunt. 13501 13502 valueOf called in wrong order in atan2 and date constructors. 13503 https://bugs.webkit.org/show_bug.cgi?id=26978 13504 13505 Fixed the issue where the parameters to the Date constructor 13506 were being evaluated to numbers more than once. 13507 13508 * runtime/DateConstructor.cpp: 13509 (JSC::constructDate): 13510 (JSC::dateUTC): 13511 13512 2010-09-25 Oliver Hunt <oliver (a] apple.com> 13513 13514 Fix various builds 13515 13516 Relearning the lesson that last minute changes are bad. 13517 13518 * bytecode/CodeBlock.cpp: 13519 (JSC::CodeBlock::dump): 13520 * bytecompiler/BytecodeGenerator.cpp: 13521 (JSC::BytecodeGenerator::emitGetArgumentsLength): 13522 * jit/JITOpcodes.cpp: 13523 (JSC::JIT::emitSlow_op_get_argument_by_val): 13524 13525 2010-09-25 Oliver Hunt <oliver (a] apple.com> 13526 13527 Reviewed by Cameron Zwarich. 13528 13529 Avoid constructing arguments object when accessing length and index properties 13530 https://bugs.webkit.org/show_bug.cgi?id=46572 13531 13532 Add opcodes to read argument length and properties, and then implement them. 13533 Much like other lazy opcodes these opcodes take a fast path when the arguments 13534 object has not been instantiated, and fall back on generic access mechanisms 13535 if they are acting on an instantiated object. 13536 13537 3% win on v8-earleyboyer, no change elsewhere. 13538 13539 * bytecode/CodeBlock.cpp: 13540 (JSC::CodeBlock::dump): 13541 * bytecode/Opcode.h: 13542 * bytecompiler/BytecodeGenerator.cpp: 13543 (JSC::BytecodeGenerator::emitGetArgumentsLength): 13544 (JSC::BytecodeGenerator::emitGetArgumentByVal): 13545 * bytecompiler/BytecodeGenerator.h: 13546 * bytecompiler/NodesCodegen.cpp: 13547 (JSC::BracketAccessorNode::emitBytecode): 13548 (JSC::DotAccessorNode::emitBytecode): 13549 * interpreter/Interpreter.cpp: 13550 (JSC::Interpreter::privateExecute): 13551 * jit/JIT.cpp: 13552 (JSC::JIT::privateCompileMainPass): 13553 (JSC::JIT::privateCompileSlowCases): 13554 * jit/JIT.h: 13555 * jit/JITOpcodes.cpp: 13556 (JSC::JIT::emit_op_get_arguments_length): 13557 (JSC::JIT::emitSlow_op_get_arguments_length): 13558 (JSC::JIT::emit_op_get_argument_by_val): 13559 (JSC::JIT::emitSlow_op_get_argument_by_val): 13560 * jit/JITOpcodes32_64.cpp: 13561 (JSC::JIT::emit_op_get_arguments_length): 13562 (JSC::JIT::emitSlow_op_get_arguments_length): 13563 (JSC::JIT::emit_op_get_argument_by_val): 13564 (JSC::JIT::emitSlow_op_get_argument_by_val): 13565 13566 2010-09-25 Patrick Gansterer <paroga (a] webkit.org> 13567 13568 Unreviewed. 13569 13570 Fix typo in StringHasher class 13571 https://bugs.webkit.org/show_bug.cgi?id=45970 13572 13573 * wtf/StringHashFunctions.h: 13574 (WTF::StringHasher::createHash): 13575 13576 2010-09-24 Patrick Gansterer <paroga (a] paroga.com> 13577 13578 Reviewed by Gavin Barraclough. 13579 13580 Add WTF::StringHasher 13581 https://bugs.webkit.org/show_bug.cgi?id=45970 13582 13583 StringHasher is a class for calculation stringHash out of character string. 13584 This class will unify the different usages of the same algorithm. 13585 13586 * wtf/StringHashFunctions.h: 13587 (WTF::StringHasher::StringHasher): 13588 (WTF::StringHasher::addCharacters): 13589 (WTF::StringHasher::addCharacter): 13590 (WTF::StringHasher::hash): 13591 (WTF::StringHasher::createHash): 13592 (WTF::StringHasher::defaultCoverter): 13593 (WTF::StringHasher::addCharactersToHash): 13594 (WTF::stringHash): 13595 13596 2010-09-24 Oliver Hunt <oliver (a] apple.com> 13597 13598 Reviewed by Geoffrey Garen. 13599 13600 Variable declarations inside a catch scope don't get propogated to the parent scope 13601 https://bugs.webkit.org/show_bug.cgi?id=46501 13602 13603 Add logic to make variable declaration look for a scope for the 13604 new variable. This allows us to create a scope (eg. for catch) 13605 and then seal it, so that additional variable declarations 13606 contained are propogated to the correct target. Strangely this 13607 comes out as a performance win, but I think it's mostly cache 13608 effects. 13609 13610 * parser/JSParser.cpp: 13611 (JSC::JSParser::Scope::Scope): 13612 (JSC::JSParser::Scope::preventNewDecls): 13613 (JSC::JSParser::Scope::allowsNewDecls): 13614 (JSC::JSParser::declareVariable): 13615 (JSC::JSParser::parseVarDeclarationList): 13616 (JSC::JSParser::parseConstDeclarationList): 13617 (JSC::JSParser::parseTryStatement): 13618 (JSC::JSParser::parseFormalParameters): 13619 (JSC::JSParser::parseFunctionDeclaration): 13620 13621 2010-09-24 smail Dnmez <ismail (a] namtrac.org> 13622 13623 Reviewed by Csaba Osztrogonc. 13624 13625 Add a Windows compatible inttypes.h header to fix WinCE build. 13626 https://bugs.webkit.org/show_bug.cgi?id=46463 13627 13628 * os-win32/inttypes.h: Added. 13629 13630 2010-09-24 Oliver Hunt <oliver (a] apple.com> 13631 13632 Reviewed by Gavin Barraclough. 13633 13634 REGRESSION(r68223): It broke 2-3 tests on bots (Requested by Ossy on #webkit). 13635 https://bugs.webkit.org/show_bug.cgi?id=46448 13636 13637 Roll this back in, with additional logic to prevent us from delaying construction 13638 of functions named "arguments" 13639 13640 * bytecode/CodeBlock.cpp: 13641 (JSC::CodeBlock::dump): 13642 * bytecode/Opcode.h: 13643 * bytecompiler/BytecodeGenerator.cpp: 13644 (JSC::BytecodeGenerator::BytecodeGenerator): 13645 (JSC::BytecodeGenerator::emitInitLazyRegister): 13646 (JSC::BytecodeGenerator::registerFor): 13647 (JSC::BytecodeGenerator::createLazyRegisterIfNecessary): 13648 (JSC::BytecodeGenerator::constRegisterFor): 13649 (JSC::BytecodeGenerator::emitNewFunction): 13650 (JSC::BytecodeGenerator::emitLazyNewFunction): 13651 (JSC::BytecodeGenerator::emitNewFunctionInternal): 13652 * bytecompiler/BytecodeGenerator.h: 13653 * interpreter/Interpreter.cpp: 13654 (JSC::Interpreter::privateExecute): 13655 * jit/JIT.cpp: 13656 (JSC::JIT::privateCompileMainPass): 13657 * jit/JIT.h: 13658 * jit/JITOpcodes.cpp: 13659 (JSC::JIT::emit_op_init_lazy_reg): 13660 (JSC::JIT::emit_op_new_func): 13661 * jit/JITOpcodes32_64.cpp: 13662 (JSC::JIT::emit_op_init_lazy_reg): 13663 * parser/Nodes.h: 13664 (JSC::ScopeNode::needsActivationForMoreThanVariables): 13665 13666 2010-09-23 Sheriff Bot <webkit.review.bot (a] gmail.com> 13667 13668 Unreviewed, rolling out r68223. 13669 http://trac.webkit.org/changeset/68223 13670 https://bugs.webkit.org/show_bug.cgi?id=46448 13671 13672 It broke 2-3 tests on bots (Requested by Ossy on #webkit). 13673 13674 * bytecode/CodeBlock.cpp: 13675 (JSC::CodeBlock::dump): 13676 * bytecode/Opcode.h: 13677 * bytecompiler/BytecodeGenerator.cpp: 13678 (JSC::BytecodeGenerator::BytecodeGenerator): 13679 (JSC::BytecodeGenerator::registerFor): 13680 (JSC::BytecodeGenerator::constRegisterFor): 13681 (JSC::BytecodeGenerator::emitNewFunction): 13682 * bytecompiler/BytecodeGenerator.h: 13683 * interpreter/Interpreter.cpp: 13684 (JSC::Interpreter::privateExecute): 13685 * jit/JIT.cpp: 13686 (JSC::JIT::privateCompileMainPass): 13687 * jit/JIT.h: 13688 * jit/JITOpcodes.cpp: 13689 (JSC::JIT::emit_op_new_func): 13690 (JSC::JIT::emit_op_init_arguments): 13691 * jit/JITOpcodes32_64.cpp: 13692 (JSC::JIT::emit_op_new_func): 13693 (JSC::JIT::emit_op_init_arguments): 13694 * parser/Nodes.h: 13695 13696 2010-09-23 Oliver Hunt <oliver (a] apple.com> 13697 13698 Reviewed by Geoffrey Garen. 13699 13700 Delay construction of functions that aren't captured 13701 https://bugs.webkit.org/show_bug.cgi?id=46433 13702 13703 If a function isn't captured by an activation there's no 13704 way it can be accessed indirectly, so we can delay the 13705 construction until it's used (similar to what we do with 13706 arguments). We rename the existing op_init_arguments to 13707 op_init_lazy_reg and removed its implicit handling of 13708 the anonymous argument register, and make op_new_function 13709 take a parameter to indicate whether it should null check 13710 the target slot before creating the function object. 13711 13712 * bytecode/CodeBlock.cpp: 13713 (JSC::CodeBlock::dump): 13714 * bytecode/Opcode.h: 13715 * bytecompiler/BytecodeGenerator.cpp: 13716 (JSC::BytecodeGenerator::BytecodeGenerator): 13717 (JSC::BytecodeGenerator::emitInitLazyRegister): 13718 (JSC::BytecodeGenerator::registerFor): 13719 (JSC::BytecodeGenerator::createLazyRegisterIfNecessary): 13720 (JSC::BytecodeGenerator::constRegisterFor): 13721 (JSC::BytecodeGenerator::emitNewFunction): 13722 (JSC::BytecodeGenerator::emitLazyNewFunction): 13723 (JSC::BytecodeGenerator::emitNewFunctionInternal): 13724 * bytecompiler/BytecodeGenerator.h: 13725 * interpreter/Interpreter.cpp: 13726 (JSC::Interpreter::privateExecute): 13727 * jit/JIT.cpp: 13728 (JSC::JIT::privateCompileMainPass): 13729 * jit/JIT.h: 13730 * jit/JITOpcodes.cpp: 13731 (JSC::JIT::emit_op_init_lazy_reg): 13732 (JSC::JIT::emit_op_new_func): 13733 * jit/JITOpcodes32_64.cpp: 13734 (JSC::JIT::emit_op_init_lazy_reg): 13735 * parser/Nodes.h: 13736 (JSC::ScopeNode::needsActivationForMoreThanVariables): 13737 13738 2010-09-23 David Kilzer <ddkilzer (a] apple.com> 13739 13740 <rdar://problem/8460731> ~9.9% speedup when compiling interpreter with llvm-gcc-4.2 13741 https://bugs.webkit.org/show_bug.cgi?id=46423 13742 13743 Reviewed by Oliver Hunt. 13744 13745 * interpreter/Interpreter.cpp: 13746 (JSC::Interpreter::privateExecute): Disable the gcc computed 13747 goto hacks added in r55564 when compiling with llvm-gcc-4.2. 13748 13749 2010-09-23 Lucas De Marchi <lucas.demarchi (a] profusion.mobi> 13750 13751 Reviewed by Darin Adler. 13752 13753 Fix usage of enum as if it was a define 13754 https://bugs.webkit.org/show_bug.cgi?id=46355 13755 13756 pthread.h defines PTHREAD_MUTEX_DEFAULT and PTHREAD_MUTEX_NORMAL as an 13757 enum. Hence, it cannot be used by the preprocessor which always 13758 evaluates that condition as true. This was giving a warning when 13759 compiling with gcc and "-Wundef" flag. 13760 13761 The second path, when PTHREAD_MUTEX_DEFAULT is not the same of 13762 PTHREAD_MUTEX_NORMAL, is not slow. So, let's eliminate the first path 13763 and get rid of that #if. 13764 13765 * wtf/ThreadingPthreads.cpp: Always call pthread_mutexattr_init() to 13766 set mutex type to PTHREAD_MUTEX_NORMAL. 13767 (WTF::Mutex::Mutex): 13768 13769 2010-09-23 Michael Saboff <msaboff (a] apple.com> 13770 13771 Reviewed by Geoffrey Garen. 13772 13773 Removed extraneous truncation of ovector on entry and error exit. 13774 Changed the initialization to -1 of vector to only initialize 13775 the start indecies, which is sufficient for the pattern/subpatterns. 13776 Changed the JIT code to not clear the end index for subpatterns 13777 as it isn't needed. These changes are worth ~2.7% on v8-regexp. 13778 https://bugs.webkit.org/show_bug.cgi?id=46404 13779 13780 * runtime/RegExp.cpp: 13781 (JSC::RegExp::match): 13782 * yarr/RegexJIT.cpp: 13783 (JSC::Yarr::RegexGenerator::generateParenthesesSingle): 13784 13785 2010-09-22 Oliver Hunt <oliver (a] apple.com> 13786 13787 Reviewed by Geoff Garen. 13788 13789 Only copy captured variables into activation 13790 https://bugs.webkit.org/show_bug.cgi?id=46330 13791 13792 We now track free variable information which means that 13793 we no longer need to copy every variable defined in a 13794 function. With this patch activations only retain those 13795 variables needed for correctness. In order to interact 13796 safely with the inspector this means that JSActivation 13797 now provides its own lookup functions so it can avoid 13798 trying to read or write to variables that have been 13799 optimised out. 13800 13801 * bytecode/CodeBlock.h: 13802 * bytecompiler/BytecodeGenerator.cpp: 13803 (JSC::BytecodeGenerator::BytecodeGenerator): 13804 * parser/Nodes.h: 13805 (JSC::ScopeNode::capturedVariableCount): 13806 (JSC::ScopeNode::captures): 13807 * runtime/Arguments.h: 13808 (JSC::JSActivation::copyRegisters): 13809 * runtime/Executable.cpp: 13810 (JSC::FunctionExecutable::FunctionExecutable): 13811 (JSC::FunctionExecutable::compileForCallInternal): 13812 (JSC::FunctionExecutable::compileForConstructInternal): 13813 * runtime/Executable.h: 13814 (JSC::FunctionExecutable::capturedVariableCount): 13815 * runtime/JSActivation.cpp: 13816 (JSC::JSActivation::markChildren): 13817 (JSC::JSActivation::symbolTableGet): 13818 (JSC::JSActivation::symbolTablePut): 13819 (JSC::JSActivation::getOwnPropertyNames): 13820 (JSC::JSActivation::symbolTablePutWithAttributes): 13821 * runtime/JSActivation.h: 13822 13823 2010-09-23 Ismail Donmez <ismail (a] namtrac.org> 13824 13825 Reviewed by Andreas Kling. 13826 13827 Fix jsc.exe build for Windows CE 13828 13829 * jsc.pro: Add mmtimer.lib for Windows CE. 13830 13831 2010-09-23 Ismail Donmez <ismail (a] namtrac.org> 13832 13833 Unreviewed. 13834 13835 JIT should be disabled on Windows CE. Broken in r64176. 13836 13837 * wtf/Platform.h: 13838 13839 2010-09-23 Peter Varga <pvarga (a] inf.u-szeged.hu> 13840 13841 Reviewed by Gavin Barraclough. 13842 13843 Reduce the number of BOL checks in YARR Interpreter 13844 https://bugs.webkit.org/show_bug.cgi?id=46260 13845 13846 Extend the YARR Interpreter with an optimization which reduces the number of 13847 BOL assertion checks. If a "TypeBodyAlternative" byteTerm is followed by a 13848 "TypeAssertionBOL" byteTerm it will be checked just one time. 13849 13850 * yarr/RegexInterpreter.cpp: 13851 (JSC::Yarr::Interpreter::matchDisjunction): 13852 (JSC::Yarr::ByteCompiler::compile): 13853 (JSC::Yarr::ByteCompiler::regexBegin): 13854 (JSC::Yarr::ByteCompiler::alternativeBodyDisjunction): 13855 (JSC::Yarr::ByteCompiler::emitDisjunction): 13856 * yarr/RegexInterpreter.h: 13857 (JSC::Yarr::ByteTerm::BodyAlternativeBegin): 13858 (JSC::Yarr::ByteTerm::BodyAlternativeDisjunction): 13859 (JSC::Yarr::ByteTerm::BodyAlternativeEnd): 13860 (JSC::Yarr::ByteTerm::AlternativeBegin): 13861 (JSC::Yarr::ByteTerm::AlternativeDisjunction): 13862 (JSC::Yarr::ByteTerm::AlternativeEnd): 13863 13864 2010-09-22 Michael Saboff <msaboff (a] apple.com> 13865 13866 Reviewed by Gavin Barraclough. 13867 13868 Fixed the cross over from alternatives executed once and 13869 those that loop. This fixed the problem where the index 13870 was getting messed up for looping alternatives causing an 13871 infinite loop. 13872 https://bugs.webkit.org/show_bug.cgi?id=46189 13873 13874 * yarr/RegexJIT.cpp: 13875 (JSC::Yarr::RegexGenerator::generateDisjunction): 13876 13877 2010-09-22 Steve Falkenburg <sfalken (a] apple.com> 13878 13879 Rubber stamped by Jon Honeycutt. 13880 13881 Allow jsc.exe to be run against unversioned ICU. 13882 13883 * JavaScriptCore.vcproj/jsc/jscCommon.vsprops: 13884 13885 2010-09-22 Kwang Yul Seo <skyul (a] company100.net> 13886 13887 Reviewed by Laszlo Gombos. 13888 13889 Use "typedef wchar_t JSChar" when compiled with RVCT 13890 https://bugs.webkit.org/show_bug.cgi?id=40651 13891 13892 Use wchar_t for JSChar and UChar when compiled with RVCT. 13893 Linux is the exception for this rule. 13894 13895 * API/JSStringRef.h: 13896 * wtf/unicode/qt4/UnicodeQt4.h: 13897 13898 2010-09-22 Oliver Hunt <oliver (a] apple.com> 13899 13900 Reviewed by Gavin Barraclough. 13901 13902 [INTERPRETER] Two tests fail with SputnikError: #1.1: if argArray is neither an array nor an arguments object (see 10.1.8), a TypeError exception is thrown 13903 https://bugs.webkit.org/show_bug.cgi?id=44245 13904 13905 Remove incorrect code from op_load_varargs in the interpreter. 13906 13907 * interpreter/Interpreter.cpp: 13908 (JSC::Interpreter::privateExecute): 13909 13910 2010-09-22 Oliver Hunt <oliver (a] apple.com> 13911 13912 Reviewed by Gavin Barraclough. 13913 13914 [JIT] fast/js/sputnik/Conformance/15_Native_Objects/15.3_Function/15.3.5/S15.3.5.3_A2_T6.html fails 13915 https://bugs.webkit.org/show_bug.cgi?id=44246 13916 13917 JIT code generated for instanceof was not checking to ensure that the prototype property was 13918 an object, this patch ensures that it does. 13919 13920 * jit/JITOpcodes.cpp: 13921 (JSC::JIT::emit_op_instanceof): 13922 (JSC::JIT::emitSlow_op_instanceof): 13923 * jit/JITOpcodes32_64.cpp: 13924 (JSC::JIT::emit_op_instanceof): 13925 (JSC::JIT::emitSlow_op_instanceof): 13926 13927 2010-09-22 Patrick Gansterer <paroga (a] webkit.org> 13928 13929 Reviewed by Darin Adler. 13930 13931 Inline UTF8SequenceLength 13932 https://bugs.webkit.org/show_bug.cgi?id=45589 13933 13934 * wtf/unicode/UTF8.cpp: 13935 (WTF::Unicode::convertUTF8ToUTF16): Use inline version of UTF8SequenceLength to improve performance. 13936 13937 2010-09-21 Oliver Hunt <oliver (a] apple.com> 13938 13939 RS=Gavin Barraclough. 13940 13941 Fix codeblock dumping 13942 13943 * bytecode/CodeBlock.cpp: 13944 (JSC::CodeBlock::dump): 13945 * runtime/Executable.h: 13946 (JSC::ScriptExecutable::ScriptExecutable): 13947 13948 2010-09-21 Oliver Hunt <oliver (a] apple.com> 13949 13950 Reviewed by Geoffrey Garen. 13951 13952 Speed up function.apply(..., arguments) 13953 https://bugs.webkit.org/show_bug.cgi?id=46207 13954 13955 Add code to do argument copying inline in the case 13956 where we're using Function.apply to forward our arguments 13957 directly. 13958 13959 * jit/JIT.cpp: 13960 (JSC::JIT::privateCompileSlowCases): 13961 Splitted op_load_varargs into fast and slow paths, so add the call 13962 to the slow path generator. 13963 * jit/JIT.h: 13964 * jit/JITCall32_64.cpp: 13965 Remove 32bit specific emit_op_load_varargs as the logic is the 13966 same for all value representations 13967 * jit/JITOpcodes.cpp: 13968 (JSC::JIT::emit_op_load_varargs): 13969 Copy arguments inline 13970 (JSC::JIT::emitSlow_op_load_varargs): 13971 13972 2010-09-21 Geoffrey Garen <ggaren (a] apple.com> 13973 13974 Reviewed by Oliver Hunt. 13975 13976 <rdar://problem/8363003> REGRESSION: ~1.4% sunspider regression in 13977 interpreter due to 54724 and 54596 13978 13979 Fixed a typo (using "UNLIKELY" instead of "LIKELY"). 13980 13981 * wtf/PassRefPtr.h: 13982 (WTF::refIfNotNull): 13983 (WTF::derefIfNotNull): It is likely that m_ptr != 0 because most RefPtrs 13984 hold real data. Also, in cases where they do not hold real data, the 13985 compiler usually sees a call to release() right before the call to the 13986 destructor, so it can probably optimize out the test completely. 13987 13988 2010-09-21 Fridrich Strba <fridrich.strba (a] bluewin.ch> 13989 13990 Reviewed by Martin Robinson. 13991 13992 Build issues with Windows versions of the GTK+ port 13993 https://bugs.webkit.org/show_bug.cgi?id=45844 13994 13995 Link with winmm.dll when necessary and specify the executable extension 13996 explicitely so that the Programs/jsc-@WEBKITGTK_API_MAJOR_VERSION@ 13997 rule actually works. 13998 13999 Don't try to build the ThreadSpecificWin.cpp since GTK+ port uses 14000 a section in ThreadSpecific.cpp 14001 14002 * GNUmakefile.am: 14003 14004 2010-09-21 Martin Robinson <mrobinson (a] igalia.com> 14005 14006 Reviewed by Xan Lopez. 14007 14008 [GTK] 'make dist' should be fixed in preparation for the next release 14009 https://bugs.webkit.org/show_bug.cgi?id=46129 14010 14011 * GNUmakefile.am: Update the sources list to include missing headers. 14012 14013 2010-09-21 Dave Tapuska <dtapuska (a] rim.com> 14014 14015 Reviewed by Csaba Osztrogonc. 14016 14017 https://bugs.webkit.org/show_bug.cgi?id=45673 14018 14019 r65596 caused ENABLE_PROFILER_REFERENCE_OFFSET to not be 14020 8 byte aligned. A non 8 byte divisible value for this will 14021 cause the sp to become non 8 byte aligned. 14022 14023 Verify and correct offset values that r65596 effected that 14024 weren't updated. 14025 14026 * jit/JITStubs.cpp: 14027 * jit/JITStubs.h: 14028 14029 2010-09-21 Xan Lopez <xlopez (a] igalia.com> 14030 14031 Reviewed by Martin Robinson. 14032 14033 Fix Opcode stats compilation 14034 https://bugs.webkit.org/show_bug.cgi?id=46079 14035 14036 The FixedArray API had changed, and <stdio.h> was not included for 14037 printf. 14038 14039 * bytecode/Opcode.cpp: 14040 (JSC::OpcodeStats::~OpcodeStats): 14041 14042 2010-09-20 Michael Saboff <msaboff (a] apple.com> 14043 14044 Reviewed by Gavin Barraclough. 14045 14046 Fixed detection of alternative smaller than the first alternative 14047 to only check looping alternatives. 14048 https://bugs.webkit.org/show_bug.cgi?id=46049 14049 14050 * yarr/RegexJIT.cpp: 14051 (JSC::Yarr::RegexGenerator::generateDisjunction): 14052 14053 2010-09-20 Peter Varga <pvarga (a] inf.u-szeged.hu> 14054 14055 Reviewed by Geoffrey Garen. 14056 14057 REGRESSION(67790): jsc tests are failed with YARR interpreter 14058 https://bugs.webkit.org/show_bug.cgi?id=46083 14059 14060 Fix the initializing of the lastSubpatternId member of 14061 parentheses. 14062 14063 * yarr/RegexCompiler.cpp: 14064 (JSC::Yarr::RegexPatternConstructor::atomParenthesesEnd): 14065 14066 2010-09-20 Gavin Barraclough <barraclough (a] apple.com> 14067 14068 Reviewed by Oliver Hunt. 14069 14070 Bug 46077 - ASSERT failure in YARR JIT 14071 14072 We will currently attempt to loop if there are multiple alternatives, they are all 14073 BOL predicated, and the last alternative is longer then the first - however if all 14074 alternatives are BOL predicated the head of loop label will not have been set, and 14075 we'll try to link a jump to an undefined label. Stop doing so. 14076 14077 * yarr/RegexJIT.cpp: 14078 (JSC::Yarr::RegexGenerator::generateDisjunction): 14079 14080 2010-09-20 Adam Roben <aroben (a] apple.com> 14081 14082 Export RegExpObject::info from JavaScriptCore 14083 14084 This allows obj->inherits(&RegExpObject::info) to work correctly from 14085 outside JavaScriptCore.dll on Windows. 14086 14087 Fixes <http://webkit.org/b/46098> 14088 fast/loader/stateobjects/pushstate-object-types.html fails on Windows 14089 14090 Reviewed by John Sullivan. 14091 14092 * runtime/RegExpObject.h: Added JS_EXPORTDATA to the info member, as 14093 we already have for some other classes whose info members have to be 14094 used from outside the DLL. 14095 14096 2010-09-19 Gavin Barraclough <barraclough (a] apple.com> 14097 14098 Windows build fix pt 2. 14099 14100 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: 14101 14102 2010-09-19 Gavin Barraclough <barraclough (a] apple.com> 14103 14104 Windows build fix pt 1. 14105 14106 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: 14107 14108 2010-09-19 Gavin Barraclough <barraclough (a] apple.com> 14109 14110 Build fix - implicit double-to-int conversion invalid on 32-bit. 14111 14112 * runtime/DatePrototype.cpp: 14113 (JSC::fillStructuresUsingDateArgs): 14114 (JSC::dateProtoFuncSetYear): 14115 14116 2010-09-19 Gavin Barraclough <barraclough (a] apple.com> 14117 14118 Reviewed by Oliver Hunt. 14119 14120 Bug 46065 - Unify implementation of ToInt32 and ToUInt32, don't use fmod. 14121 14122 These methods implement the same conversion (see discussion in the notes 14123 of sections of 9.5 and 9.6 of the spec), only differing in how the result 14124 is interpretted. 14125 14126 Date prototype is incorrectly using toInt32, and this is causing us to 14127 provide an output value indicating whether the input to ToInt32 was finite 14128 (the corresponding methods on Date are actually spec'ed to use ToInteger, 14129 not ToInt32). This patch partially fixes this in order to remove this 14130 bogus output value, hoewever more work will be require to bring Date 14131 fully up to spec compliance (the constructor is still performing ToInt32 14132 conversions). 14133 14134 * JavaScriptCore.exp: 14135 * runtime/DatePrototype.cpp: 14136 (JSC::fillStructuresUsingTimeArgs): 14137 (JSC::fillStructuresUsingDateArgs): 14138 (JSC::dateProtoFuncSetYear): 14139 * runtime/JSValue.cpp: 14140 (JSC::toInt32): 14141 * runtime/JSValue.h: 14142 (JSC::toUInt32): 14143 (JSC::JSValue::toInt32): 14144 (JSC::JSValue::toUInt32): 14145 14146 2010-09-18 Darin Adler <darin (a] apple.com> 14147 14148 First step in fixing Windows build. 14149 14150 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: 14151 Removed incorrect symbol. The build will probably still fail, 14152 but the failure will tell us what symbol to add. 14153 14154 2010-09-18 Michael Saboff <msaboff (a] apple.com> 14155 14156 Reviewed by Gavin Barraclough. 14157 14158 Added code to unroll regular expressions containing ^. 14159 Alternatives that begin with ^ are tagged during parsing 14160 and rolled up in containing sub expression structs. 14161 After parsing, a regular expression flagged as containing 14162 a ^ (a.k.a. BOL) is processed further in optimizeBOL(). 14163 A copy of the disjunction is made excluding alternatives that 14164 are rooted with BOL. The original alternatives are flagged 14165 to only be executed once. The copy of the other alternatives are 14166 added to the original expression. 14167 In the case that all original alternatives are flagged, there 14168 won't be any looping alternatives. 14169 The JIT generator will emit code accordingly, executing the 14170 original alternatives once and then looping over the 14171 alternatives that aren't anchored with a BOL (if any). 14172 https://bugs.webkit.org/show_bug.cgi?id=45787 14173 14174 * yarr/RegexCompiler.cpp: 14175 (JSC::Yarr::RegexPatternConstructor::assertionBOL): 14176 (JSC::Yarr::RegexPatternConstructor::atomParenthesesEnd): 14177 (JSC::Yarr::RegexPatternConstructor::copyDisjunction): 14178 (JSC::Yarr::RegexPatternConstructor::copyTerm): 14179 (JSC::Yarr::RegexPatternConstructor::optimizeBOL): 14180 (JSC::Yarr::compileRegex): 14181 * yarr/RegexJIT.cpp: 14182 (JSC::Yarr::RegexGenerator::generateDisjunction): 14183 * yarr/RegexPattern.h: 14184 (JSC::Yarr::PatternAlternative::PatternAlternative): 14185 (JSC::Yarr::PatternAlternative::setOnceThrough): 14186 (JSC::Yarr::PatternAlternative::onceThrough): 14187 (JSC::Yarr::PatternDisjunction::PatternDisjunction): 14188 (JSC::Yarr::RegexPattern::RegexPattern): 14189 (JSC::Yarr::RegexPattern::reset): 14190 14191 2010-09-18 Patrick Gansterer <paroga (a] paroga.com> 14192 14193 Reviewed by Darin Adler. 14194 14195 Rename Wince files to WinCE 14196 https://bugs.webkit.org/show_bug.cgi?id=37287 14197 14198 * wtf/unicode/Unicode.h: 14199 * wtf/unicode/wince/UnicodeWinCE.cpp: Copied from JavaScriptCore/wtf/unicode/wince/UnicodeWince.cpp. 14200 * wtf/unicode/wince/UnicodeWinCE.h: Copied from JavaScriptCore/wtf/unicode/wince/UnicodeWince.h. 14201 * wtf/unicode/wince/UnicodeWince.cpp: Removed. 14202 * wtf/unicode/wince/UnicodeWince.h: Removed. 14203 * wtf/wince/FastMallocWinCE.h: Copied from JavaScriptCore/wtf/wince/FastMallocWince.h. 14204 * wtf/wince/FastMallocWince.h: Removed. 14205 14206 2010-09-18 Ademar de Souza Reis Jr <ademar.reis (a] openbossa.org> 14207 14208 Reviewed by Kenneth Rohde Christiansen. 14209 14210 Enable Platform Strategies on Qt 14211 14212 [Qt] Turn on PLATFORM_STRATEGIES 14213 https://bugs.webkit.org/show_bug.cgi?id=45831 14214 14215 * wtf/Platform.h: Enable Platform Strategies when building QtWebkit 14216 14217 2010-09-17 Oliver Hunt <oliver (a] apple.com> 14218 14219 Reviewed by Gavin Barraclough. 14220 14221 Imprecise tracking of variable capture leads to overly pessimistic creation of activations 14222 https://bugs.webkit.org/show_bug.cgi?id=46020 14223 14224 The old logic for track free and captured variables would cause us 14225 to decide we needed an activation in every function along the scope 14226 chain between a variable capture and its declaration. We now track 14227 captured variables precisely which requires a bit of additional work 14228 14229 The most substantial change is that the parsing routine needs to 14230 be passed the list of function parameters when reparsing a function 14231 as when reparsing we don't parse the function declaration itself only 14232 its body. 14233 14234 * JavaScriptCore.exp: 14235 * parser/JSParser.cpp: 14236 (JSC::JSParser::Scope::Scope): 14237 (JSC::JSParser::Scope::needsFullActivation): 14238 We need to distinguish between use of a feature that requires 14239 an activation and eval so we now get this additional flag. 14240 (JSC::JSParser::Scope::collectFreeVariables): 14241 (JSC::JSParser::Scope::getCapturedVariables): 14242 We can't simply return the list of "capturedVariables" now as 14243 is insufficiently precise, so we compute them instead. 14244 (JSC::JSParser::popScope): 14245 (JSC::jsParse): 14246 (JSC::JSParser::JSParser): 14247 (JSC::JSParser::parseProgram): 14248 (JSC::JSParser::parseWithStatement): 14249 (JSC::JSParser::parseTryStatement): 14250 (JSC::JSParser::parseFunctionInfo): 14251 (JSC::JSParser::parseFunctionDeclaration): 14252 (JSC::JSParser::parseProperty): 14253 (JSC::JSParser::parseMemberExpression): 14254 * parser/JSParser.h: 14255 * parser/Parser.cpp: 14256 (JSC::Parser::parse): 14257 * parser/Parser.h: 14258 (JSC::Parser::parse): 14259 * runtime/Executable.cpp: 14260 (JSC::EvalExecutable::compileInternal): 14261 (JSC::ProgramExecutable::checkSyntax): 14262 (JSC::ProgramExecutable::compileInternal): 14263 (JSC::FunctionExecutable::compileForCallInternal): 14264 (JSC::FunctionExecutable::compileForConstructInternal): 14265 (JSC::FunctionExecutable::reparseExceptionInfo): 14266 (JSC::EvalExecutable::reparseExceptionInfo): 14267 (JSC::FunctionExecutable::fromGlobalCode): 14268 Pass function parameters (if available) to the parser. 14269 14270 2010-09-17 Anders Carlsson <andersca (a] apple.com> 14271 14272 Reviewed by Sam Weinig. 14273 14274 Add IsFloatingPoint and IsArithmetic type traits 14275 https://bugs.webkit.org/show_bug.cgi?id=46018 14276 14277 * wtf/TypeTraits.h: 14278 * wtf/TypeTraits.cpp: 14279 14280 2010-09-17 Martin Robinson <mrobinson (a] igalia.com> 14281 14282 Reviewed by Oliver Hunt. 14283 14284 [GTK] FontPlatformDataFreeType should use smart pointers to hold its members 14285 https://bugs.webkit.org/show_bug.cgi?id=45917 14286 14287 Added support to PlatformRefPtr for handling HashTableDeletedValue. 14288 14289 * wtf/PlatformRefPtr.h: 14290 (WTF::PlatformRefPtr::PlatformRefPtr): Added a constructor that takes HashTableDeletedValue. 14291 (WTF::PlatformRefPtr::isHashTableDeletedValue): Added. 14292 14293 2010-09-16 Oliver Hunt <oliver (a] apple.com> 14294 14295 Reviewed by Geoffrey Garen. 14296 14297 Crash due to timer triggered GC on one heap while another heap is active 14298 https://bugs.webkit.org/show_bug.cgi?id=45932 14299 <rdar://problem/8318446> 14300 14301 The GC timer may trigger for one heap while another heap is active. This 14302 is safe, but requires us to ensure that we have temporarily associated the 14303 thread's identifierTable with the heap we're collecting on. Otherwise we 14304 may end up with the identifier tables in an inconsistent state leading to 14305 an eventual crash. 14306 14307 * runtime/Collector.cpp: 14308 (JSC::Heap::allocate): 14309 (JSC::Heap::reset): 14310 (JSC::Heap::collectAllGarbage): 14311 Add assertions to ensure we have the correct identifierTable active 14312 while collecting. 14313 * runtime/GCActivityCallbackCF.cpp: 14314 (JSC::DefaultGCActivityCallbackPlatformData::trigger): 14315 Temporarily make the expected IdentifierTable active 14316 * wtf/WTFThreadData.h: 14317 (JSC::IdentifierTable::remove): 14318 Make it possible to see when IdentifierTable::remove has succeeded 14319 * wtf/text/StringImpl.cpp: 14320 (WTF::StringImpl::~StringImpl): 14321 CRASH if an StringImpl is an Identifier but isn't present in the 14322 active IdentifierTable. If we get to this state something has 14323 gone wrong and we should just crash immediately. 14324 14325 2010-09-16 Martin Robinson <mrobinson (a] igalia.com> 14326 14327 Reviewed by Xan Lopez. 14328 14329 [GTK] Implement dissolveDragImageToFraction 14330 https://bugs.webkit.org/show_bug.cgi?id=45826 14331 14332 * wtf/gobject/GTypedefs.h: Added forward declarations for GtkWindow and GdkEventExpose. 14333 14334 2010-09-16 Eric Uhrhane <ericu (a] chromium.org> 14335 14336 Reviewed by Jian Li. 14337 14338 Unify FILE_SYSTEM and FILE_WRITER enables under the name FILE_SYSTEM. 14339 https://bugs.webkit.org/show_bug.cgi?id=45798 14340 14341 * Configurations/FeatureDefines.xcconfig: 14342 14343 2010-09-15 Oliver Hunt <oliver (a] apple.com> 14344 14345 Reviewed by Geoffrey Garen. 14346 14347 Use free variable analysis to improve activation performance 14348 https://bugs.webkit.org/show_bug.cgi?id=45837 14349 14350 Adds free and captured variable tracking to the JS parser. This 14351 allows us to avoid construction of an activation object in some 14352 cases. Future patches will make more use of this information to 14353 improve those cases where activations are still needed. 14354 14355 * parser/ASTBuilder.h: 14356 * parser/JSParser.cpp: 14357 (JSC::JSParser::Scope::Scope): 14358 (JSC::JSParser::Scope::declareVariable): 14359 (JSC::JSParser::Scope::useVariable): 14360 (JSC::JSParser::Scope::collectFreeVariables): 14361 (JSC::JSParser::Scope::capturedVariables): 14362 (JSC::JSParser::ScopeRef::ScopeRef): 14363 (JSC::JSParser::ScopeRef::operator->): 14364 (JSC::JSParser::ScopeRef::index): 14365 (JSC::JSParser::currentScope): 14366 (JSC::JSParser::pushScope): 14367 (JSC::JSParser::popScope): 14368 (JSC::JSParser::parseProgram): 14369 (JSC::JSParser::parseVarDeclarationList): 14370 (JSC::JSParser::parseConstDeclarationList): 14371 (JSC::JSParser::parseTryStatement): 14372 (JSC::JSParser::parseFormalParameters): 14373 (JSC::JSParser::parseFunctionInfo): 14374 (JSC::JSParser::parseFunctionDeclaration): 14375 (JSC::JSParser::parsePrimaryExpression): 14376 * parser/Nodes.cpp: 14377 (JSC::ScopeNodeData::ScopeNodeData): 14378 (JSC::ScopeNode::ScopeNode): 14379 (JSC::ProgramNode::ProgramNode): 14380 (JSC::ProgramNode::create): 14381 (JSC::EvalNode::EvalNode): 14382 (JSC::EvalNode::create): 14383 (JSC::FunctionBodyNode::FunctionBodyNode): 14384 (JSC::FunctionBodyNode::create): 14385 * parser/Nodes.h: 14386 (JSC::ScopeNode::needsActivation): 14387 (JSC::ScopeNode::hasCapturedVariables): 14388 * parser/Parser.cpp: 14389 (JSC::Parser::didFinishParsing): 14390 * parser/Parser.h: 14391 (JSC::Parser::parse): 14392 * parser/SyntaxChecker.h: 14393 * runtime/Executable.cpp: 14394 (JSC::EvalExecutable::compileInternal): 14395 (JSC::ProgramExecutable::compileInternal): 14396 (JSC::FunctionExecutable::compileForCallInternal): 14397 (JSC::FunctionExecutable::compileForConstructInternal): 14398 * runtime/Executable.h: 14399 (JSC::ScriptExecutable::needsActivation): 14400 (JSC::ScriptExecutable::recordParse): 14401 14402 2010-09-14 Hyung Song <beergun (a] company100.net> 14403 14404 Reviewed by Kent Tamura. 14405 14406 [BREWMP] Add IMemGroup and IMemSpace to OwnPtr type. 14407 https://bugs.webkit.org/show_bug.cgi?id=44764 14408 14409 * wtf/OwnPtrCommon.h: 14410 * wtf/brew/OwnPtrBrew.cpp: 14411 (WTF::deleteOwnedPtr): 14412 14413 2010-09-14 Darin Adler <darin (a] apple.com> 14414 14415 Reviewed by Geoffrey Garen. 14416 14417 Sort with non-numeric custom sort function fails on array with length but no values 14418 https://bugs.webkit.org/show_bug.cgi?id=45781 14419 14420 * runtime/JSArray.cpp: 14421 (JSC::JSArray::sort): Replaced early exit for an array of length zero to instead 14422 exit for any array without values, even if it has a non-0 length. 14423 14424 2010-09-14 Steve Falkenburg <sfalken (a] apple.com> 14425 14426 Windows production build fix. 14427 Roll out r65143. 14428 14429 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreGenerated.make: 14430 14431 2010-09-14 Kwang Yul Seo <skyul (a] company100.net> 14432 14433 Reviewed by Darin Adler. 14434 14435 Share UnicodeMacrosFromICU.h 14436 https://bugs.webkit.org/show_bug.cgi?id=45710 14437 14438 glib, qt4 and wince use the same macros from ICU. 14439 Remove the code duplication and use the same header file. 14440 14441 * wtf/unicode/UnicodeMacrosFromICU.h: Copied from JavaScriptCore/wtf/unicode/glib/UnicodeMacrosFromICU.h. 14442 * wtf/unicode/glib/UnicodeMacrosFromICU.h: Removed. 14443 * wtf/unicode/qt4/UnicodeQt4.h: 14444 * wtf/unicode/wince/UnicodeWince.h: 14445 14446 2010-09-13 Darin Adler <darin (a] apple.com> 14447 14448 Reviewed by Adam Barth. 14449 14450 Preparation for eliminating deprecatedParseURL 14451 https://bugs.webkit.org/show_bug.cgi?id=45695 14452 14453 * wtf/text/WTFString.h: Added isAllSpecialCharacters, moved here from 14454 the HTML tree builder. 14455 14456 2010-09-13 Darin Fisher <darin (a] chromium.org> 14457 14458 Reviewed by David Levin. 14459 14460 Add option to conditionally compile smooth scrolling support. 14461 https://bugs.webkit.org/show_bug.cgi?id=45689 14462 14463 ENABLE(SMOOTH_SCROLLING) is disabled by default for all platforms. 14464 14465 * wtf/Platform.h: 14466 14467 2010-09-13 Adam Roben <aroben (a] apple.com> 14468 14469 Copy JavaScriptCore's generated sources to the right directory 14470 14471 * JavaScriptCore.vcproj/JavaScriptCore.make: Fixed typo. 14472 14473 2010-09-13 Kwang Yul Seo <skyul (a] company100.net> 14474 14475 Reviewed by Kent Tamura. 14476 14477 [BREWMP] Don't call _msize 14478 https://bugs.webkit.org/show_bug.cgi?id=45556 14479 14480 Because Brew MP uses its own memory allocator, it is not correct to use 14481 _msize in fastMallocSize. Add !PLATFORM(BREWMP) guard. 14482 14483 * wtf/FastMalloc.cpp: 14484 (WTF::fastMallocSize): 14485 14486 2010-09-11 Simon Hausmann <simon.hausmann (a] nokia.com> 14487 14488 Reviewed by Andreas Kling. 14489 14490 [Qt] V8 port: webcore project files changes 14491 https://bugs.webkit.org/show_bug.cgi?id=45141 14492 14493 * JavaScriptCore.pro: Moved wtf specific files to wtf.pri, 14494 so that they can also be used from WebCore.pro for v8 builds. 14495 * wtf/wtf.pri: Added. 14496 14497 2010-09-10 Fridrich Strba <fridrich.strba (a] bluewin.ch> 14498 14499 Reviewed by Andreas Kling. 14500 14501 Add a define missing when building with glib unicode backend 14502 https://bugs.webkit.org/show_bug.cgi?id=45544 14503 14504 * wtf/unicode/glib/UnicodeMacrosFromICU.h: 14505 14506 2010-09-10 Stephanie Lewis <slewis (a] apple.com> 14507 14508 Reviewed by Alexey Proskuryakov. 14509 14510 Refactor JavaScriptCore memory statistics so that WebKit doesn't need to know 14511 about the JIT and other implementation details of JavaScriptCore. Necessary 14512 to fix PPC build. 14513 14514 https://bugs.webkit.org/show_bug.cgi?id=45528 14515 14516 * JavaScriptCore.exp: 14517 * JavaScriptCore.xcodeproj/project.pbxproj: 14518 * runtime/MemoryStatistics.cpp: Added. 14519 (JSC::memoryStatistics): 14520 * runtime/MemoryStatistics.h: Added. 14521 14522 2010-09-09 Michael Saboff <msaboff (a] apple.com> 14523 14524 Reviewed by Gavin Barraclough. 14525 14526 Added a regular expression tracing facility. This tracing is connected 14527 to jsc. Every compiled regular expression object is added to a list. 14528 When the process exits, each regular expression dumps its pattern, 14529 JIT address, number of times it was executed and the number of matches. 14530 This tracing is controlled by the macro ENABLE_REGEXP_TRACING in 14531 wtf/Platform.h. 14532 https://bugs.webkit.org/show_bug.cgi?id=45401 14533 14534 * JavaScriptCore.exp: 14535 * jsc.cpp: 14536 (runWithScripts): 14537 * runtime/JSGlobalData.cpp: 14538 (JSC::JSGlobalData::JSGlobalData): 14539 (JSC::JSGlobalData::~JSGlobalData): 14540 (JSC::JSGlobalData::addRegExpToTrace): 14541 (JSC::JSGlobalData::dumpRegExpTrace): 14542 * runtime/JSGlobalData.h: 14543 * runtime/RegExp.cpp: 14544 (JSC::RegExp::RegExp): 14545 (JSC::RegExp::create): 14546 (JSC::RegExp::match): 14547 * runtime/RegExp.h: 14548 * wtf/Platform.h: 14549 * yarr/RegexJIT.h: 14550 (JSC::Yarr::RegexCodeBlock::getAddr): 14551 14552 2010-09-09 John Therrell <jtherrell (a] apple.com> 14553 14554 32-bit build fix. 14555 14556 * jit/ExecutableAllocator.cpp: 14557 (JSC::ExecutableAllocator::committedByteCount): 14558 14559 2010-09-09 John Therrell <jtherrell (a] apple.com> 14560 14561 Reviewed by Alexey Proskuryakov. 14562 14563 Added statistics sampling and reporting for JavaScriptCore's RegisterFile and ExecutableAllocator classes 14564 https://bugs.webkit.org/show_bug.cgi?id=45134 14565 14566 Added thread-safe committed byte counting and reporting functionality to RegisterFile and 14567 ExecutableAllocator. 14568 14569 * JavaScriptCore.exp: 14570 Exported new symbols to allow for WebKit to get statistics from JavaScriptCore classes. 14571 14572 * interpreter/RegisterFile.cpp: 14573 (JSC::registerFileStatisticsMutex): 14574 Added function which returns a static Mutex used for locking during read/write access to 14575 static committed byte count variable. 14576 (JSC::RegisterFile::~RegisterFile): 14577 Added call to addToStatistics since memory is decommitted here. 14578 (JSC::RegisterFile::releaseExcessCapacity): 14579 Added call to addToStatistics since memory is decommitted here. 14580 (JSC::RegisterFile::initializeThreading): 14581 Added function which calls registerFileStatisticsMutex(). 14582 (JSC::RegisterFile::committedByteCount): 14583 Added function which returns the current committed byte count for RegisterFile. 14584 (JSC::RegisterFile::addToCommittedByteCount): 14585 Added function which updates committed byte count. 14586 14587 * interpreter/RegisterFile.h: 14588 (JSC::RegisterFile::RegisterFile): 14589 Added call to addToStatistics since memory is committed here. 14590 (JSC::RegisterFile::grow): 14591 Added call to addToStatistics since memory is committed here. 14592 14593 * jit/ExecutableAllocator.h: 14594 Added function prototype for public static function committedByteCount(). 14595 14596 * jit/ExecutableAllocatorFixedVMPool.cpp: 14597 (JSC::FixedVMPoolAllocator::release): 14598 Added call to addToStatistics since memory is decommitted here. 14599 (JSC::FixedVMPoolAllocator::reuse): 14600 Added call to addToStatistics since memory is committed here. 14601 (JSC::FixedVMPoolAllocator::addToCommittedByteCount): 14602 Added function which updates committed byte count. 14603 (JSC::ExecutableAllocator::committedByteCount): 14604 Added function which returns the current committed byte count for ExecutableAllocator. 14605 14606 * runtime/InitializeThreading.cpp: 14607 (JSC::initializeThreadingOnce): 14608 Added call to RegisterFile::initializeThreading. 14609 14610 2010-09-09 Mark Rowe <mrowe (a] apple.com> 14611 14612 Reviewed by Oliver Hunt. 14613 14614 <http://webkit.org/b/45502> JSObjectSetPrivateProperty does not handle NULL values as it claims 14615 14616 * API/JSObjectRef.cpp: 14617 (JSObjectSetPrivateProperty): Don't call toJS if we have a NULL value as that will cause an assertion 14618 failure. Instead map NULL directly to the null JSValue. 14619 * API/tests/testapi.c: 14620 (main): Add test coverage for the NULL value case. 14621 14622 2010-09-09 Csaba Osztrogonc <ossy (a] webkit.org> 14623 14624 Reviewed by Gavin Barraclough. 14625 14626 [Qt] JSVALUE32_64 not works on Windows platform with MinGW compiler 14627 https://bugs.webkit.org/show_bug.cgi?id=29268 14628 14629 * wtf/Platform.h: Enable JSVALUE32_64 for Qt/Windows/MinGW, because it works now. 14630 14631 2010-09-08 Zoltan Herczeg <zherczeg (a] webkit.org> 14632 14633 Reviewed by Darin Adler. 14634 14635 Removing doneSemicolon label in the lexer 14636 https://bugs.webkit.org/show_bug.cgi?id=45289 14637 14638 As a side effect of moving the multiline comment parsing 14639 to a separate function, an opportunity raised to simplify 14640 the single line comment parsing, and removing doneSemicolon 14641 label. Slight performance increase on --parse-only 14642 tests (from 32.8ms to 31.5ms) 14643 14644 * parser/Lexer.cpp: 14645 (JSC::Lexer::lex): 14646 14647 2010-09-08 Xan Lopez <xlopez (a] igalia.com> 14648 14649 Reviewed by Alexey Proskuryakov. 14650 14651 Remove accessor for private member variable in JSParser 14652 https://bugs.webkit.org/show_bug.cgi?id=45378 14653 14654 m_token is private to JSParser, so it does not seem to be useful 14655 to have an accessor for it. On top of that, the file was both 14656 using the accessor and directly accessing the member variable, 14657 only one style should be used. 14658 14659 2010-09-08 Csaba Osztrogonc <ossy (a] webkit.org> 14660 14661 Reviewed by Oliver Hunt. 14662 14663 [Qt] REGRESSION(63348): jsc is broken 14664 https://bugs.webkit.org/show_bug.cgi?id=42818 14665 14666 Need fastcall conventions on Qt/Win/MinGW. 14667 Based on patches of Gavin Barraclough: r63947 and r63948. 14668 14669 * jit/JITStubs.cpp: 14670 * jit/JITStubs.h: 14671 14672 2010-09-08 Robert Hogan <robert (a] webkit.org> 14673 14674 Reviewed by Antonio Gomes. 14675 14676 Remove some unnecessary duplicate calls to string functions 14677 14678 https://bugs.webkit.org/show_bug.cgi?id=45314 14679 14680 * wtf/text/WTFString.cpp: 14681 (WTF::String::format): 14682 14683 2010-09-08 Jocelyn Turcotte <jocelyn.turcotte (a] nokia.com> 14684 14685 Reviewed by Andreas Kling. 14686 14687 Re-Disable JIT for MSVC 64bit to fix the build on this compiler. 14688 https://bugs.webkit.org/show_bug.cgi?id=45382 14689 14690 It was enabled in the cleanup made in r64176, though it is still 14691 not implemented. 14692 14693 * wtf/Platform.h: 14694 14695 2010-09-08 Martin Robinson <mrobinson (a] igalia.com> 14696 14697 Reviewed by Xan Lopez. 14698 14699 [GTK] Need a WebSocket implementation 14700 https://bugs.webkit.org/show_bug.cgi?id=45197 14701 14702 Add a GIO-based WebSocket implementation. 14703 14704 * wtf/gobject/GRefPtr.cpp: Added PlatformRefPtr support for GSource. 14705 (WTF::refPlatformPtr): 14706 (WTF::derefPlatformPtr): 14707 * wtf/gobject/GRefPtr.h: Added new template specialization declarations. 14708 * wtf/gobject/GTypedefs.h: Add some more GLib/GIO forward declarations. 14709 14710 2010-08-30 Maciej Stachowiak <mjs (a] apple.com> 14711 14712 Reviewed by Darin Adler. 14713 14714 Handle MediaQueryExp memory management exclusively with smart pointers 14715 https://bugs.webkit.org/show_bug.cgi?id=44874 14716 14717 Implemented a non-copying sort function to make it possible to sort a Vector 14718 of OwnPtrs (which cannot be copied). This is required for the above. 14719 14720 * wtf/NonCopyingSort.h: Added. 14721 (WTF::nonCopyingSort): It's secretly heapsort. 14722 (WTF::heapSort): heapsort implementation. 14723 (WTF::siftDown): Helper function for heapsort. 14724 (WTF::heapify): ditto 14725 14726 Adjust build systems. 14727 14728 * GNUmakefile.am: 14729 * JavaScriptCore.gypi: 14730 * JavaScriptCore.vcproj/WTF/WTF.vcproj: 14731 * JavaScriptCore.xcodeproj/project.pbxproj: 14732 14733 2010-09-08 Zoltan Herczeg <zherczeg (a] webkit.org> 14734 14735 Reviewed by Darin Adler. 14736 14737 Refactoring multiline comments in the lexer 14738 https://bugs.webkit.org/show_bug.cgi?id=45289 14739 14740 MultiLine comment parsing is moved to a separate function. 14741 14742 Slight performance increase on --parse-only tests (from 33.6ms to 32.8ms) 14743 SunSpider reports no change (from 523.1ms to 521.2ms). 14744 14745 * parser/Lexer.cpp: 14746 (JSC::Lexer::parseMultilineComment): 14747 (JSC::Lexer::lex): 14748 * parser/Lexer.h: 14749 14750 2010-09-07 James Robinson <jamesr (a] chromium.org> 14751 14752 Compile fix attempt for windows. 14753 14754 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: 14755 14756 2010-09-07 Mihai Parparita <mihaip (a] chromium.org> 14757 14758 Reviewed by James Robinson. 14759 14760 Fix Windows build after r66936 14761 https://bugs.webkit.org/show_bug.cgi?id=45348 14762 14763 Add symbol names that were missing from r66936. 14764 14765 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: 14766 14767 2010-09-07 Mihai Parparita <mihaip (a] chromium.org> 14768 14769 Reviewed by Oliver Hunt. 14770 14771 pushState and replaceState do not clone RegExp objects correctly 14772 https://bugs.webkit.org/show_bug.cgi?id=44718 14773 14774 Move internal representation of JSC::RegExp (which depends on wether 14775 YARR and YARR_JIT is enabled) into RegExpRepresentation which can live 14776 in the implementation only. This makes it feasible to use RegExp in 14777 WebCore without bringing in all of YARR. 14778 14779 * JavaScriptCore.exp: Export RegExp and RegExpObject functions that are 14780 needed inside WebCore's JSC bindings. 14781 * runtime/RegExp.cpp: 14782 (JSC::RegExpRepresentation::~RegExpRepresentation): 14783 (JSC::RegExp::RegExp): 14784 (JSC::RegExp::~RegExp): 14785 (JSC::RegExp::compile): 14786 (JSC::RegExp::match): 14787 * runtime/RegExp.h: 14788 14789 2010-09-07 Anders Carlsson <andersca (a] apple.com> 14790 14791 Reviewed by Darin Adler. 14792 14793 <rdar://problem/8381749> -Wcast-align warning emitted when building with clang 14794 14795 Remove the -Wcast-align-warning since it isn't really useful, and clang is more aggressive about warning than gcc. 14796 14797 * Configurations/Base.xcconfig: 14798 14799 2010-09-07 Zoltan Horvath <zoltan (a] webkit.org> 14800 14801 Reviewed by Darin Adler. 14802 14803 REGRESSION(66741): Undefined pthread macros 14804 https://bugs.webkit.org/show_bug.cgi?id=45246 14805 14806 PTHREAD_MUTEX_NORMAL and PTHREAD_MUTEX_DEFAULT (introduced in r60487) are not defined on Linux, 14807 but used in a statement. Add an additional check to test this. 14808 14809 * wtf/FastMalloc.cpp: 14810 (WTF::TCMalloc_PageHeap::initializeScavenger): 14811 14812 2010-09-06 Oliver Hunt <oliver (a] apple.com> 14813 14814 Windows build fix 14815 14816 2010-09-05 Oliver Hunt <oliver (a] apple.com> 14817 14818 Reviewed by Sam Weinig. 14819 14820 SerializedScriptValue needs to use a flat storage mechanism 14821 https://bugs.webkit.org/show_bug.cgi?id=45244 14822 14823 Export JSArray::put 14824 14825 * JavaScriptCore.exp: 14826 14827 2010-09-06 Chao-ying Fu <fu (a] mips.com> 14828 14829 Reviewed by Oliver Hunt. 14830 14831 Support JSVALUE32_64 on MIPS 14832 https://bugs.webkit.org/show_bug.cgi?id=43999 14833 14834 Add missing functions to support JSVALUE32_64 on MIPS. 14835 Remove JSVALUE32 as the default for MIPS. 14836 14837 * assembler/MIPSAssembler.h: 14838 (JSC::MIPSAssembler::divd): 14839 (JSC::MIPSAssembler::mthc1): 14840 (JSC::MIPSAssembler::cvtwd): 14841 * assembler/MacroAssemblerMIPS.h: 14842 (JSC::MacroAssemblerMIPS::neg32): 14843 (JSC::MacroAssemblerMIPS::branchOr32): 14844 (JSC::MacroAssemblerMIPS::set8): 14845 (JSC::MacroAssemblerMIPS::loadDouble): 14846 (JSC::MacroAssemblerMIPS::divDouble): 14847 (JSC::MacroAssemblerMIPS::convertInt32ToDouble): 14848 (JSC::MacroAssemblerMIPS::branchDouble): 14849 (JSC::MacroAssemblerMIPS::branchConvertDoubleToInt32): 14850 (JSC::MacroAssemblerMIPS::zeroDouble): 14851 * jit/JIT.h: 14852 * jit/JITOpcodes32_64.cpp: 14853 (JSC::JIT::privateCompileCTINativeCall): 14854 * jit/JITPropertyAccess32_64.cpp: 14855 (JSC::JIT::privateCompilePutByIdTransition): 14856 * jit/JITStubs.cpp: 14857 (JSC::JITThunks::JITThunks): 14858 * jit/JITStubs.h: 14859 * wtf/Platform.h: 14860 14861 2010-09-06 Robert Hogan <robert (a] webkit.org> 14862 14863 Unreviewed, compile fix. 14864 14865 Fix compile failure in r66843 14866 14867 Revert to original patch in bugzilla. Leave bug open for 14868 discussion on potential removal of double utf8 conversion. 14869 14870 https://bugs.webkit.org/show_bug.cgi?id=45240 14871 14872 * wtf/text/WTFString.cpp: 14873 (WTF::String::format): 14874 14875 2010-09-06 Robert Hogan <robert (a] webkit.org> 14876 14877 Reviewed by Andreas Kling. 14878 14879 [Qt] utf8 encoding of console() messages 14880 14881 Unskip: 14882 http/tests/security/xssAuditor/embed-tag-null-char.html 14883 http/tests/security/xssAuditor/object-embed-tag-null-char.html 14884 14885 Both tests failed because Qt's implementation of String::format() 14886 is casting a utf8 result to String, which assumes latin1 in 14887 its constructor. So instead of casting a QString to a String, use 14888 StringImpl::create() instead. Unfortunately, this involves a lot 14889 of extra casts but the end result is correct. 14890 14891 https://bugs.webkit.org/show_bug.cgi?id=45240 14892 14893 * wtf/text/WTFString.cpp: 14894 (WTF::String::format): 14895 14896 2010-09-03 Alexey Proskuryakov <ap (a] apple.com> 14897 14898 Reviewed by Darin Adler. 14899 14900 https://bugs.webkit.org/show_bug.cgi?id=45135 14901 <rdar://problem/7823714> TCMalloc_PageHeap doesn't hold a mutex while manipulating shared data 14902 14903 * wtf/FastMalloc.cpp: 14904 (WTF::TCMalloc_PageHeap::initializeScavenger): Make sure to create a non-recursive mutex 14905 regardless of platform default, so that we can assert that it's held (this is for platforms 14906 that don't have libdispatch). 14907 (WTF::TCMalloc_PageHeap::signalScavenger): Assert that the mutex is held, so we can look 14908 at m_scavengeThreadActive. For platforms that have libdispatch, assert that pageheap_lock 14909 is held. 14910 (WTF::TCMalloc_PageHeap::periodicScavenge): Make sure that pageheap_lock is held before 14911 manipulating m_scavengeThreadActive. Otherwise, there is an obvious race condition, and we 14912 can make unbalanced calls to dispatch_resume(). 14913 14914 2010-09-03 Lucas De Marchi <lucas.demarchi (a] profusion.mobi> 14915 14916 Reviewed by Martin Robinson. 14917 14918 [EFL] Regression (66531) Build break with Glib Support 14919 https://bugs.webkit.org/show_bug.cgi?id=45011 14920 14921 Move GtkTypedefs.h to GTypedefs.h and let it inside gobject directory 14922 since when glib is enabled, EFL port needs it, too. 14923 14924 * CMakeListsEfl.txt: Include gobject directory to find new header 14925 file. 14926 * GNUmakefile.am: Ditto. 14927 * wtf/CMakeListsEfl.txt: Ditto. 14928 * wtf/Platform.h: Include header if port is EFL and glib support is 14929 enabled. 14930 * wtf/gtk/GtkTypedefs.h: Removed. 14931 * wtf/gobject/GTypedefs.h: Added. Sections specific to GTK are now 14932 guarded by PLATFORM(GTK). 14933 14934 2010-09-03 Csaba Osztrogonc <ossy (a] webkit.org> 14935 14936 Reviewed by Simon Hausmann. 14937 14938 Fix warning in wtf/ByteArray.h 14939 https://bugs.webkit.org/show_bug.cgi?id=44672 14940 14941 * wtf/ByteArray.h: Use maximal sized array for MSVC and unsized array for other compilers. 14942 14943 2010-09-02 Adam Barth <abarth (a] webkit.org> 14944 14945 Reviewed by Eric Seidel. 14946 14947 Actually parse a URL from ParsedURL 14948 https://bugs.webkit.org/show_bug.cgi?id=45080 14949 14950 This patch only handles standard URLs. At some point we'll need to 14951 distinguish between standard URLs and other kinds of URLs. 14952 14953 * wtf/url/api/ParsedURL.cpp: 14954 (WTF::ParsedURL::ParsedURL): 14955 14956 2010-09-02 Adam Barth <abarth (a] webkit.org> 14957 14958 Reviewed by Eric Seidel. 14959 14960 Add ParsedURL and URLString to WTFURL API 14961 https://bugs.webkit.org/show_bug.cgi?id=45078 14962 14963 Currently there's no actual URL parsing going on, but this patch is a 14964 start to sketching out the API. 14965 14966 * JavaScriptCore.xcodeproj/project.pbxproj: 14967 * wtf/url/api/ParsedURL.cpp: Added. 14968 (WTF::ParsedURL::ParsedURL): 14969 (WTF::ParsedURL::scheme): 14970 (WTF::ParsedURL::username): 14971 (WTF::ParsedURL::password): 14972 (WTF::ParsedURL::host): 14973 (WTF::ParsedURL::port): 14974 (WTF::ParsedURL::path): 14975 (WTF::ParsedURL::query): 14976 (WTF::ParsedURL::fragment): 14977 (WTF::ParsedURL::segment): 14978 * wtf/url/api/ParsedURL.h: Added. 14979 (WTF::ParsedURL::spec): 14980 * wtf/url/api/URLString.h: Added. 14981 (WTF::URLString::URLString): 14982 (WTF::URLString::string): 14983 14984 2010-09-02 Adam Barth <abarth (a] webkit.org> 14985 14986 Reviewed by Eric Seidel. 14987 14988 Add WTFURL to the JavaScriptCore build on Mac 14989 https://bugs.webkit.org/show_bug.cgi?id=45075 14990 14991 Building code is good. 14992 14993 * JavaScriptCore.xcodeproj/project.pbxproj: 14994 14995 2010-09-02 Alexey Proskuryakov <ap (a] apple.com> 14996 14997 Reviewed by Oliver Hunt. 14998 14999 https://bugs.webkit.org/show_bug.cgi?id=43230 15000 <rdar://problem/8254215> REGRESSION: Memory leak within JSParser::JSParser 15001 15002 One can't delete a ThreadSpecific object that has data in it. It's not even possible to 15003 enumerate data objects in all threads, much less destroy them from a thread that's destroying 15004 the ThreadSpecific. 15005 15006 * parser/JSParser.cpp: 15007 (JSC::JSParser::JSParser): 15008 * runtime/JSGlobalData.h: 15009 * wtf/WTFThreadData.cpp: 15010 (WTF::WTFThreadData::WTFThreadData): 15011 * wtf/WTFThreadData.h: 15012 (WTF::WTFThreadData::approximatedStackStart): 15013 Moved stack guard tracking from JSGlobalData to WTFThreadData. 15014 15015 * wtf/ThreadSpecific.h: Made destructor unimplemented. It's dangerous, and we probably won't 15016 ever face a situation where we'd want to delete a ThreadSpecific object. 15017 15018 2010-09-01 Gavin Barraclough <barraclough (a] apple.com> 15019 15020 Rubber stamped by Oliver Hunt. 15021 15022 Ecma-262 15.11.1.1 states that if the argument is undefined then an 15023 Error object's message property should be set to the empty string. 15024 15025 * runtime/ErrorInstance.cpp: 15026 (JSC::ErrorInstance::ErrorInstance): 15027 (JSC::ErrorInstance::create): 15028 * runtime/ErrorInstance.h: 15029 * runtime/ErrorPrototype.cpp: 15030 (JSC::ErrorPrototype::ErrorPrototype): 15031 15032 2010-08-31 Darin Adler <darin (a] apple.com> 15033 15034 Reviewed by Anders Carlsson. 15035 15036 * wtf/FastMalloc.cpp: 15037 (WTF::TCMalloc_PageHeap::scavenge): Replaced somewhat-quirky code that 15038 mixed types with code that uses size_t. 15039 15040 * wtf/TCPageMap.h: Removed names of unused arguments to avoid warning. 15041 15042 2010-08-31 Martin Robinson <mrobinson (a] igalia.com> 15043 15044 Reviewed by Gustavo Noronha Silva. 15045 15046 [GTK] Isolate all GTK+ typedefs into one file 15047 https://bugs.webkit.org/show_bug.cgi?id=44900 15048 15049 * GNUmakefile.am: Add GtkTypedefs.h to the source lists. 15050 * wtf/Platform.h: #include GtkTypedefs.h for the GTK+ build. 15051 * wtf/ThreadingPrimitives.h: Remove GTK+ typedefs. 15052 * wtf/gobject/GOwnPtr.h: Ditto. 15053 * wtf/gobject/GRefPtr.h: Ditto. 15054 * wtf/gtk/GtkTypedefs.h: Added. 15055 15056 2010-08-31 Martin Robinson <mrobinson (a] igalia.com> 15057 15058 Reviewed by Gustavo Noronha Silva. 15059 15060 [GTK] Fix 'make dist' in preparation of the 1.3.3 release 15061 https://bugs.webkit.org/show_bug.cgi?id=44978 15062 15063 * GNUmakefile.am: Adding missing headers to the sources list. 15064 15065 2010-08-31 Chao-ying Fu <fu (a] mips.com> 15066 15067 Reviewed by Oliver Hunt. 15068 15069 Support emit_op_mod() for MIPS 15070 https://bugs.webkit.org/show_bug.cgi?id=42855 15071 15072 This patch uses MIPS div instructions for op_mod to improve performance. 15073 15074 * assembler/MIPSAssembler.h: 15075 (JSC::MIPSAssembler::div): 15076 * jit/JITArithmetic.cpp: 15077 (JSC::JIT::emit_op_mod): 15078 (JSC::JIT::emitSlow_op_mod): 15079 15080 2010-08-31 Csaba Osztrogonc <ossy (a] webkit.org> 15081 15082 Reviewed by Darin Adler. 15083 15084 Modify ASSERT_UNUSED and UNUSED_PARAM similar to Qt's Q_UNUSED. 15085 https://bugs.webkit.org/show_bug.cgi?id=44870 15086 15087 * wtf/Assertions.h: 15088 * wtf/UnusedParam.h: 15089 15090 2010-08-31 Benjamin Poulain <benjamin.poulain (a] nokia.com> 15091 15092 Reviewed by Kenneth Rohde Christiansen. 15093 15094 JSC TimeoutChecker::didTimeOut overflows on ARM 15095 https://bugs.webkit.org/show_bug.cgi?id=38538 15096 15097 Make getCPUTime() return values relative to the first call. 15098 The previous implementation relied on simply on currentTime(), which 15099 return a time since epoch and not a time since the thread started. This 15100 made the return value of getCPUTime() overflow on 32 bits. 15101 15102 * runtime/TimeoutChecker.cpp: 15103 (JSC::getCPUTime): 15104 15105 2010-08-30 Mihai Parparita <mihaip (a] chromium.org> 15106 15107 Reviewed by Adam Barth. 15108 15109 HISTORY_ALWAYS_ASYNC should be removed (history should always be async) 15110 https://bugs.webkit.org/show_bug.cgi?id=44315 15111 15112 Remove ENABLE_HISTORY_ALWAYS_ASYNC #define. 15113 15114 * wtf/Platform.h: 15115 15116 2010-08-30 Chris Rogers <crogers (a] google.com> 15117 15118 Reviewed by Kenneth Russell. 15119 15120 Fix namespace for wtf/Complex.h and wtf/Vector3.h 15121 https://bugs.webkit.org/show_bug.cgi?id=44892 15122 15123 * wtf/Complex.h: 15124 * wtf/Vector3.h: 15125 15126 2010-08-30 Andy Estes <aestes (a] apple.com> 15127 15128 Reviewed by Eric Carlson. 15129 15130 Strings returned by asciiDebug() should be NULL-terminated. 15131 https://bugs.webkit.org/show_bug.cgi?id=44866 15132 15133 * wtf/text/WTFString.cpp: 15134 (asciiDebug): 15135 15136 2010-08-30 Zoltan Herczeg <zherczeg (a] webkit.org> 15137 15138 Reviewed by Darin Adler. 15139 15140 Refactor number parsing in the lexer 15141 https://bugs.webkit.org/show_bug.cgi?id=44104 15142 15143 Number parsing was full of gotos, and needed a complete 15144 redesign to remove them (Only one remained). Furthermore 15145 integer arithmetic is empolyed for fast cases (= small 15146 integer numbers). 15147 15148 * parser/Lexer.cpp: 15149 (JSC::Lexer::parseHex): 15150 (JSC::Lexer::parseOctal): 15151 (JSC::Lexer::parseDecimal): 15152 (JSC::Lexer::parseNumberAfterDecimalPoint): 15153 (JSC::Lexer::parseNumberAfterExponentIndicator): 15154 (JSC::Lexer::lex): 15155 * parser/Lexer.h: 15156 15157 2010-08-29 Darin Adler <darin (a] apple.com> 15158 15159 Fix Qt build. 15160 15161 * wtf/unicode/glib/UnicodeMacrosFromICU.h: Added U_IS_BMP. 15162 * wtf/unicode/qt4/UnicodeQt4.h: Ditto. 15163 * wtf/unicode/wince/UnicodeWince.h: Ditto. 15164 15165 2010-08-29 Kwang Yul Seo <skyul (a] company100.net> 15166 15167 Reviewed by Kent Tamura. 15168 15169 [BREWMP] Port vprintf_stderr_common 15170 https://bugs.webkit.org/show_bug.cgi?id=33568 15171 15172 Use BREW's DBGPRINTF to output debug messages. 15173 15174 * wtf/Assertions.cpp: 15175 15176 2010-08-28 Gavin Barraclough <barraclough (a] apple.com> 15177 15178 Reviewed by Oliver Hunt. 15179 15180 Bug 44830 - In Array's prototype functyions we're incorrectly handing large index values 15181 15182 We are in places casting doubles to unsigneds, and unsigneds to ints, without always check 15183 that the result is within bounds. This is problematic in the case of double-to-unsigned 15184 conversion because we should be saturating to array length. 15185 15186 Also, the error return value from Array.splice should be [], not undefined. 15187 15188 I don't see any security concerns here. These methods are spec'ed in such a way that they 15189 can be applied to non Array objects, so in all cases the (potentially bogus) indices are 15190 being passed to functions that will safely check accesses are within bounds. 15191 15192 * runtime/ArrayPrototype.cpp: 15193 (JSC::argumentClampedIndexFromStartOrEnd): 15194 (JSC::arrayProtoFuncJoin): 15195 (JSC::arrayProtoFuncConcat): 15196 (JSC::arrayProtoFuncReverse): 15197 (JSC::arrayProtoFuncShift): 15198 (JSC::arrayProtoFuncSlice): 15199 (JSC::arrayProtoFuncSort): 15200 (JSC::arrayProtoFuncSplice): 15201 (JSC::arrayProtoFuncUnShift): 15202 (JSC::arrayProtoFuncFilter): 15203 (JSC::arrayProtoFuncMap): 15204 (JSC::arrayProtoFuncEvery): 15205 (JSC::arrayProtoFuncForEach): 15206 (JSC::arrayProtoFuncSome): 15207 (JSC::arrayProtoFuncReduce): 15208 (JSC::arrayProtoFuncReduceRight): 15209 (JSC::arrayProtoFuncIndexOf): 15210 (JSC::arrayProtoFuncLastIndexOf): 15211 * runtime/JSValue.h: 15212 (JSC::JSValue::toUInt32): 15213 15214 2010-08-28 Pratik Solanki <psolanki (a] apple.com> 15215 15216 Reviewed by Dan Bernstein. 15217 15218 Add an ENABLE define for purgeable memory support 15219 https://bugs.webkit.org/show_bug.cgi?id=44777 15220 15221 * wtf/Platform.h: 15222 15223 2010-08-27 Kimmo Kinnunen <kimmo.t.kinnunen (a] nokia.com> 15224 15225 Reviewed by Kenneth Rohde Christiansen. 15226 15227 [Qt] NPAPI Plugin metadata should be cached, and loading a plugin should not require loading every plugin 15228 https://bugs.webkit.org/show_bug.cgi?id=43179 15229 15230 Add ENABLE_NETSCAPE_PLUGIN_METADATA_CACHE flag to enable persistent 15231 NPAPI Plugin Cache. The flag is enabled by default. 15232 15233 * wtf/Platform.h: Add ENABLE_NETSCAPE_PLUGIN_METADATA_CACHE 15234 15235 2010-07-27 Jer Noble <jer.noble (a] apple.com> 15236 15237 Reviewed by Eric Carlson. 15238 15239 Add JavaScript API to allow a page to go fullscreen. 15240 rdar://problem/6867795 15241 https://bugs.webkit.org/show_bug.cgi?id=43099 15242 15243 * wtf/Platform.h: Enable FULLSCREEN_API mode for the Mac (except iOS). 15244 15245 2010-08-27 Gavin Barraclough <barraclough (a] apple.com> 15246 15247 Windows build fix pt 2. 15248 15249 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: 15250 15251 2010-08-27 Gavin Barraclough <barraclough (a] apple.com> 15252 15253 Windows build fix pt 1. 15254 15255 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: 15256 15257 2010-08-27 Gavin Barraclough <barraclough (a] apple.com> 15258 15259 Reviewed by Oliver Hunt. 15260 15261 Bug 44745 - Number.toFixed/toExponential/toPrecision are inaccurate. 15262 15263 These methods should be using a version of dtoa that can generate results accurate 15264 to the requested precision, whereas our version of dtoa is only currently able to 15265 support producing results sufficiently accurate to distinguish the value from any 15266 other IEEE-754 double precision number. 15267 15268 This change has no impact on benchmarks we track. 15269 15270 On microbenchmarks for these functions, this is a slight regression where a high 15271 precision is requested (dtoa now need to iterate further to generate a a greater 15272 number of digits), but with smaller precision values (hopefully more common) this 15273 improves performance, since it reduced the accurate of result dtoa is required, 15274 to produce, and removes the need to pre-round values before calling dtoa. 15275 15276 * JavaScriptCore.exp: 15277 doubleToStringInJavaScriptFormat renamed to numberToString 15278 15279 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: 15280 doubleToStringInJavaScriptFormat renamed to numberToString 15281 15282 * runtime/UString.cpp: 15283 (JSC::UString::number): 15284 doubleToStringInJavaScriptFormat renamed to numberToString 15285 15286 * wtf/DecimalNumber.h: 15287 (WTF::DecimalNumber::DecimalNumber): 15288 (WTF::DecimalNumber::toStringDecimal): 15289 (WTF::DecimalNumber::toStringExponential): 15290 Remove all pre-rounding of values, instead call dtoa correctly. 15291 15292 * wtf/dtoa.cpp: 15293 (WTF::dtoa): 15294 * wtf/dtoa.h: 15295 Reenable support for rounding to specific-figures/decimal-places in dtoa. 15296 Modify to remove unbiased rounding, provide ECMA required away-from-zero. 15297 Rewrite doubleToStringInJavaScriptFormat to use DecimalNumber, rename to 15298 numberToString. 15299 15300 2010-08-27 Chao-ying Fu <fu (a] mips.com> 15301 15302 Reviewed by Oliver Hunt. 15303 15304 Byte alignment issue on MIPS 15305 https://bugs.webkit.org/show_bug.cgi?id=29415 15306 15307 MIPS accesses one byte at a time for now to avoid the help from the 15308 kernel to fix unaligned accesses. 15309 15310 * wtf/text/AtomicString.cpp: 15311 (WebCore::equal): 15312 * wtf/text/StringHash.h: 15313 (WebCore::StringHash::equal): 15314 15315 2010-08-27 Xan Lopez <xlopez (a] igalia.com> 15316 15317 Reviewed by Tor Arne Vestb. 15318 15319 Fix a couple of typos in comment. 15320 15321 * bytecode/CodeBlock.h: 15322 15323 2010-08-26 Gavin Barraclough <barraclough (a] apple.com> 15324 15325 Windows build fix. 15326 15327 * wtf/dtoa.cpp: 15328 15329 2010-08-26 Gavin Barraclough <baraclough (a] apple.com> 15330 15331 Reviewed by Sam Weinig. 15332 15333 Bug 44735 - Clean up dtoa.cpp 15334 Remove unused & unmaintained code paths, reformat code to match 15335 coding standard & use platform #defines from Platform.h directly. 15336 15337 * wtf/dtoa.cpp: 15338 (WTF::storeInc): 15339 (WTF::multadd): 15340 (WTF::s2b): 15341 (WTF::lo0bits): 15342 (WTF::mult): 15343 (WTF::pow5mult): 15344 (WTF::lshift): 15345 (WTF::diff): 15346 (WTF::ulp): 15347 (WTF::b2d): 15348 (WTF::d2b): 15349 (WTF::ratio): 15350 (WTF::): 15351 (WTF::strtod): 15352 (WTF::quorem): 15353 (WTF::dtoa): 15354 15355 2010-08-26 Gavin Barraclough <barraclough (a] apple.com> 15356 15357 Rubber Stamped by Oliver Hunt. 15358 15359 Partially revert r65959. The toString changes regressed the v8 tests, 15360 but keep the toFixed/toExponential/toPrecision changes. 15361 15362 * JavaScriptCore.exp: 15363 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: 15364 * runtime/NumberPrototype.cpp: 15365 * runtime/UString.cpp: 15366 (JSC::UString::number): 15367 * wtf/DecimalNumber.h: 15368 * wtf/dtoa.cpp: 15369 (WTF::append): 15370 (WTF::doubleToStringInJavaScriptFormat): 15371 * wtf/dtoa.h: 15372 * wtf/text/WTFString.cpp: 15373 * wtf/text/WTFString.h: 15374 15375 2010-08-26 James Robinson <jamesr (a] chromium.org> 15376 15377 Reviewed by Darin Fisher. 15378 15379 [chromium] Remove the USE(GLES2_RENDERING) define and associated code 15380 https://bugs.webkit.org/show_bug.cgi?id=43761 15381 15382 Remove WTF_USE_GLES2_RENDERING from the list of defines in chromium, it's unused. 15383 15384 * wtf/Platform.h: 15385 15386 2010-08-26 Gavin Barraclough <barraclough (a] apple.com> 15387 15388 Rolling out r64608, this regressed performance. 15389 15390 * JavaScriptCore.xcodeproj/project.pbxproj: 15391 * assembler/ARMAssembler.cpp: 15392 (JSC::ARMAssembler::executableCopy): 15393 * assembler/LinkBuffer.h: 15394 (JSC::LinkBuffer::LinkBuffer): 15395 (JSC::LinkBuffer::~LinkBuffer): 15396 (JSC::LinkBuffer::performFinalization): 15397 * assembler/MIPSAssembler.h: 15398 (JSC::MIPSAssembler::executableCopy): 15399 * assembler/X86Assembler.h: 15400 (JSC::X86Assembler::executableCopy): 15401 * bytecode/StructureStubInfo.h: 15402 (JSC::StructureStubInfo::initGetByIdProto): 15403 (JSC::StructureStubInfo::initGetByIdChain): 15404 (JSC::StructureStubInfo::initGetByIdSelfList): 15405 (JSC::StructureStubInfo::initGetByIdProtoList): 15406 (JSC::StructureStubInfo::initPutByIdTransition): 15407 * jit/ExecutableAllocator.cpp: 15408 (JSC::ExecutablePool::systemAlloc): 15409 * jit/ExecutableAllocator.h: 15410 (JSC::ExecutablePool::create): 15411 (JSC::ExecutableAllocator::ExecutableAllocator): 15412 (JSC::ExecutableAllocator::poolForSize): 15413 (JSC::ExecutablePool::ExecutablePool): 15414 (JSC::ExecutablePool::poolAllocate): 15415 * jit/ExecutableAllocatorFixedVMPool.cpp: 15416 (JSC::FixedVMPoolAllocator::allocInternal): 15417 * jit/JIT.cpp: 15418 (JSC::JIT::privateCompile): 15419 * jit/JIT.h: 15420 (JSC::JIT::compileGetByIdProto): 15421 (JSC::JIT::compileGetByIdSelfList): 15422 (JSC::JIT::compileGetByIdProtoList): 15423 (JSC::JIT::compileGetByIdChainList): 15424 (JSC::JIT::compileGetByIdChain): 15425 (JSC::JIT::compilePutByIdTransition): 15426 (JSC::JIT::compilePatchGetArrayLength): 15427 * jit/JITOpcodes.cpp: 15428 (JSC::JIT::privateCompileCTIMachineTrampolines): 15429 * jit/JITOpcodes32_64.cpp: 15430 (JSC::JIT::privateCompileCTIMachineTrampolines): 15431 (JSC::JIT::privateCompileCTINativeCall): 15432 * jit/JITPropertyAccess.cpp: 15433 (JSC::JIT::stringGetByValStubGenerator): 15434 (JSC::JIT::privateCompilePutByIdTransition): 15435 (JSC::JIT::privateCompilePatchGetArrayLength): 15436 (JSC::JIT::privateCompileGetByIdProto): 15437 (JSC::JIT::privateCompileGetByIdSelfList): 15438 (JSC::JIT::privateCompileGetByIdProtoList): 15439 (JSC::JIT::privateCompileGetByIdChainList): 15440 (JSC::JIT::privateCompileGetByIdChain): 15441 * jit/JITPropertyAccess32_64.cpp: 15442 (JSC::JIT::stringGetByValStubGenerator): 15443 (JSC::JIT::privateCompilePutByIdTransition): 15444 (JSC::JIT::privateCompilePatchGetArrayLength): 15445 (JSC::JIT::privateCompileGetByIdProto): 15446 (JSC::JIT::privateCompileGetByIdSelfList): 15447 (JSC::JIT::privateCompileGetByIdProtoList): 15448 (JSC::JIT::privateCompileGetByIdChainList): 15449 (JSC::JIT::privateCompileGetByIdChain): 15450 * jit/JITStubs.cpp: 15451 (JSC::JITThunks::tryCachePutByID): 15452 (JSC::JITThunks::tryCacheGetByID): 15453 (JSC::DEFINE_STUB_FUNCTION): 15454 (JSC::getPolymorphicAccessStructureListSlot): 15455 * jit/JITStubs.h: 15456 * jit/SpecializedThunkJIT.h: 15457 (JSC::SpecializedThunkJIT::finalize): 15458 * runtime/ExceptionHelpers.cpp: 15459 * runtime/ExceptionHelpers.h: 15460 * runtime/Executable.cpp: 15461 (JSC::EvalExecutable::compileInternal): 15462 (JSC::ProgramExecutable::compileInternal): 15463 (JSC::FunctionExecutable::compileForCallInternal): 15464 (JSC::FunctionExecutable::compileForConstructInternal): 15465 (JSC::FunctionExecutable::reparseExceptionInfo): 15466 (JSC::EvalExecutable::reparseExceptionInfo): 15467 * yarr/RegexJIT.cpp: 15468 (JSC::Yarr::RegexGenerator::compile): 15469 15470 2010-08-26 Gavin Barraclough <barraclough (a] apple.com> 15471 15472 Reviewed by Brady Eidson. 15473 15474 Bug 44655 - Add debug only convenience methods to obtain a Vector<char> from a String/StringImpl. 15475 15476 * wtf/text/WTFString.cpp: 15477 (asciiDebug): 15478 Return a Vector<char> containing the contents of a string as ASCII. 15479 15480 2010-08-26 Sam Weinig <sam (a] webkit.org> 15481 15482 Reviewed by Darin Adler. 15483 15484 Add PassOwnArrayPtr 15485 https://bugs.webkit.org/show_bug.cgi?id=44627 15486 15487 * GNUmakefile.am: 15488 * JavaScriptCore.vcproj/WTF/WTF.vcproj: 15489 * JavaScriptCore.xcodeproj/project.pbxproj: 15490 Add the new files. 15491 15492 * wtf/Forward.h: 15493 Forward declare PassOwnArrayPtr. 15494 15495 * wtf/OwnArrayPtr.h: 15496 Mimic the OwnPtr interface. 15497 15498 * wtf/OwnArrayPtrCommon.h: Added. 15499 (WTF::deleteOwnedArrayPtr): 15500 Move delete function here so it can be shared by OwnArrayPtr and 15501 PassOwnArrayPtr. 15502 15503 * wtf/PassOwnArrayPtr.h: Added. 15504 Mimic the PassOwnPtr interface. 15505 15506 2010-08-26 Oliver Hunt <oliver (a] apple.com> 15507 15508 Reviewed by Gavin Barraclough. 15509 15510 [JSC] JavaScript parsing error when loading Equifax web page 15511 https://bugs.webkit.org/show_bug.cgi?id=42900 15512 15513 '-->' is ostensibly only meant to occur when there is only 15514 whitespace preceeding it on the line. However firefox treats 15515 multiline comments as a space character, so they are allowed. 15516 One side effect of the firefox model is that any line terminators 15517 inside the multiline comment are ignored, so 15518 15519 foo/* 15520 */--> 15521 15522 is treated as 15523 15524 foo --> 15525 15526 and so '-->' will not be a comment in this case. Happily this simply 15527 means that to fix this issue all we need to do is stop updating 15528 m_atLineStart when handling multiline comments. 15529 15530 * parser/Lexer.cpp: 15531 (JSC::Lexer::lex): 15532 15533 2010-08-25 Oliver Hunt <oliver (a] apple.com> 15534 15535 Reviewed by Geoffrey Garen. 15536 15537 Improve overflow handling in StringImpl::Replace 15538 https://bugs.webkit.org/show_bug.cgi?id=42502 15539 <rdar://problem/8203794> 15540 15541 Harden StringImpl::replace against overflow -- I can't see how this 15542 could be abused, but it's better to be safe than sorry. 15543 15544 * wtf/text/StringImpl.cpp: 15545 (WTF::StringImpl::replace): 15546 15547 2010-08-26 Martin Robinson <mrobinson (a] igalia.com> 15548 15549 Reviewed by Xan Lopez. 15550 15551 [GTK] The GNUmakefile.am files contain a myriad of confusing preprocessor and compiler flag definitions 15552 https://bugs.webkit.org/show_bug.cgi?id=44624 15553 15554 Clean up GNUmakefile.am. 15555 15556 * GNUmakefile.am: Alphabetize the include order in javascriptcore_cppflags. Move 15557 a couple include lines from the top-level GNUmakefile.am. 15558 15559 2010-08-25 Xan Lopez <xlopez (a] igalia.com> 15560 15561 Reviewed by Kent Tamura. 15562 15563 Local variables 'k' and 'y' in s2b() in dtoa.cpp are computed but not used 15564 https://bugs.webkit.org/show_bug.cgi?id=29259 15565 15566 Remove unused code in dtoa.cpp, spotted by Wan-Teh Chang. 15567 15568 * wtf/dtoa.cpp: 15569 (WTF::s2b): 15570 15571 2010-08-25 Kwang Yul Seo <skyul (a] company100.net> 15572 15573 Reviewed by Kevin Ollivier. 15574 15575 [BREWMP] Add build system 15576 https://bugs.webkit.org/show_bug.cgi?id=44645 15577 15578 Make waf script portable so that we can add more ports. 15579 15580 * wscript: 15581 15582 2010-08-25 Michael Saboff <msaboff (a] apple.com> 15583 15584 Reviewed by Sam Weinig. 15585 15586 Remove the single entry regular expression cache introduced as part of 15587 the fix for https://bugs.webkit.org/show_bug.cgi?id=41238. 15588 The performance problem in Dromaeo that initiated that bug is no 15589 longer present. Dromaeo has been modified so that the regular 15590 expression tests are somewhat random and don't benefit from a 15591 single entry cache. 15592 15593 * runtime/RegExp.cpp: 15594 (JSC::RegExp::RegExp): 15595 (JSC::RegExp::match): 15596 * runtime/RegExp.h: 15597 15598 2010-08-25 Martin Robinson <mrobinson (a] igalia.com> 15599 15600 Reviewed by Gustavo Noronha Silva. 15601 15602 Cairo and EFL port shouldn't depend on glib. 15603 https://bugs.webkit.org/show_bug.cgi?id=44354 15604 15605 Replace GRefPtr with PlatformRefPtr. Keep GLib specific bits in 15606 GRefPtr.h. 15607 15608 * GNUmakefile.am: Add PlatformRefPtr.h to the source list. 15609 * wtf/PlatformRefPtr.h: Migrated from GRefPtr.h. 15610 (WTF::PlatformRefPtr::PlatformRefPtr): Ditto. 15611 (WTF::PlatformRefPtr::~PlatformRefPtr): Ditto. 15612 (WTF::PlatformRefPtr::clear): Ditto. 15613 (WTF::PlatformRefPtr::get): Ditto. 15614 (WTF::PlatformRefPtr::operator*): Ditto. 15615 (WTF::PlatformRefPtr::operator->): Ditto. 15616 (WTF::PlatformRefPtr::operator!): Ditto. 15617 (WTF::PlatformRefPtr::operator UnspecifiedBoolType): Ditto. 15618 (WTF::PlatformRefPtr::hashTableDeletedValue): Ditto. 15619 (WTF::::operator): Ditto. 15620 (WTF::::swap): Ditto. 15621 (WTF::swap): Ditto. 15622 (WTF::operator==): Ditto. 15623 (WTF::operator!=): Ditto. 15624 (WTF::static_pointer_cast): Ditto. 15625 (WTF::const_pointer_cast): Ditto. 15626 (WTF::getPtr): Ditto. 15627 (WTF::adoptPlatformRef): Ditto. 15628 * wtf/gobject/GRefPtr.cpp: Changes to reflect new names. 15629 (WTF::refPlatformPtr): 15630 (WTF::derefPlatformPtr): 15631 * wtf/gobject/GRefPtr.h: Ditto. 15632 (WTF::refPlatformPtr): 15633 (WTF::derefPlatformPtr): 15634 15635 2010-08-25 Xan Lopez <xlopez (a] igalia.com> 15636 15637 Reviewed by Alexey Proskuryakov. 15638 15639 Remove dead code in JSGlobalObject 15640 https://bugs.webkit.org/show_bug.cgi?id=44615 15641 15642 The recursion data member in the JSGlobalObject and its getter 15643 plus inc/dec methods seems to be unused, remove them. 15644 15645 * runtime/JSGlobalObject.cpp: 15646 (JSC::JSGlobalObject::init): 15647 * runtime/JSGlobalObject.h: 15648 15649 2010-08-25 Michael Saboff <msaboff (a] apple.com> 15650 15651 Reviewed by Geoffrey Garen. 15652 15653 Changed the initial and subsequent allocation of vector storage to 15654 Array()s. The changes are to limit sparse arrays to 100000 entries 15655 and fixed the sparse map to vector storage conversion to use the 15656 minimum amount of memory needed to store the current number of entries. 15657 These changes address https://bugs.webkit.org/show_bug.cgi?id=43707 15658 15659 * runtime/JSArray.cpp: 15660 (JSC::JSArray::putSlowCase): 15661 (JSC::JSArray::getNewVectorLength): 15662 15663 2010-08-16 Gabor Loki <loki (a] webkit.org> 15664 15665 Reviewed by Gavin Barraclough. 15666 15667 Avoid increasing required alignment of target type warning 15668 https://bugs.webkit.org/show_bug.cgi?id=43963 15669 15670 Fix platform independent alignment warnings. 15671 15672 * wtf/ListHashSet.h: 15673 (WTF::ListHashSetNodeAllocator::pool): 15674 15675 2010-08-19 Gabor Loki <loki (a] webkit.org> 15676 15677 Reviewed by Gavin Barraclough. 15678 15679 Enable truncated floating point feature on ARM 15680 https://bugs.webkit.org/show_bug.cgi?id=44233 15681 15682 Enable truncated floating point feature with the help of VCVTR.S32.F64 15683 instruction. If VCVTR.S32.F64 can't fit the result into a 32-bit 15684 integer/register, it saturates at INT_MAX or INT_MIN. Testing this 15685 looks quicker than testing FPSCR for exception. 15686 15687 Inspired by Jacob Bramley's patch from JaegerMonkey 15688 15689 * assembler/ARMAssembler.h: 15690 (JSC::ARMAssembler::): 15691 (JSC::ARMAssembler::cmn_r): 15692 (JSC::ARMAssembler::vcvtr_s32_f64_r): 15693 * assembler/MacroAssemblerARM.h: 15694 (JSC::MacroAssemblerARM::supportsFloatingPointTruncate): 15695 (JSC::MacroAssemblerARM::branchTruncateDoubleToInt32): 15696 15697 2010-08-24 Gavin Barraclough <barraclough (a] apple.com> 15698 15699 Windows build fix. 15700 15701 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: 15702 15703 2010-08-24 Gavin Barraclough <barraclough (a] apple.com> 15704 15705 Windows build fix. 15706 15707 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: 15708 * wtf/DecimalNumber.h: 15709 (WTF::DecimalNumber::intPow10): 15710 * wtf/dtoa.cpp: 15711 * wtf/dtoa.h: 15712 15713 2010-08-23 Gavin Barraclough <barraclough (a] apple.com> 15714 15715 Reviewed by Oliver Hunt. 15716 15717 https://bugs.webkit.org/show_bug.cgi?id=44487 15718 15719 Number.toExponential/toFixed/toPrecision all contain a spaghetti of duplicated 15720 code & unnecessary complexity. Add a new DecimalNumber class to encapsulate 15721 double to string conversion, share the implementations of rounding & 15722 decimal-fraction/exponential formatting. 15723 15724 * JavaScriptCore.exp: 15725 Update exports. 15726 15727 * runtime/NumberPrototype.cpp: 15728 (JSC::toThisNumber): 15729 (JSC::getIntegerArgumentInRange): 15730 Helper methods used in implementing toExponential/toFixed/toString. 15731 (JSC::numberProtoFuncToExponential): 15732 (JSC::numberProtoFuncToFixed): 15733 (JSC::numberProtoFuncToPrecision): 15734 Reimplemented using new DecimalNumber class. 15735 15736 * runtime/UString.cpp: 15737 (JSC::UString::number): 15738 Updated to call numberToString. 15739 15740 * wtf/DecimalNumber.h: Added. 15741 (WTF::): 15742 (WTF::DecimalNumber::DecimalNumber): 15743 (WTF::DecimalNumber::toStringDecimal): 15744 (WTF::DecimalNumber::toStringExponential): 15745 (WTF::DecimalNumber::sign): 15746 (WTF::DecimalNumber::exponent): 15747 (WTF::DecimalNumber::significand): 15748 (WTF::DecimalNumber::precision): 15749 (WTF::DecimalNumber::init): 15750 (WTF::DecimalNumber::isZero): 15751 (WTF::DecimalNumber::roundToPrecision): 15752 New class to perform double to string conversion. 15753 Has three constructors, which allow conversion with no rounding, 15754 rounding to significant-figures, or rounding to decimal-places, 15755 and two methods for formatting strings, either using decimal 15756 fraction or exponential encoding. Internal implementation uses 15757 pre-rounding of the values before calling dtoa rather than 15758 relying on dtoa to correctly round, which does not produce 15759 fully accurate results. Hopefully we can address this in the 15760 near future. 15761 15762 * wtf/dtoa.cpp: 15763 (WTF::intPow10): 15764 * wtf/dtoa.h: 15765 intPow10 is used internally by DecimalNumber. 15766 15767 * wtf/text/WTFString.cpp: 15768 (WTF::copyToString): 15769 (WTF::nanOrInfToString): 15770 Used internally in numberToString for NaN/Infinity handling. 15771 (WTF::numberToString): 15772 Added new method to convert doubles to strings. 15773 15774 * wtf/text/WTFString.h: 15775 Added declaration for numberToString. This is here because 15776 we should switch over to using this for all double to string 15777 conversion in WebCore (see section 2.4.4.3 of the HTML5 spec). 15778 15779 2010-08-24 Oliver Hunt <oliver (a] apple.com> 15780 15781 Reviewed by Geoff Garen. 15782 15783 Don't seed the JS random number generator from time() 15784 https://bugs.webkit.org/show_bug.cgi?id=41868 15785 <rdar://problem/8171025> 15786 15787 Switch to using the secure random number generator to 15788 seed the fast random generator, and make the generator 15789 be per global object. 15790 15791 * runtime/JSGlobalData.cpp: 15792 (JSC::JSGlobalData::JSGlobalData): 15793 * runtime/JSGlobalData.h: 15794 * runtime/JSGlobalObject.h: 15795 (JSC::JSGlobalObject::JSGlobalObjectData::JSGlobalObjectData): 15796 (JSC::JSGlobalObject::weakRandomNumber): 15797 * runtime/MathObject.cpp: 15798 (JSC::mathProtoFuncRandom): 15799 15800 2010-08-24 Oliver Hunt <oliver (a] apple.com> 15801 15802 Reviewed by Beth Dakin. 15803 15804 Make overflow guards in UString::utf8 explicit 15805 https://bugs.webkit.org/show_bug.cgi?id=44540 15806 15807 Add an explicit overflow check prior to allocating our buffer, 15808 rather than implicitly relying on the guard in convertUTF16ToUTF8. 15809 15810 * runtime/UString.cpp: 15811 (JSC::UString::utf8): 15812 15813 2010-08-24 Yael Aharon <yael.aharon (a] nokia.com> 15814 15815 Reviewed by Simon Hausmann. 15816 15817 [Symbian] Fix commit/decommit of system memory using RChunk 15818 15819 Swap accidentially reversed start and m_base values for determining the 15820 offset within the RChunk. 15821 15822 * wtf/PageReservation.h: 15823 (WTF::PageReservation::systemCommit): 15824 (WTF::PageReservation::systemDecommit): 15825 15826 2010-08-23 Patrick Gansterer <paroga (a] paroga.com> 15827 15828 Rubber-stamped by Gabor Loki. 15829 15830 [WINCE] Buildfix for GeneratedJITStubs after r64818 15831 https://bugs.webkit.org/show_bug.cgi?id=44469 15832 15833 Use " THUNK_RETURN_ADDRESS_OFFSET" instead of "#offset#". 15834 15835 * jit/JITStubs.cpp: 15836 15837 2010-08-23 Oliver Hunt <oliver (a] apple.com> 15838 15839 Reviewed by Darin Adler. 15840 15841 [REGRESSION] Interpreter incorrectly excludes prototype chain when validating put_by_id_transition 15842 https://bugs.webkit.org/show_bug.cgi?id=44240 15843 <rdar://problem/8328995> 15844 15845 Fix an error I introduced when cleaning up the interpreter side of the logic 15846 to prevent setters being called in object initialisers. 15847 15848 * interpreter/Interpreter.cpp: 15849 (JSC::Interpreter::privateExecute): 15850 15851 2010-08-23 Michael Saboff <msaboff (a] apple.com> 15852 15853 Reviewed by Oliver Hunt. 15854 15855 Fixed case where a single character search string in a string.replace() 15856 did not properly handle back reference replacement. The fix is to 15857 check for a '$' as part of the check to see if we can execute the 15858 single character replace optimization. 15859 https://bugs.webkit.org/show_bug.cgi?id=44067 15860 15861 * runtime/StringPrototype.cpp: 15862 (JSC::stringProtoFuncReplace): 15863 15864 2010-08-23 Oliver Hunt <oliver (a] apple.com> 15865 15866 Reviewed by Gavin Barraclough. 15867 15868 JSON.stringify is much slower than Firefox on particular pathological input 15869 https://bugs.webkit.org/show_bug.cgi?id=44456 15870 15871 Make StringBuilder::reserveCapacity reserve additional space so we don't end up 15872 repeatedly copying the entire result string. 15873 15874 * runtime/StringBuilder.h: 15875 (JSC::StringBuilder::append): 15876 (JSC::StringBuilder::reserveCapacity): 15877 15878 2010-08-23 Jian Li <jianli (a] chromium.org> 15879 15880 Reviewed by Darin Fisher. 15881 15882 Handle blob resource. 15883 https://bugs.webkit.org/show_bug.cgi?id=43941 15884 15885 * JavaScriptCore.exp: Add an export that is neede by BlobResourceHandle. 15886 15887 2010-08-19 Andreas Kling <andreas.kling (a] nokia.com> 15888 15889 Reviewed by Geoffrey Garen. 15890 15891 JSC: Move the static_cast into to(U)Int32 fast case 15892 https://bugs.webkit.org/show_bug.cgi?id=44037 15893 15894 Do the static_cast<(u)int32_t> inline to avoid the function call overhead 15895 for easily converted values (within (u)int32_t range.) 15896 15897 * runtime/JSValue.cpp: 15898 (JSC::toInt32SlowCase): 15899 (JSC::toUInt32SlowCase): 15900 * runtime/JSValue.h: 15901 (JSC::JSValue::toInt32): 15902 (JSC::JSValue::toUInt32): 15903 15904 2010-08-18 Andreas Kling <andreas.kling (a] nokia.com> 15905 15906 Reviewed by Geoffrey Garen. 15907 15908 REGRESSION(r58469): Math.pow() always returns double-backed JSValue which is extremely slow as array subscript 15909 https://bugs.webkit.org/show_bug.cgi?id=43742 15910 15911 Add codegen for pow() to return Int32 values when possible. 15912 15913 * jit/ThunkGenerators.cpp: 15914 (JSC::powThunkGenerator): 15915 15916 2010-08-18 Gabor Loki <loki (a] webkit.org> 15917 15918 Reviewed by Gavin Barraclough. 15919 15920 The JITStackFrame is wrong using Thumb-2 JIT with JSVALUE32_64 15921 https://bugs.webkit.org/show_bug.cgi?id=43897 15922 15923 A 64 bits wide member in a structure is aligned to 8 bytes on ARM by 15924 default, but this is not taken into account in the offset defines of 15925 JITStackFrame. 15926 15927 * jit/JITStubs.cpp: 15928 * jit/JITStubs.h: 15929 15930 2010-08-18 Gavin Barraclough <barraclough (a] apple.com> 15931 15932 Rubber stamped by Sam Weinig. 15933 15934 Rename UString::substr to substringSharingImpl, add to WTF::String. 15935 Now WTF::String can do everything that JSC::UString can do! 15936 15937 * JavaScriptCore.exp: 15938 * bytecode/CodeBlock.cpp: 15939 (JSC::escapeQuotes): 15940 * bytecompiler/NodesCodegen.cpp: 15941 (JSC::substitute): 15942 * parser/SourceProvider.h: 15943 (JSC::UStringSourceProvider::getRange): 15944 * runtime/FunctionPrototype.cpp: 15945 (JSC::insertSemicolonIfNeeded): 15946 * runtime/JSGlobalObjectFunctions.cpp: 15947 (JSC::parseInt): 15948 * runtime/JSONObject.cpp: 15949 (JSC::gap): 15950 (JSC::Stringifier::indent): 15951 (JSC::Stringifier::unindent): 15952 * runtime/JSString.cpp: 15953 (JSC::JSString::replaceCharacter): 15954 * runtime/NumberPrototype.cpp: 15955 (JSC::numberProtoFuncToFixed): 15956 (JSC::numberProtoFuncToPrecision): 15957 * runtime/StringPrototype.cpp: 15958 (JSC::stringProtoFuncReplace): 15959 (JSC::trimString): 15960 * runtime/UString.cpp: 15961 (JSC::UString::substringSharingImpl): 15962 * runtime/UString.h: 15963 * wtf/text/WTFString.cpp: 15964 (WTF::String::substringSharingImpl): 15965 * wtf/text/WTFString.h: 15966 15967 2010-08-18 Gavin Barraclough <barraclough (a] apple.com> 15968 15969 Windows build fix. 15970 15971 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: 15972 * JavaScriptCore.xcodeproj/project.pbxproj: 15973 15974 2010-08-18 Gavin Barraclough <barraclough (a] apple.com> 15975 15976 Windows build fix. 15977 15978 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: 15979 * JavaScriptCore.xcodeproj/project.pbxproj: 15980 15981 2010-08-17 Gavin Barraclough <barraclough (a] apple.com> 15982 15983 Reviewed by Sam Weinig. 15984 15985 Bug 44146 - Remove toDouble/toUInt32 methods from UString. 15986 15987 These methods all implement JavaScript language specific behaviour, and as such 15988 are not suited to being on a generic string object. They are also inefficient 15989 and incorrectly used, refactor & cleanup. Uses of these methods really divide 15990 out into two cases. 15991 15992 ToNumber: 15993 Uses of toDouble from JSString and from parseFloat are implementing ecma's 15994 ToNumber conversion from strings (see ecma-262 9.3.1), so UString::toDouble 15995 should largely just be moved out to a global jsToNumber function. ToNumber is 15996 capable of recognizing either decimal or hexadecimal numbers, but parseFloat 15997 should only recognize decimal values. This is currently handled by testing for 15998 hexadecimal before calling toDouble, which should unnecessary - instead we can 15999 just split out the two parts to the grammar into separate functions. Also, 16000 strtod recognizes a set of literals (nan, inf, and infinity - all with any 16001 capitalization) - which are not defined by any of the specs we are implementing. 16002 To handle this we need to perform additional work in toDouble to convert the 16003 unsupported cases of infinities back to NaNs. Instead we should simply remove 16004 support for this literals from strtod. This should provide a more desirable 16005 behaviour for all clients of strtod. 16006 16007 Indexed properties: 16008 Uses of the toStrictUInt32 methods are were all converting property names to 16009 indices, and all uses of toUInt32 were incorrect; in all cases we should have 16010 been calling toUInt32. This error results in some incorrect behaviour in the 16011 DOM (accessing property "0 " of a NodeList should fail; it currently does not). 16012 Move this method onto Identifier (our canonical property name), and make it 16013 always perform a strict conversion. Add a layout test to check NodeList does 16014 convert indexed property names correctly. 16015 16016 * JavaScriptCore.exp: 16017 * runtime/Arguments.cpp: 16018 (JSC::Arguments::getOwnPropertySlot): 16019 (JSC::Arguments::getOwnPropertyDescriptor): 16020 (JSC::Arguments::put): 16021 (JSC::Arguments::deleteProperty): 16022 * runtime/Identifier.cpp: 16023 (JSC::Identifier::toUInt32): 16024 * runtime/Identifier.h: 16025 (JSC::Identifier::toUInt32): 16026 * runtime/JSArray.cpp: 16027 (JSC::JSArray::getOwnPropertySlot): 16028 (JSC::JSArray::getOwnPropertyDescriptor): 16029 (JSC::JSArray::put): 16030 (JSC::JSArray::deleteProperty): 16031 * runtime/JSArray.h: 16032 (JSC::Identifier::toArrayIndex): 16033 * runtime/JSByteArray.cpp: 16034 (JSC::JSByteArray::getOwnPropertySlot): 16035 (JSC::JSByteArray::getOwnPropertyDescriptor): 16036 (JSC::JSByteArray::put): 16037 * runtime/JSGlobalObjectFunctions.cpp: 16038 (JSC::isInfinity): 16039 (JSC::jsHexIntegerLiteral): 16040 (JSC::jsStrDecimalLiteral): 16041 (JSC::jsToNumber): 16042 (JSC::parseFloat): 16043 * runtime/JSGlobalObjectFunctions.h: 16044 * runtime/JSString.cpp: 16045 (JSC::JSString::getPrimitiveNumber): 16046 (JSC::JSString::toNumber): 16047 (JSC::JSString::getStringPropertyDescriptor): 16048 * runtime/JSString.h: 16049 (JSC::JSString::getStringPropertySlot): 16050 * runtime/ObjectPrototype.cpp: 16051 (JSC::ObjectPrototype::put): 16052 * runtime/StringObject.cpp: 16053 (JSC::StringObject::deleteProperty): 16054 * runtime/UString.cpp: 16055 * runtime/UString.h: 16056 * wtf/dtoa.cpp: 16057 (WTF::strtod): 16058 16059 2010-08-17 Gavin Barraclough <barraclough (a] apple.com> 16060 16061 Reviewed by Sam Weinig. 16062 16063 Bug 44099 - REGRESSION(r65468): Crashes in StringImpl::find 16064 16065 Bug 44080 introuduced a couple of cases in which array bounds could be overrun. 16066 One of these was fixed in r65493, this patch fixes the other and address the 16067 concerns voiced in comment #6 by restructuring the loops to remove the code 16068 dupliction without introducing an additional if check. 16069 16070 * wtf/text/StringImpl.cpp: 16071 (WTF::StringImpl::find): 16072 (WTF::StringImpl::findIgnoringCase): 16073 (WTF::StringImpl::reverseFind): 16074 (WTF::StringImpl::reverseFindIgnoringCase): 16075 16076 2010-08-17 No'am Rosenthal <noam.rosenthal (a] nokia.com> 16077 16078 Reviewed by Ariya Hidayat. 16079 16080 [Qt] Move the accelerated compositing build flag to the right place 16081 https://bugs.webkit.org/show_bug.cgi?id=43882 16082 16083 * wtf/Platform.h: 16084 16085 2010-08-17 Yuta Kitamura <yutak (a] chromium.org> 16086 16087 Reviewed by Shinichiro Hamaji. 16088 16089 Avoid uninitialized memory read in StringImpl::find(). 16090 16091 REGRESSION(r65468): Crashes in StringImpl::find 16092 https://bugs.webkit.org/show_bug.cgi?id=44099 16093 16094 * wtf/text/StringImpl.cpp: 16095 (WTF::StringImpl::find): 16096 16097 2010-08-16 Gavin Barraclough <barraclough (a] apple.com> 16098 16099 Rubber stamped by Sam Weinig 16100 16101 Add VectorTraits to String & DefaultHash traits to UString to unify behaviour. 16102 16103 * runtime/UString.h: 16104 (JSC::UStringHash::hash): 16105 (JSC::UStringHash::equal): 16106 (WTF::): 16107 * wtf/text/WTFString.h: 16108 (WTF::): 16109 16110 2010-08-16 Gavin Barraclough <barraclough (a] apple.com> 16111 16112 Rubber stamped by Sam Weinig 16113 16114 Remove unnecessary includes from UString.h, add new includes as necessary. 16115 16116 * profiler/CallIdentifier.h: 16117 * profiler/ProfileNode.h: 16118 * runtime/DateConversion.cpp: 16119 * runtime/Identifier.h: 16120 (JSC::IdentifierRepHash::hash): 16121 * runtime/RegExpCache.h: 16122 * runtime/RegExpKey.h: 16123 * runtime/UString.cpp: 16124 (JSC::UString::substr): 16125 * runtime/UString.h: 16126 * wtf/text/WTFString.h: 16127 16128 2010-08-16 Gavin Barraclough <barraclough (a] apple.com> 16129 16130 Reviewed by Sam Weinig 16131 16132 Bug 44080 - String find/reverseFind methods need tidying up 16133 These methods have a couple of problems with their interface, and implementation. 16134 16135 These methods take and int index, and return an int - however this is problematic 16136 since on 64-bit string indices may have a full 32-bit range. This spills out into 16137 surrounding code, which unsafely casts string indices from unsigned to int. Code 16138 checking the result of these methods check for a mix of "== -1", "< 0", and 16139 "== notFound". Clean this up by changing these methods to take an unsigned 16140 starting index, and return a size_t. with a failed match indicated by notFound. 16141 reverseFind also has a special meaning for the starting index argument, in that a 16142 negative index is interpreted as an offset back from the end of the string. Remove 16143 this functionality, in the (1!) case where it is used we should just calculate the 16144 offset by subtracting from the string's length. 16145 16146 The implementation has a few problems too. The code is not in webkit style, in 16147 using assorted abbreviations in variable names, and implementations of similar 16148 find methods with differing argument types were unnecessarily inconsistent. When 16149 find is passed const char* data the string would be handled as latin1 (zero 16150 extended to UTF-16) for all characters but the first; this is sign extended. 16151 Case-insensitive find is broken for unicode strings; the hashing optimization is 16152 not unicode safe, and could result in false negatives. 16153 16154 Unify UString find methods to match String. 16155 16156 * JavaScriptCore.exp: 16157 * bytecode/CodeBlock.cpp: 16158 (JSC::escapeQuotes): 16159 * bytecompiler/NodesCodegen.cpp: 16160 (JSC::substitute): 16161 * runtime/JSString.cpp: 16162 (JSC::JSString::replaceCharacter): 16163 * runtime/RegExp.cpp: 16164 (JSC::RegExp::RegExp): 16165 * runtime/RegExpKey.h: 16166 (JSC::RegExpKey::getFlagsValue): 16167 * runtime/StringPrototype.cpp: 16168 (JSC::substituteBackreferencesSlow): 16169 (JSC::substituteBackreferences): 16170 (JSC::stringProtoFuncReplace): 16171 (JSC::stringProtoFuncIndexOf): 16172 (JSC::stringProtoFuncLastIndexOf): 16173 (JSC::stringProtoFuncSplit): 16174 * runtime/UString.cpp: 16175 * runtime/UString.h: 16176 (JSC::UString::find): 16177 (JSC::UString::reverseFind): 16178 * wtf/text/AtomicString.h: 16179 (WTF::AtomicString::find): 16180 * wtf/text/StringImpl.cpp: 16181 (WTF::StringImpl::find): 16182 (WTF::StringImpl::findCaseInsensitive): 16183 (WTF::StringImpl::reverseFind): 16184 (WTF::StringImpl::reverseFindCaseInsensitive): 16185 (WTF::StringImpl::endsWith): 16186 (WTF::StringImpl::replace): 16187 * wtf/text/StringImpl.h: 16188 (WTF::StringImpl::startsWith): 16189 * wtf/text/WTFString.cpp: 16190 (WTF::String::split): 16191 * wtf/text/WTFString.h: 16192 (WTF::String::find): 16193 (WTF::String::reverseFind): 16194 (WTF::String::findCaseInsensitive): 16195 (WTF::String::reverseFindCaseInsensitive): 16196 (WTF::String::contains): 16197 (WTF::find): 16198 (WTF::reverseFind): 16199 16200 2010-08-16 Kevin Ollivier <kevino (a] theolliviers.com> 16201 16202 [wx] Build fix, do not build WebCore as a convenience library as this leads to 16203 errors in the Win build w/export symbols and causes problems with DOM bindings 16204 debugging in gdb. 16205 16206 * wscript: 16207 16208 2010-08-16 Leandro Pereira <leandro (a] profusion.mobi> 16209 16210 [EFL] Build fix after r65366. 16211 16212 * CMakeLists.txt: Use if (VAR) instead of if (${VAR}) to check if 16213 they're empty. 16214 * jsc/CMakeLists.txt: Ditto. 16215 * wtf/CMakeLists.txt: Ditto. 16216 16217 2010-08-15 Kevin Ollivier <kevino (a] theolliviers.com> 16218 16219 [wx] Build fix, don't build intermediate source in DerivedSources dir. 16220 16221 * wscript: 16222 16223 2010-08-14 Patrick Gansterer <paroga (a] paroga.com> 16224 16225 Reviewed by Kenneth Rohde Christiansen. 16226 16227 [CMake] Add preprocessor detection for generator scripts 16228 https://bugs.webkit.org/show_bug.cgi?id=43984 16229 16230 * CMakeLists.txt: 16231 16232 2010-08-14 Patrick Gansterer <paroga (a] paroga.com> 16233 16234 Reviewed by Kenneth Rohde Christiansen. 16235 16236 [CMake] Set target properties only if available 16237 https://bugs.webkit.org/show_bug.cgi?id=43978 16238 16239 * CMakeLists.txt: 16240 * jsc/CMakeLists.txt: 16241 * wtf/CMakeLists.txt: 16242 16243 2010-08-13 Kevin Ollivier <kevino (a] theolliviers.com> 16244 16245 [wx] Build fix, add CString to the list of forwards. 16246 16247 * wtf/Forward.h: 16248 16249 2010-08-13 Gavin Barraclough <barraclough (a] apple.com> 16250 16251 Windows build fix 16252 16253 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: 16254 16255 2010-08-13 Gavin Barraclough <barraclough (a] apple.com> 16256 16257 Windows build fix 16258 16259 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: 16260 16261 2010-08-13 Gavin Barraclough <barraclough (a] apple.com> 16262 16263 Windows build fix 16264 16265 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: 16266 16267 2010-08-13 Gavin Barraclough <barraclough (a] apple.com> 16268 16269 Rubber stamped by Sam Weinig. 16270 Switch String::/UString::ascii() to return a CString. 16271 16272 * JavaScriptCore.exp: 16273 * JavaScriptCore.xcodeproj/project.pbxproj: 16274 * bytecode/CodeBlock.cpp: 16275 (JSC::CodeBlock::dump): 16276 * bytecode/SamplingTool.cpp: 16277 (JSC::SamplingTool::dump): 16278 * interpreter/CallFrame.cpp: 16279 (JSC::CallFrame::dumpCaller): 16280 * jsc.cpp: 16281 (runWithScripts): 16282 (runInteractive): 16283 * runtime/Identifier.h: 16284 (JSC::Identifier::ascii): 16285 * runtime/ScopeChain.cpp: 16286 (JSC::ScopeChainNode::print): 16287 * runtime/UString.cpp: 16288 (JSC::UString::ascii): 16289 (JSC::UString::latin1): 16290 * runtime/UString.h: 16291 * wtf/text/StringImpl.cpp: 16292 (WTF::StringImpl::asciiOLD): 16293 * wtf/text/StringImpl.h: 16294 * wtf/text/WTFString.cpp: 16295 (WTF::String::ascii): 16296 (WTF::String::latin1): 16297 * wtf/text/WTFString.h: 16298 16299 2010-08-13 Gabor Loki <loki (a] webkit.org> 16300 16301 Reviewed by Gavin Barraclough. 16302 16303 Avoid increasing required alignment of target type warning on ARM 16304 https://bugs.webkit.org/show_bug.cgi?id=38045 16305 16306 The reinterpret_cast<Type1*>([pointer to Type2]) expressions - where 16307 sizeof(Type1) > sizeof(Type2) - cause the following warning on ARM: 16308 increases required alignment of target type warnings. 16309 Casting the type of [pointer to Type2] object to void* bypasses the 16310 warning. 16311 16312 * assembler/ARMAssembler.cpp: 16313 (JSC::ARMAssembler::executableCopy): 16314 * assembler/AssemblerBuffer.h: 16315 (JSC::AssemblerBuffer::putShortUnchecked): 16316 (JSC::AssemblerBuffer::putIntUnchecked): 16317 (JSC::AssemblerBuffer::putInt64Unchecked): 16318 * interpreter/RegisterFile.h: 16319 (JSC::RegisterFile::RegisterFile): 16320 (JSC::RegisterFile::grow): 16321 * jit/JITStubs.cpp: 16322 * pcre/pcre_compile.cpp: 16323 (jsRegExpCompile): 16324 * runtime/JSArray.cpp: 16325 (JSC::JSArray::putSlowCase): 16326 (JSC::JSArray::increaseVectorLength): 16327 (JSC::JSArray::increaseVectorPrefixLength): 16328 (JSC::JSArray::shiftCount): 16329 (JSC::JSArray::unshiftCount): 16330 * wtf/FastMalloc.cpp: 16331 (WTF::PageHeapAllocator::New): 16332 (WTF::TCMalloc_Central_FreeList::Populate): 16333 * wtf/MD5.cpp: 16334 (WTF::reverseBytes): 16335 (WTF::MD5::addBytes): 16336 (WTF::MD5::checksum): 16337 * wtf/StdLibExtras.h: 16338 (isPointerTypeAlignmentOkay): 16339 (reinterpret_cast_ptr): 16340 * wtf/Vector.h: 16341 (WTF::VectorBuffer::inlineBuffer): 16342 * wtf/qt/StringQt.cpp: 16343 (WTF::String::String): 16344 16345 2010-08-13 Gavin Barraclough <barraclough (a] apple.com> 16346 16347 Reviewed by Sam Weinig 16348 16349 Unify UString::UTF8String() & String::utf8() methods, 16350 remove UString::cost() & make atArrayIndex a free function. 16351 16352 * JavaScriptCore.exp: 16353 * bytecode/CodeBlock.cpp: 16354 (JSC::constantName): 16355 (JSC::idName): 16356 (JSC::CodeBlock::registerName): 16357 (JSC::regexpName): 16358 (JSC::printGlobalResolveInfo): 16359 (JSC::printStructureStubInfo): 16360 (JSC::CodeBlock::printStructure): 16361 (JSC::CodeBlock::printStructures): 16362 * jsc.cpp: 16363 (functionPrint): 16364 (functionDebug): 16365 (runInteractive): 16366 (fillBufferWithContentsOfFile): 16367 * pcre/pcre_exec.cpp: 16368 (Histogram::~Histogram): 16369 * profiler/CallIdentifier.h: 16370 (JSC::CallIdentifier::c_str): 16371 * profiler/Profile.cpp: 16372 (JSC::Profile::debugPrintDataSampleStyle): 16373 * profiler/ProfileGenerator.cpp: 16374 (JSC::ProfileGenerator::willExecute): 16375 (JSC::ProfileGenerator::didExecute): 16376 * profiler/ProfileNode.cpp: 16377 (JSC::ProfileNode::debugPrintData): 16378 (JSC::ProfileNode::debugPrintDataSampleStyle): 16379 * runtime/Arguments.cpp: 16380 (JSC::Arguments::getOwnPropertySlot): 16381 (JSC::Arguments::getOwnPropertyDescriptor): 16382 (JSC::Arguments::put): 16383 (JSC::Arguments::deleteProperty): 16384 * runtime/DateConversion.cpp: 16385 (JSC::parseDate): 16386 * runtime/Identifier.h: 16387 (JSC::Identifier::toStrictUInt32): 16388 * runtime/JSArray.cpp: 16389 (JSC::JSArray::getOwnPropertySlot): 16390 (JSC::JSArray::getOwnPropertyDescriptor): 16391 (JSC::JSArray::put): 16392 (JSC::JSArray::deleteProperty): 16393 * runtime/JSArray.h: 16394 (JSC::toArrayIndex): 16395 * runtime/JSGlobalObjectFunctions.cpp: 16396 (JSC::encode): 16397 (JSC::parseInt): 16398 (JSC::globalFuncJSCPrint): 16399 * runtime/JSString.h: 16400 (JSC::RopeBuilder::JSString): 16401 * runtime/UString.cpp: 16402 (JSC::UString::toDouble): 16403 (JSC::putUTF8Triple): 16404 (JSC::UString::utf8): 16405 * runtime/UString.h: 16406 (JSC::UString::~UString): 16407 (JSC::UString::isNull): 16408 (JSC::UString::isEmpty): 16409 (JSC::UString::impl): 16410 * wtf/text/WTFString.cpp: 16411 (WTF::String::utf8): 16412 * wtf/text/WTFString.h: 16413 (WTF::String::~String): 16414 (WTF::String::swap): 16415 (WTF::String::isNull): 16416 (WTF::String::isEmpty): 16417 (WTF::String::impl): 16418 (WTF::String::length): 16419 (WTF::String::String): 16420 (WTF::String::isHashTableDeletedValue): 16421 16422 2010-08-12 Zoltan Herczeg <zherczeg (a] webkit.org> 16423 16424 Reviewed by Gavin Barraclough. 16425 16426 Refactoring the fpu code generator for the ARM port 16427 https://bugs.webkit.org/show_bug.cgi?id=43842 16428 16429 Support up to 32 double precision registers, and the 16430 recent VFP instruction formats. This patch is mainly 16431 a style change which keeps the current functionality. 16432 16433 * assembler/ARMAssembler.h: 16434 (JSC::ARMRegisters::): 16435 (JSC::ARMAssembler::): 16436 (JSC::ARMAssembler::emitInst): 16437 (JSC::ARMAssembler::emitDoublePrecisionInst): 16438 (JSC::ARMAssembler::emitSinglePrecisionInst): 16439 (JSC::ARMAssembler::vadd_f64_r): 16440 (JSC::ARMAssembler::vdiv_f64_r): 16441 (JSC::ARMAssembler::vsub_f64_r): 16442 (JSC::ARMAssembler::vmul_f64_r): 16443 (JSC::ARMAssembler::vcmp_f64_r): 16444 (JSC::ARMAssembler::vsqrt_f64_r): 16445 (JSC::ARMAssembler::vmov_vfp_r): 16446 (JSC::ARMAssembler::vmov_arm_r): 16447 (JSC::ARMAssembler::vcvt_f64_s32_r): 16448 (JSC::ARMAssembler::vcvt_s32_f64_r): 16449 (JSC::ARMAssembler::vmrs_apsr): 16450 * assembler/MacroAssemblerARM.h: 16451 (JSC::MacroAssemblerARM::addDouble): 16452 (JSC::MacroAssemblerARM::divDouble): 16453 (JSC::MacroAssemblerARM::subDouble): 16454 (JSC::MacroAssemblerARM::mulDouble): 16455 (JSC::MacroAssemblerARM::sqrtDouble): 16456 (JSC::MacroAssemblerARM::convertInt32ToDouble): 16457 (JSC::MacroAssemblerARM::branchDouble): 16458 (JSC::MacroAssemblerARM::branchConvertDoubleToInt32): 16459 16460 2010-08-12 Sheriff Bot <webkit.review.bot (a] gmail.com> 16461 16462 Unreviewed, rolling out r65295. 16463 http://trac.webkit.org/changeset/65295 16464 https://bugs.webkit.org/show_bug.cgi?id=43950 16465 16466 It broke 4 sputnik tests (Requested by Ossy on #webkit). 16467 16468 * JavaScriptCore.exp: 16469 * bytecode/CodeBlock.cpp: 16470 (JSC::constantName): 16471 (JSC::idName): 16472 (JSC::CodeBlock::registerName): 16473 (JSC::regexpName): 16474 (JSC::printGlobalResolveInfo): 16475 (JSC::printStructureStubInfo): 16476 (JSC::CodeBlock::printStructure): 16477 (JSC::CodeBlock::printStructures): 16478 * jsc.cpp: 16479 (functionPrint): 16480 (functionDebug): 16481 (runInteractive): 16482 (fillBufferWithContentsOfFile): 16483 * pcre/pcre_exec.cpp: 16484 (Histogram::~Histogram): 16485 * profiler/CallIdentifier.h: 16486 (JSC::CallIdentifier::c_str): 16487 * profiler/Profile.cpp: 16488 (JSC::Profile::debugPrintDataSampleStyle): 16489 * profiler/ProfileGenerator.cpp: 16490 (JSC::ProfileGenerator::willExecute): 16491 (JSC::ProfileGenerator::didExecute): 16492 * profiler/ProfileNode.cpp: 16493 (JSC::ProfileNode::debugPrintData): 16494 (JSC::ProfileNode::debugPrintDataSampleStyle): 16495 * runtime/Arguments.cpp: 16496 (JSC::Arguments::getOwnPropertySlot): 16497 (JSC::Arguments::getOwnPropertyDescriptor): 16498 (JSC::Arguments::put): 16499 (JSC::Arguments::deleteProperty): 16500 * runtime/DateConversion.cpp: 16501 (JSC::parseDate): 16502 * runtime/Identifier.h: 16503 (JSC::Identifier::Identifier): 16504 (JSC::Identifier::toArrayIndex): 16505 * runtime/JSArray.cpp: 16506 (JSC::JSArray::getOwnPropertySlot): 16507 (JSC::JSArray::getOwnPropertyDescriptor): 16508 (JSC::JSArray::put): 16509 (JSC::JSArray::deleteProperty): 16510 * runtime/JSArray.h: 16511 * runtime/JSGlobalObjectFunctions.cpp: 16512 (JSC::encode): 16513 (JSC::parseInt): 16514 (JSC::globalFuncJSCPrint): 16515 * runtime/JSString.h: 16516 (JSC::RopeBuilder::JSString): 16517 * runtime/UString.cpp: 16518 (JSC::UString::toDouble): 16519 (JSC::UString::UTF8String): 16520 * runtime/UString.h: 16521 (JSC::UString::isNull): 16522 (JSC::UString::isEmpty): 16523 (JSC::UString::impl): 16524 (JSC::UString::cost): 16525 (JSC::UString::~UString): 16526 (JSC::UString::toArrayIndex): 16527 * wtf/text/WTFString.cpp: 16528 (WTF::String::utf8): 16529 * wtf/text/WTFString.h: 16530 (WTF::String::String): 16531 (WTF::String::isHashTableDeletedValue): 16532 (WTF::String::length): 16533 (WTF::String::operator[]): 16534 (WTF::String::isNull): 16535 (WTF::String::isEmpty): 16536 (WTF::String::impl): 16537 16538 2010-08-12 Gavin Barraclough <barraclough (a] apple.com> 16539 16540 Windows build fix. 16541 16542 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: 16543 16544 2010-08-12 Gavin Barraclough <barraclough (a] apple.com> 16545 16546 Reviewed by Sam Weinig 16547 16548 Unify UString::UTF8String() & String::utf8() methods, 16549 remove UString::cost() & make atArrayIndex a free function. 16550 16551 * JavaScriptCore.exp: 16552 * bytecode/CodeBlock.cpp: 16553 (JSC::constantName): 16554 (JSC::idName): 16555 (JSC::CodeBlock::registerName): 16556 (JSC::regexpName): 16557 (JSC::printGlobalResolveInfo): 16558 (JSC::printStructureStubInfo): 16559 (JSC::CodeBlock::printStructure): 16560 (JSC::CodeBlock::printStructures): 16561 * jsc.cpp: 16562 (functionPrint): 16563 (functionDebug): 16564 (runInteractive): 16565 (fillBufferWithContentsOfFile): 16566 * pcre/pcre_exec.cpp: 16567 (Histogram::~Histogram): 16568 * profiler/CallIdentifier.h: 16569 (JSC::CallIdentifier::c_str): 16570 * profiler/Profile.cpp: 16571 (JSC::Profile::debugPrintDataSampleStyle): 16572 * profiler/ProfileGenerator.cpp: 16573 (JSC::ProfileGenerator::willExecute): 16574 (JSC::ProfileGenerator::didExecute): 16575 * profiler/ProfileNode.cpp: 16576 (JSC::ProfileNode::debugPrintData): 16577 (JSC::ProfileNode::debugPrintDataSampleStyle): 16578 * runtime/Arguments.cpp: 16579 (JSC::Arguments::getOwnPropertySlot): 16580 (JSC::Arguments::getOwnPropertyDescriptor): 16581 (JSC::Arguments::put): 16582 (JSC::Arguments::deleteProperty): 16583 * runtime/DateConversion.cpp: 16584 (JSC::parseDate): 16585 * runtime/Identifier.h: 16586 (JSC::Identifier::toStrictUInt32): 16587 * runtime/JSArray.cpp: 16588 (JSC::JSArray::getOwnPropertySlot): 16589 (JSC::JSArray::getOwnPropertyDescriptor): 16590 (JSC::JSArray::put): 16591 (JSC::JSArray::deleteProperty): 16592 * runtime/JSArray.h: 16593 (JSC::toArrayIndex): 16594 * runtime/JSGlobalObjectFunctions.cpp: 16595 (JSC::encode): 16596 (JSC::parseInt): 16597 (JSC::globalFuncJSCPrint): 16598 * runtime/JSString.h: 16599 (JSC::RopeBuilder::JSString): 16600 * runtime/UString.cpp: 16601 (JSC::UString::toDouble): 16602 (JSC::putUTF8Triple): 16603 (JSC::UString::utf8): 16604 * runtime/UString.h: 16605 (JSC::UString::~UString): 16606 (JSC::UString::isNull): 16607 (JSC::UString::isEmpty): 16608 (JSC::UString::impl): 16609 * wtf/text/WTFString.cpp: 16610 (WTF::String::utf8): 16611 * wtf/text/WTFString.h: 16612 (WTF::String::~String): 16613 (WTF::String::swap): 16614 (WTF::String::isNull): 16615 (WTF::String::isEmpty): 16616 (WTF::String::impl): 16617 (WTF::String::length): 16618 (WTF::String::String): 16619 (WTF::String::isHashTableDeletedValue): 16620 16621 2010-08-12 Gavin Barraclough <barraclough (a] apple.com> 16622 16623 Eeerk! - revert accidentally committed changes in UString! 16624 16625 * JavaScriptCore.exp: 16626 * runtime/UString.cpp: 16627 (JSC::UString::UString): 16628 * runtime/UString.h: 16629 16630 2010-08-12 Gavin Barraclough <barraclough (a] apple.com> 16631 16632 Reviewed by Sam Weinig 16633 16634 Change UString constructors to match those in WTF::String. 16635 This changes behaviour of UString((char*)0) to create null 16636 strings, akin to UString() rather than UString::empty(). 16637 (This matches String). Remove unused constructors from 16638 UString, and add null-terminated UTF-16 constructor, to 16639 match String. Move String's constructor into the .cpp to 16640 match UString. 16641 16642 * JavaScriptCore.exp: 16643 * debugger/DebuggerCallFrame.cpp: 16644 (JSC::DebuggerCallFrame::calculatedFunctionName): 16645 * runtime/RegExpKey.h: 16646 (JSC::RegExpKey::RegExpKey): 16647 * runtime/SmallStrings.cpp: 16648 (JSC::SmallStrings::createSingleCharacterString): 16649 * runtime/UString.cpp: 16650 (JSC::UString::UString): 16651 * runtime/UString.h: 16652 (JSC::UString::UString): 16653 (JSC::UString::swap): 16654 (JSC::UString::adopt): 16655 (JSC::UString::operator[]): 16656 * wtf/text/WTFString.h: 16657 (WTF::String::String): 16658 (WTF::String::adopt): 16659 (WTF::String::operator[]): 16660 16661 2010-08-12 David Levin <levin (a] chromium.org> 16662 16663 Reviewed by NOBODY (build fix). 16664 16665 * runtime/UString.h: Removed unneccessary #include. 16666 16667 2010-08-12 Gavin Barraclough <barraclough (a] apple.com> 16668 16669 Reviewed by Sam Weinig 16670 16671 Revert changes to ALWAYS_INLINEness of a couple of functions in UString. 16672 This appears to have degraded performance. 16673 16674 * runtime/UString.cpp: 16675 (JSC::UString::ascii): 16676 * runtime/UString.h: 16677 (JSC::UString::length): 16678 (JSC::UString::isEmpty): 16679 (JSC::UString::~UString): 16680 16681 2010-08-12 Csaba Osztrogonc <ossy (a] webkit.org> 16682 16683 Reviewed by Antonio Gomes. 16684 16685 [Qt] Fix warnings: unknown conversion type character 'l' in format 16686 https://bugs.webkit.org/show_bug.cgi?id=43359 16687 16688 Qt port doesn't call any printf in String::format(...), consequently 16689 using __attribute__((format(printf,m,n))) is incorrect and causes 16690 false positive warnings on Windows if you build with MinGW. 16691 16692 Qt port calls QString::vsprintf(...) , which is platform 16693 independent, and handles %lli, %llu and %llx on all platforms. 16694 (http://trac.webkit.org/changeset/35712) 16695 16696 * wtf/text/WTFString.h: 16697 16698 2010-08-12 Gabor Loki <loki (a] webkit.org> 16699 16700 Reviewed by Geoffrey Garen. 16701 16702 Fix the array subscript is above array bounds warning in ByteArray on ARM. 16703 https://bugs.webkit.org/show_bug.cgi?id=43358 16704 16705 The warning is very similar to this one: http://gcc.gnu.org/bugzilla/show_bug.cgi?id=37861 16706 16707 * wtf/ByteArray.cpp: 16708 (WTF::ByteArray::create): 16709 16710 2010-08-12 Gustavo Noronha Silva <gustavo.noronha (a] collabora.co.uk> 16711 16712 Reviewed by Martin Robinson. 16713 16714 [GTK] Use GSettings to save/restore Web Inspector settings 16715 https://bugs.webkit.org/show_bug.cgi?id=43512 16716 16717 * wtf/gobject/GRefPtr.cpp: Added support for GVariant, used by our 16718 GSettings support. 16719 (WTF::refGPtr): 16720 (WTF::derefGPtr): 16721 * wtf/gobject/GRefPtr.h: 16722 16723 2010-08-12 Gabor Loki <loki (a] webkit.org> 16724 16725 Reviewed by Simon Hausmann. 16726 16727 The scratch register should be saved in YARR with ARM JIT 16728 https://bugs.webkit.org/show_bug.cgi?id=43910 16729 16730 Reported by Jocelyn Turcotte. 16731 16732 * yarr/RegexJIT.cpp: 16733 (JSC::Yarr::RegexGenerator::generateEnter): 16734 (JSC::Yarr::RegexGenerator::generateReturn): 16735 16736 2010-08-11 Gavin Barraclough <barraclough (a] apple.com> 16737 16738 Windows build fix. 16739 16740 * JavaScriptCore.xcodeproj/project.pbxproj: 16741 * wtf/Forward.h: 16742 16743 2010-08-11 Leo Yang <leo.yang (a] torchmobile.com.cn> 16744 16745 Reviewed by Geoffrey Garen. 16746 16747 Date("") should be an invalid date. For IE, Firefox and Chrome, Date("") is invalid date, 16748 which means isNaN(new Date("")) should return true. 16749 https://bugs.webkit.org/show_bug.cgi?id=43793 16750 Tests: fast/js/date-constructor.html 16751 16752 * runtime/JSGlobalData.cpp: 16753 (JSC::JSGlobalData::resetDateCache): 16754 16755 2010-08-11 Gavin Barraclough <barraclough (a] apple.com> 16756 16757 Windows & !JIT build fix. 16758 16759 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: 16760 * JavaScriptCore.xcodeproj/project.pbxproj: 16761 * runtime/RegExp.cpp: 16762 (JSC::RegExp::match): 16763 16764 2010-08-11 Gavin Barraclough <barraclough (a] apple.com> 16765 16766 Rubber stamp by sam weinig 16767 16768 Touch a file to stop the bot rolling a bit change out! 16769 16770 * runtime/UString.cpp: 16771 (JSC::UString::ascii): 16772 16773 2010-08-11 Kevin Ollivier <kevino (a] theolliviers.com> 16774 16775 [wx] Build fix for wx and WebDOM bindings, add CString classes to the list of forwards. 16776 16777 * wtf/Forward.h: 16778 16779 2010-08-11 Gavin Barraclough <barraclough (a] apple.com> 16780 16781 Rubber stamps by Darin Adler & Sam Weinig. 16782 16783 Bug 43867 - Some UString cleanup 16784 16785 Change JSC::UString data(), size(), and from(), to characters(), length(), and number() to match WTF::String. 16786 Move string concatenation methods to a new header to simplify down UString.h. Remove is8Bit(). 16787 16788 * API/JSClassRef.cpp: 16789 (OpaqueJSClass::~OpaqueJSClass): 16790 (OpaqueJSClass::className): 16791 * API/OpaqueJSString.cpp: 16792 (OpaqueJSString::create): 16793 * JavaScriptCore.exp: 16794 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: 16795 * JavaScriptCore.xcodeproj/project.pbxproj: 16796 * bytecode/CodeBlock.cpp: 16797 (JSC::constantName): 16798 (JSC::idName): 16799 (JSC::CodeBlock::registerName): 16800 (JSC::regexpName): 16801 * bytecode/EvalCodeCache.h: 16802 (JSC::EvalCodeCache::get): 16803 * bytecompiler/NodesCodegen.cpp: 16804 (JSC::ResolveNode::emitBytecode): 16805 (JSC::FunctionCallResolveNode::emitBytecode): 16806 (JSC::ReadModifyResolveNode::emitBytecode): 16807 (JSC::processClauseList): 16808 * parser/ASTBuilder.h: 16809 (JSC::ASTBuilder::createRegex): 16810 * parser/ParserArena.h: 16811 (JSC::IdentifierArena::makeNumericIdentifier): 16812 * parser/SourceProvider.h: 16813 (JSC::UStringSourceProvider::data): 16814 (JSC::UStringSourceProvider::length): 16815 * profiler/Profiler.cpp: 16816 * runtime/Arguments.cpp: 16817 (JSC::Arguments::getOwnPropertySlot): 16818 (JSC::Arguments::getOwnPropertyNames): 16819 (JSC::Arguments::put): 16820 (JSC::Arguments::deleteProperty): 16821 * runtime/ArrayPrototype.cpp: 16822 (JSC::arrayProtoFuncToString): 16823 * runtime/DatePrototype.cpp: 16824 (JSC::formatLocaleDate): 16825 * runtime/ExceptionHelpers.cpp: 16826 * runtime/FunctionConstructor.cpp: 16827 * runtime/FunctionPrototype.cpp: 16828 (JSC::insertSemicolonIfNeeded): 16829 * runtime/Identifier.h: 16830 (JSC::Identifier::characters): 16831 (JSC::Identifier::length): 16832 * runtime/JSGlobalObjectFunctions.cpp: 16833 (JSC::decode): 16834 (JSC::parseInt): 16835 (JSC::parseFloat): 16836 (JSC::globalFuncEscape): 16837 (JSC::globalFuncUnescape): 16838 * runtime/JSNumberCell.cpp: 16839 (JSC::JSNumberCell::toString): 16840 * runtime/JSONObject.cpp: 16841 (JSC::gap): 16842 (JSC::Stringifier::appendQuotedString): 16843 (JSC::Stringifier::appendStringifiedValue): 16844 (JSC::Stringifier::indent): 16845 (JSC::Stringifier::unindent): 16846 (JSC::Walker::walk): 16847 * runtime/JSString.cpp: 16848 (JSC::JSString::replaceCharacter): 16849 (JSC::JSString::getIndexSlowCase): 16850 * runtime/JSString.h: 16851 (JSC::RopeBuilder::JSString): 16852 (JSC::RopeBuilder::appendValueInConstructAndIncrementLength): 16853 (JSC::RopeBuilder::fiberCount): 16854 (JSC::jsSingleCharacterSubstring): 16855 (JSC::jsNontrivialString): 16856 (JSC::JSString::getIndex): 16857 (JSC::jsString): 16858 (JSC::jsStringWithFinalizer): 16859 (JSC::jsSubstring): 16860 (JSC::jsOwnedString): 16861 * runtime/JSStringBuilder.h: 16862 (JSC::JSStringBuilder::append): 16863 * runtime/LiteralParser.h: 16864 (JSC::LiteralParser::Lexer::Lexer): 16865 * runtime/NumberPrototype.cpp: 16866 (JSC::numberProtoFuncToString): 16867 (JSC::numberProtoFuncToFixed): 16868 (JSC::numberProtoFuncToExponential): 16869 (JSC::numberProtoFuncToPrecision): 16870 * runtime/NumericStrings.h: 16871 (JSC::NumericStrings::add): 16872 (JSC::NumericStrings::lookupSmallString): 16873 * runtime/Operations.h: 16874 (JSC::jsString): 16875 * runtime/RegExp.cpp: 16876 (JSC::RegExp::match): 16877 * runtime/RegExpCache.cpp: 16878 (JSC::RegExpCache::lookupOrCreate): 16879 (JSC::RegExpCache::create): 16880 * runtime/RegExpConstructor.cpp: 16881 (JSC::RegExpConstructor::getRightContext): 16882 * runtime/RegExpObject.cpp: 16883 (JSC::RegExpObject::match): 16884 * runtime/RegExpPrototype.cpp: 16885 (JSC::regExpProtoFuncToString): 16886 * runtime/StringBuilder.h: 16887 (JSC::StringBuilder::append): 16888 * runtime/StringConcatenate.h: Copied from JavaScriptCore/runtime/UString.h. 16889 (JSC::): 16890 (JSC::sumWithOverflow): 16891 (JSC::tryMakeString): 16892 (JSC::makeString): 16893 * runtime/StringObject.cpp: 16894 (JSC::StringObject::getOwnPropertyNames): 16895 * runtime/StringPrototype.cpp: 16896 (JSC::substituteBackreferencesSlow): 16897 (JSC::localeCompare): 16898 (JSC::jsSpliceSubstringsWithSeparators): 16899 (JSC::stringProtoFuncReplace): 16900 (JSC::stringProtoFuncCharAt): 16901 (JSC::stringProtoFuncCharCodeAt): 16902 (JSC::stringProtoFuncIndexOf): 16903 (JSC::stringProtoFuncLastIndexOf): 16904 (JSC::stringProtoFuncSlice): 16905 (JSC::stringProtoFuncSplit): 16906 (JSC::stringProtoFuncSubstr): 16907 (JSC::stringProtoFuncSubstring): 16908 (JSC::stringProtoFuncToLowerCase): 16909 (JSC::stringProtoFuncToUpperCase): 16910 (JSC::stringProtoFuncFontsize): 16911 (JSC::stringProtoFuncLink): 16912 (JSC::trimString): 16913 * runtime/UString.cpp: 16914 (JSC::UString::number): 16915 (JSC::UString::ascii): 16916 (JSC::UString::operator[]): 16917 (JSC::UString::toDouble): 16918 (JSC::UString::find): 16919 (JSC::UString::rfind): 16920 (JSC::UString::substr): 16921 (JSC::operator==): 16922 (JSC::operator<): 16923 (JSC::operator>): 16924 (JSC::UString::UTF8String): 16925 * runtime/UString.h: 16926 (JSC::UString::UString): 16927 (JSC::UString::adopt): 16928 (JSC::UString::length): 16929 (JSC::UString::characters): 16930 (JSC::UString::isNull): 16931 (JSC::UString::isEmpty): 16932 (JSC::UString::impl): 16933 (JSC::UString::cost): 16934 (JSC::operator==): 16935 (JSC::operator!=): 16936 (JSC::codePointCompare): 16937 (JSC::UString::toArrayIndex): 16938 (JSC::IdentifierRepHash::hash): 16939 (WTF::): 16940 * yarr/RegexJIT.cpp: 16941 (JSC::Yarr::jitCompileRegex): 16942 * yarr/RegexParser.h: 16943 (JSC::Yarr::Parser::Parser): 16944 16945 2010-08-11 Gabor Loki <loki (a] webkit.org> 16946 16947 Qt build fix (ARMv7). 16948 16949 Fix invalid conversion from int to Condition. 16950 Add ARMv7Assembler.cpp to JavaScriptCore.pro. 16951 16952 * JavaScriptCore.pro: 16953 * assembler/ARMv7Assembler.h: 16954 (JSC::ARMv7Assembler::): 16955 (JSC::ARMv7Assembler::JmpSrc::JmpSrc): 16956 16957 2010-08-11 Nathan Lawrence <nlawrence (a] apple.com> 16958 16959 Reviewed by Geoffrey Garen. 16960 16961 At collection time, we frequently want to mark a cell, while checking 16962 whether it was originally checked. Previously, this was a get 16963 operation follwed by a set operation. Fusing the two saves 16964 computation and gives a 0.5% sunspider speedup. 16965 16966 * runtime/Collector.h: 16967 (JSC::CollectorBitmap::getset): 16968 (JSC::Heap::checkMarkCell): 16969 * runtime/JSArray.h: 16970 (JSC::MarkStack::drain): 16971 * runtime/JSCell.h: 16972 (JSC::MarkStack::append): 16973 16974 2010-08-11 Steve Falkenburg <sfalken (a] apple.com> 16975 16976 Reviewed by Adam Roben. 16977 16978 Improve vsprops copying for Windows build 16979 https://bugs.webkit.org/show_bug.cgi?id=41982 16980 16981 When we detect a new SDK, always copy a new set of vsprops files. 16982 Previously, if someone updated their SDK after updating their sources, 16983 they could end up with out-of-date vsprops files. 16984 16985 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreGenerated.make: 16986 16987 2010-08-10 Darin Adler <darin (a] apple.com> 16988 16989 Reviewed by Sam Weinig. 16990 16991 Add leakRef and clear to all RefPtr variants 16992 https://bugs.webkit.org/show_bug.cgi?id=42389 16993 16994 * API/JSRetainPtr.h: Changed all uses of "template <...>" to instead do 16995 "template<...>". We should probably put this in the style guide and do it 16996 consitently. Fixed other minor style issues. Defined many of the inlined 16997 functions outside the class definition, to avoid style checker warnings 16998 about multiple statements on a single line and for slightly better clarity 16999 of the class definition itself. Renamed releaseRef to leakRef. Added a 17000 releaseRef that calls leakRef so we don't have to rename all callers oat 17001 once. Added a clear function. 17002 17003 * wtf/PassRefPtr.h: Changed all uses of releaseRef to leakRef. 17004 n 17005 * wtf/RefPtr.h: Changed all uses of "template <...>" to instead do 17006 "template<...>". Tidied up declarations and comments a bit. 17007 Changed all uses of releaseRef to leakRef. 17008 17009 * wtf/RetainPtr.h: Changed all uses of "template <...>" to instead do 17010 "template<...>". Defined many of the inlined functions outside the class 17011 definition, to avoid style checker warnings about multiple statements on 17012 a single line and for slightly better clarity of the class definition itself. 17013 Renamed releaseRef to leakRef. Added a releaseRef that calls leakRef so we 17014 don't have to rename all callers at once. Added a clear function. 17015 17016 2010-08-10 Dumitru Daniliuc <dumi (a] chromium.org> 17017 17018 Unreviewed, reverting an unintentional change to a file submitted in r65108. 17019 17020 * bytecode/CodeBlock.h: 17021 (JSC::binaryChop): 17022 17023 2010-08-10 Gavin Barraclough <barraclough (a] apple.com> 17024 17025 Rubber stamped by Sam Weinig 17026 17027 Bug 43817 - Remove UString::Rep 17028 UString::Rep has for a long time been replaced by UStringImpl (Rep 17029 remaining as a typedef). UStringImpl has since been removed too 17030 (unified with StringImpl). Remove Rep, rename rep() to impl() and 17031 m_rep to m_impl. Also add impl() method to Identifier, and rename 17032 its UString member from _ustring to m_string. 17033 17034 * API/JSCallbackObject.h: 17035 (JSC::JSCallbackObjectData::JSPrivatePropertyMap::getPrivateProperty): 17036 (JSC::JSCallbackObjectData::JSPrivatePropertyMap::setPrivateProperty): 17037 (JSC::JSCallbackObjectData::JSPrivatePropertyMap::deletePrivateProperty): 17038 * API/JSCallbackObjectFunctions.h: 17039 (JSC::::getOwnPropertySlot): 17040 (JSC::::put): 17041 (JSC::::deleteProperty): 17042 (JSC::::getOwnPropertyNames): 17043 (JSC::::staticValueGetter): 17044 (JSC::::staticFunctionGetter): 17045 * API/JSClassRef.cpp: 17046 (tryCreateStringFromUTF8): 17047 (OpaqueJSClass::OpaqueJSClass): 17048 (OpaqueJSClass::~OpaqueJSClass): 17049 (OpaqueJSClassContextData::OpaqueJSClassContextData): 17050 * API/JSClassRef.h: 17051 * API/OpaqueJSString.cpp: 17052 (OpaqueJSString::ustring): 17053 * bytecode/EvalCodeCache.h: 17054 (JSC::EvalCodeCache::get): 17055 * bytecode/JumpTable.h: 17056 (JSC::StringJumpTable::offsetForValue): 17057 (JSC::StringJumpTable::ctiForValue): 17058 * bytecompiler/BytecodeGenerator.cpp: 17059 (JSC::BytecodeGenerator::addVar): 17060 (JSC::BytecodeGenerator::addGlobalVar): 17061 (JSC::BytecodeGenerator::BytecodeGenerator): 17062 (JSC::BytecodeGenerator::addParameter): 17063 (JSC::BytecodeGenerator::registerFor): 17064 (JSC::BytecodeGenerator::willResolveToArguments): 17065 (JSC::BytecodeGenerator::uncheckedRegisterForArguments): 17066 (JSC::BytecodeGenerator::constRegisterFor): 17067 (JSC::BytecodeGenerator::isLocal): 17068 (JSC::BytecodeGenerator::isLocalConstant): 17069 (JSC::BytecodeGenerator::addConstant): 17070 (JSC::BytecodeGenerator::emitLoad): 17071 (JSC::BytecodeGenerator::findScopedProperty): 17072 (JSC::keyForCharacterSwitch): 17073 (JSC::prepareJumpTableForStringSwitch): 17074 * bytecompiler/BytecodeGenerator.h: 17075 * bytecompiler/NodesCodegen.cpp: 17076 (JSC::processClauseList): 17077 * interpreter/Interpreter.cpp: 17078 (JSC::Interpreter::privateExecute): 17079 * jit/JITStubs.cpp: 17080 (JSC::DEFINE_STUB_FUNCTION): 17081 * parser/JSParser.cpp: 17082 (JSC::JSParser::parseStrictObjectLiteral): 17083 * pcre/pcre_exec.cpp: 17084 (Histogram::add): 17085 * profiler/CallIdentifier.h: 17086 (JSC::CallIdentifier::Hash::hash): 17087 * profiler/Profile.cpp: 17088 * profiler/ProfileNode.cpp: 17089 (JSC::ProfileNode::debugPrintDataSampleStyle): 17090 * profiler/ProfileNode.h: 17091 * runtime/ArrayPrototype.cpp: 17092 (JSC::arrayProtoFuncToString): 17093 * runtime/Identifier.cpp: 17094 (JSC::Identifier::equal): 17095 (JSC::IdentifierCStringTranslator::hash): 17096 (JSC::IdentifierCStringTranslator::equal): 17097 (JSC::IdentifierCStringTranslator::translate): 17098 (JSC::Identifier::add): 17099 (JSC::IdentifierUCharBufferTranslator::hash): 17100 (JSC::IdentifierUCharBufferTranslator::equal): 17101 (JSC::IdentifierUCharBufferTranslator::translate): 17102 (JSC::Identifier::addSlowCase): 17103 * runtime/Identifier.h: 17104 (JSC::Identifier::Identifier): 17105 (JSC::Identifier::ustring): 17106 (JSC::Identifier::impl): 17107 (JSC::Identifier::data): 17108 (JSC::Identifier::size): 17109 (JSC::Identifier::ascii): 17110 (JSC::Identifier::isNull): 17111 (JSC::Identifier::isEmpty): 17112 (JSC::Identifier::toUInt32): 17113 (JSC::Identifier::toStrictUInt32): 17114 (JSC::Identifier::toArrayIndex): 17115 (JSC::Identifier::toDouble): 17116 (JSC::Identifier::equal): 17117 (JSC::Identifier::add): 17118 * runtime/InitializeThreading.cpp: 17119 (JSC::initializeThreadingOnce): 17120 * runtime/InternalFunction.cpp: 17121 (JSC::InternalFunction::displayName): 17122 * runtime/JSFunction.cpp: 17123 (JSC::JSFunction::displayName): 17124 * runtime/JSGlobalObject.h: 17125 (JSC::JSGlobalObject::addStaticGlobals): 17126 * runtime/JSStaticScopeObject.h: 17127 (JSC::JSStaticScopeObject::JSStaticScopeObject): 17128 * runtime/JSString.h: 17129 (JSC::): 17130 (JSC::RopeBuilder::appendStringInConstruct): 17131 (JSC::RopeBuilder::appendValueInConstructAndIncrementLength): 17132 (JSC::jsSingleCharacterSubstring): 17133 (JSC::jsSubstring): 17134 * runtime/JSVariableObject.cpp: 17135 (JSC::JSVariableObject::deleteProperty): 17136 (JSC::JSVariableObject::symbolTableGet): 17137 * runtime/JSVariableObject.h: 17138 (JSC::JSVariableObject::symbolTableGet): 17139 (JSC::JSVariableObject::symbolTablePut): 17140 (JSC::JSVariableObject::symbolTablePutWithAttributes): 17141 * runtime/Lookup.cpp: 17142 (JSC::HashTable::createTable): 17143 (JSC::HashTable::deleteTable): 17144 * runtime/Lookup.h: 17145 (JSC::HashEntry::initialize): 17146 (JSC::HashEntry::setKey): 17147 (JSC::HashEntry::key): 17148 (JSC::HashTable::entry): 17149 * runtime/PropertyMapHashTable.h: 17150 (JSC::PropertyMapEntry::PropertyMapEntry): 17151 * runtime/PropertyNameArray.cpp: 17152 (JSC::PropertyNameArray::add): 17153 * runtime/PropertyNameArray.h: 17154 (JSC::PropertyNameArray::add): 17155 (JSC::PropertyNameArray::addKnownUnique): 17156 * runtime/RegExp.cpp: 17157 (JSC::RegExp::match): 17158 * runtime/RegExpCache.cpp: 17159 (JSC::RegExpCache::create): 17160 * runtime/RegExpKey.h: 17161 (JSC::RegExpKey::RegExpKey): 17162 * runtime/SmallStrings.cpp: 17163 (JSC::SmallStringsStorage::rep): 17164 (JSC::SmallStrings::singleCharacterStringRep): 17165 * runtime/SmallStrings.h: 17166 * runtime/StringPrototype.cpp: 17167 (JSC::jsSpliceSubstringsWithSeparators): 17168 (JSC::stringProtoFuncMatch): 17169 (JSC::stringProtoFuncSearch): 17170 * runtime/Structure.cpp: 17171 (JSC::Structure::~Structure): 17172 (JSC::Structure::despecifyDictionaryFunction): 17173 (JSC::Structure::addPropertyTransitionToExistingStructure): 17174 (JSC::Structure::addPropertyTransition): 17175 (JSC::Structure::copyPropertyTable): 17176 (JSC::Structure::get): 17177 (JSC::Structure::despecifyFunction): 17178 (JSC::Structure::put): 17179 (JSC::Structure::hasTransition): 17180 (JSC::Structure::remove): 17181 (JSC::Structure::checkConsistency): 17182 * runtime/Structure.h: 17183 (JSC::Structure::get): 17184 (JSC::Structure::hasTransition): 17185 * runtime/StructureTransitionTable.h: 17186 * runtime/SymbolTable.h: 17187 * runtime/UString.cpp: 17188 (JSC::UString::UString): 17189 (JSC::UString::toStrictUInt32): 17190 (JSC::UString::substr): 17191 * runtime/UString.h: 17192 (JSC::UString::UString): 17193 (JSC::UString::adopt): 17194 (JSC::UString::data): 17195 (JSC::UString::size): 17196 (JSC::UString::isNull): 17197 (JSC::UString::isEmpty): 17198 (JSC::UString::impl): 17199 (JSC::UString::cost): 17200 (JSC::operator==): 17201 (JSC::codePointCompare): 17202 (JSC::IdentifierRepHash::hash): 17203 (WTF::): 17204 17205 2010-08-10 Gavin Barraclough <barraclough (a] apple.com> 17206 17207 Bug 43816 - Remove UStringImpl 17208 The class was actually removed a long time ago, replaced by StringImpl. 17209 UStringImpl is just a typedef onto StringImpl. Remove this. 17210 17211 * API/JSClassRef.cpp: 17212 (OpaqueJSClass::OpaqueJSClass): 17213 * JavaScriptCore.xcodeproj/project.pbxproj: 17214 * runtime/JSString.cpp: 17215 (JSC::JSString::resolveRope): 17216 (JSC::JSString::replaceCharacter): 17217 * runtime/JSString.h: 17218 (JSC::RopeBuilder::RopeIterator::operator*): 17219 (JSC::RopeBuilder::JSString): 17220 (JSC::RopeBuilder::appendStringInConstruct): 17221 (JSC::RopeBuilder::appendValueInConstructAndIncrementLength): 17222 (JSC::jsSingleCharacterSubstring): 17223 (JSC::jsSubstring): 17224 * runtime/JSStringBuilder.h: 17225 (JSC::jsMakeNontrivialString): 17226 * runtime/RopeImpl.cpp: 17227 (JSC::RopeImpl::derefFibersNonRecursive): 17228 * runtime/RopeImpl.h: 17229 (JSC::RopeImpl::deref): 17230 * runtime/SmallStrings.cpp: 17231 (JSC::SmallStringsStorage::SmallStringsStorage): 17232 * runtime/StringConstructor.cpp: 17233 (JSC::stringFromCharCodeSlowCase): 17234 * runtime/StringPrototype.cpp: 17235 (JSC::jsSpliceSubstringsWithSeparators): 17236 (JSC::stringProtoFuncFontsize): 17237 (JSC::stringProtoFuncLink): 17238 * runtime/UString.cpp: 17239 (JSC::initializeUString): 17240 * runtime/UString.h: 17241 (JSC::UString::adopt): 17242 (JSC::tryMakeString): 17243 (JSC::makeString): 17244 * runtime/UStringImpl.h: Removed. 17245 17246 2010-08-10 Patrick Gansterer <paroga (a] paroga.com> 17247 17248 Reviewed by Eric Seidel. 17249 17250 Make FastMalloc more portable. 17251 https://bugs.webkit.org/show_bug.cgi?id=41790 17252 17253 * wtf/FastMalloc.cpp: 17254 (WTF::TCMalloc_Central_FreeList::Populate): 17255 (WTF::TCMalloc_ThreadCache::CreateCacheIfNecessary): 17256 17257 2010-08-10 Patrick Gansterer <paroga (a] paroga.com> 17258 17259 Reviewed by David Levin. 17260 17261 [WINCE] Buildfix for CE 6.0 17262 https://bugs.webkit.org/show_bug.cgi?id=43027 17263 17264 CE 6.0 doesn't define localtime in the system include files. 17265 17266 * wtf/Platform.h: Include ce_time.h on all OS(WINCE). 17267 17268 2010-08-10 Gavin Barraclough <barraclough (a] apple.com> 17269 17270 Rubber stamped by Sam Weinig. 17271 17272 Bug 43786 - Move AtomicStringHash from WebCore to WTF 17273 Also remove deprecated string headers from WebCore/platform/text. 17274 17275 * GNUmakefile.am: 17276 * JavaScriptCore.gypi: 17277 * JavaScriptCore.vcproj/WTF/WTF.vcproj: 17278 * JavaScriptCore.xcodeproj/project.pbxproj: 17279 * wtf/text/AtomicString.h: 17280 * wtf/text/AtomicStringHash.h: Copied from WebCore/platform/text/AtomicStringHash.h. 17281 17282 2010-08-09 Oliver Hunt <oliver (a] apple.com> 17283 17284 Fix Qt/ARM again, this time including the other changed file. 17285 17286 * jit/JIT.h: 17287 17288 2010-08-09 Oliver Hunt <oliver (a] apple.com> 17289 17290 Fix Qt/ARM 17291 17292 C++ overload resolution I stab at thee 17293 17294 * jit/JITInlineMethods.h: 17295 (JSC::JIT::beginUninterruptedSequence): 17296 (JSC::JIT::endUninterruptedSequence): 17297 17298 2010-08-09 Oliver Hunt <oliver (a] apple.com> 17299 17300 Reviewed by Gavin Barraclough. 17301 17302 Allow an assembler/macroassembler to compact branches to more concise forms when linking 17303 https://bugs.webkit.org/show_bug.cgi?id=43745 17304 17305 This patch makes it possible for an assembler to convert jumps into a different 17306 (presumably more efficient) form at link time. Currently implemented in the 17307 ARMv7 JIT as that already had logic to delay linking of jumps until the end of 17308 compilation already. The ARMv7 JIT chooses between either a 4 byte short jump 17309 or a full 32-bit offset (and rewrites ITTT instructions as appropriate), so does 17310 not yet produce the most compact form possible. The general design of the linker 17311 should make it relatively simple to introduce new branch types with little effort, 17312 as the linker has no knowledge of the exact form of any of the branches. 17313 17314 * JavaScriptCore.xcodeproj/project.pbxproj: 17315 * assembler/ARMv7Assembler.cpp: Added. 17316 (JSC::): 17317 Record jump sizes 17318 17319 * assembler/ARMv7Assembler.h: 17320 (JSC::ARMv7Assembler::LinkRecord::LinkRecord): 17321 (JSC::ARMv7Assembler::LinkRecord::from): 17322 (JSC::ARMv7Assembler::LinkRecord::setFrom): 17323 (JSC::ARMv7Assembler::LinkRecord::to): 17324 (JSC::ARMv7Assembler::LinkRecord::type): 17325 (JSC::ARMv7Assembler::LinkRecord::linkType): 17326 (JSC::ARMv7Assembler::LinkRecord::setLinkType): 17327 Encapsulate LinkRecord fields so we can compress the values somewhat 17328 17329 (JSC::ARMv7Assembler::JmpSrc::JmpSrc): 17330 Need to record the jump type now 17331 17332 (JSC::ARMv7Assembler::b): 17333 (JSC::ARMv7Assembler::blx): 17334 (JSC::ARMv7Assembler::bx): 17335 Need to pass the jump types 17336 17337 (JSC::ARMv7Assembler::executableOffsetFor): 17338 (JSC::ARMv7Assembler::jumpSizeDelta): 17339 (JSC::ARMv7Assembler::linkRecordSourceComparator): 17340 (JSC::ARMv7Assembler::computeJumpType): 17341 (JSC::ARMv7Assembler::convertJumpTo): 17342 (JSC::ARMv7Assembler::recordLinkOffsets): 17343 (JSC::ARMv7Assembler::jumpsToLink): 17344 (JSC::ARMv7Assembler::link): 17345 (JSC::ARMv7Assembler::unlinkedCode): 17346 Helper functions for the linker 17347 17348 (JSC::ARMv7Assembler::linkJump): 17349 (JSC::ARMv7Assembler::canBeShortJump): 17350 (JSC::ARMv7Assembler::linkLongJump): 17351 (JSC::ARMv7Assembler::linkShortJump): 17352 (JSC::ARMv7Assembler::linkJumpAbsolute): 17353 Moving code around for the various jump linking functions 17354 17355 * assembler/AbstractMacroAssembler.h: 17356 (JSC::AbstractMacroAssembler::beginUninterruptedSequence): 17357 (JSC::AbstractMacroAssembler::endUninterruptedSequence): 17358 We have to track uninterrupted sequences in any assembler that compacts 17359 branches as that's not something we're allowed to do in such sequences. 17360 AbstractMacroAssembler has a nop version of these functions as it makes the 17361 code elsewhere nicer. 17362 17363 * assembler/LinkBuffer.h: 17364 (JSC::LinkBuffer::LinkBuffer): 17365 (JSC::LinkBuffer::link): 17366 (JSC::LinkBuffer::patch): 17367 (JSC::LinkBuffer::locationOf): 17368 (JSC::LinkBuffer::locationOfNearCall): 17369 (JSC::LinkBuffer::returnAddressOffset): 17370 (JSC::LinkBuffer::trampolineAt): 17371 Updated these functions to adjust for any changed offsets in the linked code 17372 17373 (JSC::LinkBuffer::applyOffset): 17374 A helper function to deal with the now potentially moved labels 17375 17376 (JSC::LinkBuffer::linkCode): 17377 The new and mighty linker function 17378 17379 * assembler/MacroAssemblerARMv7.h: 17380 (JSC::MacroAssemblerARMv7::MacroAssemblerARMv7): 17381 (JSC::MacroAssemblerARMv7::beginUninterruptedSequence): 17382 (JSC::MacroAssemblerARMv7::endUninterruptedSequence): 17383 (JSC::MacroAssemblerARMv7::jumpsToLink): 17384 (JSC::MacroAssemblerARMv7::unlinkedCode): 17385 (JSC::MacroAssemblerARMv7::computeJumpType): 17386 (JSC::MacroAssemblerARMv7::convertJumpTo): 17387 (JSC::MacroAssemblerARMv7::recordLinkOffsets): 17388 (JSC::MacroAssemblerARMv7::jumpSizeDelta): 17389 (JSC::MacroAssemblerARMv7::link): 17390 (JSC::MacroAssemblerARMv7::jump): 17391 (JSC::MacroAssemblerARMv7::branchMul32): 17392 (JSC::MacroAssemblerARMv7::breakpoint): 17393 (JSC::MacroAssemblerARMv7::nearCall): 17394 (JSC::MacroAssemblerARMv7::call): 17395 (JSC::MacroAssemblerARMv7::ret): 17396 (JSC::MacroAssemblerARMv7::tailRecursiveCall): 17397 (JSC::MacroAssemblerARMv7::executableOffsetFor): 17398 (JSC::MacroAssemblerARMv7::inUninterruptedSequence): 17399 (JSC::MacroAssemblerARMv7::makeJump): 17400 (JSC::MacroAssemblerARMv7::makeBranch): 17401 All branches need to pass on their type now 17402 17403 * jit/ExecutableAllocator.h: 17404 (JSC::ExecutablePool::returnLastBytes): 17405 We can't know ahead of time how much space will be necessary to 17406 hold the linked code if we're compacting branches, this new 17407 function allows us to return the unused bytes at the end of linking 17408 17409 * jit/JIT.cpp: 17410 (JSC::JIT::JIT): 17411 (JSC::JIT::privateCompile): 17412 * jit/JIT.h: 17413 (JSC::JIT::compile): 17414 The JIT class now needs to take a linker offset so that recompilation 17415 can generate the same jumps when using branch compaction. 17416 * jit/JITArithmetic32_64.cpp: 17417 (JSC::JIT::emitSlow_op_mod): 17418 * jit/JITOpcodes.cpp: 17419 (JSC::JIT::privateCompileCTIMachineTrampolines): 17420 * jit/JITOpcodes32_64.cpp: 17421 (JSC::JIT::privateCompileCTIMachineTrampolines): 17422 (JSC::JIT::privateCompileCTINativeCall): 17423 Update for new trampolineAt changes 17424 17425 * wtf/FastMalloc.cpp: 17426 (WTF::TCMallocStats::): 17427 * wtf/Platform.h: 17428 17429 2010-08-09 Gavin Barraclough <barraclough (a] apple.com> 17430 17431 Qt build fix III. 17432 17433 * wtf/text/WTFString.h: 17434 17435 2010-08-09 Gavin Barraclough <barraclough (a] apple.com> 17436 17437 Qt build fix. 17438 17439 * wtf/qt/StringQt.cpp: 17440 17441 2010-08-06 Gavin Barraclough <barraclough (a] apple.com> 17442 17443 Rubber stamped by Sam Weinig 17444 17445 Bug 43594 - Add string forwards to Forward.h 17446 This allows us to remove forward declarations for these classes from 17447 WebCore/WebKit (a step in moving these class from WebCore:: to WTF::). 17448 17449 * JavaScriptCore.xcodeproj/project.pbxproj: 17450 * wtf/Forward.h: 17451 17452 2010-08-07 Sheriff Bot <webkit.review.bot (a] gmail.com> 17453 17454 Unreviewed, rolling out r64938. 17455 http://trac.webkit.org/changeset/64938 17456 https://bugs.webkit.org/show_bug.cgi?id=43685 17457 17458 Did not compile on several ports (Requested by abarth on 17459 #webkit). 17460 17461 * Android.mk: 17462 * CMakeLists.txt: 17463 * GNUmakefile.am: 17464 * JavaScriptCore.gypi: 17465 * JavaScriptCore.pro: 17466 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: 17467 * JavaScriptCore.xcodeproj/project.pbxproj: 17468 * assembler/AbstractMacroAssembler.h: 17469 * assembler/MacroAssembler.h: 17470 * assembler/MacroAssemblerX86.h: 17471 (JSC::MacroAssemblerX86::load32): 17472 (JSC::MacroAssemblerX86::store32): 17473 * assembler/X86Assembler.h: 17474 (JSC::X86Assembler::movl_rm): 17475 (JSC::X86Assembler::movl_mr): 17476 * bytecode/CodeBlock.cpp: 17477 (JSC::CodeBlock::markAggregate): 17478 * bytecode/Instruction.h: 17479 (JSC::PolymorphicAccessStructureList::PolymorphicStubInfo::): 17480 (JSC::PolymorphicAccessStructureList::PolymorphicStubInfo::set): 17481 (JSC::PolymorphicAccessStructureList::PolymorphicAccessStructureList): 17482 * bytecode/StructureStubInfo.cpp: 17483 (JSC::StructureStubInfo::deref): 17484 * bytecode/StructureStubInfo.h: 17485 (JSC::StructureStubInfo::initGetByIdProto): 17486 (JSC::StructureStubInfo::initGetByIdChain): 17487 (JSC::StructureStubInfo::): 17488 * jit/JIT.h: 17489 * jit/JITMarkObjects.cpp: Removed. 17490 * jit/JITPropertyAccess.cpp: 17491 (JSC::JIT::compileGetDirectOffset): 17492 (JSC::JIT::testPrototype): 17493 (JSC::JIT::privateCompilePutByIdTransition): 17494 (JSC::JIT::privateCompileGetByIdProto): 17495 (JSC::JIT::privateCompileGetByIdProtoList): 17496 (JSC::JIT::privateCompileGetByIdChainList): 17497 (JSC::JIT::privateCompileGetByIdChain): 17498 * jit/JITPropertyAccess32_64.cpp: 17499 (JSC::JIT::compileGetDirectOffset): 17500 (JSC::JIT::testPrototype): 17501 (JSC::JIT::privateCompilePutByIdTransition): 17502 (JSC::JIT::privateCompileGetByIdProto): 17503 (JSC::JIT::privateCompileGetByIdProtoList): 17504 (JSC::JIT::privateCompileGetByIdChainList): 17505 (JSC::JIT::privateCompileGetByIdChain): 17506 * jit/JITStubs.cpp: 17507 (JSC::setupPolymorphicProtoList): 17508 * wtf/Platform.h: 17509 17510 2010-08-07 Nathan Lawrence <nlawrence (a] apple.com> 17511 17512 Reviewed by Geoffrey Garen. 17513 17514 The JIT code contains a number of direct references to GC'd objects. 17515 When we have movable objects, these references will need to be 17516 updated. 17517 17518 * Android.mk: 17519 * CMakeLists.txt: 17520 * GNUmakefile.am: 17521 * JavaScriptCore.gypi: 17522 * JavaScriptCore.pro: 17523 * JavaScriptCore.xcodeproj/project.pbxproj: 17524 * assembler/AbstractMacroAssembler.h: 17525 (JSC::AbstractMacroAssembler::int32AtLocation): 17526 (JSC::AbstractMacroAssembler::pointerAtLocation): 17527 (JSC::AbstractMacroAssembler::jumpTarget): 17528 * assembler/MacroAssembler.h: 17529 (JSC::MacroAssembler::loadPtrWithPatch): 17530 Normally, loadPtr will optimize when the register is eax. Since 17531 the slightly smaller instruction changes the offsets, it messes up 17532 our ability to repatch the code. We added this new instruction 17533 that garuntees a constant size. 17534 * assembler/MacroAssemblerX86.h: 17535 (JSC::MacroAssemblerX86::load32WithPatch): 17536 Changed load32 in the same way described above. 17537 (JSC::MacroAssemblerX86::load32): 17538 Moved the logic to optimize laod32 from movl_mr to load32 17539 (JSC::MacroAssemblerX86::store32): 17540 Moved the logic to optimize store32 from movl_rm to store32 17541 * assembler/X86Assembler.h: 17542 (JSC::X86Assembler::movl_rm): 17543 (JSC::X86Assembler::movl_mr): 17544 (JSC::X86Assembler::int32AtLocation): 17545 (JSC::X86Assembler::pointerAtLocation): 17546 (JSC::X86Assembler::jumpTarget): 17547 * bytecode/CodeBlock.cpp: 17548 (JSC::CodeBlock::markAggregate): 17549 * bytecode/Instruction.h: 17550 As described in StructureStubInfo.h, we needed to add additional 17551 fields to both StructureStubInfo and 17552 PolymorphicAccessStructureList so that we can determine the 17553 structure of the JITed code at patch time. 17554 (JSC::PolymorphicAccessStructureList::PolymorphicStubInfo::set): 17555 (JSC::PolymorphicAccessStructureList::PolymorphicAccessStructureList): 17556 * bytecode/StructureStubInfo.cpp: 17557 (JSC::StructureStubInfo::markAggregate): 17558 Added this function to mark the JITed code that correosponds to 17559 this structure stub info. 17560 * bytecode/StructureStubInfo.h: 17561 (JSC::StructureStubInfo::initGetByIdProto): 17562 (JSC::StructureStubInfo::initGetByIdChain): 17563 (JSC::StructureStubInfo::): 17564 * jit/JIT.h: 17565 * jit/JITMarkObjects.cpp: Added. 17566 (JSC::JIT::patchPrototypeStructureAddress): 17567 (JSC::JIT::patchGetDirectOffset): 17568 (JSC::JIT::markGetByIdProto): 17569 (JSC::JIT::markGetByIdChain): 17570 (JSC::JIT::markGetByIdProtoList): 17571 (JSC::JIT::markPutByIdTransition): 17572 (JSC::JIT::markGlobalObjectReference): 17573 * jit/JITPropertyAccess.cpp: 17574 Added asserts for the patch offsets. 17575 (JSC::JIT::compileGetDirectOffset): 17576 (JSC::JIT::testPrototype): 17577 (JSC::JIT::privateCompilePutByIdTransition): 17578 (JSC::JIT::privateCompileGetByIdProto): 17579 (JSC::JIT::privateCompileGetByIdProtoList): 17580 (JSC::JIT::privateCompileGetByIdChainList): 17581 (JSC::JIT::privateCompileGetByIdChain): 17582 * jit/JITPropertyAccess32_64.cpp: 17583 (JSC::JIT::compileGetDirectOffset): 17584 (JSC::JIT::testPrototype): 17585 (JSC::JIT::privateCompilePutByIdTransition): 17586 (JSC::JIT::privateCompileGetByIdProto): 17587 (JSC::JIT::privateCompileGetByIdProtoList): 17588 (JSC::JIT::privateCompileGetByIdChainList): 17589 (JSC::JIT::privateCompileGetByIdChain): 17590 * jit/JITStubs.cpp: 17591 (JSC::setupPolymorphicProtoList): 17592 * wtf/Platform.h: 17593 Added ENABLE_MOVABLE_GC_OBJECTS flag 17594 17595 2010-08-07 Michael Saboff <msaboff (a] apple.com> 17596 17597 Reviewed by Geoffrey Garen. 17598 17599 Revert JSArray to point to the beginning of the contained ArrayStorage 17600 struct. This is described in 17601 https://bugs.webkit.org/show_bug.cgi?id=43526. 17602 17603 * jit/JITPropertyAccess.cpp: 17604 (JSC::JIT::emit_op_get_by_val): 17605 (JSC::JIT::emit_op_put_by_val): 17606 (JSC::JIT::privateCompilePatchGetArrayLength): 17607 * jit/JITPropertyAccess32_64.cpp: 17608 (JSC::JIT::emit_op_get_by_val): 17609 (JSC::JIT::emit_op_put_by_val): 17610 (JSC::JIT::privateCompilePatchGetArrayLength): 17611 * runtime/JSArray.cpp: 17612 (JSC::JSArray::JSArray): 17613 (JSC::JSArray::~JSArray): 17614 (JSC::JSArray::getOwnPropertySlot): 17615 (JSC::JSArray::getOwnPropertyDescriptor): 17616 (JSC::JSArray::put): 17617 (JSC::JSArray::putSlowCase): 17618 (JSC::JSArray::deleteProperty): 17619 (JSC::JSArray::getOwnPropertyNames): 17620 (JSC::JSArray::getNewVectorLength): 17621 (JSC::JSArray::increaseVectorLength): 17622 (JSC::JSArray::increaseVectorPrefixLength): 17623 (JSC::JSArray::setLength): 17624 (JSC::JSArray::pop): 17625 (JSC::JSArray::push): 17626 (JSC::JSArray::shiftCount): 17627 (JSC::JSArray::unshiftCount): 17628 (JSC::JSArray::sortNumeric): 17629 (JSC::JSArray::sort): 17630 (JSC::JSArray::fillArgList): 17631 (JSC::JSArray::copyToRegisters): 17632 (JSC::JSArray::compactForSorting): 17633 (JSC::JSArray::subclassData): 17634 (JSC::JSArray::setSubclassData): 17635 (JSC::JSArray::checkConsistency): 17636 * runtime/JSArray.h: 17637 (JSC::JSArray::length): 17638 (JSC::JSArray::canGetIndex): 17639 (JSC::JSArray::getIndex): 17640 (JSC::JSArray::setIndex): 17641 (JSC::JSArray::uncheckedSetIndex): 17642 (JSC::JSArray::markChildrenDirect): 17643 17644 2010-08-07 Kwang Yul Seo <skyul (a] company100.net> 17645 17646 Reviewed by Eric Seidel. 17647 17648 Add ENABLE(YARR) guard around JSGlobalData::m_regexAllocator 17649 https://bugs.webkit.org/show_bug.cgi?id=43399 17650 17651 m_regexAllocator is used only by RegExp::compile which is guarded with ENABLE(YARR). 17652 17653 * runtime/JSGlobalData.h: 17654 17655 2010-08-07 Patrick Roland Gansterer <paroga (a] paroga.com> 17656 17657 Reviewed by Eric Seidel. 17658 17659 [Qt] Enable JIT on WinCE 17660 https://bugs.webkit.org/show_bug.cgi?id=43303 17661 17662 Add ExtraCompiler for generating GeneratedJITStubs_MSVC.asm. 17663 17664 * DerivedSources.pro: 17665 17666 2010-08-07 Dan Bernstein <mitz (a] apple.com> 17667 17668 Reviewed by Anders Carlsson. 17669 17670 Created a separate SimpleFontData constructor exclusively for SVG fonts and moved the CTFontRef 17671 from SimpleFontData to FontPlatformData. 17672 https://bugs.webkit.org/show_bug.cgi?id=43674 17673 17674 * wtf/Platform.h: Moved definitions of WTF_USE_CORE_TEXT and WTF_USE_ATSUI here from WebCore/config.h. 17675 17676 2010-08-07 Zoltan Herczeg <zherczeg (a] webkit.org> 17677 17678 Reviewed by Eric Seidel. 17679 17680 Bitmap.h has no default constructor 17681 https://bugs.webkit.org/show_bug.cgi?id=43619 17682 17683 Without a constructor, the initial bits of the Bitmap class 17684 are undefinied. If only a few, or zero bits are 0, the memory 17685 area provided by AlignedMemoryAllocator can be easly exhausted. 17686 17687 Csaba Osztrogonc helped to find this bug. 17688 17689 * wtf/Bitmap.h: 17690 (WTF::::Bitmap): 17691 17692 2010-08-06 Rafael Antognolli <antognolli (a] profusion.mobi> 17693 17694 [EFL] Build fix. 17695 17696 * CMakeLists.txt: add runtime/CGHandle.cpp. 17697 17698 2010-08-06 Jessie Berlin <jberlin (a] apple.com> 17699 17700 Roll out http://trac.webkit.org/changeset/64801, which broke the Safari Windows Build. 17701 Unreviewed. 17702 17703 * JavaScriptCore.xcodeproj/project.pbxproj: 17704 * wtf/Forward.h: 17705 17706 2010-08-06 Jessie Berlin <jberlin (a] apple.com> 17707 17708 Windows Build Fix (continued). Unreviewed. 17709 17710 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: 17711 17712 2010-08-06 Jessie Berlin <jberlin (a] apple.com> 17713 17714 Windows Build Fix. Unreviewed. 17715 17716 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: 17717 Add GCHandle.h and GCHandle.cpp. 17718 17719 2010-08-06 Nathan Lawrence <nlawrence (a] apple.com> 17720 17721 Reviewed by Geoffrey Garen. 17722 17723 https://bugs.webkit.org/show_bug.cgi?id=43207 17724 17725 WeakGCPtr's should instead of directly pointing to the GC'd object 17726 should be directed to an array of pointers that can be updated for 17727 movable objects. 17728 17729 * Android.mk: 17730 * GNUmakefile.am: 17731 * JavaScriptCore.exp: 17732 * JavaScriptCore.gypi: 17733 * JavaScriptCore.pro: 17734 * JavaScriptCore.xcodeproj/project.pbxproj: 17735 * runtime/Collector.cpp: 17736 (JSC::Heap::destroy): 17737 (JSC::Heap::allocateBlock): 17738 (JSC::Heap::freeBlock): 17739 (JSC::Heap::updateWeakGCHandles): 17740 (JSC::WeakGCHandlePool::update): 17741 (JSC::Heap::addWeakGCHandle): 17742 (JSC::Heap::markRoots): 17743 * runtime/Collector.h: 17744 (JSC::Heap::weakGCHandlePool): 17745 * runtime/GCHandle.cpp: Added. 17746 (JSC::WeakGCHandle::pool): 17747 (JSC::WeakGCHandlePool::WeakGCHandlePool): 17748 (JSC::WeakGCHandlePool::allocate): 17749 (JSC::WeakGCHandlePool::free): 17750 (JSC::WeakGCHandlePool::operator new): 17751 * runtime/GCHandle.h: Added. 17752 (JSC::WeakGCHandle::isValidPtr): 17753 (JSC::WeakGCHandle::isPtr): 17754 (JSC::WeakGCHandle::isNext): 17755 (JSC::WeakGCHandle::invalidate): 17756 (JSC::WeakGCHandle::get): 17757 (JSC::WeakGCHandle::set): 17758 (JSC::WeakGCHandle::getNextInFreeList): 17759 (JSC::WeakGCHandle::setNextInFreeList): 17760 (JSC::WeakGCHandlePool::isFull): 17761 * runtime/WeakGCPtr.h: 17762 (JSC::WeakGCPtr::WeakGCPtr): 17763 (JSC::WeakGCPtr::~WeakGCPtr): 17764 (JSC::WeakGCPtr::get): 17765 (JSC::WeakGCPtr::clear): 17766 (JSC::WeakGCPtr::assign): 17767 (JSC::get): 17768 17769 2010-08-06 Tor Arne Vestb <tor.arne.vestbo (a] nokia.com> 17770 17771 Reviewed by Antonio Gomes. 17772 17773 [Qt] Fix warnings about difference in symbol visiblity on Mac OS X 17774 17775 * jsc.pro: 17776 17777 2010-08-06 Zoltan Herczeg <zherczeg (a] webkit.org> 17778 17779 Reviewed by Darin Adler. 17780 17781 Refactor identifier parsing in lexer 17782 https://bugs.webkit.org/show_bug.cgi?id=41845 17783 17784 The code is refactored to avoid gotos. The new code 17785 has the same performance as the old one. 17786 17787 SunSpider --parse-only: no change (from 34.0ms to 33.6ms) 17788 SunSpider: no change (from 523.2ms to 523.5ms) 17789 17790 * parser/Lexer.cpp: 17791 (JSC::Lexer::parseIdent): 17792 (JSC::Lexer::lex): 17793 * parser/Lexer.h: 17794 17795 2010-08-06 Gabor Loki <loki (a] webkit.org> 17796 17797 Reviewed by Gavin Barraclough. 17798 17799 The ARM JIT does not support JSValue32_64 with RVCT 17800 https://bugs.webkit.org/show_bug.cgi?id=43411 17801 17802 JSValue32_64 is enabled for RVCT by default. 17803 17804 * create_jit_stubs: 17805 * jit/JITStubs.cpp: 17806 (JSC::ctiTrampoline): 17807 (JSC::ctiVMThrowTrampoline): 17808 (JSC::ctiOpThrowNotCaught): 17809 * wtf/Platform.h: 17810 17811 2010-08-05 Chao-ying Fu <fu (a] mips.com> 17812 17813 Reviewed by Darin Adler. 17814 17815 Define WTF_USE_ARENA_ALLOC_ALIGNMENT_INTEGER for MIPS 17816 https://bugs.webkit.org/show_bug.cgi?id=43514 17817 17818 MIPS needs to define WTF_USE_ARENA_ALLOC_ALIGNMENT_INTEGER, so that 17819 RenderArena::allocate() can return 8-byte aligned memory to avoid 17820 exceptions on sdc1/ldc1. 17821 17822 * wtf/Platform.h: 17823 17824 2010-08-05 Gavin Barraclough <barraclough (a] apple.com> 17825 17826 Rubber stamped by Sam Weinig 17827 17828 Bug 43594 - Add string forwards to Forward.h 17829 This allows us to remove forward declarations for these classes from 17830 WebCore/WebKit (a step in moving these class from WebCore:: to WTF::). 17831 17832 * JavaScriptCore.xcodeproj/project.pbxproj: 17833 * wtf/Forward.h: 17834 17835 2010-08-05 Geoffrey Garen <ggaren (a] apple.com> 17836 17837 Reviewed by Mark Rowe. 17838 17839 Fixed leak seen on buildbot. 17840 17841 * runtime/GCActivityCallbackCF.cpp: 17842 (JSC::DefaultGCActivityCallback::DefaultGCActivityCallback): 17843 (JSC::DefaultGCActivityCallback::~DefaultGCActivityCallback): 17844 (JSC::DefaultGCActivityCallback::operator()): Make out timer a RetainPtr, 17845 since anything less would be uncivilized. 17846 17847 2010-08-05 Andy Estes <aestes (a] apple.com> 17848 17849 Reviewed by David Kilzer. 17850 17851 Rename iOS-related OS and PLATFORM macros. 17852 https://bugs.webkit.org/show_bug.cgi?id=43493 17853 17854 Rename WTF_OS_IPHONE_OS to WTF_OS_IOS, WTF_PLATFORM_IPHONE to 17855 WTF_PLATFORM_IOS, and WTF_PLATFORM_IPHONE_SIMULATOR to 17856 WTF_PLATFORM_IOS_SIMULATOR. 17857 17858 * jit/ExecutableAllocator.h: 17859 * jit/JITStubs.cpp: 17860 * profiler/ProfilerServer.mm: 17861 (-[ProfilerServer init]): 17862 * wtf/FastMalloc.cpp: 17863 (WTF::TCMallocStats::): 17864 * wtf/Platform.h: 17865 * wtf/unicode/icu/CollatorICU.cpp: 17866 (WTF::Collator::userDefault): 17867 17868 2010-08-05 Nathan Lawrence <nlawrence (a] apple.com> 17869 17870 Reviewed by Darin Adler. 17871 17872 https://bugs.webkit.org/show_bug.cgi?id=43464 17873 17874 Currently, the global object is being embedded in the JavaScriptCore 17875 bytecode, however since the global object is the same for all opcodes 17876 in a code block, we can have the global object just be a member of the 17877 associated code block. 17878 17879 Additionally, I added an assert inside of emitOpcode that verifies 17880 that the last generated opcode was of the correct length. 17881 17882 * bytecode/CodeBlock.cpp: 17883 (JSC::CodeBlock::CodeBlock): 17884 (JSC::CodeBlock::derefStructures): 17885 (JSC::CodeBlock::markAggregate): 17886 * bytecode/CodeBlock.h: 17887 (JSC::CodeBlock::globalObject): 17888 (JSC::GlobalCodeBlock::GlobalCodeBlock): 17889 (JSC::ProgramCodeBlock::ProgramCodeBlock): 17890 (JSC::EvalCodeBlock::EvalCodeBlock): 17891 (JSC::FunctionCodeBlock::FunctionCodeBlock): 17892 * bytecode/Opcode.h: 17893 (JSC::opcodeLength): 17894 * bytecompiler/BytecodeGenerator.cpp: 17895 (JSC::BytecodeGenerator::BytecodeGenerator): 17896 (JSC::BytecodeGenerator::emitOpcode): 17897 Added an assert to check that the last generated opcode is the 17898 correct length. 17899 (JSC::BytecodeGenerator::rewindBinaryOp): 17900 Changed the last opcode to op_end since the length will no longer 17901 be correct. 17902 (JSC::BytecodeGenerator::rewindUnaryOp): 17903 Changed the last opcode to op_end since the length will no longer 17904 be correct. 17905 (JSC::BytecodeGenerator::emitResolve): 17906 (JSC::BytecodeGenerator::emitGetScopedVar): 17907 (JSC::BytecodeGenerator::emitPutScopedVar): 17908 (JSC::BytecodeGenerator::emitResolveWithBase): 17909 * bytecompiler/BytecodeGenerator.h: 17910 * interpreter/Interpreter.cpp: 17911 (JSC::Interpreter::resolveGlobal): 17912 (JSC::Interpreter::resolveGlobalDynamic): 17913 (JSC::Interpreter::privateExecute): 17914 * jit/JITOpcodes.cpp: 17915 (JSC::JIT::emit_op_get_global_var): 17916 (JSC::JIT::emit_op_put_global_var): 17917 (JSC::JIT::emit_op_resolve_global): 17918 (JSC::JIT::emitSlow_op_resolve_global): 17919 (JSC::JIT::emit_op_resolve_global_dynamic): 17920 (JSC::JIT::emitSlow_op_resolve_global_dynamic): 17921 * jit/JITOpcodes32_64.cpp: 17922 (JSC::JIT::emit_op_get_global_var): 17923 (JSC::JIT::emit_op_put_global_var): 17924 (JSC::JIT::emit_op_resolve_global): 17925 (JSC::JIT::emitSlow_op_resolve_global): 17926 * jit/JITStubs.cpp: 17927 (JSC::cti_op_resolve_global): 17928 * runtime/Executable.cpp: 17929 (JSC::FunctionExecutable::compileForCallInternal): 17930 (JSC::FunctionExecutable::compileForConstructInternal): 17931 (JSC::FunctionExecutable::reparseExceptionInfo): 17932 17933 2010-08-05 Gavin Barraclough <barraclough (a] apple.com> 17934 17935 Reviewed by Sam Weinig. 17936 17937 Bug 43185 - Switch RegisterFile over to use PageAllocation 17938 17939 Remove platform-specific memory allocation code. 17940 17941 * interpreter/RegisterFile.cpp: 17942 (JSC::RegisterFile::~RegisterFile): 17943 (JSC::RegisterFile::releaseExcessCapacity): 17944 * interpreter/RegisterFile.h: 17945 (JSC::RegisterFile::RegisterFile): 17946 (JSC::RegisterFile::grow): 17947 (JSC::RegisterFile::checkAllocatedOkay): 17948 * wtf/PageAllocation.cpp: 17949 (WTF::PageAllocation::lastError): 17950 * wtf/PageAllocation.h: 17951 (WTF::PageAllocation::allocate): 17952 (WTF::PageAllocation::allocateAt): 17953 (WTF::PageAllocation::allocateAligned): 17954 (WTF::PageAllocation::pageSize): 17955 (WTF::PageAllocation::isPageAligned): 17956 (WTF::PageAllocation::isPowerOfTwo): 17957 * wtf/PageReservation.h: 17958 (WTF::PageReservation::commit): 17959 (WTF::PageReservation::decommit): 17960 (WTF::PageReservation::reserve): 17961 (WTF::PageReservation::reserveAt): 17962 17963 2010-08-05 Michael Saboff <msaboff (a] apple.com> 17964 17965 Reviewed by Darin Adler. 17966 17967 Fixed https://bugs.webkit.org/show_bug.cgi?id=43401 where array 17968 content aren't properly initialized as part of unshift. 17969 17970 * runtime/JSArray.cpp: 17971 (JSC::JSArray::unshiftCount): 17972 17973 2010-08-05 Jian Li <jianli (a] chromium.org> 17974 17975 Reviewed by David Levin. 17976 17977 Unify blob related feature defines to ENABLE(BLOB). 17978 https://bugs.webkit.org/show_bug.cgi?id=43081 17979 17980 * Configurations/FeatureDefines.xcconfig: 17981 17982 2010-08-05 Gustavo Noronha Silva <gustavo.noronha (a] collabora.co.uk> 17983 17984 Rubber-stamped by Xan Lopez. 17985 17986 Remove GHashTable left-overs. GHashTable is ref-counted, and is 17987 correctly supported by GRefPtr. 17988 17989 * wtf/gobject/GOwnPtr.h: 17990 17991 2010-08-05 Gustavo Noronha Silva <gustavo.noronha (a] collabora.co.uk> 17992 17993 Unreviewed. 17994 17995 Typo fix that makes distcheck happy. 17996 17997 * GNUmakefile.am: 17998 17999 2010-08-03 Geoffrey Garen <ggaren (a] apple.com> 18000 18001 Reviewed by Oliver Hunt and Beth Dakin. 18002 18003 https://bugs.webkit.org/show_bug.cgi?id=43461 18004 Invalid NaN parsing 18005 18006 * wtf/dtoa.cpp: Turn off the dtoa feature that allows you to specify a 18007 non-standard NaN representation, since our NaN encoding assumes that all 18008 true NaNs have the standard bit pattern. 18009 18010 * API/JSValueRef.cpp: 18011 (JSValueMakeNumber): Don't allow an API client to accidentally specify 18012 a non-standard NaN either. 18013 18014 2010-08-04 Gavin Barraclough <barraclough (a] apple.com> 18015 18016 Windows build fix part II. 18017 18018 * wtf/PageReservation.h: 18019 (WTF::PageReservation::systemReserve): 18020 18021 2010-08-04 Gavin Barraclough <barraclough (a] apple.com> 18022 18023 Windows build fix. 18024 18025 * wtf/PageReservation.h: 18026 (WTF::PageReservation::systemReserve): 18027 18028 2010-08-04 Gavin Barraclough <barraclough (a] apple.com> 18029 18030 Build fix - add new header to !Mac projects. 18031 18032 * GNUmakefile.am: 18033 * JavaScriptCore.gypi: 18034 * JavaScriptCore.vcproj/WTF/WTF.vcproj: 18035 18036 2010-08-04 Gavin Barraclough <barraclough (a] apple.com> 18037 18038 Reviewed by Sam Weinig. 18039 18040 Bug 43515 - Fix small design issues with PageAllocation, split out PageReservation. 18041 18042 The PageAllocation class has a number of issues: 18043 * Changes in bug #43269 accidentally switched SYMBIAN over to use malloc/free to allocate 18044 blocks of memory for the GC heap, instead of allocating RChunks. Revert this change in 18045 behaviour. 18046 * In order for PageAllocation to work correctly on WinCE we should be decommitting memory 18047 before deallocating. In order to simplify understanding the expected state at deallocate, 18048 split behaviour out into PageAllocation and PageReservation classes. Require that all 18049 memory be decommitted before calling deallocate on a PageReservation, add asserts to 18050 enforce this. 18051 * add many missing asserts. 18052 * inline more functions. 18053 * remove ability to create sub-PageAllocations from an existing PageAllocations object - 18054 this presented an interface that would allow sub regions to be deallocated, which would 18055 not have provided expected behaviour. 18056 * remove writable/executable arguments to commit, this value can be cached at the point 18057 the memory is reserved. 18058 * remove writable/executable arguments to allocateAligned, protection other than RW is not 18059 supported. 18060 * add missing checks for overflow & failed allocation to mmap path through allocateAligned. 18061 18062 * JavaScriptCore.xcodeproj/project.pbxproj: 18063 * jit/ExecutableAllocator.cpp: 18064 (JSC::ExecutableAllocator::intializePageSize): 18065 * jit/ExecutableAllocator.h: 18066 (JSC::ExecutablePool::Allocation::Allocation): 18067 (JSC::ExecutablePool::Allocation::base): 18068 (JSC::ExecutablePool::Allocation::size): 18069 (JSC::ExecutablePool::Allocation::operator!): 18070 * jit/ExecutableAllocatorFixedVMPool.cpp: 18071 (JSC::FixedVMPoolAllocator::reuse): 18072 (JSC::FixedVMPoolAllocator::coalesceFreeSpace): 18073 (JSC::FixedVMPoolAllocator::FixedVMPoolAllocator): 18074 (JSC::FixedVMPoolAllocator::alloc): 18075 (JSC::FixedVMPoolAllocator::free): 18076 (JSC::FixedVMPoolAllocator::allocInternal): 18077 * runtime/AlignedMemoryAllocator.h: 18078 (JSC::::allocate): 18079 (JSC::::AlignedMemoryAllocator): 18080 * runtime/Collector.cpp: 18081 (JSC::Heap::allocateBlock): 18082 * runtime/Collector.h: 18083 * wtf/PageAllocation.cpp: 18084 * wtf/PageAllocation.h: 18085 (WTF::PageAllocation::operator!): 18086 (WTF::PageAllocation::allocate): 18087 (WTF::PageAllocation::allocateAt): 18088 (WTF::PageAllocation::allocateAligned): 18089 (WTF::PageAllocation::deallocate): 18090 (WTF::PageAllocation::pageSize): 18091 (WTF::PageAllocation::systemAllocate): 18092 (WTF::PageAllocation::systemAllocateAt): 18093 (WTF::PageAllocation::systemAllocateAligned): 18094 (WTF::PageAllocation::systemDeallocate): 18095 (WTF::PageAllocation::systemPageSize): 18096 * wtf/PageReservation.h: Copied from JavaScriptCore/wtf/PageAllocation.h. 18097 (WTF::PageReservation::PageReservation): 18098 (WTF::PageReservation::commit): 18099 (WTF::PageReservation::decommit): 18100 (WTF::PageReservation::reserve): 18101 (WTF::PageReservation::reserveAt): 18102 (WTF::PageReservation::deallocate): 18103 (WTF::PageReservation::systemCommit): 18104 (WTF::PageReservation::systemDecommit): 18105 (WTF::PageReservation::systemReserve): 18106 (WTF::PageReservation::systemReserveAt): 18107 * wtf/Platform.h: 18108 18109 2010-08-04 Sheriff Bot <webkit.review.bot (a] gmail.com> 18110 18111 Unreviewed, rolling out r64655. 18112 http://trac.webkit.org/changeset/64655 18113 https://bugs.webkit.org/show_bug.cgi?id=43496 18114 18115 JavaScriptCore references patch seems to have caused 18116 regressions in QT and GTK builds (Requested by nlawrence on 18117 #webkit). 18118 18119 * bytecode/CodeBlock.cpp: 18120 (JSC::CodeBlock::markAggregate): 18121 * runtime/Collector.cpp: 18122 (JSC::Heap::markConservatively): 18123 * runtime/JSCell.h: 18124 (JSC::JSValue::asCell): 18125 (JSC::MarkStack::append): 18126 * runtime/JSGlobalObject.cpp: 18127 (JSC::markIfNeeded): 18128 * runtime/JSONObject.cpp: 18129 (JSC::Stringifier::Holder::object): 18130 * runtime/JSObject.h: 18131 (JSC::JSObject::prototype): 18132 * runtime/JSStaticScopeObject.cpp: 18133 (JSC::JSStaticScopeObject::markChildren): 18134 * runtime/JSValue.h: 18135 (JSC::JSValue::): 18136 (JSC::JSValue::JSValue): 18137 (JSC::JSValue::asCell): 18138 * runtime/MarkStack.h: 18139 * runtime/NativeErrorConstructor.cpp: 18140 * runtime/NativeErrorConstructor.h: 18141 * runtime/Structure.h: 18142 (JSC::Structure::storedPrototype): 18143 18144 2010-08-04 Gavin Barraclough <barraclough (a] apple.com> 18145 18146 Rubber stamped by Sam Weinig. 18147 18148 Enable JSVALUE64 for CPU(PPC64). 18149 Basic browsing seems to work. 18150 18151 * wtf/Platform.h: 18152 18153 2010-08-04 Nathan Lawrence <nlawrence (a] apple.com> 18154 18155 Reviewed by Darin Adler. 18156 18157 Refactoring MarkStack::append to take a reference. This is in 18158 preparation for movable objects when we will need to update pointers. 18159 http://bugs.webkit.org/show_bug.cgi?id=41177 18160 18161 Unless otherwise noted, all changes are to either return by reference 18162 or pass a reference to MarkStack::append. 18163 18164 * bytecode/CodeBlock.cpp: 18165 (JSC::CodeBlock::markAggregate): 18166 * runtime/Collector.cpp: 18167 (JSC::Heap::markConservatively): 18168 Added a temporary variable to prevent marking from changing an 18169 unknown value on the stack 18170 * runtime/JSCell.h: 18171 (JSC::JSValue::asCell): 18172 (JSC::MarkStack::append): 18173 (JSC::MarkStack::appendInternal): 18174 * runtime/JSGlobalObject.cpp: 18175 (JSC::markIfNeeded): 18176 * runtime/JSONObject.cpp: 18177 (JSC::Stringifier::Holder::object): 18178 * runtime/JSObject.h: 18179 (JSC::JSObject::prototype): 18180 * runtime/JSStaticScopeObject.cpp: 18181 (JSC::JSStaticScopeObject::markChildren): 18182 * runtime/JSValue.h: 18183 (JSC::JSValue::JSValue): 18184 (JSC::JSValue::asCell): 18185 * runtime/MarkStack.h: 18186 * runtime/NativeErrorConstructor.cpp: 18187 (JSC::NativeErrorConstructor::createStructure): 18188 Changed the structure flags to include a custom markChildren. 18189 (JSC::NativeErrorConstructor::markChildren): 18190 Update the prototype of the stored structure. 18191 * runtime/NativeErrorConstructor.h: 18192 Added structure flags. 18193 * runtime/Structure.h: 18194 (JSC::Structure::storedPrototype): 18195 18196 2010-08-03 Nathan Lawrence <nlawrence (a] apple.com> 18197 18198 Reviewed by Oliver Hunt. 18199 18200 Tightened up some get_by_id_chain* code generation 18201 https://bugs.webkit.org/show_bug.cgi?id=40935 18202 18203 This is in the style of 18204 https://bugs.webkit.org/show_bug.cgi?id=30539, and changed code to 18205 call accessor functions when it was not necessary to directly access 18206 the private variables. 18207 18208 * jit/JIT.h: 18209 * jit/JITPropertyAccess.cpp: 18210 (JSC::JIT::compileGetDirectOffset): 18211 (JSC::JIT::testPrototype): 18212 (JSC::JIT::privateCompilePutByIdTransition): 18213 (JSC::JIT::privateCompileGetByIdChainList): 18214 (JSC::JIT::privateCompileGetByIdChain): 18215 * jit/JITPropertyAccess32_64.cpp: 18216 (JSC::JIT::testPrototype): 18217 (JSC::JIT::privateCompilePutByIdTransition): 18218 (JSC::JIT::privateCompileGetByIdChainList): 18219 (JSC::JIT::privateCompileGetByIdChain): 18220 18221 2010-08-03 Adam Roben <aroben (a] apple.com> 18222 18223 Turn on PLATFORM_STRATEGIES on Windows 18224 18225 Fixes <http://webkit.org/b/43431>. 18226 18227 Reviewed by Anders Carlsson. 18228 18229 * wtf/Platform.h: 18230 18231 2010-08-04 Gabor Loki <loki (a] webkit.org> 18232 18233 Reviewed by Geoffrey Garen. 18234 18235 Enable JSValue32_64 for GCC on ARM by default 18236 https://bugs.webkit.org/show_bug.cgi?id=43410 18237 18238 * wtf/Platform.h: 18239 18240 2010-08-03 Gavin Barraclough <barraclough (a] apple.com> 18241 18242 Speculative windows build fix. 18243 18244 * wtf/Bitmap.h: 18245 18246 2010-08-03 Gavin Barraclough <barraclough (a] apple.com> 18247 18248 Build fix following r64624. 18249 18250 * JavaScriptCore.xcodeproj/project.pbxproj: 18251 * wtf/PageAllocation.h: 18252 18253 2010-08-03 Nathan Lawrence <nlawrence (a] apple.com> 18254 18255 Reviewed by Gavin Barraclough. 18256 18257 https://bugs.webkit.org/show_bug.cgi?id=43269 18258 18259 Added new allocateAligned methods to PageAllocation. In order to 18260 prevent a regress in performance, the function needs to be inlined. 18261 18262 Additionally, I ported the symbian block allocator to use 18263 PageAllocation and added a new WTF::Bitmap class to support this. 18264 18265 * GNUmakefile.am: 18266 * JavaScriptCore.gypi: 18267 * JavaScriptCore.xcodeproj/project.pbxproj: 18268 * runtime/AlignedMemoryAllocator.h: Added. 18269 (JSC::AlignedMemory::deallocate): 18270 (JSC::AlignedMemory::base): 18271 (JSC::AlignedMemory::AlignedMemory): 18272 (JSC::AlignedMemoryAllocator::destroy): 18273 (JSC::AlignedMemoryAllocator::allocate): 18274 (JSC::AlignedMemoryAllocator::AlignedMemoryAllocator): 18275 (JSC::AlignedMemoryAllocator::~AlignedMemoryAllocator): 18276 (JSC::AlignedMemoryAllocator::free): 18277 * runtime/Collector.cpp: 18278 (JSC::Heap::Heap): 18279 (JSC::Heap::destroy): 18280 (JSC::Heap::allocateBlock): 18281 (JSC::Heap::freeBlock): 18282 (JSC::Heap::freeBlocks): 18283 (JSC::Heap::allocate): 18284 (JSC::Heap::shrinkBlocks): 18285 (JSC::Heap::markConservatively): 18286 (JSC::Heap::clearMarkBits): 18287 (JSC::Heap::markedCells): 18288 * runtime/Collector.h: 18289 (JSC::CollectorHeap::collectorBlock): 18290 * runtime/CollectorHeapIterator.h: 18291 (JSC::CollectorHeapIterator::operator*): 18292 (JSC::LiveObjectIterator::operator++): 18293 (JSC::DeadObjectIterator::operator++): 18294 * wtf/Bitmap.h: Added. 18295 (WTF::Bitmap::get): 18296 (WTF::Bitmap::set): 18297 (WTF::Bitmap::clear): 18298 (WTF::Bitmap::clearAll): 18299 (WTF::Bitmap::advanceToNextFreeBit): 18300 (WTF::Bitmap::count): 18301 (WTF::Bitmap::isEmpty): 18302 (WTF::Bitmap::isFull): 18303 * wtf/PageAllocation.h: 18304 (WTF::PageAllocation::operator UnspecifiedBoolType): 18305 (WTF::PageAllocation::allocateAligned): 18306 (WTF::PageAllocation::reserveAligned): 18307 * wtf/Platform.h: 18308 * wtf/symbian: Removed. 18309 * wtf/symbian/BlockAllocatorSymbian.cpp: Removed. 18310 * wtf/symbian/BlockAllocatorSymbian.h: Removed. 18311 18312 2010-08-03 Michael Saboff <msaboff (a] apple.com> 18313 18314 Reviewed by Gavin Barraclough. 18315 18316 Fix for https://bugs.webkit.org/show_bug.cgi?id=43314. The prior code 18317 was using the wrong "length" value to move array contents when adding 18318 space to the beginning of an array for an unshift() or similar 18319 operation. Instead of using m_vectorLength, the length of the 18320 allocated JSValue array, the code was using m_length, the declared 18321 length of the array. These two values do not need to match. 18322 18323 * JavaScriptCore.xcodeproj/project.pbxproj: 18324 * runtime/JSArray.cpp: 18325 (JSC::JSArray::increaseVectorPrefixLength): 18326 18327 2010-08-03 Chao-ying Fu <fu (a] mips.com> 18328 18329 Reviewed by Gavin Barraclough. 18330 18331 Fix following https://bugs.webkit.org/show_bug.cgi?id=43089 18332 (accidentally inverted a compiler version check). 18333 18334 * jit/ExecutableAllocator.h: 18335 (JSC::ExecutableAllocator::cacheFlush): 18336 18337 2010-08-03 Patrick Gansterer <paroga (a] paroga.com> 18338 18339 Reviewed by Gavin Barraclough. 18340 18341 Implement DEFINE_STUB_FUNCTION for WinCE. 18342 https://bugs.webkit.org/show_bug.cgi?id=34953 18343 18344 * jit/JITStubs.cpp: 18345 (JSC::): 18346 (JSC::DEFINE_STUB_FUNCTION): 18347 18348 2010-08-02 Gavin Barraclough <barraclough (a] apple.com> 18349 18350 Reviewed by Oliver Hunt. 18351 18352 Bug 43390 - Do not CRASH if we run out of room for jit code. 18353 18354 Change the ExecutableAllocator implementations not to crash, and to return 0 if memory cannot be allocated. 18355 The assemblers should pass this through without trying to use it in executableCopy. 18356 Change the LinkBuffer to handle this, and to provide an allocationSuccessful() method to test for this. 18357 18358 Change the JIT to throw an exception if allocation fails. 18359 Make JIT optimizations fail gracefully if memory cannot be allocated (use non-optimized path). 18360 Change YARR JIT to fallback to PCRE 18361 18362 * assembler/ARMAssembler.cpp: 18363 (JSC::ARMAssembler::executableCopy): 18364 * assembler/ARMv7Assembler.h: 18365 (JSC::ARMv7Assembler::executableCopy): 18366 * assembler/LinkBuffer.h: 18367 (JSC::LinkBuffer::allocationSuccessful): 18368 * assembler/MIPSAssembler.h: 18369 (JSC::MIPSAssembler::executableCopy): 18370 * assembler/X86Assembler.h: 18371 (JSC::X86Assembler::executableCopy): 18372 * bytecode/StructureStubInfo.h: 18373 (JSC::StructureStubInfo::initGetByIdProto): 18374 (JSC::StructureStubInfo::initGetByIdChain): 18375 (JSC::StructureStubInfo::initGetByIdSelfList): 18376 (JSC::StructureStubInfo::initGetByIdProtoList): 18377 (JSC::StructureStubInfo::initPutByIdTransition): 18378 * jit/ExecutableAllocator.cpp: 18379 (JSC::ExecutablePool::systemAlloc): 18380 * jit/ExecutableAllocatorFixedVMPool.cpp: 18381 (JSC::FixedVMPoolAllocator::allocInternal): 18382 * jit/JIT.cpp: 18383 (JSC::JIT::privateCompile): 18384 * jit/JIT.h: 18385 (JSC::JIT::compileGetByIdProto): 18386 (JSC::JIT::compileGetByIdSelfList): 18387 (JSC::JIT::compileGetByIdProtoList): 18388 (JSC::JIT::compileGetByIdChainList): 18389 (JSC::JIT::compileGetByIdChain): 18390 (JSC::JIT::compilePutByIdTransition): 18391 (JSC::JIT::compilePatchGetArrayLength): 18392 * jit/JITOpcodes.cpp: 18393 (JSC::JIT::privateCompileCTIMachineTrampolines): 18394 * jit/JITOpcodes32_64.cpp: 18395 (JSC::JIT::privateCompileCTIMachineTrampolines): 18396 (JSC::JIT::privateCompileCTINativeCall): 18397 * jit/JITPropertyAccess.cpp: 18398 (JSC::JIT::stringGetByValStubGenerator): 18399 (JSC::JIT::privateCompilePutByIdTransition): 18400 (JSC::JIT::privateCompilePatchGetArrayLength): 18401 (JSC::JIT::privateCompileGetByIdProto): 18402 (JSC::JIT::privateCompileGetByIdSelfList): 18403 (JSC::JIT::privateCompileGetByIdProtoList): 18404 (JSC::JIT::privateCompileGetByIdChainList): 18405 (JSC::JIT::privateCompileGetByIdChain): 18406 * jit/JITPropertyAccess32_64.cpp: 18407 (JSC::JIT::stringGetByValStubGenerator): 18408 (JSC::JIT::privateCompilePutByIdTransition): 18409 (JSC::JIT::privateCompilePatchGetArrayLength): 18410 (JSC::JIT::privateCompileGetByIdProto): 18411 (JSC::JIT::privateCompileGetByIdSelfList): 18412 (JSC::JIT::privateCompileGetByIdProtoList): 18413 (JSC::JIT::privateCompileGetByIdChainList): 18414 (JSC::JIT::privateCompileGetByIdChain): 18415 * jit/JITStubs.cpp: 18416 (JSC::JITThunks::tryCachePutByID): 18417 (JSC::JITThunks::tryCacheGetByID): 18418 (JSC::DEFINE_STUB_FUNCTION): 18419 (JSC::setupPolymorphicProtoList): 18420 * jit/JITStubs.h: 18421 * jit/SpecializedThunkJIT.h: 18422 (JSC::SpecializedThunkJIT::finalize): 18423 * runtime/ExceptionHelpers.cpp: 18424 (JSC::createOutOfMemoryError): 18425 * runtime/ExceptionHelpers.h: 18426 * runtime/Executable.cpp: 18427 (JSC::EvalExecutable::compileInternal): 18428 (JSC::ProgramExecutable::compileInternal): 18429 (JSC::FunctionExecutable::compileForCallInternal): 18430 (JSC::FunctionExecutable::compileForConstructInternal): 18431 (JSC::FunctionExecutable::reparseExceptionInfo): 18432 (JSC::EvalExecutable::reparseExceptionInfo): 18433 * yarr/RegexJIT.cpp: 18434 (JSC::Yarr::RegexGenerator::compile): 18435 18436 2010-08-03 Geoffrey Garen <ggaren (a] apple.com> 18437 18438 Reviewed by Oliver Hunt. 18439 18440 Fixed a crash seen on the GTK 64bit buildbot. 18441 18442 When JSArray is allocated for the vptr stealing hack, it's not allocated 18443 in the heap, so the JSArray constructor can't safely call Heap::heap(). 18444 18445 Since this was subtle enough to confuse smart people, I've changed JSArray 18446 to have an explicit vptr stealing constructor. 18447 18448 * JavaScriptCore.xcodeproj/project.pbxproj: 18449 * runtime/JSArray.cpp: 18450 (JSC::JSArray::JSArray): 18451 * runtime/JSArray.h: 18452 (JSC::JSArray::): 18453 * runtime/JSGlobalData.cpp: 18454 (JSC::JSGlobalData::storeVPtrs): 18455 18456 2010-08-03 Alex Milowski <alex (a] milowski.com> 18457 18458 Reviewed by Beth Dakin. 18459 18460 Changed the ENABLE_MATHML value to enable MathML by default. 18461 18462 * Configurations/FeatureDefines.xcconfig: 18463 18464 2010-08-03 Michael Saboff <msaboff (a] apple.com> 18465 18466 Reviewed by Gavin Barraclough. 18467 18468 Change to keep returned pointer from malloc family functions to 18469 quiet memory leak detect. The pointer is saved in the new m_allocBase 18470 member of the ArrayStorage structure. This fixes the issue found in 18471 https://bugs.webkit.org/show_bug.cgi?id=43229. 18472 18473 As part of this change, we use m_allocBase when reallocating and 18474 freeing the memory associated with ArrayStorage. 18475 18476 * runtime/JSArray.cpp: 18477 (JSC::JSArray::JSArray): 18478 (JSC::JSArray::~JSArray): 18479 (JSC::JSArray::putSlowCase): 18480 (JSC::JSArray::increaseVectorLength): 18481 (JSC::JSArray::increaseVectorPrefixLength): 18482 * runtime/JSArray.h: 18483 18484 2010-08-03 Geoffrey Garen <ggaren (a] apple.com> 18485 18486 Reviewed by Mark Rowe. 18487 18488 https://bugs.webkit.org/show_bug.cgi?id=43444 18489 PLATFORM(CF) is false on Windows in JavaScriptCore 18490 18491 Moved some PLATFORM(WIN) #defines down into JavaScriptCore. 18492 18493 * wtf/Platform.h: Added WTF_PLATFORM_CF 1 and WTF_USE_PTHREADS 0, inherited 18494 from WebCore/config.h. Removed WTF_USE_WININET 1 since WebCore/config.h 18495 just #undefined that later. 18496 18497 2010-08-03 Geoffrey Garen <ggaren (a] apple.com> 18498 18499 Try to fix Windows build: Don't use GCActivityCallbackCF on Windows, since 18500 PLATFORM(CF) is not defined on Windows. 18501 18502 We'll need to enable the GC activity callback some other way, but this 18503 change should get the build back to normal. 18504 18505 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: 18506 18507 * runtime/GCActivityCallbackCF.cpp: Make it easier to detect this error 18508 in the future with an explicit error message. 18509 18510 2010-08-03 Geoffrey Garen <ggaren (a] apple.com> 18511 18512 Try to fix Windows build: update .def file. 18513 18514 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: 18515 18516 2010-08-03 Nathan Lawrence <nlawrence (a] apple.com> 18517 18518 Reviewed by Oliver Hunt. 18519 18520 https://bugs.webkit.org/show_bug.cgi?id=41318 18521 GC should reclaim garbage even when new objects are not being allocated rapidly 18522 18523 Added a callback in JavaScriptCore that gets triggered after an 18524 allocation causes the heap to reset. This is useful for adding a 18525 timer that will trigger garbage collection after the "last" allocation. 18526 18527 Also needed was to add lock and unlock methods to JSLock that needed 18528 only a JSGlobalData object versus an ExecState object. 18529 18530 * CMakeLists.txt: 18531 * GNUmakefile.am: 18532 * JavaScriptCore.exp: 18533 * JavaScriptCore.gypi: 18534 * JavaScriptCore.pro: 18535 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: 18536 * JavaScriptCore.xcodeproj/project.pbxproj: 18537 * jit/JITPropertyAccess.cpp: 18538 (JSC::JIT::emit_op_put_by_val): 18539 * runtime/Collector.cpp: 18540 (JSC::Heap::Heap): 18541 (JSC::Heap::reset): 18542 (JSC::Heap::setActivityCallback): 18543 * runtime/Collector.h: 18544 * runtime/GCActivityCallback.cpp: Added. 18545 (JSC::DefaultGCActivityCallback::DefaultGCActivityCallback): 18546 (JSC::DefaultGCActivityCallback::~DefaultGCActivityCallback): 18547 (JSC::DefaultGCActivityCallback::operator()): 18548 * runtime/GCActivityCallback.h: Added. 18549 (JSC::GCActivityCallback::~GCActivityCallback): 18550 (JSC::GCActivityCallback::operator()): 18551 (JSC::GCActivityCallback::GCActivityCallback): 18552 (JSC::DefaultGCActivityCallback::create): 18553 * runtime/GCActivityCallbackCF.cpp: Added. 18554 (JSC::DefaultGCActivityCallbackPlatformData::trigger): 18555 (JSC::DefaultGCActivityCallback::DefaultGCActivityCallback): 18556 (JSC::DefaultGCActivityCallback::~DefaultGCActivityCallback): 18557 (JSC::DefaultGCActivityCallback::operator()): 18558 * runtime/JSLock.cpp: 18559 (JSC::JSLock::JSLock): 18560 * runtime/JSLock.h: 18561 18562 2010-08-02 Kevin Ollivier <kevino (a] theolliviers.com> 18563 18564 [wx] Build fix after removal of need to compile ExecutableAllocatorPosix.cpp 18565 18566 * wscript: 18567 18568 2010-08-02 Mahesh Kulkarni <mahesh.kulkarni (a] nokia.com> 18569 18570 Reviewed by Simon Hausmann. 18571 18572 [QT] build fix for symbian 18573 https://bugs.webkit.org/show_bug.cgi?id=43234 18574 18575 1) wrong order of passing param's 18576 2) static_cast complains on symbian so using reinterpret_cast 18577 18578 No new tests added. Just a build fix for qt symbian 18579 18580 * wtf/PageAllocation.cpp: 18581 (WTF::PageAllocation::commit): 18582 (WTF::PageAllocation::decommit): 18583 (WTF::PageAllocation::reserve): 18584 18585 2010-07-30 Luiz Agostini <luiz.agostini (a] openbossa.org> 18586 18587 Reviewed by Simon Fraser. 18588 18589 Enabling view modes to all platforms 18590 https://bugs.webkit.org/show_bug.cgi?id=37505 18591 18592 Removing ENABLE_WIDGETS_10_SUPPORT flag. 18593 18594 As view mode media feature is not part of widget 1.0 specification 18595 any more the ENABLE_WIDGETS_10_SUPPORT flag may be removed. The only use 18596 of this flag was related to view mode media feature implementation in Qt. 18597 18598 * wtf/Platform.h: 18599 18600 2010-07-30 Andy Estes <aestes (a] apple.com> 18601 18602 Reviewed by David Kilzer. 18603 18604 Add Xcode support for compiling WebKit against iOS SDKs. 18605 https://bugs.webkit.org/show_bug.cgi?id=42796 18606 18607 * Configurations/Base.xcconfig: 18608 * Configurations/DebugRelease.xcconfig: 18609 * Configurations/FeatureDefines.xcconfig: 18610 18611 2010-07-30 Dumitru Daniliuc <dumi (a] chromium.org> 18612 18613 Reviewed by Davin Levin. 18614 18615 Added a yield() function. 18616 https://bugs.webkit.org/show_bug.cgi?id=42843 18617 18618 * JavaScriptCore.exp: 18619 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: 18620 * wtf/Threading.h: 18621 * wtf/ThreadingPthreads.cpp: 18622 (WTF::yield): 18623 * wtf/ThreadingWin.cpp: 18624 (WTF::yield): 18625 * wtf/gtk/ThreadingGtk.cpp: 18626 (WTF::yield): 18627 * wtf/qt/ThreadingQt.cpp: 18628 (WTF::yield): 18629 18630 2010-07-30 Rafael Antognolli <antognolli (a] profusion.mobi> 18631 18632 Reviewed by Antonio Gomes. 18633 18634 [EFL] Add library version and soname to EFL generated libraries and binary. 18635 https://bugs.webkit.org/show_bug.cgi?id=43212 18636 18637 Add version and soname to libjavascriptcore.so and libwtf.so in case of 18638 linking as shared libraries, and version to jsc executable. 18639 18640 * CMakeLists.txt: 18641 * jsc/CMakeLists.txt: 18642 * wtf/CMakeLists.txt: 18643 18644 2010-07-30 Mahesh Kulkarni <mahesh.kulkarni (a] nokia.com> 18645 18646 Reviewed by Simon Hausmann. 18647 18648 [QT] build fix for symbian 18649 https://bugs.webkit.org/show_bug.cgi?id=43234 18650 18651 * wtf/PageAllocation.h: 18652 (WTF::PageAllocation::PageAllocation): 18653 18654 2010-07-29 Sheriff Bot <webkit.review.bot (a] gmail.com> 18655 18656 Unreviewed, rolling out r64313. 18657 http://trac.webkit.org/changeset/64313 18658 https://bugs.webkit.org/show_bug.cgi?id=43233 18659 18660 Some Chromium bots are not happy with it for some unknown 18661 reason. (Requested by dumi on #webkit). 18662 18663 * JavaScriptCore.exp: 18664 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: 18665 * wtf/Threading.h: 18666 * wtf/ThreadingPthreads.cpp: 18667 * wtf/ThreadingWin.cpp: 18668 * wtf/gtk/ThreadingGtk.cpp: 18669 * wtf/qt/ThreadingQt.cpp: 18670 18671 2010-07-29 Sheriff Bot <webkit.review.bot (a] gmail.com> 18672 18673 Unreviewed, rolling out r64302. 18674 http://trac.webkit.org/changeset/64302 18675 https://bugs.webkit.org/show_bug.cgi?id=43223 18676 18677 Assertion is bogus (Requested by olliej on #webkit). 18678 18679 * assembler/ARMAssembler.cpp: 18680 (JSC::ARMAssembler::executableCopy): 18681 * assembler/AssemblerBuffer.h: 18682 (JSC::AssemblerBuffer::putShortUnchecked): 18683 (JSC::AssemblerBuffer::putIntUnchecked): 18684 (JSC::AssemblerBuffer::putInt64Unchecked): 18685 * jit/JITStubs.cpp: 18686 * pcre/pcre_compile.cpp: 18687 (jsRegExpCompile): 18688 * wtf/FastMalloc.cpp: 18689 (WTF::PageHeapAllocator::New): 18690 (WTF::TCMalloc_Central_FreeList::Populate): 18691 * wtf/MD5.cpp: 18692 (WTF::reverseBytes): 18693 (WTF::MD5::addBytes): 18694 (WTF::MD5::checksum): 18695 * wtf/StdLibExtras.h: 18696 * wtf/Vector.h: 18697 (WTF::VectorBuffer::inlineBuffer): 18698 * wtf/qt/StringQt.cpp: 18699 (WebCore::String::String): 18700 18701 2010-07-29 Michael Saboff <msaboff (a] apple.com> 18702 18703 Reviewed by Gavin Barraclough. 18704 18705 Changed the handling for removing and adding elements at the front 18706 of an array. The code now keeps a bias that indicates the amount of 18707 JSValue sized holes are prior to the ArrayStorage block. This means 18708 that shift operations are now memmove's of the header part of 18709 the ArrayStorage and unshift operations are similar, but may require a 18710 realloc first to create the space. Similar operations are performed 18711 for special cases of splice and slice. 18712 Also optimized the new Array(size) case so that we don't allocate and 18713 initialize array elements until the JS code starts using elements. 18714 The array growth code is slightly more aggressive for initial growth 18715 based on size growth of any previous array. 18716 18717 * Configurations/JavaScriptCore.xcconfig: 18718 * jit/JITPropertyAccess.cpp: 18719 (JSC::JIT::emit_op_get_by_val): 18720 (JSC::JIT::emit_op_put_by_val): 18721 (JSC::JIT::privateCompilePatchGetArrayLength): 18722 * jit/JITPropertyAccess32_64.cpp: 18723 (JSC::JIT::emit_op_get_by_val): 18724 (JSC::JIT::emit_op_put_by_val): 18725 (JSC::JIT::privateCompilePatchGetArrayLength): 18726 * runtime/ArrayPrototype.cpp: 18727 (JSC::arrayProtoFuncShift): 18728 (JSC::arrayProtoFuncSplice): 18729 (JSC::arrayProtoFuncUnShift): 18730 * runtime/JSArray.cpp: 18731 (JSC::JSArray::JSArray): 18732 (JSC::JSArray::~JSArray): 18733 (JSC::JSArray::getOwnPropertySlot): 18734 (JSC::JSArray::getOwnPropertyDescriptor): 18735 (JSC::JSArray::put): 18736 (JSC::JSArray::putSlowCase): 18737 (JSC::JSArray::deleteProperty): 18738 (JSC::JSArray::getOwnPropertyNames): 18739 (JSC::JSArray::getNewVectorLength): 18740 (JSC::JSArray::increaseVectorLength): 18741 (JSC::JSArray::increaseVectorPrefixLength): 18742 (JSC::JSArray::setLength): 18743 (JSC::JSArray::pop): 18744 (JSC::JSArray::push): 18745 (JSC::JSArray::shiftCount): 18746 (JSC::JSArray::unshiftCount): 18747 (JSC::JSArray::sortNumeric): 18748 (JSC::JSArray::sort): 18749 (JSC::JSArray::fillArgList): 18750 (JSC::JSArray::copyToRegisters): 18751 (JSC::JSArray::compactForSorting): 18752 (JSC::JSArray::subclassData): 18753 (JSC::JSArray::setSubclassData): 18754 (JSC::JSArray::checkConsistency): 18755 * runtime/JSArray.h: 18756 (JSC::JSArray::length): 18757 (JSC::JSArray::canGetIndex): 18758 (JSC::JSArray::getIndex): 18759 (JSC::JSArray::setIndex): 18760 (JSC::JSArray::uncheckedSetIndex): 18761 (JSC::JSArray::arrayStorage): 18762 (JSC::JSArray::setArrayStorage): 18763 (JSC::JSArray::markChildrenDirect): 18764 18765 2010-07-29 Michael Saboff <msaboff (a] apple.com> 18766 18767 Reviewed by Darin Adler. 18768 18769 Changed MINIMUM_CELL_SIZE to be fixed at 64 bytes. 18770 18771 * runtime/Collector.h: 18772 18773 2010-07-28 Dumitru Daniliuc <dumi (a] chromium.org> 18774 18775 Reviewed by David Levin. 18776 18777 Added a yield() function. 18778 https://bugs.webkit.org/show_bug.cgi?id=42843 18779 18780 * JavaScriptCore.exp: 18781 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: 18782 * wtf/Threading.h: 18783 * wtf/ThreadingPthreads.cpp: 18784 (WTF::yield): 18785 * wtf/ThreadingWin.cpp: 18786 (WTF::yield): 18787 * wtf/gtk/ThreadingGtk.cpp: 18788 (WTF::yield): 18789 * wtf/qt/ThreadingQt.cpp: 18790 (WTF::yield): 18791 18792 2010-07-29 Michael Saboff <msaboff (a] apple.com> 18793 18794 Reviewed by Oliver Hunt. 18795 18796 Fixed issue where RegExp greedy jit code loops when no input is 18797 consumed. Changed the code to only loop if some input was consumed, 18798 but fall through if we successfully match an alternative that 18799 doesn't consume any input. 18800 https://bugs.webkit.org/show_bug.cgi?id=42664 18801 18802 * yarr/RegexJIT.cpp: 18803 (JSC::Yarr::RegexGenerator::generateParenthesesGreedyNoBacktrack): 18804 18805 2010-07-29 Gabor Loki <loki (a] webkit.org> 18806 18807 Reviewed by Gavin Barraclough. 18808 18809 Avoid increasing required alignment of target type warning on ARM 18810 https://bugs.webkit.org/show_bug.cgi?id=38045 18811 18812 The reinterpret_cast<Type1*>([pointer to Type2]) expressions - where 18813 sizeof(Type1) > sizeof(Type2) - cause the following warning on ARM: 18814 increases required alignment of target type warnings. 18815 Casting the type of [pointer to Type2] object to void* bypasses the 18816 warning. 18817 18818 * assembler/ARMAssembler.cpp: 18819 (JSC::ARMAssembler::executableCopy): 18820 * assembler/AssemblerBuffer.h: 18821 (JSC::AssemblerBuffer::putShortUnchecked): 18822 (JSC::AssemblerBuffer::putIntUnchecked): 18823 (JSC::AssemblerBuffer::putInt64Unchecked): 18824 * jit/JITStubs.cpp: 18825 * pcre/pcre_compile.cpp: 18826 (jsRegExpCompile): 18827 * wtf/FastMalloc.cpp: 18828 (WTF::PageHeapAllocator::New): 18829 (WTF::TCMalloc_Central_FreeList::Populate): 18830 * wtf/MD5.cpp: 18831 (WTF::reverseBytes): 18832 (WTF::MD5::addBytes): 18833 (WTF::MD5::checksum): 18834 * wtf/StdLibExtras.h: 18835 (reinterpret_cast_ptr): 18836 * wtf/Vector.h: 18837 (WTF::VectorBuffer::inlineBuffer): 18838 * wtf/qt/StringQt.cpp: 18839 (WebCore::String::String): 18840 18841 2010-07-29 Martin Robinson <mrobinson (a] igalia.com> 18842 18843 Unreviewed build fix. 18844 18845 Include a missing header in the source list to fix 'make dist.' 18846 18847 * GNUmakefile.am: Include missing header. 18848 18849 2010-07-28 Gavin Barraclough <barraclough (a] apple.com> 18850 18851 Reviewed by Darin Adler. 18852 18853 Bug 43162 - Add support for MADV_FREE to PageAllocation. 18854 18855 * wtf/PageAllocation.cpp: 18856 (WTF::PageAllocation::commit): 18857 (WTF::PageAllocation::decommit): 18858 18859 2010-07-27 Kinuko Yasuda <kinuko (a] chromium.org> 18860 18861 Reviewed by Ojan Vafai. 18862 18863 Add FILE_SYSTEM build flag for FileSystem API 18864 https://bugs.webkit.org/show_bug.cgi?id=42915 18865 18866 * Configurations/FeatureDefines.xcconfig: 18867 18868 2010-07-27 Gavin Barraclough <barraclough (a] apple.com> 18869 18870 Temporarily rolling out http://trac.webkit.org/changeset/64177, 18871 this seems to give QT ARM/Win a headache (specifically, looks 18872 like structure layour differs, objects get too large - 18873 "..\..\..\JavaScriptCore\runtime\ArrayPrototype.cpp:41:" 18874 "error: size of array 'dummyclass_fits_in_cell' is negative"). 18875 18876 * jit/JITPropertyAccess.cpp: 18877 (JSC::JIT::emit_op_get_by_val): 18878 (JSC::JIT::emit_op_put_by_val): 18879 (JSC::JIT::privateCompilePatchGetArrayLength): 18880 * jit/JITPropertyAccess32_64.cpp: 18881 (JSC::JIT::emit_op_get_by_val): 18882 (JSC::JIT::emit_op_put_by_val): 18883 (JSC::JIT::privateCompilePatchGetArrayLength): 18884 * runtime/ArrayPrototype.cpp: 18885 (JSC::arrayProtoFuncShift): 18886 (JSC::arrayProtoFuncSplice): 18887 (JSC::arrayProtoFuncUnShift): 18888 * runtime/JSArray.cpp: 18889 (JSC::increasedVectorLength): 18890 (JSC::JSArray::JSArray): 18891 (JSC::JSArray::~JSArray): 18892 (JSC::JSArray::getOwnPropertySlot): 18893 (JSC::JSArray::getOwnPropertyDescriptor): 18894 (JSC::JSArray::put): 18895 (JSC::JSArray::putSlowCase): 18896 (JSC::JSArray::deleteProperty): 18897 (JSC::JSArray::getOwnPropertyNames): 18898 (JSC::JSArray::increaseVectorLength): 18899 (JSC::JSArray::setLength): 18900 (JSC::JSArray::pop): 18901 (JSC::JSArray::push): 18902 (JSC::JSArray::sortNumeric): 18903 (JSC::JSArray::sort): 18904 (JSC::JSArray::fillArgList): 18905 (JSC::JSArray::copyToRegisters): 18906 (JSC::JSArray::compactForSorting): 18907 (JSC::JSArray::subclassData): 18908 (JSC::JSArray::setSubclassData): 18909 (JSC::JSArray::checkConsistency): 18910 * runtime/JSArray.h: 18911 (JSC::JSArray::length): 18912 (JSC::JSArray::canGetIndex): 18913 (JSC::JSArray::getIndex): 18914 (JSC::JSArray::setIndex): 18915 (JSC::JSArray::uncheckedSetIndex): 18916 (JSC::JSArray::markChildrenDirect): 18917 18918 2010-07-27 Gavin Barraclough <barraclough (a] apple.com> 18919 18920 Speculative build fix for Chromium/Win 18921 18922 * wtf/Platform.h: 18923 18924 2010-07-27 Gavin Barraclough <barraclough (a] apple.com> 18925 18926 Oh! that makes more sense! Maybe C++-style comments are bringing teh bad mojo. 18927 18928 * wtf/Platform.h: 18929 18930 2010-07-27 Gavin Barraclough <barraclough (a] apple.com> 18931 18932 Speculative build fix for GTK/64 ... seems to be barfing on a comment o_O 18933 18934 * wtf/Platform.h: 18935 18936 2010-07-27 Michael Saboff <msaboff (a] apple.com> 18937 18938 Reviewed by Gavin Barraclough. 18939 18940 Changed the handling for removing and adding elements at the front 18941 of an array. The code now keeps a bias that indicates the amount of 18942 JSValue sized holes are prior to the ArrayStorage block. This means 18943 that shift operations are now memmove's of the header part of 18944 the ArrayStorage and unshift operations are similar, but may require a 18945 realloc first to create the space. Similar operations are performed 18946 for special cases of splice and slice. 18947 Also optimized the new Array(size) case so that we don't allocate and 18948 initialize array elements until the JS code starts using elements. 18949 The array growth code is slightly more aggressive for initial growth 18950 based on size growth of any previous array. 18951 18952 * Configurations/JavaScriptCore.xcconfig: 18953 * jit/JITPropertyAccess.cpp: 18954 (JSC::JIT::emit_op_get_by_val): 18955 (JSC::JIT::emit_op_put_by_val): 18956 (JSC::JIT::privateCompilePatchGetArrayLength): 18957 * jit/JITPropertyAccess32_64.cpp: 18958 (JSC::JIT::emit_op_get_by_val): 18959 (JSC::JIT::emit_op_put_by_val): 18960 (JSC::JIT::privateCompilePatchGetArrayLength): 18961 * runtime/ArrayPrototype.cpp: 18962 (JSC::arrayProtoFuncShift): 18963 (JSC::arrayProtoFuncSplice): 18964 (JSC::arrayProtoFuncUnShift): 18965 * runtime/JSArray.cpp: 18966 (JSC::JSArray::JSArray): 18967 (JSC::JSArray::~JSArray): 18968 (JSC::JSArray::getOwnPropertySlot): 18969 (JSC::JSArray::getOwnPropertyDescriptor): 18970 (JSC::JSArray::put): 18971 (JSC::JSArray::putSlowCase): 18972 (JSC::JSArray::deleteProperty): 18973 (JSC::JSArray::getOwnPropertyNames): 18974 (JSC::JSArray::getNewVectorLength): 18975 (JSC::JSArray::increaseVectorLength): 18976 (JSC::JSArray::increaseVectorPrefixLength): 18977 (JSC::JSArray::setLength): 18978 (JSC::JSArray::pop): 18979 (JSC::JSArray::push): 18980 (JSC::JSArray::shiftCount): 18981 (JSC::JSArray::unshiftCount): 18982 (JSC::JSArray::sortNumeric): 18983 (JSC::JSArray::sort): 18984 (JSC::JSArray::fillArgList): 18985 (JSC::JSArray::copyToRegisters): 18986 (JSC::JSArray::compactForSorting): 18987 (JSC::JSArray::subclassData): 18988 (JSC::JSArray::setSubclassData): 18989 (JSC::JSArray::checkConsistency): 18990 * runtime/JSArray.h: 18991 (JSC::JSArray::length): 18992 (JSC::JSArray::canGetIndex): 18993 (JSC::JSArray::getIndex): 18994 (JSC::JSArray::setIndex): 18995 (JSC::JSArray::uncheckedSetIndex): 18996 (JSC::JSArray::arrayStorage): 18997 (JSC::JSArray::setArrayStorage): 18998 (JSC::JSArray::markChildrenDirect): 18999 19000 2010-07-27 Gavin Barraclough <barraclough (a] apple.com> 19001 19002 Reviewed by Oliver Hunt. 19003 19004 Bug 43089 - Cleanup JIT related switched in Platform.h 19005 19006 The code the enable to JIT checks every permutation of platform & OS individually, but 19007 now the JIT is enabled on the majority much all x86/x86-64/ARM/MIPS systems. It should 19008 be cleaner to just enable by default on these platforms, and explicitly disable on configs 19009 that don't aren't supported. 19010 19011 Also, rename ENABLE_JIT_OPTIMIZE_MOD to ENABLE_JIT_USE_SOFT_MODULO. I always find this 19012 confusing since enabling this "optimization" would be possible, but would be a regression 19013 on x86/x86-64 systems! I think it's clearer to reserve "JIT_OPTIMIZE" for compiler 19014 technologies applicable to all platforms, and make a more optional behaviour like this a 19015 "USE". 19016 19017 * jit/ExecutableAllocator.h: 19018 (JSC::ExecutableAllocator::cacheFlush): 19019 * jit/JIT.h: 19020 * jit/JITArithmetic.cpp: 19021 (JSC::JIT::emit_op_mod): 19022 (JSC::JIT::emitSlow_op_mod): 19023 * jit/JITArithmetic32_64.cpp: 19024 (JSC::JIT::emit_op_mod): 19025 (JSC::JIT::emitSlow_op_mod): 19026 * jit/JITOpcodes.cpp: 19027 (JSC::JIT::privateCompileCTIMachineTrampolines): 19028 * jit/JITOpcodes32_64.cpp: 19029 (JSC::JIT::privateCompileCTIMachineTrampolines): 19030 * wtf/Platform.h: 19031 19032 2010-07-27 James Robinson <jamesr (a] chromium.org> 19033 19034 Reviewed by Darin Fisher. 19035 19036 [chromium] Make PLATFORM(CHROMIUM) and not OS(MAC) turn USE(GLES2_RENDERING) on 19037 https://bugs.webkit.org/show_bug.cgi?id=43084 19038 19039 This turns USE(GLES2_RENDERING) on for chromium on windows/linux. This causes no 19040 change in behavior, that's all controlled by ENABLE() macros that are currently off. 19041 19042 * wtf/Platform.h: 19043 19044 2010-07-23 Helder Correia <heldercorreia (a] codeaurora.org> 19045 19046 Reviewed by Darin Adler. 19047 19048 Canvas tests 2d.imageData.object.round and 2d.imageData.object.wrap are 19049 failing. For canvas image data manipulation, the values passed should 19050 be truncated and wrapped. Also fix the canvas-ImageData-behaviour test 19051 to expect wrapping rather than clamping, and add some new checkings. 19052 https://bugs.webkit.org/show_bug.cgi?id=40272 19053 19054 * runtime/JSByteArray.h: 19055 (JSC::JSByteArray::setIndex): 19056 (JSC::JSByteArray::JSByteArray): 19057 19058 2010-07-27 Gavin Barraclough <barraclough (a] apple.com> 19059 19060 Reviewed by Oliver Hunt. 19061 19062 Bug 42621 - Add a bump allocator for the YARR interpreter 19063 19064 The regex engine requires lifo allocation, however currently uses the general purpose 19065 malloc/free memory allocation. A simple bump pointer allocator should provide a lower 19066 overhead allocation solution. 19067 19068 When using YARR interpreter, 15% progression on v8-regex. 19069 19070 * JavaScriptCore.xcodeproj/project.pbxproj: 19071 * runtime/JSGlobalData.h: 19072 * runtime/RegExp.cpp: 19073 (JSC::RegExp::compile): 19074 * wtf/BumpPointerAllocator.h: Added. 19075 (WTF::BumpPointerPool::ensureCapacity): 19076 (WTF::BumpPointerPool::alloc): 19077 (WTF::BumpPointerPool::dealloc): 19078 (WTF::BumpPointerPool::operator new): 19079 (WTF::BumpPointerPool::BumpPointerPool): 19080 (WTF::BumpPointerPool::create): 19081 (WTF::BumpPointerPool::shrink): 19082 (WTF::BumpPointerPool::destroy): 19083 (WTF::BumpPointerPool::ensureCapacityCrossPool): 19084 (WTF::BumpPointerPool::deallocCrossPool): 19085 (WTF::BumpPointerAllocator::BumpPointerAllocator): 19086 (WTF::BumpPointerAllocator::~BumpPointerAllocator): 19087 (WTF::BumpPointerAllocator::startAllocator): 19088 (WTF::BumpPointerAllocator::stopAllocator): 19089 * yarr/RegexInterpreter.cpp: 19090 (JSC::Yarr::Interpreter::allocDisjunctionContext): 19091 (JSC::Yarr::Interpreter::freeDisjunctionContext): 19092 (JSC::Yarr::Interpreter::allocParenthesesDisjunctionContext): 19093 (JSC::Yarr::Interpreter::freeParenthesesDisjunctionContext): 19094 (JSC::Yarr::Interpreter::interpret): 19095 (JSC::Yarr::Interpreter::Interpreter): 19096 (JSC::Yarr::ByteCompiler::compile): 19097 (JSC::Yarr::byteCompileRegex): 19098 * yarr/RegexInterpreter.h: 19099 (JSC::Yarr::BytecodePattern::BytecodePattern): 19100 19101 2010-07-26 Gavin Barraclough <barraclough (a] apple.com> 19102 19103 Windows build fix from Chromium/GTK build fix! 19104 19105 * wtf/PageAllocation.cpp: 19106 19107 2010-07-26 Gavin Barraclough <barraclough (a] apple.com> 19108 19109 Chromium/GTK build fix 19110 19111 * wtf/PageAllocation.cpp: 19112 19113 2010-07-26 Gavin Barraclough <barraclough (a] apple.com> 19114 19115 Build fix for !Mac platforms. 19116 19117 * Android.mk: 19118 * CMakeLists.txt: 19119 * GNUmakefile.am: 19120 * JavaScriptCore.gypi: 19121 * JavaScriptCore.pro: 19122 * JavaScriptCore.vcproj/WTF/WTF.vcproj: 19123 19124 2010-07-26 Gavin Barraclough <barraclough (a] apple.com> 19125 19126 Reviewed by Oliver Hunt. 19127 19128 Bug 43009 - Abstract out page allocation from executable allocators 19129 19130 It would be great to have a single platform abstraction for block allocation, rather than copy/paste code. 19131 19132 In this initial implementation I've made Symbian fall back to use malloc/free for non-executable memory. 19133 I think this will match current behaviour for the next client we will want to port across (RegisterFile & 19134 Collector). 19135 19136 * CMakeListsEfl.txt: 19137 * GNUmakefile.am: 19138 * JavaScriptCore.gypi: 19139 * JavaScriptCore.pro: 19140 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: 19141 * JavaScriptCore.xcodeproj/project.pbxproj: 19142 * jit/ExecutableAllocator.cpp: 19143 (JSC::ExecutableAllocator::intializePageSize): 19144 (JSC::ExecutablePool::systemAlloc): 19145 (JSC::ExecutablePool::systemRelease): 19146 (JSC::ExecutableAllocator::isValid): 19147 * jit/ExecutableAllocator.h: 19148 (JSC::ExecutablePool::ExecutablePool): 19149 (JSC::ExecutablePool::poolAllocate): 19150 * jit/ExecutableAllocatorFixedVMPool.cpp: 19151 (JSC::FixedVMPoolAllocator::release): 19152 (JSC::FixedVMPoolAllocator::reuse): 19153 (JSC::FixedVMPoolAllocator::FixedVMPoolAllocator): 19154 (JSC::FixedVMPoolAllocator::alloc): 19155 (JSC::FixedVMPoolAllocator::free): 19156 (JSC::FixedVMPoolAllocator::isValid): 19157 (JSC::FixedVMPoolAllocator::isWithinVMPool): 19158 (JSC::ExecutablePool::systemAlloc): 19159 (JSC::ExecutablePool::systemRelease): 19160 * jit/ExecutableAllocatorPosix.cpp: Removed. 19161 * jit/ExecutableAllocatorSymbian.cpp: Removed. 19162 * jit/ExecutableAllocatorWin.cpp: Removed. 19163 * wscript: 19164 * wtf/PageAllocator.cpp: Added. 19165 (WTF::protection): 19166 (WTF::PageAllocation::commit): 19167 (WTF::PageAllocation::decommit): 19168 (WTF::PageAllocator::allocate): 19169 (WTF::PageAllocator::reserve): 19170 (WTF::PageAllocator::deallocate): 19171 (WTF::PageAllocator::pagesize): 19172 * wtf/PageAllocator.h: Added. 19173 (WTF::PageAllocation::PageAllocation): 19174 (WTF::PageAllocation::base): 19175 (WTF::PageAllocation::size): 19176 (WTF::PageAllocation::chunk): 19177 (WTF::PageAllocation::operator!): 19178 (WTF::PageAllocator::): 19179 19180 2010-07-26 Gavin Barraclough <barraclough (a] apple.com> 19181 19182 Rolling out r64097:64100, oops, more b0rked than I relized by my last changes, sorry! 19183 19184 * CMakeListsEfl.txt: 19185 * GNUmakefile.am: 19186 * JavaScriptCore.gypi: 19187 * JavaScriptCore.pro: 19188 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: 19189 * JavaScriptCore.xcodeproj/project.pbxproj: 19190 * jit/ExecutableAllocator.cpp: 19191 (JSC::ExecutableAllocator::reprotectRegion): 19192 (JSC::ExecutableAllocator::cacheFlush): 19193 * jit/ExecutableAllocator.h: 19194 (JSC::ExecutablePool::ExecutablePool): 19195 (JSC::ExecutablePool::poolAllocate): 19196 * jit/ExecutableAllocatorFixedVMPool.cpp: 19197 (JSC::FixedVMPoolAllocator::release): 19198 (JSC::FixedVMPoolAllocator::reuse): 19199 (JSC::FixedVMPoolAllocator::FixedVMPoolAllocator): 19200 (JSC::FixedVMPoolAllocator::alloc): 19201 (JSC::FixedVMPoolAllocator::free): 19202 (JSC::FixedVMPoolAllocator::isValid): 19203 (JSC::FixedVMPoolAllocator::isWithinVMPool): 19204 (JSC::ExecutablePool::systemAlloc): 19205 (JSC::ExecutablePool::systemRelease): 19206 * jit/ExecutableAllocatorPosix.cpp: Added. 19207 (JSC::ExecutableAllocator::intializePageSize): 19208 (JSC::ExecutablePool::systemAlloc): 19209 (JSC::ExecutablePool::systemRelease): 19210 (JSC::ExecutableAllocator::isValid): 19211 * jit/ExecutableAllocatorSymbian.cpp: Added. 19212 (JSC::ExecutableAllocator::intializePageSize): 19213 (JSC::ExecutablePool::systemAlloc): 19214 (JSC::ExecutablePool::systemRelease): 19215 (JSC::ExecutableAllocator::isValid): 19216 * jit/ExecutableAllocatorWin.cpp: Added. 19217 (JSC::ExecutableAllocator::intializePageSize): 19218 (JSC::ExecutablePool::systemAlloc): 19219 (JSC::ExecutablePool::systemRelease): 19220 (JSC::ExecutableAllocator::isValid): 19221 * wscript: 19222 * wtf/PageAllocation.cpp: Removed. 19223 * wtf/PageAllocation.h: Removed. 19224 19225 2010-07-26 Gavin Barraclough <barraclough (a] apple.com> 19226 19227 Speculative !debug build fix II. 19228 19229 * wtf/PageAllocation.h: 19230 (WTF::PageAllocation::PageAllocation): 19231 19232 2010-07-26 Gavin Barraclough <barraclough (a] apple.com> 19233 19234 Speculative !debug build fix. 19235 19236 * wtf/PageAllocation.h: 19237 (WTF::PageAllocation::PageAllocation): 19238 19239 2010-07-26 Gavin Barraclough <barraclough (a] apple.com> 19240 19241 Reviewed by Oliver Hunt. 19242 19243 Bug 43009 - Abstract out page allocation from executable allocators 19244 19245 It would be great to have a single platform abstraction for block allocation, rather than copy/paste code. 19246 19247 In this initial implementation I've made Symbian fall back to use malloc/free for non-executable memory. 19248 I think this will match current behaviour for the next client we will want to port across (RegisterFile & 19249 Collector). 19250 19251 * CMakeListsEfl.txt: 19252 * GNUmakefile.am: 19253 * JavaScriptCore.gypi: 19254 * JavaScriptCore.pro: 19255 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: 19256 * JavaScriptCore.xcodeproj/project.pbxproj: 19257 * jit/ExecutableAllocator.cpp: 19258 (JSC::ExecutableAllocator::intializePageSize): 19259 (JSC::ExecutablePool::systemAlloc): 19260 (JSC::ExecutablePool::systemRelease): 19261 (JSC::ExecutableAllocator::isValid): 19262 * jit/ExecutableAllocator.h: 19263 (JSC::ExecutablePool::ExecutablePool): 19264 (JSC::ExecutablePool::poolAllocate): 19265 * jit/ExecutableAllocatorFixedVMPool.cpp: 19266 (JSC::FixedVMPoolAllocator::release): 19267 (JSC::FixedVMPoolAllocator::reuse): 19268 (JSC::FixedVMPoolAllocator::FixedVMPoolAllocator): 19269 (JSC::FixedVMPoolAllocator::alloc): 19270 (JSC::FixedVMPoolAllocator::free): 19271 (JSC::FixedVMPoolAllocator::isValid): 19272 (JSC::FixedVMPoolAllocator::isWithinVMPool): 19273 (JSC::ExecutablePool::systemAlloc): 19274 (JSC::ExecutablePool::systemRelease): 19275 * jit/ExecutableAllocatorPosix.cpp: Removed. 19276 * jit/ExecutableAllocatorSymbian.cpp: Removed. 19277 * jit/ExecutableAllocatorWin.cpp: Removed. 19278 * wscript: 19279 * wtf/PageAllocator.cpp: Added. 19280 (WTF::protection): 19281 (WTF::PageAllocation::commit): 19282 (WTF::PageAllocation::decommit): 19283 (WTF::PageAllocator::allocate): 19284 (WTF::PageAllocator::reserve): 19285 (WTF::PageAllocator::deallocate): 19286 (WTF::PageAllocator::pagesize): 19287 * wtf/PageAllocator.h: Added. 19288 (WTF::PageAllocation::PageAllocation): 19289 (WTF::PageAllocation::base): 19290 (WTF::PageAllocation::size): 19291 (WTF::PageAllocation::chunk): 19292 (WTF::PageAllocation::operator!): 19293 (WTF::PageAllocator::): 19294 19295 2009-10-30 Tor Arne Vestb <tor.arne.vestbo (a] nokia.com> 19296 19297 Reviewed by Kenneth Rohde Christiansen. 19298 19299 [Qt] Use the default timeout interval for JS as the HTML tokenizer delay for setHtml() 19300 19301 This ensures that long-running JavaScript (for example due to a modal alert() dialog), 19302 will not trigger a deferred load after only 500ms (the default tokenizer delay) while 19303 still giving a reasonable timeout (10 seconds) to prevent deadlock. 19304 19305 https://bugs.webkit.org/show_bug.cgi?id=29381 19306 19307 * runtime/TimeoutChecker.h: Add getter for the timeout interval 19308 19309 2010-07-25 Patrick Gansterer <paroga (a] paroga.com> 19310 19311 Reviewed by Kent Tamura. 19312 19313 [WINCE] Buildfix for JSC in release mode 19314 https://bugs.webkit.org/show_bug.cgi?id=42934 19315 19316 * jsc.cpp: Don't use __try on WinCE. 19317 19318 2010-07-24 Patrick Gansterer <paroga (a] paroga.com> 19319 19320 Reviewed by Darin Adler. 19321 19322 [MSVC] Ensure 4 byte alignment on ARM 19323 https://bugs.webkit.org/show_bug.cgi?id=42935 19324 19325 * jit/JITStubs.h: Added #pragma pack(4) around JITStackFrame. 19326 19327 2010-07-24 Patrick Gansterer <paroga (a] paroga.com> 19328 19329 Reviewed by Darin Adler. 19330 19331 [WINCE] Cleanup defines in Platform.h 19332 https://bugs.webkit.org/show_bug.cgi?id=42933 19333 19334 * wtf/Platform.h: 19335 19336 2010-07-23 Rafael Antognolli <antognolli (a] profusion.mobi> 19337 19338 Reviewed by Antonio Gomes. 19339 19340 [EFL] Cleanup glib support (make it optional) 19341 https://bugs.webkit.org/show_bug.cgi?id=42480 19342 19343 Remove gobject/GRefPtr.cpp if not using soup/glib. 19344 19345 * wtf/CMakeListsEfl.txt: 19346 19347 2010-07-23 Patrick Gansterer <paroga (a] paroga.com> 19348 19349 Reviewed by Adam Roben. 19350 19351 [WINCE] Implement TCSpinLock. 19352 https://bugs.webkit.org/show_bug.cgi?id=41792 19353 19354 Implement the SpinLock with InterlockedExchange from the Windows API. 19355 19356 * wtf/TCSpinLock.h: 19357 (TCMalloc_SpinLock::Lock): 19358 (TCMalloc_SpinLock::Unlock): 19359 (TCMalloc_SpinLock::IsHeld): 19360 (TCMalloc_SpinLock::Init): 19361 (TCMalloc_SlowLock): 19362 19363 2010-07-22 Csaba Osztrogonc <ossy (a] webkit.org> 19364 19365 Unreviewed rolling out r63947 and r63948, because they broke Qt Windows build. 19366 19367 * jit/JITStubs.cpp: 19368 * jit/JITStubs.h: 19369 19370 2010-07-22 Gavin Barraclough <barraclough (a] apple.com> 19371 19372 Eeeep! r63947 hosed all non-x86 builds! 19373 19374 * jit/JITStubs.h: 19375 19376 2010-07-22 Gavin Barraclough <barraclough (a] apple.com> 19377 19378 Reviewed by Oliver Hunt. 19379 19380 Bug 42818 - [Qt] REGRESSION(63348): jsc is broken 19381 Speculative fix, need fastcall conventions on Qt/Win. 19382 19383 * jit/JITStubs.cpp: 19384 * jit/JITStubs.h: 19385 19386 2010-07-22 Oliver Hunt <oliver (a] apple.com> 19387 19388 Reviewed by Gavin Barraclough. 19389 19390 Do more constant folding 19391 https://bugs.webkit.org/show_bug.cgi?id=42867 19392 19393 Constant fold a few more operations. SunSpider says this is 19394 a win but I suspect that's just code motion at play. 19395 19396 * parser/ASTBuilder.h: 19397 (JSC::ASTBuilder::makeModNode): 19398 (JSC::ASTBuilder::makeURightShiftNode): 19399 (JSC::ASTBuilder::makeBitOrNode): 19400 (JSC::ASTBuilder::makeBitAndNode): 19401 (JSC::ASTBuilder::makeBitXOrNode): 19402 (JSC::ASTBuilder::makeBinaryNode): 19403 19404 2010-07-22 Kent Hansen <kent.hansen (a] nokia.com> 19405 19406 Reviewed by Kent Tamura. 19407 19408 Error properties of the Global Object are missing the DontEnum attribute 19409 https://bugs.webkit.org/show_bug.cgi?id=28771 19410 19411 Add the attributes to become spec compliant. 19412 19413 * runtime/JSGlobalObject.cpp: 19414 (JSC::JSGlobalObject::reset): 19415 19416 2010-07-20 Steve Falkenburg <sfalken (a] apple.com> 19417 19418 Reviewed by Adam Roben. 19419 19420 WebKit on Windows should build optionally with an unversioned ICU DLL 19421 https://bugs.webkit.org/show_bug.cgi?id=42722 19422 <rdar://problem/8211743> JavaScriptCore needs to link against unversioned ICU 19423 19424 Dynamically create a new header, ICUVersion.h, as part of build-generated-files.sh. 19425 Header contains a preprocessor define (U_DISABLE_RENAMING) indicating to ICU whether the ICU API 19426 should be namespaced with the current ICU version number. Proper value is determined 19427 by checking for the presence of libicuuc.lib, the unversioned copy of ICU. 19428 19429 To get the proper value for U_DISABLE_RENAMING into all source files, we force 19430 the include of ICUVersion.h (our generated header) via the compiler options. 19431 19432 Since the versioned and unversioned ICU have different filenames (libicuuc.lib vs icuuc.lib) 19433 we copy the ICU lib to an intermediate location under obj with a common name. This 19434 allows us to link properly with either without adding a new build configuration. 19435 19436 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreCommon.vsprops: 19437 Copy ICU libs into a common location with a common name. 19438 Add additional library search path to pick up icu lib. 19439 Change ICU library filename specified to linker. 19440 Add forced include of ICUVersion.h. 19441 * JavaScriptCore.vcproj/JavaScriptCore/build-generated-files.sh: Generate ICUVersion.h 19442 * JavaScriptCore.vcproj/WTF/WTFCommon.vsprops: Add forced include of ICUVersion.h. 19443 * JavaScriptCore.vcproj/jsc/jscCommon.vsprops: 19444 Copy ICU libs into a common location with a common name. 19445 Add additional library search path to pick up icu lib. 19446 Change ICU library filename specified to linker. 19447 Add forced include of ICUVersion.h. 19448 * JavaScriptCore.vcproj/testapi/testapiCommon.vsprops: 19449 Copy ICU libs into a common location with a common name. 19450 Add additional library search path to pick up icu lib. 19451 Change ICU library filename specified to linker. 19452 Add forced include of ICUVersion.h. 19453 19454 2010-07-20 Steve Falkenburg <sfalken (a] apple.com> 19455 19456 Re-save vsprops files after no-op edits in Visual Studio 19457 to fix manual edit issues. 19458 19459 2010-07-20 Mahesh Kulkarni <mahesh.kulkarni (a] nokia.com> 19460 19461 Reviewed by Steve Block. 19462 19463 Need to be able to configure Geolocation policy regarding user permissions 19464 https://bugs.webkit.org/show_bug.cgi?id=42068 19465 19466 If CLIENT_BASED_GEOLOCATION is enabled, enable preemtive permission policy 19467 by default 19468 19469 * wtf/Platform.h: 19470 19471 2010-07-20 Sheriff Bot <webkit.review.bot (a] gmail.com> 19472 19473 Unreviewed, rolling out r63742. 19474 http://trac.webkit.org/changeset/63742 19475 https://bugs.webkit.org/show_bug.cgi?id=42641 19476 19477 Broke Leopard Intel build. (Requested by bbandix on #webkit). 19478 19479 * wtf/Platform.h: 19480 19481 2010-07-20 Mahesh Kulkarni <mahesh.kulkarni (a] nokia.com> 19482 19483 Reviewed by Steve Block. 19484 19485 Need to be able to configure Geolocation policy regarding user permissions 19486 https://bugs.webkit.org/show_bug.cgi?id=42068 19487 19488 If CLIENT_BASED_GEOLOCATION is enabled, enable preemtive permission policy 19489 by default 19490 19491 * wtf/Platform.h: 19492 19493 2010-07-19 Dirk Schulze <krit (a] webkit.org> 19494 19495 Reviewed by Nikolas Zimmermann. 19496 19497 SVG CleanUp of SVGPathData parsing 19498 https://bugs.webkit.org/show_bug.cgi?id=41410 19499 19500 Added piOverTwo to MathExtras. 19501 19502 * wtf/MathExtras.h: 19503 19504 2010-07-19 Mike Moretti <mike.moretti (a] nokia.com> 19505 19506 Reviewed by Laszlo Gombos. 19507 19508 [Symbian] Build fix after r63404. 19509 19510 Implement isValid() function for the Symbian executable allocator. 19511 19512 * jit/ExecutableAllocatorSymbian.cpp: 19513 (JSC::ExecutableAllocator::isValid): 19514 19515 2010-07-19 Chris Marrin <cmarrin (a] apple.com> 19516 19517 Reviewed by Darin Adler. 19518 19519 https://bugs.webkit.org/show_bug.cgi?id=42118 19520 Disable WebGL on Leopard for now. 19521 19522 LayoutTests fail on some graphics hardware on Leopard because one of the features we use, 19523 GL_ARB_framebuffer_object, is not universally available in Leopard like it is in 19524 SnowLeopard. This will allow LayoutTests to pass on Leopard until we add logic to use a 19525 software OpenGL driver on machines without this support. 19526 19527 * Configurations/FeatureDefines.xcconfig: 19528 19529 2010-07-16 Darin Adler <darin (a] apple.com> 19530 19531 Reviewed by Sam Weinig. 19532 19533 Use OwnPtr for CodeBlock objects 19534 https://bugs.webkit.org/show_bug.cgi?id=42490 19535 19536 * runtime/Executable.cpp: 19537 (JSC::EvalExecutable::EvalExecutable): Moved this here and made it non-inline. 19538 Eliminated the code that used to initialize the raw pointer since it's now 19539 an OwnPtr. 19540 (JSC::EvalExecutable::~EvalExecutable): Removed the explicit delete here. 19541 (JSC::ProgramExecutable::ProgramExecutable): Ditto. 19542 (JSC::ProgramExecutable::~ProgramExecutable): Ditto. 19543 (JSC::FunctionExecutable::FunctionExecutable): Ditto. 19544 (JSC::FunctionExecutable::~FunctionExecutable): Ditto. 19545 (JSC::EvalExecutable::compileInternal): Added use of adoptPtr and get. 19546 (JSC::ProgramExecutable::compileInternal): Ditto. 19547 (JSC::FunctionExecutable::compileForCallInternal): Ditto. 19548 (JSC::FunctionExecutable::compileForConstructInternal): Ditto. 19549 (JSC::FunctionExecutable::recompile): Use clear instead of delete followed 19550 by assignment of 0. 19551 19552 * runtime/Executable.h: Moved constructors to the cpp file and changed 19553 raw pointers to OwnPtr. 19554 19555 2010-07-19 Lucas De Marchi <lucas.demarchi (a] profusion.mobi> 19556 19557 Reviewed by Kenneth Rohde Christiansen. 19558 19559 [EFL] Fix build on 64-bit systems. According to 19560 JavaScriptCore/wtf/Platform.h, x86_64 uses fixed allocator, which 19561 needs jit/ExecutableAllocatorFixedVMPool.cpp to be included in build 19562 system. 19563 https://bugs.webkit.org/show_bug.cgi?id=42559 19564 19565 * CMakeListsEfl.txt: add missing file for x86_64. 19566 19567 2010-07-16 Leandro Pereira <leandro (a] profusion.mobi> 19568 19569 [EFL] Unreviewed build system cleanup. 19570 19571 Move ExecutableAllocator{FixedVMPool,Posix,Symbian,Win}.cpp from 19572 root CMakeLists.txt to the platform CMakeLists.txt. 19573 19574 * CMakeLists.txt: 19575 * CMakeListsEfl.txt: Add ExecutableAllocatorPosix.cpp. 19576 19577 2010-07-16 Oliver Hunt <oliver (a] apple.com> 19578 19579 Reviewed by Geoffrey Garen. 19580 19581 ES5 allows use of reserved words as IdentifierName 19582 https://bugs.webkit.org/show_bug.cgi?id=42471 19583 19584 Modify the lexer to allow us to avoid identifying reserved 19585 words in those contexts where they are valid identifiers, and 19586 we know it's safe. Additionally tag the reserved word tokens 19587 so we can easily identify them in those cases where we can't 19588 guarantee that we've skipped reserved word identification. 19589 19590 * parser/JSParser.cpp: 19591 (JSC::JSParser::next): 19592 (JSC::JSParser::parseProperty): 19593 (JSC::JSParser::parseMemberExpression): 19594 * parser/JSParser.h: 19595 (JSC::): 19596 * parser/Lexer.cpp: 19597 (JSC::Lexer::lex): 19598 * parser/Lexer.h: 19599 (JSC::Lexer::): 19600 19601 2010-07-16 Anders Carlsson <andersca (a] apple.com> 19602 19603 Reviewed by Sam Weinig. 19604 19605 clang++ build fixes for JavaScriptCore and WebCore 19606 https://bugs.webkit.org/show_bug.cgi?id=42478 19607 19608 * runtime/RegExpKey.h: 19609 (JSC::operator==): 19610 Move the RegExpKey equals operator into the JSC namespace so it can be found by ADL. 19611 19612 2010-07-16 Anders Carlsson <andersca (a] apple.com> 19613 19614 Reviewed by David Levin. 19615 19616 Really add WARN_UNUSED_RESULT to leakRef 19617 https://bugs.webkit.org/show_bug.cgi?id=42464 19618 19619 * wtf/PassRefPtr.h: 19620 (WTF::PassRefPtr::): 19621 (WTF::NonNullPassRefPtr::): 19622 Put the WARN_UNUSED_RESULT attribute at the right place. 19623 19624 * wtf/RetainPtr.h: 19625 (WTF::RetainPtr::releaseRef): 19626 Remove WARN_UNUSED_RESULT here for now, it leads to two warnings that need 19627 to be fixed first. 19628 19629 2010-07-15 Victor Wang <victorw (a] chromium.org> 19630 19631 Reviewed by David Levin. 19632 19633 [Chromium] Disable c4291 for chromium windows multi dll build. 19634 19635 https://bugs.webkit.org/show_bug.cgi?id=42177 19636 19637 * JavaScriptCore.gyp/JavaScriptCore.gyp: 19638 19639 2010-07-15 Geoffrey Garen <ggaren (a] apple.com> 19640 19641 Reviewed by Maciej Stachowiak. 19642 19643 Crash entering mail.yahoo.com 19644 https://bugs.webkit.org/show_bug.cgi?id=42394 19645 19646 * bytecompiler/BytecodeGenerator.cpp: 19647 (JSC::BytecodeGenerator::argumentNumberFor): Added a NULL check. If the 19648 identifier we're resolving is not a local variable, registerFor returns 19649 NULL. 19650 19651 * bytecompiler/NodesCodegen.cpp: 19652 (JSC::FunctionBodyNode::emitBytecode): Unrelated to the crash, but I 19653 noticed this while working on it: No need to NULL-check returnNode, 19654 since an early return has already done so. 19655 19656 2010-07-15 Martin Robinson <mrobinson (a] igalia.com> 19657 19658 Reviewed by Oliver Hunt. 19659 19660 [GTK] Simplify the distribution step 19661 https://bugs.webkit.org/show_bug.cgi?id=42414 19662 19663 * GNUmakefile.am: Add extra dist files directly to EXTRA_DIST instead 19664 of adding them by proxy via javascriptcore_dist. Sort the EXTRA_DIST list. 19665 Refer to create_hash_table and create_regexp_tables directly, as is the 19666 behavior with other code generation scripts. 19667 19668 2010-07-15 Oliver Hunt <oliver (a] apple.com> 19669 19670 Reviewed by Geoff Garen. 19671 19672 Fix dumping of op_put_by_id. 19673 19674 * bytecode/CodeBlock.cpp: 19675 (JSC::CodeBlock::printPutByIdOp): 19676 19677 2010-07-15 Zoltan Herczeg <zherczeg (a] webkit.org> 19678 19679 Reviewed by Darin Adler. 19680 19681 Refactoring some parts of the lexer 19682 https://bugs.webkit.org/show_bug.cgi?id=41845 19683 19684 This patch is a precursor of refactoring the identifier 19685 parsing, which currently slows down the lexer, and not 19686 ready for landing. This patch contains those sources, 19687 which does not slow down the lexer (mainly style changes). 19688 19689 SunSpider: no change (529.4ms to 528.7ms) 19690 --parse-only: no change (31.0ms to 31.2ms) 19691 19692 * parser/Lexer.cpp: 19693 (JSC::isIdentStart): using typesOfASCIICharacters to determine 19694 whether the current character is in identifier start 19695 (JSC::isIdentPart): using typesOfASCIICharacters to determine 19696 whether the current character is in identifier part 19697 (JSC::Lexer::parseString): style fix 19698 (JSC::Lexer::lex): removing the else after the main which 19699 which reduces code duplication 19700 19701 2010-07-15 Mark Rowe <mrowe (a] apple.com> 19702 19703 Update the sorting in the Xcode project files. 19704 19705 * JavaScriptCore.xcodeproj/project.pbxproj: 19706 19707 2010-07-14 Oliver Hunt <oliver (a] apple.com> 19708 19709 Reviewed by Gavin Barraclough. 19710 19711 Make sure that mixed interpreter/jit builds don't try to use the jit if the allocator fails 19712 https://bugs.webkit.org/show_bug.cgi?id=42310 19713 19714 Add some null checks to deal with the Fixed VM allocator failing 19715 to get the requested executable region, delay the creation of the 19716 JITStubs in JSGlobalData until after we know whether we're using 19717 the JIT. 19718 19719 * jit/ExecutableAllocator.h: 19720 (JSC::ExecutableAllocator::ExecutableAllocator): 19721 (JSC::ExecutableAllocator::poolForSize): 19722 * jit/ExecutableAllocatorFixedVMPool.cpp: 19723 (JSC::FixedVMPoolAllocator::FixedVMPoolAllocator): 19724 (JSC::FixedVMPoolAllocator::alloc): 19725 (JSC::FixedVMPoolAllocator::free): 19726 (JSC::FixedVMPoolAllocator::isValid): 19727 (JSC::ExecutableAllocator::isValid): 19728 (JSC::ExecutablePool::systemAlloc): 19729 (JSC::ExecutablePool::systemRelease): 19730 * jit/ExecutableAllocatorPosix.cpp: 19731 (JSC::ExecutableAllocator::isValid): 19732 * jit/ExecutableAllocatorWin.cpp: 19733 (JSC::ExecutableAllocator::isValid): 19734 * jit/JIT.cpp: 19735 (JSC::JIT::linkCall): 19736 (JSC::JIT::linkConstruct): 19737 * jit/JIT.h: 19738 (JSC::JIT::compileCTIMachineTrampolines): 19739 (JSC::JIT::compileCTINativeCall): 19740 * jit/JITArithmetic.cpp: 19741 (JSC::JIT::emit_op_mod): 19742 * jit/JITArithmetic32_64.cpp: 19743 (JSC::JIT::emit_op_mod): 19744 * jit/JITCall.cpp: 19745 (JSC::JIT::compileOpCallVarargs): 19746 (JSC::JIT::compileOpCall): 19747 (JSC::JIT::compileOpCallSlowCase): 19748 * jit/JITCall32_64.cpp: 19749 (JSC::JIT::compileOpCallVarargs): 19750 (JSC::JIT::compileOpCall): 19751 (JSC::JIT::compileOpCallSlowCase): 19752 * jit/JITOpcodes.cpp: 19753 (JSC::JIT::privateCompileCTINativeCall): 19754 * jit/JITStubs.cpp: 19755 (JSC::JITThunks::JITThunks): 19756 (JSC::JITThunks::tryCacheGetByID): 19757 (JSC::JITThunks::hostFunctionStub): 19758 * jit/ThunkGenerators.cpp: 19759 (JSC::charCodeAtThunkGenerator): 19760 (JSC::charAtThunkGenerator): 19761 (JSC::fromCharCodeThunkGenerator): 19762 (JSC::sqrtThunkGenerator): 19763 (JSC::powThunkGenerator): 19764 * runtime/Executable.h: 19765 (JSC::NativeExecutable::create): 19766 * runtime/JSGlobalData.cpp: 19767 (JSC::JSGlobalData::JSGlobalData): 19768 (JSC::JSGlobalData::getHostFunction): 19769 * runtime/JSGlobalData.h: 19770 (JSC::JSGlobalData::getCTIStub): 19771 * yarr/RegexJIT.cpp: 19772 (JSC::Yarr::jitCompileRegex): 19773 19774 2010-07-14 Gavin Barraclough <barraclough (a] apple.com> 19775 19776 Speculative Qt/Windows build fix. 19777 19778 * jit/JITStubs.h: 19779 19780 2010-07-14 Gavin Barraclough <barraclough (a] apple.com> 19781 19782 Reviewed by Oliver Hunt. 19783 19784 https://bugs.webkit.org/show_bug.cgi?id=42280 19785 JIT_STUB_ARGUMENT_VA_LIST is only slowing us down! Remove it! 19786 19787 * jit/JIT.h: 19788 * jit/JITInlineMethods.h: 19789 (JSC::JIT::restoreArgumentReferenceForTrampoline): 19790 * jit/JITStubs.cpp: 19791 * jit/JITStubs.h: 19792 * wtf/Platform.h: 19793 19794 2010-07-14 Oliver Hunt <oliver (a] apple.com> 19795 19796 RS=Geoff Garen. 19797 19798 Guard the CF path of interpreter vs. jit selection with PLATFORM(CF) 19799 19800 This allows the code to work on windows as well. Also unifies the 19801 environment variable with the preference name. 19802 19803 * runtime/JSGlobalData.cpp: 19804 (JSC::JSGlobalData::JSGlobalData): 19805 19806 2010-07-14 Oliver Hunt <oliver (a] apple.com> 19807 19808 Reviewed by Don Melton. 19809 19810 Crash when trying to enable JIT and Interpreter in a single build. 19811 19812 CFPreferences code added at the last minute failed to account for 19813 the preference not being present and then attempted to CFRelease 19814 a null value. 19815 19816 * runtime/JSGlobalData.cpp: 19817 (JSC::JSGlobalData::JSGlobalData): 19818 19819 2010-07-14 Zoltan Herczeg <zherczeg (a] webkit.org> 19820 19821 Reviewed by Darin Adler. 19822 19823 Change indentations in the lexer 19824 https://bugs.webkit.org/show_bug.cgi?id=41845 19825 19826 This patch fixes an old, indentation error comes from kjs, 19827 as webkit has a different style rule for switches, and change 19828 the indentation of the main switch, which is a temporary 19829 style error. This change makes easier to see the behavioural 19830 changes in the follow-up patch. 19831 19832 No behavioural changes. 19833 19834 * parser/Lexer.cpp: 19835 (JSC::singleEscape): 19836 (JSC::Lexer::lex): 19837 19838 2010-07-13 Sheriff Bot <webkit.review.bot (a] gmail.com> 19839 19840 Unreviewed, rolling out r63262. 19841 http://trac.webkit.org/changeset/63262 19842 https://bugs.webkit.org/show_bug.cgi?id=42229 19843 19844 broke Windows compile (Requested by bweinstein on #webkit). 19845 19846 * API/tests/testapi.c: 19847 (assertEqualsAsCharactersPtr): 19848 (main): 19849 * testapi.pro: Removed. 19850 19851 2010-07-13 Oliver Hunt <oliver (a] apple.com> 19852 19853 Reviewed by Gavin Barraclough. 19854 19855 ES5 requires BOMs to be treated as whitespace 19856 https://bugs.webkit.org/show_bug.cgi?id=42218 19857 19858 Add BOM character to the Lexer's definition of whitespace, 19859 and remove the logic that dealt with stripping BOMs and 19860 caching the cleaned string. 19861 19862 * parser/Lexer.h: 19863 (JSC::Lexer::isWhiteSpace): 19864 * parser/SourceProvider.h: 19865 (JSC::UStringSourceProvider::create): 19866 (JSC::UStringSourceProvider::UStringSourceProvider): 19867 * wtf/text/StringImpl.h: 19868 19869 2010-07-13 Andreas Kling <andreas.kling (a] nokia.com> 19870 19871 Reviewed by Darin Adler. 19872 19873 Avoid slow-path for put() in Array.splice() 19874 https://bugs.webkit.org/show_bug.cgi?id=41920 19875 19876 Defer creation of the returned array until its final size is known 19877 to avoid growing it while adding elements. 19878 19879 * runtime/JSArray.cpp: 19880 (JSC::JSArray::JSArray): Add two modes of creation, CreateInitialized (old) 19881 and CreateCompact (which should only be used when constructing arrays whose 19882 size and contents are known at the time of creation.) 19883 (JSC::JSArray::setLength): Skip first consistency check if in CreateCompact 19884 initialization mode. (Only applies to non-empty arrays.) 19885 (JSC::JSArray::checkConsistency): Build fix (JSValue::type() is gone) 19886 * runtime/JSArray.h: 19887 (JSC::JSArray::uncheckedSetIndex): Added for fast initialization of compact 19888 arrays. Does no bounds or other sanity checking. 19889 * runtime/ArrayPrototype.cpp: 19890 (JSC::arrayProtoFuncSplice): Optimized creation of the returned JSArray. 19891 * runtime/ArrayConstructor.cpp: 19892 (JSC::constructArrayWithSizeQuirk): Pass CreateInitialized to ctor. 19893 * runtime/JSGlobalObject.h: 19894 (JSC::constructEmptyArray): Pass CreateInitialized to ctor. 19895 * runtime/RegExpConstructor.cpp: 19896 (JSC::RegExpMatchesArray::RegExpMatchesArray): Pass CreateInitialized to ctor. 19897 19898 2010-07-13 Gavin Barraclough <barraclough (a] apple.com> 19899 19900 Reviewed by Oliver Hunt. 19901 19902 Bug 42207 - Clean up interface to compile executables, always check for exceptions 19903 19904 Presently interface to compile executable is inconsistent between eval/program and 19905 function code, and is error prone in allowing a caller to byte compile without JIT 19906 compiling an executable (we rely on all executables with codeblocks having JIT code). 19907 Unify on an interface where all compilation is performed by a single compile (with 19908 ForCall|ForConstruct variants) method, and make all clients check for errors. 19909 19910 * interpreter/Interpreter.cpp: 19911 (JSC::Interpreter::unwindCallFrame): 19912 (JSC::Interpreter::execute): 19913 (JSC::Interpreter::executeCall): 19914 (JSC::Interpreter::executeConstruct): 19915 (JSC::Interpreter::prepareForRepeatCall): 19916 (JSC::Interpreter::privateExecute): 19917 * jit/JITStubs.cpp: 19918 (JSC::DEFINE_STUB_FUNCTION): 19919 * parser/Parser.h: 19920 (JSC::Parser::isFunctionBodyNode): 19921 (JSC::Parser::parse): 19922 * runtime/ArrayPrototype.cpp: 19923 (JSC::isNumericCompareFunction): 19924 * runtime/ExceptionHelpers.cpp: 19925 (JSC::createStackOverflowError): 19926 * runtime/ExceptionHelpers.h: 19927 * runtime/Executable.cpp: 19928 (JSC::EvalExecutable::compileInternal): 19929 (JSC::ProgramExecutable::checkSyntax): 19930 (JSC::ProgramExecutable::compileInternal): 19931 (JSC::FunctionExecutable::compileForCallInternal): 19932 (JSC::FunctionExecutable::compileForConstructInternal): 19933 (JSC::FunctionExecutable::reparseExceptionInfo): 19934 (JSC::EvalExecutable::reparseExceptionInfo): 19935 (JSC::FunctionExecutable::fromGlobalCode): 19936 * runtime/Executable.h: 19937 (JSC::EvalExecutable::compile): 19938 (JSC::EvalExecutable::generatedBytecode): 19939 (JSC::EvalExecutable::generatedJITCode): 19940 (JSC::ProgramExecutable::compile): 19941 (JSC::ProgramExecutable::generatedBytecode): 19942 (JSC::ProgramExecutable::generatedJITCode): 19943 (JSC::FunctionExecutable::generatedBytecode): 19944 (JSC::FunctionExecutable::compileForCall): 19945 (JSC::FunctionExecutable::compileForConstruct): 19946 (JSC::FunctionExecutable::generatedJITCodeForConstructWithArityCheck): 19947 * runtime/FunctionConstructor.cpp: 19948 (JSC::constructFunction): 19949 * runtime/JSActivation.cpp: 19950 (JSC::JSActivation::argumentsGetter): 19951 * runtime/JSGlobalData.h: 19952 (JSC::JSGlobalData::canUseJIT): 19953 19954 2010-07-13 Caio Marcelo de Oliveira Filho <caio.oliveira (a] openbossa.org> 19955 19956 Reviewed by Oliver Hunt. 19957 19958 testapi.c depends on the Core Foundation. 19959 https://bugs.webkit.org/show_bug.cgi?id=40058 19960 19961 Separate CoreFoundation specific tests in JSC's testapi.c. Enabling it 19962 to compile in Qt environments. 19963 19964 All tests should work except for the JSStringCreateWithCharacters() function, 19965 because its tests depend on Core Foundation specific functions. 19966 19967 * API/tests/testapi.c: 19968 (testJSStringRefCF): moved CoreFoundation specific tests to this function. 19969 (main): The moves plus some minor tweaks. 19970 * testapi.pro: Added. 19971 19972 2010-07-13 Gavin Barraclough <barraclough (a] apple.com> 19973 19974 Reviewed by Oliver Hunt. 19975 19976 Bug 42182 - Change how numeric compare functions are detected 19977 19978 There are three problems with the current mechanism: 19979 * It requires that a function executable be bytecode compiled without 19980 being JIT generated (in order to copy the bytecode from the numeric 19981 compare function). This is a problem since we have an invariant when 19982 running with the JIT that functions are never bytecode compiled without 19983 also being JIT generated (after checking the codeblock we assume the 19984 function has JIT code). To help maintain this invariant 19985 * This implementation will prevent us from experimenting with alternate 19986 compilation paths which do not compile via bytecode. 19987 * It doesn't work. Functions passing more than two arguments will match 19988 if they are comparing their last two arguments, not the first two. 19989 Generally the mapping back from bytecode to semantics may be more 19990 complex then initially expected. 19991 19992 * bytecompiler/BytecodeGenerator.cpp: 19993 (JSC::BytecodeGenerator::generate): 19994 (JSC::BytecodeGenerator::setIsNumericCompareFunction): 19995 (JSC::BytecodeGenerator::argumentNumberFor): 19996 * bytecompiler/BytecodeGenerator.h: 19997 * bytecompiler/NodesCodegen.cpp: 19998 (JSC::BlockNode::singleStatement): 19999 (JSC::FunctionBodyNode::emitBytecode): 20000 * parser/Nodes.h: 20001 (JSC::ExpressionNode::isSubtract): 20002 (JSC::BinaryOpNode::lhs): 20003 (JSC::BinaryOpNode::rhs): 20004 (JSC::SubNode::isSubtract): 20005 (JSC::ReturnNode::value): 20006 * runtime/JSGlobalData.cpp: 20007 (JSC::JSGlobalData::JSGlobalData): 20008 * runtime/JSGlobalData.h: 20009 20010 2010-07-12 Oliver Hunt <oliver (a] apple.com> 20011 20012 Reviewed by Gavin Barraclough. 20013 20014 REGRESSION: Crash at JSC::JIT::privateCompile(JSC::MacroAssemblerCodePtr*) 20015 https://bugs.webkit.org/show_bug.cgi?id=41763 20016 20017 There are two parts to this patch, the first is to fix the actual 20018 problem. When calling copyStringWithoutBOMs on a string we know 20019 to contain BOMs we return a value indicating that there are no 20020 BOMs. 20021 20022 The second part of this fix is simply to harden the path that 20023 led to a crash when parsing failed. 20024 20025 * jit/JITOpcodes.cpp: 20026 (JSC::JIT::privateCompileCTIMachineTrampolines): 20027 * jit/JITOpcodes32_64.cpp: 20028 (JSC::JIT::privateCompileCTIMachineTrampolines): 20029 * jit/JITStubs.cpp: 20030 (JSC::DEFINE_STUB_FUNCTION): 20031 Harden compilation stubs against parser failure. 20032 * parser/Lexer.cpp: 20033 (JSC::Lexer::sourceCode): 20034 Add assertions to ensure that subranges into a source provider 20035 are always actually braces. Hopefully this should catch similar 20036 failures in future. These assertions fire on existing tests 20037 without this fix. 20038 * runtime/Executable.h: 20039 (JSC::FunctionExecutable::tryJitCodeForCall): 20040 (JSC::FunctionExecutable::tryJitCodeForConstruct): 20041 * wtf/text/StringImpl.h: 20042 (WebCore::StringImpl::copyStringWithoutBOMs): 20043 Make copyStringWithBOMs do the right thing. 20044 20045 2010-07-13 Gabor Loki <loki (a] webkit.org> 20046 20047 Reviewed by Gavin Barraclough. 20048 20049 Fix the constant encoding in data transfer instructions on ARM 20050 https://bugs.webkit.org/show_bug.cgi?id=42166 20051 20052 The getImm function is designed to produce modified immediate constant 20053 for data processing instructions. It should not be used to encode 20054 any constant for data transfer. In the current situation there is no 20055 way to use any immediate constant for data transfer. So, the moveImm 20056 function is the desired method to pass the offset value to the data 20057 transfer instructions. 20058 20059 Reported by Jacob Bramley. 20060 20061 * assembler/ARMAssembler.cpp: 20062 (JSC::ARMAssembler::dataTransfer32): 20063 * assembler/MacroAssemblerARM.h: 20064 (JSC::MacroAssemblerARM::call32): 20065 20066 2010-07-09 Darin Adler <darin (a] apple.com> 20067 20068 Reviewed by Geoffrey Garen. 20069 20070 String to number coercion is not spec compliant 20071 https://bugs.webkit.org/show_bug.cgi?id=31349 20072 20073 ToNumber should ignore NBSP (\u00a0) 20074 https://bugs.webkit.org/show_bug.cgi?id=25490 20075 20076 * runtime/JSGlobalObjectFunctions.cpp: 20077 (JSC::parseIntOverflow): Added a version that works on UChar. 20078 * runtime/JSGlobalObjectFunctions.h: Ditto. 20079 20080 * runtime/UString.cpp: 20081 (JSC::isInfinity): Added helper functions. 20082 (JSC::UString::toDouble): Use isStrWhiteSpace instead of 20083 isSASCIISpace to define what we should skip. Got rid of the 20084 code that used CString and UTF8String, instead processing the 20085 UChar of the string directly, except for when we call strtod. 20086 For strtod, use our own home-grown conversion function that 20087 does not try to do any UTF-16 processing. Tidied up the logic 20088 a bit as well. 20089 20090 2010-07-12 Martin Robinson <mrobinson (a] igalia.com> 20091 20092 Reviewed by Xan Lopez. 20093 20094 [GTK] make dist is broken because of missing headers and other miscellaneous reasons 20095 https://bugs.webkit.org/show_bug.cgi?id=42107 20096 20097 * GNUmakefile.am: Add missing header to the sources list. 20098 20099 2010-07-12 Adam Roben <aroben (a] apple.com> 20100 20101 Stop generating stripped symbols for Release builds 20102 20103 It turns out we can strip the symbols after-the-fact using PDBCopy. 20104 20105 Fixes <http://webkit.org/b/42085>. 20106 20107 Reviewed by Steve Falkenburg. 20108 20109 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreCommon.vsprops: 20110 Removed the pre-link event, which just created the public\sym 20111 directory. 20112 20113 2010-07-12 Anders Carlsson <andersca (a] apple.com> 20114 20115 Reviewed by Dan Bernstein. 20116 20117 Add WARN_UNUSED_RETURN to the smart pointer "leak" member functions 20118 https://bugs.webkit.org/show_bug.cgi?id=42086 20119 20120 * wtf/OwnPtr.h: 20121 * wtf/PassOwnPtr.h: 20122 * wtf/PassRefPtr.h: 20123 (WTF::PassRefPtr::releaseRef): 20124 (WTF::NonNullPassRefPtr::leakRef): 20125 (WTF::NonNullPassRefPtr::releaseRef): 20126 * wtf/RetainPtr.h: 20127 (WTF::RetainPtr::releaseRef): 20128 20129 2010-07-10 Oliver Hunt <oliver (a] apple.com> 20130 20131 Reviewed by Maciej Stachowiak. 20132 20133 HAVE_COMPUTED_GOTO is dependent on the interpreter being enabled 20134 https://bugs.webkit.org/show_bug.cgi?id=42039 20135 20136 Separate the existence of computed goto support in the compiler 20137 from whether or not we are using the interpreter. All the current 20138 HAVE(COMPUTED_GOTO) guards are for the interpreter, but I'd like 20139 the option of using it elsewhere. The interpreter now uses 20140 ENABLE(COMPUTED_GOTO_INTERPRETER) 20141 20142 * bytecode/Instruction.h: 20143 (JSC::Instruction::Instruction): 20144 * bytecode/Opcode.h: 20145 * interpreter/Interpreter.cpp: 20146 (JSC::Interpreter::Interpreter): 20147 (JSC::Interpreter::isOpcode): 20148 (JSC::Interpreter::privateExecute): 20149 * interpreter/Interpreter.h: 20150 (JSC::Interpreter::getOpcode): 20151 (JSC::Interpreter::getOpcodeID): 20152 * wtf/Platform.h: 20153 20154 2010-07-10 Oliver Hunt <oliver (a] apple.com> 20155 20156 Reviewed by Gavin Barraclough. 20157 20158 Remove switches from inner expression loops in the parser 20159 https://bugs.webkit.org/show_bug.cgi?id=42035 20160 20161 Use bitmasks and flags on the token types to identify unary and 20162 binary operators, rather than switching on the token type to 20163 identify them. 20164 20165 * parser/JSParser.cpp: 20166 (JSC::isUnaryOp): 20167 (JSC::JSParser::isBinaryOperator): 20168 * parser/JSParser.h: 20169 (JSC::): 20170 20171 2010-07-09 Leon Clarke <leonclarke (a] google.com> 20172 20173 Reviewed by Adam Barth. 20174 20175 add support for link prefetching 20176 https://bugs.webkit.org/show_bug.cgi?id=3652 20177 20178 * Configurations/FeatureDefines.xcconfig: 20179 20180 2010-07-09 Oliver Hunt <oliver (a] apple.com> 20181 20182 Reviewed by Darin Adler. 20183 20184 Tidy up lexer token ids 20185 https://bugs.webkit.org/show_bug.cgi?id=42014 20186 20187 Stop using character literals to identify single character tokens 20188 and instead use symbolic names for all tokens. 20189 20190 * parser/ASTBuilder.h: 20191 (JSC::ASTBuilder::makeBinaryNode): 20192 * parser/JSParser.cpp: 20193 (JSC::JSParser::consume): 20194 (JSC::JSParser::match): 20195 (JSC::JSParser::autoSemiColon): 20196 (JSC::JSParser::JSParser): 20197 (JSC::JSParser::parseProgram): 20198 (JSC::JSParser::allowAutomaticSemicolon): 20199 (JSC::JSParser::parseDoWhileStatement): 20200 (JSC::JSParser::parseWhileStatement): 20201 (JSC::JSParser::parseVarDeclarationList): 20202 (JSC::JSParser::parseConstDeclarationList): 20203 (JSC::JSParser::parseForStatement): 20204 (JSC::JSParser::parseReturnStatement): 20205 (JSC::JSParser::parseWithStatement): 20206 (JSC::JSParser::parseSwitchStatement): 20207 (JSC::JSParser::parseSwitchClauses): 20208 (JSC::JSParser::parseSwitchDefaultClause): 20209 (JSC::JSParser::parseTryStatement): 20210 (JSC::JSParser::parseDebuggerStatement): 20211 (JSC::JSParser::parseStatement): 20212 (JSC::JSParser::parseFormalParameters): 20213 (JSC::JSParser::parseFunctionInfo): 20214 (JSC::JSParser::parseExpressionOrLabelStatement): 20215 (JSC::JSParser::parseIfStatement): 20216 (JSC::JSParser::parseExpression): 20217 (JSC::JSParser::parseAssignmentExpression): 20218 (JSC::JSParser::parseConditionalExpression): 20219 (JSC::isUnaryOp): 20220 (JSC::JSParser::isBinaryOperator): 20221 (JSC::JSParser::parseBinaryExpression): 20222 (JSC::JSParser::parseProperty): 20223 (JSC::JSParser::parseObjectLiteral): 20224 (JSC::JSParser::parseStrictObjectLiteral): 20225 (JSC::JSParser::parseArrayLiteral): 20226 (JSC::JSParser::parsePrimaryExpression): 20227 (JSC::JSParser::parseArguments): 20228 (JSC::JSParser::parseMemberExpression): 20229 (JSC::JSParser::parseUnaryExpression): 20230 * parser/JSParser.h: 20231 (JSC::): 20232 * parser/Lexer.cpp: 20233 (JSC::): 20234 (JSC::Lexer::lex): 20235 * parser/Lexer.h: 20236 20237 2010-07-09 Gavin Barraclough <barraclough (a] apple.com> 20238 20239 Reviewed by Oliver Hunt. 20240 20241 Bug 42015 - Enable JSValue32_64 on ARMv7 20242 20243 * Configurations/JavaScriptCore.xcconfig: 20244 * jit/JIT.h: 20245 * jit/JITStubs.cpp: 20246 * wtf/Platform.h: 20247 20248 2010-07-09 Kenneth Russell <kbr (a] google.com> 20249 20250 Reviewed by Dimitri Glazkov. 20251 20252 Assertion failure in String::utf8() for certain invalid UTF16 inputs 20253 https://bugs.webkit.org/show_bug.cgi?id=41983 20254 20255 * wtf/text/WTFString.cpp: 20256 (WebCore::String::utf8): 20257 - Fixed assertion when sourceExhausted is returned from convertUTF16ToUTF8. 20258 20259 2010-07-09 Oliver Hunt <oliver (a] apple.com> 20260 20261 Reviewed by Geoffrey Garen. 20262 20263 Remove a couple of excess writes from the lexer 20264 https://bugs.webkit.org/show_bug.cgi?id=41981 20265 20266 Remove a couple of fields from JSTokenInfo, and rename the remaining ones 20267 to something more accurate 20268 20269 * parser/JSParser.cpp: 20270 (JSC::JSParser::next): 20271 (JSC::JSParser::tokenStart): 20272 (JSC::JSParser::tokenLine): 20273 (JSC::JSParser::tokenEnd): 20274 * parser/JSParser.h: 20275 (JSC::JSTokenInfo::JSTokenInfo): 20276 * parser/Lexer.cpp: 20277 (JSC::Lexer::lex): 20278 20279 2010-07-08 Oliver Hunt <oliver (a] apple.com> 20280 20281 Reviewed by Sam Weinig. 20282 20283 Property declarations in an object literal should not consider the prototype chain when being added to the new object 20284 https://bugs.webkit.org/show_bug.cgi?id=41929 20285 20286 To fix this all we need to do is ensure that all new properties are 20287 added with putDirect rather than a fully generic call to put. This 20288 is safe as an object literal is by definition going to produce a 20289 completely normal object. 20290 20291 Rather than duplicating all the put_by_id logic we add an additional 20292 flag to op_put_by_id to indicate it should be using putDirect. In 20293 the interpreter this adds a runtime branch, but in the jit this is 20294 essentially free as the branch is taken at compile time. This does 20295 actually improve object literal creation time even in the interpreter 20296 as we no longer need to walk the prototype chain to verify that the 20297 cached put is safe. 20298 20299 We still emit normal put_by_id code when emitting __proto__ as we want 20300 to get the correct handling for changing the prototype. 20301 20302 Sunspider claims this is a 0.7% speedup which is conceivably real due 20303 to the performance improvement in object literals, but I suspect its 20304 really just the result of code motion. 20305 20306 * bytecode/Opcode.h: 20307 * bytecompiler/BytecodeGenerator.cpp: 20308 (JSC::BytecodeGenerator::emitPutById): 20309 (JSC::BytecodeGenerator::emitDirectPutById): 20310 * bytecompiler/BytecodeGenerator.h: 20311 * bytecompiler/NodesCodegen.cpp: 20312 (JSC::PropertyListNode::emitBytecode): 20313 * interpreter/Interpreter.cpp: 20314 (JSC::Interpreter::privateExecute): 20315 * jit/JIT.h: 20316 (JSC::JIT::compilePutByIdTransition): 20317 * jit/JITPropertyAccess.cpp: 20318 (JSC::JIT::emit_op_put_by_id): 20319 (JSC::JIT::emitSlow_op_put_by_id): 20320 (JSC::JIT::privateCompilePutByIdTransition): 20321 (JSC::JIT::patchPutByIdReplace): 20322 * jit/JITPropertyAccess32_64.cpp: 20323 (JSC::JIT::emitSlow_op_put_by_id): 20324 (JSC::JIT::privateCompilePutByIdTransition): 20325 (JSC::JIT::patchPutByIdReplace): 20326 * jit/JITStubs.cpp: 20327 (JSC::JITThunks::tryCachePutByID): 20328 (JSC::DEFINE_STUB_FUNCTION): 20329 * jit/JITStubs.h: 20330 (JSC::): 20331 * runtime/JSGlobalData.cpp: 20332 (JSC::JSGlobalData::JSGlobalData): 20333 * runtime/JSObject.h: 20334 (JSC::JSObject::putDirect): 20335 (JSC::JSValue::putDirect): 20336 * runtime/JSValue.h: 20337 20338 2010-07-08 Gavin Barraclough <barraclough (a] apple.com> 20339 20340 Reviewed by Sam Weinig. 20341 20342 String.prototype methods should CheckObjectCoercible (test this is not null or undefined). 20343 20344 * runtime/StringPrototype.cpp: 20345 (JSC::stringProtoFuncCharAt): 20346 (JSC::stringProtoFuncCharCodeAt): 20347 (JSC::stringProtoFuncConcat): 20348 (JSC::stringProtoFuncIndexOf): 20349 (JSC::stringProtoFuncLastIndexOf): 20350 (JSC::stringProtoFuncMatch): 20351 (JSC::stringProtoFuncSearch): 20352 (JSC::stringProtoFuncSlice): 20353 (JSC::stringProtoFuncSplit): 20354 (JSC::stringProtoFuncSubstr): 20355 (JSC::stringProtoFuncSubstring): 20356 (JSC::stringProtoFuncToLowerCase): 20357 (JSC::stringProtoFuncToUpperCase): 20358 (JSC::stringProtoFuncLocaleCompare): 20359 (JSC::trimString): 20360 20361 2010-07-08 Gavin Barraclough <barraclough (a] apple.com> 20362 20363 Reviewed by Sam Weinig. 20364 20365 Date.prototype.toJSON takes one argument, report this correctly. 20366 20367 * runtime/DatePrototype.cpp: 20368 20369 2010-07-08 Gavin Barraclough <barraclough (a] apple.com> 20370 20371 Reviewed by Sam Weinig. 20372 20373 RegExp's prototype should be an object of type RegExp. 20374 20375 * runtime/RegExpPrototype.cpp: 20376 (JSC::RegExpPrototype::RegExpPrototype): 20377 * runtime/RegExpPrototype.h: 20378 20379 2010-07-08 Oliver Hunt <oliver (a] apple.com> 20380 20381 Reviewed by Gavin Barraclough. 20382 20383 JavaScript parser violates ECMA automatic semicolon insertion rule 20384 https://bugs.webkit.org/show_bug.cgi?id=41844 20385 20386 Remove (very) old and bogus logic that automatically inserted a semicolon 20387 at the end of a script's source. 20388 20389 * parser/Lexer.cpp: 20390 (JSC::Lexer::lex): 20391 20392 2010-07-08 Oliver Hunt <oliver (a] apple.com> 20393 20394 Reviewed by Anders Carlson. 20395 20396 Tidy up the lexer 20397 20398 Remove some of the old yacc/lex-isms still present in the lexer 20399 20400 * parser/JSParser.h: 20401 (JSC::): 20402 * parser/Lexer.cpp: 20403 (JSC::Lexer::parseString): 20404 (JSC::Lexer::lex): 20405 * parser/Lexer.h: 20406 20407 2010-07-08 Oliver Hunt <oliver (a] apple.com> 20408 20409 Reviewed by Gavin Barraclough. 20410 20411 Make object-literal parsing conformant with the spec. 20412 https://bugs.webkit.org/show_bug.cgi?id=41892 20413 20414 Bring our parsing of object literals into conformance with the ES5 spec. 20415 Basically disallow conflicting accessor vs. normal property definitions 20416 The bulk of this patch is just fiddling to maintain performance. 20417 20418 * parser/ASTBuilder.h: 20419 (JSC::ASTBuilder::createGetterOrSetterProperty): 20420 (JSC::ASTBuilder::createProperty): 20421 (JSC::ASTBuilder::getName): 20422 (JSC::ASTBuilder::getType): 20423 * parser/JSParser.cpp: 20424 (JSC::jsParse): 20425 (JSC::JSParser::JSParser): 20426 (JSC::JSParser::parseProperty): 20427 (JSC::JSParser::parseObjectLiteral): 20428 (JSC::JSParser::parseStrictObjectLiteral): 20429 * parser/JSParser.h: 20430 * parser/Lexer.cpp: 20431 (JSC::Lexer::clear): 20432 * parser/Lexer.h: 20433 (JSC::Lexer::currentOffset): 20434 (JSC::Lexer::setOffset): 20435 Add logic to allow us to roll the lexer back in the input stream. 20436 * parser/Nodes.h: 20437 (JSC::PropertyNode::): 20438 (JSC::PropertyNode::type): 20439 * parser/Parser.cpp: 20440 (JSC::Parser::parse): 20441 * parser/SourceProvider.h: 20442 (JSC::SourceProvider::SourceProvider): 20443 (JSC::SourceProvider::isValid): 20444 (JSC::SourceProvider::setValid): 20445 SourceProvider now records whether the input text 20446 has already been validated. 20447 * parser/SyntaxChecker.h: 20448 (JSC::SyntaxChecker::SyntaxChecker): 20449 (JSC::SyntaxChecker::Property::Property): 20450 (JSC::SyntaxChecker::Property::operator!): 20451 (JSC::SyntaxChecker::createProperty): 20452 (JSC::SyntaxChecker::createPropertyList): 20453 (JSC::SyntaxChecker::createGetterOrSetterProperty): 20454 The SyntaxChecker mode now needs to maintain a bit more information 20455 to ensure that we can validate object literals correctly. 20456 20457 2010-07-08 Darin Adler <darin (a] apple.com> 20458 20459 * runtime/JSGlobalData.cpp: 20460 (JSC::JSGlobalData::sharedInstance): Fix typo. 20461 20462 2010-07-08 Darin Adler <darin (a] apple.com> 20463 20464 Reviewed by Oliver Hunt. 20465 20466 Fix assertion seen on the Leopard buildbot. 20467 The single shared instance of JSGlobalData was not being 20468 adopted after creation. 20469 20470 * runtime/JSGlobalData.cpp: 20471 (JSC::JSGlobalData::sharedInstance): Do adoptRef and then leakRef. 20472 20473 2010-07-08 Gavin Barraclough <barraclough (a] apple.com> 20474 20475 Reviewed by Sam Weinig. 20476 20477 BOMs are whitespace. 20478 20479 * runtime/JSGlobalObjectFunctions.cpp: 20480 (JSC::isStrWhiteSpace): 20481 20482 2010-07-08 Martin Robinson <mrobinson (a] igalia.com> 20483 20484 Unreviewed. 20485 20486 Try fix the GTK+ build by touching this file. 20487 20488 * jit/ExecutableAllocatorFixedVMPool.cpp: 20489 20490 2010-07-08 Gavin Barraclough <barraclough (a] apple.com> 20491 20492 GTK build fix take two. 20493 20494 * GNUmakefile.am: 20495 20496 2010-07-08 Gavin Barraclough <barraclough (a] apple.com> 20497 20498 GTK build fix. 20499 20500 * GNUmakefile.am: 20501 20502 2010-07-08 Gavin Barraclough <barraclough (a] apple.com> 20503 20504 Reviewed by Sam Weinig. 20505 20506 https://bugs.webkit.org/show_bug.cgi?id=41641 20507 20508 Update compile flags to allow use of ExecutableAllocatorFixedVMPool on platforms 20509 other than x86-64 (this may be useful on 32-bit platforms, too). 20510 20511 Simplify ifdefs by dividing into thwo broad allocation strategies 20512 (ENABLE_EXECUTABLE_ALLOCATOR_FIXED & ENABLE_EXECUTABLE_ALLOCATOR_DEMAND). 20513 20514 Rename constant used in the code to have names descriptive of their purpose, 20515 rather than their specific value on a given platform. 20516 20517 * jit/ExecutableAllocator.cpp: 20518 (JSC::ExecutableAllocator::reprotectRegion): 20519 (JSC::ExecutableAllocator::cacheFlush): 20520 * jit/ExecutableAllocatorFixedVMPool.cpp: 20521 (JSC::FixedVMPoolAllocator::FixedVMPoolAllocator): 20522 (JSC::FixedVMPoolAllocator::free): 20523 (JSC::ExecutablePool::systemAlloc): 20524 * jit/ExecutableAllocatorPosix.cpp: 20525 * jit/ExecutableAllocatorSymbian.cpp: 20526 * jit/ExecutableAllocatorWin.cpp: 20527 * wtf/Platform.h: 20528 20529 2010-07-08 Xan Lopez <xlopez (a] igalia.com> 20530 20531 Reviewed by Gustavo Noronha. 20532 20533 Silence a few noisy build rules. 20534 20535 * GNUmakefile.am: 20536 20537 2010-07-08 Sheriff Bot <webkit.review.bot (a] gmail.com> 20538 20539 Unreviewed, rolling out r62765. 20540 http://trac.webkit.org/changeset/62765 20541 https://bugs.webkit.org/show_bug.cgi?id=41840 20542 20543 All jscore and layout tests crash on Qt bot (Requested by Ossy 20544 on #webkit). 20545 20546 * wtf/FastMalloc.cpp: 20547 (WTF::TCMalloc_PageHeap::initializeScavenger): 20548 (WTF::TCMalloc_PageHeap::signalScavenger): 20549 (WTF::TCMalloc_PageHeap::scavengerThread): 20550 20551 2010-07-08 Andreas Kling <andreas.kling (a] nokia.com> 20552 20553 Reviewed by Oliver Hunt. 20554 20555 Interpreter: Crash in op_load_varargs on 64-bit 20556 https://bugs.webkit.org/show_bug.cgi?id=41795 20557 20558 Added missing cast of argCount to int32_t in op_load_varargs. 20559 20560 * interpreter/Interpreter.cpp: 20561 (JSC::Interpreter::privateExecute): 20562 20563 2010-07-08 Patrick Gansterer <paroga (a] paroga.com> 20564 20565 Reviewed by Geoffrey Garen. 20566 20567 Make FastMalloc more portable. 20568 https://bugs.webkit.org/show_bug.cgi?id=41790 20569 20570 Use WTF::Mutex instead of pthread_mutex_t and 20571 replace pthread_cond_t with WTF::ThreadCondition. 20572 20573 * wtf/FastMalloc.cpp: 20574 (WTF::TCMalloc_PageHeap::initializeScavenger): 20575 (WTF::TCMalloc_PageHeap::signalScavenger): 20576 (WTF::TCMalloc_PageHeap::scavengerThread): 20577 20578 2010-07-08 Patrick Gansterer <paroga (a] paroga.com> 20579 20580 Reviewed by Darin Adler. 20581 20582 Remove needless #include <fcntl.h> from TCSystemAlloc.cpp. 20583 https://bugs.webkit.org/show_bug.cgi?id=41777 20584 20585 * wtf/TCSystemAlloc.cpp: 20586 20587 2010-07-07 Darin Adler <darin (a] apple.com> 20588 20589 Fixed build in configurations like PowerPC. 20590 20591 * runtime/RegExpConstructor.cpp: Added include of PassOwnPtr.h. 20592 * runtime/RegExpObject.cpp: Ditto. 20593 * wtf/SizeLimits.cpp: Changed compile time assertion to work 20594 even on platforms where two bool members do not end up taking 20595 the same size as one int member! 20596 20597 2010-07-07 Oliver Hunt <oliver (a] apple.com> 20598 20599 Reviewed by Geoffrey Garen. 20600 20601 Lazy mode of parser allows invalid syntax in object literals. 20602 https://bugs.webkit.org/show_bug.cgi?id=41809 20603 20604 Make the parser itself validate getter and setter syntax rather 20605 than offloading it to the AST builder. 20606 20607 * parser/ASTBuilder.h: 20608 (JSC::ASTBuilder::createGetterOrSetterProperty): 20609 * parser/JSParser.cpp: 20610 (JSC::JSParser::parseProperty): 20611 20612 2010-07-07 Dumitru Daniliuc <dumi (a] chromium.org> 20613 20614 Reviewed by Adam Roben. 20615 20616 Revert r62689. 20617 https://bugs.webkit.org/show_bug.cgi?id=41804 20618 20619 * runtime/Collector.cpp: 20620 (JSC::Heap::freeBlocks): 20621 20622 2010-07-07 Adam Barth <abarth (a] webkit.org> 20623 20624 Reviewed by Sam Weinig. 20625 20626 Add reverseFind to Vector and deploy in HTML5 parser 20627 https://bugs.webkit.org/show_bug.cgi?id=41778 20628 20629 This method seems generally useful. I'm slightly surprised we don't 20630 have it already. 20631 20632 * wtf/Vector.h: 20633 (WTF::::reverseFind): 20634 20635 2010-07-07 Darin Adler <darin (a] apple.com> 20636 20637 Reviewed by Adam Barth. 20638 20639 Turn on adoptRef assertion for RefCounted 20640 https://bugs.webkit.org/show_bug.cgi?id=41547 20641 20642 * wtf/CrossThreadRefCounted.h: Fixed include style. Includes of other 20643 WTF headers should use "" includes; consistent in most WTF headers. 20644 Added a call to relaxAdoptionRequirement. 20645 20646 * wtf/RefCounted.h: Fixed include style. Removed LOOSE_REF_COUNTED. 20647 Added relaxAdoptionRequirement. 20648 20649 2010-07-07 Anders Carlsson <andersca (a] apple.com> 20650 20651 Try to fix the Windows build. 20652 20653 * runtime/Collector.cpp: 20654 (JSC::Heap::freeBlocks): 20655 20656 2010-07-07 Darin Adler <darin (a] apple.com> 20657 20658 Reviewed by Adam Barth. 20659 20660 More OwnPtr work 20661 https://bugs.webkit.org/show_bug.cgi?id=41727 20662 20663 * API/JSCallbackObject.h: 20664 (JSC::JSCallbackObjectData::setPrivateProperty): Use adoptPtr. 20665 * API/JSCallbackObjectFunctions.h: 20666 (JSC::JSCallbackObject::JSCallbackObject): Ditto. 20667 * bytecode/CodeBlock.cpp: 20668 (JSC::CodeBlock::CodeBlock): Ditto. 20669 * bytecode/CodeBlock.h: 20670 (JSC::CodeBlock::createRareDataIfNecessary): Ditto. 20671 * parser/Nodes.cpp: 20672 (JSC::ScopeNode::ScopeNode): Ditto. 20673 * parser/ParserArena.cpp: 20674 (JSC::ParserArena::ParserArena): Ditto. 20675 * runtime/Arguments.h: 20676 (JSC::Arguments::Arguments): Ditto. 20677 * runtime/Executable.cpp: 20678 (JSC::EvalExecutable::compile): Ditto. 20679 (JSC::ProgramExecutable::compile): Ditto. 20680 (JSC::FunctionExecutable::compileForCall): Ditto. 20681 (JSC::FunctionExecutable::compileForConstruct): Ditto. 20682 (JSC::FunctionExecutable::reparseExceptionInfo): Ditto. 20683 (JSC::EvalExecutable::reparseExceptionInfo): Ditto. 20684 * runtime/JSArray.cpp: 20685 (JSC::JSArray::sort): Ditto. 20686 * runtime/RegExpConstructor.cpp: 20687 (JSC::RegExpConstructor::RegExpConstructor): Ditto. 20688 * runtime/RegExpObject.cpp: 20689 (JSC::RegExpObject::RegExpObject): Ditto. 20690 * runtime/SmallStrings.cpp: 20691 (JSC::SmallStrings::createSingleCharacterString): Ditto. 20692 (JSC::SmallStrings::singleCharacterStringRep): Ditto. 20693 20694 * wtf/unicode/icu/CollatorICU.cpp: 20695 (WTF::Collator::userDefault): Use adoptPtr. 20696 * yarr/RegexInterpreter.cpp: 20697 (JSC::Yarr::ByteCompiler::ByteCompiler): Ditto. 20698 (JSC::Yarr::ByteCompiler::compile): Ditto. 20699 (JSC::Yarr::ByteCompiler::regexBegin): Ditto. 20700 (JSC::Yarr::byteCompileRegex): Ditto. 20701 * yarr/RegexInterpreter.h: 20702 (JSC::Yarr::BytecodePattern::BytecodePattern): Ditto. 20703 20704 2010-07-07 Darin Adler <darin (a] apple.com> 20705 20706 Reviewed by Adam Barth. 20707 20708 Make clear set the pointer to 0 before deletion 20709 https://bugs.webkit.org/show_bug.cgi?id=41727 20710 20711 * wtf/OwnArrayPtr.h: Changed code so we always set the pointer to its new 20712 value before deleting the old one, including in the set function and the 20713 clear function. This required changing safeDelete. 20714 * wtf/OwnPtr.h: Ditto. Also removed some extra null checks. 20715 * wtf/PassOwnPtr.h: Ditto. 20716 20717 * wtf/PassRefPtr.h: Changed code so we always set the pointer to its new 20718 value before deref'ing the old one in the clear function. Also added a 20719 leakRef function for NonNullPassRefPtr. 20720 * wtf/RefPtr.h: Ditto. 20721 20722 * wtf/gobject/GOwnPtr.h: More of the same. 20723 * wtf/gobject/GRefPtr.h: Ditto. 20724 20725 2010-07-07 Zoltan Herczeg <zherczeg (a] webkit.org> 20726 20727 Reviewed by Oliver Hunt. 20728 20729 Refactored string parsing inside the lexer 20730 https://bugs.webkit.org/show_bug.cgi?id=41606 20731 20732 Does not use goto. Although the last sunspider 20733 parse-only tests yields 1.044x speedup, I think the 20734 patch can have a slight improvement at most. 20735 20736 * parser/Lexer.cpp: 20737 (JSC::singleEscape): 20738 (JSC::Lexer::parseString): 20739 (JSC::Lexer::lex): 20740 * parser/Lexer.h: 20741 20742 2010-07-06 Oliver Hunt <oliver (a] apple.com> 20743 20744 Reviewed by Maciej Stachowiak. 20745 20746 Make it possible to have both the JIT and Interpreter available in a single build 20747 https://bugs.webkit.org/show_bug.cgi?id=41722 20748 20749 Separate the concept of !ENABLE(JIT) and ENABLE(INTERPRETER) and make it possible 20750 to have both JIT and INTERPRETER enabled at the same time. This doesn't add 20751 support for mix mode execution, but it does allow a single build to contain all 20752 the code needed to use either the interpreter or the jit. 20753 20754 If both ENABLE(INTERPRETER) and ENABLE(JIT) are true then setting the environment 20755 variable JSC_FORCE_INTERPRETER will force JSC to use the interpreter. 20756 20757 This patch basically consists of replacing !ENABLE(JIT) with ENABLE(INTERPRETER), 20758 or converting #if ENABLE(JIT) ... #else ... into #if ENABLE(JIT) ... #endif 20759 #if ENABLE(INTERPRETER), etc. There are also a few functions that need to be 20760 renamed to resolve return type ambiguity. 20761 20762 * bytecode/CodeBlock.cpp: 20763 (JSC::CodeBlock::~CodeBlock): 20764 (JSC::CodeBlock::shrinkToFit): 20765 * bytecode/CodeBlock.h: 20766 * interpreter/CallFrame.h: 20767 (JSC::ExecState::returnVPC): 20768 * interpreter/Interpreter.cpp: 20769 (JSC::Interpreter::unwindCallFrame): 20770 (JSC::Interpreter::throwException): 20771 (JSC::Interpreter::execute): 20772 (JSC::Interpreter::executeCall): 20773 (JSC::Interpreter::executeConstruct): 20774 (JSC::Interpreter::prepareForRepeatCall): 20775 (JSC::Interpreter::privateExecute): 20776 (JSC::Interpreter::retrieveLastCaller): 20777 * interpreter/Interpreter.h: 20778 * runtime/ArrayPrototype.cpp: 20779 (JSC::isNumericCompareFunction): 20780 * runtime/Executable.cpp: 20781 (JSC::EvalExecutable::generateJITCode): 20782 (JSC::ProgramExecutable::generateJITCode): 20783 (JSC::FunctionExecutable::generateJITCodeForCall): 20784 (JSC::FunctionExecutable::generateJITCodeForConstruct): 20785 (JSC::FunctionExecutable::reparseExceptionInfo): 20786 (JSC::EvalExecutable::reparseExceptionInfo): 20787 * runtime/JSFunction.cpp: 20788 * runtime/JSGlobalData.cpp: 20789 (JSC::JSGlobalData::JSGlobalData): 20790 * runtime/JSGlobalData.h: 20791 (JSC::JSGlobalData::canUseJIT): 20792 * wtf/Platform.h: 20793 20794 2010-07-06 Darin Adler <darin (a] apple.com> 20795 20796 Reviewed by Adam Barth. 20797 20798 Add adoptPtr and leakPtr functions for OwnPtr and PassOwnPtr 20799 https://bugs.webkit.org/show_bug.cgi?id=41320 20800 20801 * bytecode/CodeBlock.cpp: 20802 (JSC::CodeBlock::reparseForExceptionInfoIfNecessary): Use assignment 20803 instead of set since the result of reparseExceptionInfo is now a 20804 PassOwnPtr. 20805 20806 * bytecode/CodeBlock.h: Change extractExceptionInfo to return a 20807 PassOwnPtr instead of a raw pointer. 20808 20809 * runtime/Executable.cpp: 20810 (JSC::FunctionExecutable::reparseExceptionInfo): Return a PassOwnPtr. 20811 (JSC::EvalExecutable::reparseExceptionInfo): Ditto. 20812 (JSC::ProgramExecutable::reparseExceptionInfo): Added. This was 20813 in the header before, but it's better to not have it there to reduce 20814 header dependencies. Return a PassOwnPtr. 20815 20816 * runtime/Executable.h: Made reparseExceptionInfo return a PassOwnPtr, 20817 and put it in the private sections of classes other than the base class. 20818 20819 * wtf/MessageQueue.h: 20820 (WTF::MessageQueue::append): Use leakPtr instead of release. 20821 (WTF::MessageQueue::appendAndCheckEmpty): Ditto. 20822 (WTF::MessageQueue::prepend): Ditto. 20823 20824 * wtf/OwnPtr.h: Tweaked formatting. Changed the release function to return 20825 a PassOwnPtr rather than a raw pointer. Added a leakPtr function that 20826 returns a raw pointer. Put the constructor that takes a raw pointer and 20827 the set function into a section guarded by LOOSE_OWN_PTR. Adapted to the 20828 new adoptPtr function from PassOwnPtr.h. 20829 20830 * wtf/PassOwnPtr.h: Tweaked formatting. Renamed the release function 20831 to leakPtr. Added an adoptPtr function that creates a new PassOwnPtr. 20832 Put the constructor and assignment operators that take a raw pointer 20833 into a section guarded by LOOSE_PASS_OWN_PTR. 20834 20835 2010-07-06 Sam Weinig <sam (a] webkit.org> 20836 20837 Reviewed by Darin Adler 20838 20839 Update comment in StringExtras.h to be more accurate. 20840 20841 * wtf/StringExtras.h: 20842 20843 2010-07-06 Sheriff Bot <webkit.review.bot (a] gmail.com> 20844 20845 Unreviewed, rolling out r62511. 20846 http://trac.webkit.org/changeset/62511 20847 https://bugs.webkit.org/show_bug.cgi?id=41686 20848 20849 Breaks Linux/64bit compilation (Requested by xan_ on #webkit). 20850 20851 * jit/ExecutableAllocator.cpp: 20852 * jit/ExecutableAllocatorFixedVMPool.cpp: 20853 (JSC::FixedVMPoolAllocator::FixedVMPoolAllocator): 20854 (JSC::FixedVMPoolAllocator::free): 20855 (JSC::ExecutablePool::systemAlloc): 20856 * jit/ExecutableAllocatorPosix.cpp: 20857 (JSC::ExecutableAllocator::reprotectRegion): 20858 (JSC::ExecutableAllocator::cacheFlush): 20859 * jit/ExecutableAllocatorSymbian.cpp: 20860 * jit/ExecutableAllocatorWin.cpp: 20861 * wtf/Platform.h: 20862 20863 2010-07-05 Gavin Barraclough <barraclough (a] apple.com> 20864 20865 Reviewed by Sam Weinig. 20866 20867 https://bugs.webkit.org/show_bug.cgi?id=41641 20868 20869 Update compile flags to allow use of ExecutableAllocatorFixedVMPool on platforms 20870 other than x86-64 (this may be useful on 32-bit platforms, too). 20871 20872 Simplify ifdefs by dividing into thwo broad allocation strategies 20873 (ENABLE_EXECUTABLE_ALLOCATOR_FIXED & ENABLE_EXECUTABLE_ALLOCATOR_DEMAND). 20874 20875 Rename constant used in the code to have names descriptive of their purpose, 20876 rather than their specific value on a given platform. 20877 20878 * jit/ExecutableAllocator.cpp: 20879 (JSC::ExecutableAllocator::reprotectRegion): 20880 (JSC::ExecutableAllocator::cacheFlush): 20881 * jit/ExecutableAllocatorFixedVMPool.cpp: 20882 (JSC::FixedVMPoolAllocator::FixedVMPoolAllocator): 20883 (JSC::FixedVMPoolAllocator::free): 20884 (JSC::ExecutablePool::systemAlloc): 20885 * jit/ExecutableAllocatorPosix.cpp: 20886 * jit/ExecutableAllocatorSymbian.cpp: 20887 * jit/ExecutableAllocatorWin.cpp: 20888 * wtf/Platform.h: 20889 20890 2010-07-05 Steve Block <steveblock (a] google.com> 20891 20892 Reviewed by Darin Adler. 20893 20894 ThreadingPthreads.cpp should use JNIUtility.h on Android, not outdated jni_utility.h 20895 https://bugs.webkit.org/show_bug.cgi?id=41594 20896 20897 * wtf/ThreadingPthreads.cpp: 20898 20899 2010-07-04 Mark Rowe <mrowe (a] apple.com> 20900 20901 Build fix after r62456. 20902 20903 * interpreter/Interpreter.cpp: 20904 (JSC::Interpreter::privateExecute): Be slightly more consistent in using uint32_t to prevent 20905 warnings about comparisons between signed and unsigned types, and attempts to call an overload 20906 of std::min that doesn't exist. 20907 20908 2010-07-02 Sam Weinig <sam (a] webkit.org> 20909 20910 Reviewed by Darin Adler. 20911 20912 Patch for https://bugs.webkit.org/show_bug.cgi?id=41553 20913 Make StringExtras.h versions of snprintf and vsnprintf match the unix versions. 20914 20915 - MSVC does not ensure the buffers are null terminated as the unix versions do. 20916 20917 * runtime/JSGlobalObjectFunctions.cpp: Cleanup includes. 20918 * runtime/UString.cpp: Clean up includes. 20919 (JSC::UString::from): Don't pass sizeof(buf) - 1, that is wrong. 20920 * wtf/StringExtras.h: 20921 (snprintf): Ensure null termination of buffer. 20922 (vsnprintf): Ditto. 20923 20924 2010-07-03 Yong Li <yoli (a] rim.com> 20925 20926 Reviewed by Darin Adler. 20927 20928 Make Arguments::MaxArguments clamping work for numbers >= 0x80000000 in 20929 the interpreter as well as the JIT. 20930 20931 https://bugs.webkit.org/show_bug.cgi?id=41351 20932 rdar://problem/8142141 20933 20934 * interpreter/Interpreter.cpp: 20935 (JSC::Interpreter::privateExecute): Fix signed integer overflow problem 20936 in op_load_varargs handling. 0xFFFFFFFF was read as -1. 20937 20938 2010-06-26 Jeremy Orlow <jorlow (a] chromium.org> 20939 20940 Reviewed by Dumitru Daniliuc. 20941 20942 Support for keys and in-memory storage for IndexedDB 20943 https://bugs.webkit.org/show_bug.cgi?id=41252 20944 20945 Set the role to Private. 20946 20947 * JavaScriptCore.xcodeproj/project.pbxproj: 20948 20949 2010-07-02 Oliver Hunt <oliver (a] apple.com> 20950 20951 Reviewed by Geoffrey Garen. 20952 20953 Move BOM handling out of the lexer and parser 20954 https://bugs.webkit.org/show_bug.cgi?id=41539 20955 20956 Doing the BOM stripping in the lexer meant that we could 20957 end up having to strip the BOMs from a source multiple times. 20958 To deal with this we now require all strings provided by 20959 a SourceProvider to already have had the BOMs stripped. 20960 This also simplifies some of the lexer logic. 20961 20962 * parser/Lexer.cpp: 20963 (JSC::Lexer::setCode): 20964 (JSC::Lexer::sourceCode): 20965 * parser/SourceProvider.h: 20966 (JSC::SourceProvider::SourceProvider): 20967 (JSC::UStringSourceProvider::create): 20968 (JSC::UStringSourceProvider::getRange): 20969 (JSC::UStringSourceProvider::UStringSourceProvider): 20970 * wtf/text/StringImpl.h: 20971 (WebCore::StringImpl::copyStringWithoutBOMs): 20972 20973 2010-07-03 Patrick Gansterer <paroga (a] paroga.com> 20974 20975 Reviewed by Kent Tamura. 20976 20977 [WINCE] Implement Unicode::isAlphanumeric and Unicode::isArabicChar. 20978 https://bugs.webkit.org/show_bug.cgi?id=41411 20979 20980 * wtf/unicode/wince/UnicodeWince.cpp: 20981 (WTF::Unicode::isAlphanumeric): 20982 * wtf/unicode/wince/UnicodeWince.h: 20983 (WTF::Unicode::isArabicChar): 20984 20985 2010-07-03 Kwang Yul Seo <skyul (a] company100.net> 20986 20987 Reviewed by Kent Tamura. 20988 20989 [BREWMP] Change the CRASH() macro to print "WebKit CRASH" log. 20990 https://bugs.webkit.org/show_bug.cgi?id=41524 20991 20992 Print "WebKit CRASH" before crashing. 20993 20994 * wtf/Assertions.h: 20995 20996 2010-07-02 Gavin Barraclough <barraclough (a] apple.com> 20997 20998 Reviewed by Oliver Hunt. 20999 21000 Bug 41565 - Repatching in ARMv7Assembler::repatchLoadPtrToLEA is broken 21001 21002 This method tried to repatch a LDR (T2) into an ADD (T3) - but it only 21003 repatches the first instruction word. The layout of the fields in the 21004 second word is different, and also needs repatching. 21005 21006 * assembler/ARMv7Assembler.h: 21007 (JSC::ARMv7Assembler::repatchLoadPtrToLEA): 21008 21009 2010-07-02 Oliver Hunt <oliver (a] apple.com> 21010 21011 Reviewed by Gavin Barraclough. 21012 21013 Clamp the number of arguments supported by function.apply 21014 https://bugs.webkit.org/show_bug.cgi?id=41351 21015 <rdar://problem/8142141> 21016 21017 Add clamping logic to function.apply similar to that 21018 enforced by firefox. We have a smaller clamp than 21019 firefox as our calling convention means that stack 21020 usage is proportional to argument count -- the firefox 21021 limit is larger than you could actually call. 21022 21023 * interpreter/Interpreter.cpp: 21024 (JSC::Interpreter::privateExecute): 21025 * jit/JITStubs.cpp: 21026 (JSC::DEFINE_STUB_FUNCTION): 21027 * runtime/Arguments.h: 21028 (JSC::Arguments::): 21029 21030 2010-07-02 Chao-ying Fu <fu (a] mips.com> 21031 21032 Reviewed by Oliver Hunt. 21033 21034 Re-enable JIT_OPTIMIZE_NATIVE_CALL on MIPS 21035 https://bugs.webkit.org/show_bug.cgi?id=40179 21036 21037 Add the MIPS part to re-enable JIT_OPTIMIZE_NATIVE_CALL. 21038 21039 * jit/JITOpcodes.cpp: 21040 (JSC::JIT::privateCompileCTINativeCall): 21041 * wtf/Platform.h: 21042 21043 2010-07-02 Gavin Barraclough <barraclough (a] apple.com> 21044 21045 Reviewed by Oliver Hunt. 21046 21047 Bug 41552 - Clean up ARMv7 vfp code generation 21048 Emit separate opcode individually, remove magic numbers. 21049 21050 Also remove invalid assert from JSImmediate (number cells are not CELL_MASK aligned). 21051 21052 * assembler/ARMv7Assembler.h: 21053 (JSC::ARMv7Assembler::): 21054 (JSC::ARMv7Assembler::vadd_F64): 21055 (JSC::ARMv7Assembler::vcmp_F64): 21056 (JSC::ARMv7Assembler::vcvt_F64_S32): 21057 (JSC::ARMv7Assembler::vcvtr_S32_F64): 21058 (JSC::ARMv7Assembler::vdiv_F64): 21059 (JSC::ARMv7Assembler::vldr): 21060 (JSC::ARMv7Assembler::vmov_F64_0): 21061 (JSC::ARMv7Assembler::vmov): 21062 (JSC::ARMv7Assembler::vmrs): 21063 (JSC::ARMv7Assembler::vmul_F64): 21064 (JSC::ARMv7Assembler::vstr): 21065 (JSC::ARMv7Assembler::vsub_F64): 21066 (JSC::ARMv7Assembler::VFPOperand::VFPOperand): 21067 (JSC::ARMv7Assembler::VFPOperand::bits1): 21068 (JSC::ARMv7Assembler::VFPOperand::bits4): 21069 (JSC::ARMv7Assembler::vcvtOp): 21070 (JSC::ARMv7Assembler::ARMInstructionFormatter::vfpOp): 21071 (JSC::ARMv7Assembler::ARMInstructionFormatter::vfpMemOp): 21072 * assembler/MacroAssemblerARMv7.h: 21073 (JSC::MacroAssemblerARMv7::branchDouble): 21074 * runtime/JSImmediate.h: 21075 (JSC::JSValue::isCell): 21076 21077 2010-07-02 Sheriff Bot <webkit.review.bot (a] gmail.com> 21078 21079 Unreviewed, rolling out r62410. 21080 http://trac.webkit.org/changeset/62410 21081 https://bugs.webkit.org/show_bug.cgi?id=41549 21082 21083 accursed last minute changes (Requested by olliej on #webkit). 21084 21085 * parser/Lexer.cpp: 21086 (JSC::Lexer::setCode): 21087 (JSC::Lexer::copyCodeWithoutBOMs): 21088 (JSC::Lexer::sourceCode): 21089 * parser/SourceProvider.h: 21090 (JSC::): 21091 (JSC::SourceProvider::SourceProvider): 21092 (JSC::SourceProvider::hasBOMs): 21093 (JSC::UStringSourceProvider::create): 21094 (JSC::UStringSourceProvider::getRange): 21095 (JSC::UStringSourceProvider::UStringSourceProvider): 21096 * wtf/text/StringImpl.h: 21097 21098 2010-07-02 Sam Weinig <sam (a] webkit.org> 21099 21100 Reviewed by Geoffrey Garen. 21101 21102 Patch for https://bugs.webkit.org/show_bug.cgi?id=41548 21103 Use snprintf instead of sprintf everywhere in JavaScriptCore 21104 21105 * runtime/JSGlobalObjectFunctions.cpp: 21106 (JSC::encode): 21107 (JSC::globalFuncEscape): 21108 * runtime/UString.cpp: 21109 (JSC::UString::from): 21110 21111 2010-07-02 Oliver Hunt <oliver (a] apple.com> 21112 21113 Reviewed by Geoffrey Garen. 21114 21115 Move BOM handling out of the lexer and parser 21116 https://bugs.webkit.org/show_bug.cgi?id=41539 21117 21118 Doing the BOM stripping in the lexer meant that we could 21119 end up having to strip the BOMs from a source multiple times. 21120 To deal with this we now require all strings provided by 21121 a SourceProvider to already have had the BOMs stripped. 21122 This also simplifies some of the lexer logic. 21123 21124 * parser/Lexer.cpp: 21125 (JSC::Lexer::setCode): 21126 (JSC::Lexer::sourceCode): 21127 * parser/SourceProvider.h: 21128 (JSC::SourceProvider::SourceProvider): 21129 (JSC::UStringSourceProvider::create): 21130 (JSC::UStringSourceProvider::getRange): 21131 (JSC::UStringSourceProvider::UStringSourceProvider): 21132 * wtf/text/StringImpl.h: 21133 (WebCore::StringImpl::copyStringWithoutBOMs): 21134 21135 2010-07-02 Renata Hodovan <reni (a] inf.u-szeged.hu> 21136 21137 Reviewed by Oliver Hunt. 21138 21139 [ Updated after rollout. ] 21140 21141 Merged RegExp constructor and RegExp::create methods. 21142 Both functions are called with three parameters and check whether 21143 flags (the third param) is given or not. 21144 Avoid extra hash lookups in RegExpCache::create by passing a pre-computed 21145 iterator parameter. 21146 https://bugs.webkit.org/show_bug.cgi?id=41055 21147 21148 * runtime/RegExp.cpp: 21149 (JSC::RegExp::RegExp): 21150 * runtime/RegExp.h: 21151 * runtime/RegExpCache.cpp: 21152 (JSC::RegExpCache::lookupOrCreate): 21153 (JSC::RegExpCache::create): 21154 * runtime/RegExpCache.h: 21155 21156 2010-07-02 Martin Robinson <mrobinson (a] igalia.com> 21157 21158 Unreviewed. Build fix for GTK+. 21159 21160 Build Lexer.lut.h with the rest of the .lut.h files. Later these should 21161 all probably be moved to DerivedSources. 21162 21163 * GNUmakefile.am: 21164 21165 2010-06-23 Martin Robinson <mrobinson (a] igalia.com> 21166 21167 Reviewed by Gustavo Noronha Silva. 21168 21169 [GTK] Separate DerivedSources per-project 21170 https://bugs.webkit.org/show_bug.cgi?id=41109 21171 21172 Generate JavaScriptCore derived sources in <builddir>/DerivedSources/JavaScriptCore. 21173 21174 * GNUmakefile.am: 21175 21176 2010-07-02 Peter Varga <pvarga (a] inf.u-szeged.hu> 21177 21178 Reviewed by Oliver Hunt. 21179 21180 The alternativeFrameLocation value is wrong in the emitDisjunction function in 21181 case of PatternTerm::TypeParentheticalAssertion. This value needs to be 21182 computed from term.frameLocation instead of term.inputPosition. This mistake caused glibc 21183 memory corruption in some cases. 21184 Layout test added for checking of TypeParentheticalAssertion case. 21185 https://bugs.webkit.org/show_bug.cgi?id=41458 21186 21187 * yarr/RegexInterpreter.cpp: 21188 (JSC::Yarr::ByteCompiler::emitDisjunction): 21189 21190 2010-07-01 Oliver Hunt <oliver (a] apple.com> 21191 21192 Reviewed by Maciej Stachowiak. 21193 21194 Add a FixedArray template to encapsulate fixed length arrays 21195 https://bugs.webkit.org/show_bug.cgi?id=41506 21196 21197 This new type is used in place of fixed length C arrays so 21198 that debug builds can guard against attempts to go beyond 21199 the end of the array. 21200 21201 * JavaScriptCore.xcodeproj/project.pbxproj: 21202 * bytecode/Opcode.cpp: 21203 (JSC::OpcodeStats::~OpcodeStats): 21204 * pcre/pcre_compile.cpp: 21205 (calculateCompiledPatternLength): 21206 * runtime/Collector.cpp: 21207 (JSC::Heap::allocateBlock): 21208 (JSC::Heap::allocate): 21209 * runtime/Collector.h: 21210 (JSC::CollectorBitmap::clearAll): 21211 * runtime/CollectorHeapIterator.h: 21212 (JSC::CollectorHeapIterator::operator*): 21213 * runtime/DateInstanceCache.h: 21214 * runtime/JSString.cpp: 21215 (JSC::JSString::replaceCharacter): 21216 * runtime/JSString.h: 21217 (JSC::RopeBuilder::JSStringFinalizerStruct::): 21218 * runtime/NumericStrings.h: 21219 * runtime/RegExpCache.h: 21220 * runtime/SmallStrings.h: 21221 (JSC::SmallStrings::singleCharacterStrings): 21222 * wtf/AVLTree.h: 21223 * wtf/FixedArray.h: Added. 21224 (WTF::FixedArray::operator[]): 21225 (WTF::FixedArray::data): 21226 21227 2010-07-01 Zoltan Herczeg <zherczeg (a] webkit.org> 21228 21229 Reviewed by Oliver Hunt. 21230 21231 Improve the main lexer switch by mapping input characters to their type 21232 https://bugs.webkit.org/show_bug.cgi?id=41459 21233 21234 Sunsipder: no change (from 532.9ms to 531.5ms) 21235 SunSpider --parse-only: 1.025x as fast (from 33.1ms to 32.3ms) 21236 21237 * parser/Lexer.cpp: 21238 (JSC::): 21239 (JSC::Lexer::lex): 21240 21241 2010-07-01 Sam Weinig <sam (a] webkit.org> 21242 21243 Rubber-stamped by Ander Carlsson. 21244 21245 Define HAVE_HOSTED_CORE_ANIMATION on Snow Leopard. 21246 21247 * wtf/Platform.h: 21248 21249 2010-07-01 Gavin Barraclough <barraclough (a] apple.com> 21250 21251 Reviewed by Oliver Hunt. 21252 21253 Bug 41490 - Add missing operations to MacroAssemblerARMv7 21254 Also, make single, double, quad register numbers in ARMv7Assembler distinct & strongly typed. 21255 21256 * assembler/ARMv7Assembler.h: 21257 (JSC::ARMRegisters::): 21258 (JSC::ARMRegisters::asSingle): 21259 (JSC::ARMRegisters::asDouble): 21260 (JSC::VFPImmediate::VFPImmediate): 21261 (JSC::VFPImmediate::isValid): 21262 (JSC::VFPImmediate::value): 21263 (JSC::ARMv7Assembler::singleRegisterMask): 21264 (JSC::ARMv7Assembler::doubleRegisterMask): 21265 (JSC::ARMv7Assembler::): 21266 (JSC::ARMv7Assembler::add_S): 21267 (JSC::ARMv7Assembler::neg): 21268 (JSC::ARMv7Assembler::orr_S): 21269 (JSC::ARMv7Assembler::sub): 21270 (JSC::ARMv7Assembler::sub_S): 21271 (JSC::ARMv7Assembler::vadd_F64): 21272 (JSC::ARMv7Assembler::vcmp_F64): 21273 (JSC::ARMv7Assembler::vcvt_F64_S32): 21274 (JSC::ARMv7Assembler::vcvtr_S32_F64): 21275 (JSC::ARMv7Assembler::vdiv_F64): 21276 (JSC::ARMv7Assembler::vldr): 21277 (JSC::ARMv7Assembler::vmov_F64_0): 21278 (JSC::ARMv7Assembler::vmov): 21279 (JSC::ARMv7Assembler::vmul_F64): 21280 (JSC::ARMv7Assembler::vstr): 21281 (JSC::ARMv7Assembler::vsub_F64): 21282 (JSC::ARMv7Assembler::vcvt): 21283 (JSC::ARMv7Assembler::vmem): 21284 * assembler/AbstractMacroAssembler.h: 21285 * assembler/MacroAssemblerARM.h: 21286 * assembler/MacroAssemblerARMv7.h: 21287 (JSC::MacroAssemblerARMv7::fpTempRegisterAsSingle): 21288 (JSC::MacroAssemblerARMv7::neg32): 21289 (JSC::MacroAssemblerARMv7::loadDouble): 21290 (JSC::MacroAssemblerARMv7::divDouble): 21291 (JSC::MacroAssemblerARMv7::convertInt32ToDouble): 21292 (JSC::MacroAssemblerARMv7::branchConvertDoubleToInt32): 21293 (JSC::MacroAssemblerARMv7::zeroDouble): 21294 (JSC::MacroAssemblerARMv7::branchOr32): 21295 (JSC::MacroAssemblerARMv7::set32): 21296 (JSC::MacroAssemblerARMv7::set8): 21297 * assembler/MacroAssemblerMIPS.h: 21298 * assembler/MacroAssemblerX86Common.h: 21299 21300 2010-07-01 Oliver Hunt <oliver (a] apple.com> 21301 21302 Reviewed by Geoff Garen. 21303 21304 Improve reentrancy logic in polymorphic cache stubs 21305 <https://bugs.webkit.org/show_bug.cgi?id=41482> 21306 <rdar://problem/8094380> 21307 21308 Make the polymorphic cache stubs handle reentrancy 21309 better. 21310 21311 * jit/JITStubs.cpp: 21312 (JSC::DEFINE_STUB_FUNCTION): 21313 (JSC::getPolymorphicAccessStructureListSlot): 21314 21315 2010-07-01 Antti Koivisto <koivisto (a] iki.fi> 21316 21317 Revert accidental commit. 21318 21319 * runtime/Collector.cpp: 21320 (JSC::Heap::allocateBlock): 21321 21322 2010-06-30 Darin Adler <darin (a] apple.com> 21323 21324 Reviewed by Adam Barth. 21325 21326 Add assertion, off by default, for when you forget to do adoptRef 21327 https://bugs.webkit.org/show_bug.cgi?id=41422 21328 21329 * wtf/PassRefPtr.h: Tweaked formatting. Added a new adopted 21330 function, called on the pointer by adoptRef, with an empty inline 21331 default version, meant to be overloaded. Unified the inlining 21332 with a macro named REF_DEREF_INLINE to make it clearer what's 21333 going on in the refIfNotNull/derefIfNotNull functions. Renamed 21334 releaseRef to leakRef, but left the old name in for compatibility 21335 for now. 21336 21337 * wtf/RefCounted.h: Added code to require adoption and assert if 21338 you don't call adoptRef. For now, it is turned off because of the 21339 LOOSE_REF_COUNTED define in this header. Later we can turn it on 21340 once we get everything working without asserting. 21341 21342 2010-06-29 Michael Saboff <msaboff (a] apple.com> 21343 21344 Reviewed by Darin Adler. 21345 21346 Bug 41238 - RegExp performance slow on Dromaeo benchmark 21347 21348 Other javascript engines appear to cache prior results of regular 21349 expression operations. 21350 21351 Suggest adding some sort of caching mechanism to regular expression 21352 processing. 21353 21354 Added a single entry cache of match() results to RegExp class. 21355 21356 Also added performance improvements to UString == operator. 21357 First check the impls for equality. Then get the length of 21358 each of the non-null impls. Next check the sizes for equality. 21359 Then check the data for the case of different impls that point 21360 to the same data (most likely due to substrings from the beginning of 21361 another string). Lastly we check the underlying data for equality. 21362 21363 * runtime/RegExp.cpp: 21364 (JSC::RegExp::RegExp): 21365 (JSC::RegExp::match): 21366 * runtime/RegExp.h: 21367 * runtime/UString.h: 21368 (JSC::operator==): 21369 21370 2010-06-29 Nathan Lawrence <nlawrence (a] apple.com> 21371 21372 Reviewed by Geoffrey Garen. 21373 21374 WTF::HashSet iterators are quasi-mutable. Changing the value through 21375 dereferencing an iterator will not change the behavior of methods like 21376 contains or find, but will change the behavior of iterating. 21377 21378 * wtf/HashSet.h: 21379 (WTF::::begin): 21380 (WTF::::end): 21381 (WTF::::find): 21382 (WTF::::remove): 21383 * wtf/HashTable.h: 21384 21385 2010-06-29 Martin Robinson <mrobinson (a] igalia.com> 21386 21387 Reviewed by Xan Lopez. 21388 21389 [GTK] Clean up the source lists in the GNUMakefile.am files 21390 https://bugs.webkit.org/show_bug.cgi?id=41229 21391 21392 Clean up the GNUMakefile.am a little bit. Alphabetize and conglomerate 21393 the source lists. 21394 21395 * GNUmakefile.am: 21396 21397 2010-06-29 Caio Marcelo de Oliveira Filho <caio.oliveira (a] openbossa.org> 21398 21399 Reviewed by Kenneth Rohde Christiansen. 21400 21401 [Qt] Fix QtScript build after QScriptValuePrivate ctor changes 21402 https://bugs.webkit.org/show_bug.cgi?id=41307 21403 21404 * qt/api/qscriptvalue_p.h: 21405 (QScriptValuePrivate::prototype): 21406 * qt/benchmarks/qscriptengine/qscriptengine.pro: 21407 21408 2010-06-28 Caio Marcelo de Oliveira Filho <caio.oliveira (a] openbossa.org> 21409 21410 Reviewed by Kenneth Rohde Christiansen. 21411 21412 [Qt] QScriptEngine API should contain a newArray function 21413 https://bugs.webkit.org/show_bug.cgi?id=39115 21414 21415 * qt/api/qscriptengine.cpp: 21416 (QScriptEngine::newArray): 21417 * qt/api/qscriptengine.h: 21418 * qt/api/qscriptengine_p.cpp: 21419 (QScriptEnginePrivate::newArray): 21420 * qt/api/qscriptengine_p.h: 21421 * qt/tests/qscriptengine/tst_qscriptengine.cpp: 21422 (tst_QScriptEngine::newArray): 21423 21424 2010-06-28 Xan Lopez <xlopez (a] igalia.com> 21425 21426 Reviewed by Gustavo Noronha. 21427 21428 Install jsc as jsc-X where X is the major API version to allow 21429 parallel installation of both GTK+ 2.x and 3.x versions. 21430 21431 * GNUmakefile.am: 21432 21433 2010-06-28 John Gregg <johnnyg (a] google.com> 21434 21435 Reviewed by Kent Tamura. 21436 21437 add ENABLE_DIRECTORY_UPLOAD build support 21438 https://bugs.webkit.org/show_bug.cgi?id=41100 21439 21440 * Configurations/FeatureDefines.xcconfig: 21441 21442 2010-06-28 Xan Lopez <xlopez (a] igalia.com> 21443 21444 Revert to build jsc, since the tests expect this. 21445 21446 * GNUmakefile.am: 21447 21448 2010-06-28 Zoltan Herczeg <zherczeg (a] webkit.org> 21449 21450 Reviewed by Oliver Hunt. 21451 21452 Only one character lookahead should be enough for the lexer 21453 https://bugs.webkit.org/show_bug.cgi?id=41213 21454 21455 The lexer had 4 character lookahead before, which required 21456 a complex shifting mechanism. This can be improved by using 21457 only one character lookahead for most decisions, and a 21458 peek() function as a fallback when it is absolutely necessary. 21459 21460 * parser/Lexer.cpp: 21461 (JSC::Lexer::currentCharacter): 21462 (JSC::Lexer::currentOffset): 21463 (JSC::Lexer::setCode): 21464 (JSC::Lexer::shift): 21465 (JSC::Lexer::peek): 21466 (JSC::Lexer::getUnicodeCharacter): 21467 (JSC::Lexer::shiftLineTerminator): 21468 (JSC::Lexer::lastTokenWasRestrKeyword): 21469 (JSC::Lexer::lex): 21470 (JSC::Lexer::scanRegExp): 21471 (JSC::Lexer::skipRegExp): 21472 * parser/Lexer.h: 21473 21474 2010-06-28 Lucas De Marchi <lucas.demarchi (a] profusion.mobi> 21475 21476 Unreviewed build fix. 21477 21478 [EFL] Build fix for latest version of Ecore library. 21479 Ecore recently changed return type of callbacks from int to Eina_Bool. 21480 21481 * wtf/efl/MainThreadEfl.cpp: 21482 (WTF::timeoutFired): Return Eina_Bool instead of int. 21483 21484 2010-06-28 Caio Marcelo de Oliveira Filho <caio.oliveira (a] openbossa.org> 21485 21486 Reviewed by Kenneth Rohde Christiansen. 21487 21488 [Qt] QScriptValue should have API for accessing object properties 21489 https://bugs.webkit.org/show_bug.cgi?id=40903 21490 21491 Make possible to access properties inside QScriptValues. While this 21492 still doesn't support the ResolveLocal parameter, it is already useful 21493 for testing the API. 21494 21495 The tests from upstream QtScript weren't imported since most of them 21496 depend on the setProperty() function as well. A simple test was created. 21497 21498 * qt/api/qscriptvalue.cpp: 21499 (QScriptValue::property): 21500 * qt/api/qscriptvalue.h: 21501 (QScriptValue::): 21502 * qt/api/qscriptvalue_p.h: 21503 (QScriptValuePrivate::property): 21504 * qt/tests/qscriptvalue/tst_qscriptvalue.cpp: 21505 (tst_QScriptValue::propertySimple): 21506 * qt/tests/qscriptvalue/tst_qscriptvalue.h: 21507 21508 2010-06-28 Xan Lopez <xlopez (a] igalia.com> 21509 21510 Reviewed by Gustavo Noronha. 21511 21512 [GTK] Add support for GTK+3 21513 https://bugs.webkit.org/show_bug.cgi?id=41253 21514 21515 Suffix jsc with the API version of the library, so that 21516 libwebkitgtk 1.x and 3.x can install jsc. 21517 21518 * GNUmakefile.am: 21519 21520 2010-06-27 Kwang Yul Seo <skyul (a] company100.net> 21521 21522 Reviewed by Kent Tamura. 21523 21524 [BREWMP] Turn ENABLE(SINGLE_THREADED) on. 21525 https://bugs.webkit.org/show_bug.cgi?id=41135 21526 21527 Brew MP does not support preemptive multi-threading. 21528 Disable threading for Brew MP. 21529 21530 * wtf/Platform.h: 21531 21532 2010-06-26 Tony Gentilcore <tonyg (a] chromium.org> 21533 21534 Reviewed by Dimitri Glazkov. 21535 21536 Add an ENABLE_WEB_TIMING option for enabling Web Timing support. 21537 https://bugs.webkit.org/show_bug.cgi?id=38924 21538 21539 * Configurations/FeatureDefines.xcconfig: 21540 21541 2010-06-25 Nathan Lawrence <nlawrence (a] apple.com> 21542 21543 Reviewed by Geoffrey Garen. 21544 21545 We assume in testapi.c that the value aHeapRef refers to will not be 21546 moved. When we have movable objects, this will not be the case. 21547 21548 * API/tests/testapi.c: 21549 (main): 21550 21551 2010-06-25 Sheriff Bot <webkit.review.bot (a] gmail.com> 21552 21553 Unreviewed, rolling out r61924. 21554 http://trac.webkit.org/changeset/61924 21555 https://bugs.webkit.org/show_bug.cgi?id=41240 21556 21557 It was rolled out, but cq+ wasn't removed (Requested by Ossy_ 21558 on #webkit). 21559 21560 * runtime/RegExp.cpp: 21561 (JSC::RegExp::RegExp): 21562 (JSC::RegExp::create): 21563 * runtime/RegExp.h: 21564 * runtime/RegExpCache.cpp: 21565 (JSC::RegExpCache::lookupOrCreate): 21566 (JSC::RegExpCache::create): 21567 * runtime/RegExpCache.h: 21568 21569 2010-06-25 Renata Hodovan <reni (a] inf.u-szeged.hu> 21570 21571 Reviewed by Geoffrey Garen. 21572 21573 Merge RegExp constructor and RegExp::create methods into one. 21574 Both of function are called with tree parameters and check whether 21575 flags (the third param) is given or not. 21576 Simplify hash lookups in RegExpCache::create with giving them an extra 21577 iterator parameter. 21578 https://bugs.webkit.org/show_bug.cgi?id=41055 21579 21580 * runtime/RegExp.cpp: 21581 (JSC::RegExp::RegExp): 21582 * runtime/RegExp.h: 21583 * runtime/RegExpCache.cpp: 21584 (JSC::RegExpCache::lookupOrCreate): 21585 (JSC::RegExpCache::create): 21586 * runtime/RegExpCache.h: 21587 21588 2010-06-25 Jedrzej Nowacki <jedrzej.nowacki (a] nokia.com> 21589 21590 Reviewed by Simon Hausmann. 21591 21592 Introduce QtScript benchmarks. 21593 21594 The QtScript performance should be tested regularly. The patch introduces 21595 micro benchmarks for existing API. 21596 21597 [Qt] Performance of the QtScript API is not tested. 21598 https://bugs.webkit.org/show_bug.cgi?id=40911 21599 21600 * qt/benchmarks/benchmarks.pri: Copied from JavaScriptCore/qt/tests/tests.pri. 21601 * qt/benchmarks/benchmarks.pro: Added. 21602 * qt/benchmarks/qscriptengine/qscriptengine.pro: Added. 21603 * qt/benchmarks/qscriptengine/tst_qscriptengine.cpp: Added. 21604 (tst_QScriptEngine::checkSyntax_data): 21605 (tst_QScriptEngine::checkSyntax): 21606 (tst_QScriptEngine::constructor): 21607 (tst_QScriptEngine::evaluateString_data): 21608 (tst_QScriptEngine::evaluateString): 21609 (tst_QScriptEngine::evaluateProgram_data): 21610 (tst_QScriptEngine::evaluateProgram): 21611 (tst_QScriptEngine::newObject): 21612 (tst_QScriptEngine::nullValue): 21613 (tst_QScriptEngine::undefinedValue): 21614 (tst_QScriptEngine::globalObject): 21615 (tst_QScriptEngine::toStringHandle): 21616 * qt/benchmarks/qscriptvalue/qscriptvalue.pro: Added. 21617 * qt/benchmarks/qscriptvalue/tst_qscriptvalue.cpp: Added. 21618 (tst_QScriptValue::tst_QScriptValue): 21619 (tst_QScriptValue::~tst_QScriptValue): 21620 (tst_QScriptValue::values_data): 21621 (tst_QScriptValue::ctorBool): 21622 (tst_QScriptValue::ctorReal): 21623 (tst_QScriptValue::ctorNumber): 21624 (tst_QScriptValue::ctorQString): 21625 (tst_QScriptValue::ctorCString): 21626 (tst_QScriptValue::ctorSpecial): 21627 (tst_QScriptValue::ctorQScriptValue): 21628 (tst_QScriptValue::isValid_data): 21629 (tst_QScriptValue::isValid): 21630 (tst_QScriptValue::isBool_data): 21631 (tst_QScriptValue::isBool): 21632 (tst_QScriptValue::isNumber_data): 21633 (tst_QScriptValue::isNumber): 21634 (tst_QScriptValue::isFunction_data): 21635 (tst_QScriptValue::isFunction): 21636 (tst_QScriptValue::isNull_data): 21637 (tst_QScriptValue::isNull): 21638 (tst_QScriptValue::isString_data): 21639 (tst_QScriptValue::isString): 21640 (tst_QScriptValue::isUndefined_data): 21641 (tst_QScriptValue::isUndefined): 21642 (tst_QScriptValue::isObject_data): 21643 (tst_QScriptValue::isObject): 21644 (tst_QScriptValue::isError_data): 21645 (tst_QScriptValue::isError): 21646 (tst_QScriptValue::toString_data): 21647 (tst_QScriptValue::toString): 21648 (tst_QScriptValue::toNumber_data): 21649 (tst_QScriptValue::toNumber): 21650 (tst_QScriptValue::toBool_data): 21651 (tst_QScriptValue::toBool): 21652 (tst_QScriptValue::toInteger_data): 21653 (tst_QScriptValue::toInteger): 21654 (tst_QScriptValue::toInt32_data): 21655 (tst_QScriptValue::toInt32): 21656 (tst_QScriptValue::toUInt32_data): 21657 (tst_QScriptValue::toUInt32): 21658 (tst_QScriptValue::toUInt16_data): 21659 (tst_QScriptValue::toUInt16): 21660 (tst_QScriptValue::toObject_data): 21661 (tst_QScriptValue::toObject): 21662 (tst_QScriptValue::equals_data): 21663 (tst_QScriptValue::equals): 21664 (tst_QScriptValue::strictlyEquals_data): 21665 (tst_QScriptValue::strictlyEquals): 21666 (tst_QScriptValue::instanceOf_data): 21667 (tst_QScriptValue::instanceOf): 21668 21669 2010-06-25 Oliver Hunt <oliver (a] apple.com> 21670 21671 Reviewed by Geoffrey Garen. 21672 21673 Remove old js parser 21674 https://bugs.webkit.org/show_bug.cgi?id=41222 21675 21676 Remove the old yacc parser, this also solves the tiger problem. Which 21677 was a conflict between yacc generated token values and those in the 21678 custom parser 21679 21680 * Android.mk: 21681 * CMakeLists.txt: 21682 * DerivedSources.make: 21683 * DerivedSources.pro: 21684 * GNUmakefile.am: 21685 * JavaScriptCore.pro: 21686 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: 21687 * JavaScriptCore.xcodeproj/project.pbxproj: 21688 * parser/Grammar.y: Removed. 21689 * parser/JSParser.cpp: 21690 * parser/JSParser.h: 21691 * parser/Lexer.cpp: 21692 * parser/NodeConstructors.h: 21693 (JSC::Node::Node): 21694 * parser/Parser.cpp: 21695 (JSC::Parser::parse): 21696 * wtf/Platform.h: 21697 21698 2010-06-25 Jedrzej Nowacki <jedrzej.nowacki (a] nokia.com> 21699 21700 Reviewed by Simon Hausmann. 21701 21702 New QtScript API; setPrototype() and prototype(). 21703 21704 This patch implements QScriptValue's prototype accessors. 21705 21706 [Qt] QScriptValue should have accessors to a prototype. 21707 https://bugs.webkit.org/show_bug.cgi?id=39356 21708 21709 * qt/api/qscriptvalue.cpp: 21710 (QScriptValue::prototype): 21711 (QScriptValue::setPrototype): 21712 * qt/api/qscriptvalue.h: 21713 * qt/api/qscriptvalue_p.h: 21714 (QScriptValuePrivate::prototype): 21715 (QScriptValuePrivate::setPrototype): 21716 * qt/tests/qscriptvalue/tst_qscriptvalue.cpp: 21717 (tst_QScriptValue::getSetPrototype): 21718 * qt/tests/qscriptvalue/tst_qscriptvalue.h: 21719 21720 2010-06-25 Lucas De Marchi <lucas.demarchi (a] profusion.mobi> 21721 21722 Reviewed by Kenneth Rohde Christiansen. 21723 21724 [CMake] Add option to enable JIT. 21725 JIT is disabled by default, but now it's possible to enable it through 21726 an option to CMake: -DENABLE_JIT will enable it. 21727 https://bugs.webkit.org/show_bug.cgi?id=40936 21728 21729 * CMakeLists.txt: Add missing files and re-sort. 21730 21731 2010-06-25 Lucas De Marchi <lucas.demarchi (a] profusion.mobi> 21732 21733 Reviewed by Gustavo Noronha Silva. 21734 21735 [CMake] Remove unused variable in EFL build system. It was previously 21736 being used to set the flags of each port but it was superseded by 21737 other flags. 21738 https://bugs.webkit.org/show_bug.cgi?id=40931 21739 21740 * jsc/CMakeLists.txt: 21741 21742 2010-06-25 Nathan Lawrence <nlawrence (a] apple.com> 21743 21744 Reviewed by Geoffrey Garen. 21745 21746 Aligning AssemblerBuffer to 128 bytes gives a 0.4% speedup on 21747 sunspider. 21748 21749 * assembler/AssemblerBuffer.h: 21750 (JSC::AssemblerBuffer::AssemblerBuffer): 21751 21752 2010-06-25 Sheriff Bot <webkit.review.bot (a] gmail.com> 21753 21754 Unreviewed, rolling out r61842. 21755 http://trac.webkit.org/changeset/61842 21756 https://bugs.webkit.org/show_bug.cgi?id=41208 21757 21758 It broke Windows build (Requested by Ossy_ on #webkit). 21759 21760 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreCommon.vsprops: 21761 * JavaScriptCore.vcproj/WTF/WTF.vcproj: 21762 * wtf/OwnPtrCommon.h: 21763 * wtf/brew/OwnPtrBrew.h: Removed. 21764 * wtf/win/OwnPtrWin.h: Removed. 21765 21766 2010-06-25 Sheriff Bot <webkit.review.bot (a] gmail.com> 21767 21768 Unreviewed, rolling out r61833. 21769 http://trac.webkit.org/changeset/61833 21770 https://bugs.webkit.org/show_bug.cgi?id=41205 21771 21772 It broke Leopard and GTK (Requested by Ossy_ on #webkit). 21773 21774 * runtime/RegExp.cpp: 21775 (JSC::RegExp::RegExp): 21776 (JSC::RegExp::create): 21777 * runtime/RegExp.h: 21778 * runtime/RegExpCache.cpp: 21779 (JSC::RegExpCache::lookupOrCreate): 21780 (JSC::RegExpCache::create): 21781 * runtime/RegExpCache.h: 21782 21783 2010-06-25 Kwang Yul Seo <skyul (a] company100.net> 21784 21785 Reviewed by Adam Barth. 21786 21787 Change OwnPtrCommon to include platform-specific headers 21788 https://bugs.webkit.org/show_bug.cgi?id=40279 21789 21790 Adding new type to OwnPtrCommon needlessly causes all ports to do full rebuilds. 21791 Change OwnPtrCommon to include platform-specific headers to avoid all ports rebuilds. 21792 21793 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreCommon.vsprops: 21794 * JavaScriptCore.vcproj/WTF/WTF.vcproj: 21795 * wtf/OwnPtrCommon.h: 21796 * wtf/brew/OwnPtrBrew.h: Added. 21797 * wtf/win/OwnPtrWin.h: Added. 21798 21799 2010-06-25 Patrick Gansterer <paroga (a] paroga.com> 21800 21801 Reviewed by Darin Adler. 21802 21803 Add the possibility for a head and footer section to create_jit_stubs. 21804 https://bugs.webkit.org/show_bug.cgi?id=36050 21805 21806 * create_jit_stubs: 21807 21808 2010-06-24 Renata Hodovan <reni (a] inf.u-szeged.hu> 21809 21810 Reviewed by Geoffrey Garen. 21811 21812 Merge RegExp constructor and RegExp::create methods into one. 21813 Both of function are called with tree parameters and check whether 21814 flags (the third param) is given or not. 21815 Simplify hash lookups in RegExpCache::create with giving them an extra 21816 iterator parameter. 21817 https://bugs.webkit.org/show_bug.cgi?id=41055 21818 21819 * runtime/RegExp.cpp: 21820 (JSC::RegExp::RegExp): 21821 * runtime/RegExp.h: 21822 * runtime/RegExpCache.cpp: 21823 (JSC::RegExpCache::lookupOrCreate): 21824 (JSC::RegExpCache::create): 21825 * runtime/RegExpCache.h: 21826 21827 2010-06-24 Oliver Hunt <oliver (a] apple.com> 21828 21829 Reviewed by Maciej Stachowiak. 21830 21831 Incorrect use of '+ 4' and 0 instead of tag and payload offsets in JSValue32_64 21832 https://bugs.webkit.org/show_bug.cgi?id=41193 21833 21834 I noticed a use of '+ 4' in some of the 32_64 code paths and realised there 21835 were a few places where endianness was being hardcoded. This patch fixes 21836 the errors i could find through code inspection. 21837 21838 * jit/JITOpcodes32_64.cpp: 21839 (JSC::JIT::emit_op_resolve_global): 21840 * jit/JITPropertyAccess32_64.cpp: 21841 (JSC::JIT::emit_op_get_by_val): 21842 (JSC::JIT::emit_op_put_by_val): 21843 (JSC::JIT::compileGetDirectOffset): 21844 (JSC::JIT::privateCompilePutByIdTransition): 21845 (JSC::JIT::patchGetByIdSelf): 21846 (JSC::JIT::patchPutByIdReplace): 21847 21848 2010-06-24 Oliver Hunt <oliver (a] apple.com> 21849 21850 Build fix 21851 21852 Temporarily get the tiger bot working again by disabling the 21853 new JS parser. GCC on tiger is miscompiling the parser and 21854 I don't have access to a tiger machine right now. 21855 21856 * wtf/Platform.h: 21857 21858 2010-06-21 Nathan Lawrence <nlawrence (a] apple.com> 21859 21860 Reviewed by Geoff Garen. 21861 21862 https://bugs.webkit.org/show_bug.cgi?id=40128 21863 Fixed broken debug functionality. 21864 21865 * interpreter/Interpreter.cpp: 21866 (JSC::Interpreter::dumpRegisters): 21867 Fixed to work with updated call frame. 21868 * runtime/JSImmediate.h: 21869 (JSC::JSValue::isCell): 21870 Added assert for aligned cell. 21871 * runtime/JSValue.cpp: 21872 (JSC::JSValue::description): 21873 Fixed to work with current JSValue implementation. 21874 * runtime/JSZombie.cpp: 21875 (JSC::JSZombie::leakedZombieStructure): 21876 JSombies compile again. 21877 21878 2010-06-24 Leandro Pereira <leandro (a] profusion.mobi> 21879 21880 Unreviewed build fix. 21881 21882 * CMakeLists.txt: Add JSParser.cpp. 21883 21884 2010-06-24 Oliver Hunt <oliver (a] apple.com> 21885 21886 Reviewed by Maciej Stachowiak. 21887 21888 Single character string replacement may replace too many characters 21889 https://bugs.webkit.org/show_bug.cgi?id=41138 21890 <rdar://problem/8097496> 21891 21892 Simple fix to stop the rope path of single character replacement 21893 once the first replacement occurs. 21894 21895 * runtime/JSString.cpp: 21896 (JSC::JSString::replaceCharacter): 21897 21898 2010-06-24 Gabor Loki <loki (a] webkit.org> 21899 21900 Reviewed by Gavin Barraclough. 21901 21902 Fix the length of instruction stream controlled by constant pool 21903 https://bugs.webkit.org/show_bug.cgi?id=40293 21904 21905 The initial/maximum length of instruction stream (m_maxDistance) should 21906 be set when the first constant arrives to the constant pool. Otherwise 21907 the constant pool could be placed into an uninterrupted sequence. 21908 21909 * assembler/AssemblerBufferWithConstantPool.h: 21910 (JSC::): 21911 21912 2010-06-24 Oliver Hunt <oliver (a] apple.com> 21913 21914 Reviewed by Gavin Barraclough. 21915 21916 We assume bytecodeOffset will always return a value > 1, 21917 so we adjust the failure case to return 1 instead of 0. 21918 21919 * bytecode/CodeBlock.h: 21920 (JSC::CodeBlock::bytecodeOffset): 21921 21922 2010-06-23 Oliver Hunt <oliver (a] apple.com> 21923 21924 Reviewed by Gavin Barraclough. 21925 21926 Custom-written JavaScript parser 21927 https://bugs.webkit.org/show_bug.cgi?id=34019 21928 21929 Implement a recursive descent parser similar to that used by V8 and 21930 SpiderMonkey. Greater than 2x improvement in SunSpider parsing tests. 21931 21932 The parser consists of a JSParser class that uses a TreeBuilder to actually 21933 build the AST. There are currently two builders -- the ASTBuilder and 21934 SyntaxChecker which separate the job of building an AST for code generation 21935 and simply checking syntactic correctness. 21936 21937 There's still some less than ideal code remaining in the parser to allow 21938 us to retain the existing lexing code with minimal changes. We'll tidy 21939 this up at a later date. 21940 21941 * GNUmakefile.am: 21942 * JavaScriptCore.gypi: 21943 * JavaScriptCore.pro: 21944 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: 21945 * JavaScriptCore.xcodeproj/project.pbxproj: 21946 * parser/ASTBuilder.h: Added. 21947 (JSC::ASTBuilder::BinaryOpInfo::BinaryOpInfo): 21948 (JSC::ASTBuilder::AssignmentInfo::AssignmentInfo): 21949 (JSC::ASTBuilder::ASTBuilder): 21950 (JSC::ASTBuilder::createSourceElements): 21951 (JSC::ASTBuilder::varDeclarations): 21952 (JSC::ASTBuilder::funcDeclarations): 21953 (JSC::ASTBuilder::features): 21954 (JSC::ASTBuilder::numConstants): 21955 (JSC::ASTBuilder::appendToComma): 21956 (JSC::ASTBuilder::createCommaExpr): 21957 (JSC::ASTBuilder::createLogicalNot): 21958 (JSC::ASTBuilder::createUnaryPlus): 21959 (JSC::ASTBuilder::createVoid): 21960 (JSC::ASTBuilder::thisExpr): 21961 (JSC::ASTBuilder::createResolve): 21962 (JSC::ASTBuilder::createObjectLiteral): 21963 (JSC::ASTBuilder::createArray): 21964 (JSC::ASTBuilder::createNumberExpr): 21965 (JSC::ASTBuilder::createString): 21966 (JSC::ASTBuilder::createBoolean): 21967 (JSC::ASTBuilder::createNull): 21968 (JSC::ASTBuilder::createBracketAccess): 21969 (JSC::ASTBuilder::createDotAccess): 21970 (JSC::ASTBuilder::createRegex): 21971 (JSC::ASTBuilder::createNewExpr): 21972 (JSC::ASTBuilder::createConditionalExpr): 21973 (JSC::ASTBuilder::createAssignResolve): 21974 (JSC::ASTBuilder::createFunctionExpr): 21975 (JSC::ASTBuilder::createFunctionBody): 21976 (JSC::ASTBuilder::createGetterOrSetterProperty): 21977 (JSC::ASTBuilder::createArguments): 21978 (JSC::ASTBuilder::createArgumentsList): 21979 (JSC::ASTBuilder::createProperty): 21980 (JSC::ASTBuilder::createPropertyList): 21981 (JSC::ASTBuilder::createElementList): 21982 (JSC::ASTBuilder::createFormalParameterList): 21983 (JSC::ASTBuilder::createClause): 21984 (JSC::ASTBuilder::createClauseList): 21985 (JSC::ASTBuilder::setUsesArguments): 21986 (JSC::ASTBuilder::createFuncDeclStatement): 21987 (JSC::ASTBuilder::createBlockStatement): 21988 (JSC::ASTBuilder::createExprStatement): 21989 (JSC::ASTBuilder::createIfStatement): 21990 (JSC::ASTBuilder::createForLoop): 21991 (JSC::ASTBuilder::createForInLoop): 21992 (JSC::ASTBuilder::createEmptyStatement): 21993 (JSC::ASTBuilder::createVarStatement): 21994 (JSC::ASTBuilder::createReturnStatement): 21995 (JSC::ASTBuilder::createBreakStatement): 21996 (JSC::ASTBuilder::createContinueStatement): 21997 (JSC::ASTBuilder::createTryStatement): 21998 (JSC::ASTBuilder::createSwitchStatement): 21999 (JSC::ASTBuilder::createWhileStatement): 22000 (JSC::ASTBuilder::createDoWhileStatement): 22001 (JSC::ASTBuilder::createLabelStatement): 22002 (JSC::ASTBuilder::createWithStatement): 22003 (JSC::ASTBuilder::createThrowStatement): 22004 (JSC::ASTBuilder::createDebugger): 22005 (JSC::ASTBuilder::createConstStatement): 22006 (JSC::ASTBuilder::appendConstDecl): 22007 (JSC::ASTBuilder::appendStatement): 22008 (JSC::ASTBuilder::addVar): 22009 (JSC::ASTBuilder::combineCommaNodes): 22010 (JSC::ASTBuilder::evalCount): 22011 (JSC::ASTBuilder::appendBinaryExpressionInfo): 22012 (JSC::ASTBuilder::operatorStackPop): 22013 (JSC::ASTBuilder::operatorStackHasHigherPrecedence): 22014 (JSC::ASTBuilder::getFromOperandStack): 22015 (JSC::ASTBuilder::shrinkOperandStackBy): 22016 (JSC::ASTBuilder::appendBinaryOperation): 22017 (JSC::ASTBuilder::operatorStackAppend): 22018 (JSC::ASTBuilder::popOperandStack): 22019 (JSC::ASTBuilder::appendUnaryToken): 22020 (JSC::ASTBuilder::unaryTokenStackLastType): 22021 (JSC::ASTBuilder::unaryTokenStackLastStart): 22022 (JSC::ASTBuilder::unaryTokenStackRemoveLast): 22023 (JSC::ASTBuilder::assignmentStackAppend): 22024 (JSC::ASTBuilder::createAssignment): 22025 (JSC::ASTBuilder::Scope::Scope): 22026 (JSC::ASTBuilder::setExceptionLocation): 22027 (JSC::ASTBuilder::incConstants): 22028 (JSC::ASTBuilder::usesThis): 22029 (JSC::ASTBuilder::usesCatch): 22030 (JSC::ASTBuilder::usesClosures): 22031 (JSC::ASTBuilder::usesArguments): 22032 (JSC::ASTBuilder::usesAssignment): 22033 (JSC::ASTBuilder::usesWith): 22034 (JSC::ASTBuilder::usesEval): 22035 (JSC::ASTBuilder::createNumber): 22036 (JSC::ASTBuilder::makeTypeOfNode): 22037 (JSC::ASTBuilder::makeDeleteNode): 22038 (JSC::ASTBuilder::makeNegateNode): 22039 (JSC::ASTBuilder::makeBitwiseNotNode): 22040 (JSC::ASTBuilder::makeMultNode): 22041 (JSC::ASTBuilder::makeDivNode): 22042 (JSC::ASTBuilder::makeAddNode): 22043 (JSC::ASTBuilder::makeSubNode): 22044 (JSC::ASTBuilder::makeLeftShiftNode): 22045 (JSC::ASTBuilder::makeRightShiftNode): 22046 (JSC::ASTBuilder::makeFunctionCallNode): 22047 (JSC::ASTBuilder::makeBinaryNode): 22048 (JSC::ASTBuilder::makeAssignNode): 22049 (JSC::ASTBuilder::makePrefixNode): 22050 (JSC::ASTBuilder::makePostfixNode): 22051 * parser/JSParser.cpp: Added. 22052 (JSC::JSParser::AllowInOverride::AllowInOverride): 22053 (JSC::JSParser::AllowInOverride::~AllowInOverride): 22054 (JSC::JSParser::token): 22055 (JSC::JSParser::next): 22056 (JSC::JSParser::consume): 22057 (JSC::JSParser::match): 22058 (JSC::JSParser::tokenStart): 22059 (JSC::JSParser::tokenLine): 22060 (JSC::JSParser::tokenEnd): 22061 (JSC::JSParser::): 22062 (JSC::JSParser::autoSemiColon): 22063 (JSC::JSParser::canRecurse): 22064 (JSC::JSParser::lastTokenEnd): 22065 (JSC::jsParse): 22066 (JSC::JSParser::JSParser): 22067 (JSC::JSParser::parseProgram): 22068 (JSC::JSParser::allowAutomaticSemicolon): 22069 (JSC::JSParser::parseSourceElements): 22070 (JSC::JSParser::parseVarDeclaration): 22071 (JSC::JSParser::parseConstDeclaration): 22072 (JSC::JSParser::parseDoWhileStatement): 22073 (JSC::JSParser::parseWhileStatement): 22074 (JSC::JSParser::parseVarDeclarationList): 22075 (JSC::JSParser::parseConstDeclarationList): 22076 (JSC::JSParser::parseForStatement): 22077 (JSC::JSParser::parseBreakStatement): 22078 (JSC::JSParser::parseContinueStatement): 22079 (JSC::JSParser::parseReturnStatement): 22080 (JSC::JSParser::parseThrowStatement): 22081 (JSC::JSParser::parseWithStatement): 22082 (JSC::JSParser::parseSwitchStatement): 22083 (JSC::JSParser::parseSwitchClauses): 22084 (JSC::JSParser::parseSwitchDefaultClause): 22085 (JSC::JSParser::parseTryStatement): 22086 (JSC::JSParser::parseDebuggerStatement): 22087 (JSC::JSParser::parseBlockStatement): 22088 (JSC::JSParser::parseStatement): 22089 (JSC::JSParser::parseFormalParameters): 22090 (JSC::JSParser::parseFunctionBody): 22091 (JSC::JSParser::parseFunctionInfo): 22092 (JSC::JSParser::parseFunctionDeclaration): 22093 (JSC::JSParser::parseExpressionOrLabelStatement): 22094 (JSC::JSParser::parseExpressionStatement): 22095 (JSC::JSParser::parseIfStatement): 22096 (JSC::JSParser::parseExpression): 22097 (JSC::JSParser::parseAssignmentExpression): 22098 (JSC::JSParser::parseConditionalExpression): 22099 (JSC::isUnaryOp): 22100 (JSC::JSParser::isBinaryOperator): 22101 (JSC::JSParser::parseBinaryExpression): 22102 (JSC::JSParser::parseProperty): 22103 (JSC::JSParser::parseObjectLiteral): 22104 (JSC::JSParser::parseArrayLiteral): 22105 (JSC::JSParser::parsePrimaryExpression): 22106 (JSC::JSParser::parseArguments): 22107 (JSC::JSParser::parseMemberExpression): 22108 (JSC::JSParser::parseUnaryExpression): 22109 * parser/JSParser.h: Added. 22110 (JSC::): 22111 (JSC::JSTokenInfo::JSTokenInfo): 22112 * parser/Lexer.cpp: 22113 (JSC::Lexer::lex): 22114 * parser/Lexer.h: 22115 (JSC::Lexer::setLastLineNumber): 22116 (JSC::Lexer::lastLineNumber): 22117 * parser/NodeConstructors.h: 22118 (JSC::Node::Node): 22119 * parser/Parser.cpp: 22120 (JSC::Parser::parse): 22121 * parser/SyntaxChecker.h: Added. 22122 (JSC::SyntaxChecker::SyntaxChecker): 22123 (JSC::SyntaxChecker::createSourceElements): 22124 (JSC::SyntaxChecker::makeFunctionCallNode): 22125 (JSC::SyntaxChecker::appendToComma): 22126 (JSC::SyntaxChecker::createCommaExpr): 22127 (JSC::SyntaxChecker::makeAssignNode): 22128 (JSC::SyntaxChecker::makePrefixNode): 22129 (JSC::SyntaxChecker::makePostfixNode): 22130 (JSC::SyntaxChecker::makeTypeOfNode): 22131 (JSC::SyntaxChecker::makeDeleteNode): 22132 (JSC::SyntaxChecker::makeNegateNode): 22133 (JSC::SyntaxChecker::makeBitwiseNotNode): 22134 (JSC::SyntaxChecker::createLogicalNot): 22135 (JSC::SyntaxChecker::createUnaryPlus): 22136 (JSC::SyntaxChecker::createVoid): 22137 (JSC::SyntaxChecker::thisExpr): 22138 (JSC::SyntaxChecker::createResolve): 22139 (JSC::SyntaxChecker::createObjectLiteral): 22140 (JSC::SyntaxChecker::createArray): 22141 (JSC::SyntaxChecker::createNumberExpr): 22142 (JSC::SyntaxChecker::createString): 22143 (JSC::SyntaxChecker::createBoolean): 22144 (JSC::SyntaxChecker::createNull): 22145 (JSC::SyntaxChecker::createBracketAccess): 22146 (JSC::SyntaxChecker::createDotAccess): 22147 (JSC::SyntaxChecker::createRegex): 22148 (JSC::SyntaxChecker::createNewExpr): 22149 (JSC::SyntaxChecker::createConditionalExpr): 22150 (JSC::SyntaxChecker::createAssignResolve): 22151 (JSC::SyntaxChecker::createFunctionExpr): 22152 (JSC::SyntaxChecker::createFunctionBody): 22153 (JSC::SyntaxChecker::createArguments): 22154 (JSC::SyntaxChecker::createArgumentsList): 22155 (JSC::SyntaxChecker::createProperty): 22156 (JSC::SyntaxChecker::createPropertyList): 22157 (JSC::SyntaxChecker::createElementList): 22158 (JSC::SyntaxChecker::createFormalParameterList): 22159 (JSC::SyntaxChecker::createClause): 22160 (JSC::SyntaxChecker::createClauseList): 22161 (JSC::SyntaxChecker::setUsesArguments): 22162 (JSC::SyntaxChecker::createFuncDeclStatement): 22163 (JSC::SyntaxChecker::createBlockStatement): 22164 (JSC::SyntaxChecker::createExprStatement): 22165 (JSC::SyntaxChecker::createIfStatement): 22166 (JSC::SyntaxChecker::createForLoop): 22167 (JSC::SyntaxChecker::createForInLoop): 22168 (JSC::SyntaxChecker::createEmptyStatement): 22169 (JSC::SyntaxChecker::createVarStatement): 22170 (JSC::SyntaxChecker::createReturnStatement): 22171 (JSC::SyntaxChecker::createBreakStatement): 22172 (JSC::SyntaxChecker::createContinueStatement): 22173 (JSC::SyntaxChecker::createTryStatement): 22174 (JSC::SyntaxChecker::createSwitchStatement): 22175 (JSC::SyntaxChecker::createWhileStatement): 22176 (JSC::SyntaxChecker::createWithStatement): 22177 (JSC::SyntaxChecker::createDoWhileStatement): 22178 (JSC::SyntaxChecker::createLabelStatement): 22179 (JSC::SyntaxChecker::createThrowStatement): 22180 (JSC::SyntaxChecker::createDebugger): 22181 (JSC::SyntaxChecker::createConstStatement): 22182 (JSC::SyntaxChecker::appendConstDecl): 22183 (JSC::SyntaxChecker::createGetterOrSetterProperty): 22184 (JSC::SyntaxChecker::appendStatement): 22185 (JSC::SyntaxChecker::addVar): 22186 (JSC::SyntaxChecker::combineCommaNodes): 22187 (JSC::SyntaxChecker::evalCount): 22188 (JSC::SyntaxChecker::appendBinaryExpressionInfo): 22189 (JSC::SyntaxChecker::operatorStackPop): 22190 * runtime/JSGlobalData.h: 22191 * wtf/Platform.h: 22192 * wtf/ThreadSpecific.h: 22193 (WTF::T): 22194 22195 2010-06-23 Jedrzej Nowacki <jedrzej.nowacki (a] nokia.com> 22196 22197 Reviewed by Simon Hausmann. 22198 22199 Optimization of the QScriptValuePrivate. 22200 22201 Patch change only internals of the QScriptValuePrivate. 22202 Most of the QScriptValuePrivate's attributes were moved 22203 into an union. 22204 22205 [Qt] Optimization of the QScriptVAluePrivate. 22206 https://bugs.webkit.org/show_bug.cgi?id=40415 22207 22208 * qt/api/qscriptengine_p.cpp: 22209 (QScriptEnginePrivate::globalObject): 22210 * qt/api/qscriptvalue_p.h: 22211 (QScriptValuePrivate::): 22212 (QScriptValuePrivate::~QScriptValuePrivate): 22213 (QScriptValuePrivate::QScriptValuePrivate): 22214 (QScriptValuePrivate::toString): 22215 (QScriptValuePrivate::toNumber): 22216 (QScriptValuePrivate::toBool): 22217 (QScriptValuePrivate::toObject): 22218 (QScriptValuePrivate::equals): 22219 (QScriptValuePrivate::strictlyEquals): 22220 (QScriptValuePrivate::assignEngine): 22221 (QScriptValuePrivate::operator JSValueRef): 22222 (QScriptValuePrivate::operator JSObjectRef): 22223 (QScriptValuePrivate::refinedJSValue): 22224 22225 2010-06-23 Kwang Yul Seo <skyul (a] company100.net> 22226 22227 Reviewed by Oliver Hunt. 22228 22229 [GTK] Implement ThreadSpecific with glib 22230 https://bugs.webkit.org/show_bug.cgi?id=39829 22231 22232 Implement ThreadSpecific with glib's GStaticPrivate. 22233 This patch makes it possible to build GTK port without pthread. 22234 22235 * wtf/ThreadSpecific.h: 22236 (WTF::::ThreadSpecific): 22237 (WTF::::~ThreadSpecific): 22238 (WTF::::get): 22239 (WTF::::set): 22240 (WTF::::destroy): 22241 22242 2010-06-23 Leandro Pereira <leandro (a] profusion.mobi> 22243 22244 Unreviewed build fix. 22245 22246 * CMakeLists.txt: Add runtime/RegExpCache.cpp. 22247 22248 2010-06-22 Renata Hodovan <hodovan (a] inf.u-szeged.hu> 22249 22250 Reviewed by Geoffrey Garen. 22251 22252 Adding regular expression caching to JavaScriptCore 22253 https://bugs.webkit.org/show_bug.cgi?id=38142 22254 22255 The cache is based on Round Robin eviction policy, and 22256 can cache at most 256 character long regular expressions, 22257 and at most 256 of them. These values can be changed at compile time. 22258 22259 * GNUmakefile.am: 22260 * JavaScriptCore.gypi: 22261 * JavaScriptCore.pro: 22262 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: 22263 * JavaScriptCore.xcodeproj/project.pbxproj: 22264 * bytecompiler/NodesCodegen.cpp: 22265 (JSC::RegExpNode::emitBytecode): 22266 * runtime/JSGlobalData.cpp: 22267 (JSC::JSGlobalData::JSGlobalData): 22268 (JSC::JSGlobalData::~JSGlobalData): 22269 * runtime/JSGlobalData.h: 22270 (JSC::JSGlobalData::regExpCache): 22271 * runtime/RegExpCache.cpp: Added. 22272 (JSC::RegExpCache::lookupOrCreate): 22273 (JSC::RegExpCache::create): 22274 (JSC::RegExpCache::RegExpCache): 22275 * runtime/RegExpCache.h: Added. 22276 * runtime/RegExpConstructor.cpp: 22277 (JSC::constructRegExp): 22278 * runtime/RegExpKey.h: Added. 22279 (JSC::RegExpKey::RegExpKey): 22280 (JSC::RegExpKey::getFlagsValue): 22281 (WTF::operator==): 22282 (WTF::): 22283 * runtime/RegExpPrototype.cpp: 22284 (JSC::regExpProtoFuncCompile): 22285 * runtime/StringPrototype.cpp: 22286 (JSC::stringProtoFuncMatch): 22287 (JSC::stringProtoFuncSearch): 22288 22289 2010-06-22 Gabor Loki <loki (a] webkit.org> 22290 22291 Reviewed by Geoffrey Garen. 22292 22293 Add native call support for ARM and Thumb-2 JIT. 22294 https://bugs.webkit.org/show_bug.cgi?id=40231 22295 22296 * jit/JITOpcodes.cpp: 22297 (JSC::JIT::privateCompileCTINativeCall): 22298 * jit/JITOpcodes32_64.cpp: 22299 (JSC::JIT::privateCompileCTINativeCall): 22300 * wtf/Platform.h: 22301 22302 2010-06-21 Oliver Hunt <oliver (a] apple.com> 22303 22304 Reviewed by Geoffrey Garen. 22305 22306 Make JSC more resilient in the face of parse failures 22307 https://bugs.webkit.org/show_bug.cgi?id=40951 22308 22309 A number of recent bugs have occurred due to issues like miscounting 22310 BOMs, etc which lead to interesting crashes later on. Adding this 22311 logic hardens JSC in the face of these errors, and has no impact on 22312 performance (32bit jit actually gets 0.7% faster but I put that down 22313 to cache effects). 22314 22315 * bytecode/CodeBlock.cpp: 22316 (JSC::CodeBlock::reparseForExceptionInfoIfNecessary): 22317 (JSC::CodeBlock::lineNumberForBytecodeOffset): 22318 (JSC::CodeBlock::expressionRangeForBytecodeOffset): 22319 (JSC::CodeBlock::getByIdExceptionInfoForBytecodeOffset): 22320 * bytecode/CodeBlock.h: 22321 (JSC::CodeBlock::bytecodeOffset): 22322 * interpreter/Interpreter.cpp: 22323 (JSC::Interpreter::execute): 22324 (JSC::Interpreter::executeCall): 22325 (JSC::Interpreter::executeConstruct): 22326 (JSC::Interpreter::prepareForRepeatCall): 22327 (JSC::Interpreter::privateExecute): 22328 * jit/JITOpcodes.cpp: 22329 (JSC::JIT::privateCompileCTIMachineTrampolines): 22330 * jit/JITOpcodes32_64.cpp: 22331 (JSC::JIT::privateCompileCTIMachineTrampolines): 22332 * jit/JITStubs.cpp: 22333 (JSC::DEFINE_STUB_FUNCTION): 22334 * runtime/ArrayPrototype.cpp: 22335 (JSC::isNumericCompareFunction): 22336 * runtime/Executable.cpp: 22337 (JSC::FunctionExecutable::compileForCall): 22338 (JSC::FunctionExecutable::compileForConstruct): 22339 (JSC::FunctionExecutable::generateJITCodeForCall): 22340 (JSC::FunctionExecutable::generateJITCodeForConstruct): 22341 (JSC::FunctionExecutable::reparseExceptionInfo): 22342 (JSC::EvalExecutable::reparseExceptionInfo): 22343 * runtime/Executable.h: 22344 (JSC::FunctionExecutable::bytecodeForCall): 22345 (JSC::FunctionExecutable::bytecodeForConstruct): 22346 * runtime/JSGlobalData.cpp: 22347 (JSC::JSGlobalData::numericCompareFunction): 22348 22349 2010-06-21 John Sullivan <sullivan (a] apple.com> 22350 22351 Reviewed by Adam Roben. 22352 22353 RetainPtr can't be used in HashMaps or HashSets 22354 <https://bugs.webkit.org/show_bug.cgi?id=40938> 22355 22356 Added hashing knowledge similar to that in COMPtr.h. 22357 22358 * wtf/RetainPtr.h: 22359 (WTF::RetainPtr::RetainPtr): 22360 New function, copied from COMPtr.h but for the type change. 22361 (WTF::RetainPtr::isHashTableDeletedValue): 22362 Ditto. 22363 (WTF::RetainPtr::hashTableDeletedValue): 22364 Ditto. 22365 Added template code for HashTraits and PtrHash copied from COMPtr.h but for the type change. 22366 The only difference is that constructDeletedValue() matches the RefPtr implementation (in HashTraits.h) 22367 rather than the COMPtr implementation. 22368 22369 2010-06-19 Oliver Hunt <oliver (a] apple.com> 22370 22371 Reviewed by Geoffrey Garen. 22372 22373 Need to ensure that we grow the RegisterFile when creating a callframe for host code 22374 https://bugs.webkit.org/show_bug.cgi?id=40858 22375 <rdar://problem/8108986> 22376 22377 In the past the use of the callframe in hostcode was much more 22378 limited. Now that we expect the callframe to always be valid 22379 we need to grow the RegisterFile so that this is actually the 22380 case. In this particular case the problem was failing to grow 22381 the registerfile could lead to a callframe that extended beyond 22382 RegisterFiler::end(), so vm re-entry would clobber the callframe 22383 other scenarios could also lead to badness. 22384 22385 I was unable to construct a simple testcase to trigger badness, 22386 and any such testcase would be so dependent on exact vm stack 22387 layout that it would be unlikely to work as a testcase following 22388 any callframe or register allocation changes anyway. 22389 22390 Thankfully the new assertion I added should help to catch these 22391 failures in future, and triggers on a couple of tests currently. 22392 22393 * interpreter/CallFrame.cpp: 22394 (JSC::CallFrame::registerFile): 22395 * interpreter/CallFrame.h: 22396 (JSC::ExecState::init): 22397 * interpreter/Interpreter.cpp: 22398 (JSC::Interpreter::privateExecute): 22399 * jit/JITStubs.cpp: 22400 (JSC::DEFINE_STUB_FUNCTION): 22401 22402 2010-06-21 Satish Sampath <satish (a] chromium.org> 22403 22404 Reviewed by Steve Block. 22405 22406 Speech Input Patch 0: Added compilation argument to conditionally compile pending patches. 22407 https://bugs.webkit.org/show_bug.cgi?id=40878 22408 22409 * Configurations/FeatureDefines.xcconfig: 22410 22411 2010-06-21 Kwang Yul Seo <skyul (a] company100.net> 22412 22413 Reviewed by Kent Tamura. 22414 22415 [BREWMP] Use global new/delete operator overloading with USE_SYSTEM_MALLOC=1 22416 https://bugs.webkit.org/show_bug.cgi?id=40653 22417 22418 Currently, other ports do not use global new/delete operator overloading 22419 when USE_SYSTEM_MALLOC=1. Brew MP uses system malloc, but it needs to enable 22420 "global fastMalloc new" because the default new/delete causes crash on device. 22421 We need to replace them with Brew MP's MALLOC/FREE. 22422 22423 * wtf/FastMalloc.h: 22424 22425 2010-06-18 Jocelyn Turcotte <jocelyn.turcotte (a] nokia.com> 22426 22427 Reviewed by Simon Hausmann. 22428 22429 [Qt] Work around a build problem with libjscore on Symbian. 22430 https://bugs.webkit.org/show_bug.cgi?id=40840 22431 22432 Sbsv2 sometimes have problems with debug/release configuration 22433 determination causing QtWebKit in release to try linking with the debug 22434 JavaScriptCore static library. This patch limit the jscore/jscored 22435 r58306 fix necessary for mac builds only to the mac platform to prevent the 22436 different name problem. 22437 22438 The real fix would be to fix qmake or the toolchain, this patch might 22439 help meanwhile. 22440 22441 * JavaScriptCore.pri: 22442 22443 2010-06-21 Patrick Gansterer <paroga (a] paroga.com> 22444 22445 Reviewed by Kent Tamura. 22446 22447 Buildfix after r61338. 22448 https://bugs.webkit.org/show_bug.cgi?id=40888 22449 22450 roundUpAllocationSize is needed in RegisterFile.h. 22451 22452 * jit/ExecutableAllocator.h: 22453 22454 2010-06-19 Kwang Yul Seo <skyul (a] company100.net> 22455 22456 Reviewed by Darin Adler. 22457 22458 Include <string.h> in StringExtras.h 22459 https://bugs.webkit.org/show_bug.cgi?id=40808 22460 22461 Without string.h, RVCT 2.2 can't compile StringExtras.h. 22462 It can't find strlen and strncmp. 22463 22464 * wtf/StringExtras.h: 22465 22466 2010-06-19 Thiago Macieira <thiago.macieira (a] nokia.com> 22467 22468 Reviewed by Kenneth Rohde Christiansen. 22469 22470 Don't use __attribute__((may_alias)) with the Intel compiler, 22471 as it doesn't understand it. 22472 22473 * wtf/Vector.h: 22474 22475 2010-06-19 Thiago Macieira <thiago.macieira (a] nokia.com> 22476 22477 Reviewed by Kenneth Rohde Christiansen. 22478 22479 Fix compilation with the Intel C++ compiler (11.1.072). 22480 22481 Like RVCT, label pointers must be void*, not const void*. 22482 22483 * bytecode/Opcode.h: 22484 22485 2010-06-19 Thiago Macieira <thiago.macieira (a] nokia.com> 22486 22487 Reviewed by Kenneth Rohde Christiansen. 22488 22489 Add the WTF_COMPILER_INTEL for when the Intel compiler is used 22490 for building. Usually, the Intel compiler masquerades as 22491 another compiler in the system and gets away with it, but some 22492 times specific fixes are required (such as when using language 22493 extensions). 22494 22495 * wtf/Platform.h: 22496 22497 2010-06-18 Oliver Hunt <oliver (a] apple.com> 22498 22499 Reviewed by Geoffrey Garen. 22500 22501 Incorrect handling of multiple BOMs scattered through a file. 22502 https://bugs.webkit.org/show_bug.cgi?id=40865 22503 22504 When determining the offset of open and close braces in a source 22505 with BOMs we were finishing our count early as we failed to account 22506 for BOMs prior to the open/close brace positions effecting those 22507 positions. 22508 22509 * parser/Lexer.cpp: 22510 (JSC::Lexer::sourceCode): 22511 22512 2010-06-17 Oliver Hunt <oliver (a] apple.com> 22513 22514 Reviewed by Sam Weinig. 22515 22516 Don't throw away exception information for functions that use exceptions 22517 https://bugs.webkit.org/show_bug.cgi?id=40786 22518 22519 Simple patch to stop JSC from throwing away the exception information 22520 of a function that uses "exceptiony" features like try and throw. This 22521 is a speed up for catching expressions but it's difficult to quantify as 22522 the old cost of reparsing is amortised over all exceptions caught in the 22523 effected function. 22524 22525 * bytecode/CodeBlock.cpp: 22526 (JSC::CodeBlock::reparseForExceptionInfoIfNecessary): 22527 * bytecompiler/BytecodeGenerator.cpp: 22528 (JSC::BytecodeGenerator::generate): 22529 (JSC::BytecodeGenerator::emitCatch): 22530 * bytecompiler/BytecodeGenerator.h: 22531 (JSC::BytecodeGenerator::emitThrow): 22532 22533 2010-06-18 Anders Carlsson <andersca (a] apple.com> 22534 22535 Reviewed by Sam Weinig. 22536 22537 Add PlatformStrategies and PluginStrategy classes. 22538 https://bugs.webkit.org/show_bug.cgi?id=40850 22539 22540 * wtf/Platform.h: 22541 22542 2010-06-18 Leandro Pereira <leandro (a] profusion.mobi> 22543 22544 [EFL] Unreviewed build fix. 22545 22546 * wtf/CMakeLists.txt: Add MD5.cpp. 22547 22548 2010-06-17 Shu Chang <chang.shu (a] nokia.com> 22549 22550 Reviewed by Kenneth Rohde Christiansen. 22551 22552 [Qt] Fix the link error on symbian with ENABLE_JIT=0. 22553 1. Add "#if ENABLE(JIT)" in the header file; 22554 2. Put feature enable/disable logic to a common.pri so 22555 that both JavaScriptCore.pri and WebCore.pri can share. 22556 22557 https://bugs.webkit.org/show_bug.cgi?id=40780 22558 22559 * JavaScriptCore.pri: 22560 * jit/ExecutableAllocator.h: 22561 22562 2010-06-17 Darin Adler <darin (a] apple.com> 22563 22564 Reviewed by Sam Weinig. 22565 22566 Use adoptRef and create functions in more code paths 22567 https://bugs.webkit.org/show_bug.cgi?id=40760 22568 22569 * API/JSClassRef.h: Removed unneeded include of RefCounted.h. 22570 * API/JSWeakObjectMapRefPrivate.cpp: Ditto. 22571 22572 * bytecode/CodeBlock.h: 22573 (JSC::FunctionCodeBlock::FunctionCodeBlock): Use the 22574 SharedSymbolTable::create function instead of calling new directly. 22575 22576 * runtime/SymbolTable.h: Added a create function to the SharedSymbolTable 22577 class and made the constructor private. 22578 22579 2010-06-17 Mark Brand <mabrand (a] mabrand.nl> 22580 22581 Reviewed by Simon Hausmann. 22582 22583 [Qt] use "win32-g++*" scope to match all MinGW makespecs 22584 22585 The scope "win32-g++" comes from the name of the makespec. However, it 22586 is frequently used to check for MinGW. This works fine as long as 22587 win32-g++ is the only makespec for MinGW. Now we need the wildcard 22588 to cover "win32-g++-cross" as well. 22589 22590 * JavaScriptCore.pro: 22591 22592 2010-06-16 Darin Adler <darin (a] apple.com> 22593 22594 Reviewed by David Levin. 22595 22596 Deploy adoptRef in more places, including all HTML and MathML elements 22597 https://bugs.webkit.org/show_bug.cgi?id=39941 22598 22599 * wtf/ThreadSafeShared.h: Made the constructor protected and removed the 22600 unneeded support for initial reference counts other than 1. 22601 22602 2010-06-16 Peter Varga <pvarga (a] inf.u-szeged.hu> 22603 22604 Reviewed by Geoffrey Garen. 22605 22606 Store matchBegin directly in the array of output instead of the stack. 22607 https://bugs.webkit.org/show_bug.cgi?id=38988 22608 22609 * yarr/RegexJIT.cpp: 22610 (JSC::Yarr::RegexGenerator::generateDisjunction): 22611 (JSC::Yarr::RegexGenerator::generate): 22612 22613 2010-06-15 Anders Carlsson <andersca (a] apple.com> 22614 22615 Reviewed by Sam Weinig. 22616 22617 Make JavaScriptCore build with clang++. 22618 22619 * jit/JITInlineMethods.h: 22620 (JSC::JIT::emitPutVirtualRegister): 22621 Explicitly cast to an int. 22622 22623 * yarr/RegexCompiler.cpp: 22624 (JSC::Yarr::compileRegex): 22625 Return 0 instead of false. 22626 22627 2010-06-15 Adam Roben <aroben (a] apple.com> 22628 22629 Make WebCore's and JavaScriptCore's DerivedSources available for debugging in production builds 22630 22631 Fixes <http://webkit.org/b/40626> <rdar://problem/8094205>. 22632 22633 Reviewed by Sam Weinig. 22634 22635 * JavaScriptCore.vcproj/JavaScriptCore.make: Copy the contents of 22636 JavaScriptCore's DerivedSources directory to 22637 AppleInternal/Sources/JavaScriptCore. 22638 22639 2010-06-15 Gabor Loki <loki (a] webkit.org> 22640 22641 Rubber-stamped by Eric Seidel. 22642 22643 Fix invalid access to non-static data member warning in JITPropertyAccess32_64 on ARM 22644 https://bugs.webkit.org/show_bug.cgi?id=40423 22645 22646 Using OBJECT_OFFSETOF macro instead of objectof to bypass access to 22647 non-static data member warning. 22648 22649 * jit/JITPropertyAccess32_64.cpp: 22650 (JSC::JIT::privateCompilePutByIdTransition): 22651 22652 2010-06-11 Eric Seidel <eric (a] webkit.org> 22653 22654 Reviewed by Adam Barth. 22655 22656 Rename the rest of the *Tokenizer classes to *DocumentParser 22657 https://bugs.webkit.org/show_bug.cgi?id=40507 22658 22659 * wtf/Platform.h: 22660 - fixed a comment to match new names. 22661 22662 2010-06-11 Jedrzej Nowacki <jedrzej.nowacki (a] nokia.com> 22663 22664 Reviewed by Simon Hausmann. 22665 22666 [Qt] Explicit conversions from QtScript types to JSC opaque types were removed. 22667 https://bugs.webkit.org/show_bug.cgi?id=40412 22668 22669 Conversion between a JSC C types and a QtScript private types, takes 22670 main part of the source code. In most cases a mapping between the types 22671 is one to one. New cast operators were added to simplify the code. 22672 22673 The QScriptValuePrivate could be casted to the JSValueRef and the JSObjectRef. 22674 The QScriptEnginePrivate could be casted to the JSGlobalContext. 22675 The QScriptProgramPrivate could be casted to the JSStringRef. 22676 22677 * qt/api/qscriptengine_p.cpp: 22678 (QScriptEnginePrivate::evaluate): 22679 (QScriptEnginePrivate::newObject): 22680 (QScriptEnginePrivate::globalObject): 22681 * qt/api/qscriptengine_p.h: 22682 (QScriptEnginePrivate::operator JSGlobalContextRef): 22683 * qt/api/qscriptprogram_p.h: 22684 (QScriptProgramPrivate::operator JSStringRef): 22685 * qt/api/qscriptsyntaxcheckresult.cpp: 22686 (QScriptSyntaxCheckResultPrivate::~QScriptSyntaxCheckResultPrivate): 22687 (QScriptSyntaxCheckResultPrivate::errorMessage): 22688 (QScriptSyntaxCheckResultPrivate::errorLineNumber): 22689 * qt/api/qscriptvalue_p.h: 22690 (QScriptValuePrivate::~QScriptValuePrivate): 22691 (QScriptValuePrivate::QScriptValuePrivate): 22692 (QScriptValuePrivate::isBool): 22693 (QScriptValuePrivate::isNumber): 22694 (QScriptValuePrivate::isNull): 22695 (QScriptValuePrivate::isString): 22696 (QScriptValuePrivate::isUndefined): 22697 (QScriptValuePrivate::isFunction): 22698 (QScriptValuePrivate::toString): 22699 (QScriptValuePrivate::toNumber): 22700 (QScriptValuePrivate::toBool): 22701 (QScriptValuePrivate::toObject): 22702 (QScriptValuePrivate::equals): 22703 (QScriptValuePrivate::strictlyEquals): 22704 (QScriptValuePrivate::instanceOf): 22705 (QScriptValuePrivate::call): 22706 (QScriptValuePrivate::operator JSValueRef): 22707 (QScriptValuePrivate::operator JSObjectRef): 22708 (QScriptValuePrivate::setValue): 22709 (QScriptValuePrivate::inherits): 22710 (QScriptValuePrivate::refinedJSValue): 22711 22712 2010-05-31 Jocelyn Turcotte <jocelyn.turcotte (a] nokia.com> 22713 22714 Reviewed by Simon Hausmann. 22715 22716 [Qt] Implement the simple text code path. 22717 https://bugs.webkit.org/show_bug.cgi?id=40077 22718 22719 Remove the FONT_FAST_PATH macro and use the Qt's 22720 fast text implementation instead of the one of WebKit. 22721 22722 The Qt::TextBypassShaping flag is used to tell Qt to 22723 only use the glyph advances. 22724 22725 Qt 4.7 is needed to get this flag thus the complex path is always 22726 used if QtWebKit is compiled against an earlier version. 22727 22728 Contrary to the WebKit's implementation, the complex code path 22729 is taken if the text is RightToLeft, justified or is formatted 22730 with non-zero letter or word spacing. 22731 22732 * wtf/Platform.h: 22733 22734 2010-06-11 Luiz Agostini <luiz.agostini (a] openbossa.org> 22735 22736 Reviewed by Kenneth Rohde Christiansen. 22737 22738 add codePointCompare to JavaScriptCore.exp 22739 https://bugs.webkit.org/show_bug.cgi?id=40426 22740 22741 * JavaScriptCore.exp: 22742 22743 2010-06-10 Oliver Hunt <oliver (a] apple.com> 22744 22745 Reviewed by Maciej Stachowiak. 22746 22747 Math Javascript Bug on Safari 5 (webkit 533.16) under "32bit" mode 22748 https://bugs.webkit.org/show_bug.cgi?id=40367 22749 22750 If we're in the slow case of right shift we must write the type tag as 22751 the only reason we hit this code path is because we know we're working 22752 with a double. eg. we are guaranteed that the tag cannot be reused. 22753 22754 * jit/JITArithmetic32_64.cpp: 22755 (JSC::JIT::emitRightShiftSlowCase): 22756 22757 2010-06-10 Kwang Yul Seo <skyul (a] company100.net> 22758 22759 Reviewed by Eric Seidel. 22760 22761 Remove weakRandomNumber 22762 https://bugs.webkit.org/show_bug.cgi?id=40291 22763 22764 weakRandomNumber is used nowhere. Currently, WeakRandom is used instead. 22765 22766 * wtf/RandomNumber.cpp: 22767 * wtf/RandomNumber.h: 22768 22769 2010-06-09 Alexey Proskuryakov <ap (a] apple.com> 22770 22771 Reviewed by Brady Eidson. 22772 22773 Export StringImpl::ascii(). It might be not very useful, but it's a public function. 22774 22775 * JavaScriptCore.exp: 22776 22777 2010-06-09 Leandro Pereira <leandro (a] profusion.mobi> 22778 22779 Reviewed by Adam Treat. 22780 22781 [EFL] Allow building core libraries as shared objects to speed up 22782 linking time on machines with small amounts of memory. 22783 http://webkit.org/b/39899 22784 22785 * CMakeLists.txt: If building with shared core, install the lib. 22786 * jsc/CMakeListsEfl.txt: Needs Glib and Ecore to link dynamically. 22787 * wtf/CMakeLists.txt: If building with shared core, install the lib. 22788 22789 2010-06-09 Gabor Loki <loki (a] webkit.org> 22790 22791 Reviewed by David Levin. 22792 22793 Remove some unused variable warnings from JITOpcodes 22794 https://bugs.webkit.org/show_bug.cgi?id=40298 22795 22796 * jit/JITOpcodes.cpp: 22797 (JSC::JIT::privateCompileCTINativeCall): 22798 * jit/JITOpcodes32_64.cpp: 22799 (JSC::JIT::privateCompileCTINativeCall): 22800 22801 2010-05-18 Yuzo Fujishima <yuzo (a] google.com> 22802 22803 Reviewed by Shinichiro Hamaji. 22804 22805 Fix for Bug 34529 - [CSSOM] issues with cssText and selectorText 22806 Add U16_LENGTH that is needed to implement CSS character serialization. 22807 https://bugs.webkit.org/show_bug.cgi?id=34529 22808 22809 * wtf/unicode/qt4/UnicodeQt4.h: 22810 * wtf/unicode/wince/UnicodeWince.h: 22811 22812 2010-06-08 Sheriff Bot <webkit.review.bot (a] gmail.com> 22813 22814 Unreviewed, rolling out r60830. 22815 http://trac.webkit.org/changeset/60830 22816 https://bugs.webkit.org/show_bug.cgi?id=40305 22817 22818 Broke the Windows build (Requested by abarth on #webkit). 22819 22820 * JavaScriptCore.vcproj/WTF/WTF.vcproj: 22821 * wtf/OwnPtrCommon.h: 22822 * wtf/brew/OwnPtrBrew.h: Removed. 22823 * wtf/win/OwnPtrWin.h: Removed. 22824 22825 2010-06-08 MORITA Hajime <morrita (a] google.com> 22826 22827 Unreviewed. An attempt to fix test break. 22828 22829 * Configurations/FeatureDefines.xcconfig: 22830 22831 2010-06-08 Kwang Yul Seo <skyul (a] company100.net> 22832 22833 Reviewed by Adam Barth. 22834 22835 Change OwnPtrCommon to include platform-specific headers 22836 https://bugs.webkit.org/show_bug.cgi?id=40279 22837 22838 Adding new type to OwnPtrCommon needlessly causes all ports to do full rebuilds. 22839 Change OwnPtrCommon to include platform-specific headers to avoid all ports rebuilds. 22840 22841 * JavaScriptCore.vcproj/WTF/WTF.vcproj: 22842 * wtf/OwnPtrCommon.h: 22843 * wtf/brew/OwnPtrBrew.h: Added. 22844 * wtf/win/OwnPtrWin.h: Added. 22845 22846 2010-06-07 MORITA Hajime <morrita (a] google.com> 22847 22848 Reviewed by Kent Tamura. 22849 22850 https://bugs.webkit.org/show_bug.cgi?id=40219 22851 [Mac] ENABLE_METER_TAG should be enabled 22852 22853 Added ENABLE_METER_TAG. 22854 22855 * Configurations/FeatureDefines.xcconfig: 22856 22857 2010-06-07 Kwang Yul Seo <skyul (a] company100.net> 22858 22859 Reviewed by Eric Seidel. 22860 22861 [BREWMP] Add more types to OwnPtr 22862 https://bugs.webkit.org/show_bug.cgi?id=39667 22863 22864 Add ISSL and ISocket to the list of OwnPtr-ed type. 22865 22866 * wtf/OwnPtrCommon.h: 22867 * wtf/brew/OwnPtrBrew.cpp: 22868 (WTF::deleteOwnedPtr): 22869 22870 2010-06-07 Benjamin Poulain <benjamin.poulain (a] nokia.com> 22871 22872 Reviewed by Simon Hausmann. 22873 22874 [Qt] Crash when compiling on Snow Leopard and running on Leopard 22875 https://bugs.webkit.org/show_bug.cgi?id=31403 22876 22877 Disable the use of pthread_setname_np and other symbols 22878 when targetting Leopard. 22879 22880 Use the defines TARGETING_XX instead of BUILDING_ON_XX 22881 for features that cannot be used before Snow Leopard. 22882 22883 * wtf/Platform.h: 22884 22885 2010-06-07 Gabor Loki <loki (a] webkit.org> 22886 22887 Reviewed by NOBODY (JSVALUE32_64 build fix). 22888 22889 * jit/JITOpcodes32_64.cpp: 22890 (JSC::JIT::privateCompileCTINativeCall): 22891 22892 2010-06-06 Gavin Barraclough <barraclough (a] apple.com> 22893 22894 Reviewed by NOBODY (windows build fix pt 2). 22895 22896 * JavaScriptCore.exp: 22897 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: 22898 22899 2010-06-06 Gavin Barraclough <barraclough (a] apple.com> 22900 22901 Reviewed by NOBODY (windows build fix pt 1). 22902 22903 * JavaScriptCore.exp: 22904 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: 22905 22906 2010-06-06 Gavin Barraclough <barraclough (a] apple.com> 22907 22908 Reviewed by Sam Weinig. 22909 22910 Bug 40214 - Clean up error construction / throwing in JSC. 22911 22912 The one egregious insanity here is that creating an error requires 22913 a VM-entry-esqe-host call (the string argument is wrapped as a JS 22914 object & pushed on the RegisterFile, then unwrapped back to a 22915 UString). Changing this also means you only require a global 22916 object, not an ExecState, to create an error. 22917 22918 The methods to create error objects are also parameterized 22919 requiring a switch on the type, which can be made cleaner and 22920 faster by moving to a separate method per error type. Code to add 22921 divot information to error had been duplicated, and is coalesced 22922 back into a single function. 22923 22924 Convenience methods added to create & throw type & syntax error 22925 with a default error message, since this is a common case. 22926 22927 Also, errors are currently thrown either using 22928 "throwError(exec, error)" or "exec->setException(error)" - unify 22929 on the former, since this is more commonly used. Add 22930 "throwVMError(exec, error)" equivalents, as a convenience for 22931 cases where the result was being wrapped in "JSValue::encode(...)". 22932 22933 * API/JSCallbackConstructor.cpp: 22934 (JSC::constructJSCallback): 22935 * API/JSCallbackFunction.cpp: 22936 (JSC::JSCallbackFunction::call): 22937 * API/JSCallbackObjectFunctions.h: 22938 (JSC::::getOwnPropertySlot): 22939 (JSC::::put): 22940 (JSC::::deleteProperty): 22941 (JSC::::construct): 22942 (JSC::::hasInstance): 22943 (JSC::::call): 22944 (JSC::::toNumber): 22945 (JSC::::toString): 22946 (JSC::::staticValueGetter): 22947 (JSC::::staticFunctionGetter): 22948 (JSC::::callbackGetter): 22949 * API/JSObjectRef.cpp: 22950 (JSObjectMakeError): 22951 * JavaScriptCore.exp: 22952 * bytecompiler/BytecodeGenerator.cpp: 22953 (JSC::BytecodeGenerator::emitNewError): 22954 (JSC::BytecodeGenerator::emitThrowExpressionTooDeepException): 22955 * bytecompiler/BytecodeGenerator.h: 22956 * bytecompiler/NodesCodegen.cpp: 22957 (JSC::ThrowableExpressionData::emitThrowError): 22958 (JSC::RegExpNode::emitBytecode): 22959 (JSC::PostfixErrorNode::emitBytecode): 22960 (JSC::PrefixErrorNode::emitBytecode): 22961 (JSC::AssignErrorNode::emitBytecode): 22962 (JSC::ForInNode::emitBytecode): 22963 (JSC::ContinueNode::emitBytecode): 22964 (JSC::BreakNode::emitBytecode): 22965 (JSC::ReturnNode::emitBytecode): 22966 (JSC::LabelNode::emitBytecode): 22967 * interpreter/CallFrame.h: 22968 * interpreter/Interpreter.cpp: 22969 (JSC::Interpreter::throwException): 22970 (JSC::Interpreter::privateExecute): 22971 * jit/JITStubs.cpp: 22972 (JSC::DEFINE_STUB_FUNCTION): 22973 * jsc.cpp: 22974 (functionRun): 22975 (functionLoad): 22976 (functionCheckSyntax): 22977 * parser/Nodes.h: 22978 * runtime/ArrayConstructor.cpp: 22979 (JSC::constructArrayWithSizeQuirk): 22980 * runtime/ArrayPrototype.cpp: 22981 (JSC::arrayProtoFuncToString): 22982 (JSC::arrayProtoFuncToLocaleString): 22983 (JSC::arrayProtoFuncJoin): 22984 (JSC::arrayProtoFuncFilter): 22985 (JSC::arrayProtoFuncMap): 22986 (JSC::arrayProtoFuncEvery): 22987 (JSC::arrayProtoFuncForEach): 22988 (JSC::arrayProtoFuncSome): 22989 (JSC::arrayProtoFuncReduce): 22990 (JSC::arrayProtoFuncReduceRight): 22991 * runtime/BooleanPrototype.cpp: 22992 (JSC::booleanProtoFuncToString): 22993 (JSC::booleanProtoFuncValueOf): 22994 * runtime/DatePrototype.cpp: 22995 (JSC::dateProtoFuncToString): 22996 (JSC::dateProtoFuncToUTCString): 22997 (JSC::dateProtoFuncToISOString): 22998 (JSC::dateProtoFuncToDateString): 22999 (JSC::dateProtoFuncToTimeString): 23000 (JSC::dateProtoFuncToLocaleString): 23001 (JSC::dateProtoFuncToLocaleDateString): 23002 (JSC::dateProtoFuncToLocaleTimeString): 23003 (JSC::dateProtoFuncGetTime): 23004 (JSC::dateProtoFuncGetFullYear): 23005 (JSC::dateProtoFuncGetUTCFullYear): 23006 (JSC::dateProtoFuncToGMTString): 23007 (JSC::dateProtoFuncGetMonth): 23008 (JSC::dateProtoFuncGetUTCMonth): 23009 (JSC::dateProtoFuncGetDate): 23010 (JSC::dateProtoFuncGetUTCDate): 23011 (JSC::dateProtoFuncGetDay): 23012 (JSC::dateProtoFuncGetUTCDay): 23013 (JSC::dateProtoFuncGetHours): 23014 (JSC::dateProtoFuncGetUTCHours): 23015 (JSC::dateProtoFuncGetMinutes): 23016 (JSC::dateProtoFuncGetUTCMinutes): 23017 (JSC::dateProtoFuncGetSeconds): 23018 (JSC::dateProtoFuncGetUTCSeconds): 23019 (JSC::dateProtoFuncGetMilliSeconds): 23020 (JSC::dateProtoFuncGetUTCMilliseconds): 23021 (JSC::dateProtoFuncGetTimezoneOffset): 23022 (JSC::dateProtoFuncSetTime): 23023 (JSC::setNewValueFromTimeArgs): 23024 (JSC::setNewValueFromDateArgs): 23025 (JSC::dateProtoFuncSetMilliSeconds): 23026 (JSC::dateProtoFuncSetUTCMilliseconds): 23027 (JSC::dateProtoFuncSetSeconds): 23028 (JSC::dateProtoFuncSetUTCSeconds): 23029 (JSC::dateProtoFuncSetMinutes): 23030 (JSC::dateProtoFuncSetUTCMinutes): 23031 (JSC::dateProtoFuncSetHours): 23032 (JSC::dateProtoFuncSetUTCHours): 23033 (JSC::dateProtoFuncSetDate): 23034 (JSC::dateProtoFuncSetUTCDate): 23035 (JSC::dateProtoFuncSetMonth): 23036 (JSC::dateProtoFuncSetUTCMonth): 23037 (JSC::dateProtoFuncSetFullYear): 23038 (JSC::dateProtoFuncSetUTCFullYear): 23039 (JSC::dateProtoFuncSetYear): 23040 (JSC::dateProtoFuncGetYear): 23041 (JSC::dateProtoFuncToJSON): 23042 * runtime/Error.cpp: 23043 (JSC::createError): 23044 (JSC::createEvalError): 23045 (JSC::createRangeError): 23046 (JSC::createReferenceError): 23047 (JSC::createSyntaxError): 23048 (JSC::createTypeError): 23049 (JSC::createURIError): 23050 (JSC::addErrorSourceInfo): 23051 (JSC::addErrorDivotInfo): 23052 (JSC::addErrorInfo): 23053 (JSC::hasErrorInfo): 23054 (JSC::throwError): 23055 (JSC::throwTypeError): 23056 (JSC::throwSyntaxError): 23057 * runtime/Error.h: 23058 (JSC::throwVMError): 23059 (JSC::throwVMTypeError): 23060 * runtime/ErrorConstructor.cpp: 23061 (JSC::constructWithErrorConstructor): 23062 (JSC::callErrorConstructor): 23063 * runtime/ErrorConstructor.h: 23064 * runtime/ErrorInstance.cpp: 23065 (JSC::ErrorInstance::ErrorInstance): 23066 (JSC::ErrorInstance::create): 23067 * runtime/ErrorInstance.h: 23068 * runtime/ErrorPrototype.cpp: 23069 (JSC::ErrorPrototype::ErrorPrototype): 23070 * runtime/ExceptionHelpers.cpp: 23071 (JSC::createStackOverflowError): 23072 (JSC::createUndefinedVariableError): 23073 (JSC::createInvalidParamError): 23074 (JSC::createNotAConstructorError): 23075 (JSC::createNotAFunctionError): 23076 (JSC::createNotAnObjectError): 23077 (JSC::throwOutOfMemoryError): 23078 * runtime/ExceptionHelpers.h: 23079 * runtime/Executable.cpp: 23080 (JSC::EvalExecutable::compile): 23081 (JSC::ProgramExecutable::checkSyntax): 23082 (JSC::ProgramExecutable::compile): 23083 * runtime/FunctionConstructor.cpp: 23084 (JSC::constructFunction): 23085 * runtime/FunctionPrototype.cpp: 23086 (JSC::functionProtoFuncToString): 23087 (JSC::functionProtoFuncApply): 23088 (JSC::functionProtoFuncCall): 23089 * runtime/Identifier.cpp: 23090 (JSC::Identifier::from): 23091 * runtime/Identifier.h: 23092 * runtime/JSArray.cpp: 23093 (JSC::JSArray::put): 23094 * runtime/JSFunction.cpp: 23095 (JSC::callHostFunctionAsConstructor): 23096 * runtime/JSGlobalObjectFunctions.cpp: 23097 (JSC::encode): 23098 (JSC::decode): 23099 (JSC::globalFuncEval): 23100 * runtime/JSONObject.cpp: 23101 (JSC::Stringifier::appendStringifiedValue): 23102 (JSC::Walker::walk): 23103 (JSC::JSONProtoFuncParse): 23104 (JSC::JSONProtoFuncStringify): 23105 * runtime/JSObject.cpp: 23106 (JSC::throwSetterError): 23107 (JSC::JSObject::put): 23108 (JSC::JSObject::putWithAttributes): 23109 (JSC::JSObject::defaultValue): 23110 (JSC::JSObject::hasInstance): 23111 (JSC::JSObject::defineOwnProperty): 23112 * runtime/JSObject.h: 23113 * runtime/JSValue.cpp: 23114 (JSC::JSValue::toObjectSlowCase): 23115 (JSC::JSValue::synthesizeObject): 23116 (JSC::JSValue::synthesizePrototype): 23117 * runtime/NativeErrorConstructor.cpp: 23118 (JSC::constructWithNativeErrorConstructor): 23119 (JSC::callNativeErrorConstructor): 23120 * runtime/NativeErrorConstructor.h: 23121 * runtime/NumberPrototype.cpp: 23122 (JSC::numberProtoFuncToString): 23123 (JSC::numberProtoFuncToLocaleString): 23124 (JSC::numberProtoFuncValueOf): 23125 (JSC::numberProtoFuncToFixed): 23126 (JSC::numberProtoFuncToExponential): 23127 (JSC::numberProtoFuncToPrecision): 23128 * runtime/ObjectConstructor.cpp: 23129 (JSC::objectConstructorGetPrototypeOf): 23130 (JSC::objectConstructorGetOwnPropertyDescriptor): 23131 (JSC::objectConstructorGetOwnPropertyNames): 23132 (JSC::objectConstructorKeys): 23133 (JSC::toPropertyDescriptor): 23134 (JSC::objectConstructorDefineProperty): 23135 (JSC::objectConstructorDefineProperties): 23136 (JSC::objectConstructorCreate): 23137 * runtime/ObjectPrototype.cpp: 23138 (JSC::objectProtoFuncDefineGetter): 23139 (JSC::objectProtoFuncDefineSetter): 23140 * runtime/RegExpConstructor.cpp: 23141 (JSC::constructRegExp): 23142 * runtime/RegExpObject.cpp: 23143 (JSC::RegExpObject::match): 23144 * runtime/RegExpPrototype.cpp: 23145 (JSC::regExpProtoFuncTest): 23146 (JSC::regExpProtoFuncExec): 23147 (JSC::regExpProtoFuncCompile): 23148 (JSC::regExpProtoFuncToString): 23149 * runtime/StringPrototype.cpp: 23150 (JSC::stringProtoFuncToString): 23151 23152 2010-06-05 Kwang Yul Seo <skyul (a] company100.net> 23153 23154 Reviewed by Eric Seidel. 23155 23156 [BREWMP] Add PLATFORM(BREWMP) guard for using std::xxx 23157 https://bugs.webkit.org/show_bug.cgi?id=39710 23158 23159 Build fix for BREW MP. 23160 23161 * wtf/MathExtras.h: 23162 23163 2010-06-04 Adam Barth <abarth (a] webkit.org> 23164 23165 Reviewed by Darin Adler. 23166 23167 HTML5 parser should be within 1% of old parser performance 23168 https://bugs.webkit.org/show_bug.cgi?id=40172 23169 23170 Fix cast in this operator= to allow for assignment between vectors with 23171 different inline capacities (as clearly intended by its author). 23172 23173 * wtf/Vector.h: 23174 (WTF::::operator): 23175 23176 2010-06-04 Jedrzej Nowacki <jedrzej.nowacki (a] nokia.com> 23177 23178 Reviewed by Kenneth Rohde Christiansen. 23179 23180 New QtScript API; QScriptValue::instanceOf. 23181 23182 New function create an easy way to check value's prototype hierarchy. 23183 23184 [Qt] QScriptValue should have an instanceOf method 23185 https://bugs.webkit.org/show_bug.cgi?id=40120 23186 23187 * qt/api/qscriptvalue.cpp: 23188 (QScriptValue::instanceOf): 23189 * qt/api/qscriptvalue.h: 23190 * qt/api/qscriptvalue_p.h: 23191 (QScriptValuePrivate::instanceOf): 23192 * qt/tests/qscriptvalue/tst_qscriptvalue.h: 23193 * qt/tests/qscriptvalue/tst_qscriptvalue_generated_comparison.cpp: 23194 (tst_QScriptValue::instanceOf_initData): 23195 (tst_QScriptValue::instanceOf_makeData): 23196 (tst_QScriptValue::instanceOf_test): 23197 23198 2010-06-04 Gavin Barraclough <barraclough (a] apple.com> 23199 23200 Reviewed by NOBODY (interpreter build fix). 23201 23202 * interpreter/Interpreter.cpp: 23203 (JSC::Interpreter::privateExecute): 23204 23205 2010-06-04 Mark Rowe <mrowe (a] apple.com> 23206 23207 Silence some warnings seen on the build bot. 23208 23209 * JavaScriptCore.JSVALUE32_64only.exp: Add a trailing newline. 23210 * JavaScriptCore.JSVALUE32only.exp: Ditto. 23211 * JavaScriptCore.JSVALUE64only.exp: Ditto. 23212 * JavaScriptCore.xcodeproj/project.pbxproj: Remove the .exp files from all targets so that Xcode doesn't 23213 complain about not knowing how to compile them. 23214 23215 2010-06-04 Gavin Barraclough <barraclough (a] apple.com> 23216 23217 Reviewed by Oliver Hunt. 23218 23219 Bug 40187 - Change function signature of NativeConstructor to match NativeFunction 23220 23221 Mostly for consistency, but constructor & args arguments are redundant, 23222 and this will help if we wish to be able to JIT calls to more constructors. 23223 23224 * API/JSCallbackConstructor.cpp: 23225 (JSC::constructJSCallback): 23226 * API/JSCallbackObject.h: 23227 * API/JSCallbackObjectFunctions.h: 23228 (JSC::::construct): 23229 * interpreter/Interpreter.cpp: 23230 (JSC::Interpreter::executeConstruct): 23231 * interpreter/Interpreter.h: 23232 * jit/JITStubs.cpp: 23233 (JSC::DEFINE_STUB_FUNCTION): 23234 * runtime/ArrayConstructor.cpp: 23235 (JSC::constructWithArrayConstructor): 23236 * runtime/BooleanConstructor.cpp: 23237 (JSC::constructWithBooleanConstructor): 23238 * runtime/ConstructData.cpp: 23239 (JSC::construct): 23240 * runtime/ConstructData.h: 23241 * runtime/DateConstructor.cpp: 23242 (JSC::constructWithDateConstructor): 23243 * runtime/Error.cpp: 23244 (JSC::constructNativeError): 23245 (JSC::Error::create): 23246 * runtime/ErrorConstructor.cpp: 23247 (JSC::constructWithErrorConstructor): 23248 * runtime/FunctionConstructor.cpp: 23249 (JSC::constructWithFunctionConstructor): 23250 * runtime/NativeErrorConstructor.cpp: 23251 (JSC::constructWithNativeErrorConstructor): 23252 * runtime/NativeErrorConstructor.h: 23253 (JSC::NativeErrorConstructor::errorStructure): 23254 * runtime/NumberConstructor.cpp: 23255 (JSC::constructWithNumberConstructor): 23256 * runtime/ObjectConstructor.cpp: 23257 (JSC::constructWithObjectConstructor): 23258 * runtime/RegExpConstructor.cpp: 23259 (JSC::constructWithRegExpConstructor): 23260 * runtime/StringConstructor.cpp: 23261 (JSC::constructWithStringConstructor): 23262 23263 2010-06-04 Tony Gentilcore <tonyg (a] chromium.org> 23264 23265 Reviewed by Adam Barth. 23266 23267 Add a takeFirst() method to Deque and use it where appropriate. 23268 https://bugs.webkit.org/show_bug.cgi?id=40089 23269 23270 * wtf/Deque.h: 23271 (WTF::::takeFirst): 23272 * wtf/MainThread.cpp: 23273 (WTF::dispatchFunctionsFromMainThread): 23274 * wtf/MessageQueue.h: 23275 (WTF::::tryGetMessage): 23276 23277 2010-06-04 Jedrzej Nowacki <jedrzej.nowacki (a] nokia.com> 23278 23279 Reviewed by Kenneth Rohde Christiansen. 23280 23281 Remove a QEXPECT_FAIL flag from an autotest. 23282 23283 Test tst_QScriptEngine::globalObject pass after 36600 bug 23284 fix have been applied. 23285 23286 [Qt] Expected fail in the tst_QScriptEngine::globalObject should be removed. 23287 https://bugs.webkit.org/show_bug.cgi?id=40114 23288 23289 * qt/tests/qscriptengine/tst_qscriptengine.cpp: 23290 (tst_QScriptEngine::globalObject): 23291 23292 2010-06-04 Jedrzej Nowacki <jedrzej.nowacki (a] nokia.com> 23293 23294 Reviewed by Kenneth Rohde Christiansen. 23295 23296 Fix QScriptValue::equals. 23297 23298 Handling for a few edge cases were added. Now comparison between 23299 NaN, an invalid objects should works as supposed. 23300 23301 [Qt] QScriptValue::equals problems 23302 https://bugs.webkit.org/show_bug.cgi?id=40110 23303 23304 * qt/api/qscriptvalue.cpp: 23305 (QScriptValue::equals): 23306 * qt/api/qscriptvalue_p.h: 23307 (QScriptValuePrivate::equals): 23308 * qt/tests/qscriptvalue/tst_qscriptvalue.h: 23309 * qt/tests/qscriptvalue/tst_qscriptvalue_generated_comparison.cpp: 23310 (tst_QScriptValue::equals_initData): 23311 (tst_QScriptValue::equals_makeData): 23312 (tst_QScriptValue::equals_test): 23313 23314 2010-06-03 Jedrzej Nowacki <jedrzej.nowacki (a] nokia.com> 23315 23316 Reviewed by Kenneth Rohde Christiansen. 23317 23318 New states in QScriptValuePrivate. 23319 23320 The CSpecial state was divided into CNull and CUndefined. It simplify 23321 the QScriptValue code by avoiding a few "cast" and "if". 23322 Moreover the MSVS compiler didn't like casting between a double and an 23323 enum which is avoided now. 23324 23325 [Qt] The QScriptValuePrivate::CSpecial is too generic. 23326 https://bugs.webkit.org/show_bug.cgi?id=40067 23327 23328 * qt/api/qscriptvalue_p.h: 23329 (QScriptValuePrivate::): 23330 (QScriptValuePrivate::QScriptValuePrivate): 23331 (QScriptValuePrivate::isNull): 23332 (QScriptValuePrivate::isUndefined): 23333 (QScriptValuePrivate::toString): 23334 (QScriptValuePrivate::toNumber): 23335 (QScriptValuePrivate::toBool): 23336 (QScriptValuePrivate::toObject): 23337 (QScriptValuePrivate::assignEngine): 23338 (QScriptValuePrivate::isNumberBased): 23339 23340 2010-06-03 Gavin Barraclough <barraclough (a] apple.com> 23341 23342 Reviewed by NOBODY (Qt build fix). 23343 23344 * wtf/Platform.h: 23345 23346 2010-06-03 Gavin Barraclough <barraclough (a] apple.com> 23347 23348 Reviewed by Mark Rowe. 23349 23350 Bug 40150 - ENABLE_JIT_OPTIMIZE_NATIVE_CALL on all x86/x86_64 platforms 23351 This was fixed in bug #40094. 23352 23353 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: 23354 * wtf/Platform.h: 23355 23356 2010-06-03 Gavin Barraclough <barraclough (a] apple.com> 23357 23358 Reviewed by NOBODY (Interpreter build fix). 23359 23360 * JavaScriptCore.JSVALUE32_64only.exp: 23361 * JavaScriptCore.JSVALUE32only.exp: 23362 * JavaScriptCore.JSVALUE64only.exp: 23363 * interpreter/Interpreter.cpp: 23364 (JSC::Interpreter::privateExecute): 23365 23366 2010-06-03 Gavin Barraclough <barraclough (a] apple.com> 23367 23368 Reviewed by NOBODY (windows build fix II). 23369 23370 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: 23371 23372 2010-06-03 Gavin Barraclough <barraclough (a] apple.com> 23373 23374 Reviewed by NOBODY (windows build fix). 23375 23376 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: 23377 23378 2010-06-02 Gavin Barraclough <barraclough (a] apple.com> 23379 23380 Reviewed by Oliver Hunt. 23381 23382 Bug 40094 - The return type of NativeFunction should be EncodedJSValue 23383 On Windows & Linux, using JSVALUE32_64, EncodedJSValue is returned in registers, but JSValue is not. 23384 23385 * API/JSCallbackFunction.cpp: 23386 (JSC::JSCallbackFunction::call): 23387 * API/JSCallbackFunction.h: 23388 * API/JSCallbackObject.h: 23389 * API/JSCallbackObjectFunctions.h: 23390 (JSC::::call): 23391 * JavaScriptCore.exp: 23392 * interpreter/Interpreter.cpp: 23393 (JSC::Interpreter::executeCall): 23394 * jit/JITStubs.cpp: 23395 (JSC::DEFINE_STUB_FUNCTION): 23396 * jit/JITStubs.h: 23397 * jsc.cpp: 23398 (functionPrint): 23399 (functionDebug): 23400 (functionGC): 23401 (functionVersion): 23402 (functionRun): 23403 (functionLoad): 23404 (functionCheckSyntax): 23405 (functionSetSamplingFlags): 23406 (functionClearSamplingFlags): 23407 (functionReadline): 23408 (functionQuit): 23409 * runtime/ArrayConstructor.cpp: 23410 (JSC::callArrayConstructor): 23411 (JSC::arrayConstructorIsArray): 23412 * runtime/ArrayPrototype.cpp: 23413 (JSC::arrayProtoFuncToString): 23414 (JSC::arrayProtoFuncToLocaleString): 23415 (JSC::arrayProtoFuncJoin): 23416 (JSC::arrayProtoFuncConcat): 23417 (JSC::arrayProtoFuncPop): 23418 (JSC::arrayProtoFuncPush): 23419 (JSC::arrayProtoFuncReverse): 23420 (JSC::arrayProtoFuncShift): 23421 (JSC::arrayProtoFuncSlice): 23422 (JSC::arrayProtoFuncSort): 23423 (JSC::arrayProtoFuncSplice): 23424 (JSC::arrayProtoFuncUnShift): 23425 (JSC::arrayProtoFuncFilter): 23426 (JSC::arrayProtoFuncMap): 23427 (JSC::arrayProtoFuncEvery): 23428 (JSC::arrayProtoFuncForEach): 23429 (JSC::arrayProtoFuncSome): 23430 (JSC::arrayProtoFuncReduce): 23431 (JSC::arrayProtoFuncReduceRight): 23432 (JSC::arrayProtoFuncIndexOf): 23433 (JSC::arrayProtoFuncLastIndexOf): 23434 * runtime/BooleanConstructor.cpp: 23435 (JSC::callBooleanConstructor): 23436 * runtime/BooleanPrototype.cpp: 23437 (JSC::booleanProtoFuncToString): 23438 (JSC::booleanProtoFuncValueOf): 23439 * runtime/CallData.h: 23440 * runtime/DateConstructor.cpp: 23441 (JSC::callDate): 23442 (JSC::dateParse): 23443 (JSC::dateNow): 23444 (JSC::dateUTC): 23445 * runtime/DatePrototype.cpp: 23446 (JSC::dateProtoFuncToString): 23447 (JSC::dateProtoFuncToUTCString): 23448 (JSC::dateProtoFuncToISOString): 23449 (JSC::dateProtoFuncToDateString): 23450 (JSC::dateProtoFuncToTimeString): 23451 (JSC::dateProtoFuncToLocaleString): 23452 (JSC::dateProtoFuncToLocaleDateString): 23453 (JSC::dateProtoFuncToLocaleTimeString): 23454 (JSC::dateProtoFuncGetTime): 23455 (JSC::dateProtoFuncGetFullYear): 23456 (JSC::dateProtoFuncGetUTCFullYear): 23457 (JSC::dateProtoFuncToGMTString): 23458 (JSC::dateProtoFuncGetMonth): 23459 (JSC::dateProtoFuncGetUTCMonth): 23460 (JSC::dateProtoFuncGetDate): 23461 (JSC::dateProtoFuncGetUTCDate): 23462 (JSC::dateProtoFuncGetDay): 23463 (JSC::dateProtoFuncGetUTCDay): 23464 (JSC::dateProtoFuncGetHours): 23465 (JSC::dateProtoFuncGetUTCHours): 23466 (JSC::dateProtoFuncGetMinutes): 23467 (JSC::dateProtoFuncGetUTCMinutes): 23468 (JSC::dateProtoFuncGetSeconds): 23469 (JSC::dateProtoFuncGetUTCSeconds): 23470 (JSC::dateProtoFuncGetMilliSeconds): 23471 (JSC::dateProtoFuncGetUTCMilliseconds): 23472 (JSC::dateProtoFuncGetTimezoneOffset): 23473 (JSC::dateProtoFuncSetTime): 23474 (JSC::dateProtoFuncSetMilliSeconds): 23475 (JSC::dateProtoFuncSetUTCMilliseconds): 23476 (JSC::dateProtoFuncSetSeconds): 23477 (JSC::dateProtoFuncSetUTCSeconds): 23478 (JSC::dateProtoFuncSetMinutes): 23479 (JSC::dateProtoFuncSetUTCMinutes): 23480 (JSC::dateProtoFuncSetHours): 23481 (JSC::dateProtoFuncSetUTCHours): 23482 (JSC::dateProtoFuncSetDate): 23483 (JSC::dateProtoFuncSetUTCDate): 23484 (JSC::dateProtoFuncSetMonth): 23485 (JSC::dateProtoFuncSetUTCMonth): 23486 (JSC::dateProtoFuncSetFullYear): 23487 (JSC::dateProtoFuncSetUTCFullYear): 23488 (JSC::dateProtoFuncSetYear): 23489 (JSC::dateProtoFuncGetYear): 23490 (JSC::dateProtoFuncToJSON): 23491 * runtime/ErrorConstructor.cpp: 23492 (JSC::callErrorConstructor): 23493 * runtime/ErrorPrototype.cpp: 23494 (JSC::errorProtoFuncToString): 23495 * runtime/FunctionConstructor.cpp: 23496 (JSC::callFunctionConstructor): 23497 * runtime/FunctionPrototype.cpp: 23498 (JSC::callFunctionPrototype): 23499 (JSC::functionProtoFuncToString): 23500 (JSC::functionProtoFuncApply): 23501 (JSC::functionProtoFuncCall): 23502 * runtime/JSCell.h: 23503 (JSC::getCallData): 23504 (JSC::getConstructData): 23505 * runtime/JSFunction.cpp: 23506 (JSC::callHostFunctionAsConstructor): 23507 * runtime/JSFunction.h: 23508 * runtime/JSGlobalObjectFunctions.cpp: 23509 (JSC::globalFuncEval): 23510 (JSC::globalFuncParseInt): 23511 (JSC::globalFuncParseFloat): 23512 (JSC::globalFuncIsNaN): 23513 (JSC::globalFuncIsFinite): 23514 (JSC::globalFuncDecodeURI): 23515 (JSC::globalFuncDecodeURIComponent): 23516 (JSC::globalFuncEncodeURI): 23517 (JSC::globalFuncEncodeURIComponent): 23518 (JSC::globalFuncEscape): 23519 (JSC::globalFuncUnescape): 23520 (JSC::globalFuncJSCPrint): 23521 * runtime/JSGlobalObjectFunctions.h: 23522 * runtime/JSONObject.cpp: 23523 (JSC::JSONProtoFuncParse): 23524 (JSC::JSONProtoFuncStringify): 23525 * runtime/JSObject.cpp: 23526 (JSC::callDefaultValueFunction): 23527 * runtime/JSValue.h: 23528 * runtime/MathObject.cpp: 23529 (JSC::mathProtoFuncAbs): 23530 (JSC::mathProtoFuncACos): 23531 (JSC::mathProtoFuncASin): 23532 (JSC::mathProtoFuncATan): 23533 (JSC::mathProtoFuncATan2): 23534 (JSC::mathProtoFuncCeil): 23535 (JSC::mathProtoFuncCos): 23536 (JSC::mathProtoFuncExp): 23537 (JSC::mathProtoFuncFloor): 23538 (JSC::mathProtoFuncLog): 23539 (JSC::mathProtoFuncMax): 23540 (JSC::mathProtoFuncMin): 23541 (JSC::mathProtoFuncPow): 23542 (JSC::mathProtoFuncRandom): 23543 (JSC::mathProtoFuncRound): 23544 (JSC::mathProtoFuncSin): 23545 (JSC::mathProtoFuncSqrt): 23546 (JSC::mathProtoFuncTan): 23547 * runtime/NativeErrorConstructor.cpp: 23548 (JSC::callNativeErrorConstructor): 23549 * runtime/NumberConstructor.cpp: 23550 (JSC::callNumberConstructor): 23551 * runtime/NumberPrototype.cpp: 23552 (JSC::numberProtoFuncToString): 23553 (JSC::numberProtoFuncToLocaleString): 23554 (JSC::numberProtoFuncValueOf): 23555 (JSC::numberProtoFuncToFixed): 23556 (JSC::numberProtoFuncToExponential): 23557 (JSC::numberProtoFuncToPrecision): 23558 * runtime/ObjectConstructor.cpp: 23559 (JSC::callObjectConstructor): 23560 (JSC::objectConstructorGetPrototypeOf): 23561 (JSC::objectConstructorGetOwnPropertyDescriptor): 23562 (JSC::objectConstructorGetOwnPropertyNames): 23563 (JSC::objectConstructorKeys): 23564 (JSC::toPropertyDescriptor): 23565 (JSC::objectConstructorDefineProperty): 23566 (JSC::objectConstructorDefineProperties): 23567 (JSC::objectConstructorCreate): 23568 * runtime/ObjectPrototype.cpp: 23569 (JSC::objectProtoFuncValueOf): 23570 (JSC::objectProtoFuncHasOwnProperty): 23571 (JSC::objectProtoFuncIsPrototypeOf): 23572 (JSC::objectProtoFuncDefineGetter): 23573 (JSC::objectProtoFuncDefineSetter): 23574 (JSC::objectProtoFuncLookupGetter): 23575 (JSC::objectProtoFuncLookupSetter): 23576 (JSC::objectProtoFuncPropertyIsEnumerable): 23577 (JSC::objectProtoFuncToLocaleString): 23578 (JSC::objectProtoFuncToString): 23579 * runtime/ObjectPrototype.h: 23580 * runtime/RegExpConstructor.cpp: 23581 (JSC::callRegExpConstructor): 23582 * runtime/RegExpObject.cpp: 23583 (JSC::callRegExpObject): 23584 * runtime/RegExpPrototype.cpp: 23585 (JSC::regExpProtoFuncTest): 23586 (JSC::regExpProtoFuncExec): 23587 (JSC::regExpProtoFuncCompile): 23588 (JSC::regExpProtoFuncToString): 23589 * runtime/StringConstructor.cpp: 23590 (JSC::stringFromCharCode): 23591 (JSC::callStringConstructor): 23592 * runtime/StringPrototype.cpp: 23593 (JSC::stringProtoFuncReplace): 23594 (JSC::stringProtoFuncToString): 23595 (JSC::stringProtoFuncCharAt): 23596 (JSC::stringProtoFuncCharCodeAt): 23597 (JSC::stringProtoFuncConcat): 23598 (JSC::stringProtoFuncIndexOf): 23599 (JSC::stringProtoFuncLastIndexOf): 23600 (JSC::stringProtoFuncMatch): 23601 (JSC::stringProtoFuncSearch): 23602 (JSC::stringProtoFuncSlice): 23603 (JSC::stringProtoFuncSplit): 23604 (JSC::stringProtoFuncSubstr): 23605 (JSC::stringProtoFuncSubstring): 23606 (JSC::stringProtoFuncToLowerCase): 23607 (JSC::stringProtoFuncToUpperCase): 23608 (JSC::stringProtoFuncLocaleCompare): 23609 (JSC::stringProtoFuncBig): 23610 (JSC::stringProtoFuncSmall): 23611 (JSC::stringProtoFuncBlink): 23612 (JSC::stringProtoFuncBold): 23613 (JSC::stringProtoFuncFixed): 23614 (JSC::stringProtoFuncItalics): 23615 (JSC::stringProtoFuncStrike): 23616 (JSC::stringProtoFuncSub): 23617 (JSC::stringProtoFuncSup): 23618 (JSC::stringProtoFuncFontcolor): 23619 (JSC::stringProtoFuncFontsize): 23620 (JSC::stringProtoFuncAnchor): 23621 (JSC::stringProtoFuncLink): 23622 (JSC::stringProtoFuncTrim): 23623 (JSC::stringProtoFuncTrimLeft): 23624 (JSC::stringProtoFuncTrimRight): 23625 23626 2010-06-02 Mark Rowe <mrowe (a] apple.com> 23627 23628 Reviewed by Gavin Barraclough. 23629 23630 Add value-representation specific sections to the mac export file. 23631 23632 * Configurations/JavaScriptCore.xcconfig: 23633 * DerivedSources.make: 23634 * JavaScriptCore.JSVALUE32_64only.exp: Added. 23635 * JavaScriptCore.JSVALUE32only.exp: Added. 23636 * JavaScriptCore.JSVALUE64only.exp: Added. 23637 * JavaScriptCore.xcodeproj/project.pbxproj: 23638 23639 2010-06-02 Mark Rowe <mrowe (a] apple.com> 23640 23641 Reviewed by Gavin Barraclough. 23642 23643 <rdar://problem/8054988> Work around an LLVM GCC code generation bug that results in crashes inside PCRE. 23644 23645 * pcre/pcre_exec.cpp: 23646 (repeatInformationFromInstructionOffset): Change the type of instructionOffset to int. There's no good 23647 reason for it to be a short, and using int prevents this code from triggering the LLVM GCC bug. 23648 23649 2010-06-02 Jedrzej Nowacki <jedrzej.nowacki (a] nokia.com> 23650 23651 Reviewed by Kenneth Rohde Christiansen. 23652 23653 Fix the QScriptValue::strictlyEquals function. 23654 23655 Handling for a few edge cases was added. 23656 23657 New autotest that covers the QScriptValue::strictlyEquals function. 23658 23659 [Qt] QScriptValue::strictlyEquals is broken 23660 https://bugs.webkit.org/show_bug.cgi?id=36600 23661 23662 * qt/api/qscriptvalue.cpp: 23663 (QScriptValue::strictlyEquals): 23664 * qt/api/qscriptvalue_p.h: 23665 (QScriptValuePrivate::strictlyEquals): 23666 * qt/tests/qscriptvalue/qscriptvalue.pro: 23667 * qt/tests/qscriptvalue/tst_qscriptvalue.h: 23668 * qt/tests/qscriptvalue/tst_qscriptvalue_generated_comparison.cpp: Added. 23669 (tst_QScriptValue::strictlyEquals_initData): 23670 (tst_QScriptValue::strictlyEquals_makeData): 23671 (tst_QScriptValue::strictlyEquals_test): 23672 23673 2010-06-02 Jedrzej Nowacki <jedrzej.nowacki (a] nokia.com> 23674 23675 Reviewed by Kenneth Rohde Christiansen. 23676 23677 New function QScriptEngine::newObject. 23678 23679 The function creates a object of class Object and returns it 23680 as a QScriptValue. 23681 23682 [Qt] QScriptEngine API should contain a newObject function 23683 https://bugs.webkit.org/show_bug.cgi?id=39114 23684 23685 * qt/api/qscriptengine.cpp: 23686 (QScriptEngine::newObject): 23687 * qt/api/qscriptengine.h: 23688 * qt/api/qscriptengine_p.cpp: 23689 (QScriptEnginePrivate::newObject): 23690 * qt/api/qscriptengine_p.h: 23691 * qt/tests/qscriptengine/tst_qscriptengine.cpp: 23692 (tst_QScriptEngine::newObject): 23693 23694 2010-06-02 Gabor Loki <loki (a] webkit.org> 23695 23696 Reviewed by Gavin Barraclough. 23697 https://bugs.webkit.org/show_bug.cgi?id=40011 23698 23699 Thumb-2 build fix: The offset parameter of ldrh should be encoded as an 23700 imm12 immediate constant in load16. If it is not fit in the instruction 23701 a temporary register has to be used. 23702 23703 * assembler/MacroAssemblerARMv7.h: 23704 (JSC::MacroAssemblerARMv7::load16): 23705 23706 2010-06-02 Sterling Swigart <sswigart (a] google.com> 23707 23708 Reviewed by David Levin. 23709 23710 Image Resizer Patch 0: Added compilation argument to conditionally compile pending patches. 23711 https://bugs.webkit.org/show_bug.cgi?id=39906 23712 23713 * Configurations/FeatureDefines.xcconfig: 23714 23715 2010-06-01 Gavin Barraclough <barraclough (a] apple.com> 23716 23717 Reviewed by Sam Weinig. 23718 23719 Bug 40021 - Refactor bytecode generation for calls so that register for this & args are allocated together 23720 23721 This is a useful stepping stone towards reversing argument order. 23722 23723 * bytecompiler/BytecodeGenerator.cpp: 23724 (JSC::BytecodeGenerator::BytecodeGenerator): 23725 (JSC::BytecodeGenerator::addParameter): 23726 (JSC::BytecodeGenerator::emitCall): 23727 (JSC::BytecodeGenerator::emitCallEval): 23728 (JSC::BytecodeGenerator::emitConstruct): 23729 * bytecompiler/BytecodeGenerator.h: 23730 (JSC::CallArguments::thisRegister): 23731 (JSC::CallArguments::argumentRegister): 23732 (JSC::CallArguments::callFrame): 23733 (JSC::CallArguments::count): 23734 (JSC::BytecodeGenerator::shouldEmitProfileHooks): 23735 * bytecompiler/NodesCodegen.cpp: 23736 (JSC::NewExprNode::emitBytecode): 23737 (JSC::CallArguments::CallArguments): 23738 (JSC::EvalFunctionCallNode::emitBytecode): 23739 (JSC::FunctionCallValueNode::emitBytecode): 23740 (JSC::FunctionCallResolveNode::emitBytecode): 23741 (JSC::FunctionCallBracketNode::emitBytecode): 23742 (JSC::FunctionCallDotNode::emitBytecode): 23743 (JSC::CallFunctionCallDotNode::emitBytecode): 23744 (JSC::ApplyFunctionCallDotNode::emitBytecode): 23745 23746 2010-06-01 Yong Li <yoli (a] rim.com> 23747 23748 Reviewed by Darin Adler. 23749 23750 Explicitly use PTHREAD_MUTEX_NORMAL to create pthread mutex. 23751 https://bugs.webkit.org/show_bug.cgi?id=39893 23752 23753 * wtf/ThreadingPthreads.cpp: 23754 (WTF::Mutex::Mutex): 23755 23756 2010-06-01 Kwang Yul Seo <skyul (a] company100.net> 23757 23758 Reviewed by Xan Lopez. 23759 23760 [GTK] Use DEFINE_STATIC_LOCAL for threadMapMutex and threadMap 23761 https://bugs.webkit.org/show_bug.cgi?id=39831 23762 23763 Use DEFINE_STATIC_LOCAL for static local variables. 23764 23765 * wtf/gtk/ThreadingGtk.cpp: 23766 (WTF::threadMapMutex): 23767 (WTF::threadMap): 23768 (WTF::identifierByGthreadHandle): 23769 23770 2010-06-01 Kent Tamura <tkent (a] chromium.org> 23771 23772 Reviewed by Shinichiro Hamaji. 23773 23774 Fix style errors of dtoa 23775 https://bugs.webkit.org/show_bug.cgi?id=39972 23776 23777 Fix all errors reported by check-webkit-style. 23778 23779 * wtf/dtoa.cpp: 23780 * wtf/dtoa.h: 23781 23782 2010-05-30 Darin Adler <darin (a] apple.com> 23783 23784 Reviewed by Sam Weinig. 23785 23786 * wtf/OwnArrayPtr.h: 23787 (WTF::OwnArrayPtr::set): Fix the assertion in here to match the one in OwnPtr. 23788 At some point someone fixed the "asserts when assigning to 0 and the pointer is 23789 already 0" issue in OwnPtr but forgot to do it here. 23790 23791 2010-05-29 Geoffrey Garen <ggaren (a] apple.com> 23792 23793 Windows build fix: Updated exported symbols. 23794 23795 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: 23796 23797 2010-05-29 Geoffrey Garen <ggaren (a] apple.com> 23798 23799 Disabled ENABLE_JIT_OPTIMIZE_NATIVE_CALL on Windows for now, until I 23800 can figure out why it's crashing. 23801 23802 * wtf/Platform.h: 23803 23804 2010-05-29 Geoffrey Garen <ggaren (a] apple.com> 23805 23806 Fixed Windows crash seen on buildbot. 23807 23808 * jit/JITOpcodes32_64.cpp: 23809 (JSC::JIT::privateCompileCTINativeCall): __fastcall puts the first 23810 argument in ecx. 23811 23812 2010-05-28 Geoffrey Garen <ggaren (a] apple.com> 23813 23814 Windows build fix: Updated exported symbols. 23815 23816 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: 23817 23818 2010-05-28 Geoffrey Garen <ggaren (a] apple.com> 23819 23820 Qt build fix: disable a little more stuff when JIT_OPTIMIZE_NATIVE_CALL 23821 is disabled. 23822 23823 * runtime/Lookup.cpp: 23824 (JSC::setUpStaticFunctionSlot): 23825 * runtime/Lookup.h: 23826 * wtf/Platform.h: 23827 23828 2010-05-28 Geoffrey Garen <ggaren (a] apple.com> 23829 23830 Windows build fix: Updated exported symbols. 23831 23832 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: 23833 23834 2010-05-28 Geoffrey Garen <ggaren (a] apple.com> 23835 23836 Reviewed by Sam Weinig, Gavin Barraclough, Oliver Hunt. 23837 23838 Simplified the host calling convention. 23839 23840 22.5% speedup on 32-bit host function calls. 9.5% speedup on 64-bit host 23841 function calls. 23842 23843 No change on SunSpider. 23844 23845 All JS calls (but not constructs, yet) now go through the normal JS 23846 calling convention via the RegisterFile. As a result, the host calling 23847 convention, which used to be this 23848 23849 JSValue (JSC_HOST_CALL *NativeFunction)(ExecState*, JSObject*, JSValue thisValue, const ArgList&) 23850 23851 is now this 23852 23853 JSValue (JSC_HOST_CALL *NativeFunction)(ExecState*) 23854 23855 Callee, 'this', and argument access all hapen relative to the ExecState*, 23856 which is a pointer into the RegisterFile. 23857 23858 This patch comes in two parts. 23859 23860 PART ONE: Functional code changes. 23861 23862 * wtf/Platform.h: Disabled optimized calls on platforms I didn't test. 23863 We can re-enable once we verify that host calls on these platforms are 23864 correct. 23865 23866 * debugger/DebuggerCallFrame.cpp: 23867 (JSC::DebuggerCallFrame::functionName): 23868 (JSC::DebuggerCallFrame::calculatedFunctionName): Updated for change to 23869 ExecState::callee(). 23870 23871 (JSC::DebuggerCallFrame::thisObject): Updated for removal of ExecState::thisValue(). 23872 23873 * interpreter/CallFrame.cpp: 23874 * interpreter/CallFrame.h: 23875 (JSC::ExecState::callee): 23876 (JSC::ExecState::scopeChain): 23877 (JSC::ExecState::init): Changed callee() to be JSObject* instead of 23878 JSFunction* -- now, it might be some other callable host object. 23879 23880 (JSC::ExecState::hostThisRegister): 23881 (JSC::ExecState::hostThisValue): 23882 (JSC::ExecState::argumentCount): 23883 (JSC::ExecState::argumentCountIncludingThis): 23884 (JSC::ExecState::argument): 23885 (JSC::ExecState::setArgumentCountIncludingThis): 23886 (JSC::ExecState::setCallee): Added convenient accessors for arguments 23887 from within a host function. Removed thisValue() because it was too 23888 tempting to use incorrectly, and it only had one or two clients, anyway. 23889 23890 * interpreter/Interpreter.cpp: 23891 (JSC::Interpreter::callEval): Updated for removal of ExecState::thisValue(). 23892 23893 (JSC::Interpreter::throwException): Be sure to shrink the register file 23894 before invoking the exception handler, to reduce the chances that the 23895 handler will re-throw in the case of stack overflow. (Re-throwing is now 23896 more likely than it used to be, since standardizing the calling convention 23897 implicitly added stack overflow checks to some places where they used to be missing.) 23898 23899 (JSC::Interpreter::execute): Clarified the scope of DynamicGlobalObjectScope. 23900 Updated for CallFrame::init API change. 23901 23902 (JSC::Interpreter::executeCall): Clarified scope of DynamicGlobalObjectScope. 23903 Updated for CallFrame::init API change. Added support for calling a host 23904 function. 23905 23906 (JSC::Interpreter::executeConstruct): Clarified scope of DynamicGlobalObjectScope. 23907 Updated for CallFrame::init API change. 23908 23909 (JSC::Interpreter::prepareForRepeatCall): Updated for CallFrame::init API change. 23910 23911 (JSC::Interpreter::privateExecute): Updated for CallFrame::init API change. 23912 Added some explicit JSValue(JSObject*) initialization, since relaxing 23913 the JSFunction* restriction on callee has made register types more ambiguous. 23914 Removed toThisObject() conversion, since all callees do it themselves now. 23915 Updated host function call for new host function signature. Updated for 23916 change to ExecState::argumentCount() API. 23917 23918 * interpreter/Register.h: 23919 (JSC::Register::): 23920 (JSC::Register::operator=): 23921 (JSC::Register::function): Changed callee() to be JSObject* instead of 23922 JSFunction* -- now, it might be some other callable host object. 23923 23924 * jit/JITOpcodes.cpp: 23925 (JSC::JIT::privateCompileCTINativeCall): 23926 * jit/JITOpcodes32_64.cpp: 23927 (JSC::JIT::privateCompileCTINativeCall): Deleted a bunch of code that 23928 set up the arguments to host functions -- all but one of the arguments 23929 are gone now. This is the actual optimization. 23930 23931 * jit/JITStubs.cpp: 23932 (JSC::DEFINE_STUB_FUNCTION): Updated for ExecState and Register API 23933 changes noted above. Removed toThisObject() conversion, since all callees 23934 do it themselves now. 23935 23936 * runtime/ArgList.h: 23937 (JSC::ArgList::ArgList): ArgList is getting close to unused. Added a 23938 temporary shim for converting from ExecState* to ArgList where it's still 23939 necessary. 23940 23941 * runtime/Arguments.h: 23942 (JSC::Arguments::getArgumentsData): 23943 (JSC::Arguments::Arguments): Updated for ExecState and Register API 23944 changes noted above. 23945 23946 * runtime/CallData.cpp: 23947 (JSC::call): Changed call always to call Interpreter::executeCall, even 23948 for host functions. This ensures that the normal calling convention is 23949 set up in the RegsiterFile when calling from C++ to host function. 23950 23951 * runtime/CallData.h: Changed host function signature as described above. 23952 23953 * runtime/ConstructData.cpp: 23954 (JSC::construct): Moved JSFunction::construct code here so I could nix 23955 JSFunction::call and JSFunction::call. We want a JSFunction-agnostic 23956 way to call and construct, so that everything works naturally for non- 23957 JSFunction objects. 23958 23959 * runtime/JSFunction.cpp: 23960 (JSC::callHostFunctionAsConstructor): 23961 * runtime/JSFunction.h: Updated for ExecState and Register API changes 23962 noted above. Nixed JSFunction::call and JSFunction::construct, noted above. 23963 23964 * runtime/JSGlobalObject.cpp: 23965 (JSC::JSGlobalObject::init): Ditto. 23966 23967 PART TWO: Global search and replace. 23968 23969 In the areas below, I used global search-and-replace to change 23970 (ExecState*, JSObject*, JSValue, const ArgList&) => (ExecState*) 23971 args.size() => exec->argumentCount() 23972 args.at(i) => exec->argument(i) 23973 23974 * API/JSCallbackFunction.cpp: 23975 (JSC::JSCallbackFunction::call): 23976 * API/JSCallbackFunction.h: 23977 * API/JSCallbackObject.h: 23978 * API/JSCallbackObjectFunctions.h: 23979 (JSC::::call): 23980 * JavaScriptCore.exp: 23981 * jsc.cpp: 23982 (functionPrint): 23983 (functionDebug): 23984 (functionGC): 23985 (functionVersion): 23986 (functionRun): 23987 (functionLoad): 23988 (functionCheckSyntax): 23989 (functionSetSamplingFlags): 23990 (functionClearSamplingFlags): 23991 (functionReadline): 23992 (functionQuit): 23993 * runtime/ArrayConstructor.cpp: 23994 (JSC::callArrayConstructor): 23995 (JSC::arrayConstructorIsArray): 23996 * runtime/ArrayPrototype.cpp: 23997 (JSC::arrayProtoFuncToString): 23998 (JSC::arrayProtoFuncToLocaleString): 23999 (JSC::arrayProtoFuncJoin): 24000 (JSC::arrayProtoFuncConcat): 24001 (JSC::arrayProtoFuncPop): 24002 (JSC::arrayProtoFuncPush): 24003 (JSC::arrayProtoFuncReverse): 24004 (JSC::arrayProtoFuncShift): 24005 (JSC::arrayProtoFuncSlice): 24006 (JSC::arrayProtoFuncSort): 24007 (JSC::arrayProtoFuncSplice): 24008 (JSC::arrayProtoFuncUnShift): 24009 (JSC::arrayProtoFuncFilter): 24010 (JSC::arrayProtoFuncMap): 24011 (JSC::arrayProtoFuncEvery): 24012 (JSC::arrayProtoFuncForEach): 24013 (JSC::arrayProtoFuncSome): 24014 (JSC::arrayProtoFuncReduce): 24015 (JSC::arrayProtoFuncReduceRight): 24016 (JSC::arrayProtoFuncIndexOf): 24017 (JSC::arrayProtoFuncLastIndexOf): 24018 * runtime/BooleanConstructor.cpp: 24019 (JSC::callBooleanConstructor): 24020 * runtime/BooleanPrototype.cpp: 24021 (JSC::booleanProtoFuncToString): 24022 (JSC::booleanProtoFuncValueOf): 24023 * runtime/DateConstructor.cpp: 24024 (JSC::callDate): 24025 (JSC::dateParse): 24026 (JSC::dateNow): 24027 (JSC::dateUTC): 24028 * runtime/DatePrototype.cpp: 24029 (JSC::formatLocaleDate): 24030 (JSC::fillStructuresUsingTimeArgs): 24031 (JSC::fillStructuresUsingDateArgs): 24032 (JSC::dateProtoFuncToString): 24033 (JSC::dateProtoFuncToUTCString): 24034 (JSC::dateProtoFuncToISOString): 24035 (JSC::dateProtoFuncToDateString): 24036 (JSC::dateProtoFuncToTimeString): 24037 (JSC::dateProtoFuncToLocaleString): 24038 (JSC::dateProtoFuncToLocaleDateString): 24039 (JSC::dateProtoFuncToLocaleTimeString): 24040 (JSC::dateProtoFuncGetTime): 24041 (JSC::dateProtoFuncGetFullYear): 24042 (JSC::dateProtoFuncGetUTCFullYear): 24043 (JSC::dateProtoFuncToGMTString): 24044 (JSC::dateProtoFuncGetMonth): 24045 (JSC::dateProtoFuncGetUTCMonth): 24046 (JSC::dateProtoFuncGetDate): 24047 (JSC::dateProtoFuncGetUTCDate): 24048 (JSC::dateProtoFuncGetDay): 24049 (JSC::dateProtoFuncGetUTCDay): 24050 (JSC::dateProtoFuncGetHours): 24051 (JSC::dateProtoFuncGetUTCHours): 24052 (JSC::dateProtoFuncGetMinutes): 24053 (JSC::dateProtoFuncGetUTCMinutes): 24054 (JSC::dateProtoFuncGetSeconds): 24055 (JSC::dateProtoFuncGetUTCSeconds): 24056 (JSC::dateProtoFuncGetMilliSeconds): 24057 (JSC::dateProtoFuncGetUTCMilliseconds): 24058 (JSC::dateProtoFuncGetTimezoneOffset): 24059 (JSC::dateProtoFuncSetTime): 24060 (JSC::setNewValueFromTimeArgs): 24061 (JSC::setNewValueFromDateArgs): 24062 (JSC::dateProtoFuncSetMilliSeconds): 24063 (JSC::dateProtoFuncSetUTCMilliseconds): 24064 (JSC::dateProtoFuncSetSeconds): 24065 (JSC::dateProtoFuncSetUTCSeconds): 24066 (JSC::dateProtoFuncSetMinutes): 24067 (JSC::dateProtoFuncSetUTCMinutes): 24068 (JSC::dateProtoFuncSetHours): 24069 (JSC::dateProtoFuncSetUTCHours): 24070 (JSC::dateProtoFuncSetDate): 24071 (JSC::dateProtoFuncSetUTCDate): 24072 (JSC::dateProtoFuncSetMonth): 24073 (JSC::dateProtoFuncSetUTCMonth): 24074 (JSC::dateProtoFuncSetFullYear): 24075 (JSC::dateProtoFuncSetUTCFullYear): 24076 (JSC::dateProtoFuncSetYear): 24077 (JSC::dateProtoFuncGetYear): 24078 (JSC::dateProtoFuncToJSON): 24079 * runtime/ErrorConstructor.cpp: 24080 (JSC::callErrorConstructor): 24081 * runtime/ErrorPrototype.cpp: 24082 (JSC::errorProtoFuncToString): 24083 * runtime/FunctionConstructor.cpp: 24084 (JSC::callFunctionConstructor): 24085 * runtime/FunctionPrototype.cpp: 24086 (JSC::callFunctionPrototype): 24087 (JSC::functionProtoFuncToString): 24088 (JSC::functionProtoFuncApply): 24089 (JSC::functionProtoFuncCall): 24090 * runtime/JSGlobalObjectFunctions.cpp: 24091 (JSC::encode): 24092 (JSC::decode): 24093 (JSC::globalFuncEval): 24094 (JSC::globalFuncParseInt): 24095 (JSC::globalFuncParseFloat): 24096 (JSC::globalFuncIsNaN): 24097 (JSC::globalFuncIsFinite): 24098 (JSC::globalFuncDecodeURI): 24099 (JSC::globalFuncDecodeURIComponent): 24100 (JSC::globalFuncEncodeURI): 24101 (JSC::globalFuncEncodeURIComponent): 24102 (JSC::globalFuncEscape): 24103 (JSC::globalFuncUnescape): 24104 (JSC::globalFuncJSCPrint): 24105 * runtime/JSGlobalObjectFunctions.h: 24106 * runtime/JSONObject.cpp: 24107 (JSC::JSONProtoFuncParse): 24108 (JSC::JSONProtoFuncStringify): 24109 * runtime/JSString.h: 24110 * runtime/MathObject.cpp: 24111 (JSC::mathProtoFuncAbs): 24112 (JSC::mathProtoFuncACos): 24113 (JSC::mathProtoFuncASin): 24114 (JSC::mathProtoFuncATan): 24115 (JSC::mathProtoFuncATan2): 24116 (JSC::mathProtoFuncCeil): 24117 (JSC::mathProtoFuncCos): 24118 (JSC::mathProtoFuncExp): 24119 (JSC::mathProtoFuncFloor): 24120 (JSC::mathProtoFuncLog): 24121 (JSC::mathProtoFuncMax): 24122 (JSC::mathProtoFuncMin): 24123 (JSC::mathProtoFuncPow): 24124 (JSC::mathProtoFuncRandom): 24125 (JSC::mathProtoFuncRound): 24126 (JSC::mathProtoFuncSin): 24127 (JSC::mathProtoFuncSqrt): 24128 (JSC::mathProtoFuncTan): 24129 * runtime/NativeErrorConstructor.cpp: 24130 (JSC::callNativeErrorConstructor): 24131 * runtime/NumberConstructor.cpp: 24132 (JSC::callNumberConstructor): 24133 * runtime/NumberPrototype.cpp: 24134 (JSC::numberProtoFuncToString): 24135 (JSC::numberProtoFuncToLocaleString): 24136 (JSC::numberProtoFuncValueOf): 24137 (JSC::numberProtoFuncToFixed): 24138 (JSC::numberProtoFuncToExponential): 24139 (JSC::numberProtoFuncToPrecision): 24140 * runtime/ObjectConstructor.cpp: 24141 (JSC::callObjectConstructor): 24142 (JSC::objectConstructorGetPrototypeOf): 24143 (JSC::objectConstructorGetOwnPropertyDescriptor): 24144 (JSC::objectConstructorGetOwnPropertyNames): 24145 (JSC::objectConstructorKeys): 24146 (JSC::objectConstructorDefineProperty): 24147 (JSC::objectConstructorDefineProperties): 24148 (JSC::objectConstructorCreate): 24149 * runtime/ObjectPrototype.cpp: 24150 (JSC::objectProtoFuncValueOf): 24151 (JSC::objectProtoFuncHasOwnProperty): 24152 (JSC::objectProtoFuncIsPrototypeOf): 24153 (JSC::objectProtoFuncDefineGetter): 24154 (JSC::objectProtoFuncDefineSetter): 24155 (JSC::objectProtoFuncLookupGetter): 24156 (JSC::objectProtoFuncLookupSetter): 24157 (JSC::objectProtoFuncPropertyIsEnumerable): 24158 (JSC::objectProtoFuncToLocaleString): 24159 (JSC::objectProtoFuncToString): 24160 * runtime/ObjectPrototype.h: 24161 * runtime/Operations.h: 24162 (JSC::jsString): 24163 * runtime/RegExpConstructor.cpp: 24164 (JSC::callRegExpConstructor): 24165 * runtime/RegExpObject.cpp: 24166 (JSC::RegExpObject::test): 24167 (JSC::RegExpObject::exec): 24168 (JSC::callRegExpObject): 24169 (JSC::RegExpObject::match): 24170 * runtime/RegExpObject.h: 24171 * runtime/RegExpPrototype.cpp: 24172 (JSC::regExpProtoFuncTest): 24173 (JSC::regExpProtoFuncExec): 24174 (JSC::regExpProtoFuncCompile): 24175 (JSC::regExpProtoFuncToString): 24176 * runtime/StringConstructor.cpp: 24177 (JSC::stringFromCharCodeSlowCase): 24178 (JSC::stringFromCharCode): 24179 (JSC::callStringConstructor): 24180 * runtime/StringPrototype.cpp: 24181 (JSC::stringProtoFuncReplace): 24182 (JSC::stringProtoFuncToString): 24183 (JSC::stringProtoFuncCharAt): 24184 (JSC::stringProtoFuncCharCodeAt): 24185 (JSC::stringProtoFuncConcat): 24186 (JSC::stringProtoFuncIndexOf): 24187 (JSC::stringProtoFuncLastIndexOf): 24188 (JSC::stringProtoFuncMatch): 24189 (JSC::stringProtoFuncSearch): 24190 (JSC::stringProtoFuncSlice): 24191 (JSC::stringProtoFuncSplit): 24192 (JSC::stringProtoFuncSubstr): 24193 (JSC::stringProtoFuncSubstring): 24194 (JSC::stringProtoFuncToLowerCase): 24195 (JSC::stringProtoFuncToUpperCase): 24196 (JSC::stringProtoFuncLocaleCompare): 24197 (JSC::stringProtoFuncBig): 24198 (JSC::stringProtoFuncSmall): 24199 (JSC::stringProtoFuncBlink): 24200 (JSC::stringProtoFuncBold): 24201 (JSC::stringProtoFuncFixed): 24202 (JSC::stringProtoFuncItalics): 24203 (JSC::stringProtoFuncStrike): 24204 (JSC::stringProtoFuncSub): 24205 (JSC::stringProtoFuncSup): 24206 (JSC::stringProtoFuncFontcolor): 24207 (JSC::stringProtoFuncFontsize): 24208 (JSC::stringProtoFuncAnchor): 24209 (JSC::stringProtoFuncLink): 24210 (JSC::stringProtoFuncTrim): 24211 (JSC::stringProtoFuncTrimLeft): 24212 (JSC::stringProtoFuncTrimRight): 24213 24214 2010-05-28 Jedrzej Nowacki <jedrzej.nowacki (a] nokia.com> 24215 24216 Reviewed by Geoffrey Garen. 24217 24218 Fix the JSObjectSetPrototype function. 24219 24220 A cycle in a prototype chain can cause an application hang or 24221 even crash. 24222 A check for a prototype chain cycles was added to 24223 the JSObjectSetPrototype. 24224 24225 JSObjectSetPrototype doesn't check for cycle in prototype chain. 24226 https://bugs.webkit.org/show_bug.cgi?id=39360 24227 24228 * API/JSObjectRef.cpp: 24229 (JSObjectSetPrototype): 24230 * API/tests/testapi.c: 24231 (assertTrue): 24232 (checkForCycleInPrototypeChain): 24233 (main): 24234 * runtime/JSObject.cpp: 24235 (JSC::JSObject::put): 24236 * runtime/JSObject.h: 24237 (JSC::JSObject::setPrototypeWithCycleCheck): 24238 24239 2010-05-28 Chao-ying Fu <fu (a] mips.com> 24240 24241 Reviewed by Eric Seidel. 24242 24243 Fix MIPS JIT DoubleGreaterThanOrEqual Operands 24244 https://bugs.webkit.org/show_bug.cgi?id=39504 24245 24246 Swapped two operands of left and right for DoubleGreaterThanOrEqual. 24247 This patch fixed two layout tests as follows. 24248 fast/js/comparison-operators-greater.html 24249 fast/js/comparison-operators-less.html 24250 24251 * assembler/MacroAssemblerMIPS.h: 24252 (JSC::MacroAssemblerMIPS::branchDouble): 24253 24254 2010-05-28 Gavin Barraclough <barraclough (a] apple.com> 24255 24256 Reviewed by Geoff Garen. 24257 24258 Move jit compilation from linking thunks into cti_vm_lazyLink methods. 24259 24260 * jit/JITOpcodes.cpp: 24261 (JSC::JIT::privateCompileCTIMachineTrampolines): 24262 * jit/JITOpcodes32_64.cpp: 24263 (JSC::JIT::privateCompileCTIMachineTrampolines): 24264 * jit/JITStubs.cpp: 24265 (JSC::DEFINE_STUB_FUNCTION): 24266 24267 2010-05-28 Gavin Barraclough <barraclough (a] apple.com> 24268 24269 Reviewed by Sam Weinig. 24270 24271 Bug 39898 - Move arity check into callee. 24272 24273 We can reduce the size of the virtual call trampolines by moving the arity check 24274 into the callee functions. As a following step we will be able to remove the 24275 check for native function / codeblocks by performing translation in a lazy stub. 24276 24277 * interpreter/CallFrame.h: 24278 (JSC::ExecState::init): 24279 (JSC::ExecState::setReturnPC): 24280 * jit/JIT.cpp: 24281 (JSC::JIT::privateCompile): 24282 (JSC::JIT::linkCall): 24283 (JSC::JIT::linkConstruct): 24284 * jit/JIT.h: 24285 (JSC::JIT::compile): 24286 * jit/JITOpcodes.cpp: 24287 (JSC::JIT::privateCompileCTIMachineTrampolines): 24288 * jit/JITOpcodes32_64.cpp: 24289 (JSC::JIT::privateCompileCTIMachineTrampolines): 24290 * jit/JITStubs.cpp: 24291 (JSC::DEFINE_STUB_FUNCTION): 24292 * runtime/Executable.cpp: 24293 (JSC::FunctionExecutable::generateJITCodeForCall): 24294 (JSC::FunctionExecutable::generateJITCodeForConstruct): 24295 (JSC::FunctionExecutable::reparseExceptionInfo): 24296 * runtime/Executable.h: 24297 (JSC::NativeExecutable::NativeExecutable): 24298 (JSC::FunctionExecutable::generatedJITCodeForCallWithArityCheck): 24299 (JSC::FunctionExecutable::generatedJITCodeForConstructWithArityCheck): 24300 24301 2010-05-27 Luiz Agostini <luiz.agostini (a] openbossa.org> 24302 24303 Reviewed by Darin Adler. 24304 24305 UTF-16 code points compare() for String objects 24306 https://bugs.webkit.org/show_bug.cgi?id=39701 24307 24308 Moving compare() implementation from UString to StringImpl for it to be shared 24309 with String. Adding overloaded free functions codePointCompare() in StringImpl 24310 and WTFString. Renaming function compare in UString to codePointCompare to be 24311 consistent. 24312 24313 * runtime/JSArray.cpp: 24314 (JSC::compareByStringPairForQSort): 24315 * runtime/UString.cpp: 24316 * runtime/UString.h: 24317 (JSC::codePointCompare): 24318 * wtf/text/StringImpl.cpp: 24319 (WebCore::codePointCompare): 24320 * wtf/text/StringImpl.h: 24321 * wtf/text/WTFString.cpp: 24322 (WebCore::codePointCompare): 24323 * wtf/text/WTFString.h: 24324 24325 2010-05-26 Darin Adler <darin (a] apple.com> 24326 24327 Reviewed by Kent Tamura. 24328 24329 Null characters handled incorrectly in ToNumber conversion 24330 https://bugs.webkit.org/show_bug.cgi?id=38088 24331 24332 * runtime/JSGlobalObjectFunctions.cpp: 24333 (JSC::parseInt): Changed code to use UTF8String().data() instead of 24334 ascii() to fix the thread safety issue. Code path is covered by existing 24335 tests in run-javascriptcore-tests. 24336 (JSC::parseFloat): Moved comment to UString::toDouble since the issue 24337 affects all clients, not just parseFloat. Specifically, this also affects 24338 standard JavaScript numeric conversion, ToNumber. 24339 24340 * runtime/UString.cpp: 24341 (JSC::UString::toDouble): Added a comment about incorrect space skipping. 24342 Changed trailing junk check to use the length of the CString instead of 24343 checking for a null character. Also got rid of a little unneeded logic 24344 in the case where we tolerate trailing junk. 24345 24346 2010-05-27 Nathan Lawrence <nlawrence (a] apple.com> 24347 24348 Reviewed by Geoffrey Garen. 24349 24350 Search for the new allocation one word at a time. Improves 24351 performance on SunSpider by approximately 1%. 24352 http://bugs.webkit.org/show_bug.cgi?id=39758 24353 24354 * runtime/Collector.cpp: 24355 (JSC::Heap::allocate): 24356 * runtime/Collector.h: 24357 (JSC::CollectorBitmap::advanceToNextPossibleFreeCell): 24358 24359 2010-05-27 Kevin Ollivier <kevino (a] theolliviers.com> 24360 24361 [wx] Build fixes for Windows after recent changes. 24362 24363 * wscript: 24364 24365 2010-05-27 Gustavo Noronha Silva <gns (a] gnome.org> 24366 24367 More build fixage for make dist. 24368 24369 * GNUmakefile.am: 24370 24371 2010-05-27 Kwang Yul Seo <skyul (a] company100.net> 24372 24373 Reviewed by Darin Adler. 24374 24375 RVCT does not have strnstr. 24376 https://bugs.webkit.org/show_bug.cgi?id=39719 24377 24378 Add COMPILER(RVCT) guard to strnstr in StringExtras.h as RVCT does not provide strnstr. 24379 24380 * wtf/StringExtras.h: 24381 24382 2010-05-26 Gavin Barraclough <barraclough (a] apple.com> 24383 24384 Reviewed by Oliver Hunt. 24385 24386 Bug 39795 - Add support for YARR JIT generation of greedy quantified parens at the end of the main disjunction. 24387 (relanding r60267) 24388 24389 If the last item in a main disjunction is a quantified set of parentheses, 24390 this is easier to code generate for than the general case for quantified 24391 parentheses. This is because we never need to backtrack into the parentheses 24392 - the first match will be the final and accepted match. 24393 24394 This patch also somewhat reverts a recent change to when fallback to PCRE 24395 occurs. At the minute the compiler is tracking on patterns which will 24396 require JIT fallback. This is handy from a performance perspective (it saves 24397 the failed attempt at JIT compilation), but it means introducing knowledge 24398 of the JITs capabilities into the other layers of the regex compilers. For 24399 the specific feature of back-references, add a flag tracking their presence 24400 on the pattern, and make these expressions fallback without attempting to 24401 JIT. For parentheses, return to detecting which cases are have or have not 24402 been handled during JIT compilation. 24403 24404 18% progression on tagcloud, ~1.5% overall on sunspidey. 24405 24406 * yarr/RegexCompiler.cpp: 24407 (JSC::Yarr::RegexPatternConstructor::atomBackReference): 24408 (JSC::Yarr::RegexPatternConstructor::quantifyAtom): 24409 * yarr/RegexJIT.cpp: 24410 (JSC::Yarr::RegexGenerator::TermGenerationState::isLastTerm): 24411 (JSC::Yarr::RegexGenerator::TermGenerationState::isMainDisjunction): 24412 (JSC::Yarr::RegexGenerator::generateParenthesesGreedyNoBacktrack): 24413 (JSC::Yarr::RegexGenerator::generateTerm): 24414 (JSC::Yarr::RegexGenerator::RegexGenerator): 24415 (JSC::Yarr::RegexGenerator::shouldFallBack): 24416 (JSC::Yarr::jitCompileRegex): 24417 * yarr/RegexPattern.h: 24418 (JSC::Yarr::RegexPattern::RegexPattern): 24419 (JSC::Yarr::RegexPattern::reset): 24420 24421 2010-05-26 Gavin Barraclough <barraclough (a] apple.com> 24422 24423 Reviewed by NOBODY (revert). 24424 24425 Temporarily rolling out r60267, I appear to have hoesed perf at the last minute. :-/ Fixing. 24426 24427 * yarr/RegexCompiler.cpp: 24428 (JSC::Yarr::RegexPatternConstructor::atomBackReference): 24429 (JSC::Yarr::RegexPatternConstructor::quantifyAtom): 24430 * yarr/RegexJIT.cpp: 24431 (JSC::Yarr::RegexGenerator::TermGenerationState::term): 24432 (JSC::Yarr::RegexGenerator::generateParenthesesSingle): 24433 (JSC::Yarr::RegexGenerator::generateTerm): 24434 (JSC::Yarr::RegexGenerator::RegexGenerator): 24435 (JSC::Yarr::jitCompileRegex): 24436 * yarr/RegexPattern.h: 24437 (JSC::Yarr::RegexPattern::RegexPattern): 24438 (JSC::Yarr::RegexPattern::reset): 24439 24440 2010-05-26 Gustavo Noronha Silva <gns (a] gnome.org> 24441 24442 Build fixes for make distcheck. 24443 24444 * GNUmakefile.am: 24445 24446 2010-05-26 Gavin Barraclough <barraclough (a] apple.com> 24447 24448 Reviewed by Oliver Hunt. 24449 24450 Bug 39795 - Add support for YARR JIT generation of greedy quantified parens at the end of the main disjunction. 24451 24452 If the last item in a main disjunction is a quantified set of parentheses, 24453 this is easier to code generate for than the general case for quantified 24454 parentheses. This is because we never need to backtrack into the parentheses 24455 - the first match will be the final and accepted match. 24456 24457 This patch also somewhat reverts a recent change to when fallback to PCRE 24458 occurs. At the minute the compiler is tracking on patterns which will 24459 require JIT fallback. This is handy from a performance perspective (it saves 24460 the failed attempt at JIT compilation), but it means introducing knowledge 24461 of the JITs capabilities into the other layers of the regex compilers. For 24462 the specific feature of back-references, add a flag tracking their presence 24463 on the pattern, and make these expressions fallback without attempting to 24464 JIT. For parentheses, return to detecting which cases are have or have not 24465 been handled during JIT compilation. 24466 24467 18% progression on tagcloud, ~1.5% overall on sunspidey. 24468 24469 * yarr/RegexCompiler.cpp: 24470 (JSC::Yarr::RegexPatternConstructor::atomBackReference): 24471 (JSC::Yarr::RegexPatternConstructor::quantifyAtom): 24472 * yarr/RegexJIT.cpp: 24473 (JSC::Yarr::RegexGenerator::TermGenerationState::isLastTerm): 24474 (JSC::Yarr::RegexGenerator::TermGenerationState::isMainDisjunction): 24475 (JSC::Yarr::RegexGenerator::generateParenthesesGreedyNoBacktrack): 24476 (JSC::Yarr::RegexGenerator::generateTerm): 24477 (JSC::Yarr::RegexGenerator::RegexGenerator): 24478 (JSC::Yarr::RegexGenerator::shouldFallBack): 24479 (JSC::Yarr::jitCompileRegex): 24480 * yarr/RegexPattern.h: 24481 (JSC::Yarr::RegexPattern::RegexPattern): 24482 (JSC::Yarr::RegexPattern::reset): 24483 24484 2010-05-26 Geoffrey Garen <ggaren (a] apple.com> 24485 24486 Reviewed by Sam Weinig. 24487 24488 Fixed a crash seen on the Leopard bot, caused by merge. 24489 24490 * jit/JITStubs.cpp: 24491 (JSC::DEFINE_STUB_FUNCTION): Get the return address from the callframe, 24492 since it's no longer passed to us as an argument. 24493 24494 2010-05-25 Geoffrey Garen <ggaren (a] apple.com> 24495 24496 Fixed build failure caused by merge. 24497 24498 * jit/JITStubs.cpp: 24499 (JSC::DEFINE_STUB_FUNCTION): On error, return a single value, since this 24500 function no longer returns a pair. 24501 24502 2010-05-25 Geoffrey Garen <ggaren (a] apple.com> 24503 24504 Reviewed by Oliver Hunt. 24505 24506 <rdar://problem/8020221> 24507 24508 Fixed a crash seen on Windows when calling a function with too many 24509 arguments. 24510 24511 SunSpider reports no change. 24512 24513 No test because the ASSERT I added fires in existing tests. 24514 24515 * jit/JITStubs.cpp: 24516 (JSC::DEFINE_STUB_FUNCTION): Make sure to grow the registerFile when too 24517 many arguments have been provided, since the caller only allocated enough 24518 registerFile space for the arguments it provided, not enough for the extra 24519 copy of arguments we're going to need. 24520 24521 2010-05-25 Kwang Yul Seo <skyul (a] company100.net> 24522 24523 Reviewed by Darin Adler. 24524 24525 Build fix for JSFunction 24526 https://bugs.webkit.org/show_bug.cgi?id=39658 24527 24528 MSVC can't compile one of JSFunction constructors when JIT is disabled. 24529 "PassRefPtr<NativeExecutable>" causes the compile error as NativeExecutable is not defined. 24530 Add ENABLE(JIT) guard to the constructor. 24531 24532 * runtime/JSFunction.cpp: 24533 (JSC::JSFunction::JSFunction): 24534 * runtime/JSFunction.h: 24535 24536 2010-05-24 Gavin Barraclough <barraclough (a] apple.com> 24537 24538 Reviewed by Sam Weinig. 24539 24540 Bug 39643 - Clean up code generation in the JIT of stub function calls for op_call. 24541 24542 Presently, as soon as op-call strays off the hot path we set up a set of values on 24543 the stack to be passed as arguments to cti functions, in case any should be called. 24544 24545 Instead, hoist the setup of the callframe to happen slightly sooner, and make the 24546 cti functions to compile & check arity read these values from the callframe. This 24547 allows up to remove the deprecated methods to manually set up cti arguments, rather 24548 than using JITStubCall.h. 24549 24550 * interpreter/CallFrame.h: 24551 * jit/JIT.h: 24552 * jit/JITCall.cpp: 24553 (JSC::JIT::compileOpCallInitializeCallFrame): 24554 (JSC::JIT::compileOpCallVarargs): 24555 (JSC::JIT::compileOpCallVarargsSlowCase): 24556 (JSC::JIT::compileOpCall): 24557 (JSC::JIT::compileOpCallSlowCase): 24558 * jit/JITCall32_64.cpp: 24559 (JSC::JIT::compileOpCallInitializeCallFrame): 24560 (JSC::JIT::compileOpCallVarargs): 24561 (JSC::JIT::compileOpCallVarargsSlowCase): 24562 (JSC::JIT::compileOpCall): 24563 (JSC::JIT::compileOpCallSlowCase): 24564 * jit/JITInlineMethods.h: 24565 * jit/JITOpcodes.cpp: 24566 (JSC::JIT::privateCompileCTIMachineTrampolines): 24567 * jit/JITOpcodes32_64.cpp: 24568 (JSC::JIT::privateCompileCTIMachineTrampolines): 24569 * jit/JITStubs.cpp: 24570 (JSC::DEFINE_STUB_FUNCTION): 24571 * jit/JITStubs.h: 24572 (JSC::): 24573 24574 2010-05-24 Gavin Barraclough <barraclough (a] apple.com> 24575 24576 Reviewed by Sam Weinig. 24577 Relanding r60075. 24578 24579 * bytecode/CodeBlock.cpp: 24580 (JSC::CodeBlock::dump): 24581 (JSC::CodeBlock::getByIdExceptionInfoForBytecodeOffset): 24582 * bytecode/CodeBlock.h: 24583 * bytecode/Opcode.h: 24584 * bytecompiler/BytecodeGenerator.cpp: 24585 (JSC::BytecodeGenerator::BytecodeGenerator): 24586 (JSC::BytecodeGenerator::emitConstruct): 24587 * bytecompiler/BytecodeGenerator.h: 24588 (JSC::BytecodeGenerator::emitGetByIdExceptionInfo): 24589 * interpreter/Interpreter.cpp: 24590 (JSC::Interpreter::privateExecute): 24591 * jit/JIT.cpp: 24592 (JSC::JIT::privateCompileMainPass): 24593 * jit/JIT.h: 24594 * jit/JITCall.cpp: 24595 (JSC::JIT::compileOpCall): 24596 (JSC::JIT::compileOpCallSlowCase): 24597 * jit/JITCall32_64.cpp: 24598 (JSC::JIT::compileOpCall): 24599 (JSC::JIT::compileOpCallSlowCase): 24600 * jit/JITOpcodes.cpp: 24601 (JSC::JIT::privateCompileCTIMachineTrampolines): 24602 (JSC::JIT::privateCompileCTINativeCall): 24603 (JSC::JIT::emit_op_neq_null): 24604 (JSC::JIT::emit_op_convert_this): 24605 (JSC::JIT::emit_op_get_callee): 24606 (JSC::JIT::emit_op_create_this): 24607 * jit/JITOpcodes32_64.cpp: 24608 (JSC::JIT::privateCompileCTIMachineTrampolines): 24609 (JSC::JIT::privateCompileCTINativeCall): 24610 (JSC::JIT::emit_op_get_callee): 24611 (JSC::JIT::emit_op_create_this): 24612 * jit/JITStubs.cpp: 24613 (JSC::DEFINE_STUB_FUNCTION): 24614 (JSC::JITThunks::hostFunctionStub): 24615 * jit/JITStubs.h: 24616 (JSC::JITThunks::ctiNativeConstruct): 24617 (JSC::): 24618 * runtime/ExceptionHelpers.cpp: 24619 (JSC::createNotAnObjectError): 24620 * runtime/Executable.h: 24621 (JSC::NativeExecutable::create): 24622 (JSC::NativeExecutable::NativeExecutable): 24623 * runtime/JSFunction.cpp: 24624 (JSC::callHostFunctionAsConstructor): 24625 * runtime/JSFunction.h: 24626 * wtf/Platform.h: 24627 24628 == Rolled over to ChangeLog-2010-05-24 == 24629