241 _oop_got = (oop*) _lib->load_symbol("JVM.oop.got");
242 _oop_got_size = _lib->header()->_oop_got_size;
243
244 // Collect stubs info
245 _stubs_offsets = (int*) _lib->load_symbol("JVM.stubs.offsets");
246
247 // code segments table
248 _code_segments = (address) _lib->load_symbol("JVM.code.segments");
249
250 // method state
251 _method_state = (jlong*) _lib->load_symbol("JVM.meth.state");
252
253 // Create a table for mapping classes
254 _classes = NEW_C_HEAP_ARRAY(AOTClass, _class_count, mtCode);
255 memset(_classes, 0, _class_count * sizeof(AOTClass));
256
257 // Create table for searching AOTCompiledMethod based on pc.
258 _code_to_aot = NEW_C_HEAP_ARRAY(CodeToAMethod, _method_count, mtCode);
259 memset(_code_to_aot, 0, _method_count * sizeof(CodeToAMethod));
260
261 _low_boundary = _code_space;
262 _memory.set_low_boundary((char *)_code_space);
263 _memory.set_high_boundary((char *)_code_space);
264 _memory.set_low((char *)_code_space);
265 _memory.set_high((char *)_code_space);
266
267 _segmap.set_low_boundary((char *)_code_segments);
268 _segmap.set_low((char *)_code_segments);
269
270 _log2_segment_size = exact_log2(_lib->config()->_codeSegmentSize);
271
272 // Register aot stubs
273 register_stubs();
274
275 if (PrintAOT || (PrintCompilation && PrintAOT)) {
276 tty->print("%7d ", (int) tty->time_stamp().milliseconds());
277 tty->print_cr("%4d loaded %s aot library", _lib->id(), _lib->name());
278 }
279 }
280
281 void AOTCodeHeap::publish_aot(const methodHandle& mh, AOTMethodData* method_data, int code_id) {
|
241 _oop_got = (oop*) _lib->load_symbol("JVM.oop.got");
242 _oop_got_size = _lib->header()->_oop_got_size;
243
244 // Collect stubs info
245 _stubs_offsets = (int*) _lib->load_symbol("JVM.stubs.offsets");
246
247 // code segments table
248 _code_segments = (address) _lib->load_symbol("JVM.code.segments");
249
250 // method state
251 _method_state = (jlong*) _lib->load_symbol("JVM.meth.state");
252
253 // Create a table for mapping classes
254 _classes = NEW_C_HEAP_ARRAY(AOTClass, _class_count, mtCode);
255 memset(_classes, 0, _class_count * sizeof(AOTClass));
256
257 // Create table for searching AOTCompiledMethod based on pc.
258 _code_to_aot = NEW_C_HEAP_ARRAY(CodeToAMethod, _method_count, mtCode);
259 memset(_code_to_aot, 0, _method_count * sizeof(CodeToAMethod));
260
261 _memory.set_low_boundary((char *)_code_space);
262 _memory.set_high_boundary((char *)_code_space);
263 _memory.set_low((char *)_code_space);
264 _memory.set_high((char *)_code_space);
265
266 _segmap.set_low_boundary((char *)_code_segments);
267 _segmap.set_low((char *)_code_segments);
268
269 _log2_segment_size = exact_log2(_lib->config()->_codeSegmentSize);
270
271 // Register aot stubs
272 register_stubs();
273
274 if (PrintAOT || (PrintCompilation && PrintAOT)) {
275 tty->print("%7d ", (int) tty->time_stamp().milliseconds());
276 tty->print_cr("%4d loaded %s aot library", _lib->id(), _lib->name());
277 }
278 }
279
280 void AOTCodeHeap::publish_aot(const methodHandle& mh, AOTMethodData* method_data, int code_id) {
|