comparison src/share/vm/prims/jvmtiExport.hpp @ 2125:7246a374a9f2

6458402: 3 jvmti tests fail with CMS and +ExplicitGCInvokesConcurrent Summary: Make JvmtiGCMark safe to run non-safepoint and instrument CMS Reviewed-by: ysr, dcubed
author kamg
date Mon, 10 Jan 2011 17:14:53 -0500
parents c760f78e0a53
children 9afee0b9fc1d
comparison
equal deleted inserted replaced
2124:e31d8c656c5b 2125:7246a374a9f2
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: