Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openanolis
dragonwell8_langtools
提交
1cf04c57
D
dragonwell8_langtools
项目概览
openanolis
/
dragonwell8_langtools
通知
0
Star
2
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
D
dragonwell8_langtools
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
提交
1cf04c57
编写于
8月 10, 2009
作者:
A
asaha
浏览文件
操作
浏览文件
下载
差异文件
Merge
上级
1a3629ba
c706d81c
变更
6
隐藏空白更改
内联
并排
Showing
6 changed file
with
124 addition
and
22 deletion
+124
-22
.hgtags
.hgtags
+1
-0
src/share/classes/com/sun/tools/classfile/ClassWriter.java
src/share/classes/com/sun/tools/classfile/ClassWriter.java
+1
-1
src/share/classes/com/sun/tools/javap/CodeWriter.java
src/share/classes/com/sun/tools/javap/CodeWriter.java
+5
-5
src/share/classes/com/sun/tools/javap/ConstantWriter.java
src/share/classes/com/sun/tools/javap/ConstantWriter.java
+20
-15
test/tools/javac/code/ArrayClone.java
test/tools/javac/code/ArrayClone.java
+1
-1
test/tools/javap/T6868539.java
test/tools/javap/T6868539.java
+96
-0
未找到文件。
.hgtags
浏览文件 @
1cf04c57
...
...
@@ -42,3 +42,4 @@ d8f23a81d46f47a4186f1044dd9e44841bbeab84 jdk7-b64
7e0056ded28c802609d2bd79bfcda551d72a3fec jdk7-b65
634f519d6f9a602b16bba1c7cd4a17242a8f6889 jdk7-b66
14b1a8ede95493fc53c37ff2626f1f98ce94d108 jdk7-b67
95c1212b07e33b1b8c689b1d279d82ffd5a56e43 jdk7-b68
src/share/classes/com/sun/tools/classfile/ClassWriter.java
浏览文件 @
1cf04c57
...
...
@@ -435,7 +435,7 @@ public class ClassWriter {
}
public
Void
visitLocalVariableTypeTable
(
LocalVariableTypeTable_attribute
attr
,
ClassOutputStream
out
)
{
out
.
write
Byte
(
attr
.
local_variable_table
.
length
);
out
.
write
Short
(
attr
.
local_variable_table
.
length
);
for
(
LocalVariableTypeTable_attribute
.
Entry
e:
attr
.
local_variable_table
)
writeLocalVariableTypeTableEntry
(
e
,
out
);
return
null
;
...
...
src/share/classes/com/sun/tools/javap/CodeWriter.java
浏览文件 @
1cf04c57
...
...
@@ -117,7 +117,7 @@ class CodeWriter extends BasicWriter {
}
public
void
writeInstr
(
Instruction
instr
)
{
print
(
String
.
format
(
"%4d: %-1
2
s "
,
instr
.
getPC
(),
instr
.
getMnemonic
()));
print
(
String
.
format
(
"%4d: %-1
3
s "
,
instr
.
getPC
(),
instr
.
getMnemonic
()));
instr
.
accept
(
instructionPrinter
,
null
);
println
();
}
...
...
@@ -140,7 +140,7 @@ class CodeWriter extends BasicWriter {
}
public
Void
visitConstantPoolRef
(
Instruction
instr
,
int
index
,
Void
p
)
{
print
(
"#"
+
index
+
";"
);
print
(
"#"
+
index
);
tab
();
print
(
"// "
);
printConstant
(
index
);
...
...
@@ -148,7 +148,7 @@ class CodeWriter extends BasicWriter {
}
public
Void
visitConstantPoolRefAndValue
(
Instruction
instr
,
int
index
,
int
value
,
Void
p
)
{
print
(
"#"
+
index
+
", "
+
value
+
";"
);
print
(
"#"
+
index
+
", "
+
value
);
tab
();
print
(
"// "
);
printConstant
(
index
);
...
...
@@ -170,7 +170,7 @@ class CodeWriter extends BasicWriter {
print
(
"{ // "
+
npairs
);
indent
(+
1
);
for
(
int
i
=
0
;
i
<
npairs
;
i
++)
{
print
(
"\n"
+
matches
[
i
]
+
": "
+
(
pc
+
offsets
[
i
])
+
";"
);
print
(
"\n"
+
matches
[
i
]
+
": "
+
(
pc
+
offsets
[
i
]));
}
print
(
"\ndefault: "
+
(
pc
+
default_
)
+
" }"
);
indent
(-
1
);
...
...
@@ -182,7 +182,7 @@ class CodeWriter extends BasicWriter {
print
(
"{ //"
+
low
+
" to "
+
high
);
indent
(+
1
);
for
(
int
i
=
0
;
i
<
offsets
.
length
;
i
++)
{
print
(
"\n"
+
(
low
+
i
)
+
": "
+
(
pc
+
offsets
[
i
])
+
";"
);
print
(
"\n"
+
(
low
+
i
)
+
": "
+
(
pc
+
offsets
[
i
]));
}
print
(
"\ndefault: "
+
(
pc
+
default_
)
+
" }"
);
indent
(-
1
);
...
...
src/share/classes/com/sun/tools/javap/ConstantWriter.java
浏览文件 @
1cf04c57
...
...
@@ -62,69 +62,69 @@ public class ConstantWriter extends BasicWriter {
protected
void
writeConstantPool
(
ConstantPool
constant_pool
)
{
ConstantPool
.
Visitor
<
Integer
,
Void
>
v
=
new
ConstantPool
.
Visitor
<
Integer
,
Void
>()
{
public
Integer
visitClass
(
CONSTANT_Class_info
info
,
Void
p
)
{
print
(
"#"
+
info
.
name_index
+
";"
);
print
(
"#"
+
info
.
name_index
);
tab
();
println
(
"// "
+
stringValue
(
info
));
return
1
;
}
public
Integer
visitDouble
(
CONSTANT_Double_info
info
,
Void
p
)
{
println
(
stringValue
(
info
)
+
";"
);
println
(
stringValue
(
info
));
return
2
;
}
public
Integer
visitFieldref
(
CONSTANT_Fieldref_info
info
,
Void
p
)
{
print
(
"#"
+
info
.
class_index
+
".#"
+
info
.
name_and_type_index
+
";"
);
print
(
"#"
+
info
.
class_index
+
".#"
+
info
.
name_and_type_index
);
tab
();
println
(
"// "
+
stringValue
(
info
));
return
1
;
}
public
Integer
visitFloat
(
CONSTANT_Float_info
info
,
Void
p
)
{
println
(
stringValue
(
info
)
+
";"
);
println
(
stringValue
(
info
));
return
1
;
}
public
Integer
visitInteger
(
CONSTANT_Integer_info
info
,
Void
p
)
{
println
(
stringValue
(
info
)
+
";"
);
println
(
stringValue
(
info
));
return
1
;
}
public
Integer
visitInterfaceMethodref
(
CONSTANT_InterfaceMethodref_info
info
,
Void
p
)
{
print
(
"#"
+
info
.
class_index
+
".#"
+
info
.
name_and_type_index
+
";"
);
print
(
"#"
+
info
.
class_index
+
".#"
+
info
.
name_and_type_index
);
tab
();
println
(
"// "
+
stringValue
(
info
));
return
1
;
}
public
Integer
visitLong
(
CONSTANT_Long_info
info
,
Void
p
)
{
println
(
stringValue
(
info
)
+
";"
);
println
(
stringValue
(
info
));
return
2
;
}
public
Integer
visitNameAndType
(
CONSTANT_NameAndType_info
info
,
Void
p
)
{
print
(
"#"
+
info
.
name_index
+
":#"
+
info
.
type_index
+
";"
);
print
(
"#"
+
info
.
name_index
+
":#"
+
info
.
type_index
);
tab
();
println
(
"// "
+
stringValue
(
info
));
return
1
;
}
public
Integer
visitMethodref
(
CONSTANT_Methodref_info
info
,
Void
p
)
{
print
(
"#"
+
info
.
class_index
+
".#"
+
info
.
name_and_type_index
+
";"
);
print
(
"#"
+
info
.
class_index
+
".#"
+
info
.
name_and_type_index
);
tab
();
println
(
"// "
+
stringValue
(
info
));
return
1
;
}
public
Integer
visitString
(
CONSTANT_String_info
info
,
Void
p
)
{
print
(
"#"
+
info
.
string_index
+
";"
);
print
(
"#"
+
info
.
string_index
);
tab
();
println
(
"// "
+
stringValue
(
info
));
return
1
;
}
public
Integer
visitUtf8
(
CONSTANT_Utf8_info
info
,
Void
p
)
{
println
(
stringValue
(
info
)
+
";"
);
println
(
stringValue
(
info
));
return
1
;
}
...
...
@@ -134,10 +134,10 @@ public class ConstantWriter extends BasicWriter {
int
width
=
String
.
valueOf
(
constant_pool
.
size
()).
length
()
+
1
;
int
cpx
=
1
;
while
(
cpx
<
constant_pool
.
size
())
{
print
(
String
.
format
(
"
const
%"
+
width
+
"s"
,
(
"#"
+
cpx
)));
print
(
String
.
format
(
"%"
+
width
+
"s"
,
(
"#"
+
cpx
)));
try
{
CPInfo
cpInfo
=
constant_pool
.
get
(
cpx
);
print
(
String
.
format
(
" = %-1
5s "
,
tagName
(
cpInfo
.
getTag
()
)));
print
(
String
.
format
(
" = %-1
8s "
,
cpTagName
(
cpInfo
)));
cpx
+=
cpInfo
.
accept
(
v
,
null
);
}
catch
(
ConstantPool
.
InvalidIndex
ex
)
{
// should not happen
...
...
@@ -178,10 +178,15 @@ public class ConstantWriter extends BasicWriter {
print
(
tagName
(
tag
)
+
" "
+
stringValue
(
cpInfo
));
}
String
cpTagName
(
CPInfo
cpInfo
)
{
String
n
=
cpInfo
.
getClass
().
getSimpleName
();
return
n
.
replace
(
"CONSTANT_"
,
""
).
replace
(
"_info"
,
""
);
}
String
tagName
(
int
tag
)
{
switch
(
tag
)
{
case
CONSTANT_Utf8:
return
"
Asciz
"
;
return
"
Utf8
"
;
case
CONSTANT_Integer:
return
"int"
;
case
CONSTANT_Float:
...
...
@@ -203,7 +208,7 @@ public class ConstantWriter extends BasicWriter {
case
CONSTANT_NameAndType:
return
"NameAndType"
;
default
:
return
"
unknown tag
"
;
return
"
(unknown tag)
"
;
}
}
...
...
test/tools/javac/code/ArrayClone.java
浏览文件 @
1cf04c57
...
...
@@ -48,7 +48,7 @@ public class ArrayClone {
System
.
out
.
println
(
out
);
for
(
String
line:
out
.
split
(
"\n"
))
{
String
match
=
"[ \t]+[0-9]+:[ \t]+invokevirtual[ \t]+#[0-9]+
;
[ \t]+// Method \"\\[Ljava/lang/String;\".clone:\\(\\)Ljava/lang/Object;"
;
String
match
=
"[ \t]+[0-9]+:[ \t]+invokevirtual[ \t]+#[0-9]+[ \t]+// Method \"\\[Ljava/lang/String;\".clone:\\(\\)Ljava/lang/Object;"
;
if
(
line
.
matches
(
match
))
return
;
}
...
...
test/tools/javap/T6868539.java
0 → 100644
浏览文件 @
1cf04c57
/*
* Copyright 2009 Sun Microsystems, Inc. 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
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
* version 2 for more details (a copy is included in the LICENSE file that
* accompanied this code).
*
* You should have received a copy of the GNU General Public License version
* 2 along with this work; if not, write to the Free Software Foundation,
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
*
* Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
* CA 95054 USA or visit www.sun.com if you need additional information or
* have any questions.
*/
/*
* @test
* @bug 6868539 6868548
* @summary javap should use current names for constant pool entries,
* remove spurious ';' from constant pool entries
*/
import
java.io.*
;
import
java.util.*
;
public
class
T6868539
{
public
static
void
main
(
String
...
args
)
{
new
T6868539
().
run
();
}
void
run
()
{
verify
(
"T6868539"
,
"Utf8 +java/lang/String"
);
// 1: Utf8
// 2: currently unused
verify
(
"T6868539"
,
"Integer +123456"
);
// 3: Integer
verify
(
"T6868539"
,
"Float +123456.0f"
);
// 4: Float
verify
(
"T6868539"
,
"Long +123456l"
);
// 5: Long
verify
(
"T6868539"
,
"Double +123456.0d"
);
// 6: Double
verify
(
"T6868539"
,
"Class +#[0-9]+ +// + T6868539"
);
// 7: Class
verify
(
"T6868539"
,
"String +#[0-9]+ +// + not found"
);
// 8: String
verify
(
"T6868539"
,
"Fieldref +#[0-9]+\\.#[0-9]+ +// +T6868539.errors:I"
);
// 9: Fieldref
verify
(
"T6868539"
,
"Methodref +#[0-9]+\\.#[0-9]+ +// +T6868539.run:\\(\\)V"
);
// 10: Methodref
verify
(
"T6868539"
,
"InterfaceMethodref +#[0-9]+\\.#[0-9]+ +// +java/lang/Runnable\\.run:\\(\\)V"
);
// 11: InterfaceMethodref
verify
(
"T6868539"
,
"NameAndType +#[0-9]+:#[0-9]+ +// +run:\\(\\)V"
);
// 12: NameAndType
if
(
errors
>
0
)
throw
new
Error
(
errors
+
" found."
);
}
void
verify
(
String
className
,
String
...
expects
)
{
String
output
=
javap
(
className
);
for
(
String
expect:
expects
)
{
if
(!
output
.
matches
(
"(?s).*"
+
expect
+
".*"
))
error
(
expect
+
" not found"
);
}
}
void
error
(
String
msg
)
{
System
.
err
.
println
(
msg
);
errors
++;
}
int
errors
;
String
javap
(
String
className
)
{
String
testClasses
=
System
.
getProperty
(
"test.classes"
,
"."
);
StringWriter
sw
=
new
StringWriter
();
PrintWriter
out
=
new
PrintWriter
(
sw
);
String
[]
args
=
{
"-v"
,
"-classpath"
,
testClasses
,
className
};
int
rc
=
com
.
sun
.
tools
.
javap
.
Main
.
run
(
args
,
out
);
if
(
rc
!=
0
)
throw
new
Error
(
"javap failed. rc="
+
rc
);
out
.
close
();
String
output
=
sw
.
toString
();
System
.
out
.
println
(
"class "
+
className
);
System
.
out
.
println
(
output
);
return
output
;
}
int
i
=
123456
;
float
f
=
123456
.
f
;
double
d
=
123456
.;
long
l
=
123456L
;
void
m
(
Runnable
r
)
{
r
.
run
();
}
}
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录