v8  3.14.5(node0.10.28)
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 "small-pointer-list.h"
#include "string-stream.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  Range
 
class  Representation
 
class  HType
 
class  HUseListNode
 
class  BASE_EMBEDDED< Visitor >
 
class  HValue
 
class  HInstruction
 
class  HTemplateInstruction< V >
 
class  HControlInstruction
 
class  BASE_EMBEDDED< Visitor >
 
class  HTemplateControlInstruction< S, V >
 
class  HBlockEntry
 
class  HSoftDeoptimize
 
class  HDeoptimize
 
class  HGoto
 
class  HUnaryControlInstruction
 
class  HBranch
 
class  HCompareMap
 
class  HReturn
 
class  HAbnormalExit
 
class  HUnaryOperation
 
class  HThrow
 
class  HUseConst
 
class  HForceRepresentation
 
class  HChange
 
class  HClampToUint8
 
class  HSimulate
 
class  HStackCheck
 
class  HEnterInlined
 
class  HLeaveInlined
 
class  HPushArgument
 
class  HThisFunction
 
class  HContext
 
class  HOuterContext
 
class  HDeclareGlobals
 
class  HGlobalObject
 
class  HGlobalReceiver
 
class  HCall< V >
 
class  HUnaryCall
 
class  HBinaryCall
 
class  HInvokeFunction
 
class  HCallConstantFunction
 
class  HCallKeyed
 
class  HCallNamed
 
class  HCallFunction
 
class  HCallGlobal
 
class  HCallKnownGlobal
 
class  HCallNew
 
class  HCallRuntime
 
class  HJSArrayLength
 
class  HFixedArrayBaseLength
 
class  HMapEnumLength
 
class  HElementsKind
 
class  HBitNot
 
class  HUnaryMathOperation
 
class  HLoadElements
 
class  HLoadExternalArrayPointer
 
class  HCheckMaps
 
class  HCheckFunction
 
class  HCheckInstanceType
 
class  HCheckNonSmi
 
class  HCheckPrototypeMaps
 
class  HCheckSmi
 
class  HPhi
 
class  HArgumentsObject
 
class  HConstant
 
class  HBinaryOperation
 
class  HWrapReceiver
 
class  HApplyArguments
 
class  HArgumentsElements
 
class  HArgumentsLength
 
class  HAccessArgumentsAt
 
class  HBoundsCheck
 
class  HBitwiseBinaryOperation
 
class  HMathFloorOfDiv
 
class  HArithmeticBinaryOperation
 
class  HCompareGeneric
 
class  HCompareIDAndBranch
 
class  HCompareObjectEqAndBranch
 
class  HCompareConstantEqAndBranch
 
class  HIsNilAndBranch
 
class  HIsObjectAndBranch
 
class  HIsStringAndBranch
 
class  HIsSmiAndBranch
 
class  HIsUndetectableAndBranch
 
class  HStringCompareAndBranch
 
class  HIsConstructCallAndBranch
 
class  HHasInstanceTypeAndBranch
 
class  HHasCachedArrayIndexAndBranch
 
class  HGetCachedArrayIndex
 
class  HClassOfTestAndBranch
 
class  HTypeofIsAndBranch
 
class  HInstanceOf
 
class  HInstanceOfKnownGlobal
 
class  HPower
 
class  HRandom
 
class  HAdd
 
class  HSub
 
class  HMul
 
class  HMod
 
class  HDiv
 
class  HMathMinMax
 
class  HBitwise
 
class  HShl
 
class  HShr
 
class  HSar
 
class  HOsrEntry
 
class  HParameter
 
class  HCallStub
 
class  HUnknownOSRValue
 
class  HLoadGlobalCell
 
class  HLoadGlobalGeneric
 
class  HStoreGlobalCell
 
class  HStoreGlobalGeneric
 
class  HLoadContextSlot
 
class  HStoreContextSlot
 
