diff --git a/Libraries/LibJS/Runtime/NumberConstructor.cpp b/Libraries/LibJS/Runtime/NumberConstructor.cpp index 4996de3f72..26809e5431 100644 --- a/Libraries/LibJS/Runtime/NumberConstructor.cpp +++ b/Libraries/LibJS/Runtime/NumberConstructor.cpp @@ -84,8 +84,7 @@ Value NumberConstructor::is_finite(Interpreter& interpreter) Value NumberConstructor::is_integer(Interpreter& interpreter) { - auto value = interpreter.argument(0); - return Value(value.is_number() && (i32)value.as_double() == value.as_double()); + return Value(interpreter.argument(0).is_integer()); } Value NumberConstructor::is_nan(Interpreter& interpreter) diff --git a/Libraries/LibJS/Runtime/Value.h b/Libraries/LibJS/Runtime/Value.h index a57098ac32..fb8305cf07 100644 --- a/Libraries/LibJS/Runtime/Value.h +++ b/Libraries/LibJS/Runtime/Value.h @@ -60,6 +60,7 @@ public: bool is_infinity() const { return is_number() && __builtin_isinf(as_double()); } bool is_positive_zero() const { return is_number() && 1.0 / as_double() == __builtin_huge_val(); } bool is_negative_zero() const { return is_number() && 1.0 / as_double() == -__builtin_huge_val(); } + bool is_integer() const { return is_finite_number() && (i32)as_double() == as_double(); } bool is_finite_number() const { if (!is_number())