equal
deleted
inserted
replaced
351 VoidClosure* complete_gc, |
351 VoidClosure* complete_gc, |
352 YieldClosure* yield, |
352 YieldClosure* yield, |
353 GCTimer* gc_timer, |
353 GCTimer* gc_timer, |
354 GCId gc_id); |
354 GCId gc_id); |
355 |
355 |
356 // Delete entries in the discovered lists that have |
|
357 // either a null referent or are not active. Such |
|
358 // Reference objects can result from the clearing |
|
359 // or enqueueing of Reference objects concurrent |
|
360 // with their discovery by a (concurrent) collector. |
|
361 // For a definition of "active" see java.lang.ref.Reference; |
|
362 // Refs are born active, become inactive when enqueued, |
|
363 // and never become active again. The state of being |
|
364 // active is encoded as follows: A Ref is active |
|
365 // if and only if its "next" field is NULL. |
|
366 void clean_up_discovered_references(); |
|
367 void clean_up_discovered_reflist(DiscoveredList& refs_list); |
|
368 |
|
369 // Returns the name of the discovered reference list |
356 // Returns the name of the discovered reference list |
370 // occupying the i / _num_q slot. |
357 // occupying the i / _num_q slot. |
371 const char* list_name(uint i); |
358 const char* list_name(uint i); |
372 |
359 |
373 void enqueue_discovered_reflists(HeapWord* pending_list_addr, AbstractRefProcTaskExecutor* task_executor); |
360 void enqueue_discovered_reflists(HeapWord* pending_list_addr, AbstractRefProcTaskExecutor* task_executor); |
437 // get and set span |
424 // get and set span |
438 MemRegion span() { return _span; } |
425 MemRegion span() { return _span; } |
439 void set_span(MemRegion span) { _span = span; } |
426 void set_span(MemRegion span) { _span = span; } |
440 |
427 |
441 // start and stop weak ref discovery |
428 // start and stop weak ref discovery |
442 void enable_discovery(bool verify_disabled, bool check_no_refs); |
429 void enable_discovery(bool check_no_refs = true); |
443 void disable_discovery() { _discovering_refs = false; } |
430 void disable_discovery() { _discovering_refs = false; } |
444 bool discovery_enabled() { return _discovering_refs; } |
431 bool discovery_enabled() { return _discovering_refs; } |
445 |
432 |
446 // whether discovery is atomic wrt other collectors |
433 // whether discovery is atomic wrt other collectors |
447 bool discovery_is_atomic() const { return _discovery_is_atomic; } |
434 bool discovery_is_atomic() const { return _discovery_is_atomic; } |
515 } |
502 } |
516 } |
503 } |
517 |
504 |
518 ~NoRefDiscovery() { |
505 ~NoRefDiscovery() { |
519 if (_was_discovering_refs) { |
506 if (_was_discovering_refs) { |
520 _rp->enable_discovery(true /*verify_disabled*/, false /*check_no_refs*/); |
507 _rp->enable_discovery(false /*check_no_refs*/); |
521 } |
508 } |
522 } |
509 } |
523 }; |
510 }; |
524 |
511 |
525 |
512 |