Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1653)

Unified Diff: runtime/vm/parser.cc

Issue 1325373004: More cleanups for background compilation. (Closed) Base URL: https://github.com/dart-lang/sdk.git@master
Patch Set: Simpler code Created 5 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « runtime/vm/object.cc ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: runtime/vm/parser.cc
diff --git a/runtime/vm/parser.cc b/runtime/vm/parser.cc
index 33bfffc157f8fa7da7f7f740f61f007a54b0615f..d837830bcea0978e8e1bdf72921beade7e1f5c17 100644
--- a/runtime/vm/parser.cc
+++ b/runtime/vm/parser.cc
@@ -1050,7 +1050,7 @@ RawObject* Parser::ParseMetadata(const Class& cls, intptr_t token_pos) {
RawArray* Parser::EvaluateMetadata() {
CheckToken(Token::kAT, "Metadata character '@' expected");
GrowableObjectArray& meta_values =
- GrowableObjectArray::Handle(Z, GrowableObjectArray::New());
+ GrowableObjectArray::Handle(Z, GrowableObjectArray::New(Heap::kOld));
while (CurrentToken() == Token::kAT) {
ConsumeToken();
intptr_t expr_pos = TokenPos();
@@ -1119,7 +1119,7 @@ RawArray* Parser::EvaluateMetadata() {
ReportError(expr_pos, "expression must be a compile-time constant");
}
const Instance& val = EvaluateConstExpr(expr_pos, expr);
- meta_values.Add(val);
+ meta_values.Add(val, Heap::kOld);
}
return Array::MakeArray(meta_values);
}
@@ -1541,7 +1541,7 @@ SequenceNode* Parser::ParseNoSuchMethodDispatcher(const Function& func) {
if (desc.NamedCount() > 0) {
const Array& arg_names =
- Array::ZoneHandle(Z, Array::New(desc.NamedCount()));
+ Array::ZoneHandle(Z, Array::New(desc.NamedCount(), Heap::kOld));
for (intptr_t i = 0; i < arg_names.Length(); ++i) {
arg_names.SetAt(i, String::Handle(Z, desc.NameAt(i)));
}
@@ -5797,13 +5797,14 @@ void Parser::ParseLibraryName() {
ConsumeToken();
String& lib_name = *ExpectIdentifier("library name expected");
if (CurrentToken() == Token::kPERIOD) {
+ GrowableHandlePtrArray<const String> pieces(Z, 3);
+ pieces.Add(lib_name);
while (CurrentToken() == Token::kPERIOD) {
ConsumeToken();
- lib_name = String::Concat(lib_name, Symbols::Dot());
- lib_name = String::Concat(lib_name,
- *ExpectIdentifier("malformed library name"));
+ pieces.Add(Symbols::Dot());
+ pieces.Add(*ExpectIdentifier("malformed library name"));
}
- lib_name = Symbols::New(lib_name);
+ lib_name = Symbols::FromConcatAll(pieces);
}
library_.SetName(lib_name);
ExpectSemicolon();
@@ -11649,10 +11650,13 @@ AstNode* Parser::ParseClosurization(AstNode* primary) {
}
// Closurization of instance getter, setter, method or operator.
+ GrowableHandlePtrArray<const String> pieces(Z, 3);
+ pieces.Add(Symbols::HashMark());
if (is_setter_name) {
- extractor_name = String::Concat(Symbols::SetterPrefix(), extractor_name);
+ pieces.Add(Symbols::SetterPrefix());
}
- extractor_name = Symbols::FromConcat(Symbols::HashMark(), extractor_name);
+ pieces.Add(extractor_name);
+ extractor_name = Symbols::FromConcatAll(pieces);
return new(Z) InstanceGetterNode(property_pos, primary, extractor_name);
}
@@ -13542,14 +13546,15 @@ String& Parser::Interpolate(const GrowableArray<AstNode*>& values) {
ASSERT(!func.IsNull());
// Build the array of literal values to interpolate.
- const Array& value_arr = Array::Handle(Z, Array::New(values.length()));
+ const Array& value_arr = Array::Handle(Z,
+ Array::New(values.length(), Heap::kOld));
for (int i = 0; i < values.length(); i++) {
ASSERT(values[i]->IsLiteralNode());
value_arr.SetAt(i, values[i]->AsLiteralNode()->literal());
}
// Build argument array to pass to the interpolation function.
- const Array& interpolate_arg = Array::Handle(Z, Array::New(1));
+ const Array& interpolate_arg = Array::Handle(Z, Array::New(1, Heap::kOld));
interpolate_arg.SetAt(0, value_arr);
// Call interpolation function.
@@ -13746,9 +13751,12 @@ AstNode* Parser::ParsePrimary() {
// is used. We cheat a little here by looking at the next token
// to determine whether we have an unresolved method call or
// field access.
- String& qualified_name = String::ZoneHandle(Z, prefix.name());
- qualified_name = String::Concat(qualified_name, Symbols::Dot());
- qualified_name = Symbols::FromConcat(qualified_name, ident);
+ GrowableHandlePtrArray<const String> pieces(Z, 3);
+ pieces.Add(String::Handle(Z, prefix.name()));
+ pieces.Add(Symbols::Dot());
+ pieces.Add(ident);
+ const String& qualified_name = String::ZoneHandle(Z,
+ Symbols::FromConcatAll(pieces));
InvocationMirror::Type call_type =
CurrentToken() == Token::kLPAREN ?
InvocationMirror::kMethod : InvocationMirror::kGetter;
« no previous file with comments | « runtime/vm/object.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698