v8  3.25.30(node0.11.13)
V8 is Google's open source JavaScript engine
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
hydrogen-instructions.h File Reference
#include "v8.h"
#include "allocation.h"
#include "code-stubs.h"
#include "data-flow.h"
#include "deoptimizer.h"
#include "small-pointer-list.h"
#include "string-stream.h"
#include "unique.h"
#include "v8conversions.h"
#include "v8utils.h"
#include "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.

Data Structures

class  V8_FINAL< kOperandKind, kNumCachedOperands >
 
class  V8_FINAL< kOperandKind, kNumCachedOperands >
 
class  HUseListNode
 
class  BASE_EMBEDDED< Visitor >
 
class  BASE_EMBEDDED< Visitor >
 
class  HSourcePosition
 
class  HValue
 
class  HPositionInfo
 
class  HInstruction
 
class  HTemplateInstruction< V >
 
class  HControlInstruction
 
class  BASE_EMBEDDED< Visitor >
 
class  HTemplateControlInstruction< S, V >
 
class  V8_FINAL< kOperandKind, kNumCachedOperands >
 
class  V8_FINAL< kOperandKind, kNumCachedOperands >
 
class  V8_FINAL< kOperandKind, kNumCachedOperands >
 
class  V8_FINAL< kOperandKind, kNumCachedOperands >
 
class  V8_FINAL< kOperandKind, kNumCachedOperands >
 
class  HUnaryControlInstruction
 
class  V8_FINAL< kOperandKind, kNumCachedOperands >
 
class  V8_FINAL< kOperandKind, kNumCachedOperands >
 
class  V8_FINAL< kOperandKind, kNumCachedOperands >
 
class  V8_FINAL< kOperandKind, kNumCachedOperands >
 
class  V8_FINAL< kOperandKind, kNumCachedOperands >
 
class  HUnaryOperation
 
class  V8_FINAL< kOperandKind, kNumCachedOperands >
 
class  V8_FINAL< kOperandKind, kNumCachedOperands >
 
class  V8_FINAL< kOperandKind, kNumCachedOperands >
 
class  V8_FINAL< kOperandKind, kNumCachedOperands >
 
class  V8_FINAL< kOperandKind, kNumCachedOperands >
 
class  V8_FINAL< kOperandKind, kNumCachedOperands >
 
class  V8_FINAL< kOperandKind, kNumCachedOperands >
 
class  V8_FINAL< kOperandKind, kNumCachedOperands >
 
class  V8_FINAL< kOperandKind, kNumCachedOperands >
 
class  V8_FINAL< kOperandKind, kNumCachedOperands >
 
class  V8_FINAL< kOperandKind, kNumCachedOperands >
 
class  V8_FINAL< kOperandKind, kNumCachedOperands >
 
class  V8_FINAL< kOperandKind, kNumCachedOperands >
 
class  V8_FINAL< kOperandKind, kNumCachedOperands >
 
class  HCall< V >
 
class  HUnaryCall
 
class  HBinaryCall
 
class  V8_FINAL< kOperandKind, kNumCachedOperands >
 
class  V8_FINAL< kOperandKind, kNumCachedOperands >
 
class  V8_FINAL< kOperandKind, kNumCachedOperands >
 
class  V8_FINAL< kOperandKind, kNumCachedOperands >
 
class  V8_FINAL< kOperandKind, kNumCachedOperands >
 
class  V8_FINAL< kOperandKind, kNumCachedOperands >
 
class  V8_FINAL< kOperandKind, kNumCachedOperands >
 
class  V8_FINAL< kOperandKind, kNumCachedOperands >
 
class  V8_FINAL< kOperandKind, kNumCachedOperands >
 
class  V8_FINAL< kOperandKind, kNumCachedOperands >
 
class  V8_FINAL< kOperandKind, kNumCachedOperands >
 
class  V8_FINAL< kOperandKind, kNumCachedOperands >
 
class  V8_FINAL< kOperandKind, kNumCachedOperands >
 
class  V8_FINAL< kOperandKind, kNumCachedOperands >
 
class  V8_FINAL< kOperandKind, kNumCachedOperands >
 
struct  InductionVariableLimitUpdate
 
class  V8_FINAL< kOperandKind, kNumCachedOperands >
 
class  V8_FINAL< kOperandKind, kNumCachedOperands >::InductionVariableCheck
 
class  V8_FINAL< kOperandKind, kNumCachedOperands >::ChecksRelatedToLength
 
struct  V8_FINAL< kOperandKind, kNumCachedOperands >::LimitFromPredecessorBlock
 
struct  V8_FINAL< kOperandKind, kNumCachedOperands >::BitwiseDecompositionResult
 
class  V8_FINAL< kOperandKind, kNumCachedOperands >
 
