[kaffe] CVS kaffe (dalibor): Small fix for JBoss crash and speed up for class loading

Kaffe CVS cvs-commits at kaffe.org
Tue Mar 16 15:33:04 PST 2004


PatchSet 4528 
Date: 2004/03/16 23:30:08
Author: dalibor
Branch: HEAD
Tag: (none) 
Log:
Small fix for JBoss crash and speed up for class loading

2004-03-16  Dalibor Topic <robilad at kaffe.org>

        * libraries/javalib/java/util/zip/ZipFile.java
        (close) Don't set zip to null when closing, otherwise
        getEntry on a closed zip file will crash.
        (closed) New field.
        (checkIfClosed) New method.
        (entries, getEntry, size): Use checkIfClosed.

        * libraries/javalib/kaffe/lang/PrimordialClassLoader.java
        (bootjars): New field.
        (findResources) Use bootjars to cache bootstrap jars.

Members: 
	ChangeLog:1.2106->1.2107 
	libraries/javalib/java/util/zip/ZipFile.java:1.12->1.13 
	libraries/javalib/kaffe/lang/PrimordialClassLoader.java:1.3->1.4 

Index: kaffe/ChangeLog
diff -u kaffe/ChangeLog:1.2106 kaffe/ChangeLog:1.2107
--- kaffe/ChangeLog:1.2106	Tue Mar 16 17:44:34 2004
+++ kaffe/ChangeLog	Tue Mar 16 23:30:08 2004
@@ -1,5 +1,18 @@
 2004-03-16  Dalibor Topic <robilad at kaffe.org>
 
+	* libraries/javalib/java/util/zip/ZipFile.java
+	(close) Don't set zip to null when closing, otherwise
+	getEntry on a closed zip file will crash.
+	(closed) New field.
+	(checkIfClosed) New method.
+	(entries, getEntry, size): Use checkIfClosed.
+
+	* libraries/javalib/kaffe/lang/PrimordialClassLoader.java
+	(bootjars): New field.
+	(findResources) Use bootjars to cache bootstrap jars.
+
+2004-03-16  Dalibor Topic <robilad at kaffe.org>
+
 	Resynced with GNU Classpath.
 
 	2004-03-12  Mark Wielaard  <mark at klomp.org>
Index: kaffe/libraries/javalib/java/util/zip/ZipFile.java
diff -u kaffe/libraries/javalib/java/util/zip/ZipFile.java:1.12 kaffe/libraries/javalib/java/util/zip/ZipFile.java:1.13
--- kaffe/libraries/javalib/java/util/zip/ZipFile.java:1.12	Mon Oct 27 02:12:59 2003
+++ kaffe/libraries/javalib/java/util/zip/ZipFile.java	Tue Mar 16 23:30:09 2004
@@ -33,9 +33,12 @@
    */
   public static final int OPEN_DELETE = 0x4;
 
+  // Name of this zip file.
+  private final String name;
 
-private String name;
-private Ptr zip;
+  private Ptr zip;
+
+  private boolean closed;
 
 public ZipFile(String fname) throws IOException
 {
@@ -57,23 +60,32 @@
 	this(f);
 }
 
+private void checkIfClosed()
+{
+  if (closed) {
+    throw new IllegalStateException("Zip file already closed: " + getName());
+  }
+}
+
 public void close() throws IOException
 {
-	if (zip != null) {
+	if (!closed) {
 		closeZipFile0(zip);
-		zip = null;
+		closed = true;
 	}
 }
 
 public Enumeration entries()
 {
-	Vector all = getZipEntries0(zip);
-	return (all.elements());
+  checkIfClosed();
+  Vector all = getZipEntries0(zip);
+  return (all.elements());
 }
 
 public ZipEntry getEntry(String zname)
 {
-	return (getZipEntry0(zip, zname));
+  checkIfClosed();
+  return (getZipEntry0(zip, zname));
 }
 
 public InputStream getInputStream(ZipEntry ze) throws IOException
@@ -101,7 +113,8 @@
 
 public int size()
 {
-	return getZipFileSize0(zip);
+  checkIfClosed();
+  return getZipFileSize0(zip);
 }
 
 protected void finalize() throws IOException
Index: kaffe/libraries/javalib/kaffe/lang/PrimordialClassLoader.java
diff -u kaffe/libraries/javalib/kaffe/lang/PrimordialClassLoader.java:1.3 kaffe/libraries/javalib/kaffe/lang/PrimordialClassLoader.java:1.4
--- kaffe/libraries/javalib/kaffe/lang/PrimordialClassLoader.java:1.3	Tue May 27 21:28:04 2003
+++ kaffe/libraries/javalib/kaffe/lang/PrimordialClassLoader.java	Tue Mar 16 23:30:09 2004
@@ -17,6 +17,8 @@
 import java.net.MalformedURLException;
 import java.net.URL;
 import java.util.Enumeration;
+import java.util.Hashtable;
+import java.util.Map;
 import java.util.StringTokenizer;
 import java.util.Vector;
 import java.util.zip.ZipEntry;
@@ -36,6 +38,8 @@
 private static final Package[] NO_PACKAGES = new Package[0];
 private static final ProtectionDomain DEFAULT_PROTECTION_DOMAIN = new ProtectionDomain(null, null);
 
+private static final Map bootjars = new Hashtable();
+
 private PrimordialClassLoader() {
 	super(null);
 }
@@ -136,23 +140,19 @@
 			continue;
 		}
 		if (file.isFile()) {
-			ZipFile zip = null;
+			ZipFile zip = (ZipFile) bootjars.get(file.getName());
 			try {
-				zip = new ZipFile(file);
-				ZipEntry entry = zip.getEntry(name);
-				if (entry != null && !entry.isDirectory()) {
-				    URL ju = new URL("jar:file:"
-					+ file.getCanonicalPath().replace(File.separatorChar, '/') + "!/" + entry.getName());
-				    v.addElement(ju);
-				}
+			  if (zip == null) {
+			    zip = new ZipFile(file);
+			    bootjars.put(file.getName(), zip);
+			  }
+			  ZipEntry entry = zip.getEntry(name);
+			  if (entry != null && !entry.isDirectory()) {
+			    URL ju = new URL("jar:file:"
+					     + file.getCanonicalPath().replace(File.separatorChar, '/') + "!/" + entry.getName());
+			    v.addElement(ju);
+			  }
 			} catch (IOException e) {
-			} finally {
-				if (zip != null) {
-					try {
-						zip.close();
-					} catch (IOException e) {
-					}
-				}
 			}
 		}
 	}




More information about the kaffe mailing list