# HG changeset patch # User Doug Simon # Date 1439559308 -7200 # Node ID 4a532b03e2cdd75fdd40f6fca73ffaa8d50ad21a # Parent a98a02bad801a456c97af400d97a2369aed55864 some fixes and improvements based on JEP 243 review diff -r a98a02bad801 -r 4a532b03e2cd src/share/vm/runtime/arguments.cpp --- 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); } } diff -r a98a02bad801 -r 4a532b03e2cd src/share/vm/runtime/java.cpp --- 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); diff -r a98a02bad801 -r 4a532b03e2cd src/share/vm/runtime/javaCalls.cpp --- 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()); diff -r a98a02bad801 -r 4a532b03e2cd src/share/vm/runtime/javaCalls.hpp --- 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 // ------------ diff -r a98a02bad801 -r 4a532b03e2cd src/share/vm/runtime/thread.cpp --- 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 diff -r a98a02bad801 -r 4a532b03e2cd src/share/vm/runtime/thread.hpp --- 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; } diff -r a98a02bad801 -r 4a532b03e2cd src/share/vm/runtime/vframeArray.cpp --- 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