< prev index next > src/hotspot/cpu/ppc/continuationFreezeThaw_ppc.inline.hpp
Print this page
/*
- * Copyright (c) 2019, 2025, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2019, 2026, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation.
// | frame::java_abi |
// Where f is the frame to be relocated on the heap. | (metadata_words_at_top)|<- SP == unext. SP of new frame
// See also StackChunkFrameStream::frame_size(). ==========================
//
template<typename FKind>
- frame FreezeBase::new_heap_frame(frame& f, frame& caller) {
+ frame FreezeBase::new_heap_frame(frame& f, frame& caller, int size_adjust) {
assert(FKind::is_instance(f), "");
intptr_t *sp, *fp;
if (FKind::interpreted) {
intptr_t locals_offset = *f.addr_at(ijava_idx(locals));
return frame(sp, sp, fp, f.pc(), nullptr, nullptr, true /* on_heap */);
}
}
- inline void FreezeBase::patch_pd(frame& hf, const frame& caller) {
+ inline void FreezeBase::patch_pd(frame& hf, const frame& caller, bool is_bottom_frame) {
if (caller.is_interpreted_frame()) {
assert(!caller.is_empty(), "");
patch_callee_link_relative(caller, caller.fp());
}
#ifdef ASSERT
// If the new frame is at the bottom just above the ContinuationEntry frame then the stackargs
// don't overlap the caller either even though it is compiled because the size is not
// limited/known. In contrast to the interpreted caller case the abi overlaps with the caller
// if there are no stackargs. This is to comply with shared code (see e.g. StackChunkFrameStream::frame_size())
//
- template<typename FKind> frame ThawBase::new_stack_frame(const frame& hf, frame& caller, bool bottom) {
+ template<typename FKind> frame ThawBase::new_stack_frame(const frame& hf, frame& caller, bool bottom, int size_adjust) {
assert(FKind::is_instance(hf), "");
assert(is_aligned(caller.fp(), frame::frame_alignment), PTR_FORMAT, p2i(caller.fp()));
// caller.sp() can be unaligned. This is fixed below.
if (FKind::interpreted) {
< prev index next >