< prev index next >

src/hotspot/cpu/riscv/continuationFreezeThaw_riscv.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.

*** 72,11 ***
              slot == -1 ? nullptr : sender_cb->oop_map_for_slot(slot, sender_pc),
              false /* on_heap ? */)
      : frame(sender_sp, sender_sp, *link_addr, sender_pc);
  }
  
! template<typename FKind> frame FreezeBase::new_heap_frame(frame& f, frame& caller) {
    assert(FKind::is_instance(f), "");
    assert(!caller.is_interpreted_frame()
      || caller.unextended_sp() == (intptr_t*)caller.at(frame::interpreter_frame_last_sp_offset), "");
  
    intptr_t *sp, *fp; // sp is really our unextended_sp
--- 72,11 ---
              slot == -1 ? nullptr : sender_cb->oop_map_for_slot(slot, sender_pc),
              false /* on_heap ? */)
      : frame(sender_sp, sender_sp, *link_addr, sender_pc);
  }
  
! template<typename FKind> frame FreezeBase::new_heap_frame(frame& f, frame& caller, int size_adjust) {
    assert(FKind::is_instance(f), "");
    assert(!caller.is_interpreted_frame()
      || caller.unextended_sp() == (intptr_t*)caller.at(frame::interpreter_frame_last_sp_offset), "");
  
    intptr_t *sp, *fp; // sp is really our unextended_sp

*** 180,11 ***
    intptr_t* fp_addr = hf.sp() - 2;
    *fp_addr = hf.is_interpreted_frame() ? (intptr_t)(hf.fp() - fp_addr)
                                         : (intptr_t)hf.fp();
  }
  
! 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());
    } else {
      // If we're the bottom-most frame frozen in this freeze, the caller might have stayed frozen in the chunk,
--- 180,11 ---
    intptr_t* fp_addr = hf.sp() - 2;
    *fp_addr = hf.is_interpreted_frame() ? (intptr_t)(hf.fp() - fp_addr)
                                         : (intptr_t)hf.fp();
  }
  
! 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());
    } else {
      // If we're the bottom-most frame frozen in this freeze, the caller might have stayed frozen in the chunk,

*** 254,11 ***
    intptr_t* sp = _cont.entrySP();
    // TODO PERF: This finds code blob and computes deopt state
    return frame(sp, sp, _cont.entryFP(), _cont.entryPC());
  }
  
! template<typename FKind> frame ThawBase::new_stack_frame(const frame& hf, frame& caller, bool bottom) {
    assert(FKind::is_instance(hf), "");
    // The values in the returned frame object will be written into the callee's stack in patch.
  
    if (FKind::interpreted) {
      intptr_t* heap_sp = hf.unextended_sp();
--- 254,11 ---
    intptr_t* sp = _cont.entrySP();
    // TODO PERF: This finds code blob and computes deopt state
    return frame(sp, sp, _cont.entryFP(), _cont.entryPC());
  }
  
! template<typename FKind> frame ThawBase::new_stack_frame(const frame& hf, frame& caller, bool bottom, int size_adjust) {
    assert(FKind::is_instance(hf), "");
    // The values in the returned frame object will be written into the callee's stack in patch.
  
    if (FKind::interpreted) {
      intptr_t* heap_sp = hf.unextended_sp();
< prev index next >