diff options
Diffstat (limited to 'deps/v8/src/compiler/typer.cc')
-rw-r--r-- | deps/v8/src/compiler/typer.cc | 20 |
1 files changed, 15 insertions, 5 deletions
diff --git a/deps/v8/src/compiler/typer.cc b/deps/v8/src/compiler/typer.cc index 5dbbad3dcd..6ba1b39431 100644 --- a/deps/v8/src/compiler/typer.cc +++ b/deps/v8/src/compiler/typer.cc @@ -10,6 +10,7 @@ #include "src/codegen/tick-counter.h" #include "src/compiler/common-operator.h" #include "src/compiler/graph-reducer.h" +#include "src/compiler/js-heap-broker.h" #include "src/compiler/js-operator.h" #include "src/compiler/linkage.h" #include "src/compiler/loop-variable-optimizer.h" @@ -787,7 +788,13 @@ Type Typer::Visitor::TypeParameter(Node* node) { return Type::NonInternal(); } -Type Typer::Visitor::TypeOsrValue(Node* node) { return Type::Any(); } +Type Typer::Visitor::TypeOsrValue(Node* node) { + if (OsrValueIndexOf(node->op()) == Linkage::kOsrContextSpillSlotIndex) { + return Type::OtherInternal(); + } else { + return Type::Any(); + } +} Type Typer::Visitor::TypeRetain(Node* node) { UNREACHABLE(); } @@ -999,10 +1006,6 @@ Type Typer::Visitor::TypeTypedObjectState(Node* node) { Type Typer::Visitor::TypeCall(Node* node) { return Type::Any(); } -Type Typer::Visitor::TypeCallWithCallerSavedRegisters(Node* node) { - UNREACHABLE(); -} - Type Typer::Visitor::TypeProjection(Node* node) { Type const type = Operand(node, 0); if (type.Is(Type::None())) return Type::None(); @@ -1524,6 +1527,10 @@ Type Typer::Visitor::JSCallTyper(Type fun, Typer* t) { return Type::NonInternal(); } JSFunctionRef function = fun.AsHeapConstant()->Ref().AsJSFunction(); + if (!function.serialized()) { + TRACE_BROKER_MISSING(t->broker(), "data for function " << function); + return Type::NonInternal(); + } if (!function.shared().HasBuiltinId()) { return Type::NonInternal(); } @@ -1564,6 +1571,7 @@ Type Typer::Visitor::JSCallTyper(Type fun, Typer* t) { case Builtins::kMathPow: case Builtins::kMathMax: case Builtins::kMathMin: + case Builtins::kMathHypot: return Type::Number(); case Builtins::kMathImul: return Type::Signed32(); @@ -2364,6 +2372,8 @@ Type Typer::Visitor::TypeConstant(Handle<Object> value) { return Type::NewConstant(typer_->broker(), value, zone()); } +Type Typer::Visitor::TypeJSGetIterator(Node* node) { return Type::Any(); } + } // namespace compiler } // namespace internal } // namespace v8 |