Lines Matching refs:HValue
50 class HValue;
208 static H##type* cast(HValue* value) { \
216 static H##type* cast(HValue* value) { \
220 virtual Opcode opcode() const { return HValue::k##type; }
453 HUseListNode(HValue* value, int index, HUseListNode* tail)
458 HValue* value() const { return value_; }
473 HValue* value_;
485 HValue* value() {
500 HValue* value_;
503 friend class HValue;
522 class HValue: public ZoneObject {
551 static HValue* cast(HValue* value) { return value; }
562 // Declare a non-virtual predicates for each concrete HInstruction or HValue.
569 // Declare virtual predicates for abstract HInstruction or HValue
575 HValue() : block_(NULL),
581 virtual ~HValue() {}
621 virtual HValue* EnsureAndPropagateNotMinusZero(BitVector* visited) {
630 virtual HValue* OperandAt(int index) = 0;
631 void SetOperandAt(int index, HValue* value);
633 void DeleteAndReplaceWith(HValue* other);
634 void ReplaceAllUsesWith(HValue* other);
641 // Mark this HValue as dead and to be removed from other HValues' use lists.
709 virtual HValue* Canonicalize() { return this; }
711 bool Equals(HValue* other);
736 virtual bool DataEquals(HValue* other) {
743 virtual void InternalSetOperandAt(int index, HValue* value) = 0;
792 HUseListNode* RemoveUse(HValue* value, int index);
794 void RegisterUse(int index, HValue* new_value);
810 DISALLOW_COPY_AND_ASSIGN(HValue);
814 class HInstruction: public HValue {
873 HValue* OperandAt(int i) { return inputs_[i]; }
876 void InternalSetOperandAt(int i, HValue* value) { inputs_[i] = value; }
879 EmbeddedContainer<HValue*, V> inputs_;
925 HValue* OperandAt(int i) { return inputs_[i]; }
929 void InternalSetOperandAt(int i, HValue* value) { inputs_[i] = value; }
933 EmbeddedContainer<HValue*, V> inputs_;
969 virtual HValue* OperandAt(int index) { return values_[index]; }
981 void AddEnvironmentValue(HValue* value) {
994 virtual void InternalSetOperandAt(int index, HValue* value) {
999 ZoneList<HValue*> values_;
1021 HUnaryControlInstruction(HValue* value,
1031 HValue* value() { return OperandAt(0); }
1037 HBranch(HValue* value,
1045 explicit HBranch(HValue* value)
1066 HCompareMap(HValue* value,
1094 explicit HReturn(HValue* value) {
1104 HValue* value() { return OperandAt(0); }
1122 explicit HUnaryOperation(HValue* value) {
1126 static HUnaryOperation* cast(HValue* value) {
1130 HValue* value() { return OperandAt(0); }
1137 HThrow(HValue* context, HValue* value) {
1147 HValue* context() { return OperandAt(0); }
1148 HValue* value() { return OperandAt(1); }
1156 explicit HUseConst(HValue* old_value) : HUnaryOperation(old_value) { }
1168 HForceRepresentation(HValue* value, Representation required_representation) {
1173 HValue* value() { return OperandAt(0); }
1175 virtual HValue* EnsureAndPropagateNotMinusZero(BitVector* visited);
1187 HChange(HValue* value,
1201 virtual HValue* EnsureAndPropagateNotMinusZero(BitVector* visited);
1203 virtual HValue* Canonicalize();
1224 virtual bool DataEquals(HValue* other) { return true; }
1230 explicit HClampToUint8(HValue* value)
1243 virtual bool DataEquals(HValue* other) { return true; }
1266 const ZoneList<HValue*>* values() const { return &values_; }
1274 void AddAssignedValue(int index, HValue* value) {
1277 void AddPushedValue(HValue* value) {
1281 virtual HValue* OperandAt(int index) { return values_[index]; }
1294 virtual void InternalSetOperandAt(int index, HValue* value) {
1300 void AddValue(int index, HValue* value) {
1304 // Set the operand through the base method in HValue to make sure that the
1310 ZoneList<HValue*> values_;
1322 HStackCheck(HValue* context, Type type) : type_(type) {
1326 HValue* context() { return OperandAt(0); }
1406 explicit HPushArgument(HValue* value) : HUnaryOperation(value) {
1414 HValue* argument() { return OperandAt(0); }
1436 virtual bool DataEquals(HValue* other) {
1460 virtual bool DataEquals(HValue* other) { return true; }
1466 explicit HOuterContext(HValue* inner) : HUnaryOperation(inner) {
1478 virtual bool DataEquals(HValue* other) { return true; }
1484 HDeclareGlobals(HValue* context,
1494 HValue* context() { return OperandAt(0); }
1511 explicit HGlobalObject(HValue* context) : HUnaryOperation(context) {
1523 virtual bool DataEquals(HValue* other) { return true; }
1529 explicit HGlobalReceiver(HValue* global_object)
1542 virtual bool DataEquals(HValue* other) { return true; }
1568 HUnaryCall(HValue* value, int argument_count)
1579 HValue* value() { return OperandAt(0); }
1585 HBinaryCall(HValue* first, HValue* second, int argument_count)
1597 HValue* first() { return OperandAt(0); }
1598 HValue* second() { return OperandAt(1); }
1604 HInvokeFunction(HValue* context, HValue* function, int argument_count)
1612 HValue* context() { return first(); }
1613 HValue* function() { return second(); }
1646 HCallKeyed(HValue* context, HValue* key, int argument_count)
1654 HValue* context() { return first(); }
1655 HValue* key() { return second(); }
1663 HCallNamed(HValue* context, Handle<String> name, int argument_count)
1669 HValue* context() { return value(); }
1685 HCallFunction(HValue* context, HValue* function, int argument_count)
1689 HValue* context() { return first(); }
1690 HValue* function() { return second(); }
1702 HCallGlobal(HValue* context, Handle<String> name, int argument_count)
1708 HValue* context() { return value(); }
1744 HCallNew(HValue* context, HValue* constructor, int argument_count)
1752 HValue* context() { return first(); }
1753 HValue* constructor() { return second(); }
1761 HCallRuntime(HValue* context,
1771 HValue* context() { return OperandAt(0); }
1789 HJSArrayLength(HValue* value, HValue* typecheck) {
1807 HValue* value() { return OperandAt(0); }
1808 HValue* typecheck() { return OperandAt(1); }
1813 virtual bool DataEquals(HValue* other) { return true; }
1819 explicit HFixedArrayBaseLength(HValue* value) : HUnaryOperation(value) {
1832 virtual bool DataEquals(HValue* other) { return true; }
1838 explicit HElementsKind(HValue* value) : HUnaryOperation(value) {
1851 virtual bool DataEquals(HValue* other) { return true; }
1857 explicit HBitNot(HValue* value) : HUnaryOperation(value) {
1871 virtual bool DataEquals(HValue* other) { return true; }
1877 HUnaryMathOperation(HValue* context, HValue* value, BuiltinFunctionId op)
1905 HValue* context() { return OperandAt(0); }
1906 HValue* value() { return OperandAt(1); }
1912 virtual HValue* EnsureAndPropagateNotMinusZero(BitVector* visited);
1938 virtual HValue* Canonicalize() {
1954 virtual bool DataEquals(HValue* other) {
1966 explicit HLoadElements(HValue* value) : HUnaryOperation(value) {
1979 virtual bool DataEquals(HValue* other) { return true; }
1985 explicit HLoadExternalArrayPointer(HValue* value)
2002 virtual bool DataEquals(HValue* other) { return true; }
2008 HCheckMap(HValue* value,
2010 HValue* typecheck = NULL,
2037 HValue* value() { return OperandAt(0); }
2044 virtual bool DataEquals(HValue* other) {
2062 HCheckFunction(HValue* value, Handle<JSFunction> function)
2083 virtual bool DataEquals(HValue* other) {
2095 static HCheckInstanceType* NewIsSpecObject(HValue* value) {
2098 static HCheckInstanceType* NewIsJSArray(HValue* value) {
2101 static HCheckInstanceType* NewIsString(HValue* value) {
2104 static HCheckInstanceType* NewIsSymbol(HValue* value) {
2114 virtual HValue* Canonicalize();
2126 virtual bool DataEquals(HValue* other) {
2142 HCheckInstanceType(HValue* value, Check check)
2154 explicit HCheckNonSmi(HValue* value) : HUnaryOperation(value) {
2169 virtual HValue* Canonicalize() {
2184 virtual bool DataEquals(HValue* other) { return true; }
2217 virtual bool DataEquals(HValue* other) {
2231 explicit HCheckSmi(HValue* value) : HUnaryOperation(value) {
2248 virtual bool DataEquals(HValue* other) { return true; }
2252 class HPhi: public HValue {
2277 virtual HValue* OperandAt(int index) { return inputs_[index]; }
2278 HValue* GetRedundantReplacement();
2279 void AddInput(HValue* value);
2318 static HPhi* cast(HValue* value) {
2322 virtual Opcode opcode() const { return HValue::kPhi; }
2341 virtual void InternalSetOperandAt(int index, HValue* value) {
2346 ZoneList<HValue*> inputs_;
2406 virtual HValue* Canonicalize();
2451 virtual bool DataEquals(HValue* other) {
2471 HBinaryOperation(HValue* context, HValue* left, HValue* right) {
2478 HValue* context() { return OperandAt(0); }
2479 HValue* left() { return OperandAt(1); }
2480 HValue* right() { return OperandAt(2); }
2484 HValue* LeastConstantOperand() {
2488 HValue* MostConstantOperand() {
2501 HWrapReceiver(HValue* receiver, HValue* function) {
2511 HValue* receiver() { return OperandAt(0); }
2512 HValue* function() { return OperandAt(1); }
2514 virtual HValue* Canonicalize();
2522 HApplyArguments(HValue* function,
2523 HValue* receiver,
2524 HValue* length,
2525 HValue* elements) {
2541 HValue* function() { return OperandAt(0); }
2542 HValue* receiver() { return OperandAt(1); }
2543 HValue* length() { return OperandAt(2); }
2544 HValue* elements() { return OperandAt(3); }
2566 virtual bool DataEquals(HValue* other) { return true; }
2572 explicit HArgumentsLength(HValue* value) : HUnaryOperation(value) {
2584 virtual bool DataEquals(HValue* other) { return true; }
2590 HAccessArgumentsAt(HValue* arguments, HValue* length, HValue* index) {
2607 HValue* arguments() { return OperandAt(0); }
2608 HValue* length() { return OperandAt(1); }
2609 HValue* index() { return OperandAt(2); }
2613 virtual bool DataEquals(HValue* other) { return true; }
2619 HBoundsCheck(HValue* index, HValue* length) {
2632 HValue* index() { return OperandAt(0); }
2633 HValue* length() { return OperandAt(1); }
2638 virtual bool DataEquals(HValue* other) { return true; }
2644 HBitwiseBinaryOperation(HValue* context, HValue* left, HValue* right)
2674 HArithmeticBinaryOperation(HValue* context, HValue* left, HValue* right)
2699 return HValue::InferredRepresentation();
2706 HCompareGeneric(HValue* context,
2707 HValue* left,
2708 HValue* right,
2738 HCompareIDAndBranch(HValue* left, HValue* right, Token::Value token)
2745 HValue* left() { return OperandAt(0); }
2746 HValue* right() { return OperandAt(1); }
2769 HCompareObjectEqAndBranch(HValue* left, HValue* right) {
2774 HValue* left() { return OperandAt(0); }
2775 HValue* right() { return OperandAt(1); }
2789 HCompareConstantEqAndBranch(HValue* left, int right, Token::Value op)
2795 HValue* left() { return value(); }
2812 HIsNilAndBranch(HValue* value, EqualityKind kind, NilValue nil)
2834 explicit HIsObjectAndBranch(HValue* value)
2846 explicit HIsStringAndBranch(HValue* value)
2859 explicit HIsSmiAndBranch(HValue* value)
2869 virtual bool DataEquals(HValue* other) { return true; }
2875 explicit HIsUndetectableAndBranch(HValue* value)
2888 HStringCompareAndBranch(HValue* context,
2889 HValue* left,
2890 HValue* right,
2900 HValue* context() { return OperandAt(0); }
2901 HValue* left() { return OperandAt(1); }
2902 HValue* right() { return OperandAt(2); }
2934 HHasInstanceTypeAndBranch(HValue* value, InstanceType type)
2936 HHasInstanceTypeAndBranch(HValue* value, InstanceType from, InstanceType to)
2960 explicit HHasCachedArrayIndexAndBranch(HValue* value)
2973 explicit HGetCachedArrayIndex(HValue* value) : HUnaryOperation(value) {
2985 virtual bool DataEquals(HValue* other) { return true; }
2991 HClassOfTestAndBranch(HValue* value, Handle<String> class_name)
3012 HTypeofIsAndBranch(HValue* value, Handle<String> type_literal)
3032 HInstanceOf(HValue* context, HValue* left, HValue* right)
3052 HInstanceOfKnownGlobal(HValue* context,
3053 HValue* left,
3062 HValue* context() { return OperandAt(0); }
3063 HValue* left() { return OperandAt(1); }
3081 HPower(HValue* left, HValue* right) {
3088 HValue* left() { return OperandAt(0); }
3089 HValue* right() { return OperandAt(1); }
3100 virtual bool DataEquals(HValue* other) { return true; }
3106 explicit HRandom(HValue* global_object) {
3111 HValue* global_object() { return OperandAt(0); }
3123 HAdd(HValue* context, HValue* left, HValue* right)
3134 virtual HValue* EnsureAndPropagateNotMinusZero(BitVector* visited);
3137 HValue* context,
3138 HValue* left,
3139 HValue* right);
3143 virtual HValue* Canonicalize();
3148 virtual bool DataEquals(HValue* other) { return true; }
3156 HSub(HValue* context, HValue* left, HValue* right)
3161 virtual HValue* EnsureAndPropagateNotMinusZero(BitVector* visited);
3163 virtual HValue* Canonicalize();
3166 HValue* context,
3167 HValue* left,
3168 HValue* right);
3173 virtual bool DataEquals(HValue* other) { return true; }
3181 HMul(HValue* context, HValue* left, HValue* right)
3186 virtual HValue* EnsureAndPropagateNotMinusZero(BitVector* visited);
3194 HValue* context,
3195 HValue* left,
3196 HValue* right);
3201 virtual bool DataEquals(HValue* other) { return true; }
3209 HMod(HValue* context, HValue* left, HValue* right)
3224 virtual HValue* EnsureAndPropagateNotMinusZero(BitVector* visited);
3227 HValue* context,
3228 HValue* left,
3229 HValue* right);
3234 virtual bool DataEquals(HValue* other) { return true; }
3242 HDiv(HValue* context, HValue* left, HValue* right)
3248 virtual HValue* EnsureAndPropagateNotMinusZero(BitVector* visited);
3251 HValue* context,
3252 HValue* left,
3253 HValue* right);
3258 virtual bool DataEquals(HValue* other) { return true; }
3266 HBitwise(Token::Value op, HValue* context, HValue* left, HValue* right)
3277 virtual HValue* Canonicalize();
3281 HValue* context,
3282 HValue* left,
3283 HValue* right);
3288 virtual bool DataEquals(HValue* other) {
3301 HShl(HValue* context, HValue* left, HValue* right)
3307 HValue* context,
3308 HValue* left,
3309 HValue* right);
3314 virtual bool DataEquals(HValue* other) { return true; }
3320 HShr(HValue* context, HValue* left, HValue* right)
3326 HValue* context,
3327 HValue* left,
3328 HValue* right);
3333 virtual bool DataEquals(HValue* other) { return true; }
3339 HSar(HValue* context, HValue* left, HValue* right)
3345 HValue* context,
3346 HValue* left,
3347 HValue* right);
3352 virtual bool DataEquals(HValue* other) { return true; }
3398 HCallStub(HValue* context, CodeStub::Major major_key, int argument_count)
3406 HValue* context() { return value(); }
3481 virtual bool DataEquals(HValue* other) {
3494 HLoadGlobalGeneric(HValue* context,
3495 HValue* global_object,
3506 HValue* context() { return OperandAt(0); }
3507 HValue* global_object() { return OperandAt(1); }
3525 inline bool StoringValueNeedsWriteBarrier(HValue* value) {
3534 HStoreGlobalCell(HValue* value,
3566 HStoreGlobalGeneric(HValue* context,
3567 HValue* global_object,
3569 HValue* value,
3580 HValue* context() { return OperandAt(0); }
3581 HValue* global_object() { return OperandAt(1); }
3583 HValue* value() { return OperandAt(2); }
3615 HLoadContextSlot(HValue* context, Variable* var)
3654 virtual bool DataEquals(HValue* other) {
3680 HStoreContextSlot(HValue* context, int slot_index, Mode mode, HValue* value)
3687 HValue* context() { return OperandAt(0); }
3688 HValue* value() { return OperandAt(1); }
3720 HLoadNamedField(HValue* object, bool is_in_object, int offset)
3734 HValue* object() { return OperandAt(0); }
3746 virtual bool DataEquals(HValue* other) {
3759 HLoadNamedFieldPolymorphic(HValue* context,
3760 HValue* object,
3764 HValue* context() { return OperandAt(0); }
3765 HValue* object() { return OperandAt(1); }
3781 virtual bool DataEquals(HValue* value);
3793 HLoadNamedGeneric(HValue* context, HValue* object, Handle<Object> name)
3801 HValue* context() { return OperandAt(0); }
3802 HValue* object() { return OperandAt(1); }
3820 explicit HLoadFunctionPrototype(HValue* function)
3827 HValue* function() { return OperandAt(0); }
3836 virtual bool DataEquals(HValue* other) { return true; }
3844 HLoadKeyedFastElement(HValue* obj,
3845 HValue* key,
3855 HValue* object() { return OperandAt(0); }
3856 HValue* key() { return OperandAt(1); }
3872 virtual bool DataEquals(HValue* other) {
3885 HLoadKeyedFastDoubleElement(HValue* elements, HValue* key) {
3893 HValue* elements() { return OperandAt(0); }
3894 HValue* key() { return OperandAt(1); }
3908 virtual bool DataEquals(HValue* other) { return true; }
3914 HLoadKeyedSpecializedArrayElement(HValue* external_elements,
3915 HValue* key,
3942 HValue* external_pointer() { return OperandAt(0); }
3943 HValue* key() { return OperandAt(1); }
3951 virtual bool DataEquals(HValue* other) {
3965 HLoadKeyedGeneric(HValue* context, HValue* obj, HValue* key) {
3973 HValue* object() { return OperandAt(0); }
3974 HValue* key() { return OperandAt(1); }
3975 HValue* context() { return OperandAt(2); }
3983 virtual HValue* Canonicalize();
3991 HStoreNamedField(HValue* obj,
3993 HValue* val,
4015 HValue* object() { return OperandAt(0); }
4016 HValue* value() { return OperandAt(1); }
4038 HStoreNamedGeneric(HValue* context,
4039 HValue* object,
4041 HValue* value,
4051 HValue* object() { return OperandAt(0); }
4052 HValue* value() { return OperandAt(1); }
4053 HValue* context() { return OperandAt(2); }
4073 HStoreKeyedFastElement(HValue* obj, HValue* key, HValue* val,
4089 HValue* object() { return OperandAt(0); }
4090 HValue* key() { return OperandAt(1); }
4091 HValue* value() { return OperandAt(2); }
4115 HStoreKeyedFastDoubleElement(HValue* elements,
4116 HValue* key,
4117 HValue* val) {
4134 HValue* elements() { return OperandAt(0); }
4135 HValue* key() { return OperandAt(1); }
4136 HValue* value() { return OperandAt(2); }
4150 HStoreKeyedSpecializedArrayElement(HValue* external_elements,
4151 HValue* key,
4152 HValue* val,
4178 HValue* external_pointer() { return OperandAt(0); }
4179 HValue* key() { return OperandAt(1); }
4180 HValue* value() { return OperandAt(2); }
4192 HStoreKeyedGeneric(HValue* context,
4193 HValue* object,
4194 HValue* key,
4195 HValue* value,
4205 HValue* object() { return OperandAt(0); }
4206 HValue* key() { return OperandAt(1); }
4207 HValue* value() { return OperandAt(2); }
4208 HValue* context() { return OperandAt(3); }
4226 HTransitionElementsKind(HValue* object,
4242 HValue* object() { return OperandAt(0); }
4251 virtual bool DataEquals(HValue* other) {
4265 HStringAdd(HValue* context, HValue* left, HValue* right)
4283 virtual bool DataEquals(HValue* other) { return true; }
4289 HStringCharCodeAt(HValue* context, HValue* string, HValue* index) {
4305 HValue* context() { return OperandAt(0); }
4306 HValue* string() { return OperandAt(1); }
4307 HValue* index() { return OperandAt(2); }
4312 virtual bool DataEquals(HValue* other) { return true; }
4322 HStringCharFromCode(HValue* context, HValue* char_code) {
4336 HValue* context() { return OperandAt(0); }
4337 HValue* value() { return OperandAt(1); }
4339 virtual bool DataEquals(HValue* other) { return true; }
4347 explicit HStringLength(HValue* string) : HUnaryOperation(string) {
4365 virtual bool DataEquals(HValue* other) { return true; }
4375 HAllocateObject(HValue* context, Handle<JSFunction> constructor)
4381 HValue* context() { return OperandAt(0); }
4415 HFastLiteral(HValue* context,
4431 HValue* context() { return OperandAt(0); }
4450 HArrayLiteral(HValue* context,
4461 HValue* context() { return OperandAt(0); }
4488 HObjectLiteral(HValue* context,
4501 HValue* context() { return OperandAt(0); }
4524 HRegExpLiteral(HValue* context,
4535 HValue* context() { return OperandAt(0); }
4554 HFunctionLiteral(HValue* context,
4562 HValue* context() { return OperandAt(0); }
4582 explicit HTypeof(HValue* context, HValue* value) {
4588 HValue* context() { return OperandAt(0); }
4589 HValue* value() { return OperandAt(1); }
4591 virtual HValue* Canonicalize();
4604 explicit HToFastProperties(HValue* value) : HUnaryOperation(value) {
4622 explicit HValueOf(HValue* value) : HUnaryOperation(value) {
4636 HDateField(HValue* date, Smi* index)
4656 HDeleteProperty(HValue* context, HValue* obj, HValue* key)
4670 HValue* object() { return left(); }
4671 HValue* key() { return right(); }
4677 HIn(HValue* context, HValue* key, HValue* object) {
4685 HValue* context() { return OperandAt(0); }
4686 HValue* key() { return OperandAt(1); }
4687 HValue* object() { return OperandAt(2); }
4705 HCheckMapValue(HValue* value,
4706 HValue* map) {
4725 HValue* value() { return OperandAt(0); }
4726 HValue* map() { return OperandAt(1); }
4731 virtual bool DataEquals(HValue* other) {
4739 HForInPrepareMap(HValue* context,
4740 HValue* object) {
4751 HValue* context() { return OperandAt(0); }
4752 HValue* enumerable() { return OperandAt(1); }
4766 HForInCacheArray(HValue* enumerable,
4767 HValue* keys,
4778 HValue* enumerable() { return OperandAt(0); }
4779 HValue* map() { return OperandAt(1); }
4806 HLoadFieldByIndex(HValue* object,
4807 HValue* index) {
4817 HValue* object() { return OperandAt(0); }
4818 HValue* index() { return OperandAt(1); }