Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openanolis
dragonwell8_jdk
提交
67301c11
D
dragonwell8_jdk
项目概览
openanolis
/
dragonwell8_jdk
通知
4
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看板
提交
67301c11
编写于
1月 02, 2018
作者:
I
igerasim
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
8193414: Improvements in MethodType lookups
Reviewed-by: ahgross, jrose
上级
07a36c70
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
13 addition
and
17 deletion
+13
-17
src/share/classes/java/lang/invoke/MethodType.java
src/share/classes/java/lang/invoke/MethodType.java
+13
-17
未找到文件。
src/share/classes/java/lang/invoke/MethodType.java
浏览文件 @
67301c11
...
...
@@ -1140,33 +1140,24 @@ s.writeObject(this.parameterArray());
* @param s the stream to read the object from
* @throws java.io.IOException if there is a problem reading the object
* @throws ClassNotFoundException if one of the component classes cannot be resolved
* @see #MethodType()
* @see #readResolve
* @see #writeObject
*/
private
void
readObject
(
java
.
io
.
ObjectInputStream
s
)
throws
java
.
io
.
IOException
,
ClassNotFoundException
{
// Assign temporary defaults in case this object escapes
MethodType_init
(
void
.
class
,
NO_PTYPES
);
s
.
defaultReadObject
();
// requires serialPersistentFields to be an empty array
Class
<?>
returnType
=
(
Class
<?>)
s
.
readObject
();
Class
<?>[]
parameterArray
=
(
Class
<?>[])
s
.
readObject
();
// Probably this object will never escape, but let's check
// the field values now, just to be sure.
checkRtype
(
returnType
);
checkPtypes
(
parameterArray
);
parameterArray
=
parameterArray
.
clone
();
// make sure it is unshared
// Assign deserialized values
MethodType_init
(
returnType
,
parameterArray
);
}
/**
* For serialization only.
* Sets the final fields to null, pending {@code Unsafe.putObject}.
*/
private
MethodType
()
{
this
.
rtype
=
null
;
this
.
ptypes
=
null
;
}
// Initialization of state for deserialization only
private
void
MethodType_init
(
Class
<?>
rtype
,
Class
<?>[]
ptypes
)
{
// In order to communicate these values to readResolve, we must
// store them into the implementation-specific final fields.
...
...
@@ -1196,9 +1187,14 @@ s.writeObject(this.parameterArray());
*/
private
Object
readResolve
()
{
// Do not use a trusted path for deserialization:
//return makeImpl(rtype, ptypes, true);
//
return makeImpl(rtype, ptypes, true);
// Verify all operands, and make sure ptypes is unshared:
return
methodType
(
rtype
,
ptypes
);
try
{
return
methodType
(
rtype
,
ptypes
);
}
finally
{
// Re-assign defaults in case this object escapes
MethodType_init
(
void
.
class
,
NO_PTYPES
);
}
}
/**
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录