* src/vmcore/resolve.h, src/vmcore/resolve.c
authoredwin <none@none>
Thu, 1 Mar 2007 13:49:14 +0000 (13:49 +0000)
committeredwin <none@none>
Thu, 1 Mar 2007 13:49:14 +0000 (13:49 +0000)
(resolve_class_eager_no_access_check): New function.

* src/vm/jit/powerpc/patcher.c: Use resolve_class_eager_no_access_check.
* src/vm/jit/arm/patcher.c: Likewise.
* src/vm/jit/sparc64/patcher.c: Likewise.
* src/vm/jit/alpha/patcher.c: Likewise.
* src/vm/jit/s390/patcher.c: Likewise.
* src/vm/jit/mips/patcher.c: Likewise.
* src/vm/jit/powerpc64/patcher.c: Likewise.
* src/vm/jit/i386/patcher.c: Likewise.
* src/vm/jit/x86_64/patcher.c: Likewise.

12 files changed:
src/vm/jit/alpha/patcher.c
src/vm/jit/arm/patcher.c
src/vm/jit/codegen-common.c
src/vm/jit/i386/patcher.c
src/vm/jit/mips/patcher.c
src/vm/jit/powerpc/patcher.c
src/vm/jit/powerpc64/patcher.c
src/vm/jit/s390/patcher.c
src/vm/jit/sparc64/patcher.c
src/vm/jit/x86_64/patcher.c
src/vmcore/resolve.c
src/vmcore/resolve.h

index 84e08cf7ab3457ad6e499072352bd52be8e7a074..e115a60dc793e1080dc4fdcc5dc7bc9a2207cfa5 100644 (file)
@@ -22,7 +22,7 @@
    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
    02110-1301, USA.
 
-   $Id: patcher.c 7251 2007-01-29 20:24:53Z twisti $
+   $Id: patcher.c 7431 2007-03-01 13:49:14Z edwin $
 
 */
 
