Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openanolis
dragonwell8_langtools
提交
c706d81c
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看板
提交
c706d81c
编写于
8月 08, 2009
作者:
J
jjg
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
6868539: javap should use current names for constant pool tags
Reviewed-by: ksrini
上级
717be173
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
106 addition
and
5 deletion
+106
-5
src/share/classes/com/sun/tools/javap/CodeWriter.java
src/share/classes/com/sun/tools/javap/CodeWriter.java
+1
-1
src/share/classes/com/sun/tools/javap/ConstantWriter.java
src/share/classes/com/sun/tools/javap/ConstantWriter.java
+9
-4
test/tools/javap/T6868539.java
test/tools/javap/T6868539.java
+96
-0
未找到文件。
src/share/classes/com/sun/tools/javap/CodeWriter.java
浏览文件 @
c706d81c
...
...
@@ -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
();
}
...
...
src/share/classes/com/sun/tools/javap/ConstantWriter.java
浏览文件 @
c706d81c
...
...
@@ -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/javap/T6868539.java
0 → 100644
浏览文件 @
c706d81c
/*
* 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.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录