class  HDematerializedObject
 
class  V8_FINAL< kOperandKind, kNumCachedOperands >
 
class  V8_FINAL< kOperandKind, kNumCachedOperands >
 
class  V8_FINAL< kOperandKind, kNumCachedOperands >
 
class  HBinaryOperation
 
class  V8_FINAL< kOperandKind, kNumCachedOperands >
 
class  V8_FINAL< kOperandKind, kNumCachedOperands >
 
class  V8_FINAL< kOperandKind, kNumCachedOperands >
 
class  V8_FINAL< kOperandKind, kNumCachedOperands >
 
class  V8_FINAL< kOperandKind, kNumCachedOperands >
 
class  V8_FINAL< kOperandKind, kNumCachedOperands >
 
class  V8_FINAL< kOperandKind, kNumCachedOperands >
 
class  HBitwiseBinaryOperation
 
class  V8_FINAL< kOperandKind, kNumCachedOperands >
 
class  HArithmeticBinaryOperation
 
class  V8_FINAL< kOperandKind, kNumCachedOperands >
 
class  HCompareNumericAndBranch
 
class  V8_FINAL< kOperandKind, kNumCachedOperands >
 
class  V8_FINAL< kOperandKind, kNumCachedOperands >
 
class  HCompareObjectEqAndBranch
 
class  V8_FINAL< kOperandKind, kNumCachedOperands >
 
class  V8_FINAL< kOperandKind, kNumCachedOperands >
 
class  V8_FINAL< kOperandKind, kNumCachedOperands >
 
class  V8_FINAL< kOperandKind, kNumCachedOperands >
 
class  HStringCompareAndBranch
 
class  HIsConstructCallAndBranch
 
class  V8_FINAL< kOperandKind, kNumCachedOperands >
 
class  V8_FINAL< kOperandKind, kNumCachedOperands >
 
class  V8_FINAL< kOperandKind, kNumCachedOperands >
 
class  V8_FINAL< kOperandKind, kNumCachedOperands >
 
class  V8_FINAL< kOperandKind, kNumCachedOperands >
 
class  V8_FINAL< kOperandKind, kNumCachedOperands >
 
class  V8_FINAL< kOperandKind, kNumCachedOperands >
 
class  V8_FINAL< kOperandKind, kNumCachedOperands >
 
class  V8_FINAL< kOperandKind, kNumCachedOperands >
 
class  V8_FINAL< kOperandKind, kNumCachedOperands >
 
class  V8_FINAL< kOperandKind, kNumCachedOperands >
 
class  V8_FINAL< kOperandKind, kNumCachedOperands >
 
class  V8_FINAL< kOperandKind, kNumCachedOperands >
 
class  V8_FINAL< kOperandKind, kNumCachedOperands >
 
class  V8_FINAL< kOperandKind, kNumCachedOperands >
 
class  V8_FINAL< kOperandKind, kNumCachedOperands >
 
class  V8_FINAL< kOperandKind, kNumCachedOperands >
 
class  V8_FINAL< kOperandKind, kNumCachedOperands >
 
class  V8_FINAL< kOperandKind, kNumCachedOperands >
 
class  V8_FINAL< kOperandKind, kNumCachedOperands >
 
class  V8_FINAL< kOperandKind, kNumCachedOperands >
 
class  V8_FINAL< kOperandKind, kNumCachedOperands >
 
class  V8_FINAL< kOperandKind, kNumCachedOperands >
 
class  V8_FINAL< kOperandKind, kNumCachedOperands >
 
class  V8_FINAL< kOperandKind, kNumCachedOperands >
 
class  V8_FINAL< kOperandKind, kNumCachedOperands >
 
class  V8_FINAL< kOperandKind, kNumCachedOperands >
 
class  V8_FINAL< kOperandKind, kNumCachedOperands >
 
class  V8_FINAL< kOperandKind, kNumCachedOperands >
 
class  V8_FINAL< kOperandKind, kNumCachedOperands >
 
class  V8_FINAL< kOperandKind, kNumCachedOperands >
 
class  V8_FINAL< kOperandKind, kNumCachedOperands >
 
class  V8_FINAL< kOperandKind, kNumCachedOperands >
 
class  V8_FINAL< kOperandKind, kNumCachedOperands >
 
class  V8_FINAL< kOperandKind, kNumCachedOperands >
 
class  ArrayInstructionInterface
 
class  V8_FINAL< kOperandKind, kNumCachedOperands >
 
class  V8_FINAL< kOperandKind, kNumCachedOperands >
 
class  V8_FINAL< kOperandKind, kNumCachedOperands >
 
class  V8_FINAL< kOperandKind, kNumCachedOperands >
 
class  V8_FINAL< kOperandKind, kNumCachedOperands >
 
