v8
V8 is Google’s open source high-performance JavaScript and WebAssembly engine, written in C++.
Loading...
Searching...
No Matches
v8::internal::compiler::InstructionSelectorT Class Referencefinal

#include <instruction-selector.h>

Inheritance diagram for v8::internal::compiler::InstructionSelectorT:
Collaboration diagram for v8::internal::compiler::InstructionSelectorT:

Classes

struct  CachedStateValues
 
struct  FrameStateInput
 

Public Types

using OperandGenerator = OperandGeneratorT
 
using PushParameter = PushParameterT
 
using CallBuffer = CallBufferT
 
using FlagsContinuation = FlagsContinuationT
 
using SwitchInfo = SwitchInfoT
 
using CaseInfo = CaseInfoT
 
using source_position_table_t
 
using Features = InstructionSelector::Features
 
- Public Types inherited from v8::internal::compiler::turboshaft::OperationMatcher
template<typename T >
using VMatch = detail::ValueMatch<T, const_or_v_exists_v<T>>
 
template<typename T >
using OMatch = detail::OptionMatch<T>
 

Public Member Functions

 InstructionSelectorT (Zone *zone, size_t node_count, Linkage *linkage, InstructionSequence *sequence, turboshaft::Graph *schedule, source_position_table_t *source_positions, Frame *frame, InstructionSelector::EnableSwitchJumpTable enable_switch_jump_table, TickCounter *tick_counter, JSHeapBroker *broker, size_t *max_unoptimized_frame_height, size_t *max_pushed_argument_count, InstructionSelector::SourcePositionMode source_position_mode=InstructionSelector::kCallSourcePositions, Features features=SupportedFeatures(), InstructionSelector::EnableScheduling enable_scheduling=v8_flags.turbo_instruction_scheduling ? InstructionSelector::kEnableScheduling :InstructionSelector::kDisableScheduling, InstructionSelector::EnableRootsRelativeAddressing enable_roots_relative_addressing=InstructionSelector::kDisableRootsRelativeAddressing, InstructionSelector::EnableTraceTurboJson trace_turbo=InstructionSelector::kDisableTraceTurboJson)
 
std::optional< BailoutReasonSelectInstructions ()
 
void StartBlock (RpoNumber rpo)
 
void EndBlock (RpoNumber rpo)
 
void AddInstruction (Instruction *instr)
 
void AddTerminator (Instruction *instr)
 
InstructionEmit (InstructionCode opcode, InstructionOperand output, size_t temp_count=0, InstructionOperand *temps=nullptr)
 
InstructionEmit (InstructionCode opcode, InstructionOperand output, InstructionOperand a, size_t temp_count=0, InstructionOperand *temps=nullptr)
 
InstructionEmit (InstructionCode opcode, InstructionOperand output, InstructionOperand a, InstructionOperand b, size_t temp_count=0, InstructionOperand *temps=nullptr)
 
InstructionEmit (InstructionCode opcode, InstructionOperand output, InstructionOperand a, InstructionOperand b, InstructionOperand c, size_t temp_count=0, InstructionOperand *temps=nullptr)
 
InstructionEmit (InstructionCode opcode, InstructionOperand output, InstructionOperand a, InstructionOperand b, InstructionOperand c, InstructionOperand d, size_t temp_count=0, InstructionOperand *temps=nullptr)
 
InstructionEmit (InstructionCode opcode, InstructionOperand output, InstructionOperand a, InstructionOperand b, InstructionOperand c, InstructionOperand d, InstructionOperand e, size_t temp_count=0, InstructionOperand *temps=nullptr)
 
InstructionEmit (InstructionCode opcode, InstructionOperand output, InstructionOperand a, InstructionOperand b, InstructionOperand c, InstructionOperand d, InstructionOperand e, InstructionOperand f, size_t temp_count=0, InstructionOperand *temps=nullptr)
 
InstructionEmit (InstructionCode opcode, InstructionOperand output, InstructionOperand a, InstructionOperand b, InstructionOperand c, InstructionOperand d, InstructionOperand e, InstructionOperand f, InstructionOperand g, InstructionOperand h, size_t temp_count=0, InstructionOperand *temps=nullptr)
 
InstructionEmit (InstructionCode opcode, size_t output_count, InstructionOperand *outputs, size_t input_count, InstructionOperand *inputs, size_t temp_count=0, InstructionOperand *temps=nullptr)
 
InstructionEmit (Instruction *instr)
 
InstructionEmitWithContinuation (InstructionCode opcode, FlagsContinuation *cont)
 
InstructionEmitWithContinuation (InstructionCode opcode, InstructionOperand a, FlagsContinuation *cont)
 
InstructionEmitWithContinuation (InstructionCode opcode, InstructionOperand a, InstructionOperand b, FlagsContinuation *cont)
 
InstructionEmitWithContinuation (InstructionCode opcode, InstructionOperand a, InstructionOperand b, InstructionOperand c, FlagsContinuation *cont)
 
InstructionEmitWithContinuation (InstructionCode opcode, size_t output_count, InstructionOperand *outputs, size_t input_count, InstructionOperand *inputs, FlagsContinuation *cont)
 
InstructionEmitWithContinuation (InstructionCode opcode, size_t output_count, InstructionOperand *outputs, size_t input_count, InstructionOperand *inputs, size_t temp_count, InstructionOperand *temps, FlagsContinuation *cont)
 
void EmitIdentity (turboshaft::OpIndex node)
 
bool IsSupported (CpuFeature feature) const
 
bool CanCover (turboshaft::OpIndex user, turboshaft::OpIndex node) const
 
bool CanCoverProtectedLoad (turboshaft::OpIndex user, turboshaft::OpIndex node) const
 
bool IsOnlyUserOfNodeInSameBlock (turboshaft::OpIndex user, turboshaft::OpIndex node) const
 
bool IsDefined (turboshaft::OpIndex node) const
 
bool IsUsed (turboshaft::OpIndex node) const
 
bool IsReallyUsed (turboshaft::OpIndex node) const
 
bool IsLive (turboshaft::OpIndex node) const
 
bool IsReallyLive (turboshaft::OpIndex node) const
 
int GetEffectLevel (turboshaft::OpIndex node) const
 
int GetEffectLevel (turboshaft::OpIndex node, FlagsContinuation *cont) const
 
int GetVirtualRegister (turboshaft::OpIndex node)
 
const std::map< uint32_t, int > GetVirtualRegistersForTesting () const
 
bool CanAddressRelativeToRootsRegister (const ExternalReference &reference) const
 
bool CanUseRootsRegister () const
 
Isolateisolate () const
 
const ZoneVector< std::pair< int, int > > & instr_origins () const
 
turboshaft::OptionalOpIndex FindProjection (turboshaft::OpIndex node, size_t projection_index)
 
template<typename Op >
auto Inputs (turboshaft::OpIndex node)
 
template<typename Op , std::size_t... Is>
auto InputsImpl (const Op &op, std::index_sequence< Is... >)
 
bool CanDoBranchIfOverflowFusion (turboshaft::OpIndex node)
 
void SetProtectedLoadToRemove (turboshaft::OpIndex node)
 
void MarkAsProtected (turboshaft::OpIndex node)
 
void UpdateSourcePosition (Instruction *instruction, turboshaft::OpIndex node)
 
bool IsCommutative (turboshaft::OpIndex node) const
 
turboshaft::OpIndex block_terminator (const turboshaft::Block *block) const
 
- Public Member Functions inherited from v8::internal::compiler::TurboshaftAdapter
 TurboshaftAdapter (turboshaft::Graph *graph)
 
bool is_load (turboshaft::OpIndex node) const
 
bool is_load_root_register (turboshaft::OpIndex node) const
 
LoadView load_view (turboshaft::OpIndex node)
 
StoreView store_view (turboshaft::OpIndex node)
 
turboshaft::Graphturboshaft_graph () const
 
turboshaft::Blockblock (turboshaft::Graph *schedule, turboshaft::OpIndex node) const
 
RpoNumber rpo_number (const turboshaft::Block *block) const
 
const ZoneVector< turboshaft::Block * > & rpo_order (turboshaft::Graph *schedule)
 
bool IsLoopHeader (const turboshaft::Block *block) const
 
size_t PredecessorCount (const turboshaft::Block *block) const
 
turboshaft::BlockPredecessorAt (const turboshaft::Block *block, size_t index) const
 
base::iterator_range< turboshaft::Graph::OpIndexIteratornodes (const turboshaft::Block *block)
 
