V8 Project
v8::internal::LStoreKeyed< T > Class Template Reference

#include <lithium-arm64.h>

+ Inheritance diagram for v8::internal::LStoreKeyed< T >:
+ Collaboration diagram for v8::internal::LStoreKeyed< T >:

Public Member Functions

 LStoreKeyed (LOperand *elements, LOperand *key, LOperand *value)
 
bool is_external () const
 
bool is_fixed_typed_array () const
 
bool is_typed_elements () const
 
LOperandelements ()
 
LOperandkey ()
 
LOperandvalue ()
 
ElementsKind elements_kind () const
 
bool NeedsCanonicalization ()
 
uint32_t base_offset () const
 
void PrintDataTo (StringStream *stream) OVERRIDE
 
- Public Member Functions inherited from v8::internal::LTemplateResultInstruction< R >
 STATIC_ASSERT (R==0||R==1)
 
virtual bool HasResult () const FINAL OVERRIDE
 
void set_result (LOperand *operand)
 
LOperandresult () const
 
 STATIC_ASSERT (R==0||R==1)
 
virtual bool HasResult () const FINAL OVERRIDE
 
void set_result (LOperand *operand)
 
LOperandresult () const
 
 STATIC_ASSERT (R==0||R==1)
 
virtual bool HasResult () const FINAL OVERRIDE
 
void set_result (LOperand *operand)
 
LOperandresult () const
 
 STATIC_ASSERT (R==0||R==1)
 
virtual bool HasResult () const FINAL OVERRIDE
 
void set_result (LOperand *operand)
 
LOperandresult () const
 
 STATIC_ASSERT (R==0||R==1)
 
virtual bool HasResult () const FINAL OVERRIDE
 
void set_result (LOperand *operand)
 
LOperandresult () const
 
 STATIC_ASSERT (R==0||R==1)
 
virtual bool HasResult () const FINAL OVERRIDE
 
void set_result (LOperand *operand)
 
LOperandresult () const
 
virtual bool MustSignExtendResult (LPlatformChunk *chunk) const FINAL OVERRIDE
 
 STATIC_ASSERT (R==0||R==1)
 
virtual bool HasResult () const FINAL OVERRIDE
 
void set_result (LOperand *operand)
 
LOperandresult () const
 
- Public Member Functions inherited from v8::internal::LInstruction
 LInstruction ()
 
virtual ~LInstruction ()
 
virtual void CompileToNative (LCodeGen *generator)=0
 
virtual const char * Mnemonic () const =0
 
virtual void PrintTo (StringStream *stream)
 
virtual void PrintOutputOperandTo (StringStream *stream)
 
virtual Opcode opcode () const =0
 
virtual bool IsGap () const
 
virtual bool IsControl () const
 
virtual bool TryDelete ()
 
void set_environment (LEnvironment *env)
 
LEnvironment * environment () const
 
bool HasEnvironment () const
 
void set_pointer_map (LPointerMap *p)
 
LPointerMap * pointer_map () const
 
bool HasPointerMap () const
 
void set_hydrogen_value (HValue *value)
 
HValuehydrogen_value () const
 
virtual void SetDeferredLazyDeoptimizationEnvironment (LEnvironment *env)
 
void MarkAsCall ()
 
bool IsCall () const
 
bool ClobbersTemps () const
 
bool ClobbersRegisters () const
 
virtual bool ClobbersDoubleRegisters (Isolate *isolate) const
 
bool IsMarkedAsCall () const
 
LOperandFirstInput ()
 
LOperandOutput ()
 
virtual bool HasInterestingComment (LCodeGen *gen) const
 
 LInstruction ()
 
virtual ~LInstruction ()
 
virtual void CompileToNative (LCodeGen *generator)=0
 
virtual const char * Mnemonic () const =0
 
virtual void PrintTo (StringStream *stream)
 
virtual void PrintOutputOperandTo (StringStream *stream)
 
virtual Opcode opcode () const =0
 
virtual bool IsGap () const
 
virtual bool IsControl () const
 
virtual bool TryDelete ()
 
void set_environment (LEnvironment *env)
 
LEnvironment * environment () const
 
bool HasEnvironment () const
 
void set_pointer_map (LPointerMap *p)
 