class  V8_FINAL< kOperandKind, kNumCachedOperands >
 
class  V8_FINAL< kOperandKind, kNumCachedOperands >
 
class  V8_FINAL< kOperandKind, kNumCachedOperands >
 
class  V8_FINAL< kOperandKind, kNumCachedOperands >
 
class  V8_FINAL< kOperandKind, kNumCachedOperands >
 
class  HMaterializedLiteral< V >
 
class  V8_FINAL< kOperandKind, kNumCachedOperands >
 
class  V8_FINAL< kOperandKind, kNumCachedOperands >
 
class  V8_FINAL< kOperandKind, kNumCachedOperands >
 
class  V8_FINAL< kOperandKind, kNumCachedOperands >
 
class  V8_FINAL< kOperandKind, kNumCachedOperands >
 
class  V8_FINAL< kOperandKind, kNumCachedOperands >
 
class  V8_FINAL< kOperandKind, kNumCachedOperands >
 
class  V8_FINAL< kOperandKind, kNumCachedOperands >
 
class  V8_FINAL< kOperandKind, kNumCachedOperands >
 
class  V8_FINAL< kOperandKind, kNumCachedOperands >
 
class  V8_FINAL< kOperandKind, kNumCachedOperands >
 
class  V8_FINAL< kOperandKind, kNumCachedOperands >
 

Namespaces

 v8
 
 v8::internal
 

Macros

#define HYDROGEN_ABSTRACT_INSTRUCTION_LIST(V)
 
#define HYDROGEN_CONCRETE_INSTRUCTION_LIST(V)
 
#define GVN_TRACKED_FLAG_LIST(V)
 
#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_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 > GVNFlagSet
 

Enumerations

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

Functions

bool StoringValueNeedsWriteBarrier (HValue *value)
 
bool ReceiverObjectNeedsWriteBarrier (HValue *object, HValue *value, HValue *new_space_dominator)
 

Macro Definition Documentation

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

Referenced by HValue::AllFlagSet().

#define COUNT_FLAG (   Type)    + 1

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

#define DECLARE_ABSTRACT_INSTRUCTION (   type)
Value:
virtual bool Is##type() const V8_FINAL V8_OVERRIDE { return true; } \
static H##type* cast(HValue* value) { \
ASSERT(value->Is##type()); \
return reinterpret_cast<H##type*>(value); \
}
#define ASSERT(condition)
Definition: checks.h:329
bool Is(Object *obj)
#define V8_OVERRIDE
Definition: v8config.h:402

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

#define DECLARE_CONCRETE_INSTRUCTION (   type)
Value:
virtual LInstruction* CompileToLithium( \
LChunkBuilder* builder) V8_FINAL V8_OVERRIDE; \
static H##type* cast(HValue* value) { \
ASSERT(value->Is##type()); \
return reinterpret_cast<H##type*>(value); \
} \
virtual Opcode opcode() const V8_FINAL V8_OVERRIDE { \
return HValue::k##type; \
}
#define ASSERT(condition)
Definition: checks.h:329
#define V8_OVERRIDE
Definition: v8config.h:402

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

#define DECLARE_FLAG (   Type)    k##Type,

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

#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:15091

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

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

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

#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); \
}
#define I(name, number_of_args, result_size)
Definition: runtime.cc:15091

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

#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); \
}
#define I(name, number_of_args, result_size)
Definition: runtime.cc:15091

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

#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); \
}
#define I(name, number_of_args, result_size)
Definition: runtime.cc:15091

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

#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); \
}
#define I(name, number_of_args, result_size)
Definition: runtime.cc:15091

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

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

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

#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); \
}
#define I(name, number_of_args, result_size)
Definition: runtime.cc:15091

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

#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); \
}
#define I(name, number_of_args, result_size)
Definition: runtime.cc:15091

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

#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); \
}
#define I(name, number_of_args, result_size)
Definition: runtime.cc:15091

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

#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); \
}
#define I(name, number_of_args, result_size)
Definition: runtime.cc:15091

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

#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); \
}
#define I(name, number_of_args, result_size)
Definition: runtime.cc:15091

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

#define DECLARE_OPCODE (   type)    k##type,

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

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

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

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

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

#define GVN_TRACKED_FLAG_LIST (   V)
Value:
V(Maps) \
V(NewSpacePromotion)

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

Referenced by HValue::AllFlagSet(), and HValue::PrintChangesTo().

#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(OsrEntries) \
V(ExternalMemory) \
V(StringChars) \
V(TypedArrayElements)

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

Referenced by HValue::AllFlagSet(), and HValue::PrintChangesTo().

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

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

#define HYDROGEN_CONCRETE_INSTRUCTION_LIST (   V)

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

Referenced by HValue::Mnemonic().