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

Unified Diff: pkg/compiler/lib/src/js_emitter/old_emitter/class_builder.dart

Issue 1153243003: dart2js: Use frequency of occurence to sort metadata indices. (Closed) Base URL: git@github.com:dart-lang/sdk.git@master
Patch Set: Addressed sra's comments Created 5 years, 6 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
Index: pkg/compiler/lib/src/js_emitter/old_emitter/class_builder.dart
diff --git a/pkg/compiler/lib/src/js_emitter/old_emitter/class_builder.dart b/pkg/compiler/lib/src/js_emitter/old_emitter/class_builder.dart
index 3be27cf899f4b09f09424366f5f8c25e75f1d7c4..a8b4cddf9f09bb01c77613883276ffdab694474c 100644
--- a/pkg/compiler/lib/src/js_emitter/old_emitter/class_builder.dart
+++ b/pkg/compiler/lib/src/js_emitter/old_emitter/class_builder.dart
@@ -9,10 +9,10 @@ part of dart2js.js_emitter;
*/
class ClassBuilder {
final List<jsAst.Property> properties = <jsAst.Property>[];
- final List<String> fields = <String>[];
+ final List<jsAst.Literal> fields = <jsAst.Literal>[];
String superName;
- String functionType;
+ jsAst.Node functionType;
List<jsAst.Node> fieldMetadata;
final Element element;
@@ -26,7 +26,7 @@ class ClassBuilder {
return property;
}
- void addField(String field) {
+ void addField(jsAst.Literal field) {
fields.add(field);
}
@@ -41,18 +41,19 @@ class ClassBuilder {
jsAst.ObjectInitializer toObjectInitializer(
{bool emitClassDescriptor: true}) {
- StringBuffer buffer = new StringBuffer();
+ List<jsAst.Literal> parts = <jsAst.Literal>[];
if (superName != null) {
- buffer.write(superName);
+ parts.add(js.stringPart(superName));
if (functionType != null) {
// See [functionTypeEncodingDescription] above.
- buffer.write(':$functionType');
+ parts.add(js.stringPart(':'));
+ parts.add(functionType);
}
- buffer.write(';');
+ parts.add(js.stringPart(';'));
}
// See [fieldEncodingDescription] above.
- buffer.writeAll(fields, ',');
- var classData = js.string('$buffer');
+ parts.addAll(js.joinLiterals(fields, js.stringPart(',')));
+ var classData = js.concatenateStrings(parts, addQuotes: true);
if (fieldMetadata != null) {
// If we need to store fieldMetadata, classData is turned into an array,
// and the field metadata is appended. So if classData is just a string,

Powered by Google App Engine
This is Rietveld 408576698