V8 Project
v8::internal::compiler::Frame Class Reference

#include <frame.h>

+ Collaboration diagram for v8::internal::compiler::Frame:

Public Member Functions

 Frame ()
 
int GetSpillSlotCount ()
 
int GetDoubleSpillSlotCount ()
 
void SetAllocatedRegisters (BitVector *regs)
 
void SetAllocatedDoubleRegisters (BitVector *regs)
 
bool DidAllocateDoubleRegisters ()
 
void SetRegisterSaveAreaSize (int size)
 
int GetRegisterSaveAreaSize ()
 
int AllocateSpillSlot (bool is_double)
 

Private Attributes

int register_save_area_size_
 
int spill_slot_count_
 
int double_spill_slot_count_
 
BitVectorallocated_registers_
 
BitVectorallocated_double_registers_
 

Detailed Description

Definition at line 20 of file frame.h.

Constructor & Destructor Documentation

◆ Frame()

v8::internal::compiler::Frame::Frame ( )
inline

Definition at line 22 of file frame.h.

BitVector * allocated_registers_
Definition: frame.h:70
BitVector * allocated_double_registers_
Definition: frame.h:71
enable harmony numeric enable harmony object literal extensions Optimize object Array DOM strings and string trace pretenuring decisions of HAllocate instructions Enables optimizations which favor memory size over execution speed maximum source size in bytes considered for a single inlining maximum cumulative number of AST nodes considered for inlining trace the tracking of allocation sites deoptimize every n garbage collections perform array bounds checks elimination analyze liveness of environment slots and zap dead values flushes the cache of optimized code for closures on every GC allow uint32 values on optimize frames if they are used only in safe operations track concurrent recompilation artificial compilation delay in ms do not emit check maps for constant values that have a leaf deoptimize the optimized code if the layout of the maps changes enable context specialization in TurboFan execution budget before interrupt is triggered max percentage of megamorphic generic ICs to allow optimization enable use of SAHF instruction if enable use of VFP3 instructions if available enable use of NEON instructions if enable use of SDIV and UDIV instructions if enable use of MLS instructions if enable loading bit constant by means of movw movt instruction enable unaligned accesses for enable use of d16 d31 registers on ARM this requires VFP3 force all emitted branches to be in long enable alignment of csp to bytes on platforms which prefer the register to always be NULL

Member Function Documentation

◆ AllocateSpillSlot()

int v8::internal::compiler::Frame::AllocateSpillSlot ( bool  is_double)
inline

Definition at line 53 of file frame.h.

53  {
54  // If 32-bit, skip one if the new slot is a double.
55  if (is_double) {
56  if (kDoubleSize > kPointerSize) {
59  spill_slot_count_ |= 1;
60  }
62  }
63  return spill_slot_count_++;
64  }
#define DCHECK(condition)
Definition: logging.h:205
const int kPointerSize
Definition: globals.h:129
const int kDoubleSize
Definition: globals.h:127

References DCHECK, double_spill_slot_count_, v8::internal::kDoubleSize, v8::internal::kPointerSize, and spill_slot_count_.

◆ DidAllocateDoubleRegisters()

bool v8::internal::compiler::Frame::DidAllocateDoubleRegisters ( )
inline

Definition at line 42 of file frame.h.

42  {
44  }
bool IsEmpty() const
Definition: data-flow.h:164

References allocated_double_registers_, and v8::internal::BitVector::IsEmpty().

+ Here is the call graph for this function:

◆ GetDoubleSpillSlotCount()

int v8::internal::compiler::Frame::GetDoubleSpillSlotCount ( )
inline

Definition at line 30 of file frame.h.

30 { return double_spill_slot_count_; }

References double_spill_slot_count_.

◆ GetRegisterSaveAreaSize()

int v8::internal::compiler::Frame::GetRegisterSaveAreaSize ( )
inline

Definition at line 51 of file frame.h.

51 { return register_save_area_size_; }

References register_save_area_size_.

Referenced by v8::internal::compiler::Linkage::GetFrameOffset().

+ Here is the caller graph for this function:

◆ GetSpillSlotCount()

int v8::internal::compiler::Frame::GetSpillSlotCount ( )
inline

Definition at line 29 of file frame.h.

29 { return spill_slot_count_; }

References spill_slot_count_.

Referenced by v8::internal::compiler::Linkage::GetFrameOffset().

+ Here is the caller graph for this function:

◆ SetAllocatedDoubleRegisters()

void v8::internal::compiler::Frame::SetAllocatedDoubleRegisters ( BitVector regs)
inline

Definition at line 37 of file frame.h.

References allocated_double_registers_, DCHECK, and NULL.

◆ SetAllocatedRegisters()

void v8::internal::compiler::Frame::SetAllocatedRegisters ( BitVector regs)
inline

Definition at line 32 of file frame.h.

32  {
34  allocated_registers_ = regs;
35  }

References allocated_registers_, DCHECK, and NULL.

◆ SetRegisterSaveAreaSize()

void v8::internal::compiler::Frame::SetRegisterSaveAreaSize ( int  size)
inline

Definition at line 46 of file frame.h.

46  {
49  }
enable harmony numeric enable harmony object literal extensions Optimize object size
bool IsAligned(T value, U alignment)
Definition: utils.h:123

References DCHECK, v8::internal::IsAligned(), v8::internal::kPointerSize, register_save_area_size_, and size.

+ Here is the call graph for this function:

Member Data Documentation

◆ allocated_double_registers_

BitVector* v8::internal::compiler::Frame::allocated_double_registers_
private

Definition at line 71 of file frame.h.

Referenced by DidAllocateDoubleRegisters(), and SetAllocatedDoubleRegisters().

◆ allocated_registers_

BitVector* v8::internal::compiler::Frame::allocated_registers_
private

Definition at line 70 of file frame.h.

Referenced by SetAllocatedRegisters().

◆ double_spill_slot_count_

int v8::internal::compiler::Frame::double_spill_slot_count_
private

Definition at line 69 of file frame.h.

Referenced by AllocateSpillSlot(), and GetDoubleSpillSlotCount().

◆ register_save_area_size_

int v8::internal::compiler::Frame::register_save_area_size_
private

Definition at line 67 of file frame.h.

Referenced by GetRegisterSaveAreaSize(), and SetRegisterSaveAreaSize().

◆ spill_slot_count_

int v8::internal::compiler::Frame::spill_slot_count_
private

Definition at line 68 of file frame.h.

Referenced by AllocateSpillSlot(), and GetSpillSlotCount().


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