Index: src/objects-inl.h |
diff --git a/src/objects-inl.h b/src/objects-inl.h |
index 2e7a9de11df64722ca94e48ca58fe1d8f1f14230..1da5f4f3517dbb39fa548a414b2a4f5da27f7d41 100644 |
--- a/src/objects-inl.h |
+++ b/src/objects-inl.h |
@@ -1954,7 +1954,8 @@ void JSObject::SetMapAndElements(Handle<JSObject> object, |
Handle<FixedArrayBase> value) { |
JSObject::MigrateToMap(object, new_map); |
DCHECK((object->map()->has_fast_smi_or_object_elements() || |
- (*value == object->GetHeap()->empty_fixed_array())) == |
+ (*value == object->GetHeap()->empty_fixed_array()) || |
+ object->map()->has_fast_string_wrapper_elements()) == |
(value->map() == object->GetHeap()->fixed_array_map() || |
value->map() == object->GetHeap()->fixed_cow_array_map())); |
DCHECK((*value == object->GetHeap()->empty_fixed_array()) || |
@@ -2336,19 +2337,6 @@ bool Object::ToArrayIndex(uint32_t* index) { |
} |
-bool Object::IsStringObjectWithCharacterAt(uint32_t index) { |
- if (!this->IsJSValue()) return false; |
- |
- JSValue* js_value = JSValue::cast(this); |
- if (!js_value->value()->IsString()) return false; |
- |
- String* str = String::cast(js_value->value()); |
- if (index >= static_cast<uint32_t>(str->length())) return false; |
- |
- return true; |
-} |
- |
- |
void Object::VerifyApiCallResultType() { |
#if DEBUG |
if (!(IsSmi() || IsString() || IsSymbol() || IsJSReceiver() || |
@@ -2365,9 +2353,8 @@ Object* FixedArray::get(int index) const { |
return READ_FIELD(this, kHeaderSize + index * kPointerSize); |
} |
- |
-Handle<Object> FixedArray::get(Handle<FixedArray> array, int index) { |
- return handle(array->get(index), array->GetIsolate()); |
+Handle<Object> FixedArray::get(FixedArray* array, int index, Isolate* isolate) { |
+ return handle(array->get(index), isolate); |
} |
@@ -2412,13 +2399,12 @@ uint64_t FixedDoubleArray::get_representation(int index) { |
return READ_UINT64_FIELD(this, offset); |
} |
- |
-Handle<Object> FixedDoubleArray::get(Handle<FixedDoubleArray> array, |
- int index) { |
+Handle<Object> FixedDoubleArray::get(FixedDoubleArray* array, int index, |
+ Isolate* isolate) { |
if (array->is_the_hole(index)) { |
- return array->GetIsolate()->factory()->the_hole_value(); |
+ return isolate->factory()->the_hole_value(); |
} else { |
- return array->GetIsolate()->factory()->NewNumber(array->get_scalar(index)); |
+ return isolate->factory()->NewNumber(array->get_scalar(index)); |
} |
} |
@@ -2875,8 +2861,7 @@ void Map::SetEnumLength(int length) { |
FixedArrayBase* Map::GetInitialElements() { |
- if (has_fast_smi_or_object_elements() || |
- has_fast_double_elements()) { |
+ if (has_fast_elements() || has_fast_string_wrapper_elements()) { |
DCHECK(!GetHeap()->InNewSpace(GetHeap()->empty_fixed_array())); |
return GetHeap()->empty_fixed_array(); |
} else if (has_fixed_typed_array_elements()) { |
@@ -4236,11 +4221,9 @@ double FixedTypedArray<Float64ArrayTraits>::from_double(double value) { |
return value; |
} |
- |
template <class Traits> |
-Handle<Object> FixedTypedArray<Traits>::get( |
- Handle<FixedTypedArray<Traits> > array, |
- int index) { |
+Handle<Object> FixedTypedArray<Traits>::get(FixedTypedArray<Traits>* array, |
+ int index) { |
return Traits::ToHandle(array->GetIsolate(), array->get_scalar(index)); |
} |
@@ -4617,6 +4600,10 @@ bool Map::has_sloppy_arguments_elements() { |
return IsSloppyArgumentsElements(elements_kind()); |
} |
+bool Map::has_fast_string_wrapper_elements() { |
+ return elements_kind() == FAST_STRING_WRAPPER_ELEMENTS; |
+} |
+ |
bool Map::has_fixed_typed_array_elements() { |
return IsFixedTypedArrayElementsKind(elements_kind()); |
} |
@@ -6752,6 +6739,17 @@ bool JSObject::HasSloppyArgumentsElements() { |
return IsSloppyArgumentsElements(GetElementsKind()); |
} |
+bool JSObject::HasStringWrapperElements() { |
+ return IsStringWrapperElementsKind(GetElementsKind()); |
+} |
+ |
+bool JSObject::HasFastStringWrapperElements() { |
+ return GetElementsKind() == FAST_STRING_WRAPPER_ELEMENTS; |
+} |
+ |
+bool JSObject::HasSlowStringWrapperElements() { |
+ return GetElementsKind() == SLOW_STRING_WRAPPER_ELEMENTS; |
+} |
bool JSObject::HasFixedTypedArrayElements() { |
HeapObject* array = elements(); |
@@ -6792,7 +6790,7 @@ GlobalDictionary* JSObject::global_dictionary() { |
SeededNumberDictionary* JSObject::element_dictionary() { |
- DCHECK(HasDictionaryElements()); |
+ DCHECK(HasDictionaryElements() || HasSlowStringWrapperElements()); |
return SeededNumberDictionary::cast(elements()); |
} |