Index: src/objects-inl.h |
=================================================================== |
--- src/objects-inl.h (revision 2644) |
+++ src/objects-inl.h (working copy) |
@@ -100,6 +100,25 @@ |
} |
+bool Object::IsInstanceOf(FunctionTemplateInfo* expected) { |
+ // There is a constraint on the object; check. |
+ if (!this->IsJSObject()) return false; |
+ // Fetch the constructor function of the object. |
+ Object* cons_obj = JSObject::cast(this)->map()->constructor(); |
+ if (!cons_obj->IsJSFunction()) return false; |
+ JSFunction* fun = JSFunction::cast(cons_obj); |
+ // Iterate through the chain of inheriting function templates to |
+ // see if the required one occurs. |
+ for (Object* type = fun->shared()->function_data(); |
+ type->IsFunctionTemplateInfo(); |
+ type = FunctionTemplateInfo::cast(type)->parent_template()) { |
+ if (type == expected) return true; |
+ } |
+ // Didn't find the required type in the inheritance chain. |
+ return false; |
+} |
+ |
+ |
bool Object::IsSmi() { |
return HAS_SMI_TAG(this); |
} |