merged volatile memory barriers
[cacao.git] / src / vm / method.hpp
index b7e12c8d63039605bc138b25ba1daea765028fb2..6ab842c92f923112802a98e9a62588e10d165555 100644 (file)
@@ -30,7 +30,8 @@
 
 typedef struct methodinfo          methodinfo; 
 typedef struct raw_exception_entry raw_exception_entry;
-typedef struct lineinfo            lineinfo; 
+typedef struct lineinfo            lineinfo;
+typedef struct localvarinfo        localvarinfo;
 typedef struct method_assumption   method_assumption;
 typedef struct method_worklist     method_worklist;
 typedef struct codeinfo            codeinfo;
@@ -40,8 +41,9 @@ typedef struct codeinfo            codeinfo;
 
 #include "threads/mutex.hpp"
 
+#include "vm/breakpoint.hpp"
 #include "vm/jit/builtin.hpp"
-#include "vm/descriptor.h"
+#include "vm/descriptor.hpp"
 #include "vm/global.h"
 #include "vm/linker.hpp"
 #include "vm/loader.hpp"
@@ -72,7 +74,7 @@ struct methodinfo {                 /* method structure                       */
 #endif
 
        methoddesc   *parseddesc;       /* parsed descriptor                      */
-                            
+
        classinfo    *clazz;            /* class, the method belongs to           */
        s4            vftblindex;       /* index of method in virtual function    */
                                        /* table (if it is a virtual method)      */
@@ -90,6 +92,11 @@ struct methodinfo {                 /* method structure                       */
        u2            linenumbercount;  /* number of linenumber attributes        */
        lineinfo     *linenumbers;      /* array of lineinfo items                */
 
+#if defined(ENABLE_JAVASE) && defined(ENABLE_JVMTI)
+       uint16_t      localvarcount;    /* number of local variable attributes    */
+       localvarinfo* localvars;        /* array of localvarinfo items            */
+#endif
+
        u1           *stubroutine;      /* stub for compiling or calling natives  */
        codeinfo     *code;             /* current code of this method            */
 
@@ -100,6 +107,8 @@ struct methodinfo {                 /* method structure                       */
        methodinfo   *overwrites;       /* method that is directly overwritten    */
        method_assumption *assumptions; /* list of assumptions about this method  */
 
+       BreakpointTable* breakpoints;   /* breakpoints in this method             */
+
 #if defined(ENABLE_REPLACEMENT)
        s4            hitcountdown;     /* decreased for each hit                 */
 #endif
@@ -157,6 +166,17 @@ struct lineinfo {
 };
 
 
+/* localvarinfo ***************************************************************/
+
+struct localvarinfo {
+       uint16_t start_pc;
+       uint16_t length;
+       utf*     name;
+       utf*     descriptor;
+       uint16_t index;
+};
+
+
 /* global variables ***********************************************************/
 
 extern methodinfo *method_java_lang_reflect_Method_invoke;