src/share/vm/oops/generateOopMap.cpp
Print this page
rev 4327 : [mq]: JDK-8009022
*** 760,769 ****
--- 760,770 ----
// depths match up then their states are merged. Otherwise the
// mismatch is simply recorded and interpretation continues since
// monitor matching is purely informational and doesn't say anything
// about the correctness of the code.
void GenerateOopMap::merge_state_into_bb(BasicBlock *bb) {
+ guarantee(bb != NULL, "null basicblock");
assert(bb->is_alive(), "merging state into a dead basicblock");
if (_stack_top == bb->_stack_top) {
// always merge local state even if monitors don't match.
if (merge_local_state_vectors(_state, bb->_state)) {
*** 1187,1196 ****
--- 1188,1198 ----
int handler_pc = exct.handler_pc(i);
int catch_type = exct.catch_type_index(i);
if (start_pc <= bci && bci < end_pc) {
BasicBlock *excBB = get_basic_block_at(handler_pc);
+ guarantee(excBB != NULL, "no basic block for exception");
CellTypeState *excStk = excBB->stack();
CellTypeState *cOpStck = stack();
CellTypeState cOpStck_0 = cOpStck[0];
int cOpStackTop = _stack_top;
*** 1801,1810 ****
--- 1803,1813 ----
// this monitorexit will be visited again. We need to
// do this to ensure that we have accounted for the
// possibility that this bytecode will throw an
// exception.
BasicBlock* bb = get_basic_block_containing(bci);
+ guarantee(bb != NULL, "no basic block for bci");
bb->set_changed(true);
bb->_monitor_top = bad_monitors;
if (TraceMonitorMismatch) {
report_monitor_mismatch("improper monitor pair");
*** 2188,2197 ****
--- 2191,2201 ----
// We now want to report the result of the parse
_report_result = true;
// Find basicblock and report results
BasicBlock* bb = get_basic_block_containing(bci);
+ guarantee(bb != NULL, "no basic block for bci");
assert(bb->is_reachable(), "getting result from unreachable basicblock");
bb->set_changed(true);
interp_bb(bb);
}