157 address StubRoutines::_dpow = NULL;
158 address StubRoutines::_dsin = NULL;
159 address StubRoutines::_dcos = NULL;
160 address StubRoutines::_dlibm_sin_cos_huge = NULL;
161 address StubRoutines::_dlibm_reduce_pi04l = NULL;
162 address StubRoutines::_dlibm_tan_cot_huge = NULL;
163 address StubRoutines::_dtan = NULL;
164
165 double (* StubRoutines::_intrinsic_log10 )(double) = NULL;
166 double (* StubRoutines::_intrinsic_sin )(double) = NULL;
167 double (* StubRoutines::_intrinsic_cos )(double) = NULL;
168 double (* StubRoutines::_intrinsic_tan )(double) = NULL;
169
170 address StubRoutines::_safefetch32_entry = NULL;
171 address StubRoutines::_safefetch32_fault_pc = NULL;
172 address StubRoutines::_safefetch32_continuation_pc = NULL;
173 address StubRoutines::_safefetchN_entry = NULL;
174 address StubRoutines::_safefetchN_fault_pc = NULL;
175 address StubRoutines::_safefetchN_continuation_pc = NULL;
176
177 address StubRoutines::_shenandoah_wb_C = NULL;
178
179 // Initialization
180 //
181 // Note: to break cycle with universe initialization, stubs are generated in two phases.
182 // The first one generates stubs needed during universe init (e.g., _handle_must_compile_first_entry).
183 // The second phase includes all other stubs (which may depend on universe being initialized.)
184
185 extern void StubGenerator_generate(CodeBuffer* code, bool all); // only interface to generators
186
187 void StubRoutines::initialize1() {
188 if (_code1 == NULL) {
189 ResourceMark rm;
190 TraceTime timer("StubRoutines generation 1", TRACETIME_LOG(Info, startuptime));
191 _code1 = BufferBlob::create("StubRoutines (1)", code_size1);
192 if (_code1 == NULL) {
193 vm_exit_out_of_memory(code_size1, OOM_MALLOC_ERROR, "CodeCache: no room for StubRoutines (1)");
194 }
195 CodeBuffer buffer(_code1);
196 StubGenerator_generate(&buffer, false);
197 // When new stubs added we need to make sure there is some space left
198 // to catch situation when we should increase size again.
|
157 address StubRoutines::_dpow = NULL;
158 address StubRoutines::_dsin = NULL;
159 address StubRoutines::_dcos = NULL;
160 address StubRoutines::_dlibm_sin_cos_huge = NULL;
161 address StubRoutines::_dlibm_reduce_pi04l = NULL;
162 address StubRoutines::_dlibm_tan_cot_huge = NULL;
163 address StubRoutines::_dtan = NULL;
164
165 double (* StubRoutines::_intrinsic_log10 )(double) = NULL;
166 double (* StubRoutines::_intrinsic_sin )(double) = NULL;
167 double (* StubRoutines::_intrinsic_cos )(double) = NULL;
168 double (* StubRoutines::_intrinsic_tan )(double) = NULL;
169
170 address StubRoutines::_safefetch32_entry = NULL;
171 address StubRoutines::_safefetch32_fault_pc = NULL;
172 address StubRoutines::_safefetch32_continuation_pc = NULL;
173 address StubRoutines::_safefetchN_entry = NULL;
174 address StubRoutines::_safefetchN_fault_pc = NULL;
175 address StubRoutines::_safefetchN_continuation_pc = NULL;
176
177 // Initialization
178 //
179 // Note: to break cycle with universe initialization, stubs are generated in two phases.
180 // The first one generates stubs needed during universe init (e.g., _handle_must_compile_first_entry).
181 // The second phase includes all other stubs (which may depend on universe being initialized.)
182
183 extern void StubGenerator_generate(CodeBuffer* code, bool all); // only interface to generators
184
185 void StubRoutines::initialize1() {
186 if (_code1 == NULL) {
187 ResourceMark rm;
188 TraceTime timer("StubRoutines generation 1", TRACETIME_LOG(Info, startuptime));
189 _code1 = BufferBlob::create("StubRoutines (1)", code_size1);
190 if (_code1 == NULL) {
191 vm_exit_out_of_memory(code_size1, OOM_MALLOC_ERROR, "CodeCache: no room for StubRoutines (1)");
192 }
193 CodeBuffer buffer(_code1);
194 StubGenerator_generate(&buffer, false);
195 // When new stubs added we need to make sure there is some space left
196 // to catch situation when we should increase size again.
|