Index: runtime/vm/intermediate_language.h |
diff --git a/runtime/vm/intermediate_language.h b/runtime/vm/intermediate_language.h |
index f03f11e4fad158e3fed42a4e8ef0e71abc5756e0..f4664dc04a9b53e98d41febfdb77c6c5d5bf15ea 100644 |
--- a/runtime/vm/intermediate_language.h |
+++ b/runtime/vm/intermediate_language.h |
@@ -599,6 +599,20 @@ FOR_EACH_ABSTRACT_INSTRUCTION(FORWARD_DECLARATION) |
DECLARE_INSTRUCTION_NO_BACKEND(type) \ |
DECLARE_INSTRUCTION_BACKEND() \ |
+#ifndef PRODUCT |
+#define PRINT_TO_SUPPORT \ |
+ virtual void PrintTo(BufferFormatter* f) const; |
+#else |
+#define PRINT_TO_SUPPORT |
+#endif // !PRODUCT |
+ |
+#ifndef PRODUCT |
+#define PRINT_OPERANDS_TO_SUPPORT \ |
+ virtual void PrintOperandsTo(BufferFormatter* f) const; |
+#else |
+#define PRINT_OPERANDS_TO_SUPPORT |
+#endif // !PRODUCT |
+ |
class Instruction : public ZoneAllocated { |
public: |
#define DECLARE_TAG(type) k##type, |
@@ -704,8 +718,10 @@ class Instruction : public ZoneAllocated { |
// Printing support. |
const char* ToCString() const; |
+#ifndef PRODUCT |
virtual void PrintTo(BufferFormatter* f) const; |
virtual void PrintOperandsTo(BufferFormatter* f) const; |
+#endif |
#define DECLARE_INSTRUCTION_TYPE_CHECK(Name, Type) \ |
bool Is##Name() { return (As##Name() != NULL); } \ |
@@ -1054,12 +1070,12 @@ class ParallelMoveInstr : public TemplateInstruction<0, NoThrow> { |
bool IsRedundant() const; |
- virtual void PrintTo(BufferFormatter* f) const; |
- |
virtual TokenPosition token_pos() const { |
return TokenPosition::kParallelMove; |
} |
+ PRINT_TO_SUPPORT |
+ |
private: |
GrowableArray<MoveOperands*> moves_; // Elements cannot be null. |
@@ -1375,7 +1391,7 @@ class GraphEntryInstr : public BlockEntryInstr { |
return indirect_entries_; |
} |
- virtual void PrintTo(BufferFormatter* f) const; |
+ PRINT_TO_SUPPORT |
private: |
virtual void ClearPredecessors() {} |
@@ -1421,11 +1437,11 @@ class JoinEntryInstr : public BlockEntryInstr { |
void InsertPhi(PhiInstr* phi); |
void RemovePhi(PhiInstr* phi); |
- virtual void PrintTo(BufferFormatter* f) const; |
- |
virtual EffectSet Effects() const { return EffectSet::None(); } |
virtual EffectSet Dependencies() const { return EffectSet::None(); } |
+ PRINT_TO_SUPPORT |
+ |
private: |
// Classes that have access to predecessors_ when inlining. |
friend class BlockEntryInstr; |
@@ -1492,7 +1508,7 @@ class TargetEntryInstr : public BlockEntryInstr { |
return predecessor_; |
} |
- virtual void PrintTo(BufferFormatter* f) const; |
+ PRINT_TO_SUPPORT |
private: |
friend class BlockEntryInstr; // Access to predecessor_ when inlining. |
@@ -1520,10 +1536,10 @@ class IndirectEntryInstr : public JoinEntryInstr { |
DECLARE_INSTRUCTION(IndirectEntry) |
- virtual void PrintTo(BufferFormatter* f) const; |
- |
intptr_t indirect_id() const { return indirect_id_; } |
+ PRINT_TO_SUPPORT |
+ |
private: |
const intptr_t indirect_id_; |
}; |
@@ -1570,7 +1586,7 @@ class CatchBlockEntryInstr : public BlockEntryInstr { |
return &initial_definitions_; |
} |
- virtual void PrintTo(BufferFormatter* f) const; |
+ PRINT_TO_SUPPORT |
private: |
friend class BlockEntryInstr; // Access to predecessor_ when inlining. |
@@ -1712,6 +1728,9 @@ class Definition : public Instruction { |
return false; |
} |
+ PRINT_OPERANDS_TO_SUPPORT |
+ PRINT_TO_SUPPORT |
+ |
bool UpdateType(CompileType new_type) { |
if (type_ == NULL) { |
type_ = ZoneCompileType::Wrap(new_type); |
@@ -1753,11 +1772,6 @@ class Definition : public Instruction { |
// NULL iterator. |
void ReplaceWith(Definition* other, ForwardInstructionIterator* iterator); |
- // Printing support. These functions are sometimes overridden for custom |
- // formatting. Otherwise, it prints in the format "opcode(op1, op2, op3)". |
- virtual void PrintTo(BufferFormatter* f) const; |
- virtual void PrintOperandsTo(BufferFormatter* f) const; |
- |
// A value in the constant propagation lattice. |
// - non-constant sentinel |
// - a constant (any non-sentinel value) |
@@ -1937,8 +1951,6 @@ class PhiInstr : public Definition { |
DECLARE_INSTRUCTION(Phi) |
- virtual void PrintTo(BufferFormatter* f) const; |
- |
virtual void InferRange(RangeAnalysis* analysis, Range* range); |
BitVector* reaching_defs() const { |
@@ -1962,6 +1974,8 @@ class PhiInstr : public Definition { |
return loop_variable_info_; |
} |
+ PRINT_TO_SUPPORT |
+ |
private: |
// Direct access to inputs_ in order to resize it due to unreachable |
// predecessors. |
@@ -2012,12 +2026,12 @@ class ParameterInstr : public Definition { |
return 0; |
} |
- virtual void PrintOperandsTo(BufferFormatter* f) const; |
- |
virtual CompileType ComputeType() const; |
virtual bool MayThrow() const { return false; } |
+ PRINT_OPERANDS_TO_SUPPORT |
+ |
private: |
virtual void RawSetInputAt(intptr_t i, Value* value) { UNREACHABLE(); } |
@@ -2045,12 +2059,13 @@ class PushArgumentInstr : public TemplateDefinition<1, NoThrow> { |
virtual EffectSet Effects() const { return EffectSet::None(); } |
- virtual void PrintOperandsTo(BufferFormatter* f) const; |
virtual TokenPosition token_pos() const { |
return TokenPosition::kPushArgument; |
} |
+ PRINT_OPERANDS_TO_SUPPORT |
+ |
private: |
DISALLOW_COPY_AND_ASSIGN(PushArgumentInstr); |
}; |
@@ -2223,12 +2238,12 @@ class GotoInstr : public TemplateInstruction<0, NoThrow> { |
return parallel_move_; |
} |
- virtual void PrintTo(BufferFormatter* f) const; |
- |
virtual TokenPosition token_pos() const { |
return TokenPosition::kControlFlow; |
} |
+ PRINT_TO_SUPPORT |
+ |
private: |
BlockEntryInstr* block_; |
JoinEntryInstr* successor_; |
@@ -2286,11 +2301,11 @@ class IndirectGotoInstr : public TemplateInstruction<1, NoThrow> { |
virtual EffectSet Effects() const { return EffectSet::None(); } |
- virtual void PrintTo(BufferFormatter* f) const; |
- |
Value* offset() const { return inputs_[0]; } |
void ComputeOffsetTable(); |
+ PRINT_TO_SUPPORT |
+ |
private: |
GrowableArray<TargetEntryInstr*> successors_; |
TypedData& offsets_; |
@@ -2417,8 +2432,6 @@ class BranchInstr : public Instruction { |
virtual Instruction* Canonicalize(FlowGraph* flow_graph); |
- virtual void PrintTo(BufferFormatter* f) const; |
- |
// Set compile type constrained by the comparison of this branch. |
// FlowGraphPropagator propagates it downwards into either true or false |
// successor. |
@@ -2454,6 +2467,8 @@ class BranchInstr : public Instruction { |
virtual intptr_t SuccessorCount() const; |
virtual BlockEntryInstr* SuccessorAt(intptr_t index) const; |
+ PRINT_TO_SUPPORT |
+ |
private: |
virtual void RawSetInputAt(intptr_t i, Value* value) { |
comparison()->RawSetInputAt(i, value); |
@@ -2535,8 +2550,6 @@ class ConstraintInstr : public TemplateDefinition<1, NoThrow> { |
return false; |
} |
- virtual void PrintOperandsTo(BufferFormatter* f) const; |
- |
Value* value() const { return inputs_[0]; } |
Range* constraint() const { return constraint_; } |
@@ -2552,6 +2565,8 @@ class ConstraintInstr : public TemplateDefinition<1, NoThrow> { |
return target_; |
} |
+ PRINT_OPERANDS_TO_SUPPORT |
+ |
private: |
Range* constraint_; |
TargetEntryInstr* target_; |
@@ -2572,8 +2587,6 @@ class ConstantInstr : public TemplateDefinition<0, NoThrow, Pure> { |
const Object& value() const { return value_; } |
- virtual void PrintOperandsTo(BufferFormatter* f) const; |
- |
virtual bool CanDeoptimize() const { return false; } |
virtual void InferRange(RangeAnalysis* analysis, Range* range); |
@@ -2582,6 +2595,8 @@ class ConstantInstr : public TemplateDefinition<0, NoThrow, Pure> { |
virtual TokenPosition token_pos() const { return token_pos_; } |
+ PRINT_OPERANDS_TO_SUPPORT |
+ |
private: |
const Object& value_; |
const TokenPosition token_pos_; |
@@ -2647,8 +2662,6 @@ class AssertAssignableInstr : public TemplateDefinition<2, Throws, Pure> { |
} |
const String& dst_name() const { return dst_name_; } |
- virtual void PrintOperandsTo(BufferFormatter* f) const; |
- |
virtual bool CanDeoptimize() const { return true; } |
virtual bool CanBecomeDeoptimizationTarget() const { |
@@ -2661,6 +2674,8 @@ class AssertAssignableInstr : public TemplateDefinition<2, Throws, Pure> { |
virtual bool AttributesEqual(Instruction* other) const; |
+ PRINT_OPERANDS_TO_SUPPORT |
+ |
private: |
const TokenPosition token_pos_; |
AbstractType& dst_type_; |
@@ -2684,14 +2699,14 @@ class AssertBooleanInstr : public TemplateDefinition<1, Throws, Pure> { |
virtual TokenPosition token_pos() const { return token_pos_; } |
Value* value() const { return inputs_[0]; } |
- virtual void PrintOperandsTo(BufferFormatter* f) const; |
- |
virtual bool CanDeoptimize() const { return true; } |
virtual Definition* Canonicalize(FlowGraph* flow_graph); |
virtual bool AttributesEqual(Instruction* other) const { return true; } |
+ PRINT_OPERANDS_TO_SUPPORT |
+ |
private: |
const TokenPosition token_pos_; |
@@ -2747,12 +2762,12 @@ class ClosureCallInstr : public TemplateDefinition<1, Throws> { |
// TODO(kmillikin): implement exact call counts for closure calls. |
virtual intptr_t CallCount() const { return 1; } |
- virtual void PrintOperandsTo(BufferFormatter* f) const; |
- |
virtual bool CanDeoptimize() const { return true; } |
virtual EffectSet Effects() const { return EffectSet::All(); } |
+ PRINT_OPERANDS_TO_SUPPORT |
+ |
private: |
const ClosureCallNode& ast_node_; |
ZoneGrowableArray<PushArgumentInstr*>* arguments_; |
@@ -2814,8 +2829,6 @@ class InstanceCallInstr : public TemplateDefinition<0, Throws> { |
const Array& argument_names() const { return argument_names_; } |
intptr_t checked_argument_count() const { return checked_argument_count_; } |
- virtual void PrintOperandsTo(BufferFormatter* f) const; |
- |
virtual bool CanDeoptimize() const { return true; } |
virtual bool CanBecomeDeoptimizationTarget() const { |
@@ -2826,6 +2839,8 @@ class InstanceCallInstr : public TemplateDefinition<0, Throws> { |
virtual EffectSet Effects() const { return EffectSet::All(); } |
+ PRINT_OPERANDS_TO_SUPPORT |
+ |
protected: |
friend class FlowGraphOptimizer; |
void set_ic_data(ICData* value) { ic_data_ = value; } |
@@ -2883,7 +2898,7 @@ class PolymorphicInstanceCallInstr : public TemplateDefinition<0, Throws> { |
virtual EffectSet Effects() const { return EffectSet::All(); } |
- virtual void PrintOperandsTo(BufferFormatter* f) const; |
+ PRINT_OPERANDS_TO_SUPPORT |
private: |
InstanceCallInstr* instance_call_; |
@@ -2908,8 +2923,6 @@ class StrictCompareInstr : public ComparisonInstr { |
virtual CompileType ComputeType() const; |
- virtual void PrintOperandsTo(BufferFormatter* f) const; |
- |
virtual bool CanDeoptimize() const { return false; } |
virtual Definition* Canonicalize(FlowGraph* flow_graph); |
@@ -2925,6 +2938,8 @@ class StrictCompareInstr : public ComparisonInstr { |
bool AttributesEqual(Instruction* other) const; |
+ PRINT_OPERANDS_TO_SUPPORT |
+ |
private: |
// True if the comparison must check for double, Mint or Bigint and |
// use value comparison instead. |
@@ -3014,7 +3029,7 @@ class TestCidsInstr : public ComparisonInstr { |
virtual Condition EmitComparisonCode(FlowGraphCompiler* compiler, |
BranchLabels labels); |
- virtual void PrintOperandsTo(BufferFormatter* f) const; |
+ PRINT_OPERANDS_TO_SUPPORT |
private: |
const ZoneGrowableArray<intptr_t>& cid_results_; |
@@ -3041,8 +3056,6 @@ class EqualityCompareInstr : public ComparisonInstr { |
virtual CompileType ComputeType() const; |
- virtual void PrintOperandsTo(BufferFormatter* f) const; |
- |
virtual bool CanDeoptimize() const { return false; } |
virtual void EmitBranchCode(FlowGraphCompiler* compiler, |
@@ -3058,6 +3071,8 @@ class EqualityCompareInstr : public ComparisonInstr { |
return kTagged; |
} |
+ PRINT_OPERANDS_TO_SUPPORT |
+ |
private: |
DISALLOW_COPY_AND_ASSIGN(EqualityCompareInstr); |
}; |
@@ -3082,8 +3097,6 @@ class RelationalOpInstr : public ComparisonInstr { |
virtual CompileType ComputeType() const; |
- virtual void PrintOperandsTo(BufferFormatter* f) const; |
- |
virtual bool CanDeoptimize() const { return false; } |
virtual void EmitBranchCode(FlowGraphCompiler* compiler, |
@@ -3099,6 +3112,8 @@ class RelationalOpInstr : public ComparisonInstr { |
return kTagged; |
} |
+ PRINT_OPERANDS_TO_SUPPORT |
+ |
private: |
DISALLOW_COPY_AND_ASSIGN(RelationalOpInstr); |
}; |
@@ -3148,8 +3163,6 @@ class IfThenElseInstr : public Definition { |
return comparison()->RequiredInputRepresentation(i); |
} |
- virtual void PrintOperandsTo(BufferFormatter* f) const; |
- |
virtual CompileType ComputeType() const; |
virtual void InferRange(RangeAnalysis* analysis, Range* range); |
@@ -3173,6 +3186,8 @@ class IfThenElseInstr : public Definition { |
virtual bool MayThrow() const { return comparison()->MayThrow(); } |
+ PRINT_OPERANDS_TO_SUPPORT |
+ |
private: |
virtual void RawSetInputAt(intptr_t i, Value* value) { |
comparison()->RawSetInputAt(i, value); |
@@ -3231,8 +3246,6 @@ class StaticCallInstr : public TemplateDefinition<0, Throws> { |
return ic_data() == NULL ? 0 : ic_data()->AggregateCount(); |
} |
- virtual void PrintOperandsTo(BufferFormatter* f) const; |
- |
virtual bool CanDeoptimize() const { return true; } |
virtual bool CanBecomeDeoptimizationTarget() const { |
@@ -3262,6 +3275,8 @@ class StaticCallInstr : public TemplateDefinition<0, Throws> { |
virtual AliasIdentity Identity() const { return identity_; } |
virtual void SetIdentity(AliasIdentity identity) { identity_ = identity; } |
+ PRINT_OPERANDS_TO_SUPPORT |
+ |
private: |
const ICData* ic_data_; |
const TokenPosition token_pos_; |
@@ -3291,8 +3306,6 @@ class LoadLocalInstr : public TemplateDefinition<0, NoThrow> { |
const LocalVariable& local() const { return local_; } |
- virtual void PrintOperandsTo(BufferFormatter* f) const; |
- |
virtual bool CanDeoptimize() const { return false; } |
virtual EffectSet Effects() const { |
@@ -3305,6 +3318,8 @@ class LoadLocalInstr : public TemplateDefinition<0, NoThrow> { |
virtual TokenPosition token_pos() const { return token_pos_; } |
+ PRINT_OPERANDS_TO_SUPPORT |
+ |
private: |
const LocalVariable& local_; |
bool is_last_; |
@@ -3365,8 +3380,6 @@ class DropTempsInstr : public Definition { |
virtual CompileType ComputeType() const; |
- virtual void PrintOperandsTo(BufferFormatter* f) const; |
- |
virtual bool CanDeoptimize() const { return false; } |
virtual EffectSet Effects() const { |
@@ -3383,6 +3396,8 @@ class DropTempsInstr : public Definition { |
return TokenPosition::kTempMove; |
} |
+ PRINT_OPERANDS_TO_SUPPORT |
+ |
private: |
virtual void RawSetInputAt(intptr_t i, Value* value) { |
value_ = value; |
@@ -3410,8 +3425,6 @@ class StoreLocalInstr : public TemplateDefinition<1, NoThrow> { |
const LocalVariable& local() const { return local_; } |
Value* value() const { return inputs_[0]; } |
- virtual void PrintOperandsTo(BufferFormatter* f) const; |
- |
virtual bool CanDeoptimize() const { return false; } |
void mark_dead() { is_dead_ = true; } |
@@ -3427,6 +3440,8 @@ class StoreLocalInstr : public TemplateDefinition<1, NoThrow> { |
virtual TokenPosition token_pos() const { return token_pos_; } |
+ PRINT_OPERANDS_TO_SUPPORT |
+ |
private: |
const LocalVariable& local_; |
bool is_dead_; |
@@ -3468,14 +3483,14 @@ class NativeCallInstr : public TemplateDefinition<0, Throws> { |
return ast_node_.link_lazily(); |
} |
- virtual void PrintOperandsTo(BufferFormatter* f) const; |
- |
virtual bool CanDeoptimize() const { return false; } |
virtual EffectSet Effects() const { return EffectSet::All(); } |
void SetupNative(); |
+ PRINT_OPERANDS_TO_SUPPORT |
+ |
private: |
void set_native_c_function(NativeFunction value) { |
native_c_function_ = value; |
@@ -3584,8 +3599,6 @@ class StoreInstanceFieldInstr : public TemplateDefinition<2, NoThrow> { |
&& (emit_store_barrier_ == kEmitStoreBarrier); |
} |
- virtual void PrintOperandsTo(BufferFormatter* f) const; |
- |
virtual bool CanDeoptimize() const { return false; } |
// May require a deoptimization target for input conversions. |
@@ -3604,6 +3617,8 @@ class StoreInstanceFieldInstr : public TemplateDefinition<2, NoThrow> { |
virtual Representation RequiredInputRepresentation(intptr_t index) const; |
+ PRINT_OPERANDS_TO_SUPPORT |
+ |
private: |
friend class FlowGraphOptimizer; // For ASSERT(initialization_). |
@@ -3648,7 +3663,7 @@ class GuardFieldInstr : public TemplateInstruction<1, NoThrow, Pure> { |
return true; |
} |
- virtual void PrintOperandsTo(BufferFormatter* f) const; |
+ PRINT_OPERANDS_TO_SUPPORT |
private: |
const Field& field_; |
@@ -3708,8 +3723,6 @@ class LoadStaticFieldInstr : public TemplateDefinition<1, NoThrow> { |
Value* field_value() const { return inputs_[0]; } |
- virtual void PrintOperandsTo(BufferFormatter* f) const; |
- |
virtual bool CanDeoptimize() const { return false; } |
virtual bool AllowsCSE() const { return StaticField().is_final(); } |
@@ -3719,6 +3732,8 @@ class LoadStaticFieldInstr : public TemplateDefinition<1, NoThrow> { |
virtual TokenPosition token_pos() const { return token_pos_; } |
+ PRINT_OPERANDS_TO_SUPPORT |
+ |
private: |
const TokenPosition token_pos_; |
@@ -3746,8 +3761,6 @@ class StoreStaticFieldInstr : public TemplateDefinition<1, NoThrow> { |
const Field& field() const { return field_; } |
Value* value() const { return inputs_[kValuePos]; } |
- virtual void PrintOperandsTo(BufferFormatter* f) const; |
- |
virtual bool CanDeoptimize() const { return false; } |
// Currently CSE/LICM don't operate on any instructions that can be affected |
@@ -3757,6 +3770,8 @@ class StoreStaticFieldInstr : public TemplateDefinition<1, NoThrow> { |
virtual TokenPosition token_pos() const { return token_pos_; } |
+ PRINT_OPERANDS_TO_SUPPORT |
+ |
private: |
bool CanValueBeSmi() const { |
const intptr_t cid = value()->Type()->ToNullableCid(); |
@@ -4097,12 +4112,12 @@ class InstanceOfInstr : public TemplateDefinition<2, Throws> { |
const AbstractType& type() const { return type_; } |
virtual TokenPosition token_pos() const { return token_pos_; } |
- virtual void PrintOperandsTo(BufferFormatter* f) const; |
- |
virtual bool CanDeoptimize() const { return true; } |
virtual EffectSet Effects() const { return EffectSet::None(); } |
+ PRINT_OPERANDS_TO_SUPPORT |
+ |
private: |
const TokenPosition token_pos_; |
Value* value_; |
@@ -4144,8 +4159,6 @@ class AllocateObjectInstr : public TemplateDefinition<0, NoThrow> { |
closure_function_ ^= function.raw(); |
} |
- virtual void PrintOperandsTo(BufferFormatter* f) const; |
- |
virtual bool CanDeoptimize() const { return false; } |
virtual EffectSet Effects() const { return EffectSet::None(); } |
@@ -4153,6 +4166,8 @@ class AllocateObjectInstr : public TemplateDefinition<0, NoThrow> { |
virtual AliasIdentity Identity() const { return identity_; } |
virtual void SetIdentity(AliasIdentity identity) { identity_ = identity; } |
+ PRINT_OPERANDS_TO_SUPPORT |
+ |
private: |
const TokenPosition token_pos_; |
const Class& cls_; |
@@ -4179,8 +4194,6 @@ class AllocateUninitializedContextInstr |
virtual TokenPosition token_pos() const { return token_pos_; } |
intptr_t num_context_variables() const { return num_context_variables_; } |
- virtual void PrintOperandsTo(BufferFormatter* f) const; |
- |
virtual bool CanDeoptimize() const { return false; } |
virtual EffectSet Effects() const { return EffectSet::None(); } |
@@ -4188,6 +4201,8 @@ class AllocateUninitializedContextInstr |
virtual AliasIdentity Identity() const { return identity_; } |
virtual void SetIdentity(AliasIdentity identity) { identity_ = identity; } |
+ PRINT_OPERANDS_TO_SUPPORT |
+ |
private: |
const TokenPosition token_pos_; |
const intptr_t num_context_variables_; |
@@ -4256,7 +4271,6 @@ class MaterializeObjectInstr : public Definition { |
} |
DECLARE_INSTRUCTION(MaterializeObject) |
- virtual void PrintOperandsTo(BufferFormatter* f) const; |
virtual intptr_t InputCount() const { |
return values_->length(); |
@@ -4292,6 +4306,8 @@ class MaterializeObjectInstr : public Definition { |
visited_for_liveness_ = true; |
} |
+ PRINT_OPERANDS_TO_SUPPORT |
+ |
private: |
virtual void RawSetInputAt(intptr_t i, Value* value) { |
(*values_)[i] = value; |
@@ -4482,8 +4498,6 @@ class LoadFieldInstr : public TemplateDefinition<1, NoThrow> { |
DECLARE_INSTRUCTION(LoadField) |
virtual CompileType ComputeType() const; |
- virtual void PrintOperandsTo(BufferFormatter* f) const; |
- |
virtual bool CanDeoptimize() const { return false; } |
virtual void InferRange(RangeAnalysis* analysis, Range* range); |
@@ -4501,6 +4515,8 @@ class LoadFieldInstr : public TemplateDefinition<1, NoThrow> { |
virtual EffectSet Dependencies() const; |
virtual bool AttributesEqual(Instruction* other) const; |
+ PRINT_OPERANDS_TO_SUPPORT |
+ |
private: |
const intptr_t offset_in_bytes_; |
const AbstractType& type_; |
@@ -4537,12 +4553,12 @@ class InstantiateTypeInstr : public TemplateDefinition<1, Throws> { |
const Class& instantiator_class() const { return instantiator_class_; } |
virtual TokenPosition token_pos() const { return token_pos_; } |
- virtual void PrintOperandsTo(BufferFormatter* f) const; |
- |
virtual bool CanDeoptimize() const { return true; } |
virtual EffectSet Effects() const { return EffectSet::None(); } |
+ PRINT_OPERANDS_TO_SUPPORT |
+ |
private: |
const TokenPosition token_pos_; |
const AbstractType& type_; |
@@ -4575,14 +4591,14 @@ class InstantiateTypeArgumentsInstr : public TemplateDefinition<1, Throws> { |
const Class& instantiator_class() const { return instantiator_class_; } |
virtual TokenPosition token_pos() const { return token_pos_; } |
- virtual void PrintOperandsTo(BufferFormatter* f) const; |
- |
virtual bool CanDeoptimize() const { return true; } |
virtual EffectSet Effects() const { return EffectSet::None(); } |
virtual Definition* Canonicalize(FlowGraph* flow_graph); |
+ PRINT_OPERANDS_TO_SUPPORT |
+ |
private: |
const TokenPosition token_pos_; |
const TypeArguments& type_arguments_; |
@@ -4605,12 +4621,12 @@ class AllocateContextInstr : public TemplateDefinition<0, NoThrow> { |
virtual TokenPosition token_pos() const { return token_pos_; } |
intptr_t num_context_variables() const { return num_context_variables_; } |
- virtual void PrintOperandsTo(BufferFormatter* f) const; |
- |
virtual bool CanDeoptimize() const { return false; } |
virtual EffectSet Effects() const { return EffectSet::None(); } |
+ PRINT_OPERANDS_TO_SUPPORT |
+ |
private: |
const TokenPosition token_pos_; |
const intptr_t num_context_variables_; |
@@ -4966,10 +4982,10 @@ class UnboxIntegerInstr : public UnboxInstr { |
virtual Definition* Canonicalize(FlowGraph* flow_graph); |
- virtual void PrintOperandsTo(BufferFormatter* f) const; |
- |
DEFINE_INSTRUCTION_TYPE_CHECK(UnboxInteger) |
+ PRINT_OPERANDS_TO_SUPPORT |
+ |
private: |
bool is_truncating_; |
@@ -5074,8 +5090,6 @@ class MathUnaryInstr : public TemplateDefinition<1, NoThrow, Pure> { |
MathUnaryKind kind() const { return kind_; } |
const RuntimeEntry& TargetFunction() const; |
- virtual void PrintOperandsTo(BufferFormatter* f) const; |
- |
virtual bool CanDeoptimize() const { return false; } |
virtual Representation representation() const { |
@@ -5104,6 +5118,8 @@ class MathUnaryInstr : public TemplateDefinition<1, NoThrow, Pure> { |
static const char* KindToCString(MathUnaryKind kind); |
+ PRINT_OPERANDS_TO_SUPPORT |
+ |
private: |
const MathUnaryKind kind_; |
@@ -5245,8 +5261,6 @@ class BinaryDoubleOpInstr : public TemplateDefinition<2, NoThrow, Pure> { |
virtual TokenPosition token_pos() const { return token_pos_; } |
- virtual void PrintOperandsTo(BufferFormatter* f) const; |
- |
virtual bool CanDeoptimize() const { return false; } |
virtual Representation representation() const { |
@@ -5264,6 +5278,8 @@ class BinaryDoubleOpInstr : public TemplateDefinition<2, NoThrow, Pure> { |
return GetDeoptId(); |
} |
+ PRINT_OPERANDS_TO_SUPPORT |
+ |
DECLARE_INSTRUCTION(BinaryDoubleOp) |
virtual CompileType ComputeType() const; |
@@ -5297,8 +5313,6 @@ class BinaryFloat32x4OpInstr : public TemplateDefinition<2, NoThrow, Pure> { |
Token::Kind op_kind() const { return op_kind_; } |
- virtual void PrintOperandsTo(BufferFormatter* f) const; |
- |
virtual bool CanDeoptimize() const { return false; } |
virtual Representation representation() const { |
@@ -5323,6 +5337,8 @@ class BinaryFloat32x4OpInstr : public TemplateDefinition<2, NoThrow, Pure> { |
return op_kind() == other->AsBinaryFloat32x4Op()->op_kind(); |
} |
+ PRINT_OPERANDS_TO_SUPPORT |
+ |
private: |
const Token::Kind op_kind_; |
@@ -5345,8 +5361,6 @@ class Simd32x4ShuffleInstr : public TemplateDefinition<1, NoThrow, Pure> { |
intptr_t mask() const { return mask_; } |
- virtual void PrintOperandsTo(BufferFormatter* f) const; |
- |
virtual bool CanDeoptimize() const { return false; } |
virtual Representation representation() const { |
@@ -5382,6 +5396,8 @@ class Simd32x4ShuffleInstr : public TemplateDefinition<1, NoThrow, Pure> { |
return GetDeoptId(); |
} |
+ PRINT_OPERANDS_TO_SUPPORT |
+ |
DECLARE_INSTRUCTION(Simd32x4Shuffle) |
virtual CompileType ComputeType() const; |
@@ -5414,8 +5430,6 @@ class Simd32x4ShuffleMixInstr : public TemplateDefinition<2, NoThrow, Pure> { |
intptr_t mask() const { return mask_; } |
- virtual void PrintOperandsTo(BufferFormatter* f) const; |
- |
virtual bool CanDeoptimize() const { return false; } |
virtual Representation representation() const { |
@@ -5441,6 +5455,8 @@ class Simd32x4ShuffleMixInstr : public TemplateDefinition<2, NoThrow, Pure> { |
return GetDeoptId(); |
} |
+ PRINT_OPERANDS_TO_SUPPORT |
+ |
DECLARE_INSTRUCTION(Simd32x4ShuffleMix) |
virtual CompileType ComputeType() const; |
@@ -5476,8 +5492,6 @@ class Float32x4ConstructorInstr : public TemplateDefinition<4, NoThrow, Pure> { |
Value* value2() const { return inputs_[2]; } |
Value* value3() const { return inputs_[3]; } |
- virtual void PrintOperandsTo(BufferFormatter* f) const; |
- |
virtual bool CanDeoptimize() const { return false; } |
virtual Representation representation() const { |
@@ -5500,6 +5514,8 @@ class Float32x4ConstructorInstr : public TemplateDefinition<4, NoThrow, Pure> { |
virtual bool AttributesEqual(Instruction* other) const { return true; } |
+ PRINT_OPERANDS_TO_SUPPORT |
+ |
private: |
DISALLOW_COPY_AND_ASSIGN(Float32x4ConstructorInstr); |
}; |
@@ -5514,8 +5530,6 @@ class Float32x4SplatInstr : public TemplateDefinition<1, NoThrow, Pure> { |
Value* value() const { return inputs_[0]; } |
- virtual void PrintOperandsTo(BufferFormatter* f) const; |
- |
virtual bool CanDeoptimize() const { return false; } |
virtual Representation representation() const { |
@@ -5538,6 +5552,8 @@ class Float32x4SplatInstr : public TemplateDefinition<1, NoThrow, Pure> { |
virtual bool AttributesEqual(Instruction* other) const { return true; } |
+ PRINT_OPERANDS_TO_SUPPORT |
+ |
private: |
DISALLOW_COPY_AND_ASSIGN(Float32x4SplatInstr); |
}; |
@@ -5580,8 +5596,6 @@ class Float32x4ComparisonInstr : public TemplateDefinition<2, NoThrow, Pure> { |
MethodRecognizer::Kind op_kind() const { return op_kind_; } |
- virtual void PrintOperandsTo(BufferFormatter* f) const; |
- |
virtual bool CanDeoptimize() const { return false; } |
virtual Representation representation() const { |
@@ -5606,6 +5620,8 @@ class Float32x4ComparisonInstr : public TemplateDefinition<2, NoThrow, Pure> { |
return op_kind() == other->AsFloat32x4Comparison()->op_kind(); |
} |
+ PRINT_OPERANDS_TO_SUPPORT |
+ |
private: |
const MethodRecognizer::Kind op_kind_; |
@@ -5629,8 +5645,6 @@ class Float32x4MinMaxInstr : public TemplateDefinition<2, NoThrow, Pure> { |
MethodRecognizer::Kind op_kind() const { return op_kind_; } |
- virtual void PrintOperandsTo(BufferFormatter* f) const; |
- |
virtual bool CanDeoptimize() const { return false; } |
virtual Representation representation() const { |
@@ -5655,6 +5669,8 @@ class Float32x4MinMaxInstr : public TemplateDefinition<2, NoThrow, Pure> { |
return op_kind() == other->AsFloat32x4MinMax()->op_kind(); |
} |
+ PRINT_OPERANDS_TO_SUPPORT |
+ |
private: |
const MethodRecognizer::Kind op_kind_; |
@@ -5678,8 +5694,6 @@ class Float32x4ScaleInstr : public TemplateDefinition<2, NoThrow, Pure> { |
MethodRecognizer::Kind op_kind() const { return op_kind_; } |
- virtual void PrintOperandsTo(BufferFormatter* f) const; |
- |
virtual bool CanDeoptimize() const { return false; } |
virtual Representation representation() const { |
@@ -5707,6 +5721,8 @@ class Float32x4ScaleInstr : public TemplateDefinition<2, NoThrow, Pure> { |
return op_kind() == other->AsFloat32x4Scale()->op_kind(); |
} |
+ PRINT_OPERANDS_TO_SUPPORT |
+ |
private: |
const MethodRecognizer::Kind op_kind_; |
@@ -5727,8 +5743,6 @@ class Float32x4SqrtInstr : public TemplateDefinition<1, NoThrow, Pure> { |
MethodRecognizer::Kind op_kind() const { return op_kind_; } |
- virtual void PrintOperandsTo(BufferFormatter* f) const; |
- |
virtual bool CanDeoptimize() const { return false; } |
virtual Representation representation() const { |
@@ -5753,6 +5767,8 @@ class Float32x4SqrtInstr : public TemplateDefinition<1, NoThrow, Pure> { |
return op_kind() == other->AsFloat32x4Sqrt()->op_kind(); |
} |
+ PRINT_OPERANDS_TO_SUPPORT |
+ |
private: |
const MethodRecognizer::Kind op_kind_; |
@@ -5775,8 +5791,6 @@ class Float32x4ZeroArgInstr : public TemplateDefinition<1, NoThrow, Pure> { |
MethodRecognizer::Kind op_kind() const { return op_kind_; } |
- virtual void PrintOperandsTo(BufferFormatter* f) const; |
- |
virtual bool CanDeoptimize() const { return false; } |
virtual Representation representation() const { |
@@ -5801,6 +5815,8 @@ class Float32x4ZeroArgInstr : public TemplateDefinition<1, NoThrow, Pure> { |
return op_kind() == other->AsFloat32x4ZeroArg()->op_kind(); |
} |
+ PRINT_OPERANDS_TO_SUPPORT |
+ |
private: |
const MethodRecognizer::Kind op_kind_; |
@@ -5824,8 +5840,6 @@ class Float32x4ClampInstr : public TemplateDefinition<3, NoThrow, Pure> { |
Value* lower() const { return inputs_[1]; } |
Value* upper() const { return inputs_[2]; } |
- virtual void PrintOperandsTo(BufferFormatter* f) const; |
- |
virtual bool CanDeoptimize() const { return false; } |
virtual Representation representation() const { |
@@ -5848,6 +5862,8 @@ class Float32x4ClampInstr : public TemplateDefinition<3, NoThrow, Pure> { |
virtual bool AttributesEqual(Instruction* other) const { return true; } |
+ PRINT_OPERANDS_TO_SUPPORT |
+ |
private: |
DISALLOW_COPY_AND_ASSIGN(Float32x4ClampInstr); |
}; |
@@ -5870,8 +5886,6 @@ class Float32x4WithInstr : public TemplateDefinition<2, NoThrow, Pure> { |
MethodRecognizer::Kind op_kind() const { return op_kind_; } |
- virtual void PrintOperandsTo(BufferFormatter* f) const; |
- |
virtual bool CanDeoptimize() const { return false; } |
virtual Representation representation() const { |
@@ -5899,6 +5913,8 @@ class Float32x4WithInstr : public TemplateDefinition<2, NoThrow, Pure> { |
return op_kind() == other->AsFloat32x4With()->op_kind(); |
} |
+ PRINT_OPERANDS_TO_SUPPORT |
+ |
private: |
const MethodRecognizer::Kind op_kind_; |
@@ -5922,8 +5938,6 @@ class Simd64x2ShuffleInstr : public TemplateDefinition<1, NoThrow, Pure> { |
intptr_t mask() const { return mask_; } |
- virtual void PrintOperandsTo(BufferFormatter* f) const; |
- |
virtual bool CanDeoptimize() const { return false; } |
virtual Representation representation() const { |
@@ -5959,6 +5973,8 @@ class Simd64x2ShuffleInstr : public TemplateDefinition<1, NoThrow, Pure> { |
(mask() == other->AsSimd64x2Shuffle()->mask()); |
} |
+ PRINT_OPERANDS_TO_SUPPORT |
+ |
private: |
const MethodRecognizer::Kind op_kind_; |
const intptr_t mask_; |
@@ -5976,8 +5992,6 @@ class Float32x4ToInt32x4Instr : public TemplateDefinition<1, NoThrow, Pure> { |
Value* left() const { return inputs_[0]; } |
- virtual void PrintOperandsTo(BufferFormatter* f) const; |
- |
virtual bool CanDeoptimize() const { return false; } |
virtual Representation representation() const { |
@@ -6000,6 +6014,8 @@ class Float32x4ToInt32x4Instr : public TemplateDefinition<1, NoThrow, Pure> { |
virtual bool AttributesEqual(Instruction* other) const { return true; } |
+ PRINT_OPERANDS_TO_SUPPORT |
+ |
private: |
DISALLOW_COPY_AND_ASSIGN(Float32x4ToInt32x4Instr); |
}; |
@@ -6014,8 +6030,6 @@ class Float32x4ToFloat64x2Instr : public TemplateDefinition<1, NoThrow, Pure> { |
Value* left() const { return inputs_[0]; } |
- virtual void PrintOperandsTo(BufferFormatter* f) const; |
- |
virtual bool CanDeoptimize() const { return false; } |
virtual Representation representation() const { |
@@ -6038,6 +6052,8 @@ class Float32x4ToFloat64x2Instr : public TemplateDefinition<1, NoThrow, Pure> { |
virtual bool AttributesEqual(Instruction* other) const { return true; } |
+ PRINT_OPERANDS_TO_SUPPORT |
+ |
private: |
DISALLOW_COPY_AND_ASSIGN(Float32x4ToFloat64x2Instr); |
}; |
@@ -6052,8 +6068,6 @@ class Float64x2ToFloat32x4Instr : public TemplateDefinition<1, NoThrow, Pure> { |
Value* left() const { return inputs_[0]; } |
- virtual void PrintOperandsTo(BufferFormatter* f) const; |
- |
virtual bool CanDeoptimize() const { return false; } |
virtual Representation representation() const { |
@@ -6076,6 +6090,8 @@ class Float64x2ToFloat32x4Instr : public TemplateDefinition<1, NoThrow, Pure> { |
virtual bool AttributesEqual(Instruction* other) const { return true; } |
+ PRINT_OPERANDS_TO_SUPPORT |
+ |
private: |
DISALLOW_COPY_AND_ASSIGN(Float64x2ToFloat32x4Instr); |
}; |
@@ -6092,8 +6108,6 @@ class Float64x2ConstructorInstr : public TemplateDefinition<2, NoThrow, Pure> { |
Value* value0() const { return inputs_[0]; } |
Value* value1() const { return inputs_[1]; } |
- virtual void PrintOperandsTo(BufferFormatter* f) const; |
- |
virtual bool CanDeoptimize() const { return false; } |
virtual Representation representation() const { |
@@ -6111,6 +6125,8 @@ class Float64x2ConstructorInstr : public TemplateDefinition<2, NoThrow, Pure> { |
return GetDeoptId(); |
} |
+ PRINT_OPERANDS_TO_SUPPORT |
+ |
DECLARE_INSTRUCTION(Float64x2Constructor) |
virtual CompileType ComputeType() const; |
@@ -6130,8 +6146,6 @@ class Float64x2SplatInstr : public TemplateDefinition<1, NoThrow, Pure> { |
Value* value() const { return inputs_[0]; } |
- virtual void PrintOperandsTo(BufferFormatter* f) const; |
- |
virtual bool CanDeoptimize() const { return false; } |
virtual Representation representation() const { |
@@ -6154,6 +6168,8 @@ class Float64x2SplatInstr : public TemplateDefinition<1, NoThrow, Pure> { |
virtual bool AttributesEqual(Instruction* other) const { return true; } |
+ PRINT_OPERANDS_TO_SUPPORT |
+ |
private: |
DISALLOW_COPY_AND_ASSIGN(Float64x2SplatInstr); |
}; |
@@ -6193,8 +6209,6 @@ class Float64x2ZeroArgInstr : public TemplateDefinition<1, NoThrow, Pure> { |
MethodRecognizer::Kind op_kind() const { return op_kind_; } |
- virtual void PrintOperandsTo(BufferFormatter* f) const; |
- |
virtual bool CanDeoptimize() const { return false; } |
virtual Representation representation() const { |
@@ -6216,6 +6230,8 @@ class Float64x2ZeroArgInstr : public TemplateDefinition<1, NoThrow, Pure> { |
return GetDeoptId(); |
} |
+ PRINT_OPERANDS_TO_SUPPORT |
+ |
DECLARE_INSTRUCTION(Float64x2ZeroArg) |
virtual CompileType ComputeType() const; |
@@ -6246,8 +6262,6 @@ class Float64x2OneArgInstr : public TemplateDefinition<2, NoThrow, Pure> { |
MethodRecognizer::Kind op_kind() const { return op_kind_; } |
- virtual void PrintOperandsTo(BufferFormatter* f) const; |
- |
virtual bool CanDeoptimize() const { return false; } |
virtual Representation representation() const { |
@@ -6273,6 +6287,8 @@ class Float64x2OneArgInstr : public TemplateDefinition<2, NoThrow, Pure> { |
return GetDeoptId(); |
} |
+ PRINT_OPERANDS_TO_SUPPORT |
+ |
DECLARE_INSTRUCTION(Float64x2OneArg) |
virtual CompileType ComputeType() const; |
@@ -6306,8 +6322,6 @@ class Int32x4ConstructorInstr : public TemplateDefinition<4, NoThrow, Pure> { |
Value* value2() const { return inputs_[2]; } |
Value* value3() const { return inputs_[3]; } |
- virtual void PrintOperandsTo(BufferFormatter* f) const; |
- |
virtual bool CanDeoptimize() const { return false; } |
virtual Representation representation() const { |
@@ -6330,6 +6344,8 @@ class Int32x4ConstructorInstr : public TemplateDefinition<4, NoThrow, Pure> { |
virtual bool AttributesEqual(Instruction* other) const { return true; } |
+ PRINT_OPERANDS_TO_SUPPORT |
+ |
private: |
DISALLOW_COPY_AND_ASSIGN(Int32x4ConstructorInstr); |
}; |
@@ -6355,8 +6371,6 @@ class Int32x4BoolConstructorInstr |
Value* value2() const { return inputs_[2]; } |
Value* value3() const { return inputs_[3]; } |
- virtual void PrintOperandsTo(BufferFormatter* f) const; |
- |
virtual bool CanDeoptimize() const { return false; } |
virtual Representation representation() const { |
@@ -6379,6 +6393,8 @@ class Int32x4BoolConstructorInstr |
virtual bool AttributesEqual(Instruction* other) const { return true; } |
+ PRINT_OPERANDS_TO_SUPPORT |
+ |
private: |
DISALLOW_COPY_AND_ASSIGN(Int32x4BoolConstructorInstr); |
}; |
@@ -6397,8 +6413,6 @@ class Int32x4GetFlagInstr : public TemplateDefinition<1, NoThrow, Pure> { |
MethodRecognizer::Kind op_kind() const { return op_kind_; } |
- virtual void PrintOperandsTo(BufferFormatter* f) const; |
- |
virtual bool CanDeoptimize() const { return false; } |
virtual Representation representation() const { |
@@ -6423,6 +6437,8 @@ class Int32x4GetFlagInstr : public TemplateDefinition<1, NoThrow, Pure> { |
return op_kind() == other->AsInt32x4GetFlag()->op_kind(); |
} |
+ PRINT_OPERANDS_TO_SUPPORT |
+ |
private: |
const MethodRecognizer::Kind op_kind_; |
@@ -6443,8 +6459,6 @@ class Simd32x4GetSignMaskInstr : public TemplateDefinition<1, NoThrow, Pure> { |
MethodRecognizer::Kind op_kind() const { return op_kind_; } |
- virtual void PrintOperandsTo(BufferFormatter* f) const; |
- |
virtual bool CanDeoptimize() const { return false; } |
virtual Representation representation() const { |
@@ -6473,6 +6487,8 @@ class Simd32x4GetSignMaskInstr : public TemplateDefinition<1, NoThrow, Pure> { |
return other->AsSimd32x4GetSignMask()->op_kind() == op_kind(); |
} |
+ PRINT_OPERANDS_TO_SUPPORT |
+ |
private: |
const MethodRecognizer::Kind op_kind_; |
@@ -6496,8 +6512,6 @@ class Int32x4SelectInstr : public TemplateDefinition<3, NoThrow, Pure> { |
Value* trueValue() const { return inputs_[1]; } |
Value* falseValue() const { return inputs_[2]; } |
- virtual void PrintOperandsTo(BufferFormatter* f) const; |
- |
virtual bool CanDeoptimize() const { return false; } |
virtual Representation representation() const { |
@@ -6523,6 +6537,8 @@ class Int32x4SelectInstr : public TemplateDefinition<3, NoThrow, Pure> { |
virtual bool AttributesEqual(Instruction* other) const { return true; } |
+ PRINT_OPERANDS_TO_SUPPORT |
+ |
private: |
DISALLOW_COPY_AND_ASSIGN(Int32x4SelectInstr); |
}; |
@@ -6544,8 +6560,6 @@ class Int32x4SetFlagInstr : public TemplateDefinition<2, NoThrow, Pure> { |
MethodRecognizer::Kind op_kind() const { return op_kind_; } |
- virtual void PrintOperandsTo(BufferFormatter* f) const; |
- |
virtual bool CanDeoptimize() const { return false; } |
virtual Representation representation() const { |
@@ -6573,6 +6587,8 @@ class Int32x4SetFlagInstr : public TemplateDefinition<2, NoThrow, Pure> { |
return op_kind() == other->AsInt32x4SetFlag()->op_kind(); |
} |
+ PRINT_OPERANDS_TO_SUPPORT |
+ |
private: |
const MethodRecognizer::Kind op_kind_; |
@@ -6589,8 +6605,6 @@ class Int32x4ToFloat32x4Instr : public TemplateDefinition<1, NoThrow, Pure> { |
Value* left() const { return inputs_[0]; } |
- virtual void PrintOperandsTo(BufferFormatter* f) const; |
- |
virtual bool CanDeoptimize() const { return false; } |
virtual Representation representation() const { |
@@ -6613,6 +6627,8 @@ class Int32x4ToFloat32x4Instr : public TemplateDefinition<1, NoThrow, Pure> { |
virtual bool AttributesEqual(Instruction* other) const { return true; } |
+ PRINT_OPERANDS_TO_SUPPORT |
+ |
private: |
DISALLOW_COPY_AND_ASSIGN(Int32x4ToFloat32x4Instr); |
}; |
@@ -6634,8 +6650,6 @@ class BinaryInt32x4OpInstr : public TemplateDefinition<2, NoThrow, Pure> { |
Token::Kind op_kind() const { return op_kind_; } |
- virtual void PrintOperandsTo(BufferFormatter* f) const; |
- |
virtual bool CanDeoptimize() const { return false; } |
virtual Representation representation() const { |
@@ -6660,6 +6674,8 @@ class BinaryInt32x4OpInstr : public TemplateDefinition<2, NoThrow, Pure> { |
return op_kind() == other->AsBinaryInt32x4Op()->op_kind(); |
} |
+ PRINT_OPERANDS_TO_SUPPORT |
+ |
private: |
const Token::Kind op_kind_; |
@@ -6694,8 +6710,6 @@ class BinaryFloat64x2OpInstr : public TemplateDefinition<2, NoThrow, Pure> { |
return kUnboxedFloat64x2; |
} |
- virtual void PrintOperandsTo(BufferFormatter* f) const; |
- |
virtual intptr_t DeoptimizationTarget() const { |
// Direct access since this instruction cannot deoptimize, and the deopt-id |
// was inherited from another instruction that could deoptimize. |
@@ -6709,6 +6723,8 @@ class BinaryFloat64x2OpInstr : public TemplateDefinition<2, NoThrow, Pure> { |
return op_kind() == other->AsBinaryFloat64x2Op()->op_kind(); |
} |
+ PRINT_OPERANDS_TO_SUPPORT |
+ |
private: |
const Token::Kind op_kind_; |
@@ -6746,7 +6762,7 @@ class UnaryIntegerOpInstr : public TemplateDefinition<1, NoThrow, Pure> { |
return GetDeoptId(); |
} |
- virtual void PrintOperandsTo(BufferFormatter* f) const; |
+ PRINT_OPERANDS_TO_SUPPORT |
RawInteger* Evaluate(const Integer& value) const; |
@@ -6905,7 +6921,8 @@ class BinaryIntegerOpInstr : public TemplateDefinition<2, NoThrow, Pure> { |
virtual intptr_t DeoptimizationTarget() const { return GetDeoptId(); } |
- virtual void PrintOperandsTo(BufferFormatter* f) const; |
+ |
+ PRINT_OPERANDS_TO_SUPPORT |
DEFINE_INSTRUCTION_TYPE_CHECK(BinaryIntegerOp) |
@@ -7148,8 +7165,6 @@ class UnaryDoubleOpInstr : public TemplateDefinition<1, NoThrow, Pure> { |
Value* value() const { return inputs_[0]; } |
Token::Kind op_kind() const { return op_kind_; } |
- virtual void PrintOperandsTo(BufferFormatter* f) const; |
- |
DECLARE_INSTRUCTION(UnaryDoubleOp) |
virtual CompileType ComputeType() const; |
@@ -7172,6 +7187,8 @@ class UnaryDoubleOpInstr : public TemplateDefinition<1, NoThrow, Pure> { |
virtual bool AttributesEqual(Instruction* other) const { return true; } |
+ PRINT_OPERANDS_TO_SUPPORT |
+ |
private: |
const Token::Kind op_kind_; |
@@ -7197,7 +7214,7 @@ class CheckStackOverflowInstr : public TemplateInstruction<0, NoThrow> { |
virtual EffectSet Effects() const { return EffectSet::None(); } |
- virtual void PrintOperandsTo(BufferFormatter* f) const; |
+ PRINT_OPERANDS_TO_SUPPORT |
private: |
const TokenPosition token_pos_; |
@@ -7489,7 +7506,6 @@ class InvokeMathCFunctionInstr : public PureDefinition { |
DECLARE_INSTRUCTION(InvokeMathCFunction) |
virtual CompileType ComputeType() const; |
- virtual void PrintOperandsTo(BufferFormatter* f) const; |
virtual bool CanDeoptimize() const { return false; } |
@@ -7523,6 +7539,8 @@ class InvokeMathCFunctionInstr : public PureDefinition { |
static const intptr_t kObjectTempIndex = 1; |
static const intptr_t kDoubleTempIndex = 2; |
+ PRINT_OPERANDS_TO_SUPPORT |
+ |
private: |
virtual void RawSetInputAt(intptr_t i, Value* value) { |
(*inputs_)[i] = value; |
@@ -7554,7 +7572,6 @@ class ExtractNthOutputInstr : public TemplateDefinition<1, NoThrow, Pure> { |
DECLARE_INSTRUCTION(ExtractNthOutput) |
virtual CompileType ComputeType() const; |
- virtual void PrintOperandsTo(BufferFormatter* f) const; |
virtual bool CanDeoptimize() const { return false; } |
intptr_t index() const { return index_; } |
@@ -7580,6 +7597,8 @@ class ExtractNthOutputInstr : public TemplateDefinition<1, NoThrow, Pure> { |
(other_extract->index() == index()); |
} |
+ PRINT_OPERANDS_TO_SUPPORT |
+ |
private: |
const intptr_t index_; |
const Representation definition_rep_; |
@@ -7622,7 +7641,6 @@ class MergedMathInstr : public PureDefinition { |
static intptr_t OutputIndexOf(Token::Kind token); |
virtual CompileType ComputeType() const; |
- virtual void PrintOperandsTo(BufferFormatter* f) const; |
virtual bool CanDeoptimize() const { |
if (kind_ == kTruncDivMod) { |
@@ -7676,6 +7694,8 @@ class MergedMathInstr : public PureDefinition { |
return ""; |
} |
+ PRINT_OPERANDS_TO_SUPPORT |
+ |
private: |
virtual void RawSetInputAt(intptr_t i, Value* value) { |
(*inputs_)[i] = value; |
@@ -7707,8 +7727,6 @@ class CheckClassInstr : public TemplateInstruction<1, NoThrow> { |
virtual Instruction* Canonicalize(FlowGraph* flow_graph); |
- virtual void PrintOperandsTo(BufferFormatter* f) const; |
- |
bool IsNullCheck() const { |
return DeoptIfNull() || DeoptIfNotNull(); |
} |
@@ -7729,6 +7747,8 @@ class CheckClassInstr : public TemplateInstruction<1, NoThrow> { |
static bool IsImmutableClassId(intptr_t cid); |
+ PRINT_OPERANDS_TO_SUPPORT |
+ |
private: |
const ICData& unary_checks_; |
GrowableArray<intptr_t> cids_; // Sorted, lowest first. |
@@ -7790,7 +7810,7 @@ class CheckClassIdInstr : public TemplateInstruction<1, NoThrow> { |
virtual EffectSet Effects() const { return EffectSet::None(); } |
virtual bool AttributesEqual(Instruction* other) const { return true; } |
- virtual void PrintOperandsTo(BufferFormatter* f) const; |
+ PRINT_OPERANDS_TO_SUPPORT |
private: |
intptr_t cid_; |
@@ -7900,8 +7920,6 @@ class UnboxedIntConverterInstr : public TemplateDefinition<1, NoThrow> { |
virtual void InferRange(RangeAnalysis* analysis, Range* range); |
- virtual void PrintOperandsTo(BufferFormatter* f) const; |
- |
virtual CompileType ComputeType() const { |
// TODO(vegorov) use range information to improve type. |
return CompileType::Int(); |
@@ -7909,6 +7927,8 @@ class UnboxedIntConverterInstr : public TemplateDefinition<1, NoThrow> { |
DECLARE_INSTRUCTION(UnboxedIntConverter); |
+ PRINT_OPERANDS_TO_SUPPORT |
+ |
private: |
const Representation from_representation_; |
const Representation to_representation_; |