8153134: Infinite loop in handle_wrong_method in jmod

Use Patching_lock to synchronize access between set_code() and clear_code().

Reviewed-by: kvn, dlong
This commit is contained in:
Tobias Hartmann 2016-10-18 09:43:12 +02:00
parent 614320ba5e
commit 4bb6761600
4 changed files with 6 additions and 7 deletions

View file

@ -436,7 +436,7 @@ class Method : public Metadata {
address verified_code_entry();
bool check_code() const; // Not inline to avoid circular ref
CompiledMethod* volatile code() const { assert( check_code(), "" ); return (CompiledMethod *)OrderAccess::load_ptr_acquire(&_code); }
void clear_code(); // Clear out any compiled code
void clear_code(bool acquire_lock = true); // Clear out any compiled code
static void set_code(methodHandle mh, CompiledMethod* code);
void set_adapter_entry(AdapterHandlerEntry* adapter) {
constMethod()->set_adapter_entry(adapter);