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

Side by Side Diff: pkg/compiler/lib/src/tree_ir/tree_ir_builder.dart

Issue 1159643005: dart2js cps: Do not propagate impure expressions across null receiver. (Closed) Base URL: git@github.com:dart-lang/sdk.git@master
Patch Set: Extra fix in type propagation 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 unified diff | Download patch
OLDNEW
1 // Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2014, 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 library tree_ir_builder; 5 library tree_ir_builder;
6 6
7 import '../dart2jslib.dart' as dart2js; 7 import '../dart2jslib.dart' as dart2js;
8 import '../dart_types.dart'; 8 import '../dart_types.dart';
9 import '../elements/elements.dart'; 9 import '../elements/elements.dart';
10 import '../cps_ir/cps_ir_nodes.dart' as cps_ir; 10 import '../cps_ir/cps_ir_nodes.dart' as cps_ir;
(...skipping 332 matching lines...) Expand 10 before | Expand all | Expand 10 after
343 343
344 Statement visitInvokeStatic(cps_ir.InvokeStatic node) { 344 Statement visitInvokeStatic(cps_ir.InvokeStatic node) {
345 // Calls are translated to direct style. 345 // Calls are translated to direct style.
346 List<Expression> arguments = translateArguments(node.arguments); 346 List<Expression> arguments = translateArguments(node.arguments);
347 Expression invoke = new InvokeStatic(node.target, node.selector, arguments, 347 Expression invoke = new InvokeStatic(node.target, node.selector, arguments,
348 sourceInformation: node.sourceInformation); 348 sourceInformation: node.sourceInformation);
349 return continueWithExpression(node.continuation, invoke); 349 return continueWithExpression(node.continuation, invoke);
350 } 350 }
351 351
352 Statement visitInvokeMethod(cps_ir.InvokeMethod node) { 352 Statement visitInvokeMethod(cps_ir.InvokeMethod node) {
353 Expression invoke = new InvokeMethod(getVariableUse(node.receiver), 353 InvokeMethod invoke = new InvokeMethod(getVariableUse(node.receiver),
354 node.selector, 354 node.selector,
355 translateArguments(node.arguments)); 355 translateArguments(node.arguments));
356 invoke.receiverIsNotNull = node.receiverIsNotNull;
356 return continueWithExpression(node.continuation, invoke); 357 return continueWithExpression(node.continuation, invoke);
357 } 358 }
358 359
359 Statement visitInvokeMethodDirectly(cps_ir.InvokeMethodDirectly node) { 360 Statement visitInvokeMethodDirectly(cps_ir.InvokeMethodDirectly node) {
360 Expression receiver = getVariableUse(node.receiver); 361 Expression receiver = getVariableUse(node.receiver);
361 List<Expression> arguments = translateArguments(node.arguments); 362 List<Expression> arguments = translateArguments(node.arguments);
362 Expression invoke = new InvokeMethodDirectly(receiver, node.target, 363 Expression invoke = new InvokeMethodDirectly(receiver, node.target,
363 node.selector, arguments); 364 node.selector, arguments);
364 return continueWithExpression(node.continuation, invoke); 365 return continueWithExpression(node.continuation, invoke);
365 } 366 }
(...skipping 205 matching lines...) Expand 10 before | Expand all | Expand 10 after
571 572
572 Statement visitSetStatic(cps_ir.SetStatic node) { 573 Statement visitSetStatic(cps_ir.SetStatic node) {
573 SetStatic setStatic = new SetStatic( 574 SetStatic setStatic = new SetStatic(
574 node.element, 575 node.element,
575 getVariableUse(node.value), 576 getVariableUse(node.value),
576 node.sourceInformation); 577 node.sourceInformation);
577 return new ExpressionStatement(setStatic, visit(node.body)); 578 return new ExpressionStatement(setStatic, visit(node.body));
578 } 579 }
579 } 580 }
580 581
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698