354 static jint load_agent_library(AttachOperation* op, outputStream* out); |
354 static jint load_agent_library(AttachOperation* op, outputStream* out); |
355 #endif // SERVICES_KERNEL |
355 #endif // SERVICES_KERNEL |
356 |
356 |
357 // SetNativeMethodPrefix support |
357 // SetNativeMethodPrefix support |
358 static char** get_all_native_method_prefixes(int* count_ptr); |
358 static char** get_all_native_method_prefixes(int* count_ptr); |
359 |
|
360 // call after CMS has completed referencing processing |
|
361 static void cms_ref_processing_epilogue() KERNEL_RETURN; |
|
362 }; |
359 }; |
363 |
360 |
364 // Support class used by JvmtiDynamicCodeEventCollector and others. It |
361 // Support class used by JvmtiDynamicCodeEventCollector and others. It |
365 // describes a single code blob by name and address range. |
362 // describes a single code blob by name and address range. |
366 class JvmtiCodeBlobDesc : public CHeapObj { |
363 class JvmtiCodeBlobDesc : public CHeapObj { |
490 }; |
487 }; |
491 |
488 |
492 |
489 |
493 // Base class for reporting GC events to JVMTI. |
490 // Base class for reporting GC events to JVMTI. |
494 class JvmtiGCMarker : public StackObj { |
491 class JvmtiGCMarker : public StackObj { |
495 private: |
492 public: |
496 bool _full; // marks a "full" GC |
493 JvmtiGCMarker() KERNEL_RETURN; |
497 unsigned int _invocation_count; // GC invocation count |
494 ~JvmtiGCMarker() KERNEL_RETURN; |
498 protected: |
495 }; |
499 JvmtiGCMarker(bool full) KERNEL_RETURN; // protected |
|
500 ~JvmtiGCMarker() KERNEL_RETURN; // protected |
|
501 }; |
|
502 |
|
503 |
|
504 // Support class used to report GC events to JVMTI. The class is stack |
|
505 // allocated and should be placed in the doit() implementation of all |
|
506 // vm operations that do a stop-the-world GC for failed allocation. |
|
507 // |
|
508 // Usage :- |
|
509 // |
|
510 // void VM_GenCollectForAllocation::doit() { |
|
511 // JvmtiGCForAllocationMarker jgcm; |
|
512 // : |
|
513 // } |
|
514 // |
|
515 // If jvmti is not enabled the constructor and destructor is essentially |
|
516 // a no-op (no overhead). |
|
517 // |
|
518 class JvmtiGCForAllocationMarker : public JvmtiGCMarker { |
|
519 public: |
|
520 JvmtiGCForAllocationMarker() : JvmtiGCMarker(false) { |
|
521 } |
|
522 }; |
|
523 |
|
524 // Support class used to report GC events to JVMTI. The class is stack |
|
525 // allocated and should be placed in the doit() implementation of all |
|
526 // vm operations that do a "full" stop-the-world GC. This class differs |
|
527 // from JvmtiGCForAllocationMarker in that this class assumes that a |
|
528 // "full" GC will happen. |
|
529 // |
|
530 // Usage :- |
|
531 // |
|
532 // void VM_GenCollectFull::doit() { |
|
533 // JvmtiGCFullMarker jgcm; |
|
534 // : |
|
535 // } |
|
536 // |
|
537 class JvmtiGCFullMarker : public JvmtiGCMarker { |
|
538 public: |
|
539 JvmtiGCFullMarker() : JvmtiGCMarker(true) { |
|
540 } |
|
541 }; |
|
542 |
|
543 |
496 |
544 // JvmtiHideSingleStepping is a helper class for hiding |
497 // JvmtiHideSingleStepping is a helper class for hiding |
545 // internal single step events. |
498 // internal single step events. |
546 class JvmtiHideSingleStepping : public StackObj { |
499 class JvmtiHideSingleStepping : public StackObj { |
547 private: |
500 private: |