mirror of
https://github.com/RGBCube/serenity
synced 2025-07-26 20:27:34 +00:00
LibJS: Implement Infinity
This commit is contained in:
parent
40b3203941
commit
543c6e00db
5 changed files with 40 additions and 0 deletions
|
@ -18,7 +18,10 @@ GlobalObject::GlobalObject()
|
|||
put_native_function("gc", gc);
|
||||
put_native_function("isNaN", is_nan);
|
||||
|
||||
// FIXME: These are read-only in ES5
|
||||
put("NaN", js_nan());
|
||||
put("Infinity", js_infinity());
|
||||
|
||||
put("console", heap().allocate<ConsoleObject>());
|
||||
put("Date", heap().allocate<DateConstructor>());
|
||||
put("Error", heap().allocate<ErrorConstructor>());
|
||||
|
|
|
@ -57,6 +57,9 @@ String Value::to_string() const
|
|||
if (is_nan())
|
||||
return "NaN";
|
||||
|
||||
if (is_infinity())
|
||||
return as_double() < 0 ? "-Infinity" : "Infinity";
|
||||
|
||||
// FIXME: This needs improvement.
|
||||
if ((double)to_i32() == as_double())
|
||||
return String::number(to_i32());
|
||||
|
|
|
@ -54,6 +54,7 @@ public:
|
|||
bool is_array() const;
|
||||
|
||||
bool is_nan() const { return is_number() && __builtin_isnan(as_double()); }
|
||||
bool is_infinity() const { return is_number() && __builtin_isinf(as_double()); }
|
||||
|
||||
Value()
|
||||
: m_type(Type::Undefined)
|
||||
|
@ -173,6 +174,11 @@ inline Value js_nan()
|
|||
return Value(__builtin_nan(""));
|
||||
}
|
||||
|
||||
inline Value js_infinity()
|
||||
{
|
||||
return Value(__builtin_huge_val());
|
||||
}
|
||||
|
||||
Value greater_than(Value lhs, Value rhs);
|
||||
Value greater_than_equals(Value lhs, Value rhs);
|
||||
Value less_than(Value lhs, Value rhs);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue