V8 Project
hydrogen-instructions.h File Reference
#include "src/v8.h"
#include "src/allocation.h"
#include "src/base/bits.h"
#include "src/code-stubs.h"
#include "src/conversions.h"
#include "src/data-flow.h"
#include "src/deoptimizer.h"
#include "src/feedback-slots.h"
#include "src/hydrogen-types.h"
#include "src/small-pointer-list.h"
#include "src/unique.h"
#include "src/utils.h"
#include "src/zone.h"
+ Include dependency graph for hydrogen-instructions.h:
+ This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

class  v8::internal::FINAL< kOperandKind, kNumCachedOperands >
 Source to read snapshot and builtins files from. More...
 
class  v8::internal::HUseListNode
 
class  v8::internal::BASE_EMBEDDED< Visitor >
 
class  v8::internal::HSourcePosition
 
class  v8::internal::HValue
 
struct  v8::internal::NameOf
 
struct  v8::internal::TypeOf
 
struct  v8::internal::ChangesOf
 
class  v8::internal::HPositionInfo
 
class  v8::internal::HInstruction
 
class  v8::internal::HTemplateInstruction< V >
 
class  v8::internal::HControlInstruction
 
class  v8::internal::HTemplateControlInstruction< S, V >
 
class  v8::internal::HUnaryControlInstruction
 
class  v8::internal::HUnaryOperation
 
class  v8::internal::HCall< V >
 
class  v8::internal::HUnaryCall
 
class  v8::internal::HBinaryCall
 
struct  v8::internal::InductionVariableLimitUpdate
 
class  v8::internal::FINAL< kOperandKind, kNumCachedOperands >::InductionVariableCheck
 
class  v8::internal::FINAL< kOperandKind, kNumCachedOperands >::ChecksRelatedToLength
 
struct  v8::internal::FINAL< kOperandKind, kNumCachedOperands >::LimitFromPredecessorBlock
 
struct  v8::internal::FINAL< kOperandKind, kNumCachedOperands >::BitwiseDecompositionResult
 
class  v8::internal::HDematerializedObject
 
class  v8::internal::HBinaryOperation
 
class  v8::internal::HBitwiseBinaryOperation
 
class  v8::internal::HArithmeticBinaryOperation
 
class  v8::internal::HCompareNumericAndBranch
 
class  v8::internal::HCompareObjectEqAndBranch
 
class  v8::internal::HStringCompareAndBranch
 
class  v8::internal::HIsConstructCallAndBranch
 
class  v8::internal::FINAL< kOperandKind, kNumCachedOperands >::PortionField
 
class  v8::internal::FINAL< kOperandKind, kNumCachedOperands >::RepresentationField
 
class  v8::internal::FINAL< kOperandKind, kNumCachedOperands >::ImmutableField
 
class  v8::internal::FINAL< kOperandKind, kNumCachedOperands >::ExistingInobjectPropertyField
 
class  v8::internal::FINAL< kOperandKind, kNumCachedOperands >::OffsetField
 
class  v8::internal::ArrayInstructionInterface
 
class  v8::internal::FINAL< kOperandKind, kNumCachedOperands >::ElementsKindField
 
class  v8::internal::FINAL< kOperandKind, kNumCachedOperands >::HoleModeField
 
class  v8::internal::FINAL< kOperandKind, kNumCachedOperands >::BaseOffsetField
 
class  v8::internal::FINAL< kOperandKind, kNumCachedOperands >::IsDehoistedField
 
class  v8::internal::HMaterializedLiteral< V >
 
class  v8::internal::HStoreFrameContext
 
class  v8::internal::HAllocateBlockContext
 

Namespaces

 v8
 Debugger support for the V8 JavaScript engine.
 
 v8::internal
 

Macros

#define HYDROGEN_ABSTRACT_INSTRUCTION_LIST(V)
 
#define HYDROGEN_CONCRETE_INSTRUCTION_LIST(V)
 
#define GVN_TRACKED_FLAG_LIST(V)    V(NewSpacePromotion)
 
#define GVN_UNTRACKED_FLAG_LIST(V)
 
#define DECLARE_ABSTRACT_INSTRUCTION(type)
 
#define DECLARE_CONCRETE_INSTRUCTION(type)
 
#define DECLARE_FLAG(Type)   k##Type,
 
#define COUNT_FLAG(Type)   + 1
 
#define DECLARE_OPCODE(type)   k##type,
 
#define DECLARE_PREDICATE(type)    bool Is##type() const { return opcode() == k##type; }
 
#define DECLARE_PREDICATE(type)    virtual bool Is##type() const { return false; }
 
#define ADD_FLAG(Type)   result.Add(k##Type);
 
#define DECLARE_INSTRUCTION_FACTORY_P0(I)
 
#define DECLARE_INSTRUCTION_FACTORY_P1(I, P1)
 
#define DECLARE_INSTRUCTION_FACTORY_P2(I, P1, P2)
 
#define DECLARE_INSTRUCTION_FACTORY_P3(I, P1, P2, P3)
 
#define DECLARE_INSTRUCTION_FACTORY_P4(I, P1, P2, P3, P4)
 
#define DECLARE_INSTRUCTION_FACTORY_P5(I, P1, P2, P3, P4, P5)
 
#define DECLARE_INSTRUCTION_FACTORY_P6(I, P1, P2, P3, P4, P5, P6)
 
#define DECLARE_INSTRUCTION_WITH_CONTEXT_FACTORY_P0(I)
 
#define DECLARE_INSTRUCTION_WITH_CONTEXT_FACTORY_P1(I, P1)
 
#define DECLARE_INSTRUCTION_WITH_CONTEXT_FACTORY_P2(I, P1, P2)
 
#define DECLARE_INSTRUCTION_WITH_CONTEXT_FACTORY_P3(I, P1, P2, P3)
 
#define DECLARE_INSTRUCTION_WITH_CONTEXT_FACTORY_P4(I, P1, P2, P3, P4)
 
#define DECLARE_INSTRUCTION_WITH_CONTEXT_FACTORY_P5(I, P1, P2, P3, P4, P5)
 

Typedefs

typedef EnumSet< GVNFlag, int32_t > v8::internal::GVNFlagSet
 

Enumerations

enum  v8::internal::PropertyAccessType { v8::internal::LOAD , v8::internal::STORE }
 
enum  v8::internal::GVNFlag { v8::internal::kNumberOfTrackedSideEffects = 0 GVN_TRACKED_FLAG_LIST(COUNT_FLAG) , v8::internal::kNumberOfUntrackedSideEffects = 0 GVN_UNTRACKED_FLAG_LIST(COUNT_FLAG) , v8::internal::kNumberOfFlags = kNumberOfTrackedSideEffects + kNumberOfUntrackedSideEffects }
 
enum  v8::internal::RemovableSimulate { v8::internal::REMOVABLE_SIMULATE , v8::internal::FIXED_SIMULATE }
 
enum  v8::internal::InliningKind { v8::internal::NORMAL_RETURN , v8::internal::CONSTRUCT_CALL_RETURN , v8::internal::GETTER_CALL_RETURN , v8::internal::SETTER_CALL_RETURN }
 
enum  v8::internal::LoadKeyedHoleMode { v8::internal::NEVER_RETURN_HOLE , v8::internal::ALLOW_RETURN_HOLE }
 
enum  v8::internal::StoreFieldOrKeyedMode { v8::internal::INITIALIZING_STORE , v8::internal::STORE_TO_INITIALIZED_ENTRY }
 

Functions

static GVNFlag v8::internal::GVNFlagFromInt (int i)
 
OStream & v8::internal::operator<< (OStream &os, const HSourcePosition &p)
 
OStream & v8::internal::operator<< (OStream &os, const HValue &v)
 
OStream & v8::internal::operator<< (OStream &os, const NameOf &v)
 
OStream & v8::internal::operator<< (OStream &os, const TypeOf &t)
 
OStream & v8::internal::operator<< (OStream &os, const ChangesOf &c)
 
bool v8::internal::StoringValueNeedsWriteBarrier (HValue *value)
 
bool v8::internal::ReceiverObjectNeedsWriteBarrier (HValue *object, HValue *value, HValue *dominator)
 
PointersToHereCheck v8::internal::PointersToHereCheckForObject (HValue *object, HValue *dominator)
 
OStream & v8::internal::operator<< (OStream &os, const HObjectAccess &access)
 

Variables

static const int v8::internal::kDefaultKeyedHeaderOffsetSentinel = -1
 

Macro Definition Documentation

◆ ADD_FLAG

#define ADD_FLAG (   Type)    result.Add(k##Type);

◆ COUNT_FLAG

#define COUNT_FLAG (   Type)    + 1

Definition at line 354 of file hydrogen-instructions.h.

◆ DECLARE_ABSTRACT_INSTRUCTION

#define DECLARE_ABSTRACT_INSTRUCTION (   type)
Value:
virtual bool Is##type() const FINAL OVERRIDE { return true; } \
static H##type* cast(HValue* value) { \
DCHECK(value->Is##type()); \
return reinterpret_cast<H##type*>(value); \
}
#define OVERRIDE
#define FINAL
bool Is(Object *obj)

Definition at line 193 of file hydrogen-instructions.h.

◆ DECLARE_CONCRETE_INSTRUCTION

#define DECLARE_CONCRETE_INSTRUCTION (   type)
Value:
virtual LInstruction* CompileToLithium( \
LChunkBuilder* builder) FINAL OVERRIDE; \
static H##type* cast(HValue* value) { \
DCHECK(value->Is##type()); \
return reinterpret_cast<H##type*>(value); \
} \
virtual Opcode opcode() const FINAL OVERRIDE { \
return HValue::k##type; \
}

Definition at line 201 of file hydrogen-instructions.h.

◆ DECLARE_FLAG

#define DECLARE_FLAG (   Type)    k##Type,

Definition at line 350 of file hydrogen-instructions.h.

◆ DECLARE_INSTRUCTION_FACTORY_P0

#define DECLARE_INSTRUCTION_FACTORY_P0 (   I)
Value:
static I* New(Zone* zone, HValue* context) { \
return new(zone) I(); \
}
#define I(name, number_of_args, result_size)
Definition: runtime.cc:9248

Definition at line 957 of file hydrogen-instructions.h.

◆ DECLARE_INSTRUCTION_FACTORY_P1

#define DECLARE_INSTRUCTION_FACTORY_P1 (   I,
  P1 
)
Value:
static I* New(Zone* zone, HValue* context, P1 p1) { \
return new(zone) I(p1); \
}

Definition at line 962 of file hydrogen-instructions.h.

◆ DECLARE_INSTRUCTION_FACTORY_P2

#define DECLARE_INSTRUCTION_FACTORY_P2 (   I,
  P1,
  P2 
)
Value:
static I* New(Zone* zone, HValue* context, P1 p1, P2 p2) { \
return new(zone) I(p1, p2); \
}

Definition at line 967 of file hydrogen-instructions.h.

◆ DECLARE_INSTRUCTION_FACTORY_P3

#define DECLARE_INSTRUCTION_FACTORY_P3 (   I,
  P1,
  P2,
  P3 
)
Value:
static I* New(Zone* zone, HValue* context, P1 p1, P2 p2, P3 p3) { \
return new(zone) I(p1, p2, p3); \
}

Definition at line 972 of file hydrogen-instructions.h.

◆ DECLARE_INSTRUCTION_FACTORY_P4

#define DECLARE_INSTRUCTION_FACTORY_P4 (   I,
  P1,
  P2,
  P3,
  P4 
)
Value:
static I* New(Zone* zone, \
HValue* context, \
P1 p1, \
P2 p2, \
P3 p3, \
P4 p4) { \
return new(zone) I(p1, p2, p3, p4); \
}

Definition at line 977 of file hydrogen-instructions.h.

◆ DECLARE_INSTRUCTION_FACTORY_P5

#define DECLARE_INSTRUCTION_FACTORY_P5 (   I,
  P1,
  P2,
  P3,
  P4,
  P5 
)
Value:
static I* New(Zone* zone, \
HValue* context, \
P1 p1, \
P2 p2, \
P3 p3, \
P4 p4, \
P5 p5) { \
return new(zone) I(p1, p2, p3, p4, p5); \
}

Definition at line 987 of file hydrogen-instructions.h.

◆ DECLARE_INSTRUCTION_FACTORY_P6

#define DECLARE_INSTRUCTION_FACTORY_P6 (   I,
  P1,
  P2,
  P3,
  P4,
  P5,
  P6 
)
Value:
static I* New(Zone* zone, \
HValue* context, \
P1 p1, \
P2 p2, \
P3 p3, \
P4 p4, \
P5 p5, \
P6 p6) { \
return new(zone) I(p1, p2, p3, p4, p5, p6); \
}

Definition at line 998 of file hydrogen-instructions.h.

◆ DECLARE_INSTRUCTION_WITH_CONTEXT_FACTORY_P0

#define DECLARE_INSTRUCTION_WITH_CONTEXT_FACTORY_P0 (   I)
Value:
static I* New(Zone* zone, HValue* context) { \
return new(zone) I(context); \
}

Definition at line 1010 of file hydrogen-instructions.h.

