1. 26 Aug, 2011 1 commit
    • fpizlo@apple.com's avatar
      The GC does not have a facility for profiling the kinds of objects · d6bcd37d
      fpizlo@apple.com authored
      that occupy the heap
      https://bugs.webkit.org/show_bug.cgi?id=66849
      
      Reviewed by Geoffrey Garen.
      
      Destructor calls and object scans are now optionally counted, per
      vtable. When the heap is destroyed and profiling is enabled, the
      counts are dumped, with care taken to print the names of classes
      (modulo C++ mangling) sorted in descending commonality.
      
      * GNUmakefile.list.am:
      * JavaScriptCore.exp:
      * JavaScriptCore.pro:
      * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
      * JavaScriptCore.xcodeproj/project.pbxproj:
      * heap/Heap.cpp:
      (JSC::Heap::destroy):
      * heap/Heap.h:
      * heap/MarkStack.cpp:
      (JSC::SlotVisitor::visitChildren):
      (JSC::SlotVisitor::drain):
      * heap/MarkStack.h:
      * heap/MarkedBlock.cpp:
      (JSC::MarkedBlock::callDestructor):
      * heap/MarkedBlock.h:
      * heap/VTableSpectrum.cpp: Added.
      (JSC::VTableSpectrum::VTableSpectrum):
      (JSC::VTableSpectrum::~VTableSpectrum):
      (JSC::VTableSpectrum::countVPtr):
      (JSC::VTableSpectrum::count):
      (JSC::VTableAndCount::VTableAndCount):
      (JSC::VTableAndCount::operator<):
      (JSC::VTableSpectrum::dump):
      * heap/VTableSpectrum.h: Added.
      * wtf/Platform.h:
      
      
      git-svn-id: http://svn.webkit.org/repository/webkit/trunk@93918 268f45cc-cd09-0410-ab3c-d52691b4dbfc
      d6bcd37d
  2. 16 Jun, 2011 1 commit
    • ggaren@apple.com's avatar
      2011-06-16 Geoffrey Garen <ggaren@apple.com> · 6e1f8c1b
      ggaren@apple.com authored
              Reviewed by Oliver Hunt.
      
              Introduced SlotVisitor into the project
              https://bugs.webkit.org/show_bug.cgi?id=62820
              
              This resolves a class vs typedef forward declaration issue, and gives all
              exported symbols the correct names.
      
              * CMakeLists.txt:
              * GNUmakefile.list.am:
              * JavaScriptCore.exp:
              * JavaScriptCore.gypi:
              * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
              * JavaScriptCore.xcodeproj/project.pbxproj: Build!
      
              * bytecode/EvalCodeCache.h:
              * heap/HandleHeap.h:
              * heap/Heap.cpp:
              (JSC::Heap::Heap):
              (JSC::Heap::markRoots):
              * heap/Heap.h:
              * heap/HeapRootVisitor.h: Replaced MarkStack with SlotVisitor. Now no
              clients operate on a MarkStack.
      
              * heap/MarkStack.cpp:
              (JSC::SlotVisitor::visitChildren):
              (JSC::SlotVisitor::drain):
              * heap/SlotVisitor.h: Added.
              (JSC::SlotVisitor::SlotVisitor): Used 'protected' and a little cheesy
              inheritance to give SlotVisitor all the attributes of MarkStack without
              making this change giant. Over time, we will move more behavior into
              SlotVisitor and its subclasses.
      
              * heap/MarkStack.h:
              * heap/NewSpace.h: Replaced MarkStack with SlotVisitor. Now no
              clients operate on a MarkStack.
      
              * runtime/ArgList.h:
              * runtime/JSCell.h:
              * runtime/JSObject.h:
              * runtime/ScopeChain.h:
              * runtime/SmallStrings.h:
              * runtime/Structure.h: Replaced MarkStack with SlotVisitor. Now no
              clients operate on a MarkStack.
      2011-06-16  Geoffrey Garen  <ggaren@apple.com>
      
              Reviewed by Oliver Hunt.
      
              Introduced SlotVisitor into the project
              https://bugs.webkit.org/show_bug.cgi?id=62820
      
              This resolves a class vs typedef forward declaration issue, and gives all
              exported symbols the correct names.
      
              * dom/EventListener.h:
              * dom/Node.h:
              * dom/NodeFilterCondition.h:
      
      
      git-svn-id: http://svn.webkit.org/repository/webkit/trunk@89069 268f45cc-cd09-0410-ab3c-d52691b4dbfc
      6e1f8c1b
  3. 24 May, 2011 1 commit
    • ggaren@apple.com's avatar
      2011-05-24 Geoffrey Garen <ggaren@apple.com> · 726ad6bd
      ggaren@apple.com authored
              Reviewed by Oliver Hunt.
      
              Let's just have one way to get the system page size, bokay?
              https://bugs.webkit.org/show_bug.cgi?id=61384
      
              * CMakeListsEfl.txt:
              * CMakeListsWinCE.txt:
              * GNUmakefile.list.am:
              * JavaScriptCore.exp:
              * JavaScriptCore.gypi:
              * JavaScriptCore.pro:
              * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: MarkStack[Platform].cpp
              is gone completely now, since it only existed to provide a duplicate way
              to access the system page size.
      
              * heap/MarkStack.cpp:
              (JSC::MarkStack::reset):
              * heap/MarkStack.h:
              (JSC::::MarkStackArray):
              (JSC::::shrinkAllocation): Use WTF::pageSize.
      
              * heap/MarkStackPosix.cpp:
              * heap/MarkStackSymbian.cpp:
              * heap/MarkStackWin.cpp: Removed now-empty files.
      
              * jit/ExecutableAllocator.cpp:
              (JSC::ExecutableAllocator::reprotectRegion):
              * jit/ExecutableAllocator.h:
              (JSC::ExecutableAllocator::ExecutableAllocator):
              (JSC::ExecutablePool::ExecutablePool):
              (JSC::ExecutablePool::poolAllocate):
              * jit/ExecutableAllocatorFixedVMPool.cpp: Use WTF::pageSize.
      
              * wscript: Removed now-empty files.
      
              * wtf/PageBlock.cpp:
              (WTF::systemPageSize): Integrated questionable Symbian page size rule
              from ExecutableAllocator, because that seems like what the original
              author should have done.
      
      
      git-svn-id: http://svn.webkit.org/repository/webkit/trunk@87198 268f45cc-cd09-0410-ab3c-d52691b4dbfc
      726ad6bd
  4. 11 May, 2011 2 commits
  5. 10 May, 2011 2 commits
  6. 21 Apr, 2011 1 commit
    • oliver@apple.com's avatar
      2011-04-21 Oliver Hunt <oliver@apple.com> · 433d02f9
      oliver@apple.com authored
              Reviewed by Geoffrey Garen.
      
              Start moving to a general visitor pattern for GC traversal
              https://bugs.webkit.org/show_bug.cgi?id=59141
      
              This is just a rename:
                  markChildren -> visitChildren
                  markAggregate -> visitAggregate
                  markStack -> visitor
                  MarkStack -> typedef'd to SlotVisitor
      
              * API/JSCallbackObject.h:
              (JSC::JSCallbackObjectData::visitChildren):
              (JSC::JSCallbackObjectData::JSPrivatePropertyMap::visitChildren):
              (JSC::JSCallbackObject::visitChildren):
              * JavaScriptCore.exp:
              * bytecode/CodeBlock.cpp:
              (JSC::CodeBlock::visitStructures):
              (JSC::EvalCodeCache::visitAggregate):
              (JSC::CodeBlock::visitAggregate):
              * bytecode/CodeBlock.h:
              * bytecode/EvalCodeCache.h:
              * bytecode/Instruction.h:
              (JSC::PolymorphicAccessStructureList::visitAggregate):
              * bytecode/StructureStubInfo.cpp:
              (JSC::StructureStubInfo::visitAggregate):
              * bytecode/StructureStubInfo.h:
              * debugger/DebuggerActivation.cpp:
              (JSC::DebuggerActivation::visitChildren):
              * debugger/DebuggerActivation.h:
              * heap/HandleHeap.cpp:
              (JSC::WeakHandleOwner::isReachableFromOpaqueRoots):
              (JSC::HandleHeap::markStrongHandles):
              (JSC::HandleHeap::markWeakHandles):
              * heap/HandleHeap.h:
              * heap/HandleStack.cpp:
              (JSC::HandleStack::mark):
              * heap/HandleStack.h:
              * heap/Heap.cpp:
              (JSC::Heap::markProtectedObjects):
              (JSC::Heap::markTempSortVectors):
              (JSC::Heap::markRoots):
              * heap/Heap.h:
              * heap/MarkStack.cpp:
              (JSC::MarkStack::visitChildren):
              (JSC::MarkStack::drain):
              * heap/MarkStack.h:
              (JSC::HeapRootVisitor::HeapRootVisitor):
              (JSC::HeapRootVisitor::mark):
              (JSC::HeapRootVisitor::visitor):
              * heap/MarkedSpace.h:
              * runtime/ArgList.cpp:
              (JSC::MarkedArgumentBuffer::markLists):
              * runtime/ArgList.h:
              * runtime/Arguments.cpp:
              (JSC::Arguments::visitChildren):
              * runtime/Arguments.h:
              * runtime/Executable.cpp:
              (JSC::EvalExecutable::visitChildren):
              (JSC::ProgramExecutable::visitChildren):
              (JSC::FunctionExecutable::visitChildren):
              * runtime/Executable.h:
              * runtime/GetterSetter.cpp:
              (JSC::GetterSetter::visitChildren):
              * runtime/GetterSetter.h:
              (JSC::GetterSetter::createStructure):
              * runtime/JSAPIValueWrapper.h:
              (JSC::JSAPIValueWrapper::createStructure):
              * runtime/JSActivation.cpp:
              (JSC::JSActivation::visitChildren):
              * runtime/JSActivation.h:
              * runtime/JSArray.cpp:
              (JSC::JSArray::visitChildren):
              * runtime/JSArray.h:
              (JSC::JSArray::visitDirect):
              * runtime/JSCell.h:
              (JSC::JSCell::JSCell::visitChildren):
              * runtime/JSFunction.cpp:
              (JSC::JSFunction::visitChildren):
              * runtime/JSFunction.h:
              * runtime/JSGlobalObject.cpp:
              (JSC::visitIfNeeded):
              (JSC::JSGlobalObject::visitChildren):
              * runtime/JSGlobalObject.h:
              * runtime/JSONObject.cpp:
              * runtime/JSObject.cpp:
              (JSC::JSObject::visitChildren):
              * runtime/JSObject.h:
              (JSC::JSObject::visitDirect):
              * runtime/JSPropertyNameIterator.cpp:
              (JSC::JSPropertyNameIterator::visitChildren):
              * runtime/JSPropertyNameIterator.h:
              (JSC::JSPropertyNameIterator::createStructure):
              * runtime/JSStaticScopeObject.cpp:
              (JSC::JSStaticScopeObject::visitChildren):
              * runtime/JSStaticScopeObject.h:
              * runtime/JSTypeInfo.h:
              (JSC::TypeInfo::TypeInfo):
              (JSC::TypeInfo::overridesVisitChildren):
              * runtime/JSWrapperObject.cpp:
              (JSC::JSWrapperObject::visitChildren):
              * runtime/JSWrapperObject.h:
              * runtime/JSZombie.h:
              (JSC::JSZombie::visitChildren):
              * runtime/NativeErrorConstructor.cpp:
              (JSC::NativeErrorConstructor::visitChildren):
              * runtime/NativeErrorConstructor.h:
              * runtime/RegExpObject.cpp:
              (JSC::RegExpObject::visitChildren):
              * runtime/RegExpObject.h:
              * runtime/ScopeChain.cpp:
              (JSC::ScopeChainNode::visitChildren):
              * runtime/ScopeChain.h:
              * runtime/SmallStrings.cpp:
              (JSC::SmallStrings::visitChildren):
              * runtime/SmallStrings.h:
              * runtime/Structure.cpp:
              (JSC::Structure::Structure):
              (JSC::Structure::visitChildren):
              * runtime/Structure.h:
              * runtime/StructureChain.cpp:
              (JSC::StructureChain::visitChildren):
              * runtime/StructureChain.h:
              (JSC::StructureChain::createStructure):
      2011-04-21  Oliver Hunt  <oliver@apple.com>
      
              Reviewed by Geoffrey Garen.
      
              Start moving to a general visitor pattern for GC traversal
              https://bugs.webkit.org/show_bug.cgi?id=59141
      
              This is just a rename:
                  markChildren -> visitChildren
                  markAggregate -> visitAggregate
                  markStack -> visitor
                  MarkStack -> typedef'd to SlotVisitor
      
              * UserObjectImp.cpp:
              (UserObjectImp::visitChildren):
      2011-04-21  Oliver Hunt  <oliver@apple.com>
      
              Reviewed by Geoffrey Garen.
      
              Start moving to a general visitor pattern for GC traversal
              https://bugs.webkit.org/show_bug.cgi?id=59141
      
              This is just a rename:
                  markChildren -> visitChildren
                  markAggregate -> visitAggregate
                  markStack -> visitor
                  MarkStack -> typedef'd to SlotVisitor
      
              * bindings/js/JSAttrCustom.cpp:
              (WebCore::JSAttr::visitChildren):
              * bindings/js/JSAudioConstructor.cpp:
              (WebCore::constructAudio):
              * bindings/js/JSCSSRuleCustom.cpp:
              (WebCore::JSCSSRule::visitChildren):
              * bindings/js/JSCSSStyleDeclarationCustom.cpp:
              (WebCore::JSCSSStyleDeclaration::visitChildren):
              * bindings/js/JSDOMBinding.cpp:
              (WebCore::visitActiveObjectsForContext):
              (WebCore::markDOMObjectWrapper):
              * bindings/js/JSDOMBinding.h:
              * bindings/js/JSDOMGlobalObject.cpp:
              (WebCore::JSDOMGlobalObject::visitChildren):
              * bindings/js/JSDOMGlobalObject.h:
              * bindings/js/JSDOMImplementationCustom.cpp:
              (WebCore::JSDOMImplementation::visitChildren):
              * bindings/js/JSDOMWindowCustom.cpp:
              (WebCore::JSDOMWindow::visitChildren):
              * bindings/js/JSDOMWindowShell.cpp:
              (WebCore::JSDOMWindowShell::visitChildren):
              * bindings/js/JSDOMWindowShell.h:
              * bindings/js/JSDocumentCustom.cpp:
              (WebCore::JSDocument::visitChildren):
              * bindings/js/JSElementCustom.cpp:
              (WebCore::JSElement::visitChildren):
              * bindings/js/JSEventListener.cpp:
              (WebCore::JSEventListener::markJSFunction):
              * bindings/js/JSEventListener.h:
              * bindings/js/JSHTMLCanvasElementCustom.cpp:
              (WebCore::JSHTMLCanvasElement::visitChildren):
              * bindings/js/JSHTMLLinkElementCustom.cpp:
              (WebCore::JSHTMLLinkElement::visitChildren):
              * bindings/js/JSHTMLStyleElementCustom.cpp:
              (WebCore::JSHTMLStyleElement::visitChildren):
              * bindings/js/JSImageConstructor.cpp:
              (WebCore::constructImage):
              * bindings/js/JSJavaScriptAudioNodeCustom.cpp:
              (WebCore::JSJavaScriptAudioNode::visitChildren):
              * bindings/js/JSMessageChannelCustom.cpp:
              (WebCore::JSMessageChannel::visitChildren):
              * bindings/js/JSMessagePortCustom.cpp:
              (WebCore::JSMessagePort::visitChildren):
              * bindings/js/JSNamedNodeMapCustom.cpp:
              (WebCore::JSNamedNodeMapOwner::isReachableFromOpaqueRoots):
              (WebCore::JSNamedNodeMap::visitChildren):
              * bindings/js/JSNavigatorCustom.cpp:
              (WebCore::JSNavigator::visitChildren):
              * bindings/js/JSNodeCustom.cpp:
              (WebCore::isObservable):
              (WebCore::isReachableFromDOM):
              (WebCore::JSNodeOwner::isReachableFromOpaqueRoots):
              (WebCore::JSNode::visitChildren):
              * bindings/js/JSNodeCustom.h:
              * bindings/js/JSNodeFilterCondition.cpp:
              (WebCore::JSNodeFilterCondition::WeakOwner::isReachableFromOpaqueRoots):
              * bindings/js/JSNodeFilterCondition.h:
              * bindings/js/JSNodeFilterCustom.cpp:
              (WebCore::JSNodeFilter::visitChildren):
              * bindings/js/JSNodeIteratorCustom.cpp:
              (WebCore::JSNodeIterator::visitChildren):
              * bindings/js/JSNodeListCustom.cpp:
              (WebCore::JSNodeListOwner::isReachableFromOpaqueRoots):
              * bindings/js/JSProcessingInstructionCustom.cpp:
              (WebCore::JSProcessingInstruction::visitChildren):
              * bindings/js/JSSVGElementInstanceCustom.cpp:
              (WebCore::JSSVGElementInstance::visitChildren):
              * bindings/js/JSSharedWorkerCustom.cpp:
              (WebCore::JSSharedWorker::visitChildren):
              * bindings/js/JSStyleSheetCustom.cpp:
              (WebCore::JSStyleSheet::visitChildren):
              * bindings/js/JSTreeWalkerCustom.cpp:
              (WebCore::JSTreeWalker::visitChildren):
              * bindings/js/JSWebGLRenderingContextCustom.cpp:
              (WebCore::JSWebGLRenderingContext::visitChildren):
              * bindings/js/JSWebKitAnimationListCustom.cpp:
              (WebCore::JSWebKitAnimationList::visitChildren):
              * bindings/js/JSWorkerContextCustom.cpp:
              (WebCore::JSWorkerContext::visitChildren):
              * bindings/js/JSXMLHttpRequestCustom.cpp:
              (WebCore::JSXMLHttpRequest::visitChildren):
              * bindings/js/JSXMLHttpRequestUploadCustom.cpp:
              (WebCore::JSXMLHttpRequestUpload::visitChildren):
              * bindings/scripts/CodeGeneratorJS.pm:
              * bridge/qt/qt_instance.cpp:
              (JSC::Bindings::QtRuntimeObject::visitChildren):
              (JSC::Bindings::QtInstance::markAggregate):
              * bridge/qt/qt_instance.h:
              * bridge/qt/qt_pixmapruntime.cpp:
              * bridge/qt/qt_runtime.cpp:
              (JSC::Bindings::QtRuntimeMetaMethod::visitChildren):
              * bridge/qt/qt_runtime.h:
              * dom/EventListener.h:
              (WebCore::EventListener::visitJSFunction):
              * dom/EventTarget.h:
              (WebCore::EventTarget::visitJSEventListeners):
              * dom/Node.h:
              * dom/NodeFilterCondition.h:
              (WebCore::NodeFilterCondition::visitAggregate):
              * page/DOMWindow.h:
              * workers/WorkerContext.h:
      
      git-svn-id: http://svn.webkit.org/repository/webkit/trunk@84556 268f45cc-cd09-0410-ab3c-d52691b4dbfc
      433d02f9
  7. 15 Apr, 2011 2 commits
  8. 13 Apr, 2011 1 commit
    • oliver@apple.com's avatar
      2011-04-13 Oliver Hunt <oliver@apple.com> · bb8da910
      oliver@apple.com authored
              Reviewed by Geoff Garen.
      
              GC allocate Structure
              https://bugs.webkit.org/show_bug.cgi?id=58483
      
              Additional structures are allocated beyond the expected threshold
              so we preflight the test to get them allocated.
      
              * fast/dom/gc-10.html:
      2011-04-13  Oliver Hunt  <oliver@apple.com>
      
              Reviewed by Geoff Garen.
      
              GC allocate Structure
              https://bugs.webkit.org/show_bug.cgi?id=58483
      
              Turn Structure into a GC allocated object.  Most of this patch
              is the mechanical change of replacing variations on RefPtr<Structure>
              with either Structure* (for arguments and locals), WriteBarrier<Structure>
              for the few cases where Structures are held by GC allocated objects
              and Strong<Structure> for the root structure objects in GlobalData.
      
              * 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/JSContextRef.cpp:
              * JavaScriptCore.JSVALUE32_64only.exp:
              * JavaScriptCore.JSVALUE64only.exp:
              * JavaScriptCore.exp:
              * bytecode/CodeBlock.cpp:
              (JSC::CodeBlock::~CodeBlock):
              (JSC::CodeBlock::markStructures):
              (JSC::CodeBlock::markAggregate):
              * bytecode/CodeBlock.h:
              (JSC::MethodCallLinkInfo::setSeen):
              (JSC::GlobalResolveInfo::GlobalResolveInfo):
              * bytecode/Instruction.h:
              (JSC::PolymorphicAccessStructureList::PolymorphicStubInfo::set):
              (JSC::PolymorphicAccessStructureList::PolymorphicAccessStructureList):
              (JSC::PolymorphicAccessStructureList::markAggregate):
              (JSC::Instruction::Instruction):
              * bytecode/StructureStubInfo.cpp:
              (JSC::StructureStubInfo::deref):
              (JSC::StructureStubInfo::markAggregate):
              * bytecode/StructureStubInfo.h:
              (JSC::StructureStubInfo::initGetByIdSelf):
              (JSC::StructureStubInfo::initGetByIdProto):
              (JSC::StructureStubInfo::initGetByIdChain):
              (JSC::StructureStubInfo::initPutByIdTransition):
              (JSC::StructureStubInfo::initPutByIdReplace):
              * debugger/DebuggerActivation.cpp:
              (JSC::DebuggerActivation::DebuggerActivation):
              * debugger/DebuggerActivation.h:
              (JSC::DebuggerActivation::createStructure):
              * heap/Handle.h:
              * heap/MarkStack.cpp:
              (JSC::MarkStack::markChildren):
              (JSC::MarkStack::drain):
              * heap/MarkedBlock.cpp:
              (JSC::MarkedBlock::MarkedBlock):
              (JSC::MarkedBlock::sweep):
              * heap/Strong.h:
              (JSC::Strong::Strong):
              (JSC::Strong::set):
              * interpreter/Interpreter.cpp:
              (JSC::Interpreter::resolveGlobal):
              (JSC::Interpreter::resolveGlobalDynamic):
              (JSC::Interpreter::tryCachePutByID):
              (JSC::Interpreter::uncachePutByID):
              (JSC::Interpreter::tryCacheGetByID):
              (JSC::Interpreter::uncacheGetByID):
              (JSC::Interpreter::privateExecute):
              * jit/JIT.h:
              * jit/JITPropertyAccess.cpp:
              (JSC::JIT::privateCompilePutByIdTransition):
              (JSC::JIT::patchMethodCallProto):
              (JSC::JIT::privateCompileGetByIdProto):
              (JSC::JIT::privateCompileGetByIdSelfList):
              (JSC::JIT::privateCompileGetByIdProtoList):
              (JSC::JIT::privateCompileGetByIdChainList):
              (JSC::JIT::privateCompileGetByIdChain):
              * jit/JITPropertyAccess32_64.cpp:
              (JSC::JIT::privateCompilePutByIdTransition):
              (JSC::JIT::patchMethodCallProto):
              (JSC::JIT::privateCompileGetByIdProto):
              (JSC::JIT::privateCompileGetByIdSelfList):
              (JSC::JIT::privateCompileGetByIdProtoList):
              (JSC::JIT::privateCompileGetByIdChainList):
              (JSC::JIT::privateCompileGetByIdChain):
              * jit/JITStubs.cpp:
              (JSC::JITThunks::tryCachePutByID):
              (JSC::JITThunks::tryCacheGetByID):
              (JSC::DEFINE_STUB_FUNCTION):
              (JSC::getPolymorphicAccessStructureListSlot):
              * jit/JSInterfaceJIT.h:
              (JSC::JSInterfaceJIT::storePtrWithWriteBarrier):
              * jsc.cpp:
              (cleanupGlobalData):
              * runtime/Arguments.h:
              (JSC::Arguments::createStructure):
              (JSC::Arguments::Arguments):
              (JSC::JSActivation::copyRegisters):
              * runtime/ArrayConstructor.cpp:
              (JSC::ArrayConstructor::ArrayConstructor):
              (JSC::constructArrayWithSizeQuirk):
              * runtime/ArrayConstructor.h:
              * runtime/ArrayPrototype.cpp:
              (JSC::ArrayPrototype::ArrayPrototype):
              (JSC::arrayProtoFuncSplice):
              * runtime/ArrayPrototype.h:
              (JSC::ArrayPrototype::createStructure):
              * runtime/BatchedTransitionOptimizer.h:
              (JSC::BatchedTransitionOptimizer::BatchedTransitionOptimizer):
              * runtime/BooleanConstructor.cpp:
              (JSC::BooleanConstructor::BooleanConstructor):
              * runtime/BooleanConstructor.h:
              * runtime/BooleanObject.cpp:
              (JSC::BooleanObject::BooleanObject):
              * runtime/BooleanObject.h:
              (JSC::BooleanObject::createStructure):
              * 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:
              (JSC::DateInstance::createStructure):
              * runtime/DatePrototype.cpp:
              (JSC::DatePrototype::DatePrototype):
              * runtime/DatePrototype.h:
              (JSC::DatePrototype::createStructure):
              * runtime/Error.cpp:
              (JSC::StrictModeTypeErrorFunction::StrictModeTypeErrorFunction):
              * runtime/ErrorConstructor.cpp:
              (JSC::ErrorConstructor::ErrorConstructor):
              * runtime/ErrorConstructor.h:
              * runtime/ErrorInstance.cpp:
              (JSC::ErrorInstance::ErrorInstance):
              (JSC::ErrorInstance::create):
              * runtime/ErrorInstance.h:
              (JSC::ErrorInstance::createStructure):
              * runtime/ErrorPrototype.cpp:
              (JSC::ErrorPrototype::ErrorPrototype):
              * runtime/ErrorPrototype.h:
              * runtime/ExceptionHelpers.cpp:
              (JSC::InterruptedExecutionError::InterruptedExecutionError):
              (JSC::TerminatedExecutionError::TerminatedExecutionError):
              * runtime/Executable.cpp:
              * runtime/Executable.h:
              (JSC::ExecutableBase::ExecutableBase):
              (JSC::ExecutableBase::createStructure):
              (JSC::NativeExecutable::createStructure):
              (JSC::NativeExecutable::NativeExecutable):
              (JSC::ScriptExecutable::ScriptExecutable):
              (JSC::EvalExecutable::createStructure):
              (JSC::ProgramExecutable::createStructure):
              (JSC::FunctionExecutable::createStructure):
              * runtime/FunctionConstructor.cpp:
              (JSC::FunctionConstructor::FunctionConstructor):
              * runtime/FunctionConstructor.h:
              * runtime/FunctionPrototype.cpp:
              (JSC::FunctionPrototype::FunctionPrototype):
              * runtime/FunctionPrototype.h:
              (JSC::FunctionPrototype::createStructure):
              * runtime/GetterSetter.h:
              (JSC::GetterSetter::GetterSetter):
              (JSC::GetterSetter::createStructure):
              * runtime/InitializeThreading.cpp:
              (JSC::initializeThreadingOnce):
              * runtime/InternalFunction.cpp:
              (JSC::InternalFunction::InternalFunction):
              * runtime/InternalFunction.h:
              (JSC::InternalFunction::createStructure):
              * runtime/JSAPIValueWrapper.h:
              (JSC::JSAPIValueWrapper::createStructure):
              (JSC::JSAPIValueWrapper::JSAPIValueWrapper):
              * 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/JSByteArray.cpp:
              (JSC::JSByteArray::JSByteArray):
              (JSC::JSByteArray::createStructure):
              * runtime/JSByteArray.h:
              (JSC::JSByteArray::JSByteArray):
              * runtime/JSCell.cpp:
              (JSC::isZombie):
              * runtime/JSCell.h:
              (JSC::JSCell::JSCell::JSCell):
              (JSC::JSCell::JSCell::addressOfStructure):
              (JSC::JSCell::JSCell::structure):
              (JSC::JSCell::JSCell::markChildren):
              (JSC::JSCell::JSValue::isZombie):
              * runtime/JSFunction.cpp:
              (JSC::JSFunction::JSFunction):
              * runtime/JSFunction.h:
              (JSC::JSFunction::createStructure):
              * runtime/JSGlobalData.cpp:
              (JSC::JSGlobalData::storeVPtrs):
              (JSC::JSGlobalData::JSGlobalData):
              (JSC::JSGlobalData::clearBuiltinStructures):
              (JSC::JSGlobalData::createLeaked):
              * runtime/JSGlobalData.h:
              (JSC::allocateGlobalHandle):
              * runtime/JSGlobalObject.cpp:
              (JSC::JSGlobalObject::reset):
              (JSC::JSGlobalObject::markChildren):
              (JSC::JSGlobalObject::copyGlobalsFrom):
              * runtime/JSGlobalObject.h:
              (JSC::JSGlobalObject::JSGlobalObject):
              (JSC::JSGlobalObject::createStructure):
              (JSC::Structure::prototypeChain):
              (JSC::Structure::isValid):
              (JSC::constructEmptyArray):
              * runtime/JSNotAnObject.h:
              (JSC::JSNotAnObject::JSNotAnObject):
              (JSC::JSNotAnObject::createStructure):
              * runtime/JSONObject.cpp:
              (JSC::JSONObject::JSONObject):
              * runtime/JSONObject.h:
              (JSC::JSONObject::createStructure):
              * runtime/JSObject.cpp:
              (JSC::JSObject::defineGetter):
              (JSC::JSObject::defineSetter):
              (JSC::JSObject::seal):
              (JSC::JSObject::freeze):
              (JSC::JSObject::preventExtensions):
              (JSC::JSObject::removeDirect):
              (JSC::JSObject::createInheritorID):
              * runtime/JSObject.h:
              (JSC::JSObject::createStructure):
              (JSC::JSObject::JSObject):
              (JSC::JSNonFinalObject::createStructure):
              (JSC::JSNonFinalObject::JSNonFinalObject):
              (JSC::JSFinalObject::create):
              (JSC::JSFinalObject::createStructure):
              (JSC::JSFinalObject::JSFinalObject):
              (JSC::constructEmptyObject):
              (JSC::createEmptyObjectStructure):
              (JSC::JSObject::~JSObject):
              (JSC::JSObject::setPrototype):
              (JSC::JSObject::setStructure):
              (JSC::JSObject::inheritorID):
              (JSC::JSObject::putDirectInternal):
              (JSC::JSObject::transitionTo):
              (JSC::JSObject::markChildrenDirect):
              * runtime/JSObjectWithGlobalObject.cpp:
              (JSC::JSObjectWithGlobalObject::JSObjectWithGlobalObject):
              * runtime/JSObjectWithGlobalObject.h:
              (JSC::JSObjectWithGlobalObject::createStructure):
              (JSC::JSObjectWithGlobalObject::JSObjectWithGlobalObject):
              * runtime/JSPropertyNameIterator.cpp:
              (JSC::JSPropertyNameIterator::JSPropertyNameIterator):
              (JSC::JSPropertyNameIterator::create):
              (JSC::JSPropertyNameIterator::get):
              * runtime/JSPropertyNameIterator.h:
              (JSC::JSPropertyNameIterator::createStructure):
              (JSC::JSPropertyNameIterator::setCachedStructure):
              (JSC::Structure::setEnumerationCache):
              * runtime/JSStaticScopeObject.h:
              (JSC::JSStaticScopeObject::JSStaticScopeObject):
              (JSC::JSStaticScopeObject::createStructure):
              * runtime/JSString.h:
              (JSC::RopeBuilder::JSString):
              (JSC::RopeBuilder::createStructure):
              * runtime/JSType.h:
              * runtime/JSTypeInfo.h:
              (JSC::TypeInfo::TypeInfo):
              * runtime/JSValue.h:
              * runtime/JSVariableObject.h:
              (JSC::JSVariableObject::createStructure):
              (JSC::JSVariableObject::JSVariableObject):
              (JSC::JSVariableObject::copyRegisterArray):
              * runtime/JSWrapperObject.h:
              (JSC::JSWrapperObject::createStructure):
              (JSC::JSWrapperObject::JSWrapperObject):
              * runtime/JSZombie.cpp:
              * runtime/JSZombie.h:
              (JSC::JSZombie::JSZombie):
              (JSC::JSZombie::createStructure):
              * runtime/MathObject.cpp:
              (JSC::MathObject::MathObject):
              * runtime/MathObject.h:
              (JSC::MathObject::createStructure):
              * runtime/NativeErrorConstructor.cpp:
              (JSC::NativeErrorConstructor::NativeErrorConstructor):
              (JSC::NativeErrorConstructor::markChildren):
              * runtime/NativeErrorConstructor.h:
              (JSC::NativeErrorConstructor::createStructure):
              * 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:
              (JSC::NumberObject::createStructure):
              * runtime/NumberPrototype.cpp:
              (JSC::NumberPrototype::NumberPrototype):
              * runtime/NumberPrototype.h:
              * runtime/ObjectConstructor.cpp:
              (JSC::ObjectConstructor::ObjectConstructor):
              * runtime/ObjectConstructor.h:
              (JSC::ObjectConstructor::createStructure):
              * runtime/ObjectPrototype.cpp:
              (JSC::ObjectPrototype::ObjectPrototype):
              * runtime/ObjectPrototype.h:
              * runtime/PropertyMapHashTable.h:
              (JSC::PropertyTable::PropertyTable):
              * runtime/RegExpConstructor.cpp:
              (JSC::RegExpConstructor::RegExpConstructor):
              (JSC::RegExpMatchesArray::RegExpMatchesArray):
              * 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/ScopeChain.h:
              (JSC::ScopeChainNode::ScopeChainNode):
              (JSC::ScopeChainNode::createStructure):
              * runtime/StrictEvalActivation.cpp:
              (JSC::StrictEvalActivation::StrictEvalActivation):
              * 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::StringObjectThatMasqueradesAsUndefined):
              (JSC::StringObjectThatMasqueradesAsUndefined::createStructure):
              * runtime/StringPrototype.cpp:
              (JSC::StringPrototype::StringPrototype):
              * runtime/StringPrototype.h:
              (JSC::StringPrototype::createStructure):
              * runtime/Structure.cpp:
              (JSC::StructureTransitionTable::remove):
              (JSC::StructureTransitionTable::add):
              (JSC::Structure::Structure):
              (JSC::Structure::~Structure):
              (JSC::Structure::materializePropertyMap):
              (JSC::Structure::addPropertyTransitionToExistingStructure):
              (JSC::Structure::addPropertyTransition):
              (JSC::Structure::removePropertyTransition):
              (JSC::Structure::changePrototypeTransition):
              (JSC::Structure::despecifyFunctionTransition):
              (JSC::Structure::getterSetterTransition):
              (JSC::Structure::toDictionaryTransition):
              (JSC::Structure::toCacheableDictionaryTransition):
              (JSC::Structure::toUncacheableDictionaryTransition):
              (JSC::Structure::sealTransition):
              (JSC::Structure::freezeTransition):
              (JSC::Structure::preventExtensionsTransition):
              (JSC::Structure::flattenDictionaryStructure):
              (JSC::Structure::copyPropertyTable):
              (JSC::Structure::put):
              (JSC::Structure::markChildren):
              * runtime/Structure.h:
              (JSC::Structure::create):
              (JSC::Structure::setPrototypeWithoutTransition):
              (JSC::Structure::createStructure):
              (JSC::JSCell::createDummyStructure):
              (JSC::StructureTransitionTable::WeakGCMapFinalizerCallback::keyForFinalizer):
              * runtime/StructureChain.cpp:
              (JSC::StructureChain::StructureChain):
              (JSC::StructureChain::markChildren):
              * runtime/StructureChain.h:
              (JSC::StructureChain::create):
              (JSC::StructureChain::head):
              (JSC::StructureChain::createStructure):
              * runtime/StructureTransitionTable.h:
              (JSC::StructureTransitionTable::WeakGCMapFinalizerCallback::finalizerContextFor):
              (JSC::StructureTransitionTable::~StructureTransitionTable):
              (JSC::StructureTransitionTable::slot):
              (JSC::StructureTransitionTable::setMap):
              (JSC::StructureTransitionTable::singleTransition):
              (JSC::StructureTransitionTable::clearSingleTransition):
              (JSC::StructureTransitionTable::setSingleTransition):
              * runtime/WeakGCMap.h:
              (JSC::DefaultWeakGCMapFinalizerCallback::finalizerContextFor):
              (JSC::DefaultWeakGCMapFinalizerCallback::keyForFinalizer):
              (JSC::WeakGCMap::contains):
              (JSC::WeakGCMap::find):
              (JSC::WeakGCMap::remove):
              (JSC::WeakGCMap::add):
              (JSC::WeakGCMap::set):
              (JSC::WeakGCMap::finalize):
              * runtime/WriteBarrier.h:
              (JSC::writeBarrier):
              (JSC::WriteBarrierBase::set):
              (JSC::WriteBarrierBase::operator*):
              (JSC::WriteBarrierBase::operator->):
              (JSC::WriteBarrierBase::setWithoutWriteBarrier):
      2011-04-13  Oliver Hunt  <oliver@apple.com>
      
              Reviewed by Geoff Garen.
      
              GC allocate Structure
              https://bugs.webkit.org/show_bug.cgi?id=58483
      
              Fix up JSG to correctly mark Structure, et al.
      
              * JSRun.cpp:
              (JSGlueGlobalObject::JSGlueGlobalObject):
              * JSRun.h:
              * JSUtils.cpp:
              (JSObjectKJSValue):
              * UserObjectImp.cpp:
              (UserObjectImp::UserObjectImp):
              * UserObjectImp.h:
              (UserObjectImp::createStructure):
      2011-04-13  Oliver Hunt  <oliver@apple.com>
      
              Reviewed by Geoff Garen.
      
              GC allocate Structure
              https://bugs.webkit.org/show_bug.cgi?id=58483
      
              Update WebCore for Structure being a GC allocated object
      
              * WebCore.exp.in:
              * bindings/js/JSAudioConstructor.h:
              (WebCore::JSAudioConstructor::createStructure):
              * bindings/js/JSDOMBinding.cpp:
              (WebCore::cacheDOMStructure):
              * bindings/js/JSDOMBinding.h:
              (WebCore::DOMObjectWithGlobalPointer::createStructure):
              (WebCore::DOMObjectWithGlobalPointer::DOMObjectWithGlobalPointer):
              (WebCore::DOMConstructorObject::createStructure):
              (WebCore::DOMConstructorObject::DOMConstructorObject):
              (WebCore::DOMConstructorWithDocument::DOMConstructorWithDocument):
              * bindings/js/JSDOMGlobalObject.cpp:
              (WebCore::JSDOMGlobalObject::JSDOMGlobalObject):
              (WebCore::JSDOMGlobalObject::markChildren):
              * bindings/js/JSDOMGlobalObject.h:
              (WebCore::JSDOMGlobalObject::createStructure):
              * bindings/js/JSDOMWindowBase.cpp:
              (WebCore::JSDOMWindowBase::JSDOMWindowBase):
              * bindings/js/JSDOMWindowBase.h:
              (WebCore::JSDOMWindowBase::createStructure):
              * bindings/js/JSDOMWindowShell.cpp:
              (WebCore::JSDOMWindowShell::JSDOMWindowShell):
              (WebCore::JSDOMWindowShell::setWindow):
              * bindings/js/JSDOMWindowShell.h:
              (WebCore::JSDOMWindowShell::createStructure):
              * bindings/js/JSDOMWrapper.h:
              (WebCore::DOMObject::DOMObject):
              * bindings/js/JSEventListener.cpp:
              (WebCore::JSEventListener::JSEventListener):
              * bindings/js/JSImageConstructor.h:
              (WebCore::JSImageConstructor::createStructure):
              * bindings/js/JSImageDataCustom.cpp:
              (WebCore::toJS):
              * bindings/js/JSOptionConstructor.h:
              (WebCore::JSOptionConstructor::createStructure):
              * bindings/js/JSWorkerContextBase.cpp:
              (WebCore::JSWorkerContextBase::JSWorkerContextBase):
              * bindings/js/JSWorkerContextBase.h:
              (WebCore::JSWorkerContextBase::createStructure):
              * bindings/js/ScriptCachedFrameData.h:
              * bindings/js/SerializedScriptValue.h:
              * bindings/js/WorkerScriptController.cpp:
              (WebCore::WorkerScriptController::initScript):
              * bindings/scripts/CodeGeneratorJS.pm:
              * bridge/c/CRuntimeObject.h:
              (JSC::Bindings::CRuntimeObject::createStructure):
              * bridge/c/c_instance.cpp:
              (JSC::Bindings::CRuntimeMethod::createStructure):
              * bridge/jni/jsc/JavaInstanceJSC.cpp:
              (JavaRuntimeMethod::createStructure):
              * bridge/jni/jsc/JavaRuntimeObject.h:
              (JSC::Bindings::JavaRuntimeObject::createStructure):
              * bridge/objc/ObjCRuntimeObject.h:
              (JSC::Bindings::ObjCRuntimeObject::createStructure):
              * bridge/objc/objc_instance.mm:
              (ObjCRuntimeMethod::createStructure):
              * bridge/objc/objc_runtime.h:
              (JSC::Bindings::ObjcFallbackObjectImp::createStructure):
              * bridge/runtime_array.cpp:
              (JSC::RuntimeArray::RuntimeArray):
              * bridge/runtime_array.h:
              (JSC::RuntimeArray::createStructure):
              * bridge/runtime_method.cpp:
              (JSC::RuntimeMethod::RuntimeMethod):
              * bridge/runtime_method.h:
              (JSC::RuntimeMethod::createStructure):
              * bridge/runtime_object.cpp:
              (JSC::Bindings::RuntimeObject::RuntimeObject):
              * bridge/runtime_object.h:
              (JSC::Bindings::RuntimeObject::createStructure):
              * history/HistoryItem.h:
      2011-04-13  Oliver Hunt  <oliver@apple.com>
      
              Reviewed by Geoff Garen.
      
              GC allocate Structure
              https://bugs.webkit.org/show_bug.cgi?id=58483
      
              Update WebKit for the world of GC allocated Structure
      
              * Plugins/Hosted/NetscapePluginInstanceProxy.h:
              * Plugins/Hosted/ProxyInstance.mm:
              (WebKit::ProxyRuntimeMethod::createStructure):
              * Plugins/Hosted/ProxyRuntimeObject.h:
              (WebKit::ProxyRuntimeObject::createStructure):
      2011-04-13  Oliver Hunt  <oliver@apple.com>
      
              Reviewed by Geoff Garen.
      
              GC allocate Structure
              https://bugs.webkit.org/show_bug.cgi?id=58483
      
              Update WK2 for the world of GC allocated Structure
      
              * WebProcess/Plugins/Netscape/JSNPMethod.h:
              (WebKit::JSNPMethod::createStructure):
              * WebProcess/Plugins/Netscape/JSNPObject.h:
              (WebKit::JSNPObject::createStructure):
      
      git-svn-id: http://svn.webkit.org/repository/webkit/trunk@83808 268f45cc-cd09-0410-ab3c-d52691b4dbfc
      bb8da910
  9. 11 Apr, 2011 1 commit
    • ggaren@apple.com's avatar
      2011-04-11 Geoffrey Garen <ggaren@apple.com> · 0b32d098
      ggaren@apple.com authored
              Rubber-stamped by Sam Weinig.
              
              Moved remaining heap implementation files to the heap folder.
      
              * Android.mk:
              * CMakeLists.txt:
              * GNUmakefile.list.am:
              * JavaScriptCore.gypi:
              * JavaScriptCore.pro:
              * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
              * JavaScriptCore.xcodeproj/project.pbxproj:
              * heap/ConservativeRoots.cpp: Copied from runtime/ConservativeSet.cpp.
              * heap/ConservativeRoots.h: Copied from runtime/ConservativeSet.h.
              * heap/Handle.h:
              * heap/Heap.cpp:
              * heap/MachineStackMarker.cpp: Copied from runtime/MachineStackMarker.cpp.
              * heap/MachineStackMarker.h: Copied from runtime/MachineStackMarker.h.
              * heap/MarkStack.cpp: Copied from runtime/MarkStack.cpp.
              * heap/MarkStack.h: Copied from runtime/MarkStack.h.
              * heap/MarkStackPosix.cpp: Copied from runtime/MarkStackPosix.cpp.
              * heap/MarkStackSymbian.cpp: Copied from runtime/MarkStackSymbian.cpp.
              * heap/MarkStackWin.cpp: Copied from runtime/MarkStackWin.cpp.
              * heap/MarkedBlock.cpp: Copied from runtime/MarkedBlock.cpp.
              * heap/MarkedBlock.h: Copied from runtime/MarkedBlock.h.
              * heap/MarkedSpace.cpp: Copied from runtime/MarkedSpace.cpp.
              * heap/MarkedSpace.h: Copied from runtime/MarkedSpace.h.
              * interpreter/RegisterFile.cpp:
              * runtime/ConservativeSet.cpp: Removed.
              * runtime/ConservativeSet.h: Removed.
              * runtime/MachineStackMarker.cpp: Removed.
              * runtime/MachineStackMarker.h: Removed.
              * runtime/MarkStack.cpp: Removed.
              * runtime/MarkStack.h: Removed.
              * runtime/MarkStackPosix.cpp: Removed.
              * runtime/MarkStackSymbian.cpp: Removed.
              * runtime/MarkStackWin.cpp: Removed.
              * runtime/MarkedBlock.cpp: Removed.
              * runtime/MarkedBlock.h: Removed.
              * runtime/MarkedSpace.cpp: Removed.
              * runtime/MarkedSpace.h: Removed.
      
      
      
      git-svn-id: http://svn.webkit.org/repository/webkit/trunk@83506 268f45cc-cd09-0410-ab3c-d52691b4dbfc
      0b32d098
  10. 05 Apr, 2011 1 commit
    • ggaren@apple.com's avatar
      2011-04-05 Geoffrey Garen <ggaren@apple.com> · 21ef0ea6
      ggaren@apple.com authored
              Reviewed by Oliver Hunt.
      
              Introduced the concept of opaque roots, in preparation for marking the DOM with them
              https://bugs.webkit.org/show_bug.cgi?id=57903
      
              * JavaScriptCore.exp: Who likes export files? I do!
      
              * collector/handles/HandleHeap.cpp:
              (JSC::isValidWeakHandle): Factored out a helper function for ASSERTs.
      
              (JSC::WeakHandleOwner::~WeakHandleOwner): Moved from header to avoid
              weak linkage problems.
      
              (JSC::WeakHandleOwner::isReachableFromOpaqueRoots): New callback.
              Currently unused.
      
              (JSC::WeakHandleOwner::finalize): Switched from pure virtual to a
              default empty implementation, since not all clients necessarily want
              or need non-trivial finalizers.
      
              (JSC::HandleHeap::markWeakHandles): Split updateWeakHandles into two
              passes. The first pass marks all reachable weak handles. The second pass
              finalizes all unreachable weak handles. This must be two passes because
              we don't know the set of finalizable weak handles until we're done
              marking all weak handles.
      
              (JSC::HandleHeap::finalizeWeakHandles): Use new helper function.
      
              * collector/handles/HandleHeap.h: Ditto.
      
              * runtime/Heap.cpp: 
              (JSC::Heap::destroy):
              (JSC::Heap::markRoots):
              (JSC::Heap::reset): Split out handle marking from handle finalization.
      
              * runtime/MarkStack.cpp:
              (JSC::MarkStack::reset):
              * runtime/MarkStack.h:
              (JSC::MarkStack::addOpaqueRoot):
              (JSC::MarkStack::containsOpaqueRoot):
              (JSC::MarkStack::opaqueRootCount):
              (JSC::HeapRootMarker::markStack): New helper functions for managing the
              set of opaque roots.
      
              * runtime/WeakGCMap.h:
              (JSC::WeakGCMap::finalize): Renamed to match parent class declaration.
      
      
      git-svn-id: http://svn.webkit.org/repository/webkit/trunk@83011 268f45cc-cd09-0410-ab3c-d52691b4dbfc
      21ef0ea6
  11. 16 Mar, 2011 2 commits
    • ggaren@apple.com's avatar
      2011-03-16 Geoffrey Garen <ggaren@apple.com> · 02bf0404
      ggaren@apple.com authored
              Reviewed by Oliver Hunt.
      
              Some conservative root gathering cleanup
              https://bugs.webkit.org/show_bug.cgi?id=56447
              
              SunSpider says 0.5% - 1.8% faster.
      
              * interpreter/RegisterFile.cpp:
              (JSC::RegisterFile::gatherConservativeRoots):
              * interpreter/RegisterFile.h: New helper function for doing the
              conservative gathering of the register file. It's still conservative,
              since the register file may contain uninitialized values, but it's
              moving-safe, because it only visits values tagged as pointers, so there's
              no risk of mistaking an integer for a pointer and accidentally changing it.
      
              * runtime/ConservativeSet.cpp:
              (JSC::ConservativeRoots::add):
              * runtime/ConservativeSet.h: Added a single-value add function, used above.
      
              * runtime/Heap.cpp:
              (JSC::Heap::markRoots): Separated machine stack conservative roots from
              register file conservative roots because machine stack roots must be
              pinned, but register file roots need not be pinned.
              
              Adopted new interface for passing the current stack extent to the machine
              stack root gathering routine. This allows us to exclude marking-related
              data structures on the stack, and thus avoid double-marking the set of
              machine roots.
      
              * runtime/MachineStackMarker.cpp:
              (JSC::MachineThreads::gatherFromCurrentThread):
              (JSC::MachineThreads::gatherConservativeRoots):
              * runtime/MachineStackMarker.h: Added new interface, described above.
      
              * runtime/MarkedBlock.h:
              (JSC::MarkedBlock::firstAtom):
              * wtf/StdLibExtras.h:
              (WTF::roundUpToMultipleOf): Moved roundUpToMultipleOf so it could be used
              by MachineStacks.
      
      
      git-svn-id: http://svn.webkit.org/repository/webkit/trunk@81262 268f45cc-cd09-0410-ab3c-d52691b4dbfc
      02bf0404
    • ggaren@apple.com's avatar
      2011-03-16 Geoffrey Garen <ggaren@apple.com> · b7d71072
      ggaren@apple.com authored
              Reviewed by Oliver Hunt.
      
              A little bit of MarkStack cleanup
              https://bugs.webkit.org/show_bug.cgi?id=56443
              
              Moved MarkStack functions into MarkStack.h/.cpp.
              
              SunSpider reports no change.
      
              * runtime/JSArray.h:
              * runtime/JSCell.h: Moved from here...
              * runtime/MarkStack.cpp:
              (JSC::MarkStack::markChildren):
              (JSC::MarkStack::drain): ...to here. Also, no need to inline drain. It's
              a huge function, and not called many times.
      
              * runtime/MarkStack.h:
              (JSC::MarkStack::~MarkStack): Moved near constructor, per style guide.
              (JSC::MarkStack::append):
              (JSC::MarkStack::deprecatedAppend):
              (JSC::MarkStack::internalAppend): Moved to here.
      
      
      git-svn-id: http://svn.webkit.org/repository/webkit/trunk@81261 268f45cc-cd09-0410-ab3c-d52691b4dbfc
      b7d71072
  12. 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
  13. 04 Sep, 2009 1 commit
    • darin@apple.com's avatar
      JavaScriptCore: DateInstance object collected on ARM JIT (JSValue: WTF_USE_JSVALUE32) · 9fb218be
      darin@apple.com authored
      https://bugs.webkit.org/show_bug.cgi?id=28909
      
      Patch by Darin Adler <darin@apple.com> on 2009-09-04
      Reviewed by Geoff Garen.
      
      Part one.
      
      Make some improvements to garbage collection code:
      
          1) Fix the two classes that had the default mark bit set but
             should not.
          2) Remove checks of the mark bit outside the MarkStack::append
             function; they are redundant.
          3) Make more callers use the checked asCell and asObject
             casting functions rather than unchecked casts.
          4) Removed some GC-related functions because these operations are
             no longer things that code other than the core GC code needs
             to do directly. Fixed callers that were calling them.
      
      * bytecode/CodeBlock.cpp:
      (JSC::CodeBlock::markAggregate): Removed unneeded check of the mark
      bit before calling MarkStack::append.
      
      * interpreter/Register.h: Removed unneeded marked and markChildren
      functions.
      
      * jit/JITStubs.cpp:
      (op_eq): Removed unneeded assertions, instead using checked casting
      functions such as asObject.
      
      * runtime/ArgList.h: Added now-needed forward declaration of MarkStack.
      
      * runtime/GetterSetter.cpp:
      (JSC::GetterSetter::markChildren): Remmoved unneeded check of the mark bit.
      
      * runtime/GlobalEvalFunction.h:
      (JSC::GlobalEvalFunction::createStructure): Added. Fixes a bug where the
      HasDefaultMark bit was set.
      
      * runtime/JSCell.cpp:
      (JSC::JSCell::getObject): Use asObject to avoid a direct static_cast.
      
      * runtime/JSObject.h:
      (JSC::asObject): Added an overload for JSCell* and changed the JSValue
      version to call it.
      (JSC::JSValue::get): Use asObject to avoid a direct static_cast.
      
      * runtime/JSValue.h: Moved some stray includes that were outside the
      header guard inside it. Not sure how that happened! Removed the
      GC-related member functions markChildren, hasChildren, marked, and
      markDirect.
      
      * runtime/JSWrapperObject.h: Made markChildren private.
      (JSC::JSWrapperObject::createStructure): Added. Fixes a bug where the
      HasDefaultMark bit was set. Later we may want to optimize this for
      wrapper types that never have cells in their internal values, but there
      is no measured performance regression in SunSpider or V8 doing this
      all the time.
      
      * runtime/MarkStack.cpp: Tweaked formatting.
      
      JavaScriptGlue: * JSValueWrapper.cpp:
      (JSValueWrapper::JSObjectMark): Removed a check of the mark
      bit. It's OK to do more work in this case, and there is no
      longer a public function to access the mark bit.
      
      Reviewed by Geoff Garen.
      
      
      
      git-svn-id: http://svn.webkit.org/repository/webkit/trunk@48067 268f45cc-cd09-0410-ab3c-d52691b4dbfc
      9fb218be
  14. 10 Aug, 2009 1 commit
    • oliver@apple.com's avatar
      Stack overflow crash in JavaScript garbage collector mark pass · 5fca29f7
      oliver@apple.com authored
      https://bugs.webkit.org/show_bug.cgi?id=12216
      
      Reviewed by Gavin Barraclough and Sam Weinig
      
      Make the GC mark phase iterative by using an explicit mark stack.
      To do this marking any single object is performed in multiple stages
        * The object is appended to the MarkStack, this sets the marked
          bit for the object using the new markDirect() function, and then
          returns
        * When the MarkStack is drain()ed the object is popped off the stack
          and markChildren(MarkStack&) is called on the object to collect
          all of its children.  drain() then repeats until the stack is empty.
      
      Additionally I renamed a number of methods from 'mark' to 'markAggregate'
      in order to make it more clear that marking of those object was not
      going to result in an actual recursive mark.
      
      
      git-svn-id: http://svn.webkit.org/repository/webkit/trunk@47022 268f45cc-cd09-0410-ab3c-d52691b4dbfc
      5fca29f7
  15. 29 Jun, 2009 1 commit
    • weinig@apple.com's avatar
      WebCore: · 6ebc8efe
      weinig@apple.com authored
      2009-06-29  Sam Weinig  <sam@webkit.org>
      
              Reviewed by Dave Hyatt.
      
              Remove initialize method from DataGridDataSource and add
              DOMDataGridDataSource.
      
              * GNUmakefile.am:
              * WebCore.pro:
              * WebCore.vcproj/WebCore.vcproj:
              * WebCore.xcodeproj/project.pbxproj:
              * WebCoreSources.bkl:
              * bindings/js/JSDataGridDataSource.cpp:
              * bindings/js/JSDataGridDataSource.h:
              * bindings/js/JSHTMLDataGridElementCustom.cpp:
              (WebCore::JSHTMLDataGridElement::setDataSource):
              * html/DOMDataGridDataSource.cpp: Added.
              (WebCore::DOMDataGridDataSource::DOMDataGridDataSource):
              (WebCore::DOMDataGridDataSource::~DOMDataGridDataSource):
              * html/DOMDataGridDataSource.h: Added.
              (WebCore::DOMDataGridDataSource::create):
              (WebCore::DOMDataGridDataSource::isDOMDataGridDataSource):
              (WebCore::asDOMDataGridDataSource):
              * html/DataGridDataSource.h:
              (WebCore::DataGridDataSource::isDOMDataGridDataSource):
              (WebCore::DataGridDataSource::isJSDataGridDataSource):
              * html/HTMLDataGridElement.cpp:
              (WebCore::HTMLDataGridElement::HTMLDataGridElement):
              (WebCore::HTMLDataGridElement::setDataSource):
              (WebCore::HTMLDataGridElement::dataSource):
              * html/HTMLDataGridElement.h:
      
      LayoutTests:
      
      2009-06-29  Sam Weinig  <sam@webkit.org>
      
              Reviewed by Dave Hyatt.
      
              Update for the change in DataGridDataSource API.
      
              * fast/dom/HTMLDataGridElement/DataGridDataSource-basic-expected.txt:
              * fast/dom/HTMLDataGridElement/DataGridDataSource-basic.html:
      
      
      
      git-svn-id: http://svn.webkit.org/repository/webkit/trunk@45353 268f45cc-cd09-0410-ab3c-d52691b4dbfc
      6ebc8efe
  16. 18 May, 2009 1 commit
  17. 09 Nov, 2008 1 commit
    • ddkilzer@apple.com's avatar
      BUILD FIX: Qt build broke after r38235. · 8d878632
      ddkilzer@apple.com authored
              Added HAVE(ACCESSIBILITY) header guards to platform implementation
              source files.
      
              * page/gtk/AccessibilityObjectAtk.cpp: Added HAVE(ACCESSIBILITY)
              guards.
              * page/gtk/AccessibilityObjectWrapperAtk.cpp: Ditto.
              * page/qt/AccessibilityObjectQt.cpp: Ditto.
              * page/win/AccessibilityObjectWin.cpp: Ditto.
              * page/wx/AccessibilityObjectWx.cpp: Ditto.
      
      git-svn-id: http://svn.webkit.org/repository/webkit/trunk@38244 268f45cc-cd09-0410-ab3c-d52691b4dbfc
      8d878632
  18. 26 Aug, 2008 1 commit
  19. 22 May, 2008 1 commit
    • andersca@apple.com's avatar
      ..: · 9541a22e
      andersca@apple.com authored
      2008-05-21  Anders Carlsson  <andersca@apple.com>
      
              Reviewed by Maciej.
      
              Add WebIconFetcher files.
              
              * WebKit.xcodeproj/project.pbxproj:
      
      ../mac:
      
      2008-05-21  Anders Carlsson  <andersca@apple.com>
      
              Reviewed by Maciej.
      
              Add WebIconFetcher.
              
              * Misc/WebIconFetcher.h: Added.
              * Misc/WebIconFetcher.mm: Added.
              (WebIconFetcherClient::WebIconFetcherClient):
              (WebIconFetcherClient::finishedFetchingIcon):
              (WebIconFetcherClient::setFetcher):
              (-[WebIconFetcher init]):
              (-[WebIconFetcher dealloc]):
              (-[WebIconFetcher finalize]):
              (-[WebIconFetcher cancel]):
              (-[WebIconFetcher _initWithIconFetcher:client:]):
              (+[WebIconFetcher _fetchApplicationIconForFrame:target:selector:]):
              * Misc/WebIconFetcherInternal.h: Added.
              * WebView/WebFrame.mm:
              (-[WebFrame fetchApplicationIcon:selector:]):
              * WebView/WebFramePrivate.h:
      
      
      
      git-svn-id: http://svn.webkit.org/repository/webkit/trunk@34025 268f45cc-cd09-0410-ab3c-d52691b4dbfc
      9541a22e
  20. 21 May, 2008 1 commit
  21. 23 Feb, 2008 1 commit
    • ddkilzer@apple.com's avatar
      WebCore: · 267da135
      ddkilzer@apple.com authored
              Please clarify licensing for some files
              <http://bugs.webkit.org/show_bug.cgi?id=14970>
      
              Reviewed by Darin.
      
              * bindings/objc/WebScriptObject.h: Added Apple BSD-style license.
              * bindings/objc/WebScriptObjectPrivate.h: Ditto.
              * platform/text/mac/ShapeArabic.c: Added ICU license from WebCore/icu/LICENSE.
      
      WebKit/mac:
      
              Please clarify licensing for some files
              <http://bugs.webkit.org/show_bug.cgi?id=14970>
      
              Reviewed by Darin.
      
              * Plugins/WebNetscapeDeprecatedFunctions.c: Updated copyright statement
              and added Apple BSD-style license.
              * Plugins/WebNetscapeDeprecatedFunctions.h: Ditto.
      
      WebKitTools:
      
              Please clarify licensing for some files
              <http://bugs.webkit.org/show_bug.cgi?id=14970>
      
              Reviewed by Darin.
      
              * DumpRenderTree/TestNetscapePlugIn.subproj/PluginObject.cpp: Added
              copyright statement.  Replaced license with newer Apple BSD-style license.
              * DumpRenderTree/TestNetscapePlugIn.subproj/PluginObject.h: Ditto.
              * DumpRenderTree/TestNetscapePlugIn.subproj/TestObject.cpp: Ditto.
              * DumpRenderTree/TestNetscapePlugIn.subproj/TestObject.h: Ditto.
              * DumpRenderTree/TestNetscapePlugIn.subproj/main.cpp: Ditto.
              * DumpRenderTree/win/TestNetscapePlugin/main.c: Ditto.
              * mangleme/LICENSE: Added (LGPL).
      
      
      
      git-svn-id: http://svn.webkit.org/repository/webkit/trunk@30520 268f45cc-cd09-0410-ab3c-d52691b4dbfc
      267da135
  22. 30 Mar, 2007 2 commits
    • andersca's avatar
      Reviewed by Geoff. · b5e193f8
      andersca authored
              * DumpRenderTree/TestNetscapePlugIn.subproj/TestObject.c:
              (testAllocate):
              (testEnumerate):
              Add casts.
              
              * DumpRenderTree/TestNetscapePlugIn.subproj/TestObject.h:
              Don't use #import, use #include.
      
      
      
      git-svn-id: http://svn.webkit.org/repository/webkit/trunk@20619 268f45cc-cd09-0410-ab3c-d52691b4dbfc
      b5e193f8
    • andersca's avatar
      JavaScriptCore: · 77d5e0d0
      andersca authored
              Reviewed by Geoff.
      
              Implement _NPN_Enumerate support.
              
              * JavaScriptCore.exp:
              * bindings/NP_jsobject.cpp:
              (_NPN_Enumerate):
              * bindings/c/c_instance.cpp:
              (KJS::Bindings::CInstance::getPropertyNames):
              * bindings/c/c_instance.h:
              * bindings/npapi.h:
              * bindings/npruntime.h:
              * bindings/npruntime_impl.h:
              * bindings/runtime.h:
              (KJS::Bindings::Instance::getPropertyNames):
              * bindings/runtime_object.cpp:
              (RuntimeObjectImp::getPropertyNames):
              * bindings/runtime_object.h:
              (KJS::RuntimeObjectImp::getInternalInstance):
      
      LayoutTests:
      
              Reviewed by Geoff.
      
              Add enumeration test.
              
              * plugins/netscape-enumerate-expected.txt: Added.
              * plugins/netscape-enumerate.html: Added.
      
      WebKit:
      
              Reviewed by Geoff.
      
              * Plugins/WebNetscapePluginPackage.m:
              (-[WebNetscapePluginPackage load]):
              Initialize pushpopupsenabledstate, poppopupsenabledstate and enumerate.
              
              * Plugins/npapi.m:
              (NPN_PushPopupsEnabledState):
              (NPN_PopPopupsEnabledState):
              Add stubs for these functions.
              
              * Plugins/npfunctions.h:
              Add new methods to NPNetscapeFuncs.
      
      WebKitTools:
      
              Reviewed by Geoff.
      
              * DumpRenderTree/DumpRenderTree.xcodeproj/project.pbxproj:
              Add TestObject.c and TestObject.h
              
              * DumpRenderTree/TestNetscapePlugIn.subproj/PluginObject.c:
              (pluginGetProperty):
              Implement the testObject property.
              
              (pluginInvoke):
              Implement testEnumerate which takes an object and an array and enumerates
              the properties of the object and adds them to the array.
              
              (pluginAllocate):
              Allocate the test object.
              
              (pluginDeallocate):
              Free the test object.
              
              * DumpRenderTree/TestNetscapePlugIn.subproj/TestObject.c: Added.
              * DumpRenderTree/TestNetscapePlugIn.subproj/TestObject.h: Added.
              Add a test object with two enumerable properties.
      
      
      
      git-svn-id: http://svn.webkit.org/repository/webkit/trunk@20613 268f45cc-cd09-0410-ab3c-d52691b4dbfc
      77d5e0d0
  23. 29 Mar, 2007 1 commit
    • ggaren's avatar
      LayoutTests: · 2663f9a7
      ggaren authored
              Reviewed by Beth Dakin.
              
              Layout test for <rdar://problem/5091330> REGRESSION: Repro crash in 
              -[WebBaseNetscapePluginView(WebNPPCallbacks) destroyStream:reason:] 
              navigating away from page with DivX movie plug-in (13203)
      
              * plugins/destroy-stream-twice-expected.txt: Added.
              * plugins/destroy-stream-twice.html: Added.
      
      WebKit:
      
              Reviewed by Beth Dakin, reviewed by Maciej Stachowiak.
              
              Layout test for <rdar://problem/5091330> REGRESSION: Repro crash in 
              -[WebBaseNetscapePluginView(WebNPPCallbacks) destroyStream:reason:] 
              navigating away from page with DivX movie plug-in (13203)
              
              Changed LOG_ERROR to LOG so the layout test doesn't produce console spew
              every time you run it.
      
              * Plugins/WebBaseNetscapePluginView.mm:
              (-[WebBaseNetscapePluginView destroyStream:reason:]):
      
      WebKitTools:
      
              Reviewed by Beth Dakin.
              
              Layout test for <rdar://problem/5091330> REGRESSION: Repro crash in 
              -[WebBaseNetscapePluginView(WebNPPCallbacks) destroyStream:reason:] 
              navigating away from page with DivX movie plug-in (13203)
              
              Added hasStream property and destroyStream function, used by layout test.
      
              * DumpRenderTree/TestNetscapePlugIn.subproj/PluginObject.c:
              (pluginGetProperty):
              (pluginInvoke):
              (pluginAllocate):
              * DumpRenderTree/TestNetscapePlugIn.subproj/PluginObject.h:
              * DumpRenderTree/TestNetscapePlugIn.subproj/main.c:
              (NPP_NewStream):
      
      
      
      git-svn-id: http://svn.webkit.org/repository/webkit/trunk@20597 268f45cc-cd09-0410-ab3c-d52691b4dbfc
      2663f9a7
  24. 05 Mar, 2007 1 commit
    • andersca's avatar
      LayoutTests: · 526c36f0
      andersca authored
              Reviewed by Adam, Darin.
      
              <rdar://problem/5025212>
              In Mail, a crash occurs at WebCore::Frame::tree() when clicking on embedded flash object
      
              * plugins/get-url-with-blank-target-expected.txt: Added.
              * plugins/get-url-with-blank-target.html: Added.
      
      WebKit:
      
              Reviewed by Adam, Darin.
       
              <rdar://problem/5025212>
              In Mail, a crash occurs at WebCore::Frame::tree() when clicking on embedded flash object
      
              * Plugins/WebBaseNetscapePluginView.mm:
              (-[WebBaseNetscapePluginView loadPluginRequest:]):
              Handle the case where the web view returned from the delegate method is null. Also, send out an error notification
              in that case so we can catch it.
      
      WebKitTools:
      
              Reviewed by Adam, Darin.
      
              <rdar://problem/5025212>
              In Mail, a crash occurs at WebCore::Frame::tree() when clicking on embedded flash object
              
              Add a "getURLNotify" method to the plugin object. This lets you pass a URL, a target and a callback function
              to be run when the URL has finished (or failed) loading.
              
              * DumpRenderTree/TestNetscapePlugIn.subproj/PluginObject.c:
              (pluginInvoke):
              (handleCallback):
              * DumpRenderTree/TestNetscapePlugIn.subproj/PluginObject.h:
              * DumpRenderTree/TestNetscapePlugIn.subproj/main.c:
              (NPP_URLNotify):
      
      
      
      git-svn-id: http://svn.webkit.org/repository/webkit/trunk@19966 268f45cc-cd09-0410-ab3c-d52691b4dbfc
      526c36f0
  25. 06 Nov, 2006 1 commit
    • ap's avatar
      Reviewed by Maciej. · fdfb9d6f
      ap authored
              http://bugs.webkit.org/show_bug.cgi?id=11517
              REGRESSION: Flash clicks/interactivity not working properly
      
      WebCore:
              * bridge/mac/FrameMac.mm:
              (WebCore::FrameMac::handleMouseMoveEvent):
              (WebCore::FrameMac::handleMouseReleaseEvent):
              Restore parts of event dispatching that were removed when fixing
              bug 7323 - just bypass those for subframes.
      
      WebKitTools:
              Teach TestNetscapePlugin to log events passed to it. To enable, set eventLoggingEnabled to true:
      
              <embed name="plg" type="application/x-webkit-test-netscape" width=100 height=100></embed>
              <script>
                  plg.eventLoggingEnabled = true;
                  // use eventSender to simulate events...
              </script>
      
              * DumpRenderTree/TestNetscapePlugIn.subproj/PluginObject.c:
              (pluginGetProperty):
              (pluginSetProperty):
              (pluginAllocate):
              * DumpRenderTree/TestNetscapePlugIn.subproj/PluginObject.h:
              * DumpRenderTree/TestNetscapePlugIn.subproj/main.c:
              (NPP_HandleEvent):
      
      LayoutTests:
              * plugins/mouse-events-expected.txt: Added.
              * plugins/mouse-events.html: Added.
      
      
      
      git-svn-id: http://svn.webkit.org/repository/webkit/trunk@17611 268f45cc-cd09-0410-ab3c-d52691b4dbfc
      fdfb9d6f
  26. 09 Mar, 2006 1 commit
    • darin's avatar
      Reviewed by John Sullivan. · 24fbf130
      darin authored
              - fix http://bugzilla.opendarwin.org/show_bug.cgi?id=7681
                memory leak in the plug-in tests
      
              * DumpRenderTree/TestNetscapePlugIn.subproj/main.c:
              (NPP_Destroy): Added code to release the plug-in object. This is the leak fix.
              (NPP_SetWindow): Remove unneeded code to store the window pointer.
      
              * DumpRenderTree/TestNetscapePlugIn.subproj/PluginObject.c:
              Moved the browser global in here since it's declared in this file's header.
              Changed the code to set up the pluginClass structure to not use function
              pointer casts. Those are dangerous because they can hide many types of mismatch.
              And indeed when I did this I discovered that many functions were missing their
              boolean return values or had parameter declarations with the wrong types.
              (pluginGetProperty): Use STRINGZ_TO_NPVARIANT macro for greater simplicity and
              clarity. Added boolean return value: return true when successful and false when not.
              (pluginSetProperty): Added boolean return value, return false since we have no
              properties we can set.
              (pluginInvoke): Added boolean return value. Return true when successful and false
              when not. Use NPVARIANT macros where appropriate. Added a missing release for the
              return value from calling the browser. Changed code to put the strings in malloc
              buffers instead of relying on GCC's extension that allows variable-sized arrays
              on the stack.
              (pluginInvokeDefault): Added boolean return value, return false since we have no
              default function to call.
              (pluginInvalidate): Added missing parameter. Removed comment.
              (pluginAllocate): Removed unneeded cast. This is C code, not C++, so you don't have
              to cast the result of malloc.
              (pluginDeallocate): Removed uneeded cast.
      
              * DumpRenderTree/TestNetscapePlugIn.subproj/PluginObject.h: Removed some unneeded
              includes. Changed our PluginObject to use NPObject instead of re-declaring fields
              that match NPObject's fields. Removed unused NPWindow pointer.
      
      
      
      git-svn-id: http://svn.webkit.org/repository/webkit/trunk@13233 268f45cc-cd09-0410-ab3c-d52691b4dbfc
      24fbf130
  27. 05 Jan, 2006 1 commit
    • ggaren's avatar
      LayoutTests: · 7dd73f87
      ggaren authored
              Layout test for http://bugzilla.opendarwin.org/show_bug.cgi?id=6318
              REGRESSION: Repro crash in JS called from Flash on bdash.net.nz
      
              * fast/plugins/netscape-back-forward-expected.txt: Added.
              * fast/plugins/netscape-back-forward.html: Added.
              * fast/plugins/resources/go-back.html: Added.
      
      WebKit:
      
              Reviewed by Darin.
      
              - Fixed http://bugzilla.opendarwin.org/show_bug.cgi?id=6361
              Add plugin support to DumpRenderTree
      
              * WebKit.exp: export WebPluginDatabase class, which DumpRenderTree
              needs to add plugins to the runtime.
      
      WebKitTools:
      
              Reviewed by darin.
      
              - Fixed http://bugzilla.opendarwin.org/show_bug.cgi?id=6361
              Add plugin support to DumpRenderTree
      
              Also wrote first test plugin.
      
              * DumpRenderTree/DumpRenderTree.m:
              (main):
              (1) Put the WebView in an invisible window, because PlugIns are
              optimized not to load if there's no parent window.
              (2) Tell WebKit to load any PlugIns in the directory from which we
              loaded. This means we can build nasty PlugIns alongside DumpRenderTree
              and they'll load automagically during layout testing, but they won't be
              added to the user's system, hosing apps like Safari.
      
              * DumpRenderTree/DumpRenderTree.xcodeproj/project.pbxproj: Added new
              test PlugIn to project.
      
              PlugIn added to project:
      
              * DumpRenderTree/TestNetscapePlugIn.subproj/Info.plist: Added.
              * DumpRenderTree/TestNetscapePlugIn.subproj/PluginObject.c: Added.
              (getPluginClass):
              (initializeIdentifiers):
              (pluginHasProperty):
              (pluginHasMethod):
              (pluginGetProperty):
              (pluginSetProperty):
              (pluginInvoke):
              (pluginInvokeDefault):
              (pluginInvalidate):
              (pluginAllocate):
              (pluginDeallocate):
              * DumpRenderTree/TestNetscapePlugIn.subproj/PluginObject.h: Added.
              * DumpRenderTree/TestNetscapePlugIn.subproj/main.c: Added.
              (NP_Initialize):
              (NP_GetEntryPoints):
              (NP_Shutdown):
              (NPP_New):
              (NPP_Destroy):
              (NPP_SetWindow):
              (NPP_NewStream):
              (NPP_DestroyStream):
              (NPP_WriteReady):
              (NPP_Write):
              (NPP_StreamAsFile):
              (NPP_Print):
              (NPP_HandleEvent):
              (NPP_URLNotify):
              (NPP_GetValue):
              (NPP_SetValue):
      
      
      git-svn-id: http://svn.webkit.org/repository/webkit/trunk@11885 268f45cc-cd09-0410-ab3c-d52691b4dbfc
      7dd73f87