< prev index next >

src/hotspot/cpu/riscv/c1_Runtime1_riscv.cpp

Print this page

 866         __ pop_reg(RegSet::of(x10, x12, x14, x15), sp);
 867         __ ret();
 868 
 869         __ bind(miss);
 870         __ sd(zr, Address(sp, (result_off) * VMRegImpl::stack_slot_size)); // result
 871         __ pop_reg(RegSet::of(x10, x12, x14, x15), sp);
 872         __ ret();
 873       }
 874       break;
 875 
 876     case monitorenter_nofpu_id:
 877       save_fpu_registers = false;
 878       // fall through
 879     case monitorenter_id:
 880       {
 881         StubFrame f(sasm, "monitorenter", dont_gc_arguments);
 882         OopMap* map = save_live_registers(sasm, save_fpu_registers);
 883         assert_cond(map != NULL);
 884 
 885         // Called with store_parameter and not C abi
 886         f.load_argument(1, x10); // x10: object
 887         f.load_argument(0, x11); // x11: lock address
 888 
 889         int call_offset = __ call_RT(noreg, noreg, CAST_FROM_FN_PTR(address, monitorenter), x10, x11);
 890 
 891         oop_maps = new OopMapSet();
 892         assert_cond(oop_maps != NULL);
 893         oop_maps->add_gc_map(call_offset, map);
 894         restore_live_registers(sasm, save_fpu_registers);
 895       }
 896       break;
 897 
 898     case monitorexit_nofpu_id:
 899       save_fpu_registers = false;
 900       // fall through
 901     case monitorexit_id:
 902       {
 903         StubFrame f(sasm, "monitorexit", dont_gc_arguments);
 904         OopMap* map = save_live_registers(sasm, save_fpu_registers);
 905         assert_cond(map != NULL);
 906 
 907         // Called with store_parameter and not C abi
 908         f.load_argument(0, x10); // x10: lock address
 909 
 910         // note: really a leaf routine but must setup last java sp
 911         //       => use call_RT for now (speed can be improved by
 912         //       doing last java sp setup manually)
 913         int call_offset = __ call_RT(noreg, noreg, CAST_FROM_FN_PTR(address, monitorexit), x10);
 914 
 915         oop_maps = new OopMapSet();
 916         assert_cond(oop_maps != NULL);
 917         oop_maps->add_gc_map(call_offset, map);
 918         restore_live_registers(sasm, save_fpu_registers);
 919       }
 920       break;
 921 
 922     case deoptimize_id:
 923       {
 924         StubFrame f(sasm, "deoptimize", dont_gc_arguments, does_not_return);
 925         OopMap* oop_map = save_live_registers(sasm);
 926         assert_cond(oop_map != NULL);
 927         f.load_argument(0, c_rarg1);
 928         int call_offset = __ call_RT(noreg, noreg, CAST_FROM_FN_PTR(address, deoptimize), c_rarg1);

 866         __ pop_reg(RegSet::of(x10, x12, x14, x15), sp);
 867         __ ret();
 868 
 869         __ bind(miss);
 870         __ sd(zr, Address(sp, (result_off) * VMRegImpl::stack_slot_size)); // result
 871         __ pop_reg(RegSet::of(x10, x12, x14, x15), sp);
 872         __ ret();
 873       }
 874       break;
 875 
 876     case monitorenter_nofpu_id:
 877       save_fpu_registers = false;
 878       // fall through
 879     case monitorenter_id:
 880       {
 881         StubFrame f(sasm, "monitorenter", dont_gc_arguments);
 882         OopMap* map = save_live_registers(sasm, save_fpu_registers);
 883         assert_cond(map != NULL);
 884 
 885         // Called with store_parameter and not C abi
 886         f.load_argument(0, x10); // x10: object

 887 
 888         int call_offset = __ call_RT(noreg, noreg, CAST_FROM_FN_PTR(address, monitorenter), x10);
 889 
 890         oop_maps = new OopMapSet();
 891         assert_cond(oop_maps != NULL);
 892         oop_maps->add_gc_map(call_offset, map);
 893         restore_live_registers(sasm, save_fpu_registers);
 894       }
 895       break;
 896 
 897     case monitorexit_nofpu_id:
 898       save_fpu_registers = false;
 899       // fall through
 900     case monitorexit_id:
 901       {
 902         StubFrame f(sasm, "monitorexit", dont_gc_arguments);
 903         OopMap* map = save_live_registers(sasm, save_fpu_registers);
 904         assert_cond(map != NULL);
 905 
 906         // Called with store_parameter and not C abi
 907         f.load_argument(0, x10); // x10: object
 908 
 909         // note: really a leaf routine but must setup last java sp
 910         //       => use call_RT for now (speed can be improved by
 911         //       doing last java sp setup manually)
 912         int call_offset = __ call_RT(noreg, noreg, CAST_FROM_FN_PTR(address, monitorexit), x10);
 913 
 914         oop_maps = new OopMapSet();
 915         assert_cond(oop_maps != NULL);
 916         oop_maps->add_gc_map(call_offset, map);
 917         restore_live_registers(sasm, save_fpu_registers);
 918       }
 919       break;
 920 
 921     case deoptimize_id:
 922       {
 923         StubFrame f(sasm, "deoptimize", dont_gc_arguments, does_not_return);
 924         OopMap* oop_map = save_live_registers(sasm);
 925         assert_cond(oop_map != NULL);
 926         f.load_argument(0, c_rarg1);
 927         int call_offset = __ call_RT(noreg, noreg, CAST_FROM_FN_PTR(address, deoptimize), c_rarg1);
< prev index next >