22 * questions.
23 *
24 */
25
26 #ifndef CPU_S390_VM_FRAME_S390_INLINE_HPP
27 #define CPU_S390_VM_FRAME_S390_INLINE_HPP
28
29 #include "code/codeCache.hpp"
30 #include "code/vmreg.inline.hpp"
31
32 // Inline functions for z/Architecture frames:
33
34 inline void frame::find_codeblob_and_set_pc_and_deopt_state(address pc) {
35 assert(pc != NULL, "precondition: must have PC");
36
37 _cb = CodeCache::find_blob(pc);
38 _pc = pc; // Must be set for get_deopt_original_pc().
39
40 _fp = (intptr_t *) own_abi()->callers_sp;
41
42 address original_pc = nmethod::get_deopt_original_pc(this);
43 if (original_pc != NULL) {
44 _pc = original_pc;
45 _deopt_state = is_deoptimized;
46 } else {
47 _deopt_state = not_deoptimized;
48 }
49
50 assert(((uint64_t)_sp & 0x7) == 0, "SP must be 8-byte aligned");
51 }
52
53 // Constructors
54
55 // Initialize all fields, _unextended_sp will be adjusted in find_codeblob_and_set_pc_and_deopt_state.
56 inline frame::frame() : _sp(NULL), _unextended_sp(NULL), _fp(NULL), _cb(NULL), _pc(NULL), _deopt_state(unknown) {}
57
58 inline frame::frame(intptr_t* sp) : _sp(sp), _unextended_sp(sp) {
59 find_codeblob_and_set_pc_and_deopt_state((address)own_abi()->return_pc);
60 }
61
62 inline frame::frame(intptr_t* sp, address pc) : _sp(sp), _unextended_sp(sp) {
|
22 * questions.
23 *
24 */
25
26 #ifndef CPU_S390_VM_FRAME_S390_INLINE_HPP
27 #define CPU_S390_VM_FRAME_S390_INLINE_HPP
28
29 #include "code/codeCache.hpp"
30 #include "code/vmreg.inline.hpp"
31
32 // Inline functions for z/Architecture frames:
33
34 inline void frame::find_codeblob_and_set_pc_and_deopt_state(address pc) {
35 assert(pc != NULL, "precondition: must have PC");
36
37 _cb = CodeCache::find_blob(pc);
38 _pc = pc; // Must be set for get_deopt_original_pc().
39
40 _fp = (intptr_t *) own_abi()->callers_sp;
41
42 address original_pc = CompiledMethod::get_deopt_original_pc(this);
43 if (original_pc != NULL) {
44 _pc = original_pc;
45 _deopt_state = is_deoptimized;
46 } else {
47 _deopt_state = not_deoptimized;
48 }
49
50 assert(((uint64_t)_sp & 0x7) == 0, "SP must be 8-byte aligned");
51 }
52
53 // Constructors
54
55 // Initialize all fields, _unextended_sp will be adjusted in find_codeblob_and_set_pc_and_deopt_state.
56 inline frame::frame() : _sp(NULL), _unextended_sp(NULL), _fp(NULL), _cb(NULL), _pc(NULL), _deopt_state(unknown) {}
57
58 inline frame::frame(intptr_t* sp) : _sp(sp), _unextended_sp(sp) {
59 find_codeblob_and_set_pc_and_deopt_state((address)own_abi()->return_pc);
60 }
61
62 inline frame::frame(intptr_t* sp, address pc) : _sp(sp), _unextended_sp(sp) {
|