diff a/src/hotspot/cpu/ppc/frame_ppc.inline.hpp b/src/hotspot/cpu/ppc/frame_ppc.inline.hpp --- a/src/hotspot/cpu/ppc/frame_ppc.inline.hpp +++ b/src/hotspot/cpu/ppc/frame_ppc.inline.hpp @@ -325,18 +325,24 @@ return result; } inline frame frame::sender_for_compiled_frame(RegisterMap *map) const { assert(map != nullptr, "map must be set"); + assert(!_cb->is_nmethod() || !_cb->as_nmethod()->needs_stack_repair(), "unsupported"); intptr_t* sender_sp = this->sender_sp(); address sender_pc = this->sender_pc(); if (map->update_map()) { // Tell GC to use argument oopmaps for some runtime stubs that need it. // For C1, the runtime stub might not have oop maps, so set this flag // outside of update_register_map. +#ifdef COMPILER1 + DEBUG_ONLY(nmethod* nm = _cb->as_nmethod_or_null()); + assert(nm == nullptr || !nm->is_compiled_by_c1() || !nm->method()->has_scalarized_args() || + pc() >= nm->verified_inline_entry_point(), "unsupported"); +#endif if (!_cb->is_nmethod()) { // compiled frames do not use callee-saved registers map->set_include_argument_oops(_cb->caller_must_gc_arguments(map->thread())); if (oop_map() != nullptr) { _oop_map->update_register_map(this, map); }