1 /*
2 * Copyright (c) 1997, 2016, Oracle and/or its affiliates. All rights reserved.
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4 *
5 * This code is free software; you can redistribute it and/or modify it
6 * under the terms of the GNU General Public License version 2 only, as
7 * published by the Free Software Foundation.
8 *
9 * This code is distributed in the hope that it will be useful, but WITHOUT
10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
11 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
12 * version 2 for more details (a copy is included in the LICENSE file that
13 * accompanied this code).
14 *
15 * You should have received a copy of the GNU General Public License version
16 * 2 along with this work; if not, write to the Free Software Foundation,
17 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
18 *
19 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
20 * or visit www.oracle.com if you need additional information or have any
21 * questions.
22 *
41
42
43 // Initialization done by VM thread in vm_init_globals()
44 void check_ThreadShadow();
45 void eventlog_init();
46 void mutex_init();
47 void chunkpool_init();
48 void perfMemory_init();
49 void SuspendibleThreadSet_init() NOT_ALL_GCS_RETURN;
50
51 // Initialization done by Java thread in init_globals()
52 void management_init();
53 void bytecodes_init();
54 void classLoader_init1();
55 void compilationPolicy_init();
56 void codeCache_init();
57 void VM_Version_init();
58 void os_init_globals(); // depends on VM_Version_init, before universe_init
59 void stubRoutines_init1();
60 jint universe_init(); // depends on codeCache_init and stubRoutines_init
61 void interpreter_init(); // before any methods loaded
62 void invocationCounter_init(); // before any methods loaded
63 void marksweep_init();
64 void accessFlags_init();
65 void templateTable_init();
66 void InterfaceSupport_init();
67 void universe2_init(); // dependent on codeCache_init and stubRoutines_init, loads primordial classes
68 void referenceProcessor_init();
69 void jni_handles_init();
70 void vmStructs_init();
71
72 void vtableStubs_init();
73 void InlineCacheBuffer_init();
74 void compilerOracle_init();
75 bool compileBroker_init();
76 void dependencyContext_init();
77
78 // Initialization after compiler initialization
79 bool universe_post_init(); // must happen after compiler_init
80 void javaClasses_init(); // must happen after vtable initialization
95 perfMemory_init();
96 SuspendibleThreadSet_init();
97 }
98
99
100 jint init_globals() {
101 HandleMark hm;
102 management_init();
103 bytecodes_init();
104 classLoader_init1();
105 compilationPolicy_init();
106 codeCache_init();
107 VM_Version_init();
108 os_init_globals();
109 stubRoutines_init1();
110 jint status = universe_init(); // dependent on codeCache_init and
111 // stubRoutines_init1 and metaspace_init.
112 if (status != JNI_OK)
113 return status;
114
115 interpreter_init(); // before any methods loaded
116 invocationCounter_init(); // before any methods loaded
117 marksweep_init();
118 accessFlags_init();
119 templateTable_init();
120 InterfaceSupport_init();
121 SharedRuntime::generate_stubs();
122 universe2_init(); // dependent on codeCache_init and stubRoutines_init1
123 referenceProcessor_init();
124 jni_handles_init();
125 #if INCLUDE_VM_STRUCTS
126 vmStructs_init();
127 #endif // INCLUDE_VM_STRUCTS
128
129 vtableStubs_init();
130 InlineCacheBuffer_init();
131 compilerOracle_init();
132 dependencyContext_init();
133
134 if (!compileBroker_init()) {
|
1 /*
2 * Copyright (c) 1997, 2017, Oracle and/or its affiliates. All rights reserved.
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4 *
5 * This code is free software; you can redistribute it and/or modify it
6 * under the terms of the GNU General Public License version 2 only, as
7 * published by the Free Software Foundation.
8 *
9 * This code is distributed in the hope that it will be useful, but WITHOUT
10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
11 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
12 * version 2 for more details (a copy is included in the LICENSE file that
13 * accompanied this code).
14 *
15 * You should have received a copy of the GNU General Public License version
16 * 2 along with this work; if not, write to the Free Software Foundation,
17 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
18 *
19 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
20 * or visit www.oracle.com if you need additional information or have any
21 * questions.
22 *
41
42
43 // Initialization done by VM thread in vm_init_globals()
44 void check_ThreadShadow();
45 void eventlog_init();
46 void mutex_init();
47 void chunkpool_init();
48 void perfMemory_init();
49 void SuspendibleThreadSet_init() NOT_ALL_GCS_RETURN;
50
51 // Initialization done by Java thread in init_globals()
52 void management_init();
53 void bytecodes_init();
54 void classLoader_init1();
55 void compilationPolicy_init();
56 void codeCache_init();
57 void VM_Version_init();
58 void os_init_globals(); // depends on VM_Version_init, before universe_init
59 void stubRoutines_init1();
60 jint universe_init(); // depends on codeCache_init and stubRoutines_init
61 #if INCLUDE_ALL_GCS
62 void g1_barrier_stubs_init(); // depends on universe_init, must be before interpreter_init
63 #endif
64 void interpreter_init(); // before any methods loaded
65 void invocationCounter_init(); // before any methods loaded
66 void marksweep_init();
67 void accessFlags_init();
68 void templateTable_init();
69 void InterfaceSupport_init();
70 void universe2_init(); // dependent on codeCache_init and stubRoutines_init, loads primordial classes
71 void referenceProcessor_init();
72 void jni_handles_init();
73 void vmStructs_init();
74
75 void vtableStubs_init();
76 void InlineCacheBuffer_init();
77 void compilerOracle_init();
78 bool compileBroker_init();
79 void dependencyContext_init();
80
81 // Initialization after compiler initialization
82 bool universe_post_init(); // must happen after compiler_init
83 void javaClasses_init(); // must happen after vtable initialization
98 perfMemory_init();
99 SuspendibleThreadSet_init();
100 }
101
102
103 jint init_globals() {
104 HandleMark hm;
105 management_init();
106 bytecodes_init();
107 classLoader_init1();
108 compilationPolicy_init();
109 codeCache_init();
110 VM_Version_init();
111 os_init_globals();
112 stubRoutines_init1();
113 jint status = universe_init(); // dependent on codeCache_init and
114 // stubRoutines_init1 and metaspace_init.
115 if (status != JNI_OK)
116 return status;
117
118 #if INCLUDE_ALL_GCS
119 g1_barrier_stubs_init(); // depends on universe_init, must be before interpreter_init
120 #endif
121 interpreter_init(); // before any methods loaded
122 invocationCounter_init(); // before any methods loaded
123 marksweep_init();
124 accessFlags_init();
125 templateTable_init();
126 InterfaceSupport_init();
127 SharedRuntime::generate_stubs();
128 universe2_init(); // dependent on codeCache_init and stubRoutines_init1
129 referenceProcessor_init();
130 jni_handles_init();
131 #if INCLUDE_VM_STRUCTS
132 vmStructs_init();
133 #endif // INCLUDE_VM_STRUCTS
134
135 vtableStubs_init();
136 InlineCacheBuffer_init();
137 compilerOracle_init();
138 dependencyContext_init();
139
140 if (!compileBroker_init()) {
|