diff --git a/src/hotspot/cpu/s390/abstractInterpreter_s390.cpp b/src/hotspot/cpu/s390/abstractInterpreter_s390.cpp index c24c2b56bf7a9..7ab4d6e49cd4f 100644 --- a/src/hotspot/cpu/s390/abstractInterpreter_s390.cpp +++ b/src/hotspot/cpu/s390/abstractInterpreter_s390.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2016, 2023, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2016, 2025, Oracle and/or its affiliates. All rights reserved. * Copyright (c) 2016 SAP SE. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * @@ -191,7 +191,7 @@ void AbstractInterpreter::layout_activation(Method* method, assert(is_bottom_frame && (sender_sp == caller->unextended_sp()), "must initialize sender_sp of bottom skeleton frame when pushing it"); } else { - assert(caller->is_entry_frame(), "is there a new frame type??"); + assert(caller->is_entry_frame() || caller->is_upcall_stub_frame(), "is there a new frame type??"); sender_sp = caller->sp(); // Call_stub only uses it's fp. } @@ -201,6 +201,8 @@ void AbstractInterpreter::layout_activation(Method* method, interpreter_frame->interpreter_frame_set_monitor_end((BasicObjectLock *)monitor); *interpreter_frame->interpreter_frame_cache_addr() = method->constants()->cache(); interpreter_frame->interpreter_frame_set_tos_address(tos); - interpreter_frame->interpreter_frame_set_sender_sp(sender_sp); + if (!is_bottom_frame) { + interpreter_frame->interpreter_frame_set_sender_sp(sender_sp); + } interpreter_frame->interpreter_frame_set_top_frame_sp(top_frame_sp); }