| Index: runtime/vm/intermediate_language.h | 
| diff --git a/runtime/vm/intermediate_language.h b/runtime/vm/intermediate_language.h | 
| index b21b8669d6be272c7e77a21591b5c394d343283f..cf88355652cc58038b7783cb807fb4c8fd44093a 100644 | 
| --- a/runtime/vm/intermediate_language.h | 
| +++ b/runtime/vm/intermediate_language.h | 
| @@ -178,34 +178,6 @@ class CompileType : public ZoneAllocated { | 
| const AbstractType* type_; | 
| }; | 
|  | 
| -// TODO(dartbug.com/30474): remove EffectSet as there are no tracked effects | 
| -// anymore. | 
| -class EffectSet : public ValueObject { | 
| - public: | 
| -  enum Effects { | 
| -    kNoEffects = 0, | 
| -    kUnusedEffect = 1,  // Currently unused. | 
| -    kLastEffect = kUnusedEffect | 
| -  }; | 
| - | 
| -  EffectSet(const EffectSet& other) : ValueObject(), effects_(other.effects_) {} | 
| - | 
| -  bool IsNone() const { return effects_ == kNoEffects; } | 
| - | 
| -  static EffectSet None() { return EffectSet(kNoEffects); } | 
| -  static EffectSet All() { | 
| -    ASSERT(EffectSet::kLastEffect == 1); | 
| -    return EffectSet(kUnusedEffect); | 
| -  } | 
| - | 
| -  bool ToInt() { return effects_; } | 
| - | 
| - private: | 
| -  explicit EffectSet(intptr_t effects) : effects_(effects) {} | 
| - | 
| -  intptr_t effects_; | 
| -}; | 
| - | 
| class Value : public ZoneAllocated { | 
| public: | 
| // A forward iterator that allows removing the current value from the | 
| @@ -877,12 +849,6 @@ class Instruction : public ZoneAllocated { | 
| // See StoreInstanceFieldInstr::HasUnknownSideEffects() for rationale. | 
| virtual bool HasUnknownSideEffects() const = 0; | 
|  | 
| -  // Returns set of effects that affect this instruction. | 
| -  virtual EffectSet Dependencies() const { | 
| -    UNREACHABLE(); | 
| -    return EffectSet::All(); | 
| -  } | 
| - | 
| // Get the block entry for this instruction. | 
| virtual BlockEntryInstr* GetBlock(); | 
|  | 
| @@ -986,8 +952,6 @@ class PureInstruction : public Instruction { | 
| explicit PureInstruction(intptr_t deopt_id) : Instruction(deopt_id) {} | 
|  | 
| virtual bool AllowsCSE() const { return true; } | 
| -  virtual EffectSet Dependencies() const { return EffectSet::None(); } | 
| - | 
| virtual bool HasUnknownSideEffects() const { return false; } | 
| }; | 
|  | 
| @@ -1106,11 +1070,6 @@ class ParallelMoveInstr : public TemplateInstruction<0, NoThrow> { | 
| return false; | 
| } | 
|  | 
| -  virtual EffectSet Dependencies() const { | 
| -    UNREACHABLE();  // This instruction never visited by optimization passes. | 
| -    return EffectSet::None(); | 
| -  } | 
| - | 
| MoveOperands* AddMove(Location dest, Location src) { | 
| MoveOperands* move = new MoveOperands(dest, src); | 
| moves_.Add(move); | 
| @@ -1226,7 +1185,6 @@ class BlockEntryInstr : public Instruction { | 
| virtual bool ComputeCanDeoptimize() const { return false; } | 
|  | 
| virtual bool HasUnknownSideEffects() const { return false; } | 
| -  virtual EffectSet Dependencies() const { return EffectSet::None(); } | 
|  | 
| virtual bool MayThrow() const { return false; } | 
|  | 
| @@ -1472,7 +1430,6 @@ class JoinEntryInstr : public BlockEntryInstr { | 
| void RemovePhi(PhiInstr* phi); | 
|  | 
| virtual bool HasUnknownSideEffects() const { return false; } | 
| -  virtual EffectSet Dependencies() const { return EffectSet::None(); } | 
|  | 
| PRINT_TO_SUPPORT | 
|  | 
| @@ -1884,8 +1841,6 @@ class PureDefinition : public Definition { | 
| explicit PureDefinition(intptr_t deopt_id) : Definition(deopt_id) {} | 
|  | 
| virtual bool AllowsCSE() const { return true; } | 
| -  virtual EffectSet Dependencies() const { return EffectSet::None(); } | 
| - | 
| virtual bool HasUnknownSideEffects() const { return false; } | 
| }; | 
|  | 
| @@ -2037,7 +1992,6 @@ class ParameterInstr : public Definition { | 
| virtual bool ComputeCanDeoptimize() const { return false; } | 
|  | 
| virtual bool HasUnknownSideEffects() const { return false; } | 
| -  virtual EffectSet Dependencies() const { return EffectSet::None(); } | 
|  | 
| virtual intptr_t Hashcode() const { | 
| UNREACHABLE(); | 
| @@ -2182,8 +2136,6 @@ class StopInstr : public TemplateInstruction<0, NoThrow> { | 
|  | 
| virtual bool HasUnknownSideEffects() const { return false; } | 
|  | 
| -  virtual EffectSet Dependencies() const { return EffectSet::None(); } | 
| - | 
| private: | 
| const char* message_; | 
|  | 
| @@ -2386,8 +2338,6 @@ class ComparisonInstr : public Definition { | 
| class PureComparison : public ComparisonInstr { | 
| public: | 
| virtual bool AllowsCSE() const { return true; } | 
| -  virtual EffectSet Dependencies() const { return EffectSet::None(); } | 
| - | 
| virtual bool HasUnknownSideEffects() const { return false; } | 
|  | 
| protected: | 
| @@ -2538,7 +2488,6 @@ class RedefinitionInstr : public TemplateDefinition<1, NoThrow> { | 
| CompileType* constrained_type() const { return constrained_type_; } | 
|  | 
| virtual bool ComputeCanDeoptimize() const { return false; } | 
| -  virtual EffectSet Dependencies() const { return EffectSet::None(); } | 
| virtual bool HasUnknownSideEffects() const { return false; } | 
|  | 
| private: | 
| @@ -2737,7 +2686,7 @@ class SpecialParameterInstr : public TemplateDefinition<0, NoThrow> { | 
| virtual bool ComputeCanDeoptimize() const { return false; } | 
|  | 
| virtual bool HasUnknownSideEffects() const { return false; } | 
| -  virtual EffectSet Dependencies() const { return EffectSet::None(); } | 
| + | 
| virtual bool AttributesEqual(Instruction* other) const { | 
| return kind() == other->AsSpecialParameter()->kind(); | 
| } | 
| @@ -3261,9 +3210,7 @@ class IfThenElseInstr : public Definition { | 
| virtual bool HasUnknownSideEffects() const { | 
| return comparison()->HasUnknownSideEffects(); | 
| } | 
| -  virtual EffectSet Dependencies() const { | 
| -    return comparison()->Dependencies(); | 
| -  } | 
| + | 
| virtual bool AttributesEqual(Instruction* other) const { | 
| IfThenElseInstr* other_if_then_else = other->AsIfThenElse(); | 
| return (comparison()->tag() == other_if_then_else->comparison()->tag()) && | 
| @@ -3781,7 +3728,7 @@ class LoadStaticFieldInstr : public TemplateDefinition<1, NoThrow> { | 
| return StaticField().is_final() && !FLAG_fields_may_be_reset; | 
| } | 
| virtual bool HasUnknownSideEffects() const { return false; } | 
| -  virtual EffectSet Dependencies() const; | 
| + | 
| virtual bool AttributesEqual(Instruction* other) const; | 
|  | 
| virtual TokenPosition token_pos() const { return token_pos_; } | 
| @@ -4516,7 +4463,7 @@ class LoadFieldInstr : public TemplateDefinition<1, NoThrow> { | 
|  | 
| virtual bool AllowsCSE() const { return immutable_; } | 
| virtual bool HasUnknownSideEffects() const { return false; } | 
| -  virtual EffectSet Dependencies() const; | 
| + | 
| virtual bool AttributesEqual(Instruction* other) const; | 
|  | 
| PRINT_OPERANDS_TO_SUPPORT | 
| @@ -7620,8 +7567,8 @@ class CheckClassInstr : public TemplateInstruction<1, NoThrow> { | 
| intptr_t ComputeCidMask() const; | 
|  | 
| virtual bool AllowsCSE() const { return true; } | 
| -  virtual EffectSet Dependencies() const { return EffectSet::None(); } | 
| virtual bool HasUnknownSideEffects() const { return false; } | 
| + | 
| virtual bool AttributesEqual(Instruction* other) const; | 
|  | 
| bool licm_hoisted() const { return licm_hoisted_; } | 
| @@ -7700,8 +7647,8 @@ class CheckClassIdInstr : public TemplateInstruction<1, NoThrow> { | 
| virtual Instruction* Canonicalize(FlowGraph* flow_graph); | 
|  | 
| virtual bool AllowsCSE() const { return true; } | 
| -  virtual EffectSet Dependencies() const { return EffectSet::None(); } | 
| virtual bool HasUnknownSideEffects() const { return false; } | 
| + | 
| virtual bool AttributesEqual(Instruction* other) const { return true; } | 
|  | 
| PRINT_OPERANDS_TO_SUPPORT | 
| @@ -7768,7 +7715,6 @@ class GenericCheckBoundInstr : public TemplateInstruction<2, Throws, NoCSE> { | 
| Value* index() const { return inputs_[kIndexPos]; } | 
|  | 
| virtual bool HasUnknownSideEffects() const { return false; } | 
| -  virtual EffectSet Dependencies() const { return EffectSet::None(); } | 
|  | 
| DECLARE_INSTRUCTION(GenericCheckBound) | 
|  | 
| @@ -7819,7 +7765,7 @@ class UnboxedIntConverterInstr : public TemplateDefinition<1, NoThrow> { | 
| } | 
|  | 
| virtual bool HasUnknownSideEffects() const { return false; } | 
| -  virtual EffectSet Dependencies() const { return EffectSet::None(); } | 
| + | 
| virtual bool AttributesEqual(Instruction* other) const { | 
| ASSERT(other->IsUnboxedIntConverter()); | 
| UnboxedIntConverterInstr* converter = other->AsUnboxedIntConverter(); | 
|  |