New issue
Advanced search Search tips

Issue 846938 link

Starred by 1 user

Issue metadata

Status: Fixed
Owner:
Closed: May 2018
Components:
EstimatedDays: ----
NextAction: ----
OS: ----
Pri: 3
Type: Bug



Sign in to add a comment

Worklets shouldn't have to load modules on the main thread

Project Member Reported by japhet@chromium.org, May 25 2018

Issue description

Currently, worklets always perform module fetch on the main thread in order to safely access the WorkletModuleResponesMap first. We should make WorkletModuleResponesMap thread-safe, and perfrom the fetch wherever the worklet is running.
 
Project Member

Comment 1 by bugdroid1@chromium.org, May 26 2018

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/c5a356a9c5634c5f1e48e86411b8a6ec4ffaacb1

commit c5a356a9c5634c5f1e48e86411b8a6ec4ffaacb1
Author: Nate Chapin <japhet@chromium.org>
Date: Sat May 26 00:50:29 2018

Load worklet modules off-main-thread

* Make WorkletModuleResponsesMap thread-safe. It is now created and
  owned by the worklet object on the main thread, and shared to
  worklet global scopes.
* Before this change, WorkerOrWorkletModuleScriptFetcher proxied
  fetches from worklet to the main thread. After this change,
  WorkletModuleScriptFetcher will check WorkletModuleResponsesMap and
  return a cached result if present. Otherwise, it will fetch on the
  current thread and cache the result in WorkletModuleResponsesMap on
  completion.
* Merge DocumentModuleScriptFetcher into ModuleScriptFetcher.
  WorkletModuleScriptFetcher still subclasses ModuleScriptFetcher, and
  defers to the ModuleScriptFetcher's fetching logic when
  WorkletModuleResponsesMap doesn't have a cache entry.
* With the above changes, no cross-thread module loading logic is
  needed for workers or worklets. Delete WorkerOrWorkletModuleScriptFetcher
  and WorkerOrWorkletModuleFetchCoordinator.

TBR=ikilpatrick@chromium.org,rtoy@chromium.org

