src/share/vm/asm/codeBuffer.cpp
Index
Unified diffs
Context diffs
Sdiffs
Patch
New
Old
Previous File
Next File
hotspot Cdiff src/share/vm/asm/codeBuffer.cpp
src/share/vm/asm/codeBuffer.cpp
Print this page
*** 303,312 ****
--- 303,337 ----
// for shorter branches. It will get checked when bound.
return branch_pc;
}
}
+ void CodeSection::relocate(address at, relocInfo::relocType rtype, int format, jint method_index) {
+ RelocationHolder rh;
+ switch (rtype) {
+ case relocInfo::none: return;
+ case relocInfo::opt_virtual_call_type: {
+ rh = opt_virtual_call_Relocation::spec(method_index);
+ break;
+ }
+ case relocInfo::static_call_type: {
+ rh = static_call_Relocation::spec(method_index);
+ break;
+ }
+ case relocInfo::virtual_call_type: {
+ assert(method_index == 0, "resolved method overriding is not supported");
+ rh = Relocation::spec_simple(rtype);
+ break;
+ }
+ default: {
+ rh = Relocation::spec_simple(rtype);
+ break;
+ }
+ }
+ relocate(at, rh, format);
+ }
+
void CodeSection::relocate(address at, RelocationHolder const& spec, int format) {
Relocation* reloc = spec.reloc();
relocInfo::relocType rtype = (relocInfo::relocType) reloc->type();
if (rtype == relocInfo::none) return;
src/share/vm/asm/codeBuffer.cpp
Index
Unified diffs
Context diffs
Sdiffs
Patch
New
Old
Previous File
Next File