< prev index next >

src/hotspot/cpu/ppc/continuationFreezeThaw_ppc.inline.hpp

Print this page
*** 1,7 ***
  /*
!  * Copyright (c) 2019, 2025, 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.
--- 1,7 ---
  /*
!  * 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.

*** 267,11 ***
  //                                                         | 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) {
    assert(FKind::is_instance(f), "");
  
    intptr_t *sp, *fp;
    if (FKind::interpreted) {
      intptr_t locals_offset = *f.addr_at(ijava_idx(locals));
--- 267,11 ---
  //                                                         | 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, 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));

*** 315,11 ***
  
      return frame(sp, sp, fp, f.pc(), nullptr, nullptr, true /* on_heap */);
    }
  }
  
! inline void FreezeBase::patch_pd(frame& hf, const frame& caller) {
    if (caller.is_interpreted_frame()) {
      assert(!caller.is_empty(), "");
      patch_callee_link_relative(caller, caller.fp());
    }
  #ifdef ASSERT
--- 315,11 ---
  
      return frame(sp, sp, fp, f.pc(), nullptr, nullptr, true /* on_heap */);
    }
  }
  
! 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

*** 501,11 ***
  //  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) {
    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) {
--- 501,11 ---
  //  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, 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 >