OLD | NEW |
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 '../common/codegen.dart' show CodegenRegistry, CodegenWorkItem; | 5 import '../common/codegen.dart' show CodegenRegistry, CodegenWorkItem; |
6 import '../common/names.dart' show Selectors; | 6 import '../common/names.dart' show Selectors; |
7 import '../common/tasks.dart' show CompilerTask; | 7 import '../common/tasks.dart' show CompilerTask; |
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 987 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
998 value = other; | 998 value = other; |
999 } | 999 } |
1000 } | 1000 } |
1001 return new HFieldSet(field, receiver, value); | 1001 return new HFieldSet(field, receiver, value); |
1002 } | 1002 } |
1003 | 1003 |
1004 HInstruction visitInvokeStatic(HInvokeStatic node) { | 1004 HInstruction visitInvokeStatic(HInvokeStatic node) { |
1005 propagateConstantValueToUses(node); | 1005 propagateConstantValueToUses(node); |
1006 MemberEntity element = node.element; | 1006 MemberEntity element = node.element; |
1007 | 1007 |
1008 if (element == backend.helpers.checkConcurrentModificationError) { | 1008 if (element == compiler.commonElements.identicalFunction) { |
| 1009 if (node.inputs.length == 2) { |
| 1010 return new HIdentity(node.inputs[0], node.inputs[1], null, |
| 1011 closedWorld.commonMasks.boolType) |
| 1012 ..sourceInformation = node.sourceInformation; |
| 1013 } |
| 1014 } else if (element == backend.helpers.checkConcurrentModificationError) { |
1009 if (node.inputs.length == 2) { | 1015 if (node.inputs.length == 2) { |
1010 HInstruction firstArgument = node.inputs[0]; | 1016 HInstruction firstArgument = node.inputs[0]; |
1011 if (firstArgument is HConstant) { | 1017 if (firstArgument is HConstant) { |
1012 HConstant constant = firstArgument; | 1018 HConstant constant = firstArgument; |
1013 if (constant.constant.isTrue) return constant; | 1019 if (constant.constant.isTrue) return constant; |
1014 } | 1020 } |
1015 } | 1021 } |
1016 } else if (element == backend.helpers.checkInt) { | 1022 } else if (element == backend.helpers.checkInt) { |
1017 if (node.inputs.length == 1) { | 1023 if (node.inputs.length == 1) { |
1018 HInstruction argument = node.inputs[0]; | 1024 HInstruction argument = node.inputs[0]; |
(...skipping 1735 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2754 | 2760 |
2755 keyedValues.forEach((receiver, values) { | 2761 keyedValues.forEach((receiver, values) { |
2756 result.keyedValues[receiver] = | 2762 result.keyedValues[receiver] = |
2757 new Map<HInstruction, HInstruction>.from(values); | 2763 new Map<HInstruction, HInstruction>.from(values); |
2758 }); | 2764 }); |
2759 | 2765 |
2760 result.nonEscapingReceivers.addAll(nonEscapingReceivers); | 2766 result.nonEscapingReceivers.addAll(nonEscapingReceivers); |
2761 return result; | 2767 return result; |
2762 } | 2768 } |
2763 } | 2769 } |
OLD | NEW |