LibJS: Remove derivable fields from ExecutionContext

Remove four fields that are trivially derivable from other fields
already present in the ExecutionContext:

- global_object (from realm)
- global_declarative_environment (from realm)
- identifier_table (from executable)
- property_key_table (from executable)

This shrinks ExecutionContext from 192 to 160 bytes (-17%).

The asmint's GetGlobal/SetGlobal handlers now load through the realm
pointer, taking advantage of the cached declarative environment
pointer added in the previous commit.
This commit is contained in:
Andreas Kling
2026-03-08 11:34:32 +01:00
committed by Andreas Kling
parent e70f580e5c
commit 96d02d5249
Notes: github-actions[bot] 2026-03-11 12:35:42 +00:00
6 changed files with 24 additions and 28 deletions

View File

@@ -86,11 +86,6 @@ public:
GC::Ptr<Environment> variable_environment; // [[VariableEnvironment]]
GC::Ptr<PrivateEnvironment> private_environment; // [[PrivateEnvironment]]
GC::Ptr<Object> global_object;
GC::Ptr<DeclarativeEnvironment> global_declarative_environment;
Utf16FlyString const* identifier_table { nullptr };
PropertyKey const* property_key_table { nullptr };
u32 program_counter { 0 };
// https://html.spec.whatwg.org/multipage/webappapis.html#skip-when-determining-incumbent-counter