src/share/vm/code/relocInfo.hpp
Index Unified diffs Context diffs Sdiffs Patch New Old Previous File Next File 7028374 Cdiff src/share/vm/code/relocInfo.hpp

src/share/vm/code/relocInfo.hpp

Print this page

        

*** 763,773 **** } } protected: // platform-dependent utilities for decoding and patching instructions ! void pd_set_data_value (address x, intptr_t off); // a set or mem-ref address pd_call_destination (address orig_addr = NULL); void pd_set_call_destination (address x); void pd_swap_in_breakpoint (address x, short* instrs, int instrlen); void pd_swap_out_breakpoint (address x, short* instrs, int instrlen); static int pd_breakpoint_size (); --- 763,774 ---- } } protected: // platform-dependent utilities for decoding and patching instructions ! void pd_set_data_value (address x, intptr_t off, bool verify_only = false); // a set or mem-ref ! void pd_verify_data_value (address x, intptr_t off) { pd_set_data_value(x, off, true); } address pd_call_destination (address orig_addr = NULL); void pd_set_call_destination (address x); void pd_swap_in_breakpoint (address x, short* instrs, int instrlen); void pd_swap_out_breakpoint (address x, short* instrs, int instrlen); static int pd_breakpoint_size ();
*** 878,887 **** --- 879,894 ---- if (addr_in_const()) *(address*)addr() = x; else pd_set_data_value(x, o); } + void verify_value(address x) { + if (addr_in_const()) + assert(*(address*)addr() == x, "must agree"); + else + pd_verify_data_value(x, offset()); + } // The "o" (displacement) argument is relevant only to split relocations // on RISC machines. In some CPUs (SPARC), the set-hi and set-lo ins'ns // can encode more than 32 bits between them. This allows compilers to // share set-hi instructions between addresses that differ by a small
*** 948,957 **** --- 955,966 ---- void pack_data_to(CodeSection* dest); void unpack_data(); void fix_oop_relocation(); // reasserts oop value + void verify_oop_relocation(); + address value() { return (address) *oop_addr(); } bool oop_is_immediate() { return oop_index() == 0; } oop* oop_addr(); // addr or &pool[jint_data]
src/share/vm/code/relocInfo.hpp
Index Unified diffs Context diffs Sdiffs Patch New Old Previous File Next File