Lines Matching refs:Operator
5 #include "src/compiler/common-operator.h"
11 #include "src/compiler/operator.h"
19 std::ostream& operator<<(std::ostream& os, BranchHint hint) {
33 BranchHint BranchHintOf(const Operator* const op) {
38 DeoptimizeReason DeoptimizeReasonOf(Operator const* const op) {
46 std::ostream& operator<<(std::ostream& os, DeoptimizeKind kind) {
57 bool operator==(DeoptimizeParameters lhs, DeoptimizeParameters rhs) {
61 bool operator!=(DeoptimizeParameters lhs, DeoptimizeParameters rhs) {
69 std::ostream& operator<<(std::ostream& os, DeoptimizeParameters p) {
73 DeoptimizeParameters const& DeoptimizeParametersOf(Operator const* const op) {
79 bool operator==(SelectParameters const& lhs, SelectParameters const& rhs) {
85 bool operator!=(SelectParameters const& lhs, SelectParameters const& rhs) {
95 std::ostream& operator<<(std::ostream& os, SelectParameters const& p) {
100 SelectParameters const& SelectParametersOf(const Operator* const op) {
105 CallDescriptor const* CallDescriptorOf(const Operator* const op) {
111 size_t ProjectionIndexOf(const Operator* const op) {
117 MachineRepresentation PhiRepresentationOf(const Operator* const op) {
123 int ParameterIndexOf(const Operator* const op) {
129 const ParameterInfo& ParameterInfoOf(const Operator* const op) {
135 bool operator==(ParameterInfo const& lhs, ParameterInfo const& rhs) {
140 bool operator!=(ParameterInfo const& lhs, ParameterInfo const& rhs) {
148 std::ostream& operator<<(std::ostream& os, ParameterInfo const& i) {
154 bool operator==(RelocatablePtrConstantInfo const& lhs,
160 bool operator!=(RelocatablePtrConstantInfo const& lhs,
169 std::ostream& operator<<(std::ostream& os,
178 std::ostream& operator<<(std::ostream& os, RegionObservability observability) {
189 RegionObservability RegionObservabilityOf(Operator const* op) {
194 Type* TypeGuardTypeOf(Operator const* op) {
199 std::ostream& operator<<(std::ostream& os,
213 int OsrValueIndexOf(Operator const* op) {
220 std::ostream& operator<<(std::ostream& os, OsrGuardType type) {
233 OsrGuardType OsrGuardTypeOf(Operator const* op) {
238 ZoneVector<MachineType> const* MachineTypesOf(Operator const* op) {
245 V(Dead, Operator::kFoldable, 0, 0, 0, 1, 1, 1) \
246 V(IfTrue, Operator::kKontrol, 0, 0, 1, 0, 0, 1) \
247 V(IfFalse, Operator::kKontrol, 0, 0, 1, 0, 0, 1) \
248 V(IfSuccess, Operator::kKontrol, 0, 0, 1, 0, 0, 1) \
249 V(IfException, Operator::kKontrol, 0, 1, 1, 1, 1, 1) \
250 V(IfDefault, Operator::kKontrol, 0, 0, 1, 0, 0, 1) \
251 V(Throw, Operator::kKontrol, 1, 1, 1, 0, 0, 1) \
252 V(Terminate, Operator::kKontrol, 0, 1, 1, 0, 0, 1) \
253 V(OsrNormalEntry, Operator::kFoldable, 0, 1, 1, 0, 1, 1) \
254 V(OsrLoopEntry, Operator::kFoldable | Operator::kNoThrow, 0, 1, 1, 0, 1, 1) \
255 V(LoopExit, Operator::kKontrol, 0, 0, 2, 0, 0, 1) \
256 V(LoopExitValue, Operator::kPure, 1, 0, 1, 1, 0, 0) \
257 V(LoopExitEffect, Operator::kNoThrow, 0, 1, 1, 0, 1, 0) \
258 V(Checkpoint, Operator::kKontrol, 0, 1, 1, 0, 1, 0) \
259 V(FinishRegion, Operator::kKontrol, 1, 1, 0, 1, 1, 0) \
260 V(Retain, Operator::kKontrol, 1, 1, 0, 0, 1, 0)
381 struct Name##Operator final : public Operator { \
382 Name##Operator() \
383 : Operator(IrOpcode::k##Name, properties, #Name, value_input_count, \
388 Name##Operator k##Name##Operator;
393 struct EndOperator final : public Operator {
395 : Operator( // --
396 IrOpcode::kEnd, Operator::kKontrol, // opcode
401 EndOperator<input_count> kEnd##input_count##Operator;
406 struct ReturnOperator final : public Operator {
408 : Operator( // --
409 IrOpcode::kReturn, Operator::kNoThrow, // opcode
414 ReturnOperator<value_input_count> kReturn##value_input_count##Operator;
422 IrOpcode::kBranch, Operator::kKontrol, // opcode
432 struct EffectPhiOperator final : public Operator {
434 : Operator( // --
435 IrOpcode::kEffectPhi, Operator::kKontrol, // opcode
440 EffectPhiOperator<input_count> kEffectPhi##input_count##Operator;
448 IrOpcode::kBeginRegion, Operator::kKontrol, // opcode
459 struct LoopOperator final : public Operator {
461 : Operator( // --
462 IrOpcode::kLoop, Operator::kKontrol, // opcode
467 LoopOperator<input_count> kLoop##input_count##Operator;
472 struct MergeOperator final : public Operator {
474 : Operator( // --
475 IrOpcode::kMerge, Operator::kKontrol, // opcode
480 MergeOperator<input_count> kMerge##input_count##Operator;
489 Operator::kFoldable | Operator::kNoThrow, // properties
496 kDeoptimize##Kind##Reason##Operator;
505 Operator::kFoldable | Operator::kNoThrow, // properties
512 kDeoptimizeIf##Reason##Operator;
521 Operator::kFoldable | Operator::kNoThrow, // properties
528 kDeoptimizeUnless##Reason##Operator;
536 IrOpcode::kPhi, Operator::kPure, // opcode
543 kPhi##rep##input_count##Operator;
548 struct InductionVariablePhiOperator final : public Operator {
550 : Operator( //--
551 IrOpcode::kInductionVariablePhi, Operator::kPure, // opcode
557 kInductionVariablePhi##input_count##Operator;
565 IrOpcode::kParameter, Operator::kPure, // opcode
571 ParameterOperator<index> kParameter##index##Operator;
580 Operator::kPure, // flags
586 ProjectionOperator<index> kProjection##index##Operator;
591 struct StateValuesOperator final : public Operator {
593 : Operator( // --
595 Operator::kPure, // flags
600 StateValuesOperator<input_count> kStateValues##input_count##Operator;
617 const Operator* CommonOperatorBuilder::Name() { \
618 return &cache_.k##Name##Operator; \
624 const Operator* CommonOperatorBuilder::End(size_t control_input_count) {
628 return &cache_.kEnd##input_count##Operator;
635 return new (zone()) Operator( //--
636 IrOpcode::kEnd, Operator::kKontrol, // opcode
641 const Operator* CommonOperatorBuilder::Return(int value_input_count) {
645 return &cache_.kReturn##input_count##Operator;
652 return new (zone()) Operator( //--
653 IrOpcode::kReturn, Operator::kNoThrow, // opcode
659 const Operator* CommonOperatorBuilder::Branch(BranchHint hint) {
672 const Operator* CommonOperatorBuilder::Deoptimize(DeoptimizeKind kind,
677 return &cache_.kDeoptimize##Kind##Reason##Operator; \
685 Operator::kFoldable | Operator::kNoThrow, // properties
691 const Operator* CommonOperatorBuilder::DeoptimizeIf(DeoptimizeReason reason) {
695 return &cache_.kDeoptimizeIf##Reason##Operator;
704 Operator::kFoldable | Operator::kNoThrow, // properties
710 const Operator* CommonOperatorBuilder::DeoptimizeUnless(
715 return &cache_.kDeoptimizeUnless##Reason##Operator;
724 Operator::kFoldable | Operator::kNoThrow, // properties
731 const Operator* CommonOperatorBuilder::Switch(size_t control_output_count) {
732 return new (zone()) Operator( // --
733 IrOpcode::kSwitch, Operator::kKontrol, // opcode
739 const Operator* CommonOperatorBuilder::IfValue(int32_t index) {
741 IrOpcode::kIfValue, Operator::kKontrol, // opcode
748 const Operator* CommonOperatorBuilder::Start(int value_output_count) {
749 return new (zone()) Operator( // --
750 IrOpcode::kStart, Operator::kFoldable | Operator::kNoThrow, // opcode
756 const Operator* CommonOperatorBuilder::Loop(int control_input_count) {
760 return &cache_.kLoop##input_count##Operator;
767 return new (zone()) Operator( // --
768 IrOpcode::kLoop, Operator::kKontrol, // opcode
774 const Operator* CommonOperatorBuilder::Merge(int control_input_count) {
778 return &cache_.kMerge##input_count##Operator;
785 return new (zone()) Operator( // --
786 IrOpcode::kMerge, Operator::kKontrol, // opcode
792 const Operator* CommonOperatorBuilder::Parameter(int index,
798 return &cache_.kParameter##index##Operator;
807 IrOpcode::kParameter, Operator::kPure, // opcode
813 const Operator* CommonOperatorBuilder::OsrValue(int index) {
815 IrOpcode::kOsrValue, Operator::kNoProperties, // opcode
821 const Operator* CommonOperatorBuilder::OsrGuard(OsrGuardType type) {
823 IrOpcode::kOsrGuard, Operator::kNoThrow, // opcode
829 const Operator* CommonOperatorBuilder::Int32Constant(int32_t value) {
831 IrOpcode::kInt32Constant, Operator::kPure, // opcode
838 const Operator* CommonOperatorBuilder::Int64Constant(int64_t value) {
840 IrOpcode::kInt64Constant, Operator::kPure, // opcode
847 const Operator* CommonOperatorBuilder::Float32Constant(volatile float value) {
849 IrOpcode::kFloat32Constant, Operator::kPure, // opcode
856 const Operator* CommonOperatorBuilder::Float64Constant(volatile double value) {
858 IrOpcode::kFloat64Constant, Operator::kPure, // opcode
865 const Operator* CommonOperatorBuilder::ExternalConstant(
868 IrOpcode::kExternalConstant, Operator::kPure, // opcode
875 const Operator* CommonOperatorBuilder::NumberConstant(volatile double value) {
877 IrOpcode::kNumberConstant, Operator::kPure, // opcode
883 const Operator* CommonOperatorBuilder::PointerConstant(intptr_t value) {
885 IrOpcode::kPointerConstant, Operator::kPure, // opcode
891 const Operator* CommonOperatorBuilder::HeapConstant(
894 IrOpcode::kHeapConstant, Operator::kPure, // opcode
900 const Operator* CommonOperatorBuilder::RelocatableInt32Constant(
903 IrOpcode::kRelocatableInt32Constant, Operator::kPure, // opcode
909 const Operator* CommonOperatorBuilder::RelocatableInt64Constant(
912 IrOpcode::kRelocatableInt64Constant, Operator::kPure, // opcode
918 const Operator* CommonOperatorBuilder::Select(MachineRepresentation rep,
921 IrOpcode::kSelect, Operator::kPure, // opcode
928 const Operator* CommonOperatorBuilder::Phi(MachineRepresentation rep,
934 return &cache_.kPhi##kRep##kValueInputCount##Operator; \
940 IrOpcode::kPhi, Operator::kPure, // opcode
946 const Operator* CommonOperatorBuilder::TypeGuard(Type* type) {
948 IrOpcode::kTypeGuard, Operator::kPure, // opcode
954 const Operator* CommonOperatorBuilder::EffectPhi(int effect_input_count) {
959 return &cache_.kEffectPhi##input_count##Operator;
966 return new (zone()) Operator( // --
967 IrOpcode::kEffectPhi, Operator::kKontrol, // opcode
972 const Operator* CommonOperatorBuilder::InductionVariablePhi(int input_count) {
978 return &cache_.kInductionVariablePhi##input_count##Operator;
985 return new (zone()) Operator( // --
986 IrOpcode::kInductionVariablePhi, Operator::kPure, // opcode
991 const Operator* CommonOperatorBuilder::BeginRegion(
1003 const Operator* CommonOperatorBuilder::StateValues(int arguments) {
1007 return &cache_.kStateValues##arguments##Operator;
1014 return new (zone()) Operator( // --
1015 IrOpcode::kStateValues, Operator::kPure, // opcode
1020 const Operator* CommonOperatorBuilder::TypedStateValues(
1023 IrOpcode::kTypedStateValues, Operator::kPure, // opcode
1029 const Operator* CommonOperatorBuilder::ObjectState(int pointer_slots) {
1031 IrOpcode::kObjectState, Operator::kPure, // opcode
1037 const Operator* CommonOperatorBuilder::TypedObjectState(
1040 IrOpcode::kTypedObjectState, Operator::kPure, // opcode
1046 const Operator* CommonOperatorBuilder::FrameState(
1051 IrOpcode::kFrameState, Operator::kPure, // opcode
1058 const Operator* CommonOperatorBuilder::Call(const CallDescriptor* descriptor) {
1065 Operator::ZeroIfPure(descriptor->properties()),
1066 Operator::ZeroIfEliminatable(descriptor->properties()),
1068 Operator::ZeroIfPure(descriptor->properties()),
1069 Operator::ZeroIfNoThrow(descriptor->properties()), descriptor) {}
1079 const Operator* CommonOperatorBuilder::TailCall(
1086 descriptor->properties() | Operator::kNoThrow, "TailCall",
1098 const Operator* CommonOperatorBuilder::Projection(size_t index) {
1102 return &cache_.kProjection##index##Operator;
1111 Operator::kPure, // flags
1118 const Operator* CommonOperatorBuilder::ResizeMergeOrPhi(const Operator* op,