7081938: JSR292: assert(magic_number_2() == MAGIC_NUMBER_2) failed
Reviewed-by: never, bdelsart
This commit is contained in:
parent
fa43b0cdd8
commit
de00cc778c
@ -232,11 +232,13 @@ bool frame::safe_for_sender(JavaThread *thread) {
|
|||||||
|
|
||||||
|
|
||||||
void frame::patch_pc(Thread* thread, address pc) {
|
void frame::patch_pc(Thread* thread, address pc) {
|
||||||
|
address* pc_addr = &(((address*) sp())[-1]);
|
||||||
if (TracePcPatching) {
|
if (TracePcPatching) {
|
||||||
tty->print_cr("patch_pc at address" INTPTR_FORMAT " [" INTPTR_FORMAT " -> " INTPTR_FORMAT "] ",
|
tty->print_cr("patch_pc at address " INTPTR_FORMAT " [" INTPTR_FORMAT " -> " INTPTR_FORMAT "] ",
|
||||||
&((address *)sp())[-1], ((address *)sp())[-1], pc);
|
pc_addr, *pc_addr, pc);
|
||||||
}
|
}
|
||||||
((address *)sp())[-1] = pc;
|
assert(_pc == *pc_addr, err_msg("must be: " INTPTR_FORMAT " == " INTPTR_FORMAT, _pc, *pc_addr));
|
||||||
|
*pc_addr = pc;
|
||||||
_cb = CodeCache::find_blob(pc);
|
_cb = CodeCache::find_blob(pc);
|
||||||
address original_pc = nmethod::get_deopt_original_pc(this);
|
address original_pc = nmethod::get_deopt_original_pc(this);
|
||||||
if (original_pc != NULL) {
|
if (original_pc != NULL) {
|
||||||
@ -671,4 +673,3 @@ intptr_t *frame::initial_deoptimization_info() {
|
|||||||
// used to reset the saved FP
|
// used to reset the saved FP
|
||||||
return fp();
|
return fp();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -410,8 +410,8 @@ void MethodHandles::RicochetFrame::verify_offsets() {
|
|||||||
|
|
||||||
void MethodHandles::RicochetFrame::verify() const {
|
void MethodHandles::RicochetFrame::verify() const {
|
||||||
verify_offsets();
|
verify_offsets();
|
||||||
assert(magic_number_1() == MAGIC_NUMBER_1, "");
|
assert(magic_number_1() == MAGIC_NUMBER_1, err_msg(PTR_FORMAT " == " PTR_FORMAT, magic_number_1(), MAGIC_NUMBER_1));
|
||||||
assert(magic_number_2() == MAGIC_NUMBER_2, "");
|
assert(magic_number_2() == MAGIC_NUMBER_2, err_msg(PTR_FORMAT " == " PTR_FORMAT, magic_number_2(), MAGIC_NUMBER_2));
|
||||||
if (!Universe::heap()->is_gc_active()) {
|
if (!Universe::heap()->is_gc_active()) {
|
||||||
if (saved_args_layout() != NULL) {
|
if (saved_args_layout() != NULL) {
|
||||||
assert(saved_args_layout()->is_method(), "must be valid oop");
|
assert(saved_args_layout()->is_method(), "must be valid oop");
|
||||||
|
@ -132,7 +132,10 @@ class RicochetFrame {
|
|||||||
intptr_t* sender_link() const { return _sender_link; }
|
intptr_t* sender_link() const { return _sender_link; }
|
||||||
address sender_pc() const { return _sender_pc; }
|
address sender_pc() const { return _sender_pc; }
|
||||||
|
|
||||||
intptr_t* extended_sender_sp() const { return saved_args_base(); }
|
intptr_t* extended_sender_sp() const {
|
||||||
|
// The extended sender SP is above the current RicochetFrame.
|
||||||
|
return (intptr_t*) (((address) this) + sizeof(RicochetFrame));
|
||||||
|
}
|
||||||
|
|
||||||
intptr_t return_value_slot_number() const {
|
intptr_t return_value_slot_number() const {
|
||||||
return adapter_conversion_vminfo(conversion());
|
return adapter_conversion_vminfo(conversion());
|
||||||
|
Loading…
Reference in New Issue
Block a user