Changeset 292891 in webkit
- Timestamp:
- Apr 14, 2022, 2:56:27 PM (4 years ago)
- Location:
- trunk/Source
- Files:
-
- 10 edited
-
JavaScriptCore/ChangeLog (modified) (1 diff)
-
JavaScriptCore/debugger/Debugger.cpp (modified) (7 diffs)
-
JavaScriptCore/debugger/DebuggerCallFrame.cpp (modified) (11 diffs)
-
JavaScriptCore/debugger/DebuggerCallFrame.h (modified) (2 diffs)
-
JavaScriptCore/inspector/JSJavaScriptCallFrame.cpp (modified) (5 diffs)
-
JavaScriptCore/inspector/JavaScriptCallFrame.h (modified) (1 diff)
-
JavaScriptCore/inspector/agents/InspectorDebuggerAgent.cpp (modified) (2 diffs)
-
JavaScriptCore/interpreter/Interpreter.cpp (modified) (1 diff)
-
WebKitLegacy/mac/ChangeLog (modified) (1 diff)
-
WebKitLegacy/mac/WebView/WebScriptDebugger.mm (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/JavaScriptCore/ChangeLog
r292886 r292891 1 2022-04-14 Yusuke Suzuki <ysuzuki@apple.com> 2 3 [JSC] Reduce use of CallFrame::deprecatedVM 4 https://bugs.webkit.org/show_bug.cgi?id=239326 5 6 Reviewed by Devin Rousso. 7 8 Reduce use of CallFrame::deprecatedVM, mainly in inspector related code to eventually remove CallFrame::deprecatedVM. 9 10 * debugger/Debugger.cpp: 11 (JSC::Debugger::evaluateBreakpointCondition): 12 (JSC::Debugger::evaluateBreakpointActions): 13 (JSC::Debugger::exceptionOrCaughtValue): 14 * debugger/DebuggerCallFrame.cpp: 15 (JSC::DebuggerCallFrame::globalObject): 16 (JSC::DebuggerCallFrame::functionName const): 17 (JSC::DebuggerCallFrame::scope): 18 (JSC::DebuggerCallFrame::type const): 19 (JSC::DebuggerCallFrame::evaluateWithScopeExtension): 20 (JSC::DebuggerCallFrame::deprecatedVMEntryGlobalObject const): Deleted. 21 * debugger/DebuggerCallFrame.h: 22 * inspector/JSJavaScriptCallFrame.cpp: 23 (Inspector::JSJavaScriptCallFrame::evaluateWithScopeExtension): 24 (Inspector::JSJavaScriptCallFrame::scopeDescriptions): 25 (Inspector::JSJavaScriptCallFrame::functionName const): 26 (Inspector::JSJavaScriptCallFrame::scopeChain const): 27 (Inspector::JSJavaScriptCallFrame::type const): 28 * inspector/JavaScriptCallFrame.h: 29 (Inspector::JavaScriptCallFrame::functionName const): 30 (Inspector::JavaScriptCallFrame::type const): 31 (Inspector::JavaScriptCallFrame::scopeChain const): 32 (Inspector::JavaScriptCallFrame::evaluateWithScopeExtension const): 33 (Inspector::JavaScriptCallFrame::deprecatedVMEntryGlobalObject const): Deleted. 34 * inspector/agents/InspectorDebuggerAgent.cpp: 35 (Inspector::InspectorDebuggerAgent::debuggerScopeExtensionObject): 36 (Inspector::InspectorDebuggerAgent::didPause): 37 * interpreter/Interpreter.cpp: 38 (JSC::Interpreter::debug): 39 1 40 2022-04-14 Alexey Shvayka <ashvayka@apple.com> 2 41 -
trunk/Source/JavaScriptCore/debugger/Debugger.cpp
r292830 r292891 608 608 ASSERT(isAttached(globalObject)); 609 609 610 VM& vm = globalObject->vm(); 610 611 const String& condition = breakpoint.condition(); 611 612 if (condition.isEmpty()) … … 615 616 DebuggerCallFrame& debuggerCallFrame = currentDebuggerCallFrame(); 616 617 JSObject* scopeExtensionObject = m_client ? m_client->debuggerScopeExtensionObject(*this, globalObject, debuggerCallFrame) : nullptr; 617 JSValue result = debuggerCallFrame.evaluateWithScopeExtension( condition, scopeExtensionObject, exception);618 JSValue result = debuggerCallFrame.evaluateWithScopeExtension(vm, condition, scopeExtensionObject, exception); 618 619 619 620 // We can lose the debugger while executing JavaScript. … … 634 635 ASSERT(isAttached(globalObject)); 635 636 637 VM& vm = globalObject->vm(); 638 636 639 m_currentProbeBatchId++; 637 640 … … 645 648 case Breakpoint::Action::Type::Log: 646 649 dispatchFunctionToObservers([&] (Observer& observer) { 647 observer.breakpointActionLog(debuggerCallFrame.globalObject( ), action.data);650 observer.breakpointActionLog(debuggerCallFrame.globalObject(vm), action.data); 648 651 }); 649 652 break; … … 652 655 NakedPtr<Exception> exception; 653 656 JSObject* scopeExtensionObject = m_client ? m_client->debuggerScopeExtensionObject(*this, globalObject, debuggerCallFrame) : nullptr; 654 debuggerCallFrame.evaluateWithScopeExtension( action.data, scopeExtensionObject, exception);657 debuggerCallFrame.evaluateWithScopeExtension(vm, action.data, scopeExtensionObject, exception); 655 658 if (exception) 656 reportException(debuggerCallFrame.globalObject( ), exception);659 reportException(debuggerCallFrame.globalObject(vm), exception); 657 660 break; 658 661 } … … 667 670 NakedPtr<Exception> exception; 668 671 JSObject* scopeExtensionObject = m_client ? m_client->debuggerScopeExtensionObject(*this, globalObject, debuggerCallFrame) : nullptr; 669 JSValue result = debuggerCallFrame.evaluateWithScopeExtension( action.data, scopeExtensionObject, exception);670 JSC::JSGlobalObject* debuggerGlobalObject = debuggerCallFrame.globalObject( );672 JSValue result = debuggerCallFrame.evaluateWithScopeExtension(vm, action.data, scopeExtensionObject, exception); 673 JSC::JSGlobalObject* debuggerGlobalObject = debuggerCallFrame.globalObject(vm); 671 674 if (exception) 672 675 reportException(debuggerGlobalObject, exception); … … 1027 1030 return currentException(); 1028 1031 1032 VM& vm = globalObject->vm(); 1029 1033 for (RefPtr<DebuggerCallFrame> frame = ¤tDebuggerCallFrame(); frame; frame = frame->callerFrame()) { 1030 DebuggerScope& scope = *frame->scope( );1034 DebuggerScope& scope = *frame->scope(vm); 1031 1035 if (scope.isCatchScope()) 1032 1036 return scope.caughtValue(globalObject); -
trunk/Source/JavaScriptCore/debugger/DebuggerCallFrame.cpp
r292830 r292891 112 112 } 113 113 114 JSGlobalObject* DebuggerCallFrame::globalObject() 115 { 116 return scope()->globalObject(); 117 } 118 119 JSC::JSGlobalObject* DebuggerCallFrame::deprecatedVMEntryGlobalObject() const 120 { 121 ASSERT(isValid()); 122 if (!isValid()) 123 return nullptr; 124 VM& vm = m_validMachineFrame->deprecatedVM(); 125 return vm.deprecatedVMEntryGlobalObject(m_validMachineFrame->lexicalGlobalObject(vm)); 114 JSGlobalObject* DebuggerCallFrame::globalObject(VM& vm) 115 { 116 return scope(vm)->globalObject(); 126 117 } 127 118 … … 136 127 } 137 128 138 String DebuggerCallFrame::functionName( ) const129 String DebuggerCallFrame::functionName(VM& vm) const 139 130 { 140 131 ASSERT(isValid()); … … 142 133 return String(); 143 134 144 VM& vm = m_validMachineFrame->deprecatedVM();145 135 if (isTailDeleted()) { 146 136 if (JSFunction* func = jsDynamicCast<JSFunction*>(vm, m_shadowChickenFrame.callee)) … … 152 142 } 153 143 154 DebuggerScope* DebuggerCallFrame::scope( )144 DebuggerScope* DebuggerCallFrame::scope(VM& vm) 155 145 { 156 146 ASSERT(isValid()); … … 159 149 160 150 if (!m_scope) { 161 VM& vm = m_validMachineFrame->deprecatedVM();162 151 JSScope* scope; 163 152 CodeBlock* codeBlock = m_validMachineFrame->codeBlock(); … … 176 165 } 177 166 178 DebuggerCallFrame::Type DebuggerCallFrame::type( ) const167 DebuggerCallFrame::Type DebuggerCallFrame::type(VM& vm) const 179 168 { 180 169 ASSERT(isValid()); … … 185 174 return FunctionType; 186 175 187 if (jsDynamicCast<JSFunction*>( m_validMachineFrame->deprecatedVM(), m_validMachineFrame->jsCallee()))176 if (jsDynamicCast<JSFunction*>(vm, m_validMachineFrame->jsCallee())) 188 177 return FunctionType; 189 178 … … 217 206 218 207 // Evaluate some JavaScript code in the scope of this frame. 219 JSValue DebuggerCallFrame::evaluateWithScopeExtension( const String& script, JSObject* scopeExtensionObject, NakedPtr<Exception>& exception)208 JSValue DebuggerCallFrame::evaluateWithScopeExtension(VM& vm, const String& script, JSObject* scopeExtensionObject, NakedPtr<Exception>& exception) 220 209 { 221 210 CallFrame* callFrame = nullptr; … … 243 232 return jsUndefined(); 244 233 245 VM& vm = callFrame->deprecatedVM();246 234 JSLockHolder lock(vm); 247 235 auto catchScope = DECLARE_CATCH_SCOPE(vm); … … 261 249 TDZEnvironment variablesUnderTDZ; 262 250 PrivateNameEnvironment privateNameEnvironment; 263 JSScope::collectClosureVariablesUnderTDZ(scope( )->jsScope(), variablesUnderTDZ, privateNameEnvironment);251 JSScope::collectClosureVariablesUnderTDZ(scope(vm)->jsScope(), variablesUnderTDZ, privateNameEnvironment); 264 252 265 253 ECMAMode ecmaMode = codeBlock->ownerExecutable()->isInStrictContext() ? ECMAMode::strict() : ECMAMode::sloppy(); … … 276 264 } 277 265 278 JSValue result = vm.interpreter->execute(eval, globalObject, debuggerCallFrame->thisValue(vm), debuggerCallFrame->scope( )->jsScope());266 JSValue result = vm.interpreter->execute(eval, globalObject, debuggerCallFrame->thisValue(vm), debuggerCallFrame->scope(vm)->jsScope()); 279 267 if (UNLIKELY(catchScope.exception())) { 280 268 exception = catchScope.exception(); -
trunk/Source/JavaScriptCore/debugger/DebuggerCallFrame.h
r266534 r292891 49 49 50 50 JS_EXPORT_PRIVATE RefPtr<DebuggerCallFrame> callerFrame(); 51 JSGlobalObject* globalObject( );51 JSGlobalObject* globalObject(VM&); 52 52 JS_EXPORT_PRIVATE SourceID sourceID() const; 53 53 … … 57 57 JS_EXPORT_PRIVATE const TextPosition& position() const { return m_position; } 58 58 59 JS_EXPORT_PRIVATE JSGlobalObject* deprecatedVMEntryGlobalObject() const; 60 JS_EXPORT_PRIVATE DebuggerScope* scope(); 61 JS_EXPORT_PRIVATE String functionName() const; 62 JS_EXPORT_PRIVATE Type type() const; 59 JS_EXPORT_PRIVATE DebuggerScope* scope(VM&); 60 JS_EXPORT_PRIVATE String functionName(VM&) const; 61 JS_EXPORT_PRIVATE Type type(VM&) const; 63 62 JS_EXPORT_PRIVATE JSValue thisValue(VM&) const; 64 63 65 JSValue evaluateWithScopeExtension( const String&, JSObject* scopeExtensionObject, NakedPtr<Exception>&);64 JSValue evaluateWithScopeExtension(VM&, const String&, JSObject* scopeExtensionObject, NakedPtr<Exception>&); 66 65 67 66 bool isValid() const { return !!m_validMachineFrame || isTailDeleted(); } -
trunk/Source/JavaScriptCore/inspector/JSJavaScriptCallFrame.cpp
r292118 r292891 86 86 NakedPtr<Exception> exception; 87 87 JSObject* scopeExtension = callFrame->argument(1).getObject(); 88 JSValue result = impl().evaluateWithScopeExtension( script, scopeExtension, exception);88 JSValue result = impl().evaluateWithScopeExtension(vm, script, scopeExtension, exception); 89 89 if (exception) 90 90 throwException(globalObject, scope, exception); … … 131 131 auto throwScope = DECLARE_THROW_SCOPE(vm); 132 132 133 DebuggerScope* scopeChain = impl().scopeChain( );133 DebuggerScope* scopeChain = impl().scopeChain(vm); 134 134 if (!scopeChain) 135 135 return jsUndefined(); … … 174 174 JSValue JSJavaScriptCallFrame::functionName(JSGlobalObject* globalObject) const 175 175 { 176 return jsString(globalObject->vm(), impl().functionName()); 176 VM& vm = globalObject->vm(); 177 return jsString(vm, impl().functionName(vm)); 177 178 } 178 179 … … 182 183 auto scope = DECLARE_THROW_SCOPE(vm); 183 184 184 if (!impl().scopeChain( ))185 if (!impl().scopeChain(vm)) 185 186 return jsNull(); 186 187 187 DebuggerScope* scopeChain = impl().scopeChain( );188 DebuggerScope* scopeChain = impl().scopeChain(vm); 188 189 DebuggerScope::iterator iter = scopeChain->begin(); 189 190 DebuggerScope::iterator end = scopeChain->end(); … … 218 219 { 219 220 VM& vm = globalObject->vm(); 220 switch (impl().type( )) {221 switch (impl().type(vm)) { 221 222 case DebuggerCallFrame::FunctionType: 222 223 return jsNontrivialString(vm, "function"_s); -
trunk/Source/JavaScriptCore/inspector/JavaScriptCallFrame.h
r283903 r292891 47 47 int column() const { return m_debuggerCallFrame->column(); } 48 48 49 String functionName() const { return m_debuggerCallFrame->functionName(); } 50 JSC::DebuggerCallFrame::Type type() const { return m_debuggerCallFrame->type(); } 51 JSC::DebuggerScope* scopeChain() const { return m_debuggerCallFrame->scope(); } 52 JSC::JSGlobalObject* deprecatedVMEntryGlobalObject() const { return m_debuggerCallFrame->deprecatedVMEntryGlobalObject(); } 49 String functionName(JSC::VM& vm) const { return m_debuggerCallFrame->functionName(vm); } 50 JSC::DebuggerCallFrame::Type type(JSC::VM& vm) const { return m_debuggerCallFrame->type(vm); } 51 JSC::DebuggerScope* scopeChain(JSC::VM& vm) const { return m_debuggerCallFrame->scope(vm); } 53 52 bool isTailDeleted() const { return m_debuggerCallFrame->isTailDeleted(); } 54 53 55 54 JSC::JSValue thisValue(JSC::VM& vm) const { return m_debuggerCallFrame->thisValue(vm); } 56 JSC::JSValue evaluateWithScopeExtension( const String& script, JSC::JSObject* scopeExtension, NakedPtr<JSC::Exception>& exception) const { return m_debuggerCallFrame->evaluateWithScopeExtension(script, scopeExtension, exception); }55 JSC::JSValue evaluateWithScopeExtension(JSC::VM& vm, const String& script, JSC::JSObject* scopeExtension, NakedPtr<JSC::Exception>& exception) const { return m_debuggerCallFrame->evaluateWithScopeExtension(vm, script, scopeExtension, exception); } 57 56 58 57 private: -
trunk/Source/JavaScriptCore/inspector/agents/InspectorDebuggerAgent.cpp
r291779 r292891 1128 1128 return JSC::Debugger::Client::debuggerScopeExtensionObject(debugger, globalObject, debuggerCallFrame); 1129 1129 1130 auto* debuggerGlobalObject = debuggerCallFrame.scope( )->globalObject();1130 auto* debuggerGlobalObject = debuggerCallFrame.scope(globalObject->vm())->globalObject(); 1131 1131 auto callFrame = toJS(debuggerGlobalObject, debuggerGlobalObject, JavaScriptCallFrame::create(debuggerCallFrame).ptr()); 1132 1132 return injectedScript.createCommandLineAPIObject(callFrame); … … 1204 1204 m_pausedGlobalObject = globalObject; 1205 1205 1206 auto* debuggerGlobalObject = debuggerCallFrame.scope( )->globalObject();1206 auto* debuggerGlobalObject = debuggerCallFrame.scope(globalObject->vm())->globalObject(); 1207 1207 m_currentCallStack = { m_pausedGlobalObject->vm(), toJS(debuggerGlobalObject, debuggerGlobalObject, JavaScriptCallFrame::create(debuggerCallFrame).ptr()) }; 1208 1208 -
trunk/Source/JavaScriptCore/interpreter/Interpreter.cpp
r292830 r292891 1418 1418 NEVER_INLINE void Interpreter::debug(CallFrame* callFrame, DebugHookType debugHookType) 1419 1419 { 1420 VM& vm = callFrame->deprecatedVM();1420 VM& vm = m_vm; 1421 1421 DeferTermination deferScope(vm); 1422 1422 auto scope = DECLARE_CATCH_SCOPE(vm); -
trunk/Source/WebKitLegacy/mac/ChangeLog
r292857 r292891 1 2022-04-14 Yusuke Suzuki <ysuzuki@apple.com> 2 3 [JSC] Reduce use of CallFrame::deprecatedVM 4 https://bugs.webkit.org/show_bug.cgi?id=239326 5 6 Reviewed by Devin Rousso. 7 8 * WebView/WebScriptDebugger.mm: 9 (WebScriptDebugger::handlePause): 10 1 11 2022-04-13 Chris Dumez <cdumez@apple.com> 2 12 -
trunk/Source/WebKitLegacy/mac/WebView/WebScriptDebugger.mm
r272828 r292891 127 127 m_callingDelegate = true; 128 128 129 JSC::VM& vm = globalObject->vm(); 129 130 WebFrame *webFrame = toWebFrame(globalObject); 130 131 WebView *webView = [webFrame webView]; 131 132 JSC::DebuggerCallFrame& debuggerCallFrame = currentDebuggerCallFrame(); 132 133 JSC::JSValue exceptionValue = currentException(); 133 String functionName = debuggerCallFrame.functionName( );134 String functionName = debuggerCallFrame.functionName(vm); 134 135 RetainPtr<WebScriptCallFrame> webCallFrame = adoptNS([[WebScriptCallFrame alloc] _initWithGlobalObject:core(webFrame)->script().windowScriptObject() functionName:functionName exceptionValue:exceptionValue]); 135 136
Note:
See TracChangeset
for help on using the changeset viewer.