|
From: <cr...@us...> - 2010-10-02 09:48:16
|
Revision: 5757
http://jnode.svn.sourceforge.net/jnode/?rev=5757&view=rev
Author: crawley
Date: 2010-10-02 09:48:09 +0000 (Sat, 02 Oct 2010)
Log Message:
-----------
Move the lists of classes/packages that need to be optimized by the boot
image builder to config files.
Modified Paths:
--------------
trunk/all/build-x86.xml
trunk/all/build.xml
trunk/builder/src/builder/org/jnode/build/AbstractBootImageBuilder.java
trunk/builder/src/builder/org/jnode/build/x86/BootImageBuilder.java
Added Paths:
-----------
trunk/all/conf/core-classes.txt
trunk/all/conf/x86-classes.txt
Modified: trunk/all/build-x86.xml
===================================================================
--- trunk/all/build-x86.xml 2010-07-11 14:27:38 UTC (rev 5756)
+++ trunk/all/build-x86.xml 2010-10-02 09:48:09 UTC (rev 5757)
@@ -182,8 +182,10 @@
listfile="${build.bootimage.dir}/bootimage.lst"
debugfile="${build.bootimage.dir}/bootimage.debug"
kernelfile="${build.native.dir}/output/jnode.o"
- pluginList="${system-plugin-list}"
+ pluginList="${system-plugin-list}"
pluginDir="${plugins.dir}"
+ coreClassListFile="${jnode-core-class-list}"
+ archClassListFile="${jnode-x86-class-list}"
targetArch="x86"
memMgrPluginId="${jnode.memmgr.plugin.id}"
cpu="${cpu}"
Modified: trunk/all/build.xml
===================================================================
--- trunk/all/build.xml 2010-07-11 14:27:38 UTC (rev 5756)
+++ trunk/all/build.xml 2010-10-02 09:48:09 UTC (rev 5757)
@@ -102,6 +102,11 @@
<property name="jnode-x86.iso" value="${cdroms.dir}/jnode-x86.iso"/>
<property name="jnode-x86-lite.iso" value="${cdroms.dir}/jnode-x86-lite.iso"/>
<property name="jnode-x86_64-lite.iso" value="${cdroms.dir}/jnode-x86_64-lite.iso"/>
+
+ <!-- list of classes and packages that should to be compiled to native code
+ in the boot image. -->
+ <property name="jnode-core-class-list" value="${root.dir}/all/conf/core-classes.txt"/>
+ <property name="jnode-x86-class-list" value="${root.dir}/all/conf/x86-classes.txt"/>
<path id="cp">
<pathelement location="${classlib.jar}"/>
Added: trunk/all/conf/core-classes.txt
===================================================================
--- trunk/all/conf/core-classes.txt (rev 0)
+++ trunk/all/conf/core-classes.txt 2010-10-02 09:48:09 UTC (rev 5757)
@@ -0,0 +1,191 @@
+# The classes and packages listed in this file will be compiled to optimized native code by
+# the boot image builder. Entries can be a package name, a fully qualified class
+# name or a fully qualified classname with a trailing wildcard in the classname part.
+
+java.io.Data*
+java.io.String*
+java.io.ByteArray*
+java.io.CharArray*
+java.io.Print*
+java.io.Reader
+java.io.Input*
+java.io.Buffered*
+java.io.Writer
+java.io.Output*
+java.io.Filter*
+java.io.IOException
+java.io.ObjectStreamField
+java.io.ObjectStreamClass
+
+java.lang
+java.lang.ref
+//java.lang.reflect //<- produces inconsistent bootimage
+
+java.net.URL
+
+java.nio.Buffer
+java.nio.ByteBuffer*
+java.nio.DirectByteBuffer*
+java.nio.ByteOrder
+java.nio.Char*
+java.nio.charset.spi
+java.nio.charset
+
+java.security.ProtectionDomain
+java.security.AccessController
+java.security.AccessControlContext
+java.security.AccessControlException
+java.security.Permission
+java.security.PrivilegedAction
+java.security.PrivilegedActionException
+java.security.PrivilegedExceptionAction
+java.security.PermissionCollection
+java.security.CodeSource
+java.security.Policy
+java.security.AllPermission
+java.security.Permissions
+java.security.Security
+java.security.SecurityPermission
+java.security.BasicPermission
+
+java.util.Collection*
+java.util.Map*
+java.util.List*
+java.util.Set*
+java.util.Iterator*
+java.util.Array*
+java.util.Abstract*
+java.util.Hash*
+java.util.TreeMap*
+java.util.TreeSet*
+java.util.Linked*
+java.util.Vector*
+java.util.Locale*
+java.util.WeakHashMap*
+java.util.Properties*
+java.util.Dictionary*
+java.util.StringTokenizer*
+java.util.Property*
+java.util.Enum*
+
+java.util.jar
+java.util.zip
+
+gnu.classpath
+
+org.jnode.assembler
+org.jnode.boot
+org.jnode.bootlog
+org.jnode.naming
+org.jnode.permission
+org.jnode.plugin
+org.jnode.plugin.manager
+org.jnode.plugin.model
+org.jnode.security
+org.jnode.system.resource
+org.jnode.system.event
+org.jnode.util
+org.jnode.vm
+org.jnode.vm.bytecode
+org.jnode.vm.classmgr
+org.jnode.vm.compiler
+org.jnode.vm.facade
+org.jnode.vm.isolate
+org.jnode.vm.objects
+org.jnode.vm.scheduler
+
+org.jnode.vm.memmgr
+org.jnode.vm.memmgr.def
+
+//org.jnode.vm.memmgr.mmtk
+//org.jnode.vm.memmgr.mmtk.genrc
+//org.jnode.vm.memmgr.mmtk.nogc
+//org.jnode.vm.memmgr.mmtk.ms
+
+//todo review for boot image size reduction
+//sun.misc
+//sun.reflect <-- // this kills jnode while booting, maybe Reflection static{...}
+//sun.reflect.annotation
+//sun.reflect.generics
+//sun.reflect.generics.factory
+//sun.reflect.generics.parser
+//sun.reflect.generics.reflectiveObjects
+//sun.reflect.generics.repository
+//sun.reflect.generics.scope
+//sun.reflect.generics.tree
+//sun.reflect.generics.visitor
+//sun.reflect.misc
+sun.misc.VM
+sun.nio
+sun.nio.cs.US_ASCII
+sun.nio.cs.ISO_8859_1*
+sun.nio.cs.Surrogate*
+sun.nio.cs.StreamEncoder
+sun.nio.cs.SingleByteDecoder
+sun.nio.cs.SingleByteEncoder
+sun.nio.cs.FastCharsetProvider
+sun.nio.cs.StandardCharsets
+sun.nio.cs.HistoricallyNamedCharset
+sun.nio.cs.StreamDecoder
+sun.nio.cs.ThreadLocalCoders
+sun.nio.cs.Unicode*
+sun.nio.cs.UTF*
+
+// org.mmtk.plan
+// org.mmtk.policy
+// org.mmtk.utility
+// org.mmtk.utility.alloc
+// org.mmtk.utility.deque
+// org.mmtk.utility.gcspy
+// org.mmtk.utility.gcspy.drivers
+// org.mmtk.utility.heap
+// org.mmtk.utility.options
+// org.mmtk.utility.scan
+// org.mmtk.utility.statistics
+// org.mmtk.vm
+// org.mmtk.vm.gcspy
+//
+// java.awt
+// java.awt.event
+// java.awt.peer
+// java.awt.font
+// java.awt.geom
+//
+// gnu.javax.swing.text.html.parser
+// gnu.javax.swing.text.html.parser.models
+// gnu.javax.swing.text.html.parser.support
+// gnu.javax.swing.text.html.parser.support.low
+//
+// javax.swing
+// javax.swing.border
+// javax.swing.event
+// javax.swing.plaf
+// javax.swing.plaf.basic
+// javax.swing.plaf.metal
+// javax.swing.text
+// javax.swing.text.html
+// javax.swing.text.html.parser
+// javax.swing.text.rtf
+// javax.swing.table
+// javax.swing.tree
+// javax.swing.colorchooser
+// javax.swing.filechooser
+// javax.swing.undo
+//
+// org.jnode.awt
+// org.jnode.awt.swingpeers
+//
+// gnu.java.locale
+//
+// javax.net
+// javax.net.ssl
+//
+// javax.security
+// javax.security.auth
+// javax.security.auth.callback
+// javax.security.auth.login
+// javax.security.auth.spi
+// javax.security.cert
+// javax.security.sasl
+//
+// org.ietf.jgss
Added: trunk/all/conf/x86-classes.txt
===================================================================
--- trunk/all/conf/x86-classes.txt (rev 0)
+++ trunk/all/conf/x86-classes.txt 2010-10-02 09:48:09 UTC (rev 5757)
@@ -0,0 +1,10 @@
+# The classes and packages listed in this file will be compiled to optimized native code by
+# the boot image builder. Entries can be a package name, a fully qualified class
+# name or a fully qualified classname with a trailing wildcard in the classname part.
+#
+# This file supplements core-classes.txt with classes / packages that are specific
+# to the x86 architecture
+
+org.jnode.assembler.x86
+org.jnode.system.x86
+org.jnode.vm.x86
Modified: trunk/builder/src/builder/org/jnode/build/AbstractBootImageBuilder.java
===================================================================
--- trunk/builder/src/builder/org/jnode/build/AbstractBootImageBuilder.java 2010-07-11 14:27:38 UTC (rev 5756)
+++ trunk/builder/src/builder/org/jnode/build/AbstractBootImageBuilder.java 2010-10-02 09:48:09 UTC (rev 5757)
@@ -20,8 +20,10 @@
package org.jnode.build;
+import java.io.BufferedReader;
import java.io.File;
import java.io.FileOutputStream;
+import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.OutputStreamWriter;
@@ -36,6 +38,7 @@
import java.util.Comparator;
import java.util.HashSet;
import java.util.Iterator;
+import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.SortedMap;
@@ -83,7 +86,6 @@
import org.jnode.vm.classmgr.VmType;
import org.jnode.vm.compiler.NativeCodeCompiler;
import org.jnode.vm.facade.Vm;
-import org.jnode.vm.facade.VmArchitecture;
import org.jnode.vm.facade.VmUtils;
import org.jnode.vm.memmgr.HeapHelper;
import org.jnode.vm.memmgr.VmHeapManager;
@@ -119,7 +121,7 @@
private static final String zero16 = zero8 + zero8;
/**
- * Set of jbects that should not yet be emitted.
+ * Set of objects that should not yet be emitted.
*/
private final Set<Object> blockedObjects = new HashSet<Object>();
@@ -147,6 +149,8 @@
private File listFile;
+ private File coreClassListFile;
+
private int totalHighMethods;
private int totalHighMethodSize;
@@ -1372,204 +1376,63 @@
public void setListFile(File listFile) {
this.listFile = listFile;
}
+
+ /**
+ * Sets the core class list file.
+ *
+ * @param coreClassListFile The coreClassListFile to set
+ */
+ public void setCoreClassListFile(File coreClassListFile) {
+ this.coreClassListFile = coreClassListFile;
+ }
protected void setupCompileHighOptLevelPackages() {
- addCompileHighOptLevel("java.io.Data*");
- addCompileHighOptLevel("java.io.String*");
- addCompileHighOptLevel("java.io.ByteArray*");
- addCompileHighOptLevel("java.io.CharArray*");
- addCompileHighOptLevel("java.io.Print*");
- addCompileHighOptLevel("java.io.Reader");
- addCompileHighOptLevel("java.io.Input*");
- addCompileHighOptLevel("java.io.Buffered*");
- addCompileHighOptLevel("java.io.Writer");
- addCompileHighOptLevel("java.io.Output*");
- addCompileHighOptLevel("java.io.Filter*");
- addCompileHighOptLevel("java.io.IOException");
- addCompileHighOptLevel("java.io.ObjectStreamField");
- addCompileHighOptLevel("java.io.ObjectStreamClass");
-
- addCompileHighOptLevel("java.lang");
- addCompileHighOptLevel("java.lang.ref");
-// addCompileHighOptLevel("java.lang.reflect"); //<- produces inconsistent bootimage
-
- addCompileHighOptLevel("java.net.URL");
-
- addCompileHighOptLevel("java.nio.Buffer");
- addCompileHighOptLevel("java.nio.ByteBuffer*");
- addCompileHighOptLevel("java.nio.DirectByteBuffer*");
- addCompileHighOptLevel("java.nio.ByteOrder");
- addCompileHighOptLevel("java.nio.Char*");
- addCompileHighOptLevel("java.nio.charset.spi");
- addCompileHighOptLevel("java.nio.charset");
-
- addCompileHighOptLevel("java.security.ProtectionDomain");
- addCompileHighOptLevel("java.security.AccessController");
- addCompileHighOptLevel("java.security.AccessControlContext");
- addCompileHighOptLevel("java.security.AccessControlException");
- addCompileHighOptLevel("java.security.Permission");
- addCompileHighOptLevel("java.security.PrivilegedAction");
- addCompileHighOptLevel("java.security.PrivilegedActionException");
- addCompileHighOptLevel("java.security.PrivilegedExceptionAction");
- addCompileHighOptLevel("java.security.PermissionCollection");
- addCompileHighOptLevel("java.security.CodeSource");
- addCompileHighOptLevel("java.security.Policy");
- addCompileHighOptLevel("java.security.AllPermission");
- addCompileHighOptLevel("java.security.Permissions");
- addCompileHighOptLevel("java.security.Security");
- addCompileHighOptLevel("java.security.SecurityPermission");
- addCompileHighOptLevel("java.security.BasicPermission");
-
- addCompileHighOptLevel("java.util.Collection*");
- addCompileHighOptLevel("java.util.Map*");
- addCompileHighOptLevel("java.util.List*");
- addCompileHighOptLevel("java.util.Set*");
- addCompileHighOptLevel("java.util.Iterator*");
- addCompileHighOptLevel("java.util.Array*");
- addCompileHighOptLevel("java.util.Abstract*");
- addCompileHighOptLevel("java.util.Hash*");
- addCompileHighOptLevel("java.util.TreeMap*");
- addCompileHighOptLevel("java.util.TreeSet*");
- addCompileHighOptLevel("java.util.Linked*");
- addCompileHighOptLevel("java.util.Vector*");
- addCompileHighOptLevel("java.util.Locale*");
- addCompileHighOptLevel("java.util.WeakHashMap*");
- addCompileHighOptLevel("java.util.Properties*");
- addCompileHighOptLevel("java.util.Dictionary*");
- addCompileHighOptLevel("java.util.StringTokenizer*");
- addCompileHighOptLevel("java.util.Property*");
- addCompileHighOptLevel("java.util.Enum*");
-
- addCompileHighOptLevel("java.util.jar");
- addCompileHighOptLevel("java.util.zip");
-
- addCompileHighOptLevel("gnu.classpath");
-
- addCompileHighOptLevel("org.jnode.assembler");
- addCompileHighOptLevel("org.jnode.boot");
- addCompileHighOptLevel("org.jnode.bootlog");
- addCompileHighOptLevel("org.jnode.naming");
- addCompileHighOptLevel("org.jnode.permission");
- addCompileHighOptLevel("org.jnode.plugin");
- addCompileHighOptLevel("org.jnode.plugin.manager");
- addCompileHighOptLevel("org.jnode.plugin.model");
- addCompileHighOptLevel("org.jnode.security");
- addCompileHighOptLevel("org.jnode.system.resource");
- addCompileHighOptLevel("org.jnode.system.event");
- addCompileHighOptLevel("org.jnode.util");
- addCompileHighOptLevel("org.jnode.vm");
- addCompileHighOptLevel("org.jnode.vm.bytecode");
- addCompileHighOptLevel("org.jnode.vm.classmgr");
- addCompileHighOptLevel("org.jnode.vm.compiler");
- addCompileHighOptLevel("org.jnode.vm.facade");
- addCompileHighOptLevel("org.jnode.vm.isolate");
- addCompileHighOptLevel("org.jnode.vm.objects");
- addCompileHighOptLevel("org.jnode.vm.scheduler");
+ addCompileHighOptLevel(loadClassList(coreClassListFile));
for (NativeCodeCompiler compiler : getArchitecture().getCompilers()) {
for (String packageName : compiler.getCompilerPackages()) {
addCompileHighOptLevel(packageName);
}
}
-
- addCompileHighOptLevel("org.jnode.vm.memmgr");
- addCompileHighOptLevel("org.jnode.vm.memmgr.def");
-// addCompileHighOptLevel("org.jnode.vm.memmgr.mmtk");
-// addCompileHighOptLevel("org.jnode.vm.memmgr.mmtk.genrc");
-// addCompileHighOptLevel("org.jnode.vm.memmgr.mmtk.nogc");
-// addCompileHighOptLevel("org.jnode.vm.memmgr.mmtk.ms");
-
- //todo review for boot image size reduction
-// addCompileHighOptLevel("sun.misc");
-// addCompileHighOptLevel("sun.reflect"); <-- // this kills jnode while booting, maybe Reflection static{...}
-// addCompileHighOptLevel("sun.reflect.annotation");
-// addCompileHighOptLevel("sun.reflect.generics");
-// addCompileHighOptLevel("sun.reflect.generics.factory");
-// addCompileHighOptLevel("sun.reflect.generics.parser");
-// addCompileHighOptLevel("sun.reflect.generics.reflectiveObjects");
-// addCompileHighOptLevel("sun.reflect.generics.repository");
-// addCompileHighOptLevel("sun.reflect.generics.scope");
-// addCompileHighOptLevel("sun.reflect.generics.tree");
-// addCompileHighOptLevel("sun.reflect.generics.visitor");
-// addCompileHighOptLevel("sun.reflect.misc");
- addCompileHighOptLevel("sun.misc.VM");
- addCompileHighOptLevel("sun.nio");
- addCompileHighOptLevel("sun.nio.cs.US_ASCII");
- addCompileHighOptLevel("sun.nio.cs.ISO_8859_1*");
- addCompileHighOptLevel("sun.nio.cs.Surrogate*");
- addCompileHighOptLevel("sun.nio.cs.StreamEncoder");
- addCompileHighOptLevel("sun.nio.cs.SingleByteDecoder");
- addCompileHighOptLevel("sun.nio.cs.SingleByteEncoder");
- addCompileHighOptLevel("sun.nio.cs.FastCharsetProvider");
- addCompileHighOptLevel("sun.nio.cs.StandardCharsets");
- addCompileHighOptLevel("sun.nio.cs.HistoricallyNamedCharset");
- addCompileHighOptLevel("sun.nio.cs.StreamDecoder");
- addCompileHighOptLevel("sun.nio.cs.ThreadLocalCoders");
- addCompileHighOptLevel("sun.nio.cs.Unicode*");
- addCompileHighOptLevel("sun.nio.cs.UTF*");
-
- if (false) {
- addCompileHighOptLevel("org.mmtk.plan");
- addCompileHighOptLevel("org.mmtk.policy");
- addCompileHighOptLevel("org.mmtk.utility");
- addCompileHighOptLevel("org.mmtk.utility.alloc");
- addCompileHighOptLevel("org.mmtk.utility.deque");
- addCompileHighOptLevel("org.mmtk.utility.gcspy");
- addCompileHighOptLevel("org.mmtk.utility.gcspy.drivers");
- addCompileHighOptLevel("org.mmtk.utility.heap");
- addCompileHighOptLevel("org.mmtk.utility.options");
- addCompileHighOptLevel("org.mmtk.utility.scan");
- addCompileHighOptLevel("org.mmtk.utility.statistics");
- addCompileHighOptLevel("org.mmtk.vm");
- addCompileHighOptLevel("org.mmtk.vm.gcspy");
-
- addCompileHighOptLevel("java.awt");
- addCompileHighOptLevel("java.awt.event");
- addCompileHighOptLevel("java.awt.peer");
- addCompileHighOptLevel("java.awt.font");
- addCompileHighOptLevel("java.awt.geom");
-
- addCompileHighOptLevel("gnu.javax.swing.text.html.parser");
- addCompileHighOptLevel("gnu.javax.swing.text.html.parser.models");
- addCompileHighOptLevel("gnu.javax.swing.text.html.parser.support");
- addCompileHighOptLevel("gnu.javax.swing.text.html.parser.support.low");
-
- addCompileHighOptLevel("javax.swing");
- addCompileHighOptLevel("javax.swing.border");
- addCompileHighOptLevel("javax.swing.event");
- addCompileHighOptLevel("javax.swing.plaf");
- addCompileHighOptLevel("javax.swing.plaf.basic");
- addCompileHighOptLevel("javax.swing.plaf.metal");
- addCompileHighOptLevel("javax.swing.text");
- addCompileHighOptLevel("javax.swing.text.html");
- addCompileHighOptLevel("javax.swing.text.html.parser");
- addCompileHighOptLevel("javax.swing.text.rtf");
- addCompileHighOptLevel("javax.swing.table");
- addCompileHighOptLevel("javax.swing.tree");
- addCompileHighOptLevel("javax.swing.colorchooser");
- addCompileHighOptLevel("javax.swing.filechooser");
- addCompileHighOptLevel("javax.swing.undo");
-
- addCompileHighOptLevel("org.jnode.awt");
- addCompileHighOptLevel("org.jnode.awt.swingpeers");
-
- addCompileHighOptLevel("gnu.java.locale");
-
- addCompileHighOptLevel("javax.net");
- addCompileHighOptLevel("javax.net.ssl");
-
- addCompileHighOptLevel("javax.security");
- addCompileHighOptLevel("javax.security.auth");
- addCompileHighOptLevel("javax.security.auth.callback");
- addCompileHighOptLevel("javax.security.auth.login");
- addCompileHighOptLevel("javax.security.auth.spi");
- addCompileHighOptLevel("javax.security.cert");
- addCompileHighOptLevel("javax.security.sasl");
-
- addCompileHighOptLevel("org.ietf.jgss");
-
- }
}
+
+ protected void addCompileHighOptLevel(List<String> classNames) {
+ for (String className : classNames) {
+ addCompileHighOptLevel(className);
+ }
+ }
+ protected List<String> loadClassList(File file) {
+ ArrayList<String> classNames = new ArrayList<String>();
+ FileReader fr;
+ try {
+ fr = new FileReader(file);
+ } catch (IOException ex) {
+ throw new BuildException("Cannot open '" + file + "'", ex);
+ }
+ try {
+ BufferedReader br = new BufferedReader(fr);
+ String line;
+ while ((line = br.readLine()) != null) {
+ line = line.trim();
+ if (line.isEmpty() || line.startsWith("#") || line.startsWith("/")) {
+ continue;
+ }
+ classNames.add(line);
+ }
+ } catch (IOException ex) {
+ throw new BuildException("Error reading '" + file + "'", ex);
+ } finally {
+ try {
+ fr.close();
+ } catch (IOException ex) {
+ // ignore
+ }
+ }
+ return classNames;
+ }
+
+
+
/**
* Create a set of the names of those classes that can be safely
* instantiated during the boot process (and written as instance to the boot
Modified: trunk/builder/src/builder/org/jnode/build/x86/BootImageBuilder.java
===================================================================
--- trunk/builder/src/builder/org/jnode/build/x86/BootImageBuilder.java 2010-07-11 14:27:38 UTC (rev 5756)
+++ trunk/builder/src/builder/org/jnode/build/x86/BootImageBuilder.java 2010-10-02 09:48:09 UTC (rev 5757)
@@ -20,6 +20,7 @@
package org.jnode.build.x86;
+import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.HashMap;
@@ -83,6 +84,8 @@
public static final int INITIAL_OBJREFS_CAPACITY = 750000;
public static final int INITIAL_SIZE = 64 * 1024 * 1024;
+
+ private File archClassListFile;
private VmX86Processor processor;
@@ -690,13 +693,13 @@
}
/**
+ * Include x86 class files.
+ *
* @see org.jnode.build.AbstractBootImageBuilder#setupCompileHighOptLevelPackages()
*/
protected void setupCompileHighOptLevelPackages() {
super.setupCompileHighOptLevelPackages();
- addCompileHighOptLevel("org.jnode.assembler.x86");
- addCompileHighOptLevel("org.jnode.system.x86");
- addCompileHighOptLevel("org.jnode.vm.x86");
+ addCompileHighOptLevel(loadClassList(archClassListFile));
}
/**
@@ -764,4 +767,22 @@
throw new BuildException(e);
}
}
+
+ /**
+ * Gets the architecture specific class list file.
+ *
+ * @return The archClassListFile to set
+ */
+ public File getArchClassListFile() {
+ return archClassListFile;
+ }
+
+ /**
+ * Sets the architecture specific class list file.
+ *
+ * @param archClassListFile The archClassListFile to set
+ */
+ public void setArchClassListFile(File archClassListFile) {
+ this.archClassListFile = archClassListFile;
+ }
}
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|