src/cpu/sparc/vm/methodHandles_sparc.cpp
Index
Unified diffs
Context diffs
Sdiffs
Wdiffs
Patch
New
Old
Previous File
Next File
*** old/src/cpu/sparc/vm/methodHandles_sparc.cpp Fri Oct 5 11:54:14 2012
--- new/src/cpu/sparc/vm/methodHandles_sparc.cpp Fri Oct 5 11:54:14 2012
*** 206,217 ****
--- 206,215 ----
// O0: used as temp to hold mh or receiver
// O1, O4: garbage temps, blown away
Register O1_scratch = O1;
Register O4_param_size = O4; // size of parameters
address code_start = __ pc();
// here's where control starts out:
__ align(CodeEntryAlignment);
address entry_point = __ pc();
if (VerifyMethodHandles) {
*** 250,275 ****
--- 248,260 ----
}
// O4_first_arg_addr is live!
if (TraceMethodHandles) {
const char* name = vmIntrinsics::name_at(iid);
if (*name == '_') name += 1;
const size_t len = strlen(name) + 50;
char* qname = NEW_C_HEAP_ARRAY(char, len, mtInternal);
const char* suffix = "";
if (vmIntrinsics::method_for(iid) == NULL ||
!vmIntrinsics::method_for(iid)->access_flags().is_public()) {
if (is_signature_polymorphic_static(iid))
suffix = "/static";
else
suffix = "/private";
}
jio_snprintf(qname, len, "MethodHandle::interpreter_entry::%s%s", name, suffix);
if (O0_mh != noreg)
__ mov(O0_mh, G3_method_handle); // make stub happy
! trace_method_handle(_masm, qname);
! trace_method_handle_interpreter_entry(_masm, iid);
}
if (iid == vmIntrinsics::_invokeBasic) {
generate_method_handle_dispatch(_masm, iid, O0_mh, noreg, not_for_compiler_entry);
*** 285,302 ****
--- 270,279 ----
__ ld_ptr(__ argument_address(constant(0)), G5_member);
__ add(Gargs, Interpreter::stackElementSize, Gargs);
generate_method_handle_dispatch(_masm, iid, O0_recv, G5_member, not_for_compiler_entry);
}
if (PrintMethodHandleStubs) {
address code_end = __ pc();
tty->print_cr("--------");
tty->print_cr("method handle interpreter entry for %s", vmIntrinsics::name_at(iid));
Disassembler::decode(code_start, code_end);
tty->cr();
}
return entry_point;
}
void MethodHandles::generate_method_handle_dispatch(MacroAssembler* _masm,
vmIntrinsics::ID iid,
src/cpu/sparc/vm/methodHandles_sparc.cpp
Index
Unified diffs
Context diffs
Sdiffs
Wdiffs
Patch
New
Old
Previous File
Next File