Index: src/parser.cc |
diff --git a/src/parser.cc b/src/parser.cc |
index dafab10c1cc4194ec8da5d71c7a7cc5a8fcdcc0d..087b6bd9b8c7645f53566f5d2376ee0378d7aebf 100644 |
--- a/src/parser.cc |
+++ b/src/parser.cc |
@@ -111,7 +111,7 @@ void RegExpBuilder::FlushTerms() { |
int num_terms = terms_.length(); |
RegExpTree* alternative; |
if (num_terms == 0) { |
- alternative = RegExpEmpty::GetInstance(); |
+ alternative = new (zone()) RegExpEmpty(); |
} else if (num_terms == 1) { |
alternative = terms_.last(); |
} else { |
@@ -126,12 +126,8 @@ void RegExpBuilder::FlushTerms() { |
RegExpTree* RegExpBuilder::ToRegExp() { |
FlushTerms(); |
int num_alternatives = alternatives_.length(); |
- if (num_alternatives == 0) { |
- return RegExpEmpty::GetInstance(); |
- } |
- if (num_alternatives == 1) { |
- return alternatives_.last(); |
- } |
+ if (num_alternatives == 0) return new (zone()) RegExpEmpty(); |
+ if (num_alternatives == 1) return alternatives_.last(); |
return new(zone()) RegExpDisjunction(alternatives_.GetList(zone())); |
} |