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(); |