| Index: src/objects-inl.h
|
| diff --git a/src/objects-inl.h b/src/objects-inl.h
|
| index 430cb0f44282fa2fc819474af3ba13cafa9d8045..4bf439095ebac474606f265bef9c5d87942ceacd 100644
|
| --- a/src/objects-inl.h
|
| +++ b/src/objects-inl.h
|
| @@ -796,7 +796,6 @@
|
| TYPE_CHECKER(PropertyCell, PROPERTY_CELL_TYPE)
|
| TYPE_CHECKER(WeakCell, WEAK_CELL_TYPE)
|
| TYPE_CHECKER(SharedFunctionInfo, SHARED_FUNCTION_INFO_TYPE)
|
| -TYPE_CHECKER(JSArgumentsObject, JS_ARGUMENTS_TYPE)
|
| TYPE_CHECKER(JSDate, JS_DATE_TYPE)
|
| TYPE_CHECKER(JSError, JS_ERROR_TYPE)
|
| TYPE_CHECKER(JSGeneratorObject, JS_GENERATOR_OBJECT_TYPE)
|
| @@ -2356,8 +2355,8 @@
|
|
|
|
|
| double FixedDoubleArray::get_scalar(int index) {
|
| - DCHECK_NE(GetHeap()->fixed_cow_array_map(), map());
|
| - DCHECK_NE(GetHeap()->fixed_array_map(), map());
|
| + DCHECK(map() != GetHeap()->fixed_cow_array_map() &&
|
| + map() != GetHeap()->fixed_array_map());
|
| DCHECK(index >= 0 && index < this->length());
|
| DCHECK(!is_the_hole(index));
|
| return READ_DOUBLE_FIELD(this, kHeaderSize + index * kDoubleSize);
|
| @@ -2365,8 +2364,8 @@
|
|
|
|
|
| uint64_t FixedDoubleArray::get_representation(int index) {
|
| - DCHECK_NE(GetHeap()->fixed_cow_array_map(), map());
|
| - DCHECK_NE(GetHeap()->fixed_array_map(), map());
|
| + DCHECK(map() != GetHeap()->fixed_cow_array_map() &&
|
| + map() != GetHeap()->fixed_array_map());
|
| DCHECK(index >= 0 && index < this->length());
|
| int offset = kHeaderSize + index * kDoubleSize;
|
| return READ_UINT64_FIELD(this, offset);
|
| @@ -3208,7 +3207,6 @@
|
| CAST_ACCESSOR(Int16x8)
|
| CAST_ACCESSOR(Int32x4)
|
| CAST_ACCESSOR(Int8x16)
|
| -CAST_ACCESSOR(JSArgumentsObject)
|
| CAST_ACCESSOR(JSArray)
|
| CAST_ACCESSOR(JSArrayBuffer)
|
| CAST_ACCESSOR(JSArrayBufferView)
|
| @@ -6870,6 +6868,30 @@
|
|
|
| ElementsKind JSObject::GetElementsKind() {
|
| ElementsKind kind = map()->elements_kind();
|
| +#if VERIFY_HEAP && DEBUG
|
| + FixedArrayBase* fixed_array =
|
| + reinterpret_cast<FixedArrayBase*>(READ_FIELD(this, kElementsOffset));
|
| +
|
| + // If a GC was caused while constructing this object, the elements
|
| + // pointer may point to a one pointer filler map.
|
| + if (ElementsAreSafeToExamine()) {
|
| + Map* map = fixed_array->map();
|
| + if (IsFastSmiOrObjectElementsKind(kind)) {
|
| + DCHECK(map == GetHeap()->fixed_array_map() ||
|
| + map == GetHeap()->fixed_cow_array_map());
|
| + } else if (IsFastDoubleElementsKind(kind)) {
|
| + DCHECK(fixed_array->IsFixedDoubleArray() ||
|
| + fixed_array == GetHeap()->empty_fixed_array());
|
| + } else if (kind == DICTIONARY_ELEMENTS) {
|
| + DCHECK(fixed_array->IsFixedArray());
|
| + DCHECK(fixed_array->IsDictionary());
|
| + } else {
|
| + DCHECK(kind > DICTIONARY_ELEMENTS);
|
| + }
|
| + DCHECK(!IsSloppyArgumentsElements(kind) ||
|
| + (elements()->IsFixedArray() && elements()->length() >= 2));
|
| + }
|
| +#endif
|
| return kind;
|
| }
|
|
|
|
|