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

Side by Side Diff: lib/compiler/implementation/ssa/nodes.dart

Issue 10495013: Recognize logical operations before code generation. (Closed) Base URL: http://dart.googlecode.com/svn/branches/bleeding_edge/dart/
Patch Set: Created 8 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 | Annotate | Revision Log
« no previous file with comments | « lib/compiler/implementation/ssa/codegen_helpers.dart ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2011, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2011, 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 interface HVisitor<R> { 5 interface HVisitor<R> {
6 R visitAdd(HAdd node); 6 R visitAdd(HAdd node);
7 R visitBitAnd(HBitAnd node); 7 R visitBitAnd(HBitAnd node);
8 R visitBitNot(HBitNot node); 8 R visitBitNot(HBitNot node);
9 R visitBitOr(HBitOr node); 9 R visitBitOr(HBitOr node);
10 R visitBitXor(HBitXor node); 10 R visitBitXor(HBitXor node);
(...skipping 908 matching lines...) Expand 10 before | Expand all | Expand 10 after
919 } 919 }
920 } 920 }
921 921
922 bool isConstant() => false; 922 bool isConstant() => false;
923 bool isConstantBoolean() => false; 923 bool isConstantBoolean() => false;
924 bool isConstantNull() => false; 924 bool isConstantNull() => false;
925 bool isConstantNumber() => false; 925 bool isConstantNumber() => false;
926 bool isConstantString() => false; 926 bool isConstantString() => false;
927 bool isConstantList() => false; 927 bool isConstantList() => false;
928 bool isConstantMap() => false; 928 bool isConstantMap() => false;
929 bool isConstantFalse() => false;
930 bool isConstantTrue() => false;
929 931
930 bool isValid() { 932 bool isValid() {
931 HValidator validator = new HValidator(); 933 HValidator validator = new HValidator();
932 validator.currentBlock = block; 934 validator.currentBlock = block;
933 validator.visitInstruction(this); 935 validator.visitInstruction(this);
934 return validator.isValid; 936 return validator.isValid;
935 } 937 }
936 938
937 /** 939 /**
938 * The code for computing a bailout environment, and the code 940 * The code for computing a bailout environment, and the code
(...skipping 795 matching lines...) Expand 10 before | Expand all | Expand 10 after
1734 1736
1735 HType get guaranteedType() => constantType; 1737 HType get guaranteedType() => constantType;
1736 1738
1737 bool isConstant() => true; 1739 bool isConstant() => true;
1738 bool isConstantBoolean() => constant.isBool(); 1740 bool isConstantBoolean() => constant.isBool();
1739 bool isConstantNull() => constant.isNull(); 1741 bool isConstantNull() => constant.isNull();
1740 bool isConstantNumber() => constant.isNum(); 1742 bool isConstantNumber() => constant.isNum();
1741 bool isConstantString() => constant.isString(); 1743 bool isConstantString() => constant.isString();
1742 bool isConstantList() => constant.isList(); 1744 bool isConstantList() => constant.isList();
1743 bool isConstantMap() => constant.isMap(); 1745 bool isConstantMap() => constant.isMap();
1746 bool isConstantFalse() => constant.isFalse();
1747 bool isConstantTrue() => constant.isTrue();
1744 1748
1745 // Maybe avoid this if the literal is big? 1749 // Maybe avoid this if the literal is big?
1746 bool isCodeMotionInvariant() => true; 1750 bool isCodeMotionInvariant() => true;
1747 } 1751 }
1748 1752
1749 class HNot extends HInstruction { 1753 class HNot extends HInstruction {
1750 HNot(HInstruction value) : super(<HInstruction>[value]); 1754 HNot(HInstruction value) : super(<HInstruction>[value]);
1751 void prepareGvn() { 1755 void prepareGvn() {
1752 assert(!hasSideEffects()); 1756 assert(!hasSideEffects());
1753 setUseGvn(); 1757 setUseGvn();
(...skipping 725 matching lines...) Expand 10 before | Expand all | Expand 10 after
2479 this.catchBlock, 2483 this.catchBlock,
2480 this.finallyBlock); 2484 this.finallyBlock);
2481 2485
2482 HBasicBlock get start() => body.start; 2486 HBasicBlock get start() => body.start;
2483 HBasicBlock get end() => 2487 HBasicBlock get end() =>
2484 finallyBlock === null ? catchBlock.end : finallyBlock.end; 2488 finallyBlock === null ? catchBlock.end : finallyBlock.end;
2485 2489
2486 bool accept(HStatementInformationVisitor visitor) => 2490 bool accept(HStatementInformationVisitor visitor) =>
2487 visitor.visitTryInfo(this); 2491 visitor.visitTryInfo(this);
2488 } 2492 }
OLDNEW
« no previous file with comments | « lib/compiler/implementation/ssa/codegen_helpers.dart ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698