Mercurial > hg > graal-jvmci-8
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 |