mirror of
https://github.com/corda/corda.git
synced 2025-01-07 13:38:47 +00:00
fix handling of interface vtables for abstract classes
This commit is contained in:
parent
50040b24f5
commit
9cb21a29a6
@ -1279,9 +1279,7 @@ parseMethodTable(Thread* t, Stream& s, object class_, object pool)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (populateInterfaceVtables
|
if (populateInterfaceVtables) {
|
||||||
and (classFlags(t, class_) & ACC_ABSTRACT) == 0)
|
|
||||||
{
|
|
||||||
// generate interface vtables
|
// generate interface vtables
|
||||||
object itable = classInterfaceTable(t, class_);
|
object itable = classInterfaceTable(t, class_);
|
||||||
if (itable) {
|
if (itable) {
|
||||||
@ -1296,7 +1294,9 @@ parseMethodTable(Thread* t, Stream& s, object class_, object pool)
|
|||||||
object method = arrayBody(t, ivtable, j);
|
object method = arrayBody(t, ivtable, j);
|
||||||
method = hashMapFind
|
method = hashMapFind
|
||||||
(t, virtualMap, method, methodHash, methodEqual);
|
(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);
|
set(t, vtable, ArrayBody + (j * BytesPerWord), method);
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user