src/share/vm/c1/c1_GraphBuilder.cpp

changeset 2600
6f3746e69a78
parent 2487
aa4b04b68652
child 2634
425688247f3d
     1.1 --- a/src/share/vm/c1/c1_GraphBuilder.cpp	Wed Feb 23 19:09:16 2011 -0800
     1.2 +++ b/src/share/vm/c1/c1_GraphBuilder.cpp	Thu Feb 24 11:09:16 2011 -0800
     1.3 @@ -3308,22 +3308,23 @@
     1.4    Value exception = append_with_bci(new ExceptionObject(), SynchronizationEntryBCI);
     1.5    assert(exception->is_pinned(), "must be");
     1.6  
     1.7 +  int bci = SynchronizationEntryBCI;
     1.8    if (compilation()->env()->dtrace_method_probes()) {
     1.9 -    // Report exit from inline methods
    1.10 +    // Report exit from inline methods.  We don't have a stream here
    1.11 +    // so pass an explicit bci of SynchronizationEntryBCI.
    1.12      Values* args = new Values(1);
    1.13 -    args->push(append(new Constant(new ObjectConstant(method()))));
    1.14 -    append(new RuntimeCall(voidType, "dtrace_method_exit", CAST_FROM_FN_PTR(address, SharedRuntime::dtrace_method_exit), args));
    1.15 +    args->push(append_with_bci(new Constant(new ObjectConstant(method())), bci));
    1.16 +    append_with_bci(new RuntimeCall(voidType, "dtrace_method_exit", CAST_FROM_FN_PTR(address, SharedRuntime::dtrace_method_exit), args), bci);
    1.17    }
    1.18  
    1.19 -  int bci = SynchronizationEntryBCI;
    1.20    if (lock) {
    1.21      assert(state()->locks_size() > 0 && state()->lock_at(state()->locks_size() - 1) == lock, "lock is missing");
    1.22      if (!lock->is_linked()) {
    1.23 -      lock = append_with_bci(lock, -1);
    1.24 +      lock = append_with_bci(lock, bci);
    1.25      }
    1.26  
    1.27      // exit the monitor in the context of the synchronized method
    1.28 -    monitorexit(lock, SynchronizationEntryBCI);
    1.29 +    monitorexit(lock, bci);
    1.30  
    1.31      // exit the context of the synchronized method
    1.32      if (!default_handler) {

mercurial