< prev index next >

src/hotspot/share/oops/instanceStackChunkKlass.cpp

Print this page

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