Revision f230a1cf deps/v8/src/accessors.cc

View differences:

deps/v8/src/accessors.cc
78 78
}
79 79

  
80 80

  
81
static V8_INLINE bool CheckForName(Handle<String> name,
82
                                   String* property_name,
83
                                   int offset,
84
                                   int* object_offset) {
85
  if (name->Equals(property_name)) {
86
    *object_offset = offset;
87
    return true;
88
  }
89
  return false;
90
}
91

  
92

  
93
bool Accessors::IsJSObjectFieldAccessor(
94
      Handle<Map> map, Handle<String> name,
95
      int* object_offset) {
96
  Isolate* isolate = map->GetIsolate();
97
  switch (map->instance_type()) {
98
    case JS_ARRAY_TYPE:
99
      return
100
        CheckForName(name, isolate->heap()->length_string(),
101
                     JSArray::kLengthOffset, object_offset);
102
    case JS_TYPED_ARRAY_TYPE:
103
      return
104
        CheckForName(name, isolate->heap()->length_string(),
105
                     JSTypedArray::kLengthOffset, object_offset) ||
106
        CheckForName(name, isolate->heap()->byte_length_string(),
107
                     JSTypedArray::kByteLengthOffset, object_offset) ||
108
        CheckForName(name, isolate->heap()->byte_offset_string(),
109
                     JSTypedArray::kByteOffsetOffset, object_offset) ||
110
        CheckForName(name, isolate->heap()->buffer_string(),
111
                     JSTypedArray::kBufferOffset, object_offset);
112
    case JS_ARRAY_BUFFER_TYPE:
113
      return
114
        CheckForName(name, isolate->heap()->byte_length_string(),
115
                     JSArrayBuffer::kByteLengthOffset, object_offset);
116
    case JS_DATA_VIEW_TYPE:
117
      return
118
        CheckForName(name, isolate->heap()->byte_length_string(),
119
                     JSDataView::kByteLengthOffset, object_offset) ||
120
        CheckForName(name, isolate->heap()->byte_offset_string(),
121
                     JSDataView::kByteOffsetOffset, object_offset) ||
122
        CheckForName(name, isolate->heap()->buffer_string(),
123
                     JSDataView::kBufferOffset, object_offset);
124
    default: {
125
      if (map->instance_type() < FIRST_NONSTRING_TYPE) {
126
        return
127
          CheckForName(name, isolate->heap()->length_string(),
128
                       String::kLengthOffset, object_offset);
129
      }
130
      return false;
131
    }
132
  }
133
}
134

  
135

  
81 136
//
82 137
// Accessors::ArrayLength
83 138
//

Also available in: Unified diff