Bug:  846938 
Change-Id: I4c6e8740d69a96a37711ff256417a5357586ae90
Reviewed-on: https://chromium-review.googlesource.com/1026945
Commit-Queue: Nate Chapin <japhet@chromium.org>
Reviewed-by: Ian Kilpatrick <ikilpatrick@chromium.org>
Reviewed-by: Hiroshige Hayashizaki <hiroshige@chromium.org>
Reviewed-by: Hiroki Nakagawa <nhiroki@chromium.org>
Reviewed-by: Kinuko Yasuda <kinuko@chromium.org>
Reviewed-by: Tsuyoshi Horo <horo@chromium.org>
Reviewed-by: Kouhei Ueno <kouhei@chromium.org>
Cr-Commit-Position: refs/heads/master@{#562087}
[modify] https://crrev.com/c5a356a9c5634c5f1e48e86411b8a6ec4ffaacb1/third_party/blink/renderer/core/exported/local_frame_client_impl.cc
[modify] https://crrev.com/c5a356a9c5634c5f1e48e86411b8a6ec4ffaacb1/third_party/blink/renderer/core/exported/local_frame_client_impl.h
[modify] https://crrev.com/c5a356a9c5634c5f1e48e86411b8a6ec4ffaacb1/third_party/blink/renderer/core/frame/local_frame_client.h
[modify] https://crrev.com/c5a356a9c5634c5f1e48e86411b8a6ec4ffaacb1/third_party/blink/renderer/core/layout/custom/layout_worklet_global_scope_proxy.cc
[modify] https://crrev.com/c5a356a9c5634c5f1e48e86411b8a6ec4ffaacb1/third_party/blink/renderer/core/loader/BUILD.gn
[modify] https://crrev.com/c5a356a9c5634c5f1e48e86411b8a6ec4ffaacb1/third_party/blink/renderer/core/loader/frame_loader.cc
[modify] https://crrev.com/c5a356a9c5634c5f1e48e86411b8a6ec4ffaacb1/third_party/blink/renderer/core/loader/frame_loader.h
[delete] https://crrev.com/166efcbb58097fcc891e130dec92a2850e815a76/third_party/blink/renderer/core/loader/modulescript/document_module_script_fetcher.cc
[delete] https://crrev.com/166efcbb58097fcc891e130dec92a2850e815a76/third_party/blink/renderer/core/loader/modulescript/document_module_script_fetcher.h
[modify] https://crrev.com/c5a356a9c5634c5f1e48e86411b8a6ec4ffaacb1/third_party/blink/renderer/core/loader/modulescript/module_script_creation_params.h
[modify] https://crrev.com/c5a356a9c5634c5f1e48e86411b8a6ec4ffaacb1/third_party/blink/renderer/core/loader/modulescript/module_script_fetcher.cc
[modify] https://crrev.com/c5a356a9c5634c5f1e48e86411b8a6ec4ffaacb1/third_party/blink/renderer/core/loader/modulescript/module_script_fetcher.h
[modify] https://crrev.com/c5a356a9c5634c5f1e48e86411b8a6ec4ffaacb1/third_party/blink/renderer/core/loader/modulescript/module_script_loader.cc
[modify] https://crrev.com/c5a356a9c5634c5f1e48e86411b8a6ec4ffaacb1/third_party/blink/renderer/core/loader/modulescript/module_script_loader_test.cc
[delete] https://crrev.com/166efcbb58097fcc891e130dec92a2850e815a76/third_party/blink/renderer/core/loader/modulescript/worker_or_worklet_module_script_fetcher.cc
[delete] https://crrev.com/166efcbb58097fcc891e130dec92a2850e815a76/third_party/blink/renderer/core/loader/modulescript/worker_or_worklet_module_script_fetcher.h
[add] https://crrev.com/c5a356a9c5634c5f1e48e86411b8a6ec4ffaacb1/third_party/blink/renderer/core/loader/modulescript/worklet_module_script_fetcher.cc
[add] https://crrev.com/c5a356a9c5634c5f1e48e86411b8a6ec4ffaacb1/third_party/blink/renderer/core/loader/modulescript/worklet_module_script_fetcher.h
[modify] https://crrev.com/c5a356a9c5634c5f1e48e86411b8a6ec4ffaacb1/third_party/blink/renderer/core/loader/worker_fetch_context.cc
[modify] https://crrev.com/c5a356a9c5634c5f1e48e86411b8a6ec4ffaacb1/third_party/blink/renderer/core/script/document_modulator_impl.cc
[modify] https://crrev.com/c5a356a9c5634c5f1e48e86411b8a6ec4ffaacb1/third_party/blink/renderer/core/script/worker_modulator_impl.cc
[modify] https://crrev.com/c5a356a9c5634c5f1e48e86411b8a6ec4ffaacb1/third_party/blink/renderer/core/script/worklet_modulator_impl.cc
[modify] https://crrev.com/c5a356a9c5634c5f1e48e86411b8a6ec4ffaacb1/third_party/blink/renderer/core/workers/BUILD.gn
[modify] https://crrev.com/c5a356a9c5634c5f1e48e86411b8a6ec4ffaacb1/third_party/blink/renderer/core/workers/dedicated_worker.cc
[modify] https://crrev.com/c5a356a9c5634c5f1e48e86411b8a6ec4ffaacb1/third_party/blink/renderer/core/workers/main_thread_worklet_test.cc
[modify] https://crrev.com/c5a356a9c5634c5f1e48e86411b8a6ec4ffaacb1/third_party/blink/renderer/core/workers/threaded_worklet_messaging_proxy.cc
[modify] https://crrev.com/c5a356a9c5634c5f1e48e86411b8a6ec4ffaacb1/third_party/blink/renderer/core/workers/threaded_worklet_test.cc
[modify] https://crrev.com/c5a356a9c5634c5f1e48e86411b8a6ec4ffaacb1/third_party/blink/renderer/core/workers/worker_fetch_test_helper.h
[modify] https://crrev.com/c5a356a9c5634c5f1e48e86411b8a6ec4ffaacb1/third_party/blink/renderer/core/workers/worker_global_scope.h
[modify] https://crrev.com/c5a356a9c5634c5f1e48e86411b8a6ec4ffaacb1/third_party/blink/renderer/core/workers/worker_or_worklet_global_scope.cc
[delete] https://crrev.com/166efcbb58097fcc891e130dec92a2850e815a76/third_party/blink/renderer/core/workers/worker_or_worklet_module_fetch_coordinator_proxy.cc
[delete] https://crrev.com/166efcbb58097fcc891e130dec92a2850e815a76/third_party/blink/renderer/core/workers/worker_or_worklet_module_fetch_coordinator_proxy.h
[modify] https://crrev.com/c5a356a9c5634c5f1e48e86411b8a6ec4ffaacb1/third_party/blink/renderer/core/workers/worklet.cc
[modify] https://crrev.com/c5a356a9c5634c5f1e48e86411b8a6ec4ffaacb1/third_party/blink/renderer/core/workers/worklet_global_scope.cc
[modify] https://crrev.com/c5a356a9c5634c5f1e48e86411b8a6ec4ffaacb1/third_party/blink/renderer/core/workers/worklet_global_scope.h
[modify] https://crrev.com/c5a356a9c5634c5f1e48e86411b8a6ec4ffaacb1/third_party/blink/renderer/core/workers/worklet_module_responses_map.cc
[modify] https://crrev.com/c5a356a9c5634c5f1e48e86411b8a6ec4ffaacb1/third_party/blink/renderer/core/workers/worklet_module_responses_map.h
[modify] https://crrev.com/c5a356a9c5634c5f1e48e86411b8a6ec4ffaacb1/third_party/blink/renderer/core/workers/worklet_module_responses_map_test.cc
[modify] https://crrev.com/c5a356a9c5634c5f1e48e86411b8a6ec4ffaacb1/third_party/blink/renderer/modules/animationworklet/animation_worklet_global_scope_test.cc
[modify] https://crrev.com/c5a356a9c5634c5f1e48e86411b8a6ec4ffaacb1/third_party/blink/renderer/modules/animationworklet/animation_worklet_thread_test.cc
[modify] https://crrev.com/c5a356a9c5634c5f1e48e86411b8a6ec4ffaacb1/third_party/blink/renderer/modules/csspaint/paint_worklet_global_scope_proxy.cc
[modify] https://crrev.com/c5a356a9c5634c5f1e48e86411b8a6ec4ffaacb1/third_party/blink/renderer/modules/webaudio/audio_worklet_global_scope_test.cc
[modify] https://crrev.com/c5a356a9c5634c5f1e48e86411b8a6ec4ffaacb1/third_party/blink/renderer/modules/webaudio/audio_worklet_thread_test.cc

Comment 2 by japhet@chromium.org, May 29 2018

Status: Fixed (was: Started)
Labels: M-69
Good job! \o/

Sign in to add a comment