45 //
46 // A class loader represents a linkset. Conceptually, a linkset identifies
47 // the complete transitive closure of resolved links that a dynamic linker can
48 // produce.
49 //
50 // A ClassLoaderData also encapsulates the allocation space, called a metaspace,
51 // used by the dynamic linker to allocate the runtime representation of all
52 // the types it defines.
53 //
54 // ClassLoaderData are stored in the runtime representation of classes,
55 // and provides iterators for root tracing and other GC operations.
56
57 class ClassLoaderDataGraph;
58 class JNIMethodBlock;
59 class ModuleEntry;
60 class PackageEntry;
61 class ModuleEntryTable;
62 class PackageEntryTable;
63 class DictionaryEntry;
64 class Dictionary;
65
66 // ClassLoaderData class
67
68 class ClassLoaderData : public CHeapObj<mtClass> {
69 friend class VMStructs;
70
71 private:
72 class ChunkedHandleList {
73 struct Chunk : public CHeapObj<mtClass> {
74 static const size_t CAPACITY = 32;
75
76 oop _data[CAPACITY];
77 volatile juint _size;
78 Chunk* _next;
79
80 Chunk(Chunk* c) : _size(0), _next(c) { }
81 };
82
83 Chunk* volatile _head;
84
|
45 //
46 // A class loader represents a linkset. Conceptually, a linkset identifies
47 // the complete transitive closure of resolved links that a dynamic linker can
48 // produce.
49 //
50 // A ClassLoaderData also encapsulates the allocation space, called a metaspace,
51 // used by the dynamic linker to allocate the runtime representation of all
52 // the types it defines.
53 //
54 // ClassLoaderData are stored in the runtime representation of classes,
55 // and provides iterators for root tracing and other GC operations.
56
57 class ClassLoaderDataGraph;
58 class JNIMethodBlock;
59 class ModuleEntry;
60 class PackageEntry;
61 class ModuleEntryTable;
62 class PackageEntryTable;
63 class DictionaryEntry;
64 class Dictionary;
65 class ClassLoaderMetaspace;
66
67 // ClassLoaderData class
68
69 class ClassLoaderData : public CHeapObj<mtClass> {
70 friend class VMStructs;
71
72 private:
73 class ChunkedHandleList {
74 struct Chunk : public CHeapObj<mtClass> {
75 static const size_t CAPACITY = 32;
76
77 oop _data[CAPACITY];
78 volatile juint _size;
79 Chunk* _next;
80
81 Chunk(Chunk* c) : _size(0), _next(c) { }
82 };
83
84 Chunk* volatile _head;
85
|