aboutsummaryrefslogtreecommitdiff
path: root/deps/v8/src/objects/map-inl.h
diff options
context:
space:
mode:
Diffstat (limited to 'deps/v8/src/objects/map-inl.h')
-rw-r--r--deps/v8/src/objects/map-inl.h68
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_