1. 04 Apr, 2011 1 commit
    • oliver@apple.com's avatar
      2011-04-01 Oliver Hunt <oliver@apple.com> · 59144210
      oliver@apple.com authored
              Reviewed by Geoffrey Garen.
      
              Make StructureChain GC allocated
              https://bugs.webkit.org/show_bug.cgi?id=56695
      
              Make StructureChain GC allocated, and make the various owners
              mark it correctly.
      
              * JavaScriptCore.exp:
              * bytecode/CodeBlock.cpp:
              (JSC::CodeBlock::dump):
              (JSC::CodeBlock::derefStructures):
              (JSC::CodeBlock::refStructures):
              (JSC::CodeBlock::markAggregate):
              * bytecode/Instruction.h:
              (JSC::PolymorphicAccessStructureList::PolymorphicStubInfo::set):
              (JSC::PolymorphicAccessStructureList::PolymorphicAccessStructureList):
              (JSC::PolymorphicAccessStructureList::derefStructures):
              (JSC::PolymorphicAccessStructureList::markAggregate):
              (JSC::Instruction::Instruction):
              * bytecode/StructureStubInfo.cpp:
              (JSC::StructureStubInfo::deref):
              (JSC::StructureStubInfo::markAggregate):
              * bytecode/StructureStubInfo.h:
              (JSC::StructureStubInfo::initGetByIdChain):
              (JSC::StructureStubInfo::initPutByIdTransition):
              * bytecompiler/BytecodeGenerator.cpp:
              (JSC::BytecodeGenerator::emitJumpIfNotFunctionCall):
              (JSC::BytecodeGenerator::emitJumpIfNotFunctionApply):
              * collector/handles/Handle.h:
              (JSC::HandleConverter::operator->):
              (JSC::HandleConverter::operator*):
              * interpreter/Interpreter.cpp:
              (JSC::Interpreter::privateExecute):
              * jit/JITOpcodes.cpp:
              (JSC::JIT::emit_op_jneq_ptr):
              * jit/JITOpcodes32_64.cpp:
              (JSC::JIT::emit_op_jneq_ptr):
              * jit/JITPropertyAccess.cpp:
              (JSC::JIT::privateCompileGetByIdChainList):
              * jit/JITPropertyAccess32_64.cpp:
              (JSC::JIT::privateCompileGetByIdChainList):
              * jit/JITStubs.cpp:
              (JSC::JITThunks::tryCachePutByID):
              (JSC::JITThunks::tryCacheGetByID):
              (JSC::getPolymorphicAccessStructureListSlot):
              (JSC::DEFINE_STUB_FUNCTION):
              * runtime/JSCell.h:
              * runtime/JSGlobalData.cpp:
              (JSC::JSGlobalData::JSGlobalData):
              * runtime/JSGlobalData.h:
              * runtime/JSGlobalObject.cpp:
              (JSC::markIfNeeded):
              * runtime/JSGlobalObject.h:
              (JSC::Structure::prototypeChain):
              * runtime/JSObject.h:
              (JSC::JSObject::putDirectInternal):
              (JSC::JSObject::markChildrenDirect):
              * runtime/JSPropertyNameIterator.cpp:
              (JSC::JSPropertyNameIterator::create):
              (JSC::JSPropertyNameIterator::get):
              (JSC::JSPropertyNameIterator::markChildren):
              * runtime/JSPropertyNameIterator.h:
              (JSC::JSPropertyNameIterator::setCachedPrototypeChain):
              * runtime/JSZombie.cpp:
              (JSC::JSZombie::leakedZombieStructure):
              * runtime/JSZombie.h:
              * runtime/MarkStack.h:
              (JSC::MarkStack::append):
              * runtime/MarkedBlock.cpp:
              (JSC::MarkedBlock::sweep):
              * runtime/Structure.cpp:
              (JSC::Structure::addPropertyTransition):
              * runtime/Structure.h:
              (JSC::Structure::markAggregate):
              * runtime/StructureChain.cpp:
              (JSC::StructureChain::StructureChain):
              (JSC::StructureChain::~StructureChain):
              (JSC::StructureChain::markChildren):
              * runtime/StructureChain.h:
              (JSC::StructureChain::create):
              (JSC::StructureChain::createStructure):
              * runtime/WriteBarrier.h:
              (JSC::WriteBarrierBase::get):
              (JSC::WriteBarrierBase::operator*):
              (JSC::WriteBarrierBase::operator->):
      2011-04-01  Oliver Hunt  <oliver@apple.com>
      
              Reviewed by Geoffrey Garen.
      
              Make StructureChain GC allocated
              https://bugs.webkit.org/show_bug.cgi?id=56695
      
              Update for new Structure marking function
      
              * bindings/js/JSDOMGlobalObject.cpp:
              (WebCore::JSDOMGlobalObject::markChildren):
      
      git-svn-id: http://svn.webkit.org/repository/webkit/trunk@82849 268f45cc-cd09-0410-ab3c-d52691b4dbfc
      59144210
  2. 30 Mar, 2011 2 commits
    • oliver@apple.com's avatar
      Rollout r82500 · 9d5d1b0f
      oliver@apple.com authored
      git-svn-id: http://svn.webkit.org/repository/webkit/trunk@82519 268f45cc-cd09-0410-ab3c-d52691b4dbfc
      9d5d1b0f
    • oliver@apple.com's avatar
      2011-03-30 Oliver Hunt <oliver@apple.com> · 887a036f
      oliver@apple.com authored
              Reviewed by Geoffrey Garen.
      
              Make StructureChain GC allocated
              https://bugs.webkit.org/show_bug.cgi?id=56695
      
              Make StructureChain GC allocated, and make the various owners
              mark it correctly.
      
              * bytecode/CodeBlock.cpp:
              (JSC::CodeBlock::dump):
              (JSC::CodeBlock::derefStructures):
              (JSC::CodeBlock::refStructures):
              (JSC::CodeBlock::markAggregate):
              * bytecode/Instruction.h:
              (JSC::PolymorphicAccessStructureList::PolymorphicStubInfo::set):
              (JSC::PolymorphicAccessStructureList::PolymorphicAccessStructureList):
              (JSC::PolymorphicAccessStructureList::derefStructures):
              (JSC::PolymorphicAccessStructureList::markAggregate):
              (JSC::Instruction::Instruction):
              * bytecode/StructureStubInfo.cpp:
              (JSC::StructureStubInfo::deref):
              (JSC::StructureStubInfo::markAggregate):
              * bytecode/StructureStubInfo.h:
              (JSC::StructureStubInfo::initGetByIdChain):
              (JSC::StructureStubInfo::initPutByIdTransition):
              * bytecompiler/BytecodeGenerator.cpp:
              (JSC::BytecodeGenerator::emitJumpIfNotFunctionCall):
              (JSC::BytecodeGenerator::emitJumpIfNotFunctionApply):
              * interpreter/Interpreter.cpp:
              (JSC::Interpreter::privateExecute):
              * jit/JITOpcodes.cpp:
              (JSC::JIT::emit_op_jneq_ptr):
              * jit/JITOpcodes32_64.cpp:
              (JSC::JIT::emit_op_jneq_ptr):
              * jit/JITPropertyAccess.cpp:
              (JSC::JIT::privateCompileGetByIdChainList):
              * jit/JITPropertyAccess32_64.cpp:
              (JSC::JIT::privateCompileGetByIdChainList):
              * jit/JITStubs.cpp:
              (JSC::getPolymorphicAccessStructureListSlot):
              (JSC::DEFINE_STUB_FUNCTION):
              * runtime/JSCell.h:
              * runtime/JSGlobalData.cpp:
              (JSC::JSGlobalData::JSGlobalData):
              * runtime/JSGlobalData.h:
              * runtime/JSGlobalObject.cpp:
              (JSC::markIfNeeded):
              * runtime/JSGlobalObject.h:
              (JSC::Structure::prototypeChain):
              * runtime/JSObject.h:
              (JSC::JSObject::markChildrenDirect):
              * runtime/JSPropertyNameIterator.cpp:
              (JSC::JSPropertyNameIterator::create):
              (JSC::JSPropertyNameIterator::get):
              (JSC::JSPropertyNameIterator::markChildren):
              * runtime/JSPropertyNameIterator.h:
              (JSC::JSPropertyNameIterator::setCachedPrototypeChain):
              * runtime/MarkStack.h:
              (JSC::MarkStack::append):
              * runtime/Structure.h:
              (JSC::Structure::cachedPrototypeChainSlot):
              * runtime/StructureChain.cpp:
              (JSC::StructureChain::StructureChain):
              * runtime/StructureChain.h:
              (JSC::StructureChain::create):
              (JSC::StructureChain::createStructure):
      
      git-svn-id: http://svn.webkit.org/repository/webkit/trunk@82500 268f45cc-cd09-0410-ab3c-d52691b4dbfc
      887a036f
  3. 20 Jan, 2011 1 commit
    • ossy@webkit.org's avatar
      Refactoring of the custom allocation framework · 95c1bc42
      ossy@webkit.org authored
      https://bugs.webkit.org/show_bug.cgi?id=49897
      
      Patch by Zoltan Horvath <zoltan@webkit.org> on 2011-01-20
      Reviewed by Csaba Osztrogonác.
      
      Source/JavaScriptCore:
      
      Inheriting from FastAllocBase can result in objects getting larger (bug #33896, #46589).
      The modification replaces Noncopyable and FastAllocBase classes and these inherits with their
      equivalent macro implementation at the necessary places.
      
      * wtf/FastAllocBase.h: Turn FastAllocBase's implementation into a macro.
      
      Source/WebCore:
      
      Inheriting from FastAllocBase can result in objects getting larger (bug #33896, #46589).
      The modification replaces Noncopyable and FastAllocBase classes and these inherits with their
      equivalent macro implementation at the necessary places.
      
      Source/WebKit:
      
      Inheriting from FastAllocBase can result in objects getting larger (bug #33896, #46589).
      The modification replaces Noncopyable and FastAllocBase classes and these inherits with their
      equivalent macro implementation at the necessary places.
      
      Source/WebKit2:
      
      Inheriting from FastAllocBase can result in objects getting larger (bug #33896, #46589).
      The modification replaces Noncopyable and FastAllocBase classes and these inherits with their
      equivalent macro implementation at the necessary places.
      
      Tools:
      
      Inheriting from FastAllocBase can result in objects getting larger (bug #33896, #46589).
      The modification replaces Noncopyable and FastAllocBase classes and these inherits with their
      equivalent macro implementation at the necessary places.
      
      git-svn-id: http://svn.webkit.org/repository/webkit/trunk@76248 268f45cc-cd09-0410-ab3c-d52691b4dbfc
      95c1bc42
  4. 01 Jan, 2011 1 commit
    • abarth@webkit.org's avatar
      Move JavaScriptCore to Source · 76da8fc1
      abarth@webkit.org authored
      https://bugs.webkit.org/show_bug.cgi?id=51604
      
      Reviewed by Eric Seidel.
      
      Update references to JavaScriptCore to point to the new location.
      
      * Android.mk:
      * CMakeLists.txt:
      * DerivedSources.pro:
      * GNUmakefile.am:
      * Makefile:
      * WebKit.pri:
      * WebKit.pro:
      * wscript:
      
      Tools: 
      
      Update references to JavaScriptCore to point to the new location.
      
      * BuildSlaveSupport/build.webkit.org-config/master.cfg:
      * DumpRenderTree/qt/DumpRenderTree.pro:
      * DumpRenderTree/qt/ImageDiff.pro:
      * DumpRenderTree/qt/TestNetscapePlugin/TestNetscapePlugin.pro:
      * DumpRenderTree/wscript:
      * Scripts/build-jsc:
      * Scripts/build-webkit:
      * Scripts/do-file-rename:
      * Scripts/do-webcore-rename:
      * Scripts/run-javascriptcore-tests:
      * Scripts/update-javascriptcore-test-results:
      * Scripts/webkitdirs.pm:
      * Scripts/webkitpy/common/config/build_unittest.py:
      * Scripts/webkitpy/style/checker.py:
      * Scripts/webkitpy/style/checker_unittest.py:
      * Scripts/webkitpy/style/checkers/cpp_unittest.py:
      * WebKitTestRunner/InjectedBundle/qt/InjectedBundle.pro:
      * WebKitTestRunner/qt/WebKitTestRunner.pro:
      * wx/build/settings.py:
      
      WebCore: 
      
      Update references to JavaScriptCore.
      
      * Android.derived.jscbindings.mk:
      * Android.v8bindings.mk:
      * CMakeLists.txt:
      * WebCore.gyp/WebCore.gyp:
      * WebCore.pro:
        - These changes are subtle and might not be 100% correct.
      * move-js-headers.sh:
      
      WebKit/chromium: 
      
      * WebKit.gyp:
        - Point to JavaScriptCore in its new location.
      
      WebKit/gtk: 
      
      * GNUmakefile.am:
      * docs/GNUmakefile.am:
        - Point to JavaScriptCore in its new location.
      
      WebKit/qt: 
      
      * WebKit_pch.h:
      * docs/qtwebkit.qdocconf:
        - Point to JavaScriptCore in its new location.
      
      WebKit/win: 
      
      * WebKit.vcproj/WebKit.sln:
        - Point to JavaScriptCore in its new location.
      
      WebKit/wx: 
      
      * bindings/python/wscript:
      * wscript:
        - Point to JavaScriptCore in its new location.
      
      WebKit2: 
      
      * WebKit2.pro:
        - Point to JavaScriptCore in its new location.
      
      Websites/bugs.webkit.org: 
      
      * PrettyPatch/PrettyPatch.rb:
        - Remove reference to JavaScriptCore as a source directory.
      
      Websites/webkit.org: 
      
      * coding/assertion-guidelines.html:
        - Update documentation to point to the new location of
          JavaScriptCore.
      
      
      
      git-svn-id: http://svn.webkit.org/repository/webkit/trunk@74855 268f45cc-cd09-0410-ab3c-d52691b4dbfc
      76da8fc1
  5. 08 Aug, 2010 2 commits
    • eric@webkit.org's avatar
      2010-08-07 Sheriff Bot <webkit.review.bot@gmail.com> · b8130984
      eric@webkit.org authored
              Unreviewed, rolling out r64938.
              http://trac.webkit.org/changeset/64938
              https://bugs.webkit.org/show_bug.cgi?id=43685
      
              Did not compile on several ports (Requested by abarth on
              #webkit).
      
              * Android.mk:
              * CMakeLists.txt:
              * GNUmakefile.am:
              * JavaScriptCore.gypi:
              * JavaScriptCore.pro:
              * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
              * JavaScriptCore.xcodeproj/project.pbxproj:
              * assembler/AbstractMacroAssembler.h:
              * assembler/MacroAssembler.h:
              * assembler/MacroAssemblerX86.h:
              (JSC::MacroAssemblerX86::load32):
              (JSC::MacroAssemblerX86::store32):
              * assembler/X86Assembler.h:
              (JSC::X86Assembler::movl_rm):
              (JSC::X86Assembler::movl_mr):
              * bytecode/CodeBlock.cpp:
              (JSC::CodeBlock::markAggregate):
              * bytecode/Instruction.h:
              (JSC::PolymorphicAccessStructureList::PolymorphicStubInfo::):
              (JSC::PolymorphicAccessStructureList::PolymorphicStubInfo::set):
              (JSC::PolymorphicAccessStructureList::PolymorphicAccessStructureList):
              * bytecode/StructureStubInfo.cpp:
              (JSC::StructureStubInfo::deref):
              * bytecode/StructureStubInfo.h:
              (JSC::StructureStubInfo::initGetByIdProto):
              (JSC::StructureStubInfo::initGetByIdChain):
              (JSC::StructureStubInfo::):
              * jit/JIT.h:
              * jit/JITMarkObjects.cpp: Removed.
              * jit/JITPropertyAccess.cpp:
              (JSC::JIT::compileGetDirectOffset):
              (JSC::JIT::testPrototype):
              (JSC::JIT::privateCompilePutByIdTransition):
              (JSC::JIT::privateCompileGetByIdProto):
              (JSC::JIT::privateCompileGetByIdProtoList):
              (JSC::JIT::privateCompileGetByIdChainList):
              (JSC::JIT::privateCompileGetByIdChain):
              * jit/JITPropertyAccess32_64.cpp:
              (JSC::JIT::compileGetDirectOffset):
              (JSC::JIT::testPrototype):
              (JSC::JIT::privateCompilePutByIdTransition):
              (JSC::JIT::privateCompileGetByIdProto):
              (JSC::JIT::privateCompileGetByIdProtoList):
              (JSC::JIT::privateCompileGetByIdChainList):
              (JSC::JIT::privateCompileGetByIdChain):
              * jit/JITStubs.cpp:
              (JSC::setupPolymorphicProtoList):
              * wtf/Platform.h:
      
      git-svn-id: http://svn.webkit.org/repository/webkit/trunk@64943 268f45cc-cd09-0410-ab3c-d52691b4dbfc
      b8130984
    • eric@webkit.org's avatar
      2010-08-07 Nathan Lawrence <nlawrence@apple.com> · 667fa8a7
      eric@webkit.org authored
              Reviewed by Geoffrey Garen.
      
              The JIT code contains a number of direct references to GC'd objects.
              When we have movable objects, these references will need to be
              updated.
      
              * Android.mk:
              * CMakeLists.txt:
              * GNUmakefile.am:
              * JavaScriptCore.gypi:
              * JavaScriptCore.pro:
              * JavaScriptCore.xcodeproj/project.pbxproj:
              * assembler/AbstractMacroAssembler.h:
              (JSC::AbstractMacroAssembler::int32AtLocation):
              (JSC::AbstractMacroAssembler::pointerAtLocation):
              (JSC::AbstractMacroAssembler::jumpTarget):
              * assembler/MacroAssembler.h:
              (JSC::MacroAssembler::loadPtrWithPatch):
                  Normally, loadPtr will optimize when the register is eax.  Since
                  the slightly smaller instruction changes the offsets, it messes up
                  our ability to repatch the code.  We added this new instruction
                  that garuntees a constant size.
              * assembler/MacroAssemblerX86.h:
              (JSC::MacroAssemblerX86::load32WithPatch):
                  Changed load32 in the same way described above.
              (JSC::MacroAssemblerX86::load32):
                  Moved the logic to optimize laod32 from movl_mr to load32
              (JSC::MacroAssemblerX86::store32):
                  Moved the logic to optimize store32 from movl_rm to store32
              * assembler/X86Assembler.h:
              (JSC::X86Assembler::movl_rm):
              (JSC::X86Assembler::movl_mr):
              (JSC::X86Assembler::int32AtLocation):
              (JSC::X86Assembler::pointerAtLocation):
              (JSC::X86Assembler::jumpTarget):
              * bytecode/CodeBlock.cpp:
              (JSC::CodeBlock::markAggregate):
              * bytecode/Instruction.h:
                  As described in StructureStubInfo.h, we needed to add additional
                  fields to both StructureStubInfo and
                  PolymorphicAccessStructureList so that we can determine the
                  structure of the JITed code at patch time.
              (JSC::PolymorphicAccessStructureList::PolymorphicStubInfo::set):
              (JSC::PolymorphicAccessStructureList::PolymorphicAccessStructureList):
              * bytecode/StructureStubInfo.cpp:
              (JSC::StructureStubInfo::markAggregate):
                  Added this function to mark the JITed code that correosponds to
                  this structure stub info.
              * bytecode/StructureStubInfo.h:
              (JSC::StructureStubInfo::initGetByIdProto):
              (JSC::StructureStubInfo::initGetByIdChain):
              (JSC::StructureStubInfo::):
              * jit/JIT.h:
              * jit/JITMarkObjects.cpp: Added.
              (JSC::JIT::patchPrototypeStructureAddress):
              (JSC::JIT::patchGetDirectOffset):
              (JSC::JIT::markGetByIdProto):
              (JSC::JIT::markGetByIdChain):
              (JSC::JIT::markGetByIdProtoList):
              (JSC::JIT::markPutByIdTransition):
              (JSC::JIT::markGlobalObjectReference):
              * jit/JITPropertyAccess.cpp:
                  Added asserts for the patch offsets.
              (JSC::JIT::compileGetDirectOffset):
              (JSC::JIT::testPrototype):
              (JSC::JIT::privateCompilePutByIdTransition):
              (JSC::JIT::privateCompileGetByIdProto):
              (JSC::JIT::privateCompileGetByIdProtoList):
              (JSC::JIT::privateCompileGetByIdChainList):
              (JSC::JIT::privateCompileGetByIdChain):
              * jit/JITPropertyAccess32_64.cpp:
              (JSC::JIT::compileGetDirectOffset):
              (JSC::JIT::testPrototype):
              (JSC::JIT::privateCompilePutByIdTransition):
              (JSC::JIT::privateCompileGetByIdProto):
              (JSC::JIT::privateCompileGetByIdProtoList):
              (JSC::JIT::privateCompileGetByIdChainList):
              (JSC::JIT::privateCompileGetByIdChain):
              * jit/JITStubs.cpp:
              (JSC::setupPolymorphicProtoList):
              * wtf/Platform.h:
                  Added ENABLE_MOVABLE_GC_OBJECTS flag
      
      git-svn-id: http://svn.webkit.org/repository/webkit/trunk@64938 268f45cc-cd09-0410-ab3c-d52691b4dbfc
      667fa8a7
  6. 10 Jul, 2010 1 commit
    • oliver@apple.com's avatar
      2010-07-10 Oliver Hunt <oliver@apple.com> · 563fc0a7
      oliver@apple.com authored
              Reviewed by Maciej Stachowiak.
      
              HAVE_COMPUTED_GOTO is dependent on the interpreter being enabled
              https://bugs.webkit.org/show_bug.cgi?id=42039
      
              Separate the existence of computed goto support in the compiler
              from whether or not we are using the interpreter.  All the current
              HAVE(COMPUTED_GOTO) guards are for the interpreter, but I'd like
              the option of using it elsewhere.  The interpreter now uses
              ENABLE(COMPUTED_GOTO_INTERPRETER)
      
              * bytecode/Instruction.h:
              (JSC::Instruction::Instruction):
              * bytecode/Opcode.h:
              * interpreter/Interpreter.cpp:
              (JSC::Interpreter::Interpreter):
              (JSC::Interpreter::isOpcode):
              (JSC::Interpreter::privateExecute):
              * interpreter/Interpreter.h:
              (JSC::Interpreter::getOpcode):
              (JSC::Interpreter::getOpcodeID):
              * wtf/Platform.h:
      
      git-svn-id: http://svn.webkit.org/repository/webkit/trunk@63056 268f45cc-cd09-0410-ab3c-d52691b4dbfc
      563fc0a7
  7. 04 Mar, 2010 1 commit
    • oliver@apple.com's avatar
      2010-03-03 Oliver Hunt <oliver@apple.com> · 2f94c2a0
      oliver@apple.com authored
              Reviewed by Gavin Barraclough.
      
              Allow static property getters to interact with JSCs caching
              https://bugs.webkit.org/show_bug.cgi?id=35716
      
              Add new opcodes for handling cached lookup of static value getters.
              More or less the same as with JS getters, all that changes is that
              instead of calling through a JSFunction we always know that we have
              a C function to call.
      
              For the patching routines in the JIT we now need to pass a few
              new parameters to allow us to pass enough information to the stub
              function to allow us to call the C function correctly.  Logically
              this shouldn't actually be necessary as all of these functions ignore
              the identifier, but removing the ident parameter would require
              somewhat involved changes to the way we implement getOwnPropertySlot,
              etc.
      
              * bytecode/CodeBlock.cpp:
              (JSC::CodeBlock::dump):
              (JSC::CodeBlock::derefStructures):
              (JSC::CodeBlock::refStructures):
              * bytecode/Instruction.h:
              (JSC::Instruction::Instruction):
              (JSC::Instruction::):
              * bytecode/Opcode.h:
              * interpreter/Interpreter.cpp:
              (JSC::Interpreter::tryCacheGetByID):
              (JSC::Interpreter::privateExecute):
              * jit/JIT.cpp:
              (JSC::JIT::privateCompileMainPass):
              * jit/JIT.h:
              (JSC::JIT::compileGetByIdProto):
              (JSC::JIT::compileGetByIdSelfList):
              (JSC::JIT::compileGetByIdProtoList):
              (JSC::JIT::compileGetByIdChainList):
              (JSC::JIT::compileGetByIdChain):
              * jit/JITPropertyAccess.cpp:
              (JSC::JIT::privateCompileGetByIdProto):
              (JSC::JIT::privateCompileGetByIdSelfList):
              (JSC::JIT::privateCompileGetByIdProtoList):
              (JSC::JIT::privateCompileGetByIdChainList):
              (JSC::JIT::privateCompileGetByIdChain):
              * jit/JITPropertyAccess32_64.cpp:
              (JSC::JIT::privateCompileGetByIdProto):
              (JSC::JIT::privateCompileGetByIdSelfList):
              (JSC::JIT::privateCompileGetByIdProtoList):
              (JSC::JIT::privateCompileGetByIdChainList):
              (JSC::JIT::privateCompileGetByIdChain):
              * jit/JITStubs.cpp:
              (JSC::JITThunks::tryCacheGetByID):
              (JSC::DEFINE_STUB_FUNCTION):
              * jit/JITStubs.h:
              (JSC::):
              * runtime/JSFunction.cpp:
              (JSC::JSFunction::getOwnPropertySlot):
              * runtime/Lookup.h:
              (JSC::getStaticPropertySlot):
              (JSC::getStaticValueSlot):
              * runtime/PropertySlot.h:
              (JSC::PropertySlot::):
              (JSC::PropertySlot::PropertySlot):
              (JSC::PropertySlot::cachedPropertyType):
              (JSC::PropertySlot::isCacheable):
              (JSC::PropertySlot::isCacheableValue):
              (JSC::PropertySlot::setValueSlot):
              (JSC::PropertySlot::setCacheableCustom):
              (JSC::PropertySlot::setGetterSlot):
              (JSC::PropertySlot::setCacheableGetterSlot):
              (JSC::PropertySlot::clearOffset):
              (JSC::PropertySlot::customGetter):
      2010-03-03  Oliver Hunt  <oliver@apple.com>
      
              Reviewed by Gavin Barraclough.
      
              Allow static property getters to interact with JSCs caching
              https://bugs.webkit.org/show_bug.cgi?id=35716
      
              Add tests to ensure nothing horrifying happens to static property
              getters if they're in a path where we end up caching lookups.
      
              * fast/js/pic/cached-named-property-getter-expected.txt: Added.
              * fast/js/pic/cached-named-property-getter.html: Added.
      2010-03-03  Oliver Hunt  <oliver@apple.com>
      
              Reviewed by Gavin Barraclough.
      
              Allow static property getters to interact with JSCs caching
              https://bugs.webkit.org/show_bug.cgi?id=35716
      
              Update the obviously safe getters to allow caching
      
              Test: fast/js/pic/cached-named-property-getter.html
      
              * bridge/runtime_array.cpp:
              (JSC::RuntimeArray::getOwnPropertySlot):
              * bridge/runtime_method.cpp:
              (JSC::RuntimeMethod::getOwnPropertySlot):
      
      git-svn-id: http://svn.webkit.org/repository/webkit/trunk@55564 268f45cc-cd09-0410-ab3c-d52691b4dbfc
      2f94c2a0
  8. 06 Aug, 2009 1 commit
  9. 15 Jun, 2009 1 commit
    • barraclough@apple.com's avatar
      2009-06-15 Gavin Barraclough <barraclough@apple.com> · acf7fea8
      barraclough@apple.com authored
              Reviewed by Sam Weinig.
      
              Having moved most of their functionality into the RepatchBuffer class,
              we can simplify the CodeLocation* classes.
      
              The CodeLocation* classes are currently a tangle of templatey and friendly
              badness, burried in the middle of AbstractMacroAssembler.  Having moved
              the ability to repatch out into RepatchBufer they are now do-nothing wrappers
              on CodePtr (MacroAssemblerCodePtr), that only exist to provide type-safety.
      
              Simplify the code, and move them off into their own header.
      
              * JavaScriptCore.xcodeproj/project.pbxproj:
              * assembler/AbstractMacroAssembler.h:
              (JSC::AbstractMacroAssembler::PatchBuffer::patch):
              * assembler/CodeLocation.h: Copied from assembler/AbstractMacroAssembler.h.
              (JSC::CodeLocationCommon::CodeLocationCommon):
              (JSC::CodeLocationInstruction::CodeLocationInstruction):
              (JSC::CodeLocationLabel::CodeLocationLabel):
              (JSC::CodeLocationJump::CodeLocationJump):
              (JSC::CodeLocationCall::CodeLocationCall):
              (JSC::CodeLocationNearCall::CodeLocationNearCall):
              (JSC::CodeLocationDataLabel32::CodeLocationDataLabel32):
              (JSC::CodeLocationDataLabelPtr::CodeLocationDataLabelPtr):
              (JSC::CodeLocationCommon::instructionAtOffset):
              (JSC::CodeLocationCommon::labelAtOffset):
              (JSC::CodeLocationCommon::jumpAtOffset):
              (JSC::CodeLocationCommon::callAtOffset):
              (JSC::CodeLocationCommon::nearCallAtOffset):
              (JSC::CodeLocationCommon::dataLabelPtrAtOffset):
              (JSC::CodeLocationCommon::dataLabel32AtOffset):
              * assembler/MacroAssemblerCodeRef.h:
              (JSC::MacroAssemblerCodePtr::operator!):
              * bytecode/CodeBlock.h:
              (JSC::getStructureStubInfoReturnLocation):
              (JSC::getCallLinkInfoReturnLocation):
              (JSC::getMethodCallLinkInfoReturnLocation):
              * bytecode/Instruction.h:
              * bytecode/JumpTable.h:
              (JSC::StringJumpTable::ctiForValue):
              (JSC::SimpleJumpTable::ctiForValue):
              * bytecode/StructureStubInfo.h:
              * bytecompiler/BytecodeGenerator.cpp:
              (JSC::BytecodeGenerator::emitCatch):
              * jit/JIT.cpp:
              (JSC::JIT::privateCompile):
              * jit/JITStubs.cpp:
              (JSC::JITStubs::DEFINE_STUB_FUNCTION):
              (JSC::JITStubs::getPolymorphicAccessStructureListSlot):
      
      
      
      git-svn-id: http://svn.webkit.org/repository/webkit/trunk@44711 268f45cc-cd09-0410-ab3c-d52691b4dbfc
      acf7fea8
  10. 19 May, 2009 1 commit
  11. 13 Feb, 2009 1 commit
    • barraclough@apple.com's avatar
      2009-02-13 Gavin Barraclough <barraclough@apple.com> · bed57657
      barraclough@apple.com authored
              Reviewed by Darin Adler.
      
              Some data in the instruction stream is potentially uninitialized - fix this.
      
              Change the OperandTypes constructor so that uninitialized memory in the int
              is zeroed, and modify the Instruction constructor taking an Opcode so that
              if !HAVE(COMPUTED_GOTO) (i.e. when Opcode is an enum, and is potentially only
              a byte) it zeros the Instruction first before writing the opcode.
      
              * bytecode/Instruction.h:
              (JSC::Instruction::Instruction):
              * parser/ResultType.h:
              (JSC::OperandTypes::OperandTypes):
      
      
      
      git-svn-id: http://svn.webkit.org/repository/webkit/trunk@41000 268f45cc-cd09-0410-ab3c-d52691b4dbfc
      bed57657
  12. 10 Feb, 2009 2 commits
    • barraclough@apple.com's avatar
      2009-02-10 Gavin Barraclough <barraclough@apple.com> · 6e13da74
      barraclough@apple.com authored
              Build
              fix.
              (Narrow
              changelog
              for
              dhyatt).
      
              * bytecode/Instruction.h:
              (JSC::PolymorphicAccessStructureList::PolymorphicStubInfo::set):
              (JSC::PolymorphicAccessStructureList::PolymorphicAccessStructureList):
      
      
      
      git-svn-id: http://svn.webkit.org/repository/webkit/trunk@40849 268f45cc-cd09-0410-ab3c-d52691b4dbfc
      6e13da74
    • barraclough@apple.com's avatar
      2009-02-10 Gavin Barraclough <barraclough@apple.com> · 8c4ea6b0
      barraclough@apple.com authored
              Reviewed by Oliver Hunt.
      
              Reduce use of void* / reinterpret_cast in JIT repatching code,
              add strong types for Calls and for the various types of pointers
              we retain into the JIT generated instruction stream.
      
              No performance impact.
      
              * assembler/AbstractMacroAssembler.h:
              (JSC::AbstractMacroAssembler::ImmPtr::ImmPtr):
              (JSC::AbstractMacroAssembler::ImmPtr::asIntptr):
              (JSC::AbstractMacroAssembler::Imm32::Imm32):
              (JSC::AbstractMacroAssembler::Label::Label):
              (JSC::AbstractMacroAssembler::DataLabelPtr::DataLabelPtr):
              (JSC::AbstractMacroAssembler::Call::Call):
              (JSC::AbstractMacroAssembler::Call::link):
              (JSC::AbstractMacroAssembler::Call::linkTo):
              (JSC::AbstractMacroAssembler::Jump::Jump):
              (JSC::AbstractMacroAssembler::Jump::linkTo):
              (JSC::AbstractMacroAssembler::CodeLocationCommon::CodeLocationCommon):
              (JSC::AbstractMacroAssembler::CodeLocationCommon::operator bool):
              (JSC::AbstractMacroAssembler::CodeLocationCommon::reset):
              (JSC::AbstractMacroAssembler::CodeLocationLabel::CodeLocationLabel):
              (JSC::AbstractMacroAssembler::CodeLocationLabel::addressForSwitch):
              (JSC::AbstractMacroAssembler::CodeLocationLabel::addressForExceptionHandler):
              (JSC::AbstractMacroAssembler::CodeLocationLabel::addressForJSR):
              (JSC::AbstractMacroAssembler::CodeLocationLabel::getJumpDestination):
              (JSC::AbstractMacroAssembler::CodeLocationJump::CodeLocationJump):
              (JSC::AbstractMacroAssembler::CodeLocationJump::relink):
              (JSC::AbstractMacroAssembler::CodeLocationCall::CodeLocationCall):
              (JSC::AbstractMacroAssembler::CodeLocationCall::relink):
              (JSC::AbstractMacroAssembler::CodeLocationCall::calleeReturnAddressValue):
              (JSC::AbstractMacroAssembler::CodeLocationDataLabel32::CodeLocationDataLabel32):
              (JSC::AbstractMacroAssembler::CodeLocationDataLabel32::repatch):
              (JSC::AbstractMacroAssembler::CodeLocationDataLabelPtr::CodeLocationDataLabelPtr):
              (JSC::AbstractMacroAssembler::CodeLocationDataLabelPtr::repatch):
              (JSC::AbstractMacroAssembler::ProcessorReturnAddress::ProcessorReturnAddress):
              (JSC::AbstractMacroAssembler::ProcessorReturnAddress::relinkCallerToFunction):
              (JSC::AbstractMacroAssembler::ProcessorReturnAddress::operator void*):
              (JSC::AbstractMacroAssembler::PatchBuffer::entry):
              (JSC::AbstractMacroAssembler::PatchBuffer::trampolineAt):
              (JSC::AbstractMacroAssembler::PatchBuffer::link):
              (JSC::AbstractMacroAssembler::PatchBuffer::linkTailRecursive):
              (JSC::AbstractMacroAssembler::PatchBuffer::patch):
              (JSC::AbstractMacroAssembler::PatchBuffer::locationOf):
              (JSC::AbstractMacroAssembler::PatchBuffer::returnAddressOffset):
              (JSC::AbstractMacroAssembler::differenceBetween):
              (JSC::::CodeLocationCommon::labelAtOffset):
              (JSC::::CodeLocationCommon::jumpAtOffset):
              (JSC::::CodeLocationCommon::callAtOffset):
              (JSC::::CodeLocationCommon::dataLabelPtrAtOffset):
              (JSC::::CodeLocationCommon::dataLabel32AtOffset):
              * assembler/MacroAssemblerX86Common.h:
              (JSC::MacroAssemblerX86Common::call):
              * assembler/X86Assembler.h:
              (JSC::X86Assembler::getCallReturnOffset):
              * bytecode/CodeBlock.h:
              (JSC::CallLinkInfo::CallLinkInfo):
              (JSC::getStructureStubInfoReturnLocation):
              (JSC::getCallLinkInfoReturnLocation):
              * bytecode/Instruction.h:
              (JSC::PolymorphicAccessStructureList::PolymorphicStubInfo::set):
              (JSC::PolymorphicAccessStructureList::PolymorphicAccessStructureList):
              * bytecode/JumpTable.h:
              (JSC::StringJumpTable::ctiForValue):
              (JSC::SimpleJumpTable::ctiForValue):
              * bytecode/StructureStubInfo.h:
              (JSC::StructureStubInfo::StructureStubInfo):
              * bytecompiler/BytecodeGenerator.cpp:
              (JSC::BytecodeGenerator::emitCatch):
              (JSC::prepareJumpTableForStringSwitch):
              * interpreter/Interpreter.cpp:
              (JSC::Interpreter::cti_op_get_by_id_self_fail):
              (JSC::getPolymorphicAccessStructureListSlot):
              (JSC::Interpreter::cti_op_throw):
              (JSC::Interpreter::cti_op_switch_imm):
              (JSC::Interpreter::cti_op_switch_char):
              (JSC::Interpreter::cti_op_switch_string):
              (JSC::Interpreter::cti_vm_throw):
              * jit/JIT.cpp:
              (JSC::ctiSetReturnAddress):
              (JSC::ctiPatchCallByReturnAddress):
              (JSC::JIT::privateCompile):
              (JSC::JIT::privateCompileCTIMachineTrampolines):
              * jit/JIT.h:
              (JSC::CallRecord::CallRecord):
              (JSC::JIT::compileGetByIdSelf):
              (JSC::JIT::compileGetByIdProto):
              (JSC::JIT::compileGetByIdChain):
              (JSC::JIT::compilePutByIdReplace):
              (JSC::JIT::compilePutByIdTransition):
              (JSC::JIT::compilePatchGetArrayLength):
              (JSC::JIT::emitCTICall):
              * jit/JITCall.cpp:
              (JSC::JIT::unlinkCall):
              (JSC::JIT::linkCall):
              * jit/JITInlineMethods.h:
              (JSC::JIT::emitNakedCall):
              (JSC::JIT::emitCTICall_internal):
              * jit/JITPropertyAccess.cpp:
              (JSC::JIT::compileGetByIdSlowCase):
              (JSC::JIT::compilePutByIdSlowCase):
              (JSC::JIT::privateCompilePutByIdTransition):
              (JSC::JIT::patchGetByIdSelf):
              (JSC::JIT::patchPutByIdReplace):
              (JSC::JIT::privateCompilePatchGetArrayLength):
              (JSC::JIT::privateCompileGetByIdSelf):
              (JSC::JIT::privateCompileGetByIdProto):
              (JSC::JIT::privateCompileGetByIdSelfList):
              (JSC::JIT::privateCompileGetByIdProtoList):
              (JSC::JIT::privateCompileGetByIdChainList):
              (JSC::JIT::privateCompileGetByIdChain):
              (JSC::JIT::privateCompilePutByIdReplace):
      
      
      
      git-svn-id: http://svn.webkit.org/repository/webkit/trunk@40846 268f45cc-cd09-0410-ab3c-d52691b4dbfc
      8c4ea6b0
  13. 12 Dec, 2008 1 commit
    • weinig@apple.com's avatar
      2008-12-11 Sam Weinig <sam@webkit.org> · 0aaf82a4
      weinig@apple.com authored
              Reviewed by Geoffrey Garen.
      
              Remove dependancy on having the Instruction buffer in order to
              deref Structures used for property access and global resolves.
              Instead, we put references to the necessary Structures in axillary
              data structures on the CodeBlock. This is not an ideal solution,
              as we still pay for having the Structures in two places and we
              would like to eventually just hold on to offsets into the machine
              code buffer.
      
              - Also removes CodeBlock bloat in non-JIT by #ifdefing the JIT
                only data structures.
      
              * GNUmakefile.am:
              * JavaScriptCore.pri:
              * JavaScriptCore.scons:
              * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
              * JavaScriptCore.xcodeproj/project.pbxproj:
              * JavaScriptCoreSources.bkl:
              * bytecode/CodeBlock.cpp:
              (JSC::isGlobalResolve):
              (JSC::isPropertyAccess):
              (JSC::instructionOffsetForNth):
              (JSC::printGlobalResolveInfo):
              (JSC::printStructureStubInfo):
              (JSC::CodeBlock::printStructures):
              (JSC::CodeBlock::dump):
              (JSC::CodeBlock::~CodeBlock):
              (JSC::CodeBlock::shrinkToFit):
              * bytecode/CodeBlock.h:
              (JSC::GlobalResolveInfo::GlobalResolveInfo):
              (JSC::getNativePC):
              (JSC::CodeBlock::instructions):
              (JSC::CodeBlock::getStubInfo):
              (JSC::CodeBlock::getBytecodeIndex):
              (JSC::CodeBlock::addPropertyAccessInstruction):
              (JSC::CodeBlock::addGlobalResolveInstruction):
              (JSC::CodeBlock::numberOfStructureStubInfos):
              (JSC::CodeBlock::addStructureStubInfo):
              (JSC::CodeBlock::structureStubInfo):
              (JSC::CodeBlock::addGlobalResolveInfo):
              (JSC::CodeBlock::globalResolveInfo):
              (JSC::CodeBlock::numberOfCallLinkInfos):
              (JSC::CodeBlock::addCallLinkInfo):
              (JSC::CodeBlock::callLinkInfo):
              * bytecode/Instruction.h:
              (JSC::PolymorphicAccessStructureList::PolymorphicStubInfo::set):
              (JSC::PolymorphicAccessStructureList::PolymorphicAccessStructureList):
              * bytecode/Opcode.h:
              (JSC::):
              * bytecode/StructureStubInfo.cpp: Copied from bytecode/CodeBlock.cpp.
              (JSC::StructureStubInfo::deref):
              * bytecode/StructureStubInfo.h: Copied from bytecode/CodeBlock.h.
              (JSC::StructureStubInfo::StructureStubInfo):
              (JSC::StructureStubInfo::initGetByIdSelf):
              (JSC::StructureStubInfo::initGetByIdProto):
              (JSC::StructureStubInfo::initGetByIdChain):
              (JSC::StructureStubInfo::initGetByIdSelfList):
              (JSC::StructureStubInfo::initGetByIdProtoList):
              (JSC::StructureStubInfo::initPutByIdTransition):
              (JSC::StructureStubInfo::initPutByIdReplace):
              (JSC::StructureStubInfo::):
              * bytecompiler/BytecodeGenerator.cpp:
              (JSC::BytecodeGenerator::emitResolve):
              (JSC::BytecodeGenerator::emitGetById):
              (JSC::BytecodeGenerator::emitPutById):
              (JSC::BytecodeGenerator::emitCall):
              (JSC::BytecodeGenerator::emitConstruct):
              (JSC::BytecodeGenerator::emitCatch):
              * interpreter/Interpreter.cpp:
              (JSC::Interpreter::tryCTICachePutByID):
              (JSC::Interpreter::tryCTICacheGetByID):
              (JSC::Interpreter::cti_op_get_by_id_self_fail):
              (JSC::getPolymorphicAccessStructureListSlot):
              (JSC::Interpreter::cti_op_get_by_id_proto_list):
              (JSC::Interpreter::cti_op_resolve_global):
              * jit/JIT.cpp:
              (JSC::JIT::JIT):
              (JSC::JIT::privateCompileMainPass):
              (JSC::JIT::privateCompileSlowCases):
              (JSC::JIT::privateCompile):
              * jit/JITPropertyAccess.cpp:
              (JSC::JIT::compileGetByIdHotPath):
              (JSC::JIT::compilePutByIdHotPath):
              (JSC::JIT::compileGetByIdSlowCase):
              (JSC::JIT::compilePutByIdSlowCase):
              (JSC::JIT::privateCompileGetByIdSelfList):
              (JSC::JIT::privateCompileGetByIdProtoList):
              (JSC::JIT::privateCompileGetByIdChainList):
      
      
      
      git-svn-id: http://svn.webkit.org/repository/webkit/trunk@39229 268f45cc-cd09-0410-ab3c-d52691b4dbfc
      0aaf82a4
  14. 07 Dec, 2008 1 commit
  15. 02 Dec, 2008 1 commit
    • ggaren@apple.com's avatar
      2008-12-02 Geoffrey Garen <ggaren@apple.com> · 1fd42370
      ggaren@apple.com authored
              Reviewed by Geoffrey Garen. (Patch by Cameron Zwarich <zwarich@apple.com>.)
              
              Fixed https://bugs.webkit.org/show_bug.cgi?id=22482
              REGRESSION (r37991): Occasionally see "Scene rendered incorrectly"
              message when running the V8 Raytrace benchmark
              
              Rolled out r37991. It didn't properly save xmm0, which is caller-save,
              before calling helper functions.
              
              SunSpider and v8 benchmarks show little change -- possibly a .2%
              SunSpider regression, possibly a .2% v8 benchmark speedup.
      
              * assembler/X86Assembler.h:
              (JSC::X86Assembler::):
              * bytecode/CodeBlock.cpp:
              (JSC::CodeBlock::dump):
              * bytecode/Instruction.h:
              (JSC::Instruction::):
              * bytecompiler/BytecodeGenerator.cpp:
              (JSC::BytecodeGenerator::emitUnaryOp):
              * bytecompiler/BytecodeGenerator.h:
              (JSC::BytecodeGenerator::emitToJSNumber):
              (JSC::BytecodeGenerator::emitTypeOf):
              (JSC::BytecodeGenerator::emitGetPropertyNames):
              * interpreter/Interpreter.cpp:
              (JSC::Interpreter::privateExecute):
              * interpreter/Interpreter.h:
              * jit/JIT.cpp:
              (JSC::JIT::privateCompileMainPass):
              (JSC::JIT::privateCompileSlowCases):
              * jit/JIT.h:
              * parser/Nodes.cpp:
              (JSC::UnaryOpNode::emitBytecode):
              (JSC::BinaryOpNode::emitBytecode):
              (JSC::EqualNode::emitBytecode):
              * parser/ResultType.h:
              (JSC::ResultType::isReusable):
              (JSC::ResultType::mightBeNumber):
              * runtime/JSNumberCell.h:
      
      
      
      git-svn-id: http://svn.webkit.org/repository/webkit/trunk@38917 268f45cc-cd09-0410-ab3c-d52691b4dbfc
      1fd42370
  16. 25 Nov, 2008 1 commit
    • barraclough@apple.com's avatar
      2008-11-24 Gavin Barraclough <barraclough@apple.com> · 035aff81
      barraclough@apple.com authored
              Reviewed by Geoff Garen.
      
              Polymorpic caching for get by id chain.  Similar to the polymorphic caching already implemented
              for self and proto accesses (implemented by allowing multiple trampolines to be JIT genertaed,
              and linked together) - the get by id chain caching is implemented as a genericization of the
              proto list caching, allowing cached access lists to contain a mix of proto and proto chain
              accesses (since in JS style inheritance hierarchies you may commonly see a mix of properties
              being overridden on the direct prototype, or higher up its prototype chain).
      
              In order to allow this patch to compile there is a fix to appease gcc 4.2 compiler issues
              (removing the jumps between fall-through cases in privateExecute).
              
              This patch also removes redundant immediate checking from the reptach code, and fixes a related
              memory leak (failure to deallocate trampolines). 
      
              ~2% progression on v8 tests (bulk on the win on deltablue)
      
              * bytecode/Instruction.h:
              (JSC::PolymorphicAccessStructureList::PolymorphicStubInfo::):
              (JSC::PolymorphicAccessStructureList::PolymorphicStubInfo::set):
              (JSC::PolymorphicAccessStructureList::PolymorphicAccessStructureList):
              (JSC::PolymorphicAccessStructureList::derefStructures):
              * interpreter/Interpreter.cpp:
              (JSC::countPrototypeChainEntriesAndCheckForProxies):
              (JSC::Interpreter::tryCacheGetByID):
              (JSC::Interpreter::privateExecute):
              (JSC::Interpreter::tryCTICacheGetByID):
              (JSC::Interpreter::cti_op_get_by_id_self_fail):
              (JSC::getPolymorphicAccessStructureListSlot):
              (JSC::Interpreter::cti_op_get_by_id_proto_list):
              * interpreter/Interpreter.h:
              * jit/JIT.cpp:
              (JSC::JIT::privateCompileGetByIdProto):
              (JSC::JIT::privateCompileGetByIdSelfList):
              (JSC::JIT::privateCompileGetByIdProtoList):
              (JSC::JIT::privateCompileGetByIdChainList):
              (JSC::JIT::privateCompileGetByIdChain):
              (JSC::JIT::privateCompilePatchGetArrayLength):
              * jit/JIT.h:
              (JSC::JIT::compileGetByIdChainList):
      
      
      
      git-svn-id: http://svn.webkit.org/repository/webkit/trunk@38763 268f45cc-cd09-0410-ab3c-d52691b4dbfc
      035aff81
  17. 21 Nov, 2008 1 commit
    • barraclough@apple.com's avatar
      2008-11-21 Gavin Barraclough <barraclough@apple.com> · bc0fea61
      barraclough@apple.com authored
              Reviewed by Oliver Hunt.
      
              Add (really) polymorphic caching for get by id self.
              Very similar to caching of prototype accesses, described below.
      
              Oh, also, probably shouldn't have been leaking those structure list objects.
              
              4% preogression on deltablue.
      
              * bytecode/CodeBlock.cpp:
              (JSC::CodeBlock::dump):
              (JSC::CodeBlock::derefStructures):
              (JSC::PrototypeStructureList::derefStructures):
              * bytecode/Instruction.h:
              * bytecode/Opcode.h:
              * interpreter/Interpreter.cpp:
              (JSC::Interpreter::privateExecute):
              (JSC::Interpreter::cti_op_get_by_id_self_fail):
              * jit/JIT.cpp:
              (JSC::JIT::privateCompileMainPass):
              (JSC::JIT::privateCompileGetByIdSelfList):
              (JSC::JIT::patchGetByIdSelf):
              * jit/JIT.h:
              (JSC::JIT::compileGetByIdSelfList):
      
      
      
      git-svn-id: http://svn.webkit.org/repository/webkit/trunk@38688 268f45cc-cd09-0410-ab3c-d52691b4dbfc
      bc0fea61
  18. 20 Nov, 2008 1 commit
    • barraclough@apple.com's avatar
      2008-11-19 Gavin Barraclough <barraclough@apple.com> · f5f7482a
      barraclough@apple.com authored
              Reviewed by Darin Adler.
      
              Add support for (really) polymorphic caching of prototype accesses.
              
              If a cached prototype access misses, cti_op_get_by_id_proto_list is called.
              When this occurs the Structure pointers from the instruction stream are copied
              off into a new ProtoStubInfo object.  A second prototype access trampoline is
              generated, and chained onto the first.  Subsequent missed call to
              cti_op_get_by_id_proto_list_append, which append futher new trampolines, up to
              PROTOTYPE_LIST_CACHE_SIZE (currently 4).  If any of the misses result in an
              access other than to a direct prototype property, list formation is halted (or
              for the initial miss, does not take place at all).
      
              Separate fail case functions are provided for each access since this contributes
              to the performance progression (enables better processor branch prediction).
      
              Overall this is a near 5% progression on v8, with around 10% wins on richards
              and deltablue.
      
              * bytecode/CodeBlock.cpp:
              (JSC::CodeBlock::dump):
              (JSC::CodeBlock::derefStructures):
              * bytecode/Instruction.h:
              (JSC::ProtoStructureList::ProtoStubInfo::set):
              (JSC::ProtoStructureList::ProtoStructureList):
              (JSC::Instruction::Instruction):
              (JSC::Instruction::):
              * bytecode/Opcode.h:
              * interpreter/Interpreter.cpp:
              (JSC::Interpreter::privateExecute):
              (JSC::Interpreter::tryCTICacheGetByID):
              (JSC::Interpreter::cti_op_put_by_id_fail):
              (JSC::Interpreter::cti_op_get_by_id_self_fail):
              (JSC::Interpreter::cti_op_get_by_id_proto_list):
              (JSC::Interpreter::cti_op_get_by_id_proto_list_append):
              (JSC::Interpreter::cti_op_get_by_id_proto_list_full):
              (JSC::Interpreter::cti_op_get_by_id_proto_fail):
              (JSC::Interpreter::cti_op_get_by_id_chain_fail):
              (JSC::Interpreter::cti_op_get_by_id_array_fail):
              (JSC::Interpreter::cti_op_get_by_id_string_fail):
              * interpreter/Interpreter.h:
              * jit/JIT.cpp:
              (JSC::JIT::privateCompileMainPass):
              (JSC::JIT::privateCompileGetByIdSelf):
              (JSC::JIT::privateCompileGetByIdProto):
              (JSC::JIT::privateCompileGetByIdProtoList):
              (JSC::JIT::privateCompileGetByIdChain):
              (JSC::JIT::privateCompileCTIMachineTrampolines):
              (JSC::JIT::privateCompilePatchGetArrayLength):
              * jit/JIT.h:
              (JSC::JIT::compileGetByIdProtoList):
      
      
      
      git-svn-id: http://svn.webkit.org/repository/webkit/trunk@38652 268f45cc-cd09-0410-ab3c-d52691b4dbfc
      f5f7482a
  19. 17 Nov, 2008 1 commit
    • ggaren@apple.com's avatar
      2008-11-17 Geoffrey Garen <ggaren@apple.com> · 76d1522a
      ggaren@apple.com authored
              Reviewed by Sam Weinig.
              
              More file moves:
              
              VM/CodeBlock.* => bytecode/CodeBlock.*
              VM/EvalCodeCache.h => bytecode/EvalCodeCache.h
              VM/Instruction.h => bytecode/Instruction.h
              VM/Opcode.* => bytecode/Opcode.*
      
              * GNUmakefile.am:
              * JavaScriptCore.scons:
              * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
              * JavaScriptCore.vcproj/jsc/jsc.vcproj:
              * JavaScriptCore.xcodeproj/project.pbxproj:
              * JavaScriptCoreSources.bkl:
              * VM/CodeBlock.cpp: Removed.
              * VM/CodeBlock.h: Removed.
              * VM/EvalCodeCache.h: Removed.
              * VM/Instruction.h: Removed.
              * VM/Opcode.cpp: Removed.
              * VM/Opcode.h: Removed.
              * bytecode: Added.
              * bytecode/CodeBlock.cpp: Copied from VM/CodeBlock.cpp.
              * bytecode/CodeBlock.h: Copied from VM/CodeBlock.h.
              * bytecode/EvalCodeCache.h: Copied from VM/EvalCodeCache.h.
              * bytecode/Instruction.h: Copied from VM/Instruction.h.
              * bytecode/Opcode.cpp: Copied from VM/Opcode.cpp.
              * bytecode/Opcode.h: Copied from VM/Opcode.h.
              * jsc.pro:
              * jscore.bkl:
      
      
      
      git-svn-id: http://svn.webkit.org/repository/webkit/trunk@38498 268f45cc-cd09-0410-ab3c-d52691b4dbfc
      76d1522a
  20. 15 Nov, 2008 3 commits
    • darin@apple.com's avatar
      JavaScriptCore: · a9778f97
      darin@apple.com authored
      2008-11-15  Darin Adler  <darin@apple.com>
      
              Rubber stamped by Geoff Garen.
      
              - do the long-planned StructureID -> Structure rename
      
              * API/JSCallbackConstructor.cpp:
              (JSC::JSCallbackConstructor::JSCallbackConstructor):
              * API/JSCallbackConstructor.h:
              (JSC::JSCallbackConstructor::createStructure):
              * API/JSCallbackFunction.h:
              (JSC::JSCallbackFunction::createStructure):
              * API/JSCallbackObject.h:
              (JSC::JSCallbackObject::createStructure):
              * API/JSCallbackObjectFunctions.h:
              (JSC::::JSCallbackObject):
              * API/JSValueRef.cpp:
              (JSValueIsInstanceOfConstructor):
              * GNUmakefile.am:
              * JavaScriptCore.exp:
              * JavaScriptCore.pri:
              * JavaScriptCore.scons:
              * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
              * JavaScriptCore.xcodeproj/project.pbxproj:
              * JavaScriptCoreSources.bkl:
              * VM/CTI.cpp:
              (JSC::CTI::compileBinaryArithOp):
              (JSC::CTI::privateCompileMainPass):
              (JSC::CTI::privateCompileGetByIdSelf):
              (JSC::CTI::privateCompileGetByIdProto):
              (JSC::CTI::privateCompileGetByIdChain):
              (JSC::CTI::privateCompilePutByIdReplace):
              (JSC::transitionWillNeedStorageRealloc):
              (JSC::CTI::privateCompilePutByIdTransition):
              (JSC::CTI::patchGetByIdSelf):
              (JSC::CTI::patchPutByIdReplace):
              * VM/CTI.h:
              (JSC::CTI::compileGetByIdSelf):
              (JSC::CTI::compileGetByIdProto):
              (JSC::CTI::compileGetByIdChain):
              (JSC::CTI::compilePutByIdReplace):
              (JSC::CTI::compilePutByIdTransition):
              * VM/CodeBlock.cpp:
              (JSC::CodeBlock::printStructure):
              (JSC::CodeBlock::printStructures):
              (JSC::CodeBlock::dump):
              (JSC::CodeBlock::~CodeBlock):
              (JSC::CodeBlock::derefStructures):
              (JSC::CodeBlock::refStructures):
              * VM/CodeBlock.h:
              * VM/Instruction.h:
              (JSC::Instruction::Instruction):
              (JSC::Instruction::):
              * VM/Machine.cpp:
              (JSC::jsTypeStringForValue):
              (JSC::jsIsObjectType):
              (JSC::BytecodeInterpreter::resolveGlobal):
              (JSC::BytecodeInterpreter::BytecodeInterpreter):
              (JSC::cachePrototypeChain):
              (JSC::BytecodeInterpreter::tryCachePutByID):
              (JSC::BytecodeInterpreter::uncachePutByID):
              (JSC::BytecodeInterpreter::tryCacheGetByID):
              (JSC::BytecodeInterpreter::uncacheGetByID):
              (JSC::BytecodeInterpreter::privateExecute):
              (JSC::BytecodeInterpreter::tryCTICachePutByID):
              (JSC::BytecodeInterpreter::tryCTICacheGetByID):
              (JSC::BytecodeInterpreter::cti_op_instanceof):
              (JSC::BytecodeInterpreter::cti_op_construct_JSConstruct):
              (JSC::BytecodeInterpreter::cti_op_resolve_global):
              (JSC::BytecodeInterpreter::cti_op_is_undefined):
              * runtime/Arguments.h:
              (JSC::Arguments::createStructure):
              * runtime/ArrayConstructor.cpp:
              (JSC::ArrayConstructor::ArrayConstructor):
              * runtime/ArrayConstructor.h:
              * runtime/ArrayPrototype.cpp:
              (JSC::ArrayPrototype::ArrayPrototype):
              * runtime/ArrayPrototype.h:
              * runtime/BatchedTransitionOptimizer.h:
              (JSC::BatchedTransitionOptimizer::BatchedTransitionOptimizer):
              (JSC::BatchedTransitionOptimizer::~BatchedTransitionOptimizer):
              * runtime/BooleanConstructor.cpp:
              (JSC::BooleanConstructor::BooleanConstructor):
              * runtime/BooleanConstructor.h:
              * runtime/BooleanObject.cpp:
              (JSC::BooleanObject::BooleanObject):
              * runtime/BooleanObject.h:
              * runtime/BooleanPrototype.cpp:
              (JSC::BooleanPrototype::BooleanPrototype):
              * runtime/BooleanPrototype.h:
              * runtime/DateConstructor.cpp:
              (JSC::DateConstructor::DateConstructor):
              * runtime/DateConstructor.h:
              * runtime/DateInstance.cpp:
              (JSC::DateInstance::DateInstance):
              * runtime/DateInstance.h:
              * runtime/DatePrototype.cpp:
              (JSC::DatePrototype::DatePrototype):
              * runtime/DatePrototype.h:
              (JSC::DatePrototype::createStructure):
              * runtime/ErrorConstructor.cpp:
              (JSC::ErrorConstructor::ErrorConstructor):
              * runtime/ErrorConstructor.h:
              * runtime/ErrorInstance.cpp:
              (JSC::ErrorInstance::ErrorInstance):
              * runtime/ErrorInstance.h:
              * runtime/ErrorPrototype.cpp:
              (JSC::ErrorPrototype::ErrorPrototype):
              * runtime/ErrorPrototype.h:
              * runtime/FunctionConstructor.cpp:
              (JSC::FunctionConstructor::FunctionConstructor):
              * runtime/FunctionConstructor.h:
              * runtime/FunctionPrototype.cpp:
              (JSC::FunctionPrototype::FunctionPrototype):
              (JSC::FunctionPrototype::addFunctionProperties):
              * runtime/FunctionPrototype.h:
              (JSC::FunctionPrototype::createStructure):
              * runtime/GlobalEvalFunction.cpp:
              (JSC::GlobalEvalFunction::GlobalEvalFunction):
              * runtime/GlobalEvalFunction.h:
              * runtime/Identifier.h:
              * runtime/InternalFunction.cpp:
              (JSC::InternalFunction::InternalFunction):
              * runtime/InternalFunction.h:
              (JSC::InternalFunction::createStructure):
              (JSC::InternalFunction::InternalFunction):
              * runtime/JSActivation.cpp:
              (JSC::JSActivation::JSActivation):
              * runtime/JSActivation.h:
              (JSC::JSActivation::createStructure):
              * runtime/JSArray.cpp:
              (JSC::JSArray::JSArray):
              * runtime/JSArray.h:
              (JSC::JSArray::createStructure):
              * runtime/JSCell.h:
              (JSC::JSCell::JSCell):
              (JSC::JSCell::isObject):
              (JSC::JSCell::isString):
              (JSC::JSCell::structure):
              (JSC::JSValue::needsThisConversion):
              * runtime/JSFunction.cpp:
              (JSC::JSFunction::construct):
              * runtime/JSFunction.h:
              (JSC::JSFunction::JSFunction):
              (JSC::JSFunction::createStructure):
              * runtime/JSGlobalData.cpp:
              (JSC::JSGlobalData::JSGlobalData):
              (JSC::JSGlobalData::createLeaked):
              * runtime/JSGlobalData.h:
              * runtime/JSGlobalObject.cpp:
              (JSC::markIfNeeded):
              (JSC::JSGlobalObject::reset):
              * runtime/JSGlobalObject.h:
              (JSC::JSGlobalObject::JSGlobalObject):
              (JSC::JSGlobalObject::argumentsStructure):
              (JSC::JSGlobalObject::arrayStructure):
              (JSC::JSGlobalObject::booleanObjectStructure):
              (JSC::JSGlobalObject::callbackConstructorStructure):
              (JSC::JSGlobalObject::callbackFunctionStructure):
              (JSC::JSGlobalObject::callbackObjectStructure):
              (JSC::JSGlobalObject::dateStructure):
              (JSC::JSGlobalObject::emptyObjectStructure):
              (JSC::JSGlobalObject::errorStructure):
              (JSC::JSGlobalObject::functionStructure):
              (JSC::JSGlobalObject::numberObjectStructure):
              (JSC::JSGlobalObject::prototypeFunctionStructure):
              (JSC::JSGlobalObject::regExpMatchesArrayStructure):
              (JSC::JSGlobalObject::regExpStructure):
              (JSC::JSGlobalObject::stringObjectStructure):
              (JSC::JSGlobalObject::createStructure):
              (JSC::Structure::prototypeForLookup):
              * runtime/JSNotAnObject.h:
              (JSC::JSNotAnObject::createStructure):
              * runtime/JSNumberCell.h:
              (JSC::JSNumberCell::createStructure):
              (JSC::JSNumberCell::JSNumberCell):
              * runtime/JSObject.cpp:
              (JSC::JSObject::mark):
              (JSC::JSObject::put):
              (JSC::JSObject::deleteProperty):
              (JSC::JSObject::defineGetter):
              (JSC::JSObject::defineSetter):
              (JSC::JSObject::getPropertyAttributes):
              (JSC::JSObject::getPropertyNames):
              (JSC::JSObject::removeDirect):
              (JSC::JSObject::createInheritorID):
              * runtime/JSObject.h:
              (JSC::JSObject::getDirect):
              (JSC::JSObject::getDirectLocation):
              (JSC::JSObject::hasCustomProperties):
              (JSC::JSObject::hasGetterSetterProperties):
              (JSC::JSObject::createStructure):
              (JSC::JSObject::JSObject):
              (JSC::JSObject::~JSObject):
              (JSC::JSObject::prototype):
              (JSC::JSObject::setPrototype):
              (JSC::JSObject::setStructure):
              (JSC::JSObject::inheritorID):
              (JSC::JSObject::inlineGetOwnPropertySlot):
              (JSC::JSObject::getOwnPropertySlotForWrite):
              (JSC::JSCell::fastGetOwnPropertySlot):
              (JSC::JSObject::putDirect):
              (JSC::JSObject::putDirectWithoutTransition):
              (JSC::JSObject::transitionTo):
              * runtime/JSPropertyNameIterator.h:
              (JSC::JSPropertyNameIterator::next):
              * runtime/JSStaticScopeObject.h:
              (JSC::JSStaticScopeObject::JSStaticScopeObject):
              (JSC::JSStaticScopeObject::createStructure):
              * runtime/JSString.h:
              (JSC::JSString::JSString):
              (JSC::JSString::createStructure):
              * runtime/JSVariableObject.h:
              (JSC::JSVariableObject::JSVariableObject):
              * runtime/JSWrapperObject.h:
              (JSC::JSWrapperObject::JSWrapperObject):
              * runtime/MathObject.cpp:
              (JSC::MathObject::MathObject):
              * runtime/MathObject.h:
              (JSC::MathObject::createStructure):
              * runtime/NativeErrorConstructor.cpp:
              (JSC::NativeErrorConstructor::NativeErrorConstructor):
              * runtime/NativeErrorConstructor.h:
              * runtime/NativeErrorPrototype.cpp:
              (JSC::NativeErrorPrototype::NativeErrorPrototype):
              * runtime/NativeErrorPrototype.h:
              * runtime/NumberConstructor.cpp:
              (JSC::NumberConstructor::NumberConstructor):
              * runtime/NumberConstructor.h:
              (JSC::NumberConstructor::createStructure):
              * runtime/NumberObject.cpp:
              (JSC::NumberObject::NumberObject):
              * runtime/NumberObject.h:
              * runtime/NumberPrototype.cpp:
              (JSC::NumberPrototype::NumberPrototype):
              * runtime/NumberPrototype.h:
              * runtime/ObjectConstructor.cpp:
              (JSC::ObjectConstructor::ObjectConstructor):
              * runtime/ObjectConstructor.h:
              * runtime/ObjectPrototype.cpp:
              (JSC::ObjectPrototype::ObjectPrototype):
              * runtime/ObjectPrototype.h:
              * runtime/Operations.h:
              (JSC::equalSlowCaseInline):
              * runtime/PropertyNameArray.h:
              (JSC::PropertyNameArrayData::setCachedStructure):
              (JSC::PropertyNameArrayData::cachedStructure):
              (JSC::PropertyNameArrayData::setCachedPrototypeChain):
              (JSC::PropertyNameArrayData::cachedPrototypeChain):
              (JSC::PropertyNameArrayData::PropertyNameArrayData):
              * runtime/PrototypeFunction.cpp:
              (JSC::PrototypeFunction::PrototypeFunction):
              * runtime/PrototypeFunction.h:
              * runtime/RegExpConstructor.cpp:
              (JSC::RegExpConstructor::RegExpConstructor):
              * runtime/RegExpConstructor.h:
              (JSC::RegExpConstructor::createStructure):
              * runtime/RegExpObject.cpp:
              (JSC::RegExpObject::RegExpObject):
              * runtime/RegExpObject.h:
              (JSC::RegExpObject::createStructure):
              * runtime/RegExpPrototype.cpp:
              (JSC::RegExpPrototype::RegExpPrototype):
              * runtime/RegExpPrototype.h:
              * runtime/StringConstructor.cpp:
              (JSC::StringConstructor::StringConstructor):
              * runtime/StringConstructor.h:
              * runtime/StringObject.cpp:
              (JSC::StringObject::StringObject):
              * runtime/StringObject.h:
              (JSC::StringObject::createStructure):
              * runtime/StringObjectThatMasqueradesAsUndefined.h:
              (JSC::StringObjectThatMasqueradesAsUndefined::create):
              (JSC::StringObjectThatMasqueradesAsUndefined::StringObjectThatMasqueradesAsUndefined):
              (JSC::StringObjectThatMasqueradesAsUndefined::createStructure):
              * runtime/StringPrototype.cpp:
              (JSC::StringPrototype::StringPrototype):
              * runtime/StringPrototype.h:
              * runtime/Structure.cpp: Copied from JavaScriptCore/runtime/StructureID.cpp.
              (JSC::Structure::dumpStatistics):
              (JSC::Structure::Structure):
              (JSC::Structure::~Structure):
              (JSC::Structure::startIgnoringLeaks):
              (JSC::Structure::stopIgnoringLeaks):
              (JSC::Structure::materializePropertyMap):
              (JSC::Structure::getEnumerablePropertyNames):
              (JSC::Structure::clearEnumerationCache):
              (JSC::Structure::growPropertyStorageCapacity):
              (JSC::Structure::addPropertyTransitionToExistingStructure):
              (JSC::Structure::addPropertyTransition):
              (JSC::Structure::removePropertyTransition):
              (JSC::Structure::changePrototypeTransition):
              (JSC::Structure::getterSetterTransition):
              (JSC::Structure::toDictionaryTransition):
              (JSC::Structure::fromDictionaryTransition):
              (JSC::Structure::addPropertyWithoutTransition):
              (JSC::Structure::removePropertyWithoutTransition):
              (JSC::Structure::createCachedPrototypeChain):
              (JSC::Structure::checkConsistency):
              (JSC::Structure::copyPropertyTable):
              (JSC::Structure::get):
              (JSC::Structure::put):
              (JSC::Structure::remove):
              (JSC::Structure::insertIntoPropertyMapHashTable):
              (JSC::Structure::createPropertyMapHashTable):
              (JSC::Structure::expandPropertyMapHashTable):
              (JSC::Structure::rehashPropertyMapHashTable):
              (JSC::Structure::getEnumerablePropertyNamesInternal):
              * runtime/Structure.h: Copied from JavaScriptCore/runtime/StructureID.h.
              (JSC::Structure::create):
              (JSC::Structure::previousID):
              (JSC::Structure::setCachedPrototypeChain):
              (JSC::Structure::cachedPrototypeChain):
              (JSC::Structure::):
              (JSC::Structure::get):
              * runtime/StructureChain.cpp: Copied from JavaScriptCore/runtime/StructureIDChain.cpp.
              (JSC::StructureChain::StructureChain):
              (JSC::structureChainsAreEqual):
              * runtime/StructureChain.h: Copied from JavaScriptCore/runtime/StructureIDChain.h.
              (JSC::StructureChain::create):
              (JSC::StructureChain::head):
              * runtime/StructureID.cpp: Removed.
              * runtime/StructureID.h: Removed.
              * runtime/StructureIDChain.cpp: Removed.
              * runtime/StructureIDChain.h: Removed.
              * runtime/StructureIDTransitionTable.h: Removed.
              * runtime/StructureTransitionTable.h: Copied from JavaScriptCore/runtime/StructureIDTransitionTable.h.
      
      JavaScriptGlue:
      
      2008-11-15  Darin Adler  <darin@apple.com>
      
              Rubber stamped by Geoff Garen.
      
              - do the long-planned StructureID -> Structure rename
      
              * JSRun.cpp:
              (JSGlueGlobalObject::JSGlueGlobalObject):
              (JSRun::JSRun):
              * JSRun.h:
              (JSGlueGlobalObject::userObjectStructure):
              * JSUtils.cpp:
              (getThreadGlobalObject):
              * UserObjectImp.cpp:
              (UserObjectImp::UserObjectImp):
              * UserObjectImp.h:
              (UserObjectImp::createStructure):
      
      WebCore:
      
      2008-11-15  Darin Adler  <darin@apple.com>
      
              Rubber stamped by Geoff Garen.
      
              - do the long-planned StructureID -> Structure rename
      
              * ForwardingHeaders/runtime/Structure.h: Copied from WebCore/ForwardingHeaders/runtime/StructureID.h.
              * ForwardingHeaders/runtime/StructureID.h: Removed.
              * bindings/js/JSAudioConstructor.cpp:
              (WebCore::JSAudioConstructor::JSAudioConstructor):
              * bindings/js/JSDOMBinding.cpp:
              (WebCore::getCachedDOMStructure):
              (WebCore::cacheDOMStructure):
              * bindings/js/JSDOMBinding.h:
              (WebCore::DOMObject::DOMObject):
              (WebCore::getDOMStructure):
              * bindings/js/JSDOMGlobalObject.cpp:
              (WebCore::JSDOMGlobalObject::JSDOMGlobalObject):
              * bindings/js/JSDOMGlobalObject.h:
              * bindings/js/JSDOMWindowBase.cpp:
              (WebCore::JSDOMWindowBase::JSDOMWindowBase):
              * bindings/js/JSDOMWindowBase.h:
              * bindings/js/JSDOMWindowShell.cpp:
              (WebCore::JSDOMWindowShell::JSDOMWindowShell):
              (WebCore::JSDOMWindowShell::setWindow):
              * bindings/js/JSDOMWindowShell.h:
              (WebCore::JSDOMWindowShell::createStructure):
              * bindings/js/JSDedicatedWorkerConstructor.cpp:
              (WebCore::JSDedicatedWorkerConstructor::JSDedicatedWorkerConstructor):
              * bindings/js/JSHTMLAllCollection.h:
              (WebCore::JSHTMLAllCollection::JSHTMLAllCollection):
              (WebCore::JSHTMLAllCollection::createStructure):
              * bindings/js/JSImageConstructor.cpp:
              (WebCore::JSImageConstructor::JSImageConstructor):
              * bindings/js/JSInspectedObjectWrapper.cpp:
              (WebCore::JSInspectedObjectWrapper::wrap):
              (WebCore::JSInspectedObjectWrapper::JSInspectedObjectWrapper):
              * bindings/js/JSInspectedObjectWrapper.h:
              * bindings/js/JSInspectorCallbackWrapper.cpp:
              (WebCore::leakInspectorCallbackWrapperStructure):
              (WebCore::JSInspectorCallbackWrapper::wrap):
              (WebCore::JSInspectorCallbackWrapper::JSInspectorCallbackWrapper):
              * bindings/js/JSInspectorCallbackWrapper.h:
              * bindings/js/JSMessageChannelConstructor.cpp:
              (WebCore::JSMessageChannelConstructor::JSMessageChannelConstructor):
              * bindings/js/JSNamedNodesCollection.h:
              (WebCore::JSNamedNodesCollection::createStructure):
              * bindings/js/JSOptionConstructor.cpp:
              (WebCore::JSOptionConstructor::JSOptionConstructor):
              * bindings/js/JSQuarantinedObjectWrapper.cpp:
              (WebCore::JSQuarantinedObjectWrapper::JSQuarantinedObjectWrapper):
              * bindings/js/JSQuarantinedObjectWrapper.h:
              (WebCore::JSQuarantinedObjectWrapper::createStructure):
              * bindings/js/JSRGBColor.h:
              (WebCore::JSRGBColor::createStructure):
              * bindings/js/JSWorkerContext.cpp:
              (WebCore::createJSWorkerContextStructure):
              (WebCore::JSWorkerContext::JSWorkerContext):
              (WebCore::JSWorkerContext::createPrototype):
              * bindings/js/JSWorkerContext.h:
              (WebCore::JSWorkerContext::createStructure):
              (WebCore::JSWorkerContextPrototype::JSWorkerContextPrototype):
              (WebCore::JSWorkerContextPrototype::createStructure):
              * bindings/js/JSXMLHttpRequestConstructor.cpp:
              (WebCore::JSXMLHttpRequestConstructor::JSXMLHttpRequestConstructor):
              * bindings/js/JSXSLTProcessorConstructor.cpp:
              (WebCore::JSXSLTProcessorConstructor::JSXSLTProcessorConstructor):
              * bindings/scripts/CodeGeneratorJS.pm:
              * bridge/objc/objc_runtime.h:
              (JSC::Bindings::ObjcFallbackObjectImp::createStructure):
              * bridge/qt/qt_runtime.cpp:
              (JSC::Bindings::QtConnectionObject::execute):
              * bridge/qt/qt_runtime.h:
              (JSC::Bindings::QtRuntimeMethod::createStructure):
              * bridge/runtime_array.h:
              (JSC::RuntimeArray::createStructure):
              * bridge/runtime_method.h:
              (JSC::RuntimeMethod::createStructure):
              * bridge/runtime_object.cpp:
              (JSC::RuntimeObjectImp::RuntimeObjectImp):
              * bridge/runtime_object.h:
              (JSC::RuntimeObjectImp::createStructure):
      
      WebKitTools:
      
      2008-11-15  Darin Adler  <darin@apple.com>
      
              Rubber stamped by Geoff Garen.
      
              - do the long-planned StructureID -> Structure rename
      
              * Scripts/check-for-global-initializers: Update name of StructureID.o.
              * Scripts/do-webcore-rename: Renaming script that I used.
      
      
      
      git-svn-id: http://svn.webkit.org/repository/webkit/trunk@38440 268f45cc-cd09-0410-ab3c-d52691b4dbfc
      a9778f97
    • ggaren@apple.com's avatar
      2008-11-15 Geoffrey Garen <ggaren@apple.com> · 47d3f059
      ggaren@apple.com authored
              Suggested by Maciej Stachowiak.
              
              Reverted most "opcode" => "bytecode" renames. We use "bytecode" as a
              mass noun to refer to a stream of instructions. Each instruction may be
              an opcode or an operand.
      
              * VM/CTI.cpp:
              (JSC::CTI::emitCTICall):
              (JSC::CTI::compileOpCall):
              (JSC::CTI::compileBinaryArithOp):
              (JSC::CTI::compileBinaryArithOpSlowCase):
              (JSC::CTI::privateCompileMainPass):
              (JSC::CTI::privateCompileSlowCases):
              (JSC::CTI::privateCompile):
              * VM/CTI.h:
              * VM/CodeBlock.cpp:
              (JSC::CodeBlock::printStructureIDs):
              (JSC::CodeBlock::dump):
              (JSC::CodeBlock::derefStructureIDs):
              (JSC::CodeBlock::refStructureIDs):
              * VM/CodeBlock.h:
              * VM/ExceptionHelpers.cpp:
              (JSC::createNotAnObjectError):
              * VM/Instruction.h:
              (JSC::Instruction::Instruction):
              (JSC::Instruction::):
              * VM/Machine.cpp:
              (JSC::BytecodeInterpreter::isOpcode):
              (JSC::BytecodeInterpreter::throwException):
              (JSC::BytecodeInterpreter::tryCachePutByID):
              (JSC::BytecodeInterpreter::uncachePutByID):
              (JSC::BytecodeInterpreter::tryCacheGetByID):
              (JSC::BytecodeInterpreter::uncacheGetByID):
              (JSC::BytecodeInterpreter::privateExecute):
              (JSC::BytecodeInterpreter::tryCTICachePutByID):
              (JSC::BytecodeInterpreter::tryCTICacheGetByID):
              * VM/Machine.h:
              (JSC::BytecodeInterpreter::getOpcode):
              (JSC::BytecodeInterpreter::getOpcodeID):
              (JSC::BytecodeInterpreter::isCallBytecode):
              * VM/Opcode.cpp:
              (JSC::):
              (JSC::OpcodeStats::OpcodeStats):
              (JSC::compareOpcodeIndices):
              (JSC::compareOpcodePairIndices):
              (JSC::OpcodeStats::~OpcodeStats):
              (JSC::OpcodeStats::recordInstruction):
              (JSC::OpcodeStats::resetLastInstruction):
              * VM/Opcode.h:
              (JSC::):
              (JSC::padOpcodeName):
              * VM/SamplingTool.cpp:
              (JSC::ScopeSampleRecord::sample):
              (JSC::SamplingTool::run):
              (JSC::compareOpcodeIndicesSampling):
              (JSC::SamplingTool::dump):
              * VM/SamplingTool.h:
              (JSC::ScopeSampleRecord::ScopeSampleRecord):
              (JSC::SamplingTool::SamplingTool):
              * bytecompiler/CodeGenerator.cpp:
              (JSC::BytecodeGenerator::BytecodeGenerator):
              (JSC::BytecodeGenerator::emitLabel):
              (JSC::BytecodeGenerator::emitOpcode):
              (JSC::BytecodeGenerator::emitJump):
              (JSC::BytecodeGenerator::emitJumpIfTrue):
              (JSC::BytecodeGenerator::emitJumpIfFalse):
              (JSC::BytecodeGenerator::emitMove):
              (JSC::BytecodeGenerator::emitUnaryOp):
              (JSC::BytecodeGenerator::emitPreInc):
              (JSC::BytecodeGenerator::emitPreDec):
              (JSC::BytecodeGenerator::emitPostInc):
              (JSC::BytecodeGenerator::emitPostDec):
              (JSC::BytecodeGenerator::emitBinaryOp):
              (JSC::BytecodeGenerator::emitEqualityOp):
              (JSC::BytecodeGenerator::emitUnexpectedLoad):
              (JSC::BytecodeGenerator::emitInstanceOf):
              (JSC::BytecodeGenerator::emitResolve):
              (JSC::BytecodeGenerator::emitGetScopedVar):
              (JSC::BytecodeGenerator::emitPutScopedVar):
              (JSC::BytecodeGenerator::emitResolveBase):
              (JSC::BytecodeGenerator::emitResolveWithBase):
              (JSC::BytecodeGenerator::emitResolveFunction):
              (JSC::BytecodeGenerator::emitGetById):
              (JSC::BytecodeGenerator::emitPutById):
              (JSC::BytecodeGenerator::emitPutGetter):
              (JSC::BytecodeGenerator::emitPutSetter):
              (JSC::BytecodeGenerator::emitDeleteById):
              (JSC::BytecodeGenerator::emitGetByVal):
              (JSC::BytecodeGenerator::emitPutByVal):
              (JSC::BytecodeGenerator::emitDeleteByVal):
              (JSC::BytecodeGenerator::emitPutByIndex):
              (JSC::BytecodeGenerator::emitNewObject):
              (JSC::BytecodeGenerator::emitNewArray):
              (JSC::BytecodeGenerator::emitNewFunction):
              (JSC::BytecodeGenerator::emitNewRegExp):
              (JSC::BytecodeGenerator::emitNewFunctionExpression):
              (JSC::BytecodeGenerator::emitCall):
              (JSC::BytecodeGenerator::emitReturn):
              (JSC::BytecodeGenerator::emitUnaryNoDstOp):
              (JSC::BytecodeGenerator::emitConstruct):
              (JSC::BytecodeGenerator::emitPopScope):
              (JSC::BytecodeGenerator::emitDebugHook):
              (JSC::BytecodeGenerator::emitComplexJumpScopes):
              (JSC::BytecodeGenerator::emitJumpScopes):
              (JSC::BytecodeGenerator::emitNextPropertyName):
              (JSC::BytecodeGenerator::emitCatch):
              (JSC::BytecodeGenerator::emitNewError):
              (JSC::BytecodeGenerator::emitJumpSubroutine):
              (JSC::BytecodeGenerator::emitSubroutineReturn):
              (JSC::BytecodeGenerator::emitPushNewScope):
              (JSC::BytecodeGenerator::beginSwitch):
              * bytecompiler/CodeGenerator.h:
              * jsc.cpp:
              (runWithScripts):
              * masm/X86Assembler.h:
              (JSC::X86Assembler::):
              (JSC::X86Assembler::emitModRm_opr):
              (JSC::X86Assembler::emitModRm_opr_Unchecked):
              (JSC::X86Assembler::emitModRm_opm):
              (JSC::X86Assembler::emitModRm_opm_Unchecked):
              (JSC::X86Assembler::emitModRm_opmsib):
              * parser/Nodes.cpp:
              (JSC::UnaryOpNode::emitBytecode):
              (JSC::BinaryOpNode::emitBytecode):
              (JSC::ReverseBinaryOpNode::emitBytecode):
              (JSC::ThrowableBinaryOpNode::emitBytecode):
              (JSC::emitReadModifyAssignment):
              (JSC::ScopeNode::ScopeNode):
              * parser/Nodes.h:
              (JSC::UnaryPlusNode::):
              (JSC::NegateNode::):
              (JSC::BitwiseNotNode::):
              (JSC::LogicalNotNode::):
              (JSC::MultNode::):
              (JSC::DivNode::):
              (JSC::ModNode::):
              (JSC::AddNode::):
              (JSC::SubNode::):
              (JSC::LeftShiftNode::):
              (JSC::RightShiftNode::):
              (JSC::UnsignedRightShiftNode::):
              (JSC::LessNode::):
              (JSC::GreaterNode::):
              (JSC::LessEqNode::):
              (JSC::GreaterEqNode::):
              (JSC::InstanceOfNode::):
              (JSC::InNode::):
              (JSC::EqualNode::):
              (JSC::NotEqualNode::):
              (JSC::StrictEqualNode::):
              (JSC::NotStrictEqualNode::):
              (JSC::BitAndNode::):
              (JSC::BitOrNode::):
              (JSC::BitXOrNode::):
              * runtime/StructureID.cpp:
              (JSC::StructureID::fromDictionaryTransition):
              * wtf/Platform.h:
      
      
      
      git-svn-id: http://svn.webkit.org/repository/webkit/trunk@38428 268f45cc-cd09-0410-ab3c-d52691b4dbfc
      47d3f059
    • ggaren@apple.com's avatar
      2008-11-15 Geoffrey Garen <ggaren@apple.com> · 77dd3c6a
      ggaren@apple.com authored
              Reviewed by Sam Weinig.
              
              Renamed all forms of "byte code" "opcode" "op code" "code" "bitcode"
              etc. to "bytecode".
      
              * VM/CTI.cpp:
              (JSC::CTI::printBytecodeOperandTypes):
              (JSC::CTI::emitAllocateNumber):
              (JSC::CTI::emitNakedCall):
              (JSC::CTI::emitNakedFastCall):
              (JSC::CTI::emitCTICall):
              (JSC::CTI::emitJumpSlowCaseIfNotJSCell):
              (JSC::CTI::emitJumpSlowCaseIfNotImmNum):
              (JSC::CTI::emitJumpSlowCaseIfNotImmNums):
              (JSC::CTI::emitFastArithIntToImmOrSlowCase):
              (JSC::CTI::compileOpCall):
              (JSC::CTI::emitSlowScriptCheck):
              (JSC::CTI::compileBinaryArithOp):
              (JSC::CTI::compileBinaryArithOpSlowCase):
              (JSC::CTI::privateCompileMainPass):
              (JSC::CTI::privateCompileSlowCases):
              (JSC::CTI::privateCompile):
              * VM/CTI.h:
              (JSC::CallRecord::CallRecord):
              (JSC::SwitchRecord::SwitchRecord):
              * VM/CodeBlock.cpp:
              (JSC::CodeBlock::printStructureIDs):
              (JSC::CodeBlock::dump):
              (JSC::CodeBlock::~CodeBlock):
              (JSC::CodeBlock::derefStructureIDs):
              (JSC::CodeBlock::refStructureIDs):
              * VM/CodeBlock.h:
              (JSC::StructureStubInfo::StructureStubInfo):
              * VM/ExceptionHelpers.cpp:
              (JSC::createNotAnObjectError):
              * VM/Instruction.h:
              (JSC::Instruction::Instruction):
              (JSC::Instruction::):
              * VM/Machine.cpp:
              (JSC::BytecodeInterpreter::isBytecode):
              (JSC::BytecodeInterpreter::throwException):
              (JSC::BytecodeInterpreter::execute):
              (JSC::BytecodeInterpreter::tryCachePutByID):
              (JSC::BytecodeInterpreter::uncachePutByID):
              (JSC::BytecodeInterpreter::tryCacheGetByID):
              (JSC::BytecodeInterpreter::uncacheGetByID):
              (JSC::BytecodeInterpreter::privateExecute):
              (JSC::BytecodeInterpreter::tryCTICachePutByID):
              (JSC::BytecodeInterpreter::tryCTICacheGetByID):
              (JSC::BytecodeInterpreter::cti_op_call_JSFunction):
              (JSC::BytecodeInterpreter::cti_vm_dontLazyLinkCall):
              (JSC::BytecodeInterpreter::cti_vm_lazyLinkCall):
              * VM/Machine.h:
              (JSC::BytecodeInterpreter::getBytecode):
              (JSC::BytecodeInterpreter::getBytecodeID):
              (JSC::BytecodeInterpreter::isCallBytecode):
              * VM/Opcode.cpp:
              (JSC::):
              (JSC::BytecodeStats::BytecodeStats):
              (JSC::compareBytecodeIndices):
              (JSC::compareBytecodePairIndices):
              (JSC::BytecodeStats::~BytecodeStats):
              (JSC::BytecodeStats::recordInstruction):
              (JSC::BytecodeStats::resetLastInstruction):
              * VM/Opcode.h:
              (JSC::):
              (JSC::padBytecodeName):
              * VM/SamplingTool.cpp:
              (JSC::ScopeSampleRecord::sample):
              (JSC::SamplingTool::run):
              (JSC::compareBytecodeIndicesSampling):
              (JSC::SamplingTool::dump):
              * VM/SamplingTool.h:
              (JSC::ScopeSampleRecord::ScopeSampleRecord):
              (JSC::SamplingTool::SamplingTool):
              * bytecompiler/CodeGenerator.cpp:
              (JSC::CodeGenerator::generate):
              (JSC::CodeGenerator::CodeGenerator):
              (JSC::CodeGenerator::emitLabel):
              (JSC::CodeGenerator::emitBytecode):
              (JSC::CodeGenerator::emitJump):
              (JSC::CodeGenerator::emitJumpIfTrue):
              (JSC::CodeGenerator::emitJumpIfFalse):
              (JSC::CodeGenerator::emitMove):
              (JSC::CodeGenerator::emitUnaryOp):
              (JSC::CodeGenerator::emitPreInc):
              (JSC::CodeGenerator::emitPreDec):
              (JSC::CodeGenerator::emitPostInc):
              (JSC::CodeGenerator::emitPostDec):
              (JSC::CodeGenerator::emitBinaryOp):
              (JSC::CodeGenerator::emitEqualityOp):
              (JSC::CodeGenerator::emitUnexpectedLoad):
              (JSC::CodeGenerator::emitInstanceOf):
              (JSC::CodeGenerator::emitResolve):
              (JSC::CodeGenerator::emitGetScopedVar):
              (JSC::CodeGenerator::emitPutScopedVar):
              (JSC::CodeGenerator::emitResolveBase):
              (JSC::CodeGenerator::emitResolveWithBase):
              (JSC::CodeGenerator::emitResolveFunction):
              (JSC::CodeGenerator::emitGetById):
              (JSC::CodeGenerator::emitPutById):
              (JSC::CodeGenerator::emitPutGetter):
              (JSC::CodeGenerator::emitPutSetter):
              (JSC::CodeGenerator::emitDeleteById):
              (JSC::CodeGenerator::emitGetByVal):
              (JSC::CodeGenerator::emitPutByVal):
              (JSC::CodeGenerator::emitDeleteByVal):
              (JSC::CodeGenerator::emitPutByIndex):
              (JSC::CodeGenerator::emitNewObject):
              (JSC::CodeGenerator::emitNewArray):
              (JSC::CodeGenerator::emitNewFunction):
              (JSC::CodeGenerator::emitNewRegExp):
              (JSC::CodeGenerator::emitNewFunctionExpression):
              (JSC::CodeGenerator::emitCall):
              (JSC::CodeGenerator::emitReturn):
              (JSC::CodeGenerator::emitUnaryNoDstOp):
              (JSC::CodeGenerator::emitConstruct):
              (JSC::CodeGenerator::emitPopScope):
              (JSC::CodeGenerator::emitDebugHook):
              (JSC::CodeGenerator::emitComplexJumpScopes):
              (JSC::CodeGenerator::emitJumpScopes):
              (JSC::CodeGenerator::emitNextPropertyName):
              (JSC::CodeGenerator::emitCatch):
              (JSC::CodeGenerator::emitNewError):
              (JSC::CodeGenerator::emitJumpSubroutine):
              (JSC::CodeGenerator::emitSubroutineReturn):
              (JSC::CodeGenerator::emitPushNewScope):
              (JSC::CodeGenerator::beginSwitch):
              (JSC::CodeGenerator::endSwitch):
              * bytecompiler/CodeGenerator.h:
              (JSC::CodeGenerator::emitNode):
              * jsc.cpp:
              (runWithScripts):
              * masm/X86Assembler.h:
              (JSC::X86Assembler::):
              (JSC::X86Assembler::emitModRm_opr):
              (JSC::X86Assembler::emitModRm_opr_Unchecked):
              (JSC::X86Assembler::emitModRm_opm):
              (JSC::X86Assembler::emitModRm_opm_Unchecked):
              (JSC::X86Assembler::emitModRm_opmsib):
              * parser/Nodes.cpp:
              (JSC::NullNode::emitBytecode):
              (JSC::BooleanNode::emitBytecode):
              (JSC::NumberNode::emitBytecode):
              (JSC::StringNode::emitBytecode):
              (JSC::RegExpNode::emitBytecode):
              (JSC::ThisNode::emitBytecode):
              (JSC::ResolveNode::emitBytecode):
              (JSC::ArrayNode::emitBytecode):
              (JSC::ObjectLiteralNode::emitBytecode):
              (JSC::PropertyListNode::emitBytecode):
              (JSC::BracketAccessorNode::emitBytecode):
              (JSC::DotAccessorNode::emitBytecode):
              (JSC::ArgumentListNode::emitBytecode):
              (JSC::NewExprNode::emitBytecode):
              (JSC::EvalFunctionCallNode::emitBytecode):
              (JSC::FunctionCallValueNode::emitBytecode):
              (JSC::FunctionCallResolveNode::emitBytecode):
              (JSC::FunctionCallBracketNode::emitBytecode):
              (JSC::FunctionCallDotNode::emitBytecode):
              (JSC::PostfixResolveNode::emitBytecode):
              (JSC::PostfixBracketNode::emitBytecode):
              (JSC::PostfixDotNode::emitBytecode):
              (JSC::PostfixErrorNode::emitBytecode):
              (JSC::DeleteResolveNode::emitBytecode):
              (JSC::DeleteBracketNode::emitBytecode):
              (JSC::DeleteDotNode::emitBytecode):
              (JSC::DeleteValueNode::emitBytecode):
              (JSC::VoidNode::emitBytecode):
              (JSC::TypeOfResolveNode::emitBytecode):
              (JSC::TypeOfValueNode::emitBytecode):
              (JSC::PrefixResolveNode::emitBytecode):
              (JSC::PrefixBracketNode::emitBytecode):
              (JSC::PrefixDotNode::emitBytecode):
              (JSC::PrefixErrorNode::emitBytecode):
              (JSC::UnaryOpNode::emitBytecode):
              (JSC::BinaryOpNode::emitBytecode):
              (JSC::EqualNode::emitBytecode):
              (JSC::StrictEqualNode::emitBytecode):
              (JSC::ReverseBinaryOpNode::emitBytecode):
              (JSC::ThrowableBinaryOpNode::emitBytecode):
              (JSC::InstanceOfNode::emitBytecode):
              (JSC::LogicalOpNode::emitBytecode):
              (JSC::ConditionalNode::emitBytecode):
              (JSC::emitReadModifyAssignment):
              (JSC::ReadModifyResolveNode::emitBytecode):
              (JSC::AssignResolveNode::emitBytecode):
              (JSC::AssignDotNode::emitBytecode):
              (JSC::ReadModifyDotNode::emitBytecode):
              (JSC::AssignErrorNode::emitBytecode):
              (JSC::AssignBracketNode::emitBytecode):
              (JSC::ReadModifyBracketNode::emitBytecode):
              (JSC::CommaNode::emitBytecode):
              (JSC::ConstDeclNode::emitBytecode):
              (JSC::ConstStatementNode::emitBytecode):
              (JSC::BlockNode::emitBytecode):
              (JSC::EmptyStatementNode::emitBytecode):
              (JSC::DebuggerStatementNode::emitBytecode):
              (JSC::ExprStatementNode::emitBytecode):
              (JSC::VarStatementNode::emitBytecode):
              (JSC::IfNode::emitBytecode):
              (JSC::IfElseNode::emitBytecode):
              (JSC::DoWhileNode::emitBytecode):
              (JSC::WhileNode::emitBytecode):
              (JSC::ForNode::emitBytecode):
              (JSC::ForInNode::emitBytecode):
              (JSC::ContinueNode::emitBytecode):
              (JSC::BreakNode::emitBytecode):
              (JSC::ReturnNode::emitBytecode):
              (JSC::WithNode::emitBytecode):
              (JSC::SwitchNode::emitBytecode):
              (JSC::LabelNode::emitBytecode):
              (JSC::ThrowNode::emitBytecode):
              (JSC::TryNode::emitBytecode):
              (JSC::ScopeNode::ScopeNode):
              (JSC::EvalNode::emitBytecode):
              (JSC::FunctionBodyNode::emitBytecode):
              (JSC::ProgramNode::emitBytecode):
              (JSC::FuncDeclNode::emitBytecode):
              (JSC::FuncExprNode::emitBytecode):
              * parser/Nodes.h:
              (JSC::UnaryPlusNode::):
              (JSC::NegateNode::):
              (JSC::BitwiseNotNode::):
              (JSC::LogicalNotNode::):
              (JSC::MultNode::):
              (JSC::DivNode::):
              (JSC::ModNode::):
              (JSC::AddNode::):
              (JSC::SubNode::):
              (JSC::LeftShiftNode::):
              (JSC::RightShiftNode::):
              (JSC::UnsignedRightShiftNode::):
              (JSC::LessNode::):
              (JSC::GreaterNode::):
              (JSC::LessEqNode::):
              (JSC::GreaterEqNode::):
              (JSC::InstanceOfNode::):
              (JSC::InNode::):
              (JSC::EqualNode::):
              (JSC::NotEqualNode::):
              (JSC::StrictEqualNode::):
              (JSC::NotStrictEqualNode::):
              (JSC::BitAndNode::):
              (JSC::BitOrNode::):
              (JSC::BitXOrNode::):
              (JSC::ProgramNode::):
              (JSC::EvalNode::):
              (JSC::FunctionBodyNode::):
              * runtime/JSNotAnObject.h:
              * runtime/StructureID.cpp:
              (JSC::StructureID::fromDictionaryTransition):
              * wtf/Platform.h:
      
      
      
      git-svn-id: http://svn.webkit.org/repository/webkit/trunk@38425 268f45cc-cd09-0410-ab3c-d52691b4dbfc
      77dd3c6a
  21. 29 Oct, 2008 1 commit
    • oliver@apple.com's avatar
      Initial work to reduce cost of JSNumberCell allocation · 487b61b9
      oliver@apple.com authored
      Reviewed by Geoffrey Garen
      
      This does the initial work needed to bring more of number
      allocation into CTI code directly, rather than just falling
      back onto the slow paths if we can't guarantee that a number
      cell can be reused.
      
      Initial implementation only used by op_negate to make sure
      it all works.  In a negate heavy (though not dominated) test
      it results in a 10% win in the non-reusable cell case.
      
      
      git-svn-id: http://svn.webkit.org/repository/webkit/trunk@37991 268f45cc-cd09-0410-ab3c-d52691b4dbfc
      487b61b9
  22. 26 Sep, 2008 1 commit
    • ggaren@apple.com's avatar
      2008-09-26 Geoffrey Garen <ggaren@apple.com> · a54a889a
      ggaren@apple.com authored
              Reviewed by Maciej Stachowiak.
              
              Removed dynamic check for whether the callee needs an activation object.
              Replaced with callee code to create the activation object.
      
              0.5% speedup on SunSpider.
              No change on v8 benchmark. (Might be a speedup, but it's in range of the
              variance.)
      
              0.7% speedup on v8 benchmark in bytecode.
              1.3% speedup on empty call benchmark in bytecode.
      
              * VM/CTI.cpp:
              (JSC::CTI::privateCompileMainPass): Added support for op_init_activation,
              the new opcode that specifies that the callee's initialization should
              create an activation object.
              (JSC::CTI::privateCompile): Removed previous code that did a similar
              thing in an ad-hoc way.
      
              * VM/CodeBlock.cpp:
              (JSC::CodeBlock::dump): Added a case for dumping op_init_activation.
      
              * VM/CodeGenerator.cpp:
              (JSC::CodeGenerator::generate): Added fixup code to change op_init to
              op_init_activation if necessary. (With a better parser, we would know
              which to use from the beginning.)
      
              * VM/Instruction.h:
              (JSC::Instruction::Instruction):
              (WTF::): Faster traits for the instruction vector. An earlier version
              of this patch relied on inserting at the beginning of the vector, and
              depended on this change for speed.
      
              * VM/Machine.cpp:
              (JSC::Machine::execute): Removed clients of setScopeChain, the old
              abstraction for dynamically checking for whether an activation object
              needed to be created.
              (JSC::Machine::privateExecute): ditto
      
              (JSC::Machine::cti_op_push_activation): Renamed this function from
              cti_vm_updateScopeChain, and made it faster by removing the call to 
              setScopeChain.
              * VM/Machine.h:
      
              * VM/Opcode.h: Declared op_init_activation.
      
      
      
      git-svn-id: http://svn.webkit.org/repository/webkit/trunk@36972 268f45cc-cd09-0410-ab3c-d52691b4dbfc
      a54a889a
  23. 18 Sep, 2008 2 commits
  24. 07 Sep, 2008 1 commit
    • cwzwarich@webkit.org's avatar
      2008-09-07 Cameron Zwarich <cwzwarich@uwaterloo.ca> · 3f782f6a
      cwzwarich@webkit.org authored
              Reviewed by Maciej Stachowiak.
      
              Bug 20704: Replace the KJS namespace
              <https://bugs.webkit.org/show_bug.cgi?id=20704>
      
              Rename the KJS namespace to JSC. There are still some uses of KJS in
              preprocessor macros and comments, but these will also be changed some
              time in the near future. There are also some uses in the names of JNI
              functions, but I will check if these are safe to change as well.
      
              JavaScriptCore:
      
              * API/APICast.h:
              (toJS):
              (toRef):
              (toGlobalRef):
              * API/JSBase.cpp:
              * API/JSCallbackConstructor.cpp:
              * API/JSCallbackConstructor.h:
              * API/JSCallbackFunction.cpp:
              * API/JSCallbackFunction.h:
              * API/JSCallbackObject.cpp:
              * API/JSCallbackObject.h:
              * API/JSCallbackObjectFunctions.h:
              * API/JSClassRef.cpp:
              (OpaqueJSClass::staticValues):
              (OpaqueJSClass::staticFunctions):
              * API/JSClassRef.h:
              * API/JSContextRef.cpp:
              * API/JSObjectRef.cpp:
              * API/JSProfilerPrivate.cpp:
              * API/JSStringRef.cpp:
              * API/JSValueRef.cpp:
              (JSValueGetType):
              * API/OpaqueJSString.cpp:
              * API/OpaqueJSString.h:
              * JavaScriptCore.Debug.exp:
              * JavaScriptCore.base.exp:
              * VM/CTI.cpp:
              (JSC::):
              * VM/CTI.h:
              * VM/CodeBlock.cpp:
              * VM/CodeBlock.h:
              * VM/CodeGenerator.cpp:
              * VM/CodeGenerator.h:
              * VM/ExceptionHelpers.cpp:
              * VM/ExceptionHelpers.h:
              * VM/Instruction.h:
              * VM/JSPropertyNameIterator.cpp:
              * VM/JSPropertyNameIterator.h:
              * VM/LabelID.h:
              * VM/Machine.cpp:
              * VM/Machine.h:
              * VM/Opcode.cpp:
              * VM/Opcode.h:
              * VM/Register.h:
              (WTF::):
              * VM/RegisterFile.cpp:
              * VM/RegisterFile.h:
              * VM/RegisterID.h:
              (WTF::):
              * VM/SamplingTool.cpp:
              * VM/SamplingTool.h:
              * VM/SegmentedVector.h:
              * kjs/ArgList.cpp:
              * kjs/ArgList.h:
              * kjs/Arguments.cpp:
              * kjs/Arguments.h:
              * kjs/ArrayConstructor.cpp:
              * kjs/ArrayConstructor.h:
              * kjs/ArrayPrototype.cpp:
              * kjs/ArrayPrototype.h:
              * kjs/BatchedTransitionOptimizer.h:
              * kjs/BooleanConstructor.cpp:
              * kjs/BooleanConstructor.h:
              * kjs/BooleanObject.cpp:
              * kjs/BooleanObject.h:
              * kjs/BooleanPrototype.cpp:
              * kjs/BooleanPrototype.h:
              * kjs/CallData.cpp:
              * kjs/CallData.h:
              * kjs/ClassInfo.h:
              * kjs/CommonIdentifiers.cpp:
              * kjs/CommonIdentifiers.h:
              * kjs/ConstructData.cpp:
              * kjs/ConstructData.h:
              * kjs/DateConstructor.cpp:
              * kjs/DateConstructor.h:
              * kjs/DateInstance.cpp:
              (JSC::DateInstance::msToGregorianDateTime):
              * kjs/DateInstance.h:
              * kjs/DateMath.cpp:
              * kjs/DateMath.h:
              * kjs/DatePrototype.cpp:
              * kjs/DatePrototype.h:
              * kjs/DebuggerCallFrame.cpp:
              * kjs/DebuggerCallFrame.h:
              * kjs/Error.cpp:
              * kjs/Error.h:
              * kjs/ErrorConstructor.cpp:
              * kjs/ErrorConstructor.h:
              * kjs/ErrorInstance.cpp:
              * kjs/ErrorInstance.h:
              * kjs/ErrorPrototype.cpp:
              * kjs/ErrorPrototype.h:
              * kjs/ExecState.cpp:
              * kjs/ExecState.h:
              * kjs/FunctionConstructor.cpp:
              * kjs/FunctionConstructor.h:
              * kjs/FunctionPrototype.cpp:
              * kjs/FunctionPrototype.h:
              * kjs/GetterSetter.cpp:
              * kjs/GetterSetter.h:
              * kjs/GlobalEvalFunction.cpp:
              * kjs/GlobalEvalFunction.h:
              * kjs/IndexToNameMap.cpp:
              * kjs/IndexToNameMap.h:
              * kjs/InitializeThreading.cpp:
              * kjs/InitializeThreading.h:
              * kjs/InternalFunction.cpp:
              * kjs/InternalFunction.h:
              (JSC::InternalFunction::InternalFunction):
              * kjs/JSActivation.cpp:
              * kjs/JSActivation.h:
              * kjs/JSArray.cpp:
              * kjs/JSArray.h:
              * kjs/JSCell.cpp:
              * kjs/JSCell.h:
              * kjs/JSFunction.cpp:
              * kjs/JSFunction.h:
              (JSC::JSFunction::JSFunction):
              * kjs/JSGlobalData.cpp:
              (JSC::JSGlobalData::JSGlobalData):
              * kjs/JSGlobalData.h:
              * kjs/JSGlobalObject.cpp:
              * kjs/JSGlobalObject.h:
              * kjs/JSGlobalObjectFunctions.cpp:
              * kjs/JSGlobalObjectFunctions.h:
              * kjs/JSImmediate.cpp:
              * kjs/JSImmediate.h:
              * kjs/JSLock.cpp:
              * kjs/JSLock.h:
              * kjs/JSNotAnObject.cpp:
              * kjs/JSNotAnObject.h:
              * kjs/JSNumberCell.cpp:
              * kjs/JSNumberCell.h:
              * kjs/JSObject.cpp:
              * kjs/JSObject.h:
              * kjs/JSStaticScopeObject.cpp:
              * kjs/JSStaticScopeObject.h:
              * kjs/JSString.cpp:
              * kjs/JSString.h:
              * kjs/JSType.h:
              * kjs/JSValue.cpp:
              * kjs/JSValue.h:
              * kjs/JSVariableObject.cpp:
              * kjs/JSVariableObject.h:
              * kjs/JSWrapperObject.cpp:
              * kjs/JSWrapperObject.h:
              * kjs/LabelStack.cpp:
              * kjs/LabelStack.h:
              * kjs/MathObject.cpp:
              * kjs/MathObject.h:
              * kjs/NativeErrorConstructor.cpp:
              * kjs/NativeErrorConstructor.h:
              * kjs/NativeErrorPrototype.cpp:
              * kjs/NativeErrorPrototype.h:
              * kjs/NodeInfo.h:
              * kjs/NumberConstructor.cpp:
              * kjs/NumberConstructor.h:
              * kjs/NumberObject.cpp:
              * kjs/NumberObject.h:
              * kjs/NumberPrototype.cpp:
              * kjs/NumberPrototype.h:
              * kjs/ObjectConstructor.cpp:
              * kjs/ObjectConstructor.h:
              * kjs/ObjectPrototype.cpp:
              * kjs/ObjectPrototype.h:
              * kjs/Parser.cpp:
              * kjs/Parser.h:
              * kjs/PropertyMap.cpp:
              (JSC::PropertyMapStatisticsExitLogger::~PropertyMapStatisticsExitLogger):
              * kjs/PropertyMap.h:
              * kjs/PropertyNameArray.cpp:
              * kjs/PropertyNameArray.h:
              * kjs/PropertySlot.cpp:
              * kjs/PropertySlot.h:
              * kjs/PrototypeFunction.cpp:
              * kjs/PrototypeFunction.h:
              * kjs/PutPropertySlot.h:
              * kjs/RegExpConstructor.cpp:
              * kjs/RegExpConstructor.h:
              * kjs/RegExpObject.cpp:
              * kjs/RegExpObject.h:
              * kjs/RegExpPrototype.cpp:
              * kjs/RegExpPrototype.h:
              * kjs/ScopeChain.cpp:
              * kjs/ScopeChain.h:
              * kjs/ScopeChainMark.h:
              * kjs/Shell.cpp:
              (jscmain):
              * kjs/SmallStrings.cpp:
              * kjs/SmallStrings.h:
              * kjs/SourceProvider.h:
              * kjs/SourceRange.h:
              * kjs/StringConstructor.cpp:
              * kjs/StringConstructor.h:
              * kjs/StringObject.cpp:
              * kjs/StringObject.h:
              * kjs/StringObjectThatMasqueradesAsUndefined.h:
              * kjs/StringPrototype.cpp:
              * kjs/StringPrototype.h:
              * kjs/StructureID.cpp:
              * kjs/StructureID.h:
              * kjs/SymbolTable.h:
              * kjs/collector.cpp:
              * kjs/collector.h:
              * kjs/completion.h:
              * kjs/create_hash_table:
              * kjs/debugger.cpp:
              * kjs/debugger.h:
              * kjs/dtoa.cpp:
              * kjs/dtoa.h:
              * kjs/grammar.y:
              * kjs/identifier.cpp:
              * kjs/identifier.h:
              (JSC::Identifier::equal):
              * kjs/interpreter.cpp:
              * kjs/interpreter.h:
              * kjs/lexer.cpp:
              (JSC::Lexer::Lexer):
              (JSC::Lexer::clear):
              (JSC::Lexer::makeIdentifier):
              * kjs/lexer.h:
              * kjs/lookup.cpp:
              * kjs/lookup.h:
              * kjs/nodes.cpp:
              * kjs/nodes.h:
              * kjs/nodes2string.cpp:
              * kjs/operations.cpp:
              * kjs/operations.h:
              * kjs/protect.h:
              * kjs/regexp.cpp:
              * kjs/regexp.h:
              * kjs/ustring.cpp:
              * kjs/ustring.h:
              (JSC::operator!=):
              (JSC::IdentifierRepHash::hash):
              (WTF::):
              * masm/MacroAssembler.h:
              * masm/MacroAssemblerWin.cpp:
              * masm/X86Assembler.h:
              * pcre/pcre_exec.cpp:
              * profiler/CallIdentifier.h:
              (WTF::):
              * profiler/HeavyProfile.cpp:
              * profiler/HeavyProfile.h:
              * profiler/Profile.cpp:
              * profiler/Profile.h:
              * profiler/ProfileGenerator.cpp:
              * profiler/ProfileGenerator.h:
              * profiler/ProfileNode.cpp:
              * profiler/ProfileNode.h:
              * profiler/Profiler.cpp:
              * profiler/Profiler.h:
              * profiler/TreeProfile.cpp:
              * profiler/TreeProfile.h:
              * wrec/WREC.cpp:
              * wrec/WREC.h:
              * wtf/AVLTree.h:
      
              WebCore:
      
              * WebCore.base.exp:
              * bindings/js/GCController.cpp:
              * bindings/js/JSAttrCustom.cpp:
              * bindings/js/JSAudioConstructor.cpp:
              * bindings/js/JSAudioConstructor.h:
              (WebCore::JSAudioConstructor::classInfo):
              * bindings/js/JSCSSRuleCustom.cpp:
              * bindings/js/JSCSSStyleDeclarationCustom.cpp:
              * bindings/js/JSCSSValueCustom.cpp:
              * bindings/js/JSCanvasPixelArrayCustom.cpp:
              * bindings/js/JSCanvasRenderingContext2DCustom.cpp:
              * bindings/js/JSClipboardCustom.cpp:
              * bindings/js/JSConsoleCustom.cpp:
              * bindings/js/JSCustomSQLStatementCallback.cpp:
              (WebCore::JSCustomSQLStatementCallback::handleEvent):
              * bindings/js/JSCustomSQLStatementCallback.h:
              (WebCore::JSCustomSQLStatementCallback::create):
              * bindings/js/JSCustomSQLStatementErrorCallback.cpp:
              (WebCore::JSCustomSQLStatementErrorCallback::handleEvent):
              * bindings/js/JSCustomSQLStatementErrorCallback.h:
              (WebCore::JSCustomSQLStatementErrorCallback::create):
              * bindings/js/JSCustomSQLTransactionCallback.cpp:
              (WebCore::JSCustomSQLTransactionCallback::handleEvent):
              * bindings/js/JSCustomSQLTransactionCallback.h:
              (WebCore::JSCustomSQLTransactionCallback::create):
              * bindings/js/JSCustomSQLTransactionErrorCallback.cpp:
              (WebCore::JSCustomSQLTransactionErrorCallback::handleEvent):
              * bindings/js/JSCustomSQLTransactionErrorCallback.h:
              (WebCore::JSCustomSQLTransactionErrorCallback::create):
              * bindings/js/JSCustomVoidCallback.cpp:
              (WebCore::JSCustomVoidCallback::handleEvent):
              * bindings/js/JSCustomVoidCallback.h:
              (WebCore::JSCustomVoidCallback::create):
              * bindings/js/JSCustomXPathNSResolver.cpp:
              (WebCore::JSCustomXPathNSResolver::create):
              * bindings/js/JSCustomXPathNSResolver.h:
              * bindings/js/JSDOMApplicationCacheCustom.cpp:
              (WebCore::JSDOMApplicationCache::dispatchEvent):
              * bindings/js/JSDOMBinding.cpp:
              (WebCore::jsOwnedStringOrNull):
              * bindings/js/JSDOMBinding.h:
              (WebCore::DOMObject::DOMObject):
              (WebCore::cacheDOMObject):
              (WebCore::cacheSVGDOMObject):
              (WebCore::DOMExceptionTranslator::DOMExceptionTranslator):
              (WebCore::toJS):
              * bindings/js/JSDOMWindowBase.cpp:
              * bindings/js/JSDOMWindowBase.h:
              (WebCore::JSDOMWindowBase::classInfo):
              (WebCore::JSDOMWindowBase::d):
              * bindings/js/JSDOMWindowCustom.cpp:
              (WebCore::JSDOMWindow::getPropertyAttributes):
              * bindings/js/JSDOMWindowCustom.h:
              (WebCore::asJSDOMWindow):
              (WebCore::JSDOMWindow::customGetOwnPropertySlot):
              (WebCore::JSDOMWindow::customPut):
              (WebCore::JSDOMWindowBase::allowsAccessFrom):
              (WebCore::JSDOMWindowBase::allowsAccessFromNoErrorMessage):
              * bindings/js/JSDOMWindowShell.cpp:
              (WebCore::JSDOMWindowShell::getPropertyAttributes):
              * bindings/js/JSDOMWindowShell.h:
              (WebCore::JSDOMWindowShell::classInfo):
              * bindings/js/JSDatabaseCustom.cpp:
              * bindings/js/JSDocumentCustom.cpp:
              * bindings/js/JSDocumentFragmentCustom.cpp:
              * bindings/js/JSElementCustom.cpp:
              * bindings/js/JSEventCustom.cpp:
              * bindings/js/JSEventListener.cpp:
              * bindings/js/JSEventListener.h:
              (WebCore::JSUnprotectedEventListener::create):
              (WebCore::JSEventListener::create):
              * bindings/js/JSEventTargetBase.cpp:
              * bindings/js/JSEventTargetBase.h:
              (WebCore::JSEventTargetBase::getValueProperty):
              (WebCore::JSEventTargetBase::putValueProperty):
              (WebCore::JSEventTargetBase::getOwnPropertySlot):
              (WebCore::JSEventTargetBase::put):
              (WebCore::JSEventTargetPrototype::JSEventTargetPrototype):
              (WebCore::JSEventTargetPrototype::self):
              (WebCore::JSEventTargetPrototype::getOwnPropertySlot):
              (WebCore::JSEventTargetPrototype::classInfo):
              * bindings/js/JSEventTargetNode.cpp:
              * bindings/js/JSEventTargetNode.h:
              (WebCore::JSEventTargetNode::getOwnPropertySlot):
              (WebCore::JSEventTargetNode::getValueProperty):
              (WebCore::JSEventTargetNode::put):
              (WebCore::JSEventTargetNode::putValueProperty):
              * bindings/js/JSHTMLAllCollection.h:
              (WebCore::JSHTMLAllCollection::JSHTMLAllCollection):
              (WebCore::JSHTMLAllCollection::toBoolean):
              * bindings/js/JSHTMLAppletElementCustom.cpp:
              * bindings/js/JSHTMLCollectionCustom.cpp:
              * bindings/js/JSHTMLDocumentCustom.cpp:
              * bindings/js/JSHTMLElementCustom.cpp:
              * bindings/js/JSHTMLEmbedElementCustom.cpp:
              * bindings/js/JSHTMLFormElementCustom.cpp:
              * bindings/js/JSHTMLFrameElementCustom.cpp:
              * bindings/js/JSHTMLFrameSetElementCustom.cpp:
              * bindings/js/JSHTMLIFrameElementCustom.cpp:
              * bindings/js/JSHTMLInputElementBase.cpp:
              (WebCore::JSHTMLInputElementBase::JSHTMLInputElementBase):
              (WebCore::JSHTMLInputElementBase::getOwnPropertySlot):
              * bindings/js/JSHTMLInputElementBase.h:
              (WebCore::JSHTMLInputElementBase::classInfo):
              * bindings/js/JSHTMLObjectElementCustom.cpp:
              * bindings/js/JSHTMLOptionElementConstructor.cpp:
              * bindings/js/JSHTMLOptionElementConstructor.h:
              (WebCore::JSHTMLOptionElementConstructor::classInfo):
              * bindings/js/JSHTMLOptionsCollectionCustom.cpp:
              * bindings/js/JSHTMLSelectElementCustom.cpp:
              (WebCore::selectIndexSetter):
              (WebCore::JSHTMLSelectElement::indexSetter):
              * bindings/js/JSHTMLSelectElementCustom.h:
              * bindings/js/JSHistoryCustom.cpp:
              * bindings/js/JSImageConstructor.cpp:
              * bindings/js/JSImageConstructor.h:
              (WebCore::JSImageConstructor::classInfo):
              * bindings/js/JSInspectedObjectWrapper.cpp:
              * bindings/js/JSInspectedObjectWrapper.h:
              (WebCore::JSInspectedObjectWrapper::wrapOutgoingValue):
              (WebCore::JSInspectedObjectWrapper::classInfo):
              * bindings/js/JSInspectorCallbackWrapper.cpp:
              * bindings/js/JSInspectorCallbackWrapper.h:
              (WebCore::JSInspectorCallbackWrapper::classInfo):
              (WebCore::JSInspectorCallbackWrapper::wrapOutgoingValue):
              * bindings/js/JSJavaScriptCallFrameCustom.cpp:
              * bindings/js/JSLocationCustom.cpp:
              * bindings/js/JSMimeTypeArrayCustom.cpp:
              * bindings/js/JSNSResolver.cpp:
              * bindings/js/JSNSResolver.h:
              (WebCore::JSNSResolver::create):
              * bindings/js/JSNamedNodeMapCustom.cpp:
              * bindings/js/JSNamedNodesCollection.cpp:
              (WebCore::JSNamedNodesCollection::JSNamedNodesCollection):
              * bindings/js/JSNamedNodesCollection.h:
              (WebCore::JSNamedNodesCollection::classInfo):
              * bindings/js/JSNavigatorCustom.cpp:
              * bindings/js/JSNodeCustom.cpp:
              * bindings/js/JSNodeFilterCondition.cpp:
              (WebCore::JSNodeFilterCondition::acceptNode):
              * bindings/js/JSNodeFilterCondition.h:
              (WebCore::JSNodeFilterCondition::create):
              * bindings/js/JSNodeFilterCustom.cpp:
              * bindings/js/JSNodeIteratorCustom.cpp:
              * bindings/js/JSNodeListCustom.cpp:
              * bindings/js/JSPluginArrayCustom.cpp:
              * bindings/js/JSPluginCustom.cpp:
              * bindings/js/JSPluginElementFunctions.cpp:
              (WebCore::getRuntimeObject):
              * bindings/js/JSPluginElementFunctions.h:
              * bindings/js/JSQuarantinedObjectWrapper.cpp:
              (WebCore::JSQuarantinedObjectWrapper::construct):
              (WebCore::JSQuarantinedObjectWrapper::call):
              * bindings/js/JSQuarantinedObjectWrapper.h:
              (WebCore::JSQuarantinedObjectWrapper::unwrappedObject):
              (WebCore::JSQuarantinedObjectWrapper::unwrappedGlobalObject):
              (WebCore::JSQuarantinedObjectWrapper::className):
              * bindings/js/JSRGBColor.cpp:
              * bindings/js/JSRGBColor.h:
              (WebCore::JSRGBColor::classInfo):
              * bindings/js/JSSQLResultSetRowListCustom.cpp:
              * bindings/js/JSSQLTransactionCustom.cpp:
              * bindings/js/JSSVGLazyEventListener.cpp:
              * bindings/js/JSSVGLazyEventListener.h:
              * bindings/js/JSSVGLengthCustom.cpp:
              * bindings/js/JSSVGMatrixCustom.cpp:
              (WebCore::JSSVGMatrix::inverse):
              (WebCore::JSSVGMatrix::rotateFromVector):
              * bindings/js/JSSVGPathSegCustom.cpp:
              * bindings/js/JSSVGPathSegListCustom.cpp:
              (WebCore::JSSVGPathSegList::initialize):
              (WebCore::JSSVGPathSegList::getItem):
              (WebCore::JSSVGPathSegList::insertItemBefore):
              (WebCore::JSSVGPathSegList::replaceItem):
              (WebCore::JSSVGPathSegList::removeItem):
              (WebCore::JSSVGPathSegList::appendItem):
              * bindings/js/JSSVGPointListCustom.cpp:
              * bindings/js/JSSVGTransformListCustom.cpp:
              * bindings/js/JSStorageCustom.cpp:
              * bindings/js/JSStyleSheetCustom.cpp:
              * bindings/js/JSStyleSheetListCustom.cpp:
              * bindings/js/JSTextCustom.cpp:
              * bindings/js/JSTreeWalkerCustom.cpp:
              * bindings/js/JSXMLHttpRequestConstructor.cpp:
              * bindings/js/JSXMLHttpRequestConstructor.h:
              (WebCore::JSXMLHttpRequestConstructor::classInfo):
              * bindings/js/JSXMLHttpRequestCustom.cpp:
              * bindings/js/JSXMLHttpRequestUploadCustom.cpp:
              * bindings/js/JSXSLTProcessorConstructor.cpp:
              * bindings/js/JSXSLTProcessorConstructor.h:
              (WebCore::JSXSLTProcessorConstructor::classInfo):
              * bindings/js/JSXSLTProcessorCustom.cpp:
              * bindings/js/ScheduledAction.cpp:
              * bindings/js/ScheduledAction.h:
              * bindings/js/ScriptController.cpp:
              (WebCore::ScriptController::attachDebugger):
              (WebCore::ScriptController::windowScriptNPObject):
              * bindings/js/ScriptController.h:
              * bindings/js/ScriptControllerGtk.cpp:
              (WebCore::ScriptController::createScriptInstanceForWidget):
              * bindings/js/ScriptControllerMac.mm:
              (WebCore::ScriptController::createScriptInstanceForWidget):
              (WebCore::ScriptController::windowScriptObject):
              (WebCore::ScriptController::clearPlatformScriptObjects):
              (WebCore::updateRenderingForBindings):
              (WebCore::ScriptController::initJavaJSBindings):
              * bindings/js/ScriptControllerQt.cpp:
              (WebCore::ScriptController::createScriptInstanceForWidget):
              * bindings/js/ScriptControllerWin.cpp:
              (WebCore::ScriptController::createScriptInstanceForWidget):
              * bindings/js/ScriptControllerWx.cpp:
              (WebCore::ScriptController::createScriptInstanceForWidget):
              * bindings/js/StringSourceProvider.h:
              (WebCore::StringSourceProvider::getRange):
              * bindings/objc/DOM.mm:
              (-[DOMNode JSC::Bindings::]):
              * bindings/objc/DOMInternal.h:
              * bindings/objc/DOMInternal.mm:
              (-[WebScriptObject _initializeScriptDOMNodeImp]):
              * bindings/objc/DOMUtility.mm:
              (JSC::createDOMWrapper):
              (WebCore::createDOMWrapper):
              * bindings/objc/WebScriptObject.mm:
              (WebCore::createJSWrapper):
              (-[WebScriptObject _initWithJSObject:JSC::originRootObject:JSC::Bindings::rootObject:JSC::Bindings::]):
              * bindings/objc/WebScriptObjectPrivate.h:
              * bindings/scripts/CodeGeneratorJS.pm:
              * bridge/NP_jsobject.cpp:
              * bridge/NP_jsobject.h:
              * bridge/c/c_class.cpp:
              * bridge/c/c_class.h:
              * bridge/c/c_instance.cpp:
              * bridge/c/c_instance.h:
              * bridge/c/c_runtime.cpp:
              * bridge/c/c_runtime.h:
              * bridge/c/c_utility.cpp:
              * bridge/c/c_utility.h:
              * bridge/jni/jni_class.cpp:
              * bridge/jni/jni_class.h:
              * bridge/jni/jni_instance.cpp:
              * bridge/jni/jni_instance.h:
              * bridge/jni/jni_jsobject.h:
              * bridge/jni/jni_jsobject.mm:
              (JavaJSObject::call):
              (JavaJSObject::convertJObjectToValue):
              * bridge/jni/jni_objc.mm:
              (JSC::Bindings::dispatchJNICall):
              * bridge/jni/jni_runtime.cpp:
              * bridge/jni/jni_runtime.h:
              * bridge/jni/jni_utility.cpp:
              * bridge/jni/jni_utility.h:
              * bridge/npruntime.cpp:
              (_NPN_GetStringIdentifier):
              * bridge/objc/WebScriptObject.h:
              * bridge/objc/objc_class.h:
              * bridge/objc/objc_class.mm:
              * bridge/objc/objc_instance.h:
              * bridge/objc/objc_instance.mm:
              * bridge/objc/objc_runtime.h:
              * bridge/objc/objc_runtime.mm:
              * bridge/objc/objc_utility.h:
              * bridge/objc/objc_utility.mm:
              * bridge/qt/qt_class.cpp:
              * bridge/qt/qt_class.h:
              * bridge/qt/qt_instance.cpp:
              * bridge/qt/qt_instance.h:
              * bridge/qt/qt_runtime.cpp:
              (JSC::Bindings::convertQVariantToValue):
              (JSC::Bindings::):
              * bridge/qt/qt_runtime.h:
              * bridge/runtime.cpp:
              * bridge/runtime.h:
              * bridge/runtime_array.cpp:
              * bridge/runtime_array.h:
              * bridge/runtime_method.cpp:
              * bridge/runtime_method.h:
              * bridge/runtime_object.cpp:
              * bridge/runtime_object.h:
              * bridge/runtime_root.cpp:
              (JSC::Bindings::RootObject::invalidate):
              (JSC::Bindings::RootObject::gcProtect):
              (JSC::Bindings::RootObject::gcUnprotect):
              * bridge/runtime_root.h:
              * bridge/testbindings.cpp:
              * bridge/testbindings.mm:
              * bridge/testqtbindings.cpp:
              * dom/Document.cpp:
              (WebCore::Document::~Document):
              * dom/NSResolver.h:
              * dom/Node.cpp:
              (WebCore::Node::setDocument):
              (WebCore::ResolveNamespaceFunctor::ResolveNamespaceFunctor):
              (WebCore::resolveNamespacesForSelector):
              (WebCore::Node::querySelector):
              (WebCore::Node::querySelectorAll):
              * dom/Node.h:
              * dom/NodeFilter.cpp:
              * dom/NodeFilter.h:
              * dom/NodeFilterCondition.cpp:
              * dom/NodeFilterCondition.h:
              * dom/NodeIterator.cpp:
              * dom/NodeIterator.h:
              * dom/Traversal.cpp:
              * dom/Traversal.h:
              * dom/TreeWalker.cpp:
              * dom/TreeWalker.h:
              * dom/make_names.pl:
              * history/CachedPage.cpp:
              * history/CachedPage.h:
              * html/HTMLPlugInElement.cpp:
              (WebCore::HTMLPlugInElement::getInstance):
              * html/HTMLPlugInElement.h:
              * loader/FrameLoader.cpp:
              * loader/FrameLoader.h:
              * loader/icon/IconDatabase.cpp:
              (WebCore::iconDatabase):
              * page/Console.cpp:
              * page/Console.h:
              * page/InspectorController.cpp:
              (WebCore::XMLHttpRequestResource::XMLHttpRequestResource):
              (WebCore::XMLHttpRequestResource::~XMLHttpRequestResource):
              (WebCore::InspectorResource::setXMLHttpRequestProperties):
              (WebCore::InspectorResource::sourceString):
              (WebCore::getResourceDocumentNode):
              (WebCore::search):
              (WebCore::InspectorController::focusNode):
              (WebCore::InspectorController::inspectedWindowScriptObjectCleared):
              (WebCore::InspectorController::addDatabaseScriptResource):
              (WebCore::InspectorController::resourceRetrievedByXMLHttpRequest):
              * page/InspectorController.h:
              (WebCore::InspectorController::profiles):
              * page/JavaScriptCallFrame.cpp:
              (WebCore::JavaScriptCallFrame::scopeChain):
              * page/JavaScriptCallFrame.h:
              (WebCore::JavaScriptCallFrame::create):
              (WebCore::JavaScriptCallFrame::update):
              * page/JavaScriptDebugListener.h:
              * page/JavaScriptDebugServer.cpp:
              (WebCore::dispatchDidParseSource):
              * page/JavaScriptDebugServer.h:
              * page/JavaScriptProfile.cpp:
              * page/JavaScriptProfile.h:
              * page/JavaScriptProfileNode.cpp:
              (WebCore::getTotalTime):
              (WebCore::getSelfTime):
              (WebCore::getTotalPercent):
              (WebCore::getSelfPercent):
              (WebCore::getNumberOfCalls):
              (WebCore::getChildren):
              (WebCore::getVisible):
              * page/JavaScriptProfileNode.h:
              * page/Page.cpp:
              (WebCore::Page::setDebuggerForAllPages):
              (WebCore::Page::setDebugger):
              * page/Page.h:
              (WebCore::Page::debugger):
              * page/mac/FrameMac.mm:
              * platform/KURL.h:
              (WebCore::KURL::operator JSC::UString):
              * platform/text/AtomicString.cpp:
              (WebCore::AtomicString::add):
              (WebCore::AtomicString::find):
              * platform/text/AtomicString.h:
              (WebCore::AtomicString::AtomicString):
              * platform/text/PlatformString.h:
              * platform/text/String.cpp:
              (WebCore::charactersToDouble):
              * platform/win/BString.cpp:
              * platform/win/BString.h:
              * plugins/MimeTypeArray.h:
              * plugins/Plugin.h:
              * plugins/PluginArray.h:
              * plugins/PluginView.cpp:
              (WebCore::PluginView::start):
              (WebCore::PluginView::performRequest):
              (WebCore::PluginView::bindingInstance):
              * plugins/PluginView.h:
              * plugins/gtk/PluginViewGtk.cpp:
              (WebCore::PluginView::paint):
              (WebCore::PluginView::handleKeyboardEvent):
              (WebCore::PluginView::handleMouseEvent):
              (WebCore::PluginView::setNPWindowRect):
              (WebCore::PluginView::stop):
              (WebCore::PluginView::init):
              * plugins/qt/PluginViewQt.cpp:
              (WebCore::PluginView::setNPWindowRect):
              (WebCore::PluginView::stop):
              (WebCore::PluginView::init):
              * plugins/win/PluginViewWin.cpp:
              (WebCore::PluginView::dispatchNPEvent):
              (WebCore::PluginView::handleKeyboardEvent):
              (WebCore::PluginView::handleMouseEvent):
              (WebCore::PluginView::setNPWindowRect):
              (WebCore::PluginView::stop):
              * storage/Database.cpp:
              (WebCore::Database::Database):
              * xml/XMLHttpRequest.cpp:
              (WebCore::XMLHttpRequest::responseText):
              (WebCore::XMLHttpRequest::loadRequestAsynchronously):
              (WebCore::XMLHttpRequest::clearResponse):
              (WebCore::XMLHttpRequest::dropProtection):
              (WebCore::XMLHttpRequest::didFinishLoading):
              (WebCore::XMLHttpRequest::didReceiveData):
              * xml/XMLHttpRequest.h:
      
              WebKit/gtk:
      
              * webkit/webkitprivate.cpp:
              (webkit_init):
      
              WebKit/mac:
      
              * Misc/WebCoreStatistics.mm:
              * Plugins/WebBaseNetscapePluginStream.mm:
              (-[WebBaseNetscapePluginStream wantsAllStreams]):
              * Plugins/WebBaseNetscapePluginView.mm:
              (-[WebBaseNetscapePluginView sendEvent:isDrawRect:]):
              (-[WebBaseNetscapePluginView setWindowIfNecessary]):
              (-[WebBaseNetscapePluginView start]):
              (-[WebBaseNetscapePluginView createPluginScriptableObject]):
              (-[WebBaseNetscapePluginView evaluateJavaScriptPluginRequest:]):
              (-[WebBaseNetscapePluginView webFrame:didFinishLoadWithReason:]):
              (-[WebBaseNetscapePluginView loadPluginRequest:]):
              (-[WebBaseNetscapePluginView _printedPluginBitmap]):
              * Plugins/WebPluginController.mm:
              (+[WebPluginController plugInViewWithArguments:fromPluginPackage:]):
              (-[WebPluginController startAllPlugins]):
              (-[WebPluginController stopAllPlugins]):
              (-[WebPluginController addPlugin:]):
              (-[WebPluginController destroyPlugin:]):
              (-[WebPluginController destroyAllPlugins]):
              * WebView/WebFrame.mm:
              * WebView/WebScriptDebugDelegate.mm:
              * WebView/WebScriptDebugger.h:
              * WebView/WebScriptDebugger.mm:
              * WebView/WebView.mm:
              (-[WebViewPrivate init]):
      
              WebKit/qt:
              
              * Api/qwebframe.cpp:
              (QWebFrame::addToJavaScriptWindowObject):
              (QWebFrame::evaluateJavaScript):
      
              WebKit/win:
      
              * WebCoreStatistics.cpp:
              * WebJavaScriptCollector.cpp:
              * WebScriptCallFrame.cpp:
              (WebScriptCallFrame::jsValueToString):
              * WebScriptCallFrame.h:
              (WebScriptCallFrame::state):
              * WebView.cpp:
              (WebView::WebView):
              (WebView::stringByEvaluatingJavaScriptFromString):
      
              WebKit/wx:
      
              * WebFrame.cpp:
              (wxWebFrame::RunScript):
      
      
      git-svn-id: http://svn.webkit.org/repository/webkit/trunk@36263 268f45cc-cd09-0410-ab3c-d52691b4dbfc
      3f782f6a
  25. 01 Sep, 2008 1 commit
    • weinig@apple.com's avatar
      JavaScriptCore: · 3412bb43
      weinig@apple.com authored
      2008-09-01  Geoffrey Garen  <ggaren@apple.com>
      
              Reviewed by Darin Adler.
      
              First cut at inline caching for access to vanilla JavaScript properties.
              
              SunSpider says 4% faster. Tests heavy on dictionary-like access have
              regressed a bit -- we have a lot of room to improve in this area,
              but this patch is over-ripe as-is.
              
              JSCells now have a StructureID that uniquely identifies their layout,
              and holds their prototype.
              
              JSValue::put takes a PropertySlot& argument, so it can fill in details
              about where it put a value, for the sake of caching.
      
              * VM/CodeGenerator.cpp:
              (KJS::CodeGenerator::CodeGenerator): Avoid calling removeDirect if we
              can, since it disables inline caching in the global object. This can
              probably improve in the future.
      
              * kjs/JSGlobalObject.cpp: Nixed reset(), since it complicates caching, and
              wasn't really necessary.
      
              * kjs/JSObject.cpp: Tweaked getter / setter behavior not to rely on the
              IsGetterSetter flag, since the flag was buggy. This is necessary in order
              to avoid accidentally accessing a getter / setter as a normal property.
              
              Also changed getter / setter creation to honor ReadOnly, matching Mozilla.
              
              * kjs/PropertyMap.cpp: Nixed clear(), since it complicates caching and
              isn't necessary.
      
              * kjs/Shell.cpp: Moved SamplingTool dumping outside the loop. This allows
              you to aggregate sampling of multiple files (or the same file repeatedly),
              which helped me track down regressions.
      
              * kjs/ustring.h: Moved IdentifierRepHash here to share it.
      
      WebCore:
      
      2008-09-01  Geoffrey Garen  <ggaren@apple.com>
      
              Reviewed by Darin Adler.
      
              First cut at inline caching for access to vanilla JavaScript properties.
      
              Updated for JavaScriptCore changes. Mostly mechanical addition of StructureIDs
              to WebCore classes, and PutPropertySlot& arguments to put functions.
      
              (WebCore::JSCSSStyleDeclaration::customPut): Be sure to play nice with
              inline caching for global properties, so global assignment can be optimized.
      
              * ForwardingHeaders/kjs/StructureID.h: Added.
              * bindings/js/JSDOMBinding.h:
              (WebCore::DOMObject::DOMObject):
              * bindings/js/JSDOMWindowBase.cpp:
              (WebCore::JSDOMWindowBase::put):
              * bindings/js/JSDOMWindowBase.h:
              * bindings/js/JSDOMWindowCustom.h:
              (WebCore::JSDOMWindow::customPut):
              * bindings/js/JSDOMWindowShell.cpp:
              (WebCore::JSDOMWindowShell::JSDOMWindowShell):
              (WebCore::JSDOMWindowShell::put):
              * bindings/js/JSDOMWindowShell.h:
              * bindings/js/JSEventTargetBase.h:
              (WebCore::JSEventTargetBase::put):
              * bindings/js/JSEventTargetNode.h:
              (WebCore::JSEventTargetNode::put):
              * bindings/js/JSHTMLAppletElementCustom.cpp:
              (WebCore::JSHTMLAppletElement::customPut):
              * bindings/js/JSHTMLEmbedElementCustom.cpp:
              (WebCore::JSHTMLEmbedElement::customPut):
              * bindings/js/JSHTMLInputElementBase.cpp:
              (WebCore::JSHTMLInputElementBase::put):
              * bindings/js/JSHTMLInputElementBase.h:
              * bindings/js/JSHTMLObjectElementCustom.cpp:
              (WebCore::JSHTMLObjectElement::customPut):
              * bindings/js/JSHistoryCustom.cpp:
              (WebCore::JSHistory::customPut):
              * bindings/js/JSInspectedObjectWrapper.cpp:
              (WebCore::JSInspectedObjectWrapper::wrap):
              (WebCore::JSInspectedObjectWrapper::JSInspectedObjectWrapper):
              * bindings/js/JSInspectedObjectWrapper.h:
              * bindings/js/JSInspectorCallbackWrapper.cpp:
              (WebCore::JSInspectorCallbackWrapper::wrap):
              (WebCore::JSInspectorCallbackWrapper::JSInspectorCallbackWrapper):
              * bindings/js/JSInspectorCallbackWrapper.h:
              * bindings/js/JSLocationCustom.cpp:
              (WebCore::JSLocation::customPut):
              * bindings/js/JSPluginElementFunctions.cpp:
              (WebCore::runtimeObjectCustomPut):
              * bindings/js/JSPluginElementFunctions.h:
              * bindings/js/JSQuarantinedObjectWrapper.cpp:
              (WebCore::JSQuarantinedObjectWrapper::JSQuarantinedObjectWrapper):
              (WebCore::JSQuarantinedObjectWrapper::put):
              * bindings/js/JSQuarantinedObjectWrapper.h:
              * bindings/js/JSStorageCustom.cpp:
              (WebCore::JSStorage::customPut):
              * bindings/objc/WebScriptObject.mm:
              (-[WebScriptObject setValue:forKey:]):
              * bindings/scripts/CodeGeneratorJS.pm:
              * bridge/NP_jsobject.cpp:
              (_NPN_SetProperty):
              * bridge/jni/jni_jsobject.mm:
              (JavaJSObject::setMember):
              * bridge/objc/objc_class.mm:
              (KJS::Bindings::ObjcClass::fallbackObject):
              * bridge/objc/objc_runtime.h:
              * bridge/objc/objc_runtime.mm:
              (ObjcFallbackObjectImp::ObjcFallbackObjectImp):
              (ObjcFallbackObjectImp::put):
              * bridge/runtime.cpp:
              (KJS::Bindings::Instance::createRuntimeObject):
              * bridge/runtime_array.cpp:
              (RuntimeArray::put):
              * bridge/runtime_array.h:
              * bridge/runtime_object.cpp:
              (RuntimeObjectImp::RuntimeObjectImp):
              (RuntimeObjectImp::put):
              * bridge/runtime_object.h:
      
      LayoutTests:
      
      2008-09-01  Geoffrey Garen  <ggaren@apple.com>
      
              Reviewed by Darin Adler.
      
              First cut at inline caching for access to vanilla JavaScript properties.
              
              Tests for things I broke along the way.
              
              * fast/dom/getter-on-window-object2-expected.txt:
              * fast/js/pic: Added.
              * fast/js/pic/cached-deleted-properties-expected.txt: Added.
              * fast/js/pic/cached-deleted-properties.html: Added.
              * fast/js/pic/cached-getter-dictionary-and-proto-expected.txt: Added.
              * fast/js/pic/cached-getter-dictionary-and-proto.html: Added.
              * fast/js/pic/cached-getter-setter-expected.txt: Added.
              * fast/js/pic/cached-getter-setter.html: Added.
              * fast/js/pic/cached-prototype-setter-expected.txt: Added.
              * fast/js/pic/cached-prototype-setter.html: Added.
              * fast/js/pic/cached-single-entry-transition-expected.txt: Added.
              * fast/js/pic/cached-single-entry-transition.html: Added.
              * fast/js/pic/get-empty-string-expected.txt: Added.
              * fast/js/pic/get-empty-string.html: Added.
              * fast/js/pic/get-set-proxy-object-expected.txt: Added.
              * fast/js/pic/get-set-proxy-object.html: Added.
              * fast/js/pic/rehash-poisons-structure-expected.txt: Added.
              * fast/js/pic/rehash-poisons-structure.html: Added.
      
      
      
      git-svn-id: http://svn.webkit.org/repository/webkit/trunk@36016 268f45cc-cd09-0410-ab3c-d52691b4dbfc
      3412bb43
  26. 04 Jun, 2008 1 commit
  27. 21 May, 2008 1 commit
  28. 22 Feb, 2008 1 commit
    • oliver@apple.com's avatar
      Bug 17486: Support HTML5 Canvas.getImageData API · ae996a97
      oliver@apple.com authored
      Support Canvas.getImageData and Canvas.createImageData
      
      Reviewed by Sam W.
      
      This patch adds support for all the pixel reading portions
      of the HTML5 Canvas spec.  There are two new types ImageData
      and CanvasPixelArray which are used to provide the HTML5
      ImageData object, and the required semantics for assignment
      to the ImageData data array.
      
      We only implement the CG version of ImageBuffer::getImageData,
      but the logic is null safe, so this will not introduce any
      crashes into other platforms, unfortunately it will result in
      JS Object detection "lying" on non-CG platforms.
      
      
      git-svn-id: http://svn.webkit.org/repository/webkit/trunk@30506 268f45cc-cd09-0410-ab3c-d52691b4dbfc
      ae996a97
  29. 12 Feb, 2008 1 commit
  30. 15 Nov, 2007 1 commit
    • beidson@apple.com's avatar
      WebCore: · 705db6e6
      beidson@apple.com authored
              Reviewed by John and Sam
      
              Stubbing out everything required for a WebKit API for databases
      
              Biggest change in WebCore is that we passed around SecurityOriginData as the representation
              of a SecurityOrigin, instead of a String or a SecurityOrigin itself (which is an opaque object
              that has a different purpose besides just hanging on to the data)
      
              * WebCore.base.exp:
              * WebCore.xcodeproj/project.pbxproj:
      
              * platform/SecurityOrigin.cpp:
              * platform/SecurityOrigin.h:
              * platform/SecurityOriginData.h: Added.  Simple object to encapsulate the 3
                pieces of data in the SecurityOrigin tuple
              (WebCore::SecurityOriginData::SecurityOriginData):
              (WebCore::SecurityOriginData::protocol):
              (WebCore::SecurityOriginData::host):
              (WebCore::SecurityOriginData::port):
              (WebCore::SecurityOriginData::toString): Simple concatenation of the 3 components,
                colon separated
      
              * storage/Database.cpp:
              (WebCore::Database::Database): Use SecurityOriginData instead
      
              * storage/DatabaseTracker.cpp:
              (WebCore::DatabaseTracker::fullPathForDatabase):
              (WebCore::DatabaseTracker::databaseNamesForOrigin):
              (WebCore::DatabaseTracker::deleteDatabasesWithOrigin):
              (WebCore::DatabaseTracker::deleteDatabase):
              * storage/DatabaseTracker.h:
      
              * storage/DatabaseTrackerClient.h: Added.  For dispatching notifications up to WebKit
              (WebCore::DatabaseTrackerClient::~DatabaseTrackerClient):
      
      WebKit:
      
              Reviewed by John
      
              Stubbing out everything required for a WebKit API for databases
      
              * WebKit.xcodeproj/project.pbxproj:
      
      WebKit/mac:
      
              Reviewed by John
      
              Stubbing out everything required for a WebKit API for databases
      
              These interfaces seem to provide everything we need for UI and management at the browser level
      
              * Misc/WebDatabaseManager.h: Removed.
              * Misc/WebDatabaseManager.mm: Removed.
              * Misc/WebDatabaseManagerPrivate.h: Removed.
      
              * Misc/WebSecurityOrigin.mm: Added. Object that acts as a container for the "SecurityOrigin tuple"
                (protocol, domain, and port)
              (-[WebSecurityOriginPrivate initWithProtocol:domain:port:]):
              (-[WebSecurityOriginPrivate dealloc]):
              (-[WebSecurityOrigin initWithProtocol:domain:]):
              (-[WebSecurityOrigin initWithProtocol:domain:port:]):
              (-[WebSecurityOrigin protocol]):
              (-[WebSecurityOrigin domain]):
              (-[WebSecurityOrigin port]):
              (-[WebSecurityOrigin dealloc]):
              (-[WebSecurityOrigin _initWithWebCoreSecurityOriginData:WebCore::]):
              * Misc/WebSecurityOriginInternal.h: Added.
              * Misc/WebSecurityOriginPrivate.h: Added.
      
              * Storage/WebDatabaseManager.mm: Added.
              (+[WebDatabaseManager sharedWebDatabaseManager]):
              (-[WebDatabaseManager origins]):  Get a list of all origins currently tracked
              (-[WebDatabaseManager detailsForOrigin:]): Get the current usage and current quota for the given origin
              (-[WebDatabaseManager databasesWithOrigin:]): Get all databases for a certain origin
              (-[WebDatabaseManager detailsForDatabase:withOrigin:]): Get all details about a specific database
              (-[WebDatabaseManager setQuota:forOrigin:]): Change origin-wide quota
              (-[WebDatabaseManager deleteAllDatabases]):
              (-[WebDatabaseManager deleteAllDatabasesWithOrigin:]):
              (-[WebDatabaseManager deleteDatabase:withOrigin:]):
              * Storage/WebDatabaseManagerPrivate.h: Added.
              * Storage/WebDatabaseManagerInternal.h: Added.
              (WebKitInitializeDatabasesIfNecessary): One-time initialization of database-related things
      
              * Storage/WebDatabaseTrackerClient.h: Added. Stubbed out client for notifications
              * Storage/WebDatabaseTrackerClient.mm: Added.
              (WebDatabaseTrackerClient::sharedWebDatabaseTrackerClient):
              (WebDatabaseTrackerClient::WebDatabaseTrackerClient):
              (WebDatabaseTrackerClient::~WebDatabaseTrackerClient):
              (WebDatabaseTrackerClient::dispatchDidModifyOrigin):
              (WebDatabaseTrackerClient::dispatchDidModifyDatabase):
      
              * WebView/WebView.mm:
              (-[WebView _commonInitializationWithFrameName:groupName:]): Do one-time initialization of
                Database-related things here
      
      
      git-svn-id: http://svn.webkit.org/repository/webkit/trunk@27821 268f45cc-cd09-0410-ab3c-d52691b4dbfc
      705db6e6
  31. 06 Nov, 2007 1 commit
  32. 19 Oct, 2007 1 commit
    • beidson's avatar
      JavaScriptCore: · e5def340
      beidson authored
      2007-10-19  Brady Eidson  <beidson@apple.com>
      
              Reviewed by Sam
      
              Queue -> Deque! and small style tweaks
      
              * JavaScriptCore.vcproj/WTF/WTF.vcproj:
              * JavaScriptCore/JavaScriptCore.xcodeproj/project.pbxproj
              * wtf/Deque.h: Added.
              (WTF::DequeNode::DequeNode):
              (WTF::Deque::Deque):
              (WTF::Deque::~Deque):
              (WTF::Deque::size):
              (WTF::Deque::isEmpty):
              (WTF::Deque::append):
              (WTF::Deque::prepend):
              (WTF::Deque::first):
              (WTF::Deque::last):
              (WTF::Deque::removeFirst):
              (WTF::Deque::clear):
              * wtf/Queue.h: Removed.
      
      2007-10-19  Brady Eidson <beidson@apple.com>
      
              Reviewed by Oliver
      
              Added a simple LinkedList based Queue to wtf
              We can make a better, more sophisticated an efficient one later, but have
              needed one for some time, now!
      
              * JavaScriptCore.xcodeproj/project.pbxproj:
              * wtf/Queue.h: Added.
              (WTF::QueueNode::QueueNode):
              (WTF::Queue::Queue):
              (WTF::Queue::~Queue):
              (WTF::Queue::size):
              (WTF::Queue::isEmpty):
              (WTF::Queue::append):
              (WTF::Queue::prepend):
              (WTF::Queue::first):
              (WTF::Queue::last):
              (WTF::Queue::removeFirst):
              (WTF::Queue::clear):
      
      WebCore:
      2007-10-19  Brady Eidson  <beidson@apple.com>
              Reviewed by Anders
      
              Windows specific changes, as well as renaming Queue -> Deque
      
              * ForwardingHeaders/wtf/Deque.h: Added.
              * ForwardingHeaders/wtf/Queue.h: Removed.
              * platform/win/FileSystemWin.cpp:
              (WebCore::fileSize):
              (WebCore::fileExists):
              (WebCore::deleteFile):
              (WebCore::pathByAppendingComponent):
              (WebCore::fileSystemRepresentation):
              (WebCore::makeAllDirectories):
              (WebCore::homeDirectoryPath):
              * storage/Database.h:
              * storage/DatabaseThread.cpp:
              (WebCore::DatabaseThread::documentGoingAway):
              (WebCore::DatabaseThread::databaseGoingAway):
              (WebCore::DatabaseThread::dispatchNextTaskIdentifier):
              (WebCore::DatabaseThread::scheduleTask):
              (WebCore::DatabaseThread::scheduleImmediateTask):
              * storage/DatabaseThread.h:
      
      2007-10-19  Brady Eidson <beidson@apple.com>
      
              Reviewed by Tim and Anders
      
              Preliminary support for HTML5 local database storage (http://www.whatwg.org/specs/web-apps/current-work/)
      
              The specification is still in flux but the fundamentals are pretty solid and we can start using and testing
              this implementation even while filing bugs to track changes in the spec as it becomes more final
      
              There are some implementation details in this patch that seem unused or useless, but they remain in place
              while the spec is in flux and might go one way or another.
      
              * platform/Logging.cpp: Add StorageAPI logging channel
              * platform/Logging.h:
      
              * storage/Database.cpp: Added.
              (WebCore::Database::databaseInfoTableName):
              (WebCore::databaseVersionKey):
              (WebCore::Database::openDatabase): C++ version of the window.openDatabase() javascript API
              (WebCore::Database::Database):
              (WebCore::Database::~Database):
              (WebCore::Database::openAndVerifyVersion):
              (WebCore::retrieveTextResultFromDatabase):
              (WebCore::Database::getVersionFromDatabase):
              (WebCore::setTextValueInDatabase):
              (WebCore::Database::setVersionInDatabase):
              (WebCore::Database::databaseThreadGoingAway): May be removed in the future
              (WebCore::Database::disableAuthorizer): For internal (WebInspector) use to get around the authorizer's restrictions
              (WebCore::Database::enableAuthorizer):
              (WebCore::Database::guidForOriginAndName): Candidate for refactoring and/or moving to the database tracker.
                The GUID for each database identifier is currently for tracking the database version, but might be rescoped in the future
              (WebCore::Database::resetAuthorizer):
              (WebCore::Database::performPolicyChecks): Currently, the only post-executeSql policy check planned is the origin size usage
              (WebCore::Database::scheduleDatabaseCallback):
              (WebCore::Database::performOpenAndVerify):
              (WebCore::Database::performChangeVersion):
              (WebCore::Database::performExecuteSql):
              (WebCore::Database::performCloseTransaction):
              (WebCore::Database::performGetTableNames):
              (WebCore::Database::version): C++ version of the javascript API
              (WebCore::Database::changeVersion): Ditto
              (WebCore::Database::executeSql): Ditto
              (WebCore::Database::closeTransaction): Ditto
              (WebCore::Database::tableNames): For internal (WebInspector) use
              (WebCore::Database::deliverAllPendingCallbacks):
              (WebCore::Database::deliverPendingCallbacks):
              * storage/Database.h: Added.
              (WebCore::Database::databaseDebugName): For debug logging purposes
              * storage/Database.idl: Added.
      
              * storage/DatabaseAuthorizer.cpp: Added.
                The DatabaseAuthorizer is used to both prevent the script from doing "illegal" things in sql as well as
                tracking when effects certain sql statements might have (such as increasing the size of the database)
              (WebCore::DatabaseAuthorizer::DatabaseAuthorizer):
              (WebCore::DatabaseAuthorizer::reset):
              (WebCore::DatabaseAuthorizer::createTable):
              (WebCore::DatabaseAuthorizer::createTempTable):
              (WebCore::DatabaseAuthorizer::dropTable):
              (WebCore::DatabaseAuthorizer::dropTempTable):
              (WebCore::DatabaseAuthorizer::allowAlterTable):
              (WebCore::DatabaseAuthorizer::createIndex):
              (WebCore::DatabaseAuthorizer::createTempIndex):
              (WebCore::DatabaseAuthorizer::dropIndex):
              (WebCore::DatabaseAuthorizer::dropTempIndex):
              (WebCore::DatabaseAuthorizer::createTrigger):
              (WebCore::DatabaseAuthorizer::createTempTrigger):
              (WebCore::DatabaseAuthorizer::dropTrigger):
              (WebCore::DatabaseAuthorizer::dropTempTrigger):
              (WebCore::DatabaseAuthorizer::createVTable):
              (WebCore::DatabaseAuthorizer::dropVTable):
              (WebCore::DatabaseAuthorizer::allowDelete):
              (WebCore::DatabaseAuthorizer::allowInsert):
              (WebCore::DatabaseAuthorizer::allowUpdate):
              (WebCore::DatabaseAuthorizer::allowRead):
              (WebCore::DatabaseAuthorizer::allowAnalyze):
              (WebCore::DatabaseAuthorizer::allowPragma):
              (WebCore::DatabaseAuthorizer::allowAttach):
              (WebCore::DatabaseAuthorizer::allowDetach):
              (WebCore::DatabaseAuthorizer::allowFunction):
              (WebCore::DatabaseAuthorizer::disable):
              (WebCore::DatabaseAuthorizer::enable):
              (WebCore::DatabaseAuthorizer::denyBasedOnTableName): Don't allow access to the __WebKit meta info table as
                it should be invisible to scripts
              * storage/DatabaseAuthorizer.h: Added.
              (WebCore::DatabaseAuthorizer::lastActionWasInsert):
              (WebCore::DatabaseAuthorizer::lastActionIncreasedSize):
      
              * storage/DatabaseCallback.cpp: Added.
                Generic item to queue up for callbacks on the main thread for database activities that take place on
                a secondary thread
              (WebCore::DatabaseChangeVersionCallback::DatabaseChangeVersionCallback):
              (WebCore::DatabaseChangeVersionCallback::performCallback):
              (WebCore::DatabaseExecuteSqlCallback::DatabaseExecuteSqlCallback):
              (WebCore::DatabaseExecuteSqlCallback::performCallback):
              * storage/DatabaseCallback.h: Added.
              (WebCore::DatabaseCallback::~DatabaseCallback):
              (WebCore::DatabaseChangeVersionCallback::~DatabaseChangeVersionCallback):
              (WebCore::DatabaseExecuteSqlCallback::~DatabaseExecuteSqlCallback):
      
              * storage/DatabaseTask.h: Added.
                Generic work-item to be queued up on the background database thread
              (WebCore::DatabaseTask::isComplete):
              (WebCore::DatabaseOpenTask::exceptionCode):
              (WebCore::DatabaseOpenTask::openSuccessful):
              (WebCore::DatabaseTableNamesTask::tableNames):
              * storage/DatabaseTask.cpp: Added.
              (WebCore::DatabaseTask::DatabaseTask):
              (WebCore::DatabaseTask::~DatabaseTask):
              (WebCore::DatabaseTask::performTask):
              (WebCore::DatabaseTask::lockForSynchronousScheduling): Used when the main thread needs this task accomplished
                synchronously
              (WebCore::DatabaseTask::waitForSynchronousCompletion):
      
              (WebCore::DatabaseOpenTask::DatabaseOpenTask):
              (WebCore::DatabaseOpenTask::doPerformTask):
      
              (WebCore::DatabaseExecuteSqlTask::DatabaseExecuteSqlTask):
              (WebCore::DatabaseExecuteSqlTask::doPerformTask):
      
              (WebCore::DatabaseChangeVersionTask::DatabaseChangeVersionTask):
              (WebCore::DatabaseChangeVersionTask::doPerformTask):
      
              (WebCore::DatabaseTableNamesTask::DatabaseTableNamesTask):
              (WebCore::DatabaseTableNamesTask::doPerformTask):
      
              * storage/DatabaseThread.cpp: Added.
                The current design is that each Document will have its own DatabaseThread.  This makes scripts on each
                individual document more response at the cost of adding more threads and potentially creating concurrency
                issues when the same database is open twice from two different documents
              (WebCore::DatabaseThread::DatabaseThread):
              (WebCore::DatabaseThread::~DatabaseThread):
              (WebCore::DatabaseThread::start):
              (WebCore::DatabaseThread::documentGoingAway): Called to shut the thread down when the document is destroyed
              (WebCore::DatabaseThread::databaseGoingAway): Remove all pending tasks for this database
              (WebCore::DatabaseThread::databaseThreadStart):
              (WebCore::DatabaseThread::databaseThread):
              (WebCore::DatabaseThread::dispatchNextTaskIdentifier):
              (WebCore::DatabaseThread::scheduleTask):
              (WebCore::DatabaseThread::scheduleImmediateTask): Schedule a task that gets to "cut to the front of the line" when
                the main thread requires a task be performed synchronously
              (WebCore::DatabaseThread::wakeWorkThread):
              * storage/DatabaseThread.h: Added.
      
              * storage/DatabaseTracker.cpp: Added.
                The DatabaseTracker is the master management of all databases.  It will keep track of the filename for a given
                unique database, keep track of the total disk usage per-origin, and policys per database/origin
              (WebCore::DatabaseTracker::setDatabasePath):
              (WebCore::DatabaseTracker::databasePath):
              (WebCore::DatabaseTracker::tracker):
              (WebCore::DatabaseTracker::DatabaseTracker):
              (WebCore::DatabaseTracker::fullPathForDatabase):
              (WebCore::DatabaseTracker::populateOrigins):
              (WebCore::DatabaseTracker::origins):
              (WebCore::DatabaseTracker::databaseNamesForOrigin):
              (WebCore::DatabaseTracker::addDatabase):
              (WebCore::DatabaseTracker::deleteAllDatabases):
              (WebCore::DatabaseTracker::deleteAllDatabasesForOrigin):
              * storage/DatabaseTracker.h: Added.
      
              * storage/SQLCallback.h: Added. C++ version of the javascript executeSql() callback
              (WebCore::SQLCallback::~SQLCallback):
              * storage/SQLCallback.idl: Added.
      
              * storage/SQLResultSet.cpp: Added. C++ version of the javascript SQLResultSet object
              (WebCore::SQLResultSet::SQLResultSet):
              (WebCore::SQLResultSet::insertId):
              (WebCore::SQLResultSet::rowsAffected):
              (WebCore::SQLResultSet::errorCode):
              (WebCore::SQLResultSet::error):
              (WebCore::SQLResultSet::rows):
              (WebCore::SQLResultSet::setInsertId):
              (WebCore::SQLResultSet::setRowsAffected):
              (WebCore::SQLResultSet::setErrorCode):
              (WebCore::SQLResultSet::setErrorMessage):
              * storage/SQLResultSet.h: Added.
              * storage/SQLResultSet.idl: Added.
      
              * storage/SQLResultSetRowList.cpp: Added. C++ version of the javascript SQLResultSetRowList object
              (WebCore::SQLResultSetRowList::length):
              * storage/SQLResultSetRowList.h: Added.
              (WebCore::SQLResultSetRowList::columnNames):
              (WebCore::SQLResultSetRowList::values):
              (WebCore::SQLResultSetRowList::addColumn):
              (WebCore::SQLResultSetRowList::addResult):
              * storage/SQLResultSetRowList.idl: Added.
      
              * storage/VersionChangeCallback.h: Added. C++ version of the javascript changeVersion() callback
              (WebCore::VersionChangeCallback::~VersionChangeCallback):
              * storage/VersionChangeCallback.idl: Added.
      
      2007-10-19  Brady Eidson <beidson@apple.com>
      
              Reviewed by Oliver + Same
      
              Forwarding header for the new wtf/Queue.h
      
              * ForwardingHeaders/wtf/Queue.h: Added.
      
      2007-10-19  Anders Carlsson <beidson@apple.com>
      
             	Reviewed by Sam Weinig
      
             	Most of the Javascript binding support for the Storage API
      
             	* bindings/js/JSCustomSQLCallback.cpp: Added.
             	(WebCore::JSCustomSQLCallback::JSCustomSQLCallback):
             	(WebCore::JSCustomSQLCallback::handleEvent):
             	* bindings/js/JSCustomSQLCallback.h: Added.
      		Add JSCustomSQLCallback which is an SQLCallback implementation that dispatches
      		handleEvent to a JS function or a JS object with a handleEvent function.
      
             	* bindings/js/JSCustomVersionChangeCallback.cpp: Added.
             	(WebCore::JSCustomVersionChangeCallback::JSCustomVersionChangeCallback):
             	(WebCore::JSCustomVersionChangeCallback::handleEvent):
             	* bindings/js/JSCustomVersionChangeCallback.h: Added.
      		Add JSCustomSQLCallback which is an SQLCallback implementation that dispatches
      		handleEvent to a JS function or a JS object with a handleEvent function.
      
             	* bindings/js/JSDatabaseCustom.cpp: Added.
             	(WebCore::JSDatabase::executeSql):
      		Custom implementation of executeSql that takes an array of parameters.
      
             	(WebCore::JSDatabase::changeVersion):
      		Custom implementation of changeVersion.
      
             	* bindings/js/JSSQLResultSetRowListCustom.cpp: Added.
             	(WebCore::JSSQLResultSetRowList::item):
      		Custom method that returns a JS object that corresponds to a given row in the database.
      
             	* bindings/scripts/CodeGeneratorJS.pm:
      
             	* page/DOMWindow.cpp:
             	(WebCore::DOMWindow::openDatabase):
             	* page/DOMWindow.h:
             	* page/DOMWindow.idl:
      		Add openDatabase implementation.
      
      2007-10-19  Brady Eidson <beidson@apple.com>
      
              Reviewed by Oliver
      
              Added tons of utility to the FileSystem abstractions, including moving
              some stuff over from IconDatabase
      
              * platform/FileSystem.h:
      
              * platform/cf/FileSystemCF.cpp: Added.
              (WebCore::fileSystemRepresentation):
      
              * platform/mac/FileSystemMac.mm:
      
              * platform/posix/FileSystemPOSIX.cpp: Added.
              (WebCore::fileExists):
              (WebCore::deleteFile):
              (WebCore::fileSize):
              (WebCore::pathByAppendingComponent):
              (WebCore::makeAllDirectories):
      
      2007-10-19  Timothy Hatcher  <timothy@apple.com>
      
              Reviewed by Adam Roben
      
              Preliminary Web Inspector support for the Storage API
              (This patch does not include the support artwork)
      
              * page/InspectorController.cpp:
              (WebCore::InspectorDatabaseResource::InspectorDatabaseResource):
              (WebCore::InspectorDatabaseResource::setScriptObject):
              (WebCore::databaseTableNames): Return the table names for a Database object.
              (WebCore::InspectorController::setWindowVisible):
              (WebCore::InspectorController::windowScriptObjectAvailable):
              (WebCore::InspectorController::populateScriptResources):
              (WebCore::InspectorController::addDatabaseScriptResource): Add the script object for the database.
              (WebCore::InspectorController::removeDatabaseScriptResource): Remove the script object for the database.
              (WebCore::InspectorController::clearDatabaseScriptResources): Remove all the database resources.
              (WebCore::InspectorController::didCommitLoad): Call clearDatabaseScriptResources().
              (WebCore::InspectorController::didOpenDatabase): Make a new InspectorDatabaseResource and add it to m_databaseResources.
              * page/InspectorController.h:
              * page/inspector/Database.js: Added.
              * page/inspector/DatabasePanel.js: Added.
              * page/inspector/ResourceCategory.js: Make resource categories assume less about the resource.
              * page/inspector/inspector.css: Add styles for the database panel.
              * page/inspector/inspector.html: Include DatabasePanel.js
              * page/inspector/inspector.js: Support for adding and removing Database resources.
      
      2007-10-19  Brady Eidson <beidson@apple.com>
      
              Reviewed by Tim Hatcher
      
              Added support for Chrome prompts required by the Storage API
      
              * page/Chrome.cpp:
              (WebCore::Chrome::runDatabaseSizeLimitPrompt):
              * page/Chrome.h:
              * page/ChromeClient.h:
              * platform/graphics/svg/SVGImageEmptyClients.h:
      
      2007-10-19  Brady Eidson <beidson@apple.com>
      
              Contributions and Review by Anders
      
              Various SQLite tweaks in preparation for the storage API
      
              * loader/icon/SQLDatabase.cpp:
              (WebCore::SQLDatabase::~SQLDatabase):
              (WebCore::SQLDatabase::authorizerFunction): Static callback from sqlite for authorizer functions
              (WebCore::SQLDatabase::setAuthorizer):
              (WebCore::SQLDatabase::lock):
              (WebCore::SQLDatabase::unlock):
              * loader/icon/SQLDatabase.h:
      
              * loader/icon/SQLStatement.cpp:
              (WebCore::SQLStatement::prepare): Switch to prepare16_v2
              (WebCore::SQLStatement::bindDouble): Added
              (WebCore::SQLStatement::bindValue): Bind a wrapped SQLValue object (described later)
              (WebCore::SQLStatement::bindParameterCount): Accessor to the sqlite3 API for validating statements
              * loader/icon/SQLStatement.h:
              (WebCore::SQLStatement::isPrepared):
      
              * platform/sql/SQLAuthorizer.cpp: Added.  Fully virtual interface to implement your own SQLite authorizer
              * platform/sql/SQLAuthorizer.h: Added.
              (WebCore::SQLAuthorizer::~SQLAuthorizer):
              (WebCore::SQLAuthorizer::createTable):
              (WebCore::SQLAuthorizer::createTempTable):
              (WebCore::SQLAuthorizer::dropTable):
              (WebCore::SQLAuthorizer::dropTempTable):
              (WebCore::SQLAuthorizer::allowAlterTable):
              (WebCore::SQLAuthorizer::createIndex):
              (WebCore::SQLAuthorizer::createTempIndex):
              (WebCore::SQLAuthorizer::dropIndex):
              (WebCore::SQLAuthorizer::dropTempIndex):
              (WebCore::SQLAuthorizer::createTrigger):
              (WebCore::SQLAuthorizer::createTempTrigger):
              (WebCore::SQLAuthorizer::dropTrigger):
              (WebCore::SQLAuthorizer::dropTempTrigger):
              (WebCore::SQLAuthorizer::createView):
              (WebCore::SQLAuthorizer::createTempView):
              (WebCore::SQLAuthorizer::dropView):
              (WebCore::SQLAuthorizer::dropTempView):
              (WebCore::SQLAuthorizer::createVTable):
              (WebCore::SQLAuthorizer::dropVTable):
              (WebCore::SQLAuthorizer::allowDelete):
              (WebCore::SQLAuthorizer::allowInsert):
              (WebCore::SQLAuthorizer::allowUpdate):
              (WebCore::SQLAuthorizer::allowTransaction):
              (WebCore::SQLAuthorizer::allowSelect):
              (WebCore::SQLAuthorizer::allowRead):
              (WebCore::SQLAuthorizer::allowAttach):
              (WebCore::SQLAuthorizer::allowDetach):
              (WebCore::SQLAuthorizer::allowReindex):
              (WebCore::SQLAuthorizer::allowAnalyze):
              (WebCore::SQLAuthorizer::allowFunction):
      
              * platform/sql/SQLValue.cpp: Added.  Contains a value for a SQLite database that can be one of a few types.
                For now, just a String or a double
              (WebCore::SQLValue::SQLValue):
              (WebCore::SQLValue::string):
              (WebCore::SQLValue::number):
              * platform/sql/SQLValue.h: Added.
              (WebCore::SQLValue::):
              (WebCore::SQLValue::SQLValue):
              (WebCore::SQLValue::type):
      
      2007-10-19  Brady Eidson <beidson@apple.com>
      
              Reviewed by Maciej
      
              Changed IconDatabase over to use new FileSystem apis
      
              * loader/icon/IconDatabase.cpp:
              (WebCore::IconDatabase::open):
      
      WebKit:
      
              Reviewed by Tim Hatcher
      
              Added support for Chrome prompts required by the Storage API
              Added support API for future managing of databases from the WebKit client
              Added preference and initialization for the databases path
      
              * Misc/WebDatabaseManager.h: Added.  WebDatabaseManager is how a WebKit application can list and
                remove the current available databases
              * Misc/WebDatabaseManager.mm: Added.
              (+[WebDatabaseManager origins]):
              (+[WebDatabaseManager databasesWithOrigin:]):
              (+[WebDatabaseManager deleteAllDatabases]):
              (+[WebDatabaseManager deleteAllDatabasesWithOrigin:]):
              (+[WebDatabaseManager deleteDatabaseWithOrigin:named:]):
              (WebKitSetWebDatabasesPathIfNecessary): Setup the database path
              * Misc/WebDatabaseManagerPrivate.h: Added.
      
              * WebCoreSupport/WebChromeClient.h: Support for calling the delegate to run the prompt for
                an origin exceeding its size limit
              * WebCoreSupport/WebChromeClient.mm:
              (WebChromeClient::runDatabaseSizeLimitPrompt):
              * WebKit.xcodeproj/project.pbxproj:
              * WebView/WebUIDelegate.h:
      
              * WebView/WebView.mm:
              (-[WebView _commonInitializationWithFrameName:groupName:]): Setup the database path
              * WebView/WebViewInternal.h:
      
      WebKitSite:
      
              Reviewed by Tim Hatcher
      
              Sample database API usage
      
              * misc/DatabaseExample.html: Added.
      
      WebKit/win:
      
              Reviewed by Anders
      
              Keep windows building with new Chrome additions
      
              * WebChromeClient.cpp:
              * WebChromeClient.h:
      
      
      git-svn-id: http://svn.webkit.org/repository/webkit/trunk@26787 268f45cc-cd09-0410-ab3c-d52691b4dbfc
      e5def340
  33. 16 Jul, 2007 1 commit
    • kmccullo's avatar
      Reviewed by Sam. · c8d72539
      kmccullo authored
              - Modified files to use cross-platform code.
      
              * Drosera/DebuggerDocument.cpp: Added.
              (DebuggerDocument::breakpointEditorHTML):
              (DebuggerDocument::isPaused):
              (DebuggerDocument::pause):
              (DebuggerDocument::resume):
              (DebuggerDocument::stepInto):
              (DebuggerDocument::evaluateScript):
              (DebuggerDocument::currentFunctionStack):
              (DebuggerDocument::localScopeVariableNamesForCallFrame):
              (DebuggerDocument::valueForScopeVariableNamed):
              * Drosera/DebuggerDocument.h: Added.
              (DebuggerDocument::DebuggerDocument):
              * Drosera/config.h: Added.
              * Drosera/mac/DebuggerApplication.mm:
              (-[DebuggerApplication attach:]):
              * Drosera/mac/DebuggerDocument.h: Removed.
              * Drosera/mac/DebuggerDocument.mm: Removed.
              * Drosera/mac/DebuggerDocumentMac.h: Copied from Drosera/mac/DebuggerDocument.h.
              * Drosera/mac/DebuggerDocumentMac.mm: Copied from Drosera/mac/DebuggerDocument.mm.
              (-[DebuggerDocumentMac initWithServerName:]):
              (-[DebuggerDocumentMac dealloc]):
              (-[DebuggerDocumentMac breakpointEditorHTML]):
              (-[DebuggerDocumentMac isPaused]):
              (-[DebuggerDocumentMac pause]):
              (-[DebuggerDocumentMac resume]):
              * Drosera/mac/Drosera.xcodeproj/project.pbxproj:
              * Drosera/win/DebuggerApplication.cpp:
              * Drosera/win/DebuggerObjectCallbacks.cpp:
              (breakpointEditorHTMLCallback):
              (currentFunctionStackCallback):
              (evaluateScript_inCallFrame_Callback):
              (isPausedCallback):
              (localScopeVariableNamesForCallFrame_Callback):
              (pauseCallback):
              (resumeCallback):
              (stepIntoCallback):
              (valueForScopeVariableNamed_inCallFrame_Callback):
              (staticFunctions):
              * Drosera/win/Drosera.cpp:
              * Drosera/win/DroseraPrefix.cpp: Added.
              * Drosera/win/DroseraPrefix.h: Added.
      
      
      
      git-svn-id: http://svn.webkit.org/repository/webkit/trunk@24329 268f45cc-cd09-0410-ab3c-d52691b4dbfc
      c8d72539
  34. 18 Jun, 2007 1 commit
    • weinig's avatar
      WebCore: · 8b5bc0db
      weinig authored
              Reviewed by Beth.
      
              Fix build and update licenses. 
      
              * WebCore.xcodeproj/project.pbxproj:
              * page/BarInfo.cpp:
              * page/BarInfo.h:
              * page/BarInfo.idl:
              * page/Screen.cpp:
              (WebCore::Screen::height):
              (WebCore::Screen::width):
              (WebCore::Screen::colorDepth):
              (WebCore::Screen::pixelDepth):
              (WebCore::Screen::availLeft):
              (WebCore::Screen::availTop):
              (WebCore::Screen::availHeight):
              (WebCore::Screen::availWidth):
              * page/Screen.h:
              * page/Screen.idl:
      
      WebKit:
      
              Reviewed by Beth.
      
              Build fix.
      
              * WebCoreSupport/WebChromeClient.mm:
      
      
      
      git-svn-id: http://svn.webkit.org/repository/webkit/trunk@23579 268f45cc-cd09-0410-ab3c-d52691b4dbfc
      8b5bc0db