Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
02110-1301, USA.
- $Id: typeinfo.c 8299 2007-08-13 08:41:18Z michi $
-
*/
#include <string.h>
#include "mm/memory.h"
+
#include "toolbox/logging.h"
+#include "vm/array.h"
#include "vm/exceptions.h"
#include "vm/primitive.h"
#include "vm/resolve.h"
/* first check direct superinterfaces */
for (i=0; i<cls->interfacescount; ++i) {
- if (cls->interfaces[i].cls == interf)
+ if (cls->interfaces[i] == interf)
return true;
}
/* check indirect superinterfaces */
for (i=0; i<cls->interfacescount; ++i) {
- if (interface_extends_interface(cls->interfaces[i].cls,interf))
+ if (interface_extends_interface(cls->interfaces[i],interf))
return true;
}
/* {We know: y is at least as deep in the hierarchy as x.} */
/* Find nearest common anchestor for the classes. */
+
common = x.cls;
- tcls = y.cls;
+ tcls = y.cls;
+
while (tcls->index > common->index)
- tcls = tcls->super.cls;
+ tcls = tcls->super;
+
while (common != tcls) {
- common = common->super.cls;
- tcls = tcls->super.cls;
+ common = common->super;
+ tcls = tcls->super;
}
/* {common == nearest common anchestor of x and y.} */