--- old/hotspot/src/share/vm/classfile/javaClasses.hpp 2015-11-09 17:14:48.000000000 -0800 +++ new/hotspot/src/share/vm/classfile/javaClasses.hpp 2015-11-09 17:14:48.000000000 -0800 @@ -1348,11 +1348,93 @@ // 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