Print this page
rev 1081 : imported patch indy-cleanup-6893081.patch
rev 1082 : [mq]: indy.compiler.patch

Split Close
Expand all
Collapse all
          --- old/src/share/vm/opto/output.cpp
          +++ new/src/share/vm/opto/output.cpp
↓ open down ↓ 786 lines elided ↑ open up ↑
 787  787  
 788  788    // Handle special safepoint nodes for synchronization
 789  789    MachSafePointNode *sfn   = mach->as_MachSafePoint();
 790  790    MachCallNode      *mcall;
 791  791  
 792  792  #ifdef ENABLE_ZAP_DEAD_LOCALS
 793  793    assert( is_node_getting_a_safepoint(mach),  "logic does not match; false negative");
 794  794  #endif
 795  795  
 796  796    int safepoint_pc_offset = current_offset;
      797 +  bool is_method_handle_invoke = false;
 797  798  
 798  799    // Add the safepoint in the DebugInfoRecorder
 799  800    if( !mach->is_MachCall() ) {
 800  801      mcall = NULL;
 801  802      debug_info()->add_safepoint(safepoint_pc_offset, sfn->_oop_map);
 802  803    } else {
 803  804      mcall = mach->as_MachCall();
      805 +
      806 +    // Is the call a MethodHandle call?
      807 +    if (mcall->is_MachCallJava())
      808 +      is_method_handle_invoke = mcall->as_MachCallJava()->_method_handle_invoke;
      809 +
 804  810      safepoint_pc_offset += mcall->ret_addr_offset();
 805  811      debug_info()->add_safepoint(safepoint_pc_offset, mcall->_oop_map);
 806  812    }
 807  813  
 808  814    // Loop over the JVMState list to add scope information
 809  815    // Do not skip safepoints with a NULL method, they need monitor info
 810  816    JVMState* youngest_jvms = sfn->jvms();
 811  817    int max_depth = youngest_jvms->depth();
 812  818  
 813  819    // Allocate the object pool for scalar-replaced objects -- the map from
↓ open down ↓ 92 lines elided ↑ open up ↑
 906  912      DebugToken *locvals = debug_info()->create_scope_values(locarray);
 907  913      DebugToken *expvals = debug_info()->create_scope_values(exparray);
 908  914      DebugToken *monvals = debug_info()->create_monitor_values(monarray);
 909  915  
 910  916      // Make method available for all Safepoints
 911  917      ciMethod* scope_method = method ? method : _method;
 912  918      // Describe the scope here
 913  919      assert(jvms->bci() >= InvocationEntryBci && jvms->bci() <= 0x10000, "must be a valid or entry BCI");
 914  920      assert(!jvms->should_reexecute() || depth == max_depth, "reexecute allowed only for the youngest");
 915  921      // Now we can describe the scope.
 916      -    bool is_method_handle_invoke = false;
 917  922      debug_info()->describe_scope(safepoint_pc_offset, scope_method, jvms->bci(), jvms->should_reexecute(), is_method_handle_invoke, locvals, expvals, monvals);
 918  923    } // End jvms loop
 919  924  
 920  925    // Mark the end of the scope set.
 921  926    debug_info()->end_safepoint(safepoint_pc_offset);
 922  927  }
 923  928  
 924  929  
 925  930  
 926  931  // A simplified version of Process_OopMap_Node, to handle non-safepoints.
↓ open down ↓ 1842 lines elided ↑ open up ↑
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX