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

Side by Side Diff: pkg/compiler/lib/src/js_model/closure.dart

Issue 3009593002: It's alive (first kernel inference test) (Closed)
Patch Set: Updated cf. comment Created 3 years, 3 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) 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 '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/tasks.dart'; 9 import '../common/tasks.dart';
10 import '../constants/expressions.dart'; 10 import '../constants/expressions.dart';
(...skipping 175 matching lines...) Expand 10 before | Expand all | Expand 10 after
186 186
187 @override 187 @override
188 // TODO(efortuna): Eventually capturedScopesMap[node] should always 188 // TODO(efortuna): Eventually capturedScopesMap[node] should always
189 // be non-null, and we should just test that with an assert. 189 // be non-null, and we should just test that with an assert.
190 CapturedLoopScope getCapturedLoopScope(ir.Node loopNode) => 190 CapturedLoopScope getCapturedLoopScope(ir.Node loopNode) =>
191 _capturedScopesMap[loopNode] ?? const CapturedLoopScope(); 191 _capturedScopesMap[loopNode] ?? const CapturedLoopScope();
192 192
193 @override 193 @override
194 ClosureRepresentationInfo getClosureInfoForMember(MemberEntity entity) { 194 ClosureRepresentationInfo getClosureInfoForMember(MemberEntity entity) {
195 var closure = _memberClosureRepresentationMap[entity]; 195 var closure = _memberClosureRepresentationMap[entity];
196 assert( 196 // TODO(johnniwinther): Re-insert assertion or remove
197 // [getClosureInfoForMember].
198 /*assert(
197 closure != null, 199 closure != null,
198 "Corresponding closure class not found for $entity. " 200 "Corresponding closure class not found for $entity. "
199 "Closures found for ${_memberClosureRepresentationMap.keys}"); 201 "Closures found for ${_memberClosureRepresentationMap.keys}");*/
200 return closure; 202 return closure ?? const ClosureRepresentationInfo();
201 } 203 }
202 204
203 @override 205 @override
204 ClosureRepresentationInfo getClosureInfo(ir.Node node) { 206 ClosureRepresentationInfo getClosureInfo(ir.Node node) {
205 var closure = _localClosureRepresentationMap[node]; 207 var closure = _localClosureRepresentationMap[node];
206 assert( 208 assert(
207 closure != null, 209 closure != null,
208 "Corresponding closure class not found for $node. " 210 "Corresponding closure class not found for $node. "
209 "Closures found for ${_localClosureRepresentationMap.keys}"); 211 "Closures found for ${_localClosureRepresentationMap.keys}");
210 return closure; 212 return closure;
(...skipping 308 matching lines...) Expand 10 before | Expand all | Expand 10 after
519 class ClosureFieldData extends ClosureMemberData implements FieldData { 521 class ClosureFieldData extends ClosureMemberData implements FieldData {
520 ClosureFieldData(MemberDefinition definition) : super(definition); 522 ClosureFieldData(MemberDefinition definition) : super(definition);
521 523
522 @override 524 @override
523 DartType getFieldType(KernelToElementMap elementMap) { 525 DartType getFieldType(KernelToElementMap elementMap) {
524 // A closure field doesn't have a Dart type. 526 // A closure field doesn't have a Dart type.
525 return null; 527 return null;
526 } 528 }
527 529
528 @override 530 @override
529 ConstantExpression getFieldConstant( 531 ConstantExpression getFieldConstantExpression(KernelToElementMap elementMap) {
530 KernelToElementMap elementMap, FieldEntity field) {
531 failedAt( 532 failedAt(
532 field, 533 definition.member,
533 "Unexpected field $field in " 534 "Unexpected field ${definition.member} in "
534 "ClosureFieldData.getFieldConstant"); 535 "ClosureFieldData.getFieldConstantExpression");
536 return null;
537 }
538
539 @override
540 ConstantValue getConstantFieldInitializer(KernelToElementMap elementMap) {
541 failedAt(
542 definition.member,
543 "Unexpected field ${definition.member} in "
544 "ClosureFieldData.getConstantFieldInitializer");
545 return null;
546 }
547
548 @override
549 bool hasConstantFieldInitializer(KernelToElementMap elementMap) {
550 return false;
551 }
552
553 @override
554 ConstantValue getFieldConstantValue(KernelToElementMap elementMap) {
535 return null; 555 return null;
536 } 556 }
537 } 557 }
538 558
539 class ClosureMemberDefinition implements MemberDefinition { 559 class ClosureMemberDefinition implements MemberDefinition {
540 final MemberEntity member; 560 final MemberEntity member;
541 final SourceSpan location; 561 final SourceSpan location;
542 final MemberKind kind; 562 final MemberKind kind;
543 final ir.Node node; 563 final ir.Node node;
544 564
545 ClosureMemberDefinition(this.member, this.location, this.kind, this.node); 565 ClosureMemberDefinition(this.member, this.location, this.kind, this.node);
546 566
547 String toString() => 567 String toString() =>
548 'ClosureMemberDefinition(kind:$kind,member:$member,location:$location)'; 568 'ClosureMemberDefinition(kind:$kind,member:$member,location:$location)';
549 } 569 }
550 570
551 /// Collection of scope data collected for a single member. 571 /// Collection of scope data collected for a single member.
552 class ScopeModel { 572 class ScopeModel {
553 /// Collection [ScopeInfo] data for the member. 573 /// Collection [ScopeInfo] data for the member.
554 KernelScopeInfo scopeInfo; 574 KernelScopeInfo scopeInfo;
555 575
556 /// Collected [CapturedScope] data for nodes. 576 /// Collected [CapturedScope] data for nodes.
557 Map<ir.Node, KernelCapturedScope> capturedScopesMap = 577 Map<ir.Node, KernelCapturedScope> capturedScopesMap =
558 <ir.Node, KernelCapturedScope>{}; 578 <ir.Node, KernelCapturedScope>{};
559 579
560 /// Collected [ScopeInfo] data for nodes. 580 /// Collected [ScopeInfo] data for nodes.
561 Map<ir.FunctionNode, KernelScopeInfo> closuresToGenerate = 581 Map<ir.FunctionNode, KernelScopeInfo> closuresToGenerate =
562 <ir.FunctionNode, KernelScopeInfo>{}; 582 <ir.FunctionNode, KernelScopeInfo>{};
563 } 583 }
OLDNEW
« no previous file with comments | « pkg/compiler/lib/src/inferrer/type_graph_inferrer.dart ('k') | pkg/compiler/lib/src/kernel/element_map.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698