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

Side by Side Diff: sdk/lib/_internal/compiler/implementation/ssa/codegen.dart

Issue 614993002: Rename Constant to ConstantValue and ConstExp to ConstantExpression. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Updated cf. comments. Created 6 years, 2 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 | Annotate | Revision Log
OLDNEW
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 part of ssa; 5 part of ssa;
6 6
7 class SsaCodeGeneratorTask extends CompilerTask { 7 class SsaCodeGeneratorTask extends CompilerTask {
8 8
9 final JavaScriptBackend backend; 9 final JavaScriptBackend backend;
10 10
(...skipping 1243 matching lines...) Expand 10 before | Expand all | Expand 10 after
1254 void emitIdentityComparison(HIdentity instruction, bool inverse) { 1254 void emitIdentityComparison(HIdentity instruction, bool inverse) {
1255 String op = instruction.singleComparisonOp; 1255 String op = instruction.singleComparisonOp;
1256 HInstruction left = instruction.left; 1256 HInstruction left = instruction.left;
1257 HInstruction right = instruction.right; 1257 HInstruction right = instruction.right;
1258 if (op != null) { 1258 if (op != null) {
1259 use(left); 1259 use(left);
1260 js.Expression jsLeft = pop(); 1260 js.Expression jsLeft = pop();
1261 use(right); 1261 use(right);
1262 push(new js.Binary(mapRelationalOperator(op, inverse), jsLeft, pop())); 1262 push(new js.Binary(mapRelationalOperator(op, inverse), jsLeft, pop()));
1263 } else { 1263 } else {
1264 assert(NullConstant.JsNull == 'null'); 1264 assert(NullConstantValue.JsNull == 'null');
1265 use(left); 1265 use(left);
1266 js.Binary leftEqualsNull = 1266 js.Binary leftEqualsNull =
1267 new js.Binary("==", pop(), new js.LiteralNull()); 1267 new js.Binary("==", pop(), new js.LiteralNull());
1268 use(right); 1268 use(right);
1269 js.Binary rightEqualsNull = 1269 js.Binary rightEqualsNull =
1270 new js.Binary(mapRelationalOperator("==", inverse), 1270 new js.Binary(mapRelationalOperator("==", inverse),
1271 pop(), new js.LiteralNull()); 1271 pop(), new js.LiteralNull());
1272 use(right); 1272 use(right);
1273 use(left); 1273 use(left);
1274 js.Binary tripleEq = new js.Binary(mapRelationalOperator("===", inverse), 1274 js.Binary tripleEq = new js.Binary(mapRelationalOperator("===", inverse),
(...skipping 521 matching lines...) Expand 10 before | Expand all | Expand 10 after
1796 1796
1797 js.Expression newLiteralBool(bool value) { 1797 js.Expression newLiteralBool(bool value) {
1798 if (compiler.enableMinification) { 1798 if (compiler.enableMinification) {
1799 // Use !0 for true, !1 for false. 1799 // Use !0 for true, !1 for false.
1800 return new js.Prefix("!", new js.LiteralNumber(value ? "0" : "1")); 1800 return new js.Prefix("!", new js.LiteralNumber(value ? "0" : "1"));
1801 } else { 1801 } else {
1802 return new js.LiteralBool(value); 1802 return new js.LiteralBool(value);
1803 } 1803 }
1804 } 1804 }
1805 1805
1806 void generateConstant(Constant constant) { 1806 void generateConstant(ConstantValue constant) {
1807 if (constant.isFunction) { 1807 if (constant.isFunction) {
1808 FunctionConstant function = constant; 1808 FunctionConstantValue function = constant;
1809 registry.registerStaticUse(function.element); 1809 registry.registerStaticUse(function.element);
1810 } 1810 }
1811 if (constant.isType) { 1811 if (constant.isType) {
1812 // If the type is a web component, we need to ensure the constructors are 1812 // If the type is a web component, we need to ensure the constructors are
1813 // available to 'upgrade' the native object. 1813 // available to 'upgrade' the native object.
1814 TypeConstant type = constant; 1814 TypeConstantValue type = constant;
1815 Element element = type.representedType.element; 1815 Element element = type.representedType.element;
1816 if (element != null && element.isClass) { 1816 if (element != null && element.isClass) {
1817 registry.registerTypeConstant(element); 1817 registry.registerTypeConstant(element);
1818 } 1818 }
1819 } 1819 }
1820 push(backend.emitter.constantReference(constant)); 1820 push(backend.emitter.constantReference(constant));
1821 } 1821 }
1822 1822
1823 visitConstant(HConstant node) { 1823 visitConstant(HConstant node) {
1824 assert(isGenerateAtUseSite(node)); 1824 assert(isGenerateAtUseSite(node));
(...skipping 356 matching lines...) Expand 10 before | Expand all | Expand 10 after
2181 2181
2182 void checkDouble(HInstruction input, String cmp) => checkNum(input, cmp); 2182 void checkDouble(HInstruction input, String cmp) => checkNum(input, cmp);
2183 2183
2184 void checkString(HInstruction input, String cmp) 2184 void checkString(HInstruction input, String cmp)
2185 => checkTypeOf(input, cmp, 'string'); 2185 => checkTypeOf(input, cmp, 'string');
2186 2186
2187 void checkBool(HInstruction input, String cmp) 2187 void checkBool(HInstruction input, String cmp)
2188 => checkTypeOf(input, cmp, 'boolean'); 2188 => checkTypeOf(input, cmp, 'boolean');
2189 2189
2190 void checkObject(HInstruction input, String cmp) { 2190 void checkObject(HInstruction input, String cmp) {
2191 assert(NullConstant.JsNull == 'null'); 2191 assert(NullConstantValue.JsNull == 'null');
2192 if (cmp == "===") { 2192 if (cmp == "===") {
2193 checkTypeOf(input, '===', 'object'); 2193 checkTypeOf(input, '===', 'object');
2194 js.Expression left = pop(); 2194 js.Expression left = pop();
2195 use(input); 2195 use(input);
2196 js.Expression notNull = new js.Binary("!==", pop(), new js.LiteralNull()); 2196 js.Expression notNull = new js.Binary("!==", pop(), new js.LiteralNull());
2197 push(new js.Binary("&&", left, notNull)); 2197 push(new js.Binary("&&", left, notNull));
2198 } else { 2198 } else {
2199 assert(cmp == "!=="); 2199 assert(cmp == "!==");
2200 checkTypeOf(input, '!==', 'object'); 2200 checkTypeOf(input, '!==', 'object');
2201 js.Expression left = pop(); 2201 js.Expression left = pop();
(...skipping 511 matching lines...) Expand 10 before | Expand all | Expand 10 after
2713 js.PropertyAccess accessHelper(String name) { 2713 js.PropertyAccess accessHelper(String name) {
2714 Element helper = backend.findHelper(name); 2714 Element helper = backend.findHelper(name);
2715 if (helper == null) { 2715 if (helper == null) {
2716 // For mocked-up tests. 2716 // For mocked-up tests.
2717 return js.js('(void 0).$name'); 2717 return js.js('(void 0).$name');
2718 } 2718 }
2719 registry.registerStaticUse(helper); 2719 registry.registerStaticUse(helper);
2720 return backend.namer.elementAccess(helper); 2720 return backend.namer.elementAccess(helper);
2721 } 2721 }
2722 } 2722 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698