Apparently, interfaces may have static initializers (<clinit> methods). We don't want to put them in the itable. This patch adds only the abstract methods to the itable.
Reported-by: Tomek Grabiec <tgrab...@gmail.com> Signed-off-by: Vegard Nossum <vegard.nos...@gmail.com> --- vm/itable.c | 3 +++ 1 files changed, 3 insertions(+), 0 deletions(-) diff --git a/vm/itable.c b/vm/itable.c index 955aa66..02a8425 100644 --- a/vm/itable.c +++ b/vm/itable.c @@ -89,6 +89,9 @@ static int itable_add_entries(struct vm_class *vmc, struct list_head *itable) if (vm_class_is_interface(vmc)) { for (unsigned int i = 0; i < class->methods_count; ++i) { struct vm_method *vmm = &vmc->methods[i]; + if (!vm_method_is_abstract(vmm)) + continue; + unsigned int bucket = itable_hash(vmm); struct itable_entry *entry = malloc(sizeof *entry); -- 1.6.0.4 ------------------------------------------------------------------------------ Let Crystal Reports handle the reporting - Free Crystal Reports 2008 30-Day trial. Simplify your report design, integration and deployment - and focus on what you do best, core application coding. Discover what's new with Crystal Reports now. http://p.sf.net/sfu/bobj-july _______________________________________________ Jatovm-devel mailing list Jatovm-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/jatovm-devel