Print this page


Split Close
Expand all
Collapse all
          --- old/src/share/vm/c1/c1_LIRGenerator.cpp
          +++ new/src/share/vm/c1/c1_LIRGenerator.cpp
↓ open down ↓ 421 lines elided ↑ open up ↑
 422  422      int bci = s->bci();
 423  423      IRScope* scope = s->scope();
 424  424      ciMethod* method = scope->method();
 425  425  
 426  426      MethodLivenessResult liveness = method->liveness_at_bci(bci);
 427  427      if (bci == SynchronizationEntryBCI) {
 428  428        if (x->as_ExceptionObject() || x->as_Throw()) {
 429  429          // all locals are dead on exit from the synthetic unlocker
 430  430          liveness.clear();
 431  431        } else {
 432      -        assert(x->as_MonitorEnter(), "only other case is MonitorEnter");
      432 +        assert(x->as_MonitorEnter() || x->as_ProfileInvoke(), "only other cases are MonitorEnter and ProfileInvoke");
 433  433        }
 434  434      }
 435  435      if (!liveness.is_valid()) {
 436  436        // Degenerate or breakpointed method.
 437  437        bailout("Degenerate or breakpointed method");
 438  438      } else {
 439  439        assert((int)liveness.size() == s->locals_size(), "error in use of liveness");
 440  440        for_each_local_value(s, index, value) {
 441  441          assert(value->subst() == value, "missed substition");
 442  442          if (liveness.at(index) && !value->type()->is_illegal()) {
↓ open down ↓ 2726 lines elided ↑ open up ↑
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX