changeset 8527:8a526d8b4604

Always clear 'queued for compilation' flag at the end of a compilation task
author Gilles Duboscq <duboscq@ssw.jku.at>
date Wed, 27 Mar 2013 14:35:10 +0100
parents 3a105dec912f
children 67f19ede4891
files graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/CompilationTask.java graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/bridge/CompilerToVM.java graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/bridge/CompilerToVMImpl.java src/share/vm/graal/graalCodeInstaller.cpp src/share/vm/graal/graalCompilerToVM.cpp
diffstat 5 files changed, 12 insertions(+), 2 deletions(-) [+]
line wrap: on
line diff
--- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/CompilationTask.java	Wed Mar 27 14:20:07 2013 +0100
+++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/CompilationTask.java	Wed Mar 27 14:35:10 2013 +0100
@@ -114,6 +114,7 @@
             if (method.currentTask() == this) {
                 method.setCurrentTask(null);
             }
+            graalRuntime.getCompilerToVM().clearQueuedForCompilation(method);
             inProgress = false;
             withinEnqueue.set(Boolean.TRUE);
         }
--- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/bridge/CompilerToVM.java	Wed Mar 27 14:20:07 2013 +0100
+++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/bridge/CompilerToVM.java	Wed Mar 27 14:35:10 2013 +0100
@@ -212,4 +212,6 @@
     Local[] getLocalVariableTable(HotSpotResolvedJavaMethod method);
 
     String getFileName(HotSpotResolvedJavaType method);
+
+    void clearQueuedForCompilation(HotSpotResolvedJavaMethod method);
 }
--- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/bridge/CompilerToVMImpl.java	Wed Mar 27 14:20:07 2013 +0100
+++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/bridge/CompilerToVMImpl.java	Wed Mar 27 14:35:10 2013 +0100
@@ -152,4 +152,7 @@
 
     @Override
     public native String getFileName(HotSpotResolvedJavaType method);
+
+    @Override
+    public native void clearQueuedForCompilation(HotSpotResolvedJavaMethod method);
 }
--- a/src/share/vm/graal/graalCodeInstaller.cpp	Wed Mar 27 14:20:07 2013 +0100
+++ b/src/share/vm/graal/graalCodeInstaller.cpp	Wed Mar 27 14:35:10 2013 +0100
@@ -345,8 +345,6 @@
 
   result = GraalEnv::register_method(method, nm, entry_bci, &_offsets, _custom_stack_area_offset, &buffer, stack_slots, _debug_recorder->_oopmaps, &_exception_handler_table,
     GraalCompiler::instance(), _debug_recorder, _dependencies, NULL, -1, true, false, leaf_graph_ids, installed_code, triggered_deoptimizations);
-
-  method->clear_queued_for_compilation();
 }
 
 // constructor used to create a stub
--- a/src/share/vm/graal/graalCompilerToVM.cpp	Wed Mar 27 14:20:07 2013 +0100
+++ b/src/share/vm/graal/graalCompilerToVM.cpp	Wed Mar 27 14:35:10 2013 +0100
@@ -839,6 +839,11 @@
   return result;
 C2V_END
 
+C2V_VMENTRY(void, clearQueuedForCompilation, (JNIEnv *jniEnv, jobject, jobject resolvedMethod))
+  methodHandle method = getMethodFromHotSpotMethod(JNIHandles::resolve(resolvedMethod));
+  method->clear_queued_for_compilation();
+C2V_END
+
 C2V_VMENTRY(jobject, getCode, (JNIEnv *jniEnv, jobject,  jlong metaspace_nmethod))
   ResourceMark rm;
   HandleMark hm;
@@ -1100,6 +1105,7 @@
   {CC"getLineNumberTable",            CC"("HS_RESOLVED_METHOD")[J",                                     FN_PTR(getLineNumberTable)},
   {CC"getLocalVariableTable",         CC"("HS_RESOLVED_METHOD")["LOCAL,                                 FN_PTR(getLocalVariableTable)},
   {CC"getFileName",                   CC"("HS_RESOLVED_JAVA_TYPE")"STRING,                              FN_PTR(getFileName)},
+  {CC"clearQueuedForCompilation",     CC"("HS_RESOLVED_METHOD")V",                                      FN_PTR(clearQueuedForCompilation)},
 };
 
 int CompilerToVM_methods_count() {