src/share/vm/oops/generateOopMap.cpp

Print this page
rev 4327 : [mq]: JDK-8009022

@@ -760,10 +760,11 @@
 // 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,10 +1188,11 @@
       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,10 +1803,11 @@
     // 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,10 +2191,11 @@
   // 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);
 }