| 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 CodegenWorkItem; | 5 import '../common/codegen.dart' show CodegenWorkItem; |
| 6 import '../common/tasks.dart' show CompilerTask; | 6 import '../common/tasks.dart' show CompilerTask; |
| 7 import '../compiler.dart' show Compiler; | 7 import '../compiler.dart' show Compiler; |
| 8 import '../constants/constant_system.dart'; | 8 import '../constants/constant_system.dart'; |
| 9 import '../constants/values.dart'; | 9 import '../constants/values.dart'; |
| 10 import '../core_types.dart' show CoreClasses; | 10 import '../core_types.dart' show CoreClasses; |
| (...skipping 487 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 498 canInline = false; | 498 canInline = false; |
| 499 } | 499 } |
| 500 } | 500 } |
| 501 }); | 501 }); |
| 502 | 502 |
| 503 if (!canInline) return null; | 503 if (!canInline) return null; |
| 504 | 504 |
| 505 // Strengthen instruction type from annotations to help optimize | 505 // Strengthen instruction type from annotations to help optimize |
| 506 // dependent instructions. | 506 // dependent instructions. |
| 507 native.NativeBehavior nativeBehavior = | 507 native.NativeBehavior nativeBehavior = |
| 508 native.NativeBehavior.ofMethod(method, compiler); | 508 backend.getNativeMethodBehavior(method); |
| 509 TypeMask returnType = | 509 TypeMask returnType = |
| 510 TypeMaskFactory.fromNativeBehavior(nativeBehavior, compiler); | 510 TypeMaskFactory.fromNativeBehavior(nativeBehavior, compiler); |
| 511 HInvokeDynamicMethod result = | 511 HInvokeDynamicMethod result = |
| 512 new HInvokeDynamicMethod(node.selector, node.mask, inputs, returnType); | 512 new HInvokeDynamicMethod(node.selector, node.mask, inputs, returnType); |
| 513 result.element = method; | 513 result.element = method; |
| 514 return result; | 514 return result; |
| 515 } | 515 } |
| 516 | 516 |
| 517 HInstruction visitBoundsCheck(HBoundsCheck node) { | 517 HInstruction visitBoundsCheck(HBoundsCheck node) { |
| 518 HInstruction index = node.index; | 518 HInstruction index = node.index; |
| (...skipping 343 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 862 if (field == null) return node; | 862 if (field == null) return node; |
| 863 return directFieldGet(receiver, field); | 863 return directFieldGet(receiver, field); |
| 864 } | 864 } |
| 865 | 865 |
| 866 HInstruction directFieldGet(HInstruction receiver, Element field) { | 866 HInstruction directFieldGet(HInstruction receiver, Element field) { |
| 867 bool isAssignable = !compiler.world.fieldNeverChanges(field); | 867 bool isAssignable = !compiler.world.fieldNeverChanges(field); |
| 868 | 868 |
| 869 TypeMask type; | 869 TypeMask type; |
| 870 if (backend.isNative(field.enclosingClass)) { | 870 if (backend.isNative(field.enclosingClass)) { |
| 871 type = TypeMaskFactory.fromNativeBehavior( | 871 type = TypeMaskFactory.fromNativeBehavior( |
| 872 native.NativeBehavior.ofFieldLoad(field, compiler), compiler); | 872 backend.getNativeFieldLoadBehavior(field), compiler); |
| 873 } else { | 873 } else { |
| 874 type = TypeMaskFactory.inferredTypeForElement(field, compiler); | 874 type = TypeMaskFactory.inferredTypeForElement(field, compiler); |
| 875 } | 875 } |
| 876 | 876 |
| 877 return new HFieldGet(field, receiver, type, isAssignable: isAssignable); | 877 return new HFieldGet(field, receiver, type, isAssignable: isAssignable); |
| 878 } | 878 } |
| 879 | 879 |
| 880 HInstruction visitInvokeDynamicSetter(HInvokeDynamicSetter node) { | 880 HInstruction visitInvokeDynamicSetter(HInvokeDynamicSetter node) { |
| 881 if (node.isInterceptedCall) { | 881 if (node.isInterceptedCall) { |
| 882 HInstruction folded = handleInterceptedCall(node); | 882 HInstruction folded = handleInterceptedCall(node); |
| (...skipping 1498 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2381 | 2381 |
| 2382 keyedValues.forEach((receiver, values) { | 2382 keyedValues.forEach((receiver, values) { |
| 2383 result.keyedValues[receiver] = | 2383 result.keyedValues[receiver] = |
| 2384 new Map<HInstruction, HInstruction>.from(values); | 2384 new Map<HInstruction, HInstruction>.from(values); |
| 2385 }); | 2385 }); |
| 2386 | 2386 |
| 2387 result.nonEscapingReceivers.addAll(nonEscapingReceivers); | 2387 result.nonEscapingReceivers.addAll(nonEscapingReceivers); |
| 2388 return result; | 2388 return result; |
| 2389 } | 2389 } |
| 2390 } | 2390 } |
| OLD | NEW |