equal
deleted
inserted
replaced
36 #include "runtime/deoptimization.hpp" |
36 #include "runtime/deoptimization.hpp" |
37 #include "runtime/handles.hpp" |
37 #include "runtime/handles.hpp" |
38 #include "runtime/handles.inline.hpp" |
38 #include "runtime/handles.inline.hpp" |
39 #include "runtime/interfaceSupport.hpp" |
39 #include "runtime/interfaceSupport.hpp" |
40 #include "runtime/javaCalls.hpp" |
40 #include "runtime/javaCalls.hpp" |
|
41 #include "runtime/os.hpp" |
41 #include "runtime/serviceThread.hpp" |
42 #include "runtime/serviceThread.hpp" |
42 #include "runtime/signature.hpp" |
43 #include "runtime/signature.hpp" |
43 #include "runtime/vframe.hpp" |
44 #include "runtime/vframe.hpp" |
44 #include "runtime/vframe_hp.hpp" |
45 #include "runtime/vframe_hp.hpp" |
45 #include "runtime/vm_operations.hpp" |
46 #include "runtime/vm_operations.hpp" |
937 // zombie_ok == true here so that our nmethod that was just |
938 // zombie_ok == true here so that our nmethod that was just |
938 // made into a zombie can be locked. |
939 // made into a zombie can be locked. |
939 nmethodLocker::lock_nmethod(nm, true /* zombie_ok */); |
940 nmethodLocker::lock_nmethod(nm, true /* zombie_ok */); |
940 return event; |
941 return event; |
941 } |
942 } |
|
943 |
942 JvmtiDeferredEvent JvmtiDeferredEvent::dynamic_code_generated_event( |
944 JvmtiDeferredEvent JvmtiDeferredEvent::dynamic_code_generated_event( |
943 const char* name, const void* code_begin, const void* code_end) { |
945 const char* name, const void* code_begin, const void* code_end) { |
944 JvmtiDeferredEvent event = JvmtiDeferredEvent(TYPE_DYNAMIC_CODE_GENERATED); |
946 JvmtiDeferredEvent event = JvmtiDeferredEvent(TYPE_DYNAMIC_CODE_GENERATED); |
945 event._event_data.dynamic_code_generated.name = name; |
947 // Need to make a copy of the name since we don't know how long |
|
948 // the event poster will keep it around after we enqueue the |
|
949 // deferred event and return. strdup() failure is handled in |
|
950 // the post() routine below. |
|
951 event._event_data.dynamic_code_generated.name = os::strdup(name); |
946 event._event_data.dynamic_code_generated.code_begin = code_begin; |
952 event._event_data.dynamic_code_generated.code_begin = code_begin; |
947 event._event_data.dynamic_code_generated.code_end = code_end; |
953 event._event_data.dynamic_code_generated.code_end = code_end; |
948 return event; |
954 return event; |
949 } |
955 } |
950 |
956 |
966 _event_data.compiled_method_unload.code_begin); |
972 _event_data.compiled_method_unload.code_begin); |
967 // done with the deferred event so unlock the nmethod |
973 // done with the deferred event so unlock the nmethod |
968 nmethodLocker::unlock_nmethod(nm); |
974 nmethodLocker::unlock_nmethod(nm); |
969 break; |
975 break; |
970 } |
976 } |
971 case TYPE_DYNAMIC_CODE_GENERATED: |
977 case TYPE_DYNAMIC_CODE_GENERATED: { |
972 JvmtiExport::post_dynamic_code_generated_internal( |
978 JvmtiExport::post_dynamic_code_generated_internal( |
973 _event_data.dynamic_code_generated.name, |
979 // if strdup failed give the event a default name |
|
980 (_event_data.dynamic_code_generated.name == NULL) |
|
981 ? "unknown_code" : _event_data.dynamic_code_generated.name, |
974 _event_data.dynamic_code_generated.code_begin, |
982 _event_data.dynamic_code_generated.code_begin, |
975 _event_data.dynamic_code_generated.code_end); |
983 _event_data.dynamic_code_generated.code_end); |
|
984 if (_event_data.dynamic_code_generated.name != NULL) { |
|
985 // release our copy |
|
986 os::free((void *)_event_data.dynamic_code_generated.name); |
|
987 } |
976 break; |
988 break; |
|
989 } |
977 default: |
990 default: |
978 ShouldNotReachHere(); |
991 ShouldNotReachHere(); |
979 } |
992 } |
980 } |
993 } |
981 |
994 |