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

Unified Diff: pkg/compiler/lib/src/ssa/kernel_impact.dart

Issue 2455073003: Compute NativeBehavior for foreign functions. (Closed)
Patch Set: Updated cf. comment. Created 4 years, 1 month 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/ssa/kernel_ast_adapter.dart ('k') | tests/compiler/dart2js/js_spec_string_test.dart » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: pkg/compiler/lib/src/ssa/kernel_impact.dart
diff --git a/pkg/compiler/lib/src/ssa/kernel_impact.dart b/pkg/compiler/lib/src/ssa/kernel_impact.dart
index 63bac549e1ecc06484d69e198fa3a1985ec7fbc9..6439008f6b5d3a5a68d72ffbd82de0d638d3c425 100644
--- a/pkg/compiler/lib/src/ssa/kernel_impact.dart
+++ b/pkg/compiler/lib/src/ssa/kernel_impact.dart
@@ -299,6 +299,34 @@ class KernelImpactBuilder extends ir.Visitor {
impactBuilder.registerStaticUse(new StaticUse.staticInvoke(
target, astAdapter.getCallStructure(node.arguments)));
}
+ switch (astAdapter.getForeignKind(node)) {
+ case ForeignKind.JS:
+ impactBuilder
+ .registerNativeData(astAdapter.getNativeBehaviorForJsCall(node));
+ break;
+ case ForeignKind.JS_BUILTIN:
+ impactBuilder.registerNativeData(
+ astAdapter.getNativeBehaviorForJsBuiltinCall(node));
+ break;
+ case ForeignKind.JS_EMBEDDED_GLOBAL:
+ impactBuilder.registerNativeData(
+ astAdapter.getNativeBehaviorForJsEmbeddedGlobalCall(node));
+ break;
+ case ForeignKind.JS_INTERCEPTOR_CONSTANT:
+ if (node.arguments.positional.length != 1 ||
+ node.arguments.named.isNotEmpty) {
+ astAdapter.reporter.reportErrorMessage(CURRENT_ELEMENT_SPANNABLE,
+ MessageKind.WRONG_ARGUMENT_FOR_JS_INTERCEPTOR_CONSTANT);
+ }
+ ir.Node argument = node.arguments.positional.first;
+ if (argument is ir.TypeLiteral && argument.type is ir.InterfaceType) {
+ impactBuilder.registerTypeUse(
+ new TypeUse.instantiation(astAdapter.getDartType(argument.type)));
+ }
+ break;
+ case ForeignKind.NONE:
+ break;
+ }
}
@override
« no previous file with comments | « pkg/compiler/lib/src/ssa/kernel_ast_adapter.dart ('k') | tests/compiler/dart2js/js_spec_string_test.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698