inline intptr_t* frame::sender_sp() const { if (is_interpreted_frame()) { return (intptr_t*) (*register_addr(GR_Lsave_SP)); } else { #ifndef CORE CodeBlob* cb = CodeCache::find_blob(pc()); assert(cb != NULL, "Didn't find code"); return compiled_sender_sp(cb); #else ShouldNotReachHere(); return NULL; #endif } }
frame frame::sender_for_compiled_frame(RegisterMap *map) const { assert(map != NULL, "map must be set"); // Frame owned by compiler. address pc = *compiled_sender_pc_addr(_cb); frame caller(compiled_sender_sp(_cb), pc); // Now adjust the map. // Get the rest. if (map->update_map()) { // Tell GC to use argument oopmaps for some runtime stubs that need it. map->set_include_argument_oops(_cb->caller_must_gc_arguments(map->thread())); if (_cb->oop_maps() != NULL) { OopMapSet::update_register_map(this, map); } } return caller; }