bool IsRetain (turboshaft::OpIndex node) const
 
bool IsHeapConstant (turboshaft::OpIndex node) const
 
bool IsExternalConstant (turboshaft::OpIndex node) const
 
bool IsRelocatableWasmConstant (turboshaft::OpIndex node) const
 
bool IsLoadOrLoadImmutable (turboshaft::OpIndex node) const
 
bool IsProtectedLoad (turboshaft::OpIndex node) const
 
int value_input_count (turboshaft::OpIndex node) const
 
turboshaft::OpIndex input_at (turboshaft::OpIndex node, size_t index) const
 
base::Vector< const turboshaft::OpIndexinputs (turboshaft::OpIndex node) const
 
turboshaft::Opcode opcode (turboshaft::OpIndex node) const
 
uint32_t id (turboshaft::OpIndex node) const
 
- Public Member Functions inherited from v8::internal::compiler::turboshaft::OperationMatcher
 OperationMatcher (const Graph &graph)
 
template<class Op >
bool Is (V< AnyOrNone > op_idx) const
 
template<class Op >
const underlying_operation_t< Op > * TryCast (V< AnyOrNone > op_idx) const
 
template<class Op >
const underlying_operation_t< Op > & Cast (V< AnyOrNone > op_idx) const
 
const OperationGet (V< AnyOrNone > op_idx) const
 
V< AnyOrNoneIndex (const Operation &op) const
 
bool MatchZero (V< Any > matched) const
 
bool MatchIntegralZero (V< Any > matched) const
 
bool MatchSmiZero (V< Any > matched) const
 
bool MatchFloat32Constant (V< Any > matched, float *constant) const
 
bool MatchFloat32Constant (V< Any > matched, i::Float32 *constant) const
 
bool MatchFloat64Constant (V< Any > matched, double *constant) const
 
bool MatchFloat64Constant (V< Any > matched, i::Float64 *constant) const
 
bool MatchFloat (V< Any > matched, double *value) const
 
bool MatchFloat (V< Any > matched, double value) const
 
bool MatchNaN (V< Float > matched) const
 
bool MatchHeapConstant (V< Any > matched, Handle< HeapObject > *tagged=nullptr) const
 
bool MatchIntegralWordConstant (V< Any > matched, WordRepresentation rep, uint64_t *unsigned_constant, int64_t *signed_constant=nullptr) const
 
bool MatchIntegralWordConstant (V< Any > matched, WordRepresentation rep, int64_t *signed_constant) const
 
bool MatchIntegralWord32Constant (V< Any > matched, uint32_t *constant) const
 
bool MatchIntegralWord64Constant (V< Any > matched, uint64_t *constant) const
 
bool MatchIntegralWord32Constant (V< Any > matched, uint32_t constant) const
 
bool MatchIntegralWord64Constant (V< Any > matched, int64_t *constant) const
 
bool MatchIntegralWord32Constant (V< Any > matched, int32_t *constant) const
 
template<typename T = intptr_t>
bool MatchIntegralWordPtrConstant (V< Any > matched, T *constant) const
 
bool MatchSignedIntegralConstant (V< Any > matched, int64_t *constant) const
 
bool MatchUnsignedIntegralConstant (V< Any > matched, uint64_t *constant) const
 
bool MatchExternalConstant (V< Any > matched, ExternalReference *reference) const
 
bool MatchWasmStubCallConstant (V< Any > matched, uint64_t *stub_id) const
 
template<typename T >
bool MatchChange (V< Any > matched, VMatch< T > input, OMatch< ChangeOp::Kind > kind={}, OMatch< ChangeOp::Assumption > assumption={}, OMatch< RegisterRepresentation > from={}, OMatch< RegisterRepresentation > to={}) const
 
bool MatchTruncateWord64ToWord32 (V< Any > matched, VMatch< Word64 > input) const
 
template<typename T >
requires (IsWord<T>())
bool MatchWordBinop (V< Any > matched, VMatch< T > left, VMatch< T > right, OMatch< WordBinopOp::Kind > kind={}, OMatch< WordRepresentation > rep={}) const
 
template<class T >
requires (IsWord<T>())
bool MatchWordAdd (V< Any > matched, V< T > *left, V< T > *right, WordRepresentation rep) const
 
template<class T >
requires (IsWord<T>())
bool MatchWordSub (V< Any > matched, V< T > *left, V< T > *right, WordRepresentation rep) const
 
template<class T >
requires (IsWord<T>())
bool MatchWordMul (V< Any > matched, V< T > *left, V< T > *right, WordRepresentation rep) const
 
template<class T >
requires (IsWord<T>())
bool MatchBitwiseAnd (V< Any > matched, V< T > *left, V< T > *right, WordRepresentation rep) const
 
template<class T >
requires (IsWord<T>())
bool MatchBitwiseAndWithConstant (V< Any > matched, V< T > *value, uint64_t *constant, WordRepresentation rep) const
 
template<typename T >
bool MatchEqual (V< Any > matched, V< T > *left, V< T > *right) const
 
bool MatchFloatUnary (V< Any > matched, V< Float > *input, FloatUnaryOp::Kind kind, FloatRepresentation rep) const
 
bool MatchFloatRoundDown (V< Any > matched, V< Float > *input, FloatRepresentation rep) const
 
bool MatchFloatBinary (V< Any > matched, V< Float > *left, V< Float > *right, FloatBinopOp::Kind kind, FloatRepresentation rep) const
 
bool MatchFloatSub (V< Any > matched, V< Float > *left, V< Float > *right, FloatRepresentation rep) const
 
template<class T >
requires (IsWord<T>())
bool MatchConstantShift (V< Any > matched, V< T > *input, ShiftOp::Kind *kind, WordRepresentation *rep, int *amount) const
 
template<class T >
requires (IsWord<T>())
bool MatchConstantShift (V< Any > matched, V< T > *input, ShiftOp::Kind kind, WordRepresentation rep, int *amount) const
 
template<class T >
requires (IsWord<T>())
bool MatchConstantRightShift (V< Any > matched, V< T > *input, WordRepresentation rep, int *amount) const
 
template<class T >
requires (IsWord<T>())
bool MatchConstantLeftShift (V< Any > matched, V< T > *input, WordRepresentation rep, int *amount) const
 
template<class T >
requires (IsWord<T>())
bool MatchConstantShiftRightArithmeticShiftOutZeros (V< Any > matched, V< T > *input, WordRepresentation rep, uint16_t *amount) const
 
bool MatchPhi (V< Any > matched, std::optional< int > input_count=std::nullopt) const
 
bool MatchPowerOfTwoWordConstant (V< Any > matched, int64_t *ret_cst, WordRepresentation rep) const
 
bool MatchPowerOfTwoWord32Constant (V< Any > matched, int32_t *divisor) const
 

Static Public Member Functions

static Features SupportedFeatures ()
 
- Static Public Member Functions inherited from v8::internal::compiler::TurboshaftAdapter
static turboshaft::OpIndex value (turboshaft::OptionalOpIndex node)
 

Private Types

enum  CallBufferFlag { kCallCodeImmediate = 1u << 0 , kCallAddressImmediate = 1u << 1 , kCallTail = 1u << 2 , kCallFixedTargetRegister = 1u << 3 }
 
using CallBufferFlags = base::Flags<CallBufferFlag>
 
using StateObjectDeduplicator = TurboshaftStateObjectDeduplicator
 

Private Member Functions

bool UseInstructionScheduling () const
 
void AppendDeoptimizeArguments (InstructionOperandVector *args, DeoptimizeReason reason, uint32_t node_id, FeedbackSource const &feedback, turboshaft::OpIndex frame_state, DeoptimizeKind kind=DeoptimizeKind::kEager)
 
void EmitTableSwitch (const SwitchInfo &sw, InstructionOperand const &index_operand)
 
void EmitBinarySearchSwitch (const SwitchInfo &sw, InstructionOperand const &value_operand)
 
void TryRename (InstructionOperand *op)
 
int GetRename (int virtual_register)
 
void SetRename (turboshaft::OpIndex node, turboshaft::OpIndex rename)
 
void UpdateRenames (Instruction *instruction)
 
void UpdateRenamesInPhi (PhiInstruction *phi)
 
void MarkAsDefined (turboshaft::OpIndex node)
 
void MarkAsUsed (turboshaft::OpIndex node)
 
void SetEffectLevel (turboshaft::OpIndex node, int effect_level)
 
