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

#include <code-generator.h>

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

Classes

struct  HandlerInfo
 
class  JumpTable
 
class  MoveType
 

Public Member Functions

 CodeGenerator (Zone *codegen_zone, Frame *frame, Linkage *linkage, InstructionSequence *instructions, OptimizedCompilationInfo *info, Isolate *isolate, std::optional< OsrHelper > osr_helper, int start_source_position, JumpOptimizationInfo *jump_opt, const AssemblerOptions &options, Builtin builtin, size_t max_unoptimized_frame_height, size_t max_pushed_argument_count, const char *debug_name=nullptr)
 
void AssembleCode ()
 
MaybeHandle< CodeFinalizeCode ()
 
base::OwnedVector< uint8_t > GetSourcePositionTable ()
 
base::OwnedVector< uint8_t > GetProtectedInstructionsData ()
 
InstructionSequenceinstructions () const
 
FrameAccessStateframe_access_state () const
 
const Frameframe () const
 
Isolateisolate () const
 
Linkagelinkage () const
 
LabelGetLabel (RpoNumber rpo)
 
void RecordProtectedInstruction (uint32_t instr_offset)
 
SourcePosition start_source_position () const
 
void AssembleSourcePosition (Instruction *instr)
 
void AssembleSourcePosition (SourcePosition source_position)
 
void RecordSafepoint (ReferenceMap *references, int pc_offset=0)
 
Zonezone () const
 
MacroAssemblermasm ()
 
SafepointTableBuildersafepoint_table_builder ()
 
size_t handler_table_offset () const
 
const ZoneVector< int > & block_starts () const
 
const ZoneVector< TurbolizerInstructionStartInfo > & instr_starts () const
 
const TurbolizerCodeOffsetsInfooffsets_info () const
 
bool ShouldApplyOffsetToStackCheck (Instruction *instr, uint32_t *offset)
 
uint32_t GetStackCheckOffset ()
 
CodeKind code_kind () const
 
- Public Member Functions inherited from v8::internal::compiler::GapResolver::Assembler
virtual ~Assembler ()=default
 

Static Public Attributes

static constexpr int kBinarySearchSwitchMinimalCases = 4
 

Private Types

enum  CodeGenResult { kSuccess , kTooManyDeoptimizationBailouts }
 
enum  PushTypeFlag { kImmediatePush = 0x1 , kRegisterPush = 0x2 , kStackSlotPush = 0x4 , kScalarPush = kRegisterPush | kStackSlotPush }
 
using PushTypeFlags = base::Flags<PushTypeFlag>
 

Private Member Functions

GapResolverresolver ()
 
SafepointTableBuildersafepoints ()
 
OptimizedCompilationInfoinfo () const
 
OsrHelperosr_helper ()
 
void CreateFrameAccessState (Frame *frame)
 
void FinishFrame (Frame *frame)
 
bool IsNextInAssemblyOrder (RpoNumber block) const
 
bool IsMaterializableFromRoot (Handle< HeapObject > object, RootIndex *index_return)
 
CodeGenResult AssembleBlock (const InstructionBlock *block)
 
CodeGenResult AssembleInstruction (int instruction_index, const InstructionBlock *block)
 
void AssembleGaps (Instruction *instr)
 
RpoNumber ComputeBranchInfo (BranchInfo *branch, FlagsCondition condition, Instruction *instr)
 
bool GetSlotAboveSPBeforeTailCall (Instruction *instr, int *slot)
 
StubCallMode DetermineStubCallMode () const
 
CodeGenResult AssembleDeoptimizerCall (DeoptimizationExit *exit)
 
DeoptimizationExitBuildTranslation (Instruction *instr, int pc_offset, size_t frame_state_offset, size_t immediate_args_count, OutputFrameStateCombine state_combine)
 
CodeGenResult AssembleArchInstruction (Instruction *instr)
 
void AssembleArchJump (RpoNumber target)
 
void AssembleArchJumpRegardlessOfAssemblyOrder (RpoNumber target)
 
void AssembleArchBranch (Instruction *instr, BranchInfo *branch)
 
void AssembleArchConditionalBranch (Instruction *instr, BranchInfo *branch)
 
void AssembleArchDeoptBranch (Instruction *instr, BranchInfo *branch)
 
void AssembleArchBoolean (Instruction *instr, FlagsCondition condition)
 
void AssembleArchConditionalBoolean (Instruction *instr)
 
void AssembleArchSelect (Instruction *instr, FlagsCondition condition)
 
void AssembleArchBinarySearchSwitchRange (Register input, RpoNumber def_block, std::pair< int32_t, Label * > *begin, std::pair< int32_t, Label * > *end)
 
void AssembleArchBinarySearchSwitch (Instruction *instr)
 
void AssembleArchTableSwitch (Instruction *instr)
 
void AssembleCodeStartRegisterCheck ()
 
void BailoutIfDeoptimized ()
 
void AssemblePlaceHolderForLazyDeopt (Instruction *instr)
 
