< prev index next >

src/share/vm/opto/parse1.cpp

Print this page




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


< prev index next >