Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openanolis
dragonwell8_hotspot
提交
41a93ca3
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看板
提交
41a93ca3
编写于
1月 09, 2013
作者:
D
dlong
浏览文件
操作
浏览文件
下载
差异文件
Merge
上级
192a0f88
444a70a2
变更
6
显示空白变更内容
内联
并排
Showing
6 changed file
with
18 addition
and
12 deletion
+18
-12
src/share/vm/c1/c1_LIR.hpp
src/share/vm/c1/c1_LIR.hpp
+1
-1
src/share/vm/interpreter/interpreterRuntime.cpp
src/share/vm/interpreter/interpreterRuntime.cpp
+1
-1
src/share/vm/oops/method.cpp
src/share/vm/oops/method.cpp
+4
-4
src/share/vm/oops/method.hpp
src/share/vm/oops/method.hpp
+1
-1
src/share/vm/prims/jvmtiExport.cpp
src/share/vm/prims/jvmtiExport.cpp
+9
-4
src/share/vm/runtime/sharedRuntime.cpp
src/share/vm/runtime/sharedRuntime.cpp
+2
-1
未找到文件。
src/share/vm/c1/c1_LIR.hpp
浏览文件 @
41a93ca3
...
...
@@ -2259,7 +2259,7 @@ class LIR_OpVisitState: public StackObj {
typedef
enum
{
inputMode
,
firstMode
=
inputMode
,
tempMode
,
outputMode
,
numModes
,
invalidMode
=
-
1
}
OprMode
;
enum
{
maxNumberOfOperands
=
16
,
maxNumberOfOperands
=
20
,
maxNumberOfInfos
=
4
};
...
...
src/share/vm/interpreter/interpreterRuntime.cpp
浏览文件 @
41a93ca3
...
...
@@ -417,7 +417,7 @@ IRT_ENTRY(address, InterpreterRuntime::exception_handler_for_exception(JavaThrea
// exception handler lookup
KlassHandle
h_klass
(
THREAD
,
h_exception
->
klass
());
handler_bci
=
h_method
->
fast_exception_handler_bci_for
(
h_klass
,
current_bci
,
THREAD
);
handler_bci
=
Method
::
fast_exception_handler_bci_for
(
h_method
,
h_klass
,
current_bci
,
THREAD
);
if
(
HAS_PENDING_EXCEPTION
)
{
// We threw an exception while trying to find the exception handler.
// Transfer the new exception to the exception handle which will
...
...
src/share/vm/oops/method.cpp
浏览文件 @
41a93ca3
...
...
@@ -194,16 +194,16 @@ char* Method::name_and_sig_as_C_string(Klass* klass, Symbol* method_name, Symbol
return
buf
;
}
int
Method
::
fast_exception_handler_bci_for
(
KlassHandle
ex_klass
,
int
throw_bci
,
TRAPS
)
{
int
Method
::
fast_exception_handler_bci_for
(
methodHandle
mh
,
KlassHandle
ex_klass
,
int
throw_bci
,
TRAPS
)
{
// exception table holds quadruple entries of the form (beg_bci, end_bci, handler_bci, klass_index)
// access exception table
ExceptionTable
table
(
this
);
ExceptionTable
table
(
mh
()
);
int
length
=
table
.
length
();
// iterate through all entries sequentially
constantPoolHandle
pool
(
THREAD
,
constants
());
constantPoolHandle
pool
(
THREAD
,
mh
->
constants
());
for
(
int
i
=
0
;
i
<
length
;
i
++
)
{
//reacquire the table in case a GC happened
ExceptionTable
table
(
this
);
ExceptionTable
table
(
mh
()
);
int
beg_bci
=
table
.
start_pc
(
i
);
int
end_bci
=
table
.
end_pc
(
i
);
assert
(
beg_bci
<=
end_bci
,
"inconsistent exception table"
);
...
...
src/share/vm/oops/method.hpp
浏览文件 @
41a93ca3
...
...
@@ -351,7 +351,7 @@ class Method : public Metadata {
// exception handler which caused the exception to be thrown, which
// is needed for proper retries. See, for example,
// InterpreterRuntime::exception_handler_for_exception.
int
fast_exception_handler_bci_for
(
KlassHandle
ex_klass
,
int
throw_bci
,
TRAPS
);
static
int
fast_exception_handler_bci_for
(
methodHandle
mh
,
KlassHandle
ex_klass
,
int
throw_bci
,
TRAPS
);
// method data access
MethodData
*
method_data
()
const
{
...
...
src/share/vm/prims/jvmtiExport.cpp
浏览文件 @
41a93ca3
...
...
@@ -1305,15 +1305,21 @@ void JvmtiExport::post_exception_throw(JavaThread *thread, Method* method, addre
vframeStream
st
(
thread
);
assert
(
!
st
.
at_end
(),
"cannot be at end"
);
Method
*
current_method
=
NULL
;
// A GC may occur during the Method::fast_exception_handler_bci_for()
// call below if it needs to load the constraint class. Using a
// methodHandle to keep the 'current_method' from being deallocated
// if GC happens.
methodHandle
current_mh
=
methodHandle
(
thread
,
current_method
);
int
current_bci
=
-
1
;
do
{
current_method
=
st
.
method
();
current_mh
=
methodHandle
(
thread
,
current_method
);
current_bci
=
st
.
bci
();
do
{
should_repeat
=
false
;
KlassHandle
eh_klass
(
thread
,
exception_handle
()
->
klass
());
current_bci
=
current_method
->
fast_exception_handler_bci_for
(
eh_klass
,
current_bci
,
THREAD
);
current_bci
=
Method
::
fast_exception_handler_bci_for
(
current_mh
,
eh_klass
,
current_bci
,
THREAD
);
if
(
HAS_PENDING_EXCEPTION
)
{
exception_handle
=
Handle
(
thread
,
PENDING_EXCEPTION
);
CLEAR_PENDING_EXCEPTION
;
...
...
@@ -1328,8 +1334,7 @@ void JvmtiExport::post_exception_throw(JavaThread *thread, Method* method, addre
catch_jmethodID
=
0
;
current_bci
=
0
;
}
else
{
catch_jmethodID
=
jem
.
to_jmethodID
(
methodHandle
(
thread
,
current_method
));
catch_jmethodID
=
jem
.
to_jmethodID
(
current_mh
);
}
JvmtiJavaThreadEventTransition
jet
(
thread
);
...
...
src/share/vm/runtime/sharedRuntime.cpp
浏览文件 @
41a93ca3
...
...
@@ -643,7 +643,8 @@ address SharedRuntime::compute_compiled_exc_handler(nmethod* nm, address ret_pc,
bool
skip_scope_increment
=
false
;
// exception handler lookup
KlassHandle
ek
(
THREAD
,
exception
->
klass
());
handler_bci
=
sd
->
method
()
->
fast_exception_handler_bci_for
(
ek
,
bci
,
THREAD
);
methodHandle
mh
(
THREAD
,
sd
->
method
());
handler_bci
=
Method
::
fast_exception_handler_bci_for
(
mh
,
ek
,
bci
,
THREAD
);
if
(
HAS_PENDING_EXCEPTION
)
{
recursive_exception
=
true
;
// We threw an exception while trying to find the exception handler.
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录