8148047: Move the vtable length field to Klass

Reviewed-by: cjplummer, twisti, coleenp, kbarrett
This commit is contained in:
Mikael Gerdin 2015-12-01 10:35:49 +01:00
parent 97e169ac77
commit 211dc93a85
32 changed files with 78 additions and 80 deletions

View file

@ -2188,11 +2188,11 @@ void MacroAssembler::lookup_interface_method(Register recv_klass,
}
// Compute start of first itableOffsetEntry (which is at the end of the vtable)
int vtable_base = in_bytes(InstanceKlass::vtable_start_offset());
int vtable_base = in_bytes(Klass::vtable_start_offset());
int scan_step = itableOffsetEntry::size() * wordSize;
int vte_size = vtableEntry::size_in_bytes();
lduw(recv_klass, in_bytes(InstanceKlass::vtable_length_offset()), scan_temp);
lduw(recv_klass, in_bytes(Klass::vtable_length_offset()), scan_temp);
// %%% We should store the aligned, prescaled offset in the klassoop.
// Then the next several instructions would fold away.
@ -2268,7 +2268,7 @@ void MacroAssembler::lookup_virtual_method(Register recv_klass,
Register method_result) {
assert_different_registers(recv_klass, method_result, vtable_index.register_or_noreg());
Register sethi_temp = method_result;
const int base = in_bytes(InstanceKlass::vtable_start_offset()) +
const int base = in_bytes(Klass::vtable_start_offset()) +
// method pointer offset within the vtable entry:
vtableEntry::method_offset_in_bytes();
RegisterOrConstant vtable_offset = vtable_index;