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