OLD | NEW |
1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2012, 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 import '../common.dart'; | 5 import '../common.dart'; |
6 import '../common/codegen.dart' show CodegenRegistry, CodegenWorkItem; | 6 import '../common/codegen.dart' show CodegenRegistry, CodegenWorkItem; |
7 import '../common/tasks.dart' show CompilerTask; | 7 import '../common/tasks.dart' show CompilerTask; |
8 import '../compiler.dart' show Compiler; | 8 import '../compiler.dart' show Compiler; |
9 import '../constants/constant_system.dart'; | 9 import '../constants/constant_system.dart'; |
10 import '../constants/values.dart'; | 10 import '../constants/values.dart'; |
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
44 js.AsyncModifier asyncModifier = element.asyncMarker.isAsync | 44 js.AsyncModifier asyncModifier = element.asyncMarker.isAsync |
45 ? (element.asyncMarker.isYielding | 45 ? (element.asyncMarker.isYielding |
46 ? const js.AsyncModifier.asyncStar() | 46 ? const js.AsyncModifier.asyncStar() |
47 : const js.AsyncModifier.async()) | 47 : const js.AsyncModifier.async()) |
48 : (element.asyncMarker.isYielding | 48 : (element.asyncMarker.isYielding |
49 ? const js.AsyncModifier.syncStar() | 49 ? const js.AsyncModifier.syncStar() |
50 : const js.AsyncModifier.sync()); | 50 : const js.AsyncModifier.sync()); |
51 | 51 |
52 return new js.Fun(parameters, body, asyncModifier: asyncModifier) | 52 return new js.Fun(parameters, body, asyncModifier: asyncModifier) |
53 .withSourceInformation(sourceInformationFactory | 53 .withSourceInformation(sourceInformationFactory |
54 .createBuilderForContext(resolvedAst.element) | 54 .createBuilderForContext(resolvedAst) |
55 .buildDeclaration(resolvedAst)); | 55 .buildDeclaration(resolvedAst)); |
56 } | 56 } |
57 | 57 |
58 js.Expression generateCode(CodegenWorkItem work, HGraph graph) { | 58 js.Expression generateCode(CodegenWorkItem work, HGraph graph) { |
59 if (work.element.isField) { | 59 if (work.element.isField) { |
60 return generateLazyInitializer(work, graph); | 60 return generateLazyInitializer(work, graph); |
61 } else { | 61 } else { |
62 return generateMethod(work, graph); | 62 return generateMethod(work, graph); |
63 } | 63 } |
64 } | 64 } |
65 | 65 |
66 js.Expression generateLazyInitializer(CodegenWorkItem work, HGraph graph) { | 66 js.Expression generateLazyInitializer(CodegenWorkItem work, HGraph graph) { |
67 return measure(() { | 67 return measure(() { |
68 compiler.tracer.traceGraph("codegen", graph); | 68 compiler.tracer.traceGraph("codegen", graph); |
69 SourceInformation sourceInformation = sourceInformationFactory | 69 SourceInformation sourceInformation = sourceInformationFactory |
70 .createBuilderForContext(work.element) | 70 .createBuilderForContext(work.resolvedAst) |
71 .buildDeclaration(work.resolvedAst); | 71 .buildDeclaration(work.resolvedAst); |
72 SsaCodeGenerator codegen = new SsaCodeGenerator(backend, work); | 72 SsaCodeGenerator codegen = new SsaCodeGenerator(backend, work); |
73 codegen.visitGraph(graph); | 73 codegen.visitGraph(graph); |
74 return new js.Fun(codegen.parameters, codegen.body) | 74 return new js.Fun(codegen.parameters, codegen.body) |
75 .withSourceInformation(sourceInformation); | 75 .withSourceInformation(sourceInformation); |
76 }); | 76 }); |
77 } | 77 } |
78 | 78 |
79 js.Expression generateMethod(CodegenWorkItem work, HGraph graph) { | 79 js.Expression generateMethod(CodegenWorkItem work, HGraph graph) { |
80 return measure(() { | 80 return measure(() { |
(...skipping 2813 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2894 registry.registerStaticUse(new StaticUse.staticInvoke( | 2894 registry.registerStaticUse(new StaticUse.staticInvoke( |
2895 helper, new CallStructure.unnamed(argumentCount))); | 2895 helper, new CallStructure.unnamed(argumentCount))); |
2896 return backend.emitter.staticFunctionAccess(helper); | 2896 return backend.emitter.staticFunctionAccess(helper); |
2897 } | 2897 } |
2898 | 2898 |
2899 @override | 2899 @override |
2900 void visitRef(HRef node) { | 2900 void visitRef(HRef node) { |
2901 visit(node.value); | 2901 visit(node.value); |
2902 } | 2902 } |
2903 } | 2903 } |
OLD | NEW |