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

Reply via email to