< prev index next >

src/hotspot/share/runtime/stackChunkFrameStream.inline.hpp

Print this page
*** 103,11 ***
    } DEBUG_ONLY(else _has_stub = false;)
  }
  
  template <ChunkFrames frame_kind>
  inline bool StackChunkFrameStream<frame_kind>::is_stub() const {
!   return cb() != nullptr && (_cb->is_safepoint_stub() || _cb->is_runtime_stub());
  }
  
  template <ChunkFrames frame_kind>
  inline bool StackChunkFrameStream<frame_kind>::is_compiled() const {
    return cb() != nullptr && _cb->is_compiled();
--- 103,11 ---
    } DEBUG_ONLY(else _has_stub = false;)
  }
  
  template <ChunkFrames frame_kind>
  inline bool StackChunkFrameStream<frame_kind>::is_stub() const {
!   return cb() != nullptr && _cb->is_runtime_stub();
  }
  
  template <ChunkFrames frame_kind>
  inline bool StackChunkFrameStream<frame_kind>::is_compiled() const {
    return cb() != nullptr && _cb->is_compiled();

*** 193,11 ***
    return (cb()->as_compiled_method()->method()->num_stack_arg_slots() * VMRegImpl::stack_slot_size) >> LogBytesPerWord;
  }
  
  template <ChunkFrames frame_kind>
  inline int StackChunkFrameStream<frame_kind>::num_oops() const {
!   return is_interpreted() ? interpreter_frame_num_oops() : oopmap()->num_oops();
  }
  
  template <ChunkFrames frame_kind>
  inline void StackChunkFrameStream<frame_kind>::initialize_register_map(RegisterMap* map) {
    update_reg_map_pd(map);
--- 193,18 ---
    return (cb()->as_compiled_method()->method()->num_stack_arg_slots() * VMRegImpl::stack_slot_size) >> LogBytesPerWord;
  }
  
  template <ChunkFrames frame_kind>
  inline int StackChunkFrameStream<frame_kind>::num_oops() const {
!   if (is_interpreted()) {
+     return interpreter_frame_num_oops();
+   } else if (is_compiled()) {
+     return oopmap()->num_oops();
+   } else {
+     assert(is_stub(), "invariant");
+     return 0;
+   }
  }
  
  template <ChunkFrames frame_kind>
  inline void StackChunkFrameStream<frame_kind>::initialize_register_map(RegisterMap* map) {
    update_reg_map_pd(map);

*** 230,11 ***
    }
  
    get_cb();
    update_reg_map_pd(map);
    if (safepoint && cb() != nullptr) { // there's no post-call nop and no fast oopmap lookup
!     _oopmap = cb()->oop_map_for_return_address(pc());
    }
  }
  
  template <ChunkFrames frame_kind>
  inline void StackChunkFrameStream<frame_kind>::get_cb() {
--- 237,11 ---
    }
  
    get_cb();
    update_reg_map_pd(map);
    if (safepoint && cb() != nullptr) { // there's no post-call nop and no fast oopmap lookup
!     _oopmap = cb()->oop_map_for_return_address(orig_pc());
    }
  }
  
  template <ChunkFrames frame_kind>
  inline void StackChunkFrameStream<frame_kind>::get_cb() {

*** 297,13 ***
  }
  
  template<>
  template<>
  inline void StackChunkFrameStream<ChunkFrames::CompiledOnly>::update_reg_map(RegisterMap* map) {
!   assert(map->in_cont(), "");
!   assert(map->stack_chunk()() == _chunk, "");
-   if (map->update_map()) {
      frame f = to_frame();
      oopmap()->update_register_map(&f, map); // we have callee-save registers in this case
    }
  }
  
--- 304,12 ---
  }
  
  template<>
  template<>
  inline void StackChunkFrameStream<ChunkFrames::CompiledOnly>::update_reg_map(RegisterMap* map) {
!   assert(!map->in_cont() || map->stack_chunk() == _chunk, "");
!   if (map->update_map() && is_stub()) {
      frame f = to_frame();
      oopmap()->update_register_map(&f, map); // we have callee-save registers in this case
    }
  }
  
< prev index next >