# HG changeset patch # User tschatzl # Date 1487847427 -3600 # Node ID 09e328af295aa99df08f40a0f94727d7df09a2a4 # Parent a001553763bc3a15668a778d10e94907a18cc2ad# Parent 6eef3d367beb454f1e50603ce0d383e312e1d6fe Merge diff -r a001553763bc -r 09e328af295a hotspot/src/cpu/s390/vm/macroAssembler_s390.cpp --- a/hotspot/src/cpu/s390/vm/macroAssembler_s390.cpp Thu Feb 23 10:19:05 2017 +0100 +++ b/hotspot/src/cpu/s390/vm/macroAssembler_s390.cpp Thu Feb 23 11:57:07 2017 +0100 @@ -2726,11 +2726,11 @@ BLOCK_COMMENT("lookup_interface_method {"); // Load start of itable entries into itable_entry_addr. - z_llgf(vtable_len, Address(recv_klass, InstanceKlass::vtable_length_offset())); + z_llgf(vtable_len, Address(recv_klass, Klass::vtable_length_offset())); z_sllg(vtable_len, vtable_len, exact_log2(vtableEntry::size_in_bytes())); // Loop over all itable entries until desired interfaceOop(Rinterface) found. - const int vtable_base_offset = in_bytes(InstanceKlass::vtable_start_offset()); + const int vtable_base_offset = in_bytes(Klass::vtable_start_offset()); add2reg_with_index(itable_entry_addr, vtable_base_offset + itableOffsetEntry::interface_offset_in_bytes(), diff -r a001553763bc -r 09e328af295a hotspot/src/cpu/s390/vm/stubGenerator_s390.cpp --- a/hotspot/src/cpu/s390/vm/stubGenerator_s390.cpp Thu Feb 23 10:19:05 2017 +0100 +++ b/hotspot/src/cpu/s390/vm/stubGenerator_s390.cpp Thu Feb 23 11:57:07 2017 +0100 @@ -623,26 +623,6 @@ #define __ (Verbose ? (_masm->block_comment(FILE_AND_LINE),_masm):_masm)-> #endif - //---------------------------------------------------------------------- - // The following routine generates a subroutine to throw an asynchronous - // UnknownError when an unsafe access gets a fault that could not be - // reasonably prevented by the programmer. (Example: SIGBUS/OBJERR.) - // - // Arguments: - // trapping PC: ?? - // - // Results: - // Posts an asynchronous exception, skips the trapping instruction. - // - address generate_handler_for_unsafe_access() { - StubCodeMark mark(this, "StubRoutines", "handler_for_unsafe_access"); - { - address start = __ pc(); - __ unimplemented("StubRoutines::handler_for_unsafe_access", 86); - return start; - } - } - // Support for uint StubRoutine::zarch::partial_subtype_check(Klass // sub, Klass super); // @@ -2462,8 +2442,6 @@ StubRoutines::_throw_IncompatibleClassChangeError_entry= generate_throw_exception("IncompatibleClassChangeError throw_exception", CAST_FROM_FN_PTR(address, SharedRuntime::throw_IncompatibleClassChangeError), false); StubRoutines::_throw_NullPointerException_at_call_entry= generate_throw_exception("NullPointerException at call throw_exception", CAST_FROM_FN_PTR(address, SharedRuntime::throw_NullPointerException_at_call), false); - StubRoutines::zarch::_handler_for_unsafe_access_entry = generate_handler_for_unsafe_access(); - // Support for verify_oop (must happen after universe_init). StubRoutines::_verify_oop_subroutine_entry = generate_verify_oop_subroutine(); diff -r a001553763bc -r 09e328af295a hotspot/src/cpu/s390/vm/stubRoutines_s390.cpp --- a/hotspot/src/cpu/s390/vm/stubRoutines_s390.cpp Thu Feb 23 10:19:05 2017 +0100 +++ b/hotspot/src/cpu/s390/vm/stubRoutines_s390.cpp Thu Feb 23 11:57:07 2017 +0100 @@ -33,8 +33,6 @@ // Implementation of the platform-specific part of StubRoutines - for // a description of how to extend it, see the stubRoutines.hpp file. -address StubRoutines::zarch::_handler_for_unsafe_access_entry = NULL; - address StubRoutines::zarch::_partial_subtype_check = NULL; // Comapct string intrinsics: Translate table for string inflate intrinsic. Used by trot instruction. diff -r a001553763bc -r 09e328af295a hotspot/src/cpu/s390/vm/stubRoutines_s390.hpp --- a/hotspot/src/cpu/s390/vm/stubRoutines_s390.hpp Thu Feb 23 10:19:05 2017 +0100 +++ b/hotspot/src/cpu/s390/vm/stubRoutines_s390.hpp Thu Feb 23 11:57:07 2017 +0100 @@ -68,8 +68,6 @@ }; private: - static address _handler_for_unsafe_access_entry; - static int _atomic_memory_operation_lock; static address _partial_subtype_check; @@ -91,8 +89,6 @@ static int atomic_memory_operation_lock() { return _atomic_memory_operation_lock; } static void set_atomic_memory_operation_lock(int value) { _atomic_memory_operation_lock = value; } - static address handler_for_unsafe_access_entry() { return _handler_for_unsafe_access_entry; } - static address partial_subtype_check() { return _partial_subtype_check; } static void generate_load_crc_table_addr(MacroAssembler* masm, Register table); diff -r a001553763bc -r 09e328af295a hotspot/src/cpu/s390/vm/templateTable_s390.cpp --- a/hotspot/src/cpu/s390/vm/templateTable_s390.cpp Thu Feb 23 10:19:05 2017 +0100 +++ b/hotspot/src/cpu/s390/vm/templateTable_s390.cpp Thu Feb 23 11:57:07 2017 +0100 @@ -3466,7 +3466,7 @@ __ z_sllg(index, index, exact_log2(vtableEntry::size_in_bytes())); __ mem2reg_opt(method, Address(Z_tmp_2, index, - InstanceKlass::vtable_start_offset() + in_ByteSize(vtableEntry::method_offset_in_bytes()))); + Klass::vtable_start_offset() + in_ByteSize(vtableEntry::method_offset_in_bytes()))); __ profile_arguments_type(Z_ARG4, method, Z_ARG5, true); __ jump_from_interpreted(method, Z_ARG4); BLOCK_COMMENT("} invokevirtual_helper"); diff -r a001553763bc -r 09e328af295a hotspot/src/cpu/s390/vm/vtableStubs_s390.cpp --- a/hotspot/src/cpu/s390/vm/vtableStubs_s390.cpp Thu Feb 23 10:19:05 2017 +0100 +++ b/hotspot/src/cpu/s390/vm/vtableStubs_s390.cpp Thu Feb 23 11:57:07 2017 +0100 @@ -83,7 +83,7 @@ __ load_klass(rcvr_klass, Z_ARG1); // Set method (in case of interpreted method), and destination address. - int entry_offset = in_bytes(InstanceKlass::vtable_start_offset()) + + int entry_offset = in_bytes(Klass::vtable_start_offset()) + vtable_index * vtableEntry::size_in_bytes(); #ifndef PRODUCT @@ -96,8 +96,8 @@ // worst case actual size padding_bytes += __ load_const_size() - __ load_const_optimized_rtn_len(vtable_idx, vtable_index*vtableEntry::size_in_bytes(), true); - assert(Immediate::is_uimm12(in_bytes(InstanceKlass::vtable_length_offset())), "disp to large"); - __ z_cl(vtable_idx, in_bytes(InstanceKlass::vtable_length_offset()), rcvr_klass); + assert(Immediate::is_uimm12(in_bytes(Klass::vtable_length_offset())), "disp to large"); + __ z_cl(vtable_idx, in_bytes(Klass::vtable_length_offset()), rcvr_klass); __ z_brl(L); __ z_lghi(Z_ARG3, vtable_index); // Debug code, don't optimize. __ call_VM(noreg, CAST_FROM_FN_PTR(address, bad_compiled_vtable_index), Z_ARG1, Z_ARG3, false); @@ -187,11 +187,11 @@ __ load_klass(rcvr_klass, Z_ARG1); // Load start of itable entries into itable_entry. - __ z_llgf(vtable_len, Address(rcvr_klass, InstanceKlass::vtable_length_offset())); + __ z_llgf(vtable_len, Address(rcvr_klass, Klass::vtable_length_offset())); __ z_sllg(vtable_len, vtable_len, exact_log2(vtableEntry::size_in_bytes())); // Loop over all itable entries until desired interfaceOop(Rinterface) found. - const int vtable_base_offset = in_bytes(InstanceKlass::vtable_start_offset()); + const int vtable_base_offset = in_bytes(Klass::vtable_start_offset()); // Count unused bytes. start_pc = __ pc(); __ add2reg_with_index(itable_entry_addr, vtable_base_offset + itableOffsetEntry::interface_offset_in_bytes(), rcvr_klass, vtable_len);