Sfoglia il codice sorgente

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

3 new passes on test262. :^)
Andreas Kling 2 anni fa
parent
commit
ad15a1e3e2
1 ha cambiato i file con 1 aggiunte e 1 eliminazioni
  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;
     if (m_type == CallType::DirectEval) {
         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
             return_value = TRY(call(vm, function, this_value, move(argument_values)));
     } else if (m_type == CallType::Call)