changeset 22423:4a532b03e2cd

some fixes and improvements based on JEP 243 review
author Doug Simon <doug.simon@oracle.com>
date Fri, 14 Aug 2015 15:35:08 +0200
parents a98a02bad801
children cefff7d980bc
files src/share/vm/runtime/arguments.cpp src/share/vm/runtime/java.cpp src/share/vm/runtime/javaCalls.cpp src/share/vm/runtime/javaCalls.hpp src/share/vm/runtime/thread.cpp src/share/vm/runtime/thread.hpp src/share/vm/runtime/vframeArray.cpp
diffstat 7 files changed, 16 insertions(+), 37 deletions(-) [+]
line wrap: on
line diff
--- a/src/share/vm/runtime/arguments.cpp	Thu Aug 13 11:53:13 2015 -0700
+++ b/src/share/vm/runtime/arguments.cpp	Fri Aug 14 15:35:08 2015 +0200
@@ -1492,7 +1492,7 @@
   // the only value that can override MaxHeapSize if we are
   // to use UseCompressedOops is InitialHeapSize.
   size_t max_heap_size = MAX2(MaxHeapSize, InitialHeapSize);
-  // Set default on jvmci with sparc to not use compressed oops as long they are not implemented
+
   if (max_heap_size <= max_heap_for_compressed_oops()) {
 #if !defined(COMPILER1) || defined(TIERED)
     if (FLAG_IS_DEFAULT(UseCompressedOops)) {
@@ -3615,6 +3615,8 @@
           scp_assembly_required = true;
         }
       }
+      FREE_C_HEAP_ARRAY(char, dbuf, mtInternal);
+      os::closedir(dir);
     }
 
   }
--- a/src/share/vm/runtime/java.cpp	Thu Aug 13 11:53:13 2015 -0700
+++ b/src/share/vm/runtime/java.cpp	Fri Aug 14 15:35:08 2015 +0200
@@ -283,7 +283,7 @@
   }
 #endif // ASSERT
 #else
-#ifdef GRALL
+#ifdef JVMCI
 #ifndef COMPILER1
   if ((TraceDeoptimization || LogVMOutput || LogCompilation) && UseCompiler) {
     FlagSetting fs(DisplayVMOutput, DisplayVMOutput && TraceDeoptimization);
--- a/src/share/vm/runtime/javaCalls.cpp	Thu Aug 13 11:53:13 2015 -0700
+++ b/src/share/vm/runtime/javaCalls.cpp	Fri Aug 14 15:35:08 2015 +0200
@@ -54,7 +54,7 @@
 
   guarantee(thread->is_Java_thread(), "crucial check - the VM thread cannot and must not escape to Java code");
   assert(!thread->owns_locks(), "must release all locks when leaving VM");
-  guarantee(thread->can_call_java(), "cannot make java calls from the compiler");
+  guarantee(thread->can_call_java(), "cannot make java calls from the native compiler");
   _result   = result;
 
   // Allocate handle block for Java code. This must be done before we change thread_state to _thread_in_Java_or_stub,
@@ -192,23 +192,6 @@
   }
 }
 
