46 int InstanceStackChunkKlass::_offset_of_stack = 0;
47
48 #if INCLUDE_CDS
49 void InstanceStackChunkKlass::serialize_offsets(SerializeClosure* f) {
50 f->do_int(&_offset_of_stack);
51 }
52 #endif
53
54 InstanceStackChunkKlass::InstanceStackChunkKlass() {
55 assert(CDSConfig::is_dumping_static_archive() || CDSConfig::is_using_archive(), "only for CDS");
56 }
57
58 InstanceStackChunkKlass::InstanceStackChunkKlass(const ClassFileParser& parser)
59 : InstanceKlass(parser, Kind) {
60 // Change the layout_helper to use the slow path because StackChunkOops are
61 // variable sized InstanceOops.
62 const jint lh = Klass::instance_layout_helper(size_helper(), true);
63 set_layout_helper(lh);
64 }
65
66 size_t InstanceStackChunkKlass::oop_size(oop obj) const {
67 return instance_size(jdk_internal_vm_StackChunk::size(obj));
68 }
69
70 #ifndef PRODUCT
71 void InstanceStackChunkKlass::oop_print_on(oop obj, outputStream* st) {
72 print_chunk(stackChunkOopDesc::cast(obj), false, st);
73 }
74 #endif
75
76 template<typename OopClosureType>
77 class StackChunkOopIterateFilterClosure: public OopClosure {
78 private:
79 OopClosureType* const _closure;
80 MemRegion _bound;
81
82 public:
83
84 StackChunkOopIterateFilterClosure(OopClosureType* closure, MemRegion bound)
85 : _closure(closure),
86 _bound(bound) {}
|
46 int InstanceStackChunkKlass::_offset_of_stack = 0;
47
48 #if INCLUDE_CDS
49 void InstanceStackChunkKlass::serialize_offsets(SerializeClosure* f) {
50 f->do_int(&_offset_of_stack);
51 }
52 #endif
53
54 InstanceStackChunkKlass::InstanceStackChunkKlass() {
55 assert(CDSConfig::is_dumping_static_archive() || CDSConfig::is_using_archive(), "only for CDS");
56 }
57
58 InstanceStackChunkKlass::InstanceStackChunkKlass(const ClassFileParser& parser)
59 : InstanceKlass(parser, Kind) {
60 // Change the layout_helper to use the slow path because StackChunkOops are
61 // variable sized InstanceOops.
62 const jint lh = Klass::instance_layout_helper(size_helper(), true);
63 set_layout_helper(lh);
64 }
65
66 size_t InstanceStackChunkKlass::oop_size(oop obj, markWord mark) const {
67 return instance_size(jdk_internal_vm_StackChunk::size(obj));
68 }
69
70 #ifndef PRODUCT
71 void InstanceStackChunkKlass::oop_print_on(oop obj, outputStream* st) {
72 print_chunk(stackChunkOopDesc::cast(obj), false, st);
73 }
74 #endif
75
76 template<typename OopClosureType>
77 class StackChunkOopIterateFilterClosure: public OopClosure {
78 private:
79 OopClosureType* const _closure;
80 MemRegion _bound;
81
82 public:
83
84 StackChunkOopIterateFilterClosure(OopClosureType* closure, MemRegion bound)
85 : _closure(closure),
86 _bound(bound) {}
|