void AssembleConstructFrame ()
 
void AssembleReturn (InstructionOperand *pop)
 
void AssembleDeconstructFrame ()
 
void AssemblePrepareTailCall ()
 
void AssembleTailCallBeforeGap (Instruction *instr, int first_unused_stack_slot)
 
void AssembleTailCallAfterGap (Instruction *instr, int first_unused_stack_slot)
 
void FinishCode ()
 
void MaybeEmitOutOfLineConstantPool ()
 
void IncrementStackAccessCounter (InstructionOperand *source, InstructionOperand *destination)
 
void AssembleMove (InstructionOperand *source, InstructionOperand *destination) final
 
void AssembleSwap (InstructionOperand *source, InstructionOperand *destination) final
 
AllocatedOperand Push (InstructionOperand *src) final
 
void Pop (InstructionOperand *src, MachineRepresentation rep) final
 
void PopTempStackSlots () final
 
void MoveToTempLocation (InstructionOperand *src, MachineRepresentation rep) final
 
void MoveTempLocationTo (InstructionOperand *dst, MachineRepresentation rep) final
 
void SetPendingMove (MoveOperands *move) final
 
LabelAddJumpTable (base::Vector< Label * > targets)
 
void AssembleJumpTable (base::Vector< Label * > targets)
 
void RecordCallPosition (Instruction *instr)
 
void RecordDeoptInfo (Instruction *instr, int pc_offset)
 
Handle< DeoptimizationDataGenerateDeoptimizationData ()
 
int DefineProtectedDeoptimizationLiteral (IndirectHandle< TrustedObject > object)
 
int DefineDeoptimizationLiteral (DeoptimizationLiteral literal)
 
bool HasProtectedDeoptimizationLiteral (IndirectHandle< TrustedObject > object) const
 
DeoptimizationEntry const & GetDeoptimizationEntry (Instruction *instr, size_t frame_state_offset)
 
void BuildTranslationForFrameStateDescriptor (FrameStateDescriptor *descriptor, InstructionOperandIterator *iter, OutputFrameStateCombine state_combine)
 
void TranslateStateValueDescriptor (StateValueDescriptor *desc, StateValueList *nested, InstructionOperandIterator *iter)
 
void TranslateFrameStateDescriptorOperands (FrameStateDescriptor *desc, InstructionOperandIterator *iter)
 
void AddTranslationForOperand (Instruction *instr, InstructionOperand *op, MachineType type)
 
void PrepareForDeoptimizationExits (ZoneDeque< DeoptimizationExit * > *exits)
 
DeoptimizationExitAddDeoptimizationExit (Instruction *instr, size_t frame_state_offset, size_t immediate_args_count)
 

Static Private Member Functions

static bool IsValidPush (InstructionOperand source, PushTypeFlags push_type)
 
static void GetPushCompatibleMoves (Instruction *instr, PushTypeFlags push_type, ZoneVector< MoveOperands * > *pushes)
 

Private Attributes

Zonezone_
 
Isolateisolate_
 
FrameAccessStateframe_access_state_
 
Linkage *const linkage_
 
InstructionSequence *const instructions_
 
UnwindingInfoWriter unwinding_info_writer_
 
OptimizedCompilationInfo *const info_
 
Label *const labels_
 
Label return_label_
 
RpoNumber current_block_
 
SourcePosition start_source_position_
 
SourcePosition current_source_position_
 
MacroAssembler masm_
 
GapResolver resolver_
 
SafepointTableBuilder safepoints_
 
ZoneVector< HandlerInfohandlers_
 
int next_deoptimization_id_ = 0
 
int deopt_exit_start_offset_ = 0
 
int eager_deopt_count_ = 0
 
int lazy_deopt_count_ = 0
 
ZoneDeque< DeoptimizationExit * > deoptimization_exits_
 
ZoneDeque< IndirectHandle< TrustedObject > > protected_deoptimization_literals_
 
ZoneDeque< DeoptimizationLiteraldeoptimization_literals_
 
size_t inlined_function_count_ = 0
 
FrameTranslationBuilder translations_
 
int handler_table_offset_ = 0
 
Label jump_deoptimization_entry_labels_ [kDeoptimizeKindCount]
 
const size_t max_unoptimized_frame_height_
 
const size_t max_pushed_argument_count_
 
uint16_t parameter_count_ = 0
 
bool caller_registers_saved_
 
SaveFPRegsMode fp_mode_
 
JumpTablejump_tables_
 
OutOfLineCodeools_
 
std::optional< OsrHelperosr_helper_
 
int osr_pc_offset_
 
SourcePositionTableBuilder source_position_table_builder_
 
CodeGenResult result_
 
ZoneVector< int > block_starts_
 
TurbolizerCodeOffsetsInfo offsets_info_
 
ZoneVector< TurbolizerInstructionStartInfoinstr_starts_
 
MoveCycleState move_cycle_
 
const char * debug_name_ = nullptr
 

Friends

class OutOfLineCode
 
class CodeGeneratorTester
 

