3532 if (!dead_nodes) {
3533 tty->print_cr("*** Dead nodes reachable via DU edges:");
3534 dead_nodes = true;
3535 }
3536 use->dump(2);
3537 tty->print_cr("---");
3538 checked.push(use); // No repeats; pretend it is now checked.
3539 }
3540 }
3541 assert(!dead_nodes, "using nodes must be reachable from root");
3542 }
3543 }
3544 }
3545
3546 // Verify GC barriers consistency
3547 // Currently supported:
3548 // - G1 pre-barriers (see GraphKit::g1_write_barrier_pre())
3549 void Compile::verify_barriers() {
3550 if (UseG1GC) {
3551 // Verify G1 pre-barriers
3552 const int marking_offset = in_bytes(JavaThread::satb_mark_queue_offset() + PtrQueue::byte_offset_of_active());
3553
3554 ResourceArea *area = Thread::current()->resource_area();
3555 Unique_Node_List visited(area);
3556 Node_List worklist(area);
3557 // We're going to walk control flow backwards starting from the Root
3558 worklist.push(_root);
3559 while (worklist.size() > 0) {
3560 Node* x = worklist.pop();
3561 if (x == NULL || x == top()) continue;
3562 if (visited.member(x)) {
3563 continue;
3564 } else {
3565 visited.push(x);
3566 }
3567
3568 if (x->is_Region()) {
3569 for (uint i = 1; i < x->req(); i++) {
3570 worklist.push(x->in(i));
3571 }
3572 } else {
|
3532 if (!dead_nodes) {
3533 tty->print_cr("*** Dead nodes reachable via DU edges:");
3534 dead_nodes = true;
3535 }
3536 use->dump(2);
3537 tty->print_cr("---");
3538 checked.push(use); // No repeats; pretend it is now checked.
3539 }
3540 }
3541 assert(!dead_nodes, "using nodes must be reachable from root");
3542 }
3543 }
3544 }
3545
3546 // Verify GC barriers consistency
3547 // Currently supported:
3548 // - G1 pre-barriers (see GraphKit::g1_write_barrier_pre())
3549 void Compile::verify_barriers() {
3550 if (UseG1GC) {
3551 // Verify G1 pre-barriers
3552 const int marking_offset = in_bytes(JavaThread::satb_mark_queue_offset() + SATBMarkQueue::byte_offset_of_active());
3553
3554 ResourceArea *area = Thread::current()->resource_area();
3555 Unique_Node_List visited(area);
3556 Node_List worklist(area);
3557 // We're going to walk control flow backwards starting from the Root
3558 worklist.push(_root);
3559 while (worklist.size() > 0) {
3560 Node* x = worklist.pop();
3561 if (x == NULL || x == top()) continue;
3562 if (visited.member(x)) {
3563 continue;
3564 } else {
3565 visited.push(x);
3566 }
3567
3568 if (x->is_Region()) {
3569 for (uint i = 1; i < x->req(); i++) {
3570 worklist.push(x->in(i));
3571 }
3572 } else {
|