src/cpu/sparc/vm/c1_Runtime1_sparc.cpp
Index Unified diffs Context diffs Sdiffs Patch New Old Previous File Next File hotspot Sdiff src/cpu/sparc/vm

src/cpu/sparc/vm/c1_Runtime1_sparc.cpp

Print this page
rev 5100 : 7199175: JSR 292: C1 needs patching when invokedynamic/invokehandle call site is not linked
Summary: Do patching rather bailing out for unlinked call with appendix
Reviewed-by: twisti, kvn


 787       break;
 788 
 789     case access_field_patching_id:
 790       { __ set_info("access_field_patching", dont_gc_arguments);
 791         oop_maps = generate_patching(sasm, CAST_FROM_FN_PTR(address, access_field_patching));
 792       }
 793       break;
 794 
 795     case load_klass_patching_id:
 796       { __ set_info("load_klass_patching", dont_gc_arguments);
 797         oop_maps = generate_patching(sasm, CAST_FROM_FN_PTR(address, move_klass_patching));
 798       }
 799       break;
 800 
 801     case load_mirror_patching_id:
 802       { __ set_info("load_mirror_patching", dont_gc_arguments);
 803         oop_maps = generate_patching(sasm, CAST_FROM_FN_PTR(address, move_mirror_patching));
 804       }
 805       break;
 806 






 807     case dtrace_object_alloc_id:
 808       { // O0: object
 809         __ set_info("dtrace_object_alloc", dont_gc_arguments);
 810         // we can't gc here so skip the oopmap but make sure that all
 811         // the live registers get saved.
 812         save_live_registers(sasm);
 813 
 814         __ save_thread(L7_thread_cache);
 815         __ call(CAST_FROM_FN_PTR(address, SharedRuntime::dtrace_object_alloc),
 816                 relocInfo::runtime_call_type);
 817         __ delayed()->mov(I0, O0);
 818         __ restore_thread(L7_thread_cache);
 819 
 820         restore_live_registers(sasm);
 821         __ ret();
 822         __ delayed()->restore();
 823       }
 824       break;
 825 
 826 #if INCLUDE_ALL_GCS




 787       break;
 788 
 789     case access_field_patching_id:
 790       { __ set_info("access_field_patching", dont_gc_arguments);
 791         oop_maps = generate_patching(sasm, CAST_FROM_FN_PTR(address, access_field_patching));
 792       }
 793       break;
 794 
 795     case load_klass_patching_id:
 796       { __ set_info("load_klass_patching", dont_gc_arguments);
 797         oop_maps = generate_patching(sasm, CAST_FROM_FN_PTR(address, move_klass_patching));
 798       }
 799       break;
 800 
 801     case load_mirror_patching_id:
 802       { __ set_info("load_mirror_patching", dont_gc_arguments);
 803         oop_maps = generate_patching(sasm, CAST_FROM_FN_PTR(address, move_mirror_patching));
 804       }
 805       break;
 806 
 807     case load_appendix_patching_id:
 808       { __ set_info("load_appendix_patching", dont_gc_arguments);
 809         oop_maps = generate_patching(sasm, CAST_FROM_FN_PTR(address, move_appendix_patching));
 810       }
 811       break;
 812 
 813     case dtrace_object_alloc_id:
 814       { // O0: object
 815         __ set_info("dtrace_object_alloc", dont_gc_arguments);
 816         // we can't gc here so skip the oopmap but make sure that all
 817         // the live registers get saved.
 818         save_live_registers(sasm);
 819 
 820         __ save_thread(L7_thread_cache);
 821         __ call(CAST_FROM_FN_PTR(address, SharedRuntime::dtrace_object_alloc),
 822                 relocInfo::runtime_call_type);
 823         __ delayed()->mov(I0, O0);
 824         __ restore_thread(L7_thread_cache);
 825 
 826         restore_live_registers(sasm);
 827         __ ret();
 828         __ delayed()->restore();
 829       }
 830       break;
 831 
 832 #if INCLUDE_ALL_GCS


src/cpu/sparc/vm/c1_Runtime1_sparc.cpp
Index Unified diffs Context diffs Sdiffs Patch New Old Previous File Next File