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

Side by Side Diff: pkg/fletchc/lib/src/debug_info_constructor_codegen.dart

Issue 1659163007: Rename fletch -> dartino (Closed) Base URL: https://github.com/dartino/sdk.git@master
Patch Set: address comments Created 4 years, 10 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
(Empty)
1 // Copyright (c) 2015, the Dartino 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.md file.
4
5 library fletchc.debug_info_constructor_codegen;
6
7 import 'package:compiler/src/elements/elements.dart';
8 import 'package:compiler/src/universe/selector.dart' show
9 Selector;
10 import 'package:compiler/src/tree/tree.dart';
11 import 'package:compiler/src/resolution/tree_elements.dart' show
12 TreeElements;
13
14 import 'package:compiler/src/dart_types.dart' show
15 DartType;
16
17 import 'package:compiler/src/diagnostics/spannable.dart' show
18 Spannable;
19
20 import 'bytecode_assembler.dart';
21 import 'closure_environment.dart';
22 import 'codegen_visitor.dart';
23
24 import 'fletch_function_builder.dart' show
25 FletchFunctionBuilder;
26
27 import 'fletch_class_builder.dart' show
28 FletchClassBuilder;
29
30 import 'fletch_registry.dart' show
31 FletchRegistry;
32
33 import 'debug_registry.dart' show
34 DebugRegistry;
35
36 import 'fletch_context.dart';
37 import 'constructor_codegen.dart';
38 import 'lazy_field_initializer_codegen.dart';
39 import 'debug_info_lazy_field_initializer_codegen.dart';
40 import 'debug_info.dart';
41
42 class DebugInfoConstructorCodegen extends ConstructorCodegen
43 with DebugRegistry {
44 final DebugInfo debugInfo;
45 final FletchCompilerImplementation compiler;
46
47 DebugInfoConstructorCodegen(this.debugInfo,
48 FletchFunctionBuilder functionBuilder,
49 FletchContext context,
50 TreeElements elements,
51 ClosureEnvironment closureEnvironment,
52 ConstructorElement constructor,
53 FletchClassBuilder classBuilder,
54 this.compiler)
55 : super(functionBuilder, context, elements, null,
56 closureEnvironment, constructor, classBuilder);
57
58 LazyFieldInitializerCodegen lazyFieldInitializerCodegenFor(
59 FletchFunctionBuilder function,
60 FieldElement field) {
61 TreeElements elements = field.resolvedAst.elements;
62 return new DebugInfoLazyFieldInitializerCodegen(
63 debugInfo,
64 function,
65 context,
66 elements,
67 context.backend.createClosureEnvironment(field, elements),
68 field,
69 compiler);
70 }
71
72 void recordDebugInfo(Node node) {
73 debugInfo.addLocation(compiler, assembler.byteSize, node);
74 }
75
76 void pushVariableDeclaration(LocalValue value) {
77 super.pushVariableDeclaration(value);
78 debugInfo.pushScope(assembler.byteSize, value);
79 }
80
81 void popVariableDeclaration(Element element) {
82 super.popVariableDeclaration(element);
83 debugInfo.popScope(assembler.byteSize);
84 }
85
86 void doFieldInitializerSet(Send node, FieldElement field) {
87 recordDebugInfo(node);
88 super.doFieldInitializerSet(node, field);
89 }
90
91 void handleAllocationAndBodyCall() {
92 // Clear out debug information after the initializer list. This avoids
93 // seeing the code that sets up for the body call as part of the last
94 // initializer evaluation.
95 recordDebugInfo(null);
96 super.handleAllocationAndBodyCall();
97 }
98
99 void callIsSelector(
100 Node node,
101 DartType type,
102 Spannable diagnosticLocation) {
103 recordDebugInfo(node);
104 super.callIsSelector(node, type, diagnosticLocation);
105 }
106
107 void invokeMethod(Node node, Selector selector) {
108 recordDebugInfo(node);
109 super.invokeMethod(node, selector);
110 }
111
112 void invokeGetter(Node node, Name name) {
113 recordDebugInfo(node);
114 super.invokeGetter(node, name);
115 }
116
117 void invokeSetter(Node node, Name name) {
118 recordDebugInfo(node);
119 super.invokeSetter(node, name);
120 }
121
122 void invokeFactory(Node node, int constId, int arity) {
123 recordDebugInfo(node);
124 super.invokeFactory(node, constId, arity);
125 }
126
127 void invokeStatic(Node node, int constId, int arity) {
128 recordDebugInfo(node);
129 super.invokeStatic(node, constId, arity);
130 }
131
132 void generateReturn(Node node) {
133 recordDebugInfo(node);
134 super.generateReturn(node);
135 }
136
137 void generateSwitchCaseMatch(CaseMatch caseMatch, BytecodeLabel ifTrue) {
138 // We do not want to break on the evaluation of the individual
139 // case equality tests.
140 recordDebugInfo(null);
141 super.generateSwitchCaseMatch(caseMatch, ifTrue);
142 }
143
144 void generateIdentical(Node node) {
145 recordDebugInfo(node);
146 super.generateIdentical(node);
147 }
148
149 void generateIdenticalNonNumeric(Node node) {
150 recordDebugInfo(node);
151 super.generateIdenticalNonNumeric(node);
152 }
153
154 void generateThrow(Node node) {
155 recordDebugInfo(node);
156 super.generateThrow(node);
157 }
158
159 void visitForValue(Node node) {
160 recordDebugInfo(node);
161 super.visitForValue(node);
162 }
163
164 void visitForEffect(Node node) {
165 recordDebugInfo(node);
166 super.visitForEffect(node);
167 }
168 }
OLDNEW
« no previous file with comments | « pkg/fletchc/lib/src/debug_info.dart ('k') | pkg/fletchc/lib/src/debug_info_function_codegen.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698