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

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

Issue 237583014: JS templates (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: cleanup Created 6 years, 8 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 abstract class HVisitor<R> { 7 abstract class HVisitor<R> {
8 R visitAdd(HAdd node); 8 R visitAdd(HAdd node);
9 R visitBitAnd(HBitAnd node); 9 R visitBitAnd(HBitAnd node);
10 R visitBitNot(HBitNot node); 10 R visitBitNot(HBitNot node);
(...skipping 1622 matching lines...) Expand 10 before | Expand all | Expand 10 after
1633 const TypeMask.nonNullEmpty()); 1633 const TypeMask.nonNullEmpty());
1634 1634
1635 accept(HVisitor visitor) => visitor.visitLocalSet(this); 1635 accept(HVisitor visitor) => visitor.visitLocalSet(this);
1636 1636
1637 HLocalValue get local => inputs[0]; 1637 HLocalValue get local => inputs[0];
1638 HInstruction get value => inputs[1]; 1638 HInstruction get value => inputs[1];
1639 bool isJsStatement() => true; 1639 bool isJsStatement() => true;
1640 } 1640 }
1641 1641
1642 class HForeign extends HInstruction { 1642 class HForeign extends HInstruction {
1643 final js.Node codeAst; 1643 final js.Template codeTemplate;
1644 final bool isStatement; 1644 final bool isStatement;
1645 final bool _canThrow; 1645 final bool _canThrow;
1646 final native.NativeBehavior nativeBehavior; 1646 final native.NativeBehavior nativeBehavior;
1647 1647
1648 HForeign(this.codeAst, 1648 HForeign(this.codeTemplate,
1649 TypeMask type, 1649 TypeMask type,
1650 List<HInstruction> inputs, 1650 List<HInstruction> inputs,
1651 {this.isStatement: false, 1651 {this.isStatement: false,
1652 SideEffects effects, 1652 SideEffects effects,
1653 native.NativeBehavior nativeBehavior, 1653 native.NativeBehavior nativeBehavior,
1654 canThrow: false}) 1654 canThrow: false})
1655 : this.nativeBehavior = nativeBehavior, 1655 : this.nativeBehavior = nativeBehavior,
1656 this._canThrow = canThrow, 1656 this._canThrow = canThrow,
1657 super(inputs, type) { 1657 super(inputs, type) {
1658 if (effects == null && nativeBehavior != null) { 1658 if (effects == null && nativeBehavior != null) {
1659 effects = nativeBehavior.sideEffects; 1659 effects = nativeBehavior.sideEffects;
1660 } 1660 }
1661 if (effects != null) sideEffects.add(effects); 1661 if (effects != null) sideEffects.add(effects);
1662 } 1662 }
1663 1663
1664 HForeign.statement(codeAst, List<HInstruction> inputs, 1664 HForeign.statement(codeTemplate, List<HInstruction> inputs,
1665 SideEffects effects, 1665 SideEffects effects,
1666 native.NativeBehavior nativeBehavior, 1666 native.NativeBehavior nativeBehavior,
1667 TypeMask type) 1667 TypeMask type)
1668 : this(codeAst, type, inputs, isStatement: true, 1668 : this(codeTemplate, type, inputs, isStatement: true,
1669 effects: effects, nativeBehavior: nativeBehavior); 1669 effects: effects, nativeBehavior: nativeBehavior);
1670 1670
1671 accept(HVisitor visitor) => visitor.visitForeign(this); 1671 accept(HVisitor visitor) => visitor.visitForeign(this);
1672 1672
1673 bool isJsStatement() => isStatement; 1673 bool isJsStatement() => isStatement;
1674 bool canThrow() { 1674 bool canThrow() {
1675 return _canThrow 1675 return _canThrow
1676 || sideEffects.hasSideEffects() 1676 || sideEffects.hasSideEffects()
1677 || sideEffects.dependsOnSomething(); 1677 || sideEffects.dependsOnSomething();
1678 } 1678 }
(...skipping 1346 matching lines...) Expand 10 before | Expand all | Expand 10 after
3025 class HDynamicType extends HRuntimeType { 3025 class HDynamicType extends HRuntimeType {
3026 HDynamicType(DynamicType dartType, TypeMask instructionType) 3026 HDynamicType(DynamicType dartType, TypeMask instructionType)
3027 : super(const <HInstruction>[], dartType, instructionType); 3027 : super(const <HInstruction>[], dartType, instructionType);
3028 3028
3029 accept(HVisitor visitor) => visitor.visitDynamicType(this); 3029 accept(HVisitor visitor) => visitor.visitDynamicType(this);
3030 3030
3031 int typeCode() => HInstruction.DYNAMIC_TYPE_TYPECODE; 3031 int typeCode() => HInstruction.DYNAMIC_TYPE_TYPECODE;
3032 3032
3033 bool typeEquals(HInstruction other) => other is HDynamicType; 3033 bool typeEquals(HInstruction other) => other is HDynamicType;
3034 } 3034 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698