changeset 4566 | b363f6ef4068 |
parent 4564 | 55dfb20908d0 |
child 4748 | 3fa8d8a7c0ea |
4565:cbb3fed38514 | 4566:b363f6ef4068 |
---|---|
792 #ifdef ENABLE_ZAP_DEAD_LOCALS |
792 #ifdef ENABLE_ZAP_DEAD_LOCALS |
793 assert( is_node_getting_a_safepoint(mach), "logic does not match; false negative"); |
793 assert( is_node_getting_a_safepoint(mach), "logic does not match; false negative"); |
794 #endif |
794 #endif |
795 |
795 |
796 int safepoint_pc_offset = current_offset; |
796 int safepoint_pc_offset = current_offset; |
797 bool is_method_handle_invoke = false; |
|
797 |
798 |
798 // Add the safepoint in the DebugInfoRecorder |
799 // Add the safepoint in the DebugInfoRecorder |
799 if( !mach->is_MachCall() ) { |
800 if( !mach->is_MachCall() ) { |
800 mcall = NULL; |
801 mcall = NULL; |
801 debug_info()->add_safepoint(safepoint_pc_offset, sfn->_oop_map); |
802 debug_info()->add_safepoint(safepoint_pc_offset, sfn->_oop_map); |
802 } else { |
803 } else { |
803 mcall = mach->as_MachCall(); |
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 safepoint_pc_offset += mcall->ret_addr_offset(); |
810 safepoint_pc_offset += mcall->ret_addr_offset(); |
805 debug_info()->add_safepoint(safepoint_pc_offset, mcall->_oop_map); |
811 debug_info()->add_safepoint(safepoint_pc_offset, mcall->_oop_map); |
806 } |
812 } |
807 |
813 |
808 // Loop over the JVMState list to add scope information |
814 // Loop over the JVMState list to add scope information |
911 ciMethod* scope_method = method ? method : _method; |
917 ciMethod* scope_method = method ? method : _method; |
912 // Describe the scope here |
918 // Describe the scope here |
913 assert(jvms->bci() >= InvocationEntryBci && jvms->bci() <= 0x10000, "must be a valid or entry BCI"); |
919 assert(jvms->bci() >= InvocationEntryBci && jvms->bci() <= 0x10000, "must be a valid or entry BCI"); |
914 assert(!jvms->should_reexecute() || depth == max_depth, "reexecute allowed only for the youngest"); |
920 assert(!jvms->should_reexecute() || depth == max_depth, "reexecute allowed only for the youngest"); |
915 // Now we can describe the scope. |
921 // Now we can describe the scope. |
916 bool is_method_handle_invoke = false; |
|
917 debug_info()->describe_scope(safepoint_pc_offset, scope_method, jvms->bci(), jvms->should_reexecute(), is_method_handle_invoke, locvals, expvals, monvals); |
922 debug_info()->describe_scope(safepoint_pc_offset, scope_method, jvms->bci(), jvms->should_reexecute(), is_method_handle_invoke, locvals, expvals, monvals); |
918 } // End jvms loop |
923 } // End jvms loop |
919 |
924 |
920 // Mark the end of the scope set. |
925 // Mark the end of the scope set. |
921 debug_info()->end_safepoint(safepoint_pc_offset); |
926 debug_info()->end_safepoint(safepoint_pc_offset); |