mirror of
https://github.com/openjdk/jdk.git
synced 2025-08-28 15:24:43 +02:00
8244658
: Remove dead code in code cache sweeper
Reviewed-by: mdoerr, kvn
This commit is contained in:
parent
10874e0291
commit
06b49fa3f7
4 changed files with 0 additions and 87 deletions
|
@ -81,40 +81,6 @@ class SweeperRecord {
|
||||||
static int _sweep_index = 0;
|
static int _sweep_index = 0;
|
||||||
static SweeperRecord* _records = NULL;
|
static SweeperRecord* _records = NULL;
|
||||||
|
|
||||||
void NMethodSweeper::report_events(int id, address entry) {
|
|
||||||
if (_records != NULL) {
|
|
||||||
for (int i = _sweep_index; i < SweeperLogEntries; i++) {
|
|
||||||
if (_records[i].uep == entry ||
|
|
||||||
_records[i].vep == entry ||
|
|
||||||
_records[i].compile_id == id) {
|
|
||||||
_records[i].print();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
for (int i = 0; i < _sweep_index; i++) {
|
|
||||||
if (_records[i].uep == entry ||
|
|
||||||
_records[i].vep == entry ||
|
|
||||||
_records[i].compile_id == id) {
|
|
||||||
_records[i].print();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void NMethodSweeper::report_events() {
|
|
||||||
if (_records != NULL) {
|
|
||||||
for (int i = _sweep_index; i < SweeperLogEntries; i++) {
|
|
||||||
// skip empty records
|
|
||||||
if (_records[i].vep == NULL) continue;
|
|
||||||
_records[i].print();
|
|
||||||
}
|
|
||||||
for (int i = 0; i < _sweep_index; i++) {
|
|
||||||
// skip empty records
|
|
||||||
if (_records[i].vep == NULL) continue;
|
|
||||||
_records[i].print();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void NMethodSweeper::record_sweep(CompiledMethod* nm, int line) {
|
void NMethodSweeper::record_sweep(CompiledMethod* nm, int line) {
|
||||||
if (_records != NULL) {
|
if (_records != NULL) {
|
||||||
_records[_sweep_index].traversal = _traversals;
|
_records[_sweep_index].traversal = _traversals;
|
||||||
|
@ -210,44 +176,6 @@ public:
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
class NMethodMarkingTask : public AbstractGangTask {
|
|
||||||
private:
|
|
||||||
NMethodMarkingClosure* _cl;
|
|
||||||
public:
|
|
||||||
NMethodMarkingTask(NMethodMarkingClosure* cl) :
|
|
||||||
AbstractGangTask("Parallel NMethod Marking"),
|
|
||||||
_cl(cl) {
|
|
||||||
Threads::change_thread_claim_token();
|
|
||||||
}
|
|
||||||
|
|
||||||
~NMethodMarkingTask() {
|
|
||||||
Threads::assert_all_threads_claimed();
|
|
||||||
}
|
|
||||||
|
|
||||||
void work(uint worker_id) {
|
|
||||||
Threads::possibly_parallel_threads_do(true, _cl);
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Scans the stacks of all Java threads and marks activations of not-entrant methods.
|
|
||||||
* No need to synchronize access, since 'mark_active_nmethods' is always executed at a
|
|
||||||
* safepoint.
|
|
||||||
*/
|
|
||||||
void NMethodSweeper::mark_active_nmethods() {
|
|
||||||
CodeBlobClosure* cl = prepare_mark_active_nmethods();
|
|
||||||
if (cl != NULL) {
|
|
||||||
WorkGang* workers = Universe::heap()->get_safepoint_workers();
|
|
||||||
if (workers != NULL) {
|
|
||||||
NMethodMarkingClosure tcl(cl);
|
|
||||||
NMethodMarkingTask task(&tcl);
|
|
||||||
workers->run_task(&task);
|
|
||||||
} else {
|
|
||||||
Threads::nmethods_do(cl);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
CodeBlobClosure* NMethodSweeper::prepare_mark_active_nmethods() {
|
CodeBlobClosure* NMethodSweeper::prepare_mark_active_nmethods() {
|
||||||
#ifdef ASSERT
|
#ifdef ASSERT
|
||||||
assert(Thread::current()->is_Code_cache_sweeper_thread(), "must be executed under CodeCache_lock and in sweeper thread");
|
assert(Thread::current()->is_Code_cache_sweeper_thread(), "must be executed under CodeCache_lock and in sweeper thread");
|
||||||
|
|
|
@ -108,11 +108,8 @@ class NMethodSweeper : public AllStatic {
|
||||||
#ifdef ASSERT
|
#ifdef ASSERT
|
||||||
// Keep track of sweeper activity in the ring buffer
|
// Keep track of sweeper activity in the ring buffer
|
||||||
static void record_sweep(CompiledMethod* nm, int line);
|
static void record_sweep(CompiledMethod* nm, int line);
|
||||||
static void report_events(int id, address entry);
|
|
||||||
static void report_events();
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
static void mark_active_nmethods(); // Invoked at the end of each safepoint
|
|
||||||
static CodeBlobClosure* prepare_mark_active_nmethods();
|
static CodeBlobClosure* prepare_mark_active_nmethods();
|
||||||
static CodeBlobClosure* prepare_reset_hotness_counters();
|
static CodeBlobClosure* prepare_reset_hotness_counters();
|
||||||
static void sweeper_loop();
|
static void sweeper_loop();
|
||||||
|
|
|
@ -94,10 +94,6 @@ void VM_ClearICs::doit() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void VM_MarkActiveNMethods::doit() {
|
|
||||||
NMethodSweeper::mark_active_nmethods();
|
|
||||||
}
|
|
||||||
|
|
||||||
VM_DeoptimizeFrame::VM_DeoptimizeFrame(JavaThread* thread, intptr_t* id, int reason) {
|
VM_DeoptimizeFrame::VM_DeoptimizeFrame(JavaThread* thread, intptr_t* id, int reason) {
|
||||||
_thread = thread;
|
_thread = thread;
|
||||||
_id = id;
|
_id = id;
|
||||||
|
|
|
@ -248,14 +248,6 @@ class VM_GTestExecuteAtSafepoint: public VM_Operation {
|
||||||
VM_GTestExecuteAtSafepoint() {}
|
VM_GTestExecuteAtSafepoint() {}
|
||||||
};
|
};
|
||||||
|
|
||||||
class VM_MarkActiveNMethods: public VM_Operation {
|
|
||||||
public:
|
|
||||||
VM_MarkActiveNMethods() {}
|
|
||||||
VMOp_Type type() const { return VMOp_MarkActiveNMethods; }
|
|
||||||
void doit();
|
|
||||||
bool allow_nested_vm_operations() const { return true; }
|
|
||||||
};
|
|
||||||
|
|
||||||
// Deopt helper that can deoptimize frames in threads other than the
|
// Deopt helper that can deoptimize frames in threads other than the
|
||||||
// current thread. Only used through Deoptimization::deoptimize_frame.
|
// current thread. Only used through Deoptimization::deoptimize_frame.
|
||||||
class VM_DeoptimizeFrame: public VM_Operation {
|
class VM_DeoptimizeFrame: public VM_Operation {
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue