Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(97)

Side by Side Diff: pkg/compiler/lib/src/ssa/builder_kernel.dart

Issue 2992863002: Support forEachClassMember on closure classes (Closed)
Patch Set: Created 3 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright (c) 2016, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2016, 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 'package:kernel/ast.dart' as ir; 5 import 'package:kernel/ast.dart' as ir;
6 6
7 import '../closure.dart'; 7 import '../closure.dart';
8 import '../common.dart'; 8 import '../common.dart';
9 import '../common/codegen.dart' show CodegenRegistry; 9 import '../common/codegen.dart' show CodegenRegistry;
10 import '../common/names.dart'; 10 import '../common/names.dart';
(...skipping 3035 matching lines...) Expand 10 before | Expand all | Expand 10 after
3046 3046
3047 List<HInstruction> capturedVariables = <HInstruction>[]; 3047 List<HInstruction> capturedVariables = <HInstruction>[];
3048 closureInfo.createdFieldEntities.forEach((Local capturedLocal) { 3048 closureInfo.createdFieldEntities.forEach((Local capturedLocal) {
3049 assert(capturedLocal != null); 3049 assert(capturedLocal != null);
3050 capturedVariables.add(localsHandler.readLocal(capturedLocal)); 3050 capturedVariables.add(localsHandler.readLocal(capturedLocal));
3051 }); 3051 });
3052 3052
3053 TypeMask type = new TypeMask.nonNullExact(closureClassEntity, closedWorld); 3053 TypeMask type = new TypeMask.nonNullExact(closureClassEntity, closedWorld);
3054 // TODO(efortuna): Add source information here. 3054 // TODO(efortuna): Add source information here.
3055 push(new HCreate(closureClassEntity, capturedVariables, type, 3055 push(new HCreate(closureClassEntity, capturedVariables, type,
3056 callMethod: closureInfo.callMethod, localFunction: methodElement)); 3056 callMethod: closureInfo.callMethod));
3057 } 3057 }
3058 3058
3059 @override 3059 @override
3060 visitFunctionDeclaration(ir.FunctionDeclaration declaration) { 3060 visitFunctionDeclaration(ir.FunctionDeclaration declaration) {
3061 assert(isReachable); 3061 assert(isReachable);
3062 declaration.function.accept(this); 3062 declaration.function.accept(this);
3063 Local localFunction = localsMap.getLocalFunction(declaration); 3063 Local localFunction = localsMap.getLocalFunction(declaration);
3064 localsHandler.updateLocal(localFunction, pop()); 3064 localsHandler.updateLocal(localFunction, pop());
3065 } 3065 }
3066 3066
(...skipping 589 matching lines...) Expand 10 before | Expand all | Expand 10 after
3656 enterBlock.setBlockFlow( 3656 enterBlock.setBlockFlow(
3657 new HTryBlockInformation( 3657 new HTryBlockInformation(
3658 kernelBuilder.wrapStatementGraph(bodyGraph), 3658 kernelBuilder.wrapStatementGraph(bodyGraph),
3659 exception, 3659 exception,
3660 kernelBuilder.wrapStatementGraph(catchGraph), 3660 kernelBuilder.wrapStatementGraph(catchGraph),
3661 kernelBuilder.wrapStatementGraph(finallyGraph)), 3661 kernelBuilder.wrapStatementGraph(finallyGraph)),
3662 exitBlock); 3662 exitBlock);
3663 kernelBuilder.inTryStatement = previouslyInTryStatement; 3663 kernelBuilder.inTryStatement = previouslyInTryStatement;
3664 } 3664 }
3665 } 3665 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698