Lines Matching defs:env
450 static ExprEffect NoneWithEnv(Environment* env) {
451 return ExprEffect(kNoEffect, env);
459 Environment* env() {
468 ExprEffect(int effect, Environment* env)
470 reinterpret_cast<intptr_t>(env)) { }
484 Environment env;
485 env.unreachable_ = true;
486 return env;
498 if (effect.env()) out |= *effect.env();
510 bool Equal(const Environment& env) {
511 if (unreachable_ && env.unreachable_) return true;
512 size_t size = std::max(live_.size(), env.live_.size());
514 if (is_live(i) != env.is_live(i)) return false;
555 static Environment* Allocate(const Environment& env) {
556 Environment* allocated_env = new Environment(env);
626 if (in.env() != NULL) {
628 env_ = in.env();
630 *env_ |= *in.env();
664 Environment* a_env = a.env();
665 Environment* b_env = b.env();
676 Environment* a_env = b.hasGC() ? NULL : a.env();
677 Environment* b_env = b.env();
688 Environment* e = env();
720 ExprEffect VisitExpr(clang::Expr* expr, const Environment& env) {
725 return Visit##type(concrete_expr, env); \
792 ExprEffect Visit##type (clang::type* expr, const Environment& env)
795 ExprEffect Visit##type (clang::type* expr, const Environment& env) { \
834 return Use(expr, expr->getType(), THIS, env);
838 Environment after_cond = env.ApplyEffect(VisitExpr(expr->getCond(), env));
845 return Parallel(expr, 2, exprs, env);
865 return Sequential(expr, 2, exprs, env);
869 return ExprEffect::Merge(VisitExpr(lhs, env), VisitExpr(rhs, env));
872 return Parallel(expr, 2, exprs, env);
877 return VisitExpr(expr->getSubExpr(), env);
881 return VisitExpr(expr->GetTemporaryExpr(), env);
885 return VisitArguments<>(expr, env);
889 return VisitExpr(expr->getExpr(), env);
893 return VisitExpr(expr->getArgument(), env);
896 DECL_VISIT_EXPR(CXXNewExpr) { return VisitExpr(expr->getInitializer(), env); }
899 return VisitExpr(expr->getSubExpr(), env);
903 return VisitExpr(expr->getSubExpr(), env);
907 return VisitExpr(expr->getSubExpr(), env);
910 DECL_VISIT_EXPR(ConstantExpr) { return VisitExpr(expr->getSubExpr(), env); }
913 return Sequential(expr, expr->getNumInits(), expr->getInits(), env);
917 return VisitExpr(expr->getBase(), env);
921 return VisitExpr(expr->getSourceExpr(), env);
925 return VisitExpr(expr->getSubExpr(), env);
929 return Parallel(expr, expr->getNumExprs(), expr->getExprs(), env);
945 return VisitExpr(expr->getSubExpr(), env);
953 return VisitExpr(expr->getArgumentExpr(), env);
957 return VisitExpr(expr->getSubExpr(), env);
961 return Use(expr, expr->getDecl(), env);
967 const Environment& env) {
970 props.SetEffect(i, VisitExpr(exprs[i], env));
980 const Environment& env) {
982 Environment out_env = env;
999 const Environment& env) {
1008 if (env.IsAlive(var_name)) return ExprEffect::None();
1016 const Environment& env) {
1018 return Use(parent, var->getType(), var->getNameAsString(), env);
1023 ExprEffect VisitArguments(ExprType* call, const Environment& env) {
1025 VisitArguments<>(call, &props, env);
1034 const Environment& env) {
1036 props->SetEffect(arg + 1, VisitExpr(call->getArg(arg), env));
1044 const Environment& env) {
1051 props.SetEffect(0, VisitExpr(receiver, env));
1064 props.SetEffect(1, VisitExpr(call->getArg(1), env).Define(var_name));
1066 VisitArguments<>(call, &props, env);
1116 Environment VisitStmt(clang::Stmt* stmt, const Environment& env) {
1121 return Visit##type(concrete_stmt, env); \
1126 return env.ApplyEffect(VisitExpr(expr, env));
1150 return env;
1154 Environment Visit##type (clang::type* stmt, const Environment& env)
1157 Environment Visit##type (clang::type* stmt, const Environment& env) { \
1158 return env; \
1188 void MergeIn(const Environment& env) {
1190 in_ = Environment::Merge(in_, env);
1208 void MergeOut(const Environment& env) {
1209 out_ = Environment::Merge(out_, env);
1246 block_->MergeOut(env);
1251 block_->MergeIn(env);
1257 Environment out = env;
1269 Block block (env, this);
1277 Block block (env, this);
1285 Block block (VisitStmt(stmt->getInit(), env), this);
1293 Environment cond_out = VisitStmt(stmt->getCond(), env);
1300 Block block (env, this);
1306 Environment in = Environment::Merge(env, block_->in());
1312 Environment in = Environment::Merge(env, block_->in());
1317 VisitExpr(stmt->getRetValue(), env);
1400 Environment VisitDecl(clang::Decl* decl, Environment& env) {
1402 Environment out = var->hasInit() ? VisitStmt(var->getInit(), env) : env;
1415 return env;
1419 Environment out = env;
1431 Environment* env) {
1432 env->MDefine(THIS);
1437 env->MDefine((*p)->getNameAsString());
1445 Environment env;
1446 DefineParameters(body, &env);
1447 VisitStmt(body->getBody(), env);