Additional Inherited Members

- Public Attributes inherited from v8::internal::compiler::GapResolver::Assembler
int temp_slots_ = 0
 

Detailed Description

Definition at line 74 of file code-generator.h.

Member Typedef Documentation

◆ PushTypeFlags

Member Enumeration Documentation

◆ CodeGenResult

Enumerator
kSuccess 
kTooManyDeoptimizationBailouts 

Definition at line 175 of file code-generator.h.

◆ PushTypeFlag

Enumerator
kImmediatePush 
kRegisterPush 
kStackSlotPush 
kScalarPush 

Definition at line 272 of file code-generator.h.

Constructor & Destructor Documentation

◆ CodeGenerator()

v8::internal::compiler::CodeGenerator::CodeGenerator ( Zone * codegen_zone,
Frame * frame,
Linkage * linkage,
InstructionSequence * instructions,
OptimizedCompilationInfo * info,
Isolate * isolate,
std::optional< OsrHelper > osr_helper,
int start_source_position,
JumpOptimizationInfo * jump_opt,
const AssemblerOptions & options,
Builtin builtin,
size_t max_unoptimized_frame_height,
size_t max_pushed_argument_count,
const char * debug_name = nullptr )
explicit

Definition at line 51 of file code-generator.cc.

Member Function Documentation

◆ AddDeoptimizationExit()

DeoptimizationExit * v8::internal::compiler::CodeGenerator::AddDeoptimizationExit ( Instruction * instr,
size_t frame_state_offset,
size_t immediate_args_count )
private

Definition at line 1611 of file code-generator.cc.

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

◆ AddJumpTable()

Label * v8::internal::compiler::CodeGenerator::AddJumpTable ( base::Vector< Label * > targets)
private

Definition at line 1116 of file code-generator.cc.

Here is the call graph for this function:

◆ AddTranslationForOperand()

void v8::internal::compiler::CodeGenerator::AddTranslationForOperand ( Instruction * instr,
InstructionOperand * op,
MachineType type )
private

Definition at line 1383 of file code-generator.cc.

Here is the caller graph for this function:

◆ AssembleArchBinarySearchSwitch()

void v8::internal::compiler::CodeGenerator::AssembleArchBinarySearchSwitch ( Instruction * instr)
private

Definition at line 3706 of file code-generator-arm.cc.

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

◆ AssembleArchBinarySearchSwitchRange()

void v8::internal::compiler::CodeGenerator::AssembleArchBinarySearchSwitchRange ( Register input,
RpoNumber def_block,
std::pair< int32_t, Label * > * begin,
std::pair< int32_t, Label * > * end )
private

Definition at line 465 of file code-generator.cc.

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

◆ AssembleArchBoolean()

void v8::internal::compiler::CodeGenerator::AssembleArchBoolean ( Instruction * instr,
FlagsCondition condition )
private

Definition at line 3684 of file code-generator-arm.cc.

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

◆ AssembleArchBranch()

void v8::internal::compiler::CodeGenerator::AssembleArchBranch ( Instruction * instr,
BranchInfo * branch )
private

Definition at line 3624 of file code-generator-arm.cc.

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

◆ AssembleArchConditionalBoolean()

void v8::internal::compiler::CodeGenerator::AssembleArchConditionalBoolean ( Instruction * instr)
private

Definition at line 3697 of file code-generator-arm.cc.

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

◆ AssembleArchConditionalBranch()

void v8::internal::compiler::CodeGenerator::AssembleArchConditionalBranch ( Instruction * instr,
BranchInfo * branch )
private

Definition at line 3701 of file code-generator-arm.cc.

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

◆ AssembleArchDeoptBranch()

void v8::internal::compiler::CodeGenerator::AssembleArchDeoptBranch ( Instruction * instr,
BranchInfo * branch )
private

Definition at line 3633 of file code-generator-arm.cc.

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

◆ AssembleArchInstruction()

CodeGenerator::CodeGenResult v8::internal::compiler::CodeGenerator::AssembleArchInstruction ( Instruction * instr)
private

Definition at line 653 of file code-generator-arm.cc.

Here is the caller graph for this function:

◆ AssembleArchJump()

void v8::internal::compiler::CodeGenerator::AssembleArchJump ( RpoNumber target)
private

Definition at line 485 of file code-generator.cc.

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

◆ AssembleArchJumpRegardlessOfAssemblyOrder()

void v8::internal::compiler::CodeGenerator::AssembleArchJumpRegardlessOfAssemblyOrder ( RpoNumber target)
private

Definition at line 3638 of file code-generator-arm.cc.

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

◆ AssembleArchSelect()

void v8::internal::compiler::CodeGenerator::AssembleArchSelect ( Instruction * instr,
FlagsCondition condition )
private

Definition at line 3733 of file code-generator-arm.cc.

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

◆ AssembleArchTableSwitch()

void v8::internal::compiler::CodeGenerator::AssembleArchTableSwitch ( Instruction * instr)
private

