< prev index next >
src/cpu/sparc/vm/templateTable_sparc.cpp
Print this page
*** 2947,2962 ****
--- 2947,2964 ----
}
}
void TemplateTable::generate_vtable_call(Register Rrecv, Register Rindex, Register Rret) {
+ Register Rtemp = G4_scratch;
Register Rcall = Rindex;
assert_different_registers(Rcall, G5_method, Gargs, Rret);
// get target Method* & entry point
__ lookup_virtual_method(Rrecv, Rindex, G5_method);
__ profile_arguments_type(G5_method, Rcall, Gargs, true);
+ __ profile_called_method(G5_method, Rtemp);
__ call_from_interpreter(Rcall, Gargs, Rret);
}
void TemplateTable::invokevirtual(int byte_no) {
transition(vtos, vtos);
*** 3209,3218 ****
--- 3211,3221 ----
Register Rcall = Rinterface;
assert_different_registers(Rcall, G5_method, Gargs, Rret);
__ profile_arguments_type(G5_method, Rcall, Gargs, true);
+ __ profile_called_method(G5_method, Rscratch);
__ call_from_interpreter(Rcall, Gargs, Rret);
}
void TemplateTable::invokehandle(int byte_no) {
transition(vtos, vtos);
*** 3484,3494 ****
Register Roffset = G1_scratch;
Register RobjKlass = O5;
Register RspecifiedKlass = O4;
// Check for casting a NULL
! __ br_null_short(Otos_i, Assembler::pn, is_null);
// Get value klass in RobjKlass
__ load_klass(Otos_i, RobjKlass); // get value klass
// Get constant pool tag
--- 3487,3498 ----
Register Roffset = G1_scratch;
Register RobjKlass = O5;
Register RspecifiedKlass = O4;
// Check for casting a NULL
! __ br_null(Otos_i, false, Assembler::pn, is_null);
! __ delayed()->nop();
// Get value klass in RobjKlass
__ load_klass(Otos_i, RobjKlass); // get value klass
// Get constant pool tag
*** 3540,3550 ****
Register Roffset = G1_scratch;
Register RobjKlass = O5;
Register RspecifiedKlass = O4;
// Check for casting a NULL
! __ br_null_short(Otos_i, Assembler::pt, is_null);
// Get value klass in RobjKlass
__ load_klass(Otos_i, RobjKlass); // get value klass
// Get constant pool tag
--- 3544,3555 ----
Register Roffset = G1_scratch;
Register RobjKlass = O5;
Register RspecifiedKlass = O4;
// Check for casting a NULL
! __ br_null(Otos_i, false, Assembler::pt, is_null);
! __ delayed()->nop();
// Get value klass in RobjKlass
__ load_klass(Otos_i, RobjKlass); // get value klass
// Get constant pool tag
< prev index next >