| Index: src/accessors.cc
|
| diff --git a/src/accessors.cc b/src/accessors.cc
|
| index cd4156468b0e754c76b5143e234a976d9c5863c3..25ee3059abe33118daf39b24768b0f25582e21d5 100644
|
| --- a/src/accessors.cc
|
| +++ b/src/accessors.cc
|
| @@ -91,10 +91,19 @@ static V8_INLINE bool CheckForName(Handle<String> name,
|
| }
|
|
|
|
|
| -bool Accessors::IsJSObjectFieldAccessor(
|
| - Handle<Map> map, Handle<String> name,
|
| - int* object_offset) {
|
| - Isolate* isolate = map->GetIsolate();
|
| +bool Accessors::IsJSObjectFieldAccessor(Handle<HeapType> type,
|
| + Handle<String> name,
|
| + int* object_offset) {
|
| + Isolate* isolate = name->GetIsolate();
|
| +
|
| + if (type->Is(HeapType::String())) {
|
| + return CheckForName(name, isolate->heap()->length_string(),
|
| + String::kLengthOffset, object_offset);
|
| + }
|
| +
|
| + if (!type->IsClass()) return false;
|
| + Handle<Map> map = type->AsClass();
|
| +
|
| switch (map->instance_type()) {
|
| case JS_ARRAY_TYPE:
|
| return
|
| @@ -122,14 +131,8 @@ bool Accessors::IsJSObjectFieldAccessor(
|
| JSDataView::kByteOffsetOffset, object_offset) ||
|
| CheckForName(name, isolate->heap()->buffer_string(),
|
| JSDataView::kBufferOffset, object_offset);
|
| - default: {
|
| - if (map->instance_type() < FIRST_NONSTRING_TYPE) {
|
| - return
|
| - CheckForName(name, isolate->heap()->length_string(),
|
| - String::kLengthOffset, object_offset);
|
| - }
|
| + default:
|
| return false;
|
| - }
|
| }
|
| }
|
|
|
|
|