Definition at line 3717 of file code-generator-arm.cc.

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

◆ AssembleBlock()

CodeGenerator::CodeGenResult v8::internal::compiler::CodeGenerator::AssembleBlock ( const InstructionBlock * block)
private

Definition at line 604 of file code-generator.cc.

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

◆ AssembleCode()

void v8::internal::compiler::CodeGenerator::AssembleCode ( )

Definition at line 201 of file code-generator.cc.

Here is the caller graph for this function:

◆ AssembleCodeStartRegisterCheck()

void v8::internal::compiler::CodeGenerator::AssembleCodeStartRegisterCheck ( )
private

Definition at line 629 of file code-generator-arm.cc.

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

◆ AssembleConstructFrame()

void v8::internal::compiler::CodeGenerator::AssembleConstructFrame ( )
private

Definition at line 3762 of file code-generator-arm.cc.

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

◆ AssembleDeconstructFrame()

void v8::internal::compiler::CodeGenerator::AssembleDeconstructFrame ( )
private

Definition at line 504 of file code-generator-arm.cc.

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

◆ AssembleDeoptimizerCall()

CodeGenerator::CodeGenResult v8::internal::compiler::CodeGenerator::AssembleDeoptimizerCall ( DeoptimizationExit * exit)
private

Definition at line 164 of file code-generator.cc.

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

◆ AssembleGaps()

void v8::internal::compiler::CodeGenerator::AssembleGaps ( Instruction * instr)
private

Definition at line 951 of file code-generator.cc.

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

◆ AssembleInstruction()

CodeGenerator::CodeGenResult v8::internal::compiler::CodeGenerator::AssembleInstruction ( int instruction_index,
const InstructionBlock * block )
private

Definition at line 768 of file code-generator.cc.

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

◆ AssembleJumpTable()

void v8::internal::compiler::CodeGenerator::AssembleJumpTable ( base::Vector< Label * > targets)
private

Definition at line 4487 of file code-generator-arm.cc.

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

◆ AssembleMove()

void v8::internal::compiler::CodeGenerator::AssembleMove ( InstructionOperand * source,
InstructionOperand * destination )
finalprivatevirtual

Implements v8::internal::compiler::GapResolver::Assembler.

Definition at line 4045 of file code-generator-arm.cc.

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

◆ AssemblePlaceHolderForLazyDeopt()

void v8::internal::compiler::CodeGenerator::AssemblePlaceHolderForLazyDeopt ( Instruction * instr)
private

Definition at line 1122 of file code-generator.cc.

Here is the call graph for this function:

◆ AssemblePrepareTailCall()

void v8::internal::compiler::CodeGenerator::AssemblePrepareTailCall ( )
private

Definition at line 509 of file code-generator-arm.cc.

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

◆ AssembleReturn()

void v8::internal::compiler::CodeGenerator::AssembleReturn ( InstructionOperand * pop)
private

Definition at line 3914 of file code-generator-arm.cc.

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

◆ AssembleSourcePosition() [1/2]

void v8::internal::compiler::CodeGenerator::AssembleSourcePosition ( Instruction * instr)

Definition at line 886 of file code-generator.cc.

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

◆ AssembleSourcePosition() [2/2]

void v8::internal::compiler::CodeGenerator::AssembleSourcePosition ( SourcePosition source_position)

Definition at line 893 of file code-generator.cc.

Here is the call graph for this function:

◆ AssembleSwap()

void v8::internal::compiler::CodeGenerator::AssembleSwap ( InstructionOperand * source,
InstructionOperand * destination )
finalprivatevirtual

Implements v8::internal::compiler::GapResolver::Assembler.

Definition at line 4364 of file code-generator-arm.cc.

Here is the call graph for this function:

◆ AssembleTailCallAfterGap()

void v8::internal::compiler::CodeGenerator::AssembleTailCallAfterGap ( Instruction * instr,
int first_unused_stack_slot )
private

Definition at line 622 of file code-generator-arm.cc.

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

◆ AssembleTailCallBeforeGap()

void v8::internal::compiler::CodeGenerator::AssembleTailCallBeforeGap ( Instruction * instr,
int first_unused_stack_slot )
private

Definition at line 586 of file code-generator-arm.cc.

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

◆ BailoutIfDeoptimized()

void v8::internal::compiler::CodeGenerator::BailoutIfDeoptimized ( )
private

Definition at line 650 of file code-generator-arm.cc.

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

◆ block_starts()

const ZoneVector< int > & v8::internal::compiler::CodeGenerator::block_starts ( ) const
inline

Definition at line 127 of file code-generator.h.

◆ BuildTranslation()

DeoptimizationExit * v8::internal::compiler::CodeGenerator::BuildTranslation ( Instruction * instr,
int pc_offset,
size_t frame_state_offset,
size_t immediate_args_count,
OutputFrameStateCombine state_combine )
private

Definition at line 1340 of file code-generator.cc.

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

◆ BuildTranslationForFrameStateDescriptor()

