Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openanolis
dragonwell8_hotspot
提交
10d81193
D
dragonwell8_hotspot
项目概览
openanolis
/
dragonwell8_hotspot
通知
2
Star
2
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
D
dragonwell8_hotspot
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
提交
10d81193
编写于
7月 20, 2015
作者:
V
vkempik
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
8048353: jstack -l crashes VM when a Java mirror for a primitive type is locked
Reviewed-by: coleenp, dcubed
上级
b54fc8f4
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
18 addition
and
2 deletion
+18
-2
src/share/vm/classfile/javaClasses.cpp
src/share/vm/classfile/javaClasses.cpp
+16
-0
src/share/vm/classfile/javaClasses.hpp
src/share/vm/classfile/javaClasses.hpp
+1
-0
src/share/vm/runtime/vframe.cpp
src/share/vm/runtime/vframe.cpp
+1
-2
未找到文件。
src/share/vm/classfile/javaClasses.cpp
浏览文件 @
10d81193
...
...
@@ -782,6 +782,22 @@ Symbol* java_lang_Class::as_signature(oop java_class, bool intern_if_not_found,
return
name
;
}
// Returns the Java name for this Java mirror (Resource allocated)
// See Klass::external_name().
// For primitive type Java mirrors, its type name is returned.
const
char
*
java_lang_Class
::
as_external_name
(
oop
java_class
)
{
assert
(
java_lang_Class
::
is_instance
(
java_class
),
"must be a Class object"
);
const
char
*
name
=
NULL
;
if
(
is_primitive
(
java_class
))
{
name
=
type2name
(
primitive_type
(
java_class
));
}
else
{
name
=
as_Klass
(
java_class
)
->
external_name
();
}
if
(
name
==
NULL
)
{
name
=
"<null>"
;
}
return
name
;
}
Klass
*
java_lang_Class
::
array_klass
(
oop
java_class
)
{
Klass
*
k
=
((
Klass
*
)
java_class
->
metadata_field
(
_array_klass_offset
));
...
...
src/share/vm/classfile/javaClasses.hpp
浏览文件 @
10d81193
...
...
@@ -270,6 +270,7 @@ class java_lang_Class : AllStatic {
}
static
Symbol
*
as_signature
(
oop
java_class
,
bool
intern_if_not_found
,
TRAPS
);
static
void
print_signature
(
oop
java_class
,
outputStream
*
st
);
static
const
char
*
as_external_name
(
oop
java_class
);
// Testing
static
bool
is_instance
(
oop
obj
)
{
return
obj
!=
NULL
&&
obj
->
klass
()
==
SystemDictionary
::
Class_klass
();
...
...
src/share/vm/runtime/vframe.cpp
浏览文件 @
10d81193
...
...
@@ -148,8 +148,7 @@ static void print_locked_object_class_name(outputStream* st, Handle obj, const c
if
(
obj
.
not_null
())
{
st
->
print
(
"
\t
- %s <"
INTPTR_FORMAT
"> "
,
lock_state
,
(
address
)
obj
());
if
(
obj
->
klass
()
==
SystemDictionary
::
Class_klass
())
{
Klass
*
target_klass
=
java_lang_Class
::
as_Klass
(
obj
());
st
->
print_cr
(
"(a java.lang.Class for %s)"
,
InstanceKlass
::
cast
(
target_klass
)
->
external_name
());
st
->
print_cr
(
"(a java.lang.Class for %s)"
,
java_lang_Class
::
as_external_name
(
obj
()));
}
else
{
Klass
*
k
=
obj
->
klass
();
st
->
print_cr
(
"(a %s)"
,
k
->
external_name
());
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录