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

Unified Diff: pkg/compiler/lib/src/cps_ir/cps_ir_integrity.dart

Issue 1761903002: dart2js cps: Keep interceptors in a separate field. (Closed) Base URL: git@github.com:dart-lang/sdk.git@master
Patch Set: Rebase Created 4 years, 10 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/cps_ir/cps_fragment.dart ('k') | pkg/compiler/lib/src/cps_ir/cps_ir_nodes.dart » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: pkg/compiler/lib/src/cps_ir/cps_ir_integrity.dart
diff --git a/pkg/compiler/lib/src/cps_ir/cps_ir_integrity.dart b/pkg/compiler/lib/src/cps_ir/cps_ir_integrity.dart
index 8fb65a2e83840c87a4906edf6436562c63882a11..efdc27f5adbaab71dad06b402d8266ed57afe825 100644
--- a/pkg/compiler/lib/src/cps_ir/cps_ir_integrity.dart
+++ b/pkg/compiler/lib/src/cps_ir/cps_ir_integrity.dart
@@ -134,9 +134,13 @@ class CheckCpsIntegrity extends TrampolineRecursiveVisitor {
@override
visitFunctionDefinition(FunctionDefinition node) {
- if (node.thisParameter != null) {
- handleDeclaration(node.thisParameter);
- enterScope([node.thisParameter]);
+ if (node.interceptorParameter != null) {
+ handleDeclaration(node.interceptorParameter);
+ enterScope([node.interceptorParameter]);
+ }
+ if (node.receiverParameter != null) {
+ handleDeclaration(node.receiverParameter);
+ enterScope([node.receiverParameter]);
}
node.parameters.forEach(handleDeclaration);
enterScope(node.parameters);
@@ -181,6 +185,19 @@ class CheckCpsIntegrity extends TrampolineRecursiveVisitor {
}
}
+ @override
+ processInvokeMethod(InvokeMethod node) {
+ if (node.callingConvention == CallingConvention.Intercepted) {
+ if (node.interceptorRef == null) {
+ error('No interceptor on intercepted call', node);
+ }
+ } else {
+ if (node.interceptorRef != null) {
+ error('Interceptor on call with ${node.callingConvention}', node);
+ }
+ }
+ }
+
void checkReferenceChain(Definition def) {
Reference previous = null;
for (Reference ref = def.firstRef; ref != null; ref = ref.next) {
« no previous file with comments | « pkg/compiler/lib/src/cps_ir/cps_fragment.dart ('k') | pkg/compiler/lib/src/cps_ir/cps_ir_nodes.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698