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}
This commit is contained in:
bradnelson 2015-08-21 11:15:33 -07:00 committed by Commit bot
parent cdff697b17
commit 233599fa70
4 changed files with 11 additions and 27 deletions

View File

@ -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.

View File

@ -8335,7 +8335,7 @@ bool HOptimizedGraphBuilder::TryInline(Handle<JSFunction> 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()) {

View File

@ -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<Statement*>* stmts) {
for (int i = 0; i < stmts->length(); ++i) {
Statement* stmt = stmts->at(i);

View File

@ -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);