Mercurial > hg > graal-jvmci-8
comparison src/cpu/x86/vm/c1_LinearScan_x86.cpp @ 953:ff1a29907b6c
6855215: Calculation error (NaN) after about 1500 calculations
Reviewed-by: kvn
author | never |
---|---|
date | Mon, 31 Aug 2009 17:07:53 -0700 |
parents | a61af66fc99e |
children | c18cbe5936b8 |
comparison
equal
deleted
inserted
replaced
952:ace8397c8563 | 953:ff1a29907b6c |
---|---|
762 | 762 |
763 new_res = to_fpu_stack_top(res); | 763 new_res = to_fpu_stack_top(res); |
764 break; | 764 break; |
765 } | 765 } |
766 | 766 |
767 case lir_log: | |
768 case lir_log10: | |
769 case lir_abs: | 767 case lir_abs: |
770 case lir_sqrt: { | 768 case lir_sqrt: { |
771 // Right argument appears to be unused | 769 // Right argument appears to be unused |
772 assert(right->is_illegal(), "must be"); | 770 assert(right->is_illegal(), "must be"); |
773 assert(left->is_fpu_register(), "must be"); | 771 assert(left->is_fpu_register(), "must be"); |
780 | 778 |
781 new_left = to_fpu_stack_top(res); | 779 new_left = to_fpu_stack_top(res); |
782 new_res = new_left; | 780 new_res = new_left; |
783 | 781 |
784 op2->set_fpu_stack_size(sim()->stack_size()); | 782 op2->set_fpu_stack_size(sim()->stack_size()); |
783 break; | |
784 } | |
785 | |
786 case lir_log: | |
787 case lir_log10: { | |
788 // log and log10 needs one temporary fpu stack slot, so there is ontemporary | |
789 // registers stored in temp of the operation. | |
790 // the stack allocator must guarantee that the stack slots are really free, | |
791 // otherwise there might be a stack overflow. | |
792 assert(right->is_illegal(), "must be"); | |
793 assert(left->is_fpu_register(), "must be"); | |
794 assert(res->is_fpu_register(), "must be"); | |
795 assert(op2->tmp_opr()->is_fpu_register(), "must be"); | |
796 | |
797 insert_free_if_dead(op2->tmp_opr()); | |
798 insert_free_if_dead(res, left); | |
799 insert_exchange(left); | |
800 do_rename(left, res); | |
801 | |
802 new_left = to_fpu_stack_top(res); | |
803 new_res = new_left; | |
804 | |
805 op2->set_fpu_stack_size(sim()->stack_size()); | |
806 assert(sim()->stack_size() <= 7, "at least one stack slot must be free"); | |
785 break; | 807 break; |
786 } | 808 } |
787 | 809 |
788 | 810 |
789 case lir_tan: | 811 case lir_tan: |