changes for galois
authorjzhou <jzhou>
Fri, 23 Mar 2012 02:08:20 +0000 (02:08 +0000)
committerjzhou <jzhou>
Fri, 23 Mar 2012 02:08:20 +0000 (02:08 +0000)
Robust/src/ClassLibrary/MGC/System.java
Robust/src/ClassLibrary/MGC/gnu/Collections.java
Robust/src/ClassLibrary/MGC/gnu/GarbageCollectorMXBean.java [deleted file]
Robust/src/ClassLibrary/MGC/gnu/ManagementFactory.java [deleted file]
Robust/src/ClassLibrary/MGC/gnu/MemoryManagerMXBean.java [deleted file]
Robust/src/Runtime/bamboo/multicoregarbage.c
Robust/src/Runtime/bamboo/multicoregc.h
Robust/src/Runtime/bamboo/multicoreruntime.c

index 9b16885e53b461f59c8a31dac1dff63bbf9add11..eacf9de45716e661d352003cca4f9c2eee1d75b3 100644 (file)
@@ -27,6 +27,10 @@ public class System {
   
   public static native void gc();
 
+  public static native long numGCs();
+
+  public static native long milliGcTime();
+
   public static void println(String s) {
     System.printString(s+"\n");
   }
index 52c91b4c44310c3a5294230fc165f7f8ce2d6de0..14b267432beb603d5bf7ec01bfdf2cfd6153700e 100644 (file)
@@ -84,8 +84,8 @@ public class Collections
    *     some element that is <code>null</code>.
    * @see Arrays#sort(Object[])
    */
-  public static void sort(Vector l)
-  {
+  //public static void sort(Vector l)
+  //{
     /*T[] a = (T[]) l.toArray();
     Arrays.sort(a, c);
     ListIterator<T> i = l.listIterator();
@@ -95,11 +95,11 @@ public class Collections
        i.set(a[pos]);
       }*/
     //TODO 
-    System.println("Unimplemented Collections.sort() invoked");
-  }
+    //System.println("Unimplemented Collections.sort() invoked");
+  //}
   
-  public static  void sort(List l, Comparator c)
-  {
+  //public static  void sort(List l, Comparator c)
+  //{
     /*Object[] a =  l.toArray();
     Arrays.sort(a, c);
     ListIterator i = l.listIterator();
@@ -109,8 +109,8 @@ public class Collections
        i.set(a[pos]);
       }*/
 //    TODO 
-      System.println("Unimplemented Collections.sort(l, c) invoked");
-  }
+    //  System.println("Unimplemented Collections.sort(l, c) invoked");
// }
 
   
   static final /*<T>*/ int compare(Object/*T*/ o1, Object/*T*/ o2, Comparator/*<? super T>*/ c)
diff --git a/Robust/src/ClassLibrary/MGC/gnu/GarbageCollectorMXBean.java b/Robust/src/ClassLibrary/MGC/gnu/GarbageCollectorMXBean.java
deleted file mode 100644 (file)
index 5bb0a18..0000000
+++ /dev/null
@@ -1,79 +0,0 @@
-/* GarbageCollectorMXBean.java - Interface for a garbage collector bean
-   Copyright (C) 2006 Free Software Foundation
-
-This file is part of GNU Classpath.
-
-GNU Classpath is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2, or (at your option)
-any later version.
-
-GNU Classpath is distributed in the hope that it will be useful, but
-WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with GNU Classpath; see the file COPYING.  If not, write to the
-Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-02110-1301 USA.
-
-Linking this library statically or dynamically with other modules is
-making a combined work based on this library.  Thus, the terms and
-conditions of the GNU General Public License cover the whole
-combination.
-
-As a special exception, the copyright holders of this library give you
-permission to link this library with independent modules to produce an
-executable, regardless of the license terms of these independent
-modules, and to copy and distribute the resulting executable under
-terms of your choice, provided that you also meet, for each linked
-independent module, the terms and conditions of the license of that
-module.  An independent module is a module which is not derived from
-or based on this library.  If you modify this library, you may extend
-this exception to your version of the library, but you are not
-obligated to do so.  If you do not wish to do so, delete this
-exception statement from your version. */
-
-package java.lang.management;
-
-/**
- * Provides access to information about the garbage collectors
- * of the virtual machine.  Garbage collectors are responsible
- * for removing unreferenced objects from memory.  A garbage
- * collector is a type of memory manager, so this interface
- * is combined with that of generic memory managers.  An instance
- * of this bean for each garbage collector is obtained by calling
- * {@link ManagementFactory#getGarbageCollectorMXBeans()}.
- *
- * @author Andrew John Hughes (gnu_andrew@member.fsf.org)
- * @since 1.5
- */
-public interface GarbageCollectorMXBean
-  extends MemoryManagerMXBean
-{
-
-  /**
-   * Returns the number of collections the garbage collector
-   * represented by this bean has made.  -1 is returned if the
-   * collection count is undefined.
-   *
-   * @return the number of collections made, or -1 if this is
-   *         undefined.
-   */
-  long getCollectionCount();
-
-  /**
-   * Returns the accumulated number of milliseconds this garbage
-   * collector has spent freeing the memory used by unreferenced
-   * objects.  -1 is returned if the collection time is undefined.
-   * Note that the accumulated time may not change, even when the
-   * collection count increases, if the time taken is sufficiently
-   * short; this depends on the resolution of the timer used.
-   * 
-   * @return the accumulated number of milliseconds spent collecting,
-   *         or -1 if this is undefined.
-   */
-  long getCollectionTime();
-
-}
diff --git a/Robust/src/ClassLibrary/MGC/gnu/ManagementFactory.java b/Robust/src/ClassLibrary/MGC/gnu/ManagementFactory.java
deleted file mode 100644 (file)
index 3226cd0..0000000
+++ /dev/null
@@ -1,817 +0,0 @@
-/* ManagementFactory.java - Factory for obtaining system beans.
-   Copyright (C) 2006 Free Software Foundation
-
-This file is part of GNU Classpath.
-
-GNU Classpath is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2, or (at your option)
-any later version.
-
-GNU Classpath is distributed in the hope that it will be useful, but
-WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with GNU Classpath; see the file COPYING.  If not, write to the
-Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-02110-1301 USA.
-
-Linking this library statically or dynamically with other modules is
-making a combined work based on this library.  Thus, the terms and
-conditions of the GNU General Public License cover the whole
-combination.
-
-As a special exception, the copyright holders of this library give you
-permission to link this library with independent modules to produce an
-executable, regardless of the license terms of these independent
-modules, and to copy and distribute the resulting executable under
-terms of your choice, provided that you also meet, for each linked
-independent module, the terms and conditions of the license of that
-module.  An independent module is a module which is not derived from
-or based on this library.  If you modify this library, you may extend
-this exception to your version of the library, but you are not
-obligated to do so.  If you do not wish to do so, delete this
-exception statement from your version. */
-
-package java.lang.management;
-
-/*import gnu.classpath.SystemProperties;
-
-import gnu.java.lang.management.ClassLoadingMXBeanImpl;
-import gnu.java.lang.management.CompilationMXBeanImpl;
-import gnu.java.lang.management.GarbageCollectorMXBeanImpl;
-import gnu.java.lang.management.OperatingSystemMXBeanImpl;
-import gnu.java.lang.management.MemoryMXBeanImpl;
-import gnu.java.lang.management.MemoryManagerMXBeanImpl;
-import gnu.java.lang.management.MemoryPoolMXBeanImpl;
-import gnu.java.lang.management.RuntimeMXBeanImpl;
-import gnu.java.lang.management.ThreadMXBeanImpl;
-
-import java.io.IOException;
-
-import java.lang.reflect.InvocationHandler;
-import java.lang.reflect.Method;
-import java.lang.reflect.Proxy;
-
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-
-import java.util.logging.LogManager;
-
-import javax.management.Attribute;
-import javax.management.InstanceAlreadyExistsException;
-import javax.management.MBeanRegistrationException;
-import javax.management.MBeanServer;
-import javax.management.MBeanServerConnection;
-import javax.management.MBeanServerFactory;
-import javax.management.MalformedObjectNameException;
-import javax.management.NotCompliantMBeanException;
-import javax.management.NotificationEmitter;
-import javax.management.NotificationFilter;
-import javax.management.NotificationListener;
-import javax.management.ObjectName;
-
-import javax.management.openmbean.CompositeData;
-import javax.management.openmbean.TabularData;*/
-
-/**
- * <p>
- * Provides access to the system's management beans via a series
- * of static methods.  
- * </p>
- * <p>
- * An instance of a system management bean can be obtained by
- * using one of the following methods:
- * </p>
- * <ol>
- * <li>Calling the appropriate static method of this factory.
- * </li>
- * <li>Using the platform {@link javax.management.MBeanServer}
- * to access the beans locally, or an
- * {@link javax.management.MBeanServerConnection} for remote
- * access.  The attributes and operations use the limited
- * range of data types specified below.</li>
- * </ol>
- * <h2>Open Data Types</h2>
- * <p>
- * The data types used by the management beans are restricted
- * to <emph>open</emph> data types to aid interoperability.  This
- * allows the beans to be accessed remotely, including from non-Java
- * clients.  Below is a table which lists the types used by the beans
- * on the left, and the types they are converted to when returned via
- * a bean server on the right.  Type information is provided for each
- * bean by obtaining its instance of {@link javax.management.MBeanInfo}.
- * </p>
- * <table>
- * <th><td>Data Type Used</td><td>Data Type Returned</td></th>
- * <tr>
- * <td>Primitive types (<code>int</code>, <code>char</code>, etc.)</td>
- * <td>Same</td>
- * </tr><tr>
- * <td>Wrapper classes ({@link{java.lang.Integer},
- * @link{java.lang.Character}, etc.)</td>
- * <td>Same</td>
- * </tr><tr>
- * <td>An {@link java.lang.Enum}</td>
- * <td>The <code>name</code> of the enumeration constant</td>
- * </tr><tr>
- * <td>An array of type <code>E</code></td>
- * <td>An array of the same dimensions with this mapping applied
- * to <code>E</code>.</td>
- * </tr><tr>
- * <td>A class with `getter' methods and a
- * <code>from({@link javax.management.openmbean.CompositeData})</code>
- * method.</td>
- * <td>The equivalent {@link javax.management.openmbean.CompositeData}
- * instance, specified by the <code>from</code> method.</td>
- * </tr><tr>
- * <td>A map with keys of type <code>K</code> and values of
- * type <code>V</code>.</td>
- * <td>A {@link javax.management.openmbean.TabularData} instance,
- * with the row type containing two items, <code>"key"</code> and
- * <code>"value"</code> with the types <code>K</code> and <code>V</code>
- * respectively (with translation applied).</td>
- * </tr><tr>
- * <td>A list of type <code>E</code>.</td>
- * <td>An array with this mapping applied to <code>E</code>.</td>
- * </tr></table>
- *
- * @author Andrew John Hughes (gnu_andrew@member.fsf.org)
- * @since 1.5
- */
-public class ManagementFactory
-{
-
-  /**
-   * The object name for the class loading bean.
-   */
-  public static final String CLASS_LOADING_MXBEAN_NAME =
-    "java.lang:type=ClassLoading";
-
-  /**
-   * The object name for the compilation bean.
-   */
-  public static final String COMPILATION_MXBEAN_NAME =
-    "java.lang:type=Compilation";
-
-  /**
-   * The domain for the garbage collecting beans.
-   */
-  public static final String GARBAGE_COLLECTOR_MXBEAN_DOMAIN_TYPE =
-    "java.lang:type=GarbageCollector";
-
-  /**
-   * The domain for the memory manager beans.
-   */
-  public static final String MEMORY_MANAGER_MXBEAN_DOMAIN_TYPE =
-    "java.lang:type=MemoryManager";
-
-  /**
-   * The object name for the memory bean.
-   */
-  public static final String MEMORY_MXBEAN_NAME =
-    "java.lang:type=Memory";
-
-  /**
-   * The domain for the memory pool beans.
-   */
-  public static final String MEMORY_POOL_MXBEAN_DOMAIN_TYPE =
-    "java.lang:type=MemoryPool";
-
-  /**
-   * The object name for the operating system bean.
-   */
-  public static final String OPERATING_SYSTEM_MXBEAN_NAME =
-    "java.lang:type=OperatingSystem";
-
-  /**
-   * The object name for the runtime bean.
-   */
-  public static final String RUNTIME_MXBEAN_NAME =
-    "java.lang:type=Runtime";
-
-  /**
-   * The object name for the threading bean.
-   */
-  public static final String THREAD_MXBEAN_NAME =
-    "java.lang:type=Threading";
-
-  /**
-   * The operating system management bean.
-   */
-  //private static OperatingSystemMXBean osBean;
-
-  /**
-   * The runtime management bean.
-   */
-  //private static RuntimeMXBean runtimeBean;
-
-  /**
-   * The class loading management bean.
-   */
-  //private static ClassLoadingMXBean classLoadingBean;
-
-  /**
-   * The thread bean.
-   */
-  //private static ThreadMXBean threadBean;
-
-  /**
-   * The memory bean.
-   */
-  //private static MemoryMXBean memoryBean;
-
-  /**
-   * The compilation bean (may remain null).
-   */
-  //private static CompilationMXBean compilationBean;
-
-  /**
-   * The platform server.
-   */
-  //private static MBeanServer platformServer;
-
-  /**
-   * Private constructor to prevent instance creation.
-   */
-  private ManagementFactory() {}
-
-  /**
-   * Returns the operating system management bean for the
-   * operating system on which the virtual machine is running.
-   *
-   * @return an instance of {@link OperatingSystemMXBean} for
-   *         the underlying operating system.
-   */
-  /*public static OperatingSystemMXBean getOperatingSystemMXBean()
-  {
-    if (osBean == null)
-      try 
-       {
-         osBean = new OperatingSystemMXBeanImpl();
-       }
-      catch (NotCompliantMBeanException e)
-       {
-         throw new InternalError("The GNU implementation of the " +
-                                 "operating system bean is not a " +
-                                 "compliant management bean.");
-       }
-    return osBean;
-  }*/
-
-  /**
-   * Returns the runtime management bean for the
-   * running virtual machine.
-   *
-   * @return an instance of {@link RuntimeMXBean} for
-   *         this virtual machine.
-   */
-  /*public static RuntimeMXBean getRuntimeMXBean()
-  {
-    if (runtimeBean == null)
-      try
-       {
-         runtimeBean = new RuntimeMXBeanImpl();
-       }
-      catch (NotCompliantMBeanException e)
-       {
-         throw new InternalError("The GNU implementation of the " +
-                                 "runtime bean is not a compliant " +
-                                 "management bean.");
-       }
-    return runtimeBean;
-  }*/
-
-  /**
-   * Returns the class loading management bean for the
-   * running virtual machine.
-   *
-   * @return an instance of {@link ClassLoadingMXBean} for
-   *         this virtual machine.
-   */
-  /*public static ClassLoadingMXBean getClassLoadingMXBean()
-  {
-    if (classLoadingBean == null)
-      try
-       {
-         classLoadingBean = new ClassLoadingMXBeanImpl();
-       }
-      catch (NotCompliantMBeanException e)
-       {
-         throw new InternalError("The GNU implementation of the " +
-                                 "class loading bean is not a " +
-                                 "compliant management bean.");
-       }
-    return classLoadingBean;
-  }*/
-
-  /**
-   * Returns the thread management bean for the running
-   * virtual machine.
-   *
-   * @return an instance of {@link ThreadMXBean} for
-   *         this virtual machine.
-   */
-  /*public static ThreadMXBean getThreadMXBean()
-  {
-    if (threadBean == null)
-      try
-       {
-         threadBean = new ThreadMXBeanImpl();
-       }
-      catch (NotCompliantMBeanException e)
-       {
-         throw new InternalError("The GNU implementation of the " +
-                                 "thread bean is not a compliant " +
-                                 "management bean.");
-       }
-    return threadBean;
-  }*/
-
-  /**
-   * Returns the memory management bean for the running
-   * virtual machine.
-   *
-   * @return an instance of {@link MemoryMXBean} for
-   *         this virtual machine.
-   */
-  /*public static MemoryMXBean getMemoryMXBean()
-  {
-    if (memoryBean == null)
-      try
-       {
-         memoryBean = new MemoryMXBeanImpl();
-       }
-      catch (NotCompliantMBeanException e)
-       {
-         throw new InternalError("The GNU implementation of the " +
-                                 "memory bean is not a compliant " +
-                                 "management bean.");
-       }
-    return memoryBean;
-  }*/
-
-  /**
-   * Returns the compilation bean for the running
-   * virtual machine, if supported.  Otherwise,
-   * it returns <code>null</code>.
-   *
-   * @return an instance of {@link CompilationMXBean} for
-   *         this virtual machine, or <code>null</code>
-   *         if the virtual machine doesn't include
-   *         a Just-In-Time (JIT) compiler.
-   */
-  /*public static CompilationMXBean getCompilationMXBean()
-  {
-    if (compilationBean == null &&
-       SystemProperties.getProperty("gnu.java.compiler.name") != null)
-      try
-       {
-         compilationBean = new CompilationMXBeanImpl();
-       }
-      catch (NotCompliantMBeanException e)
-       {
-         throw new InternalError("The GNU implementation of the " +
-                                 "compilation bean is not a compliant " +
-                                 "management bean.");
-       }
-    return compilationBean;
-  }*/
-
-  /**
-   * Returns the memory pool beans for the running
-   * virtual machine.  These may change during the course
-   * of execution.
-   *
-   * @return a list of memory pool beans, one for each pool.
-   */
-  /*public static List<MemoryPoolMXBean> getMemoryPoolMXBeans()
-  {
-    List<MemoryPoolMXBean> poolBeans =
-      new ArrayList<MemoryPoolMXBean>();
-    String[] names = VMManagementFactory.getMemoryPoolNames();
-    for (int a = 0; a < names.length; ++a)
-      try
-       {
-         poolBeans.add(new MemoryPoolMXBeanImpl(names[a]));
-       }
-      catch (NotCompliantMBeanException e)
-       {
-         throw new InternalError("The GNU implementation of the " +
-                                 "memory pool bean, " + a + ", is " +
-                                 "not a compliant management bean.");
-       }
-    return poolBeans;
-  }*/
-
-  /**
-   * Returns the memory manager beans for the running
-   * virtual machine.  These may change during the course
-   * of execution.
-   *
-   * @return a list of memory manager beans, one for each manager.
-   */
-  /*public static List<MemoryManagerMXBean> getMemoryManagerMXBeans()
-  {
-    List<MemoryManagerMXBean> managerBeans =
-      new ArrayList<MemoryManagerMXBean>();
-    String[] names = VMManagementFactory.getMemoryManagerNames();
-    for (int a = 0; a < names.length; ++a)
-      try
-       {
-         managerBeans.add(new MemoryManagerMXBeanImpl(names[a]));
-       }
-      catch (NotCompliantMBeanException e)
-       {
-         throw new InternalError("The GNU implementation of the " +
-                                 "memory manager bean, " + a + ", is " +
-                                 "not a compliant management bean.");
-       }
-    managerBeans.addAll(getGarbageCollectorMXBeans());
-    return managerBeans;
-  }*/
-
-  /**
-   * Returns the garbage collector beans for the running
-   * virtual machine.  These may change during the course
-   * of execution.
-   *
-   * @return a list of garbage collector beans, one for each pool.
-   */
-  public static List/*<GarbageCollectorMXBean>*/ getGarbageCollectorMXBeans()
-  {
-    List/*<GarbageCollectorMXBean>*/ gcBeans =
-      new ArrayList/*<GarbageCollectorMXBean>*/();
-    /*String[] names = VMManagementFactory.getGarbageCollectorNames();
-    for (int a = 0; a < names.length; ++a)
-      try
-       {
-         gcBeans.add(new GarbageCollectorMXBeanImpl(names[a]));
-       }
-      catch (NotCompliantMBeanException e)
-       {
-         throw new InternalError("The GNU implementation of the " +
-                                 "garbage collector bean, " + a + 
-                                 ", is not a compliant management " +
-                                 "bean.");
-       }*/
-    return gcBeans;
-  }
-
-  /**
-   * <p>
-   * Returns the platform {@link javax.management.MBeanServer}.  On the
-   * first call to this method, a server instance is retrieved from
-   * the {@link javax.management.MBeanServerFactory} and each of the
-   * beans are registered with it.  Subsequent calls return the existing
-   * instance.  If the property <code>javax.management.builder.initial</code>
-   * is set, its value will be used as the name of the class which is used
-   * to provide the server instance.
-   * </p>
-   * <p>
-   * It is recommended that the platform server is used for other beans as
-   * well, in order to simplify their discovery and publication.  Name conflicts
-   * should be avoided.
-   * </p>
-   *
-   * @return the platform {@link javax.management.MBeanServer}
-   * @throws SecurityException if a security manager exists and the
-   *                           caller's permissions don't imply {@link
-   *                           MBeanServerPermission(String)}("createMBeanServer")
-   * @see javax.management.MBeanServerFactory
-   * @see javax.management.MBeanServerFactory#createMBeanServer()
-   */
-  /*public static MBeanServer getPlatformMBeanServer()
-  {
-    if (platformServer == null)
-      {
-       platformServer = MBeanServerFactory.createMBeanServer();
-       try
-         {
-           platformServer.registerMBean(getOperatingSystemMXBean(),
-                                        new ObjectName(OPERATING_SYSTEM_MXBEAN_NAME));
-           platformServer.registerMBean(getRuntimeMXBean(),
-                                        new ObjectName(RUNTIME_MXBEAN_NAME));
-           platformServer.registerMBean(getClassLoadingMXBean(),
-                                        new ObjectName(CLASS_LOADING_MXBEAN_NAME));
-           platformServer.registerMBean(getThreadMXBean(),
-                                        new ObjectName(THREAD_MXBEAN_NAME));
-           platformServer.registerMBean(getMemoryMXBean(),
-                                        new ObjectName(MEMORY_MXBEAN_NAME));
-           CompilationMXBean compBean = getCompilationMXBean();
-           if (compBean != null)
-             platformServer.registerMBean(compBean,
-                                          new ObjectName(COMPILATION_MXBEAN_NAME));
-           Iterator beans = getMemoryPoolMXBeans().iterator();
-           while (beans.hasNext())
-             {
-               MemoryPoolMXBean bean = (MemoryPoolMXBean) beans.next();
-               platformServer.registerMBean(bean,
-                                            new ObjectName(MEMORY_POOL_MXBEAN_DOMAIN_TYPE +
-                                                           ",name=" +
-                                                           bean.getName()));
-             }
-           beans = getMemoryManagerMXBeans().iterator();
-           while (beans.hasNext())
-             {
-               MemoryManagerMXBean bean = (MemoryManagerMXBean) beans.next();
-               platformServer.registerMBean(bean,
-                                            new ObjectName(MEMORY_MANAGER_MXBEAN_DOMAIN_TYPE +
-                                                           ",name=" +
-                                                           bean.getName()));
-             }
-           beans = getGarbageCollectorMXBeans().iterator();
-           while (beans.hasNext())
-             {
-               GarbageCollectorMXBean bean = (GarbageCollectorMXBean) beans.next();
-               platformServer.registerMBean(bean,
-                                            new ObjectName(GARBAGE_COLLECTOR_MXBEAN_DOMAIN_TYPE +
-                                                           ",name=" +
-                                                           bean.getName()));
-             }
-           platformServer.registerMBean(LogManager.getLoggingMXBean(),
-                                        new ObjectName(LogManager.LOGGING_MXBEAN_NAME));
-         }
-       catch (InstanceAlreadyExistsException e)
-         {
-           throw (Error) 
-             (new InternalError("One of the management beans is " +
-                                "already registered.").initCause(e));
-         }
-       catch (MBeanRegistrationException e)
-         {
-           throw (Error) 
-             (new InternalError("One of the management beans' preRegister " +
-                                "methods threw an exception.").initCause(e));
-         }
-       catch (NotCompliantMBeanException e)
-         {
-           throw (Error) 
-             (new InternalError("One of the management beans is " +
-                                "not compliant.").initCause(e));
-         }
-       catch (MalformedObjectNameException e)
-         {
-           throw (Error) 
-             (new InternalError("The object name of a management bean is " +
-                                "not compliant.").initCause(e));
-         }
-      }
-    return platformServer;
-  }*/
-
-  /**
-   * <p>
-   * Returns a proxy for the specified platform bean.  A proxy object is created
-   * using <code>Proxy.newProxyInstance(mxbeanInterface.getClassLoader(),
-   * new Class[] { mxbeanInterface }, handler)</code>.  The
-   * {@link javax.management.NotificationEmitter} class is also added to the
-   * array if the bean provides notifications.  <code>handler</code> refers
-   * to the invocation handler which forwards calls to the connection, and
-   * also provides translation between the Java data types used in the
-   * bean interfaces and the open data types, as specified in the description
-   * of this class.  It is this translation that makes the
-   * usual {@link javax.management.MBeanServerInvocationHandler} inappropriate
-   * for providing such a proxy.
-   * </p>
-   * <p>
-   * <strong>Note</strong>: use of the proxy may result in
-   * {@link java.io.IOException}s from the underlying {@link MBeanServerConnection}
-   * and a {@link java.io.InvalidObjectException} if enum constants
-   * used on the client and the server don't match.
-   * </p>
-   *
-   * @param connection the server connection to use to access the bean.
-   * @param mxbeanName the {@link javax.management.ObjectName} of the
-   *                   bean to provide a proxy for.
-   * @param mxbeanInterface the interface for the bean being proxied.
-   * @return a proxy for the specified bean.
-   * @throws IllegalArgumentException if <code>mxbeanName</code> is not a valid
-   *                                  {@link javax.management.ObjectName},
-   *                                  the interface and name do not match the
-   *                                  same bean, the name does not refer to a
-   *                                  platform bean or the bean is not registered
-   *                                  with the server accessed by <code>connection</code>.
-   * @throws IOException if the connection throws one.
-   */
-  /*public static <T> T newPlatformMXBeanProxy(MBeanServerConnection connection,
-                                            String mxbeanName,
-                                            Class<T> mxbeanInterface)
-    throws IOException
-  {
-    if (!(mxbeanName.equals(CLASS_LOADING_MXBEAN_NAME) ||
-         mxbeanName.equals(COMPILATION_MXBEAN_NAME) ||
-         mxbeanName.startsWith(GARBAGE_COLLECTOR_MXBEAN_DOMAIN_TYPE) ||
-         mxbeanName.startsWith(MEMORY_MANAGER_MXBEAN_DOMAIN_TYPE) ||
-         mxbeanName.equals(MEMORY_MXBEAN_NAME) ||
-         mxbeanName.startsWith(MEMORY_POOL_MXBEAN_DOMAIN_TYPE) ||
-         mxbeanName.equals(OPERATING_SYSTEM_MXBEAN_NAME) ||
-         mxbeanName.equals(RUNTIME_MXBEAN_NAME) ||
-         mxbeanName.equals(THREAD_MXBEAN_NAME)))
-      {
-       throw new IllegalArgumentException("The named bean, " + mxbeanName +
-                                          ", is not a platform name.");
-      }
-    if ((mxbeanName.equals(CLASS_LOADING_MXBEAN_NAME) &&
-        mxbeanInterface != ClassLoadingMXBean.class) ||
-       (mxbeanName.equals(COMPILATION_MXBEAN_NAME) &&
-        mxbeanInterface != CompilationMXBean.class) ||
-       (mxbeanName.startsWith(GARBAGE_COLLECTOR_MXBEAN_DOMAIN_TYPE) &&
-        mxbeanInterface != GarbageCollectorMXBean.class) ||
-       (mxbeanName.startsWith(MEMORY_MANAGER_MXBEAN_DOMAIN_TYPE) &&
-        mxbeanInterface != MemoryManagerMXBean.class) ||
-       (mxbeanName.equals(MEMORY_MXBEAN_NAME) &&
-        mxbeanInterface != MemoryMXBean.class) ||
-       (mxbeanName.startsWith(MEMORY_POOL_MXBEAN_DOMAIN_TYPE) &&
-        mxbeanInterface != MemoryPoolMXBean.class) ||
-       (mxbeanName.equals(OPERATING_SYSTEM_MXBEAN_NAME) &&
-        mxbeanInterface != OperatingSystemMXBean.class) ||
-       (mxbeanName.equals(RUNTIME_MXBEAN_NAME) &&
-        mxbeanInterface != RuntimeMXBean.class) ||
-       (mxbeanName.equals(THREAD_MXBEAN_NAME) &&
-        mxbeanInterface != ThreadMXBean.class))
-      throw new IllegalArgumentException("The interface, " + mxbeanInterface +
-                                        ", does not match the bean, " + mxbeanName);
-    ObjectName bean;
-    try
-      {
-       bean = new ObjectName(mxbeanName);
-      }
-    catch (MalformedObjectNameException e)
-      {
-       throw new IllegalArgumentException("The named bean is invalid.");
-      }
-    if (!(connection.isRegistered(bean)))
-      throw new IllegalArgumentException("The bean is not registered on this connection.");
-    Class[] interfaces;
-    if (mxbeanName.equals(MEMORY_MXBEAN_NAME))
-      interfaces = new Class[] { mxbeanInterface, NotificationEmitter.class };
-    else
-      interfaces = new Class[] { mxbeanInterface };
-    return (T) Proxy.newProxyInstance(mxbeanInterface.getClassLoader(),
-                                     interfaces,
-                                     new ManagementInvocationHandler(connection, bean));
-  }*/
-
-  /**
-   * This invocation handler provides method calls for a platform bean
-   * by forwarding them to a {@link MBeanServerConnection}.  Translation from
-   * Java data types to open data types is performed as specified above.
-   *
-   * @author Andrew John Hughes (gnu_andrew@member.fsf.org)
-   * @since 1.5
-   */
-  /*private static class ManagementInvocationHandler
-    implements InvocationHandler
-  {
-
-    /**
-     * The encapsulated connection.
-     */
-    /*private MBeanServerConnection conn;
-
-    /**
-     * The bean being proxied.
-     */
-    /*private ObjectName bean;
-
-    /**
-     * Constructs a new {@link InvocationHandler} which proxies
-     * for the specified bean using the supplied connection.
-     *
-     * @param conn the connection on which to forward method calls.
-     * @param bean the bean to proxy.
-     */
-    /*public ManagementInvocationHandler(MBeanServerConnection conn,
-                                      ObjectName bean)
-      throws IOException
-    {
-      this.conn = conn;
-      this.bean = bean;
-    }
-
-    /**
-     * Called by the proxy class whenever a method is called.  The method
-     * is emulated by retrieving an attribute from, setting an attribute on
-     * or invoking a method on the server connection as required.  Translation
-     * between the Java data types supplied as arguments to the open types used
-     * by the bean is provided, as well as translation of the return value back
-     * in to the appropriate Java type.
-     *
-     * @param proxy the proxy on which the method was called.
-     * @param method the method which was called.
-     * @param args the arguments supplied to the method.
-     * @return the return value from the method.
-     * @throws Throwable if an exception is thrown in performing the
-     *                   method emulation.
-     */
-    /*public Object invoke(Object proxy, Method method, Object[] args)
-      throws Throwable
-    {
-      String name = method.getName();
-      if (name.equals("toString"))
-       return "Proxy for " + bean + " using " + conn;
-      if (name.equals("addNotificationListener"))
-       {
-         conn.addNotificationListener(bean,
-                                      (NotificationListener) args[0],
-                                      (NotificationFilter) args[1],
-                                      args[2]);
-         return null;
-       }
-      if (name.equals("getNotificationInfo"))
-       return conn.getMBeanInfo(bean).getNotifications();
-      if (name.equals("removeNotificationListener"))
-       {
-         if (args.length == 1)
-           conn.removeNotificationListener(bean, 
-                                           (NotificationListener)
-                                           args[0]);
-         else
-           conn.removeNotificationListener(bean, 
-                                           (NotificationListener)
-                                           args[0],
-                                           (NotificationFilter)
-                                           args[1], args[2]);
-         return null;
-       }
-      String attrib = null;
-      if (name.startsWith("get"))
-       attrib = name.substring(3);
-      else if (name.startsWith("is"))
-       attrib = name.substring(2);
-      if (attrib != null)
-       return translate(conn.getAttribute(bean, attrib), method);
-      else if (name.startsWith("set"))
-       {
-         conn.setAttribute(bean, new Attribute(name.substring(3),
-                                               args[0]));
-         return null;
-       }
-      else
-       return translate(conn.invoke(bean, name, args, null), method);
-    }
-
-    /**
-     * Translates the returned open data type to the value
-     * required by the interface.
-     *
-     * @param otype the open type returned by the method call.
-     * @param method the method that was called.
-     * @return the equivalent return type required by the interface.
-     * @throws Throwable if an exception is thrown in performing the
-     *                   conversion.
-     */
-    /*private final Object translate(Object otype, Method method)
-      throws Throwable
-    {
-      Class<?> returnType = method.getReturnType();
-      if (returnType.isEnum())
-       {
-         String ename = (String) otype;
-         Enum[] constants = (Enum[]) returnType.getEnumConstants();
-         for (Enum c : constants)
-           if (c.name().equals(ename))
-             return c;
-       }
-      if (List.class.isAssignableFrom(returnType))
-       {
-         Object[] elems = (Object[]) otype;
-         List l = new ArrayList(elems.length);
-         for (Object elem : elems)
-           l.add(elem);
-         return l;
-       }
-      if (Map.class.isAssignableFrom(returnType))
-       {
-         TabularData data = (TabularData) otype;
-         Map m = new HashMap(data.size());
-         for (Object val : data.values())
-           {
-             CompositeData vals = (CompositeData) val;
-             m.put(vals.get("key"), vals.get("value"));
-           }
-         return m;
-       }
-      try
-       {
-         Method m = returnType.getMethod("from",
-                                         new Class[]
-           { CompositeData.class });
-         return m.invoke(null, (CompositeData) otype);
-       }
-      catch (NoSuchMethodException e)
-       {
-         /* Ignored; we expect this if this
-            isn't a from(CompositeData) class */
-       /*}
-      return otype;
-    }
-
-  }*/
-}
diff --git a/Robust/src/ClassLibrary/MGC/gnu/MemoryManagerMXBean.java b/Robust/src/ClassLibrary/MGC/gnu/MemoryManagerMXBean.java
deleted file mode 100644 (file)
index 9210705..0000000
+++ /dev/null
@@ -1,77 +0,0 @@
-/* MemoryManagerMXBean.java - Interface for a memory manager bean
-   Copyright (C) 2006 Free Software Foundation
-
-This file is part of GNU Classpath.
-
-GNU Classpath is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2, or (at your option)
-any later version.
-
-GNU Classpath is distributed in the hope that it will be useful, but
-WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with GNU Classpath; see the file COPYING.  If not, write to the
-Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-02110-1301 USA.
-
-Linking this library statically or dynamically with other modules is
-making a combined work based on this library.  Thus, the terms and
-conditions of the GNU General Public License cover the whole
-combination.
-
-As a special exception, the copyright holders of this library give you
-permission to link this library with independent modules to produce an
-executable, regardless of the license terms of these independent
-modules, and to copy and distribute the resulting executable under
-terms of your choice, provided that you also meet, for each linked
-independent module, the terms and conditions of the license of that
-module.  An independent module is a module which is not derived from
-or based on this library.  If you modify this library, you may extend
-this exception to your version of the library, but you are not
-obligated to do so.  If you do not wish to do so, delete this
-exception statement from your version. */
-
-package java.lang.management;
-
-/**
- * Provides access to information about the memory managers
- * of the virtual machine.  An instance of this bean for each
- * memory manager is obtained by calling
- * {@link ManagementFactory#getMemoryManagerMXBeans()}.
- *
- * @author Andrew John Hughes (gnu_andrew@member.fsf.org)
- * @since 1.5
- */
-public interface MemoryManagerMXBean
-{
-
-  /** 
-   * Returns an array containing the names of the memory pools
-   * this memory manager manages.
-   * 
-   * @return an array containing the name of each memory pool
-   *         this manager is responsible for.
-   */
-  String[] getMemoryPoolNames();
-
-  /**
-   * Returns the name of the memory manager.
-   *
-   * @return the memory manager name.
-   */
-  String getName();
-
-  /**
-   * Returns true if this memory manager is still valid.  A memory
-   * manager becomes invalid when it is removed by the virtual machine
-   * and no longer used.
-   *
-   * @return true if this memory manager is valid.
-   */
-  boolean isValid();
-
-}
index 9664ce5abb05ee43ce625a330ba6eec32d3a04a9..6e694b5497c3494000b0b3bef1cc356b5ed68c26 100644 (file)
@@ -107,6 +107,8 @@ void gc_resetCoreStatus() {
 
 
 void initmulticoregcdata() {
+  numGCs = 0;
+  GCtime = 0;
   bamboo_smem_zero_top = NULL;
   gcflag = false;
   gc_status_info.gcprocessing = false;
@@ -541,6 +543,7 @@ bool gc(struct garbagelist * stackptr) {
   if(0 == BAMBOO_NUM_OF_CORE) {
     GC_PRINTF("start gc! \n");
     GCPROFILE_START_MASTER();
+    unsigned long long thisgctime = BAMBOO_GET_EXE_TIME();
 
     GC_PRINTF("Check if we can do gc or not\n");
     gccorestatus[BAMBOO_NUM_OF_CORE] = 0;
@@ -552,6 +555,8 @@ bool gc(struct garbagelist * stackptr) {
 
     //pregccheck();
     gc_master(stackptr);
+    GCtime = BAMBOO_GET_EXE_TIME() - thisgctime;
+    numGCs++;
   } else if(BAMBOO_NUM_OF_CORE < NUMCORES4GC) {
     GC_PRINTF("Core reporting for gc.\n");
     pregcprocessing();
index c59a36416ae07489f9b4ad4d6f039d0f11033bd1..8a637da73416933203d0fcc50fb213fe602cb3e4 100644 (file)
@@ -11,4 +11,7 @@ void * gctopva; // top va for shared memory without reserved sblocks
 void * gcbaseva; // base va for shared memory without reserved sblocks
 void * incoherentbaseva;
 
+unsigned long numGCs;
+unsigned long long GCtime;
+
 #endif // BAMBOO_MULTICORE_GC_H
index f02d36dc6d3b5e9d4538d696bbbe860666e4f9d0..71f50c7a2292f5506830bb5bca9ecb998c056fab 100644 (file)
@@ -338,6 +338,26 @@ long long CALL00(___System______currentTimeMillis____) {
 }
 #endif
 
+#ifdef D___System______numGCs____
+long long ___System______numGCs____(struct ___System______numGCs_____params * ___params___) {
+#ifdef MULTICORE_GC
+  return numGCs;
+#else
+  return 0;
+#endif
+}
+#endif
+
+#ifdef D___System______milliGcTime____
+long long ___System______milliGcTime____(struct ___System______milliGcTime_____params * ___params___) {
+#ifdef MULTICORE_GC
+  return GCtime/700000;
+#else
+  return 0;
+#endif
+}
+#endif
+
 #ifdef D___System______nanoTime____ 
 long long CALL00(___System______nanoTime____) {
   //TilePro64 is 700mHz