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

Side by Side Diff: pkg/compiler/lib/src/cps_ir/type_propagation.dart

Issue 1348063002: Make the universe parts into small libraries. (Closed) Base URL: https://github.com/dart-lang/sdk.git@master
Patch Set: 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 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 library dart2js.cps_ir.type_propagation; 4 library dart2js.cps_ir.type_propagation;
5 5
6 import 'optimizers.dart'; 6 import 'optimizers.dart';
7 7
8 import '../closure.dart' show 8 import '../closure.dart' show
9 ClosureClassElement, Identifiers; 9 ClosureClassElement, Identifiers;
10 import '../common/names.dart' show 10 import '../common/names.dart' show
11 Selectors, Identifiers; 11 Identifiers,
12 Selectors;
12 import '../compiler.dart' as dart2js show 13 import '../compiler.dart' as dart2js show
13 Compiler; 14 Compiler;
14 import '../constants/constant_system.dart'; 15 import '../constants/constant_system.dart';
15 import '../constants/values.dart'; 16 import '../constants/values.dart';
16 import '../dart_types.dart' as types; 17 import '../dart_types.dart' as types;
17 import '../diagnostics/invariant.dart' as dart2js show 18 import '../diagnostics/invariant.dart' as dart2js show
18 InternalErrorFunction; 19 InternalErrorFunction;
19 import '../elements/elements.dart'; 20 import '../elements/elements.dart';
20 import '../io/source_information.dart' show SourceInformation; 21 import '../io/source_information.dart' show
21 import '../js_backend/js_backend.dart' show JavaScriptBackend; 22 SourceInformation;
22 import '../js_backend/codegen/task.dart' show CpsFunctionCompiler; 23 import '../js_backend/js_backend.dart' show
24 JavaScriptBackend;
25 import '../js_backend/codegen/task.dart' show
26 CpsFunctionCompiler;
23 import '../resolution/access_semantics.dart'; 27 import '../resolution/access_semantics.dart';
24 import '../resolution/operators.dart'; 28 import '../resolution/operators.dart';
25 import '../resolution/send_structure.dart'; 29 import '../resolution/send_structure.dart';
26 import '../tree/tree.dart' as ast; 30 import '../tree/tree.dart' as ast;
27 import '../types/types.dart'; 31 import '../types/types.dart';
28 import '../types/constants.dart' show computeTypeMask; 32 import '../types/constants.dart' show
29 import '../universe/universe.dart'; 33 computeTypeMask;
34 import '../universe/selector.dart' show
35 Selector;
30 import '../world.dart' show World; 36 import '../world.dart' show World;
31 import 'cps_fragment.dart'; 37 import 'cps_fragment.dart';
32 import 'cps_ir_nodes.dart'; 38 import 'cps_ir_nodes.dart';
33 import 'type_mask_system.dart'; 39 import 'type_mask_system.dart';
34 40
35 class ConstantPropagationLattice { 41 class ConstantPropagationLattice {
36 final TypeMaskSystem typeSystem; 42 final TypeMaskSystem typeSystem;
37 final ConstantSystem constantSystem; 43 final ConstantSystem constantSystem;
38 final types.DartTypes dartTypes; 44 final types.DartTypes dartTypes;
39 final AbstractValue anything; 45 final AbstractValue anything;
(...skipping 1294 matching lines...) Expand 10 before | Expand all | Expand 10 after
1334 // therefore risk duplicating its side effects. 1340 // therefore risk duplicating its side effects.
1335 if (!isPure && tearOff.hasMultipleEffectiveUses) return false; 1341 if (!isPure && tearOff.hasMultipleEffectiveUses) return false;
1336 1342
1337 // If the getter call is impure, we risk reordering side effects. 1343 // If the getter call is impure, we risk reordering side effects.
1338 if (!isPure && getEffectiveParent(node) != getterCont) { 1344 if (!isPure && getEffectiveParent(node) != getterCont) {
1339 return false; 1345 return false;
1340 } 1346 }
1341 1347
1342 InvokeMethod invoke = new InvokeMethod.byReference( 1348 InvokeMethod invoke = new InvokeMethod.byReference(
1343 new Reference<Primitive>(object), 1349 new Reference<Primitive>(object),
1344 new Selector(SelectorKind.CALL, getter.memberName, call.callStructure), 1350 new Selector.call(getter.memberName, call.callStructure),
1345 type, 1351 type,
1346 node.arguments, 1352 node.arguments,
1347 node.continuation, 1353 node.continuation,
1348 node.sourceInformation); 1354 node.sourceInformation);
1349 node.receiver.unlink(); 1355 node.receiver.unlink();
1350 replaceSubtree(node, invoke, unlink: false); 1356 replaceSubtree(node, invoke, unlink: false);
1351 1357
1352 if (tearOff.hasNoEffectiveUses) { 1358 if (tearOff.hasNoEffectiveUses) {
1353 // Eliminate the getter call if it has no more uses. 1359 // Eliminate the getter call if it has no more uses.
1354 // This cannot be delegated to other optimizations because we need to 1360 // This cannot be delegated to other optimizations because we need to
(...skipping 1305 matching lines...) Expand 10 before | Expand all | Expand 10 after
2660 processLetPrim(LetPrim node) { 2666 processLetPrim(LetPrim node) {
2661 node.primitive.type = null; 2667 node.primitive.type = null;
2662 values[node.primitive] = null; 2668 values[node.primitive] = null;
2663 } 2669 }
2664 2670
2665 processLetMutable(LetMutable node) { 2671 processLetMutable(LetMutable node) {
2666 node.variable.type = null; 2672 node.variable.type = null;
2667 values[node.variable] = null; 2673 values[node.variable] = null;
2668 } 2674 }
2669 } 2675 }
OLDNEW
« no previous file with comments | « pkg/compiler/lib/src/cps_ir/type_mask_system.dart ('k') | pkg/compiler/lib/src/dart_backend/dart_backend.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698