diff --git a/src/compiler.cc b/src/compiler.cc index 9ce666c911..839b99f023 100644 --- a/src/compiler.cc +++ b/src/compiler.cc @@ -468,7 +468,7 @@ OptimizedCompileJob::Status OptimizedCompileJob::CreateGraph() { } // Type-check the function. - AstTyper::Run(info()); + AstTyper(info()).Run(); // Optimization could have been disabled by the parser. Note that this check // is only needed because the Hydrogen graph builder is missing some bailouts. diff --git a/src/hydrogen.cc b/src/hydrogen.cc index 317164283b..782baa028a 100644 --- a/src/hydrogen.cc +++ b/src/hydrogen.cc @@ -8335,7 +8335,7 @@ bool HOptimizedGraphBuilder::TryInline(Handle target, // Type-check the inlined function. DCHECK(target_shared->has_deoptimization_support()); - AstTyper::Run(&target_info); + AstTyper(&target_info).Run(); int inlining_id = 0; if (top_info()->is_tracking_positions()) { diff --git a/src/typing.cc b/src/typing.cc index e1991f25c5..1cb7577775 100644 --- a/src/typing.cc +++ b/src/typing.cc @@ -26,24 +26,6 @@ AstTyper::AstTyper(CompilationInfo* info) } -#define RECURSE(call) \ - do { \ - DCHECK(!visitor->HasStackOverflow()); \ - call; \ - if (visitor->HasStackOverflow()) return; \ - } while (false) - -void AstTyper::Run(CompilationInfo* info) { - AstTyper* visitor = new(info->zone()) AstTyper(info); - Scope* scope = info->scope(); - - RECURSE(visitor->VisitDeclarations(scope->declarations())); - RECURSE(visitor->VisitStatements(info->literal()->body())); -} - -#undef RECURSE - - #ifdef OBJECT_PRINT static void PrintObserved(Variable* var, Object* value, Type* type) { OFStream os(stdout); @@ -122,6 +104,13 @@ void AstTyper::ObserveTypesAtOsrEntry(IterationStatement* stmt) { } while (false) +void AstTyper::Run() { + Scope* scope = info_->scope(); + RECURSE(VisitDeclarations(scope->declarations())); + RECURSE(VisitStatements(info_->literal()->body())); +} + + void AstTyper::VisitStatements(ZoneList* stmts) { for (int i = 0; i < stmts->length(); ++i) { Statement* stmt = stmts->at(i); diff --git a/src/typing.h b/src/typing.h index f3ead18f99..ccfb973437 100644 --- a/src/typing.h +++ b/src/typing.h @@ -19,17 +19,12 @@ namespace internal { class AstTyper: public AstVisitor { public: - static void Run(CompilationInfo* info); - - void* operator new(size_t size, Zone* zone) { return zone->New(size); } - void operator delete(void* pointer, Zone* zone) { } - void operator delete(void* pointer) { } + explicit AstTyper(CompilationInfo* info); + void Run(); DEFINE_AST_VISITOR_SUBCLASS_MEMBERS(); private: - explicit AstTyper(CompilationInfo* info); - Effect ObservedOnStack(Object* value); void ObserveTypesAtOsrEntry(IterationStatement* stmt);