| OLD | NEW |
| 1 // Copyright (c) 2017, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2017, 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.kernel.frontend_strategy; | 5 library dart2js.kernel.frontend_strategy; |
| 6 | 6 |
| 7 import '../closure.dart'; | 7 import '../closure.dart'; |
| 8 import '../backend_strategy.dart'; | 8 import '../backend_strategy.dart'; |
| 9 import '../common.dart'; | 9 import '../common.dart'; |
| 10 import '../common_elements.dart'; | 10 import '../common_elements.dart'; |
| 11 import '../common/backend_api.dart'; | 11 import '../common/backend_api.dart'; |
| 12 import '../common/codegen.dart' show CodegenWorkItem; | 12 import '../common/codegen.dart' show CodegenRegistry, CodegenWorkItem; |
| 13 import '../common/resolution.dart'; | 13 import '../common/resolution.dart'; |
| 14 import '../common/tasks.dart'; | 14 import '../common/tasks.dart'; |
| 15 import '../common/work.dart'; | 15 import '../common/work.dart'; |
| 16 import '../elements/elements.dart'; | 16 import '../elements/elements.dart'; |
| 17 import '../elements/entities.dart'; | 17 import '../elements/entities.dart'; |
| 18 import '../elements/types.dart'; | 18 import '../elements/types.dart'; |
| 19 import '../environment.dart' as env; | 19 import '../environment.dart' as env; |
| 20 import '../enqueue.dart'; | 20 import '../enqueue.dart'; |
| 21 import '../frontend_strategy.dart'; | 21 import '../frontend_strategy.dart'; |
| 22 import '../js_backend/backend.dart'; | 22 import '../js_backend/backend.dart'; |
| (...skipping 201 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 224 void registerTypeLiteral(DartType type) {} | 224 void registerTypeLiteral(DartType type) {} |
| 225 } | 225 } |
| 226 | 226 |
| 227 /// Mock implementation of [MirrorsResolutionAnalysis]. | 227 /// Mock implementation of [MirrorsResolutionAnalysis]. |
| 228 class MirrorsResolutionAnalysisImpl implements MirrorsResolutionAnalysis { | 228 class MirrorsResolutionAnalysisImpl implements MirrorsResolutionAnalysis { |
| 229 @override | 229 @override |
| 230 void onQueueEmpty(Enqueuer enqueuer, Iterable<ClassEntity> recentClasses) {} | 230 void onQueueEmpty(Enqueuer enqueuer, Iterable<ClassEntity> recentClasses) {} |
| 231 | 231 |
| 232 @override | 232 @override |
| 233 MirrorsCodegenAnalysis close() { | 233 MirrorsCodegenAnalysis close() { |
| 234 throw new UnimplementedError('MirrorsResolutionAnalysisImpl.close'); | 234 // TODO(johnniwinther): Implement this. |
| 235 return new MirrorsCodegenAnalysisImpl(); |
| 235 } | 236 } |
| 236 | 237 |
| 237 @override | 238 @override |
| 238 void onResolutionComplete() {} | 239 void onResolutionComplete() {} |
| 239 } | 240 } |
| 240 | 241 |
| 241 /// Backend strategy that uses the kernel elements as the backend model. | 242 /// Backend strategy that uses the kernel elements as the backend model. |
| 242 // TODO(johnniwinther): Replace this with a strategy based on the J-element | 243 // TODO(johnniwinther): Replace this with a strategy based on the J-element |
| 243 // model. | 244 // model. |
| 244 class KernelBackendStrategy implements BackendStrategy { | 245 class KernelBackendStrategy implements BackendStrategy { |
| 245 @override | 246 @override |
| 246 ClosedWorldRefiner createClosedWorldRefiner(KernelClosedWorld closedWorld) { | 247 ClosedWorldRefiner createClosedWorldRefiner(KernelClosedWorld closedWorld) { |
| 247 return closedWorld; | 248 return closedWorld; |
| 248 } | 249 } |
| 249 | 250 |
| 250 @override | 251 @override |
| 251 Sorter get sorter => | 252 Sorter get sorter => |
| 252 throw new UnimplementedError('KernelBackendStrategy.sorter'); | 253 throw new UnimplementedError('KernelBackendStrategy.sorter'); |
| 253 | 254 |
| 254 @override | 255 @override |
| 255 void convertClosures(ClosedWorldRefiner closedWorldRefiner) { | 256 void convertClosures(ClosedWorldRefiner closedWorldRefiner) { |
| 256 // TODO(johnniwinther,efortuna): Compute closure classes for kernel based | 257 // TODO(johnniwinther,efortuna): Compute closure classes for kernel based |
| 257 // elements. | 258 // elements. |
| 258 throw new UnimplementedError('KernelBackendStrategy.createClosureClasses'); | |
| 259 } | 259 } |
| 260 | 260 |
| 261 @override | 261 @override |
| 262 WorkItemBuilder createCodegenWorkItemBuilder(ClosedWorld closedWorld) { | 262 WorkItemBuilder createCodegenWorkItemBuilder(ClosedWorld closedWorld) { |
| 263 return new KernelCodegenWorkItemBuilder(); | 263 return new KernelCodegenWorkItemBuilder(); |
| 264 } | 264 } |
| 265 | 265 |
| 266 @override | 266 @override |
| 267 CodegenWorldBuilder createCodegenWorldBuilder( | 267 CodegenWorldBuilder createCodegenWorldBuilder( |
| 268 NativeBasicData nativeBasicData, | 268 NativeBasicData nativeBasicData, |
| 269 ClosedWorld closedWorld, | 269 ClosedWorld closedWorld, |
| 270 SelectorConstraintsStrategy selectorConstraintsStrategy) { | 270 SelectorConstraintsStrategy selectorConstraintsStrategy) { |
| 271 return new KernelCodegenWorldBuilder( | 271 return new KernelCodegenWorldBuilder( |
| 272 null, nativeBasicData, closedWorld, selectorConstraintsStrategy); | 272 null, nativeBasicData, closedWorld, selectorConstraintsStrategy); |
| 273 } | 273 } |
| 274 } | 274 } |
| 275 | 275 |
| 276 class MirrorsCodegenAnalysisImpl implements MirrorsCodegenAnalysis { |
| 277 @override |
| 278 int get preMirrorsMethodCount { |
| 279 throw new UnimplementedError( |
| 280 'MirrorsCodegenAnalysisImpl.preMirrorsMethodCount'); |
| 281 } |
| 282 |
| 283 @override |
| 284 void onQueueEmpty(Enqueuer enqueuer, Iterable<ClassEntity> recentClasses) { |
| 285 throw new UnimplementedError('MirrorsCodegenAnalysisImpl.onQueueEmpty'); |
| 286 } |
| 287 } |
| 288 |
| 276 class KernelCodegenWorkItemBuilder implements WorkItemBuilder { | 289 class KernelCodegenWorkItemBuilder implements WorkItemBuilder { |
| 277 @override | 290 @override |
| 278 CodegenWorkItem createWorkItem(MemberEntity entity) { | 291 CodegenWorkItem createWorkItem(MemberEntity entity) { |
| 279 throw new UnimplementedError('KernelCodegenWorkItemBuilder.createWorkItem'); | 292 return new KernelCodegenWorkItem(entity); |
| 280 } | 293 } |
| 281 } | 294 } |
| 295 |
| 296 class KernelCodegenWorkItem extends CodegenWorkItem { |
| 297 final MemberEntity element; |
| 298 final CodegenRegistry registry; |
| 299 |
| 300 KernelCodegenWorkItem(this.element) : registry = new CodegenRegistry(element); |
| 301 |
| 302 @override |
| 303 WorldImpact run() { |
| 304 // TODO(johnniwinther): Build SSA graph from kernel and run codegen on it. |
| 305 return const WorldImpact(); |
| 306 } |
| 307 } |
| OLD | NEW |