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

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

Issue 2265473004: Introduce "CommonElements" (Closed) Base URL: git@github.com:dart-lang/sdk.git@master
Patch Set: cl Created 4 years, 4 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/backend.dart
diff --git a/pkg/compiler/lib/src/js_backend/backend.dart b/pkg/compiler/lib/src/js_backend/backend.dart
index 8433ec4a673c847d89e7ba91207891f35f2523de..81cb90f1bac1039945d78f81b510218d49897278 100644
--- a/pkg/compiler/lib/src/js_backend/backend.dart
+++ b/pkg/compiler/lib/src/js_backend/backend.dart
@@ -15,11 +15,7 @@ import '../common/backend_api.dart'
import '../common/codegen.dart' show CodegenImpact, CodegenWorkItem;
import '../common/names.dart' show Identifiers, Selectors, Uris;
import '../common/registry.dart' show EagerRegistry, Registry;
-import '../common/resolution.dart'
- show
- Frontend,
- Resolution,
- ResolutionImpact;
+import '../common/resolution.dart' show Frontend, Resolution, ResolutionImpact;
import '../common/tasks.dart' show CompilerTask;
import '../common/work.dart' show ItemCompilationContext;
import '../compiler.dart' show Compiler;
@@ -522,6 +518,9 @@ class JavaScriptBackend extends Backend {
/// True if the html library has been loaded.
bool htmlLibraryIsLoaded = false;
+ /// True when we enqueue the loadLibrary code.
+ bool isLoadLibraryFunctionResolved = false;
+
/// List of constants from metadata. If metadata must be preserved,
/// these constants must be registered.
final List<Dependency> metadataConstants = <Dependency>[];
@@ -701,7 +700,7 @@ class JavaScriptBackend extends Backend {
bool _isValidBackendUse(Element element) {
assert(invariant(element, element.isDeclaration, message: ""));
if (element == helpers.streamIteratorConstructor ||
- element == helpers.compiler.symbolConstructor ||
+ compiler.commonElements.isSymbolConstructor(element) ||
helpers.isSymbolValidatedConstructor(element) ||
element == helpers.syncCompleterConstructor ||
element == coreClasses.symbolClass ||
@@ -1685,7 +1684,8 @@ class JavaScriptBackend extends Backend {
if (library.isInternalLibrary) continue;
for (ImportElement import in library.imports) {
LibraryElement importedLibrary = import.importedLibrary;
- if (importedLibrary != compiler.mirrorsLibrary) continue;
+ if (importedLibrary != compiler.commonElements.mirrorsLibrary)
+ continue;
MessageKind kind =
compiler.mirrorUsageAnalyzerTask.hasMirrorUsage(library)
? MessageKind.MIRROR_IMPORT
@@ -1917,10 +1917,10 @@ class JavaScriptBackend extends Backend {
needToInitializeIsolateAffinityTag = true;
} else if (element.isDeferredLoaderGetter) {
// TODO(sigurdm): Create a function registerLoadLibraryAccess.
- if (compiler.loadLibraryFunction == null) {
- compiler.loadLibraryFunction = helpers.loadLibraryWrapper;
+ if (!isLoadLibraryFunctionResolved) {
+ isLoadLibraryFunctionResolved = true;
enqueueInResolution(
- compiler.loadLibraryFunction, compiler.globalDependencies);
+ helpers.loadLibraryWrapper, compiler.globalDependencies);
}
} else if (element == helpers.requiresPreambleMarker) {
requiresPreamble = true;
@@ -2132,7 +2132,7 @@ class JavaScriptBackend extends Backend {
*/
computeMembersNeededForReflection() {
if (_membersNeededForReflection != null) return;
- if (compiler.mirrorsLibrary == null) {
+ if (compiler.commonElements.mirrorsLibrary == null) {
_membersNeededForReflection = const ImmutableEmptySet<Element>();
return;
}
@@ -2290,9 +2290,10 @@ class JavaScriptBackend extends Backend {
// Just checking for [:TypedData:] is not sufficient, as it is an
// abstract class any user-defined class can implement. So we also
// check for the interface [JavaScriptIndexingBehavior].
- return compiler.typedDataClass != null &&
- compiler.world.isInstantiated(compiler.typedDataClass) &&
- mask.satisfies(compiler.typedDataClass, compiler.world) &&
+ ClassElement typedDataClass = compiler.commonElements.typedDataClass;
+ return typedDataClass != null &&
+ compiler.world.isInstantiated(typedDataClass) &&
+ mask.satisfies(typedDataClass, compiler.world) &&
mask.satisfies(helpers.jsIndexingBehaviorInterface, compiler.world);
}
@@ -2301,10 +2302,11 @@ class JavaScriptBackend extends Backend {
!type1.intersection(type2, compiler.world).isEmpty;
// TODO(herhut): Maybe cache the TypeMask for typedDataClass and
// jsIndexingBehaviourInterface.
- return compiler.typedDataClass != null &&
- compiler.world.isInstantiated(compiler.typedDataClass) &&
- intersects(mask,
- new TypeMask.subtype(compiler.typedDataClass, compiler.world)) &&
+ ClassElement typedDataClass = compiler.commonElements.typedDataClass;
+ return typedDataClass != null &&
+ compiler.world.isInstantiated(typedDataClass) &&
+ intersects(
+ mask, new TypeMask.subtype(typedDataClass, compiler.world)) &&
intersects(
mask,
new TypeMask.subtype(
« no previous file with comments | « pkg/compiler/lib/src/inferrer/type_graph_inferrer.dart ('k') | pkg/compiler/lib/src/js_backend/backend_helpers.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698