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

Unified Diff: pkg/compiler/lib/src/js_backend/codegen/unsugar.dart

Issue 1144163004: dart2js cps: Always use interceptors and type tags for 'is' checks. (Closed) Base URL: git@github.com:dart-lang/sdk.git@master
Patch Set: Long line Created 5 years, 7 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_backend/codegen/unsugar.dart
diff --git a/pkg/compiler/lib/src/js_backend/codegen/unsugar.dart b/pkg/compiler/lib/src/js_backend/codegen/unsugar.dart
index e0115f21c2e7102fb63b8c43a8f21d86937352c8..d740e9dba27e222309c8b1f399a4519a58bf899a 100644
--- a/pkg/compiler/lib/src/js_backend/codegen/unsugar.dart
+++ b/pkg/compiler/lib/src/js_backend/codegen/unsugar.dart
@@ -262,6 +262,18 @@ class UnsugarVisitor extends RecursiveVisitor {
node.receiver = new Reference<Primitive>(newReceiver);
}
+ processTypeOperator(TypeOperator node) {
karlklose 2015/05/22 07:40:49 I think we should do this in the IR builder. Long
asgerf 2015/05/22 12:31:36 I completely agree. There is a strange limbo in th
+ // Intercept the receiver to type operators.
+ // We don't have any type information here, so we use the set of all
+ // intercepted classes to be safe.
+ _glue.registerSpecializedGetInterceptor(_glue.interceptedClasses);
+ Primitive interceptor =
+ new Interceptor(node.receiver.definition, _glue.interceptedClasses);
+ insertLetPrim(interceptor, node);
+ node.receiver.unlink();
+ node.receiver = new Reference<Primitive>(interceptor);
+ }
+
processInvokeMethodDirectly(InvokeMethodDirectly node) {
if (_glue.isInterceptedMethod(node.target)) {
Primitive nullPrim = nullConstant;
« no previous file with comments | « pkg/compiler/lib/src/js_backend/codegen/type_test_emitter.dart ('k') | pkg/compiler/lib/src/tree_ir/tree_ir_nodes.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698