Ignore:
Timestamp:
Oct 22, 2019, 2:23:26 PM (6 years ago)
Author:
[email protected]
Message:

[JSC] Remove non-LargeAllocation restriction for JSCallee
https://bugs.webkit.org/show_bug.cgi?id=203260

Reviewed by Saam Barati.

Source/JavaScriptCore:

We now pass JSGlobalObject* instead of ExecState*. And we are getting VM& from JSGlobalObject*.
Because now accessing ExecState::vm() becomes less frequent, we can remove the restriction that
callee is only allocated in non-LargeAllocation, which restriction made ExecState::vm fast.

This patch renames CallFrame::vm to CallFrame::deprecatedVM. And we avoid using it as much as possible.
And we also remove the restriction that callee needs to be in non-LargeAllocation.

  • API/JSContextRef.cpp:

(JSContextCreateBacktrace):

  • bytecode/CodeBlock.cpp:

(JSC::CodeBlock::noticeIncomingCall):

  • debugger/DebuggerCallFrame.cpp:

(JSC::DebuggerCallFrame::deprecatedVMEntryGlobalObject const):
(JSC::DebuggerCallFrame::functionName const):
(JSC::DebuggerCallFrame::scope):
(JSC::DebuggerCallFrame::type const):
(JSC::DebuggerCallFrame::evaluateWithScopeExtension):
(JSC::DebuggerCallFrame::positionForCallFrame):

  • dfg/DFGOSRExit.cpp:

(JSC::DFG::OSRExit::executeOSRExit):
(JSC::DFG::OSRExit::compileOSRExit):
(JSC::DFG::OSRExit::debugOperationPrintSpeculationFailure):

  • dfg/DFGOperations.cpp:
  • ftl/FTLOSRExitCompiler.cpp:

(JSC::FTL::compileFTLOSRExit):

  • ftl/FTLOperations.cpp:

(JSC::FTL::compileFTLLazySlowPath):

  • inspector/JSInjectedScriptHost.cpp:

(Inspector::JSInjectedScriptHost::evaluateWithScopeExtension):

  • inspector/ScriptCallStackFactory.cpp:

(Inspector::createScriptCallStack):
(Inspector::createScriptCallStackForConsole):

  • interpreter/CallFrame.cpp:

(JSC::CallFrame::callerSourceOrigin):
(JSC::CallFrame::friendlyFunctionName):

  • interpreter/CallFrame.h:

(JSC::CallFrame::iterate):

  • interpreter/Interpreter.cpp:

(JSC::sizeOfVarargs):
(JSC::sizeFrameForVarargs):
(JSC::Interpreter::getStackTrace):
(JSC::Interpreter::unwind):
(JSC::Interpreter::notifyDebuggerOfExceptionToBeThrown):
(JSC::Interpreter::debug):

  • interpreter/Interpreter.h:
  • interpreter/ShadowChicken.cpp:

(JSC::ShadowChicken::update):

  • interpreter/StackVisitor.cpp:

(JSC::StackVisitor::StackVisitor):
(JSC::StackVisitor::Frame::functionName const):

  • interpreter/StackVisitor.h:

(JSC::StackVisitor::visit):

  • jit/HostCallReturnValue.cpp:

(JSC::getHostCallReturnValueWithExecState):

  • jit/JITOperations.cpp:
  • jit/Repatch.cpp:

(JSC::linkFor):
(JSC::linkPolymorphicCall):

  • jit/Repatch.h:
  • jsc.cpp:

(functionJSCStack):
(functionRunString):
(functionLoadString):
(functionCallerSourceOrigin):
(functionCallerIsOMGCompiled):
(functionDollarEvalScript):

  • llint/LLIntSlowPaths.cpp:

(JSC::LLInt::LLINT_SLOW_PATH_DECL):

  • runtime/Error.cpp:

(JSC::getBytecodeOffset):

  • runtime/FunctionConstructor.cpp:

(JSC::constructFunction):

  • runtime/JSCellInlines.h:

(JSC::CallFrame::deprecatedVM const):
(JSC::CallFrame::vm const): Deleted.

  • runtime/JSFunction.cpp:

(JSC::retrieveArguments):
(JSC::JSFunction::argumentsGetter):
(JSC::retrieveCallerFunction):
(JSC::JSFunction::callerGetter):
(JSC::JSFunction::defineOwnProperty):

  • runtime/JSGlobalObject.cpp:

(JSC::assertCall):

  • runtime/JSGlobalObjectFunctions.cpp:

(JSC::globalFuncEval):
(JSC::globalFuncImportModule):

  • runtime/NullSetterFunction.cpp:

(JSC::callerIsStrict):
(JSC::NullSetterFunctionInternal::callReturnUndefined):

  • tools/JSDollarVM.cpp:

(IGNORE_WARNINGS_BEGIN):
(JSC::functionLLintTrue):
(JSC::functionJITTrue):
(JSC::functionDumpRegisters):
(JSC::functionShadowChickenFunctionsOnStack):

  • tools/VMInspector.cpp:

(JSC::VMInspector::codeBlockForFrame):
(JSC::VMInspector::dumpCallFrame):
(JSC::VMInspector::dumpRegisters):
(JSC::VMInspector::dumpStack):

  • wasm/js/WasmToJS.cpp:

(JSC::Wasm::wasmToJS):

Source/WebCore:

Passing VM& instead of calling CallFrame::vm.

  • bindings/js/JSDOMGlobalObject.cpp:

(WebCore::callerGlobalObject):

  • bindings/js/JSDOMWindowBase.cpp:

(WebCore::responsibleDocument):

  • bindings/js/JSDOMWindowBase.h:
  • bindings/scripts/CodeGeneratorJS.pm:

(GenerateCallWith):

  • testing/Internals.cpp:

(WebCore::Internals::parserMetaData):

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/JavaScriptCore/debugger/DebuggerCallFrame.cpp

    r251425 r251457  
    125125    if (!isValid())
    126126        return nullptr;
    127     VM& vm = m_validMachineFrame->vm();
     127    VM& vm = m_validMachineFrame->deprecatedVM();
    128128    return vm.deprecatedVMEntryGlobalObject(m_validMachineFrame->wasmAwareLexicalGlobalObject(vm));
    129129}
     
    145145        return String();
    146146
    147     VM& vm = m_validMachineFrame->vm();
     147    VM& vm = m_validMachineFrame->deprecatedVM();
    148148    if (isTailDeleted()) {
    149149        if (JSFunction* func = jsDynamicCast<JSFunction*>(vm, m_shadowChickenFrame.callee))
     
    162162
    163163    if (!m_scope) {
    164         VM& vm = m_validMachineFrame->vm();
     164        VM& vm = m_validMachineFrame->deprecatedVM();
    165165        JSScope* scope;
    166166        CodeBlock* codeBlock = m_validMachineFrame->codeBlock();
     
    188188        return FunctionType;
    189189
    190     if (jsDynamicCast<JSFunction*>(m_validMachineFrame->vm(), m_validMachineFrame->jsCallee()))
     190    if (jsDynamicCast<JSFunction*>(m_validMachineFrame->deprecatedVM(), m_validMachineFrame->jsCallee()))
    191191        return FunctionType;
    192192
     
    227227        return jsUndefined();
    228228
    229     VM& vm = callFrame->vm();
     229    VM& vm = callFrame->deprecatedVM();
    230230    JSLockHolder lock(vm);
    231231    auto catchScope = DECLARE_CATCH_SCOPE(vm);
     
    254254    JSScope::collectClosureVariablesUnderTDZ(scope()->jsScope(), variablesUnderTDZ);
    255255
    256     auto* eval = DirectEvalExecutable::create(globalObject, makeSource(script, callFrame->callerSourceOrigin()), codeBlock->isStrictMode(), codeBlock->unlinkedCodeBlock()->derivedContextType(), codeBlock->unlinkedCodeBlock()->isArrowFunction(), evalContextType, &variablesUnderTDZ);
     256    auto* eval = DirectEvalExecutable::create(globalObject, makeSource(script, callFrame->callerSourceOrigin(vm)), codeBlock->isStrictMode(), codeBlock->unlinkedCodeBlock()->derivedContextType(), codeBlock->unlinkedCodeBlock()->isArrowFunction(), evalContextType, &variablesUnderTDZ);
    257257    if (UNLIKELY(catchScope.exception())) {
    258258        exception = catchScope.exception();
     
    312312{
    313313    LineAndColumnFunctor functor;
    314     StackVisitor::visit(callFrame, &vm, functor);
     314    StackVisitor::visit(callFrame, vm, functor);
    315315    return TextPosition(OrdinalNumber::fromOneBasedInt(functor.line()), OrdinalNumber::fromOneBasedInt(functor.column()));
    316316}
Note: See TracChangeset for help on using the changeset viewer.