Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openanolis
dragonwell8_jdk
提交
601240ad
D
dragonwell8_jdk
项目概览
openanolis
/
dragonwell8_jdk
通知
3
Star
2
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
D
dragonwell8_jdk
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
601240ad
编写于
7月 08, 2011
作者:
K
ksrini
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
7060849: Eliminate pack200 build warnings
Reviewed-by: ksrini, jjg Contributed-by: alexandre.boulgakov@oracle.com
上级
87309953
变更
21
隐藏空白更改
内联
并排
Showing
21 changed file
with
169 addition
and
196 deletion
+169
-196
make/com/sun/java/pack/Makefile
make/com/sun/java/pack/Makefile
+2
-0
make/common/shared/Defs-java.gmk
make/common/shared/Defs-java.gmk
+7
-4
src/share/classes/com/sun/java/util/jar/pack/Attribute.java
src/share/classes/com/sun/java/util/jar/pack/Attribute.java
+7
-7
src/share/classes/com/sun/java/util/jar/pack/BandStructure.java
...are/classes/com/sun/java/util/jar/pack/BandStructure.java
+3
-3
src/share/classes/com/sun/java/util/jar/pack/ClassReader.java
...share/classes/com/sun/java/util/jar/pack/ClassReader.java
+7
-5
src/share/classes/com/sun/java/util/jar/pack/ClassWriter.java
...share/classes/com/sun/java/util/jar/pack/ClassWriter.java
+3
-5
src/share/classes/com/sun/java/util/jar/pack/Code.java
src/share/classes/com/sun/java/util/jar/pack/Code.java
+2
-2
src/share/classes/com/sun/java/util/jar/pack/Coding.java
src/share/classes/com/sun/java/util/jar/pack/Coding.java
+3
-4
src/share/classes/com/sun/java/util/jar/pack/ConstantPool.java
...hare/classes/com/sun/java/util/jar/pack/ConstantPool.java
+15
-19
src/share/classes/com/sun/java/util/jar/pack/Constants.java
src/share/classes/com/sun/java/util/jar/pack/Constants.java
+6
-6
src/share/classes/com/sun/java/util/jar/pack/Fixups.java
src/share/classes/com/sun/java/util/jar/pack/Fixups.java
+16
-25
src/share/classes/com/sun/java/util/jar/pack/Instruction.java
...share/classes/com/sun/java/util/jar/pack/Instruction.java
+3
-1
src/share/classes/com/sun/java/util/jar/pack/NativeUnpack.java
...hare/classes/com/sun/java/util/jar/pack/NativeUnpack.java
+1
-1
src/share/classes/com/sun/java/util/jar/pack/Package.java
src/share/classes/com/sun/java/util/jar/pack/Package.java
+23
-35
src/share/classes/com/sun/java/util/jar/pack/PackageReader.java
...are/classes/com/sun/java/util/jar/pack/PackageReader.java
+14
-15
src/share/classes/com/sun/java/util/jar/pack/PackageWriter.java
...are/classes/com/sun/java/util/jar/pack/PackageWriter.java
+18
-20
src/share/classes/com/sun/java/util/jar/pack/PackerImpl.java
src/share/classes/com/sun/java/util/jar/pack/PackerImpl.java
+4
-7
src/share/classes/com/sun/java/util/jar/pack/PropMap.java
src/share/classes/com/sun/java/util/jar/pack/PropMap.java
+30
-31
src/share/classes/com/sun/java/util/jar/pack/TLGlobals.java
src/share/classes/com/sun/java/util/jar/pack/TLGlobals.java
+2
-2
src/share/classes/com/sun/java/util/jar/pack/UnpackerImpl.java
...hare/classes/com/sun/java/util/jar/pack/UnpackerImpl.java
+1
-2
src/share/classes/com/sun/java/util/jar/pack/Utils.java
src/share/classes/com/sun/java/util/jar/pack/Utils.java
+2
-2
未找到文件。
make/com/sun/java/pack/Makefile
浏览文件 @
601240ad
...
...
@@ -32,6 +32,8 @@ PACKAGE = com.sun.java.util.jar.pack
LIBRARY
=
unpack
PRODUCT
=
sun
PGRM
=
unpack200
JAVAC_MAX_WARNINGS
=
true
JAVAC_WARNINGS_FATAL
=
true
include
$(BUILDDIR)/common/Defs.gmk
CPLUSPLUSLIBRARY
=
true
...
...
make/common/shared/Defs-java.gmk
浏览文件 @
601240ad
...
...
@@ -116,12 +116,17 @@ ifeq ($(DEBUG_CLASSFILES),true)
JAVACFLAGS += -g
endif
ifeq ($(JAVAC_MAX_WARNINGS), true)
JAVAC
FLAGS
+= -Xlint:all
JAVAC
_LINT_OPTIONS
+= -Xlint:all
endif
ifeq ($(JAVAC_WARNINGS_FATAL), true)
JAVACFLAGS += -Werror
endif
# TODO: Workaround for CR 7063027. Remove -path eventually.
JAVAC_LINT_OPTIONS += -Xlint:-path
JAVACFLAGS += $(JAVAC_LINT_OPTIONS)
#
# Some licensees do not get the Security Source bundles. We will
# fall back on the prebuilt jce.jar so that we can do a best
...
...
@@ -211,9 +216,7 @@ endif
# The javac options supplied to the boot javac is limited. This compiler
# should only be used to build the 'make/tools' sources, which are not
# class files that end up in the classes directory.
ifeq ($(JAVAC_MAX_WARNINGS), true)
BOOT_JAVACFLAGS += -Xlint:all
endif
BOOT_JAVACFLAGS += $(JAVAC_LINT_OPTIONS)
ifeq ($(JAVAC_WARNINGS_FATAL), true)
BOOT_JAVACFLAGS += -Werror
endif
...
...
src/share/classes/com/sun/java/util/jar/pack/Attribute.java
浏览文件 @
601240ad
/*
* Copyright (c) 2003, 201
0
, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2003, 201
1
, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
...
...
@@ -45,7 +45,7 @@ import static com.sun.java.util.jar.pack.Constants.*;
* attribute layouts.
* @author John Rose
*/
class
Attribute
implements
Comparable
{
class
Attribute
implements
Comparable
<
Attribute
>
{
// Attribute instance fields.
Layout
def
;
// the name and format of this attr
...
...
@@ -99,8 +99,7 @@ class Attribute implements Comparable {
return
this
==
def
.
canon
;
}
public
int
compareTo
(
Object
o
)
{
Attribute
that
=
(
Attribute
)
o
;
public
int
compareTo
(
Attribute
that
)
{
return
this
.
def
.
compareTo
(
that
.
def
);
}
...
...
@@ -447,7 +446,7 @@ class Attribute implements Comparable {
* and format. The formats are specified in a "little language".
*/
public
static
class
Layout
implements
Comparable
{
class
Layout
implements
Comparable
<
Layout
>
{
int
ctype
;
// attribute context type, e.g., ATTR_CONTEXT_CODE
String
name
;
// name of attribute
boolean
hasRefs
;
// this kind of attr contains CP refs?
...
...
@@ -540,8 +539,7 @@ class Attribute implements Comparable {
*
37
+
layout
.
hashCode
())
*
37
+
ctype
);
}
public
int
compareTo
(
Object
o
)
{
Layout
that
=
(
Layout
)
o
;
public
int
compareTo
(
Layout
that
)
{
int
r
;
r
=
this
.
name
.
compareTo
(
that
.
name
);
if
(
r
!=
0
)
return
r
;
...
...
@@ -663,6 +661,8 @@ class Attribute implements Comparable {
public
static
class
FormatException
extends
IOException
{
private
static
final
long
serialVersionUID
=
-
2542243830788066513L
;
private
int
ctype
;
private
String
name
;
String
layout
;
...
...
src/share/classes/com/sun/java/util/jar/pack/BandStructure.java
浏览文件 @
601240ad
...
...
@@ -1704,7 +1704,7 @@ class BandStructure {
for
(
int
i
=
0
;
i
<
ATTR_CONTEXT_LIMIT
;
i
++)
{
assert
(
attrIndexLimit
[
i
]
==
0
);
attrIndexLimit
[
i
]
=
32
;
// just for the sake of predefs.
attrDefs
.
set
(
i
,
new
ArrayList
<
Attribute
.
Layout
>(
Collections
.
nCopies
(
attrDefs
.
set
(
i
,
new
ArrayList
<>(
Collections
.
nCopies
(
attrIndexLimit
[
i
],
(
Attribute
.
Layout
)
null
)));
}
...
...
@@ -1892,7 +1892,7 @@ class BandStructure {
return
testBit
(
archiveOptions
,
mask
);
}
protected
List
getPredefinedAttrs
(
int
ctype
)
{
protected
List
<
Attribute
.
Layout
>
getPredefinedAttrs
(
int
ctype
)
{
assert
(
attrIndexLimit
[
ctype
]
!=
0
);
List
<
Attribute
.
Layout
>
res
=
new
ArrayList
<>(
attrIndexLimit
[
ctype
]);
// Remove nulls and non-predefs.
...
...
@@ -2649,7 +2649,7 @@ class BandStructure {
// Utilities for reallocating:
protected
static
Object
[]
realloc
(
Object
[]
a
,
int
len
)
{
java
.
lang
.
Class
elt
=
a
.
getClass
().
getComponentType
();
java
.
lang
.
Class
<?>
elt
=
a
.
getClass
().
getComponentType
();
Object
[]
na
=
(
Object
[])
java
.
lang
.
reflect
.
Array
.
newInstance
(
elt
,
len
);
System
.
arraycopy
(
a
,
0
,
na
,
0
,
Math
.
min
(
a
.
length
,
len
));
return
na
;
...
...
src/share/classes/com/sun/java/util/jar/pack/ClassReader.java
浏览文件 @
601240ad
/*
* Copyright (c) 2001, 201
0
, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2001, 201
1
, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
...
...
@@ -52,7 +52,7 @@ class ClassReader {
long
inPos
;
DataInputStream
in
;
Map
<
Attribute
.
Layout
,
Attribute
>
attrDefs
;
Map
attrCommands
;
Map
<
Attribute
.
Layout
,
String
>
attrCommands
;
String
unknownAttrCommand
=
"error"
;;
ClassReader
(
Class
cls
,
InputStream
in
)
throws
IOException
{
...
...
@@ -82,7 +82,7 @@ class ClassReader {
this
.
attrDefs
=
attrDefs
;
}
public
void
setAttrCommands
(
Map
attrCommands
)
{
public
void
setAttrCommands
(
Map
<
Attribute
.
Layout
,
String
>
attrCommands
)
{
this
.
attrCommands
=
attrCommands
;
}
...
...
@@ -348,8 +348,8 @@ class ClassReader {
int
length
=
readInt
();
// See if there is a special command that applies.
if
(
attrCommands
!=
null
)
{
Objec
t
lkey
=
Attribute
.
keyForLookup
(
ctype
,
name
);
String
cmd
=
(
String
)
attrCommands
.
get
(
lkey
);
Attribute
.
Layou
t
lkey
=
Attribute
.
keyForLookup
(
ctype
,
name
);
String
cmd
=
attrCommands
.
get
(
lkey
);
if
(
cmd
!=
null
)
{
switch
(
cmd
)
{
case
"pass"
:
...
...
@@ -483,6 +483,8 @@ class ClassReader {
}
static
class
ClassFormatException
extends
IOException
{
private
static
final
long
serialVersionUID
=
-
3564121733989501833L
;
public
ClassFormatException
(
String
message
)
{
super
(
message
);
}
...
...
src/share/classes/com/sun/java/util/jar/pack/ClassWriter.java
浏览文件 @
601240ad
/*
* Copyright (c) 2001, 201
0
, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2001, 201
1
, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
...
...
@@ -36,7 +36,6 @@ import java.io.ByteArrayOutputStream;
import
java.io.DataOutputStream
;
import
java.io.IOException
;
import
java.io.OutputStream
;
import
java.util.Iterator
;
import
java.util.List
;
import
static
com
.
sun
.
java
.
util
.
jar
.
pack
.
Constants
.*;
/**
...
...
@@ -165,14 +164,13 @@ class ClassWriter {
}
void
writeMembers
(
boolean
doMethods
)
throws
IOException
{
List
mems
;
List
<?
extends
Class
.
Member
>
mems
;
if
(!
doMethods
)
mems
=
cls
.
getFields
();
else
mems
=
cls
.
getMethods
();
writeShort
(
mems
.
size
());
for
(
Iterator
i
=
mems
.
iterator
();
i
.
hasNext
();
)
{
Class
.
Member
m
=
(
Class
.
Member
)
i
.
next
();
for
(
Class
.
Member
m
:
mems
)
{
writeMember
(
m
,
doMethods
);
}
}
...
...
src/share/classes/com/sun/java/util/jar/pack/Code.java
浏览文件 @
601240ad
/*
* Copyright (c) 2001, 201
0
, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2001, 201
1
, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
...
...
@@ -125,7 +125,7 @@ class Code extends Attribute.Holder {
return
expandInstructionMap
(
getInsnMap
());
}
void
addFixups
(
Collection
moreFixups
)
{
void
addFixups
(
Collection
<
Fixups
.
Fixup
>
moreFixups
)
{
if
(
fixups
==
null
)
{
fixups
=
new
Fixups
(
bytes
);
}
...
...
src/share/classes/com/sun/java/util/jar/pack/Coding.java
浏览文件 @
601240ad
/*
* Copyright (c) 2001, 201
0
, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2001, 201
1
, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
...
...
@@ -37,7 +37,7 @@ import static com.sun.java.util.jar.pack.Constants.*;
* varying degrees of length variability, and varying amounts of signed-ness.
* @author John Rose
*/
class
Coding
implements
Comparable
,
CodingMethod
,
Histogram
.
BitMetric
{
class
Coding
implements
Comparable
<
Coding
>
,
CodingMethod
,
Histogram
.
BitMetric
{
/*
Coding schema for single integers, parameterized by (B,H,S):
...
...
@@ -605,8 +605,7 @@ class Coding implements Comparable, CodingMethod, Histogram.BitMetric {
public
int
byteMin
(
int
b
)
{
return
byteMin
[
b
-
1
];
}
public
int
byteMax
(
int
b
)
{
return
byteMax
[
b
-
1
];
}
public
int
compareTo
(
Object
x
)
{
Coding
that
=
(
Coding
)
x
;
public
int
compareTo
(
Coding
that
)
{
int
dkey
=
this
.
del
-
that
.
del
;
if
(
dkey
==
0
)
dkey
=
this
.
B
-
that
.
B
;
...
...
src/share/classes/com/sun/java/util/jar/pack/ConstantPool.java
浏览文件 @
601240ad
/*
* Copyright (c) 2001, 201
0
, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2001, 201
1
, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
...
...
@@ -72,7 +72,7 @@ class ConstantPool {
return
e
;
}
/** Factory for literal constants (String, Integer, etc.). */
public
static
synchronized
LiteralEntry
getLiteralEntry
(
Comparable
value
)
{
public
static
synchronized
LiteralEntry
getLiteralEntry
(
Comparable
<?>
value
)
{
Map
<
Object
,
LiteralEntry
>
literalEntries
=
Utils
.
getLiteralEntries
();
LiteralEntry
e
=
literalEntries
.
get
(
value
);
if
(
e
==
null
)
{
...
...
@@ -140,7 +140,7 @@ class ConstantPool {
/** Entries in the constant pool. */
public
static
abstract
class
Entry
implements
Comparable
{
class
Entry
implements
Comparable
<
Object
>
{
protected
final
byte
tag
;
// a CONSTANT_foo code
protected
int
valueHash
;
// cached hashCode
...
...
@@ -257,7 +257,7 @@ class ConstantPool {
super
(
tag
);
}
public
abstract
Comparable
literalValue
();
public
abstract
Comparable
<?>
literalValue
();
}
public
static
...
...
@@ -280,15 +280,17 @@ class ConstantPool {
public
int
compareTo
(
Object
o
)
{
int
x
=
superCompareTo
(
o
);
if
(
x
==
0
)
{
x
=
((
Comparable
)
value
).
compareTo
(((
NumberEntry
)
o
).
value
);
@SuppressWarnings
(
"unchecked"
)
Comparable
<
Number
>
compValue
=
(
Comparable
<
Number
>)
value
;
x
=
compValue
.
compareTo
(((
NumberEntry
)
o
).
value
);
}
return
x
;
}
public
Number
numberValue
()
{
return
value
;
}
public
Comparable
literalValue
()
{
return
(
Comparable
)
value
;
public
Comparable
<?>
literalValue
()
{
return
(
Comparable
<?>
)
value
;
}
public
String
stringValue
()
{
return
value
.
toString
();
...
...
@@ -319,7 +321,7 @@ class ConstantPool {
}
return
x
;
}
public
Comparable
literalValue
()
{
public
Comparable
<?>
literalValue
()
{
return
ref
.
stringValue
();
}
public
String
stringValue
()
{
...
...
@@ -728,7 +730,7 @@ class ConstantPool {
/** An Index is a mapping between CP entries and small integers. */
public
static
final
class
Index
extends
AbstractList
{
class
Index
extends
AbstractList
<
Entry
>
{
protected
String
debugName
;
protected
Entry
[]
cpMap
;
protected
boolean
flattenSigs
;
...
...
@@ -758,7 +760,7 @@ class ConstantPool {
public
int
size
()
{
return
cpMap
.
length
;
}
public
Object
get
(
int
i
)
{
public
Entry
get
(
int
i
)
{
return
cpMap
[
i
];
}
public
Entry
getEntry
(
int
i
)
{
...
...
@@ -803,13 +805,7 @@ class ConstantPool {
assert
(
index
>=
0
);
return
index
;
}
public
boolean
contains
(
Object
e
)
{
return
findIndexOf
((
Entry
)
e
)
>=
0
;
}
public
int
indexOf
(
Object
e
)
{
return
findIndexOf
((
Entry
)
e
);
}
public
int
lastIndexOf
(
Object
e
)
{
public
int
lastIndexOf
(
Entry
e
)
{
return
indexOf
(
e
);
}
...
...
@@ -862,14 +858,14 @@ class ConstantPool {
indexValue
[
probe
]
=
i
;
}
}
public
Object
[]
toArray
(
Object
[]
a
)
{
public
Entry
[]
toArray
(
Entry
[]
a
)
{
int
sz
=
size
();
if
(
a
.
length
<
sz
)
return
super
.
toArray
(
a
);
System
.
arraycopy
(
cpMap
,
0
,
a
,
0
,
sz
);
if
(
a
.
length
>
sz
)
a
[
sz
]
=
null
;
return
a
;
}
public
Object
[]
toArray
()
{
public
Entry
[]
toArray
()
{
return
toArray
(
new
Entry
[
size
()]);
}
public
Object
clone
()
{
...
...
src/share/classes/com/sun/java/util/jar/pack/Constants.java
浏览文件 @
601240ad
/*
* Copyright (c) 2001, 201
0
, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2001, 201
1
, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
...
...
@@ -153,11 +153,11 @@ class Constants {
public
static
final
int
NO_MODTIME
=
0
;
// null modtime value
// some comstantly empty containers
public
final
static
int
[]
noInts
=
{};
public
final
static
byte
[]
noBytes
=
{};
public
final
static
Object
[]
noValues
=
{};
public
final
static
String
[]
noStrings
=
{};
public
final
static
List
emptyList
=
Arrays
.
asList
(
noValues
);
public
final
static
int
[]
noInts
=
{};
public
final
static
byte
[]
noBytes
=
{};
public
final
static
Object
[]
noValues
=
{};
public
final
static
String
[]
noStrings
=
{};
public
final
static
List
<
Object
>
emptyList
=
Arrays
.
asList
(
noValues
);
// meta-coding
public
final
static
int
...
...
src/share/classes/com/sun/java/util/jar/pack/Fixups.java
浏览文件 @
601240ad
/*
* Copyright (c) 2003, 201
0
, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2003, 201
1
, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
...
...
@@ -42,7 +42,7 @@ import java.util.Iterator;
*
* @author John Rose
*/
final
class
Fixups
extends
AbstractCollection
{
final
class
Fixups
extends
AbstractCollection
<
Fixups
.
Fixup
>
{
byte
[]
bytes
;
// the subject of the relocations
int
head
;
// desc locating first reloc
int
tail
;
// desc locating last reloc
...
...
@@ -66,11 +66,11 @@ final class Fixups extends AbstractCollection {
// If there are no bytes, all descs are kept in bigDescs.
this
((
byte
[])
null
);
}
Fixups
(
byte
[]
bytes
,
Collection
fixups
)
{
Fixups
(
byte
[]
bytes
,
Collection
<
Fixup
>
fixups
)
{
this
(
bytes
);
addAll
(
fixups
);
}
Fixups
(
Collection
fixups
)
{
Fixups
(
Collection
<
Fixup
>
fixups
)
{
this
((
byte
[])
null
);
addAll
(
fixups
);
}
...
...
@@ -108,8 +108,7 @@ final class Fixups extends AbstractCollection {
public
void
clear
()
{
if
(
bytes
!=
null
)
{
// Clean the bytes:
for
(
Iterator
i
=
iterator
();
i
.
hasNext
();
)
{
Fixup
fx
=
(
Fixup
)
i
.
next
();
for
(
Fixup
fx
:
this
)
{
//System.out.println("clean "+fx);
storeIndex
(
fx
.
location
(),
fx
.
format
(),
0
);
}
...
...
@@ -124,15 +123,14 @@ final class Fixups extends AbstractCollection {
return
bytes
;
}
@SuppressWarnings
(
"unchecked"
)
public
void
setBytes
(
byte
[]
newBytes
)
{
if
(
bytes
==
newBytes
)
return
;
ArrayList
old
=
null
;
assert
((
old
=
new
ArrayList
(
this
))
!=
null
);
ArrayList
<
Fixup
>
old
=
null
;
assert
((
old
=
new
ArrayList
<>
(
this
))
!=
null
);
if
(
bytes
==
null
||
newBytes
==
null
)
{
// One or the other representations is deficient.
// Construct a checkpoint.
ArrayList
save
=
new
ArrayList
(
this
);
ArrayList
<
Fixup
>
save
=
new
ArrayList
<>
(
this
);
clear
();
bytes
=
newBytes
;
addAll
(
save
);
...
...
@@ -140,7 +138,7 @@ final class Fixups extends AbstractCollection {
// assume newBytes is some sort of bitwise copy of the old bytes
bytes
=
newBytes
;
}
assert
(
old
.
equals
(
new
ArrayList
(
this
)));
assert
(
old
.
equals
(
new
ArrayList
<>
(
this
)));
}
static
final
int
LOC_SHIFT
=
1
;
...
...
@@ -236,7 +234,7 @@ final class Fixups extends AbstractCollection {
/** Simple and necessary tuple to present each fixup. */
public
static
class
Fixup
implements
Comparable
{
class
Fixup
implements
Comparable
<
Fixup
>
{
int
desc
;
// location and format of reloc
Entry
entry
;
// which entry to plug into the bytes
Fixup
(
int
desc
,
Entry
entry
)
{
...
...
@@ -254,9 +252,6 @@ final class Fixups extends AbstractCollection {
// Ordering depends only on location.
return
this
.
location
()
-
that
.
location
();
}
public
int
compareTo
(
Object
that
)
{
return
compareTo
((
Fixup
)
that
);
}
public
boolean
equals
(
Object
x
)
{
if
(!(
x
instanceof
Fixup
))
return
false
;
Fixup
that
=
(
Fixup
)
x
;
...
...
@@ -268,13 +263,13 @@ final class Fixups extends AbstractCollection {
}
private
class
Itr
implements
Iterator
{
class
Itr
implements
Iterator
<
Fixup
>
{
int
index
=
0
;
// index into entries
int
bigIndex
=
BIGSIZE
+
1
;
// index into bigDescs
int
next
=
head
;
// desc pointing to next fixup
public
boolean
hasNext
()
{
return
index
<
size
;
}
public
void
remove
()
{
throw
new
UnsupportedOperationException
();
}
public
Object
next
()
{
public
Fixup
next
()
{
int
thisIndex
=
index
;
return
new
Fixup
(
nextDesc
(),
entries
[
thisIndex
]);
}
...
...
@@ -298,7 +293,7 @@ final class Fixups extends AbstractCollection {
}
}
public
Iterator
iterator
()
{
public
Iterator
<
Fixup
>
iterator
()
{
return
new
Itr
();
}
public
void
add
(
int
location
,
int
format
,
Entry
entry
)
{
...
...
@@ -308,11 +303,8 @@ final class Fixups extends AbstractCollection {
addDesc
(
f
.
desc
,
f
.
entry
);
return
true
;
}
public
boolean
add
(
Object
fixup
)
{
return
add
((
Fixup
)
fixup
);
}
@SuppressWarnings
(
"unchecked"
)
public
boolean
addAll
(
Collection
c
)
{
public
boolean
addAll
(
Collection
<?
extends
Fixup
>
c
)
{
if
(
c
instanceof
Fixups
)
{
// Use knowledge of Itr structure to avoid building little structs.
Fixups
that
=
(
Fixups
)
c
;
...
...
@@ -453,8 +445,7 @@ final class Fixups extends AbstractCollection {
void
finishRefs
(
ConstantPool
.
Index
ix
)
{
if
(
isEmpty
())
return
;
for
(
Iterator
i
=
iterator
();
i
.
hasNext
();
)
{
Fixup
fx
=
(
Fixup
)
i
.
next
();
for
(
Fixup
fx
:
this
)
{
int
index
=
ix
.
indexOf
(
fx
.
entry
);
//System.out.println("finish "+fx+" = "+index);
// Note that the iterator has already fetched the
...
...
src/share/classes/com/sun/java/util/jar/pack/Instruction.java
浏览文件 @
601240ad
/*
* Copyright (c) 2001, 201
0
, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2001, 201
1
, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
...
...
@@ -657,6 +657,8 @@ class Instruction {
}
}
static
class
FormatException
extends
IOException
{
private
static
final
long
serialVersionUID
=
3175572275651367015L
;
FormatException
(
String
message
)
{
super
(
message
);
}
...
...
src/share/classes/com/sun/java/util/jar/pack/NativeUnpack.java
浏览文件 @
601240ad
...
...
@@ -292,7 +292,7 @@ class NativeUnpack {
}
ZipEntry
z
=
new
ZipEntry
(
name
);
z
.
setTime
(
(
long
)
mtime
*
1000
);
z
.
setTime
(
mtime
*
1000
);
if
(
size
==
0
)
{
z
.
setMethod
(
ZipOutputStream
.
STORED
);
...
...
src/share/classes/com/sun/java/util/jar/pack/Package.java
浏览文件 @
601240ad
/*
* Copyright (c) 2001, 201
0
, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2001, 201
1
, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
...
...
@@ -188,7 +188,7 @@ class Package {
}
public
final
class
Class
extends
Attribute
.
Holder
implements
Comparable
{
class
Class
extends
Attribute
.
Holder
implements
Comparable
<
Class
>
{
public
Package
getPackage
()
{
return
Package
.
this
;
}
// Optional file characteristics and data source (a "class stub")
...
...
@@ -247,8 +247,7 @@ class Package {
}
// Note: equals and hashCode are identity-based.
public
int
compareTo
(
Object
o
)
{
Class
that
=
(
Class
)
o
;
public
int
compareTo
(
Class
that
)
{
String
n0
=
this
.
getName
();
String
n1
=
that
.
getName
();
return
n0
.
compareTo
(
n1
);
...
...
@@ -488,7 +487,7 @@ class Package {
}
public
abstract
class
Member
extends
Attribute
.
Holder
implements
Comparable
{
class
Member
extends
Attribute
.
Holder
implements
Comparable
<
Member
>
{
DescriptorEntry
descriptor
;
protected
Member
(
int
flags
,
DescriptorEntry
descriptor
)
{
...
...
@@ -549,7 +548,7 @@ class Package {
return
descriptor
.
getLiteralTag
();
}
public
int
compareTo
(
Object
o
)
{
public
int
compareTo
(
Member
o
)
{
Field
that
=
(
Field
)
o
;
return
this
.
order
-
that
.
order
;
}
...
...
@@ -582,7 +581,7 @@ class Package {
}
// Sort methods in a canonical order (by type, then by name).
public
int
compareTo
(
Object
o
)
{
public
int
compareTo
(
Member
o
)
{
Method
that
=
(
Method
)
o
;
return
this
.
getDescriptor
().
compareTo
(
that
.
getDescriptor
());
}
...
...
@@ -608,11 +607,10 @@ class Package {
public
void
trimToSize
()
{
super
.
trimToSize
();
for
(
int
isM
=
0
;
isM
<=
1
;
isM
++)
{
ArrayList
members
=
(
isM
==
0
)
?
fields
:
methods
;
ArrayList
<?
extends
Member
>
members
=
(
isM
==
0
)
?
fields
:
methods
;
if
(
members
==
null
)
continue
;
members
.
trimToSize
();
for
(
Iterator
i
=
members
.
iterator
();
i
.
hasNext
();
)
{
Member
m
=
(
Member
)
i
.
next
();
for
(
Member
m
:
members
)
{
m
.
trimToSize
();
}
}
...
...
@@ -625,10 +623,9 @@ class Package {
if
(
"InnerClass"
.
equals
(
attrName
))
innerClasses
=
null
;
for
(
int
isM
=
0
;
isM
<=
1
;
isM
++)
{
ArrayList
members
=
(
isM
==
0
)
?
fields
:
methods
;
ArrayList
<?
extends
Member
>
members
=
(
isM
==
0
)
?
fields
:
methods
;
if
(
members
==
null
)
continue
;
for
(
Iterator
i
=
members
.
iterator
();
i
.
hasNext
();
)
{
Member
m
=
(
Member
)
i
.
next
();
for
(
Member
m
:
members
)
{
m
.
strip
(
attrName
);
}
}
...
...
@@ -641,10 +638,9 @@ class Package {
refs
.
add
(
superClass
);
refs
.
addAll
(
Arrays
.
asList
(
interfaces
));
for
(
int
isM
=
0
;
isM
<=
1
;
isM
++)
{
ArrayList
members
=
(
isM
==
0
)
?
fields
:
methods
;
ArrayList
<?
extends
Member
>
members
=
(
isM
==
0
)
?
fields
:
methods
;
if
(
members
==
null
)
continue
;
for
(
Iterator
i
=
members
.
iterator
();
i
.
hasNext
();
)
{
Member
m
=
(
Member
)
i
.
next
();
for
(
Member
m
:
members
)
{
boolean
ok
=
false
;
try
{
m
.
visitRefs
(
mode
,
refs
);
...
...
@@ -747,13 +743,13 @@ class Package {
return
classStubs
;
}
public
final
class
File
implements
Comparable
{
public
final
class
File
implements
Comparable
<
File
>
{
String
nameString
;
// true name of this file
Utf8Entry
name
;
int
modtime
=
NO_MODTIME
;
int
options
=
0
;
// random flag bits, such as deflate_hint
Class
stubClass
;
// if this is a stub, here's the class
ArrayList
prepend
=
new
ArrayList
();
// list of byte[]
ArrayList
<
byte
[]>
prepend
=
new
ArrayList
<>
();
// list of byte[]
java
.
io
.
ByteArrayOutputStream
append
=
new
ByteArrayOutputStream
();
File
(
Utf8Entry
name
)
{
...
...
@@ -798,8 +794,7 @@ class Package {
return
nameString
.
hashCode
();
}
// Simple alphabetic sort. PackageWriter uses a better comparator.
public
int
compareTo
(
Object
o
)
{
File
that
=
(
File
)
o
;
public
int
compareTo
(
File
that
)
{
return
this
.
nameString
.
compareTo
(
that
.
nameString
);
}
public
String
toString
()
{
...
...
@@ -834,8 +829,7 @@ class Package {
public
long
getFileLength
()
{
long
len
=
0
;
if
(
prepend
==
null
||
append
==
null
)
return
0
;
for
(
Iterator
i
=
prepend
.
iterator
();
i
.
hasNext
();
)
{
byte
[]
block
=
(
byte
[])
i
.
next
();
for
(
byte
[]
block
:
prepend
)
{
len
+=
block
.
length
;
}
len
+=
append
.
size
();
...
...
@@ -843,8 +837,7 @@ class Package {
}
public
void
writeTo
(
OutputStream
out
)
throws
IOException
{
if
(
prepend
==
null
||
append
==
null
)
return
;
for
(
Iterator
i
=
prepend
.
iterator
();
i
.
hasNext
();
)
{
byte
[]
block
=
(
byte
[])
i
.
next
();
for
(
byte
[]
block
:
prepend
)
{
out
.
write
(
block
);
}
append
.
writeTo
(
out
);
...
...
@@ -860,8 +853,7 @@ class Package {
InputStream
in
=
new
ByteArrayInputStream
(
append
.
toByteArray
());
if
(
prepend
.
isEmpty
())
return
in
;
List
<
InputStream
>
isa
=
new
ArrayList
<>(
prepend
.
size
()+
1
);
for
(
Iterator
i
=
prepend
.
iterator
();
i
.
hasNext
();
)
{
byte
[]
bytes
=
(
byte
[])
i
.
next
();
for
(
byte
[]
bytes
:
prepend
)
{
isa
.
add
(
new
ByteArrayInputStream
(
bytes
));
}
isa
.
add
(
in
);
...
...
@@ -926,7 +918,7 @@ class Package {
}
static
class
InnerClass
implements
Comparable
{
class
InnerClass
implements
Comparable
<
InnerClass
>
{
final
ClassEntry
thisClass
;
final
ClassEntry
outerClass
;
final
Utf8Entry
name
;
...
...
@@ -977,8 +969,7 @@ class Package {
public
int
hashCode
()
{
return
thisClass
.
hashCode
();
}
public
int
compareTo
(
Object
o
)
{
InnerClass
that
=
(
InnerClass
)
o
;
public
int
compareTo
(
InnerClass
that
)
{
return
this
.
thisClass
.
compareTo
(
that
.
thisClass
);
}
...
...
@@ -1108,7 +1099,7 @@ class Package {
return
ConstantPool
.
getUtf8Entry
(
s
);
}
static
LiteralEntry
getRefLiteral
(
Comparable
s
)
{
static
LiteralEntry
getRefLiteral
(
Comparable
<?>
s
)
{
return
ConstantPool
.
getLiteralEntry
(
s
);
}
...
...
@@ -1199,7 +1190,6 @@ class Package {
// compress better. It also moves classes to the end of the
// file order. It also removes JAR directory entries, which
// are useless.
@SuppressWarnings
(
"unchecked"
)
void
reorderFiles
(
boolean
keepClassOrder
,
boolean
stripDirectories
)
{
// First reorder the classes, if that is allowed.
if
(!
keepClassOrder
)
{
...
...
@@ -1226,10 +1216,8 @@ class Package {
// This keeps files of similar format near each other.
// Put class files at the end, keeping their fixed order.
// Be sure the JAR file's required manifest stays at the front. (4893051)
Collections
.
sort
(
files
,
new
Comparator
()
{
public
int
compare
(
Object
o0
,
Object
o1
)
{
File
r0
=
(
File
)
o0
;
File
r1
=
(
File
)
o1
;
Collections
.
sort
(
files
,
new
Comparator
<
File
>()
{
public
int
compare
(
File
r0
,
File
r1
)
{
// Get the file name.
String
f0
=
r0
.
nameString
;
String
f1
=
r1
.
nameString
;
...
...
src/share/classes/com/sun/java/util/jar/pack/PackageReader.java
浏览文件 @
601240ad
...
...
@@ -750,7 +750,7 @@ class PackageReader extends BandStructure {
file_options
.
readFrom
(
in
);
file_bits
.
setInputStreamFrom
(
in
);
Iterator
nextClass
=
pkg
.
getClasses
().
iterator
();
Iterator
<
Class
>
nextClass
=
pkg
.
getClasses
().
iterator
();
// Compute file lengths before reading any file bits.
long
totalFileLength
=
0
;
...
...
@@ -790,14 +790,14 @@ class PackageReader extends BandStructure {
pkg
.
addFile
(
file
);
if
(
file
.
isClassStub
())
{
assert
(
file
.
getFileLength
()
==
0
);
Class
cls
=
(
Class
)
nextClass
.
next
();
Class
cls
=
nextClass
.
next
();
cls
.
initFile
(
file
);
}
}
// Do the rest of the classes.
while
(
nextClass
.
hasNext
())
{
Class
cls
=
(
Class
)
nextClass
.
next
();
Class
cls
=
nextClass
.
next
();
cls
.
initFile
(
null
);
// implicitly initialize to a trivial one
cls
.
file
.
modtime
=
pkg
.
default_modtime
;
}
...
...
@@ -1006,14 +1006,14 @@ class PackageReader extends BandStructure {
if
(
k
>=
0
)
return
k
;
if
(
e
.
tag
==
CONSTANT_Utf8
)
{
Entry
se
=
(
Entry
)
utf8Signatures
.
get
(
e
);
Entry
se
=
utf8Signatures
.
get
(
e
);
return
pkg
.
cp
.
untypedIndexOf
(
se
);
}
return
-
1
;
}
Comparator
<
Entry
>
entryOutputOrder
=
new
Comparator
<
Entry
>()
{
public
int
compare
(
Entry
e0
,
Entry
e1
)
{
public
int
compare
(
Entry
e0
,
Entry
e1
)
{
int
k0
=
getOutputIndex
(
e0
);
int
k1
=
getOutputIndex
(
e1
);
if
(
k0
>=
0
&&
k1
>=
0
)
...
...
@@ -1332,7 +1332,8 @@ class PackageReader extends BandStructure {
// classes, fields, methods, and codes.
// The holders is a global list, already collected,
// of attribute "customers".
void
countAndReadAttrs
(
int
ctype
,
Collection
holders
)
throws
IOException
{
void
countAndReadAttrs
(
int
ctype
,
Collection
<?
extends
Attribute
.
Holder
>
holders
)
throws
IOException
{
// class_attr_bands:
// *class_flags :UNSIGNED5
// *class_attr_count :UNSIGNED5
...
...
@@ -1386,7 +1387,8 @@ class PackageReader extends BandStructure {
// Read flags and count the attributes that are to be placed
// on the given holders.
void
countAttrs
(
int
ctype
,
Collection
holders
)
throws
IOException
{
void
countAttrs
(
int
ctype
,
Collection
<?
extends
Attribute
.
Holder
>
holders
)
throws
IOException
{
// Here, xxx stands for one of class, field, method, code.
MultiBand
xxx_attr_bands
=
attrBands
[
ctype
];
long
flagMask
=
attrFlagMask
[
ctype
];
...
...
@@ -1414,8 +1416,7 @@ class PackageReader extends BandStructure {
xxx_flags_lo
.
expectLength
(
holders
.
size
());
xxx_flags_lo
.
readFrom
(
in
);
assert
((
flagMask
&
overflowMask
)
==
overflowMask
);
for
(
Iterator
i
=
holders
.
iterator
();
i
.
hasNext
();
)
{
Attribute
.
Holder
h
=
(
Attribute
.
Holder
)
i
.
next
();
for
(
Attribute
.
Holder
h
:
holders
)
{
int
flags
=
xxx_flags_lo
.
getInt
();
h
.
flags
=
flags
;
if
((
flags
&
overflowMask
)
!=
0
)
...
...
@@ -1433,8 +1434,7 @@ class PackageReader extends BandStructure {
// (class/field/method/code), and also we accumulate (b) a total
// count for each attribute type.
int
[]
totalCounts
=
new
int
[
defs
.
length
];
for
(
Iterator
i
=
holders
.
iterator
();
i
.
hasNext
();
)
{
Attribute
.
Holder
h
=
(
Attribute
.
Holder
)
i
.
next
();
for
(
Attribute
.
Holder
h
:
holders
)
{
assert
(
h
.
attributes
==
null
);
// System.out.println("flags="+h.flags+" using fm="+flagMask);
long
attrBits
=
((
h
.
flags
&
flagMask
)
<<
32
)
>>>
32
;
...
...
@@ -1582,13 +1582,12 @@ class PackageReader extends BandStructure {
ATTR_CONTEXT_NAME
[
ctype
]+
" attribute"
);
}
@SuppressWarnings
(
"unchecked"
)
void
readAttrs
(
int
ctype
,
Collection
holders
)
throws
IOException
{
void
readAttrs
(
int
ctype
,
Collection
<?
extends
Attribute
.
Holder
>
holders
)
throws
IOException
{
// Decode band values into attributes.
Set
<
Attribute
.
Layout
>
sawDefs
=
new
HashSet
<>();
ByteArrayOutputStream
buf
=
new
ByteArrayOutputStream
();
for
(
Iterator
i
=
holders
.
iterator
();
i
.
hasNext
();
)
{
final
Attribute
.
Holder
h
=
(
Attribute
.
Holder
)
i
.
next
();
for
(
final
Attribute
.
Holder
h
:
holders
)
{
if
(
h
.
attributes
==
null
)
continue
;
for
(
ListIterator
<
Attribute
>
j
=
h
.
attributes
.
listIterator
();
j
.
hasNext
();
)
{
Attribute
a
=
j
.
next
();
...
...
src/share/classes/com/sun/java/util/jar/pack/PackageWriter.java
浏览文件 @
601240ad
...
...
@@ -720,7 +720,6 @@ class PackageWriter extends BandStructure {
Utils
.
log
.
info
(
"Wrote "
+
numFiles
+
" resource files"
);
}
@SuppressWarnings
(
"unchecked"
)
void
collectAttributeLayouts
()
{
maxFlags
=
new
int
[
ATTR_CONTEXT_LIMIT
];
allLayouts
=
new
FixedList
<>(
ATTR_CONTEXT_LIMIT
);
...
...
@@ -781,26 +780,27 @@ class PackageWriter extends BandStructure {
avHiBits
&=
(
1L
<<
attrIndexLimit
[
i
])-
1
;
int
nextLoBit
=
0
;
Map
<
Attribute
.
Layout
,
int
[]>
defMap
=
allLayouts
.
get
(
i
);
Map
.
Entry
[]
layoutsAndCounts
=
new
Map
.
Entry
[
defMap
.
size
()];
@SuppressWarnings
(
"unchecked"
)
Map
.
Entry
<
Attribute
.
Layout
,
int
[]>[]
layoutsAndCounts
=
new
Map
.
Entry
<>[
defMap
.
size
()];
defMap
.
entrySet
().
toArray
(
layoutsAndCounts
);
// Sort by count, most frequent first.
// Predefs. participate in this sort, though it does not matter.
Arrays
.
sort
(
layoutsAndCounts
,
new
Comparator
<
Object
>()
{
public
int
compare
(
Object
o0
,
Object
o1
)
{
Map
.
Entry
e0
=
(
Map
.
Entry
)
o0
;
Map
.
Entry
e1
=
(
Map
.
Entry
)
o1
;
Arrays
.
sort
(
layoutsAndCounts
,
new
Comparator
<
Map
.
Entry
<
Attribute
.
Layout
,
int
[]>>(
)
{
public
int
compare
(
Map
.
Entry
<
Attribute
.
Layout
,
int
[]>
e0
,
Map
.
Entry
<
Attribute
.
Layout
,
int
[]>
e1
)
{
// Primary sort key is count, reversed.
int
r
=
-
(
((
int
[])
e0
.
getValue
())[
0
]
-
((
int
[])
e1
.
getValue
())[
0
]
);
int
r
=
-(
e0
.
getValue
()[
0
]
-
e1
.
getValue
()[
0
]);
if
(
r
!=
0
)
return
r
;
return
((
Comparable
)
e0
.
getKey
()
).
compareTo
(
e1
.
getKey
());
return
e0
.
getKey
(
).
compareTo
(
e1
.
getKey
());
}
});
attrCounts
[
i
]
=
new
int
[
attrIndexLimit
[
i
]+
layoutsAndCounts
.
length
];
for
(
int
j
=
0
;
j
<
layoutsAndCounts
.
length
;
j
++)
{
Map
.
Entry
e
=
layoutsAndCounts
[
j
];
Attribute
.
Layout
def
=
(
Attribute
.
Layout
)
e
.
getKey
();
int
count
=
((
int
[])
e
.
getValue
()
)[
0
];
Map
.
Entry
<
Attribute
.
Layout
,
int
[]>
e
=
layoutsAndCounts
[
j
];
Attribute
.
Layout
def
=
e
.
getKey
();
int
count
=
e
.
getValue
(
)[
0
];
int
index
;
Integer
predefIndex
=
attrIndexTable
.
get
(
def
);
if
(
predefIndex
!=
null
)
{
...
...
@@ -881,7 +881,6 @@ class PackageWriter extends BandStructure {
Attribute
.
Layout
[]
attrDefsWritten
;
@SuppressWarnings
(
"unchecked"
)
void
writeAttrDefs
()
throws
IOException
{
List
<
Object
[]>
defList
=
new
ArrayList
<>();
for
(
int
i
=
0
;
i
<
ATTR_CONTEXT_LIMIT
;
i
++)
{
...
...
@@ -906,20 +905,19 @@ class PackageWriter extends BandStructure {
int
numAttrDefs
=
defList
.
size
();
Object
[][]
defs
=
new
Object
[
numAttrDefs
][];
defList
.
toArray
(
defs
);
Arrays
.
sort
(
defs
,
new
Comparator
()
{
public
int
compare
(
Object
o0
,
Object
o1
)
{
Object
[]
a0
=
(
Object
[])
o0
;
Object
[]
a1
=
(
Object
[])
o1
;
Arrays
.
sort
(
defs
,
new
Comparator
<
Object
[]>()
{
public
int
compare
(
Object
[]
a0
,
Object
[]
a1
)
{
// Primary sort key is attr def header.
@SuppressWarnings
(
"unchecked"
)
int
r
=
((
Comparable
)
a0
[
0
]).
compareTo
(
a1
[
0
]);
if
(
r
!=
0
)
return
r
;
Object
ind0
=
attrIndexTable
.
get
(
a0
[
1
]);
Object
ind1
=
attrIndexTable
.
get
(
a1
[
1
]);
Integer
ind0
=
attrIndexTable
.
get
(
a0
[
1
]);
Integer
ind1
=
attrIndexTable
.
get
(
a1
[
1
]);
// Secondary sort key is attribute index.
// (This must be so, in order to keep overflow attr order.)
assert
(
ind0
!=
null
);
assert
(
ind1
!=
null
);
return
((
Comparable
)
ind0
)
.
compareTo
(
ind1
);
return
ind0
.
compareTo
(
ind1
);
}
});
attrDefsWritten
=
new
Attribute
.
Layout
[
numAttrDefs
];
...
...
src/share/classes/com/sun/java/util/jar/pack/PackerImpl.java
浏览文件 @
601240ad
/*
* Copyright (c) 2003, 201
0
, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2003, 201
1
, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
...
...
@@ -69,8 +69,7 @@ public class PackerImpl extends TLGlobals implements Pack200.Packer {
* Get the set of options for the pack and unpack engines.
* @return A sorted association of option key strings to option values.
*/
@SuppressWarnings
(
"unchecked"
)
public
SortedMap
properties
()
{
public
SortedMap
<
String
,
String
>
properties
()
{
return
props
;
}
...
...
@@ -157,7 +156,6 @@ public class PackerImpl extends TLGlobals implements Pack200.Packer {
// All the worker bees.....
// The packer worker.
@SuppressWarnings
(
"unchecked"
)
private
class
DoPack
{
final
int
verbose
=
props
.
getInteger
(
Utils
.
DEBUG_VERBOSE
);
...
...
@@ -199,9 +197,8 @@ public class PackerImpl extends TLGlobals implements Pack200.Packer {
};
for
(
int
i
=
0
;
i
<
ctypes
.
length
;
i
++)
{
String
pfx
=
keys
[
i
];
Map
<
Object
,
Object
>
map
=
props
.
prefixMap
(
pfx
);
for
(
Object
k
:
map
.
keySet
())
{
String
key
=
(
String
)
k
;
Map
<
String
,
String
>
map
=
props
.
prefixMap
(
pfx
);
for
(
String
key
:
map
.
keySet
())
{
assert
(
key
.
startsWith
(
pfx
));
String
name
=
key
.
substring
(
pfx
.
length
());
String
layout
=
props
.
getProperty
(
key
);
...
...
src/share/classes/com/sun/java/util/jar/pack/PropMap.java
浏览文件 @
601240ad
...
...
@@ -27,7 +27,6 @@ package com.sun.java.util.jar.pack;
import
java.beans.PropertyChangeListener
;
import
java.beans.PropertyChangeEvent
;
import
java.io.BufferedInputStream
;
import
java.io.IOException
;
import
java.io.InputStream
;
import
java.io.PrintStream
;
...
...
@@ -47,8 +46,8 @@ import java.util.jar.Pack200;
* Control block for publishing Pack200 options to the other classes.
*/
final
class
PropMap
implements
SortedMap
<
Object
,
Object
>
{
private
final
TreeMap
<
Object
,
Object
>
theMap
=
new
TreeMap
<>();;
final
class
PropMap
implements
SortedMap
<
String
,
String
>
{
private
final
TreeMap
<
String
,
String
>
theMap
=
new
TreeMap
<>();;
private
final
List
<
PropertyChangeListener
>
listenerList
=
new
ArrayList
<>(
1
);
void
addListener
(
PropertyChangeListener
listener
)
{
...
...
@@ -68,12 +67,12 @@ final class PropMap implements SortedMap<Object, Object> {
}
// Override:
public
Object
put
(
Object
key
,
Object
value
)
{
Object
oldValue
=
theMap
.
put
(
key
,
value
);
public
String
put
(
String
key
,
String
value
)
{
String
oldValue
=
theMap
.
put
(
key
,
value
);
if
(
value
!=
oldValue
&&
!
listenerList
.
isEmpty
())
{
// Post the property change event.
PropertyChangeEvent
event
=
new
PropertyChangeEvent
(
this
,
(
String
)
key
,
new
PropertyChangeEvent
(
this
,
key
,
oldValue
,
value
);
for
(
PropertyChangeListener
listener
:
listenerList
)
{
listener
.
propertyChange
(
event
);
...
...
@@ -85,7 +84,7 @@ final class PropMap implements SortedMap<Object, Object> {
// All this other stuff is private to the current package.
// Outide clients of Pack200 do not need to use it; they can
// get by with generic SortedMap functionality.
private
static
Map
<
Object
,
Object
>
defaultProps
;
private
static
Map
<
String
,
String
>
defaultProps
;
static
{
Properties
props
=
new
Properties
();
...
...
@@ -141,7 +140,9 @@ final class PropMap implements SortedMap<Object, Object> {
}
}
defaultProps
=
(
new
HashMap
<>(
props
));
// shrink to fit
@SuppressWarnings
({
"unchecked"
,
"rawtypes"
})
HashMap
<
String
,
String
>
temp
=
new
HashMap
(
props
);
// shrink to fit
defaultProps
=
temp
;
}
PropMap
()
{
...
...
@@ -151,7 +152,7 @@ final class PropMap implements SortedMap<Object, Object> {
// Return a view of this map which includes only properties
// that begin with the given prefix. This is easy because
// the map is sorted, and has a subMap accessor.
SortedMap
<
Object
,
Object
>
prefixMap
(
String
prefix
)
{
SortedMap
<
String
,
String
>
prefixMap
(
String
prefix
)
{
int
len
=
prefix
.
length
();
if
(
len
==
0
)
return
this
;
...
...
@@ -162,7 +163,7 @@ final class PropMap implements SortedMap<Object, Object> {
}
String
getProperty
(
String
s
)
{
return
(
String
)
get
(
s
);
return
get
(
s
);
}
String
getProperty
(
String
s
,
String
defaultVal
)
{
String
val
=
getProperty
(
s
);
...
...
@@ -171,13 +172,13 @@ final class PropMap implements SortedMap<Object, Object> {
return
val
;
}
String
setProperty
(
String
s
,
String
val
)
{
return
(
String
)
put
(
s
,
val
);
return
put
(
s
,
val
);
}
// Get sequence of props for "prefix", and "prefix.*".
List
getProperties
(
String
prefix
)
{
Collection
<
Object
>
values
=
prefixMap
(
prefix
).
values
();
List
<
Object
>
res
=
new
ArrayList
<>(
values
.
size
());
List
<
String
>
getProperties
(
String
prefix
)
{
Collection
<
String
>
values
=
prefixMap
(
prefix
).
values
();
List
<
String
>
res
=
new
ArrayList
<>(
values
.
size
());
res
.
addAll
(
values
);
while
(
res
.
remove
(
null
));
return
res
;
...
...
@@ -241,8 +242,8 @@ final class PropMap implements SortedMap<Object, Object> {
}
void
list
(
PrintWriter
out
)
{
out
.
println
(
"#"
+
Utils
.
PACK_ZIP_ARCHIVE_MARKER_COMMENT
+
"["
);
Set
defaults
=
defaultProps
.
entrySet
();
for
(
Map
.
Entry
e
:
theMap
.
entrySet
())
{
Set
<
Map
.
Entry
<
String
,
String
>>
defaults
=
defaultProps
.
entrySet
();
for
(
Map
.
Entry
<
String
,
String
>
e
:
theMap
.
entrySet
())
{
if
(
defaults
.
contains
(
e
))
continue
;
out
.
println
(
" "
+
e
.
getKey
()
+
" = "
+
e
.
getValue
());
}
...
...
@@ -270,18 +271,17 @@ final class PropMap implements SortedMap<Object, Object> {
}
@Override
public
Object
get
(
Object
key
)
{
public
String
get
(
Object
key
)
{
return
theMap
.
get
(
key
);
}
@Override
public
Object
remove
(
Object
key
)
{
public
String
remove
(
Object
key
)
{
return
theMap
.
remove
(
key
);
}
@Override
@SuppressWarnings
(
"unchecked"
)
public
void
putAll
(
Map
m
)
{
public
void
putAll
(
Map
<?
extends
String
,
?
extends
String
>
m
)
{
theMap
.
putAll
(
m
);
}
...
...
@@ -291,48 +291,47 @@ final class PropMap implements SortedMap<Object, Object> {
}
@Override
public
Set
<
Object
>
keySet
()
{
public
Set
<
String
>
keySet
()
{
return
theMap
.
keySet
();
}
@Override
public
Collection
<
Object
>
values
()
{
public
Collection
<
String
>
values
()
{
return
theMap
.
values
();
}
@Override
public
Set
<
Map
.
Entry
<
Object
,
Object
>>
entrySet
()
{
public
Set
<
Map
.
Entry
<
String
,
String
>>
entrySet
()
{
return
theMap
.
entrySet
();
}
@Override
@SuppressWarnings
(
"unchecked"
)
public
Comparator
<
Object
>
comparator
()
{
return
(
Comparator
<
Object
>)
theMap
.
comparator
();
public
Comparator
<?
super
String
>
comparator
()
{
return
theMap
.
comparator
();
}
@Override
public
SortedMap
<
Object
,
Object
>
subMap
(
Object
fromKey
,
Object
toKey
)
{
public
SortedMap
<
String
,
String
>
subMap
(
String
fromKey
,
String
toKey
)
{
return
theMap
.
subMap
(
fromKey
,
toKey
);
}
@Override
public
SortedMap
<
Object
,
Object
>
headMap
(
Object
toKey
)
{
public
SortedMap
<
String
,
String
>
headMap
(
String
toKey
)
{
return
theMap
.
headMap
(
toKey
);
}
@Override
public
SortedMap
<
Object
,
Object
>
tailMap
(
Object
fromKey
)
{
public
SortedMap
<
String
,
String
>
tailMap
(
String
fromKey
)
{
return
theMap
.
tailMap
(
fromKey
);
}
@Override
public
Object
firstKey
()
{
public
String
firstKey
()
{
return
theMap
.
firstKey
();
}
@Override
public
Object
lastKey
()
{
public
String
lastKey
()
{
return
theMap
.
lastKey
();
}
}
src/share/classes/com/sun/java/util/jar/pack/TLGlobals.java
浏览文件 @
601240ad
/*
* Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2010,
2011,
Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
...
...
@@ -67,7 +67,7 @@ class TLGlobals {
props
=
new
PropMap
();
}
SortedMap
<
Object
,
Object
>
getPropMap
()
{
SortedMap
<
String
,
String
>
getPropMap
()
{
return
props
;
}
...
...
src/share/classes/com/sun/java/util/jar/pack/UnpackerImpl.java
浏览文件 @
601240ad
...
...
@@ -81,8 +81,7 @@ public class UnpackerImpl extends TLGlobals implements Pack200.Unpacker {
* Get the set of options for the pack and unpack engines.
* @return A sorted association of option key strings to option values.
*/
@SuppressWarnings
(
"unchecked"
)
public
SortedMap
properties
()
{
public
SortedMap
<
String
,
String
>
properties
()
{
return
props
;
}
...
...
src/share/classes/com/sun/java/util/jar/pack/Utils.java
浏览文件 @
601240ad
...
...
@@ -253,8 +253,8 @@ class Utils {
}
static
void
copyJarFile
(
JarFile
in
,
JarOutputStream
out
)
throws
IOException
{
byte
[]
buffer
=
new
byte
[
1
<<
14
];
for
(
Enumeration
e
=
in
.
entries
();
e
.
hasMoreElements
();
)
{
JarEntry
je
=
(
JarEntry
)
e
.
nextElement
();
for
(
Enumeration
<
JarEntry
>
e
=
in
.
entries
();
e
.
hasMoreElements
();
)
{
JarEntry
je
=
e
.
nextElement
();
out
.
putNextEntry
(
je
);
InputStream
ein
=
in
.
getInputStream
(
je
);
for
(
int
nr
;
0
<
(
nr
=
ein
.
read
(
buffer
));
)
{
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录