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

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

Issue 2944843002: All strong mode cleaning of dart2js. (Closed)
Patch Set: More issues discovered during testing. Created 3 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) 2012, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2012, 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 '../closure.dart'; 5 import '../closure.dart';
6 import '../common.dart'; 6 import '../common.dart';
7 import '../common_elements.dart' show CommonElements; 7 import '../common_elements.dart' show CommonElements;
8 import '../compiler.dart' show Compiler; 8 import '../compiler.dart' show Compiler;
9 import '../constants/constant_system.dart'; 9 import '../constants/constant_system.dart';
10 import '../constants/values.dart'; 10 import '../constants/values.dart';
(...skipping 1193 matching lines...) Expand 10 before | Expand all | Expand 10 after
1204 int length = inputs.length; 1204 int length = inputs.length;
1205 for (int i = 0; i < length; i++) { 1205 for (int i = 0; i < length; i++) {
1206 result = (result * 19) + (inputs[i].nonCheck().id) + (result >> 7); 1206 result = (result * 19) + (inputs[i].nonCheck().id) + (result >> 7);
1207 } 1207 }
1208 return result; 1208 return result;
1209 } 1209 }
1210 1210
1211 // These methods should be overwritten by instructions that 1211 // These methods should be overwritten by instructions that
1212 // participate in global value numbering. 1212 // participate in global value numbering.
1213 int typeCode() => HInstruction.UNDEFINED_TYPECODE; 1213 int typeCode() => HInstruction.UNDEFINED_TYPECODE;
1214 bool typeEquals(HInstruction other) => false; 1214 bool typeEquals(covariant HInstruction other) => false;
1215 bool dataEquals(HInstruction other) => false; 1215 bool dataEquals(covariant HInstruction other) => false;
1216 1216
1217 accept(HVisitor visitor); 1217 accept(HVisitor visitor);
1218 1218
1219 void notifyAddedToBlock(HBasicBlock targetBlock) { 1219 void notifyAddedToBlock(HBasicBlock targetBlock) {
1220 assert(!isInBasicBlock()); 1220 assert(!isInBasicBlock());
1221 assert(block == null); 1221 assert(block == null);
1222 // Add [this] to the inputs' uses. 1222 // Add [this] to the inputs' uses.
1223 for (int i = 0; i < inputs.length; i++) { 1223 for (int i = 0; i < inputs.length; i++) {
1224 assert(inputs[i].isInBasicBlock()); 1224 assert(inputs[i].isInBasicBlock());
1225 inputs[i].usedBy.add(this); 1225 inputs[i].usedBy.add(this);
(...skipping 462 matching lines...) Expand 10 before | Expand all | Expand 10 after
1688 1688
1689 abstract class HInvokeDynamic extends HInvoke { 1689 abstract class HInvokeDynamic extends HInvoke {
1690 final InvokeDynamicSpecializer specializer; 1690 final InvokeDynamicSpecializer specializer;
1691 Selector selector; 1691 Selector selector;
1692 TypeMask mask; 1692 TypeMask mask;
1693 MemberEntity element; 1693 MemberEntity element;
1694 1694
1695 HInvokeDynamic(Selector selector, this.mask, this.element, 1695 HInvokeDynamic(Selector selector, this.mask, this.element,
1696 List<HInstruction> inputs, TypeMask type, 1696 List<HInstruction> inputs, TypeMask type,
1697 [bool isIntercepted = false]) 1697 [bool isIntercepted = false])
1698 : super(inputs, type), 1698 : this.selector = selector,
1699 this.selector = selector,
1700 specializer = isIntercepted 1699 specializer = isIntercepted
1701 ? InvokeDynamicSpecializer.lookupSpecializer(selector) 1700 ? InvokeDynamicSpecializer.lookupSpecializer(selector)
1702 : const InvokeDynamicSpecializer(); 1701 : const InvokeDynamicSpecializer(),
1702 super(inputs, type);
1703 toString() => 'invoke dynamic: selector=$selector, mask=$mask'; 1703 toString() => 'invoke dynamic: selector=$selector, mask=$mask';
1704 HInstruction get receiver => inputs[0]; 1704 HInstruction get receiver => inputs[0];
1705 HInstruction getDartReceiver(ClosedWorld closedWorld) { 1705 HInstruction getDartReceiver(ClosedWorld closedWorld) {
1706 return isCallOnInterceptor(closedWorld) ? inputs[1] : inputs[0]; 1706 return isCallOnInterceptor(closedWorld) ? inputs[1] : inputs[0];
1707 } 1707 }
1708 1708
1709 /** 1709 /**
1710 * Returns whether this call is on an interceptor object. 1710 * Returns whether this call is on an interceptor object.
1711 */ 1711 */
1712 bool isCallOnInterceptor(ClosedWorld closedWorld) { 1712 bool isCallOnInterceptor(ClosedWorld closedWorld) {
(...skipping 792 matching lines...) Expand 10 before | Expand all | Expand 10 after
2505 } 2505 }
2506 2506
2507 toString() => 'parameter ${sourceElement.name}'; 2507 toString() => 'parameter ${sourceElement.name}';
2508 accept(HVisitor visitor) => visitor.visitParameterValue(this); 2508 accept(HVisitor visitor) => visitor.visitParameterValue(this);
2509 } 2509 }
2510 2510
2511 class HThis extends HParameterValue { 2511 class HThis extends HParameterValue {
2512 HThis(ThisLocal element, TypeMask type) : super(element, type); 2512 HThis(ThisLocal element, TypeMask type) : super(element, type);
2513 2513
2514 ThisLocal get sourceElement => super.sourceElement; 2514 ThisLocal get sourceElement => super.sourceElement;
2515 void set sourceElement(ThisLocal local) { 2515 void set sourceElement(covariant ThisLocal local) {
2516 super.sourceElement = local; 2516 super.sourceElement = local;
2517 } 2517 }
2518 2518
2519 accept(HVisitor visitor) => visitor.visitThis(this); 2519 accept(HVisitor visitor) => visitor.visitThis(this);
2520 2520
2521 bool isCodeMotionInvariant() => true; 2521 bool isCodeMotionInvariant() => true;
2522 2522
2523 bool isInterceptor(ClosedWorld closedWorld) { 2523 bool isInterceptor(ClosedWorld closedWorld) {
2524 return closedWorld.interceptorData 2524 return closedWorld.interceptorData
2525 .isInterceptedClass(sourceElement.enclosingClass); 2525 .isInterceptedClass(sourceElement.enclosingClass);
(...skipping 468 matching lines...) Expand 10 before | Expand all | Expand 10 after
2994 : checkedType = type, 2994 : checkedType = type,
2995 super(<HInstruction>[input], type) { 2995 super(<HInstruction>[input], type) {
2996 assert(!isReceiverTypeCheck || receiverTypeCheckSelector != null); 2996 assert(!isReceiverTypeCheck || receiverTypeCheckSelector != null);
2997 assert(typeExpression == null || !typeExpression.isTypedef); 2997 assert(typeExpression == null || !typeExpression.isTypedef);
2998 sourceElement = input.sourceElement; 2998 sourceElement = input.sourceElement;
2999 } 2999 }
3000 3000
3001 HTypeConversion.withTypeRepresentation(this.typeExpression, this.kind, 3001 HTypeConversion.withTypeRepresentation(this.typeExpression, this.kind,
3002 TypeMask type, HInstruction input, HInstruction typeRepresentation) 3002 TypeMask type, HInstruction input, HInstruction typeRepresentation)
3003 : checkedType = type, 3003 : checkedType = type,
3004 super(<HInstruction>[input, typeRepresentation], type), 3004 receiverTypeCheckSelector = null,
3005 receiverTypeCheckSelector = null { 3005 super(<HInstruction>[input, typeRepresentation], type) {
3006 assert(!typeExpression.isTypedef); 3006 assert(!typeExpression.isTypedef);
3007 sourceElement = input.sourceElement; 3007 sourceElement = input.sourceElement;
3008 } 3008 }
3009 3009
3010 HTypeConversion.viaMethodOnType(this.typeExpression, this.kind, TypeMask type, 3010 HTypeConversion.viaMethodOnType(this.typeExpression, this.kind, TypeMask type,
3011 HInstruction reifiedType, HInstruction input) 3011 HInstruction reifiedType, HInstruction input)
3012 : checkedType = type, 3012 : checkedType = type,
3013 super(<HInstruction>[reifiedType, input], type), 3013 receiverTypeCheckSelector = null,
3014 receiverTypeCheckSelector = null { 3014 super(<HInstruction>[reifiedType, input], type) {
3015 // This form is currently used only for function types. 3015 // This form is currently used only for function types.
3016 assert(typeExpression.isFunctionType); 3016 assert(typeExpression.isFunctionType);
3017 assert(kind == CHECKED_MODE_CHECK || kind == CAST_TYPE_CHECK); 3017 assert(kind == CHECKED_MODE_CHECK || kind == CAST_TYPE_CHECK);
3018 sourceElement = input.sourceElement; 3018 sourceElement = input.sourceElement;
3019 } 3019 }
3020 3020
3021 bool get hasTypeRepresentation { 3021 bool get hasTypeRepresentation {
3022 return typeExpression.isInterfaceType && inputs.length > 1; 3022 return typeExpression.isInterfaceType && inputs.length > 1;
3023 } 3023 }
3024 3024
(...skipping 519 matching lines...) Expand 10 before | Expand all | Expand 10 after
3544 // ignore: MISSING_RETURN 3544 // ignore: MISSING_RETURN
3545 String get kindAsString { 3545 String get kindAsString {
3546 switch (kind) { 3546 switch (kind) {
3547 case TypeInfoExpressionKind.COMPLETE: 3547 case TypeInfoExpressionKind.COMPLETE:
3548 return 'COMPLETE'; 3548 return 'COMPLETE';
3549 case TypeInfoExpressionKind.INSTANCE: 3549 case TypeInfoExpressionKind.INSTANCE:
3550 return 'INSTANCE'; 3550 return 'INSTANCE';
3551 } 3551 }
3552 } 3552 }
3553 } 3553 }
OLDNEW
« no previous file with comments | « pkg/compiler/lib/src/ssa/kernel_ast_adapter.dart ('k') | pkg/compiler/lib/src/ssa/rasta_ssa_builder_task.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698