Mercurial > hg > truffle
annotate graal/com.oracle.graal.lir.test/src/com/oracle/graal/lir/test/CompositeValueReplacementTest1.java @ 20974:1af76d197949
Specialize LIRInstruction visit paths a little
author | Tom Rodriguez <tom.rodriguez@oracle.com> |
---|---|
date | Tue, 14 Apr 2015 11:36:48 -0700 |
parents | cb406df0ecc3 |
children | 082417ac43e4 |
rev | line source |
---|---|
16738
1ae4ee9a59c3
Add CompositeValue replacement test.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
1 /* |
19526
8fc336a04d77
Create TYPE fields for LIRInstruction and CompositeValue. Renaming NodeClass#get to NodeClass#create.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
19525
diff
changeset
|
2 * Copyright (c) 2014, 2015, Oracle and/or its affiliates. All rights reserved. |
16738
1ae4ee9a59c3
Add CompositeValue replacement test.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. |
1ae4ee9a59c3
Add CompositeValue replacement test.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
4 * |
1ae4ee9a59c3
Add CompositeValue replacement test.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
5 * This code is free software; you can redistribute it and/or modify it |
1ae4ee9a59c3
Add CompositeValue replacement test.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
6 * under the terms of the GNU General Public License version 2 only, as |
1ae4ee9a59c3
Add CompositeValue replacement test.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
7 * published by the Free Software Foundation. |
1ae4ee9a59c3
Add CompositeValue replacement test.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
8 * |
1ae4ee9a59c3
Add CompositeValue replacement test.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
9 * This code is distributed in the hope that it will be useful, but WITHOUT |
1ae4ee9a59c3
Add CompositeValue replacement test.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or |
1ae4ee9a59c3
Add CompositeValue replacement test.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
11 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License |
1ae4ee9a59c3
Add CompositeValue replacement test.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
12 * version 2 for more details (a copy is included in the LICENSE file that |
1ae4ee9a59c3
Add CompositeValue replacement test.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
13 * accompanied this code). |
1ae4ee9a59c3
Add CompositeValue replacement test.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
14 * |
1ae4ee9a59c3
Add CompositeValue replacement test.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
15 * You should have received a copy of the GNU General Public License version |
1ae4ee9a59c3
Add CompositeValue replacement test.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
16 * 2 along with this work; if not, write to the Free Software Foundation, |
1ae4ee9a59c3
Add CompositeValue replacement test.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
17 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. |
1ae4ee9a59c3
Add CompositeValue replacement test.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
18 * |
1ae4ee9a59c3
Add CompositeValue replacement test.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
19 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA |
1ae4ee9a59c3
Add CompositeValue replacement test.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
20 * or visit www.oracle.com if you need additional information or have any |
1ae4ee9a59c3
Add CompositeValue replacement test.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
21 * questions. |
1ae4ee9a59c3
Add CompositeValue replacement test.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
22 */ |
1ae4ee9a59c3
Add CompositeValue replacement test.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
23 package com.oracle.graal.lir.test; |
1ae4ee9a59c3
Add CompositeValue replacement test.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
24 |
1ae4ee9a59c3
Add CompositeValue replacement test.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
25 import static com.oracle.graal.lir.LIRInstruction.OperandFlag.*; |
1ae4ee9a59c3
Add CompositeValue replacement test.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
26 import static org.junit.Assert.*; |
1ae4ee9a59c3
Add CompositeValue replacement test.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
27 |
20973
cb406df0ecc3
Visit CompositeValues manually
Tom Rodriguez <tom.rodriguez@oracle.com>
parents:
19526
diff
changeset
|
28 import java.util.*; |
cb406df0ecc3
Visit CompositeValues manually
Tom Rodriguez <tom.rodriguez@oracle.com>
parents:
19526
diff
changeset
|
29 |
16738
1ae4ee9a59c3
Add CompositeValue replacement test.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
30 import org.junit.*; |
1ae4ee9a59c3
Add CompositeValue replacement test.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
31 |
1ae4ee9a59c3
Add CompositeValue replacement test.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
32 import com.oracle.graal.api.meta.*; |
1ae4ee9a59c3
Add CompositeValue replacement test.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
33 import com.oracle.graal.lir.*; |
1ae4ee9a59c3
Add CompositeValue replacement test.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
34 import com.oracle.graal.lir.LIRInstruction.OperandFlag; |
20973
cb406df0ecc3
Visit CompositeValues manually
Tom Rodriguez <tom.rodriguez@oracle.com>
parents:
19526
diff
changeset
|
35 import com.oracle.graal.lir.LIRInstruction.OperandMode; |
16738
1ae4ee9a59c3
Add CompositeValue replacement test.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
36 import com.oracle.graal.lir.asm.*; |
1ae4ee9a59c3
Add CompositeValue replacement test.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
37 |
1ae4ee9a59c3
Add CompositeValue replacement test.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
38 /** |
1ae4ee9a59c3
Add CompositeValue replacement test.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
39 * This test verifies that {@link CompositeValue}s are immutable, i.e. that a write to a component |
1ae4ee9a59c3
Add CompositeValue replacement test.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
40 * of a {@link CompositeValue} results in a new {@link CompositeValue}. |
1ae4ee9a59c3
Add CompositeValue replacement test.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
41 */ |
1ae4ee9a59c3
Add CompositeValue replacement test.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
42 public class CompositeValueReplacementTest1 { |
1ae4ee9a59c3
Add CompositeValue replacement test.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
43 |
20973
cb406df0ecc3
Visit CompositeValues manually
Tom Rodriguez <tom.rodriguez@oracle.com>
parents:
19526
diff
changeset
|
44 private static class TestCompositeValue extends CompositeValue { |
16738
1ae4ee9a59c3
Add CompositeValue replacement test.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
45 |
1ae4ee9a59c3
Add CompositeValue replacement test.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
46 private static final long serialVersionUID = -8804214200173503527L; |
1ae4ee9a59c3
Add CompositeValue replacement test.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
47 @Component({REG, OperandFlag.ILLEGAL}) protected Value value; |
1ae4ee9a59c3
Add CompositeValue replacement test.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
48 |
20973
cb406df0ecc3
Visit CompositeValues manually
Tom Rodriguez <tom.rodriguez@oracle.com>
parents:
19526
diff
changeset
|
49 public TestCompositeValue(Value value) { |
cb406df0ecc3
Visit CompositeValues manually
Tom Rodriguez <tom.rodriguez@oracle.com>
parents:
19526
diff
changeset
|
50 super(LIRKind.Illegal); |
16738
1ae4ee9a59c3
Add CompositeValue replacement test.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
51 this.value = value; |
1ae4ee9a59c3
Add CompositeValue replacement test.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
52 } |
1ae4ee9a59c3
Add CompositeValue replacement test.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
53 |
20973
cb406df0ecc3
Visit CompositeValues manually
Tom Rodriguez <tom.rodriguez@oracle.com>
parents:
19526
diff
changeset
|
54 private static final EnumSet<OperandFlag> flags = EnumSet.of(OperandFlag.REG, OperandFlag.ILLEGAL); |
cb406df0ecc3
Visit CompositeValues manually
Tom Rodriguez <tom.rodriguez@oracle.com>
parents:
19526
diff
changeset
|
55 |
cb406df0ecc3
Visit CompositeValues manually
Tom Rodriguez <tom.rodriguez@oracle.com>
parents:
19526
diff
changeset
|
56 @Override |
cb406df0ecc3
Visit CompositeValues manually
Tom Rodriguez <tom.rodriguez@oracle.com>
parents:
19526
diff
changeset
|
57 public CompositeValue forEachComponent(LIRInstruction inst, OperandMode mode, InstructionValueProcedure proc) { |
cb406df0ecc3
Visit CompositeValues manually
Tom Rodriguez <tom.rodriguez@oracle.com>
parents:
19526
diff
changeset
|
58 Value newValue = proc.doValue(inst, value, mode, flags); |
cb406df0ecc3
Visit CompositeValues manually
Tom Rodriguez <tom.rodriguez@oracle.com>
parents:
19526
diff
changeset
|
59 if (!value.identityEquals(newValue)) { |
cb406df0ecc3
Visit CompositeValues manually
Tom Rodriguez <tom.rodriguez@oracle.com>
parents:
19526
diff
changeset
|
60 return new TestCompositeValue(newValue); |
cb406df0ecc3
Visit CompositeValues manually
Tom Rodriguez <tom.rodriguez@oracle.com>
parents:
19526
diff
changeset
|
61 } |
cb406df0ecc3
Visit CompositeValues manually
Tom Rodriguez <tom.rodriguez@oracle.com>
parents:
19526
diff
changeset
|
62 return this; |
cb406df0ecc3
Visit CompositeValues manually
Tom Rodriguez <tom.rodriguez@oracle.com>
parents:
19526
diff
changeset
|
63 } |
20974
1af76d197949
Specialize LIRInstruction visit paths a little
Tom Rodriguez <tom.rodriguez@oracle.com>
parents:
20973
diff
changeset
|
64 |
1af76d197949
Specialize LIRInstruction visit paths a little
Tom Rodriguez <tom.rodriguez@oracle.com>
parents:
20973
diff
changeset
|
65 @Override |
1af76d197949
Specialize LIRInstruction visit paths a little
Tom Rodriguez <tom.rodriguez@oracle.com>
parents:
20973
diff
changeset
|
66 protected void forEachComponent(LIRInstruction inst, OperandMode mode, InstructionValueConsumer proc) { |
1af76d197949
Specialize LIRInstruction visit paths a little
Tom Rodriguez <tom.rodriguez@oracle.com>
parents:
20973
diff
changeset
|
67 proc.visitValue(inst, value, mode, flags); |
1af76d197949
Specialize LIRInstruction visit paths a little
Tom Rodriguez <tom.rodriguez@oracle.com>
parents:
20973
diff
changeset
|
68 } |
16738
1ae4ee9a59c3
Add CompositeValue replacement test.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
69 } |
1ae4ee9a59c3
Add CompositeValue replacement test.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
70 |
18319
56cc1a799a60
(re)converted Value to an interface
Doug Simon <doug.simon@oracle.com>
parents:
18186
diff
changeset
|
71 private static class DummyValue extends AbstractValue { |
16738
1ae4ee9a59c3
Add CompositeValue replacement test.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
72 |
1ae4ee9a59c3
Add CompositeValue replacement test.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
73 private static final long serialVersionUID = -645435039553382737L; |
1ae4ee9a59c3
Add CompositeValue replacement test.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
74 private final int id; |
1ae4ee9a59c3
Add CompositeValue replacement test.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
75 private static int counter = 1; |
1ae4ee9a59c3
Add CompositeValue replacement test.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
76 |
1ae4ee9a59c3
Add CompositeValue replacement test.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
77 protected DummyValue() { |
1ae4ee9a59c3
Add CompositeValue replacement test.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
78 super(LIRKind.Illegal); |
1ae4ee9a59c3
Add CompositeValue replacement test.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
79 this.id = counter++; |
1ae4ee9a59c3
Add CompositeValue replacement test.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
80 } |
1ae4ee9a59c3
Add CompositeValue replacement test.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
81 |
1ae4ee9a59c3
Add CompositeValue replacement test.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
82 @Override |
1ae4ee9a59c3
Add CompositeValue replacement test.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
83 public int hashCode() { |
1ae4ee9a59c3
Add CompositeValue replacement test.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
84 final int prime = 31; |
1ae4ee9a59c3
Add CompositeValue replacement test.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
85 int result = super.hashCode(); |
1ae4ee9a59c3
Add CompositeValue replacement test.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
86 result = prime * result + id; |
1ae4ee9a59c3
Add CompositeValue replacement test.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
87 return result; |
1ae4ee9a59c3
Add CompositeValue replacement test.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
88 } |
1ae4ee9a59c3
Add CompositeValue replacement test.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
89 |
1ae4ee9a59c3
Add CompositeValue replacement test.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
90 @Override |
1ae4ee9a59c3
Add CompositeValue replacement test.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
91 public boolean equals(Object obj) { |
1ae4ee9a59c3
Add CompositeValue replacement test.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
92 if (this == obj) { |
1ae4ee9a59c3
Add CompositeValue replacement test.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
93 return true; |
1ae4ee9a59c3
Add CompositeValue replacement test.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
94 } |
1ae4ee9a59c3
Add CompositeValue replacement test.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
95 if (!super.equals(obj)) { |
1ae4ee9a59c3
Add CompositeValue replacement test.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
96 return false; |
1ae4ee9a59c3
Add CompositeValue replacement test.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
97 } |
1ae4ee9a59c3
Add CompositeValue replacement test.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
98 if (getClass() != obj.getClass()) { |
1ae4ee9a59c3
Add CompositeValue replacement test.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
99 return false; |
1ae4ee9a59c3
Add CompositeValue replacement test.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
100 } |
1ae4ee9a59c3
Add CompositeValue replacement test.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
101 DummyValue other = (DummyValue) obj; |
1ae4ee9a59c3
Add CompositeValue replacement test.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
102 if (id != other.id) { |
1ae4ee9a59c3
Add CompositeValue replacement test.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
103 return false; |
1ae4ee9a59c3
Add CompositeValue replacement test.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
104 } |
1ae4ee9a59c3
Add CompositeValue replacement test.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
105 return true; |
1ae4ee9a59c3
Add CompositeValue replacement test.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
106 } |
1ae4ee9a59c3
Add CompositeValue replacement test.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
107 |
1ae4ee9a59c3
Add CompositeValue replacement test.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
108 @Override |
1ae4ee9a59c3
Add CompositeValue replacement test.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
109 public String toString() { |
1ae4ee9a59c3
Add CompositeValue replacement test.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
110 return "DummyValue [id=" + id + "]"; |
1ae4ee9a59c3
Add CompositeValue replacement test.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
111 } |
1ae4ee9a59c3
Add CompositeValue replacement test.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
112 |
1ae4ee9a59c3
Add CompositeValue replacement test.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
113 } |
1ae4ee9a59c3
Add CompositeValue replacement test.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
114 |
19526
8fc336a04d77
Create TYPE fields for LIRInstruction and CompositeValue. Renaming NodeClass#get to NodeClass#create.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
19525
diff
changeset
|
115 private static final class TestOp extends LIRInstruction { |
8fc336a04d77
Create TYPE fields for LIRInstruction and CompositeValue. Renaming NodeClass#get to NodeClass#create.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
19525
diff
changeset
|
116 public static final LIRInstructionClass<TestOp> TYPE = LIRInstructionClass.create(TestOp.class); |
16738
1ae4ee9a59c3
Add CompositeValue replacement test.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
117 |
20973
cb406df0ecc3
Visit CompositeValues manually
Tom Rodriguez <tom.rodriguez@oracle.com>
parents:
19526
diff
changeset
|
118 @Use({COMPOSITE}) protected TestCompositeValue compValue; |
16738
1ae4ee9a59c3
Add CompositeValue replacement test.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
119 |
20973
cb406df0ecc3
Visit CompositeValues manually
Tom Rodriguez <tom.rodriguez@oracle.com>
parents:
19526
diff
changeset
|
120 public TestOp(TestCompositeValue compValue) { |
19526
8fc336a04d77
Create TYPE fields for LIRInstruction and CompositeValue. Renaming NodeClass#get to NodeClass#create.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
19525
diff
changeset
|
121 super(TYPE); |
16738
1ae4ee9a59c3
Add CompositeValue replacement test.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
122 this.compValue = compValue; |
1ae4ee9a59c3
Add CompositeValue replacement test.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
123 } |
1ae4ee9a59c3
Add CompositeValue replacement test.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
124 |
1ae4ee9a59c3
Add CompositeValue replacement test.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
125 @Override |
1ae4ee9a59c3
Add CompositeValue replacement test.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
126 public void emitCode(CompilationResultBuilder crb) { |
1ae4ee9a59c3
Add CompositeValue replacement test.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
127 fail("should not reach!"); |
1ae4ee9a59c3
Add CompositeValue replacement test.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
128 } |
1ae4ee9a59c3
Add CompositeValue replacement test.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
129 |
1ae4ee9a59c3
Add CompositeValue replacement test.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
130 } |
1ae4ee9a59c3
Add CompositeValue replacement test.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
131 |
1ae4ee9a59c3
Add CompositeValue replacement test.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
132 @Test |
1ae4ee9a59c3
Add CompositeValue replacement test.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
133 public void replaceCompValueTest0() { |
1ae4ee9a59c3
Add CompositeValue replacement test.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
134 DummyValue dummyValue1 = new DummyValue(); |
1ae4ee9a59c3
Add CompositeValue replacement test.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
135 DummyValue dummyValue2 = new DummyValue(); |
1ae4ee9a59c3
Add CompositeValue replacement test.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
136 DummyValue dummyValue3 = new DummyValue(); |
20973
cb406df0ecc3
Visit CompositeValues manually
Tom Rodriguez <tom.rodriguez@oracle.com>
parents:
19526
diff
changeset
|
137 TestCompositeValue compValue1 = new TestCompositeValue(dummyValue1); |
16738
1ae4ee9a59c3
Add CompositeValue replacement test.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
138 LIRInstruction op1 = new TestOp(compValue1); |
1ae4ee9a59c3
Add CompositeValue replacement test.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
139 LIRInstruction op2 = new TestOp(compValue1); |
1ae4ee9a59c3
Add CompositeValue replacement test.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
140 |
17289
4372344cf3d8
Use Lambdas in CompositeValueReplacementTests.
Josef Eisl <josef.eisl@jku.at>
parents:
17283
diff
changeset
|
141 op1.forEachInput((instruction, value, mode, flags) -> { |
4372344cf3d8
Use Lambdas in CompositeValueReplacementTests.
Josef Eisl <josef.eisl@jku.at>
parents:
17283
diff
changeset
|
142 assertEquals(dummyValue1, value); |
4372344cf3d8
Use Lambdas in CompositeValueReplacementTests.
Josef Eisl <josef.eisl@jku.at>
parents:
17283
diff
changeset
|
143 return dummyValue2; |
16738
1ae4ee9a59c3
Add CompositeValue replacement test.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
144 }); |
1ae4ee9a59c3
Add CompositeValue replacement test.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
145 |
17289
4372344cf3d8
Use Lambdas in CompositeValueReplacementTests.
Josef Eisl <josef.eisl@jku.at>
parents:
17283
diff
changeset
|
146 op2.forEachInput((instruction, value, mode, flags) -> { |
4372344cf3d8
Use Lambdas in CompositeValueReplacementTests.
Josef Eisl <josef.eisl@jku.at>
parents:
17283
diff
changeset
|
147 assertEquals(dummyValue1, value); |
4372344cf3d8
Use Lambdas in CompositeValueReplacementTests.
Josef Eisl <josef.eisl@jku.at>
parents:
17283
diff
changeset
|
148 return dummyValue3; |
16738
1ae4ee9a59c3
Add CompositeValue replacement test.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
149 }); |
1ae4ee9a59c3
Add CompositeValue replacement test.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
150 |
17289
4372344cf3d8
Use Lambdas in CompositeValueReplacementTests.
Josef Eisl <josef.eisl@jku.at>
parents:
17283
diff
changeset
|
151 op1.visitEachInput((instruction, value, mode, flags) -> assertEquals(dummyValue2, value)); |
4372344cf3d8
Use Lambdas in CompositeValueReplacementTests.
Josef Eisl <josef.eisl@jku.at>
parents:
17283
diff
changeset
|
152 op2.visitEachInput((instruction, value, mode, flags) -> assertEquals(dummyValue3, value)); |
16738
1ae4ee9a59c3
Add CompositeValue replacement test.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
153 } |
1ae4ee9a59c3
Add CompositeValue replacement test.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
154 } |