Merge from default with manual cleanup (src/vm/class.cpp).
[cacao.git] / src / vm / vftbl.hpp
index ace6dc7346ee4fde35288c2fdc5e675b66524d29..6f5bed5f53fb5fd41b929e675f5fa8e4496371c9 100644 (file)
@@ -94,6 +94,8 @@ typedef struct _vftbl vftbl_t;
 #include "vm/class.hpp"
 #include "vm/references.h"
 
+#define DISPLAY_SIZE 4
+
 struct _vftbl {
        methodptr   *interfacetable[1];    /* interface table (access via macro)  */
        classinfo   *clazz;                /* class, the vtbl belongs to          */
@@ -103,6 +105,12 @@ struct _vftbl {
        s4           baseval;              /* base for runtime type check         */
                                           /* (-index for interfaces)             */
        s4           diffval;              /* high - base for runtime type check  */
+
+       s4 subtype_depth;
+       s4 subtype_offset;
+       struct _vftbl *subtype_display[DISPLAY_SIZE+1];  /* the last one is cache */
+       struct _vftbl **subtype_overflow;
+
        s4          *interfacevftbllength; /* length of interface vftbls          */
        methodptr    table[1];             /* class vftbl                         */
 };