+++ This bug was initially created as a clone of Bug #1649601 +++ According to [this startup profile](https://profiler.firefox.com/public/d98453450a6af863afe97dd16ba14e40d885e317/marker-table/?file=profile_startup_about_home_paint%2Fstartup%2Fcycle_0.profile&globalTrackOrder=3-0-1-2&localTrackOrderByPid=15549-2-3-0-1~15626-1-0~15607-1-0~&markerSearch=osfile&thread=0&v=4), ExtensionsSettingStore.jsm runs during startup and imports osfile.jsm. We should migrate this to the new IOUtils replacement for osfile.jsm when possible. Stack: ``` (root) [] XREMain::XRE_main [] XREMain::XRE_main(int, char**, mozilla::BootstrapConfig const&) [libxul.so] XREMain::XRE_mainRun() [libxul.so] nsAppStartup::Run() [libxul.so] nsBaseAppShell::Run() [libxul.so] MessageLoop::Run() [libxul.so] mozilla::ipc::MessagePump::Run(base::MessagePump::Delegate*) [libxul.so] nsThread::ProcessNextEvent(bool, bool*) [libxul.so] mozilla::CycleCollectedJSContext::AfterProcessTask(unsigned int) [libxul.so] promise callback [] mozilla::PromiseJobRunnable::Run(mozilla::AutoSlowOperation&) [libxul.so] mozilla::dom::PromiseJobCallback::Call(mozilla::dom::BindingCallContext&, JS::Handle<JS::Value>, mozilla::ErrorResult&) [libxul.so] JS::Call(JSContext*, JS::Handle<JS::Value>, JS::Handle<JS::Value>, JS::HandleValueArray const&, JS::MutableHandle<JS::Value>) [libxul.so] js::InternalCallOrConstruct(JSContext*, JS::CallArgs const&, js::MaybeConstruct, js::CallReason) [libxul.so] PromiseReactionJob(JSContext*, unsigned int, JS::Value*) [libxul.so] AsyncFunctionResume(JSContext*, JS::Handle<js::AsyncFunctionGeneratorObject*>, ResumeKind, JS::Handle<JS::Value>) [libxul.so] js::CallSelfHostedFunction(JSContext*, JS::Handle<js::PropertyName*>, JS::Handle<JS::Value>, js::AnyInvokeArgs const&, JS::MutableHandle<JS::Value>) [libxul.so] js::Call(JSContext*, JS::Handle<JS::Value>, JS::Handle<JS::Value>, js::AnyInvokeArgs const&, JS::MutableHandle<JS::Value>, js::CallReason) [libxul.so] js::RunScript [] js::InternalCallOrConstruct(JSContext*, JS::CallArgs const&, js::MaybeConstruct, js::CallReason) [libxul.so] AsyncFunctionNext [self-hosted:688:26] asyncEmitManifestEntry [resource://gre/modules/ExtensionCommon.jsm:1542:30] 0xff4eaa5dbc7 [] js::jit::DoCallFallback(JSContext*, js::jit::BaselineFrame*, js::jit::ICCall_Fallback*, unsigned int, JS::Value*, JS::MutableHandle<JS::Value>) [libxul.so] js::RunScript [] onManifestEntry [chrome://browser/content/parent/ext-commands.js:20:23] loadCommands [resource://gre/modules/ExtensionShortcuts.jsm:165:14] loadCommands/this.commands< [resource://gre/modules/ExtensionShortcuts.jsm:171:27] loadCommandsFromStorage [resource://gre/modules/ExtensionShortcuts.jsm:256:31] js::InternalCallOrConstruct(JSContext*, JS::CallArgs const&, js::MaybeConstruct, js::CallReason) [libxul.so] Interpret(JSContext*, js::RunState&) [libxul.so] js::NativeGetExistingProperty(JSContext*, JS::Handle<JSObject*>, JS::Handle<js::NativeObject*>, JS::Handle<js::Shape*>, JS::MutableHandle<JS::Value>) [libxul.so] js::CallGetter(JSContext*, JS::Handle<JS::Value>, JS::Handle<JS::Value>, JS::MutableHandle<JS::Value>) [libxul.so] js::InternalCallOrConstruct(JSContext*, JS::CallArgs const&, js::MaybeConstruct, js::CallReason) [libxul.so] mozilla::dom::module_getter::ModuleGetter(JSContext*, unsigned int, JS::Value*) [libxul.so] mozJSComponentLoader::Import(JSContext*, nsTSubstring<char> const&, JS::MutableHandle<JSObject*>, JS::MutableHandle<JSObject*>, bool) [libxul.so] component loader load module [] mozJSComponentLoader::ObjectForLocation(ComponentLoaderInfo&, nsIFile*, JS::MutableHandle<JSObject*>, JS::MutableHandle<JSScript*>, char**, bool, JS::MutableHandle<JS::Value>) [libxul.so] js::ExecuteInJSMEnvironment(JSContext*, JS::Handle<JSScript*>, JS::Handle<JSObject*>) [libxul.so] js::ExecuteInJSMEnvironment(JSContext*, JS::Handle<JSScript*>, JS::Handle<JSObject*>, JS::Handle<JS::StackGCVector<JSObject*, js::TempAllocPolicy> >) [libxul.so] ExecuteInExtensibleLexicalEnvironment(JSContext*, JS::Handle<JSScript*>, JS::Handle<JSObject*>) [libxul.so] js::RunScript [] > resource://gre/modules/ExtensionSettingsStore.jsm [] js::ExecuteKernel(JSContext*, JS::Handle<JSScript*>, JS::Handle<JSObject*>, JS::Handle<JS::Value>, js::AbstractFramePtr, JS::MutableHandle<JS::Value>) [libxul.so] Interpret(JSContext*, js::RunState&) [libxul.so] js::InternalCallOrConstruct(JSContext*, JS::CallArgs const&, js::MaybeConstruct, js::CallReason) [libxul.so] ChromeUtils.import [] mozilla::dom::ChromeUtils_Binding::import(JSContext*, unsigned int, JS::Value*) [libxul.so] > ChromeUtils::Import resource://gre/modules/osfile.jsm [] mozilla::dom::ChromeUtils::Import(mozilla::dom::GlobalObject const&, nsTSubstring<char16_t> const&, mozilla::dom::Optional<JS::Handle<JSObject*> > const&, JS::MutableHandle<JSObject*>, mozilla::ErrorResult&) [libxul.so] mozJSComponentLoader::Import(JSContext*, nsTSubstring<char> const&, JS::MutableHandle<JSObject*>, JS::MutableHandle<JSObject*>, bool) [libxul.so] profiler_get_backtrace() [libxul.so] Registers::SyncPopulate() [libxul.so] ```
Bug 1649603 Comment 0 Edit History
Note: The actual edited comment in the bug view page will always show the original commenter’s name and original timestamp.
According to [this startup profile](https://profiler.firefox.com/public/d98453450a6af863afe97dd16ba14e40d885e317/marker-table/?file=profile_startup_about_home_paint%2Fstartup%2Fcycle_0.profile&globalTrackOrder=3-0-1-2&localTrackOrderByPid=15549-2-3-0-1~15626-1-0~15607-1-0~&markerSearch=osfile&thread=0&v=4), ExtensionsSettingStore.jsm runs during startup and imports osfile.jsm. We should migrate this to the new IOUtils replacement for osfile.jsm when possible. Stack: ``` (root) [] XREMain::XRE_main [] XREMain::XRE_main(int, char**, mozilla::BootstrapConfig const&) [libxul.so] XREMain::XRE_mainRun() [libxul.so] nsAppStartup::Run() [libxul.so] nsBaseAppShell::Run() [libxul.so] MessageLoop::Run() [libxul.so] mozilla::ipc::MessagePump::Run(base::MessagePump::Delegate*) [libxul.so] nsThread::ProcessNextEvent(bool, bool*) [libxul.so] mozilla::CycleCollectedJSContext::AfterProcessTask(unsigned int) [libxul.so] promise callback [] mozilla::PromiseJobRunnable::Run(mozilla::AutoSlowOperation&) [libxul.so] mozilla::dom::PromiseJobCallback::Call(mozilla::dom::BindingCallContext&, JS::Handle<JS::Value>, mozilla::ErrorResult&) [libxul.so] JS::Call(JSContext*, JS::Handle<JS::Value>, JS::Handle<JS::Value>, JS::HandleValueArray const&, JS::MutableHandle<JS::Value>) [libxul.so] js::InternalCallOrConstruct(JSContext*, JS::CallArgs const&, js::MaybeConstruct, js::CallReason) [libxul.so] PromiseReactionJob(JSContext*, unsigned int, JS::Value*) [libxul.so] AsyncFunctionResume(JSContext*, JS::Handle<js::AsyncFunctionGeneratorObject*>, ResumeKind, JS::Handle<JS::Value>) [libxul.so] js::CallSelfHostedFunction(JSContext*, JS::Handle<js::PropertyName*>, JS::Handle<JS::Value>, js::AnyInvokeArgs const&, JS::MutableHandle<JS::Value>) [libxul.so] js::Call(JSContext*, JS::Handle<JS::Value>, JS::Handle<JS::Value>, js::AnyInvokeArgs const&, JS::MutableHandle<JS::Value>, js::CallReason) [libxul.so] js::RunScript [] js::InternalCallOrConstruct(JSContext*, JS::CallArgs const&, js::MaybeConstruct, js::CallReason) [libxul.so] AsyncFunctionNext [self-hosted:688:26] asyncEmitManifestEntry [resource://gre/modules/ExtensionCommon.jsm:1542:30] 0xff4eaa5dbc7 [] js::jit::DoCallFallback(JSContext*, js::jit::BaselineFrame*, js::jit::ICCall_Fallback*, unsigned int, JS::Value*, JS::MutableHandle<JS::Value>) [libxul.so] js::RunScript [] onManifestEntry [chrome://browser/content/parent/ext-commands.js:20:23] loadCommands [resource://gre/modules/ExtensionShortcuts.jsm:165:14] loadCommands/this.commands< [resource://gre/modules/ExtensionShortcuts.jsm:171:27] loadCommandsFromStorage [resource://gre/modules/ExtensionShortcuts.jsm:256:31] js::InternalCallOrConstruct(JSContext*, JS::CallArgs const&, js::MaybeConstruct, js::CallReason) [libxul.so] Interpret(JSContext*, js::RunState&) [libxul.so] js::NativeGetExistingProperty(JSContext*, JS::Handle<JSObject*>, JS::Handle<js::NativeObject*>, JS::Handle<js::Shape*>, JS::MutableHandle<JS::Value>) [libxul.so] js::CallGetter(JSContext*, JS::Handle<JS::Value>, JS::Handle<JS::Value>, JS::MutableHandle<JS::Value>) [libxul.so] js::InternalCallOrConstruct(JSContext*, JS::CallArgs const&, js::MaybeConstruct, js::CallReason) [libxul.so] mozilla::dom::module_getter::ModuleGetter(JSContext*, unsigned int, JS::Value*) [libxul.so] mozJSComponentLoader::Import(JSContext*, nsTSubstring<char> const&, JS::MutableHandle<JSObject*>, JS::MutableHandle<JSObject*>, bool) [libxul.so] component loader load module [] mozJSComponentLoader::ObjectForLocation(ComponentLoaderInfo&, nsIFile*, JS::MutableHandle<JSObject*>, JS::MutableHandle<JSScript*>, char**, bool, JS::MutableHandle<JS::Value>) [libxul.so] js::ExecuteInJSMEnvironment(JSContext*, JS::Handle<JSScript*>, JS::Handle<JSObject*>) [libxul.so] js::ExecuteInJSMEnvironment(JSContext*, JS::Handle<JSScript*>, JS::Handle<JSObject*>, JS::Handle<JS::StackGCVector<JSObject*, js::TempAllocPolicy> >) [libxul.so] ExecuteInExtensibleLexicalEnvironment(JSContext*, JS::Handle<JSScript*>, JS::Handle<JSObject*>) [libxul.so] js::RunScript [] > resource://gre/modules/ExtensionSettingsStore.jsm [] js::ExecuteKernel(JSContext*, JS::Handle<JSScript*>, JS::Handle<JSObject*>, JS::Handle<JS::Value>, js::AbstractFramePtr, JS::MutableHandle<JS::Value>) [libxul.so] Interpret(JSContext*, js::RunState&) [libxul.so] js::InternalCallOrConstruct(JSContext*, JS::CallArgs const&, js::MaybeConstruct, js::CallReason) [libxul.so] ChromeUtils.import [] mozilla::dom::ChromeUtils_Binding::import(JSContext*, unsigned int, JS::Value*) [libxul.so] > ChromeUtils::Import resource://gre/modules/osfile.jsm [] mozilla::dom::ChromeUtils::Import(mozilla::dom::GlobalObject const&, nsTSubstring<char16_t> const&, mozilla::dom::Optional<JS::Handle<JSObject*> > const&, JS::MutableHandle<JSObject*>, mozilla::ErrorResult&) [libxul.so] mozJSComponentLoader::Import(JSContext*, nsTSubstring<char> const&, JS::MutableHandle<JSObject*>, JS::MutableHandle<JSObject*>, bool) [libxul.so] profiler_get_backtrace() [libxul.so] Registers::SyncPopulate() [libxul.so] ```