Merged subtype and current trunk.
[cacao.git] / src / vm / vftbl.hpp
index 80f45a89316e15286bc65a7026921bbabb7c74a7..01c5a70fa3f31e3192eeb3c09e40f33cace53d1f 100644 (file)
@@ -94,6 +94,8 @@ typedef struct _vftbl vftbl_t;
 #include "vm/class.h"
 #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                         */
 };