void v8::internal::compiler::CodeGenerator::BuildTranslationForFrameStateDescriptor ( FrameStateDescriptor * descriptor,
InstructionOperandIterator * iter,
OutputFrameStateCombine state_combine )
private

Definition at line 1240 of file code-generator.cc.

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

◆ code_kind()

CodeKind v8::internal::compiler::CodeGenerator::code_kind ( ) const
inline

Definition at line 151 of file code-generator.h.

Here is the caller graph for this function:

◆ ComputeBranchInfo()

RpoNumber v8::internal::compiler::CodeGenerator::ComputeBranchInfo ( BranchInfo * branch,
FlagsCondition condition,
Instruction * instr )
private

Definition at line 740 of file code-generator.cc.

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

◆ CreateFrameAccessState()

void v8::internal::compiler::CodeGenerator::CreateFrameAccessState ( Frame * frame)
private

Definition at line 120 of file code-generator.cc.

Here is the call graph for this function:

◆ DefineDeoptimizationLiteral()

int v8::internal::compiler::CodeGenerator::DefineDeoptimizationLiteral ( DeoptimizationLiteral literal)
private

Definition at line 1173 of file code-generator.cc.

Here is the caller graph for this function:

◆ DefineProtectedDeoptimizationLiteral()

int v8::internal::compiler::CodeGenerator::DefineProtectedDeoptimizationLiteral ( IndirectHandle< TrustedObject > object)
private

Definition at line 1163 of file code-generator.cc.

Here is the caller graph for this function:

◆ DetermineStubCallMode()

StubCallMode v8::internal::compiler::CodeGenerator::DetermineStubCallMode ( ) const
private

Definition at line 937 of file code-generator.cc.

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

◆ FinalizeCode()

MaybeHandle< Code > v8::internal::compiler::CodeGenerator::FinalizeCode ( )

Definition at line 503 of file code-generator.cc.

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

◆ FinishCode()

void v8::internal::compiler::CodeGenerator::FinishCode ( )
private

Definition at line 4038 of file code-generator-arm.cc.

Here is the caller graph for this function:

◆ FinishFrame()

void v8::internal::compiler::CodeGenerator::FinishFrame ( Frame * frame)
private

Definition at line 3738 of file code-generator-arm.cc.

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

◆ frame()

const Frame * v8::internal::compiler::CodeGenerator::frame ( ) const
inline

Definition at line 102 of file code-generator.h.

Here is the caller graph for this function:

◆ frame_access_state()

FrameAccessState * v8::internal::compiler::CodeGenerator::frame_access_state ( ) const
inline

Definition at line 101 of file code-generator.h.

Here is the caller graph for this function:

◆ GenerateDeoptimizationData()

Handle< DeoptimizationData > v8::internal::compiler::CodeGenerator::GenerateDeoptimizationData ( )
private

Definition at line 978 of file code-generator.cc.

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

◆ GetDeoptimizationEntry()

DeoptimizationEntry const & v8::internal::compiler::CodeGenerator::GetDeoptimizationEntry ( Instruction * instr,
size_t frame_state_offset )
private

Definition at line 1192 of file code-generator.cc.

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

◆ GetLabel()

Label * v8::internal::compiler::CodeGenerator::GetLabel ( RpoNumber rpo)
inline

Definition at line 106 of file code-generator.h.

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

◆ GetProtectedInstructionsData()

base::OwnedVector< uint8_t > v8::internal::compiler::CodeGenerator::GetProtectedInstructionsData ( )

Definition at line 494 of file code-generator.cc.

Here is the call graph for this function:

◆ GetPushCompatibleMoves()

void v8::internal::compiler::CodeGenerator::GetPushCompatibleMoves ( Instruction * instr,
PushTypeFlags push_type,
ZoneVector< MoveOperands * > * pushes )
staticprivate

Definition at line 633 of file code-generator.cc.

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

◆ GetSlotAboveSPBeforeTailCall()

bool v8::internal::compiler::CodeGenerator::GetSlotAboveSPBeforeTailCall ( Instruction * instr,
int * slot )
private

Definition at line 926 of file code-generator.cc.

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

◆ GetSourcePositionTable()

base::OwnedVector< uint8_t > v8::internal::compiler::CodeGenerator::GetSourcePositionTable ( )

Definition at line 490 of file code-generator.cc.

Here is the call graph for this function:

◆ GetStackCheckOffset()

uint32_t v8::internal::compiler::CodeGenerator::GetStackCheckOffset ( )

Definition at line 137 of file code-generator.cc.

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

◆ handler_table_offset()

size_t v8::internal::compiler::CodeGenerator::handler_table_offset ( ) const
inline

Definition at line 125 of file code-generator.h.

◆ HasProtectedDeoptimizationLiteral()

bool v8::internal::compiler::CodeGenerator::HasProtectedDeoptimizationLiteral ( IndirectHandle< TrustedObject > object) const
private

Definition at line 1184 of file code-generator.cc.

◆ IncrementStackAccessCounter()

