summaryrefslogtreecommitdiff
path: root/chromium/v8/src/compiler/typer.cc
diff options
context:
space:
mode:
Diffstat (limited to 'chromium/v8/src/compiler/typer.cc')
-rw-r--r--chromium/v8/src/compiler/typer.cc11
1 files changed, 11 insertions, 0 deletions
diff --git a/chromium/v8/src/compiler/typer.cc b/chromium/v8/src/compiler/typer.cc
index 9ea962b8659..2590342d2e4 100644
--- a/chromium/v8/src/compiler/typer.cc
+++ b/chromium/v8/src/compiler/typer.cc
@@ -289,6 +289,7 @@ class Typer::Visitor : public Reducer {
static Type* ObjectIsArrayBufferView(Type*, Typer*);
static Type* ObjectIsCallable(Type*, Typer*);
+ static Type* ObjectIsConstructor(Type*, Typer*);
static Type* ObjectIsDetectableCallable(Type*, Typer*);
static Type* ObjectIsMinusZero(Type*, Typer*);
static Type* ObjectIsNaN(Type*, Typer*);
@@ -523,6 +524,12 @@ Type* Typer::Visitor::ObjectIsCallable(Type* type, Typer* t) {
return Type::Boolean();
}
+Type* Typer::Visitor::ObjectIsConstructor(Type* type, Typer* t) {
+ // TODO(turbofan): Introduce a Type::Constructor?
+ if (!type->Maybe(Type::Callable())) return t->singleton_false_;
+ return Type::Boolean();
+}
+
Type* Typer::Visitor::ObjectIsDetectableCallable(Type* type, Typer* t) {
if (type->Is(Type::DetectableCallable())) return t->singleton_true_;
if (!type->Maybe(Type::DetectableCallable())) return t->singleton_false_;
@@ -1986,6 +1993,10 @@ Type* Typer::Visitor::TypeObjectIsCallable(Node* node) {
return TypeUnaryOp(node, ObjectIsCallable);
}
+Type* Typer::Visitor::TypeObjectIsConstructor(Node* node) {
+ return TypeUnaryOp(node, ObjectIsConstructor);
+}
+
Type* Typer::Visitor::TypeObjectIsDetectableCallable(Node* node) {
return TypeUnaryOp(node, ObjectIsDetectableCallable);
}