hotspot/src/cpu/x86/vm/frame_x86.inline.hpp
Print this page
rev 611 : Merge
*** 1,10 ****
- #ifdef USE_PRAGMA_IDENT_HDR
- #pragma ident "@(#)frame_x86.inline.hpp 1.76 07/09/17 09:35:34 JVM"
- #endif
/*
! * Copyright 1997-2007 Sun Microsystems, Inc. All Rights Reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation.
--- 1,7 ----
/*
! * Copyright 1997-2008 Sun Microsystems, Inc. All Rights Reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation.
*** 73,91 ****
inline frame::frame(intptr_t* sp, intptr_t* fp) {
_sp = sp;
_unextended_sp = sp;
_fp = fp;
_pc = (address)(sp[-1]);
! assert(_pc != NULL, "no pc?");
_cb = CodeCache::find_blob(_pc);
! // In case of native stubs, the pc retreived here might be
! // wrong. (the _last_native_pc will have the right value)
! // So do not put add any asserts on the _pc here.
!
! // QQQ The above comment is wrong and has been wrong for years. This constructor
! // should (and MUST) not be called in that situation. In the native situation
! // the pc should be supplied to the constructor.
_deopt_state = not_deoptimized;
if (_cb != NULL && _cb->is_nmethod() && ((nmethod*)_cb)->is_deopt_pc(_pc)) {
_pc = (((nmethod*)_cb)->get_original_pc(this));
_deopt_state = is_deoptimized;
} else {
--- 70,93 ----
inline frame::frame(intptr_t* sp, intptr_t* fp) {
_sp = sp;
_unextended_sp = sp;
_fp = fp;
_pc = (address)(sp[-1]);
!
! // Here's a sticky one. This constructor can be called via AsyncGetCallTrace
! // when last_Java_sp is non-null but the pc fetched is junk. If we are truly
! // unlucky the junk value could be to a zombied method and we'll die on the
! // find_blob call. This is also why we can have no asserts on the validity
! // of the pc we find here. AsyncGetCallTrace -> pd_get_top_frame_for_signal_handler
! // -> pd_last_frame should use a specialized version of pd_last_frame which could
! // call a specilaized frame constructor instead of this one.
! // Then we could use the assert below. However this assert is of somewhat dubious
! // value.
! // assert(_pc != NULL, "no pc?");
!
_cb = CodeCache::find_blob(_pc);
!
_deopt_state = not_deoptimized;
if (_cb != NULL && _cb->is_nmethod() && ((nmethod*)_cb)->is_deopt_pc(_pc)) {
_pc = (((nmethod*)_cb)->get_original_pc(this));
_deopt_state = is_deoptimized;
} else {
*** 155,165 ****
return &(get_interpreterState()->_locals);
}
inline intptr_t* frame::interpreter_frame_bcx_addr() const {
assert(is_interpreted_frame(), "must be interpreted");
! return (jint*) &(get_interpreterState()->_bcp);
}
// Constant pool cache
--- 157,167 ----
return &(get_interpreterState()->_locals);
}
inline intptr_t* frame::interpreter_frame_bcx_addr() const {
assert(is_interpreted_frame(), "must be interpreted");
! return (intptr_t*) &(get_interpreterState()->_bcp);
}
// Constant pool cache
*** 175,185 ****
return &(get_interpreterState()->_method);
}
inline intptr_t* frame::interpreter_frame_mdx_addr() const {
assert(is_interpreted_frame(), "must be interpreted");
! return (jint*) &(get_interpreterState()->_mdx);
}
// top of expression stack
inline intptr_t* frame::interpreter_frame_tos_address() const {
assert(is_interpreted_frame(), "wrong frame type");
--- 177,187 ----
return &(get_interpreterState()->_method);
}
inline intptr_t* frame::interpreter_frame_mdx_addr() const {
assert(is_interpreted_frame(), "must be interpreted");
! return (intptr_t*) &(get_interpreterState()->_mdx);
}
// top of expression stack
inline intptr_t* frame::interpreter_frame_tos_address() const {
assert(is_interpreted_frame(), "wrong frame type");
*** 287,292 ****
}
inline void frame::set_saved_oop_result(RegisterMap* map, oop obj) {
*((oop*) map->location(rax->as_VMReg())) = obj;
}
-
--- 289,293 ----