Prechádzať zdrojové kódy

LibJS: Tweak Value::to_property_key() fast path for Int32

Move the check for Int32 *before* we call to_primitive().
Andreas Kling 3 rokov pred
rodič
commit
72cd31d033
1 zmenil súbory, kde vykonal 2 pridanie a 2 odobranie
  1. 2 2
      Userland/Libraries/LibJS/Runtime/Value.cpp

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

@@ -561,9 +561,9 @@ ThrowCompletionOr<double> Value::to_double(GlobalObject& global_object) const
 // 7.1.19 ToPropertyKey ( argument ), https://tc39.es/ecma262/#sec-topropertykey
 // 7.1.19 ToPropertyKey ( argument ), https://tc39.es/ecma262/#sec-topropertykey
 ThrowCompletionOr<PropertyKey> Value::to_property_key(GlobalObject& global_object) const
 ThrowCompletionOr<PropertyKey> Value::to_property_key(GlobalObject& global_object) const
 {
 {
+    if (type() == Type::Int32 && as_i32() >= 0)
+        return PropertyKey { as_i32() };
     auto key = TRY(to_primitive(global_object, PreferredType::String));
     auto key = TRY(to_primitive(global_object, PreferredType::String));
-    if (key.type() == Type::Int32 && key.as_i32() >= 0)
-        return PropertyKey { key.as_i32() };
     if (key.is_symbol())
     if (key.is_symbol())
         return &key.as_symbol();
         return &key.as_symbol();
     return TRY(key.to_string(global_object));
     return TRY(key.to_string(global_object));