comparison graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/FixedGuardNode.java @ 7660:0b646334c5f7

keep track of leafGraphIds only at the StructuredGraph level (see GRAAL-60)
author Lukas Stadler <lukas.stadler@jku.at>
date Fri, 01 Feb 2013 17:32:59 +0100
parents 3a2f8b313bc5
children 4a6646d8eb87
comparison
equal deleted inserted replaced
7656:01aeaf194641 7660:0b646334c5f7
33 33
34 @Input private BooleanNode condition; 34 @Input private BooleanNode condition;
35 private final DeoptimizationReason reason; 35 private final DeoptimizationReason reason;
36 private final DeoptimizationAction action; 36 private final DeoptimizationAction action;
37 private boolean negated; 37 private boolean negated;
38 private final long leafGraphId;
39 38
40 public BooleanNode condition() { 39 public BooleanNode condition() {
41 return condition; 40 return condition;
42 } 41 }
43 42
44 public void setCondition(BooleanNode x) { 43 public void setCondition(BooleanNode x) {
45 updateUsages(condition, x); 44 updateUsages(condition, x);
46 condition = x; 45 condition = x;
47 } 46 }
48 47
49 public FixedGuardNode(BooleanNode condition, DeoptimizationReason deoptReason, DeoptimizationAction action, long leafGraphId) { 48 public FixedGuardNode(BooleanNode condition, DeoptimizationReason deoptReason, DeoptimizationAction action) {
50 this(condition, deoptReason, action, false, leafGraphId); 49 this(condition, deoptReason, action, false);
51 } 50 }
52 51
53 public FixedGuardNode(BooleanNode condition, DeoptimizationReason deoptReason, DeoptimizationAction action, boolean negated, long leafGraphId) { 52 public FixedGuardNode(BooleanNode condition, DeoptimizationReason deoptReason, DeoptimizationAction action, boolean negated) {
54 super(StampFactory.forVoid()); 53 super(StampFactory.forVoid());
55 this.action = action; 54 this.action = action;
56 this.negated = negated; 55 this.negated = negated;
57 this.leafGraphId = leafGraphId;
58 this.condition = condition; 56 this.condition = condition;
59 this.reason = deoptReason; 57 this.reason = deoptReason;
60 } 58 }
61 59
62 public DeoptimizationReason getReason() { 60 public DeoptimizationReason getReason() {
69 67
70 public boolean isNegated() { 68 public boolean isNegated() {
71 return negated; 69 return negated;
72 } 70 }
73 71
74 public long getLeafGraphId() {
75 return leafGraphId;
76 }
77
78 @Override 72 @Override
79 public String toString(Verbosity verbosity) { 73 public String toString(Verbosity verbosity) {
80 if (verbosity == Verbosity.Name && negated) { 74 if (verbosity == Verbosity.Name && negated) {
81 return "!" + super.toString(verbosity); 75 return "!" + super.toString(verbosity);
82 } else { 76 } else {
84 } 78 }
85 } 79 }
86 80
87 @Override 81 @Override
88 public void generate(LIRGeneratorTool gen) { 82 public void generate(LIRGeneratorTool gen) {
89 gen.emitGuardCheck(condition, reason, action, negated, leafGraphId); 83 gen.emitGuardCheck(condition, reason, action, negated);
90 } 84 }
91 85
92 @Override 86 @Override
93 public void simplify(SimplifierTool tool) { 87 public void simplify(SimplifierTool tool) {
94 if (condition instanceof ConstantNode) { 88 if (condition instanceof ConstantNode) {
98 } else { 92 } else {
99 FixedNode next = this.next(); 93 FixedNode next = this.next();
100 if (next != null) { 94 if (next != null) {
101 tool.deleteBranch(next); 95 tool.deleteBranch(next);
102 } 96 }
103 setNext(graph().add(new DeoptimizeNode(DeoptimizationAction.InvalidateRecompile, reason, leafGraphId))); 97 setNext(graph().add(new DeoptimizeNode(DeoptimizationAction.InvalidateRecompile, reason)));
104 return; 98 return;
105 } 99 }
106 } 100 }
107 } 101 }
108 102