equal
deleted
inserted
replaced
59 |
59 |
60 class VM_EnableBiasedLocking: public VM_Operation { |
60 class VM_EnableBiasedLocking: public VM_Operation { |
61 public: |
61 public: |
62 VM_EnableBiasedLocking() {} |
62 VM_EnableBiasedLocking() {} |
63 VMOp_Type type() const { return VMOp_EnableBiasedLocking; } |
63 VMOp_Type type() const { return VMOp_EnableBiasedLocking; } |
64 Mode evaluation_mode() const { return _async_safepoint; } |
|
65 bool is_cheap_allocated() const { return true; } |
|
66 |
64 |
67 void doit() { |
65 void doit() { |
68 // Iterate the class loader data dictionaries enabling biased locking for all |
66 // Iterate the class loader data dictionaries enabling biased locking for all |
69 // currently loaded classes. |
67 // currently loaded classes. |
70 ClassLoaderDataGraph::dictionary_classes_do(enable_biased_locking); |
68 ClassLoaderDataGraph::dictionary_classes_do(enable_biased_locking); |
80 class EnableBiasedLockingTask : public PeriodicTask { |
78 class EnableBiasedLockingTask : public PeriodicTask { |
81 public: |
79 public: |
82 EnableBiasedLockingTask(size_t interval_time) : PeriodicTask(interval_time) {} |
80 EnableBiasedLockingTask(size_t interval_time) : PeriodicTask(interval_time) {} |
83 |
81 |
84 virtual void task() { |
82 virtual void task() { |
85 // Use async VM operation to avoid blocking the Watcher thread. |
83 VM_EnableBiasedLocking op; |
86 // VM Thread will free C heap storage. |
84 VMThread::execute(&op); |
87 VM_EnableBiasedLocking *op = new VM_EnableBiasedLocking(); |
|
88 VMThread::execute(op); |
|
89 |
85 |
90 // Reclaim our storage and disenroll ourself |
86 // Reclaim our storage and disenroll ourself |
91 delete this; |
87 delete this; |
92 } |
88 } |
93 }; |
89 }; |