src/hotspot/os_cpu/linux_ppc/thread_linux_ppc.cpp
changeset 49480 d7df2dd501ce
parent 47216 71c04702a3d5
child 50160 dc18db671651
--- a/src/hotspot/os_cpu/linux_ppc/thread_linux_ppc.cpp	Wed Mar 21 17:09:34 2018 -0400
+++ b/src/hotspot/os_cpu/linux_ppc/thread_linux_ppc.cpp	Wed Mar 21 19:45:24 2018 -0400
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2018, Oracle and/or its affiliates. All rights reserved.
  * Copyright (c) 2012, 2014 SAP SE. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
@@ -24,9 +24,23 @@
  */
 
 #include "precompiled.hpp"
-#include "runtime/frame.hpp"
+#include "runtime/frame.inline.hpp"
 #include "runtime/thread.hpp"
 
+frame JavaThread::pd_last_frame() {
+  assert(has_last_Java_frame(), "must have last_Java_sp() when suspended");
+
+  intptr_t* sp = last_Java_sp();
+  address pc = _anchor.last_Java_pc();
+
+  // Last_Java_pc ist not set, if we come here from compiled code.
+  if (pc == NULL) {
+    pc = (address) *(sp + 2);
+  }
+
+  return frame(sp, pc);
+}
+
 // Forte Analyzer AsyncGetCallTrace profiling support is not implemented on Linux/PPC.
 bool JavaThread::pd_get_top_frame_for_signal_handler(frame* fr_addr, void* ucontext, bool isInJava) {
   Unimplemented();