void v8::internal::compiler::CodeGenerator::IncrementStackAccessCounter ( InstructionOperand * source,
InstructionOperand * destination )
private

Definition at line 7978 of file code-generator-x64.cc.

Here is the call graph for this function:

◆ info()

OptimizedCompilationInfo * v8::internal::compiler::CodeGenerator::info ( ) const
inlineprivate

Definition at line 156 of file code-generator.h.

Here is the caller graph for this function:

◆ instr_starts()

const ZoneVector< TurbolizerInstructionStartInfo > & v8::internal::compiler::CodeGenerator::instr_starts ( ) const
inline

Definition at line 128 of file code-generator.h.

◆ instructions()

InstructionSequence * v8::internal::compiler::CodeGenerator::instructions ( ) const
inline

Definition at line 100 of file code-generator.h.

Here is the caller graph for this function:

◆ IsMaterializableFromRoot()

bool v8::internal::compiler::CodeGenerator::IsMaterializableFromRoot ( Handle< HeapObject > object,
RootIndex * index_return )
private

Definition at line 593 of file code-generator.cc.

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

◆ IsNextInAssemblyOrder()

bool v8::internal::compiler::CodeGenerator::IsNextInAssemblyOrder ( RpoNumber block) const
private

Definition at line 563 of file code-generator.cc.

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

◆ isolate()

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

Definition at line 103 of file code-generator.h.

Here is the caller graph for this function:

◆ IsValidPush()

bool v8::internal::compiler::CodeGenerator::IsValidPush ( InstructionOperand source,
CodeGenerator::PushTypeFlags push_type )
staticprivate

Definition at line 616 of file code-generator.cc.

Here is the caller graph for this function:

◆ linkage()

Linkage * v8::internal::compiler::CodeGenerator::linkage ( ) const
inline

Definition at line 104 of file code-generator.h.

Here is the caller graph for this function:

◆ masm()

MacroAssembler * v8::internal::compiler::CodeGenerator::masm ( )
inline

Definition at line 123 of file code-generator.h.

Here is the caller graph for this function:

◆ MaybeEmitOutOfLineConstantPool()

void v8::internal::compiler::CodeGenerator::MaybeEmitOutOfLineConstantPool ( )
private

Definition at line 197 of file code-generator.cc.

Here is the call graph for this function:

◆ MoveTempLocationTo()

void v8::internal::compiler::CodeGenerator::MoveTempLocationTo ( InstructionOperand * dst,
MachineRepresentation rep )
finalprivatevirtual

Implements v8::internal::compiler::GapResolver::Assembler.

Definition at line 4301 of file code-generator-arm.cc.

Here is the call graph for this function:

◆ MoveToTempLocation()

void v8::internal::compiler::CodeGenerator::MoveToTempLocation ( InstructionOperand * src,
MachineRepresentation rep )
finalprivatevirtual

Implements v8::internal::compiler::GapResolver::Assembler.

Definition at line 4258 of file code-generator-arm.cc.

Here is the call graph for this function:

◆ offsets_info()

const TurbolizerCodeOffsetsInfo & v8::internal::compiler::CodeGenerator::offsets_info ( ) const
inline

Definition at line 132 of file code-generator.h.

◆ osr_helper()

OsrHelper * v8::internal::compiler::CodeGenerator::osr_helper ( )
inlineprivate

Definition at line 157 of file code-generator.h.

Here is the caller graph for this function:

◆ Pop()

void v8::internal::compiler::CodeGenerator::Pop ( InstructionOperand * src,
MachineRepresentation rep )
finalprivatevirtual

Implements v8::internal::compiler::GapResolver::Assembler.

Definition at line 4225 of file code-generator-arm.cc.

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

◆ PopTempStackSlots()

void v8::internal::compiler::CodeGenerator::PopTempStackSlots ( )
finalprivatevirtual

Implements v8::internal::compiler::GapResolver::Assembler.

Definition at line 4250 of file code-generator-arm.cc.

Here is the call graph for this function:

◆ PrepareForDeoptimizationExits()

void v8::internal::compiler::CodeGenerator::PrepareForDeoptimizationExits ( ZoneDeque< DeoptimizationExit * > * exits)
private

Definition at line 4040 of file code-generator-arm.cc.

Here is the caller graph for this function:

◆ Push()

AllocatedOperand v8::internal::compiler::CodeGenerator::Push ( InstructionOperand * src)
finalprivatevirtual

Implements v8::internal::compiler::GapResolver::Assembler.

Definition at line 4196 of file code-generator-arm.cc.

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

◆ RecordCallPosition()

void v8::internal::compiler::CodeGenerator::RecordCallPosition ( Instruction * instr)
private

Definition at line 1127 of file code-generator.cc.

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

◆ RecordDeoptInfo()

void v8::internal::compiler::CodeGenerator::RecordDeoptInfo ( Instruction * instr,
int pc_offset )
private

Definition at line 1153 of file code-generator.cc.

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

◆ RecordProtectedInstruction()