void MarkAsRepresentation (MachineRepresentation rep, turboshaft::OpIndex node)
 
void MarkAsRepresentation (turboshaft::RegisterRepresentation rep, turboshaft::OpIndex node)
 
void MarkAsWord32 (turboshaft::OpIndex node)
 
void MarkAsWord64 (turboshaft::OpIndex node)
 
void MarkAsFloat32 (turboshaft::OpIndex node)
 
void MarkAsFloat64 (turboshaft::OpIndex node)
 
void MarkAsSimd128 (turboshaft::OpIndex node)
 
void MarkAsSimd256 (turboshaft::OpIndex node)
 
void MarkAsTagged (turboshaft::OpIndex node)
 
void MarkAsCompressed (turboshaft::OpIndex node)
 
void MarkAsRepresentation (MachineRepresentation rep, const InstructionOperand &op)
 
void InitializeCallBuffer (turboshaft::OpIndex call, CallBuffer *buffer, CallBufferFlags flags, turboshaft::OpIndex callee, turboshaft::OptionalOpIndex frame_state_opt, base::Vector< const turboshaft::OpIndex > arguments, int return_count, int stack_slot_delta=0)
 
bool IsTailCallAddressImmediate ()
 
void UpdateMaxPushedArgumentCount (size_t count)
 
FrameStateDescriptorGetFrameStateDescriptor (turboshaft::OpIndex node)
 
size_t AddInputsToFrameStateDescriptor (FrameStateDescriptor *descriptor, turboshaft::OpIndex state, OperandGenerator *g, StateObjectDeduplicator *deduplicator, InstructionOperandVector *inputs, FrameStateInputKind kind, Zone *zone)
 
size_t AddInputsToFrameStateDescriptor (StateValueList *values, InstructionOperandVector *inputs, OperandGenerator *g, StateObjectDeduplicator *deduplicator, turboshaft::OpIndex node, FrameStateInputKind kind, Zone *zone)
 
size_t AddOperandToStateValueDescriptor (StateValueList *values, InstructionOperandVector *inputs, OperandGenerator *g, StateObjectDeduplicator *deduplicator, turboshaft::OpIndex input, MachineType type, FrameStateInputKind kind, Zone *zone)
 
void VisitBlock (const turboshaft::Block *block)
 
void VisitControl (const turboshaft::Block *block)
 
void VisitNode (turboshaft::OpIndex node)
 
void VisitFloat64Ieee754Binop (turboshaft::OpIndex, InstructionCode code)
 
void VisitFloat64Ieee754Unop (turboshaft::OpIndex, InstructionCode code)
 
void VisitLoad (turboshaft::OpIndex node, turboshaft::OpIndex value, InstructionCode opcode)
 
void VisitLoadTransform (Node *node, Node *value, InstructionCode opcode)
 
void VisitFinishRegion (Node *node)
 
void VisitParameter (turboshaft::OpIndex node)
 
void VisitIfException (turboshaft::OpIndex node)
 
void VisitOsrValue (turboshaft::OpIndex node)
 
void VisitPhi (turboshaft::OpIndex node)
 
void VisitProjection (turboshaft::OpIndex node)
 
void VisitConstant (turboshaft::OpIndex node)
 
void VisitCall (turboshaft::OpIndex call, turboshaft::Block *handler={})
 
void VisitDeoptimizeIf (turboshaft::OpIndex node)
 
void VisitDynamicCheckMapsWithDeoptUnless (Node *node)
 
void VisitTrapIf (turboshaft::OpIndex node)
 
void VisitTailCall (turboshaft::OpIndex call)
 
void VisitGoto (turboshaft::Block *target)
 
void VisitBranch (turboshaft::OpIndex input, turboshaft::Block *tbranch, turboshaft::Block *fbranch)
 
void VisitSwitch (turboshaft::OpIndex node, const SwitchInfo &sw)
 
void VisitDeoptimize (DeoptimizeReason reason, uint32_t node_id, FeedbackSource const &feedback, turboshaft::OpIndex frame_state)
 
void VisitSelect (turboshaft::OpIndex node)
 
void VisitReturn (turboshaft::OpIndex node)
 
void VisitThrow (Node *node)
 
void VisitRetain (turboshaft::OpIndex node)
 
void VisitUnreachable (turboshaft::OpIndex node)
 
void VisitStaticAssert (turboshaft::OpIndex node)
 
void VisitDeadValue (Node *node)
 
void VisitBitcastWord32PairToFloat64 (turboshaft::OpIndex node)
 
void TryPrepareScheduleFirstProjection (turboshaft::OpIndex maybe_projection)
 
void VisitStackPointerGreaterThan (turboshaft::OpIndex node, FlagsContinuation *cont)
 
void VisitWordCompareZero (turboshaft::OpIndex user, turboshaft::OpIndex value, FlagsContinuation *cont)
 
void EmitPrepareArguments (ZoneVector< PushParameter > *arguments, const CallDescriptor *call_descriptor, turboshaft::OpIndex node)
 
void EmitPrepareResults (ZoneVector< PushParameter > *results, const CallDescriptor *call_descriptor, turboshaft::OpIndex node)
 
void EmitMoveFPRToParam (InstructionOperand *op, LinkageLocation location)
 
void EmitMoveParamToFPR (turboshaft::OpIndex node, int index)
 
bool CanProduceSignalingNaN (Node *node)
 
void AddOutputToSelectContinuation (OperandGenerator *g, int first_input_index, turboshaft::OpIndex node)
 
void ConsumeEqualZero (turboshaft::OpIndex *user, turboshaft::OpIndex *value, FlagsContinuation *cont)
 
void VisitI8x16RelaxedSwizzle (turboshaft::OpIndex node)
 
turboshaft::Graphschedule () const
 
Linkagelinkage () const
 
InstructionSequencesequence () const
 
base::Vector< const turboshaft::OpIndexturboshaft_uses (turboshaft::OpIndex node) const
 
Zoneinstruction_zone () const
 
Zonezone () const
 
void set_instruction_selection_failed ()
 
bool instruction_selection_failed ()
 
FlagsCondition GetComparisonFlagCondition (const turboshaft::ComparisonOp &op) const
 
void MarkPairProjectionsAsWord32 (turboshaft::OpIndex node)
 
bool IsSourcePositionUsed (turboshaft::OpIndex node)
 
void VisitWord32AtomicBinaryOperation (turboshaft::OpIndex node, ArchOpcode int8_op, ArchOpcode uint8_op, ArchOpcode int16_op, ArchOpcode uint16_op, ArchOpcode word32_op)
 
void VisitWord64AtomicBinaryOperation (turboshaft::OpIndex node, ArchOpcode uint8_op, ArchOpcode uint16_op, ArchOpcode uint32_op, ArchOpcode uint64_op)
 
void VisitWord64AtomicNarrowBinop (Node *node, ArchOpcode uint8_op, ArchOpcode uint16_op, ArchOpcode uint32_op)
 

Private Attributes

friend OperandGenerator
 
Zone *const zone_
 
Linkage *const linkage_
 
InstructionSequence *const sequence_
 
source_position_table_t *const source_positions_
 
InstructionSelector::SourcePositionMode const source_position_mode_
 
Features features_
 
turboshaft::Graph *const schedule_
 
const turboshaft::Blockcurrent_block_
 
ZoneVector< Instruction * > instructions_
 
InstructionOperandVector continuation_inputs_
 
InstructionOperandVector continuation_outputs_
 
InstructionOperandVector continuation_temps_
 
BitVector defined_
 
BitVector used_
 
IntVector effect_level_
 
int current_effect_level_
 
IntVector virtual_registers_
 
IntVector virtual_register_rename_
 
InstructionSchedulerscheduler_
 
InstructionSelector::EnableScheduling enable_scheduling_
 
InstructionSelector::EnableRootsRelativeAddressing enable_roots_relative_addressing_
 
InstructionSelector::EnableSwitchJumpTable enable_switch_jump_table_
 
ZoneUnorderedMap< FrameStateInput, CachedStateValues *, typename FrameStateInput::Hash, typename FrameStateInput::Equalstate_values_cache_
 
Frameframe_
 
bool instruction_selection_failed_
 
ZoneVector< std::pair< int, int > > instr_origins_
 
InstructionSelector::EnableTraceTurboJson trace_turbo_
 
TickCounter *const tick_counter_
 
JSHeapBroker *const broker_
 
size_tmax_unoptimized_frame_height_
 
size_tmax_pushed_argument_count_
 
