Lines Matching refs:env

290   static ExprEffect NoneWithEnv(Environment* env) {
291 return ExprEffect(kNoEffect, env);
299 Environment* env() {
308 ExprEffect(int effect, Environment* env)
310 reinterpret_cast<intptr_t>(env)) { }
325 Environment env;
326 env.live_.set();
327 return env;
337 if (effect.env() != NULL) out.live_ |= effect.env()->live_;
349 bool Equal(const Environment& env) {
350 return live_ == env.live_;
400 static Environment* Allocate(const Environment& env) {
401 Environment* allocated_env = new Environment(env);
435 if (in.env() != NULL) {
436 if (env_ == NULL) env_ = in.env();
437 env_->live_ |= in.env()->live_;
470 Environment* a_env = a.env();
471 Environment* b_env = b.env();
482 Environment* a_env = b.hasGC() ? NULL : a.env();
483 Environment* b_env = b.env();
494 Environment* e = env();
530 ExprEffect VisitExpr(clang::Expr* expr, const Environment& env) {
534 return Visit##type (concrete_expr, env); \
600 ExprEffect Visit##type (clang::type* expr, const Environment& env)
603 ExprEffect Visit##type (clang::type* expr, const Environment& env) { \
644 return Use(expr, expr->getType(), THIS, env);
648 Environment after_cond = env.ApplyEffect(VisitExpr(expr->getCond(), env));
655 return Par(expr, 2, exprs, env);
677 return Seq(expr, 2, exprs, env);
681 return ExprEffect::Merge(VisitExpr(lhs, env), VisitExpr(rhs, env));
686 return VisitExpr(rhs, env).Define(var_name);
688 return Par(expr, 2, exprs, env);
692 return Par(expr, 2, exprs, env);
697 return VisitExpr(expr->getSubExpr(), env);
701 return VisitArguments<>(expr, env);
705 return VisitExpr(expr->getExpr(), env);
709 return VisitExpr(expr->getArgument(), env);
716 env);
720 return VisitExpr(expr->getSubExpr(), env);
724 return VisitExpr(expr->getSubExpr(), env);
728 return Seq(expr, expr->getNumInits(), expr->getInits(), env);
732 return VisitExpr(expr->getBase(), env);
736 return VisitExpr(expr->getSourceExpr(), env);
740 return VisitExpr(expr->getSubExpr(), env);
744 return Par(expr, expr->getNumExprs(), expr->getExprs(), env);
760 return VisitExpr(expr->getSubExpr(), env);
764 return VisitExpr(expr->getSubExpr(), env);
768 return Use(expr, expr->getDecl(), env);
772 return Use(expr, expr->getDecl(), env);
778 const Environment& env) {
782 props.SetEffect(i, VisitExpr(exprs[i], env));
793 const Environment& env) {
795 Environment out_env = env;
806 const Environment& env) {
808 if (!env.IsAlive(var_name) && dead_vars_analysis_) {
818 const Environment& env) {
822 return Use(parent, var->getType(), var->getNameAsString(), env);
827 ExprEffect VisitArguments(ExprType* call, const Environment& env) {
829 VisitArguments<>(call, &props, env);
837 const Environment& env) {
839 props->SetEffect(arg + 1, VisitExpr(call->getArg(arg), env));
845 const Environment& env) {
852 props.SetEffect(0, VisitExpr(receiver, env));
855 VisitArguments<>(call, &props, env);
874 Environment VisitStmt(clang::Stmt* stmt, const Environment& env) {
878 return Visit##type (concrete_stmt, env); \
883 return env.ApplyEffect(VisitExpr(expr, env));
907 return env;
911 Environment Visit##type (clang::type* stmt, const Environment& env)
914 Environment Visit##type (clang::type* stmt, const Environment& env) { \
915 return env; \
945 void MergeIn(const Environment& env) {
947 in_ = Environment::Merge(in_, env);
967 void MergeOut(const Environment& env) {
968 out_ = Environment::Merge(out_, env);
1005 block_->MergeOut(env);
1010 block_->MergeIn(env);
1015 Environment out = env;
1026 Block block (env, this);
1034 Block block (env, this);
1042 Block block (VisitStmt(stmt->getInit(), env), this);
1052 Environment cond_out = VisitStmt(stmt->getCond(), env);
1059 Block block (env, this);
1065 Environment in = Environment::Merge(env, block_->in());
1071 Environment in = Environment::Merge(env, block_->in());
1076 VisitExpr(stmt->getRetValue(), env);
1121 Environment VisitDecl(clang::Decl* decl, const Environment& env) {
1123 Environment out = var->hasInit() ? VisitStmt(var->getInit(), env) : env;
1132 return env;
1136 Environment out = env;
1148 Environment* env) {
1149 env->MDefine(THIS);
1154 env->MDefine((*p)->getNameAsString());
1162 Environment env;
1163 DefineParameters(body, &env);
1164 VisitStmt(body->getBody(), env);