equal
deleted
inserted
replaced
51 // Sweeper logging code |
51 // Sweeper logging code |
52 class SweeperRecord { |
52 class SweeperRecord { |
53 public: |
53 public: |
54 int traversal; |
54 int traversal; |
55 int compile_id; |
55 int compile_id; |
56 jlong traversal_mark; |
56 long traversal_mark; |
57 int state; |
57 int state; |
58 const char* kind; |
58 const char* kind; |
59 address vep; |
59 address vep; |
60 address uep; |
60 address uep; |
61 int line; |
61 int line; |
62 |
62 |
63 void print() { |
63 void print() { |
64 tty->print_cr("traversal = %d compile_id = %d %s uep = " PTR_FORMAT " vep = " |
64 tty->print_cr("traversal = %d compile_id = %d %s uep = " PTR_FORMAT " vep = " |
65 PTR_FORMAT " state = %d traversal_mark "JLONG_FORMAT" line = %d", |
65 PTR_FORMAT " state = %d traversal_mark %ld line = %d", |
66 traversal, |
66 traversal, |
67 compile_id, |
67 compile_id, |
68 kind == NULL ? "" : kind, |
68 kind == NULL ? "" : kind, |
69 p2i(uep), |
69 p2i(uep), |
70 p2i(vep), |
70 p2i(vep), |
627 assert(result == None, "sanity"); |
627 assert(result == None, "sanity"); |
628 result = Flushed; |
628 result = Flushed; |
629 } else if (cm->is_not_entrant()) { |
629 } else if (cm->is_not_entrant()) { |
630 // If there are no current activations of this method on the |
630 // If there are no current activations of this method on the |
631 // stack we can safely convert it to a zombie method |
631 // stack we can safely convert it to a zombie method |
|
632 OrderAccess::loadload(); // _stack_traversal_mark and _state |
632 if (cm->can_convert_to_zombie()) { |
633 if (cm->can_convert_to_zombie()) { |
633 // Clear ICStubs to prevent back patching stubs of zombie or flushed |
634 // Clear ICStubs to prevent back patching stubs of zombie or flushed |
634 // nmethods during the next safepoint (see ICStub::finalize). |
635 // nmethods during the next safepoint (see ICStub::finalize). |
635 { |
636 { |
636 MutexLocker cl(CompiledIC_lock); |
637 MutexLocker cl(CompiledIC_lock); |