132 inline bool frame::is_younger(intptr_t* id) const { assert(this->id() != NULL && id != NULL, "NULL frame id"); 133 return this->id() < id ; } 134 135 // Return true if the frame is older (less recent activation) than the frame represented by id 136 inline bool frame::is_older(intptr_t* id) const { assert(this->id() != NULL && id != NULL, "NULL frame id"); 137 return this->id() > id ; } 138 139 140 141 inline intptr_t* frame::link() const { return (intptr_t*) *(intptr_t **)addr_at(link_offset); } 142 inline void frame::set_link(intptr_t* addr) { *(intptr_t **)addr_at(link_offset) = addr; } 143 144 145 inline intptr_t* frame::unextended_sp() const { return _unextended_sp; } 146 147 // Return address: 148 149 inline address* frame::sender_pc_addr() const { return (address*) addr_at( return_addr_offset); } 150 inline address frame::sender_pc() const { return *sender_pc_addr(); } 151 152 // return address of param, zero origin index. 153 inline address* frame::native_param_addr(int idx) const { return (address*) addr_at( native_frame_initial_param_offset+idx); } 154 155 #ifdef CC_INTERP 156 157 inline interpreterState frame::get_interpreterState() const { 158 return ((interpreterState)addr_at( -((int)sizeof(BytecodeInterpreter))/wordSize )); 159 } 160 161 inline intptr_t* frame::sender_sp() const { 162 // Hmm this seems awfully expensive QQQ, is this really called with interpreted frames? 163 if (is_interpreted_frame()) { 164 assert(false, "should never happen"); 165 return get_interpreterState()->sender_sp(); 166 } else { 167 return addr_at(sender_sp_offset); 168 } 169 } 170 171 inline intptr_t** frame::interpreter_frame_locals_addr() const { 172 assert(is_interpreted_frame(), "must be interpreted"); 173 return &(get_interpreterState()->_locals); 174 } | 132 inline bool frame::is_younger(intptr_t* id) const { assert(this->id() != NULL && id != NULL, "NULL frame id"); 133 return this->id() < id ; } 134 135 // Return true if the frame is older (less recent activation) than the frame represented by id 136 inline bool frame::is_older(intptr_t* id) const { assert(this->id() != NULL && id != NULL, "NULL frame id"); 137 return this->id() > id ; } 138 139 140 141 inline intptr_t* frame::link() const { return (intptr_t*) *(intptr_t **)addr_at(link_offset); } 142 inline void frame::set_link(intptr_t* addr) { *(intptr_t **)addr_at(link_offset) = addr; } 143 144 145 inline intptr_t* frame::unextended_sp() const { return _unextended_sp; } 146 147 // Return address: 148 149 inline address* frame::sender_pc_addr() const { return (address*) addr_at( return_addr_offset); } 150 inline address frame::sender_pc() const { return *sender_pc_addr(); } 151 152 #ifdef CC_INTERP 153 154 inline interpreterState frame::get_interpreterState() const { 155 return ((interpreterState)addr_at( -((int)sizeof(BytecodeInterpreter))/wordSize )); 156 } 157 158 inline intptr_t* frame::sender_sp() const { 159 // Hmm this seems awfully expensive QQQ, is this really called with interpreted frames? 160 if (is_interpreted_frame()) { 161 assert(false, "should never happen"); 162 return get_interpreterState()->sender_sp(); 163 } else { 164 return addr_at(sender_sp_offset); 165 } 166 } 167 168 inline intptr_t** frame::interpreter_frame_locals_addr() const { 169 assert(is_interpreted_frame(), "must be interpreted"); 170 return &(get_interpreterState()->_locals); 171 } |