| 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_;
|
| };
|
|
|
|
|