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

Side by Side Diff: pkg/compiler/lib/src/js_backend/codegen/codegen.dart

Issue 1148343004: Remove ConstantExpression.value (Closed) Base URL: https://github.com/dart-lang/sdk.git@master
Patch Set: Update comments. Created 5 years, 6 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 code_generator; 5 library code_generator;
6 6
7 import 'glue.dart'; 7 import 'glue.dart';
8 8
9 import '../../tree_ir/tree_ir_nodes.dart' as tree_ir; 9 import '../../tree_ir/tree_ir_nodes.dart' as tree_ir;
10 import '../../js/js.dart' as js; 10 import '../../js/js.dart' as js;
(...skipping 155 matching lines...) Expand 10 before | Expand all | Expand 10 after
166 } 166 }
167 167
168 @override 168 @override
169 js.Expression visitConcatenateStrings(tree_ir.ConcatenateStrings node) { 169 js.Expression visitConcatenateStrings(tree_ir.ConcatenateStrings node) {
170 js.Expression addStrings(js.Expression left, js.Expression right) { 170 js.Expression addStrings(js.Expression left, js.Expression right) {
171 return new js.Binary('+', left, right); 171 return new js.Binary('+', left, right);
172 } 172 }
173 173
174 js.Expression toString(tree_ir.Expression input) { 174 js.Expression toString(tree_ir.Expression input) {
175 bool useDirectly = input is tree_ir.Constant && 175 bool useDirectly = input is tree_ir.Constant &&
176 (input.expression.value.isString || 176 (input.value.isString ||
177 input.expression.value.isInt || 177 input.value.isInt ||
178 input.expression.value.isBool); 178 input.value.isBool);
179 js.Expression value = visitExpression(input); 179 js.Expression value = visitExpression(input);
180 if (useDirectly) { 180 if (useDirectly) {
181 return value; 181 return value;
182 } else { 182 } else {
183 Element convertToString = glue.getStringConversion(); 183 Element convertToString = glue.getStringConversion();
184 registry.registerStaticUse(convertToString); 184 registry.registerStaticUse(convertToString);
185 js.Expression access = glue.staticFunctionAccess(convertToString); 185 js.Expression access = glue.staticFunctionAccess(convertToString);
186 return (new js.Call(access, <js.Expression>[value])); 186 return (new js.Call(access, <js.Expression>[value]));
187 } 187 }
188 } 188 }
189 189
190 return node.arguments.map(toString).reduce(addStrings); 190 return node.arguments.map(toString).reduce(addStrings);
191 } 191 }
192 192
193 @override 193 @override
194 js.Expression visitConditional(tree_ir.Conditional node) { 194 js.Expression visitConditional(tree_ir.Conditional node) {
195 return new js.Conditional( 195 return new js.Conditional(
196 visitExpression(node.condition), 196 visitExpression(node.condition),
197 visitExpression(node.thenExpression), 197 visitExpression(node.thenExpression),
198 visitExpression(node.elseExpression)); 198 visitExpression(node.elseExpression));
199 } 199 }
200 200
201 js.Expression buildConstant(ConstantValue constant) { 201 js.Expression buildConstant(ConstantValue constant) {
202 registry.registerCompileTimeConstant(constant); 202 registry.registerCompileTimeConstant(constant);
203 return glue.constantReference(constant); 203 return glue.constantReference(constant);
204 } 204 }
205 205
206 @override 206 @override
207 js.Expression visitConstant(tree_ir.Constant node) { 207 js.Expression visitConstant(tree_ir.Constant node) {
208 return buildConstant(node.expression.value); 208 return buildConstant(node.value);
209 } 209 }
210 210
211 js.Expression compileConstant(ParameterElement parameter) { 211 js.Expression compileConstant(ParameterElement parameter) {
212 return buildConstant(glue.getConstantForVariable(parameter).value); 212 return buildConstant(glue.getConstantValueForVariable(parameter));
213 } 213 }
214 214
215 // TODO(karlklose): get rid of the selector argument. 215 // TODO(karlklose): get rid of the selector argument.
216 js.Expression buildStaticInvoke(Selector selector, 216 js.Expression buildStaticInvoke(Selector selector,
217 Element target, 217 Element target,
218 List<js.Expression> arguments, 218 List<js.Expression> arguments,
219 {SourceInformation sourceInformation}) { 219 {SourceInformation sourceInformation}) {
220 registry.registerStaticInvocation(target.declaration); 220 registry.registerStaticInvocation(target.declaration);
221 if (target == glue.getInterceptorMethod) { 221 if (target == glue.getInterceptorMethod) {
222 // This generates a call to the specialized interceptor function, which 222 // This generates a call to the specialized interceptor function, which
(...skipping 459 matching lines...) Expand 10 before | Expand all | Expand 10 after
682 node.arguments.map(visitExpression).toList(growable: false); 682 node.arguments.map(visitExpression).toList(growable: false);
683 return glue.generateTypeRepresentation(node.dartType, arguments); 683 return glue.generateTypeRepresentation(node.dartType, arguments);
684 } 684 }
685 685
686 visitFunctionExpression(tree_ir.FunctionExpression node) { 686 visitFunctionExpression(tree_ir.FunctionExpression node) {
687 // FunctionExpressions are currently unused. 687 // FunctionExpressions are currently unused.
688 // We might need them if we want to emit raw JS nested functions. 688 // We might need them if we want to emit raw JS nested functions.
689 throw 'FunctionExpressions should not be used'; 689 throw 'FunctionExpressions should not be used';
690 } 690 }
691 } 691 }
OLDNEW
« no previous file with comments | « pkg/compiler/lib/src/js_backend/backend.dart ('k') | pkg/compiler/lib/src/js_backend/codegen/glue.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698