8226705: [REDO] Deoptimize with handshakes

Reviewed-by: eosterlund, dcubed, dlong, pchilanomate
This commit is contained in:
Robbin Ehn 2019-09-19 10:52:22 +02:00
parent 336b741b1c
commit 35a9f6864a
33 changed files with 398 additions and 326 deletions

View file

@ -119,7 +119,7 @@ class nmethod : public CompiledMethod {
// used by jvmti to track if an unload event has been posted for this nmethod.
bool _unload_reported;
// Protected by Patching_lock
// Protected by CompiledMethod_lock
volatile signed char _state; // {not_installed, in_use, not_entrant, zombie, unloaded}
#ifdef ASSERT
@ -357,7 +357,9 @@ class nmethod : public CompiledMethod {
void set_rtm_state(RTMState state) { _rtm_state = state; }
#endif
void make_in_use() { _state = in_use; }
bool make_in_use() {
return try_transition(in_use);
}
// Make the nmethod non entrant. The nmethod will continue to be
// alive. It is used when an uncommon trap happens. Returns true
// if this thread changed the state of the nmethod or false if
@ -390,7 +392,7 @@ class nmethod : public CompiledMethod {
int comp_level() const { return _comp_level; }
void unlink_from_method(bool acquire_lock);
void unlink_from_method();
// Support for oops in scopes and relocs:
// Note: index 0 is reserved for null.