[prev in list] [next in list] [prev in thread] [next in thread]
List: openjdk-serviceability-dev
Subject: Re: RFR: 8229516: Thread.isInterrupted() always returns false after thread termination
From: David Holmes <david.holmes () oracle ! com>
Date: 2019-10-31 8:45:00
Message-ID: 57b1a2ad-2361-dfee-0085-2098fefe1d66 () oracle ! com
[Download RAW message or body]
Thanks Doug! Appreciate the help getting the Graal bits correct.
David
On 31/10/2019 5:47 pm, Doug Simon wrote:
>
>
> > On 31 Oct 2019, at 05:30, David Holmes <david.holmes@oracle.com
> > <mailto:david.holmes@oracle.com>> wrote:
> >
> > Hi Doug,
> >
> > On 30/10/2019 10:06 pm, Doug Simon wrote:
> > > > On 30 Oct 2019, at 05:28, David Holmes <david.holmes@oracle.com
> > > > <mailto:david.holmes@oracle.com>> wrote:
> > > >
> > > > Hi Doug,
> > > >
> > > > Your proposed patch wasn't quite right. I made some adjustments but
> > > > I'm still having issues with the test,
> > > > HotSpotMethodSubstitutionTest.testThreadSubstitutions, as I don't
> > > > see how to make the test execution conditional on the VM config.
> > > Like this:
> >
> > Thanks for that! One alteration below ...
> >
> > > diff --git
> > > a/compiler/src/org.graalvm.compiler.hotspot.test/src/org/graalvm/compiler/hotspot/test/HotSpotMethodSubstitutionTest.java \
> > > b/compiler/src/org.graalvm.compiler.hotspot.test/src/org/graalvm/compiler/hotspot/test/HotSpotMethodSubstitutionTest.java
> > > index 96e7d979d36..3c928b86961 100644
> > > ---
> > > a/compiler/src/org.graalvm.compiler.hotspot.test/src/org/graalvm/compiler/hotspot/test/HotSpotMethodSubstitutionTest.java
> > >
> > > +++
> > > b/compiler/src/org.graalvm.compiler.hotspot.test/src/org/graalvm/compiler/hotspot/test/HotSpotMethodSubstitutionTest.java
> > > @@ -28,12 +28,13 @@ import java.lang.invoke.ConstantCallSite;
> > > import java.lang.invoke.MethodHandles;
> > > import java.lang.invoke.MethodType;
> > > -import org.graalvm.compiler.nodes.IfNode;
> > > -import org.junit.Test;
> > > -
> > > import org.graalvm.compiler.api.directives.GraalDirectives;
> > > import org.graalvm.compiler.api.replacements.MethodSubstitution;
> > > +import org.graalvm.compiler.hotspot.GraalHotSpotVMConfig;
> > > +import org.graalvm.compiler.hotspot.HotSpotBackend;
> > > +import org.graalvm.compiler.nodes.IfNode;
> > > import org.graalvm.compiler.replacements.test.MethodSubstitutionTest;
> > > +import org.junit.Test;
> > > /**
> > > * Tests HotSpot specific {@link MethodSubstitution}s.
> > > @@ -133,13 +134,18 @@ public class HotSpotMethodSubstitutionTest
> > > extends MethodSubstitutionTest {
> > > @Test
> > > public void testThreadSubstitutions() {
> > > + GraalHotSpotVMConfig config = ((HotSpotBackend)
> > > getBackend()).getRuntime().getVMConfig();
> > > testGraph("currentThread");
> > > - assertInGraph(testGraph("threadIsInterrupted",
> > > "isInterrupted", true), IfNode.class);
> > > - assertInGraph(testGraph("threadInterrupted",
> > > "isInterrupted", true), IfNode.class);
> > > + if (config.osThreadOffset != Integer.MAX_VALUE) {
> >
> > s/osThreadOffset/osThreadInterruptedOffset/
>
> Good catch. Sorry about that.
> >
> > This change removes the interrupted field from osThread but not
> > osThread itself. Though as osThread is only used to then access the
> > interrupted field, I could both the same. Here's updated webrev
> > showing that:
> >
> > http://cr.openjdk.java.net/~dholmes/8229516/webrev.v2/
>
> Looks good.
>
> -Doug
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic