From: <jik...@li...> - 2013-10-14 20:18:57
|
details: http://hg.code.sourceforge.net/p/jikesrvm/code/rev/9fdea2958e9d changeset: 10702:9fdea2958e9d user: Erik Brangs <eri...@gm...> date: Mon Oct 14 19:04:23 2013 +0200 description: RVM-1053 : Remove only null check guards that are not linked to any registers when resync'ing null check guards. This fixes the code to produce the originally intended behaviour. Previously, all null check guards were removed because the contains test always returned false due to incompatible types. diffstat: rvm/src/org/jikesrvm/compilers/opt/bc2ir/GenerationContext.java | 2 +- rvm/test-src/org/jikesrvm/compilers/opt/bc2ir/GenerationContextTest.java | 4 ---- 2 files changed, 1 insertions(+), 5 deletions(-) diffs (33 lines): diff --git a/rvm/src/org/jikesrvm/compilers/opt/bc2ir/GenerationContext.java b/rvm/src/org/jikesrvm/compilers/opt/bc2ir/GenerationContext.java --- a/rvm/src/org/jikesrvm/compilers/opt/bc2ir/GenerationContext.java +++ b/rvm/src/org/jikesrvm/compilers/opt/bc2ir/GenerationContext.java @@ -822,7 +822,7 @@ Iterator<Map.Entry<Register, RegisterOperand>> i = _ncGuards.entrySet().iterator(); while (i.hasNext()) { Map.Entry<Register, RegisterOperand> entry = i.next(); - if (!(regPool.contains(entry.getValue()))) i.remove(); + if (!(regPool.contains(entry.getKey()))) i.remove(); } } diff --git a/rvm/test-src/org/jikesrvm/compilers/opt/bc2ir/GenerationContextTest.java b/rvm/test-src/org/jikesrvm/compilers/opt/bc2ir/GenerationContextTest.java --- a/rvm/test-src/org/jikesrvm/compilers/opt/bc2ir/GenerationContextTest.java +++ b/rvm/test-src/org/jikesrvm/compilers/opt/bc2ir/GenerationContextTest.java @@ -85,7 +85,6 @@ import org.jikesrvm.runtime.Statics; import org.jikesrvm.tests.util.MethodsForTests; import org.jikesrvm.tests.util.TestingTools; -import org.junit.Ignore; import org.junit.Test; import org.junit.experimental.categories.Category; import org.junit.runner.RunWith; @@ -1960,9 +1959,6 @@ assertFalse(newNullCheckGuard.sameRegisterPropertiesAsExceptForScratchObject(thisNullCheckGuard)); } - @Ignore("currently fails because resync deletes ALL null check guards." + - "This is caused by the use of getValue() instead of getKey() when " + - "checking whether to remove a mapping") @Test public void resyncDoesNotDeleteNullCheckGuardsThatMapToUsedRegisters() throws Exception { NormalMethod nm = TestingTools.getNormalMethod(MethodsForTests.class, "emptyInstanceMethodWithoutAnnotations"); |