< prev index next >

src/hotspot/share/oops/stackChunkOop.cpp

Print this page

512 public:
513   intptr_t* _sp;
514   CodeBlob* _cb;
515   bool _callee_interpreted;
516   int _size;
517   int _argsize;
518   int _num_oops;
519   int _num_frames;
520   int _num_interpreted_frames;
521   int _num_i2c;
522 
523   VerifyStackChunkFrameClosure(stackChunkOop chunk)
524     : _chunk(chunk), _sp(nullptr), _cb(nullptr), _callee_interpreted(false),
525       _size(0), _argsize(0), _num_oops(0), _num_frames(0), _num_interpreted_frames(0), _num_i2c(0) {}
526 
527   template <ChunkFrames frame_kind, typename RegisterMapT>
528   bool do_frame(const StackChunkFrameStream<frame_kind>& f, const RegisterMapT* map) {
529     _sp = f.sp();
530     _cb = f.cb();
531 
532     int fsize = f.frame_size() - ((f.is_interpreted() == _callee_interpreted) ? _argsize : 0);














533     int num_oops = f.num_oops(map);
534     assert(num_oops >= 0, "");
535 
536     _argsize   = f.stack_argsize() + frame::metadata_words_at_top;
537     _size     += fsize;
538     _num_oops += num_oops;
539     if (f.is_interpreted()) {
540       _num_interpreted_frames++;
541     }
542 
543     log_develop_trace(continuations)("debug_verify_stack_chunk frame: %d sp: " INTPTR_FORMAT " pc: " PTR_FORMAT " interpreted: %d size: %d argsize: %d oops: %d", _num_frames, f.sp() - _chunk->start_address(), p2i(f.pc()), f.is_interpreted(), fsize, _argsize, num_oops);
544     LogTarget(Trace, continuations) lt;
545     if (lt.develop_is_enabled()) {
546       LogStream ls(lt);
547       f.print_on(&ls);
548     }
549     assert(f.pc() != nullptr,
550            "young: %d num_frames: %d sp: " PTR_FORMAT " start: " PTR_FORMAT " end: " PTR_FORMAT,
551            !_chunk->requires_barriers(), _num_frames, p2i(f.sp()), p2i(_chunk->start_address()), p2i(_chunk->bottom_address()));
552 
553     if (_num_frames == 0) {
554       assert(f.pc() == _chunk->pc(), "");
555     }
556 

512 public:
513   intptr_t* _sp;
514   CodeBlob* _cb;
515   bool _callee_interpreted;
516   int _size;
517   int _argsize;
518   int _num_oops;
519   int _num_frames;
520   int _num_interpreted_frames;
521   int _num_i2c;
522 
523   VerifyStackChunkFrameClosure(stackChunkOop chunk)
524     : _chunk(chunk), _sp(nullptr), _cb(nullptr), _callee_interpreted(false),
525       _size(0), _argsize(0), _num_oops(0), _num_frames(0), _num_interpreted_frames(0), _num_i2c(0) {}
526 
527   template <ChunkFrames frame_kind, typename RegisterMapT>
528   bool do_frame(const StackChunkFrameStream<frame_kind>& f, const RegisterMapT* map) {
529     _sp = f.sp();
530     _cb = f.cb();
531 
532     int fsize = f.frame_size();
533     int argsize = f.stack_argsize() + frame::metadata_words_at_top;
534     bool augmented = false;
535     if (f.is_compiled() && f.cb()->as_nmethod()->needs_stack_repair()) {
536       int real_frame_size = 0;
537       augmented = f.to_frame().was_augmented_on_entry(real_frame_size);
538       if (augmented) {
539         fsize = real_frame_size - (_callee_interpreted ? 0 : _argsize);
540         // The arguments reside inside the augmented frame.
541         argsize = 0;
542       }
543     }
544     if (!augmented) {
545       fsize -= (f.is_interpreted() == _callee_interpreted) ? _argsize : 0;
546     }
547     int num_oops = f.num_oops(map);
548     assert(num_oops >= 0, "");
549 
550     _argsize   = argsize;
551     _size     += fsize;
552     _num_oops += num_oops;
553     if (f.is_interpreted()) {
554       _num_interpreted_frames++;
555     }
556 
557     log_develop_trace(continuations)("debug_verify_stack_chunk frame: %d sp: " INTPTR_FORMAT " pc: " PTR_FORMAT " interpreted: %d size: %d argsize: %d oops: %d", _num_frames, f.sp() - _chunk->start_address(), p2i(f.pc()), f.is_interpreted(), fsize, _argsize, num_oops);
558     LogTarget(Trace, continuations) lt;
559     if (lt.develop_is_enabled()) {
560       LogStream ls(lt);
561       f.print_on(&ls);
562     }
563     assert(f.pc() != nullptr,
564            "young: %d num_frames: %d sp: " PTR_FORMAT " start: " PTR_FORMAT " end: " PTR_FORMAT,
565            !_chunk->requires_barriers(), _num_frames, p2i(f.sp()), p2i(_chunk->start_address()), p2i(_chunk->bottom_address()));
566 
567     if (_num_frames == 0) {
568       assert(f.pc() == _chunk->pc(), "");
569     }
570 
< prev index next >