class  HLoadNamedField
 
class  HLoadNamedFieldPolymorphic
 
class  HLoadNamedGeneric
 
class  HLoadFunctionPrototype
 
class  ArrayInstructionInterface
 
class  HLoadKeyedFastElement
 
class  HLoadKeyedFastDoubleElement
 
class  HLoadKeyedSpecializedArrayElement
 
class  HLoadKeyedGeneric
 
class  HStoreNamedField
 
class  HStoreNamedGeneric
 
class  HStoreKeyedFastElement
 
class  HStoreKeyedFastDoubleElement
 
class  HStoreKeyedSpecializedArrayElement
 
class  HStoreKeyedGeneric
 
class  HTransitionElementsKind
 
class  HStringAdd
 
class  HStringCharCodeAt
 
class  HStringCharFromCode
 
class  HStringLength
 
class  HAllocateObject
 
class  HMaterializedLiteral< V >
 
class  HFastLiteral
 
class  HArrayLiteral
 
class  HObjectLiteral
 
class  HRegExpLiteral
 
class  HFunctionLiteral
 
class  HTypeof
 
class  HToFastProperties
 
class  HValueOf
 
class  HDateField
 
class  HDeleteProperty
 
class  HIn
 
class  HCheckMapValue
 
class  HForInPrepareMap
 
class  HForInCacheArray
 
class  HLoadFieldByIndex
 

Namespaces

 v8
 
 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 ASSERT_ALLOCATION_DISABLED   do {} while (0)
 
#define DECLARE_FLAG(type)   kChanges##type, kDependsOn##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(kDependsOn##type);
 
#define ADD_FLAG(type)   result.Add(kChanges##type);
 

Typedefs

typedef EnumSet< GVNFlag > GVNFlagSet
 

Enumerations

enum  GVNFlag { kAfterLastFlag, kLastFlag = kAfterLastFlag - 1, kNumberOfTrackedSideEffects = 0 GVN_TRACKED_FLAG_LIST(COUNT_FLAG) }
 
enum  InliningKind {
  NORMAL_RETURN, DROP_EXTRA_ON_RETURN, CONSTRUCT_CALL_RETURN, GETTER_CALL_RETURN,
  SETTER_CALL_RETURN
}
 
enum  BoundsCheckKeyMode { DONT_ALLOW_SMI_KEY, ALLOW_SMI_KEY }
 
enum  HoleCheckMode { PERFORM_HOLE_CHECK, OMIT_HOLE_CHECK }
 

Functions

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

Macro Definition Documentation

#define ADD_FLAG (   type)    result.Add(kDependsOn##type);
#define ADD_FLAG (   type)    result.Add(kChanges##type);
#define ASSERT_ALLOCATION_DISABLED   do {} while (0)
#define COUNT_FLAG (   type)    + 1

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

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

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

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

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

#define DECLARE_FLAG (   type)    kChanges##type, kDependsOn##type,

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

Referenced by v8::internal::GetGVNFlagsString().

#define DECLARE_OPCODE (   type)    k##type,

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

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

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

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

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

#define GVN_TRACKED_FLAG_LIST (   V)    V(NewSpacePromotion)
#define GVN_UNTRACKED_FLAG_LIST (   V)
Value:
V(Calls) \
V(InobjectFields) \
V(BackingStoreFields) \
V(ElementsPointer) \
V(ArrayElements) \
V(DoubleArrayElements) \
V(SpecializedArrayElements) \
V(GlobalVars) \
V(Maps) \
V(ArrayLengths) \
V(ContextSlots) \
V(OsrEntries)

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

Referenced by HValue::AllChangesFlagSet(), HValue::AllDependsOnFlagSet(), v8::internal::GetGVNFlagsString(), and HValue::PrintChangesTo().

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

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

#define HYDROGEN_CONCRETE_INSTRUCTION_LIST (   V)

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

Referenced by HValue::Mnemonic().