You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@harmony.apache.org by gs...@apache.org on 2007/05/23 17:39:09 UTC

svn commit: r540977 - in /harmony/enhanced/drlvm/trunk/vm/vmcore/src: class_support/classloader.cpp gc/root_set_enum_common.cpp kernel_classes/javasrc/java/lang/Class.java kernel_classes/javasrc/java/lang/ClassLoader.java

Author: gshimansky
Date: Wed May 23 08:39:08 2007
New Revision: 540977

URL: http://svn.apache.org/viewvc?view=rev&rev=540977
Log:
Reverted commit 540942 for HARMONY-3462 because it breaks VM so that it doesn't even start


Modified:
    harmony/enhanced/drlvm/trunk/vm/vmcore/src/class_support/classloader.cpp
    harmony/enhanced/drlvm/trunk/vm/vmcore/src/gc/root_set_enum_common.cpp
    harmony/enhanced/drlvm/trunk/vm/vmcore/src/kernel_classes/javasrc/java/lang/Class.java
    harmony/enhanced/drlvm/trunk/vm/vmcore/src/kernel_classes/javasrc/java/lang/ClassLoader.java

Modified: harmony/enhanced/drlvm/trunk/vm/vmcore/src/class_support/classloader.cpp
URL: http://svn.apache.org/viewvc/harmony/enhanced/drlvm/trunk/vm/vmcore/src/class_support/classloader.cpp?view=diff&rev=540977&r1=540976&r2=540977
==============================================================================
--- harmony/enhanced/drlvm/trunk/vm/vmcore/src/class_support/classloader.cpp (original)
+++ harmony/enhanced/drlvm/trunk/vm/vmcore/src/class_support/classloader.cpp Wed May 23 08:39:08 2007
@@ -1595,15 +1595,6 @@
     return clss;
 } // UserDefinedClassLoader::DoLoadClass
 
-static jmethodID getClassRegistryMethod(Global_Env* env) {
-    String* acr_func_name = env->string_pool.lookup("addToLoadedClasses");
-    String* acr_func_desc = env->string_pool.lookup("(Ljava/lang/String;Ljava/lang/Class;)V");
-    Class* clss = env->LoadCoreClass("java/lang/ClassLoader");
-    Method* m = clss->lookup_method(acr_func_name, acr_func_desc);
-    assert(m);
-    return (jmethodID)m;
-}
-
 bool ClassLoader::InsertClass(Class* clss) {
     tmn_suspend_disable();
     if (!IsBootstrap()) // skip BS classes
@@ -1642,10 +1633,14 @@
         chl->object = *clss->get_class_handle();
         args[2].l = chl;
 
-        static jmethodID registryMethod = getClassRegistryMethod(env);
+        static String* acr_func_name = env->string_pool.lookup("addToLoadedClasses");
+        static String* acr_func_desc = env->string_pool.lookup("(Ljava/lang/String;Ljava/lang/Class;)V");
+
+        Method* method = class_lookup_method_recursive(m_loader->vt()->clss, acr_func_name, acr_func_desc);
+        assert(method);
 
         jvalue res;
-        vm_execute_java_method_array(registryMethod, &res, args);
+        vm_execute_java_method_array((jmethodID) method, &res, args);
 
         if(exn_raised()) {
             tmn_suspend_enable();

Modified: harmony/enhanced/drlvm/trunk/vm/vmcore/src/gc/root_set_enum_common.cpp
URL: http://svn.apache.org/viewvc/harmony/enhanced/drlvm/trunk/vm/vmcore/src/gc/root_set_enum_common.cpp?view=diff&rev=540977&r1=540976&r2=540977
==============================================================================
--- harmony/enhanced/drlvm/trunk/vm/vmcore/src/gc/root_set_enum_common.cpp (original)
+++ harmony/enhanced/drlvm/trunk/vm/vmcore/src/gc/root_set_enum_common.cpp Wed May 23 08:39:08 2007
@@ -139,9 +139,10 @@
  } //vm_enumerate_static_fields
 
 
+// This is the main function used to enumerate Java references by the VM and the JITs.  
+// It is part of the JIT-VM interface.
 // 20030405 Note: When compressing references, vm_enumerate_root_reference() expects to be called with slots
 // containing *managed* refs (represented by heap_base if null, not 0/NULL), so those refs must not be NULL. 
-#if _DEBUG
 static void check_ref(void** ref)
 {
     if (VM_Global_State::loader_env->compress_references) {
@@ -155,7 +156,6 @@
         } 
     }
 }
