You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@harmony.apache.org by zh...@apache.org on 2009/07/06 11:24:13 UTC
svn commit: r791419 - in /harmony/enhanced:
classlib/trunk/modules/pack200/src/main/java/org/apache/harmony/pack200/
jdktools/trunk/modules/jretools/src/main/java/org/apache/harmony/jretools/pack200/
Author: zhoukevin
Date: Mon Jul 6 09:24:11 2009
New Revision: 791419
URL: http://svn.apache.org/viewvc?rev=791419&view=rev
Log:
Implement -H cmd line option for pack200
Modified:
harmony/enhanced/classlib/trunk/modules/pack200/src/main/java/org/apache/harmony/pack200/Archive.java
harmony/enhanced/classlib/trunk/modules/pack200/src/main/java/org/apache/harmony/pack200/FileBands.java
harmony/enhanced/classlib/trunk/modules/pack200/src/main/java/org/apache/harmony/pack200/PackingOptions.java
harmony/enhanced/classlib/trunk/modules/pack200/src/main/java/org/apache/harmony/pack200/Segment.java
harmony/enhanced/jdktools/trunk/modules/jretools/src/main/java/org/apache/harmony/jretools/pack200/Main.java
Modified: harmony/enhanced/classlib/trunk/modules/pack200/src/main/java/org/apache/harmony/pack200/Archive.java
URL: http://svn.apache.org/viewvc/harmony/enhanced/classlib/trunk/modules/pack200/src/main/java/org/apache/harmony/pack200/Archive.java?rev=791419&r1=791418&r2=791419&view=diff
==============================================================================
--- harmony/enhanced/classlib/trunk/modules/pack200/src/main/java/org/apache/harmony/pack200/Archive.java (original)
+++ harmony/enhanced/classlib/trunk/modules/pack200/src/main/java/org/apache/harmony/pack200/Archive.java Mon Jul 6 09:24:11 2009
@@ -274,7 +274,7 @@
javaClasses.add(classParser);
bytes = new byte[0];
}
- files.add(new PackingFile(name, bytes, jarEntry.getTime()));
+ files.add(new PackingFile(name, bytes, jarEntry));
return true;
}
@@ -354,11 +354,20 @@
private final String name;
private byte[] contents;
private final long modtime;
+ private final boolean deflateHint;
public PackingFile(String name, byte[] contents, long modtime) {
this.name = name;
this.contents = contents;
this.modtime = modtime;
+ deflateHint = false;
+ }
+
+ public PackingFile(String name, byte[] contents, JarEntry jarEntry) {
+ this.name = name;
+ this.contents = contents;
+ modtime = jarEntry.getTime();
+ deflateHint = (jarEntry.getMethod() == JarEntry.DEFLATED);
}
public byte[] getContents() {
@@ -380,6 +389,10 @@
public void setContents(byte[] contents) {
this.contents = contents;
}
+
+ public boolean isDefalteHint() {
+ return deflateHint;
+ }
}
}
Modified: harmony/enhanced/classlib/trunk/modules/pack200/src/main/java/org/apache/harmony/pack200/FileBands.java
URL: http://svn.apache.org/viewvc/harmony/enhanced/classlib/trunk/modules/pack200/src/main/java/org/apache/harmony/pack200/FileBands.java?rev=791419&r1=791418&r2=791419&view=diff
==============================================================================
--- harmony/enhanced/classlib/trunk/modules/pack200/src/main/java/org/apache/harmony/pack200/FileBands.java (original)
+++ harmony/enhanced/classlib/trunk/modules/pack200/src/main/java/org/apache/harmony/pack200/FileBands.java Mon Jul 6 09:24:11 2009
@@ -67,8 +67,8 @@
boolean isLatest = !PackingOptions.KEEP.equals(options
.getModificationTime());
for (int i = 0; i < size; i++) {
- PackingFile file = (PackingFile) fileList.get(i);
- String name = file.getName();
+ PackingFile packingFile = (PackingFile) fileList.get(i);
+ String name = packingFile.getName();
if (name.endsWith(".class") && !options.isPassFile(name)) {
file_options[i] |= (1 << 1);
if (classNames.contains(name.substring(0, name.length() - 6))) {
@@ -79,18 +79,22 @@
} else {
fileName[i] = cpBands.getCPUtf8(name);
}
- byte[] bytes = file.getContents();
+ // set deflate_hint for file element
+ if (options.isKeepDeflateHint() && packingFile.isDefalteHint()) {
+ file_options[i] |= 0x1;
+ }
+ byte[] bytes = packingFile.getContents();
file_size[i] = bytes.length;
totalSize += file_size[i];
// update modification time
- modtime = (file.getModtime() + TimeZone.getDefault().getRawOffset()) / 1000L;
+ modtime = (packingFile.getModtime() + TimeZone.getDefault().getRawOffset()) / 1000L;
file_modtime[i] = (int) (modtime - archiveModtime);
if (isLatest && latestModtime < file_modtime[i]) {
latestModtime = file_modtime[i];
}
- file_bits[i] = file.getContents();
+ file_bits[i] = packingFile.getContents();
}
if (isLatest) {
Modified: harmony/enhanced/classlib/trunk/modules/pack200/src/main/java/org/apache/harmony/pack200/PackingOptions.java
URL: http://svn.apache.org/viewvc/harmony/enhanced/classlib/trunk/modules/pack200/src/main/java/org/apache/harmony/pack200/PackingOptions.java?rev=791419&r1=791418&r2=791419&view=diff
==============================================================================
--- harmony/enhanced/classlib/trunk/modules/pack200/src/main/java/org/apache/harmony/pack200/PackingOptions.java (original)
+++ harmony/enhanced/classlib/trunk/modules/pack200/src/main/java/org/apache/harmony/pack200/PackingOptions.java Mon Jul 6 09:24:11 2009
@@ -123,6 +123,10 @@
return deflateHint;
}
+ public boolean isKeepDeflateHint() {
+ return KEEP.equals(deflateHint);
+ }
+
public void setDeflateHint(String deflateHint) {
this.deflateHint = deflateHint;
}
Modified: harmony/enhanced/classlib/trunk/modules/pack200/src/main/java/org/apache/harmony/pack200/Segment.java
URL: http://svn.apache.org/viewvc/harmony/enhanced/classlib/trunk/modules/pack200/src/main/java/org/apache/harmony/pack200/Segment.java?rev=791419&r1=791418&r2=791419&view=diff
==============================================================================
--- harmony/enhanced/classlib/trunk/modules/pack200/src/main/java/org/apache/harmony/pack200/Segment.java (original)
+++ harmony/enhanced/classlib/trunk/modules/pack200/src/main/java/org/apache/harmony/pack200/Segment.java Mon Jul 6 09:24:11 2009
@@ -85,6 +85,10 @@
segmentHeader = new SegmentHeader();
segmentHeader.setFile_count(segmentUnit.fileListSize());
segmentHeader.setHave_all_code_flags(!stripDebug);
+ if (!options.isKeepDeflateHint()) {
+ segmentHeader.setDeflate_hint("true".equals(options
+ .getDeflateHint()));
+ }
PackingUtils.log("Setup constant pool bands for the segment");
cpBands = new CpBands(this, effort);
Modified: harmony/enhanced/jdktools/trunk/modules/jretools/src/main/java/org/apache/harmony/jretools/pack200/Main.java
URL: http://svn.apache.org/viewvc/harmony/enhanced/jdktools/trunk/modules/jretools/src/main/java/org/apache/harmony/jretools/pack200/Main.java?rev=791419&r1=791418&r2=791419&view=diff
==============================================================================
--- harmony/enhanced/jdktools/trunk/modules/jretools/src/main/java/org/apache/harmony/jretools/pack200/Main.java (original)
+++ harmony/enhanced/jdktools/trunk/modules/jretools/src/main/java/org/apache/harmony/jretools/pack200/Main.java Mon Jul 6 09:24:11 2009
@@ -356,9 +356,9 @@
inputStream, jarOutputStream);
unpacker.setVerbose(options.isVerbose());
unpacker.setQuiet(options.isQuiet());
- String deflateHint = options.getDeflateHint();
- if(!"keep".equals(deflateHint)) {
- unpacker.setDeflateHint("true".equals(deflateHint));
+ // set deflate_hint option
+ if (!options.isKeepDeflateHint()) {
+ unpacker.setDeflateHint("true".equals(options.getDeflateHint()));
}
//TODO: log file config should be handled
unpacker.unpack();