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