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

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

Issue 1902753002: Serialize more native data. (Closed) Base URL: https://github.com/dart-lang/sdk.git@master
Patch Set: Created 4 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
Index: pkg/compiler/lib/src/js_backend/backend_serialization.dart
diff --git a/pkg/compiler/lib/src/js_backend/backend_serialization.dart b/pkg/compiler/lib/src/js_backend/backend_serialization.dart
index ddd5c507ed898e0f403fb7e56be11724f735fdf4..cc7cc03fe57f93667c901a1e6f25129e64c13dd4 100644
--- a/pkg/compiler/lib/src/js_backend/backend_serialization.dart
+++ b/pkg/compiler/lib/src/js_backend/backend_serialization.dart
@@ -35,6 +35,10 @@ class JavaScriptBackendSerialization implements BackendSerialization {
deserializer = new JavaScriptBackendDeserializer(backend);
}
+const Key JS_INTEROP_NAME = const Key('jsInteropName');
+const Key NATIVE_MEMBER_NAME = const Key('nativeMemberName');
+const Key NATIVE_CLASS_TAG_INFO = const Key('nativeClassTagInfo');
+
class JavaScriptBackendSerializer implements SerializerPlugin {
final JavaScriptBackend backend;
@@ -42,12 +46,22 @@ class JavaScriptBackendSerializer implements SerializerPlugin {
@override
void onElement(Element element, ObjectEncoder createEncoder(String tag)) {
- // TODO(johnniwinther): Add more data, e.g. js-interop names, native tags,
- // etc.
- String nativeName = backend.nativeData.nativeMemberName[element];
- if (nativeName != null) {
- ObjectEncoder encoder = createEncoder(_BACKEND_DATA_TAG);
- encoder.setString(Key.NAME, nativeName);
+ ObjectEncoder encoder;
+ ObjectEncoder getEncoder() {
+ return encoder ??= createEncoder(_BACKEND_DATA_TAG);
+ }
+
+ String jsInteropName = backend.nativeData.jsInteropNames[element];
+ if (jsInteropName != null) {
+ getEncoder().setString(JS_INTEROP_NAME, jsInteropName);
+ }
+ String nativeMemberName = backend.nativeData.nativeMemberName[element];
+ if (nativeMemberName != null) {
+ getEncoder().setString(NATIVE_MEMBER_NAME, nativeMemberName);
+ }
+ String nativeClassTagInfo = backend.nativeData.nativeClassTagInfo[element];
+ if (nativeClassTagInfo != null) {
+ getEncoder().setString(NATIVE_CLASS_TAG_INFO, nativeClassTagInfo);
}
}
@@ -96,8 +110,21 @@ class JavaScriptBackendDeserializer implements DeserializerPlugin {
void onElement(Element element, ObjectDecoder getDecoder(String tag)) {
ObjectDecoder decoder = getDecoder(_BACKEND_DATA_TAG);
if (decoder != null) {
- String nativeName = decoder.getString(Key.NAME);
- backend.nativeData.nativeMemberName[element] = nativeName;
+ String jsInteropName =
+ decoder.getString(JS_INTEROP_NAME, isOptional: true);
+ if (jsInteropName != null) {
+ backend.nativeData.jsInteropNames[element] = jsInteropName;
+ }
+ String nativeMemberName =
+ decoder.getString(NATIVE_MEMBER_NAME, isOptional: true);
+ if (nativeMemberName != null) {
+ backend.nativeData.nativeMemberName[element] = nativeMemberName;
+ }
+ String nativeClassTagInfo =
+ decoder.getString(NATIVE_CLASS_TAG_INFO, isOptional: true);
+ if (nativeClassTagInfo != null) {
+ backend.nativeData.nativeClassTagInfo[element] = nativeClassTagInfo;
+ }
}
}

Powered by Google App Engine
This is Rietveld 408576698