Index: src/hydrogen-instructions.h |
diff --git a/src/hydrogen-instructions.h b/src/hydrogen-instructions.h |
index 4dd24fd871552456a10bb77ab8f6a0e4b4b25138..638630f834bec6e9a89ba942ef4c0cd4dfea8b9c 100644 |
--- a/src/hydrogen-instructions.h |
+++ b/src/hydrogen-instructions.h |
@@ -6693,7 +6693,9 @@ class HStoreKeyed V8_FINAL |
if (IsDoubleOrFloatElementsKind(elements_kind())) { |
return Representation::Double(); |
} |
- |
+ if (SmiValuesAre32Bits() && IsFastPackedSmiElementsKind(elements_kind())) { |
+ return Representation::Integer32(); |
+ } |
if (IsFastSmiElementsKind(elements_kind())) { |
return Representation::Smi(); |
} |
@@ -6711,12 +6713,15 @@ class HStoreKeyed V8_FINAL |
if (IsUninitialized()) { |
return Representation::None(); |
} |
- if (IsFastSmiElementsKind(elements_kind())) { |
- return Representation::Smi(); |
- } |
if (IsDoubleOrFloatElementsKind(elements_kind())) { |
return Representation::Double(); |
} |
+ if (SmiValuesAre32Bits() && IsFastPackedSmiElementsKind(elements_kind())) { |
+ return Representation::Integer32(); |
+ } |
+ if (IsFastSmiElementsKind(elements_kind())) { |
+ return Representation::Smi(); |
+ } |
if (is_external()) { |
return Representation::Integer32(); |
} |
@@ -6730,6 +6735,14 @@ class HStoreKeyed V8_FINAL |
bool value_is_smi() const { |
return IsFastSmiElementsKind(elements_kind_); |
} |
+ // Indicates whether this is a store to a item that was previously |
+ // initialized. |
+ bool store_to_initialized_element() const { |
+ return store_to_initialized_element_; |
+ } |
+ void set_store_to_initialized_element(bool v) { |
+ store_to_initialized_element_ = v; |
+ } |
ElementsKind elements_kind() const { return elements_kind_; } |
uint32_t index_offset() { return index_offset_; } |
void SetIndexOffset(uint32_t index_offset) { index_offset_ = index_offset; } |
@@ -6780,6 +6793,7 @@ class HStoreKeyed V8_FINAL |
index_offset_(0), |
is_dehoisted_(false), |
is_uninitialized_(false), |
+ store_to_initialized_element_(false), |
new_space_dominator_(NULL) { |
SetOperandAt(0, obj); |
SetOperandAt(1, key); |
@@ -6811,6 +6825,7 @@ class HStoreKeyed V8_FINAL |
uint32_t index_offset_; |
bool is_dehoisted_ : 1; |
bool is_uninitialized_ : 1; |
+ bool store_to_initialized_element_: 1; |
HValue* new_space_dominator_; |
}; |