| 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 494 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|   505     } |   505     } | 
|   506     return res; |   506     return res; | 
|   507   } |   507   } | 
|   508  |   508  | 
|   509   HLocalValue getLocal(Local local, {SourceInformation sourceInformation}) { |   509   HLocalValue getLocal(Local local, {SourceInformation sourceInformation}) { | 
|   510     // If the element is a parameter, we already have a |   510     // If the element is a parameter, we already have a | 
|   511     // HParameterValue for it. We cannot create another one because |   511     // HParameterValue for it. We cannot create another one because | 
|   512     // it could then have another name than the real parameter. And |   512     // it could then have another name than the real parameter. And | 
|   513     // the other one would not know it is just a copy of the real |   513     // the other one would not know it is just a copy of the real | 
|   514     // parameter. |   514     // parameter. | 
|   515     if (local is ParameterElement) return builder.parameters[local]; |   515     if (local is ParameterElement) { | 
 |   516       assert(invariant(local, builder.parameters.containsKey(local), | 
 |   517           message: "No local value for parameter $local in " | 
 |   518               "${builder.parameters}.")); | 
 |   519       return builder.parameters[local]; | 
 |   520     } | 
|   516  |   521  | 
|   517     return builder.activationVariables.putIfAbsent(local, () { |   522     return builder.activationVariables.putIfAbsent(local, () { | 
|   518       JavaScriptBackend backend = builder.backend; |   523       JavaScriptBackend backend = builder.backend; | 
|   519       HLocalValue localValue = new HLocalValue(local, backend.nonNullType) |   524       HLocalValue localValue = new HLocalValue(local, backend.nonNullType) | 
|   520         ..sourceInformation = sourceInformation; |   525         ..sourceInformation = sourceInformation; | 
|   521       builder.graph.entry.addAtExit(localValue); |   526       builder.graph.entry.addAtExit(localValue); | 
|   522       return localValue; |   527       return localValue; | 
|   523     }); |   528     }); | 
|   524   } |   529   } | 
|   525  |   530  | 
| (...skipping 1268 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|  1794       if (backendMember.isGenerativeConstructorBody) { |  1799       if (backendMember.isGenerativeConstructorBody) { | 
|  1795         ConstructorBodyElement body = backendMember; |  1800         ConstructorBodyElement body = backendMember; | 
|  1796         if (body.constructor == constructor) { |  1801         if (body.constructor == constructor) { | 
|  1797           // TODO(kasperl): Find a way of stopping the iteration |  1802           // TODO(kasperl): Find a way of stopping the iteration | 
|  1798           // through the backend members. |  1803           // through the backend members. | 
|  1799           bodyElement = backendMember; |  1804           bodyElement = backendMember; | 
|  1800         } |  1805         } | 
|  1801       } |  1806       } | 
|  1802     }); |  1807     }); | 
|  1803     if (bodyElement == null) { |  1808     if (bodyElement == null) { | 
|  1804       bodyElement = new ConstructorBodyElementX(constructor); |  1809       bodyElement = | 
 |  1810           new ConstructorBodyElementX(constructorResolvedAst, constructor); | 
|  1805       classElement.addBackendMember(bodyElement); |  1811       classElement.addBackendMember(bodyElement); | 
|  1806  |  1812  | 
|  1807       if (constructor.isPatch) { |  1813       if (constructor.isPatch) { | 
|  1808         // Create origin body element for patched constructors. |  1814         // Create origin body element for patched constructors. | 
|  1809         ConstructorBodyElementX patch = bodyElement; |  1815         ConstructorBodyElementX patch = bodyElement; | 
|  1810         ConstructorBodyElementX origin = |  1816         ConstructorBodyElementX origin = new ConstructorBodyElementX( | 
|  1811             new ConstructorBodyElementX(constructor.origin); |  1817             constructorResolvedAst, constructor.origin); | 
|  1812         origin.applyPatch(patch); |  1818         origin.applyPatch(patch); | 
|  1813         classElement.origin.addBackendMember(bodyElement.origin); |  1819         classElement.origin.addBackendMember(bodyElement.origin); | 
|  1814       } |  1820       } | 
|  1815     } |  1821     } | 
|  1816     assert(bodyElement.isGenerativeConstructorBody); |  1822     assert(bodyElement.isGenerativeConstructorBody); | 
|  1817     return bodyElement; |  1823     return bodyElement; | 
|  1818   } |  1824   } | 
|  1819  |  1825  | 
|  1820   HParameterValue addParameter(Entity parameter, TypeMask type) { |  1826   HParameterValue addParameter(Entity parameter, TypeMask type) { | 
|  1821     assert(inliningStack.isEmpty); |  1827     assert(inliningStack.isEmpty); | 
| (...skipping 6778 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|  8600   const _LoopTypeVisitor(); |  8606   const _LoopTypeVisitor(); | 
|  8601   int visitNode(ast.Node node) => HLoopBlockInformation.NOT_A_LOOP; |  8607   int visitNode(ast.Node node) => HLoopBlockInformation.NOT_A_LOOP; | 
|  8602   int visitWhile(ast.While node) => HLoopBlockInformation.WHILE_LOOP; |  8608   int visitWhile(ast.While node) => HLoopBlockInformation.WHILE_LOOP; | 
|  8603   int visitFor(ast.For node) => HLoopBlockInformation.FOR_LOOP; |  8609   int visitFor(ast.For node) => HLoopBlockInformation.FOR_LOOP; | 
|  8604   int visitDoWhile(ast.DoWhile node) => HLoopBlockInformation.DO_WHILE_LOOP; |  8610   int visitDoWhile(ast.DoWhile node) => HLoopBlockInformation.DO_WHILE_LOOP; | 
|  8605   int visitAsyncForIn(ast.AsyncForIn node) => HLoopBlockInformation.FOR_IN_LOOP; |  8611   int visitAsyncForIn(ast.AsyncForIn node) => HLoopBlockInformation.FOR_IN_LOOP; | 
|  8606   int visitSyncForIn(ast.SyncForIn node) => HLoopBlockInformation.FOR_IN_LOOP; |  8612   int visitSyncForIn(ast.SyncForIn node) => HLoopBlockInformation.FOR_IN_LOOP; | 
|  8607   int visitSwitchStatement(ast.SwitchStatement node) => |  8613   int visitSwitchStatement(ast.SwitchStatement node) => | 
|  8608       HLoopBlockInformation.SWITCH_CONTINUE_LOOP; |  8614       HLoopBlockInformation.SWITCH_CONTINUE_LOOP; | 
|  8609 } |  8615 } | 
| OLD | NEW |