| OLD | NEW |
| 1 // Copyright (c) 2017, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2017, 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:io'; | 5 import 'dart:io'; |
| 6 import 'package:async_helper/async_helper.dart'; | 6 import 'package:async_helper/async_helper.dart'; |
| 7 import 'package:compiler/src/closure.dart'; | 7 import 'package:compiler/src/closure.dart'; |
| 8 import 'package:compiler/src/common.dart'; | 8 import 'package:compiler/src/common.dart'; |
| 9 import 'package:compiler/src/compiler.dart'; | 9 import 'package:compiler/src/compiler.dart'; |
| 10 import 'package:compiler/src/diagnostics/diagnostic_listener.dart'; | 10 import 'package:compiler/src/diagnostics/diagnostic_listener.dart'; |
| (...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 43 .run(); | 43 .run(); |
| 44 } | 44 } |
| 45 | 45 |
| 46 /// Compute closure data mapping for [member] as a kernel based element. | 46 /// Compute closure data mapping for [member] as a kernel based element. |
| 47 /// | 47 /// |
| 48 /// Fills [actualMap] with the data and [sourceSpanMap] with the source spans | 48 /// Fills [actualMap] with the data and [sourceSpanMap] with the source spans |
| 49 /// for the data origin. | 49 /// for the data origin. |
| 50 void computeKernelClosureData(Compiler compiler, MemberEntity member, | 50 void computeKernelClosureData(Compiler compiler, MemberEntity member, |
| 51 Map<Id, String> actualMap, Map<Id, SourceSpan> sourceSpanMap) { | 51 Map<Id, String> actualMap, Map<Id, SourceSpan> sourceSpanMap) { |
| 52 KernelBackendStrategy backendStrategy = compiler.backendStrategy; | 52 KernelBackendStrategy backendStrategy = compiler.backendStrategy; |
| 53 KernelToElementMap elementMap = backendStrategy.elementMap; | 53 KernelToElementMapForBuilding elementMap = backendStrategy.elementMap; |
| 54 GlobalLocalsMap localsMap = backendStrategy.globalLocalsMapForTesting; | 54 GlobalLocalsMap localsMap = backendStrategy.globalLocalsMapForTesting; |
| 55 ClosureDataLookup closureDataLookup = backendStrategy.closureDataLookup; | 55 ClosureDataLookup closureDataLookup = backendStrategy.closureDataLookup; |
| 56 new ClosureIrChecker(actualMap, sourceSpanMap, elementMap, member, | 56 new ClosureIrChecker(actualMap, sourceSpanMap, elementMap, member, |
| 57 localsMap.getLocalsMap(member), closureDataLookup) | 57 localsMap.getLocalsMap(member), closureDataLookup) |
| 58 .run(elementMap.getMemberNode(member)); | 58 .run(elementMap.getMemberNode(member)); |
| 59 } | 59 } |
| 60 | 60 |
| 61 /// Ast visitor for computing closure data. | 61 /// Ast visitor for computing closure data. |
| 62 class ClosureAstComputer extends AbstractResolvedAstComputer { | 62 class ClosureAstComputer extends AbstractResolvedAstComputer { |
| 63 final ClosureDataLookup<ast.Node> closureDataLookup; | 63 final ClosureDataLookup<ast.Node> closureDataLookup; |
| (...skipping 29 matching lines...) Expand all Loading... |
| 93 | 93 |
| 94 /// Kernel IR visitor for computing closure data. | 94 /// Kernel IR visitor for computing closure data. |
| 95 class ClosureIrChecker extends AbstractIrComputer { | 95 class ClosureIrChecker extends AbstractIrComputer { |
| 96 final ClosureDataLookup<ir.Node> closureDataLookup; | 96 final ClosureDataLookup<ir.Node> closureDataLookup; |
| 97 final ClosureRepresentationInfo info; | 97 final ClosureRepresentationInfo info; |
| 98 final KernelToLocalsMap _localsMap; | 98 final KernelToLocalsMap _localsMap; |
| 99 | 99 |
| 100 ClosureIrChecker( | 100 ClosureIrChecker( |
| 101 Map<Id, String> actualMap, | 101 Map<Id, String> actualMap, |
| 102 Map<Id, SourceSpan> sourceSpanMap, | 102 Map<Id, SourceSpan> sourceSpanMap, |
| 103 KernelToElementMap elementMap, | 103 KernelToElementMapForBuilding elementMap, |
| 104 MemberEntity member, | 104 MemberEntity member, |
| 105 this._localsMap, | 105 this._localsMap, |
| 106 this.closureDataLookup) | 106 this.closureDataLookup) |
| 107 : this.info = closureDataLookup.getClosureRepresentationInfo(member), | 107 : this.info = closureDataLookup.getClosureRepresentationInfo(member), |
| 108 super(actualMap, sourceSpanMap); | 108 super(actualMap, sourceSpanMap); |
| 109 | 109 |
| 110 @override | 110 @override |
| 111 String computeNodeValue(ir.Node node) { | 111 String computeNodeValue(ir.Node node) { |
| 112 if (node is ir.VariableDeclaration) { | 112 if (node is ir.VariableDeclaration) { |
| 113 Local local = _localsMap.getLocal(node); | 113 Local local = _localsMap.getLocal(node); |
| (...skipping 13 matching lines...) Expand all Loading... |
| 127 | 127 |
| 128 /// Compute a string representation of the data stored for [local] in [info]. | 128 /// Compute a string representation of the data stored for [local] in [info]. |
| 129 String computeLocalValue(ClosureRepresentationInfo info, Local local) { | 129 String computeLocalValue(ClosureRepresentationInfo info, Local local) { |
| 130 StringBuffer sb = new StringBuffer(); | 130 StringBuffer sb = new StringBuffer(); |
| 131 if (info.variableIsUsedInTryOrSync(local)) { | 131 if (info.variableIsUsedInTryOrSync(local)) { |
| 132 sb.write('inTry'); | 132 sb.write('inTry'); |
| 133 } | 133 } |
| 134 // TODO(johnniwinther,efortuna): Add more info (captured, boxed etc.). | 134 // TODO(johnniwinther,efortuna): Add more info (captured, boxed etc.). |
| 135 return sb.toString(); | 135 return sb.toString(); |
| 136 } | 136 } |
| OLD | NEW |