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

Side by Side Diff: pkg/compiler/lib/src/ssa/kernel_impact.dart

Issue 2359453002: Handle local functions in kernel_impact. (Closed)
Patch Set: Created 4 years, 2 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 unified diff | Download patch
OLDNEW
1 // Copyright (c) 2016, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2016, the Dart project authors. Please see the AUTHORS file
2 // for details. All rights reserved. Use of this source code is governed by a 2 // for details. All rights reserved. Use of this source code is governed by a
3 // BSD-style license that can be found in the LICENSE file. 3 // BSD-style license that can be found in the LICENSE file.
4 4
5 import 'package:kernel/ast.dart' as ir; 5 import 'package:kernel/ast.dart' as ir;
6 6
7 import '../common.dart'; 7 import '../common.dart';
8 import '../common/names.dart'; 8 import '../common/names.dart';
9 import '../compiler.dart'; 9 import '../compiler.dart';
10 import '../constants/expressions.dart'; 10 import '../constants/expressions.dart';
(...skipping 226 matching lines...) Expand 10 before | Expand all | Expand 10 after
237 } 237 }
238 238
239 @override 239 @override
240 void visitStaticGet(ir.StaticGet node) { 240 void visitStaticGet(ir.StaticGet node) {
241 Element target = astAdapter.getElement(node.target).declaration; 241 Element target = astAdapter.getElement(node.target).declaration;
242 impactBuilder.registerStaticUse(new StaticUse.staticGet(target)); 242 impactBuilder.registerStaticUse(new StaticUse.staticGet(target));
243 } 243 }
244 244
245 @override 245 @override
246 void visitMethodInvocation(ir.MethodInvocation invocation) { 246 void visitMethodInvocation(ir.MethodInvocation invocation) {
247 invocation.receiver.accept(this); 247 var receiver = invocation.receiver;
248 if (receiver is ir.VariableGet &&
249 receiver.variable.isFinal &&
250 receiver.variable.parent is ir.FunctionDeclaration) {
251 // Invocation of a local function. No need for dynamic use.
252 } else {
253 invocation.receiver.accept(this);
254 impactBuilder.registerDynamicUse(
255 new DynamicUse(astAdapter.getSelector(invocation), null));
256 }
248 _visitArguments(invocation.arguments); 257 _visitArguments(invocation.arguments);
249 impactBuilder.registerDynamicUse(
250 new DynamicUse(astAdapter.getSelector(invocation), null));
251 } 258 }
252 259
253 @override 260 @override
254 void visitPropertyGet(ir.PropertyGet node) { 261 void visitPropertyGet(ir.PropertyGet node) {
255 node.receiver.accept(this); 262 node.receiver.accept(this);
256 impactBuilder.registerDynamicUse(new DynamicUse( 263 impactBuilder.registerDynamicUse(new DynamicUse(
257 new Selector.getter(astAdapter.getName(node.name)), null)); 264 new Selector.getter(astAdapter.getName(node.name)), null));
258 } 265 }
259 266
260 @override 267 @override
(...skipping 12 matching lines...) Expand all
273 } 280 }
274 281
275 @override 282 @override
276 void visitStringConcatenation(ir.StringConcatenation node) { 283 void visitStringConcatenation(ir.StringConcatenation node) {
277 impactBuilder.registerFeature(Feature.STRING_INTERPOLATION); 284 impactBuilder.registerFeature(Feature.STRING_INTERPOLATION);
278 impactBuilder.registerFeature(Feature.STRING_JUXTAPOSITION); 285 impactBuilder.registerFeature(Feature.STRING_JUXTAPOSITION);
279 node.visitChildren(this); 286 node.visitChildren(this);
280 } 287 }
281 288
282 @override 289 @override
290 void visitFunctionDeclaration(ir.FunctionDeclaration node) {
291 impactBuilder
292 .registerStaticUse(new StaticUse.closure(astAdapter.getElement(node)));
293 node.visitChildren(this);
294 }
295
296 @override
283 void defaultNode(ir.Node node) => node.visitChildren(this); 297 void defaultNode(ir.Node node) => node.visitChildren(this);
284 } 298 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698