src/share/vm/opto/graphKit.cpp
Print this page
rev 2570 : imported patch membar2
rev 2571 : [mq]: membar3
*** 2854,2864 ****
lock = _gvn.transform( lock )->as_Lock();
// lock has no side-effects, sets few values
set_predefined_output_for_runtime_call(lock, mem, TypeRawPtr::BOTTOM);
! insert_mem_bar(Op_MemBarAcquire);
// Add this to the worklist so that the lock can be eliminated
record_for_igvn(lock);
#ifndef PRODUCT
--- 2854,2864 ----
lock = _gvn.transform( lock )->as_Lock();
// lock has no side-effects, sets few values
set_predefined_output_for_runtime_call(lock, mem, TypeRawPtr::BOTTOM);
! insert_mem_bar(Op_MemBarAcquireLock);
// Add this to the worklist so that the lock can be eliminated
record_for_igvn(lock);
#ifndef PRODUCT
*** 2887,2897 ****
map()->pop_monitor(); // Kill monitor from debug info
return;
}
// Memory barrier to avoid floating things down past the locked region
! insert_mem_bar(Op_MemBarRelease);
const TypeFunc *tf = OptoRuntime::complete_monitor_exit_Type();
UnlockNode *unlock = new (C, tf->domain()->cnt()) UnlockNode(C, tf);
uint raw_idx = Compile::AliasIdxRaw;
unlock->init_req( TypeFunc::Control, control() );
--- 2887,2897 ----
map()->pop_monitor(); // Kill monitor from debug info
return;
}
// Memory barrier to avoid floating things down past the locked region
! insert_mem_bar(Op_MemBarReleaseLock);
const TypeFunc *tf = OptoRuntime::complete_monitor_exit_Type();
UnlockNode *unlock = new (C, tf->domain()->cnt()) UnlockNode(C, tf);
uint raw_idx = Compile::AliasIdxRaw;
unlock->init_req( TypeFunc::Control, control() );