< prev index next >

src/hotspot/share/oops/instanceStackChunkKlass.cpp

Print this page

 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) {}
< prev index next >