< prev index next >

src/hotspot/share/c1/c1_LIRAssembler.cpp

Print this page

741         op->result_opr());
742       break;
743 
744     case lir_throw:
745       throw_op(op->in_opr1(), op->in_opr2(), op->info());
746       break;
747 
748     case lir_xadd:
749     case lir_xchg:
750       atomic_op(op->code(), op->in_opr1(), op->in_opr2(), op->result_opr(), op->tmp1_opr());
751       break;
752 
753     default:
754       Unimplemented();
755       break;
756   }
757 }
758 
759 
760 void LIR_Assembler::build_frame() {
761   _masm->build_frame(initial_frame_size_in_bytes(), bang_size_in_bytes());
762 }
763 
764 
765 void LIR_Assembler::roundfp_op(LIR_Opr src, LIR_Opr tmp, LIR_Opr dest, bool pop_fpu_stack) {
766   assert(strict_fp_requires_explicit_rounding, "not required");
767   assert((src->is_single_fpu() && dest->is_single_stack()) ||
768          (src->is_double_fpu() && dest->is_double_stack()),
769          "round_fp: rounds register -> stack location");
770 
771   reg2stack (src, dest, src->type(), pop_fpu_stack);
772 }
773 
774 
775 void LIR_Assembler::move_op(LIR_Opr src, LIR_Opr dest, BasicType type, LIR_PatchCode patch_code, CodeEmitInfo* info, bool pop_fpu_stack, bool unaligned, bool wide) {
776   if (src->is_register()) {
777     if (dest->is_register()) {
778       assert(patch_code == lir_patch_none && info == NULL, "no patching and info allowed here");
779       reg2reg(src,  dest);
780     } else if (dest->is_stack()) {
781       assert(patch_code == lir_patch_none && info == NULL, "no patching and info allowed here");

741         op->result_opr());
742       break;
743 
744     case lir_throw:
745       throw_op(op->in_opr1(), op->in_opr2(), op->info());
746       break;
747 
748     case lir_xadd:
749     case lir_xchg:
750       atomic_op(op->code(), op->in_opr1(), op->in_opr2(), op->result_opr(), op->tmp1_opr());
751       break;
752 
753     default:
754       Unimplemented();
755       break;
756   }
757 }
758 
759 
760 void LIR_Assembler::build_frame() {
761   _masm->build_frame(initial_frame_size_in_bytes(), bang_size_in_bytes(), compilation()->max_monitors());
762 }
763 
764 
765 void LIR_Assembler::roundfp_op(LIR_Opr src, LIR_Opr tmp, LIR_Opr dest, bool pop_fpu_stack) {
766   assert(strict_fp_requires_explicit_rounding, "not required");
767   assert((src->is_single_fpu() && dest->is_single_stack()) ||
768          (src->is_double_fpu() && dest->is_double_stack()),
769          "round_fp: rounds register -> stack location");
770 
771   reg2stack (src, dest, src->type(), pop_fpu_stack);
772 }
773 
774 
775 void LIR_Assembler::move_op(LIR_Opr src, LIR_Opr dest, BasicType type, LIR_PatchCode patch_code, CodeEmitInfo* info, bool pop_fpu_stack, bool unaligned, bool wide) {
776   if (src->is_register()) {
777     if (dest->is_register()) {
778       assert(patch_code == lir_patch_none && info == NULL, "no patching and info allowed here");
779       reg2reg(src,  dest);
780     } else if (dest->is_stack()) {
781       assert(patch_code == lir_patch_none && info == NULL, "no patching and info allowed here");
< prev index next >