Lines Matching refs:Environment
436 class Environment;
450 static ExprEffect NoneWithEnv(Environment* env) { in NoneWithEnv()
459 Environment* env() { in env()
460 return reinterpret_cast<Environment*>(effect_ & ~kAllEffects); in env()
468 ExprEffect(int effect, Environment* env) in ExprEffect()
479 class Environment { class
481 Environment() = default;
483 static Environment Unreachable() { in Unreachable()
484 Environment env; in Unreachable()
489 static Environment Merge(const Environment& l, in Merge()
490 const Environment& r) { in Merge()
491 Environment out(l); in Merge()
496 Environment ApplyEffect(ExprEffect effect) const { in ApplyEffect()
497 Environment out = effect.hasGC() ? Environment() : Environment(*this); in ApplyEffect()
510 bool Equal(const Environment& env) { in Equal()
519 Environment Define(const std::string& name) const { in Define()
520 return Environment(*this, SymbolToCode(name)); in Define()
538 for (Environment* e : envs_) delete e; in ClearSymbolTable()
555 static Environment* Allocate(const Environment& env) { in Allocate()
556 Environment* allocated_env = new Environment(env); in Allocate()
562 Environment(const Environment& l, int code) in Environment() function in __anon4ae52ded0111::Environment
577 Environment& operator|=(const Environment& o) { in operator |=()
589 Environment& operator&=(const Environment& o) { in operator &=()
604 static std::vector<Environment*> envs_;
656 Environment* env_;
660 Environment::SymbolTable Environment::symbol_table_;
661 std::vector<Environment*> Environment::envs_;
664 Environment* a_env = a.env(); in Merge()
665 Environment* b_env = b.env(); in Merge()
666 Environment* out = NULL; in Merge()
668 out = Environment::Allocate(*a_env); in Merge()
676 Environment* a_env = b.hasGC() ? NULL : a.env(); in MergeSeq()
677 Environment* b_env = b.env(); in MergeSeq()
678 Environment* out = (b_env == NULL) ? a_env : b_env; in MergeSeq()
680 out = Environment::Allocate(*b_env); in MergeSeq()
688 Environment* e = env(); in Define()
690 e = Environment::Allocate(Environment()); in Define()
720 ExprEffect VisitExpr(clang::Expr* expr, const Environment& env) { in VisitExpr()
792 ExprEffect Visit##type (clang::type* expr, const Environment& env)
795 ExprEffect Visit##type (clang::type* expr, const Environment& env) { \
838 Environment after_cond = env.ApplyEffect(VisitExpr(expr->getCond(), env)); in DECL_VISIT_EXPR()
967 const Environment& env) { in Parallel()
980 const Environment& env) { in Sequential()
982 Environment out_env = env; in Sequential()
999 const Environment& env) { in Use()
1016 const Environment& env) { in Use()
1023 ExprEffect VisitArguments(ExprType* call, const Environment& env) { in VisitArguments()
1034 const Environment& env) { in VisitArguments()
1044 const Environment& env) { in VisitCallExpr()
1116 Environment VisitStmt(clang::Stmt* stmt, const Environment& env) { in VisitStmt()
1154 Environment Visit##type (clang::type* stmt, const Environment& env)
1157 Environment Visit##type (clang::type* stmt, const Environment& env) { \
1175 Block(const Environment& in, in Block()
1178 out_(Environment::Unreachable()), in Block()
1188 void MergeIn(const Environment& env) { in MergeIn()
1189 Environment old_in = in_; in MergeIn()
1190 in_ = Environment::Merge(in_, env); in MergeIn()
1200 const Environment& in() { in in()
1204 const Environment& out() { in out()
1208 void MergeOut(const Environment& env) { in MergeOut()
1209 out_ = Environment::Merge(out_, env); in MergeOut()
1213 Environment a_out = owner_->VisitStmt(a, in()); in Sequential()
1214 Environment b_out = owner_->VisitStmt(b, a_out); in Sequential()
1215 Environment c_out = owner_->VisitStmt(c, b_out); in Sequential()
1220 Environment a_out = owner_->VisitStmt(a, in()); in Sequential()
1221 Environment b_out = owner_->VisitStmt(b, a_out); in Sequential()
1237 Environment in_;
1238 Environment out_;
1247 return Environment::Unreachable(); in DECL_VISIT_STMT()
1252 return Environment::Unreachable(); in DECL_VISIT_STMT()
1257 Environment out = env; in DECL_VISIT_STMT()
1293 Environment cond_out = VisitStmt(stmt->getCond(), env); in DECL_VISIT_STMT()
1294 Environment then_out = VisitStmt(stmt->getThen(), cond_out); in DECL_VISIT_STMT()
1295 Environment else_out = VisitStmt(stmt->getElse(), cond_out); in DECL_VISIT_STMT()
1296 return Environment::Merge(then_out, else_out); in DECL_VISIT_STMT()
1306 Environment in = Environment::Merge(env, block_->in()); in DECL_VISIT_STMT()
1307 Environment after_lhs = VisitStmt(stmt->getLHS(), in); in DECL_VISIT_STMT()
1312 Environment in = Environment::Merge(env, block_->in()); in DECL_VISIT_STMT()
1318 return Environment::Unreachable(); in DECL_VISIT_STMT()
1400 Environment VisitDecl(clang::Decl* decl, Environment& env) { in VisitDecl()
1402 Environment out = var->hasInit() ? VisitStmt(var->getInit(), env) : env; in VisitDecl()
1419 Environment out = env; in DECL_VISIT_STMT()
1431 Environment* env) { in DefineParameters()
1445 Environment env; in AnalyzeFunction()
1448 Environment::ClearSymbolTable(); in AnalyzeFunction()