Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commitacc2158

Browse files
author
duyang
committed
add comment
1 parent4b2174c commitacc2158

File tree

4 files changed

+23
-5
lines changed

4 files changed

+23
-5
lines changed

‎hotspot/src/share/vm/classfile/javaClasses.cpp

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -673,6 +673,7 @@ void java_lang_Class::compute_offsets() {
673673
assert(!offsets_computed,"offsets should be initialized only once");
674674
offsets_computed =true;
675675

676+
//调用宏展开后的 static klassOop Class_klass() { return check_klass_Pre(_well_known_klasses[Class_klass_knum]); } 函数
676677
klassOop k =SystemDictionary::Class_klass();
677678
// The classRedefinedCount field is only present starting in 1.5,
678679
// so don't go fatal.
@@ -3159,7 +3160,8 @@ void JavaClasses::check_offsets() {
31593160
valid &=check_constant(klass_name, cpp_klass_name :: field_name, #field_name, field_sig)
31603161

31613162
// java.lang.String
3162-
3163+
//宏展开
3164+
//valid &= check_offset("java/lang/String", java_lang_String :: value_offset, "value", "[C")
31633165
CHECK_OFFSET("java/lang/String", java_lang_String, value,"[C");
31643166
CHECK_OFFSET("java/lang/String", java_lang_String, offset,"I");
31653167
CHECK_OFFSET("java/lang/String", java_lang_String, count,"I");

‎hotspot/src/share/vm/classfile/systemDictionary.hpp

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -424,6 +424,9 @@ class SystemDictionary : AllStatic {
424424
public:
425425
#defineWK_KLASS_DECLARE(name, ignore_symbol, option) \
426426
static klassOopname() {return check_klass_##option(_well_known_klasses[WK_KLASS_ENUM_NAME(name)]); }
427+
//注意宏展开顺序
428+
//先展开 WK_KLASSES_DO(template) ==> WK_KLASS_DECLARE作为template
429+
//XXX_klass_knum 在 SystemDictionary.hpp的enum WKID中定义
427430
WK_KLASSES_DO(WK_KLASS_DECLARE);
428431
#undef WK_KLASS_DECLARE
429432

‎hotspot/src/share/vm/runtime/init.cpp

Lines changed: 16 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -99,13 +99,15 @@ jint init_globals() {
9999
HandleMark hm;
100100
//初始化一些计数器
101101
management_init();
102-
//初始化java字节码指令
102+
//初始化java字节码指令 byte 数值
103103
bytecodes_init();
104104
//初始化system class loader
105105
classLoader_init();
106-
//
106+
//JIT(及时编译)产生的机器码的缓存
107107
codeCache_init();
108+
//虚拟机版本信息
108109
VM_Version_init();
110+
//jit编译成的机器码入口 c1 编译
109111
stubRoutines_init1();
110112
jint status =universe_init();// dependent on codeCache_init and stubRoutines_init
111113
if (status != JNI_OK)
@@ -118,26 +120,36 @@ jint init_globals() {
118120
marksweep_init();
119121
//控制
120122
accessFlags_init();
121-
//
123+
//字节码table
122124
templateTable_init();
125+
//
123126
InterfaceSupport_init();
127+
//jit相关
124128
SharedRuntime::generate_stubs();
125129
universe2_init();// dependent on codeCache_init and stubRoutines_init
130+
//java对象引用处理
126131
referenceProcessor_init();
132+
//初始化全局/局部jni handles
127133
jni_handles_init();
128134
#ifndef VM_STRUCTS_KERNEL
129135
vmStructs_init();
130136
#endif// VM_STRUCTS_KERNEL
131-
137+
//初始化虚表 用于动态绑定
132138
vtableStubs_init();
139+
//JIT 内联cache
133140
InlineCacheBuffer_init();
141+
//
134142
compilerOracle_init();
143+
//CompilationPolicy 用于选择jit编译的方法或者代码块
135144
compilationPolicy_init();
136145
VMRegImpl::set_regName();
137146

138147
if (!universe_post_init()) {
139148
return JNI_ERR;
140149
}
150+
//计算/检查 jvm预加载的 java.lang.*等 well-known-class
151+
//保证java.lang包下类的正确性,不能轻易被修改,替换
152+
//初始化过field 过滤器
141153
javaClasses_init();// must happen after vtable initialization
142154
stubRoutines_init2();// note: StubRoutines need 2-phase init
143155

‎hotspot/src/share/vm/runtime/thread.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3126,6 +3126,7 @@ jint Threads::create_vm(JavaVMInitArgs* args, bool* canTryAgain) {
31263126
ObjectMonitor::Initialize() ;
31273127

31283128
// Initialize global modules
3129+
//初始化全局模块
31293130
jint status =init_globals();
31303131
if (status != JNI_OK) {
31313132
delete main_thread;

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp