< prev index next >

src/hotspot/cpu/s390/frame_s390.cpp

Print this page
@@ -228,10 +228,11 @@
  frame frame::sender_for_interpreter_frame(RegisterMap *map) const {
    // Pass callers sender_sp as unextended_sp.
    return frame(sender_sp(), sender_pc(), (intptr_t*)(ijava_state()->sender_sp));
  }
  
+ template <bool stub>
  frame frame::sender_for_compiled_frame(RegisterMap *map) const {
    assert(map != NULL, "map must be set");
    // Frame owned by compiler.
  
    address pc = *compiled_sender_pc_addr(_cb);

@@ -270,11 +271,11 @@
    if (is_interpreted_frame()) {
      return sender_for_interpreter_frame(map);
    }
    assert(_cb == CodeCache::find_blob(pc()),"Must be the same");
    if (_cb != NULL) {
-     return sender_for_compiled_frame(map);
+     return sender_for_compiled_frame<false>(map);
    }
    // Must be native-compiled frame, i.e. the marshaling code for native
    // methods that exists in the core system.
    return frame(sender_sp(), sender_pc());
  }

@@ -626,11 +627,32 @@
      DESCRIBE_ADDRESS(lresult);
      DESCRIBE_ADDRESS(fresult);
    }
  }
  
+ void frame::describe_top_pd(FrameValues& values) {
+   Unimplemented();
+ }
  #endif // !PRODUCT
  
  intptr_t *frame::initial_deoptimization_info() {
    // Used to reset the saved FP.
    return fp();
  }
+ 
+ // Pointer beyond the "oldest/deepest" BasicObjectLock on stack.
+ template BasicObjectLock* frame::interpreter_frame_monitor_end<true>() const;
+ template BasicObjectLock* frame::interpreter_frame_monitor_end<false>() const;
+ 
+ template <bool relative>
+ inline BasicObjectLock* frame::interpreter_frame_monitor_end() const {
+   return interpreter_frame_monitors();
+ }
+ 
+ template intptr_t* frame::interpreter_frame_tos_at<false>(jint offset) const;
+ template intptr_t* frame::interpreter_frame_tos_at<true >(jint offset) const;
+ 
+ template <bool relative>
+ inline intptr_t* frame::interpreter_frame_tos_at(jint offset) const {
+   return &interpreter_frame_tos_address()[offset];
+ }
+ 
< prev index next >