src/share/vm/runtime/frame.hpp
Index Unified diffs Context diffs Sdiffs Patch New Old Previous File Next File 7043301 Sdiff src/share/vm/runtime

src/share/vm/runtime/frame.hpp

Print this page




 494 
 495 // A collection of described stack values that can print a symbolic
 496 // description of the stack memory.  Interpreter frame values can be
 497 // in the caller frames so all the values are collected first and then
 498 // sorted before being printed.
 499 class FrameValues {
 500  private:
 501   GrowableArray<FrameValue> _values;
 502 
 503   static int compare(FrameValue* a, FrameValue* b) {
 504     if (a->location == b->location) {
 505       return a->priority - b->priority;
 506     }
 507     return a->location - b->location;
 508   }
 509 
 510  public:
 511   // Used by frame functions to describe locations.
 512   void describe(int owner, intptr_t* location, const char* description, int priority = 0);
 513 
 514   bool validate();
 515   void print();
 516 };
 517 
 518 #endif
 519 
 520 //
 521 // StackFrameStream iterates through the frames of a thread starting from
 522 // top most frame. It automatically takes care of updating the location of
 523 // all (callee-saved) registers. Notice: If a thread is stopped at
 524 // a safepoint, all registers are saved, not only the callee-saved ones.
 525 //
 526 // Use:
 527 //
 528 //   for(StackFrameStream fst(thread); !fst.is_done(); fst.next()) {
 529 //     ...
 530 //   }
 531 //
 532 class StackFrameStream : public StackObj {
 533  private:
 534   frame       _fr;


 494 
 495 // A collection of described stack values that can print a symbolic
 496 // description of the stack memory.  Interpreter frame values can be
 497 // in the caller frames so all the values are collected first and then
 498 // sorted before being printed.
 499 class FrameValues {
 500  private:
 501   GrowableArray<FrameValue> _values;
 502 
 503   static int compare(FrameValue* a, FrameValue* b) {
 504     if (a->location == b->location) {
 505       return a->priority - b->priority;
 506     }
 507     return a->location - b->location;
 508   }
 509 
 510  public:
 511   // Used by frame functions to describe locations.
 512   void describe(int owner, intptr_t* location, const char* description, int priority = 0);
 513 
 514   void validate();
 515   void print();
 516 };
 517 
 518 #endif
 519 
 520 //
 521 // StackFrameStream iterates through the frames of a thread starting from
 522 // top most frame. It automatically takes care of updating the location of
 523 // all (callee-saved) registers. Notice: If a thread is stopped at
 524 // a safepoint, all registers are saved, not only the callee-saved ones.
 525 //
 526 // Use:
 527 //
 528 //   for(StackFrameStream fst(thread); !fst.is_done(); fst.next()) {
 529 //     ...
 530 //   }
 531 //
 532 class StackFrameStream : public StackObj {
 533  private:
 534   frame       _fr;
src/share/vm/runtime/frame.hpp
Index Unified diffs Context diffs Sdiffs Patch New Old Previous File Next File