Skip to content
  • oliver@apple.com's avatar
    2011-02-28 Oliver Hunt <oliver@apple.com> · 97cdbd4c
    oliver@apple.com authored
            Reviewed by Gavin Barraclough.
    
            Make ScopeChainNode GC allocated
            https://bugs.webkit.org/show_bug.cgi?id=55283
    
            Simplify lifetime and other issues with the scopechain
            by making it gc allocated.  This allows us to simplify
            function exit and unwinding, as well as making the
            current iterative refcounting go away.
    
            * JavaScriptCore.exp:
            * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
            * bytecode/CodeBlock.cpp:
            (JSC::CodeBlock::createActivation):
            * bytecode/StructureStubInfo.cpp:
            * bytecompiler/BytecodeGenerator.cpp:
            (JSC::BytecodeGenerator::generate):
            (JSC::BytecodeGenerator::BytecodeGenerator):
            (JSC::BytecodeGenerator::emitJumpIfNotFunctionCall):
            (JSC::BytecodeGenerator::emitJumpIfNotFunctionApply):
            * bytecompiler/BytecodeGenerator.h:
            * debugger/Debugger.cpp:
            (JSC::Recompiler::operator()):
            * debugger/DebuggerCallFrame.h:
            (JSC::DebuggerCallFrame::scopeChain):
            * interpreter/CachedCall.h:
            (JSC::CachedCall::CachedCall):
            * interpreter/CallFrame.h:
            * interpreter/Interpreter.cpp:
            (JSC::depth):
            (JSC::Interpreter::unwindCallFrame):
            (JSC::Interpreter::throwException):
            (JSC::Interpreter::execute):
            (JSC::Interpreter::executeCall):
            (JSC::Interpreter::executeConstruct):
            (JSC::Interpreter::privateExecute):
            * jit/JITCall.cpp:
            (JSC::JIT::compileOpCallInitializeCallFrame):
            (JSC::JIT::compileOpCall):
            * jit/JITCall32_64.cpp:
            (JSC::JIT::compileOpCallInitializeCallFrame):
            (JSC::JIT::emit_op_ret):
            (JSC::JIT::emit_op_ret_object_or_this):
            (JSC::JIT::compileOpCall):
            * jit/JITOpcodes.cpp:
            (JSC::JIT::emit_op_end):
            (JSC::JIT::emit_op_ret):
            (JSC::JIT::emit_op_ret_object_or_this):
            * jit/JITOpcodes32_64.cpp:
            (JSC::JIT::emit_op_end):
            * jit/JITStubs.cpp:
            (JSC::DEFINE_STUB_FUNCTION):
            * jit/JITStubs.h:
            * runtime/ArgList.cpp:
            * runtime/Completion.cpp:
            (JSC::evaluate):
            * runtime/Completion.h:
            * runtime/DateConversion.cpp:
            * runtime/Executable.cpp:
            (JSC::EvalExecutable::compileInternal):
            (JSC::ProgramExecutable::compileInternal):
            (JSC::FunctionExecutable::compileForCallInternal):
            (JSC::FunctionExecutable::compileForConstructInternal):
            * runtime/FunctionConstructor.cpp:
            (JSC::constructFunction):
            * runtime/GCActivityCallbackCF.cpp:
            * runtime/Identifier.cpp:
            * runtime/JSCell.h:
            * runtime/JSChunk.cpp: Added.
            * runtime/JSChunk.h: Added.
            * runtime/JSFunction.cpp:
            (JSC::JSFunction::JSFunction):
            (JSC::JSFunction::markChildren):
            (JSC::JSFunction::getCallData):
            (JSC::JSFunction::getOwnPropertySlot):
            (JSC::JSFunction::getConstructData):
            * runtime/JSFunction.h:
            (JSC::JSFunction::scope):
            (JSC::JSFunction::setScope):
            * runtime/JSGlobalData.cpp:
            (JSC::JSGlobalData::JSGlobalData):
            * runtime/JSGlobalData.h:
            * runtime/JSGlobalObject.cpp:
            (JSC::JSGlobalObject::init):
            (JSC::JSGlobalObject::markChildren):
            * runtime/JSGlobalObject.h:
            (JSC::JSGlobalObject::JSGlobalObjectData::JSGlobalObjectData):
            (JSC::JSGlobalObject::globalScopeChain):
            * runtime/JSGlobalObjectFunctions.cpp:
            (JSC::globalFuncEval):
            * runtime/JSLock.cpp:
            * runtime/JSNumberCell.cpp:
            * runtime/JSZombie.cpp:
            * runtime/MarkedBlock.cpp:
            * runtime/MarkedSpace.cpp:
            * runtime/PropertyNameArray.cpp:
            * runtime/ScopeChain.cpp:
            (JSC::ScopeChainNode::print):
            (JSC::ScopeChainNode::localDepth):
            (JSC::ScopeChainNode::markChildren):
            * runtime/ScopeChain.h:
            (JSC::ScopeChainNode::ScopeChainNode):
            (JSC::ScopeChainNode::createStructure):
            (JSC::ScopeChainNode::push):
            (JSC::ScopeChainNode::pop):
            (JSC::ScopeChainIterator::ScopeChainIterator):
            (JSC::ScopeChainIterator::operator*):
            (JSC::ScopeChainIterator::operator->):
            (JSC::ScopeChainIterator::operator++):
            (JSC::ScopeChainNode::begin):
            (JSC::ScopeChainNode::end):
            (JSC::ExecState::globalData):
            (JSC::ExecState::lexicalGlobalObject):
            (JSC::ExecState::globalThisValue):
            * runtime/ScopeChainMark.h:
            * wtf/DateMath.cpp:
    2011-02-28  Oliver Hunt  <oliver@apple.com>
    
            Reviewed by Gavin Barraclough.
    
            Make ScopeChainNode GC allocated
            https://bugs.webkit.org/show_bug.cgi?id=55283
    
            Update WebCore to deal with the absence of the ScopeChain
            class.
    
            * ForwardingHeaders/runtime/ScopeChain.h: Added.
            * bindings/js/JSHTMLElementCustom.cpp:
            (WebCore::JSHTMLElement::pushEventHandlerScope):
            * bindings/js/JSJavaScriptCallFrameCustom.cpp:
            (WebCore::JSJavaScriptCallFrame::scopeChain):
            (WebCore::JSJavaScriptCallFrame::scopeType):
            * bindings/js/JSLazyEventListener.cpp:
            (WebCore::JSLazyEventListener::initializeJSFunction):
            * bindings/js/JSMainThreadExecState.h:
            (WebCore::JSMainThreadExecState::evaluate):
            * bindings/js/JSNodeCustom.cpp:
            (WebCore::JSNode::pushEventHandlerScope):
            * bindings/js/JavaScriptCallFrame.cpp:
            (WebCore::JavaScriptCallFrame::scopeChain):
            * bindings/js/JavaScriptCallFrame.h:
            * bindings/scripts/CodeGeneratorJS.pm:
            * bridge/c/c_class.cpp:
            * bridge/c/c_runtime.cpp:
            * bridge/jni/JNIBridge.cpp:
            * bridge/qt/qt_runtime.cpp:
            (JSC::Bindings::QtConnectionObject::execute):
            * plugins/PluginViewNone.cpp:
    2011-02-28  Oliver Hunt  <oliver@apple.com>
    
            Reviewed by Gavin Barraclough.
    
            Make ScopeChainNode GC allocated
            https://bugs.webkit.org/show_bug.cgi?id=55283
    
            More updates for the absence of the ScopeChain class
    
            * WebView/WebScriptDebugDelegate.mm:
            (-[WebScriptCallFrame scopeChain]):
    
    git-svn-id: http://svn.webkit.org/repository/webkit/trunk@79904 268f45cc-cd09-0410-ab3c-d52691b4dbfc
    97cdbd4c