Mercurial > hg > graal-compiler
changeset 22191:3c32af2369d2
More accurate assertion in LIRKind.merge.
author | Roland Schatz <roland.schatz@oracle.com> |
---|---|
date | Thu, 09 Jul 2015 14:29:51 +0200 |
parents | ffe1fd7ff6d7 |
children | 488d54275360 |
files | jvmci/jdk.internal.jvmci.meta/src/jdk/internal/jvmci/meta/LIRKind.java |
diffstat | 1 files changed, 14 insertions(+), 6 deletions(-) [+] |
line wrap: on
line diff
--- a/jvmci/jdk.internal.jvmci.meta/src/jdk/internal/jvmci/meta/LIRKind.java Wed Jul 08 17:26:14 2015 -0700 +++ b/jvmci/jdk.internal.jvmci.meta/src/jdk/internal/jvmci/meta/LIRKind.java Thu Jul 09 14:29:51 2015 +0200 @@ -150,14 +150,13 @@ for (LIRKind kind : kinds) { - assert mergeKind == null || verifyMoveKinds(mergeKind, kind) : String.format("Input kinds do not match %s vs. %s", mergeKind, kind); - if (kind.isDerivedReference()) { /** * Kind is a derived reference therefore the result can only be also a derived * reference. */ - return kind; + mergeKind = kind; + break; } if (mergeKind == null) { mergeKind = kind; @@ -171,7 +170,8 @@ * Inputs consists of values and references. Make the result a derived * reference. */ - return mergeKind.makeDerivedReference(); + mergeKind = mergeKind.makeDerivedReference(); + break; } /* Check that other inputs are also values. */ } else { @@ -180,17 +180,25 @@ /* * Reference maps do not match so the result can only be a derived reference. */ - return mergeKind.makeDerivedReference(); + mergeKind = mergeKind.makeDerivedReference(); + break; } } } - assert mergeKind != null; + assert mergeKind != null && verifyMerge(mergeKind, kinds); // all inputs are values or references, just return one of them return mergeKind; } + private static boolean verifyMerge(LIRKind mergeKind, Iterable<LIRKind> kinds) { + for (LIRKind kind : kinds) { + assert mergeKind == null || verifyMoveKinds(mergeKind, kind) : String.format("Input kinds do not match %s vs. %s", mergeKind, kind); + } + return true; + } + /** * Create a new {@link LIRKind} with the same reference information and a new * {@linkplain #getPlatformKind platform kind}. If the new kind is a longer vector than this,