@@ -177,15 +177,14 @@ bool patcher_initialize_class(u1 *sp)
 bool patcher_resolve_class(u1 *sp)
 {
        unresolved_class *uc;
-       classinfo        *c;
 
        /* get stuff from the stack */
 
        uc = (unresolved_class *)  *((ptrint *) (sp + 2 * 8));
 
-       /* resolve the class */
+       /* resolve the class and check subtype constraints */
 
-       if (!resolve_class(uc, resolveEager, false, &c))
+       if (!resolve_class_eager_no_access_check(uc))
                return false;
 
        return true;
index ba7c70ea8b3186149227b2a890ef60adced35a61..1514e53e6b303f74a4b05038492969773d1e5e7c 100644 (file)
@@ -22,7 +22,7 @@
    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
    02110-1301, USA.
 
-   $Id: patcher.c 7259 2007-01-30 13:58:35Z twisti $
+   $Id: patcher.c 7431 2007-03-01 13:49:14Z edwin $
 
 */
 
@@ -700,15 +700,14 @@ bool patcher_clinit(u1 *sp)
 bool patcher_athrow_areturn(u1 *sp)
 {
        unresolved_class *uc;
-       classinfo        *c;
 
        /* get stuff from the stack */
 
        uc = (unresolved_class *) *((ptrint *) (sp + 1 * 4));
 
-       /* check if the class is initialized */
+       /* resolve the class and check subtype constraints */
 
-       if (!resolve_class(uc, resolveEager, false, &c))
+       if (!resolve_class_eager_no_access_check(uc))
                return false;
 
        return true;
index f46d0d9cab33ec174a5b454e736fc4d823593f6f..7496334bfe433a2e565c69c267835dc137db518b 100644 (file)
@@ -39,7 +39,7 @@
    memory. All functions writing values into the data area return the offset
    relative the begin of the code area (start of procedure).   
 
-   $Id: codegen-common.c 7403 2007-02-25 21:31:58Z pm $
+   $Id: codegen-common.c 7407 2007-02-26 19:12:03Z michi $
 
 */
 
index 4a14e3646548140fdaa5f57688d1a9c690b96f01..79427214b74ae92b3bb291f207576d21e0c809e3 100644 (file)
@@ -22,7 +22,7 @@
    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
    02110-1301, USA.
 
-   $Id: patcher.c 7255 2007-01-29 21:39:38Z twisti $
+   $Id: patcher.c 7431 2007-03-01 13:49:14Z edwin $
 
 */
 
@@ -889,7 +889,6 @@ bool patcher_athrow_areturn(u1 *sp)
        u1               *ra;
        u8                mcode;
        unresolved_class *uc;
-       classinfo        *c;
 
        /* get stuff from the stack */
 
@@ -897,9 +896,9 @@ bool patcher_athrow_areturn(u1 *sp)
        mcode =                      *((u8 *)     (sp + 2 * 4));
        uc    = (unresolved_class *) *((ptrint *) (sp + 1 * 4));
 
-       /* resolve the class */
+       /* resolve the class and check subtype constraints */
 
-       if (!resolve_class(uc, resolveEager, false, &c))
+       if (!resolve_class_eager_no_access_check(uc))
                return false;
 
        /* patch back original code */
index fb11caf336097f800342b609f139d52c4ed23b5a..61f2d51091eace981729441329380c4985cfb724 100644 (file)
@@ -22,7 +22,7 @@
    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
    02110-1301, USA.
 
-   $Id: patcher.c 7252 2007-01-29 21:09:01Z twisti $
+   $Id: patcher.c 7431 2007-03-01 13:49:14Z edwin $
 
 */
 
@@ -799,15 +799,14 @@ bool patcher_clinit(u1 *sp)
 bool patcher_athrow_areturn(u1 *sp)
 {
        unresolved_class *uc;
-       classinfo        *c;
 
        /* get stuff from the stack */
 
        uc = (unresolved_class *) *((ptrint *) (sp + 2 * 8));
 
-       /* resolve the class */
+       /* resolve the class and check subtype constraints */
 
-       if (!resolve_class(uc, resolveEager, false, &c))
+       if (!resolve_class_eager_no_access_check(uc))
                return false;
 
        return true;
index e7a1360621269e795d549febaed87d5fa41ea503..bbba80d2dc8b8868c87ba605a959a0e557806a60 100644 (file)
@@ -22,7 +22,7 @@
    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
    02110-1301, USA.
 
-   $Id: patcher.c 7246 2007-01-29 18:49:05Z twisti $
+   $Id: patcher.c 7431 2007-03-01 13:49:14Z edwin $
 
 */
 
@@ -175,15 +175,14 @@ bool patcher_initialize_class(u1 *sp)
 bool patcher_resolve_class(u1 *sp)
 {
        unresolved_class *uc;
-       classinfo        *c;
 
        /* get stuff from the stack */
 
        uc = (unresolved_class *) *((ptrint *) (sp + 2 * 4));
 
-       /* resolve the class */
+       /* resolve the class and check subtype constraints */
 
-       if (!resolve_class(uc, resolveEager, false, &c))
+       if (!resolve_class_eager_no_access_check(uc))
                return false;
 
        return true;
index 3cb769d2db88b23b9da15c8e8d477af209684e10..b19c870b11c01dec4641b6a263c71d7841c4c7ae 100644 (file)
@@ -22,7 +22,7 @@
    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
    02110-1301, USA.
 
-   $Id: patcher.c 7311 2007-02-09 13:20:27Z twisti $
+   $Id: patcher.c 7431 2007-03-01 13:49:14Z edwin $
 
 */
 
@@ -832,7 +832,6 @@ bool patcher_athrow_areturn(u1 *sp)
        u1               *ra;
        u4                mcode;
        unresolved_class *uc;
-       classinfo        *c;
 
        /* get stuff from the stack */
 
@@ -840,9 +839,9 @@ bool patcher_athrow_areturn(u1 *sp)
        mcode =                      *((u4 *)     (sp + 3 * 8));
        uc    = (unresolved_class *) *((ptrint *) (sp + 2 * 8));
 
-       /* resolve the class */
+       /* resolve the class and check subtype constraints */
 
-       if (!resolve_class(uc, resolveEager, false, &c))
+       if (!resolve_class_eager_no_access_check(uc))
                return false;
 
        /* patch back original code */
index 91f0622b9bb77d0f12b75898da3f543acd902f5b..800549c5022bef6425e17f7352e223570252673c 100644 (file)
@@ -28,7 +28,7 @@
 
    Changes:
 
-   $Id: patcher.c 7373 2007-02-18 20:16:14Z pm $
+   $Id: patcher.c 7431 2007-03-01 13:49:14Z edwin $
 
 */
 
@@ -974,7 +974,6 @@ __PORTED__ bool patcher_athrow_areturn(u1 *sp)
        u1               *ra;
        u4                mcode;
        unresolved_class *uc;
-       classinfo        *c;
 
        /* get stuff from the stack */
 
@@ -982,9 +981,9 @@ __PORTED__ bool patcher_athrow_areturn(u1 *sp)
        mcode =                      *((u4 *)     (sp + 3 * 4));
        uc    = (unresolved_class *) *((ptrint *) (sp + 2 * 4));
 
-       /* resolve the class */
+       /* resolve the class and check subtype constraints */
 
-       if (!resolve_class(uc, resolveEager, false, &c))
+       if (!resolve_class_eager_no_access_check(uc))
                return false;
 
        /* patch back original code */
index 1f99e92dcfb4c7e056787249bad4e211b33cec32..393f196724e2b36db19101be088b7e8b7f9a092f 100644 (file)
@@ -771,15 +771,14 @@ bool patcher_clinit(u1 *sp)
 bool patcher_athrow_areturn(u1 *sp)
 {
        unresolved_class *uc;
-       classinfo        *c;
 
        /* get stuff from the stack */
 
        uc       = (unresolved_class *) *((ptrint *) (sp + 2 * 8));
 
-       /* resolve the class */
+       /* resolve the class and check subtype constraints */
 
-       if (!resolve_class(uc, resolveEager, false, &c))
+       if (!resolve_class_eager_no_access_check(uc))
                return false;
 
        return true;
index d1eec137436a9ecc4deb8c631ae1b8b68f464855..3bf15bc9da5e54d743a79edb2d14d23e6b2b5286 100644 (file)
@@ -22,7 +22,7 @@
    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
    02110-1301, USA.
 
-   $Id: patcher.c 7248 2007-01-29 19:28:12Z twisti $
+   $Id: patcher.c 7431 2007-03-01 13:49:14Z edwin $
 
 */
 
@@ -837,7 +837,6 @@ bool patcher_athrow_areturn(u1 *sp)
        u1               *ra;
        u8                mcode;
        unresolved_class *uc;
-       classinfo        *c;
 
        /* get stuff from the stack */
 
@@ -845,9 +844,9 @@ bool patcher_athrow_areturn(u1 *sp)
        mcode =                      *((u8 *)     (sp + 3 * 8));
        uc    = (unresolved_class *) *((ptrint *) (sp + 2 * 8));
 
-       /* resolve the class */
+       /* resolve the class and check subtype constraints */
 
-       if (!resolve_class(uc, resolveEager, false, &c))
+       if (!resolve_class_eager_no_access_check(uc))
                return false;
 
        /* patch back original code */
index 8d0124b76b8ecb39499da773a411a8e4edd691a9..67a9bba18e35fb71b4aa0e936a4bc692af257d59 100644 (file)
@@ -22,7 +22,7 @@
    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
    02110-1301, USA.
 
-   $Id: resolve.c 7427 2007-03-01 12:32:10Z edwin $
+   $Id: resolve.c 7431 2007-03-01 13:49:14Z edwin $
 
 */
 
@@ -951,6 +951,32 @@ classinfo * resolve_class_eager(unresolved_class *ref)
 }
 #endif /* ENABLE_VERIFIER */
 
+/* resolve_class_eager_no_access_check *****************************************
+   Resolve an unresolved class reference eagerly. The class is also linked.
+   Access rights are _not_ checked.
+  
+   IN:
+       ref..............struct containing the reference
+   
+   RETURN VALUE:
+       classinfo * to the class, or
+          NULL if an exception has been thrown
+   
+*******************************************************************************/
+
+#ifdef ENABLE_VERIFIER
+classinfo * resolve_class_eager_no_access_check(unresolved_class *ref)
+{
+       classinfo *c;
+
+       if (!resolve_class(ref, resolveEager, false, &c))
+               return NULL;
+
+       return c;
+}
+#endif /* ENABLE_VERIFIER */
+
 /******************************************************************************/
 /* FIELD RESOLUTION                                                           */
 /******************************************************************************/
index 2f49a2efc443c3dcfc9f562463f1729d52ced16f..6311d154e81e3d4d481be70b50fd199aaa204e7c 100644 (file)
@@ -22,7 +22,7 @@
    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
    02110-1301, USA.
 
-   $Id: resolve.h 7246 2007-01-29 18:49:05Z twisti $
+   $Id: resolve.h 7431 2007-03-01 13:49:14Z edwin $
 
 */
 
@@ -148,6 +148,7 @@ bool resolve_class(unresolved_class *ref,
                          classinfo **result);
 
 classinfo * resolve_class_eager(unresolved_class *ref);
+classinfo * resolve_class_eager_no_access_check(unresolved_class *ref);
 #endif /* ENABLE_VERIFIER */
 
 bool resolve_field(unresolved_field *ref,