-// ============ Interface calls ============
-
-void JavaCalls::call_interface(JavaValue* result, KlassHandle spec_klass, Symbol* name, Symbol* signature, JavaCallArguments* args, TRAPS) {
-  CallInfo callinfo;
-  Handle receiver = args->receiver();
-  KlassHandle recvrKlass(THREAD, receiver.is_null() ? (Klass*)NULL : receiver->klass());
-  LinkResolver::resolve_interface_call(
-          callinfo, receiver, recvrKlass, spec_klass, name, signature,
-          KlassHandle(), false, true, CHECK);
-  methodHandle method = callinfo.selected_method();
-  assert(method.not_null(), "should have thrown exception");
-
-  // Invoke the method
-  JavaCalls::call(result, method, args, CHECK);
-}
-
-
 // ============ Virtual calls ============
 
 void JavaCalls::call_virtual(JavaValue* result, KlassHandle spec_klass, Symbol* name, Symbol* signature, JavaCallArguments* args, TRAPS) {
@@ -374,7 +357,7 @@
 #endif
 
 
-  assert(thread->can_call_java(), "cannot compile from the compiler");
+  assert(thread->can_call_java(), "cannot compile from the native compiler");
   if (CompilationPolicy::must_be_compiled(method)) {
     CompileBroker::compile_method(method, InvocationEntryBci,
                                   CompilationPolicy::policy()->initial_compile_level(),
@@ -421,7 +404,7 @@
 #if INCLUDE_JVMCI
   if (nm != NULL) {
     if (nm->is_alive()) {
-      ((JavaThread*) THREAD)->set_jvmci_alternate_call_target(nm->verified_entry_point());
+      thread->set_jvmci_alternate_call_target(nm->verified_entry_point());
       entry_point = method->adapter()->get_i2c_entry();
     } else {
       THROW(vmSymbols::jdk_internal_jvmci_code_InvalidInstalledCodeException());
--- a/src/share/vm/runtime/javaCalls.hpp	Thu Aug 13 11:53:13 2015 -0700
+++ b/src/share/vm/runtime/javaCalls.hpp	Fri Aug 14 15:35:08 2015 +0200
@@ -210,12 +210,6 @@
   static void call_special(JavaValue* result, Handle receiver, KlassHandle klass, Symbol* name, Symbol* signature, Handle arg1, TRAPS);
   static void call_special(JavaValue* result, Handle receiver, KlassHandle klass, Symbol* name, Symbol* signature, Handle arg1, Handle arg2, TRAPS);
 
-  // interface call
-  // ------------
-
-  // The receiver must be first oop in argument list
-  static void call_interface(JavaValue* result, KlassHandle spec_klass, Symbol* name, Symbol* signature, JavaCallArguments* args, TRAPS);
-
   // virtual call
   // ------------
 
--- a/src/share/vm/runtime/thread.cpp	Thu Aug 13 11:53:13 2015 -0700
+++ b/src/share/vm/runtime/thread.cpp	Fri Aug 14 15:35:08 2015 +0200
@@ -3648,10 +3648,7 @@
   // Note that we do not use CHECK_0 here since we are inside an EXCEPTION_MARK and
   // set_init_completed has just been called, causing exceptions not to be shortcut
   // anymore. We call vm_exit_during_initialization directly instead.
-  SystemDictionary::compute_java_system_loader(THREAD);
-  if (HAS_PENDING_EXCEPTION) {
-    vm_exit_during_initialization(Handle(THREAD, PENDING_EXCEPTION));
-  }
+  SystemDictionary::compute_java_system_loader(CHECK_(JNI_ERR));
 
 #if INCLUDE_ALL_GCS
   // Support for ConcurrentMarkSweep. This should be cleaned up
--- a/src/share/vm/runtime/thread.hpp	Thu Aug 13 11:53:13 2015 -0700
+++ b/src/share/vm/runtime/thread.hpp	Fri Aug 14 15:35:08 2015 +0200
@@ -324,7 +324,7 @@
   virtual bool is_Worker_thread() const              { return false; }
 
   // Can this thread make Java upcalls
-  virtual bool can_call_java() const                 { return true;  }
+  virtual bool can_call_java() const                 { return false; }
 
   // Casts
   virtual WorkerThread* as_Worker_thread() const     { return NULL; }
@@ -1032,13 +1032,14 @@
   void cleanup_failed_attach_current_thread();
 
   // Track the nmethod currently being scanned by the sweeper
-  void          set_scanned_nmethod(nmethod* nm) {
+  void set_scanned_nmethod(nmethod* nm) {
     assert(_scanned_nmethod == NULL || nm == NULL, "should reset to NULL before writing a new value");
     _scanned_nmethod = nm;
   }
 
   // Testers
   virtual bool is_Java_thread() const            { return true;  }
+  virtual bool can_call_java() const             { return true; }
 
   // Thread chain operations
   JavaThread* next() const                       { return _next; }
@@ -1881,7 +1882,7 @@
   virtual bool can_call_java() const             { return false; }
 #endif
 
-  // Hide this compiler thread from external view.
+  // Hide native compiler threads from external view.
   bool is_hidden_from_external_view() const      { return !can_call_java(); }
 
   void set_compiler(AbstractCompiler* c)         { _compiler = c; }
--- a/src/share/vm/runtime/vframeArray.cpp	Thu Aug 13 11:53:13 2015 -0700
+++ b/src/share/vm/runtime/vframeArray.cpp	Fri Aug 14 15:35:08 2015 +0200
@@ -347,7 +347,8 @@
           if (o == NULL) {
             tty->print_cr("NULL");
           } else {
-            tty->print_raw_cr(err_msg("%s", o->klass()->name()->as_C_string()));
+            ResourceMark rm;
+            tty->print_raw_cr(o->klass()->name()->as_C_string());
           }
         }
 #endif
@@ -384,7 +385,8 @@
           if (o == NULL) {
             tty->print_cr("NULL");
           } else {
-            tty->print_raw_cr(err_msg("%s", o->klass()->name()->as_C_string()));
+            ResourceMark rm;
+            tty->print_raw_cr(o->klass()->name()->as_C_string());
           }
         }
 #endif