annotate graal/com.oracle.graal.lir.test/src/com/oracle/graal/lir/test/CompositeValueReplacementTest1.java @ 17283:e8b80721524d

Remove InstructionValueConsumer.visitValue(LIRInstruction, Value).
author Josef Eisl <josef.eisl@jku.at>
date Thu, 25 Sep 2014 14:48:19 +0200
parents 0f299d663944
children 4372344cf3d8
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
16738
1ae4ee9a59c3 Add CompositeValue replacement test.
Josef Eisl <josef.eisl@jku.at>
parents:
diff changeset
1 /*
1ae4ee9a59c3 Add CompositeValue replacement test.
Josef Eisl <josef.eisl@jku.at>
parents:
diff changeset
2 * Copyright (c) 2014, 2014, Oracle and/or its affiliates. All rights reserved.
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
17281
0f299d663944 Remove InstructionValueProcedure.doValue(LIRInstruction, Value).
Josef Eisl <josef.eisl@jku.at>
parents: 16804
diff changeset
28 import java.util.*;
0f299d663944 Remove InstructionValueProcedure.doValue(LIRInstruction, Value).
Josef Eisl <josef.eisl@jku.at>
parents: 16804
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;
17281
0f299d663944 Remove InstructionValueProcedure.doValue(LIRInstruction, Value).
Josef Eisl <josef.eisl@jku.at>
parents: 16804
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
1ae4ee9a59c3 Add CompositeValue replacement test.
Josef Eisl <josef.eisl@jku.at>
parents:
diff changeset
44 private static class NestedCompositeValue extends CompositeValue {
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
1ae4ee9a59c3 Add CompositeValue replacement test.
Josef Eisl <josef.eisl@jku.at>
parents:
diff changeset
49 public NestedCompositeValue(Value value) {
1ae4ee9a59c3 Add CompositeValue replacement test.
Josef Eisl <josef.eisl@jku.at>
parents:
diff changeset
50 super(LIRKind.Illegal);
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
1ae4ee9a59c3 Add CompositeValue replacement test.
Josef Eisl <josef.eisl@jku.at>
parents:
diff changeset
54 }
1ae4ee9a59c3 Add CompositeValue replacement test.
Josef Eisl <josef.eisl@jku.at>
parents:
diff changeset
55
1ae4ee9a59c3 Add CompositeValue replacement test.
Josef Eisl <josef.eisl@jku.at>
parents:
diff changeset
56 private static class DummyValue extends Value {
1ae4ee9a59c3 Add CompositeValue replacement test.
Josef Eisl <josef.eisl@jku.at>
parents:
diff changeset
57
1ae4ee9a59c3 Add CompositeValue replacement test.
Josef Eisl <josef.eisl@jku.at>
parents:
diff changeset
58 private static final long serialVersionUID = -645435039553382737L;
1ae4ee9a59c3 Add CompositeValue replacement test.
Josef Eisl <josef.eisl@jku.at>
parents:
diff changeset
59 private final int id;
1ae4ee9a59c3 Add CompositeValue replacement test.
Josef Eisl <josef.eisl@jku.at>
parents:
diff changeset
60 private static int counter = 1;
1ae4ee9a59c3 Add CompositeValue replacement test.
Josef Eisl <josef.eisl@jku.at>
parents:
diff changeset
61
1ae4ee9a59c3 Add CompositeValue replacement test.
Josef Eisl <josef.eisl@jku.at>
parents:
diff changeset
62 protected DummyValue() {
1ae4ee9a59c3 Add CompositeValue replacement test.
Josef Eisl <josef.eisl@jku.at>
parents:
diff changeset
63 super(LIRKind.Illegal);
1ae4ee9a59c3 Add CompositeValue replacement test.
Josef Eisl <josef.eisl@jku.at>
parents:
diff changeset
64 this.id = counter++;
1ae4ee9a59c3 Add CompositeValue replacement test.
Josef Eisl <josef.eisl@jku.at>
parents:
diff changeset
65 }
1ae4ee9a59c3 Add CompositeValue replacement test.
Josef Eisl <josef.eisl@jku.at>
parents:
diff changeset
66
1ae4ee9a59c3 Add CompositeValue replacement test.
Josef Eisl <josef.eisl@jku.at>
parents:
diff changeset
67 @Override
1ae4ee9a59c3 Add CompositeValue replacement test.
Josef Eisl <josef.eisl@jku.at>
parents:
diff changeset
68 public int hashCode() {
1ae4ee9a59c3 Add CompositeValue replacement test.
Josef Eisl <josef.eisl@jku.at>
parents:
diff changeset
69 final int prime = 31;
1ae4ee9a59c3 Add CompositeValue replacement test.
Josef Eisl <josef.eisl@jku.at>
parents:
diff changeset
70 int result = super.hashCode();
1ae4ee9a59c3 Add CompositeValue replacement test.
Josef Eisl <josef.eisl@jku.at>
parents:
diff changeset
71 result = prime * result + id;
1ae4ee9a59c3 Add CompositeValue replacement test.
Josef Eisl <josef.eisl@jku.at>
parents:
diff changeset
72 return result;
1ae4ee9a59c3 Add CompositeValue replacement test.
Josef Eisl <josef.eisl@jku.at>
parents:
diff changeset
73 }
1ae4ee9a59c3 Add CompositeValue replacement test.
Josef Eisl <josef.eisl@jku.at>
parents:
diff changeset
74
1ae4ee9a59c3 Add CompositeValue replacement test.
Josef Eisl <josef.eisl@jku.at>
parents:
diff changeset
75 @Override
1ae4ee9a59c3 Add CompositeValue replacement test.
Josef Eisl <josef.eisl@jku.at>
parents:
diff changeset
76 public boolean equals(Object obj) {
1ae4ee9a59c3 Add CompositeValue replacement test.
Josef Eisl <josef.eisl@jku.at>
parents:
diff changeset
77 if (this == obj) {
1ae4ee9a59c3 Add CompositeValue replacement test.
Josef Eisl <josef.eisl@jku.at>
parents:
diff changeset
78 return true;
1ae4ee9a59c3 Add CompositeValue replacement test.
Josef Eisl <josef.eisl@jku.at>
parents:
diff changeset
79 }
1ae4ee9a59c3 Add CompositeValue replacement test.
Josef Eisl <josef.eisl@jku.at>
parents:
diff changeset
80 if (!super.equals(obj)) {
1ae4ee9a59c3 Add CompositeValue replacement test.
Josef Eisl <josef.eisl@jku.at>
parents:
diff changeset
81 return false;
1ae4ee9a59c3 Add CompositeValue replacement test.
Josef Eisl <josef.eisl@jku.at>
parents:
diff changeset
82 }
1ae4ee9a59c3 Add CompositeValue replacement test.
Josef Eisl <josef.eisl@jku.at>
parents:
diff changeset
83 if (getClass() != obj.getClass()) {
1ae4ee9a59c3 Add CompositeValue replacement test.
Josef Eisl <josef.eisl@jku.at>
parents:
diff changeset
84 return false;
1ae4ee9a59c3 Add CompositeValue replacement test.
Josef Eisl <josef.eisl@jku.at>
parents:
diff changeset
85 }
1ae4ee9a59c3 Add CompositeValue replacement test.
Josef Eisl <josef.eisl@jku.at>
parents:
diff changeset
86 DummyValue other = (DummyValue) obj;
1ae4ee9a59c3 Add CompositeValue replacement test.
Josef Eisl <josef.eisl@jku.at>
parents:
diff changeset
87 if (id != other.id) {
1ae4ee9a59c3 Add CompositeValue replacement test.
Josef Eisl <josef.eisl@jku.at>
parents:
diff changeset
88 return false;
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 return true;
1ae4ee9a59c3 Add CompositeValue replacement test.
Josef Eisl <josef.eisl@jku.at>
parents:
diff changeset
91 }
1ae4ee9a59c3 Add CompositeValue replacement test.
Josef Eisl <josef.eisl@jku.at>
parents:
diff changeset
92
1ae4ee9a59c3 Add CompositeValue replacement test.
Josef Eisl <josef.eisl@jku.at>
parents:
diff changeset
93 @Override
1ae4ee9a59c3 Add CompositeValue replacement test.
Josef Eisl <josef.eisl@jku.at>
parents:
diff changeset
94 public String toString() {
1ae4ee9a59c3 Add CompositeValue replacement test.
Josef Eisl <josef.eisl@jku.at>
parents:
diff changeset
95 return "DummyValue [id=" + id + "]";
1ae4ee9a59c3 Add CompositeValue replacement test.
Josef Eisl <josef.eisl@jku.at>
parents:
diff changeset
96 }
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 }
1ae4ee9a59c3 Add CompositeValue replacement test.
Josef Eisl <josef.eisl@jku.at>
parents:
diff changeset
99
1ae4ee9a59c3 Add CompositeValue replacement test.
Josef Eisl <josef.eisl@jku.at>
parents:
diff changeset
100 private static class TestOp extends LIRInstruction {
1ae4ee9a59c3 Add CompositeValue replacement test.
Josef Eisl <josef.eisl@jku.at>
parents:
diff changeset
101
1ae4ee9a59c3 Add CompositeValue replacement test.
Josef Eisl <josef.eisl@jku.at>
parents:
diff changeset
102 @Use({COMPOSITE}) protected NestedCompositeValue compValue;
1ae4ee9a59c3 Add CompositeValue replacement test.
Josef Eisl <josef.eisl@jku.at>
parents:
diff changeset
103
1ae4ee9a59c3 Add CompositeValue replacement test.
Josef Eisl <josef.eisl@jku.at>
parents:
diff changeset
104 public TestOp(NestedCompositeValue compValue) {
1ae4ee9a59c3 Add CompositeValue replacement test.
Josef Eisl <josef.eisl@jku.at>
parents:
diff changeset
105 this.compValue = compValue;
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 void emitCode(CompilationResultBuilder crb) {
1ae4ee9a59c3 Add CompositeValue replacement test.
Josef Eisl <josef.eisl@jku.at>
parents:
diff changeset
110 fail("should not reach!");
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
1ae4ee9a59c3 Add CompositeValue replacement test.
Josef Eisl <josef.eisl@jku.at>
parents:
diff changeset
115 private static NestedCompositeValue createNestedCompValue(Value value, int nestingLevel) {
1ae4ee9a59c3 Add CompositeValue replacement test.
Josef Eisl <josef.eisl@jku.at>
parents:
diff changeset
116 NestedCompositeValue compValue = new NestedCompositeValue(value);
1ae4ee9a59c3 Add CompositeValue replacement test.
Josef Eisl <josef.eisl@jku.at>
parents:
diff changeset
117 for (int i = 0; i < nestingLevel; i++) {
1ae4ee9a59c3 Add CompositeValue replacement test.
Josef Eisl <josef.eisl@jku.at>
parents:
diff changeset
118 compValue = new NestedCompositeValue(compValue);
1ae4ee9a59c3 Add CompositeValue replacement test.
Josef Eisl <josef.eisl@jku.at>
parents:
diff changeset
119 }
1ae4ee9a59c3 Add CompositeValue replacement test.
Josef Eisl <josef.eisl@jku.at>
parents:
diff changeset
120 return compValue;
1ae4ee9a59c3 Add CompositeValue replacement test.
Josef Eisl <josef.eisl@jku.at>
parents:
diff changeset
121 }
1ae4ee9a59c3 Add CompositeValue replacement test.
Josef Eisl <josef.eisl@jku.at>
parents:
diff changeset
122
1ae4ee9a59c3 Add CompositeValue replacement test.
Josef Eisl <josef.eisl@jku.at>
parents:
diff changeset
123 @Test
1ae4ee9a59c3 Add CompositeValue replacement test.
Josef Eisl <josef.eisl@jku.at>
parents:
diff changeset
124 public void replaceCompValueTest0() {
1ae4ee9a59c3 Add CompositeValue replacement test.
Josef Eisl <josef.eisl@jku.at>
parents:
diff changeset
125 DummyValue dummyValue1 = new DummyValue();
1ae4ee9a59c3 Add CompositeValue replacement test.
Josef Eisl <josef.eisl@jku.at>
parents:
diff changeset
126 DummyValue dummyValue2 = new DummyValue();
1ae4ee9a59c3 Add CompositeValue replacement test.
Josef Eisl <josef.eisl@jku.at>
parents:
diff changeset
127 DummyValue dummyValue3 = new DummyValue();
1ae4ee9a59c3 Add CompositeValue replacement test.
Josef Eisl <josef.eisl@jku.at>
parents:
diff changeset
128 NestedCompositeValue compValue1 = createNestedCompValue(dummyValue1, 0);
1ae4ee9a59c3 Add CompositeValue replacement test.
Josef Eisl <josef.eisl@jku.at>
parents:
diff changeset
129 LIRInstruction op1 = new TestOp(compValue1);
1ae4ee9a59c3 Add CompositeValue replacement test.
Josef Eisl <josef.eisl@jku.at>
parents:
diff changeset
130 LIRInstruction op2 = new TestOp(compValue1);
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 op1.forEachInput(new InstructionValueProcedure() {
1ae4ee9a59c3 Add CompositeValue replacement test.
Josef Eisl <josef.eisl@jku.at>
parents:
diff changeset
133 @Override
17281
0f299d663944 Remove InstructionValueProcedure.doValue(LIRInstruction, Value).
Josef Eisl <josef.eisl@jku.at>
parents: 16804
diff changeset
134 public Value doValue(LIRInstruction instruction, Value value, OperandMode mode, EnumSet<OperandFlag> flags) {
16738
1ae4ee9a59c3 Add CompositeValue replacement test.
Josef Eisl <josef.eisl@jku.at>
parents:
diff changeset
135 assertEquals(dummyValue1, value);
1ae4ee9a59c3 Add CompositeValue replacement test.
Josef Eisl <josef.eisl@jku.at>
parents:
diff changeset
136 return dummyValue2;
1ae4ee9a59c3 Add CompositeValue replacement test.
Josef Eisl <josef.eisl@jku.at>
parents:
diff changeset
137 }
1ae4ee9a59c3 Add CompositeValue replacement test.
Josef Eisl <josef.eisl@jku.at>
parents:
diff changeset
138 });
1ae4ee9a59c3 Add CompositeValue replacement test.
Josef Eisl <josef.eisl@jku.at>
parents:
diff changeset
139
1ae4ee9a59c3 Add CompositeValue replacement test.
Josef Eisl <josef.eisl@jku.at>
parents:
diff changeset
140 op2.forEachInput(new InstructionValueProcedure() {
1ae4ee9a59c3 Add CompositeValue replacement test.
Josef Eisl <josef.eisl@jku.at>
parents:
diff changeset
141 @Override
17281
0f299d663944 Remove InstructionValueProcedure.doValue(LIRInstruction, Value).
Josef Eisl <josef.eisl@jku.at>
parents: 16804
diff changeset
142 public Value doValue(LIRInstruction instruction, Value value, OperandMode mode, EnumSet<OperandFlag> flags) {
16738
1ae4ee9a59c3 Add CompositeValue replacement test.
Josef Eisl <josef.eisl@jku.at>
parents:
diff changeset
143 assertEquals(dummyValue1, value);
1ae4ee9a59c3 Add CompositeValue replacement test.
Josef Eisl <josef.eisl@jku.at>
parents:
diff changeset
144 return dummyValue3;
1ae4ee9a59c3 Add CompositeValue replacement test.
Josef Eisl <josef.eisl@jku.at>
parents:
diff changeset
145 }
1ae4ee9a59c3 Add CompositeValue replacement test.
Josef Eisl <josef.eisl@jku.at>
parents:
diff changeset
146 });
1ae4ee9a59c3 Add CompositeValue replacement test.
Josef Eisl <josef.eisl@jku.at>
parents:
diff changeset
147
16804
1cba2ac4c0bb Use InstructionValueConsumer in CompositeValueReplacementTests.
Josef Eisl <josef.eisl@jku.at>
parents: 16796
diff changeset
148 op1.visitEachInput(new InstructionValueConsumer() {
16738
1ae4ee9a59c3 Add CompositeValue replacement test.
Josef Eisl <josef.eisl@jku.at>
parents:
diff changeset
149 @Override
17283
e8b80721524d Remove InstructionValueConsumer.visitValue(LIRInstruction, Value).
Josef Eisl <josef.eisl@jku.at>
parents: 17281
diff changeset
150 public void visitValue(LIRInstruction instruction, Value value, OperandMode mode, EnumSet<OperandFlag> flags) {
16738
1ae4ee9a59c3 Add CompositeValue replacement test.
Josef Eisl <josef.eisl@jku.at>
parents:
diff changeset
151 assertEquals(dummyValue2, value);
1ae4ee9a59c3 Add CompositeValue replacement test.
Josef Eisl <josef.eisl@jku.at>
parents:
diff changeset
152 }
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
16804
1cba2ac4c0bb Use InstructionValueConsumer in CompositeValueReplacementTests.
Josef Eisl <josef.eisl@jku.at>
parents: 16796
diff changeset
155 op2.visitEachInput(new InstructionValueConsumer() {
16738
1ae4ee9a59c3 Add CompositeValue replacement test.
Josef Eisl <josef.eisl@jku.at>
parents:
diff changeset
156 @Override
17283
e8b80721524d Remove InstructionValueConsumer.visitValue(LIRInstruction, Value).
Josef Eisl <josef.eisl@jku.at>
parents: 17281
diff changeset
157 public void visitValue(LIRInstruction instruction, Value value, OperandMode mode, EnumSet<OperandFlag> flags) {
16738
1ae4ee9a59c3 Add CompositeValue replacement test.
Josef Eisl <josef.eisl@jku.at>
parents:
diff changeset
158 assertEquals(dummyValue3, value);
1ae4ee9a59c3 Add CompositeValue replacement test.
Josef Eisl <josef.eisl@jku.at>
parents:
diff changeset
159 }
1ae4ee9a59c3 Add CompositeValue replacement test.
Josef Eisl <josef.eisl@jku.at>
parents:
diff changeset
160 });
1ae4ee9a59c3 Add CompositeValue replacement test.
Josef Eisl <josef.eisl@jku.at>
parents:
diff changeset
161 }
1ae4ee9a59c3 Add CompositeValue replacement test.
Josef Eisl <josef.eisl@jku.at>
parents:
diff changeset
162
1ae4ee9a59c3 Add CompositeValue replacement test.
Josef Eisl <josef.eisl@jku.at>
parents:
diff changeset
163 @Test
1ae4ee9a59c3 Add CompositeValue replacement test.
Josef Eisl <josef.eisl@jku.at>
parents:
diff changeset
164 public void replaceCompValueTest1() {
1ae4ee9a59c3 Add CompositeValue replacement test.
Josef Eisl <josef.eisl@jku.at>
parents:
diff changeset
165 DummyValue dummyValue1 = new DummyValue();
1ae4ee9a59c3 Add CompositeValue replacement test.
Josef Eisl <josef.eisl@jku.at>
parents:
diff changeset
166 DummyValue dummyValue2 = new DummyValue();
1ae4ee9a59c3 Add CompositeValue replacement test.
Josef Eisl <josef.eisl@jku.at>
parents:
diff changeset
167 DummyValue dummyValue3 = new DummyValue();
1ae4ee9a59c3 Add CompositeValue replacement test.
Josef Eisl <josef.eisl@jku.at>
parents:
diff changeset
168 NestedCompositeValue compValue1 = createNestedCompValue(dummyValue1, 1);
1ae4ee9a59c3 Add CompositeValue replacement test.
Josef Eisl <josef.eisl@jku.at>
parents:
diff changeset
169 LIRInstruction op1 = new TestOp(compValue1);
1ae4ee9a59c3 Add CompositeValue replacement test.
Josef Eisl <josef.eisl@jku.at>
parents:
diff changeset
170 LIRInstruction op2 = new TestOp(compValue1);
1ae4ee9a59c3 Add CompositeValue replacement test.
Josef Eisl <josef.eisl@jku.at>
parents:
diff changeset
171
1ae4ee9a59c3 Add CompositeValue replacement test.
Josef Eisl <josef.eisl@jku.at>
parents:
diff changeset
172 op1.forEachInput(new InstructionValueProcedure() {
1ae4ee9a59c3 Add CompositeValue replacement test.
Josef Eisl <josef.eisl@jku.at>
parents:
diff changeset
173 @Override
17281
0f299d663944 Remove InstructionValueProcedure.doValue(LIRInstruction, Value).
Josef Eisl <josef.eisl@jku.at>
parents: 16804
diff changeset
174 public Value doValue(LIRInstruction instruction, Value value, OperandMode mode, EnumSet<OperandFlag> flags) {
16738
1ae4ee9a59c3 Add CompositeValue replacement test.
Josef Eisl <josef.eisl@jku.at>
parents:
diff changeset
175 assertEquals(dummyValue1, value);
1ae4ee9a59c3 Add CompositeValue replacement test.
Josef Eisl <josef.eisl@jku.at>
parents:
diff changeset
176 return dummyValue2;
1ae4ee9a59c3 Add CompositeValue replacement test.
Josef Eisl <josef.eisl@jku.at>
parents:
diff changeset
177 }
1ae4ee9a59c3 Add CompositeValue replacement test.
Josef Eisl <josef.eisl@jku.at>
parents:
diff changeset
178 });
1ae4ee9a59c3 Add CompositeValue replacement test.
Josef Eisl <josef.eisl@jku.at>
parents:
diff changeset
179
1ae4ee9a59c3 Add CompositeValue replacement test.
Josef Eisl <josef.eisl@jku.at>
parents:
diff changeset
180 op2.forEachInput(new InstructionValueProcedure() {
1ae4ee9a59c3 Add CompositeValue replacement test.
Josef Eisl <josef.eisl@jku.at>
parents:
diff changeset
181 @Override
17281
0f299d663944 Remove InstructionValueProcedure.doValue(LIRInstruction, Value).
Josef Eisl <josef.eisl@jku.at>
parents: 16804
diff changeset
182 public Value doValue(LIRInstruction instruction, Value value, OperandMode mode, EnumSet<OperandFlag> flags) {
16738
1ae4ee9a59c3 Add CompositeValue replacement test.
Josef Eisl <josef.eisl@jku.at>
parents:
diff changeset
183 assertEquals(dummyValue1, value);
1ae4ee9a59c3 Add CompositeValue replacement test.
Josef Eisl <josef.eisl@jku.at>
parents:
diff changeset
184 return dummyValue3;
1ae4ee9a59c3 Add CompositeValue replacement test.
Josef Eisl <josef.eisl@jku.at>
parents:
diff changeset
185 }
1ae4ee9a59c3 Add CompositeValue replacement test.
Josef Eisl <josef.eisl@jku.at>
parents:
diff changeset
186 });
1ae4ee9a59c3 Add CompositeValue replacement test.
Josef Eisl <josef.eisl@jku.at>
parents:
diff changeset
187
16804
1cba2ac4c0bb Use InstructionValueConsumer in CompositeValueReplacementTests.
Josef Eisl <josef.eisl@jku.at>
parents: 16796
diff changeset
188 op1.visitEachInput(new InstructionValueConsumer() {
16738
1ae4ee9a59c3 Add CompositeValue replacement test.
Josef Eisl <josef.eisl@jku.at>
parents:
diff changeset
189 @Override
17283
e8b80721524d Remove InstructionValueConsumer.visitValue(LIRInstruction, Value).
Josef Eisl <josef.eisl@jku.at>
parents: 17281
diff changeset
190 public void visitValue(LIRInstruction instruction, Value value, OperandMode mode, EnumSet<OperandFlag> flags) {
16738
1ae4ee9a59c3 Add CompositeValue replacement test.
Josef Eisl <josef.eisl@jku.at>
parents:
diff changeset
191 assertEquals(dummyValue2, value);
1ae4ee9a59c3 Add CompositeValue replacement test.
Josef Eisl <josef.eisl@jku.at>
parents:
diff changeset
192 }
1ae4ee9a59c3 Add CompositeValue replacement test.
Josef Eisl <josef.eisl@jku.at>
parents:
diff changeset
193 });
1ae4ee9a59c3 Add CompositeValue replacement test.
Josef Eisl <josef.eisl@jku.at>
parents:
diff changeset
194
16804
1cba2ac4c0bb Use InstructionValueConsumer in CompositeValueReplacementTests.
Josef Eisl <josef.eisl@jku.at>
parents: 16796
diff changeset
195 op2.visitEachInput(new InstructionValueConsumer() {
16738
1ae4ee9a59c3 Add CompositeValue replacement test.
Josef Eisl <josef.eisl@jku.at>
parents:
diff changeset
196 @Override
17283
e8b80721524d Remove InstructionValueConsumer.visitValue(LIRInstruction, Value).
Josef Eisl <josef.eisl@jku.at>
parents: 17281
diff changeset
197 public void visitValue(LIRInstruction instruction, Value value, OperandMode mode, EnumSet<OperandFlag> flags) {
16738
1ae4ee9a59c3 Add CompositeValue replacement test.
Josef Eisl <josef.eisl@jku.at>
parents:
diff changeset
198 assertEquals(dummyValue3, value);
1ae4ee9a59c3 Add CompositeValue replacement test.
Josef Eisl <josef.eisl@jku.at>
parents:
diff changeset
199 }
1ae4ee9a59c3 Add CompositeValue replacement test.
Josef Eisl <josef.eisl@jku.at>
parents:
diff changeset
200 });
1ae4ee9a59c3 Add CompositeValue replacement test.
Josef Eisl <josef.eisl@jku.at>
parents:
diff changeset
201 }
1ae4ee9a59c3 Add CompositeValue replacement test.
Josef Eisl <josef.eisl@jku.at>
parents:
diff changeset
202 }