Index: src/objects.cc |
diff --git a/src/objects.cc b/src/objects.cc |
index 36d6ea870c493945536ed49df2ee99917782442b..e3b365467b112468ffbc68dcfbb47936757782e7 100644 |
--- a/src/objects.cc |
+++ b/src/objects.cc |
@@ -15988,6 +15988,24 @@ void JSObject::CollectOwnPropertyNames(KeyAccumulator* keys, |
} |
} |
+bool JSObject::WasConstructedFromApiFunction() { |
+ auto instance_type = map()->instance_type(); |
+ bool is_api_object = instance_type == JS_API_OBJECT_TYPE || |
+ instance_type == JS_SPECIAL_API_OBJECT_TYPE; |
+#ifdef ENABLE_SLOW_DCHECKS |
+ if (FLAG_enable_slow_asserts) { |
+ Object* maybe_constructor = map()->GetConstructor(); |
+ if (!maybe_constructor->IsJSFunction()) return false; |
+ JSFunction* constructor = JSFunction::cast(maybe_constructor); |
+ if (constructor->shared()->IsApiFunction()) { |
+ DCHECK(is_api_object); |
+ } else { |
+ DCHECK(!is_api_object); |
+ } |
+ } |
+#endif |
+ return is_api_object; |
+} |
int JSObject::NumberOfOwnElements(PropertyFilter filter) { |
// Fast case for objects with no elements. |