Index: src/hydrogen-instructions.h |
diff --git a/src/hydrogen-instructions.h b/src/hydrogen-instructions.h |
index 3d3c56cc4063d4ad4859b060a9509c92be84da58..8cf65d5c8e3f3ed2512c7757d8f80fb03f6d9d23 100644 |
--- a/src/hydrogen-instructions.h |
+++ b/src/hydrogen-instructions.h |
@@ -6248,11 +6248,6 @@ class HObjectAccess final { |
JSArrayBuffer::kBitFieldSlot, Representation::Smi()); |
} |
- static HObjectAccess ForExternalArrayExternalPointer() { |
- return HObjectAccess::ForObservableJSObjectOffset( |
- ExternalArray::kExternalPointerOffset, Representation::External()); |
- } |
- |
static HObjectAccess ForJSArrayBufferViewBuffer() { |
return HObjectAccess::ForObservableJSObjectOffset( |
JSArrayBufferView::kBufferOffset); |
@@ -6622,15 +6617,9 @@ class HLoadKeyed final : public HTemplateInstruction<3>, |
DECLARE_INSTRUCTION_FACTORY_P6(HLoadKeyed, HValue*, HValue*, HValue*, |
ElementsKind, LoadKeyedHoleMode, int); |
- bool is_external() const { |
- return IsExternalArrayElementsKind(elements_kind()); |
- } |
bool is_fixed_typed_array() const { |
return IsFixedTypedArrayElementsKind(elements_kind()); |
} |
- bool is_typed_elements() const { |
- return is_external() || is_fixed_typed_array(); |
- } |
HValue* elements() const { return OperandAt(0); } |
HValue* key() const { return OperandAt(1); } |
HValue* dependency() const { |
@@ -6661,8 +6650,8 @@ class HLoadKeyed final : public HTemplateInstruction<3>, |
// kind_fixed_typed_array: external[int32] (none) |
// kind_external: external[int32] (none) |
if (index == 0) { |
- return is_typed_elements() ? Representation::External() |
- : Representation::Tagged(); |
+ return is_fixed_typed_array() ? Representation::External() |
+ : Representation::Tagged(); |
} |
if (index == 1) { |
return ArrayInstructionInterface::KeyedAccessIndexRequirement( |
@@ -6711,7 +6700,7 @@ class HLoadKeyed final : public HTemplateInstruction<3>, |
SetOperandAt(1, key); |
SetOperandAt(2, dependency != NULL ? dependency : obj); |
- if (!is_typed_elements()) { |
+ if (!is_fixed_typed_array()) { |
// I can detect the case between storing double (holey and fast) and |
// smi/object by looking at elements_kind_. |
DCHECK(IsFastSmiOrObjectElementsKind(elements_kind) || |
@@ -6737,18 +6726,15 @@ class HLoadKeyed final : public HTemplateInstruction<3>, |
SetDependsOnFlag(kDoubleArrayElements); |
} |
} else { |
- if (elements_kind == EXTERNAL_FLOAT32_ELEMENTS || |
- elements_kind == EXTERNAL_FLOAT64_ELEMENTS || |
- elements_kind == FLOAT32_ELEMENTS || |
+ if (elements_kind == FLOAT32_ELEMENTS || |
elements_kind == FLOAT64_ELEMENTS) { |
set_representation(Representation::Double()); |
} else { |
set_representation(Representation::Integer32()); |
} |
- if (is_external()) { |
+ if (is_fixed_typed_array()) { |
SetDependsOnFlag(kExternalMemory); |
- } else if (is_fixed_typed_array()) { |
SetDependsOnFlag(kTypedArrayElements); |
} else { |
UNREACHABLE(); |
@@ -7123,8 +7109,8 @@ class HStoreKeyed final : public HTemplateInstruction<3>, |
// kind_fixed_typed_array: tagged[int32] = (double | int32) |
// kind_external: external[int32] = (double | int32) |
if (index == 0) { |
- return is_typed_elements() ? Representation::External() |
- : Representation::Tagged(); |
+ return is_fixed_typed_array() ? Representation::External() |
+ : Representation::Tagged(); |
} else if (index == 1) { |
return ArrayInstructionInterface::KeyedAccessIndexRequirement( |
OperandAt(1)->representation()); |
@@ -7149,24 +7135,16 @@ class HStoreKeyed final : public HTemplateInstruction<3>, |
return Representation::Smi(); |
} |
- return IsExternalArrayElementsKind(kind) || |
- IsFixedTypedArrayElementsKind(kind) |
- ? Representation::Integer32() |
- : Representation::Tagged(); |
- } |
- |
- bool is_external() const { |
- return IsExternalArrayElementsKind(elements_kind()); |
+ if (IsFixedTypedArrayElementsKind(kind)) { |
+ return Representation::Integer32(); |
+ } |
+ return Representation::Tagged(); |
} |
bool is_fixed_typed_array() const { |
return IsFixedTypedArrayElementsKind(elements_kind()); |
} |
- bool is_typed_elements() const { |
- return is_external() || is_fixed_typed_array(); |
- } |
- |
Representation observed_input_representation(int index) override { |
if (index < 2) return RequiredInputRepresentation(index); |
if (IsUninitialized()) { |
@@ -7256,25 +7234,20 @@ class HStoreKeyed final : public HTemplateInstruction<3>, |
SetFlag(kTrackSideEffectDominators); |
SetDependsOnFlag(kNewSpacePromotion); |
} |
- if (is_external()) { |
- SetChangesFlag(kExternalMemory); |
- SetFlag(kAllowUndefinedAsNaN); |
- } else if (IsFastDoubleElementsKind(elements_kind)) { |
+ if (IsFastDoubleElementsKind(elements_kind)) { |
SetChangesFlag(kDoubleArrayElements); |
} else if (IsFastSmiElementsKind(elements_kind)) { |
SetChangesFlag(kArrayElements); |
} else if (is_fixed_typed_array()) { |
SetChangesFlag(kTypedArrayElements); |
+ SetChangesFlag(kExternalMemory); |
SetFlag(kAllowUndefinedAsNaN); |
} else { |
SetChangesFlag(kArrayElements); |
} |
- // EXTERNAL_{UNSIGNED_,}{BYTE,SHORT,INT}_ELEMENTS are truncating. |
- if ((elements_kind >= EXTERNAL_INT8_ELEMENTS && |
- elements_kind <= EXTERNAL_UINT32_ELEMENTS) || |
- (elements_kind >= UINT8_ELEMENTS && |
- elements_kind <= INT32_ELEMENTS)) { |
+ // {UNSIGNED_,}{BYTE,SHORT,INT}_ELEMENTS are truncating. |
+ if (elements_kind >= UINT8_ELEMENTS && elements_kind <= INT32_ELEMENTS) { |
SetFlag(kTruncatingToInt32); |
} |
} |