Mercurial > hg > truffle
comparison src/share/vm/prims/jvmtiExport.cpp @ 2177:3582bf76420e
6990754: Use native memory and reference counting to implement SymbolTable
Summary: move symbols from permgen into C heap and reference count them
Reviewed-by: never, acorn, jmasa, stefank
author | coleenp |
---|---|
date | Thu, 27 Jan 2011 16:11:27 -0800 |
parents | 9afee0b9fc1d |
children | bf8517f4e4d0 |
comparison
equal
deleted
inserted
replaced
2176:27e4ea99855d | 2177:3582bf76420e |
---|---|
266 jobject _jloader; | 266 jobject _jloader; |
267 jobject _protection_domain; | 267 jobject _protection_domain; |
268 jclass _class_being_redefined; | 268 jclass _class_being_redefined; |
269 | 269 |
270 public: | 270 public: |
271 JvmtiClassFileLoadEventMark(JavaThread *thread, symbolHandle name, | 271 JvmtiClassFileLoadEventMark(JavaThread *thread, Symbol* name, |
272 Handle class_loader, Handle prot_domain, KlassHandle *class_being_redefined) : JvmtiThreadEventMark(thread) { | 272 Handle class_loader, Handle prot_domain, KlassHandle *class_being_redefined) : JvmtiThreadEventMark(thread) { |
273 _class_name = name() != NULL? name->as_utf8() : NULL; | 273 _class_name = name != NULL? name->as_utf8() : NULL; |
274 _jloader = (jobject)to_jobject(class_loader()); | 274 _jloader = (jobject)to_jobject(class_loader()); |
275 _protection_domain = (jobject)to_jobject(prot_domain()); | 275 _protection_domain = (jobject)to_jobject(prot_domain()); |
276 if (class_being_redefined == NULL) { | 276 if (class_being_redefined == NULL) { |
277 _class_being_redefined = NULL; | 277 _class_being_redefined = NULL; |
278 } else { | 278 } else { |
504 } | 504 } |
505 } | 505 } |
506 | 506 |
507 class JvmtiClassFileLoadHookPoster : public StackObj { | 507 class JvmtiClassFileLoadHookPoster : public StackObj { |
508 private: | 508 private: |
509 symbolHandle _h_name; | 509 Symbol* _h_name; |
510 Handle _class_loader; | 510 Handle _class_loader; |
511 Handle _h_protection_domain; | 511 Handle _h_protection_domain; |
512 unsigned char ** _data_ptr; | 512 unsigned char ** _data_ptr; |
513 unsigned char ** _end_ptr; | 513 unsigned char ** _end_ptr; |
514 JavaThread * _thread; | 514 JavaThread * _thread; |
520 JvmtiThreadState * _state; | 520 JvmtiThreadState * _state; |
521 KlassHandle * _h_class_being_redefined; | 521 KlassHandle * _h_class_being_redefined; |
522 JvmtiClassLoadKind _load_kind; | 522 JvmtiClassLoadKind _load_kind; |
523 | 523 |
524 public: | 524 public: |
525 inline JvmtiClassFileLoadHookPoster(symbolHandle h_name, Handle class_loader, | 525 inline JvmtiClassFileLoadHookPoster(Symbol* h_name, Handle class_loader, |
526 Handle h_protection_domain, | 526 Handle h_protection_domain, |
527 unsigned char **data_ptr, unsigned char **end_ptr, | 527 unsigned char **data_ptr, unsigned char **end_ptr, |
528 unsigned char **cached_data_ptr, | 528 unsigned char **cached_data_ptr, |
529 jint *cached_length_ptr) { | 529 jint *cached_length_ptr) { |
530 _h_name = h_name; | 530 _h_name = h_name; |
595 unsigned char *new_data = NULL; | 595 unsigned char *new_data = NULL; |
596 jint new_len = 0; | 596 jint new_len = 0; |
597 // EVT_TRACE(JVMTI_EVENT_CLASS_FILE_LOAD_HOOK, | 597 // EVT_TRACE(JVMTI_EVENT_CLASS_FILE_LOAD_HOOK, |
598 // ("JVMTI [%s] class file load hook event sent %s data_ptr = %d, data_len = %d", | 598 // ("JVMTI [%s] class file load hook event sent %s data_ptr = %d, data_len = %d", |
599 // JvmtiTrace::safe_get_thread_name(_thread), | 599 // JvmtiTrace::safe_get_thread_name(_thread), |
600 // _h_name.is_null() ? "NULL" : _h_name->as_utf8(), | 600 // _h_name == NULL ? "NULL" : _h_name->as_utf8(), |
601 // _curr_data, _curr_len )); | 601 // _curr_data, _curr_len )); |
602 JvmtiClassFileLoadEventMark jem(_thread, _h_name, _class_loader, | 602 JvmtiClassFileLoadEventMark jem(_thread, _h_name, _class_loader, |
603 _h_protection_domain, | 603 _h_protection_domain, |
604 _h_class_being_redefined); | 604 _h_class_being_redefined); |
605 JvmtiJavaThreadEventTransition jet(_thread); | 605 JvmtiJavaThreadEventTransition jet(_thread); |
653 }; | 653 }; |
654 | 654 |
655 bool JvmtiExport::_should_post_class_file_load_hook = false; | 655 bool JvmtiExport::_should_post_class_file_load_hook = false; |
656 | 656 |
657 // this entry is for class file load hook on class load, redefine and retransform | 657 // this entry is for class file load hook on class load, redefine and retransform |
658 void JvmtiExport::post_class_file_load_hook(symbolHandle h_name, | 658 void JvmtiExport::post_class_file_load_hook(Symbol* h_name, |
659 Handle class_loader, | 659 Handle class_loader, |
660 Handle h_protection_domain, | 660 Handle h_protection_domain, |
661 unsigned char **data_ptr, | 661 unsigned char **data_ptr, |
662 unsigned char **end_ptr, | 662 unsigned char **end_ptr, |
663 unsigned char **cached_data_ptr, | 663 unsigned char **cached_data_ptr, |