You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@harmony.apache.org by ml...@apache.org on 2007/08/13 12:34:12 UTC

svn commit: r565303 - in /harmony/enhanced/drlvm/trunk/vm/vmcore/src/verifier-3363: tpool.cpp tpool.h vf_resolve.cpp

Author: mloenko
Date: Mon Aug 13 03:34:11 2007
New Revision: 565303

URL: http://svn.apache.org/viewvc?view=rev&rev=565303
Log:
fix reg.test failures in debug mode

Modified:
    harmony/enhanced/drlvm/trunk/vm/vmcore/src/verifier-3363/tpool.cpp
    harmony/enhanced/drlvm/trunk/vm/vmcore/src/verifier-3363/tpool.h
    harmony/enhanced/drlvm/trunk/vm/vmcore/src/verifier-3363/vf_resolve.cpp

Modified: harmony/enhanced/drlvm/trunk/vm/vmcore/src/verifier-3363/tpool.cpp
URL: http://svn.apache.org/viewvc/harmony/enhanced/drlvm/trunk/vm/vmcore/src/verifier-3363/tpool.cpp?view=diff&rev=565303&r1=565302&r2=565303
==============================================================================
--- harmony/enhanced/drlvm/trunk/vm/vmcore/src/verifier-3363/tpool.cpp (original)
+++ harmony/enhanced/drlvm/trunk/vm/vmcore/src/verifier-3363/tpool.cpp Mon Aug 13 03:34:11 2007
@@ -242,15 +242,13 @@
             }
 
             //check whether FROM class is loaded
-
-
             if( !from_type->cls ) {
                 from_type->cls = vf_resolve_class(k_class, from_type->name, false);
                 if( !from_type->cls ) from_type->cls = CLASS_NOT_LOADED;
             }
 
             if( from_type->cls && from_type->cls != CLASS_NOT_LOADED ) {
-                return vf_is_valid(from_type->cls, to_type->cls);
+                return vf_is_extending(from_type->cls, to_type->cls);
             } else {
                 NewConstraint(from_type->name, to_type->name);
                 return 1;

Modified: harmony/enhanced/drlvm/trunk/vm/vmcore/src/verifier-3363/tpool.h
URL: http://svn.apache.org/viewvc/harmony/enhanced/drlvm/trunk/vm/vmcore/src/verifier-3363/tpool.h?view=diff&rev=565303&r1=565302&r2=565303
==============================================================================
--- harmony/enhanced/drlvm/trunk/vm/vmcore/src/verifier-3363/tpool.h (original)
+++ harmony/enhanced/drlvm/trunk/vm/vmcore/src/verifier-3363/tpool.h Mon Aug 13 03:34:11 2007
@@ -284,7 +284,6 @@
     };
 
     class_handler vf_resolve_class( class_handler k_class, const char *name, bool need_load);
-    int vf_is_valid(class_handler from, class_handler to);
     int vf_is_extending(class_handler from, class_handler to);
 
 } // namespace CPVerifier

Modified: harmony/enhanced/drlvm/trunk/vm/vmcore/src/verifier-3363/vf_resolve.cpp
URL: http://svn.apache.org/viewvc/harmony/enhanced/drlvm/trunk/vm/vmcore/src/verifier-3363/vf_resolve.cpp?view=diff&rev=565303&r1=565302&r2=565303
==============================================================================
--- harmony/enhanced/drlvm/trunk/vm/vmcore/src/verifier-3363/vf_resolve.cpp (original)
+++ harmony/enhanced/drlvm/trunk/vm/vmcore/src/verifier-3363/vf_resolve.cpp Mon Aug 13 03:34:11 2007
@@ -38,6 +38,12 @@
             return VF_ErrorLoadClass;
         }
 
+        //no need to load the source
+        if( class_is_interface_(target) ){
+            return VF_OK;
+        }
+
+
         // get stack reference class
         class_handler source = vf_resolve_class( klass, constraint->source, true );
         if( !source ) {
@@ -45,7 +51,7 @@
         }
 
         // check restriction
-        if( !vf_is_valid( source, target ) ) {
+        if( !vf_is_extending( source, target ) ) {
             return VF_ErrorIncompatibleArgument;
         }
         return VF_OK;
@@ -53,18 +59,6 @@
 
 
     /**
-    * Returns true if 'from' is assignable to 'to' in terms of verifier, namely:
-    * if 'to' is an interface or a (not necessarily direct) super class of 'to'
-    */
-    int vf_is_valid(class_handler from, class_handler to) {
-        if( class_is_interface_(to) ){
-            return true;
-        }
-
-        return vf_is_extending(from, to);
-    }
-
-    /**
     * Returns true if 'from' is (not necessarily directly) extending 'to'
     */
     int vf_is_extending(class_handler from, class_handler to) {
@@ -83,24 +77,26 @@
         const char *name,         // resolved class name
         bool need_load)      // load flag
     {
-        // get class loader
-        classloader_handler class_loader = 0;
-        class_handler sup = k_class;
-
-        while( sup ) {
-            classloader_handler class_loader2 = class_get_class_loader( sup );
-            if( class_loader != class_loader2 ) {
-                class_loader = class_loader2;
-
-                class_handler result = need_load ? cl_load_class( class_loader, name ) : cl_get_class( class_loader, name );
-
-                if( result ) {
-                    return result;
+        if( need_load ) {
+            return cl_load_class( class_get_class_loader( k_class ), name );
+        } else {
+            // get class loader
+            classloader_handler class_loader = 0;
+            class_handler sup = k_class;
+
+            while( sup ) {
+                classloader_handler class_loader2 = class_get_class_loader( sup );
+                if( class_loader != class_loader2 ) {
+                    class_loader = class_loader2;
+                    class_handler result = cl_get_class( class_loader, name );
+                    if( result ) {
+                        return result;
+                    }
                 }
+                sup = class_get_super_class(sup);
             }
-            sup = class_get_super_class(sup);
+            return 0;
         }
-        return 0;
     } // vf_resolve_class
 
 } // namespace CPVerifier