std::optional< turboshaft::UseMapturboshaft_use_map_
 
std::optional< BitVectorprotected_loads_to_remove_
 
std::optional< BitVectoradditional_protected_instructions_
 

Additional Inherited Members

- Static Public Attributes inherited from v8::internal::compiler::TurboshaftAdapter
static constexpr bool IsTurbofan = false
 
static constexpr bool IsTurboshaft = true
 
static constexpr bool AllowsImplicitWord64ToWord32Truncation = true
 

Detailed Description

Definition at line 431 of file instruction-selector.h.

Member Typedef Documentation

◆ CallBuffer

◆ CallBufferFlags

◆ CaseInfo

◆ Features

◆ FlagsContinuation

◆ OperandGenerator

◆ PushParameter

◆ source_position_table_t

Initial value:
turboshaft::GrowingOpIndexSidetable<SourcePosition>

Definition at line 440 of file instruction-selector.h.

◆ StateObjectDeduplicator

◆ SwitchInfo

Member Enumeration Documentation

◆ CallBufferFlag

Enumerator
kCallCodeImmediate 
kCallAddressImmediate 
kCallTail 
kCallFixedTargetRegister 

Definition at line 754 of file instruction-selector.h.

Constructor & Destructor Documentation

◆ InstructionSelectorT()

v8::internal::compiler::InstructionSelectorT::InstructionSelectorT ( Zone * zone,
size_t node_count,
Linkage * linkage,
InstructionSequence * sequence,
turboshaft::Graph * schedule,
source_position_table_t * source_positions,
Frame * frame,
InstructionSelector::EnableSwitchJumpTable enable_switch_jump_table,
TickCounter * tick_counter,
JSHeapBroker * broker,
size_t * max_unoptimized_frame_height,
size_t * max_pushed_argument_count,
InstructionSelector::SourcePositionMode source_position_mode = InstructionSelector::kCallSourcePositions,
Features features = SupportedFeatures(),
InstructionSelector::EnableScheduling enable_scheduling = v8_flags.turbo_instruction_scheduling ? InstructionSelector::kEnableScheduling : InstructionSelector::kDisableScheduling,
InstructionSelector::EnableRootsRelativeAddressing enable_roots_relative_addressing = InstructionSelector::kDisableRootsRelativeAddressing,
InstructionSelector::EnableTraceTurboJson trace_turbo = InstructionSelector::kDisableTraceTurboJson )

Definition at line 51 of file instruction-selector.cc.

Here is the call graph for this function:

Member Function Documentation

◆ AddInputsToFrameStateDescriptor() [1/2]

size_t v8::internal::compiler::InstructionSelectorT::AddInputsToFrameStateDescriptor ( FrameStateDescriptor * descriptor,
turboshaft::OpIndex state,
OperandGenerator * g,
StateObjectDeduplicator * deduplicator,
InstructionOperandVector * inputs,
FrameStateInputKind kind,
Zone * zone )
private

Definition at line 891 of file instruction-selector.cc.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ AddInputsToFrameStateDescriptor() [2/2]

size_t v8::internal::compiler::InstructionSelectorT::AddInputsToFrameStateDescriptor ( StateValueList * values,
InstructionOperandVector * inputs,
OperandGenerator * g,
StateObjectDeduplicator * deduplicator,
turboshaft::OpIndex node,
FrameStateInputKind kind,
Zone * zone )
private

◆ AddInstruction()

void v8::internal::compiler::InstructionSelectorT::AddInstruction ( Instruction * instr)

Definition at line 199 of file instruction-selector.cc.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ AddOperandToStateValueDescriptor()

size_t v8::internal::compiler::InstructionSelectorT::AddOperandToStateValueDescriptor ( StateValueList * values,
InstructionOperandVector * inputs,
OperandGenerator * g,
StateObjectDeduplicator * deduplicator,
turboshaft::OpIndex input,
MachineType type,
FrameStateInputKind kind,
Zone * zone )
private

◆ AddOutputToSelectContinuation()

void v8::internal::compiler::InstructionSelectorT::AddOutputToSelectContinuation ( OperandGenerator * g,
int first_input_index,
turboshaft::OpIndex node )
private

Definition at line 3502 of file instruction-selector-arm.cc.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ AddTerminator()

void v8::internal::compiler::InstructionSelectorT::AddTerminator ( Instruction * instr)

Definition at line 190 of file instruction-selector.cc.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ AppendDeoptimizeArguments()

void v8::internal::compiler::InstructionSelectorT::AppendDeoptimizeArguments ( InstructionOperandVector * args,
DeoptimizeReason reason,
uint32_t node_id,
FeedbackSource const & feedback,
turboshaft::OpIndex frame_state,
DeoptimizeKind kind = DeoptimizeKind::kEager )
private

Definition at line 1055 of file instruction-selector.cc.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ block_terminator()

turboshaft::OpIndex v8::internal::compiler::InstructionSelectorT::block_terminator ( const turboshaft::Block * block) const
inline

Definition at line 677 of file instruction-selector.h.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ CanAddressRelativeToRootsRegister()

bool v8::internal::compiler::InstructionSelectorT::CanAddressRelativeToRootsRegister ( const ExternalReference & reference) const

Definition at line 584 of file instruction-selector.cc.

Here is the call graph for this function:

◆ CanCover()

bool v8::internal::compiler::InstructionSelectorT::CanCover ( turboshaft::OpIndex user,
turboshaft::OpIndex node ) const

Definition at line 367 of file instruction-selector.cc.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ CanCoverProtectedLoad()

bool v8::internal::compiler::InstructionSelectorT::CanCoverProtectedLoad ( turboshaft::OpIndex user,
turboshaft::OpIndex node ) const

Definition at line 388 of file instruction-selector.cc.

Here is the call graph for this function:

◆ CanDoBranchIfOverflowFusion()

bool v8::internal::compiler::InstructionSelectorT::CanDoBranchIfOverflowFusion ( turboshaft::OpIndex node)

Definition at line 2008 of file instruction-selector.cc.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ CanProduceSignalingNaN()

bool v8::internal::compiler::InstructionSelectorT::CanProduceSignalingNaN ( Node * node)
private

Definition at line 3814 of file instruction-selector.cc.

◆ CanUseRootsRegister()

bool v8::internal::compiler::InstructionSelectorT::CanUseRootsRegister ( ) const

Definition at line 608 of file instruction-selector.cc.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ ConsumeEqualZero()

void v8::internal::compiler::InstructionSelectorT::ConsumeEqualZero ( turboshaft::OpIndex * user,
turboshaft::OpIndex * value,
FlagsContinuation * cont )
private

Definition at line 1545 of file instruction-selector.cc.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ Emit() [1/10]

Instruction * v8::internal::compiler::InstructionSelectorT::Emit ( Instruction * instr)

Definition at line 312 of file instruction-selector.cc.

Here is the call graph for this function:

◆ Emit() [2/10]

Instruction * v8::internal::compiler::InstructionSelectorT::Emit ( InstructionCode opcode,
InstructionOperand output,
InstructionOperand a,
InstructionOperand b,
InstructionOperand c,
InstructionOperand d,
InstructionOperand e,
InstructionOperand f,
InstructionOperand g,
InstructionOperand h,
size_t temp_count = 0,
InstructionOperand * temps = nullptr )

Definition at line 283 of file instruction-selector.cc.

Here is the call graph for this function:

◆ Emit() [3/10]

Instruction * v8::internal::compiler::InstructionSelectorT::Emit ( InstructionCode opcode,
InstructionOperand output,
InstructionOperand a,
InstructionOperand b,
InstructionOperand c,
InstructionOperand d,
InstructionOperand e,
InstructionOperand f,
size_t temp_count = 0,
InstructionOperand * temps = nullptr )

Definition at line 271 of file instruction-selector.cc.

Here is the call graph for this function:

◆ Emit() [4/10]

Instruction * v8::internal::compiler::InstructionSelectorT::Emit ( InstructionCode opcode,
InstructionOperand output,
InstructionOperand a,
InstructionOperand b,
InstructionOperand c,
InstructionOperand d,
InstructionOperand e,
size_t temp_count = 0,
InstructionOperand * temps = nullptr )

Definition at line 260 of file instruction-selector.cc.

Here is the call graph for this function:

◆ Emit() [5/10]

Instruction * v8::internal::compiler::InstructionSelectorT::Emit ( InstructionCode opcode,
InstructionOperand output,
InstructionOperand a,
InstructionOperand b,
InstructionOperand c,
InstructionOperand d,
size_t temp_count = 0,
InstructionOperand * temps = nullptr )

Definition at line 249 of file instruction-selector.cc.

Here is the call graph for this function:

◆ Emit() [6/10]

Instruction * v8::internal::compiler::InstructionSelectorT::Emit ( InstructionCode opcode,
InstructionOperand output,
InstructionOperand a,
InstructionOperand b,
InstructionOperand c,
size_t temp_count = 0,
InstructionOperand * temps = nullptr )

Definition at line 236 of file instruction-selector.cc.

Here is the call graph for this function:

◆ Emit() [7/10]

Instruction * v8::internal::compiler::InstructionSelectorT::Emit ( InstructionCode opcode,
InstructionOperand output,
InstructionOperand a,
InstructionOperand b,
size_t temp_count = 0,
InstructionOperand * temps = nullptr )

Definition at line 224 of file instruction-selector.cc.

Here is the call graph for this function:

◆ Emit() [8/10]

Instruction * v8::internal::compiler::InstructionSelectorT::Emit ( InstructionCode opcode,
InstructionOperand output,
InstructionOperand a,
size_t temp_count = 0,
InstructionOperand * temps = nullptr )

Definition at line 216 of file instruction-selector.cc.

Here is the call graph for this function:

◆ Emit() [9/10]

Instruction * v8::internal::compiler::InstructionSelectorT::Emit ( InstructionCode opcode,
InstructionOperand output,
size_t temp_count = 0,
InstructionOperand * temps = nullptr )

Definition at line 208 of file instruction-selector.cc.

Here is the call graph for this function:

◆ Emit() [10/10]

Instruction * v8::internal::compiler::InstructionSelectorT::Emit ( InstructionCode opcode,
size_t output_count,
InstructionOperand * outputs,
size_t input_count,
InstructionOperand * inputs,
size_t temp_count = 0,
InstructionOperand * temps = nullptr )

Definition at line 295 of file instruction-selector.cc.

Here is the call graph for this function:

◆ EmitBinarySearchSwitch()

void v8::internal::compiler::InstructionSelectorT::EmitBinarySearchSwitch ( const SwitchInfo & sw,
InstructionOperand const & value_operand )
private

Definition at line 1712 of file instruction-selector.cc.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ EmitIdentity()

void v8::internal::compiler::InstructionSelectorT::EmitIdentity ( turboshaft::OpIndex node)

Definition at line 2502 of file instruction-selector.cc.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ EmitMoveFPRToParam()

void v8::internal::compiler::InstructionSelectorT::EmitMoveFPRToParam ( InstructionOperand * op,
LinkageLocation location )
private

Definition at line 1835 of file instruction-selector-arm.cc.

Here is the caller graph for this function:

◆ EmitMoveParamToFPR()

void v8::internal::compiler::InstructionSelectorT::EmitMoveParamToFPR ( turboshaft::OpIndex node,
int index )
private

Definition at line 1833 of file instruction-selector-arm.cc.

Here is the caller graph for this function:

◆ EmitPrepareArguments()

void v8::internal::compiler::InstructionSelectorT::EmitPrepareArguments ( ZoneVector< PushParameter > * arguments,
const CallDescriptor * call_descriptor,
turboshaft::OpIndex node )
private

Definition at line 1838 of file instruction-selector-arm.cc.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ EmitPrepareResults()

void v8::internal::compiler::InstructionSelectorT::EmitPrepareResults ( ZoneVector< PushParameter > * results,
const CallDescriptor * call_descriptor,
turboshaft::OpIndex node )
private

Definition at line 1872 of file instruction-selector-arm.cc.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ EmitTableSwitch()

void v8::internal::compiler::InstructionSelectorT::EmitTableSwitch ( const SwitchInfo & sw,
InstructionOperand const & index_operand )
private

Definition at line 1693 of file instruction-selector.cc.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ EmitWithContinuation() [1/6]

Instruction * v8::internal::compiler::InstructionSelectorT::EmitWithContinuation ( InstructionCode opcode,
FlagsContinuation * cont )
Here is the caller graph for this function:

◆ EmitWithContinuation() [2/6]

Instruction * v8::internal::compiler::InstructionSelectorT::EmitWithContinuation ( InstructionCode opcode,
InstructionOperand a,
FlagsContinuation * cont )

Definition at line 965 of file instruction-selector.cc.

Here is the call graph for this function:

◆ EmitWithContinuation() [3/6]

Instruction * v8::internal::compiler::InstructionSelectorT::EmitWithContinuation ( InstructionCode opcode,
InstructionOperand a,
InstructionOperand b,
FlagsContinuation * cont )

Definition at line 970 of file instruction-selector.cc.

Here is the call graph for this function:

◆ EmitWithContinuation() [4/6]

Instruction * v8::internal::compiler::InstructionSelectorT::EmitWithContinuation ( InstructionCode opcode,
InstructionOperand a,
InstructionOperand b,
InstructionOperand c,
FlagsContinuation * cont )

Definition at line 978 of file instruction-selector.cc.

Here is the call graph for this function:

◆ EmitWithContinuation() [5/6]

Instruction * v8::internal::compiler::InstructionSelectorT::EmitWithContinuation ( InstructionCode opcode,
size_t output_count,
InstructionOperand * outputs,
size_t input_count,
InstructionOperand * inputs,
FlagsContinuation * cont )

Definition at line 986 of file instruction-selector.cc.

Here is the call graph for this function:

◆ EmitWithContinuation() [6/6]

Instruction * v8::internal::compiler::InstructionSelectorT::EmitWithContinuation ( InstructionCode opcode,
size_t output_count,
InstructionOperand * outputs,
size_t input_count,
InstructionOperand * inputs,
size_t temp_count,
InstructionOperand * temps,
FlagsContinuation * cont )

Definition at line 993 of file instruction-selector.cc.

Here is the call graph for this function:

◆ EndBlock()

void v8::internal::compiler::InstructionSelectorT::EndBlock ( RpoNumber rpo)

Definition at line 181 of file instruction-selector.cc.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ FindProjection()

OptionalOpIndex v8::internal::compiler::InstructionSelectorT::FindProjection ( turboshaft::OpIndex node,
size_t projection_index )

Definition at line 419 of file instruction-selector.cc.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ GetComparisonFlagCondition()

FlagsCondition v8::internal::compiler::InstructionSelectorT::GetComparisonFlagCondition ( const turboshaft::ComparisonOp & op) const
private

Definition at line 1518 of file instruction-selector.cc.

Here is the caller graph for this function:

◆ GetEffectLevel() [1/2]

int v8::internal::compiler::InstructionSelectorT::GetEffectLevel ( turboshaft::OpIndex node) const

Definition at line 563 of file instruction-selector.cc.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ GetEffectLevel() [2/2]

int v8::internal::compiler::InstructionSelectorT::GetEffectLevel ( turboshaft::OpIndex node,
FlagsContinuation * cont ) const

Definition at line 570 of file instruction-selector.cc.

Here is the call graph for this function:

◆ GetFrameStateDescriptor()

FrameStateDescriptor * v8::internal::compiler::InstructionSelectorT::GetFrameStateDescriptor ( turboshaft::OpIndex node)
private

Definition at line 3937 of file instruction-selector.cc.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ GetRename()

int v8::internal::compiler::InstructionSelectorT::GetRename ( int virtual_register)
private

Definition at line 475 of file instruction-selector.cc.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ GetVirtualRegister()

int v8::internal::compiler::InstructionSelectorT::GetVirtualRegister ( turboshaft::OpIndex node)

Definition at line 507 of file instruction-selector.cc.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ GetVirtualRegistersForTesting()

const std::map< uint32_t, int > v8::internal::compiler::InstructionSelectorT::GetVirtualRegistersForTesting ( ) const

Definition at line 520 of file instruction-selector.cc.

Here is the call graph for this function:

◆ InitializeCallBuffer()

void v8::internal::compiler::InstructionSelectorT::InitializeCallBuffer ( turboshaft::OpIndex call,
CallBuffer * buffer,
CallBufferFlags flags,
turboshaft::OpIndex callee,
turboshaft::OptionalOpIndex frame_state_opt,
base::Vector< const turboshaft::OpIndex > arguments,
int return_count,
int stack_slot_delta = 0 )
private

Definition at line 1108 of file instruction-selector.cc.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ Inputs()

template<typename Op >
auto v8::internal::compiler::InstructionSelectorT::Inputs ( turboshaft::OpIndex node)
inline

Definition at line 643 of file instruction-selector.h.

Here is the call graph for this function:

◆ InputsImpl()

template<typename Op , std::size_t... Is>
auto v8::internal::compiler::InstructionSelectorT::InputsImpl ( const Op & op,
std::index_sequence< Is... >  )
inline

Definition at line 648 of file instruction-selector.h.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ instr_origins()

const ZoneVector< std::pair< int, int > > & v8::internal::compiler::InstructionSelectorT::instr_origins ( ) const
inline

Definition at line 636 of file instruction-selector.h.

◆ instruction_selection_failed()

bool v8::internal::compiler::InstructionSelectorT::instruction_selection_failed ( )
inlineprivate

Definition at line 1186 of file instruction-selector.h.

Here is the caller graph for this function:

◆ instruction_zone()

Zone * v8::internal::compiler::InstructionSelectorT::instruction_zone ( ) const
inlineprivate

Definition at line 1180 of file instruction-selector.h.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ IsCommutative()

bool v8::internal::compiler::InstructionSelectorT::IsCommutative ( turboshaft::OpIndex node) const

Definition at line 1381 of file instruction-selector.cc.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ IsDefined()

bool v8::internal::compiler::InstructionSelectorT::IsDefined ( turboshaft::OpIndex node) const

Definition at line 531 of file instruction-selector.cc.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ IsLive()

bool v8::internal::compiler::InstructionSelectorT::IsLive ( turboshaft::OpIndex node) const
inline

Definition at line 608 of file instruction-selector.h.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ isolate()

Isolate * v8::internal::compiler::InstructionSelectorT::isolate ( ) const
inline

Definition at line 634 of file instruction-selector.h.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ IsOnlyUserOfNodeInSameBlock()

bool v8::internal::compiler::InstructionSelectorT::IsOnlyUserOfNodeInSameBlock ( turboshaft::OpIndex user,
turboshaft::OpIndex node ) const

Definition at line 404 of file instruction-selector.cc.

Here is the call graph for this function:

◆ IsReallyLive()

bool v8::internal::compiler::InstructionSelectorT::IsReallyLive ( turboshaft::OpIndex node) const
inline

Definition at line 613 of file instruction-selector.h.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ IsReallyUsed()

bool v8::internal::compiler::InstructionSelectorT::IsReallyUsed ( turboshaft::OpIndex node) const

Definition at line 550 of file instruction-selector.cc.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ IsSourcePositionUsed()

bool v8::internal::compiler::InstructionSelectorT::IsSourcePositionUsed ( turboshaft::OpIndex node)
private

Definition at line 1335 of file instruction-selector.cc.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ IsSupported()

bool v8::internal::compiler::InstructionSelectorT::IsSupported ( CpuFeature feature) const
inline

Definition at line 544 of file instruction-selector.h.

Here is the call graph for this function:

◆ IsTailCallAddressImmediate()

bool v8::internal::compiler::InstructionSelectorT::IsTailCallAddressImmediate ( )
private

Definition at line 1897 of file instruction-selector-arm.cc.

Here is the caller graph for this function:

◆ IsUsed()

bool v8::internal::compiler::InstructionSelectorT::IsUsed ( turboshaft::OpIndex node) const

Definition at line 541 of file instruction-selector.cc.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ linkage()

Linkage * v8::internal::compiler::InstructionSelectorT::linkage ( ) const
inlineprivate

Definition at line 1173 of file instruction-selector.h.

Here is the caller graph for this function:

◆ MarkAsCompressed()

void v8::internal::compiler::InstructionSelectorT::MarkAsCompressed ( turboshaft::OpIndex node)
inlineprivate

Definition at line 745 of file instruction-selector.h.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ MarkAsDefined()

void v8::internal::compiler::InstructionSelectorT::MarkAsDefined ( turboshaft::OpIndex node)
private

Definition at line 536 of file instruction-selector.cc.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ MarkAsFloat32()

void v8::internal::compiler::InstructionSelectorT::MarkAsFloat32 ( turboshaft::OpIndex node)
inlineprivate

Definition at line 730 of file instruction-selector.h.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ MarkAsFloat64()

void v8::internal::compiler::InstructionSelectorT::MarkAsFloat64 ( turboshaft::OpIndex node)
inlineprivate

Definition at line 733 of file instruction-selector.h.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ MarkAsProtected()

void v8::internal::compiler::InstructionSelectorT::MarkAsProtected ( turboshaft::OpIndex node)
inline

Definition at line 671 of file instruction-selector.h.

◆ MarkAsRepresentation() [1/3]

void v8::internal::compiler::InstructionSelectorT::MarkAsRepresentation ( MachineRepresentation rep,
const InstructionOperand & op )
private

Definition at line 613 of file instruction-selector.cc.

Here is the call graph for this function:

◆ MarkAsRepresentation() [2/3]

void v8::internal::compiler::InstructionSelectorT::MarkAsRepresentation ( MachineRepresentation rep,
turboshaft::OpIndex node )
private

Definition at line 619 of file instruction-selector.cc.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ MarkAsRepresentation() [3/3]

void v8::internal::compiler::InstructionSelectorT::MarkAsRepresentation ( turboshaft::RegisterRepresentation rep,
turboshaft::OpIndex node )
inlineprivate

Definition at line 720 of file instruction-selector.h.

Here is the call graph for this function:

◆ MarkAsSimd128()

void v8::internal::compiler::InstructionSelectorT::MarkAsSimd128 ( turboshaft::OpIndex node)
inlineprivate

Definition at line 736 of file instruction-selector.h.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ MarkAsSimd256()

void v8::internal::compiler::InstructionSelectorT::MarkAsSimd256 ( turboshaft::OpIndex node)
inlineprivate

Definition at line 739 of file instruction-selector.h.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ MarkAsTagged()

void v8::internal::compiler::InstructionSelectorT::MarkAsTagged ( turboshaft::OpIndex node)
inlineprivate

Definition at line 742 of file instruction-selector.h.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ MarkAsUsed()

void v8::internal::compiler::InstructionSelectorT::MarkAsUsed ( turboshaft::OpIndex node)
private

Definition at line 558 of file instruction-selector.cc.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ MarkAsWord32()

void v8::internal::compiler::InstructionSelectorT::MarkAsWord32 ( turboshaft::OpIndex node)
inlineprivate

Definition at line 724 of file instruction-selector.h.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ MarkAsWord64()

void v8::internal::compiler::InstructionSelectorT::MarkAsWord64 ( turboshaft::OpIndex node)
inlineprivate

Definition at line 727 of file instruction-selector.h.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ MarkPairProjectionsAsWord32()

void v8::internal::compiler::InstructionSelectorT::MarkPairProjectionsAsWord32 ( turboshaft::OpIndex node)
private

Definition at line 1534 of file instruction-selector.cc.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ schedule()

turboshaft::Graph * v8::internal::compiler::InstructionSelectorT::schedule ( ) const
inlineprivate

Definition at line 1172 of file instruction-selector.h.

Here is the caller graph for this function:

◆ SelectInstructions()

std::optional< BailoutReason > v8::internal::compiler::InstructionSelectorT::SelectInstructions ( )

Definition at line 117 of file instruction-selector.cc.

Here is the call graph for this function:

◆ sequence()

InstructionSequence * v8::internal::compiler::InstructionSelectorT::sequence ( ) const
inlineprivate

Definition at line 1174 of file instruction-selector.h.

Here is the caller graph for this function:

◆ set_instruction_selection_failed()

void v8::internal::compiler::InstructionSelectorT::set_instruction_selection_failed ( )
inlineprivate

Definition at line 1183 of file instruction-selector.h.

Here is the caller graph for this function:

◆ SetEffectLevel()

void v8::internal::compiler::InstructionSelectorT::SetEffectLevel ( turboshaft::OpIndex node,
int effect_level )
private

Definition at line 577 of file instruction-selector.cc.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ SetProtectedLoadToRemove()

void v8::internal::compiler::InstructionSelectorT::SetProtectedLoadToRemove ( turboshaft::OpIndex node)
inline

Definition at line 663 of file instruction-selector.h.

Here is the call graph for this function:

◆ SetRename()

void v8::internal::compiler::InstructionSelectorT::SetRename ( turboshaft::OpIndex node,
turboshaft::OpIndex rename )
private

Definition at line 498 of file instruction-selector.cc.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ StartBlock()

void v8::internal::compiler::InstructionSelectorT::StartBlock ( RpoNumber rpo)

Definition at line 172 of file instruction-selector.cc.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ SupportedFeatures()

static Features v8::internal::compiler::InstructionSelectorT::SupportedFeatures ( )
inlinestatic

Definition at line 549 of file instruction-selector.h.

Here is the call graph for this function:

◆ TryPrepareScheduleFirstProjection()

void v8::internal::compiler::InstructionSelectorT::TryPrepareScheduleFirstProjection ( turboshaft::OpIndex maybe_projection)
private

Definition at line 2398 of file instruction-selector.cc.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ TryRename()

void v8::internal::compiler::InstructionSelectorT::TryRename ( InstructionOperand * op)
private

Definition at line 488 of file instruction-selector.cc.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ turboshaft_uses()

base::Vector< const turboshaft::OpIndex > v8::internal::compiler::InstructionSelectorT::turboshaft_uses ( turboshaft::OpIndex node) const
inlineprivate

Definition at line 1175 of file instruction-selector.h.

Here is the caller graph for this function:

◆ UpdateMaxPushedArgumentCount()

void v8::internal::compiler::InstructionSelectorT::UpdateMaxPushedArgumentCount ( size_t count)
private

Definition at line 2104 of file instruction-selector.cc.

Here is the caller graph for this function:

◆ UpdateRenames()

void v8::internal::compiler::InstructionSelectorT::UpdateRenames ( Instruction * instruction)
private

Definition at line 459 of file instruction-selector.cc.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ UpdateRenamesInPhi()

void v8::internal::compiler::InstructionSelectorT::UpdateRenamesInPhi ( PhiInstruction * phi)
private

Definition at line 465 of file instruction-selector.cc.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ UpdateSourcePosition()

void v8::internal::compiler::InstructionSelectorT::UpdateSourcePosition ( Instruction * instruction,
turboshaft::OpIndex node )

Definition at line 1330 of file instruction-selector.cc.

Here is the call graph for this function:

◆ UseInstructionScheduling()

bool v8::internal::compiler::InstructionSelectorT::UseInstructionScheduling ( ) const
inlineprivate

Definition at line 684 of file instruction-selector.h.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ VisitBitcastWord32PairToFloat64()

void v8::internal::compiler::InstructionSelectorT::VisitBitcastWord32PairToFloat64 ( turboshaft::OpIndex node)
private

Definition at line 2375 of file instruction-selector-arm.cc.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ VisitBlock()

void v8::internal::compiler::InstructionSelectorT::VisitBlock ( const turboshaft::Block * block)
private

Definition at line 1415 of file instruction-selector.cc.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ VisitBranch()

void v8::internal::compiler::InstructionSelectorT::VisitBranch ( turboshaft::OpIndex input,
turboshaft::Block * tbranch,
turboshaft::Block * fbranch )
private

Definition at line 2366 of file instruction-selector.cc.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ VisitCall()

void v8::internal::compiler::InstructionSelectorT::VisitCall ( turboshaft::OpIndex call,
turboshaft::Block * handler = {} )
private

Definition at line 2108 of file instruction-selector.cc.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ VisitConstant()

void v8::internal::compiler::InstructionSelectorT::VisitConstant ( turboshaft::OpIndex node)
private

Definition at line 2097 of file instruction-selector.cc.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ VisitControl()

void v8::internal::compiler::InstructionSelectorT::VisitControl ( const turboshaft::Block * block)
private

Definition at line 2565 of file instruction-selector.cc.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ VisitDeadValue()

void v8::internal::compiler::InstructionSelectorT::VisitDeadValue ( Node * node)
private

◆ VisitDeoptimize()

void v8::internal::compiler::InstructionSelectorT::VisitDeoptimize ( DeoptimizeReason reason,
uint32_t node_id,
FeedbackSource const & feedback,
turboshaft::OpIndex frame_state )
private

Definition at line 2509 of file instruction-selector.cc.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ VisitDeoptimizeIf()

void v8::internal::compiler::InstructionSelectorT::VisitDeoptimizeIf ( turboshaft::OpIndex node)
private

Definition at line 2468 of file instruction-selector.cc.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ VisitDynamicCheckMapsWithDeoptUnless()

void v8::internal::compiler::InstructionSelectorT::VisitDynamicCheckMapsWithDeoptUnless ( Node * node)
private

◆ VisitFinishRegion()

void v8::internal::compiler::InstructionSelectorT::VisitFinishRegion ( Node * node)
private

◆ VisitFloat64Ieee754Binop()

void v8::internal::compiler::InstructionSelectorT::VisitFloat64Ieee754Binop ( turboshaft::OpIndex node,
InstructionCode code )
private

Definition at line 1816 of file instruction-selector-arm.cc.

Here is the call graph for this function:

◆ VisitFloat64Ieee754Unop()

void v8::internal::compiler::InstructionSelectorT::VisitFloat64Ieee754Unop ( turboshaft::OpIndex node,
InstructionCode code )
private

Definition at line 1825 of file instruction-selector-arm.cc.

Here is the call graph for this function:

◆ VisitGoto()

void v8::internal::compiler::InstructionSelectorT::VisitGoto ( turboshaft::Block * target)
private

Definition at line 2327 of file instruction-selector.cc.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ VisitI8x16RelaxedSwizzle()

void v8::internal::compiler::InstructionSelectorT::VisitI8x16RelaxedSwizzle ( turboshaft::OpIndex node)
private

◆ VisitIfException()

void v8::internal::compiler::InstructionSelectorT::VisitIfException ( turboshaft::OpIndex node)
private

Definition at line 1954 of file instruction-selector.cc.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ VisitLoad()

void v8::internal::compiler::InstructionSelectorT::VisitLoad ( turboshaft::OpIndex node,
turboshaft::OpIndex value,
InstructionCode opcode )
private

Definition at line 647 of file instruction-selector-arm.cc.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ VisitLoadTransform()

void v8::internal::compiler::InstructionSelectorT::VisitLoadTransform ( Node * node,
Node * value,
InstructionCode opcode )
private

Definition at line 428 of file instruction-selector-loong64.cc.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ VisitNode()

void v8::internal::compiler::InstructionSelectorT::VisitNode ( turboshaft::OpIndex node)
private

Definition at line 2653 of file instruction-selector.cc.

Here is the caller graph for this function:

◆ VisitOsrValue()

void v8::internal::compiler::InstructionSelectorT::VisitOsrValue ( turboshaft::OpIndex node)
private

Definition at line 1959 of file instruction-selector.cc.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ VisitParameter()

void v8::internal::compiler::InstructionSelectorT::VisitParameter ( turboshaft::OpIndex node)
private

Definition at line 1918 of file instruction-selector.cc.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ VisitPhi()

void v8::internal::compiler::InstructionSelectorT::VisitPhi ( turboshaft::OpIndex node)
private

Definition at line 1966 of file instruction-selector.cc.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ VisitProjection()

void v8::internal::compiler::InstructionSelectorT::VisitProjection ( turboshaft::OpIndex node)
private

Definition at line 1980 of file instruction-selector.cc.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ VisitRetain()

void v8::internal::compiler::InstructionSelectorT::VisitRetain ( turboshaft::OpIndex node)
private

Definition at line 2558 of file instruction-selector.cc.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ VisitReturn()

void v8::internal::compiler::InstructionSelectorT::VisitReturn ( turboshaft::OpIndex node)
private

Definition at line 2333 of file instruction-selector.cc.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ VisitSelect()

void v8::internal::compiler::InstructionSelectorT::VisitSelect ( turboshaft::OpIndex node)
private

Definition at line 2479 of file instruction-selector.cc.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ VisitStackPointerGreaterThan()

void v8::internal::compiler::InstructionSelectorT::VisitStackPointerGreaterThan ( turboshaft::OpIndex node,
FlagsContinuation * cont )
private

Definition at line 1185 of file instruction-selector-arm.cc.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ VisitStaticAssert()

void v8::internal::compiler::InstructionSelectorT::VisitStaticAssert ( turboshaft::OpIndex node)
private

Definition at line 2533 of file instruction-selector.cc.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ VisitSwitch()

void v8::internal::compiler::InstructionSelectorT::VisitSwitch ( turboshaft::OpIndex node,
const SwitchInfo & sw )
private

Definition at line 2238 of file instruction-selector-arm.cc.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ VisitTailCall()

void v8::internal::compiler::InstructionSelectorT::VisitTailCall ( turboshaft::OpIndex call)
private

Definition at line 2244 of file instruction-selector.cc.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ VisitThrow()

void v8::internal::compiler::InstructionSelectorT::VisitThrow ( Node * node)
private

Definition at line 2518 of file instruction-selector.cc.

Here is the call graph for this function:

◆ VisitTrapIf()

void v8::internal::compiler::InstructionSelectorT::VisitTrapIf ( turboshaft::OpIndex node)
private

Definition at line 2487 of file instruction-selector.cc.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ VisitUnreachable()

void v8::internal::compiler::InstructionSelectorT::VisitUnreachable ( turboshaft::OpIndex node)
private

Definition at line 2528 of file instruction-selector.cc.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ VisitWord32AtomicBinaryOperation()

void v8::internal::compiler::InstructionSelectorT::VisitWord32AtomicBinaryOperation ( turboshaft::OpIndex node,
ArchOpcode int8_op,
ArchOpcode uint8_op,
ArchOpcode int16_op,
ArchOpcode uint16_op,
ArchOpcode word32_op )
private

Definition at line 2500 of file instruction-selector-arm.cc.

Here is the call graph for this function:

◆ VisitWord64AtomicBinaryOperation()

void v8::internal::compiler::InstructionSelectorT::VisitWord64AtomicBinaryOperation ( turboshaft::OpIndex node,
ArchOpcode uint8_op,
ArchOpcode uint16_op,
ArchOpcode uint32_op,
ArchOpcode uint64_op )
private

Definition at line 4534 of file instruction-selector-arm64.cc.

Here is the call graph for this function:

◆ VisitWord64AtomicNarrowBinop()

void v8::internal::compiler::InstructionSelectorT::VisitWord64AtomicNarrowBinop ( Node * node,
ArchOpcode uint8_op,
ArchOpcode uint16_op,
ArchOpcode uint32_op )
private

◆ VisitWordCompareZero()

void v8::internal::compiler::InstructionSelectorT::VisitWordCompareZero ( turboshaft::OpIndex user,
turboshaft::OpIndex value,
FlagsContinuation * cont )
private

Definition at line 2125 of file instruction-selector-arm.cc.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ zone()

Zone * v8::internal::compiler::InstructionSelectorT::zone ( ) const
inlineprivate

Definition at line 1181 of file instruction-selector.h.

Here is the caller graph for this function:

Member Data Documentation

◆ additional_protected_instructions_

std::optional<BitVector> v8::internal::compiler::InstructionSelectorT::additional_protected_instructions_
private

Definition at line 1291 of file instruction-selector.h.

◆ broker_

JSHeapBroker* const v8::internal::compiler::InstructionSelectorT::broker_
private

Definition at line 1281 of file instruction-selector.h.

◆ continuation_inputs_

InstructionOperandVector v8::internal::compiler::InstructionSelectorT::continuation_inputs_
private

Definition at line 1255 of file instruction-selector.h.

◆ continuation_outputs_

InstructionOperandVector v8::internal::compiler::InstructionSelectorT::continuation_outputs_
private

Definition at line 1256 of file instruction-selector.h.

◆ continuation_temps_

InstructionOperandVector v8::internal::compiler::InstructionSelectorT::continuation_temps_
private

Definition at line 1257 of file instruction-selector.h.

◆ current_block_

const turboshaft::Block* v8::internal::compiler::InstructionSelectorT::current_block_
private

Definition at line 1253 of file instruction-selector.h.

◆ current_effect_level_

int v8::internal::compiler::InstructionSelectorT::current_effect_level_
private

Definition at line 1261 of file instruction-selector.h.

◆ defined_

BitVector v8::internal::compiler::InstructionSelectorT::defined_
private

Definition at line 1258 of file instruction-selector.h.

◆ effect_level_

IntVector v8::internal::compiler::InstructionSelectorT::effect_level_
private

Definition at line 1260 of file instruction-selector.h.

◆ enable_roots_relative_addressing_

InstructionSelector::EnableRootsRelativeAddressing v8::internal::compiler::InstructionSelectorT::enable_roots_relative_addressing_
private

Definition at line 1267 of file instruction-selector.h.

◆ enable_scheduling_

InstructionSelector::EnableScheduling v8::internal::compiler::InstructionSelectorT::enable_scheduling_
private

Definition at line 1265 of file instruction-selector.h.

◆ enable_switch_jump_table_

InstructionSelector::EnableSwitchJumpTable v8::internal::compiler::InstructionSelectorT::enable_switch_jump_table_
private

Definition at line 1268 of file instruction-selector.h.

◆ features_

Features v8::internal::compiler::InstructionSelectorT::features_
private

Definition at line 1251 of file instruction-selector.h.

◆ frame_

Frame* v8::internal::compiler::InstructionSelectorT::frame_
private

Definition at line 1274 of file instruction-selector.h.

◆ instr_origins_

ZoneVector<std::pair<int, int> > v8::internal::compiler::InstructionSelectorT::instr_origins_
private

Definition at line 1276 of file instruction-selector.h.

◆ instruction_selection_failed_

bool v8::internal::compiler::InstructionSelectorT::instruction_selection_failed_
private

Definition at line 1275 of file instruction-selector.h.

◆ instructions_

ZoneVector<Instruction*> v8::internal::compiler::InstructionSelectorT::instructions_
private

Definition at line 1254 of file instruction-selector.h.

◆ linkage_

Linkage* const v8::internal::compiler::InstructionSelectorT::linkage_
private

Definition at line 1247 of file instruction-selector.h.

◆ max_pushed_argument_count_

size_t* v8::internal::compiler::InstructionSelectorT::max_pushed_argument_count_
private

Definition at line 1286 of file instruction-selector.h.

◆ max_unoptimized_frame_height_

size_t* v8::internal::compiler::InstructionSelectorT::max_unoptimized_frame_height_
private

Definition at line 1285 of file instruction-selector.h.

◆ OperandGenerator

◆ protected_loads_to_remove_

std::optional<BitVector> v8::internal::compiler::InstructionSelectorT::protected_loads_to_remove_
private

Definition at line 1290 of file instruction-selector.h.

◆ schedule_

turboshaft::Graph* const v8::internal::compiler::InstructionSelectorT::schedule_
private

Definition at line 1252 of file instruction-selector.h.

◆ scheduler_

InstructionScheduler* v8::internal::compiler::InstructionSelectorT::scheduler_
private

Definition at line 1264 of file instruction-selector.h.

◆ sequence_

InstructionSequence* const v8::internal::compiler::InstructionSelectorT::sequence_
private

Definition at line 1248 of file instruction-selector.h.

◆ source_position_mode_

InstructionSelector::SourcePositionMode const v8::internal::compiler::InstructionSelectorT::source_position_mode_
private

Definition at line 1250 of file instruction-selector.h.

◆ source_positions_

source_position_table_t* const v8::internal::compiler::InstructionSelectorT::source_positions_
private

Definition at line 1249 of file instruction-selector.h.

◆ state_values_cache_

ZoneUnorderedMap<FrameStateInput, CachedStateValues*, typename FrameStateInput::Hash, typename FrameStateInput::Equal> v8::internal::compiler::InstructionSelectorT::state_values_cache_
private

Definition at line 1272 of file instruction-selector.h.

◆ tick_counter_

TickCounter* const v8::internal::compiler::InstructionSelectorT::tick_counter_
private

Definition at line 1278 of file instruction-selector.h.

◆ trace_turbo_

InstructionSelector::EnableTraceTurboJson v8::internal::compiler::InstructionSelectorT::trace_turbo_
private

Definition at line 1277 of file instruction-selector.h.

◆ turboshaft_use_map_

std::optional<turboshaft::UseMap> v8::internal::compiler::InstructionSelectorT::turboshaft_use_map_
private

Definition at line 1289 of file instruction-selector.h.

◆ used_

BitVector v8::internal::compiler::InstructionSelectorT::used_
private

Definition at line 1259 of file instruction-selector.h.

◆ virtual_register_rename_

IntVector v8::internal::compiler::InstructionSelectorT::virtual_register_rename_
private

Definition at line 1263 of file instruction-selector.h.

◆ virtual_registers_

IntVector v8::internal::compiler::InstructionSelectorT::virtual_registers_
private

Definition at line 1262 of file instruction-selector.h.

◆ zone_

Zone* const v8::internal::compiler::InstructionSelectorT::zone_
private

Definition at line 1246 of file instruction-selector.h.


The documentation for this class was generated from the following files: