mirror of
https://github.com/RGBCube/serenity
synced 2025-07-26 02:27:43 +00:00
LibJS: Expose various offsets for GetGlobal JIT fast path
This commit is contained in:
parent
c739c931c1
commit
ddea710933
6 changed files with 11 additions and 0 deletions
|
@ -34,6 +34,8 @@ struct PropertyLookupCache {
|
||||||
};
|
};
|
||||||
|
|
||||||
struct GlobalVariableCache : public PropertyLookupCache {
|
struct GlobalVariableCache : public PropertyLookupCache {
|
||||||
|
static FlatPtr environment_serial_number_offset() { return OFFSET_OF(GlobalVariableCache, environment_serial_number); }
|
||||||
|
|
||||||
u64 environment_serial_number { 0 };
|
u64 environment_serial_number { 0 };
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -71,6 +71,7 @@ public:
|
||||||
[[nodiscard]] u64 environment_serial_number() const { return m_environment_serial_number; }
|
[[nodiscard]] u64 environment_serial_number() const { return m_environment_serial_number; }
|
||||||
|
|
||||||
static FlatPtr bindings_offset() { return OFFSET_OF(DeclarativeEnvironment, m_bindings); }
|
static FlatPtr bindings_offset() { return OFFSET_OF(DeclarativeEnvironment, m_bindings); }
|
||||||
|
static FlatPtr environment_serial_number_offset() { return OFFSET_OF(DeclarativeEnvironment, m_environment_serial_number); }
|
||||||
|
|
||||||
private:
|
private:
|
||||||
ThrowCompletionOr<Value> get_binding_value_direct(VM&, Binding&, bool strict);
|
ThrowCompletionOr<Value> get_binding_value_direct(VM&, Binding&, bool strict);
|
||||||
|
|
|
@ -30,6 +30,7 @@ struct ExecutionContext {
|
||||||
|
|
||||||
void visit_edges(Cell::Visitor&);
|
void visit_edges(Cell::Visitor&);
|
||||||
|
|
||||||
|
static FlatPtr realm_offset() { return OFFSET_OF(ExecutionContext, realm); }
|
||||||
static FlatPtr lexical_environment_offset() { return OFFSET_OF(ExecutionContext, lexical_environment); }
|
static FlatPtr lexical_environment_offset() { return OFFSET_OF(ExecutionContext, lexical_environment); }
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
|
|
@ -37,6 +37,9 @@ public:
|
||||||
ThrowCompletionOr<void> create_global_var_binding(DeprecatedFlyString const& name, bool can_be_deleted);
|
ThrowCompletionOr<void> create_global_var_binding(DeprecatedFlyString const& name, bool can_be_deleted);
|
||||||
ThrowCompletionOr<void> create_global_function_binding(DeprecatedFlyString const& name, Value, bool can_be_deleted);
|
ThrowCompletionOr<void> create_global_function_binding(DeprecatedFlyString const& name, Value, bool can_be_deleted);
|
||||||
|
|
||||||
|
static FlatPtr object_record_offset() { return OFFSET_OF(GlobalEnvironment, m_object_record); }
|
||||||
|
static FlatPtr declarative_record_offset() { return OFFSET_OF(GlobalEnvironment, m_declarative_record); }
|
||||||
|
|
||||||
private:
|
private:
|
||||||
GlobalEnvironment(Object&, Object& this_value);
|
GlobalEnvironment(Object&, Object& this_value);
|
||||||
|
|
||||||
|
|
|
@ -41,6 +41,8 @@ public:
|
||||||
// [[IsWithEnvironment]], Indicates whether this Environment Record is created for a with statement.
|
// [[IsWithEnvironment]], Indicates whether this Environment Record is created for a with statement.
|
||||||
bool is_with_environment() const { return m_with_environment; }
|
bool is_with_environment() const { return m_with_environment; }
|
||||||
|
|
||||||
|
static FlatPtr binding_object_offset() { return OFFSET_OF(ObjectEnvironment, m_binding_object); }
|
||||||
|
|
||||||
private:
|
private:
|
||||||
ObjectEnvironment(Object& binding_object, IsWithEnvironment, Environment* outer_environment);
|
ObjectEnvironment(Object& binding_object, IsWithEnvironment, Environment* outer_environment);
|
||||||
|
|
||||||
|
|
|
@ -48,6 +48,8 @@ public:
|
||||||
HostDefined* host_defined() { return m_host_defined; }
|
HostDefined* host_defined() { return m_host_defined; }
|
||||||
void set_host_defined(OwnPtr<HostDefined> host_defined) { m_host_defined = move(host_defined); }
|
void set_host_defined(OwnPtr<HostDefined> host_defined) { m_host_defined = move(host_defined); }
|
||||||
|
|
||||||
|
static FlatPtr global_environment_offset() { return OFFSET_OF(Realm, m_global_environment); }
|
||||||
|
|
||||||
private:
|
private:
|
||||||
Realm() = default;
|
Realm() = default;
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue