< prev index next >

src/hotspot/share/c1/c1_LIRAssembler.cpp

Print this page

754 
755     default:
756       Unimplemented();
757       break;
758   }
759 }
760 
761 void LIR_Assembler::emit_op4(LIR_Op4* op) {
762   switch(op->code()) {
763     case lir_cmove:
764       cmove(op->condition(), op->in_opr1(), op->in_opr2(), op->result_opr(), op->type(), op->in_opr3(), op->in_opr4());
765       break;
766 
767     default:
768       Unimplemented();
769       break;
770   }
771 }
772 
773 void LIR_Assembler::build_frame() {
774   _masm->build_frame(initial_frame_size_in_bytes(), bang_size_in_bytes());
775 }
776 
777 
778 void LIR_Assembler::roundfp_op(LIR_Opr src, LIR_Opr tmp, LIR_Opr dest, bool pop_fpu_stack) {
779   assert(strict_fp_requires_explicit_rounding, "not required");
780   assert((src->is_single_fpu() && dest->is_single_stack()) ||
781          (src->is_double_fpu() && dest->is_double_stack()),
782          "round_fp: rounds register -> stack location");
783 
784   reg2stack (src, dest, src->type(), pop_fpu_stack);
785 }
786 
787 
788 void LIR_Assembler::move_op(LIR_Opr src, LIR_Opr dest, BasicType type, LIR_PatchCode patch_code, CodeEmitInfo* info, bool pop_fpu_stack, bool wide) {
789   if (src->is_register()) {
790     if (dest->is_register()) {
791       assert(patch_code == lir_patch_none && info == NULL, "no patching and info allowed here");
792       reg2reg(src,  dest);
793     } else if (dest->is_stack()) {
794       assert(patch_code == lir_patch_none && info == NULL, "no patching and info allowed here");

754 
755     default:
756       Unimplemented();
757       break;
758   }
759 }
760 
761 void LIR_Assembler::emit_op4(LIR_Op4* op) {
762   switch(op->code()) {
763     case lir_cmove:
764       cmove(op->condition(), op->in_opr1(), op->in_opr2(), op->result_opr(), op->type(), op->in_opr3(), op->in_opr4());
765       break;
766 
767     default:
768       Unimplemented();
769       break;
770   }
771 }
772 
773 void LIR_Assembler::build_frame() {
774   _masm->build_frame(initial_frame_size_in_bytes(), bang_size_in_bytes(), compilation()->max_monitors());
775 }
776 
777 
778 void LIR_Assembler::roundfp_op(LIR_Opr src, LIR_Opr tmp, LIR_Opr dest, bool pop_fpu_stack) {
779   assert(strict_fp_requires_explicit_rounding, "not required");
780   assert((src->is_single_fpu() && dest->is_single_stack()) ||
781          (src->is_double_fpu() && dest->is_double_stack()),
782          "round_fp: rounds register -> stack location");
783 
784   reg2stack (src, dest, src->type(), pop_fpu_stack);
785 }
786 
787 
788 void LIR_Assembler::move_op(LIR_Opr src, LIR_Opr dest, BasicType type, LIR_PatchCode patch_code, CodeEmitInfo* info, bool pop_fpu_stack, bool wide) {
789   if (src->is_register()) {
790     if (dest->is_register()) {
791       assert(patch_code == lir_patch_none && info == NULL, "no patching and info allowed here");
792       reg2reg(src,  dest);
793     } else if (dest->is_stack()) {
794       assert(patch_code == lir_patch_none && info == NULL, "no patching and info allowed here");
< prev index next >