mirror of
https://github.com/openjdk/jdk.git
synced 2025-08-27 14:54:52 +02:00
8253180: ZGC: Implementation of JEP 376: ZGC: Concurrent Thread-Stack Processing
Reviewed-by: stefank, pliden, rehn, neliasso, coleenp, smonteith
This commit is contained in:
parent
a2f651904d
commit
b9873e1833
131 changed files with 2428 additions and 572 deletions
|
@ -63,6 +63,7 @@
|
|||
#include "runtime/interfaceSupport.inline.hpp"
|
||||
#include "runtime/javaCalls.hpp"
|
||||
#include "runtime/sharedRuntime.hpp"
|
||||
#include "runtime/stackWatermarkSet.hpp"
|
||||
#include "runtime/threadCritical.hpp"
|
||||
#include "runtime/vframe.inline.hpp"
|
||||
#include "runtime/vframeArray.hpp"
|
||||
|
@ -505,6 +506,17 @@ JRT_ENTRY_NO_ASYNC(static address, exception_handler_for_pc_helper(JavaThread* t
|
|||
thread->set_is_method_handle_return(false);
|
||||
|
||||
Handle exception(thread, ex);
|
||||
|
||||
// This function is called when we are about to throw an exception. Therefore,
|
||||
// we have to poll the stack watermark barrier to make sure that not yet safe
|
||||
// stack frames are made safe before returning into them.
|
||||
if (thread->last_frame().cb() == Runtime1::blob_for(Runtime1::handle_exception_from_callee_id)) {
|
||||
// The Runtime1::handle_exception_from_callee_id handler is invoked after the
|
||||
// frame has been unwound. It instead builds its own stub frame, to call the
|
||||
// runtime. But the throwing frame has already been unwound here.
|
||||
StackWatermarkSet::after_unwind(thread);
|
||||
}
|
||||
|
||||
nm = CodeCache::find_nmethod(pc);
|
||||
assert(nm != NULL, "this is not an nmethod");
|
||||
// Adjust the pc as needed/
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue