Lines Matching defs:const

45   static const int kInvalidVirtualRegister = -1;
61 Kind kind() const { return KindField::decode(value_); }
64 bool Is##name() const { return kind() == type; }
87 inline bool IsAnyLocationOperand() const;
88 inline bool IsLocationOperand() const;
89 inline bool IsFPLocationOperand() const;
90 inline bool IsAnyRegister() const;
91 inline bool IsRegister() const;
92 inline bool IsFPRegister() const;
93 inline bool IsFloatRegister() const;
94 inline bool IsDoubleRegister() const;
95 inline bool IsSimd128Register() const;
96 inline bool IsAnyStackSlot() const;
97 inline bool IsStackSlot() const;
98 inline bool IsFPStackSlot() const;
99 inline bool IsFloatStackSlot() const;
100 inline bool IsDoubleStackSlot() const;
101 inline bool IsSimd128StackSlot() const;
104 static SubKindOperand* New(Zone* zone, const SubKindOperand& op) {
109 const InstructionOperand* src) {
113 bool Equals(const InstructionOperand& that) const {
121 bool Compare(const InstructionOperand& that) const {
125 bool EqualsCanonicalized(const InstructionOperand& that) const {
133 bool CompareCanonicalized(const InstructionOperand& that) const {
138 bool InterferesWith(const InstructionOperand& other) const;
141 void Print() const;
143 bool operator==(InstructionOperand& other) const { return Equals(other); }
144 bool operator!=(InstructionOperand& other) const { return !Equals(other); }
149 inline uint64_t GetCanonicalizedValue() const;
158 std::ostream& operator<<(std::ostream&, const InstructionOperand&);
167 static const OperandType* cast(const InstructionOperand* op) { \
169 return static_cast<const OperandType*>(op); \
172 static OperandType cast(const InstructionOperand& op) { \
174 return *static_cast<const OperandType*>(&op); \
252 UnallocatedOperand(const UnallocatedOperand& other, int virtual_register) {
259 bool HasRegisterOrSlotPolicy() const {
263 bool HasRegisterOrSlotOrConstantPolicy() const {
267 bool HasFixedPolicy() const {
272 bool HasRegisterPolicy() const {
276 bool HasSlotPolicy() const {
280 bool HasSameAsInputPolicy() const {
284 bool HasFixedSlotPolicy() const { return basic_policy() == FIXED_SLOT; }
285 bool HasFixedRegisterPolicy() const {
289 bool HasFixedFPRegisterPolicy() const {
293 bool HasSecondaryStorage() const {
298 int GetSecondaryStorage() const {
304 BasicPolicy basic_policy() const { return BasicPolicyField::decode(value_); }
307 ExtendedPolicy extended_policy() const {
312 int input_index() const {
318 int fixed_slot_index() const {
325 int fixed_register_index() const {
331 int32_t virtual_register() const {
336 bool IsUsedAtStart() const {
397 int32_t virtual_register() const {
422 ImmediateType type() const { return TypeField::decode(value_); }
424 int32_t inline_int32_value() const {
429 int64_t inline_int64_value() const {
434 int32_t indexed_value() const {
466 PendingOperand* next() const {
481 static const uint64_t kPointerShift = 3;
504 int index() const {
509 int register_code() const {
514 Register GetRegister() const {
519 FloatRegister GetFloatRegister() const {
524 DoubleRegister GetDoubleRegister() const {
532 Simd128Register GetSimd128Register() const {
537 LocationKind location_kind() const {
541 MachineRepresentation representation() const {
578 static const LocationOperand* cast(const InstructionOperand* op) {
580 return static_cast<const LocationOperand*>(op);
583 static LocationOperand cast(const InstructionOperand& op) {
585 return *static_cast<const LocationOperand*>(&op);
609 bool InstructionOperand::IsAnyLocationOperand() const {
613 bool InstructionOperand::IsLocationOperand() const {
618 bool InstructionOperand::IsFPLocationOperand() const {
623 bool InstructionOperand::IsAnyRegister() const {
629 bool InstructionOperand::IsRegister() const {
634 bool InstructionOperand::IsFPRegister() const {
639 bool InstructionOperand::IsFloatRegister() const {
644 bool InstructionOperand::IsDoubleRegister() const {
649 bool InstructionOperand::IsSimd128Register() const {
654 bool InstructionOperand::IsAnyStackSlot() const {
660 bool InstructionOperand::IsStackSlot() const {
665 bool InstructionOperand::IsFPStackSlot() const {
670 bool InstructionOperand::IsFloatStackSlot() const {
678 bool InstructionOperand::IsDoubleStackSlot() const {
686 bool InstructionOperand::IsSimd128StackSlot() const {
694 uint64_t InstructionOperand::GetCanonicalizedValue() const {
723 bool operator()(const InstructionOperand& a,
724 const InstructionOperand& b) const {
732 MoveOperands(const InstructionOperand& source,
733 const InstructionOperand& destination)
738 MoveOperands(const MoveOperands&) = delete;
739 MoveOperands& operator=(const MoveOperands&) = delete;
741 const InstructionOperand& source() const { return source_; }
743 void set_source(const InstructionOperand& operand) { source_ = operand; }
745 const InstructionOperand& destination() const { return destination_; }
747 void set_destination(const InstructionOperand& operand) {
753 bool IsPending() const {
760 bool IsRedundant() const {
767 bool IsEliminated() const {
773 void Print() const;
780 V8_EXPORT_PRIVATE std::ostream& operator<<(std::ostream&, const MoveOperands&);
787 ParallelMove(const ParallelMove&) = delete;
788 ParallelMove& operator=(const ParallelMove&) = delete;
790 MoveOperands* AddMove(const InstructionOperand& from,
791 const InstructionOperand& to) {
796 MoveOperands* AddMove(const InstructionOperand& from,
797 const InstructionOperand& to,
806 bool IsRedundant() const;
812 ZoneVector<MoveOperands*>* to_eliminate) const;
815 std::ostream& operator<<(std::ostream&, const ParallelMove&);
822 const ZoneVector<InstructionOperand>& reference_operands() const {
825 int instruction_position() const { return instruction_position_; }
832 void RecordReference(const AllocatedOperand& op);
835 friend std::ostream& operator<<(std::ostream&, const ReferenceMap&);
841 std::ostream& operator<<(std::ostream&, const ReferenceMap&);
847 Instruction(const Instruction&) = delete;
848 Instruction& operator=(const Instruction&) = delete;
850 size_t OutputCount() const { return OutputCountField::decode(bit_field_); }
851 const InstructionOperand* OutputAt(size_t i) const {
860 bool HasOutput() const { return OutputCount() > 0; }
861 const InstructionOperand* Output() const { return OutputAt(0); }
864 size_t InputCount() const { return InputCountField::decode(bit_field_); }
865 const InstructionOperand* InputAt(size_t i) const {
874 size_t TempCount() const { return TempCountField::decode(bit_field_); }
875 const InstructionOperand* TempAt(size_t i) const {
884 InstructionCode opcode() const { return opcode_; }
885 ArchOpcode arch_opcode() const { return ArchOpcodeField::decode(opcode()); }
886 AddressingMode addressing_mode() const {
889 FlagsMode flags_mode() const { return FlagsModeField::decode(opcode()); }
890 FlagsCondition flags_condition() const {
893 int misc() const { return MiscField::decode(opcode()); }
894 bool HasMemoryAccessMode() const {
897 MemoryAccessMode memory_access_mode() const {
929 bool IsCall() const { return IsCallField::decode(bit_field_); }
930 bool NeedsReferenceMap() const { return IsCall(); }
931 bool HasReferenceMap() const { return reference_map_ != nullptr; }
933 bool ClobbersRegisters() const { return IsCall(); }
934 bool ClobbersTemps() const { return IsCall(); }
935 bool ClobbersDoubleRegisters() const { return IsCall(); }
936 ReferenceMap* reference_map() const { return reference_map_; }
950 bool IsNop() const { return arch_opcode() == kArchNop; }
952 bool IsDeoptimizeCall() const {
957 bool IsTrap() const {
961 bool IsJump() const { return arch_opcode() == ArchOpcode::kArchJmp; }
962 bool IsRet() const { return arch_opcode() == ArchOpcode::kArchRet; }
963 bool IsTailCall() const {
970 bool IsThrow() const {
977 bool IsCallWithDescriptorFlags() const {
980 bool HasCallDescriptorFlag(CallDescriptor::Flag flag) const {
1009 const ParallelMove* GetParallelMove(GapPosition pos) const {
1013 bool AreMovesRedundant() const;
1015 ParallelMove* const* parallel_moves() const { return &parallel_moves_[0]; }
1021 InstructionBlock* block() const { return block_; }
1028 void Print() const;
1034 static const size_t kMaxOutputCount = OutputCountField::kMax;
1035 static const size_t kMaxInputCount = InputCountField::kMax;
1036 static const size_t kMaxTempCount = TempCountField::kMax;
1056 std::ostream& operator<<(std::ostream&, const Instruction&);
1060 static const int kInvalidRpoNumber = -1;
1063 int ToInt() const {
1067 size_t ToSize() const {
1071 bool IsValid() const { return index_ >= 0; }
1075 bool IsNext(const RpoNumber other) const {
1080 RpoNumber Next() const {
1086 bool operator==(RpoNumber other) const { return index_ == other.index_; }
1087 bool operator!=(RpoNumber other) const { return index_ != other.index_; }
1088 bool operator>(RpoNumber other) const { return index_ > other.index_; }
1089 bool operator<(RpoNumber other) const { return index_ < other.index_; }
1090 bool operator<=(RpoNumber other) const { return index_ <= other.index_; }
1091 bool operator>=(RpoNumber other) const { return index_ >= other.index_; }
1098 V8_EXPORT_PRIVATE std::ostream& operator<<(std::ostream&, const RpoNumber&);
1124 explicit Constant(const StringConstantBase* str)
1128 Type type() const { return type_; }
1130 RelocInfo::Mode rmode() const { return rmode_; }
1132 bool FitsInInt32() const {
1139 int32_t ToInt32() const {
1141 const int32_t value = static_cast<int32_t>(value_);
1146 int64_t ToInt64() const {
1152 float ToFloat32() const {
1160 uint32_t ToFloat32AsInt() const {
1165 base::Double ToFloat64() const {
1170 ExternalReference ToExternalReference() const {
1175 RpoNumber ToRpoNumber() const {
1180 Handle<HeapObject> ToHeapObject() const;
1181 Handle<CodeT> ToCode() const;
1182 const StringConstantBase* ToDelayedStringConstant() const;
1190 std::ostream& operator<<(std::ostream&, const Constant&);
1239 bool IsArgumentsElements() const {
1242 bool IsArgumentsLength() const {
1245 bool IsPlain() const { return kind_ == StateValueKind::kPlain; }
1246 bool IsOptimizedOut() const { return kind_ == StateValueKind::kOptimizedOut; }
1247 bool IsNested() const { return kind_ == StateValueKind::kNested; }
1248 bool IsDuplicate() const { return kind_ == StateValueKind::kDuplicate; }
1249 MachineType type() const { return type_; }
1250 size_t id() const {
1255 ArgumentsStateType arguments_type() const {
1291 bool operator!=(const iterator& other) const {
1294 bool operator==(const iterator& other) const {
1352 void PushCachedSlice(const Slice& cached) {
1391 FrameStateType type() const { return type_; }
1392 BytecodeOffset bailout_id() const { return bailout_id_; }
1393 OutputFrameStateCombine state_combine() const { return frame_state_combine_; }
1394 size_t parameters_count() const { return parameters_count_; }
1395 size_t locals_count() const { return locals_count_; }
1396 size_t stack_count() const { return stack_count_; }
1397 MaybeHandle<SharedFunctionInfo> shared_info() const { return shared_info_; }
1398 FrameStateDescriptor* outer_state() const { return outer_state_; }
1399 bool HasContext() const {
1413 size_t GetHeight() const;
1418 size_t total_conservative_frame_size_in_bytes() const {
1422 size_t GetSize() const;
1423 size_t GetTotalSize() const;
1424 size_t GetFrameCount() const;
1425 size_t GetJSFrameCount() const;
1429 static const int kImpossibleValue = 0xdead;
1435 const size_t parameters_count_;
1436 const size_t locals_count_;
1437 const size_t stack_count_;
1438 const size_t total_conservative_frame_size_in_bytes_;
1440 MaybeHandle<SharedFunctionInfo> const shared_info_;
1441 FrameStateDescriptor* const outer_state_;
1454 const wasm::FunctionSig* wasm_signature);
1456 base::Optional<wasm::ValueKind> return_kind() const { return return_kind_; }
1469 FeedbackSource const& feedback)
1480 FrameStateDescriptor* descriptor() const { return descriptor_; }
1481 DeoptimizeKind kind() const { return kind_; }
1482 DeoptimizeReason reason() const { return reason_; }
1484 NodeId node_id() const { return node_id_; }
1486 FeedbackSource const& feedback() const { return feedback_; }
1489 FrameStateDescriptor* const descriptor_;
1490 const DeoptimizeKind kind_;
1491 const DeoptimizeReason reason_;
1493 const NodeId node_id_;
1495 const FeedbackSource feedback_;
1510 int virtual_register() const { return virtual_register_; }
1511 const IntVector& operands() const { return operands_; }
1515 const InstructionOperand& output() const { return output_; }
1519 const int virtual_register_;
1533 int first_instruction_index() const {
1539 int last_instruction_index() const {
1546 int32_t code_start() const { return code_start_; }
1549 int32_t code_end() const { return code_end_; }
1552 bool IsDeferred() const { return deferred_; }
1553 bool IsHandler() const { return handler_; }
1557 RpoNumber ao_number() const { return ao_number_; }
1558 RpoNumber rpo_number() const { return rpo_number_; }
1559 RpoNumber loop_header() const { return loop_header_; }
1560 RpoNumber loop_end() const {
1564 inline bool IsLoopHeader() const { return loop_end_.IsValid(); }
1565 inline bool IsSwitchTarget() const { return switch_target_; }
1566 inline bool ShouldAlignCodeTarget() const { return code_target_alignment_; }
1567 inline bool ShouldAlignLoopHeader() const { return loop_header_alignment_; }
1571 const Predecessors& predecessors() const { return predecessors_; }
1572 size_t PredecessorCount() const { return predecessors_.size(); }
1573 size_t PredecessorIndexOf(RpoNumber rpo_number) const;
1577 const Successors& successors() const { return successors_; }
1578 size_t SuccessorCount() const { return successors_.size(); }
1580 RpoNumber dominator() const { return dominator_; }
1584 const PhiInstructions& phis() const { return phis_; }
1585 PhiInstruction* PhiAt(size_t i) const { return phis_[i]; }
1595 bool needs_frame() const { return needs_frame_; }
1598 bool must_construct_frame() const { return must_construct_frame_; }
1601 bool must_deconstruct_frame() const { return must_deconstruct_frame_; }
1610 const RpoNumber rpo_number_;
1611 const RpoNumber loop_header_;
1612 const RpoNumber loop_end_;
1616 const bool deferred_ : 1; // Block contains deferred code.
1631 const InstructionBlock* block_;
1632 const InstructionSequence* code_;
1635 std::ostream& operator<<(std::ostream&, const PrintableInstructionBlock&);
1639 ZoneAllocator<std::pair<const int, Constant> > >;
1651 const Schedule* schedule);
1654 InstructionSequence(const InstructionSequence&) = delete;
1655 InstructionSequence& operator=(const InstructionSequence&) = delete;
1658 int VirtualRegisterCount() const { return next_virtual_register_; }
1660 const InstructionBlocks& instruction_blocks() const {
1664 const InstructionBlocks& ao_blocks() const { return *ao_blocks_; }
1666 int InstructionBlockCount() const {
1674 int LastLoopInstructionIndex(const InstructionBlock* block) {
1679 const InstructionBlock* InstructionBlockAt(RpoNumber rpo_number) const {
1683 InstructionBlock* GetInstructionBlock(int instruction_index) const;
1688 MachineRepresentation GetRepresentation(int virtual_register) const;
1691 bool IsReference(int virtual_register) const {
1694 bool IsFP(int virtual_register) const {
1697 int representation_mask() const { return representation_mask_; }
1698 bool HasFPVirtualRegisters() const {
1706 bool HasSimd128VirtualRegisters() const {
1712 Instruction* GetBlockStart(RpoNumber rpo) const;
1715 const_iterator begin() const { return instructions_.begin(); }
1716 const_iterator end() const { return instructions_.end(); }
1717 const InstructionDeque& instructions() const { return instructions_; }
1718 int LastInstructionIndex() const {
1722 Instruction* InstructionAt(int index) const {
1728 Isolate* isolate() const { return isolate_; }
1729 const ReferenceMapDeque* reference_maps() const { return &reference_maps_; }
1730 Zone* zone() const { return zone_; }
1745 Constant GetConstant(int virtual_register) const {
1758 ImmediateOperand AddImmediate(const Constant& constant) {
1786 Constant GetImmediate(const ImmediateOperand* op) const {
1810 NodeId node_id, FeedbackSource const& feedback);
1811 DeoptimizationEntry const& GetDeoptimizationEntry(int deoptimization_id);
1812 int GetDeoptimizationEntryCount() const {
1818 bool GetSourcePosition(const Instruction* instr,
1819 SourcePosition* result) const;
1820 void SetSourcePosition(const Instruction* instr, SourcePosition value);
1822 bool ContainsCall() const {
1830 void Print() const;
1832 void PrintBlock(int block_id) const;
1834 void ValidateEdgeSplitForm() const;
1835 void ValidateDeferredBlockExitPaths() const;
1836 void ValidateDeferredBlockEntryPaths() const;
1837 void ValidateSSA() const;
1840 const RegisterConfiguration* regConfig);
1852 const InstructionSequence&);
1854 using SourcePositionMap = ZoneMap<const Instruction*, SourcePosition>;
1856 static const RegisterConfiguration* RegisterConfigurationForTesting();
1857 static const RegisterConfiguration* registerConfigurationForTesting_;
1863 Zone* const zone_;
1864 InstructionBlocks* const instruction_blocks_;
1882 const InstructionSequence&);