6666698: EnableBiasedLocking with BiasedLockingStartupDelay can block Watcher thread
Enqueue VM_EnableBiasedLocking operation asynchronously Reviewed-by: never, xlu, kbr, acorn
This commit is contained in:
parent
59cc274f16
commit
c953a1e7b8
@ -38,8 +38,11 @@ static void enable_biased_locking(klassOop k) {
|
|||||||
|
|
||||||
class VM_EnableBiasedLocking: public VM_Operation {
|
class VM_EnableBiasedLocking: public VM_Operation {
|
||||||
public:
|
public:
|
||||||
VM_EnableBiasedLocking() {}
|
VM_EnableBiasedLocking() {}
|
||||||
VMOp_Type type() const { return VMOp_EnableBiasedLocking; }
|
VMOp_Type type() const { return VMOp_EnableBiasedLocking; }
|
||||||
|
Mode evaluation_mode() const { return _async_safepoint; }
|
||||||
|
bool is_cheap_allocated() const { return true; }
|
||||||
|
|
||||||
void doit() {
|
void doit() {
|
||||||
// Iterate the system dictionary enabling biased locking for all
|
// Iterate the system dictionary enabling biased locking for all
|
||||||
// currently loaded classes
|
// currently loaded classes
|
||||||
@ -62,8 +65,10 @@ class EnableBiasedLockingTask : public PeriodicTask {
|
|||||||
EnableBiasedLockingTask(size_t interval_time) : PeriodicTask(interval_time) {}
|
EnableBiasedLockingTask(size_t interval_time) : PeriodicTask(interval_time) {}
|
||||||
|
|
||||||
virtual void task() {
|
virtual void task() {
|
||||||
VM_EnableBiasedLocking op;
|
// Use async VM operation to avoid blocking the Watcher thread.
|
||||||
VMThread::execute(&op);
|
// VM Thread will free C heap storage.
|
||||||
|
VM_EnableBiasedLocking *op = new VM_EnableBiasedLocking();
|
||||||
|
VMThread::execute(op);
|
||||||
|
|
||||||
// Reclaim our storage and disenroll ourself
|
// Reclaim our storage and disenroll ourself
|
||||||
delete this;
|
delete this;
|
||||||
|
Loading…
Reference in New Issue
Block a user