mirror of
https://github.com/LadybirdBrowser/ladybird.git
synced 2025-08-07 00:29:15 +00:00
LibJS: Make Op::Return value required
It turns out we do not have any scenario where this is not provided.
This commit is contained in:
parent
17364c6d36
commit
20dba8f1ab
Notes:
github-actions[bot]
2025-05-23 01:27:06 +00:00
Author: https://github.com/shannonbooth
Commit: 20dba8f1ab
Pull-request: https://github.com/LadybirdBrowser/ladybird/pull/4760
3 changed files with 8 additions and 13 deletions
|
@ -3456,8 +3456,9 @@ Bytecode::CodeGenerationErrorOr<Optional<ScopedOperand>> ClassFieldInitializerSt
|
||||||
{
|
{
|
||||||
Bytecode::Generator::SourceLocationScope scope(generator, *this);
|
Bytecode::Generator::SourceLocationScope scope(generator, *this);
|
||||||
auto value = TRY(generator.emit_named_evaluation_if_anonymous_function(*m_expression, generator.intern_identifier(m_class_field_identifier_name), preferred_dst));
|
auto value = TRY(generator.emit_named_evaluation_if_anonymous_function(*m_expression, generator.intern_identifier(m_class_field_identifier_name), preferred_dst));
|
||||||
|
VERIFY(value.has_value());
|
||||||
generator.perform_needed_unwinds<Bytecode::Op::Return>();
|
generator.perform_needed_unwinds<Bytecode::Op::Return>();
|
||||||
generator.emit<Bytecode::Op::Return>(value.has_value() ? value->operand() : Optional<Operand> {});
|
generator.emit<Bytecode::Op::Return>(value->operand());
|
||||||
return value;
|
return value;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -2925,10 +2925,7 @@ void NewFunction::execute_impl(Bytecode::Interpreter& interpreter) const
|
||||||
|
|
||||||
void Return::execute_impl(Bytecode::Interpreter& interpreter) const
|
void Return::execute_impl(Bytecode::Interpreter& interpreter) const
|
||||||
{
|
{
|
||||||
if (m_value.has_value())
|
interpreter.do_return(interpreter.get(m_value));
|
||||||
interpreter.do_return(interpreter.get(*m_value));
|
|
||||||
else
|
|
||||||
interpreter.do_return(js_undefined());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
ThrowCompletionOr<void> Increment::execute_impl(Bytecode::Interpreter& interpreter) const
|
ThrowCompletionOr<void> Increment::execute_impl(Bytecode::Interpreter& interpreter) const
|
||||||
|
@ -3781,9 +3778,7 @@ ByteString NewClass::to_byte_string_impl(Bytecode::Executable const& executable)
|
||||||
|
|
||||||
ByteString Return::to_byte_string_impl(Bytecode::Executable const& executable) const
|
ByteString Return::to_byte_string_impl(Bytecode::Executable const& executable) const
|
||||||
{
|
{
|
||||||
if (m_value.has_value())
|
return ByteString::formatted("Return {}", format_operand("value"sv, m_value, executable));
|
||||||
return ByteString::formatted("Return {}", format_operand("value"sv, m_value.value(), executable));
|
|
||||||
return "Return";
|
|
||||||
}
|
}
|
||||||
|
|
||||||
ByteString Increment::to_byte_string_impl(Bytecode::Executable const& executable) const
|
ByteString Increment::to_byte_string_impl(Bytecode::Executable const& executable) const
|
||||||
|
|
|
@ -2176,7 +2176,7 @@ class Return final : public Instruction {
|
||||||
public:
|
public:
|
||||||
constexpr static bool IsTerminator = true;
|
constexpr static bool IsTerminator = true;
|
||||||
|
|
||||||
explicit Return(Optional<Operand> value = {})
|
explicit Return(Operand value)
|
||||||
: Instruction(Type::Return)
|
: Instruction(Type::Return)
|
||||||
, m_value(value)
|
, m_value(value)
|
||||||
{
|
{
|
||||||
|
@ -2186,14 +2186,13 @@ public:
|
||||||
ByteString to_byte_string_impl(Bytecode::Executable const&) const;
|
ByteString to_byte_string_impl(Bytecode::Executable const&) const;
|
||||||
void visit_operands_impl(Function<void(Operand&)> visitor)
|
void visit_operands_impl(Function<void(Operand&)> visitor)
|
||||||
{
|
{
|
||||||
if (m_value.has_value())
|
visitor(m_value);
|
||||||
visitor(m_value.value());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
Optional<Operand> const& value() const { return m_value; }
|
Operand const& value() const { return m_value; }
|
||||||
|
|
||||||
private:
|
private:
|
||||||
Optional<Operand> m_value;
|
Operand m_value;
|
||||||
};
|
};
|
||||||
|
|
||||||
class Increment final : public Instruction {
|
class Increment final : public Instruction {
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue