V8 API Reference, 7.2.502.16 (for Deno 0.2.4)
v8::internal::compiler::InstructionSelector Class Referencefinal

Classes

class  Features
 

Public Types

enum  SourcePositionMode { kCallSourcePositions, kAllSourcePositions }
 
enum  EnableScheduling { kDisableScheduling, kEnableScheduling }
 
enum  EnableRootsRelativeAddressing { kDisableRootsRelativeAddressing, kEnableRootsRelativeAddressing }
 
enum  EnableSwitchJumpTable { kDisableSwitchJumpTable, kEnableSwitchJumpTable }
 
enum  EnableTraceTurboJson { kDisableTraceTurboJson, kEnableTraceTurboJson }
 

Public Member Functions

 InstructionSelector (Zone *zone, size_t node_count, Linkage *linkage, InstructionSequence *sequence, Schedule *schedule, SourcePositionTable *source_positions, Frame *frame, EnableSwitchJumpTable enable_switch_jump_table, SourcePositionMode source_position_mode=kCallSourcePositions, Features features=SupportedFeatures(), EnableScheduling enable_scheduling=FLAG_turbo_instruction_scheduling ? kEnableScheduling :kDisableScheduling, EnableRootsRelativeAddressing enable_roots_relative_addressing=kDisableRootsRelativeAddressing, PoisoningMitigationLevel poisoning_level=PoisoningMitigationLevel::kDontPoison, EnableTraceTurboJson trace_turbo=kDisableTraceTurboJson)
 
bool SelectInstructions ()
 
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, 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)
 
InstructionEmitDeoptimize (InstructionCode opcode, size_t output_count, InstructionOperand *outputs, size_t input_count, InstructionOperand *inputs, DeoptimizeKind kind, DeoptimizeReason reason, VectorSlotPair const &feedback, Node *frame_state)
 
bool IsSupported (CpuFeature feature) const
 
bool NeedsPoisoning (IsSafetyCheck safety_check) const
 
bool CanCover (Node *user, Node *node) const
 
bool CanCoverTransitively (Node *user, Node *node, Node *node_input) const
 
bool IsOnlyUserOfNodeInSameBlock (Node *user, Node *node) const
 
bool IsDefined (Node *node) const
 
bool IsUsed (Node *node) const
 
bool IsLive (Node *node) const
 
int GetEffectLevel (Node *node) const
 
int GetVirtualRegister (const Node *node)
 
const std::map< NodeId, intGetVirtualRegistersForTesting () const
 
bool CanAddressRelativeToRootsRegister () const
 
bool CanUseRootsRegister () const
 
Isolateisolate () const
 
const ZoneVector< std::pair< int, int > > & instr_origins () const
 

Static Public Member Functions

static Features SupportedFeatures ()
 
static MachineOperatorBuilder::Flags SupportedMachineOperatorFlags ()
 
static MachineOperatorBuilder::AlignmentRequirements AlignmentRequirements ()
 
static void CanonicalizeShuffleForTesting (bool inputs_equal, uint8_t *shuffle, bool *needs_swap, bool *is_swizzle)
 
static bool TryMatchIdentityForTesting (const uint8_t *shuffle)
 
template<int LANES>
static bool TryMatchDupForTesting (const uint8_t *shuffle, int *index)
 
static bool TryMatch32x4ShuffleForTesting (const uint8_t *shuffle, uint8_t *shuffle32x4)
 
static bool TryMatch16x8ShuffleForTesting (const uint8_t *shuffle, uint8_t *shuffle16x8)
 
static bool TryMatchConcatForTesting (const uint8_t *shuffle, uint8_t *offset)
 
static bool TryMatchBlendForTesting (const uint8_t *shuffle)
 

Friends

class OperandGenerator
 

Detailed Description

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


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