712 assert(op2->_result->is_illegal(), "no result"); 713 assert(op2->_tmp2->is_illegal() && op2->_tmp3->is_illegal() && 714 op2->_tmp4->is_illegal() && op2->_tmp5->is_illegal(), "not used"); 715 716 break; 717 } 718 719 case lir_unwind: { 720 assert(op->as_Op1() != NULL, "must be"); 721 LIR_Op1* op1 = (LIR_Op1*)op; 722 723 assert(op1->_info == NULL, "no info"); 724 assert(op1->_opr->is_valid(), "exception oop"); do_input(op1->_opr); 725 assert(op1->_result->is_illegal(), "no result"); 726 727 break; 728 } 729 730 731 case lir_tan: 732 case lir_sin: 733 case lir_cos: 734 case lir_log10: { 735 assert(op->as_Op2() != NULL, "must be"); 736 LIR_Op2* op2 = (LIR_Op2*)op; 737 738 // On x86 tan/sin/cos need two temporary fpu stack slots and 739 // log/log10 need one so handle opr2 and tmp as temp inputs. 740 // Register input operand as temp to guarantee that it doesn't 741 // overlap with the input. 742 assert(op2->_info == NULL, "not used"); 743 assert(op2->_tmp5->is_illegal(), "not used"); 744 assert(op2->_opr1->is_valid(), "used"); 745 do_input(op2->_opr1); do_temp(op2->_opr1); 746 747 if (op2->_opr2->is_valid()) do_temp(op2->_opr2); 748 if (op2->_tmp1->is_valid()) do_temp(op2->_tmp1); 749 if (op2->_tmp2->is_valid()) do_temp(op2->_tmp2); 750 if (op2->_tmp3->is_valid()) do_temp(op2->_tmp3); 751 if (op2->_tmp4->is_valid()) do_temp(op2->_tmp4); 752 if (op2->_result->is_valid()) do_output(op2->_result); 753 1748 case lir_convert: s = "convert"; break; 1749 case lir_alloc_object: s = "alloc_obj"; break; 1750 case lir_monaddr: s = "mon_addr"; break; 1751 case lir_pack64: s = "pack64"; break; 1752 case lir_unpack64: s = "unpack64"; break; 1753 // LIR_Op2 1754 case lir_cmp: s = "cmp"; break; 1755 case lir_cmp_l2i: s = "cmp_l2i"; break; 1756 case lir_ucmp_fd2i: s = "ucomp_fd2i"; break; 1757 case lir_cmp_fd2i: s = "comp_fd2i"; break; 1758 case lir_cmove: s = "cmove"; break; 1759 case lir_add: s = "add"; break; 1760 case lir_sub: s = "sub"; break; 1761 case lir_mul: s = "mul"; break; 1762 case lir_mul_strictfp: s = "mul_strictfp"; break; 1763 case lir_div: s = "div"; break; 1764 case lir_div_strictfp: s = "div_strictfp"; break; 1765 case lir_rem: s = "rem"; break; 1766 case lir_abs: s = "abs"; break; 1767 case lir_sqrt: s = "sqrt"; break; 1768 case lir_sin: s = "sin"; break; 1769 case lir_cos: s = "cos"; break; 1770 case lir_tan: s = "tan"; break; 1771 case lir_log10: s = "log10"; break; 1772 case lir_pow: s = "pow"; break; 1773 case lir_logic_and: s = "logic_and"; break; 1774 case lir_logic_or: s = "logic_or"; break; 1775 case lir_logic_xor: s = "logic_xor"; break; 1776 case lir_shl: s = "shift_left"; break; 1777 case lir_shr: s = "shift_right"; break; 1778 case lir_ushr: s = "ushift_right"; break; 1779 case lir_alloc_array: s = "alloc_array"; break; 1780 case lir_xadd: s = "xadd"; break; 1781 case lir_xchg: s = "xchg"; break; 1782 // LIR_Op3 1783 case lir_idiv: s = "idiv"; break; 1784 case lir_irem: s = "irem"; break; 1785 // LIR_OpJavaCall 1786 case lir_static_call: s = "static"; break; 1787 case lir_optvirtual_call: s = "optvirtual"; break; 1788 case lir_icvirtual_call: s = "icvirtual"; break; 1789 case lir_virtual_call: s = "virtual"; break; | 712 assert(op2->_result->is_illegal(), "no result"); 713 assert(op2->_tmp2->is_illegal() && op2->_tmp3->is_illegal() && 714 op2->_tmp4->is_illegal() && op2->_tmp5->is_illegal(), "not used"); 715 716 break; 717 } 718 719 case lir_unwind: { 720 assert(op->as_Op1() != NULL, "must be"); 721 LIR_Op1* op1 = (LIR_Op1*)op; 722 723 assert(op1->_info == NULL, "no info"); 724 assert(op1->_opr->is_valid(), "exception oop"); do_input(op1->_opr); 725 assert(op1->_result->is_illegal(), "no result"); 726 727 break; 728 } 729 730 731 case lir_tan: 732 case lir_log10: { 733 assert(op->as_Op2() != NULL, "must be"); 734 LIR_Op2* op2 = (LIR_Op2*)op; 735 736 // On x86 tan/sin/cos need two temporary fpu stack slots and 737 // log/log10 need one so handle opr2 and tmp as temp inputs. 738 // Register input operand as temp to guarantee that it doesn't 739 // overlap with the input. 740 assert(op2->_info == NULL, "not used"); 741 assert(op2->_tmp5->is_illegal(), "not used"); 742 assert(op2->_opr1->is_valid(), "used"); 743 do_input(op2->_opr1); do_temp(op2->_opr1); 744 745 if (op2->_opr2->is_valid()) do_temp(op2->_opr2); 746 if (op2->_tmp1->is_valid()) do_temp(op2->_tmp1); 747 if (op2->_tmp2->is_valid()) do_temp(op2->_tmp2); 748 if (op2->_tmp3->is_valid()) do_temp(op2->_tmp3); 749 if (op2->_tmp4->is_valid()) do_temp(op2->_tmp4); 750 if (op2->_result->is_valid()) do_output(op2->_result); 751 1746 case lir_convert: s = "convert"; break; 1747 case lir_alloc_object: s = "alloc_obj"; break; 1748 case lir_monaddr: s = "mon_addr"; break; 1749 case lir_pack64: s = "pack64"; break; 1750 case lir_unpack64: s = "unpack64"; break; 1751 // LIR_Op2 1752 case lir_cmp: s = "cmp"; break; 1753 case lir_cmp_l2i: s = "cmp_l2i"; break; 1754 case lir_ucmp_fd2i: s = "ucomp_fd2i"; break; 1755 case lir_cmp_fd2i: s = "comp_fd2i"; break; 1756 case lir_cmove: s = "cmove"; break; 1757 case lir_add: s = "add"; break; 1758 case lir_sub: s = "sub"; break; 1759 case lir_mul: s = "mul"; break; 1760 case lir_mul_strictfp: s = "mul_strictfp"; break; 1761 case lir_div: s = "div"; break; 1762 case lir_div_strictfp: s = "div_strictfp"; break; 1763 case lir_rem: s = "rem"; break; 1764 case lir_abs: s = "abs"; break; 1765 case lir_sqrt: s = "sqrt"; break; 1766 case lir_tan: s = "tan"; break; 1767 case lir_log10: s = "log10"; break; 1768 case lir_pow: s = "pow"; break; 1769 case lir_logic_and: s = "logic_and"; break; 1770 case lir_logic_or: s = "logic_or"; break; 1771 case lir_logic_xor: s = "logic_xor"; break; 1772 case lir_shl: s = "shift_left"; break; 1773 case lir_shr: s = "shift_right"; break; 1774 case lir_ushr: s = "ushift_right"; break; 1775 case lir_alloc_array: s = "alloc_array"; break; 1776 case lir_xadd: s = "xadd"; break; 1777 case lir_xchg: s = "xchg"; break; 1778 // LIR_Op3 1779 case lir_idiv: s = "idiv"; break; 1780 case lir_irem: s = "irem"; break; 1781 // LIR_OpJavaCall 1782 case lir_static_call: s = "static"; break; 1783 case lir_optvirtual_call: s = "optvirtual"; break; 1784 case lir_icvirtual_call: s = "icvirtual"; break; 1785 case lir_virtual_call: s = "virtual"; break; |