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