diff --git a/Userland/Libraries/LibJS/AST.h b/Userland/Libraries/LibJS/AST.h index b1f5332600..b8e9c4a2c9 100644 --- a/Userland/Libraries/LibJS/AST.h +++ b/Userland/Libraries/LibJS/AST.h @@ -624,6 +624,7 @@ public: virtual Value execute(Interpreter&, GlobalObject&) const override; virtual void dump(int indent) const override; + virtual Optional generate_bytecode(Bytecode::Generator&) const override; private: bool m_value { false }; @@ -690,6 +691,7 @@ public: virtual Value execute(Interpreter&, GlobalObject&) const override; virtual void dump(int indent) const override; + virtual Optional generate_bytecode(Bytecode::Generator&) const override; }; class RegExpLiteral final : public Literal { diff --git a/Userland/Libraries/LibJS/Bytecode/ASTCodegen.cpp b/Userland/Libraries/LibJS/Bytecode/ASTCodegen.cpp index 0bfe99bef9..6b5c2511c8 100644 --- a/Userland/Libraries/LibJS/Bytecode/ASTCodegen.cpp +++ b/Userland/Libraries/LibJS/Bytecode/ASTCodegen.cpp @@ -100,6 +100,20 @@ Optional NumericLiteral::generate_bytecode(Bytecode::Generat return dst; } +Optional BooleanLiteral::generate_bytecode(Bytecode::Generator& generator) const +{ + auto dst = generator.allocate_register(); + generator.emit(dst, Value(m_value)); + return dst; +} + +Optional NullLiteral::generate_bytecode(Bytecode::Generator& generator) const +{ + auto dst = generator.allocate_register(); + generator.emit(dst, js_null()); + return dst; +} + Optional StringLiteral::generate_bytecode(Bytecode::Generator& generator) const { auto dst = generator.allocate_register();