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/interpreter/Interpreter.cpp

    r251425 r251457  
    177177}
    178178
    179 unsigned sizeOfVarargs(JSGlobalObject* globalObject, CallFrame* callFrame, JSValue arguments, uint32_t firstVarArgOffset)
    180 {
    181     VM& vm = callFrame->vm();
     179unsigned sizeOfVarargs(JSGlobalObject* globalObject, JSValue arguments, uint32_t firstVarArgOffset)
     180{
     181    VM& vm = globalObject->vm();
    182182    auto scope = DECLARE_THROW_SCOPE(vm);
    183183
     
    242242    auto scope = DECLARE_THROW_SCOPE(vm);
    243243
    244     unsigned length = sizeOfVarargs(globalObject, callFrame, arguments, firstVarArgOffset);
     244    unsigned length = sizeOfVarargs(globalObject, arguments, firstVarArgOffset);
    245245    RETURN_IF_EXCEPTION(scope, 0);
    246246
     
    441441    size_t framesCount = 0;
    442442    size_t maxFramesCountNeeded = maxStackSize + framesToSkip;
    443     StackVisitor::visit(callFrame, &vm, [&] (StackVisitor&) -> StackVisitor::Status {
     443    StackVisitor::visit(callFrame, vm, [&] (StackVisitor&) -> StackVisitor::Status {
    444444        if (++framesCount < maxFramesCountNeeded)
    445445            return StackVisitor::Continue;
     
    453453
    454454    GetStackTraceFunctor functor(vm, owner, results, framesToSkip, framesCount);
    455     StackVisitor::visit(callFrame, &vm, functor);
     455    StackVisitor::visit(callFrame, vm, functor);
    456456    ASSERT(results.size() == results.capacity());
    457457}
     
    628628    HandlerInfo* handler = nullptr;
    629629    UnwindFunctor functor(vm, callFrame, isTerminatedExecutionException(vm, exception), codeBlock, handler);
    630     StackVisitor::visit<StackVisitor::TerminateIfTopEntryFrameIsEmpty>(callFrame, &vm, functor);
     630    StackVisitor::visit<StackVisitor::TerminateIfTopEntryFrameIsEmpty>(callFrame, vm, functor);
    631631    if (!handler)
    632632        return nullptr;
     
    650650        else {
    651651            GetCatchHandlerFunctor functor;
    652             StackVisitor::visit(callFrame, &vm, functor);
     652            StackVisitor::visit(callFrame, vm, functor);
    653653            HandlerInfo* handler = functor.handler();
    654654            ASSERT(!handler || handler->isCatchHandler());
     
    12151215NEVER_INLINE void Interpreter::debug(CallFrame* callFrame, DebugHookType debugHookType)
    12161216{
    1217     VM& vm = callFrame->vm();
     1217    VM& vm = callFrame->deprecatedVM();
    12181218    auto scope = DECLARE_CATCH_SCOPE(vm);
    12191219    Debugger* debugger = callFrame->lexicalGlobalObject()->debugger();
Note: See TracChangeset for help on using the changeset viewer.