◆ DECLARE_INSTRUCTION_WITH_CONTEXT_FACTORY_P1

#define DECLARE_INSTRUCTION_WITH_CONTEXT_FACTORY_P1 (   I,
  P1 
)
Value:
static I* New(Zone* zone, HValue* context, P1 p1) { \
return new(zone) I(context, p1); \
}

Definition at line 1015 of file hydrogen-instructions.h.

◆ DECLARE_INSTRUCTION_WITH_CONTEXT_FACTORY_P2

#define DECLARE_INSTRUCTION_WITH_CONTEXT_FACTORY_P2 (   I,
  P1,
  P2 
)
Value:
static I* New(Zone* zone, HValue* context, P1 p1, P2 p2) { \
return new(zone) I(context, p1, p2); \
}

Definition at line 1020 of file hydrogen-instructions.h.

◆ DECLARE_INSTRUCTION_WITH_CONTEXT_FACTORY_P3

#define DECLARE_INSTRUCTION_WITH_CONTEXT_FACTORY_P3 (   I,
  P1,
  P2,
  P3 
)
Value:
static I* New(Zone* zone, HValue* context, P1 p1, P2 p2, P3 p3) { \
return new(zone) I(context, p1, p2, p3); \
}

Definition at line 1025 of file hydrogen-instructions.h.

◆ DECLARE_INSTRUCTION_WITH_CONTEXT_FACTORY_P4

#define DECLARE_INSTRUCTION_WITH_CONTEXT_FACTORY_P4 (   I,
  P1,
  P2,
  P3,
  P4 
)
Value:
static I* New(Zone* zone, \
HValue* context, \
P1 p1, \
P2 p2, \
P3 p3, \
P4 p4) { \
return new(zone) I(context, p1, p2, p3, p4); \
}

Definition at line 1030 of file hydrogen-instructions.h.

◆ DECLARE_INSTRUCTION_WITH_CONTEXT_FACTORY_P5

#define DECLARE_INSTRUCTION_WITH_CONTEXT_FACTORY_P5 (   I,
  P1,
  P2,
  P3,
  P4,
  P5 
)
Value:
static I* New(Zone* zone, \
HValue* context, \
P1 p1, \
P2 p2, \
P3 p3, \
P4 p4, \
P5 p5) { \
return new(zone) I(context, p1, p2, p3, p4, p5); \
}

Definition at line 1040 of file hydrogen-instructions.h.

◆ DECLARE_OPCODE

#define DECLARE_OPCODE (   type)    k##type,

Definition at line 532 of file hydrogen-instructions.h.

◆ DECLARE_PREDICATE [1/2]

#define DECLARE_PREDICATE (   type)     bool Is##type() const { return opcode() == k##type; }

Definition at line 547 of file hydrogen-instructions.h.

◆ DECLARE_PREDICATE [2/2]

#define DECLARE_PREDICATE (   type)     virtual bool Is##type() const { return false; }

Definition at line 547 of file hydrogen-instructions.h.

◆ GVN_TRACKED_FLAG_LIST

#define GVN_TRACKED_FLAG_LIST (   V)     V(NewSpacePromotion)

Definition at line 170 of file hydrogen-instructions.h.

◆ GVN_UNTRACKED_FLAG_LIST

#define GVN_UNTRACKED_FLAG_LIST (   V)
Value:
V(ArrayElements) \
V(ArrayLengths) \
V(StringLengths) \
V(BackingStoreFields) \
V(Calls) \
V(ContextSlots) \
V(DoubleArrayElements) \
V(DoubleFields) \
V(ElementsPointer) \
V(GlobalVars) \
V(InobjectFields) \
V(Maps) \
V(OsrEntries) \
V(ExternalMemory) \
V(StringChars) \
V(TypedArrayElements)
#define V(NAME, Name, id)
Definition: execution.h:170

Definition at line 173 of file hydrogen-instructions.h.

◆ HYDROGEN_ABSTRACT_INSTRUCTION_LIST

#define HYDROGEN_ABSTRACT_INSTRUCTION_LIST (   V)
Value:
V(ArithmeticBinaryOperation) \
V(BinaryOperation) \
V(BitwiseBinaryOperation) \
V(ControlInstruction) \
V(Instruction)

Definition at line 40 of file hydrogen-instructions.h.

◆ HYDROGEN_CONCRETE_INSTRUCTION_LIST

#define HYDROGEN_CONCRETE_INSTRUCTION_LIST (   V)

Definition at line 48 of file hydrogen-instructions.h.