Mercurial > hg > graal-jvmci-8
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: |