| 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 'dart:collection'; | 5 import 'dart:collection'; |
| 6 | 6 |
| 7 import 'package:js_runtime/shared/embedded_names.dart'; | 7 import 'package:js_runtime/shared/embedded_names.dart'; |
| 8 | 8 |
| 9 import '../closure.dart'; | 9 import '../closure.dart'; |
| 10 import '../common.dart'; | 10 import '../common.dart'; |
| (...skipping 291 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 302 Selector selector, | 302 Selector selector, |
| 303 List<HInstruction> providedArguments, | 303 List<HInstruction> providedArguments, |
| 304 ast.Node currentNode) { | 304 ast.Node currentNode) { |
| 305 assert(invariant(function, function.isImplementation)); | 305 assert(invariant(function, function.isImplementation)); |
| 306 assert(providedArguments != null); | 306 assert(providedArguments != null); |
| 307 | 307 |
| 308 bool isInstanceMember = function.isInstanceMember; | 308 bool isInstanceMember = function.isInstanceMember; |
| 309 // For static calls, [providedArguments] is complete, default arguments | 309 // For static calls, [providedArguments] is complete, default arguments |
| 310 // have been included if necessary, see [makeStaticArgumentList]. | 310 // have been included if necessary, see [makeStaticArgumentList]. |
| 311 if (!isInstanceMember || | 311 if (!isInstanceMember || |
| 312 currentNode == null // In erroneous code, currentNode can be null. | 312 currentNode == null || // In erroneous code, currentNode can be null. |
| 313 || | |
| 314 providedArgumentsKnownToBeComplete(currentNode) || | 313 providedArgumentsKnownToBeComplete(currentNode) || |
| 315 function.isGenerativeConstructorBody || | 314 function.isGenerativeConstructorBody || |
| 316 selector.isGetter) { | 315 selector.isGetter) { |
| 317 // For these cases, the provided argument list is known to be complete. | 316 // For these cases, the provided argument list is known to be complete. |
| 318 return providedArguments; | 317 return providedArguments; |
| 319 } else { | 318 } else { |
| 320 return completeDynamicSendArgumentsList( | 319 return completeDynamicSendArgumentsList( |
| 321 selector, function, providedArguments); | 320 selector, function, providedArguments); |
| 322 } | 321 } |
| 323 } | 322 } |
| (...skipping 6762 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 7086 if (unaliased is TypedefType) throw 'unable to unalias $type'; | 7085 if (unaliased is TypedefType) throw 'unable to unalias $type'; |
| 7087 unaliased.accept(this, builder); | 7086 unaliased.accept(this, builder); |
| 7088 } | 7087 } |
| 7089 | 7088 |
| 7090 void visitDynamicType(DynamicType type, SsaBuilder builder) { | 7089 void visitDynamicType(DynamicType type, SsaBuilder builder) { |
| 7091 JavaScriptBackend backend = builder.compiler.backend; | 7090 JavaScriptBackend backend = builder.compiler.backend; |
| 7092 ClassElement cls = backend.helpers.DynamicRuntimeType; | 7091 ClassElement cls = backend.helpers.DynamicRuntimeType; |
| 7093 builder.push(new HDynamicType(type, new TypeMask.exact(cls, closedWorld))); | 7092 builder.push(new HDynamicType(type, new TypeMask.exact(cls, closedWorld))); |
| 7094 } | 7093 } |
| 7095 } | 7094 } |
| OLD | NEW |