equal
deleted
inserted
replaced
822 _artifacts->iterate_cstrings(csw); |
822 _artifacts->iterate_cstrings(csw); |
823 sw.add(csw.count()); |
823 sw.add(csw.count()); |
824 _artifacts->tally(sw); |
824 _artifacts->tally(sw); |
825 } |
825 } |
826 |
826 |
|
827 static bool clear_artifacts = false; |
|
828 |
|
829 void JfrTypeSet::clear() { |
|
830 clear_artifacts = true; |
|
831 } |
|
832 |
827 typedef Wrapper<KlassPtr, ClearArtifact> ClearKlassBits; |
833 typedef Wrapper<KlassPtr, ClearArtifact> ClearKlassBits; |
828 typedef Wrapper<MethodPtr, ClearArtifact> ClearMethodFlag; |
834 typedef Wrapper<MethodPtr, ClearArtifact> ClearMethodFlag; |
829 typedef MethodIteratorHost<ClearMethodFlag, ClearKlassBits, false> ClearKlassAndMethods; |
835 typedef MethodIteratorHost<ClearMethodFlag, ClearKlassBits, false> ClearKlassAndMethods; |
830 |
836 |
831 static size_t teardown() { |
837 static size_t teardown() { |
833 const size_t total_count = _artifacts->total_count(); |
839 const size_t total_count = _artifacts->total_count(); |
834 if (previous_epoch()) { |
840 if (previous_epoch()) { |
835 assert(_writer != NULL, "invariant"); |
841 assert(_writer != NULL, "invariant"); |
836 ClearKlassAndMethods clear(_writer); |
842 ClearKlassAndMethods clear(_writer); |
837 _artifacts->iterate_klasses(clear); |
843 _artifacts->iterate_klasses(clear); |
838 _artifacts->clear(); |
844 JfrTypeSet::clear(); |
839 ++checkpoint_id; |
845 ++checkpoint_id; |
840 } |
846 } |
841 return total_count; |
847 return total_count; |
842 } |
848 } |
843 |
849 |
847 _class_unload = class_unload; |
853 _class_unload = class_unload; |
848 _flushpoint = flushpoint; |
854 _flushpoint = flushpoint; |
849 if (_artifacts == NULL) { |
855 if (_artifacts == NULL) { |
850 _artifacts = new JfrArtifactSet(class_unload); |
856 _artifacts = new JfrArtifactSet(class_unload); |
851 } else { |
857 } else { |
852 _artifacts->initialize(class_unload); |
858 _artifacts->initialize(class_unload, clear_artifacts); |
|
859 clear_artifacts = false; |
853 } |
860 } |
854 assert(_artifacts != NULL, "invariant"); |
861 assert(_artifacts != NULL, "invariant"); |
855 assert(!_artifacts->has_klass_entries(), "invariant"); |
862 assert(!_artifacts->has_klass_entries(), "invariant"); |
856 } |
863 } |
857 |
864 |