< prev index next >

src/hotspot/cpu/s390/c1_Runtime1_s390.cpp

Print this page

568       __ z_lg(Rlength,     (i++)*BytesPerWord + frame::z_abi_160_size, Z_SP);
569       __ z_lg(Rarray_ptr,  (i++)*BytesPerWord + frame::z_abi_160_size, Z_SP);
570       assert(i*BytesPerWord + frame::z_abi_160_size == frame_size, "check");
571       __ pop_frame();
572       // return pc is still in R_14
573       __ load_const_optimized(Z_R0_scratch, 1); // One indicates a miss.
574       __ z_ltgr(Z_R0_scratch, Z_R0_scratch);    // Set CC 2 (bcondNotEqual will be true).
575       __ z_br(Z_R14);
576     }
577     break;
578     case monitorenter_nofpu_id:
579     case monitorenter_id:
580       { // Z_R1_scratch : object
581         // Z_R13       : lock address (see LIRGenerator::syncTempOpr())
582         __ set_info("monitorenter", dont_gc_arguments);
583 
584         int save_fpu_registers = (id == monitorenter_id);
585         // Make a frame and preserve the caller's caller-save registers.
586         OopMap* oop_map = save_live_registers(sasm, save_fpu_registers);
587 
588         int call_offset = __ call_RT(noreg, noreg, CAST_FROM_FN_PTR(address, monitorenter), Z_R1_scratch, Z_R13);
589 
590         oop_maps = new OopMapSet();
591         oop_maps->add_gc_map(call_offset, oop_map);
592         restore_live_registers(sasm, save_fpu_registers);
593 
594         __ z_br(Z_R14);
595       }
596       break;
597 
598     case monitorexit_nofpu_id:
599     case monitorexit_id:
600       { // Z_R1_scratch : lock address
601         // Note: really a leaf routine but must setup last java sp
602         //   => Use call_RT for now (speed can be improved by
603         //      doing last java sp setup manually).
604         __ set_info("monitorexit", dont_gc_arguments);
605 
606         int save_fpu_registers = (id == monitorexit_id);
607         // Make a frame and preserve the caller's caller-save registers.
608         OopMap* oop_map = save_live_registers(sasm, save_fpu_registers);

568       __ z_lg(Rlength,     (i++)*BytesPerWord + frame::z_abi_160_size, Z_SP);
569       __ z_lg(Rarray_ptr,  (i++)*BytesPerWord + frame::z_abi_160_size, Z_SP);
570       assert(i*BytesPerWord + frame::z_abi_160_size == frame_size, "check");
571       __ pop_frame();
572       // return pc is still in R_14
573       __ load_const_optimized(Z_R0_scratch, 1); // One indicates a miss.
574       __ z_ltgr(Z_R0_scratch, Z_R0_scratch);    // Set CC 2 (bcondNotEqual will be true).
575       __ z_br(Z_R14);
576     }
577     break;
578     case monitorenter_nofpu_id:
579     case monitorenter_id:
580       { // Z_R1_scratch : object
581         // Z_R13       : lock address (see LIRGenerator::syncTempOpr())
582         __ set_info("monitorenter", dont_gc_arguments);
583 
584         int save_fpu_registers = (id == monitorenter_id);
585         // Make a frame and preserve the caller's caller-save registers.
586         OopMap* oop_map = save_live_registers(sasm, save_fpu_registers);
587 
588         int call_offset = __ call_RT(noreg, noreg, CAST_FROM_FN_PTR(address, monitorenter), Z_R1_scratch);
589 
590         oop_maps = new OopMapSet();
591         oop_maps->add_gc_map(call_offset, oop_map);
592         restore_live_registers(sasm, save_fpu_registers);
593 
594         __ z_br(Z_R14);
595       }
596       break;
597 
598     case monitorexit_nofpu_id:
599     case monitorexit_id:
600       { // Z_R1_scratch : lock address
601         // Note: really a leaf routine but must setup last java sp
602         //   => Use call_RT for now (speed can be improved by
603         //      doing last java sp setup manually).
604         __ set_info("monitorexit", dont_gc_arguments);
605 
606         int save_fpu_registers = (id == monitorexit_id);
607         // Make a frame and preserve the caller's caller-save registers.
608         OopMap* oop_map = save_live_registers(sasm, save_fpu_registers);
< prev index next >