annotate graal/com.oracle.graal.lir.test/src/com/oracle/graal/lir/test/CompositeValueReplacementTest1.java @ 17289:4372344cf3d8

Use Lambdas in CompositeValueReplacementTests.
author Josef Eisl <josef.eisl@jku.at>
date Mon, 29 Sep 2014 13:35:31 +0200
parents e8b80721524d
children 9a804ec7f707
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
1ae4ee9a59c3 Add CompositeValue replacement test.
Josef Eisl <josef.eisl@jku.at>
parents:
diff changeset
28 import org.junit.*;
1ae4ee9a59c3 Add CompositeValue replacement test.
Josef Eisl <josef.eisl@jku.at>
parents:
diff changeset
29
1ae4ee9a59c3 Add CompositeValue replacement test.
Josef Eisl <josef.eisl@jku.at>
parents:
diff changeset
30 import com.oracle.graal.api.meta.*;
1ae4ee9a59c3 Add CompositeValue replacement test.
Josef Eisl <josef.eisl@jku.at>
parents:
diff changeset
31 import com.oracle.graal.lir.*;
1ae4ee9a59c3 Add CompositeValue replacement test.
Josef Eisl <josef.eisl@jku.at>
parents:
diff changeset
32 import com.oracle.graal.lir.LIRInstruction.OperandFlag;
1ae4ee9a59c3 Add CompositeValue replacement test.
Josef Eisl <josef.eisl@jku.at>
parents:
diff changeset
33 import com.oracle.graal.lir.asm.*;
1ae4ee9a59c3 Add CompositeValue replacement test.
Josef Eisl <josef.eisl@jku.at>
parents:
diff changeset
34
1ae4ee9a59c3 Add CompositeValue replacement test.
Josef Eisl <josef.eisl@jku.at>
parents:
diff changeset
35 /**
1ae4ee9a59c3 Add CompositeValue replacement test.
Josef Eisl <josef.eisl@jku.at>
parents:
diff changeset
36 * 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
37 * of a {@link CompositeValue} results in a new {@link CompositeValue}.
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 public class CompositeValueReplacementTest1 {
1ae4ee9a59c3 Add CompositeValue replacement test.
Josef Eisl <josef.eisl@jku.at>
parents:
diff changeset
40
1ae4ee9a59c3 Add CompositeValue replacement test.
Josef Eisl <josef.eisl@jku.at>
parents:
diff changeset
41 private static class NestedCompositeValue extends CompositeValue {
1ae4ee9a59c3 Add CompositeValue replacement test.
Josef Eisl <josef.eisl@jku.at>
parents:
diff changeset
42
1ae4ee9a59c3 Add CompositeValue replacement test.
Josef Eisl <josef.eisl@jku.at>
parents:
diff changeset
43 private static final long serialVersionUID = -8804214200173503527L;
1ae4ee9a59c3 Add CompositeValue replacement test.
Josef Eisl <josef.eisl@jku.at>
parents:
diff changeset
44 @Component({REG, OperandFlag.ILLEGAL}) protected Value value;
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 public NestedCompositeValue(Value value) {
1ae4ee9a59c3 Add CompositeValue replacement test.
Josef Eisl <josef.eisl@jku.at>
parents:
diff changeset
47 super(LIRKind.Illegal);
1ae4ee9a59c3 Add CompositeValue replacement test.
Josef Eisl <josef.eisl@jku.at>
parents:
diff changeset
48 this.value = value;
1ae4ee9a59c3 Add CompositeValue replacement test.
Josef Eisl <josef.eisl@jku.at>
parents:
diff changeset
49 }
1ae4ee9a59c3 Add CompositeValue replacement test.
Josef Eisl <josef.eisl@jku.at>
parents:
diff changeset
50
1ae4ee9a59c3 Add CompositeValue replacement test.
Josef Eisl <josef.eisl@jku.at>
parents:
diff changeset
51 }
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 private static class DummyValue extends Value {
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 private static final long serialVersionUID = -645435039553382737L;
1ae4ee9a59c3 Add CompositeValue replacement test.
Josef Eisl <josef.eisl@jku.at>
parents:
diff changeset
56 private final int id;
1ae4ee9a59c3 Add CompositeValue replacement test.
Josef Eisl <josef.eisl@jku.at>
parents:
diff changeset
57 private static int counter = 1;
1ae4ee9a59c3 Add CompositeValue replacement test.
Josef Eisl <josef.eisl@jku.at>
parents:
diff changeset
58
1ae4ee9a59c3 Add CompositeValue replacement test.
Josef Eisl <josef.eisl@jku.at>
parents:
diff changeset
59 protected DummyValue() {
1ae4ee9a59c3 Add CompositeValue replacement test.
Josef Eisl <josef.eisl@jku.at>
parents:
diff changeset
60 super(LIRKind.Illegal);
1ae4ee9a59c3 Add CompositeValue replacement test.
Josef Eisl <josef.eisl@jku.at>
parents:
diff changeset
61 this.id = counter++;
1ae4ee9a59c3 Add CompositeValue replacement test.
Josef Eisl <josef.eisl@jku.at>
parents:
diff changeset
62 }
1ae4ee9a59c3 Add CompositeValue replacement test.
Josef Eisl <josef.eisl@jku.at>
parents:
diff changeset
63
1ae4ee9a59c3 Add CompositeValue replacement test.
Josef Eisl <josef.eisl@jku.at>
parents:
diff changeset
64 @Override
1ae4ee9a59c3 Add CompositeValue replacement test.
Josef Eisl <josef.eisl@jku.at>
parents:
diff changeset
65 public int hashCode() {
1ae4ee9a59c3 Add CompositeValue replacement test.
Josef Eisl <josef.eisl@jku.at>
parents:
diff changeset
66 final int prime = 31;
1ae4ee9a59c3 Add CompositeValue replacement test.
Josef Eisl <josef.eisl@jku.at>
parents:
diff changeset
67 int result = super.hashCode();
1ae4ee9a59c3 Add CompositeValue replacement test.
Josef Eisl <josef.eisl@jku.at>
parents:
diff changeset
68 result = prime * result + id;
1ae4ee9a59c3 Add CompositeValue replacement test.
Josef Eisl <josef.eisl@jku.at>
parents:
diff changeset
69 return result;
1ae4ee9a59c3 Add CompositeValue replacement test.
Josef Eisl <josef.eisl@jku.at>
parents:
diff changeset
70 }
1ae4ee9a59c3 Add CompositeValue replacement test.
Josef Eisl <josef.eisl@jku.at>
parents:
diff changeset
71
1ae4ee9a59c3 Add CompositeValue replacement test.
Josef Eisl <josef.eisl@jku.at>
parents:
diff changeset
72 @Override
1ae4ee9a59c3 Add CompositeValue replacement test.
Josef Eisl <josef.eisl@jku.at>
parents:
diff changeset
73 public boolean equals(Object obj) {
1ae4ee9a59c3 Add CompositeValue replacement test.
Josef Eisl <josef.eisl@jku.at>
parents:
diff changeset
74 if (this == obj) {
1ae4ee9a59c3 Add CompositeValue replacement test.
Josef Eisl <josef.eisl@jku.at>
parents:
diff changeset
75 return true;
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 if (!super.equals(obj)) {
1ae4ee9a59c3 Add CompositeValue replacement test.
Josef Eisl <josef.eisl@jku.at>
parents:
diff changeset
78 return false;
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 (getClass() != obj.getClass()) {
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 DummyValue other = (DummyValue) obj;
1ae4ee9a59c3 Add CompositeValue replacement test.
Josef Eisl <josef.eisl@jku.at>
parents:
diff changeset
84 if (id != other.id) {
1ae4ee9a59c3 Add CompositeValue replacement test.
Josef Eisl <josef.eisl@jku.at>
parents:
diff changeset
85 return false;
1ae4ee9a59c3 Add CompositeValue replacement test.
Josef Eisl <josef.eisl@jku.at>
parents:
diff changeset
86 }
1ae4ee9a59c3 Add CompositeValue replacement test.
Josef Eisl <josef.eisl@jku.at>
parents:
diff changeset
87 return true;
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 String toString() {
1ae4ee9a59c3 Add CompositeValue replacement test.
Josef Eisl <josef.eisl@jku.at>
parents:
diff changeset
92 return "DummyValue [id=" + id + "]";
1ae4ee9a59c3 Add CompositeValue replacement test.
Josef Eisl <josef.eisl@jku.at>
parents:
diff changeset
93 }
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 }
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 private static class TestOp extends LIRInstruction {
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 @Use({COMPOSITE}) protected NestedCompositeValue compValue;
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 public TestOp(NestedCompositeValue compValue) {
1ae4ee9a59c3 Add CompositeValue replacement test.
Josef Eisl <josef.eisl@jku.at>
parents:
diff changeset
102 this.compValue = 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
1ae4ee9a59c3 Add CompositeValue replacement test.
Josef Eisl <josef.eisl@jku.at>
parents:
diff changeset
105 @Override
1ae4ee9a59c3 Add CompositeValue replacement test.
Josef Eisl <josef.eisl@jku.at>
parents:
diff changeset
106 public void emitCode(CompilationResultBuilder crb) {
1ae4ee9a59c3 Add CompositeValue replacement test.
Josef Eisl <josef.eisl@jku.at>
parents:
diff changeset
107 fail("should not reach!");
1ae4ee9a59c3 Add CompositeValue replacement test.
Josef Eisl <josef.eisl@jku.at>
parents:
diff changeset
108 }
1ae4ee9a59c3 Add CompositeValue replacement test.
Josef Eisl <josef.eisl@jku.at>
parents:
diff changeset
109
1ae4ee9a59c3 Add CompositeValue replacement test.
Josef Eisl <josef.eisl@jku.at>
parents:
diff changeset
110 }
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 private static NestedCompositeValue createNestedCompValue(Value value, int nestingLevel) {
1ae4ee9a59c3 Add CompositeValue replacement test.
Josef Eisl <josef.eisl@jku.at>
parents:
diff changeset
113 NestedCompositeValue compValue = new NestedCompositeValue(value);
1ae4ee9a59c3 Add CompositeValue replacement test.
Josef Eisl <josef.eisl@jku.at>
parents:
diff changeset
114 for (int i = 0; i < nestingLevel; i++) {
1ae4ee9a59c3 Add CompositeValue replacement test.
Josef Eisl <josef.eisl@jku.at>
parents:
diff changeset
115 compValue = new NestedCompositeValue(compValue);
1ae4ee9a59c3 Add CompositeValue replacement test.
Josef Eisl <josef.eisl@jku.at>
parents:
diff changeset
116 }
1ae4ee9a59c3 Add CompositeValue replacement test.
Josef Eisl <josef.eisl@jku.at>
parents:
diff changeset
117 return compValue;
1ae4ee9a59c3 Add CompositeValue replacement test.
Josef Eisl <josef.eisl@jku.at>
parents:
diff changeset
118 }
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 @Test
1ae4ee9a59c3 Add CompositeValue replacement test.
Josef Eisl <josef.eisl@jku.at>
parents:
diff changeset
121 public void replaceCompValueTest0() {
1ae4ee9a59c3 Add CompositeValue replacement test.
Josef Eisl <josef.eisl@jku.at>
parents:
diff changeset
122 DummyValue dummyValue1 = new DummyValue();
1ae4ee9a59c3 Add CompositeValue replacement test.
Josef Eisl <josef.eisl@jku.at>
parents:
diff changeset
123 DummyValue dummyValue2 = new DummyValue();
1ae4ee9a59c3 Add CompositeValue replacement test.
Josef Eisl <josef.eisl@jku.at>
parents:
diff changeset
124 DummyValue dummyValue3 = new DummyValue();
1ae4ee9a59c3 Add CompositeValue replacement test.
Josef Eisl <josef.eisl@jku.at>
parents:
diff changeset
125 NestedCompositeValue compValue1 = createNestedCompValue(dummyValue1, 0);
1ae4ee9a59c3 Add CompositeValue replacement test.
Josef Eisl <josef.eisl@jku.at>
parents:
diff changeset
126 LIRInstruction op1 = new TestOp(compValue1);
1ae4ee9a59c3 Add CompositeValue replacement test.
Josef Eisl <josef.eisl@jku.at>
parents:
diff changeset
127 LIRInstruction op2 = new TestOp(compValue1);
1ae4ee9a59c3 Add CompositeValue replacement test.
Josef Eisl <josef.eisl@jku.at>
parents:
diff changeset
128
17289
4372344cf3d8 Use Lambdas in CompositeValueReplacementTests.
Josef Eisl <josef.eisl@jku.at>
parents: 17283
diff changeset
129 op1.forEachInput((instruction, value, mode, flags) -> {
4372344cf3d8 Use Lambdas in CompositeValueReplacementTests.
Josef Eisl <josef.eisl@jku.at>
parents: 17283
diff changeset
130 assertEquals(dummyValue1, value);
4372344cf3d8 Use Lambdas in CompositeValueReplacementTests.
Josef Eisl <josef.eisl@jku.at>
parents: 17283
diff changeset
131 return dummyValue2;
16738
1ae4ee9a59c3 Add CompositeValue replacement test.
Josef Eisl <josef.eisl@jku.at>
parents:
diff changeset
132 });
1ae4ee9a59c3 Add CompositeValue replacement test.
Josef Eisl <josef.eisl@jku.at>
parents:
diff changeset
133
17289
4372344cf3d8 Use Lambdas in CompositeValueReplacementTests.
Josef Eisl <josef.eisl@jku.at>
parents: 17283
diff changeset
134 op2.forEachInput((instruction, value, mode, flags) -> {
4372344cf3d8 Use Lambdas in CompositeValueReplacementTests.
Josef Eisl <josef.eisl@jku.at>
parents: 17283
diff changeset
135 assertEquals(dummyValue1, value);
4372344cf3d8 Use Lambdas in CompositeValueReplacementTests.
Josef Eisl <josef.eisl@jku.at>
parents: 17283
diff changeset
136 return dummyValue3;
16738
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
17289
4372344cf3d8 Use Lambdas in CompositeValueReplacementTests.
Josef Eisl <josef.eisl@jku.at>
parents: 17283
diff changeset
139 op1.visitEachInput((instruction, value, mode, flags) -> assertEquals(dummyValue2, value));
4372344cf3d8 Use Lambdas in CompositeValueReplacementTests.
Josef Eisl <josef.eisl@jku.at>
parents: 17283
diff changeset
140 op2.visitEachInput((instruction, value, mode, flags) -> assertEquals(dummyValue3, value));
16738
1ae4ee9a59c3 Add CompositeValue replacement test.
Josef Eisl <josef.eisl@jku.at>
parents:
diff changeset
141 }
1ae4ee9a59c3 Add CompositeValue replacement test.
Josef Eisl <josef.eisl@jku.at>
parents:
diff changeset
142
1ae4ee9a59c3 Add CompositeValue replacement test.
Josef Eisl <josef.eisl@jku.at>
parents:
diff changeset
143 @Test
1ae4ee9a59c3 Add CompositeValue replacement test.
Josef Eisl <josef.eisl@jku.at>
parents:
diff changeset
144 public void replaceCompValueTest1() {
1ae4ee9a59c3 Add CompositeValue replacement test.
Josef Eisl <josef.eisl@jku.at>
parents:
diff changeset
145 DummyValue dummyValue1 = new DummyValue();
1ae4ee9a59c3 Add CompositeValue replacement test.
Josef Eisl <josef.eisl@jku.at>
parents:
diff changeset
146 DummyValue dummyValue2 = new DummyValue();
1ae4ee9a59c3 Add CompositeValue replacement test.
Josef Eisl <josef.eisl@jku.at>
parents:
diff changeset
147 DummyValue dummyValue3 = new DummyValue();
1ae4ee9a59c3 Add CompositeValue replacement test.
Josef Eisl <josef.eisl@jku.at>
parents:
diff changeset
148 NestedCompositeValue compValue1 = createNestedCompValue(dummyValue1, 1);
1ae4ee9a59c3 Add CompositeValue replacement test.
Josef Eisl <josef.eisl@jku.at>
parents:
diff changeset
149 LIRInstruction op1 = new TestOp(compValue1);
1ae4ee9a59c3 Add CompositeValue replacement test.
Josef Eisl <josef.eisl@jku.at>
parents:
diff changeset
150 LIRInstruction op2 = new TestOp(compValue1);
1ae4ee9a59c3 Add CompositeValue replacement test.
Josef Eisl <josef.eisl@jku.at>
parents:
diff changeset
151
17289
4372344cf3d8 Use Lambdas in CompositeValueReplacementTests.
Josef Eisl <josef.eisl@jku.at>
parents: 17283
diff changeset
152 op1.forEachInput((instruction, value, mode, flags) -> {
4372344cf3d8 Use Lambdas in CompositeValueReplacementTests.
Josef Eisl <josef.eisl@jku.at>
parents: 17283
diff changeset
153 assertEquals(dummyValue1, value);
4372344cf3d8 Use Lambdas in CompositeValueReplacementTests.
Josef Eisl <josef.eisl@jku.at>
parents: 17283
diff changeset
154 return dummyValue2;
16738
1ae4ee9a59c3 Add CompositeValue replacement test.
Josef Eisl <josef.eisl@jku.at>
parents:
diff changeset
155 });
1ae4ee9a59c3 Add CompositeValue replacement test.
Josef Eisl <josef.eisl@jku.at>
parents:
diff changeset
156
17289
4372344cf3d8 Use Lambdas in CompositeValueReplacementTests.
Josef Eisl <josef.eisl@jku.at>
parents: 17283
diff changeset
157 op2.forEachInput((instruction, value, mode, flags) -> {
4372344cf3d8 Use Lambdas in CompositeValueReplacementTests.
Josef Eisl <josef.eisl@jku.at>
parents: 17283
diff changeset
158 assertEquals(dummyValue1, value);
4372344cf3d8 Use Lambdas in CompositeValueReplacementTests.
Josef Eisl <josef.eisl@jku.at>
parents: 17283
diff changeset
159 return dummyValue3;
16738
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
17289
4372344cf3d8 Use Lambdas in CompositeValueReplacementTests.
Josef Eisl <josef.eisl@jku.at>
parents: 17283
diff changeset
162 op1.visitEachInput((instruction, value, mode, flags) -> assertEquals(dummyValue2, value));
4372344cf3d8 Use Lambdas in CompositeValueReplacementTests.
Josef Eisl <josef.eisl@jku.at>
parents: 17283
diff changeset
163 op2.visitEachInput((instruction, value, mode, flags) -> assertEquals(dummyValue3, value));
16738
1ae4ee9a59c3 Add CompositeValue replacement test.
Josef Eisl <josef.eisl@jku.at>
parents:
diff changeset
164 }
1ae4ee9a59c3 Add CompositeValue replacement test.
Josef Eisl <josef.eisl@jku.at>
parents:
diff changeset
165 }