Index: src/hydrogen-instructions.h |
=================================================================== |
--- src/hydrogen-instructions.h (revision 15397) |
+++ src/hydrogen-instructions.h (working copy) |
@@ -5877,6 +5877,7 @@ |
: elements_kind_(elements_kind), |
index_offset_(0), |
is_dehoisted_(false), |
+ is_uninitialized_(false), |
new_space_dominator_(NULL) { |
SetOperandAt(0, obj); |
SetOperandAt(1, key); |
@@ -5937,6 +5938,9 @@ |
virtual Representation observed_input_representation(int index) { |
if (index < 2) return RequiredInputRepresentation(index); |
+ if (IsUninitialized()) { |
+ return Representation::None(); |
+ } |
if (IsFastSmiElementsKind(elements_kind())) { |
return Representation::Smi(); |
} |
@@ -5963,6 +5967,10 @@ |
void SetKey(HValue* key) { SetOperandAt(1, key); } |
bool IsDehoisted() { return is_dehoisted_; } |
void SetDehoisted(bool is_dehoisted) { is_dehoisted_ = is_dehoisted; } |
+ bool IsUninitialized() { return is_uninitialized_; } |
+ void SetUninitialized(bool is_uninitialized) { |
+ is_uninitialized_ = is_uninitialized; |
+ } |
bool IsConstantHoleStore() { |
return value()->IsConstant() && HConstant::cast(value())->IsTheHole(); |
@@ -5993,7 +6001,8 @@ |
private: |
ElementsKind elements_kind_; |
uint32_t index_offset_; |
- bool is_dehoisted_; |
+ bool is_dehoisted_ : 1; |
+ bool is_uninitialized_ : 1; |
HValue* new_space_dominator_; |
}; |