mirror of
https://github.com/RGBCube/serenity
synced 2025-07-27 03:47:35 +00:00
LibJS: Add fast_is<T> for StringObject and GlobalObject
Both of these are quite hot in profiles.
This commit is contained in:
parent
43f0c92bcd
commit
0a911178ce
3 changed files with 14 additions and 0 deletions
|
@ -76,6 +76,8 @@ protected:
|
||||||
void add_constructor(const FlyString& property_name, ConstructorType*&, Object* prototype);
|
void add_constructor(const FlyString& property_name, ConstructorType*&, Object* prototype);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
virtual bool is_global_object() const final { return true; }
|
||||||
|
|
||||||
JS_DECLARE_NATIVE_FUNCTION(gc);
|
JS_DECLARE_NATIVE_FUNCTION(gc);
|
||||||
JS_DECLARE_NATIVE_FUNCTION(is_nan);
|
JS_DECLARE_NATIVE_FUNCTION(is_nan);
|
||||||
JS_DECLARE_NATIVE_FUNCTION(is_finite);
|
JS_DECLARE_NATIVE_FUNCTION(is_finite);
|
||||||
|
@ -131,4 +133,7 @@ inline GlobalObject* Shape::global_object() const
|
||||||
return static_cast<GlobalObject*>(m_global_object);
|
return static_cast<GlobalObject*>(m_global_object);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
template<>
|
||||||
|
inline bool Object::fast_is<GlobalObject>() const { return is_global_object(); }
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -112,6 +112,8 @@ public:
|
||||||
virtual bool is_array() const { return false; }
|
virtual bool is_array() const { return false; }
|
||||||
virtual bool is_function() const { return false; }
|
virtual bool is_function() const { return false; }
|
||||||
virtual bool is_typed_array() const { return false; }
|
virtual bool is_typed_array() const { return false; }
|
||||||
|
virtual bool is_string_object() const { return false; }
|
||||||
|
virtual bool is_global_object() const { return false; }
|
||||||
|
|
||||||
virtual const char* class_name() const override { return "Object"; }
|
virtual const char* class_name() const override { return "Object"; }
|
||||||
virtual void visit_edges(Cell::Visitor&) override;
|
virtual void visit_edges(Cell::Visitor&) override;
|
||||||
|
@ -152,6 +154,9 @@ public:
|
||||||
void enable_transitions() { m_transitions_enabled = true; }
|
void enable_transitions() { m_transitions_enabled = true; }
|
||||||
void disable_transitions() { m_transitions_enabled = false; }
|
void disable_transitions() { m_transitions_enabled = false; }
|
||||||
|
|
||||||
|
template<typename T>
|
||||||
|
bool fast_is() const = delete;
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
enum class GlobalObjectTag { Tag };
|
enum class GlobalObjectTag { Tag };
|
||||||
enum class ConstructWithoutPrototypeTag { Tag };
|
enum class ConstructWithoutPrototypeTag { Tag };
|
||||||
|
|
|
@ -46,9 +46,13 @@ public:
|
||||||
}
|
}
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
virtual bool is_string_object() const final { return true; }
|
||||||
virtual void visit_edges(Visitor&) override;
|
virtual void visit_edges(Visitor&) override;
|
||||||
|
|
||||||
PrimitiveString& m_string;
|
PrimitiveString& m_string;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
template<>
|
||||||
|
inline bool Object::fast_is<StringObject>() const { return is_string_object(); }
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue