Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openanolis
dragonwell8_hotspot
提交
d1d4022e
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看板
提交
d1d4022e
编写于
1月 17, 2014
作者:
A
asaha
浏览文件
操作
浏览文件
下载
差异文件
Merge
上级
91ddf4be
806aae39
变更
3
展开全部
隐藏空白更改
内联
并排
Showing
3 changed file
with
799 addition
and
556 deletion
+799
-556
.hgtags
.hgtags
+2
-0
THIRD_PARTY_README
THIRD_PARTY_README
+766
-546
src/share/vm/classfile/defaultMethods.cpp
src/share/vm/classfile/defaultMethods.cpp
+31
-10
未找到文件。
.hgtags
浏览文件 @
d1d4022e
...
...
@@ -408,6 +408,8 @@ fca262db9c4309f99d2f5542ab0780e45c2f1578 jdk8-b120
55fb97c4c58d6ed4db8ec02a382ba518d9265815 hs25-b65
d3521d8e562a782f66fc0dfdebeffba2c7e3471d jdk8-b122
591135a7d6f96c0ef281d078cee9a8d8c342d45c jdk8-b123
9b9816164447214f21b06ccf646893c281c76a42 hs25-b66
df333ee12bba67e2e928f8ce1da37afd9bf95b48 jdk8-b124
4a35ef38e2a7bc64df20c7700ba69b37e3ddb8b5 jdk8u5-b01
e5561d89fe8bfc79cd6c8fcc36d270cc6a49ec6e jdk8u5-b02
2f9eb9fcab6c42c8c84ddb44170ea33235116d84 jdk8u5-b03
...
...
THIRD_PARTY_README
浏览文件 @
d1d4022e
此差异已折叠。
点击以展开。
src/share/vm/classfile/defaultMethods.cpp
浏览文件 @
d1d4022e
/*
* Copyright (c) 2012, 201
3
, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2012, 201
4
, 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
...
...
@@ -390,6 +390,20 @@ class MethodFamily : public ResourceObj {
Symbol
*
get_exception_message
()
{
return
_exception_message
;
}
Symbol
*
get_exception_name
()
{
return
_exception_name
;
}
// Return true if the specified klass has a static method that matches
// the name and signature of the target method.
bool
has_matching_static
(
InstanceKlass
*
root
)
{
if
(
_members
.
length
()
>
0
)
{
Pair
<
Method
*
,
QualifiedState
>
entry
=
_members
.
at
(
0
);
Method
*
impl
=
root
->
find_method
(
entry
.
first
->
name
(),
entry
.
first
->
signature
());
if
((
impl
!=
NULL
)
&&
impl
->
is_static
())
{
return
true
;
}
}
return
false
;
}
// Either sets the target or the exception error message
void
determine_target
(
InstanceKlass
*
root
,
TRAPS
)
{
if
(
has_target
()
||
throws_exception
())
{
...
...
@@ -416,19 +430,26 @@ class MethodFamily : public ResourceObj {
}
if
(
num_defaults
==
0
)
{
if
(
qualified_methods
.
length
()
==
0
)
{
_exception_message
=
generate_no_defaults_message
(
CHECK
);
}
else
{
assert
(
root
!=
NULL
,
"Null root class"
);
_exception_message
=
generate_method_message
(
root
->
name
(),
qualified_methods
.
at
(
0
),
CHECK
);
// If the root klass has a static method with matching name and signature
// then do not generate an overpass method because it will hide the
// static method during resolution.
if
(
!
has_matching_static
(
root
))
{
if
(
qualified_methods
.
length
()
==
0
)
{
_exception_message
=
generate_no_defaults_message
(
CHECK
);
}
else
{
assert
(
root
!=
NULL
,
"Null root class"
);
_exception_message
=
generate_method_message
(
root
->
name
(),
qualified_methods
.
at
(
0
),
CHECK
);
}
_exception_name
=
vmSymbols
::
java_lang_AbstractMethodError
();
}
_exception_name
=
vmSymbols
::
java_lang_AbstractMethodError
();
// If only one qualified method is default, select that
}
else
if
(
num_defaults
==
1
)
{
_selected_target
=
qualified_methods
.
at
(
default_index
);
}
else
if
(
num_defaults
>
1
)
{
_exception_message
=
generate_conflicts_message
(
&
qualified_methods
,
CHECK
);
_exception_name
=
vmSymbols
::
java_lang_IncompatibleClassChangeError
();
}
else
if
(
num_defaults
>
1
&&
!
has_matching_static
(
root
))
{
_exception_message
=
generate_conflicts_message
(
&
qualified_methods
,
CHECK
);
_exception_name
=
vmSymbols
::
java_lang_IncompatibleClassChangeError
();
if
(
TraceDefaultMethods
)
{
_exception_message
->
print_value_on
(
tty
);
tty
->
print_cr
(
""
);
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录