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
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
63 files changed