Lines Matching refs:node
30 static bool CheckTdz(const ir::AstNode *node)
32 return node->IsIdentifier() && node->AsIdentifier()->IsTdz();
35 static void CheckConstAssignment(PandaGen *pg, const ir::AstNode *node, binder::Variable *variable)
41 pg->ThrowConstAssignment(node, variable->Name());
46 static void ExpandLoadLexVar(PandaGen *pg, const ir::AstNode *node, const binder::ScopeFindResult &result)
55 if (classDef == util::Helpers::GetContainingSendableClass(node) &&
57 pg->LoadSendableClass(node, result.lexLevel);
64 pg->LoadSendableVar(node, result.sendableLevel, local->LexIdx());
66 pg->LoadLexicalVar(node, result.lexLevel, local->LexIdx(), result.variable->Name());
70 pg->ThrowUndefinedIfHole(node, result.variable->Name());
74 static void ExpandLoadNormalVar(PandaGen *pg, const ir::AstNode *node, const binder::ScopeFindResult &result)
78 if (CheckTdz(node)) {
79 pg->LoadConst(node, Constant::JS_HOLE);
80 pg->ThrowUndefinedIfHole(node, local->Name());
82 pg->LoadAccumulator(node, local->Vreg());
86 void VirtualLoadVar::Expand(PandaGen *pg, const ir::AstNode *node, const binder::ScopeFindResult &result)
89 ExpandLoadLexVar(pg, node, result);
91 ExpandLoadNormalVar(pg, node, result);
97 static void ExpandStoreLexVar(PandaGen *pg, const ir::AstNode *node, const binder::ScopeFindResult &result, bool isDecl)
107 pg->StoreAccumulator(node, valueReg);
109 ExpandLoadLexVar(pg, node, result);
112 pg->ThrowConstAssignment(node, local->Name());
115 pg->LoadAccumulator(node, valueReg);
119 pg->StoreSendableVar(node, result.sendableLevel, local->LexIdx());
122 pg->StoreLexicalVar(node, result.lexLevel, local->LexIdx(), local);
125 static void ExpandStoreNormalVar(PandaGen *pg, const ir::AstNode *node, const binder::ScopeFindResult &result,
132 if (CheckTdz(node)) {
133 pg->LoadConst(node, Constant::JS_HOLE);
134 pg->ThrowUndefinedIfHole(node, local->Name());
137 CheckConstAssignment(pg, node, local);
140 pg->StoreAccumulator(node, localReg);
143 void VirtualStoreVar::Expand(PandaGen *pg, const ir::AstNode *node, const binder::ScopeFindResult &result, bool isDecl)
146 ExpandStoreLexVar(pg, node, result, isDecl);
148 ExpandStoreNormalVar(pg, node, result, isDecl);