Commit 233599fa authored by bradnelson's avatar bradnelson Committed by Commit bot

Don't allocate AstTyper with the zone allocator.

While the class Type objects the AstTyper generates should be
allocated to zone memory, there's no particular reason
the typer object itself needs to be.

BUG=None
TEST=None
R=rossberg@chromium.org,titzer@chromium.org
LOG=N

Review URL: https://codereview.chromium.org/1303843003

Cr-Commit-Position: refs/heads/master@{#30313}
parent cdff697b
...@@ -468,7 +468,7 @@ OptimizedCompileJob::Status OptimizedCompileJob::CreateGraph() { ...@@ -468,7 +468,7 @@ OptimizedCompileJob::Status OptimizedCompileJob::CreateGraph() {
} }
// Type-check the function. // Type-check the function.
AstTyper::Run(info()); AstTyper(info()).Run();
// Optimization could have been disabled by the parser. Note that this check // Optimization could have been disabled by the parser. Note that this check
// is only needed because the Hydrogen graph builder is missing some bailouts. // is only needed because the Hydrogen graph builder is missing some bailouts.
......
...@@ -8335,7 +8335,7 @@ bool HOptimizedGraphBuilder::TryInline(Handle<JSFunction> target, ...@@ -8335,7 +8335,7 @@ bool HOptimizedGraphBuilder::TryInline(Handle<JSFunction> target,
// Type-check the inlined function. // Type-check the inlined function.
DCHECK(target_shared->has_deoptimization_support()); DCHECK(target_shared->has_deoptimization_support());
AstTyper::Run(&target_info); AstTyper(&target_info).Run();
int inlining_id = 0; int inlining_id = 0;
if (top_info()->is_tracking_positions()) { if (top_info()->is_tracking_positions()) {
......
...@@ -26,24 +26,6 @@ AstTyper::AstTyper(CompilationInfo* info) ...@@ -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 #ifdef OBJECT_PRINT
static void PrintObserved(Variable* var, Object* value, Type* type) { static void PrintObserved(Variable* var, Object* value, Type* type) {
OFStream os(stdout); OFStream os(stdout);
...@@ -122,6 +104,13 @@ void AstTyper::ObserveTypesAtOsrEntry(IterationStatement* stmt) { ...@@ -122,6 +104,13 @@ void AstTyper::ObserveTypesAtOsrEntry(IterationStatement* stmt) {
} while (false) } while (false)
void AstTyper::Run() {
Scope* scope = info_->scope();
RECURSE(VisitDeclarations(scope->declarations()));
RECURSE(VisitStatements(info_->literal()->body()));
}
void AstTyper::VisitStatements(ZoneList<Statement*>* stmts) { void AstTyper::VisitStatements(ZoneList<Statement*>* stmts) {
for (int i = 0; i < stmts->length(); ++i) { for (int i = 0; i < stmts->length(); ++i) {
Statement* stmt = stmts->at(i); Statement* stmt = stmts->at(i);
......
...@@ -19,17 +19,12 @@ namespace internal { ...@@ -19,17 +19,12 @@ namespace internal {
class AstTyper: public AstVisitor { class AstTyper: public AstVisitor {
public: public:
static void Run(CompilationInfo* info); explicit AstTyper(CompilationInfo* info);
void Run();
void* operator new(size_t size, Zone* zone) { return zone->New(size); }
void operator delete(void* pointer, Zone* zone) { }
void operator delete(void* pointer) { }
DEFINE_AST_VISITOR_SUBCLASS_MEMBERS(); DEFINE_AST_VISITOR_SUBCLASS_MEMBERS();
private: private:
explicit AstTyper(CompilationInfo* info);
Effect ObservedOnStack(Object* value); Effect ObservedOnStack(Object* value);
void ObserveTypesAtOsrEntry(IterationStatement* stmt); void ObserveTypesAtOsrEntry(IterationStatement* stmt);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment