fixup_vtable() was using old ->method_index field which is no longer valid.
Signed-off-by: Tomek Grabiec <tgrab...@gmail.com> --- arch/x86/emit-code.c | 2 +- vm/class.c | 4 ++++ 2 files changed, 5 insertions(+), 1 deletions(-) diff --git a/arch/x86/emit-code.c b/arch/x86/emit-code.c index a348ab3..009dbc9 100644 --- a/arch/x86/emit-code.c +++ b/arch/x86/emit-code.c @@ -405,7 +405,7 @@ static void fixup_vtable(struct compilation_unit *cu, { struct vm_class *vmc = objref->class; - vmc->vtable.native_ptr[cu->method->method_index] = target; + vmc->vtable.native_ptr[cu->method->virtual_index] = target; } #ifdef CONFIG_X86_32 diff --git a/vm/class.c b/vm/class.c index 6629393..7ed79e8 100644 --- a/vm/class.c +++ b/vm/class.c @@ -102,6 +102,8 @@ setup_vtable(struct vm_class *vmc) = vm_class_get_method_recursive(super, vmm->name, vmm->type); if (vmm2) { + vmm->virtual_index = vmm2->virtual_index; + vtable_setup_method(&vmc->vtable, vmm2->virtual_index, vm_method_trampoline_ptr(vmm)); @@ -109,6 +111,8 @@ setup_vtable(struct vm_class *vmc) } } + vmm->virtual_index = super_vtable_size + vtable_size; + vtable_setup_method(&vmc->vtable, super_vtable_size + vtable_size, vm_method_trampoline_ptr(vmm)); -- 1.6.0.6 ------------------------------------------------------------------------------ _______________________________________________ Jatovm-devel mailing list Jatovm-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/jatovm-devel