402 gclog_or_tty->print_cr(" "
403 " byte_for(start): " INTPTR_FORMAT
404 " byte_for(last): " INTPTR_FORMAT,
405 byte_for(_covered[ind].start()),
406 byte_for(_covered[ind].last()));
407 gclog_or_tty->print_cr(" "
408 " addr_for(start): " INTPTR_FORMAT
409 " addr_for(last): " INTPTR_FORMAT,
410 addr_for((jbyte*) _committed[ind].start()),
411 addr_for((jbyte*) _committed[ind].last()));
412 }
413 // Touch the last card of the covered region to show that it
414 // is committed (or SEGV).
415 debug_only((void) (*byte_for(_covered[ind].last()));)
416 debug_only(verify_guard();)
417 }
418
419 // Note that these versions are precise! The scanning code has to handle the
420 // fact that the write barrier may be either precise or imprecise.
421
422 void CardTableModRefBS::write_ref_field_work(void* field, oop newVal) {
423 inline_write_ref_field(field, newVal);
424 }
425
426
427 void CardTableModRefBS::non_clean_card_iterate_possibly_parallel(Space* sp,
428 MemRegion mr,
429 OopsInGenClosure* cl,
430 CardTableRS* ct) {
431 if (!mr.is_empty()) {
432 // Caller (process_strong_roots()) claims that all GC threads
433 // execute this call. With UseDynamicNumberOfGCThreads now all
434 // active GC threads execute this call. The number of active GC
435 // threads needs to be passed to par_non_clean_card_iterate_work()
436 // to get proper partitioning and termination.
437 //
438 // This is an example of where n_par_threads() is used instead
439 // of workers()->active_workers(). n_par_threads can be set to 0 to
440 // turn off parallelism. For example when this code is called as
441 // part of verification and SharedHeap::process_strong_roots() is being
442 // used, then n_par_threads() may have been set to 0. active_workers
443 // is not overloaded with the meaning that it is a switch to disable
|
402 gclog_or_tty->print_cr(" "
403 " byte_for(start): " INTPTR_FORMAT
404 " byte_for(last): " INTPTR_FORMAT,
405 byte_for(_covered[ind].start()),
406 byte_for(_covered[ind].last()));
407 gclog_or_tty->print_cr(" "
408 " addr_for(start): " INTPTR_FORMAT
409 " addr_for(last): " INTPTR_FORMAT,
410 addr_for((jbyte*) _committed[ind].start()),
411 addr_for((jbyte*) _committed[ind].last()));
412 }
413 // Touch the last card of the covered region to show that it
414 // is committed (or SEGV).
415 debug_only((void) (*byte_for(_covered[ind].last()));)
416 debug_only(verify_guard();)
417 }
418
419 // Note that these versions are precise! The scanning code has to handle the
420 // fact that the write barrier may be either precise or imprecise.
421
422 void CardTableModRefBS::write_ref_field_work(void* field, oop newVal, bool release) {
423 inline_write_ref_field(field, newVal, release);
424 }
425
426
427 void CardTableModRefBS::non_clean_card_iterate_possibly_parallel(Space* sp,
428 MemRegion mr,
429 OopsInGenClosure* cl,
430 CardTableRS* ct) {
431 if (!mr.is_empty()) {
432 // Caller (process_strong_roots()) claims that all GC threads
433 // execute this call. With UseDynamicNumberOfGCThreads now all
434 // active GC threads execute this call. The number of active GC
435 // threads needs to be passed to par_non_clean_card_iterate_work()
436 // to get proper partitioning and termination.
437 //
438 // This is an example of where n_par_threads() is used instead
439 // of workers()->active_workers(). n_par_threads can be set to 0 to
440 // turn off parallelism. For example when this code is called as
441 // part of verification and SharedHeap::process_strong_roots() is being
442 // used, then n_par_threads() may have been set to 0. active_workers
443 // is not overloaded with the meaning that it is a switch to disable
|