# HG changeset patch # User Doug Simon # Date 1368732843 -7200 # Node ID 5650637a38675ca296aeecb89227ec4cb5619dba # Parent 3e049a94d39160d7b8c4cc8fa55b8d119818d5e8 replaced ThreadIsInterruptedStub with use of ForeignCallStub diff -r 3e049a94d391 -r 5650637a3867 graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotRuntime.java --- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotRuntime.java Thu May 16 21:30:39 2013 +0200 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotRuntime.java Thu May 16 21:34:03 2013 +0200 @@ -47,7 +47,6 @@ import static com.oracle.graal.hotspot.stubs.NewInstanceStub.*; import static com.oracle.graal.hotspot.stubs.OSRMigrationEndStub.*; import static com.oracle.graal.hotspot.stubs.StubUtil.*; -import static com.oracle.graal.hotspot.stubs.ThreadIsInterruptedStub.*; import static com.oracle.graal.hotspot.stubs.UnwindExceptionToCallerStub.*; import static com.oracle.graal.hotspot.stubs.VMErrorStub.*; import static com.oracle.graal.java.GraphBuilderPhase.RuntimeCalls.*; @@ -225,7 +224,6 @@ registerStubCall(NEW_ARRAY); registerStubCall(UNWIND_EXCEPTION_TO_CALLER); registerStubCall(NEW_INSTANCE); - registerStubCall(THREAD_IS_INTERRUPTED); registerStubCall(VM_ERROR); HotSpotVMConfig c = config; @@ -245,7 +243,6 @@ registerCRuntimeCall(NEW_ARRAY_C, c.newArrayAddress); registerCRuntimeCall(NEW_INSTANCE_C, c.newInstanceAddress); registerCRuntimeCall(VM_MESSAGE_C, c.vmMessageAddress); - registerCRuntimeCall(THREAD_IS_INTERRUPTED_C, c.threadIsInterruptedAddress); registerCRuntimeCall(VM_ERROR_C, c.vmErrorAddress); if (GraalOptions.IntrinsifyObjectMethods) { @@ -282,7 +279,6 @@ TargetDescription target = getTarget(); link(new NewInstanceStub(this, replacements, target, foreignCalls.get(NEW_INSTANCE))); link(new NewArrayStub(this, replacements, target, foreignCalls.get(NEW_ARRAY))); - link(new ThreadIsInterruptedStub(this, replacements, target, foreignCalls.get(THREAD_IS_INTERRUPTED))); link(new ExceptionHandlerStub(this, replacements, target, foreignCalls.get(EXCEPTION_HANDLER))); link(new UnwindExceptionToCallerStub(this, replacements, target, foreignCalls.get(UNWIND_EXCEPTION_TO_CALLER))); link(new VerifyOopStub(this, replacements, target, foreignCalls.get(VERIFY_OOP))); @@ -301,6 +297,7 @@ linkForeignCall(LOG_PRINTF, config.logPrintfAddress, replacements); linkForeignCall(LOG_OBJECT, config.logObjectAddress, replacements); linkForeignCall(LOG_PRIMITIVE, config.logPrimitiveAddress, replacements); + linkForeignCall(THREAD_IS_INTERRUPTED, config.threadIsInterruptedAddress, replacements); } private static void link(Stub stub) { diff -r 3e049a94d391 -r 5650637a3867 graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/ThreadIsInterruptedStubCall.java --- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/ThreadIsInterruptedStubCall.java Thu May 16 21:30:39 2013 +0200 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/ThreadIsInterruptedStubCall.java Thu May 16 21:34:03 2013 +0200 @@ -29,13 +29,12 @@ import com.oracle.graal.compiler.gen.*; import com.oracle.graal.compiler.target.*; import com.oracle.graal.graph.*; -import com.oracle.graal.hotspot.stubs.*; import com.oracle.graal.lir.*; import com.oracle.graal.nodes.*; import com.oracle.graal.nodes.type.*; /** - * Node implementing a call to {@link ThreadIsInterruptedStub}. + * Node implementing a call to {@code GraalRuntime::thread_is_interrupted}. */ public class ThreadIsInterruptedStubCall extends DeoptimizingStubCall implements LIRGenLowerable { diff -r 3e049a94d391 -r 5650637a3867 graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/stubs/ThreadIsInterruptedStub.java --- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/stubs/ThreadIsInterruptedStub.java Thu May 16 21:30:39 2013 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,60 +0,0 @@ -/* - * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved. - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * This code is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. - * - * This code is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - * version 2 for more details (a copy is included in the LICENSE file that - * accompanied this code). - * - * You should have received a copy of the GNU General Public License version - * 2 along with this work; if not, write to the Free Software Foundation, - * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. - * - * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA - * or visit www.oracle.com if you need additional information or have any - * questions. - */ -package com.oracle.graal.hotspot.stubs; - -import static com.oracle.graal.hotspot.replacements.HotSpotReplacementsUtil.*; -import static com.oracle.graal.hotspot.stubs.StubUtil.*; - -import com.oracle.graal.api.code.*; -import com.oracle.graal.api.meta.*; -import com.oracle.graal.graph.Node.ConstantNodeParameter; -import com.oracle.graal.graph.Node.NodeIntrinsic; -import com.oracle.graal.hotspot.*; -import com.oracle.graal.hotspot.meta.*; -import com.oracle.graal.hotspot.nodes.*; -import com.oracle.graal.nodes.extended.*; -import com.oracle.graal.nodes.spi.*; -import com.oracle.graal.replacements.*; -import com.oracle.graal.word.*; - -/** - * Stub called from {@link ThreadIsInterruptedStubCall}. - */ -public class ThreadIsInterruptedStub extends CRuntimeStub { - - public ThreadIsInterruptedStub(final HotSpotRuntime runtime, Replacements replacements, TargetDescription target, HotSpotForeignCallLinkage linkage) { - super(runtime, replacements, target, linkage); - } - - @Snippet - private static boolean threadIsInterrupted(Thread receiverThread, boolean clearIsInterrupted) { - boolean result = threadIsInterruptedC(THREAD_IS_INTERRUPTED_C, thread(), receiverThread, clearIsInterrupted); - handlePendingException(false); - return result; - } - - public static final ForeignCallDescriptor THREAD_IS_INTERRUPTED_C = descriptorFor(ThreadIsInterruptedStub.class, "threadIsInterruptedC"); - - @NodeIntrinsic(ForeignCallNode.class) - public static native boolean threadIsInterruptedC(@ConstantNodeParameter ForeignCallDescriptor threadIsInterruptedC, Word thread, Thread receiverThread, boolean clearIsInterrupted); -}