Mercurial > hg > graal-jvmci-8
comparison 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 |
comparison
equal
deleted
inserted
replaced
11145:39deebbc90b3 | 11146:e619a2766bcc |
---|---|
29 #include "memory/space.hpp" | 29 #include "memory/space.hpp" |
30 #include "memory/universe.inline.hpp" | 30 #include "memory/universe.inline.hpp" |
31 #include "oops/oop.inline.hpp" | 31 #include "oops/oop.inline.hpp" |
32 #include "oops/oop.inline2.hpp" | 32 #include "oops/oop.inline2.hpp" |
33 #include "prims/forte.hpp" | 33 #include "prims/forte.hpp" |
34 #include "runtime/javaCalls.hpp" | |
34 #include "runtime/thread.hpp" | 35 #include "runtime/thread.hpp" |
35 #include "runtime/vframe.hpp" | 36 #include "runtime/vframe.hpp" |
36 #include "runtime/vframeArray.hpp" | 37 #include "runtime/vframeArray.hpp" |
37 | 38 |
38 // call frame copied from old .h file and renamed | 39 // call frame copied from old .h file and renamed |
306 int loop_max = MaxJavaStackTraceDepth * 2; | 307 int loop_max = MaxJavaStackTraceDepth * 2; |
307 RegisterMap map(thread, false); | 308 RegisterMap map(thread, false); |
308 | 309 |
309 for (loop_count = 0; loop_count < loop_max; loop_count++) { | 310 for (loop_count = 0; loop_count < loop_max; loop_count++) { |
310 | 311 |
311 if (candidate.is_first_frame()) { | 312 if (candidate.is_entry_frame()) { |
313 // jcw is NULL if the java call wrapper couldn't be found | |
314 JavaCallWrapper *jcw = candidate.entry_frame_call_wrapper_if_safe(thread); | |
312 // If initial frame is frame from StubGenerator and there is no | 315 // If initial frame is frame from StubGenerator and there is no |
313 // previous anchor, there are no java frames associated with a method | 316 // previous anchor, there are no java frames associated with a method |
314 return false; | 317 if (jcw == NULL || jcw->is_first_frame()) { |
318 return false; | |
319 } | |
315 } | 320 } |
316 | 321 |
317 if (candidate.is_interpreted_frame()) { | 322 if (candidate.is_interpreted_frame()) { |
318 if (is_decipherable_interpreted_frame(thread, &candidate, method_p, bci_p)) { | 323 if (is_decipherable_interpreted_frame(thread, &candidate, method_p, bci_p)) { |
319 *initial_frame_p = candidate; | 324 *initial_frame_p = candidate; |