7196681: NPG: Some JSR 292 tests crash in Windows exception handler

There was a rogue os::breakpoint() call in log_dependency left over from the jsr292 merge.  Also changed verify_oop() calls for metadata to verify_{method,klass}_ptr.

Reviewed-by: kvn, twisti
This commit is contained in:
Coleen Phillimore 2012-09-11 20:20:38 -04:00
parent 08757b8a99
commit 6f1b52ab16
9 changed files with 35 additions and 24 deletions

View file

@ -346,7 +346,7 @@ void MethodHandles::generate_method_handle_dispatch(MacroAssembler* _masm,
// load receiver klass itself
__ null_check(receiver_reg, oopDesc::klass_offset_in_bytes());
__ load_klass(receiver_reg, temp1_recv_klass);
__ verify_oop(temp1_recv_klass);
__ verify_klass_ptr(temp1_recv_klass);
}
BLOCK_COMMENT("check_receiver {");
// The receiver for the MemberName must be in receiver_reg.
@ -354,14 +354,14 @@ void MethodHandles::generate_method_handle_dispatch(MacroAssembler* _masm,
if (VerifyMethodHandles && iid == vmIntrinsics::_linkToSpecial) {
// Did not load it above...
__ load_klass(receiver_reg, temp1_recv_klass);
__ verify_oop(temp1_recv_klass);
__ verify_klass_ptr(temp1_recv_klass);
}
if (VerifyMethodHandles && iid != vmIntrinsics::_linkToInterface) {
Label L_ok;
Register temp2_defc = temp2;
__ load_heap_oop(member_clazz, temp2_defc);
load_klass_from_Class(_masm, temp2_defc, temp3, temp4);
__ verify_oop(temp2_defc);
__ verify_klass_ptr(temp2_defc);
__ check_klass_subtype(temp1_recv_klass, temp2_defc, temp3, temp4, L_ok);
// If we get here, the type check failed!
__ STOP("receiver class disagrees with MemberName.clazz");
@ -438,7 +438,7 @@ void MethodHandles::generate_method_handle_dispatch(MacroAssembler* _masm,
Register temp3_intf = temp3;
__ load_heap_oop(member_clazz, temp3_intf);
load_klass_from_Class(_masm, temp3_intf, temp2, temp4);
__ verify_oop(temp3_intf);
__ verify_klass_ptr(temp3_intf);
Register G5_index = G5_method;
__ ld_ptr(member_vmindex, G5_index);
@ -458,7 +458,7 @@ void MethodHandles::generate_method_handle_dispatch(MacroAssembler* _masm,
temp2, no_sethi_temp,
L_no_such_interface);
__ verify_oop(G5_method);
__ verify_method_ptr(G5_method);
jump_from_method_handle(_masm, G5_method, temp2, temp3, for_compiler_entry);
__ bind(L_no_such_interface);
@ -479,7 +479,7 @@ void MethodHandles::generate_method_handle_dispatch(MacroAssembler* _masm,
// After figuring out which concrete method to call, jump into it.
// Note that this works in the interpreter with no data motion.
// But the compiled version will require that rcx_recv be shifted out.
__ verify_oop(G5_method);
__ verify_method_ptr(G5_method);
jump_from_method_handle(_masm, G5_method, temp1, temp3, for_compiler_entry);
}
}