[kaffe] CVS kaffe (robilad): fixed ecj memory usage when building classpath
Kaffe CVS
cvs-commits at kaffe.org
Fri Feb 15 15:36:24 PST 2008
PatchSet 7755
Date: 2008/02/15 23:34:42
Author: robilad
Branch: HEAD
Tag: (none)
Log:
fixed ecj memory usage when building classpath
2008-02-15 Dalibor Topic <robilad at kaffe.org>
* libraries/clib/zip/ZipFile.c (java_util_zip_ZipFile_getZipEntry0)
(java_util_zip_ZipFile_getZipData0)
(java_util_zip_ZipFile_getZipEntries0),
kaffe/kaffevm/findInJar.c (findClassInJar)
(getManifestMainAttribute),
* kaffe/kaffeh/support.c (kaffeh_findClass): Close opened zip entries
after use.
Reported by: Ito Kazumitsu <kaz at maczuka.gcd.org>
Members:
ChangeLog:1.5255->1.5256
kaffe/kaffeh/support.c:1.61->1.62
kaffe/kaffevm/findInJar.c:1.80->1.81
libraries/clib/zip/ZipFile.c:1.5->1.6
Index: kaffe/ChangeLog
diff -u kaffe/ChangeLog:1.5255 kaffe/ChangeLog:1.5256
--- kaffe/ChangeLog:1.5255 Fri Feb 15 20:04:05 2008
+++ kaffe/ChangeLog Fri Feb 15 23:34:42 2008
@@ -1,5 +1,17 @@
2008-02-15 Dalibor Topic <robilad at kaffe.org>
+ * libraries/clib/zip/ZipFile.c (java_util_zip_ZipFile_getZipEntry0)
+ (java_util_zip_ZipFile_getZipData0)
+ (java_util_zip_ZipFile_getZipEntries0),
+ kaffe/kaffevm/findInJar.c (findClassInJar)
+ (getManifestMainAttribute),
+ * kaffe/kaffeh/support.c (kaffeh_findClass): Close opened zip entries
+ after use.
+
+ Reported by: Ito Kazumitsu <kaz at maczuka.gcd.org>
+
+2008-02-15 Dalibor Topic <robilad at kaffe.org>
+
* kaffe/kaffevm/jar.h, kaffe/kaffevm/jar.c (lookupJarFile): Removed.
* libraries/clib/zip/ZipFile.c (getZipEntry)
Index: kaffe/kaffe/kaffeh/support.c
diff -u kaffe/kaffe/kaffeh/support.c:1.61 kaffe/kaffe/kaffeh/support.c:1.62
--- kaffe/kaffe/kaffeh/support.c:1.61 Fri Feb 15 20:04:07 2008
+++ kaffe/kaffe/kaffeh/support.c Fri Feb 15 23:34:43 2008
@@ -868,7 +868,8 @@
unsigned char *buf;
classFile hand;
Hjava_lang_Class tmpClass;
-
+ zzip_size_t length;
+
/* JAR file */
jfile = zzip_opendir(superName);
if (jfile == 0) {
@@ -884,7 +885,9 @@
continue;
}
+ length = getUncompressedSize(jentry);
buf = getDataJarFile(jentry);
+ zzip_file_close(jentry);
if (buf == NULL) {
zzip_closedir(jfile);
continue;
@@ -893,7 +896,7 @@
classFileInit(&hand,
buf,
buf,
- getUncompressedSize(jentry),
+ length,
CP_ZIPFILE);
objectDepth++;
Index: kaffe/kaffe/kaffevm/findInJar.c
diff -u kaffe/kaffe/kaffevm/findInJar.c:1.80 kaffe/kaffe/kaffevm/findInJar.c:1.81
--- kaffe/kaffe/kaffevm/findInJar.c:1.80 Fri Feb 15 20:04:07 2008
+++ kaffe/kaffe/kaffevm/findInJar.c Fri Feb 15 23:34:43 2008
@@ -215,6 +215,7 @@
{
ZZIP_FILE * entry;
unsigned char* data;
+ zzip_size_t length;
DBG(CLASSLOOKUP, dprintf("Opening JAR file %s for %s\n", ptr->path, cname); );
if (ptr->u.jar == 0) {
@@ -232,11 +233,13 @@
if (entry == 0) {
break;
}
- if (getUncompressedSize(entry) == 0) {
+ length = getUncompressedSize(entry);
+ if (0 == length) {
hand->type = CP_NULLCLASS;
goto done;
}
data = getDataJarFile(entry);
+ zzip_file_close(entry);
if (data == 0) {
postExceptionMessage(einfo,
JAVA_IO(IOException),
@@ -248,7 +251,7 @@
classFileInit(hand,
data,
data,
- getUncompressedSize(entry),
+ length,
CP_ZIPFILE);
if (Kaffe_JavaVMArgs.enableVerboseClassloading) {
@@ -633,7 +636,7 @@
char* mfdata;
char* attrEntry;
char* ret;
- zzip_ssize_t i;
+ zzip_ssize_t i, manifest_length;
int posAttrValue;
/* Locate manifest entry in jar */
@@ -642,13 +645,17 @@
return (NULL);
/* Read it */
+ manifest_length = getUncompressedSize(mf);
mfdata = (char*)getDataJarFile(mf);
- if (mfdata == 0)
- return (NULL);
+ zzip_file_close(mf);
+ if (mfdata == 0) {
+ return (NULL);
+ }
/* Look for the desired entry */
attrEntry = mfdata;
- for (i = 0; i < getUncompressedSize(mf); ++i) {
+
+ for (i = 0; i < manifest_length; ++i) {
/* Sun's jar, even under Linux, insists on terminating
newlines with newline *and* carriage return */
if (mfdata[i] == '\n' || mfdata[i] == '\r') {
@@ -664,7 +671,7 @@
++attrEntry;
/* Now look for end of string. */
- while (i < getUncompressedSize(mf) && attrEntry[i] != 0xd)
+ while (i < manifest_length && attrEntry[i] != 0xd)
++i;
attrEntry[i] = '\0';
Index: kaffe/libraries/clib/zip/ZipFile.c
diff -u kaffe/libraries/clib/zip/ZipFile.c:1.5 kaffe/libraries/clib/zip/ZipFile.c:1.6
--- kaffe/libraries/clib/zip/ZipFile.c:1.5 Fri Feb 15 20:04:08 2008
+++ kaffe/libraries/clib/zip/ZipFile.c Fri Feb 15 23:34:44 2008
@@ -97,9 +97,10 @@
Hjava_util_zip_ZipEntry* zentry = NULL;
entry = getZipEntry(zip, zname);
-
- if (entry != NULL)
+ if (entry != NULL) {
zentry = makeZipEntry(entry, zname);
+ zzip_file_close(entry);
+ }
return (zentry);
}
@@ -121,7 +122,7 @@
ZZIP_FILE *entry = getZipEntry( zip, unhand(zentry)->name);
if (entry != NULL)
buf = getDataJarFile(entry);
-
+ zzip_file_close(entry);
if (buf == 0) {
return (NULL);
}
@@ -159,6 +160,7 @@
if (NULL != zip_entry) {
entry = zzip_file_open(zfile, zip_entry->d_name, 0);
elems[i] = (HObject*)makeZipEntry(entry, stringC2Java(zip_entry->d_name));
+ zzip_file_close(entry);
i++;
}
}while (zip_entry != NULL);
More information about the kaffe
mailing list