OLD | NEW |
1 // Copyright (c) 2016, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2016, the Dart project authors. Please see the AUTHORS file |
2 // for details. All rights reserved. Use of this source code is governed by a | 2 // for details. All rights reserved. Use of this source code is governed by a |
3 // BSD-style license that can be found in the LICENSE file. | 3 // BSD-style license that can be found in the LICENSE file. |
4 | 4 |
5 library js_backend.serialization; | 5 library js_backend.serialization; |
6 | 6 |
7 import '../common/backend_api.dart' show BackendSerialization; | 7 import '../common/backend_api.dart' show BackendSerialization; |
8 import '../elements/elements.dart'; | 8 import '../elements/elements.dart'; |
9 import '../elements/resolution_types.dart'; | 9 import '../elements/resolution_types.dart'; |
10 import '../elements/types.dart'; | 10 import '../elements/types.dart'; |
11 import '../js/js.dart' as js; | 11 import '../js/js.dart' as js; |
12 import '../native/native.dart'; | 12 import '../native/native.dart'; |
| 13 import '../resolution/resolution_strategy.dart'; |
13 import '../serialization/keys.dart'; | 14 import '../serialization/keys.dart'; |
14 import '../serialization/serialization.dart' | 15 import '../serialization/serialization.dart' |
15 show DeserializerPlugin, ObjectDecoder, ObjectEncoder, SerializerPlugin; | 16 show DeserializerPlugin, ObjectDecoder, ObjectEncoder, SerializerPlugin; |
16 import '../universe/side_effects.dart'; | 17 import '../universe/side_effects.dart'; |
17 import 'js_backend.dart'; | 18 import 'js_backend.dart'; |
18 import 'native_data.dart'; | 19 import 'native_data.dart'; |
19 | 20 |
20 const String _BACKEND_DATA_TAG = 'jsBackendData'; | 21 const String _BACKEND_DATA_TAG = 'jsBackendData'; |
21 const Key DART_TYPES_RETURNED = const Key('dartTypesReturned'); | 22 const Key DART_TYPES_RETURNED = const Key('dartTypesReturned'); |
22 const Key THIS_TYPES_RETURNED = const Key('thisTypesReturned'); | 23 const Key THIS_TYPES_RETURNED = const Key('thisTypesReturned'); |
(...skipping 23 matching lines...) Expand all Loading... |
46 const Key NATIVE_CLASS_TAG_INFO = const Key('nativeClassTagInfo'); | 47 const Key NATIVE_CLASS_TAG_INFO = const Key('nativeClassTagInfo'); |
47 const Key NATIVE_METHOD_BEHAVIOR = const Key('nativeMethodBehavior'); | 48 const Key NATIVE_METHOD_BEHAVIOR = const Key('nativeMethodBehavior'); |
48 const Key NATIVE_FIELD_LOAD_BEHAVIOR = const Key('nativeFieldLoadBehavior'); | 49 const Key NATIVE_FIELD_LOAD_BEHAVIOR = const Key('nativeFieldLoadBehavior'); |
49 const Key NATIVE_FIELD_STORE_BEHAVIOR = const Key('nativeFieldStoreBehavior'); | 50 const Key NATIVE_FIELD_STORE_BEHAVIOR = const Key('nativeFieldStoreBehavior'); |
50 | 51 |
51 class JavaScriptBackendSerializer implements SerializerPlugin { | 52 class JavaScriptBackendSerializer implements SerializerPlugin { |
52 final JavaScriptBackend _backend; | 53 final JavaScriptBackend _backend; |
53 | 54 |
54 JavaScriptBackendSerializer(this._backend); | 55 JavaScriptBackendSerializer(this._backend); |
55 | 56 |
56 NativeBasicDataImpl get nativeBasicData => _backend.nativeBasicData; | 57 NativeBasicDataImpl get nativeBasicData => |
| 58 _backend.compiler.frontendStrategy.nativeBasicData; |
57 NativeDataBuilderImpl get nativeData => _backend.nativeDataBuilder; | 59 NativeDataBuilderImpl get nativeData => _backend.nativeDataBuilder; |
58 | 60 |
59 @override | 61 @override |
60 void onElement(Element element, ObjectEncoder createEncoder(String tag)) { | 62 void onElement(Element element, ObjectEncoder createEncoder(String tag)) { |
61 ObjectEncoder encoder; | 63 ObjectEncoder encoder; |
62 ObjectEncoder getEncoder() { | 64 ObjectEncoder getEncoder() { |
63 return encoder ??= createEncoder(_BACKEND_DATA_TAG); | 65 return encoder ??= createEncoder(_BACKEND_DATA_TAG); |
64 } | 66 } |
65 | 67 |
66 String jsInteropLibraryName = nativeData.jsInteropLibraryNames[element]; | 68 String jsInteropLibraryName = nativeData.jsInteropLibraryNames[element]; |
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
110 void onData(covariant NativeBehavior behavior, ObjectEncoder encoder) { | 112 void onData(covariant NativeBehavior behavior, ObjectEncoder encoder) { |
111 NativeBehaviorSerialization.serializeNativeBehavior(behavior, encoder); | 113 NativeBehaviorSerialization.serializeNativeBehavior(behavior, encoder); |
112 } | 114 } |
113 } | 115 } |
114 | 116 |
115 class JavaScriptBackendDeserializer implements DeserializerPlugin { | 117 class JavaScriptBackendDeserializer implements DeserializerPlugin { |
116 final JavaScriptBackend _backend; | 118 final JavaScriptBackend _backend; |
117 | 119 |
118 JavaScriptBackendDeserializer(this._backend); | 120 JavaScriptBackendDeserializer(this._backend); |
119 | 121 |
120 NativeBasicDataBuilderImpl get nativeBasicData => | 122 NativeBasicDataBuilderImpl get nativeBasicData { |
121 _backend.nativeBasicDataBuilder; | 123 ResolutionFrontEndStrategy frontendStrategy = |
| 124 _backend.compiler.frontendStrategy; |
| 125 return frontendStrategy.nativeBasicDataBuilder; |
| 126 } |
| 127 |
122 NativeDataBuilderImpl get nativeData => _backend.nativeDataBuilder; | 128 NativeDataBuilderImpl get nativeData => _backend.nativeDataBuilder; |
123 | 129 |
124 @override | 130 @override |
125 void onElement(Element element, ObjectDecoder getDecoder(String tag)) { | 131 void onElement(Element element, ObjectDecoder getDecoder(String tag)) { |
126 ObjectDecoder decoder = getDecoder(_BACKEND_DATA_TAG); | 132 ObjectDecoder decoder = getDecoder(_BACKEND_DATA_TAG); |
127 if (decoder != null) { | 133 if (decoder != null) { |
128 if (element is LibraryElement) { | 134 if (element is LibraryElement) { |
129 String jsInteropLibraryName = | 135 String jsInteropLibraryName = |
130 decoder.getString(JS_INTEROP_LIBRARY_NAME, isOptional: true); | 136 decoder.getString(JS_INTEROP_LIBRARY_NAME, isOptional: true); |
131 if (jsInteropLibraryName != null) { | 137 if (jsInteropLibraryName != null) { |
(...skipping 156 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
288 behavior.codeTemplate = js.js.parseForeignJS(behavior.codeTemplateText); | 294 behavior.codeTemplate = js.js.parseForeignJS(behavior.codeTemplateText); |
289 } | 295 } |
290 | 296 |
291 behavior.throwBehavior = | 297 behavior.throwBehavior = |
292 decoder.getEnum(THROW_BEHAVIOR, NativeThrowBehavior.values); | 298 decoder.getEnum(THROW_BEHAVIOR, NativeThrowBehavior.values); |
293 behavior.isAllocation = decoder.getBool(IS_ALLOCATION); | 299 behavior.isAllocation = decoder.getBool(IS_ALLOCATION); |
294 behavior.useGvn = decoder.getBool(USE_GVN); | 300 behavior.useGvn = decoder.getBool(USE_GVN); |
295 return behavior; | 301 return behavior; |
296 } | 302 } |
297 } | 303 } |
OLD | NEW |