From 72736aff0ddd03b01241946a8280b6ae5bfe6a64 Mon Sep 17 00:00:00 2001 From: Stephen Adams Date: Wed, 20 Dec 2017 06:09:25 +0000 Subject: [PATCH] Avoid introducing js.Parameters in constructor body Use the Parameter name in the template so that it is converted into a VariableUse. This change fixes some double-counting in the function parameter / local variable minifier which made the --fast-startup constructors 'miss' using some minified names. I believe the 'missed' names is a regression. Saves 50k (0.4%) on one large app. Change-Id: Ib7597f5c474ef285b082697e368667dbac23931b Reviewed-on: https://dart-review.googlesource.com/30720 Reviewed-by: Sigmund Cherem Commit-Queue: Stephen Adams --- .../src/js_emitter/startup_emitter/fragment_emitter.dart | 8 ++++---- pkg/js_ast/lib/src/template.dart | 2 -- 2 files changed, 4 insertions(+), 6 deletions(-) diff --git a/pkg/compiler/lib/src/js_emitter/startup_emitter/fragment_emitter.dart b/pkg/compiler/lib/src/js_emitter/startup_emitter/fragment_emitter.dart index c77ab3bdb1c..13cfaef992a 100644 --- a/pkg/compiler/lib/src/js_emitter/startup_emitter/fragment_emitter.dart +++ b/pkg/compiler/lib/src/js_emitter/startup_emitter/fragment_emitter.dart @@ -756,15 +756,15 @@ class FragmentEmitter { for (Field field in cls.fields) { js.Parameter parameter = new js.Parameter('t${parameters.length}'); parameters.add(parameter); - statements - .add(js.js.statement('#.# = #', [thisRef, field.name, parameter])); + statements.add( + js.js.statement('#.# = #', [thisRef, field.name, parameter.name])); } if (cls.hasRtiField) { js.Parameter parameter = new js.Parameter('t${parameters.length}'); parameters.add(parameter); - statements.add(js.js - .statement('#.# = #', [thisRef, namer.rtiFieldJsName, parameter])); + statements.add(js.js.statement( + '#.# = #', [thisRef, namer.rtiFieldJsName, parameter.name])); } return js.js('function #(#) { # }', [name, parameters, statements]); diff --git a/pkg/js_ast/lib/src/template.dart b/pkg/js_ast/lib/src/template.dart index 2c04ce9bf28..e85f33a9604 100644 --- a/pkg/js_ast/lib/src/template.dart +++ b/pkg/js_ast/lib/src/template.dart @@ -287,7 +287,6 @@ class InstantiatorGeneratorVisitor implements NodeVisitor { Statement toStatement(item) { if (item is Statement) return item; if (item is Expression) return item.toStatement(); - ; return error('Interpolated value #$nameOrPosition is not ' 'a Statement or List of Statements: $value'); } @@ -368,7 +367,6 @@ class InstantiatorGeneratorVisitor implements NodeVisitor { if (value is bool) return value; if (value is Expression) return value; if (value is String) return convertStringToVariableUse(value); - ; error('Interpolated value #$nameOrPosition ' 'is not an Expression: $value'); };