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

Side by Side Diff: pkg/compiler/lib/src/js_backend/backend_serialization.dart

Issue 2998543002: Handle js interop members in impact computation. (Closed)
Patch Set: Created 3 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 unified diff | Download patch
OLDNEW
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';
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after
58 _backend.compiler.frontendStrategy.nativeBasicData; 58 _backend.compiler.frontendStrategy.nativeBasicData;
59 NativeDataBuilderImpl get nativeData => _backend.nativeDataBuilder; 59 NativeDataBuilderImpl get nativeData => _backend.nativeDataBuilder;
60 60
61 @override 61 @override
62 void onElement(Element element, ObjectEncoder createEncoder(String tag)) { 62 void onElement(Element element, ObjectEncoder createEncoder(String tag)) {
63 ObjectEncoder encoder; 63 ObjectEncoder encoder;
64 ObjectEncoder getEncoder() { 64 ObjectEncoder getEncoder() {
65 return encoder ??= createEncoder(_BACKEND_DATA_TAG); 65 return encoder ??= createEncoder(_BACKEND_DATA_TAG);
66 } 66 }
67 67
68 String jsInteropLibraryName = nativeData.jsInteropLibraryNames[element]; 68 String jsInteropLibraryName = nativeData.jsInteropLibraries[element];
69 if (jsInteropLibraryName != null) { 69 if (jsInteropLibraryName != null) {
70 getEncoder().setString(JS_INTEROP_LIBRARY_NAME, jsInteropLibraryName); 70 getEncoder().setString(JS_INTEROP_LIBRARY_NAME, jsInteropLibraryName);
71 } 71 }
72 String jsInteropClassName = nativeData.jsInteropClassNames[element]; 72 String jsInteropClassName = nativeData.jsInteropClasses[element];
73 if (jsInteropClassName != null) { 73 if (jsInteropClassName != null) {
74 getEncoder().setString(JS_INTEROP_CLASS_NAME, jsInteropClassName); 74 getEncoder().setString(JS_INTEROP_CLASS_NAME, jsInteropClassName);
75 } 75 }
76 String jsInteropMemberName = nativeData.jsInteropMemberNames[element]; 76 String jsInteropMemberName = nativeData.jsInteropMembers[element];
77 if (jsInteropMemberName != null) { 77 if (jsInteropMemberName != null) {
78 getEncoder().setString(JS_INTEROP_MEMBER_NAME, jsInteropMemberName); 78 getEncoder().setString(JS_INTEROP_MEMBER_NAME, jsInteropMemberName);
79 } 79 }
80 String nativeMemberName = nativeData.nativeMemberName[element]; 80 String nativeMemberName = nativeData.nativeMemberName[element];
81 if (nativeMemberName != null) { 81 if (nativeMemberName != null) {
82 getEncoder().setString(NATIVE_MEMBER_NAME, nativeMemberName); 82 getEncoder().setString(NATIVE_MEMBER_NAME, nativeMemberName);
83 } 83 }
84 NativeClassTag nativeClassTagInfo = 84 NativeClassTag nativeClassTagInfo =
85 nativeBasicData.nativeClassTagInfo[element]; 85 nativeBasicData.nativeClassTagInfo[element];
86 if (nativeClassTagInfo != null) { 86 if (nativeClassTagInfo != null) {
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after
128 NativeDataBuilderImpl get nativeData => _backend.nativeDataBuilder; 128 NativeDataBuilderImpl get nativeData => _backend.nativeDataBuilder;
129 129
130 @override 130 @override
131 void onElement(Element element, ObjectDecoder getDecoder(String tag)) { 131 void onElement(Element element, ObjectDecoder getDecoder(String tag)) {
132 ObjectDecoder decoder = getDecoder(_BACKEND_DATA_TAG); 132 ObjectDecoder decoder = getDecoder(_BACKEND_DATA_TAG);
133 if (decoder != null) { 133 if (decoder != null) {
134 if (element is LibraryElement) { 134 if (element is LibraryElement) {
135 String jsInteropLibraryName = 135 String jsInteropLibraryName =
136 decoder.getString(JS_INTEROP_LIBRARY_NAME, isOptional: true); 136 decoder.getString(JS_INTEROP_LIBRARY_NAME, isOptional: true);
137 if (jsInteropLibraryName != null) { 137 if (jsInteropLibraryName != null) {
138 nativeData.jsInteropLibraryNames[element] = jsInteropLibraryName; 138 nativeData.jsInteropLibraries[element] = jsInteropLibraryName;
139 } 139 }
140 } else if (element is ClassElement) { 140 } else if (element is ClassElement) {
141 String jsInteropClassName = 141 String jsInteropClassName =
142 decoder.getString(JS_INTEROP_CLASS_NAME, isOptional: true); 142 decoder.getString(JS_INTEROP_CLASS_NAME, isOptional: true);
143 if (jsInteropClassName != null) { 143 if (jsInteropClassName != null) {
144 nativeData.jsInteropClassNames[element] = jsInteropClassName; 144 nativeData.jsInteropClasses[element] = jsInteropClassName;
145 } 145 }
146 String nativeClassTagInfo = 146 String nativeClassTagInfo =
147 decoder.getString(NATIVE_CLASS_TAG_INFO, isOptional: true); 147 decoder.getString(NATIVE_CLASS_TAG_INFO, isOptional: true);
148 if (nativeClassTagInfo != null) { 148 if (nativeClassTagInfo != null) {
149 nativeBasicData.nativeClassTagInfo[element] = 149 nativeBasicData.nativeClassTagInfo[element] =
150 new NativeClassTag(nativeClassTagInfo); 150 new NativeClassTag(nativeClassTagInfo);
151 } 151 }
152 } else if (element is MemberElement) { 152 } else if (element is MemberElement) {
153 String jsInteropMemberName = 153 String jsInteropMemberName =
154 decoder.getString(JS_INTEROP_MEMBER_NAME, isOptional: true); 154 decoder.getString(JS_INTEROP_MEMBER_NAME, isOptional: true);
155 if (jsInteropMemberName != null) { 155 if (jsInteropMemberName != null) {
156 nativeData.jsInteropMemberNames[element] = jsInteropMemberName; 156 nativeData.jsInteropMembers[element] = jsInteropMemberName;
157 } 157 }
158 String nativeMemberName = 158 String nativeMemberName =
159 decoder.getString(NATIVE_MEMBER_NAME, isOptional: true); 159 decoder.getString(NATIVE_MEMBER_NAME, isOptional: true);
160 if (nativeMemberName != null) { 160 if (nativeMemberName != null) {
161 nativeData.nativeMemberName[element] = nativeMemberName; 161 nativeData.nativeMemberName[element] = nativeMemberName;
162 } 162 }
163 163
164 if (element is MethodElement) { 164 if (element is MethodElement) {
165 ObjectDecoder nativeMethodBehavior = 165 ObjectDecoder nativeMethodBehavior =
166 decoder.getObject(NATIVE_METHOD_BEHAVIOR, isOptional: true); 166 decoder.getObject(NATIVE_METHOD_BEHAVIOR, isOptional: true);
(...skipping 127 matching lines...) Expand 10 before | Expand all | Expand 10 after
294 behavior.codeTemplate = js.js.parseForeignJS(behavior.codeTemplateText); 294 behavior.codeTemplate = js.js.parseForeignJS(behavior.codeTemplateText);
295 } 295 }
296 296
297 behavior.throwBehavior = 297 behavior.throwBehavior =
298 decoder.getEnum(THROW_BEHAVIOR, NativeThrowBehavior.values); 298 decoder.getEnum(THROW_BEHAVIOR, NativeThrowBehavior.values);
299 behavior.isAllocation = decoder.getBool(IS_ALLOCATION); 299 behavior.isAllocation = decoder.getBool(IS_ALLOCATION);
300 behavior.useGvn = decoder.getBool(USE_GVN); 300 behavior.useGvn = decoder.getBool(USE_GVN);
301 return behavior; 301 return behavior;
302 } 302 }
303 } 303 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698