Lines Matching refs:map
21 bool CanInlineElementAccess(Handle<Map> map) { in CanInlineElementAccess() argument
22 if (!map->IsJSObjectMap()) return false; in CanInlineElementAccess()
23 if (map->is_access_check_needed()) return false; in CanInlineElementAccess()
24 if (map->has_indexed_interceptor()) return false; in CanInlineElementAccess()
25 ElementsKind const elements_kind = map->elements_kind(); in CanInlineElementAccess()
32 bool CanInlinePropertyAccess(Handle<Map> map) { in CanInlinePropertyAccess() argument
37 if (map->IsBooleanMap()) return true; in CanInlinePropertyAccess()
38 if (map->instance_type() < LAST_PRIMITIVE_TYPE) return true; in CanInlinePropertyAccess()
39 return map->IsJSObjectMap() && !map->is_dictionary_map() && in CanInlinePropertyAccess()
40 !map->has_named_interceptor() && in CanInlinePropertyAccess()
42 !map->is_access_check_needed(); in CanInlinePropertyAccess()
144 Handle<Map> map, AccessMode access_mode, ElementAccessInfo* access_info) { in ComputeElementAccessInfo() argument
146 if (!CanInlineElementAccess(map)) return false; in ComputeElementAccessInfo()
148 ElementsKind const elements_kind = map->elements_kind(); in ComputeElementAccessInfo()
154 if (access_mode == AccessMode::kStore && map->prototype()->IsJSObject()) { in ComputeElementAccessInfo()
155 for (PrototypeIterator i(map); !i.IsAtEnd(); i.Advance()) { in ComputeElementAccessInfo()
164 if (!prototype->map()->is_stable()) return false; in ComputeElementAccessInfo()
170 ElementAccessInfo(Type::Class(map, zone()), elements_kind, holder); in ComputeElementAccessInfo()
180 for (Handle<Map> map : maps) { in ComputeElementAccessInfos()
181 if (Map::TryUpdate(map).ToHandle(&map)) { in ComputeElementAccessInfos()
182 if (CanInlineElementAccess(map) && in ComputeElementAccessInfos()
183 IsFastElementsKind(map->elements_kind()) && in ComputeElementAccessInfos()
184 GetInitialFastElementsKind() != map->elements_kind()) { in ComputeElementAccessInfos()
185 possible_transition_targets.Add(map); in ComputeElementAccessInfos()
193 for (Handle<Map> map : maps) { in ComputeElementAccessInfos()
194 if (Map::TryUpdate(map).ToHandle(&map)) { in ComputeElementAccessInfos()
196 Map::FindTransitionedMap(map, &possible_transition_targets); in ComputeElementAccessInfos()
198 receiver_maps.Add(map); in ComputeElementAccessInfos()
200 transitions.push_back(std::make_pair(map, transition_target)); in ComputeElementAccessInfos()
227 Handle<Map> map, Handle<Name> name, AccessMode access_mode, in ComputePropertyAccessInfo() argument
230 if (!CanInlinePropertyAccess(map)) return false; in ComputePropertyAccessInfo()
233 Handle<Map> receiver_map = map; in ComputePropertyAccessInfo()
237 LookupSpecialFieldAccessor(map, name, access_info)) { in ComputePropertyAccessInfo()
244 Handle<DescriptorArray> descriptors(map->instance_descriptors(), isolate()); in ComputePropertyAccessInfo()
245 int const number = descriptors->SearchWithCache(*name, *map); in ComputePropertyAccessInfo()
270 *map, index, field_representation.IsDouble()); in ComputePropertyAccessInfo()
294 Handle<Map> field_owner_map(map->FindFieldOwner(number), isolate()); in ComputePropertyAccessInfo()
311 if (map->IsJSTypedArrayMap() && name->IsString() && in ComputePropertyAccessInfo()
320 if (!map->prototype()->IsJSObject()) { in ComputePropertyAccessInfo()
324 if (Map::GetConstructorFunction(map, native_context()) in ComputePropertyAccessInfo()
326 map = handle(constructor->initial_map(), isolate()); in ComputePropertyAccessInfo()
327 DCHECK(map->prototype()->IsJSObject()); in ComputePropertyAccessInfo()
328 } else if (map->prototype()->IsNull()) { in ComputePropertyAccessInfo()
345 Handle<JSObject> map_prototype(JSObject::cast(map->prototype()), isolate()); in ComputePropertyAccessInfo()
346 if (map_prototype->map()->is_deprecated()) { in ComputePropertyAccessInfo()
351 map = handle(map_prototype->map(), isolate()); in ComputePropertyAccessInfo()
353 } while (CanInlinePropertyAccess(map)); in ComputePropertyAccessInfo()
361 for (Handle<Map> map : maps) { in ComputePropertyAccessInfos()
362 if (Map::TryUpdate(map).ToHandle(&map)) { in ComputePropertyAccessInfos()
364 if (!ComputePropertyAccessInfo(map, name, access_mode, &access_info)) { in ComputePropertyAccessInfos()
375 Handle<Map> map, Handle<Name> name, PropertyAccessInfo* access_info) { in LookupSpecialFieldAccessor() argument
378 if (Accessors::IsJSObjectFieldAccessor(map, name, &offset)) { in LookupSpecialFieldAccessor()
381 if (map->IsStringMap()) { in LookupSpecialFieldAccessor()
386 } else if (map->IsJSArrayMap()) { in LookupSpecialFieldAccessor()
393 if (IsFastDoubleElementsKind(map->elements_kind())) { in LookupSpecialFieldAccessor()
395 } else if (IsFastElementsKind(map->elements_kind())) { in LookupSpecialFieldAccessor()
401 *access_info = PropertyAccessInfo::DataField(Type::Class(map, zone()), in LookupSpecialFieldAccessor()
406 if (Accessors::IsJSArrayBufferViewFieldAccessor(map, name, &offset)) { in LookupSpecialFieldAccessor()
414 } else if (map->IsJSTypedArrayMap()) { in LookupSpecialFieldAccessor()
421 Type::Class(map, zone()), field_index, field_type, in LookupSpecialFieldAccessor()
429 bool AccessInfoFactory::LookupTransition(Handle<Map> map, Handle<Name> name, in LookupTransition() argument
433 if (map->unused_property_fields() == 0) return false; in LookupTransition()
435 if (TransitionArray::SearchTransition(map, kData, name, NONE) in LookupTransition()
476 Type::Class(map, zone()), field_index, field_type, FieldCheck::kNone, in LookupTransition()