LibJS: Add fast_is<T> helpers for all the primitive wrapper objects

The JS runtime is full of checks for is<NumberObject> and friends.
They were showing up in a Speedometer profile as ~1% spent in
dynamic_cast, and this basically chops that down to nothing.
This commit is contained in:
Andreas Kling 2025-03-25 08:34:06 +00:00 committed by Andreas Kling
commit c12f8b80dc
Notes: github-actions[bot] 2025-03-25 23:58:13 +00:00
7 changed files with 35 additions and 0 deletions

View file

@ -31,9 +31,14 @@ public:
private:
Date(double date_value, Object& prototype);
virtual bool is_date() const final { return true; }
double m_date_value { 0 }; // [[DateValue]]
};
template<>
inline bool Object::fast_is<Date>() const { return is_date(); }
// 21.4.1.22 Time Zone Identifier Record, https://tc39.es/ecma262/#sec-time-zone-identifier-record
struct TimeZoneIdentifier {
String identifier; // [[Identifier]]