111 static int _offset_of_stack;
112
113 InstanceStackChunkKlass(const ClassFileParser& parser);
114
115 public:
116 InstanceStackChunkKlass();
117
118 // Casting from Klass*
119 static InstanceStackChunkKlass* cast(Klass* k) {
120 assert(k->is_stack_chunk_instance_klass(), "cast to InstanceStackChunkKlass");
121 return static_cast<InstanceStackChunkKlass*>(k);
122 }
123
124 inline size_t instance_size(size_t stack_size_in_words) const;
125
126 static inline size_t bitmap_size_in_bits(size_t stack_size_in_words); // In bits
127 static inline size_t bitmap_size(size_t stack_size_in_words); // In words
128 static inline size_t gc_data_size(size_t stack_size_in_words); // In words
129
130 // Returns the size of the instance including the stack data.
131 virtual size_t oop_size(oop obj) const override;
132
133 static void serialize_offsets(class SerializeClosure* f) NOT_CDS_RETURN;
134
135 static void print_chunk(const stackChunkOop chunk, bool verbose, outputStream* st = tty);
136
137 #ifndef PRODUCT
138 void oop_print_on(oop obj, outputStream* st) override;
139 #endif
140
141 // Stack offset is an offset into the Heap
142 static int offset_of_stack() { return _offset_of_stack; }
143 static void init_offset_of_stack();
144
145 // Oop fields (and metadata) iterators
146 //
147 // The InstanceClassLoaderKlass iterators also visit the CLD pointer (or mirror of anonymous klasses).
148
149 // Forward iteration
150 // Iterate over the oop fields and metadata.
151 template <typename T, class OopClosureType>
|
111 static int _offset_of_stack;
112
113 InstanceStackChunkKlass(const ClassFileParser& parser);
114
115 public:
116 InstanceStackChunkKlass();
117
118 // Casting from Klass*
119 static InstanceStackChunkKlass* cast(Klass* k) {
120 assert(k->is_stack_chunk_instance_klass(), "cast to InstanceStackChunkKlass");
121 return static_cast<InstanceStackChunkKlass*>(k);
122 }
123
124 inline size_t instance_size(size_t stack_size_in_words) const;
125
126 static inline size_t bitmap_size_in_bits(size_t stack_size_in_words); // In bits
127 static inline size_t bitmap_size(size_t stack_size_in_words); // In words
128 static inline size_t gc_data_size(size_t stack_size_in_words); // In words
129
130 // Returns the size of the instance including the stack data.
131 size_t oop_size(oop obj, markWord mark) const override;
132
133 static void serialize_offsets(class SerializeClosure* f) NOT_CDS_RETURN;
134
135 static void print_chunk(const stackChunkOop chunk, bool verbose, outputStream* st = tty);
136
137 #ifndef PRODUCT
138 void oop_print_on(oop obj, outputStream* st) override;
139 #endif
140
141 // Stack offset is an offset into the Heap
142 static int offset_of_stack() { return _offset_of_stack; }
143 static void init_offset_of_stack();
144
145 // Oop fields (and metadata) iterators
146 //
147 // The InstanceClassLoaderKlass iterators also visit the CLD pointer (or mirror of anonymous klasses).
148
149 // Forward iteration
150 // Iterate over the oop fields and metadata.
151 template <typename T, class OopClosureType>
|