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

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

Issue 1182053010: Revert "Split TypedSelector into Selector and TypeMask." (Closed) Base URL: https://github.com/dart-lang/sdk.git@master
Patch Set: Created 5 years, 6 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
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 29db3367e22540136cc6d4b12fab516d0669f19c..e21ba1daf0bd280ce3c6192fe7e634dee5d0c232 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<String, jsAst.Expression> generateCallStubsForGetter(
- Element member, Map<Selector, TypeMaskSet> selectors) {
+ Element member, Set<Selector> selectors) {
assert(invariant(member, member.isDeclaration));
// If the method is intercepted, the stub gets the
@@ -80,15 +80,10 @@ class ClassStubGenerator {
// identical stubs for each we track untyped selectors which already have
// stubs.
Set<Selector> generatedSelectors = new Set<Selector>();
- 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;
- }
-
+ for (Selector selector in selectors) {
+ if (selector.applies(member, compiler.world)) {
+ selector = selector.asUntyped;
+ if (generatedSelectors.contains(selector)) continue;
generatedSelectors.add(selector);
String invocationName = namer.invocationName(selector);
@@ -127,28 +122,25 @@ class ClassStubGenerator {
return jsNames;
}
- void addNoSuchMethodHandlers(String ignore,
- Map<Selector, TypeMaskSet> selectors) {
+ void addNoSuchMethodHandlers(String ignore, Set<Selector> selectors) {
TypeMask objectSubclassTypeMask =
new TypeMask.subclass(compiler.objectClass, compiler.world);
- for (Selector selector in selectors.keys) {
- TypeMaskSet maskSet = selectors[selector];
- for (TypeMask mask in maskSet.masks) {
- if (mask == null) mask = objectSubclassTypeMask;
+ for (Selector selector in selectors) {
+ TypeMask mask = selector.mask;
+ if (mask == null) mask = objectSubclassTypeMask;
- if (mask.needsNoSuchMethodHandling(selector, compiler.world)) {
- String jsName = namer.invocationMirrorInternalName(selector);
- jsNames[jsName] = selector;
- break;
- }
+ if (!mask.needsNoSuchMethodHandling(selector, compiler.world)) {
+ continue;
}
+ String jsName = namer.invocationMirrorInternalName(selector);
+ jsNames[jsName] = selector;
}
}
- compiler.codegenWorld.forEachInvokedName(addNoSuchMethodHandlers);
- compiler.codegenWorld.forEachInvokedGetter(addNoSuchMethodHandlers);
- compiler.codegenWorld.forEachInvokedSetter(addNoSuchMethodHandlers);
+ compiler.codegenWorld.invokedNames.forEach(addNoSuchMethodHandlers);
+ compiler.codegenWorld.invokedGetters.forEach(addNoSuchMethodHandlers);
+ compiler.codegenWorld.invokedSetters.forEach(addNoSuchMethodHandlers);
return jsNames;
}
« no previous file with comments | « pkg/compiler/lib/src/js_backend/codegen/codegen.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