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

Side by Side Diff: pkg/compiler/lib/src/js_emitter/type_test_registry.dart

Issue 2994333002: Various redemptions (Closed)
Patch Set: Fix + status updates 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) 2014, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2014, 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 dart2js.js_emitter.type_test_registry; 5 library dart2js.js_emitter.type_test_registry;
6 6
7 import '../common.dart'; 7 import '../common.dart';
8 import '../common_elements.dart'; 8 import '../common_elements.dart';
9 import '../elements/elements.dart' show MethodElement;
10 import '../elements/entities.dart'; 9 import '../elements/entities.dart';
11 import '../elements/types.dart' show DartType;
12 import '../elements/types.dart'; 10 import '../elements/types.dart';
13 import '../js_backend/runtime_types.dart' 11 import '../js_backend/runtime_types.dart'
14 show 12 show
15 RuntimeTypesChecks, 13 RuntimeTypesChecks,
16 RuntimeTypesChecksBuilder, 14 RuntimeTypesChecksBuilder,
17 RuntimeTypesSubstitutions, 15 RuntimeTypesSubstitutions,
18 TypeChecks; 16 TypeChecks;
19 import '../js_backend/mirrors_data.dart'; 17 import '../js_backend/mirrors_data.dart';
20 import '../universe/world_builder.dart'; 18 import '../universe/world_builder.dart';
21 import '../world.dart' show ClosedWorld; 19 import '../world.dart' show ClosedWorld;
(...skipping 139 matching lines...) Expand 10 before | Expand all | Expand 10 after
161 bool canBeReified(MemberEntity element) { 159 bool canBeReified(MemberEntity element) {
162 return (canTearOff(element) || 160 return (canTearOff(element) ||
163 mirrorsData.isMemberAccessibleByReflection(element)); 161 mirrorsData.isMemberAccessibleByReflection(element));
164 } 162 }
165 163
166 // Find all types referenced from the types of elements that can be 164 // Find all types referenced from the types of elements that can be
167 // reflected on 'as functions'. 165 // reflected on 'as functions'.
168 liveMembers.where((MemberEntity element) { 166 liveMembers.where((MemberEntity element) {
169 return canBeReflectedAsFunction(element) && canBeReified(element); 167 return canBeReflectedAsFunction(element) && canBeReified(element);
170 }).forEach((_function) { 168 }).forEach((_function) {
171 // TODO(redemption): Support entities. 169 FunctionEntity function = _function;
172 MethodElement function = _function; 170 FunctionType type = _elementEnvironment.getFunctionType(function);
173 FunctionType type = function.type;
174 for (ClassEntity cls in _rtiChecks.getReferencedClasses(type)) { 171 for (ClassEntity cls in _rtiChecks.getReferencedClasses(type)) {
175 while (cls != null) { 172 while (cls != null) {
176 _rtiNeededClasses.add(cls); 173 _rtiNeededClasses.add(cls);
177 cls = _elementEnvironment.getSuperClass(cls); 174 cls = _elementEnvironment.getSuperClass(cls);
178 } 175 }
179 } 176 }
180 }); 177 });
181 } 178 }
182 179
183 void computeRequiredTypeChecks(RuntimeTypesChecksBuilder rtiChecksBuilder) { 180 void computeRequiredTypeChecks(RuntimeTypesChecksBuilder rtiChecksBuilder) {
184 assert(checkedClasses == null && checkedFunctionTypes == null); 181 assert(checkedClasses == null && checkedFunctionTypes == null);
185 182
186 rtiChecksBuilder.registerImplicitChecks( 183 rtiChecksBuilder.registerImplicitChecks(
187 _codegenWorldBuilder, classesUsingTypeVariableTests); 184 _codegenWorldBuilder, classesUsingTypeVariableTests);
188 _rtiChecks = rtiChecksBuilder.computeRequiredChecks(_codegenWorldBuilder); 185 _rtiChecks = rtiChecksBuilder.computeRequiredChecks(_codegenWorldBuilder);
189 186
190 checkedClasses = new Set<ClassEntity>(); 187 checkedClasses = new Set<ClassEntity>();
191 checkedFunctionTypes = new Set<FunctionType>(); 188 checkedFunctionTypes = new Set<FunctionType>();
192 _codegenWorldBuilder.isChecks.forEach((DartType t) { 189 _codegenWorldBuilder.isChecks.forEach((DartType t) {
193 if (t is InterfaceType) { 190 if (t is InterfaceType) {
194 checkedClasses.add(t.element); 191 checkedClasses.add(t.element);
195 } else if (t is FunctionType) { 192 } else if (t is FunctionType) {
196 checkedFunctionTypes.add(t); 193 checkedFunctionTypes.add(t);
197 } 194 }
198 }); 195 });
199 } 196 }
200 } 197 }
OLDNEW
« no previous file with comments | « pkg/compiler/lib/src/js_emitter/program_builder/registry.dart ('k') | pkg/compiler/lib/src/js_model/closure.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698