diff src/share/vm/prims/forte.cpp @ 11146:e619a2766bcc

8016131: nsk/sysdict/vm/stress/chain tests crash the VM in 'entry_frame_is_first()' Reviewed-by: jrose, kvn, mgronlun
author rbackman
date Wed, 12 Jun 2013 11:17:39 +0200
parents ef57c43512d6
children 03e9e2e3028b de6a9e811145 94c202aa2646
line wrap: on
line diff
--- a/src/share/vm/prims/forte.cpp	Tue Jul 16 07:33:29 2013 +0200
+++ b/src/share/vm/prims/forte.cpp	Wed Jun 12 11:17:39 2013 +0200
@@ -31,6 +31,7 @@
 #include "oops/oop.inline.hpp"
 #include "oops/oop.inline2.hpp"
 #include "prims/forte.hpp"
+#include "runtime/javaCalls.hpp"
 #include "runtime/thread.hpp"
 #include "runtime/vframe.hpp"
 #include "runtime/vframeArray.hpp"
@@ -308,10 +309,14 @@
 
   for (loop_count = 0; loop_count < loop_max; loop_count++) {
 
-    if (candidate.is_first_frame()) {
+    if (candidate.is_entry_frame()) {
+      // jcw is NULL if the java call wrapper couldn't be found
+      JavaCallWrapper *jcw = candidate.entry_frame_call_wrapper_if_safe(thread);
       // If initial frame is frame from StubGenerator and there is no
       // previous anchor, there are no java frames associated with a method
-      return false;
+      if (jcw == NULL || jcw->is_first_frame()) {
+        return false;
+      }
     }
 
     if (candidate.is_interpreted_frame()) {