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

Unified Diff: tests/compiler/dart2js/kernel/closed_world2_test.dart

Issue 2824423002: Compute NativeBasicData for KernelWorldBuilder (Closed)
Patch Set: Updated cf. comments. Created 3 years, 8 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/native/resolver.dart ('k') | tests/compiler/dart2js/serialization/test_helper.dart » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: tests/compiler/dart2js/kernel/closed_world2_test.dart
diff --git a/tests/compiler/dart2js/kernel/closed_world2_test.dart b/tests/compiler/dart2js/kernel/closed_world2_test.dart
index 7a0e409cea72e8d42b5340d3c90d57d8d63898c4..72160a47c8f8d7a2be7dc10d67bfb785b850acf7 100644
--- a/tests/compiler/dart2js/kernel/closed_world2_test.dart
+++ b/tests/compiler/dart2js/kernel/closed_world2_test.dart
@@ -42,8 +42,17 @@ import 'package:compiler/src/universe/world_impact.dart';
import 'package:compiler/src/world.dart';
import '../memory_compiler.dart';
import '../serialization/helper.dart';
+import '../serialization/model_test_helper.dart';
+import '../serialization/test_helper.dart';
import 'closed_world_test.dart';
+import 'impact_test.dart';
+
+const SOURCE = const {
+ 'main.dart': '''
+main() {}
+'''
+};
main(List<String> args) {
Arguments arguments = new Arguments.from(args);
@@ -74,8 +83,16 @@ main(List<String> args) {
KernelWorldBuilder worldBuilder = new KernelWorldBuilder(
compiler.reporter, compiler.backend.kernelTask.program);
- List list = createKernelResolutionEnqueuerListener(compiler.options,
- compiler.reporter, compiler.deferredLoadTask, worldBuilder);
+ KernelEquivalence equivalence = new KernelEquivalence(worldBuilder);
+ NativeBasicData nativeBasicData = computeNativeBasicData(worldBuilder);
+ checkNativeBasicData(
+ compiler.backend.nativeBasicData, nativeBasicData, equivalence);
+ List list = createKernelResolutionEnqueuerListener(
+ compiler.options,
+ compiler.reporter,
+ compiler.deferredLoadTask,
+ worldBuilder,
+ nativeBasicData);
ResolutionEnqueuerListener resolutionEnqueuerListener = list[0];
ImpactTransformer impactTransformer = list[1];
ResolutionEnqueuer enqueuer = new ResolutionEnqueuer(
@@ -87,7 +104,7 @@ main(List<String> args) {
new KernelResolutionWorldBuilder(
worldBuilder.elementEnvironment,
worldBuilder.commonElements,
- new NativeBasicDataImpl(),
+ nativeBasicData,
const OpenWorldStrategy()),
new KernelWorkItemBuilder(worldBuilder, impactTransformer),
'enqueuer from kelements');
@@ -101,13 +118,13 @@ List createKernelResolutionEnqueuerListener(
CompilerOptions options,
DiagnosticReporter reporter,
DeferredLoadTask deferredLoadTask,
- KernelWorldBuilder worldBuilder) {
+ KernelWorldBuilder worldBuilder,
+ NativeBasicData nativeBasicData) {
ElementEnvironment elementEnvironment = worldBuilder.elementEnvironment;
CommonElements commonElements = worldBuilder.commonElements;
BackendImpacts impacts = new BackendImpacts(options, commonElements);
// TODO(johnniwinther): Create Kernel based implementations for these:
- NativeBasicData nativeBasicData = new NativeBasicDataImpl();
RuntimeTypesNeedBuilder rtiNeedBuilder = new RuntimeTypesNeedBuilderImpl();
MirrorsDataBuilder mirrorsDataBuilder = new MirrorsDataBuilderImpl();
CustomElementsResolutionAnalysis customElementsResolutionAnalysis =
@@ -116,6 +133,7 @@ List createKernelResolutionEnqueuerListener(
new MirrorsResolutionAnalysisImpl();
LookupMapResolutionAnalysis lookupMapResolutionAnalysis =
new LookupMapResolutionAnalysis(reporter, elementEnvironment);
+
InterceptorDataBuilder interceptorDataBuilder =
new InterceptorDataBuilderImpl(
nativeBasicData, elementEnvironment, commonElements);
@@ -160,39 +178,18 @@ List createKernelResolutionEnqueuerListener(
return [listener, transformer];
}
-class NativeBasicDataImpl implements NativeBasicData {
- @override
- bool isNativeClass(ClassEntity element) {
- // TODO(johnniwinther): Implement this.
- return false;
- }
-
- @override
- bool isJsInteropClass(ClassEntity element) {
- throw new UnimplementedError('NativeBasicDataImpl.isJsInteropClass');
- }
-
- @override
- bool isJsInteropLibrary(LibraryEntity element) {
- throw new UnimplementedError('NativeBasicDataImpl.isJsInteropLibrary');
- }
-
- @override
- bool isNativeOrExtendsNative(ClassEntity element) {
- // TODO(johnniwinther): Implement this.
- return false;
- }
-
- @override
- bool hasNativeTagsForcedNonLeaf(ClassEntity cls) {
- throw new UnimplementedError(
- 'NativeBasicDataImpl.hasNativeTagsForcedNonLeaf');
- }
-
- @override
- List<String> getNativeTagsOfClass(ClassEntity cls) {
- throw new UnimplementedError('NativeBasicDataImpl.getNativeTagsOfClass');
+/// Computes that NativeBasicData for the libraries in [worldBuilder].
+/// TODO(johnniwinther): Use [KernelAnnotationProcessor] instead.
+NativeBasicData computeNativeBasicData(KernelWorldBuilder worldBuilder) {
+ NativeBasicDataBuilderImpl builder = new NativeBasicDataBuilderImpl();
+ ElementEnvironment elementEnvironment = worldBuilder.elementEnvironment;
+ for (LibraryEntity library in elementEnvironment.libraries) {
+ if (library.canonicalUri.scheme == 'dart') {
+ new KernelAnnotationProcessor(worldBuilder)
+ .extractNativeAnnotations(library, builder);
+ }
}
+ return builder.close(elementEnvironment);
}
class RuntimeTypesNeedBuilderImpl implements RuntimeTypesNeedBuilder {
@@ -298,3 +295,15 @@ class KernelWorkItem implements ResolutionWorkItem {
return _impactTransformer.transformResolutionImpact(impact);
}
}
+
+void checkNativeBasicData(NativeBasicDataImpl data1, NativeBasicDataImpl data2,
+ KernelEquivalence equivalence) {
+ checkMapEquivalence(
+ data1,
+ data2,
+ 'nativeClassTagInfo',
+ data1.nativeClassTagInfo,
+ data2.nativeClassTagInfo,
+ equivalence.entityEquivalence,
+ (a, b) => a == b);
+}
« no previous file with comments | « pkg/compiler/lib/src/native/resolver.dart ('k') | tests/compiler/dart2js/serialization/test_helper.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698