From 906c7c32658621d4d530e61d8ecc1dd081ef732c Mon Sep 17 00:00:00 2001 From: Tom Tromey Date: Wed, 22 Jan 2003 20:53:54 +0000 Subject: [PATCH] expr.c (build_invokeinterface): Abort if method's context is not an interface. * expr.c (build_invokeinterface): Abort if method's context is not an interface. From-SVN: r61615 --- gcc/java/ChangeLog | 5 +++++ gcc/java/expr.c | 9 +++++---- 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/gcc/java/ChangeLog b/gcc/java/ChangeLog index bdb9917d6cb..5d42c0a7dc7 100644 --- a/gcc/java/ChangeLog +++ b/gcc/java/ChangeLog @@ -1,3 +1,8 @@ +2003-01-22 Tom Tromey + + * expr.c (build_invokeinterface): Abort if method's context is not + an interface. + 2003-01-22 Tom Tromey * gcj.texi (Input and output files): Mention non-class entries. diff --git a/gcc/java/expr.c b/gcc/java/expr.c index e5c677c2c11..bf1f41b5414 100644 --- a/gcc/java/expr.c +++ b/gcc/java/expr.c @@ -1901,15 +1901,16 @@ build_invokeinterface (tree dtable, tree method) abstract nor static. */ if (class_ident == NULL_TREE) - { - class_ident = get_identifier ("class"); - } + class_ident = get_identifier ("class"); - dtable = build_java_indirect_ref (dtable_type, dtable, flag_check_references); + dtable = build_java_indirect_ref (dtable_type, dtable, + flag_check_references); dtable = build (COMPONENT_REF, class_ptr_type, dtable, lookup_field (&dtable_type, class_ident)); interface = DECL_CONTEXT (method); + if (! CLASS_INTERFACE (TYPE_NAME (interface))) + abort (); layout_class_methods (interface); if (flag_indirect_dispatch) -- 2.30.2