Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openanolis
dragonwell8_hotspot
提交
97c6698d
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看板
提交
97c6698d
编写于
10月 29, 2019
作者:
M
mbalao
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
8231995: two jtreg tests failed after 8229366 is fixed
Reviewed-by: jbachorik
上级
2a8d5f43
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
39 addition
and
0 deletion
+39
-0
src/share/vm/classfile/systemDictionary.cpp
src/share/vm/classfile/systemDictionary.cpp
+26
-0
src/share/vm/jfr/jni/jfrUpcalls.cpp
src/share/vm/jfr/jni/jfrUpcalls.cpp
+11
-0
src/share/vm/jfr/jni/jfrUpcalls.hpp
src/share/vm/jfr/jni/jfrUpcalls.hpp
+2
-0
未找到文件。
src/share/vm/classfile/systemDictionary.cpp
浏览文件 @
97c6698d
...
...
@@ -39,6 +39,7 @@
#include "interpreter/bytecodeStream.hpp"
#include "interpreter/interpreter.hpp"
#include "jfr/jfrEvents.hpp"
#include "jfr/jni/jfrUpcalls.hpp"
#include "memory/filemap.hpp"
#include "memory/gcLocker.hpp"
#include "memory/oopFactory.hpp"
...
...
@@ -94,6 +95,9 @@ bool SystemDictionary::_has_checkPackageAccess = false;
// lazily initialized klass variables
Klass
*
volatile
SystemDictionary
::
_abstract_ownable_synchronizer_klass
=
NULL
;
#if INCLUDE_JFR
static
const
Symbol
*
jfr_event_handler_proxy
=
NULL
;
#endif // INCLUDE_JFR
// ----------------------------------------------------------------------------
// Java-level SystemLoader
...
...
@@ -1333,6 +1337,25 @@ instanceKlassHandle SystemDictionary::load_instance_class(Symbol* class_name, Ha
if
(
!
k
.
is_null
())
{
k
=
find_or_define_instance_class
(
class_name
,
class_loader
,
k
,
CHECK_
(
nh
));
}
#if INCLUDE_JFR
else
{
assert
(
jfr_event_handler_proxy
!=
NULL
,
"invariant"
);
if
(
class_name
==
jfr_event_handler_proxy
)
{
// EventHandlerProxy class is generated dynamically in
// EventHandlerProxyCreator::makeEventHandlerProxyClass
// method, so we generate a Java call from here.
//
// EventHandlerProxy class will finally be defined in
// SystemDictionary::resolve_from_stream method, down
// the call stack. Bootstrap classloader is parallel-capable,
// so no concurrency issues are expected.
CLEAR_PENDING_EXCEPTION
;
k
=
JfrUpcalls
::
load_event_handler_proxy_class
(
THREAD
);
assert
(
!
k
.
is_null
(),
"invariant"
);
}
}
#endif // INCLUDE_JFR
return
k
;
}
else
{
// Use user specified class loader to load class. Call loadClass operation on class_loader.
...
...
@@ -1886,6 +1909,9 @@ void SystemDictionary::initialize(TRAPS) {
_system_loader_lock_obj
=
oopFactory
::
new_intArray
(
0
,
CHECK
);
// Initialize basic classes
initialize_preloaded_classes
(
CHECK
);
#if INCLUDE_JFR
jfr_event_handler_proxy
=
SymbolTable
::
new_permanent_symbol
(
"jdk/jfr/proxy/internal/EventHandlerProxy"
,
CHECK
);
#endif // INCLUDE_JFR
}
// Compact table of directions on the initialization of klasses:
...
...
src/share/vm/jfr/jni/jfrUpcalls.cpp
浏览文件 @
97c6698d
...
...
@@ -177,3 +177,14 @@ void JfrUpcalls::new_bytes_eager_instrumentation(jlong trace_id,
*
new_class_data_len
=
new_bytes_length
;
*
new_class_data
=
new_bytes
;
}
instanceKlassHandle
JfrUpcalls
::
load_event_handler_proxy_class
(
TRAPS
)
{
JavaValue
result
(
T_OBJECT
);
JfrJavaArguments
call_args
(
&
result
,
"jdk/jfr/internal/JVMUpcalls"
,
"getEventHandlerProxyClass"
,
"()Ljava/lang/Class;"
,
CHECK_NULL
);
JfrJavaSupport
::
call_static
(
&
call_args
,
CHECK_NULL
);
assert
(
result
.
get_type
()
==
T_OBJECT
,
"invariant"
);
instanceHandle
h_java_proxy
(
THREAD
,
(
instanceOop
)
result
.
get_jobject
());
assert
(
h_java_proxy
.
not_null
(),
"invariant"
);
return
java_lang_Class
::
as_Klass
(
h_java_proxy
());
}
src/share/vm/jfr/jni/jfrUpcalls.hpp
浏览文件 @
97c6698d
...
...
@@ -53,6 +53,8 @@ class JfrUpcalls : AllStatic {
jint
*
new_class_data_len
,
unsigned
char
**
new_class_data
,
TRAPS
);
static
instanceKlassHandle
load_event_handler_proxy_class
(
TRAPS
);
};
#endif // SHARE_VM_JFR_JNI_JFRUPCALLS_HPP
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录