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

Unified Diff: pkg/compiler/lib/src/js_emitter/class_stub_generator.dart

Issue 1318383002: Extract ReceiverMask interface from TypeMask. (Closed) Base URL: https://github.com/dart-lang/sdk.git@master
Patch Set: Updated cf. comments. Created 5 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « pkg/compiler/lib/src/enqueue.dart ('k') | pkg/compiler/lib/src/js_emitter/js_emitter.dart » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: pkg/compiler/lib/src/js_emitter/class_stub_generator.dart
diff --git a/pkg/compiler/lib/src/js_emitter/class_stub_generator.dart b/pkg/compiler/lib/src/js_emitter/class_stub_generator.dart
index f29387052d17a93166a80dbf92c084046703ab99..c8d478b68ec8eaccf5f649ae211f57b878c8d0d7 100644
--- a/pkg/compiler/lib/src/js_emitter/class_stub_generator.dart
+++ b/pkg/compiler/lib/src/js_emitter/class_stub_generator.dart
@@ -48,7 +48,7 @@ class ClassStubGenerator {
* Invariant: [member] must be a declaration element.
*/
Map<jsAst.Name, jsAst.Expression> generateCallStubsForGetter(
- Element member, Map<Selector, TypeMaskSet> selectors) {
+ Element member, Map<Selector, ReceiverMaskSet> selectors) {
assert(invariant(member, member.isDeclaration));
// If the method is intercepted, the stub gets the
@@ -84,12 +84,7 @@ class ClassStubGenerator {
for (Selector selector in selectors.keys) {
if (generatedSelectors.contains(selector)) continue;
if (!selector.appliesUnnamed(member, compiler.world)) continue;
- for (TypeMask mask in selectors[selector].masks) {
- if (mask != null &&
- !mask.canHit(member, selector, compiler.world)) {
- continue;
- }
-
+ if (selectors[selector].applies(member, selector, compiler.world)) {
generatedSelectors.add(selector);
jsAst.Name invocationName = namer.invocationName(selector);
@@ -129,20 +124,12 @@ class ClassStubGenerator {
}
void addNoSuchMethodHandlers(String ignore,
- Map<Selector, TypeMaskSet> selectors) {
- TypeMask objectSubclassTypeMask =
- new TypeMask.subclass(compiler.objectClass, compiler.world);
-
+ Map<Selector, ReceiverMaskSet> selectors) {
for (Selector selector in selectors.keys) {
- TypeMaskSet maskSet = selectors[selector];
- for (TypeMask mask in maskSet.masks) {
- if (mask == null) mask = objectSubclassTypeMask;
-
- if (mask.needsNoSuchMethodHandling(selector, compiler.world)) {
- jsAst.Name jsName = namer.invocationMirrorInternalName(selector);
- jsNames[jsName] = selector;
- break;
- }
+ ReceiverMaskSet maskSet = selectors[selector];
+ if (maskSet.needsNoSuchMethodHandling(selector, compiler.world)) {
+ jsAst.Name jsName = namer.invocationMirrorInternalName(selector);
+ jsNames[jsName] = selector;
}
}
}
« no previous file with comments | « pkg/compiler/lib/src/enqueue.dart ('k') | pkg/compiler/lib/src/js_emitter/js_emitter.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698