1459 // output until the next context string, this context string
1460 // will be silently ignored.
1461 log->set_context("bc code='%d' bci='%d'", (int)bc(), bci());
1462 }
1463
1464 if (block()->has_trap_at(bci())) {
1465 // We must respect the flow pass's traps, because it will refuse
1466 // to produce successors for trapping blocks.
1467 int trap_index = block()->flow()->trap_index();
1468 assert(trap_index != 0, "trap index must be valid");
1469 uncommon_trap(trap_index);
1470 break;
1471 }
1472
1473 NOT_PRODUCT( parse_histogram()->set_initial_state(bc()); );
1474
1475 #ifdef ASSERT
1476 int pre_bc_sp = sp();
1477 int inputs, depth;
1478 bool have_se = !stopped() && compute_stack_effects(inputs, depth);
1479 assert(!have_se || pre_bc_sp >= inputs, err_msg_res("have enough stack to execute this BC: pre_bc_sp=%d, inputs=%d", pre_bc_sp, inputs));
1480 #endif //ASSERT
1481
1482 do_one_bytecode();
1483
1484 assert(!have_se || stopped() || failing() || (sp() - pre_bc_sp) == depth,
1485 err_msg_res("incorrect depth prediction: sp=%d, pre_bc_sp=%d, depth=%d", sp(), pre_bc_sp, depth));
1486
1487 do_exceptions();
1488
1489 NOT_PRODUCT( parse_histogram()->record_change(); );
1490
1491 if (log != NULL)
1492 log->clear_context(); // skip marker if nothing was printed
1493
1494 // Fall into next bytecode. Each bytecode normally has 1 sequential
1495 // successor which is typically made ready by visiting this bytecode.
1496 // If the successor has several predecessors, then it is a merge
1497 // point, starts a new basic block, and is handled like other basic blocks.
1498 }
1499 }
1500
1501
1502 //------------------------------merge------------------------------------------
1503 void Parse::set_parse_bci(int bci) {
1504 set_bci(bci);
1505 Node_Notes* nn = C->default_node_notes();
|
1459 // output until the next context string, this context string
1460 // will be silently ignored.
1461 log->set_context("bc code='%d' bci='%d'", (int)bc(), bci());
1462 }
1463
1464 if (block()->has_trap_at(bci())) {
1465 // We must respect the flow pass's traps, because it will refuse
1466 // to produce successors for trapping blocks.
1467 int trap_index = block()->flow()->trap_index();
1468 assert(trap_index != 0, "trap index must be valid");
1469 uncommon_trap(trap_index);
1470 break;
1471 }
1472
1473 NOT_PRODUCT( parse_histogram()->set_initial_state(bc()); );
1474
1475 #ifdef ASSERT
1476 int pre_bc_sp = sp();
1477 int inputs, depth;
1478 bool have_se = !stopped() && compute_stack_effects(inputs, depth);
1479 assert(!have_se || pre_bc_sp >= inputs, "have enough stack to execute this BC: pre_bc_sp=%d, inputs=%d", pre_bc_sp, inputs);
1480 #endif //ASSERT
1481
1482 do_one_bytecode();
1483
1484 assert(!have_se || stopped() || failing() || (sp() - pre_bc_sp) == depth,
1485 "incorrect depth prediction: sp=%d, pre_bc_sp=%d, depth=%d", sp(), pre_bc_sp, depth);
1486
1487 do_exceptions();
1488
1489 NOT_PRODUCT( parse_histogram()->record_change(); );
1490
1491 if (log != NULL)
1492 log->clear_context(); // skip marker if nothing was printed
1493
1494 // Fall into next bytecode. Each bytecode normally has 1 sequential
1495 // successor which is typically made ready by visiting this bytecode.
1496 // If the successor has several predecessors, then it is a merge
1497 // point, starts a new basic block, and is handled like other basic blocks.
1498 }
1499 }
1500
1501
1502 //------------------------------merge------------------------------------------
1503 void Parse::set_parse_bci(int bci) {
1504 set_bci(bci);
1505 Node_Notes* nn = C->default_node_notes();
|