1.1 --- a/src/share/classes/com/sun/tools/javac/file/ZipFileIndex.java Tue Oct 13 15:26:30 2009 -0700 1.2 +++ b/src/share/classes/com/sun/tools/javac/file/ZipFileIndex.java Wed Oct 14 15:41:28 2009 -0700 1.3 @@ -30,6 +30,7 @@ 1.4 import java.io.FileNotFoundException; 1.5 import java.io.IOException; 1.6 import java.io.RandomAccessFile; 1.7 +import java.lang.ref.Reference; 1.8 import java.lang.ref.SoftReference; 1.9 import java.util.ArrayList; 1.10 import java.util.Arrays; 1.11 @@ -89,6 +90,7 @@ 1.12 1.13 // ZipFileIndex data entries 1.14 private File zipFile; 1.15 + private Reference<File> absFileRef; 1.16 private long zipFileLastModified = NOT_MODIFIED; 1.17 private RandomAccessFile zipRandomFile; 1.18 private Entry[] entries; 1.19 @@ -1215,6 +1217,15 @@ 1.20 return zipFile; 1.21 } 1.22 1.23 + File getAbsoluteFile() { 1.24 + File absFile = (absFileRef == null ? null : absFileRef.get()); 1.25 + if (absFile == null) { 1.26 + absFile = zipFile.getAbsoluteFile(); 1.27 + absFileRef = new SoftReference<File>(absFile); 1.28 + } 1.29 + return absFile; 1.30 + } 1.31 + 1.32 private RelativeDirectory getRelativeDirectory(String path) { 1.33 RelativeDirectory rd; 1.34 SoftReference<RelativeDirectory> ref = relativeDirectoryCache.get(path);