mirror of
https://github.com/RGBCube/serenity
synced 2025-07-25 04:57:44 +00:00
LibJS: Implement generator functions (only in bytecode mode)
This commit is contained in:
parent
c53a86a3fe
commit
3234697eca
21 changed files with 407 additions and 34 deletions
|
@ -16,9 +16,9 @@ class ScriptFunction final : public Function {
|
|||
JS_OBJECT(ScriptFunction, Function);
|
||||
|
||||
public:
|
||||
static ScriptFunction* create(GlobalObject&, const FlyString& name, const Statement& body, Vector<FunctionNode::Parameter> parameters, i32 m_function_length, ScopeObject* parent_scope, bool is_strict, bool is_arrow_function = false);
|
||||
static ScriptFunction* create(GlobalObject&, const FlyString& name, const Statement& body, Vector<FunctionNode::Parameter> parameters, i32 m_function_length, ScopeObject* parent_scope, bool is_generator, bool is_strict, bool is_arrow_function = false);
|
||||
|
||||
ScriptFunction(GlobalObject&, const FlyString& name, const Statement& body, Vector<FunctionNode::Parameter> parameters, i32 m_function_length, ScopeObject* parent_scope, Object& prototype, bool is_strict, bool is_arrow_function = false);
|
||||
ScriptFunction(GlobalObject&, const FlyString& name, const Statement& body, Vector<FunctionNode::Parameter> parameters, i32 m_function_length, ScopeObject* parent_scope, Object& prototype, bool is_generator, bool is_strict, bool is_arrow_function = false);
|
||||
virtual void initialize(GlobalObject&) override;
|
||||
virtual ~ScriptFunction();
|
||||
|
||||
|
@ -33,6 +33,8 @@ public:
|
|||
|
||||
void set_is_class_constructor() { m_is_class_constructor = true; };
|
||||
|
||||
auto& bytecode_executable() const { return m_bytecode_executable; }
|
||||
|
||||
protected:
|
||||
virtual bool is_strict_mode() const final { return m_is_strict; }
|
||||
|
||||
|
@ -51,6 +53,7 @@ private:
|
|||
Optional<Bytecode::Executable> m_bytecode_executable;
|
||||
ScopeObject* m_parent_scope { nullptr };
|
||||
i32 m_function_length { 0 };
|
||||
bool m_is_generator { false };
|
||||
bool m_is_strict { false };
|
||||
bool m_is_arrow_function { false };
|
||||
bool m_is_class_constructor { false };
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue