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

Unified Diff: pkg/compiler/lib/src/js_backend/mirrors_data.dart

Issue 2693163002: Split backend implementation of EnqueuerListener (Closed)
Patch Set: Updated cf. comments Created 3 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
Index: pkg/compiler/lib/src/js_backend/mirrors_data.dart
diff --git a/pkg/compiler/lib/src/js_backend/mirrors_data.dart b/pkg/compiler/lib/src/js_backend/mirrors_data.dart
index 6734fed8687d152767e1b05b3b1be10015dc7bb5..282adf73edcce18fc5ab38d4eb7f9eb70727ed30 100644
--- a/pkg/compiler/lib/src/js_backend/mirrors_data.dart
+++ b/pkg/compiler/lib/src/js_backend/mirrors_data.dart
@@ -9,8 +9,10 @@ import '../constants/values.dart';
import '../elements/elements.dart';
import '../elements/resolution_types.dart';
import '../enqueue.dart';
+import '../options.dart';
import '../world.dart';
import '../util/emptyset.dart';
+import 'backend_helpers.dart';
class MirrorsData {
/// True if a call to preserveMetadataMarker has been seen. This means that
@@ -35,6 +37,10 @@ class MirrorsData {
/// True if there isn't sufficient @MirrorsUsed data.
bool hasInsufficientMirrorsUsed = false;
+ /// True if a call to preserveUris has been seen and the preserve-uris flag
+ /// is set.
+ bool mustPreserveUris = false;
+
/// List of symbols that the user has requested for reflection.
final Set<String> symbolsUsed = new Set<String>();
@@ -49,6 +55,24 @@ class MirrorsData {
MirrorsData(this.compiler);
+ CompilerOptions get _options => compiler.options;
+
+ BackendHelpers get _helpers => compiler.backend.helpers;
+
+ void registerUsedMember(MemberElement member) {
+ if (member == _helpers.disableTreeShakingMarker) {
+ isTreeShakingDisabled = true;
+ } else if (member == _helpers.preserveNamesMarker) {
+ mustPreserveNames = true;
+ } else if (member == _helpers.preserveMetadataMarker) {
+ mustRetainMetadata = true;
+ } else if (member == _helpers.preserveUrisMarker) {
+ if (_options.preserveUris) mustPreserveUris = true;
+ } else if (member == _helpers.preserveLibraryNamesMarker) {
+ mustRetainLibraryNames = true;
+ }
+ }
+
/// Should [element] (a getter) that would normally not be generated due to
/// treeshaking be retained for reflection?
bool shouldRetainGetter(Element element) {
@@ -330,13 +354,13 @@ class MirrorsData {
// As we do not think about closures as classes, yet, we have to make sure
// their superclasses are available for reflection manually.
if (foundClosure) {
- ClassElement cls = compiler.backend.helpers.closureClass;
+ ClassElement cls = _helpers.closureClass;
reflectableMembers.add(cls);
}
Set<Element> closurizedMembers =
compiler.resolutionWorldBuilder.closurizedMembers;
if (closurizedMembers.any(reflectableMembers.contains)) {
- ClassElement cls = compiler.backend.helpers.boundClosureClass;
+ ClassElement cls = _helpers.boundClosureClass;
reflectableMembers.add(cls);
}
// Add typedefs.
« no previous file with comments | « pkg/compiler/lib/src/js_backend/enqueuer.dart ('k') | pkg/compiler/lib/src/js_emitter/full_emitter/emitter.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698