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

Side by Side Diff: pkg/compiler/lib/src/resolution/registry.dart

Issue 1384523003: Refactor resolution of foreign calls. (Closed) Base URL: https://github.com/dart-lang/sdk.git@master
Patch Set: Created 5 years, 2 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
« no previous file with comments | « pkg/compiler/lib/src/resolution/members.dart ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2014, 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 library dart2js.resolution.registry; 5 library dart2js.resolution.registry;
6 6
7 import '../common/backend_api.dart' show 7 import '../common/backend_api.dart' show
8 Backend; 8 Backend,
9 ForeignResolver;
9 import '../common/registry.dart' show 10 import '../common/registry.dart' show
10 Registry; 11 Registry;
11 import '../compiler.dart' show 12 import '../compiler.dart' show
12 Compiler; 13 Compiler;
13 import '../constants/expressions.dart'; 14 import '../constants/expressions.dart';
14 import '../dart_types.dart'; 15 import '../dart_types.dart';
15 import '../diagnostics/invariant.dart' show 16 import '../diagnostics/invariant.dart' show
16 invariant; 17 invariant;
17 import '../enqueue.dart' show 18 import '../enqueue.dart' show
18 ResolutionEnqueuer, 19 ResolutionEnqueuer,
19 WorldImpact; 20 WorldImpact;
20 import '../elements/elements.dart'; 21 import '../elements/elements.dart';
21 import '../tree/tree.dart'; 22 import '../tree/tree.dart';
22 import '../util/util.dart' show 23 import '../util/util.dart' show
23 Setlet; 24 Setlet;
25 import '../universe/call_structure.dart' show
26 CallStructure;
24 import '../universe/selector.dart' show 27 import '../universe/selector.dart' show
25 Selector; 28 Selector;
26 import '../universe/universe.dart' show 29 import '../universe/universe.dart' show
27 UniverseSelector; 30 UniverseSelector;
28 import '../world.dart' show World; 31 import '../world.dart' show World;
29 32
30 import 'send_structure.dart'; 33 import 'send_structure.dart';
31 34
32 import 'members.dart' show 35 import 'members.dart' show
33 ResolverVisitor; 36 ResolverVisitor;
(...skipping 439 matching lines...) Expand 10 before | Expand all | Expand 10 after
473 mapping.setType(node, type); 476 mapping.setType(node, type);
474 backend.resolutionCallbacks.onTypeLiteral(type, this); 477 backend.resolutionCallbacks.onTypeLiteral(type, this);
475 backend.registerInstantiatedType(compiler.coreTypes.typeType, world, this); 478 backend.registerInstantiatedType(compiler.coreTypes.typeType, world, this);
476 } 479 }
477 480
478 void registerMapLiteral(Node node, DartType type, bool isConstant) { 481 void registerMapLiteral(Node node, DartType type, bool isConstant) {
479 setType(node, type); 482 setType(node, type);
480 backend.resolutionCallbacks.onMapLiteral(this, type, isConstant); 483 backend.resolutionCallbacks.onMapLiteral(this, type, isConstant);
481 } 484 }
482 485
483 // TODO(johnniwinther): Remove the [ResolverVisitor] dependency. Its only 486 void registerForeignCall(Node node,
484 // needed to lookup types in the current scope. 487 Element element,
485 void registerJsCall(Node node, ResolverVisitor visitor) { 488 CallStructure callStructure,
486 world.registerJsCall(node, visitor); 489 ResolverVisitor visitor) {
487 } 490 backend.registerForeignCall(
488 491 node, element, callStructure,
489 // TODO(johnniwinther): Remove the [ResolverVisitor] dependency. Its only 492 new ForeignResolutionResolver(visitor, this));
490 // needed to lookup types in the current scope.
491 void registerJsEmbeddedGlobalCall(Node node, ResolverVisitor visitor) {
492 world.registerJsEmbeddedGlobalCall(node, visitor);
493 }
494
495 // TODO(johnniwinther): Remove the [ResolverVisitor] dependency. Its only
496 // needed to lookup types in the current scope.
497 void registerJsBuiltinCall(Node node, ResolverVisitor visitor) {
498 world.registerJsBuiltinCall(node, visitor);
499 } 493 }
500 494
501 void registerGetOfStaticFunction(FunctionElement element) { 495 void registerGetOfStaticFunction(FunctionElement element) {
502 worldImpact.registerClosurizedFunction(element); 496 worldImpact.registerClosurizedFunction(element);
503 } 497 }
504 498
505 void registerDynamicGetter(UniverseSelector selector) { 499 void registerDynamicGetter(UniverseSelector selector) {
506 assert(selector.selector.isGetter); 500 assert(selector.selector.isGetter);
507 worldImpact.registerDynamicGetter(selector); 501 worldImpact.registerDynamicGetter(selector);
508 } 502 }
(...skipping 103 matching lines...) Expand 10 before | Expand all | Expand 10 after
612 } 606 }
613 607
614 void registerIncDecOperation() { 608 void registerIncDecOperation() {
615 backend.resolutionCallbacks.onIncDecOperation(this); 609 backend.resolutionCallbacks.onIncDecOperation(this);
616 } 610 }
617 611
618 void registerTryStatement() { 612 void registerTryStatement() {
619 mapping.containsTryStatement = true; 613 mapping.containsTryStatement = true;
620 } 614 }
621 } 615 }
616
617 class ForeignResolutionResolver implements ForeignResolver {
618 final ResolverVisitor visitor;
619 final ResolutionRegistry registry;
620
621 ForeignResolutionResolver(this.visitor, this.registry);
622
623 @override
624 ConstantExpression getConstant(Node node) {
625 return registry.getConstant(node);
626 }
627
628 @override
629 void registerInstantiatedType(InterfaceType type) {
630 registry.registerInstantiatedType(type);
631 }
632
633 @override
634 DartType resolveTypeFromString(Node node, String typeName) {
635 return visitor.resolveTypeFromString(node, typeName);
636 }
637 }
OLDNEW
« no previous file with comments | « pkg/compiler/lib/src/resolution/members.dart ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698