< prev index next >

src/hotspot/share/jfr/recorder/checkpoint/types/traceid/jfrTraceId.hpp

Print this page

 61  * These classes have been extended to include a _traceid field (64-bits).
 62  *
 63  * Each instance is uniquely identified by a type-relative monotonic counter that is unique over the VM lifecycle.
 64  * "Tagging an instance" essentially means to set contextually determined (by epoch) marker bits in the _traceid field.
 65  * The constants associated with a tagged instance is a set of which is determined by a constant type definition,
 66  * and these constants are then serialized in an upcoming checkpoint event for the relevant chunk.
 67  *
 68  * Note that a "tagging" is relative to a chunk. Having serialized the tagged instance, the tag bits are reset (for that epoch).
 69  * As mentioned previously, the returned traceid is always the untagged value.
 70  *
 71  * We also use the _traceid field in Klass to quickly identify (bit check) if a newly loaded klass is of type jdk.jfr.Event.
 72  * (see jfr/instrumentation/jfrEventClassTransformer.cpp)
 73  *
 74  *
 75  * _traceid bit layout and description planned to go here
 76  *
 77  *
 78  */
 79 
 80 class JfrTraceId : public AllStatic {



 81  public:
 82   static void assign(const Klass* klass);
 83   static void assign(const ModuleEntry* module);
 84   static void assign(const PackageEntry* package);
 85   static void assign(const ClassLoaderData* cld);
 86   static traceid assign_primitive_klass_id();
 87   static traceid assign_thread_id();
 88 
 89   // through load barrier
 90   static traceid load(const Klass* klass);
 91   static traceid load(jclass jc, bool raw = false);
 92   static traceid load(const Method* method);
 93   static traceid load(const Klass* klass, const Method* method);
 94   static traceid load(const ModuleEntry* module);
 95   static traceid load(const PackageEntry* package);
 96   static traceid load(const ClassLoaderData* cld);
 97   static traceid load_leakp(const Klass* klass, const Method* method); // leak profiler
 98 
 99   // load barrier elision
100   static traceid load_raw(const Klass* klass);

 61  * These classes have been extended to include a _traceid field (64-bits).
 62  *
 63  * Each instance is uniquely identified by a type-relative monotonic counter that is unique over the VM lifecycle.
 64  * "Tagging an instance" essentially means to set contextually determined (by epoch) marker bits in the _traceid field.
 65  * The constants associated with a tagged instance is a set of which is determined by a constant type definition,
 66  * and these constants are then serialized in an upcoming checkpoint event for the relevant chunk.
 67  *
 68  * Note that a "tagging" is relative to a chunk. Having serialized the tagged instance, the tag bits are reset (for that epoch).
 69  * As mentioned previously, the returned traceid is always the untagged value.
 70  *
 71  * We also use the _traceid field in Klass to quickly identify (bit check) if a newly loaded klass is of type jdk.jfr.Event.
 72  * (see jfr/instrumentation/jfrEventClassTransformer.cpp)
 73  *
 74  *
 75  * _traceid bit layout and description planned to go here
 76  *
 77  *
 78  */
 79 
 80 class JfrTraceId : public AllStatic {
 81   friend class JfrRecorder;
 82  private:
 83   static bool initialize();
 84  public:
 85   static void assign(const Klass* klass);
 86   static void assign(const ModuleEntry* module);
 87   static void assign(const PackageEntry* package);
 88   static void assign(const ClassLoaderData* cld);
 89   static traceid assign_primitive_klass_id();
 90   static traceid assign_thread_id();
 91 
 92   // through load barrier
 93   static traceid load(const Klass* klass);
 94   static traceid load(jclass jc, bool raw = false);
 95   static traceid load(const Method* method);
 96   static traceid load(const Klass* klass, const Method* method);
 97   static traceid load(const ModuleEntry* module);
 98   static traceid load(const PackageEntry* package);
 99   static traceid load(const ClassLoaderData* cld);
100   static traceid load_leakp(const Klass* klass, const Method* method); // leak profiler
101 
102   // load barrier elision
103   static traceid load_raw(const Klass* klass);
< prev index next >