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