OLD | NEW |
---|---|
(Empty) | |
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 | |
3 // BSD-style license that can be found in the LICENSE file. | |
4 import '../elements/elements.dart'; | |
5 import '../io/source_information.dart'; | |
6 import '../js_backend/backend.dart' show JavaScriptBackend; | |
7 import '../js_backend/element_strategy.dart' show ElementCodegenWorkItem; | |
8 import '../kernel/kernel.dart'; | |
9 import '../world.dart'; | |
10 import 'builder.dart'; | |
11 import 'kernel_ast_adapter.dart'; | |
12 import 'nodes.dart'; | |
13 import 'builder_kernel.dart'; | |
14 | |
15 /// Task for building SSA kernel IR generated from rasta. | |
16 class RastaSsaBuilderTask extends SsaAstBuilderBase { | |
17 final SourceInformationStrategy sourceInformationFactory; | |
18 | |
19 String get name => 'SSA kernel builder'; | |
20 | |
21 RastaSsaBuilderTask(JavaScriptBackend backend, this.sourceInformationFactory) | |
22 : super(backend); | |
23 | |
24 HGraph build(ElementCodegenWorkItem work, ClosedWorld closedWorld) { | |
25 return measure(() { | |
26 if (handleConstantField(work)) { | |
27 // No code is generated for `work.element`. | |
28 return null; | |
29 } | |
30 MemberElement element = work.element.implementation; | |
31 ResolvedAst resolvedAst = work.resolvedAst; | |
32 Kernel kernel = backend.kernelTask.kernel; | |
33 KernelAstAdapter astAdapter = new KernelAstAdapter(kernel, backend, | |
34 work.resolvedAst, kernel.nodeToAst, kernel.nodeToElement); | |
35 KernelSsaBuilder builder = new KernelSsaBuilder( | |
36 element, | |
37 //work.resolvedAst, | |
Siggi Cherem (dart-lang)
2017/05/23 21:23:31
delete
Johnni Winther
2017/05/24 08:07:09
Done.
| |
38 backend.compiler, | |
39 astAdapter, | |
40 closedWorld, | |
41 work.registry, | |
42 sourceInformationFactory.createBuilderForContext(resolvedAst), | |
43 resolvedAst.kind == ResolvedAstKind.PARSED ? resolvedAst.node : null); | |
44 HGraph graph = builder.build(); | |
45 | |
46 if (backend.tracer.isEnabled) { | |
47 String name; | |
48 if (element.isClassMember) { | |
49 String className = element.enclosingClass.name; | |
50 String memberName = element.name; | |
51 name = "$className.$memberName"; | |
52 if (element.isGenerativeConstructorBody) { | |
53 name = "$name (body)"; | |
54 } | |
55 } else { | |
56 name = "${element.name}"; | |
57 } | |
58 backend.tracer.traceCompilation(name); | |
59 backend.tracer.traceGraph('builder', graph); | |
60 } | |
61 | |
62 return graph; | |
63 }); | |
64 } | |
65 } | |
OLD | NEW |