From 9cb21a29a6c5ea797f22f04b58321666525963a1 Mon Sep 17 00:00:00 2001 From: Joel Dice Date: Fri, 21 Mar 2008 17:42:36 -0600 Subject: [PATCH] fix handling of interface vtables for abstract classes --- src/machine.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/machine.cpp b/src/machine.cpp index b812303b15..848b111588 100644 --- a/src/machine.cpp +++ b/src/machine.cpp @@ -1279,9 +1279,7 @@ parseMethodTable(Thread* t, Stream& s, object class_, object pool) } } - if (populateInterfaceVtables - and (classFlags(t, class_) & ACC_ABSTRACT) == 0) - { + if (populateInterfaceVtables) { // generate interface vtables object itable = classInterfaceTable(t, class_); if (itable) { @@ -1296,7 +1294,9 @@ parseMethodTable(Thread* t, Stream& s, object class_, object pool) object method = arrayBody(t, ivtable, j); method = hashMapFind (t, virtualMap, method, methodHash, methodEqual); - assert(t, method); + + // note that method may be null in the case of an abstract + // class set(t, vtable, ArrayBody + (j * BytesPerWord), method); }