void v8::internal::compiler::CodeGenerator::RecordProtectedInstruction ( uint32_t instr_offset)

Definition at line 114 of file code-generator.cc.

◆ RecordSafepoint()

void v8::internal::compiler::CodeGenerator::RecordSafepoint ( ReferenceMap * references,
int pc_offset = 0 )

Definition at line 570 of file code-generator.cc.

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

◆ resolver()

GapResolver * v8::internal::compiler::CodeGenerator::resolver ( )
inlineprivate

Definition at line 154 of file code-generator.h.

Here is the caller graph for this function:

◆ safepoint_table_builder()

SafepointTableBuilder * v8::internal::compiler::CodeGenerator::safepoint_table_builder ( )
inline

Definition at line 124 of file code-generator.h.

◆ safepoints()

SafepointTableBuilder * v8::internal::compiler::CodeGenerator::safepoints ( )
inlineprivate

Definition at line 155 of file code-generator.h.

Here is the caller graph for this function:

◆ SetPendingMove()

void v8::internal::compiler::CodeGenerator::SetPendingMove ( MoveOperands * move)
finalprivatevirtual

Implements v8::internal::compiler::GapResolver::Assembler.

Definition at line 4330 of file code-generator-arm.cc.

Here is the call graph for this function:

◆ ShouldApplyOffsetToStackCheck()

bool v8::internal::compiler::CodeGenerator::ShouldApplyOffsetToStackCheck ( Instruction * instr,
uint32_t * offset )

Definition at line 125 of file code-generator.cc.

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

◆ start_source_position()

SourcePosition v8::internal::compiler::CodeGenerator::start_source_position ( ) const
inline

Definition at line 110 of file code-generator.h.

Here is the caller graph for this function:

◆ TranslateFrameStateDescriptorOperands()

void v8::internal::compiler::CodeGenerator::TranslateFrameStateDescriptorOperands ( FrameStateDescriptor * desc,
InstructionOperandIterator * iter )
private

Definition at line 1229 of file code-generator.cc.

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

◆ TranslateStateValueDescriptor()

void v8::internal::compiler::CodeGenerator::TranslateStateValueDescriptor ( StateValueDescriptor * desc,
StateValueList * nested,
InstructionOperandIterator * iter )
private

Definition at line 1199 of file code-generator.cc.

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

◆ zone()

Zone * v8::internal::compiler::CodeGenerator::zone ( ) const
inline

Definition at line 122 of file code-generator.h.

Here is the caller graph for this function:

Friends And Related Symbol Documentation

◆ CodeGeneratorTester

friend class CodeGeneratorTester
friend

Definition at line 401 of file code-generator.h.

◆ OutOfLineCode

friend class OutOfLineCode
friend

Definition at line 400 of file code-generator.h.

Member Data Documentation

◆ block_starts_

ZoneVector<int> v8::internal::compiler::CodeGenerator::block_starts_
private

Definition at line 469 of file code-generator.h.

◆ caller_registers_saved_

bool v8::internal::compiler::CodeGenerator::caller_registers_saved_
private

Definition at line 457 of file code-generator.h.

◆ current_block_

RpoNumber v8::internal::compiler::CodeGenerator::current_block_
private

Definition at line 412 of file code-generator.h.

◆ current_source_position_

SourcePosition v8::internal::compiler::CodeGenerator::current_source_position_
private

Definition at line 414 of file code-generator.h.

◆ debug_name_

const char* v8::internal::compiler::CodeGenerator::debug_name_ = nullptr
private

Definition at line 474 of file code-generator.h.

◆ deopt_exit_start_offset_

int v8::internal::compiler::CodeGenerator::deopt_exit_start_offset_ = 0
private

Definition at line 420 of file code-generator.h.

◆ deoptimization_exits_

ZoneDeque<DeoptimizationExit*> v8::internal::compiler::CodeGenerator::deoptimization_exits_
private

Definition at line 423 of file code-generator.h.

◆ deoptimization_literals_

ZoneDeque<DeoptimizationLiteral> v8::internal::compiler::CodeGenerator::deoptimization_literals_
private

Definition at line 425 of file code-generator.h.

◆ eager_deopt_count_

int v8::internal::compiler::CodeGenerator::eager_deopt_count_ = 0
private

Definition at line 421 of file code-generator.h.

◆ fp_mode_

SaveFPRegsMode v8::internal::compiler::CodeGenerator::fp_mode_
private

Definition at line 458 of file code-generator.h.

◆ frame_access_state_

FrameAccessState* v8::internal::compiler::CodeGenerator::frame_access_state_
private

Definition at line 405 of file code-generator.h.

◆ handler_table_offset_

int v8::internal::compiler::CodeGenerator::handler_table_offset_ = 0
private

Definition at line 428 of file code-generator.h.

◆ handlers_

ZoneVector<HandlerInfo> v8::internal::compiler::CodeGenerator::handlers_
private

Definition at line 418 of file code-generator.h.

◆ info_

