diff -r 50c604cb0d5f -r 30245956af37 hotspot/src/share/vm/runtime/sharedRuntime.hpp --- a/hotspot/src/share/vm/runtime/sharedRuntime.hpp Mon Jul 23 13:04:59 2012 -0700 +++ b/hotspot/src/share/vm/runtime/sharedRuntime.hpp Tue Jul 24 10:51:00 2012 -0700 @@ -61,7 +61,6 @@ static RuntimeStub* _resolve_static_call_blob; static DeoptimizationBlob* _deopt_blob; - static RicochetBlob* _ricochet_blob; static SafepointBlob* _polling_page_safepoint_handler_blob; static SafepointBlob* _polling_page_return_handler_blob; @@ -187,7 +186,6 @@ static void throw_NullPointerException(JavaThread* thread); static void throw_NullPointerException_at_call(JavaThread* thread); static void throw_StackOverflowError(JavaThread* thread); - static void throw_WrongMethodTypeException(JavaThread* thread, oopDesc* required, oopDesc* actual); static address continuation_for_implicit_exception(JavaThread* thread, address faulting_pc, ImplicitExceptionKind exception_kind); @@ -223,16 +221,6 @@ return _resolve_static_call_blob->entry_point(); } - static RicochetBlob* ricochet_blob() { -#ifdef X86 - // Currently only implemented on x86 - assert(!EnableInvokeDynamic || _ricochet_blob != NULL, "oops"); -#endif - return _ricochet_blob; - } - - static void generate_ricochet_blob(); - static SafepointBlob* polling_page_return_handler_blob() { return _polling_page_return_handler_blob; } static SafepointBlob* polling_page_safepoint_handler_blob() { return _polling_page_safepoint_handler_blob; } @@ -291,27 +279,6 @@ static char* generate_class_cast_message(JavaThread* thr, const char* name); /** - * Fill in the message for a WrongMethodTypeException - * - * @param thr the current thread - * @param mtype (optional) expected method type (or argument class) - * @param mhandle (optional) actual method handle (or argument) - * @return the dynamically allocated exception message - * - * BCP for the frame on top of the stack must refer to an - * 'invokevirtual' op for a method handle, or an 'invokedyamic' op. - * The caller (or one of its callers) must use a ResourceMark - * in order to correctly free the result. - */ - static char* generate_wrong_method_type_message(JavaThread* thr, - oopDesc* mtype = NULL, - oopDesc* mhandle = NULL); - - /** Return non-null if the mtype is a klass or Class, not a MethodType. */ - static oop wrong_method_type_is_for_single_argument(JavaThread* thr, - oopDesc* mtype); - - /** * Fill in the "X cannot be cast to a Y" message for ClassCastException * * @param name the name of the class of the object attempted to be cast @@ -453,6 +420,10 @@ // convention (handlizes oops, etc), transitions to native, makes the call, // returns to java state (possibly blocking), unhandlizes any result and // returns. + // + // The wrapper may contain special-case code if the given method + // is a JNI critical method, or a compiled method handle adapter, + // such as _invokeBasic, _linkToVirtual, etc. static nmethod *generate_native_wrapper(MacroAssembler* masm, methodHandle method, int compile_id, @@ -647,13 +618,14 @@ AdapterHandlerEntry(); public: - address get_i2c_entry() { return _i2c_entry; } - address get_c2i_entry() { return _c2i_entry; } - address get_c2i_unverified_entry() { return _c2i_unverified_entry; } + address get_i2c_entry() const { return _i2c_entry; } + address get_c2i_entry() const { return _c2i_entry; } + address get_c2i_unverified_entry() const { return _c2i_unverified_entry; } + address base_address(); void relocate(address new_base); - AdapterFingerPrint* fingerprint() { return _fingerprint; } + AdapterFingerPrint* fingerprint() const { return _fingerprint; } AdapterHandlerEntry* next() { return (AdapterHandlerEntry*)BasicHashtableEntry::next(); @@ -665,7 +637,8 @@ bool compare_code(unsigned char* code, int length, int total_args_passed, BasicType* sig_bt); #endif - void print(); + //virtual void print_on(outputStream* st) const; DO NOT USE + void print_adapter_on(outputStream* st) const; }; class AdapterHandlerLibrary: public AllStatic {