Parcourir la source

LibJS/Bytecode: Don't assert on eval() without arguments

3 new passes on test262. :^)
Andreas Kling il y a 2 ans
Parent
commit
ad15a1e3e2
1 fichiers modifiés avec 1 ajouts et 1 suppressions
  1. 1 1
      Userland/Libraries/LibJS/Bytecode/Op.cpp

+ 1 - 1
Userland/Libraries/LibJS/Bytecode/Op.cpp

@@ -725,7 +725,7 @@ ThrowCompletionOr<void> Call::execute_impl(Bytecode::Interpreter& interpreter) c
     Value return_value;
     Value return_value;
     if (m_type == CallType::DirectEval) {
     if (m_type == CallType::DirectEval) {
         if (callee == interpreter.realm().intrinsics().eval_function())
         if (callee == interpreter.realm().intrinsics().eval_function())
-            return_value = TRY(perform_eval(vm, argument_values[0].value_or(JS::js_undefined()), vm.in_strict_mode() ? CallerMode::Strict : CallerMode::NonStrict, EvalMode::Direct));
+            return_value = TRY(perform_eval(vm, !argument_values.is_empty() ? argument_values[0].value_or(JS::js_undefined()) : js_undefined(), vm.in_strict_mode() ? CallerMode::Strict : CallerMode::NonStrict, EvalMode::Direct));
         else
         else
             return_value = TRY(call(vm, function, this_value, move(argument_values)));
             return_value = TRY(call(vm, function, this_value, move(argument_values)));
     } else if (m_type == CallType::Call)
     } else if (m_type == CallType::Call)