LPointerMap * pointer_map () const
 
bool HasPointerMap () const
 
void set_hydrogen_value (HValue *value)
 
HValuehydrogen_value () const
 
virtual void SetDeferredLazyDeoptimizationEnvironment (LEnvironment *env)
 
void MarkAsCall ()
 
bool IsCall () const
 
bool ClobbersTemps () const
 
bool ClobbersRegisters () const
 
virtual bool ClobbersDoubleRegisters (Isolate *isolate) const
 
bool IsMarkedAsCall () const
 
LOperandFirstInput ()
 
LOperandOutput ()
 
virtual bool HasInterestingComment (LCodeGen *gen) const
 
 LInstruction ()
 
virtual ~LInstruction ()
 
virtual void CompileToNative (LCodeGen *generator)=0
 
virtual const char * Mnemonic () const =0
 
virtual void PrintTo (StringStream *stream)
 
virtual void PrintOutputOperandTo (StringStream *stream)
 
virtual Opcode opcode () const =0
 
virtual bool IsGap () const
 
virtual bool IsControl () const
 
virtual bool TryDelete ()
 
void set_environment (LEnvironment *env)
 
LEnvironment * environment () const
 
bool HasEnvironment () const
 
void set_pointer_map (LPointerMap *p)
 
LPointerMap * pointer_map () const
 
bool HasPointerMap () const
 
void set_hydrogen_value (HValue *value)
 
HValuehydrogen_value () const
 
virtual void SetDeferredLazyDeoptimizationEnvironment (LEnvironment *env)
 
void MarkAsCall ()
 
bool IsCall () const
 
bool ClobbersTemps () const
 
bool ClobbersRegisters () const
 
virtual bool ClobbersDoubleRegisters (Isolate *isolate) const
 
bool HasDoubleRegisterResult ()
 
bool HasDoubleRegisterInput ()
 
LOperandFirstInput ()
 
LOperandOutput ()
 
virtual bool HasInterestingComment (LCodeGen *gen) const
 
 LInstruction ()
 
virtual ~LInstruction ()
 
virtual void CompileToNative (LCodeGen *generator)=0
 
virtual const char * Mnemonic () const =0
 
virtual void PrintTo (StringStream *stream)
 
virtual void PrintOutputOperandTo (StringStream *stream)
 
virtual Opcode opcode () const =0
 
virtual bool IsGap () const
 
virtual bool IsControl () const
 
virtual bool TryDelete ()
 
void set_environment (LEnvironment *env)
 
LEnvironment * environment () const
 
bool HasEnvironment () const
 
void set_pointer_map (LPointerMap *p)
 
LPointerMap * pointer_map () const
 
bool HasPointerMap () const
 
void set_hydrogen_value (HValue *value)
 
HValuehydrogen_value () const
 
virtual void SetDeferredLazyDeoptimizationEnvironment (LEnvironment *env)
 
void MarkAsCall ()
 
bool IsCall () const
 
bool ClobbersTemps () const
 
bool ClobbersRegisters () const
 
virtual bool ClobbersDoubleRegisters (Isolate *isolate) const
 
bool IsMarkedAsCall () const
 
LOperandFirstInput ()
 
LOperandOutput ()
 
virtual bool HasInterestingComment (LCodeGen *gen) const
 
 LInstruction ()
 
virtual ~LInstruction ()
 
virtual void CompileToNative (LCodeGen *generator)=0
 
virtual const char * Mnemonic () const =0
 
virtual void PrintTo (StringStream *stream)
 
virtual void PrintOutputOperandTo (StringStream *stream)
 
virtual Opcode opcode () const =0
 
virtual bool IsGap () const
 
virtual bool IsControl () const
 
virtual bool TryDelete ()
 
void set_environment (LEnvironment *env)
 
LEnvironment * environment () const
 
bool HasEnvironment () const
 
void set_pointer_map (LPointerMap *p)
 
LPointerMap * pointer_map () const
 
bool HasPointerMap () const
 
void set_hydrogen_value (HValue *value)
 
HValuehydrogen_value () const
 
virtual void SetDeferredLazyDeoptimizationEnvironment (LEnvironment *env)
 
void MarkAsCall ()
 
bool IsCall () const
 
