hotspot/src/share/vm/c1/c1_GraphBuilder.cpp
changeset 8492 e93bfdd91c63
parent 8066 919e5489b292
child 8671 13ffa40a2f0a
equal deleted inserted replaced
8490:d58c5dbf8c7b 8492:e93bfdd91c63
  3306 
  3306 
  3307   block()->set(BlockBegin::was_visited_flag);
  3307   block()->set(BlockBegin::was_visited_flag);
  3308   Value exception = append_with_bci(new ExceptionObject(), SynchronizationEntryBCI);
  3308   Value exception = append_with_bci(new ExceptionObject(), SynchronizationEntryBCI);
  3309   assert(exception->is_pinned(), "must be");
  3309   assert(exception->is_pinned(), "must be");
  3310 
  3310 
       
  3311   int bci = SynchronizationEntryBCI;
  3311   if (compilation()->env()->dtrace_method_probes()) {
  3312   if (compilation()->env()->dtrace_method_probes()) {
  3312     // Report exit from inline methods
  3313     // Report exit from inline methods.  We don't have a stream here
       
  3314     // so pass an explicit bci of SynchronizationEntryBCI.
  3313     Values* args = new Values(1);
  3315     Values* args = new Values(1);
  3314     args->push(append(new Constant(new ObjectConstant(method()))));
  3316     args->push(append_with_bci(new Constant(new ObjectConstant(method())), bci));
  3315     append(new RuntimeCall(voidType, "dtrace_method_exit", CAST_FROM_FN_PTR(address, SharedRuntime::dtrace_method_exit), args));
  3317     append_with_bci(new RuntimeCall(voidType, "dtrace_method_exit", CAST_FROM_FN_PTR(address, SharedRuntime::dtrace_method_exit), args), bci);
  3316   }
  3318   }
  3317 
  3319 
  3318   int bci = SynchronizationEntryBCI;
       
  3319   if (lock) {
  3320   if (lock) {
  3320     assert(state()->locks_size() > 0 && state()->lock_at(state()->locks_size() - 1) == lock, "lock is missing");
  3321     assert(state()->locks_size() > 0 && state()->lock_at(state()->locks_size() - 1) == lock, "lock is missing");
  3321     if (!lock->is_linked()) {
  3322     if (!lock->is_linked()) {
  3322       lock = append_with_bci(lock, -1);
  3323       lock = append_with_bci(lock, bci);
  3323     }
  3324     }
  3324 
  3325 
  3325     // exit the monitor in the context of the synchronized method
  3326     // exit the monitor in the context of the synchronized method
  3326     monitorexit(lock, SynchronizationEntryBCI);
  3327     monitorexit(lock, bci);
  3327 
  3328 
  3328     // exit the context of the synchronized method
  3329     // exit the context of the synchronized method
  3329     if (!default_handler) {
  3330     if (!default_handler) {
  3330       pop_scope();
  3331       pop_scope();
  3331       bci = _state->caller_state()->bci();
  3332       bci = _state->caller_state()->bci();