< prev index next >

hotspot/src/share/vm/classfile/javaClasses.hpp

Print this page

        

@@ -1346,15 +1346,97 @@
   static void set_lineNumber(oop element, int value);
 
   // Create an instance of StackTraceElement
   static oop create(Handle mirror, int method, int version, int bci, int cpref, TRAPS);
   static oop create(methodHandle method, int bci, TRAPS);
+  static void init(Handle element, Handle mirror, int method, int version, int bci, int cpref, TRAPS);
+
+
+  // Debugging
+  friend class JavaClasses;
+};
+
+
+class BackTrace: AllStatic {
+ public:
+  // Helper backtrace functions to store bci|version together.
+  static int merge_bci_and_version(int bci, int version);
+
+  static int merge_mid_and_cpref(int mid, int cpref);
+
+  static int bci_at(unsigned int merged);
+  
+  static int version_at(unsigned int merged);
+  
+  static int mid_at(unsigned int merged);
+  
+  static int cpref_at(unsigned int merged);
+  
+  static int get_line_number(methodHandle method, int bci);
+  
+  static Symbol* get_source_file_name(InstanceKlass* holder, int version);
+  
+  // Debugging
+  friend class JavaClasses;
+};
+
+// Interface to java.lang.StackFrameInfo objects
+
+class java_lang_StackFrameInfo: AllStatic {
+private:
+  static int declaringClass_offset;
+  static int memberName_offset;
+  static int mid_offset;
+  static int bci_offset;
+
+  static int methodName_offset;
+  static int fileName_offset;
+  static int lineNumber_offset;
+
+  static Method* get_method(Handle stackFrame, InstanceKlass* holder, TRAPS);
+  static Symbol* get_file_name(Handle stackFrame, InstanceKlass* holder);
+
+public:
+  // Setters
+  static void set_declaringClass(oop info, oop value);
+  static void set_methodName(oop info, oop value);
+  static void set_fileName(oop info, oop value);
+  static void set_lineNumber(oop info, int value);
+
+  static void set_mid(oop info, int value);
+  static void set_bci(oop info, int value);
+
+  static void compute_offsets();
+
+  static int  bci(oop info);
+  static oop  member_name(oop info);
+
+  // set method info in an instance of StackFrameInfo
+  static void fill_methodInfo(Handle info, TRAPS);
 
   // Debugging
   friend class JavaClasses;
 };
 
+class java_lang_LiveStackFrameInfo: AllStatic {
+ private:
+
+  static int monitors_offset;
+  static int locals_offset;
+  static int operands_offset;
+
+ public:
+
+  static void set_monitors(oop info, oop value);
+  static void set_locals(oop info, oop value);
+  static void set_operands(oop info, oop value);
+
+  static void compute_offsets();
+
+  // Debugging
+  friend class JavaClasses;
+};
 
 // Interface to java.lang.AssertionStatusDirectives objects
 
 class java_lang_AssertionStatusDirectives: AllStatic {
  private:
< prev index next >