src/share/vm/prims/jvmtiImpl.cpp

changeset 2836
0cddebc420d8
parent 2624
46a56fac55c7
child 3156
f08d439fab8c
equal deleted inserted replaced
2835:e534ac80e49a 2836:0cddebc420d8
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

mercurial