bool ClobbersTemps () const
 
bool ClobbersRegisters () const
 
virtual bool ClobbersDoubleRegisters (Isolate *isolate) const
 
bool IsMarkedAsCall () const
 
LOperandFirstInput ()
 
LOperandOutput ()
 
virtual bool HasInterestingComment (LCodeGen *gen) const
 
 LInstruction ()
 
virtual ~LInstruction ()
 
virtual void CompileToNative (LCodeGen *generator)=0
 
virtual const char * Mnemonic () const =0
 
virtual void PrintTo (StringStream *stream)
 
virtual void PrintOutputOperandTo (StringStream *stream)
 
virtual Opcode opcode () const =0
 
virtual bool IsGap () const
 
virtual bool IsControl () const
 
virtual bool TryDelete ()
 
void set_environment (LEnvironment *env)
 
LEnvironment * environment () const
 
bool HasEnvironment () const
 
void set_pointer_map (LPointerMap *p)
 
LPointerMap * pointer_map () const
 
bool HasPointerMap () const
 
void set_hydrogen_value (HValue *value)
 
HValuehydrogen_value () const
 
void MarkAsCall ()
 
bool IsCall () const
 
bool ClobbersTemps () const
 
bool ClobbersRegisters () const
 
virtual bool ClobbersDoubleRegisters (Isolate *isolate) const
 
virtual void SetDeferredLazyDeoptimizationEnvironment (LEnvironment *env)
 
bool IsMarkedAsCall () const
 
LOperandFirstInput ()
 
LOperandOutput ()
 
virtual bool HasInterestingComment (LCodeGen *gen) const
 
 LInstruction ()
 
virtual ~LInstruction ()
 
virtual void CompileToNative (LCodeGen *generator)=0
 
virtual const char * Mnemonic () const =0
 
virtual void PrintTo (StringStream *stream)
 
virtual void PrintOutputOperandTo (StringStream *stream)
 
virtual Opcode opcode () const =0
 
virtual bool IsGap () const
 
virtual bool IsControl () const
 
virtual bool TryDelete ()
 
void set_environment (LEnvironment *env)
 
LEnvironment * environment () const
 
bool HasEnvironment () const
 
void set_pointer_map (LPointerMap *p)
 
LPointerMap * pointer_map () const
 
bool HasPointerMap () const
 
void set_hydrogen_value (HValue *value)
 
HValuehydrogen_value () const
 
virtual void SetDeferredLazyDeoptimizationEnvironment (LEnvironment *env)
 
void MarkAsCall ()
 
bool IsCall () const
 
bool ClobbersTemps () const
 
bool ClobbersRegisters () const
 
virtual bool ClobbersDoubleRegisters (Isolate *isolate) const
 
bool HasDoubleRegisterResult ()
 
bool HasDoubleRegisterInput ()
 
bool IsDoubleInput (X87Register reg, LCodeGen *cgen)
 
LOperandFirstInput ()
 
LOperandOutput ()
 
virtual bool HasInterestingComment (LCodeGen *gen) const
 
- Public Member Functions inherited from v8::internal::ZoneObject
 INLINE (void *operator new(size_t size, Zone *zone))
 
void operator delete (void *, size_t)
 
void operator delete (void *pointer, Zone *zone)
 

Additional Inherited Members

- Public Types inherited from v8::internal::LInstruction
enum  Opcode {
  kNumberOfInstructions , kNumberOfInstructions , LITHIUM_CONCRETE_INSTRUCTION_LIST =(DECLARE_OPCODE) kAdapter , kNumberOfInstructions ,
  kNumberOfInstructions , kNumberOfInstructions , kNumberOfInstructions , LITHIUM_CONCRETE_INSTRUCTION_LIST =(DECLARE_OPCODE) kAdapter ,
  kNumberOfInstructions
}
 
enum  Opcode {
  kNumberOfInstructions , kNumberOfInstructions , LITHIUM_CONCRETE_INSTRUCTION_LIST =(DECLARE_OPCODE) kAdapter , kNumberOfInstructions ,
  kNumberOfInstructions , kNumberOfInstructions , kNumberOfInstructions , LITHIUM_CONCRETE_INSTRUCTION_LIST =(DECLARE_OPCODE) kAdapter ,
  kNumberOfInstructions
}
 
enum  Opcode {
  kNumberOfInstructions , kNumberOfInstructions , LITHIUM_CONCRETE_INSTRUCTION_LIST =(DECLARE_OPCODE) kAdapter , kNumberOfInstructions ,
  kNumberOfInstructions , kNumberOfInstructions , kNumberOfInstructions , LITHIUM_CONCRETE_INSTRUCTION_LIST =(DECLARE_OPCODE) kAdapter ,
  kNumberOfInstructions
}
 
enum  Opcode {
  kNumberOfInstructions , kNumberOfInstructions , LITHIUM_CONCRETE_INSTRUCTION_LIST =(DECLARE_OPCODE) kAdapter , kNumberOfInstructions ,
  kNumberOfInstructions , kNumberOfInstructions , kNumberOfInstructions , LITHIUM_CONCRETE_INSTRUCTION_LIST =(DECLARE_OPCODE) kAdapter ,
  kNumberOfInstructions
}
 
enum  Opcode {
  kNumberOfInstructions , kNumberOfInstructions , LITHIUM_CONCRETE_INSTRUCTION_LIST =(DECLARE_OPCODE) kAdapter , kNumberOfInstructions ,
  kNumberOfInstructions , kNumberOfInstructions , kNumberOfInstructions , LITHIUM_CONCRETE_INSTRUCTION_LIST =(DECLARE_OPCODE) kAdapter ,
  kNumberOfInstructions
}
 
enum  Opcode {
  kNumberOfInstructions , kNumberOfInstructions , LITHIUM_CONCRETE_INSTRUCTION_LIST =(DECLARE_OPCODE) kAdapter , kNumberOfInstructions ,
  kNumberOfInstructions , kNumberOfInstructions , kNumberOfInstructions , LITHIUM_CONCRETE_INSTRUCTION_LIST =(DECLARE_OPCODE) kAdapter ,
  kNumberOfInstructions
}
 
enum  Opcode {
  kNumberOfInstructions , kNumberOfInstructions , LITHIUM_CONCRETE_INSTRUCTION_LIST =(DECLARE_OPCODE) kAdapter , kNumberOfInstructions ,
  kNumberOfInstructions , kNumberOfInstructions , kNumberOfInstructions , LITHIUM_CONCRETE_INSTRUCTION_LIST =(DECLARE_OPCODE) kAdapter ,
  kNumberOfInstructions
}
 
- Protected Attributes inherited from v8::internal::LTemplateInstruction< 0, 3, T >
EmbeddedContainer< LOperand *, Iinputs_
 
EmbeddedContainer< LOperand *, Ttemps_
 
- Protected Attributes inherited from v8::internal::LTemplateResultInstruction< R >
EmbeddedContainer< LOperand *, R > results_
 

Detailed Description

template<int T>
class v8::internal::LStoreKeyed< T >

Definition at line 2471 of file lithium-arm64.h.

Constructor & Destructor Documentation

◆ LStoreKeyed()

template<int T>
v8::internal::LStoreKeyed< T >::LStoreKeyed ( LOperand elements,
LOperand key,
LOperand value 
)
inline

Definition at line 2473 of file lithium-arm64.h.

2473  {
2474  this->inputs_[0] = elements;
2475  this->inputs_[1] = key;
2476  this->inputs_[2] = value;
2477  }
EmbeddedContainer< LOperand *, I > inputs_
Definition: lithium-arm.h:311

Member Function Documentation

◆ base_offset()

template<int T>
uint32_t v8::internal::LStoreKeyed< T >::base_offset ( ) const
inline

Definition at line 2500 of file lithium-arm64.h.

2500 { return this->hydrogen()->base_offset(); }

Referenced by v8::internal::LCodeGen::DoStoreKeyedExternalArray(), v8::internal::LCodeGen::DoStoreKeyedFixedArray(), and v8::internal::LCodeGen::DoStoreKeyedFixedDoubleArray().

+ Here is the caller graph for this function:

◆ elements()

template<int T>
LOperand* v8::internal::LStoreKeyed< T >::elements ( )
inline

Definition at line 2486 of file lithium-arm64.h.

2486 { return this->inputs_[0]; }

