Removed return value from descriptor_params_from_paramtypes.
[cacao.git] / src / vm / jit / verify / typecheck-invoke.inc
index bad9f4af6d2d29f9d41cb5c2cf4b72ea4ac8e67d..47fffd0c08dc8945bab770aee9e0ebbc5daaac7d 100644 (file)
@@ -1,9 +1,7 @@
 /* src/vm/jit/verify/typecheck-invoke.inc - type checking for invocations
 
-   Copyright (C) 1996-2005, 2006 R. Grafl, A. Krall, C. Kruegel,
-   C. Oates, R. Obermaisser, M. Platter, M. Probst, S. Ring,
-   E. Steiner, C. Thalinger, D. Thuernbeck, P. Tomsich, C. Ullrich,
-   J. Wenninger, Institut f. Computersprachen - TU Wien
+   Copyright (C) 1996-2011
+   CACAOVM - Verein zur Foerderung der freien virtuellen Maschine CACAO
 
    This file is part of CACAO.
 
    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
    02110-1301, USA.
 
-   Contact: cacao@cacaojvm.org
-
-   Authors: Edwin Steiner
-
-   Changes: 
-
-   $Id$
-
 */
 
 
@@ -52,7 +42,7 @@
        s4 argindex;                            /* argument variable index */
        varinfo *av;                                  /* argument variable */
 #else
-       typedescriptor *av;                         /* argument stack slot */
+       typedescriptor_t *av;                       /* argument stack slot */
 #endif
        int i;                                                  /* counter */
        resolve_result_t result;
@@ -84,7 +74,7 @@
 
        if (IS_FMIREF_RESOLVED(mref)) {
                mi = mref->p.method;
-               mclassname = mi->class->name;
+               mclassname = mi->clazz->name;
        }
        else {
                mi = NULL;
        /* allocate parameters if necessary */
        
        if (!md->params)
-               if (!descriptor_params_from_paramtypes(md,
-                                       (invokestatic) ? ACC_STATIC : ACC_NONE))
-                       return false;
+               descriptor_params_from_paramtypes(
+                       md,
+                       (invokestatic) ? ACC_STATIC : ACC_NONE);
 
        /* check parameter types */
 
                                if (ins)
                                        initclass = ins[-1].sx.val.c;
                                else
-                                       initclass.cls = state->m->class;
+                                       initclass.cls = state->m->clazz;
                                LOGSTR("\t\tclass: "); LOGNAME(initclass); LOGNL;
                        }
                }
                        /* the current class is linked, so must be its superclass. thus we can be */
                        /* sure that resolving will be trivial.                                   */
                        if (mi) {
-                               cls = mi->class;
+                               cls = mi->clazz;
                        }
                        else {
                                if (!resolve_classref(state->m,mref->p.classref,resolveLazy,false,true,&cls))
 
                        /* if lazy resolving did not succeed, it's not one of the allowed classes */
                        /* otherwise we check it directly                                         */
-                       if (cls == NULL || (cls != state->m->class && cls != state->m->class->super.cls)) {
+                       if (cls == NULL || (cls != state->m->clazz && cls != state->m->clazz->super)) {
                                TYPECHECK_VERIFYERROR_bool("<init> calling <init> of the wrong class");
                        }
 
        /* impose loading constraints */
 
        if (result == resolveSucceeded) {
-               /* XXX state->m->class may have to be wrong when inlining */
-               if (!resolve_method_loading_constraints(state->m->class, mi))
+               /* XXX state->m->clazz may have to be wrong when inlining */
+               if (!resolve_method_loading_constraints(state->m->clazz, mi))
                        return false;
        }
 
                if ((state->iptr->opc == ICMD_INVOKEVIRTUAL)
                        && (mi->flags & (ACC_FINAL | ACC_PRIVATE)))
                {
-                       state->iptr->opc = ICMD_INVOKESPECIAL;
+                       state->iptr->opc         = ICMD_INVOKESPECIAL;
+                       state->iptr->flags.bits |= INS_FLAG_CHECK;
                }
        }
        else {
                /* resolution must be deferred */
 
                if (!um) {
-                       um = resolve_create_unresolved_method(state->m->class, state->m,
+                       um = resolve_create_unresolved_method(state->m->clazz, state->m,
                                        mref, 
                                        invokestatic,
                                        invokespecial);