Index: src/parser.cc |
diff --git a/src/parser.cc b/src/parser.cc |
index d5353c70b255b84ddbb41741b677f148a70a32d8..782412f1b9659f77e1e8a24e8bd1c965b50fbfbc 100644 |
--- a/src/parser.cc |
+++ b/src/parser.cc |
@@ -127,7 +127,7 @@ void RegExpBuilder::FlushText() { |
void RegExpBuilder::AddCharacter(uc16 c) { |
pending_empty_ = false; |
if (characters_ == NULL) { |
- characters_ = new ZoneList<uc16>(4); |
+ characters_ = new(zone()) ZoneList<uc16>(4); |
} |
characters_->Add(c); |
LAST(ADD_CHAR); |
@@ -639,7 +639,7 @@ FunctionLiteral* Parser::DoParseProgram(Handle<String> source, |
if (strict_mode == kStrictMode) { |
top_scope_->EnableStrictMode(); |
} |
- ZoneList<Statement*>* body = new ZoneList<Statement*>(16); |
+ ZoneList<Statement*>* body = new(zone()) ZoneList<Statement*>(16); |
bool ok = true; |
int beg_loc = scanner().location().beg_pos; |
ParseSourceElements(body, Token::EOS, &ok); |
@@ -1049,9 +1049,10 @@ class ThisNamedPropertyAssigmentFinder : public ParserFinder { |
if (names_ == NULL) { |
ASSERT(assigned_arguments_ == NULL); |
ASSERT(assigned_constants_ == NULL); |
- names_ = new ZoneStringList(4); |
- assigned_arguments_ = new ZoneList<int>(4); |
- assigned_constants_ = new ZoneObjectList(4); |
+ Zone* zone = isolate_->zone(); |
+ names_ = new(zone) ZoneStringList(4); |
+ assigned_arguments_ = new(zone) ZoneList<int>(4); |
+ assigned_constants_ = new(zone) ZoneObjectList(4); |
} |
} |
@@ -1653,7 +1654,7 @@ Block* Parser::ParseVariableDeclarations(bool accept_IN, |
if (top_scope_->is_global_scope()) { |
// Compute the arguments for the runtime call. |
- ZoneList<Expression*>* arguments = new ZoneList<Expression*>(3); |
+ ZoneList<Expression*>* arguments = new(zone()) ZoneList<Expression*>(3); |
// We have at least 1 parameter. |
arguments->Add(new(zone()) Literal(name)); |
CallRuntime* initialize; |
@@ -1770,7 +1771,7 @@ Statement* Parser::ParseExpressionOrLabelledStatement(ZoneStringList* labels, |
*ok = false; |
return NULL; |
} |
- if (labels == NULL) labels = new ZoneStringList(4); |
+ if (labels == NULL) labels = new(zone()) ZoneStringList(4); |
labels->Add(label); |
// Remove the "ghost" variable that turned out to be a label |
// from the top scope. This way, we don't try to resolve it |
@@ -1911,7 +1912,7 @@ Block* Parser::WithHelper(Expression* obj, |
bool is_catch_block, |
bool* ok) { |
// Parse the statement and collect escaping labels. |
- ZoneList<Label*>* target_list = new ZoneList<Label*>(0); |
+ ZoneList<Label*>* target_list = new(zone()) ZoneList<Label*>(0); |
TargetCollector collector(target_list); |
Statement* stat; |
{ Target target(&this->target_stack_, &collector); |
@@ -1986,7 +1987,7 @@ CaseClause* Parser::ParseCaseClause(bool* default_seen_ptr, bool* ok) { |
} |
Expect(Token::COLON, CHECK_OK); |
int pos = scanner().location().beg_pos; |
- ZoneList<Statement*>* statements = new ZoneList<Statement*>(5); |
+ ZoneList<Statement*>* statements = new(zone()) ZoneList<Statement*>(5); |
while (peek() != Token::CASE && |
peek() != Token::DEFAULT && |
peek() != Token::RBRACE) { |
@@ -2012,7 +2013,7 @@ SwitchStatement* Parser::ParseSwitchStatement(ZoneStringList* labels, |
Expect(Token::RPAREN, CHECK_OK); |
bool default_seen = false; |
- ZoneList<CaseClause*>* cases = new ZoneList<CaseClause*>(4); |
+ ZoneList<CaseClause*>* cases = new(zone()) ZoneList<CaseClause*>(4); |
Expect(Token::LBRACE, CHECK_OK); |
while (peek() != Token::RBRACE) { |
CaseClause* clause = ParseCaseClause(&default_seen, CHECK_OK); |
@@ -2057,7 +2058,7 @@ TryStatement* Parser::ParseTryStatement(bool* ok) { |
Expect(Token::TRY, CHECK_OK); |
- ZoneList<Label*>* target_list = new ZoneList<Label*>(0); |
+ ZoneList<Label*>* target_list = new(zone()) ZoneList<Label*>(0); |
TargetCollector collector(target_list); |
Block* try_block; |
@@ -2080,7 +2081,7 @@ TryStatement* Parser::ParseTryStatement(bool* ok) { |
// then we will need to collect jump targets from the catch block. Since |
// we don't know yet if there will be a finally block, we always collect |
// the jump targets. |
- ZoneList<Label*>* catch_target_list = new ZoneList<Label*>(0); |
+ ZoneList<Label*>* catch_target_list = new(zone()) ZoneList<Label*>(0); |
TargetCollector catch_collector(catch_target_list); |
bool has_catch = false; |
if (tok == Token::CATCH) { |
@@ -2726,7 +2727,9 @@ Expression* Parser::ParseNewPrefix(PositionStack* stack, bool* ok) { |
if (!stack->is_empty()) { |
int last = stack->pop(); |
- result = new(zone()) CallNew(result, new ZoneList<Expression*>(0), last); |
+ result = new(zone()) CallNew(result, |
+ new(zone()) ZoneList<Expression*>(0), |
+ last); |
} |
return result; |
} |
@@ -2993,7 +2996,7 @@ Expression* Parser::ParseArrayLiteral(bool* ok) { |
// ArrayLiteral :: |
// '[' Expression? (',' Expression?)* ']' |
- ZoneList<Expression*>* values = new ZoneList<Expression*>(4); |
+ ZoneList<Expression*>* values = new(zone()) ZoneList<Expression*>(4); |
Expect(Token::LBRACK, CHECK_OK); |
while (peek() != Token::RBRACK) { |
Expression* elem; |
@@ -3335,7 +3338,7 @@ Expression* Parser::ParseObjectLiteral(bool* ok) { |
// )*[','] '}' |
ZoneList<ObjectLiteral::Property*>* properties = |
- new ZoneList<ObjectLiteral::Property*>(4); |
+ new(zone()) ZoneList<ObjectLiteral::Property*>(4); |
int number_of_boilerplate_properties = 0; |
bool has_function = false; |
@@ -3497,7 +3500,7 @@ ZoneList<Expression*>* Parser::ParseArguments(bool* ok) { |
// Arguments :: |
// '(' (AssignmentExpression)*[','] ')' |
- ZoneList<Expression*>* result = new ZoneList<Expression*>(4); |
+ ZoneList<Expression*>* result = new(zone()) ZoneList<Expression*>(4); |
Expect(Token::LPAREN, CHECK_OK); |
bool done = (peek() == Token::RPAREN); |
while (!done) { |
@@ -3534,7 +3537,7 @@ FunctionLiteral* Parser::ParseFunctionLiteral(Handle<String> var_name, |
int num_parameters = 0; |
Scope* scope = NewScope(top_scope_, Scope::FUNCTION_SCOPE, inside_with()); |
- ZoneList<Statement*>* body = new ZoneList<Statement*>(8); |
+ ZoneList<Statement*>* body = new(zone()) ZoneList<Statement*>(8); |
int materialized_literal_count; |
int expected_property_count; |
int start_pos; |
@@ -4007,7 +4010,7 @@ Expression* Parser::NewThrowError(Handle<String> constructor, |
Handle<JSArray> array = isolate()->factory()->NewJSArrayWithElements(elements, |
TENURED); |
- ZoneList<Expression*>* args = new ZoneList<Expression*>(2); |
+ ZoneList<Expression*>* args = new(zone()) ZoneList<Expression*>(2); |
args->Add(new(zone()) Literal(type)); |
args->Add(new(zone()) Literal(array)); |
return new(zone()) Throw(new(zone()) CallRuntime(constructor, NULL, args), |
@@ -4396,7 +4399,8 @@ RegExpTree* RegExpParser::ParseDisjunction() { |
case '.': { |
Advance(); |
// everything except \x0a, \x0d, \u2028 and \u2029 |
- ZoneList<CharacterRange>* ranges = new ZoneList<CharacterRange>(2); |
+ ZoneList<CharacterRange>* ranges = |
+ new(zone()) ZoneList<CharacterRange>(2); |
CharacterRange::AddClassEscape('.', ranges); |
RegExpTree* atom = new(zone()) RegExpCharacterClass(ranges, false); |
builder->AddAtom(atom); |
@@ -4423,7 +4427,7 @@ RegExpTree* RegExpParser::ParseDisjunction() { |
Advance(2); |
} else { |
if (captures_ == NULL) { |
- captures_ = new ZoneList<RegExpCapture*>(2); |
+ captures_ = new(zone()) ZoneList<RegExpCapture*>(2); |
} |
if (captures_started() >= kMaxCaptures) { |
ReportError(CStrVector("Too many captures") CHECK_FAILED); |
@@ -4466,7 +4470,8 @@ RegExpTree* RegExpParser::ParseDisjunction() { |
case 'd': case 'D': case 's': case 'S': case 'w': case 'W': { |
uc32 c = Next(); |
Advance(2); |
- ZoneList<CharacterRange>* ranges = new ZoneList<CharacterRange>(2); |
+ ZoneList<CharacterRange>* ranges = |
+ new(zone()) ZoneList<CharacterRange>(2); |
CharacterRange::AddClassEscape(c, ranges); |
RegExpTree* atom = new(zone()) RegExpCharacterClass(ranges, false); |
builder->AddAtom(atom); |
@@ -4962,7 +4967,7 @@ RegExpTree* RegExpParser::ParseCharacterClass() { |
is_negated = true; |
Advance(); |
} |
- ZoneList<CharacterRange>* ranges = new ZoneList<CharacterRange>(2); |
+ ZoneList<CharacterRange>* ranges = new(zone()) ZoneList<CharacterRange>(2); |
while (has_more() && current() != ']') { |
uc16 char_class = kNoCharClass; |
CharacterRange first = ParseClassAtom(&char_class CHECK_FAILED); |