hotspot/src/share/vm/runtime/sharedRuntime.cpp
changeset 42608 14af45789042
parent 42575 bd1618170c93
child 42650 1f304d0c888b
equal deleted inserted replaced
42607:acd91f1875d4 42608:14af45789042
  2598 }
  2598 }
  2599 
  2599 
  2600 AdapterHandlerEntry* AdapterHandlerLibrary::get_adapter(const methodHandle& method) {
  2600 AdapterHandlerEntry* AdapterHandlerLibrary::get_adapter(const methodHandle& method) {
  2601   AdapterHandlerEntry* entry = get_adapter0(method);
  2601   AdapterHandlerEntry* entry = get_adapter0(method);
  2602   if (method->is_shared()) {
  2602   if (method->is_shared()) {
       
  2603     // See comments around Method::link_method()
  2603     MutexLocker mu(AdapterHandlerLibrary_lock);
  2604     MutexLocker mu(AdapterHandlerLibrary_lock);
  2604     if (method->adapter() == NULL) {
  2605     if (method->adapter() == NULL) {
  2605       method->update_adapter_trampoline(entry);
  2606       method->update_adapter_trampoline(entry);
  2606     }
  2607     }
  2607     address trampoline = method->from_compiled_entry();
  2608     address trampoline = method->from_compiled_entry();
  2608     if (*(int*)trampoline == 0) {
  2609     if (*(int*)trampoline == 0) {
  2609       CodeBuffer buffer(trampoline, (int)SharedRuntime::trampoline_size());
  2610       CodeBuffer buffer(trampoline, (int)SharedRuntime::trampoline_size());
  2610       MacroAssembler _masm(&buffer);
  2611       MacroAssembler _masm(&buffer);
  2611       SharedRuntime::generate_trampoline(&_masm, entry->get_c2i_entry());
  2612       SharedRuntime::generate_trampoline(&_masm, entry->get_c2i_entry());
       
  2613       assert(*(int*)trampoline != 0, "Instruction(s) for trampoline must not be encoded as zeros.");
  2612 
  2614 
  2613       if (PrintInterpreter) {
  2615       if (PrintInterpreter) {
  2614         Disassembler::decode(buffer.insts_begin(), buffer.insts_end());
  2616         Disassembler::decode(buffer.insts_begin(), buffer.insts_end());
  2615       }
  2617       }
  2616     }
  2618     }