Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openanolis
dragonwell8_jdk
提交
66b2319a
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看板
提交
66b2319a
编写于
7月 01, 2008
作者:
J
jjh
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
2157677: ClassPrepareRequest.addSourceNameFilter() does not behave as documented
Summary: Add proper handling of JVMTI errors. Reviewed-by: tbell
上级
420d9241
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
37 addition
and
13 deletion
+37
-13
src/share/back/eventFilter.c
src/share/back/eventFilter.c
+9
-6
test/com/sun/jdi/SourceNameFilterTest.java
test/com/sun/jdi/SourceNameFilterTest.java
+28
-7
未找到文件。
src/share/back/eventFilter.c
浏览文件 @
66b2319a
...
@@ -492,14 +492,17 @@ eventFilterRestricted_passesFilter(JNIEnv *env,
...
@@ -492,14 +492,17 @@ eventFilterRestricted_passesFilter(JNIEnv *env,
char
*
sourceName
=
0
;
char
*
sourceName
=
0
;
jvmtiError
error
=
JVMTI_FUNC_PTR
(
gdata
->
jvmti
,
GetSourceFileName
)
jvmtiError
error
=
JVMTI_FUNC_PTR
(
gdata
->
jvmti
,
GetSourceFileName
)
(
gdata
->
jvmti
,
clazz
,
&
sourceName
);
(
gdata
->
jvmti
,
clazz
,
&
sourceName
);
if
(
error
==
JVMTI_ERROR_NONE
)
{
if
(
error
==
JVMTI_ERROR_NONE
&&
if
(
sourceName
==
0
||
!
patternStringMatch
(
sourceName
,
desiredNamePattern
))
{
sourceName
!=
0
&&
/* We have no match */
patternStringMatch
(
sourceName
,
desiredNamePattern
))
{
jvmtiDeallocate
(
sourceName
);
// got a hit - report the event
return
JNI_FALSE
;
jvmtiDeallocate
(
sourceName
)
;
}
break
;
}
}
// We have no match, we have no source file name,
// or we got a JVM TI error. Don't report the event.
jvmtiDeallocate
(
sourceName
);
jvmtiDeallocate
(
sourceName
);
return
JNI_FALSE
;
}
}
break
;
break
;
}
}
...
...
test/com/sun/jdi/SourceNameFilterTest.java
浏览文件 @
66b2319a
...
@@ -23,7 +23,7 @@
...
@@ -23,7 +23,7 @@
/**
/**
* @test
* @test
* @bug 4836939
* @bug 4836939
6646613
* @summary JDI add addSourceNameFilter to ClassPrepareRequest
* @summary JDI add addSourceNameFilter to ClassPrepareRequest
*
*
* @author jjh
* @author jjh
...
@@ -31,7 +31,11 @@
...
@@ -31,7 +31,11 @@
* @run build TestScaffold VMConnection TargetListener TargetAdapter
* @run build TestScaffold VMConnection TargetListener TargetAdapter
* @run compile -g SourceNameFilterTest.java
* @run compile -g SourceNameFilterTest.java
* @run main SourceNameFilterTest
* @run main SourceNameFilterTest
* @run compile -g:none SourceNameFilterTest.java
* @run main SourceNameFilterTest
*/
*/
// The compile -g:none suppresses the lineNumber table to trigger bug 6646613.
import
com.sun.jdi.*
;
import
com.sun.jdi.*
;
import
com.sun.jdi.event.*
;
import
com.sun.jdi.event.*
;
import
com.sun.jdi.request.*
;
import
com.sun.jdi.request.*
;
...
@@ -84,7 +88,6 @@ public class SourceNameFilterTest extends TestScaffold {
...
@@ -84,7 +88,6 @@ public class SourceNameFilterTest extends TestScaffold {
boolean
gotEvent1
=
false
;
boolean
gotEvent1
=
false
;
boolean
gotEvent2
=
false
;
boolean
gotEvent2
=
false
;
boolean
gotEvent3
=
false
;
boolean
gotEvent3
=
false
;
ClassPrepareRequest
cpReq
;
ClassPrepareRequest
cpReq
;
boolean
shouldResume
=
false
;
boolean
shouldResume
=
false
;
SourceNameFilterTest
(
String
args
[])
{
SourceNameFilterTest
(
String
args
[])
{
...
@@ -151,6 +154,18 @@ public class SourceNameFilterTest extends TestScaffold {
...
@@ -151,6 +154,18 @@ public class SourceNameFilterTest extends TestScaffold {
*/
*/
BreakpointEvent
bpe
=
startToMain
(
"SourceNameFilterTarg"
);
BreakpointEvent
bpe
=
startToMain
(
"SourceNameFilterTarg"
);
targetClass
=
bpe
.
location
().
declaringType
();
targetClass
=
bpe
.
location
().
declaringType
();
boolean
noSourceName
=
false
;
try
{
targetClass
.
sourceName
();
}
catch
(
AbsentInformationException
ee
)
{
noSourceName
=
true
;
}
if
(
noSourceName
)
{
println
(
"-- Running with no source names"
);
}
else
{
println
(
"-- Running with source names"
);
}
mainThread
=
bpe
.
thread
();
mainThread
=
bpe
.
thread
();
EventRequestManager
erm
=
vm
().
eventRequestManager
();
EventRequestManager
erm
=
vm
().
eventRequestManager
();
addListener
(
this
);
addListener
(
this
);
...
@@ -175,7 +190,9 @@ public class SourceNameFilterTest extends TestScaffold {
...
@@ -175,7 +190,9 @@ public class SourceNameFilterTest extends TestScaffold {
/*
/*
* This should cause us to get a class prepare event for
* This should cause us to get a class prepare event for
* LoadedLater3
* LoadedLater3 except in the case where -g:none
* was used to compile so that there is no LineNumberTable
* and therefore, no source name for the class.
*/
*/
cpReq
=
erm
.
createClassPrepareRequest
();
cpReq
=
erm
.
createClassPrepareRequest
();
cpReq
.
addSourceNameFilter
(
"SourceNameFilterTest.java"
);
cpReq
.
addSourceNameFilter
(
"SourceNameFilterTest.java"
);
...
@@ -186,17 +203,21 @@ public class SourceNameFilterTest extends TestScaffold {
...
@@ -186,17 +203,21 @@ public class SourceNameFilterTest extends TestScaffold {
if
(!
gotEvent1
)
{
if
(!
gotEvent1
)
{
failure
(
"failure: Did not get a class prepare request "
+
failure
(
"failure: Did not get a class prepare request "
+
"for Loaded
l
ater1"
);
"for Loaded
L
ater1"
);
}
}
if
(
gotEvent2
)
{
if
(
gotEvent2
)
{
failure
(
"failure: Did get a class prepare request "
+
failure
(
"failure: Did get a class prepare request "
+
"for Loaded
l
ater2"
);
"for Loaded
L
ater2"
);
}
}
if
(!
gotEvent3
)
{
if
(
gotEvent3
&&
noSourceName
)
{
failure
(
"failure: Did get a class prepare request "
+
"for LoadedLater3"
);
}
else
if
(!
gotEvent3
&&
!
noSourceName
)
{
failure
(
"failure: Did not get a class prepare request "
+
failure
(
"failure: Did not get a class prepare request "
+
"for Loaded
l
ater3"
);
"for Loaded
L
ater3"
);
}
}
/*
/*
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录