src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.graph.test/src/org/graalvm/compiler/graph/test/NodeUsagesTests.java
Index Unified diffs Context diffs Sdiffs Patch New Old Previous File Next File hotspot Sdiff src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.graph.test/src/org/graalvm/compiler/graph/test

src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.graph.test/src/org/graalvm/compiler/graph/test/NodeUsagesTests.java

Print this page




  20  * or visit www.oracle.com if you need additional information or have any
  21  * questions.
  22  */
  23 package org.graalvm.compiler.graph.test;
  24 
  25 import static org.graalvm.compiler.graph.test.matchers.NodeIterableContains.contains;
  26 import static org.graalvm.compiler.graph.test.matchers.NodeIterableIsEmpty.isEmpty;
  27 import static org.graalvm.compiler.graph.test.matchers.NodeIterableIsEmpty.isNotEmpty;
  28 import static org.graalvm.compiler.nodeinfo.NodeCycles.CYCLES_IGNORED;
  29 import static org.graalvm.compiler.nodeinfo.NodeSize.SIZE_IGNORED;
  30 import static org.junit.Assert.assertEquals;
  31 import static org.junit.Assert.assertThat;
  32 
  33 import org.junit.Test;
  34 
  35 import org.graalvm.compiler.graph.Graph;
  36 import org.graalvm.compiler.graph.Node;
  37 import org.graalvm.compiler.graph.NodeClass;
  38 import org.graalvm.compiler.nodeinfo.NodeInfo;
  39 
  40 public class NodeUsagesTests {
  41 
  42     @NodeInfo(cycles = CYCLES_IGNORED, size = SIZE_IGNORED)
  43     static final class Def extends Node {
  44         public static final NodeClass<Def> TYPE = NodeClass.create(Def.class);
  45 
  46         protected Def() {
  47             super(TYPE);
  48         }
  49     }
  50 
  51     @NodeInfo(cycles = CYCLES_IGNORED, size = SIZE_IGNORED)
  52     static final class Use extends Node {
  53         public static final NodeClass<Use> TYPE = NodeClass.create(Use.class);
  54         @Input Def in0;
  55         @Input Def in1;
  56         @Input Def in2;
  57 
  58         protected Use(Def in0, Def in1, Def in2) {
  59             super(TYPE);
  60             this.in0 = in0;
  61             this.in1 = in1;
  62             this.in2 = in2;
  63         }
  64 
  65     }
  66 
  67     @Test
  68     public void testReplaceAtUsages() {
  69         Graph graph = new Graph();
  70         Def def0 = graph.add(new Def());
  71         Def def1 = graph.add(new Def());
  72         Use use0 = graph.add(new Use(def0, null, null));
  73         Use use1 = graph.add(new Use(null, def0, null));
  74         Use use2 = graph.add(new Use(null, null, def0));
  75 
  76         assertEquals(3, def0.getUsageCount());
  77         assertThat(def0.usages(), contains(use0));
  78         assertThat(def0.usages(), contains(use1));
  79         assertThat(def0.usages(), contains(use2));
  80 
  81         assertThat(def0.usages(), isNotEmpty());
  82         assertThat(def1.usages(), isEmpty());
  83 
  84         def0.replaceAtUsages(def1);
  85 
  86         assertThat(def0.usages(), isEmpty());
  87 
  88         assertEquals(3, def1.getUsageCount());
  89         assertThat(def1.usages(), contains(use0));
  90         assertThat(def1.usages(), contains(use1));
  91         assertThat(def1.usages(), contains(use2));
  92 
  93         assertThat(def1.usages(), isNotEmpty());
  94     }
  95 
  96     @Test
  97     public void testReplaceAtUsagesWithPredicateAll() {
  98         Graph graph = new Graph();
  99         Def def0 = graph.add(new Def());
 100         Def def1 = graph.add(new Def());
 101         Use use0 = graph.add(new Use(def0, null, null));
 102         Use use1 = graph.add(new Use(null, def0, null));
 103         Use use2 = graph.add(new Use(null, null, def0));
 104 
 105         assertEquals(3, def0.getUsageCount());
 106         assertThat(def0.usages(), contains(use0));
 107         assertThat(def0.usages(), contains(use1));
 108         assertThat(def0.usages(), contains(use2));
 109 
 110         assertThat(def0.usages(), isNotEmpty());
 111         assertThat(def1.usages(), isEmpty());
 112 
 113         def0.replaceAtMatchingUsages(def1, u -> true);
 114 
 115         assertThat(def0.usages(), isEmpty());
 116 
 117         assertEquals(3, def1.getUsageCount());
 118         assertThat(def1.usages(), contains(use0));
 119         assertThat(def1.usages(), contains(use1));
 120         assertThat(def1.usages(), contains(use2));
 121 
 122         assertThat(def1.usages(), isNotEmpty());
 123     }
 124 
 125     @Test
 126     public void testReplaceAtUsagesWithPredicateNone() {
 127         Graph graph = new Graph();
 128         Def def0 = graph.add(new Def());
 129         Def def1 = graph.add(new Def());
 130         Use use0 = graph.add(new Use(def0, null, null));
 131         Use use1 = graph.add(new Use(null, def0, null));
 132         Use use2 = graph.add(new Use(null, null, def0));
 133 
 134         assertEquals(3, def0.getUsageCount());
 135         assertThat(def0.usages(), contains(use0));
 136         assertThat(def0.usages(), contains(use1));
 137         assertThat(def0.usages(), contains(use2));
 138 
 139         assertThat(def0.usages(), isNotEmpty());
 140         assertThat(def1.usages(), isEmpty());
 141 
 142         def0.replaceAtMatchingUsages(def1, u -> false);
 143 
 144         assertThat(def1.usages(), isEmpty());
 145 
 146         assertEquals(3, def0.getUsageCount());
 147         assertThat(def0.usages(), contains(use0));
 148         assertThat(def0.usages(), contains(use1));
 149         assertThat(def0.usages(), contains(use2));
 150 
 151         assertThat(def0.usages(), isNotEmpty());
 152     }
 153 
 154     @Test
 155     public void testReplaceAtUsagesWithPredicate1() {
 156         Graph graph = new Graph();
 157         Def def0 = graph.add(new Def());
 158         Def def1 = graph.add(new Def());
 159         Use use0 = graph.add(new Use(def0, null, null));
 160         Use use1 = graph.add(new Use(null, def0, null));
 161         Use use2 = graph.add(new Use(null, null, def0));
 162 
 163         assertEquals(3, def0.getUsageCount());
 164         assertThat(def0.usages(), contains(use0));
 165         assertThat(def0.usages(), contains(use1));
 166         assertThat(def0.usages(), contains(use2));
 167 
 168         assertThat(def0.usages(), isNotEmpty());
 169         assertThat(def1.usages(), isEmpty());
 170 
 171         def0.replaceAtMatchingUsages(def1, u -> u == use1);
 172 
 173         assertEquals(1, def1.getUsageCount());
 174         assertThat(def1.usages(), contains(use1));
 175 
 176         assertThat(def1.usages(), isNotEmpty());
 177 
 178         assertEquals(2, def0.getUsageCount());
 179         assertThat(def0.usages(), contains(use0));
 180         assertThat(def0.usages(), contains(use2));
 181 
 182         assertThat(def0.usages(), isNotEmpty());
 183     }
 184 
 185     @Test
 186     public void testReplaceAtUsagesWithPredicate2() {
 187         Graph graph = new Graph();
 188         Def def0 = graph.add(new Def());
 189         Def def1 = graph.add(new Def());
 190         Use use0 = graph.add(new Use(def0, null, null));
 191         Use use1 = graph.add(new Use(null, def0, null));
 192         Use use2 = graph.add(new Use(null, null, def0));
 193 
 194         assertEquals(3, def0.getUsageCount());
 195         assertThat(def0.usages(), contains(use0));
 196         assertThat(def0.usages(), contains(use1));
 197         assertThat(def0.usages(), contains(use2));
 198 
 199         assertThat(def0.usages(), isNotEmpty());
 200         assertThat(def1.usages(), isEmpty());
 201 
 202         def0.replaceAtMatchingUsages(def1, u -> u == use2);
 203 
 204         assertEquals(1, def1.getUsageCount());
 205         assertThat(def1.usages(), contains(use2));
 206 
 207         assertThat(def1.usages(), isNotEmpty());
 208 
 209         assertEquals(2, def0.getUsageCount());
 210         assertThat(def0.usages(), contains(use0));
 211         assertThat(def0.usages(), contains(use1));
 212 
 213         assertThat(def0.usages(), isNotEmpty());
 214     }
 215 
 216     @Test
 217     public void testReplaceAtUsagesWithPredicate0() {
 218         Graph graph = new Graph();
 219         Def def0 = graph.add(new Def());
 220         Def def1 = graph.add(new Def());
 221         Use use0 = graph.add(new Use(def0, null, null));
 222         Use use1 = graph.add(new Use(null, def0, null));
 223         Use use2 = graph.add(new Use(null, null, def0));
 224 
 225         assertEquals(3, def0.getUsageCount());
 226         assertThat(def0.usages(), contains(use0));
 227         assertThat(def0.usages(), contains(use1));
 228         assertThat(def0.usages(), contains(use2));
 229 
 230         assertThat(def0.usages(), isNotEmpty());
 231         assertThat(def1.usages(), isEmpty());
 232 
 233         def0.replaceAtMatchingUsages(def1, u -> u == use0);
 234 
 235         assertEquals(1, def1.getUsageCount());
 236         assertThat(def1.usages(), contains(use0));
 237 
 238         assertThat(def1.usages(), isNotEmpty());
 239 
 240         assertEquals(2, def0.getUsageCount());
 241         assertThat(def0.usages(), contains(use1));
 242         assertThat(def0.usages(), contains(use2));
 243 
 244         assertThat(def0.usages(), isNotEmpty());
 245     }
 246 
 247     @Test
 248     public void testReplaceAtUsagesWithPredicate02() {
 249         Graph graph = new Graph();
 250         Def def0 = graph.add(new Def());
 251         Def def1 = graph.add(new Def());
 252         Use use0 = graph.add(new Use(def0, null, null));
 253         Use use1 = graph.add(new Use(null, def0, null));
 254         Use use2 = graph.add(new Use(null, null, def0));
 255 
 256         assertEquals(3, def0.getUsageCount());
 257         assertThat(def0.usages(), contains(use0));
 258         assertThat(def0.usages(), contains(use1));
 259         assertThat(def0.usages(), contains(use2));
 260 
 261         assertThat(def0.usages(), isNotEmpty());
 262         assertThat(def1.usages(), isEmpty());
 263 
 264         def0.replaceAtMatchingUsages(def1, u -> u != use1);
 265 
 266         assertEquals(1, def0.getUsageCount());
 267         assertThat(def0.usages(), contains(use1));
 268 
 269         assertThat(def0.usages(), isNotEmpty());
 270 
 271         assertEquals(2, def1.getUsageCount());
 272         assertThat(def1.usages(), contains(use0));
 273         assertThat(def1.usages(), contains(use2));
 274 
 275         assertThat(def1.usages(), isNotEmpty());
 276     }
 277 
 278     @Test
 279     public void testReplaceAtUsagesWithPredicate023() {
 280         Graph graph = new Graph();
 281         Def def0 = graph.add(new Def());
 282         Def def1 = graph.add(new Def());
 283         Use use0 = graph.add(new Use(def0, null, null));
 284         Use use1 = graph.add(new Use(null, def0, null));
 285         Use use2 = graph.add(new Use(null, null, def0));
 286         Use use3 = graph.add(new Use(null, null, def0));
 287 
 288         assertEquals(4, def0.getUsageCount());
 289         assertThat(def0.usages(), contains(use0));
 290         assertThat(def0.usages(), contains(use1));
 291         assertThat(def0.usages(), contains(use2));
 292         assertThat(def0.usages(), contains(use3));
 293 
 294         assertThat(def0.usages(), isNotEmpty());
 295         assertThat(def1.usages(), isEmpty());
 296 
 297         def0.replaceAtMatchingUsages(def1, u -> u != use1);
 298 
 299         assertEquals(1, def0.getUsageCount());
 300         assertThat(def0.usages(), contains(use1));
 301 
 302         assertThat(def0.usages(), isNotEmpty());
 303 
 304         assertEquals(3, def1.getUsageCount());
 305         assertThat(def1.usages(), contains(use0));
 306         assertThat(def1.usages(), contains(use2));
 307         assertThat(def1.usages(), contains(use3));
 308 
 309         assertThat(def1.usages(), isNotEmpty());
 310     }
 311 
 312     @Test
 313     public void testReplaceAtUsagesWithPredicate013() {
 314         Graph graph = new Graph();
 315         Def def0 = graph.add(new Def());
 316         Def def1 = graph.add(new Def());
 317         Use use0 = graph.add(new Use(def0, null, null));
 318         Use use1 = graph.add(new Use(null, def0, null));
 319         Use use2 = graph.add(new Use(null, null, def0));
 320         Use use3 = graph.add(new Use(null, null, def0));
 321 
 322         assertEquals(4, def0.getUsageCount());
 323         assertThat(def0.usages(), contains(use0));
 324         assertThat(def0.usages(), contains(use1));
 325         assertThat(def0.usages(), contains(use2));
 326         assertThat(def0.usages(), contains(use3));
 327 
 328         assertThat(def0.usages(), isNotEmpty());
 329         assertThat(def1.usages(), isEmpty());
 330 
 331         def0.replaceAtMatchingUsages(def1, u -> u != use2);
 332 
 333         assertEquals(1, def0.getUsageCount());
 334         assertThat(def0.usages(), contains(use2));
 335 
 336         assertThat(def0.usages(), isNotEmpty());
 337 
 338         assertEquals(3, def1.getUsageCount());
 339         assertThat(def1.usages(), contains(use0));
 340         assertThat(def1.usages(), contains(use1));
 341         assertThat(def1.usages(), contains(use3));
 342 
 343         assertThat(def1.usages(), isNotEmpty());
 344     }
 345 
 346     @Test
 347     public void testReplaceAtUsagesWithPredicate203() {
 348         Graph graph = new Graph();
 349         Def def0 = graph.add(new Def());
 350         Def def1 = graph.add(new Def());
 351         Use use0 = graph.add(new Use(def0, null, null));
 352         Use use1 = graph.add(new Use(null, def0, null));
 353         Use use2 = graph.add(new Use(null, null, def0));
 354         Use use3 = graph.add(new Use(null, null, def0));
 355 
 356         assertEquals(4, def0.getUsageCount());
 357         assertThat(def0.usages(), contains(use0));
 358         assertThat(def0.usages(), contains(use1));
 359         assertThat(def0.usages(), contains(use2));
 360         assertThat(def0.usages(), contains(use3));
 361 
 362         assertThat(def0.usages(), isNotEmpty());
 363         assertThat(def1.usages(), isEmpty());
 364 
 365         def0.replaceAtMatchingUsages(def1, u -> u == use2);
 366 
 367         assertEquals(1, def1.getUsageCount());
 368         assertThat(def1.usages(), contains(use2));
 369 
 370         assertThat(def1.usages(), isNotEmpty());
 371 
 372         assertEquals(3, def0.getUsageCount());
 373         assertThat(def0.usages(), contains(use0));
 374         assertThat(def0.usages(), contains(use1));
 375         assertThat(def0.usages(), contains(use3));
 376 
 377         assertThat(def0.usages(), isNotEmpty());
 378     }
 379 
 380     @Test
 381     public void testReplaceAtUsagesWithPredicate01() {
 382         Graph graph = new Graph();
 383         Def def0 = graph.add(new Def());
 384         Def def1 = graph.add(new Def());
 385         Use use0 = graph.add(new Use(def0, null, null));
 386         Use use1 = graph.add(new Use(null, def0, null));
 387         Use use2 = graph.add(new Use(null, null, def0));
 388 
 389         assertEquals(3, def0.getUsageCount());
 390         assertThat(def0.usages(), contains(use0));
 391         assertThat(def0.usages(), contains(use1));
 392         assertThat(def0.usages(), contains(use2));
 393 
 394         assertThat(def0.usages(), isNotEmpty());
 395         assertThat(def1.usages(), isEmpty());
 396 
 397         def0.replaceAtMatchingUsages(def1, u -> u != use2);
 398 
 399         assertEquals(1, def0.getUsageCount());
 400         assertThat(def0.usages(), contains(use2));
 401 
 402         assertThat(def0.usages(), isNotEmpty());
 403 
 404         assertEquals(2, def1.getUsageCount());
 405         assertThat(def1.usages(), contains(use0));
 406         assertThat(def1.usages(), contains(use1));
 407 
 408         assertThat(def1.usages(), isNotEmpty());
 409     }
 410 
 411     @Test
 412     public void testReplaceAtUsagesWithPredicate12() {
 413         Graph graph = new Graph();
 414         Def def0 = graph.add(new Def());
 415         Def def1 = graph.add(new Def());
 416         Use use0 = graph.add(new Use(def0, null, null));
 417         Use use1 = graph.add(new Use(null, def0, null));
 418         Use use2 = graph.add(new Use(null, null, def0));
 419 
 420         assertEquals(3, def0.getUsageCount());
 421         assertThat(def0.usages(), contains(use0));
 422         assertThat(def0.usages(), contains(use1));
 423         assertThat(def0.usages(), contains(use2));
 424 
 425         assertThat(def0.usages(), isNotEmpty());
 426         assertThat(def1.usages(), isEmpty());
 427 
 428         def0.replaceAtMatchingUsages(def1, u -> u != use0);
 429 
 430         assertEquals(1, def0.getUsageCount());
 431         assertThat(def0.usages(), contains(use0));
 432 
 433         assertThat(def0.usages(), isNotEmpty());


  20  * or visit www.oracle.com if you need additional information or have any
  21  * questions.
  22  */
  23 package org.graalvm.compiler.graph.test;
  24 
  25 import static org.graalvm.compiler.graph.test.matchers.NodeIterableContains.contains;
  26 import static org.graalvm.compiler.graph.test.matchers.NodeIterableIsEmpty.isEmpty;
  27 import static org.graalvm.compiler.graph.test.matchers.NodeIterableIsEmpty.isNotEmpty;
  28 import static org.graalvm.compiler.nodeinfo.NodeCycles.CYCLES_IGNORED;
  29 import static org.graalvm.compiler.nodeinfo.NodeSize.SIZE_IGNORED;
  30 import static org.junit.Assert.assertEquals;
  31 import static org.junit.Assert.assertThat;
  32 
  33 import org.junit.Test;
  34 
  35 import org.graalvm.compiler.graph.Graph;
  36 import org.graalvm.compiler.graph.Node;
  37 import org.graalvm.compiler.graph.NodeClass;
  38 import org.graalvm.compiler.nodeinfo.NodeInfo;
  39 
  40 public class NodeUsagesTests extends GraphTest {
  41 
  42     @NodeInfo(cycles = CYCLES_IGNORED, size = SIZE_IGNORED)
  43     static final class Def extends Node {
  44         public static final NodeClass<Def> TYPE = NodeClass.create(Def.class);
  45 
  46         protected Def() {
  47             super(TYPE);
  48         }
  49     }
  50 
  51     @NodeInfo(cycles = CYCLES_IGNORED, size = SIZE_IGNORED)
  52     static final class Use extends Node {
  53         public static final NodeClass<Use> TYPE = NodeClass.create(Use.class);
  54         @Input Def in0;
  55         @Input Def in1;
  56         @Input Def in2;
  57 
  58         protected Use(Def in0, Def in1, Def in2) {
  59             super(TYPE);
  60             this.in0 = in0;
  61             this.in1 = in1;
  62             this.in2 = in2;
  63         }
  64 
  65     }
  66 
  67     @Test
  68     public void testReplaceAtUsages() {
  69         Graph graph = new Graph(getOptions());
  70         Def def0 = graph.add(new Def());
  71         Def def1 = graph.add(new Def());
  72         Use use0 = graph.add(new Use(def0, null, null));
  73         Use use1 = graph.add(new Use(null, def0, null));
  74         Use use2 = graph.add(new Use(null, null, def0));
  75 
  76         assertEquals(3, def0.getUsageCount());
  77         assertThat(def0.usages(), contains(use0));
  78         assertThat(def0.usages(), contains(use1));
  79         assertThat(def0.usages(), contains(use2));
  80 
  81         assertThat(def0.usages(), isNotEmpty());
  82         assertThat(def1.usages(), isEmpty());
  83 
  84         def0.replaceAtUsages(def1);
  85 
  86         assertThat(def0.usages(), isEmpty());
  87 
  88         assertEquals(3, def1.getUsageCount());
  89         assertThat(def1.usages(), contains(use0));
  90         assertThat(def1.usages(), contains(use1));
  91         assertThat(def1.usages(), contains(use2));
  92 
  93         assertThat(def1.usages(), isNotEmpty());
  94     }
  95 
  96     @Test
  97     public void testReplaceAtUsagesWithPredicateAll() {
  98         Graph graph = new Graph(getOptions());
  99         Def def0 = graph.add(new Def());
 100         Def def1 = graph.add(new Def());
 101         Use use0 = graph.add(new Use(def0, null, null));
 102         Use use1 = graph.add(new Use(null, def0, null));
 103         Use use2 = graph.add(new Use(null, null, def0));
 104 
 105         assertEquals(3, def0.getUsageCount());
 106         assertThat(def0.usages(), contains(use0));
 107         assertThat(def0.usages(), contains(use1));
 108         assertThat(def0.usages(), contains(use2));
 109 
 110         assertThat(def0.usages(), isNotEmpty());
 111         assertThat(def1.usages(), isEmpty());
 112 
 113         def0.replaceAtMatchingUsages(def1, u -> true);
 114 
 115         assertThat(def0.usages(), isEmpty());
 116 
 117         assertEquals(3, def1.getUsageCount());
 118         assertThat(def1.usages(), contains(use0));
 119         assertThat(def1.usages(), contains(use1));
 120         assertThat(def1.usages(), contains(use2));
 121 
 122         assertThat(def1.usages(), isNotEmpty());
 123     }
 124 
 125     @Test
 126     public void testReplaceAtUsagesWithPredicateNone() {
 127         Graph graph = new Graph(getOptions());
 128         Def def0 = graph.add(new Def());
 129         Def def1 = graph.add(new Def());
 130         Use use0 = graph.add(new Use(def0, null, null));
 131         Use use1 = graph.add(new Use(null, def0, null));
 132         Use use2 = graph.add(new Use(null, null, def0));
 133 
 134         assertEquals(3, def0.getUsageCount());
 135         assertThat(def0.usages(), contains(use0));
 136         assertThat(def0.usages(), contains(use1));
 137         assertThat(def0.usages(), contains(use2));
 138 
 139         assertThat(def0.usages(), isNotEmpty());
 140         assertThat(def1.usages(), isEmpty());
 141 
 142         def0.replaceAtMatchingUsages(def1, u -> false);
 143 
 144         assertThat(def1.usages(), isEmpty());
 145 
 146         assertEquals(3, def0.getUsageCount());
 147         assertThat(def0.usages(), contains(use0));
 148         assertThat(def0.usages(), contains(use1));
 149         assertThat(def0.usages(), contains(use2));
 150 
 151         assertThat(def0.usages(), isNotEmpty());
 152     }
 153 
 154     @Test
 155     public void testReplaceAtUsagesWithPredicate1() {
 156         Graph graph = new Graph(getOptions());
 157         Def def0 = graph.add(new Def());
 158         Def def1 = graph.add(new Def());
 159         Use use0 = graph.add(new Use(def0, null, null));
 160         Use use1 = graph.add(new Use(null, def0, null));
 161         Use use2 = graph.add(new Use(null, null, def0));
 162 
 163         assertEquals(3, def0.getUsageCount());
 164         assertThat(def0.usages(), contains(use0));
 165         assertThat(def0.usages(), contains(use1));
 166         assertThat(def0.usages(), contains(use2));
 167 
 168         assertThat(def0.usages(), isNotEmpty());
 169         assertThat(def1.usages(), isEmpty());
 170 
 171         def0.replaceAtMatchingUsages(def1, u -> u == use1);
 172 
 173         assertEquals(1, def1.getUsageCount());
 174         assertThat(def1.usages(), contains(use1));
 175 
 176         assertThat(def1.usages(), isNotEmpty());
 177 
 178         assertEquals(2, def0.getUsageCount());
 179         assertThat(def0.usages(), contains(use0));
 180         assertThat(def0.usages(), contains(use2));
 181 
 182         assertThat(def0.usages(), isNotEmpty());
 183     }
 184 
 185     @Test
 186     public void testReplaceAtUsagesWithPredicate2() {
 187         Graph graph = new Graph(getOptions());
 188         Def def0 = graph.add(new Def());
 189         Def def1 = graph.add(new Def());
 190         Use use0 = graph.add(new Use(def0, null, null));
 191         Use use1 = graph.add(new Use(null, def0, null));
 192         Use use2 = graph.add(new Use(null, null, def0));
 193 
 194         assertEquals(3, def0.getUsageCount());
 195         assertThat(def0.usages(), contains(use0));
 196         assertThat(def0.usages(), contains(use1));
 197         assertThat(def0.usages(), contains(use2));
 198 
 199         assertThat(def0.usages(), isNotEmpty());
 200         assertThat(def1.usages(), isEmpty());
 201 
 202         def0.replaceAtMatchingUsages(def1, u -> u == use2);
 203 
 204         assertEquals(1, def1.getUsageCount());
 205         assertThat(def1.usages(), contains(use2));
 206 
 207         assertThat(def1.usages(), isNotEmpty());
 208 
 209         assertEquals(2, def0.getUsageCount());
 210         assertThat(def0.usages(), contains(use0));
 211         assertThat(def0.usages(), contains(use1));
 212 
 213         assertThat(def0.usages(), isNotEmpty());
 214     }
 215 
 216     @Test
 217     public void testReplaceAtUsagesWithPredicate0() {
 218         Graph graph = new Graph(getOptions());
 219         Def def0 = graph.add(new Def());
 220         Def def1 = graph.add(new Def());
 221         Use use0 = graph.add(new Use(def0, null, null));
 222         Use use1 = graph.add(new Use(null, def0, null));
 223         Use use2 = graph.add(new Use(null, null, def0));
 224 
 225         assertEquals(3, def0.getUsageCount());
 226         assertThat(def0.usages(), contains(use0));
 227         assertThat(def0.usages(), contains(use1));
 228         assertThat(def0.usages(), contains(use2));
 229 
 230         assertThat(def0.usages(), isNotEmpty());
 231         assertThat(def1.usages(), isEmpty());
 232 
 233         def0.replaceAtMatchingUsages(def1, u -> u == use0);
 234 
 235         assertEquals(1, def1.getUsageCount());
 236         assertThat(def1.usages(), contains(use0));
 237 
 238         assertThat(def1.usages(), isNotEmpty());
 239 
 240         assertEquals(2, def0.getUsageCount());
 241         assertThat(def0.usages(), contains(use1));
 242         assertThat(def0.usages(), contains(use2));
 243 
 244         assertThat(def0.usages(), isNotEmpty());
 245     }
 246 
 247     @Test
 248     public void testReplaceAtUsagesWithPredicate02() {
 249         Graph graph = new Graph(getOptions());
 250         Def def0 = graph.add(new Def());
 251         Def def1 = graph.add(new Def());
 252         Use use0 = graph.add(new Use(def0, null, null));
 253         Use use1 = graph.add(new Use(null, def0, null));
 254         Use use2 = graph.add(new Use(null, null, def0));
 255 
 256         assertEquals(3, def0.getUsageCount());
 257         assertThat(def0.usages(), contains(use0));
 258         assertThat(def0.usages(), contains(use1));
 259         assertThat(def0.usages(), contains(use2));
 260 
 261         assertThat(def0.usages(), isNotEmpty());
 262         assertThat(def1.usages(), isEmpty());
 263 
 264         def0.replaceAtMatchingUsages(def1, u -> u != use1);
 265 
 266         assertEquals(1, def0.getUsageCount());
 267         assertThat(def0.usages(), contains(use1));
 268 
 269         assertThat(def0.usages(), isNotEmpty());
 270 
 271         assertEquals(2, def1.getUsageCount());
 272         assertThat(def1.usages(), contains(use0));
 273         assertThat(def1.usages(), contains(use2));
 274 
 275         assertThat(def1.usages(), isNotEmpty());
 276     }
 277 
 278     @Test
 279     public void testReplaceAtUsagesWithPredicate023() {
 280         Graph graph = new Graph(getOptions());
 281         Def def0 = graph.add(new Def());
 282         Def def1 = graph.add(new Def());
 283         Use use0 = graph.add(new Use(def0, null, null));
 284         Use use1 = graph.add(new Use(null, def0, null));
 285         Use use2 = graph.add(new Use(null, null, def0));
 286         Use use3 = graph.add(new Use(null, null, def0));
 287 
 288         assertEquals(4, def0.getUsageCount());
 289         assertThat(def0.usages(), contains(use0));
 290         assertThat(def0.usages(), contains(use1));
 291         assertThat(def0.usages(), contains(use2));
 292         assertThat(def0.usages(), contains(use3));
 293 
 294         assertThat(def0.usages(), isNotEmpty());
 295         assertThat(def1.usages(), isEmpty());
 296 
 297         def0.replaceAtMatchingUsages(def1, u -> u != use1);
 298 
 299         assertEquals(1, def0.getUsageCount());
 300         assertThat(def0.usages(), contains(use1));
 301 
 302         assertThat(def0.usages(), isNotEmpty());
 303 
 304         assertEquals(3, def1.getUsageCount());
 305         assertThat(def1.usages(), contains(use0));
 306         assertThat(def1.usages(), contains(use2));
 307         assertThat(def1.usages(), contains(use3));
 308 
 309         assertThat(def1.usages(), isNotEmpty());
 310     }
 311 
 312     @Test
 313     public void testReplaceAtUsagesWithPredicate013() {
 314         Graph graph = new Graph(getOptions());
 315         Def def0 = graph.add(new Def());
 316         Def def1 = graph.add(new Def());
 317         Use use0 = graph.add(new Use(def0, null, null));
 318         Use use1 = graph.add(new Use(null, def0, null));
 319         Use use2 = graph.add(new Use(null, null, def0));
 320         Use use3 = graph.add(new Use(null, null, def0));
 321 
 322         assertEquals(4, def0.getUsageCount());
 323         assertThat(def0.usages(), contains(use0));
 324         assertThat(def0.usages(), contains(use1));
 325         assertThat(def0.usages(), contains(use2));
 326         assertThat(def0.usages(), contains(use3));
 327 
 328         assertThat(def0.usages(), isNotEmpty());
 329         assertThat(def1.usages(), isEmpty());
 330 
 331         def0.replaceAtMatchingUsages(def1, u -> u != use2);
 332 
 333         assertEquals(1, def0.getUsageCount());
 334         assertThat(def0.usages(), contains(use2));
 335 
 336         assertThat(def0.usages(), isNotEmpty());
 337 
 338         assertEquals(3, def1.getUsageCount());
 339         assertThat(def1.usages(), contains(use0));
 340         assertThat(def1.usages(), contains(use1));
 341         assertThat(def1.usages(), contains(use3));
 342 
 343         assertThat(def1.usages(), isNotEmpty());
 344     }
 345 
 346     @Test
 347     public void testReplaceAtUsagesWithPredicate203() {
 348         Graph graph = new Graph(getOptions());
 349         Def def0 = graph.add(new Def());
 350         Def def1 = graph.add(new Def());
 351         Use use0 = graph.add(new Use(def0, null, null));
 352         Use use1 = graph.add(new Use(null, def0, null));
 353         Use use2 = graph.add(new Use(null, null, def0));
 354         Use use3 = graph.add(new Use(null, null, def0));
 355 
 356         assertEquals(4, def0.getUsageCount());
 357         assertThat(def0.usages(), contains(use0));
 358         assertThat(def0.usages(), contains(use1));
 359         assertThat(def0.usages(), contains(use2));
 360         assertThat(def0.usages(), contains(use3));
 361 
 362         assertThat(def0.usages(), isNotEmpty());
 363         assertThat(def1.usages(), isEmpty());
 364 
 365         def0.replaceAtMatchingUsages(def1, u -> u == use2);
 366 
 367         assertEquals(1, def1.getUsageCount());
 368         assertThat(def1.usages(), contains(use2));
 369 
 370         assertThat(def1.usages(), isNotEmpty());
 371 
 372         assertEquals(3, def0.getUsageCount());
 373         assertThat(def0.usages(), contains(use0));
 374         assertThat(def0.usages(), contains(use1));
 375         assertThat(def0.usages(), contains(use3));
 376 
 377         assertThat(def0.usages(), isNotEmpty());
 378     }
 379 
 380     @Test
 381     public void testReplaceAtUsagesWithPredicate01() {
 382         Graph graph = new Graph(getOptions());
 383         Def def0 = graph.add(new Def());
 384         Def def1 = graph.add(new Def());
 385         Use use0 = graph.add(new Use(def0, null, null));
 386         Use use1 = graph.add(new Use(null, def0, null));
 387         Use use2 = graph.add(new Use(null, null, def0));
 388 
 389         assertEquals(3, def0.getUsageCount());
 390         assertThat(def0.usages(), contains(use0));
 391         assertThat(def0.usages(), contains(use1));
 392         assertThat(def0.usages(), contains(use2));
 393 
 394         assertThat(def0.usages(), isNotEmpty());
 395         assertThat(def1.usages(), isEmpty());
 396 
 397         def0.replaceAtMatchingUsages(def1, u -> u != use2);
 398 
 399         assertEquals(1, def0.getUsageCount());
 400         assertThat(def0.usages(), contains(use2));
 401 
 402         assertThat(def0.usages(), isNotEmpty());
 403 
 404         assertEquals(2, def1.getUsageCount());
 405         assertThat(def1.usages(), contains(use0));
 406         assertThat(def1.usages(), contains(use1));
 407 
 408         assertThat(def1.usages(), isNotEmpty());
 409     }
 410 
 411     @Test
 412     public void testReplaceAtUsagesWithPredicate12() {
 413         Graph graph = new Graph(getOptions());
 414         Def def0 = graph.add(new Def());
 415         Def def1 = graph.add(new Def());
 416         Use use0 = graph.add(new Use(def0, null, null));
 417         Use use1 = graph.add(new Use(null, def0, null));
 418         Use use2 = graph.add(new Use(null, null, def0));
 419 
 420         assertEquals(3, def0.getUsageCount());
 421         assertThat(def0.usages(), contains(use0));
 422         assertThat(def0.usages(), contains(use1));
 423         assertThat(def0.usages(), contains(use2));
 424 
 425         assertThat(def0.usages(), isNotEmpty());
 426         assertThat(def1.usages(), isEmpty());
 427 
 428         def0.replaceAtMatchingUsages(def1, u -> u != use0);
 429 
 430         assertEquals(1, def0.getUsageCount());
 431         assertThat(def0.usages(), contains(use0));
 432 
 433         assertThat(def0.usages(), isNotEmpty());
src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.graph.test/src/org/graalvm/compiler/graph/test/NodeUsagesTests.java
Index Unified diffs Context diffs Sdiffs Patch New Old Previous File Next File