Lines Matching defs:SsaEnv

28 // An SsaEnv environment carries the current local variable renaming
32 struct SsaEnv : public ZoneObject {
41 SsaEnv(Zone* zone, State state, TFNode* control, TFNode* effect,
48 SsaEnv(const SsaEnv& other) V8_NOEXCEPT = default;
49 SsaEnv(SsaEnv&& other) V8_NOEXCEPT : state(other.state),
88 SsaEnv* catch_env;
95 explicit TryInfo(SsaEnv* c) : catch_env(c) {}
99 SsaEnv* merge_env = nullptr; // merge environment for the construct.
100 SsaEnv* false_env = nullptr; // false environment (only for if).
140 SsaEnv* ssa_env = decoder->zone()->New<SsaEnv>(
141 decoder->zone(), SsaEnv::kReached, effect(), control(), num_locals);
176 void LoadContextIntoSsa(SsaEnv* ssa_env) {
200 SsaEnv* merge_env = Steal(decoder->zone(), ssa_env_);
204 ssa_env_->state = SsaEnv::kMerged;
276 SsaEnv* outer_env = ssa_env_;
277 SsaEnv* catch_env = Split(decoder->zone(), outer_env);
280 catch_env->state = SsaEnv::kUnreachable;
281 SsaEnv* try_env = Steal(decoder->zone(), outer_env);
306 SsaEnv* merge_env = ssa_env_;
307 SsaEnv* false_env = Split(decoder->zone(), ssa_env_);
309 SsaEnv* true_env = Steal(decoder->zone(), ssa_env_);
487 SsaEnv* internal_env = ssa_env_;
489 SsaEnv* exit_env = Split(decoder->zone(), ssa_env_);
514 SsaEnv* internal_env = ssa_env_;
515 SsaEnv* exit_env = Split(decoder->zone(), ssa_env_);
530 SsaEnv* fenv = ssa_env_;
531 SsaEnv* tenv = Split(decoder->zone(), fenv);
563 SsaEnv* branch_env = ssa_env_;
567 SsaEnv* copy = Steal(decoder->zone(), branch_env);
798 SsaEnv* false_env = ssa_env_;
799 SsaEnv* true_env = Split(decoder->zone(), false_env);
812 SsaEnv* false_env = ssa_env_;
813 SsaEnv* true_env = Split(decoder->zone(), false_env);
894 SsaEnv* if_no_catch_env = Split(decoder->zone(), ssa_env_);
896 SsaEnv* if_catch_env = Steal(decoder->zone(), ssa_env_);
935 if (target_try->catch_env->state == SsaEnv::kReached) {
938 DCHECK_EQ(target_try->catch_env->state, SsaEnv::kMerged);
1194 SsaEnv* branch_env = Split(decoder->zone(), ssa_env_);
1195 SsaEnv* no_branch_env = Steal(decoder->zone(), ssa_env_);
1197 SsaEnv* match_env = branch_on_match ? branch_env : no_branch_env;
1198 SsaEnv* no_match_env = branch_on_match ? no_branch_env : branch_env;
1321 SsaEnv* ssa_env_ = nullptr;
1368 void SetEnv(SsaEnv* env) {
1373 case SsaEnv::kReached:
1376 case SsaEnv::kUnreachable:
1379 case SsaEnv::kMerged:
1418 SsaEnv* success_env = Steal(decoder->zone(), ssa_env_);
1421 SsaEnv* exception_env = Split(decoder->zone(), success_env);
1438 DCHECK_EQ(SsaEnv::kReached, try_info->catch_env->state);
1441 DCHECK_EQ(SsaEnv::kMerged, try_info->catch_env->state);
1487 SsaEnv* target = c->merge_env;
1489 const bool first = target->state == SsaEnv::kUnreachable;
1521 void Goto(FullDecoder* decoder, SsaEnv* to) {
1524 case SsaEnv::kUnreachable: { // Overwrite destination.
1525 to->state = SsaEnv::kReached;
1539 case SsaEnv::kReached: { // Create a new merge.
1540 to->state = SsaEnv::kMerged;
1571 case SsaEnv::kMerged: {
1601 SsaEnv* Split(Zone* zone, SsaEnv* from) {
1607 SsaEnv* result = zone->New<SsaEnv>(*from);
1608 result->state = SsaEnv::kReached;
1614 SsaEnv* Steal(Zone* zone, SsaEnv* from) {
1620 SsaEnv* result = zone->New<SsaEnv>(std::move(*from));
1623 result->state = SsaEnv::kReached;