| 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 part of ssa; | 5 part of ssa; |
| 6 | 6 |
| 7 /** | 7 /** |
| 8 * A special element for the extra parameter taken by intercepted | 8 * A special element for the extra parameter taken by intercepted |
| 9 * methods. We need to override [Element.computeType] because our | 9 * methods. We need to override [Element.computeType] because our |
| 10 * optimizers may look at its declared type. | 10 * optimizers may look at its declared type. |
| (...skipping 4023 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4034 TypeMaskFactory.inferredForNode(sourceElement, send, compiler); | 4034 TypeMaskFactory.inferredForNode(sourceElement, send, compiler); |
| 4035 return inferred.containsAll(compiler) | 4035 return inferred.containsAll(compiler) |
| 4036 ? backend.extendableArrayType | 4036 ? backend.extendableArrayType |
| 4037 : inferred; | 4037 : inferred; |
| 4038 } else if (Elements.isConstructorOfTypedArraySubclass( | 4038 } else if (Elements.isConstructorOfTypedArraySubclass( |
| 4039 originalElement, compiler)) { | 4039 originalElement, compiler)) { |
| 4040 isFixedList = true; | 4040 isFixedList = true; |
| 4041 TypeMask inferred = | 4041 TypeMask inferred = |
| 4042 TypeMaskFactory.inferredForNode(sourceElement, send, compiler); | 4042 TypeMaskFactory.inferredForNode(sourceElement, send, compiler); |
| 4043 ClassElement cls = element.getEnclosingClass(); | 4043 ClassElement cls = element.getEnclosingClass(); |
| 4044 assert(cls.thisType.element.isNative()); | |
| 4045 return inferred.containsAll(compiler) | 4044 return inferred.containsAll(compiler) |
| 4046 ? new TypeMask.nonNullExact(cls.thisType.element) | 4045 ? new TypeMask.nonNullExact(cls.thisType.element) |
| 4047 : inferred; | 4046 : inferred; |
| 4048 } else if (element.isGenerativeConstructor()) { | 4047 } else if (element.isGenerativeConstructor()) { |
| 4049 ClassElement cls = element.getEnclosingClass(); | 4048 ClassElement cls = element.getEnclosingClass(); |
| 4050 return new TypeMask.nonNullExact(cls.thisType.element); | 4049 return new TypeMask.nonNullExact(cls.thisType.element); |
| 4051 } else { | 4050 } else { |
| 4052 return TypeMaskFactory.inferredReturnTypeForElement( | 4051 return TypeMaskFactory.inferredReturnTypeForElement( |
| 4053 originalElement, compiler); | 4052 originalElement, compiler); |
| 4054 } | 4053 } |
| (...skipping 2350 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 6405 DartType unaliased = type.unalias(builder.compiler); | 6404 DartType unaliased = type.unalias(builder.compiler); |
| 6406 if (unaliased is TypedefType) throw 'unable to unalias $type'; | 6405 if (unaliased is TypedefType) throw 'unable to unalias $type'; |
| 6407 unaliased.accept(this, builder); | 6406 unaliased.accept(this, builder); |
| 6408 } | 6407 } |
| 6409 | 6408 |
| 6410 void visitDynamicType(DynamicType type, SsaFromAstMixin builder) { | 6409 void visitDynamicType(DynamicType type, SsaFromAstMixin builder) { |
| 6411 ClassElement cls = builder.compiler.findHelper('DynamicRuntimeType'); | 6410 ClassElement cls = builder.compiler.findHelper('DynamicRuntimeType'); |
| 6412 builder.push(new HDynamicType(type, new TypeMask.exact(cls))); | 6411 builder.push(new HDynamicType(type, new TypeMask.exact(cls))); |
| 6413 } | 6412 } |
| 6414 } | 6413 } |
| OLD | NEW |