OptimizedCompilationInfo* const v8::internal::compiler::CodeGenerator::info_
private

Definition at line 409 of file code-generator.h.

◆ inlined_function_count_

size_t v8::internal::compiler::CodeGenerator::inlined_function_count_ = 0
private

Definition at line 426 of file code-generator.h.

◆ instr_starts_

ZoneVector<TurbolizerInstructionStartInfo> v8::internal::compiler::CodeGenerator::instr_starts_
private

Definition at line 471 of file code-generator.h.

◆ instructions_

InstructionSequence* const v8::internal::compiler::CodeGenerator::instructions_
private

Definition at line 407 of file code-generator.h.

◆ isolate_

Isolate* v8::internal::compiler::CodeGenerator::isolate_
private

Definition at line 404 of file code-generator.h.

◆ jump_deoptimization_entry_labels_

Label v8::internal::compiler::CodeGenerator::jump_deoptimization_entry_labels_[kDeoptimizeKindCount]
private

Definition at line 436 of file code-generator.h.

◆ jump_tables_

JumpTable* v8::internal::compiler::CodeGenerator::jump_tables_
private

Definition at line 460 of file code-generator.h.

◆ kBinarySearchSwitchMinimalCases

int v8::internal::compiler::CodeGenerator::kBinarySearchSwitchMinimalCases = 4
staticconstexpr

Definition at line 140 of file code-generator.h.

◆ labels_

Label* const v8::internal::compiler::CodeGenerator::labels_
private

Definition at line 410 of file code-generator.h.

◆ lazy_deopt_count_

int v8::internal::compiler::CodeGenerator::lazy_deopt_count_ = 0
private

Definition at line 422 of file code-generator.h.

◆ linkage_

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

Definition at line 406 of file code-generator.h.

◆ masm_

MacroAssembler v8::internal::compiler::CodeGenerator::masm_
private

Definition at line 415 of file code-generator.h.

◆ max_pushed_argument_count_

const size_t v8::internal::compiler::CodeGenerator::max_pushed_argument_count_
private

Definition at line 442 of file code-generator.h.

◆ max_unoptimized_frame_height_

const size_t v8::internal::compiler::CodeGenerator::max_unoptimized_frame_height_
private

Definition at line 441 of file code-generator.h.

◆ move_cycle_

MoveCycleState v8::internal::compiler::CodeGenerator::move_cycle_
private

Definition at line 472 of file code-generator.h.

◆ next_deoptimization_id_

int v8::internal::compiler::CodeGenerator::next_deoptimization_id_ = 0
private

Definition at line 419 of file code-generator.h.

◆ offsets_info_

TurbolizerCodeOffsetsInfo v8::internal::compiler::CodeGenerator::offsets_info_
private

Definition at line 470 of file code-generator.h.

◆ ools_

OutOfLineCode* v8::internal::compiler::CodeGenerator::ools_
private

Definition at line 461 of file code-generator.h.

◆ osr_helper_

std::optional<OsrHelper> v8::internal::compiler::CodeGenerator::osr_helper_
private

Definition at line 462 of file code-generator.h.

◆ osr_pc_offset_

int v8::internal::compiler::CodeGenerator::osr_pc_offset_
private

Definition at line 463 of file code-generator.h.

◆ parameter_count_

uint16_t v8::internal::compiler::CodeGenerator::parameter_count_ = 0
private

Definition at line 446 of file code-generator.h.

◆ protected_deoptimization_literals_

ZoneDeque<IndirectHandle<TrustedObject> > v8::internal::compiler::CodeGenerator::protected_deoptimization_literals_
private

Definition at line 424 of file code-generator.h.

◆ resolver_

GapResolver v8::internal::compiler::CodeGenerator::resolver_
private

Definition at line 416 of file code-generator.h.

◆ result_

CodeGenResult v8::internal::compiler::CodeGenerator::result_
private

Definition at line 468 of file code-generator.h.

◆ return_label_

Label v8::internal::compiler::CodeGenerator::return_label_
private

Definition at line 411 of file code-generator.h.

◆ safepoints_

SafepointTableBuilder v8::internal::compiler::CodeGenerator::safepoints_
private

Definition at line 417 of file code-generator.h.

◆ source_position_table_builder_

SourcePositionTableBuilder v8::internal::compiler::CodeGenerator::source_position_table_builder_
private

Definition at line 464 of file code-generator.h.

◆ start_source_position_

SourcePosition v8::internal::compiler::CodeGenerator::start_source_position_
private

Definition at line 413 of file code-generator.h.

◆ translations_

FrameTranslationBuilder v8::internal::compiler::CodeGenerator::translations_
private

Definition at line 427 of file code-generator.h.

◆ unwinding_info_writer_

UnwindingInfoWriter v8::internal::compiler::CodeGenerator::unwinding_info_writer_
private

Definition at line 408 of file code-generator.h.

◆ zone_

Zone* v8::internal::compiler::CodeGenerator::zone_
private

Definition at line 403 of file code-generator.h.


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