Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openanolis
dragonwell8_jdk
提交
7c85f1a6
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看板
提交
7c85f1a6
编写于
4月 09, 2015
作者:
S
sla
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
8075331: jdb eval java.util.Arrays.asList(array) shows inconsistent behaviour
Reviewed-by: jbachorik
上级
6701045c
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
108 addition
and
2 deletion
+108
-2
src/share/classes/com/sun/tools/jdi/InterfaceTypeImpl.java
src/share/classes/com/sun/tools/jdi/InterfaceTypeImpl.java
+11
-2
test/com/sun/jdi/InvokeVarArgs.java
test/com/sun/jdi/InvokeVarArgs.java
+97
-0
未找到文件。
src/share/classes/com/sun/tools/jdi/InterfaceTypeImpl.java
浏览文件 @
7c85f1a6
/*
* Copyright (c) 1998, 201
1
, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 1998, 201
5
, 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
...
...
@@ -130,6 +130,15 @@ final public class InterfaceTypeImpl extends InvokableTypeImpl
return
null
;
}
@Override
boolean
isAssignableTo
(
ReferenceType
type
)
{
if
(
type
.
name
().
equals
(
"java.lang.Object"
))
{
// interfaces are always assignable to j.l.Object
return
true
;
}
return
super
.
isAssignableTo
(
type
);
}
@Override
List
<
InterfaceType
>
interfaces
()
{
return
superinterfaces
();
...
...
@@ -140,4 +149,4 @@ final public class InterfaceTypeImpl extends InvokableTypeImpl
// method must be directly in this interface
return
this
.
equals
(
method
.
declaringType
());
}
}
\ No newline at end of file
}
test/com/sun/jdi/InvokeVarArgs.java
0 → 100644
浏览文件 @
7c85f1a6
/*
* Copyright (c) 2015, 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
* 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 Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
* or visit www.oracle.com if you need additional information or have any
* questions.
*/
/**
* @test
* @bug 8075331
* @summary Verify that we can call varargs methods
* @run build TestScaffold VMConnection TargetAdapter TargetListener
* @run compile -g InvokeVarArgs.java
* @run driver InvokeVarArgs
*/
import
com.sun.jdi.*
;
import
com.sun.jdi.event.*
;
import
java.util.Arrays
;
interface
MyInterface
{
}
class
SomeClass
implements
MyInterface
{
}
class
InvokeVarArgsTarg
{
public
static
void
main
(
String
args
[])
{
new
InvokeVarArgsTarg
().
run
();
}
SomeClass
someClass1
=
new
SomeClass
();
SomeClass
someClass2
=
new
SomeClass
();
MyInterface
[]
array
=
new
MyInterface
[]{
someClass1
,
someClass2
};
SomeClass
[]
array2
=
new
SomeClass
[]{
someClass1
,
someClass2
};
public
void
run
()
{
System
.
out
.
println
(
"size(array) : "
+
size
(
array
));
System
.
out
.
println
(
"size(array2) : "
+
size
(
array2
));
}
int
size
(
Object
...
value
)
{
return
value
.
length
;
}
}
public
class
InvokeVarArgs
extends
TestScaffold
{
public
static
void
main
(
String
args
[])
throws
Exception
{
new
InvokeVarArgs
(
args
).
startTests
();
}
InvokeVarArgs
(
String
args
[])
throws
Exception
{
super
(
args
);
}
protected
void
runTests
()
throws
Exception
{
BreakpointEvent
bpe
=
startTo
(
"InvokeVarArgsTarg"
,
"run"
,
"()V"
);
StackFrame
frame
=
bpe
.
thread
().
frame
(
0
);
ObjectReference
targetObj
=
frame
.
thisObject
();
ReferenceType
targetType
=
(
ReferenceType
)
targetObj
.
type
();
Value
arrayVal
=
targetObj
.
getValue
(
targetType
.
fieldByName
(
"array"
));
Value
array2Val
=
targetObj
.
getValue
(
targetType
.
fieldByName
(
"array2"
));
Method
sizeMethod
=
targetType
.
methodsByName
(
"size"
,
"([Ljava/lang/Object;)I"
).
get
(
0
);
IntegerValue
size
=
(
IntegerValue
)
targetObj
.
invokeMethod
(
bpe
.
thread
(),
sizeMethod
,
Arrays
.
asList
(
new
Value
[]{
arrayVal
}),
0
);
if
(
size
.
value
()
!=
2
)
{
throw
new
Exception
(
"size(array) should be 2, but was "
+
size
.
value
());
}
size
=
(
IntegerValue
)
targetObj
.
invokeMethod
(
bpe
.
thread
(),
sizeMethod
,
Arrays
.
asList
(
new
Value
[]{
array2Val
}),
0
);
if
(
size
.
value
()
!=
2
)
{
throw
new
Exception
(
"size(array2) should be 2, but was "
+
size
.
value
());
}
listenUntilVMDisconnect
();
}
}
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录