Ver Fonte

LibJS: Remove the VM parameter from the NumberToString AO

This will be needed by Value::to_string_without_side_effects, which can
be called in contexts without a VM (e.g. in AK::Format specializations).
So to_string_without_side_effects will need to be callable without a VM,
thus NumberToString must be as well.
Timothy Flynn há 2 anos atrás
pai
commit
dc4207323b

+ 2 - 2
Userland/Libraries/LibJS/Runtime/Intl/MathematicalValue.cpp

@@ -297,8 +297,8 @@ bool MathematicalValue::is_zero() const
 ThrowCompletionOr<String> MathematicalValue::to_string(VM& vm) const
 {
     return m_value.visit(
-        [&](double value) {
-            return number_to_string(vm, value, NumberToStringMode::WithoutExponent);
+        [&](double value) -> ThrowCompletionOr<String> {
+            return TRY_OR_THROW_OOM(vm, number_to_string(value, NumberToStringMode::WithoutExponent));
         },
         [&](Crypto::SignedBigInteger const& value) -> ThrowCompletionOr<String> {
             return TRY_OR_THROW_OOM(vm, value.to_base(10));

+ 4 - 4
Userland/Libraries/LibJS/Runtime/Value.cpp

@@ -206,11 +206,11 @@ static ErrorOr<void> number_to_string_impl(StringBuilder& builder, double d, Num
     return {};
 }
 
-ThrowCompletionOr<String> number_to_string(VM& vm, double d, NumberToStringMode mode)
+ErrorOr<String> number_to_string(double d, NumberToStringMode mode)
 {
     StringBuilder builder;
-    TRY_OR_THROW_OOM(vm, number_to_string_impl(builder, d, mode));
-    return TRY_OR_THROW_OOM(vm, builder.to_string());
+    TRY(number_to_string_impl(builder, d, mode));
+    return builder.to_string();
 }
 
 DeprecatedString number_to_deprecated_string(double d, NumberToStringMode mode)
@@ -396,7 +396,7 @@ ThrowCompletionOr<PrimitiveString*> Value::to_primitive_string(VM& vm)
 ThrowCompletionOr<String> Value::to_string(VM& vm) const
 {
     if (is_double())
-        return number_to_string(vm, m_value.as_double);
+        return TRY_OR_THROW_OOM(vm, number_to_string(m_value.as_double));
 
     switch (m_value.tag) {
     // 1. If argument is a String, return argument.

+ 1 - 1
Userland/Libraries/LibJS/Runtime/Value.h

@@ -561,7 +561,7 @@ enum class NumberToStringMode {
     WithExponent,
     WithoutExponent,
 };
-ThrowCompletionOr<String> number_to_string(VM& vm, double, NumberToStringMode = NumberToStringMode::WithExponent);
+ErrorOr<String> number_to_string(double, NumberToStringMode = NumberToStringMode::WithExponent);
 DeprecatedString number_to_deprecated_string(double, NumberToStringMode = NumberToStringMode::WithExponent);
 Optional<Value> string_to_number(StringView);