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

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

Issue 2692303002: Split InterceptorData (Closed)
Patch Set: 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
« no previous file with comments | « pkg/compiler/lib/src/common/backend_api.dart ('k') | pkg/compiler/lib/src/js_backend/interceptor_data.dart » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 f829fd48de645d889d2d1f2111a00234a8181bf0..eb224066f1191485869cf72429e91ea1e5e29b31 100644
--- a/pkg/compiler/lib/src/js_backend/backend.dart
+++ b/pkg/compiler/lib/src/js_backend/backend.dart
@@ -79,7 +79,7 @@ import 'checked_mode_helpers.dart';
import 'constant_handler_javascript.dart';
import 'custom_elements_analysis.dart';
import 'enqueuer.dart';
-import 'interceptor_data.dart' show InterceptorData;
+import 'interceptor_data.dart';
import 'js_interop_analysis.dart' show JsInteropAnalysis;
import 'lookup_map_analysis.dart' show LookupMapAnalysis;
import 'mirrors_analysis.dart';
@@ -439,7 +439,9 @@ class JavaScriptBackend extends Target {
new StagedWorldImpactBuilder();
final NativeData nativeData = new NativeData();
+ InterceptorDataBuilder _interceptorDataBuilder;
InterceptorData _interceptorData;
+ OneShotInterceptorData _oneShotInterceptorData;
BackendUsageImpl _backendUsage;
final MirrorsData mirrorsData;
CheckedModeHelpers _checkedModeHelpers;
@@ -494,9 +496,10 @@ class JavaScriptBackend extends Target {
functionCompiler =
new SsaFunctionCompiler(this, sourceInformationStrategy, useKernel);
serialization = new JavaScriptBackendSerialization(this);
- _interceptorData = new InterceptorData(nativeData, helpers, commonElements);
+ _interceptorDataBuilder =
+ new InterceptorDataBuilderImpl(nativeData, helpers, commonElements);
backendClasses = new JavaScriptBackendClasses(
- compiler.elementEnvironment, helpers, nativeData, _interceptorData);
+ compiler.elementEnvironment, helpers, nativeData);
_resolutionEnqueuerListener = new ResolutionEnqueuerListener(this);
_codegenEnqueuerListener = new CodegenEnqueuerListener(this);
}
@@ -511,7 +514,17 @@ class JavaScriptBackend extends Target {
Resolution get resolution => compiler.resolution;
- InterceptorData get interceptorData => _interceptorData;
+ InterceptorData get interceptorData {
+ assert(invariant(NO_LOCATION_SPANNABLE, _interceptorData != null,
+ message: "InterceptorData has not been computed yet."));
+ return _interceptorData;
+ }
+
+ OneShotInterceptorData get oneShotInterceptorData {
+ assert(invariant(NO_LOCATION_SPANNABLE, _oneShotInterceptorData != null,
+ message: "OneShotInterceptorData has not been prepared yet."));
+ return _oneShotInterceptorData;
+ }
BackendUsage get backendUsage => _backendUsage;
@@ -786,7 +799,10 @@ class JavaScriptBackend extends Target {
rti.computeClassesNeedingRti(
compiler.enqueuer.resolution.worldBuilder, closedWorld);
_registeredMetadata.clear();
- interceptorData.onResolutionComplete(closedWorld);
+ _interceptorData =
+ _interceptorDataBuilder.onResolutionComplete(closedWorld);
+ _oneShotInterceptorData =
+ new OneShotInterceptorData(interceptorData, helpers);
}
void onTypeInferenceComplete() {
@@ -2124,7 +2140,7 @@ class JavaScriptImpactTransformer extends ImpactTransformer {
}
for (Set<ClassElement> classes in impact.specializedGetInterceptors) {
- backend.interceptorData
+ backend.oneShotInterceptorData
.registerSpecializedGetInterceptor(classes, backend.namer);
}
@@ -2219,10 +2235,8 @@ class JavaScriptBackendClasses implements BackendClasses {
final ElementEnvironment _env;
final BackendHelpers helpers;
final NativeData _nativeData;
- final InterceptorData _interceptorData;
- JavaScriptBackendClasses(
- this._env, this.helpers, this._nativeData, this._interceptorData);
+ JavaScriptBackendClasses(this._env, this.helpers, this._nativeData);
ClassElement get intClass => helpers.jsIntClass;
ClassElement get uint32Class => helpers.jsUInt32Class;
@@ -2261,11 +2275,6 @@ class JavaScriptBackendClasses implements BackendClasses {
}
@override
- bool isInterceptorClass(ClassElement cls) {
- return _interceptorData.isInterceptorClass(cls);
- }
-
- @override
bool isNativeClass(ClassElement element) {
return _nativeData.isNative(element);
}
@@ -2313,7 +2322,8 @@ abstract class EnqueuerListenerBase implements EnqueuerListener {
CustomElementsAnalysis get customElementsAnalysis =>
_backend.customElementsAnalysis;
NativeData get nativeData => _backend.nativeData;
- InterceptorData get interceptorData => _backend.interceptorData;
+ InterceptorDataBuilder get interceptorData =>
+ _backend._interceptorDataBuilder;
RuntimeTypes get rti => _backend.rti;
TypeVariableHandler get typeVariableHandler => _backend.typeVariableHandler;
Resolution get resolution => _backend.resolution;
« no previous file with comments | « pkg/compiler/lib/src/common/backend_api.dart ('k') | pkg/compiler/lib/src/js_backend/interceptor_data.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698