ladybird/Libraries/LibWeb/HTML/Scripting
Andreas Kling b5babda288 LibWeb: Cache UniversalGlobalScopeMixin pointer on ESO
Avoid expensive cross-hierarchy dynamic_cast from JS::Object to
UniversalGlobalScopeMixin on every microtask checkpoint.

Since UniversalGlobalScopeMixin is not in the JS::Object
inheritance chain, as<UniversalGlobalScopeMixin>(JS::Object&)
falls through to dynamic_cast, which is very costly. Profiling
showed this taking ~14% of total CPU time.

Add EnvironmentSettingsObject::universal_global_scope() backed
by a pointer cached eagerly during initialization.
2026-03-24 08:28:47 +01:00
..
Agent.cpp
Agent.h
ClassicScript.cpp LibJS: Generate FFI header using cbindgen instead of hand-rolling 2026-03-17 20:49:50 -05:00
ClassicScript.h LibJS: Generate FFI header using cbindgen instead of hand-rolling 2026-03-17 20:49:50 -05:00
Environments.cpp LibWeb: Cache UniversalGlobalScopeMixin pointer on ESO 2026-03-24 08:28:47 +01:00
Environments.h LibWeb: Cache UniversalGlobalScopeMixin pointer on ESO 2026-03-24 08:28:47 +01:00
EnvironmentSettingsSnapshot.cpp
EnvironmentSettingsSnapshot.h
ExceptionReporter.cpp
ExceptionReporter.h
Fetching.cpp LibWeb: Cache UniversalGlobalScopeMixin pointer on ESO 2026-03-24 08:28:47 +01:00
Fetching.h
Fetching.idl
ImportMap.cpp
ImportMap.h
ImportMapParseResult.cpp
ImportMapParseResult.h
ModuleMap.cpp
ModuleMap.h
ModuleScript.cpp LibJS: Generate FFI header using cbindgen instead of hand-rolling 2026-03-17 20:49:50 -05:00
ModuleScript.h LibJS: Generate FFI header using cbindgen instead of hand-rolling 2026-03-17 20:49:50 -05:00
Script.cpp
Script.h
SerializedEnvironmentSettingsObject.cpp
SerializedEnvironmentSettingsObject.h
SimilarOriginWindowAgent.cpp
SimilarOriginWindowAgent.h
SyntheticRealmSettings.cpp
SyntheticRealmSettings.h
TemporaryExecutionContext.cpp
TemporaryExecutionContext.h
WindowEnvironmentSettingsObject.cpp
WindowEnvironmentSettingsObject.h
WorkerAgent.cpp
WorkerAgent.h
WorkerEnvironmentSettingsObject.cpp
WorkerEnvironmentSettingsObject.h