Referenced by v8::internal::LCodeGen::DoStoreKeyedExternalArray(), v8::internal::LCodeGen::DoStoreKeyedFixedArray(), and v8::internal::LCodeGen::DoStoreKeyedFixedDoubleArray().

+ Here is the caller graph for this function:

◆ elements_kind()

template<int T>
ElementsKind v8::internal::LStoreKeyed< T >::elements_kind ( ) const
inline

Definition at line 2489 of file lithium-arm64.h.

2489  {
2490  return this->hydrogen()->elements_kind();
2491  }

Referenced by v8::internal::LCodeGen::DoStoreKeyedExternalArray().

+ Here is the caller graph for this function:

◆ is_external()

template<int T>
bool v8::internal::LStoreKeyed< T >::is_external ( ) const
inline

Definition at line 2479 of file lithium-arm64.h.

2479 { return this->hydrogen()->is_external(); }

◆ is_fixed_typed_array()

template<int T>
bool v8::internal::LStoreKeyed< T >::is_fixed_typed_array ( ) const
inline

Definition at line 2480 of file lithium-arm64.h.

2480  {
2481  return hydrogen()->is_fixed_typed_array();
2482  }

◆ is_typed_elements()

template<int T>
bool v8::internal::LStoreKeyed< T >::is_typed_elements ( ) const
inline

Definition at line 2483 of file lithium-arm64.h.

2483  {
2484  return is_external() || is_fixed_typed_array();
2485  }
bool is_fixed_typed_array() const

◆ key()

template<int T>
LOperand* v8::internal::LStoreKeyed< T >::key ( )
inline

Definition at line 2487 of file lithium-arm64.h.

2487 { return this->inputs_[1]; }

Referenced by v8::internal::LCodeGen::DoStoreKeyedExternalArray(), v8::internal::LCodeGen::DoStoreKeyedFixedArray(), and v8::internal::LCodeGen::DoStoreKeyedFixedDoubleArray().

+ Here is the caller graph for this function:

◆ NeedsCanonicalization()

template<int T>
bool v8::internal::LStoreKeyed< T >::NeedsCanonicalization ( )
inline

Definition at line 2493 of file lithium-arm64.h.

2493  {
2494  if (hydrogen()->value()->IsAdd() || hydrogen()->value()->IsSub() ||
2495  hydrogen()->value()->IsMul() || hydrogen()->value()->IsDiv()) {
2496  return false;
2497  }
2498  return this->hydrogen()->NeedsCanonicalization();
2499  }

Referenced by v8::internal::LCodeGen::DoStoreKeyedFixedDoubleArray().

+ Here is the caller graph for this function:

◆ PrintDataTo()

template<int T>
void v8::internal::LStoreKeyed< T >::PrintDataTo ( StringStream *  stream)
inlinevirtual

Reimplemented from v8::internal::LInstruction.

Definition at line 2502 of file lithium-arm64.h.

2502  {
2503  this->elements()->PrintTo(stream);
2504  stream->Add("[");
2505  this->key()->PrintTo(stream);
2506  if (this->base_offset() != 0) {
2507  stream->Add(" + %d] <-", this->base_offset());
2508  } else {
2509  stream->Add("] <- ");
2510  }
2511 
2512  if (this->value() == NULL) {
2513  DCHECK(hydrogen()->IsConstantHoleStore() &&
2514  hydrogen()->value()->representation().IsDouble());
2515  stream->Add("<the hole(nan)>");
2516  } else {
2517  this->value()->PrintTo(stream);
2518  }
2519  }
void PrintTo(StringStream *stream)
Definition: lithium.cc:41
uint32_t base_offset() const
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
#define DCHECK(condition)
Definition: logging.h:205

References DCHECK, and NULL.

◆ value()

template<int T>
LOperand* v8::internal::LStoreKeyed< T >::value ( )
inline

Definition at line 2488 of file lithium-arm64.h.

2488 { return this->inputs_[2]; }

Referenced by v8::internal::LCodeGen::DoStoreKeyedExternalArray(), v8::internal::LCodeGen::DoStoreKeyedFixedArray(), and v8::internal::LCodeGen::DoStoreKeyedFixedDoubleArray().

+ Here is the caller graph for this function:

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