372 ind, _covered[ind].start(),
373 ind, _covered[ind].last());
374 gclog_or_tty->print_cr(" "
375 " _committed[%d].start(): " INTPTR_FORMAT
376 " _committed[%d].last(): " INTPTR_FORMAT,
377 ind, _committed[ind].start(),
378 ind, _committed[ind].last());
379 gclog_or_tty->print_cr(" "
380 " byte_for(start): " INTPTR_FORMAT
381 " byte_for(last): " INTPTR_FORMAT,
382 byte_for(_covered[ind].start()),
383 byte_for(_covered[ind].last()));
384 gclog_or_tty->print_cr(" "
385 " addr_for(start): " INTPTR_FORMAT
386 " addr_for(last): " INTPTR_FORMAT,
387 addr_for((jbyte*) _committed[ind].start()),
388 addr_for((jbyte*) _committed[ind].last()));
389 }
390 // Touch the last card of the covered region to show that it
391 // is committed (or SEGV).
392 debug_only(*byte_for(_covered[ind].last());)
393 debug_only(verify_guard();)
394 }
395
396 // Note that these versions are precise! The scanning code has to handle the
397 // fact that the write barrier may be either precise or imprecise.
398
399 void CardTableModRefBS::write_ref_field_work(void* field, oop newVal) {
400 inline_write_ref_field(field, newVal);
401 }
402
403 /*
404 Claimed and deferred bits are used together in G1 during the evacuation
405 pause. These bits can have the following state transitions:
406 1. The claimed bit can be put over any other card state. Except that
407 the "dirty -> dirty and claimed" transition is checked for in
408 G1 code and is not used.
409 2. Deferred bit can be set only if the previous state of the card
410 was either clean or claimed. mark_card_deferred() is wait-free.
411 We do not care if the operation is be successful because if
412 it does not it will only result in duplicate entry in the update
|
372 ind, _covered[ind].start(),
373 ind, _covered[ind].last());
374 gclog_or_tty->print_cr(" "
375 " _committed[%d].start(): " INTPTR_FORMAT
376 " _committed[%d].last(): " INTPTR_FORMAT,
377 ind, _committed[ind].start(),
378 ind, _committed[ind].last());
379 gclog_or_tty->print_cr(" "
380 " byte_for(start): " INTPTR_FORMAT
381 " byte_for(last): " INTPTR_FORMAT,
382 byte_for(_covered[ind].start()),
383 byte_for(_covered[ind].last()));
384 gclog_or_tty->print_cr(" "
385 " addr_for(start): " INTPTR_FORMAT
386 " addr_for(last): " INTPTR_FORMAT,
387 addr_for((jbyte*) _committed[ind].start()),
388 addr_for((jbyte*) _committed[ind].last()));
389 }
390 // Touch the last card of the covered region to show that it
391 // is committed (or SEGV).
392 debug_only((void) (*byte_for(_covered[ind].last()));)
393 debug_only(verify_guard();)
394 }
395
396 // Note that these versions are precise! The scanning code has to handle the
397 // fact that the write barrier may be either precise or imprecise.
398
399 void CardTableModRefBS::write_ref_field_work(void* field, oop newVal) {
400 inline_write_ref_field(field, newVal);
401 }
402
403 /*
404 Claimed and deferred bits are used together in G1 during the evacuation
405 pause. These bits can have the following state transitions:
406 1. The claimed bit can be put over any other card state. Except that
407 the "dirty -> dirty and claimed" transition is checked for in
408 G1 code and is not used.
409 2. Deferred bit can be set only if the previous state of the card
410 was either clean or claimed. mark_card_deferred() is wait-free.
411 We do not care if the operation is be successful because if
412 it does not it will only result in duplicate entry in the update
|