X-Git-Url: http://wien.tomnetworks.com/gitweb/?a=blobdiff_plain;f=src%2Fvm%2Fvftbl.hpp;fp=src%2Fvm%2Fvftbl.hpp;h=6f5bed5f53fb5fd41b929e675f5fa8e4496371c9;hb=56fa24a4902f1e71f5d057487097f9438222f4b9;hp=ace6dc7346ee4fde35288c2fdc5e675b66524d29;hpb=cf3b4b938bfdbd119c007424ba40c40fedcdaac2;p=cacao.git diff --git a/src/vm/vftbl.hpp b/src/vm/vftbl.hpp index ace6dc734..6f5bed5f5 100644 --- a/src/vm/vftbl.hpp +++ b/src/vm/vftbl.hpp @@ -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 */ };