diff options
Diffstat (limited to 'deps/v8/src/objects/map-inl.h')
-rw-r--r-- | deps/v8/src/objects/map-inl.h | 68 |
1 files changed, 68 insertions, 0 deletions
diff --git a/deps/v8/src/objects/map-inl.h b/deps/v8/src/objects/map-inl.h new file mode 100644 index 0000000000..aab6e78668 --- /dev/null +++ b/deps/v8/src/objects/map-inl.h @@ -0,0 +1,68 @@ +// Copyright 2017 the V8 project authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#ifndef V8_OBJECTS_MAP_INL_H_ +#define V8_OBJECTS_MAP_INL_H_ + +#include "src/field-type.h" +#include "src/objects/map.h" + +// Has to be the last include (doesn't have include guards): +#include "src/objects/object-macros.h" + +namespace v8 { +namespace internal { + +CAST_ACCESSOR(Map) + +InterceptorInfo* Map::GetNamedInterceptor() { + DCHECK(has_named_interceptor()); + FunctionTemplateInfo* info = GetFunctionTemplateInfo(); + return InterceptorInfo::cast(info->named_property_handler()); +} + +InterceptorInfo* Map::GetIndexedInterceptor() { + DCHECK(has_indexed_interceptor()); + FunctionTemplateInfo* info = GetFunctionTemplateInfo(); + return InterceptorInfo::cast(info->indexed_property_handler()); +} + +bool Map::IsInplaceGeneralizableField(PropertyConstness constness, + Representation representation, + FieldType* field_type) { + if (FLAG_track_constant_fields && FLAG_modify_map_inplace && + (constness == kConst)) { + // kConst -> kMutable field generalization may happen in-place. + return true; + } + if (representation.IsHeapObject() && !field_type->IsAny()) { + return true; + } + return false; +} + +int NormalizedMapCache::GetIndex(Handle<Map> map) { + return map->Hash() % NormalizedMapCache::kEntries; +} + +bool NormalizedMapCache::IsNormalizedMapCache(const HeapObject* obj) { + if (!obj->IsFixedArray()) return false; + if (FixedArray::cast(obj)->length() != NormalizedMapCache::kEntries) { + return false; + } +#ifdef VERIFY_HEAP + if (FLAG_verify_heap) { + reinterpret_cast<NormalizedMapCache*>(const_cast<HeapObject*>(obj)) + ->NormalizedMapCacheVerify(); + } +#endif + return true; +} + +} // namespace internal +} // namespace v8 + +#include "src/objects/object-macros-undef.h" + +#endif // V8_OBJECTS_MAP_INL_H_ |