-#endif // _DEBUG
 
 void 
 vm_enumerate_root_reference(void **ref, Boolean is_pinned)

Modified: harmony/enhanced/drlvm/trunk/vm/vmcore/src/kernel_classes/javasrc/java/lang/Class.java
URL: http://svn.apache.org/viewvc/harmony/enhanced/drlvm/trunk/vm/vmcore/src/kernel_classes/javasrc/java/lang/Class.java?view=diff&rev=540977&r1=540976&r2=540977
==============================================================================
--- harmony/enhanced/drlvm/trunk/vm/vmcore/src/kernel_classes/javasrc/java/lang/Class.java (original)
+++ harmony/enhanced/drlvm/trunk/vm/vmcore/src/kernel_classes/javasrc/java/lang/Class.java Wed May 23 08:39:08 2007
@@ -1160,12 +1160,7 @@
         return VMClassRegistry.getSimpleName(this);
     }
 
-    /**
-     * Provides strong referencing between the classloader 
-     * and it's defined classes. Intended for class unloading implementation.
-     * @see java.lang.ClassLoader#loadedClasses
-     */
-    ClassLoader definingLoader;
+    protected ClassLoader definingLoader;
 
     private final class ReflectionData {
         

Modified: harmony/enhanced/drlvm/trunk/vm/vmcore/src/kernel_classes/javasrc/java/lang/ClassLoader.java
URL: http://svn.apache.org/viewvc/harmony/enhanced/drlvm/trunk/vm/vmcore/src/kernel_classes/javasrc/java/lang/ClassLoader.java?view=diff&rev=540977&r1=540976&r2=540977
==============================================================================
--- harmony/enhanced/drlvm/trunk/vm/vmcore/src/kernel_classes/javasrc/java/lang/ClassLoader.java (original)
+++ harmony/enhanced/drlvm/trunk/vm/vmcore/src/kernel_classes/javasrc/java/lang/ClassLoader.java Wed May 23 08:39:08 2007
@@ -106,13 +106,11 @@
      */
     private final HashMap<String, Package> definedPackages;
 
-    /**
-     * The class registry, provides strong referencing between the classloader 
-     * and it's defined classes. Intended for class unloading implementation.
-     * Maps binary class name to the class.
-     * @see java.lang.Class#definingLoader
-     */
-    private HashMap<String, Class> loadedClasses = new HashMap<String, Class>(); 
+    /*
+    * The following mapping is used <String binaryClassName, Class clazz>, where binaryClassName - class name,
+    * clazz - corresponding class.
+    */
+    Hashtable<String, Class> loadedClasses = new Hashtable<String, Class>(); 
 
     /**
      * package private to access from the java.lang.Class class. The following
@@ -379,14 +377,12 @@
     }
 
     /**
-     * Registers the defined class, invoked by VM.
-     * Intended for class unloading implementation.
+     * @com.intel.drl.spec_ref
      */
-    @SuppressWarnings("unused") 
-    private void addToLoadedClasses(String name, Class clazz) {
+    public void addToLoadedClasses(String name, Class clazz) {
         synchronized (loadedClasses){
             loadedClasses.put(name, clazz); 
-        }
+    	}
     }
 
     /**
@@ -394,7 +390,7 @@
      */
     protected final Class<?> defineClass(String name, ByteBuffer b, ProtectionDomain protectionDomain)
         throws ClassFormatError {
-        byte[] data = b.array();
+		byte[] data = b.array();
         return defineClass(name, data, 0, data.length, protectionDomain);
     }