< prev index next >
src/cpu/x86/vm/c1_LinearScan_x86.cpp
Print this page
*** 784,845 ****
op2->set_fpu_stack_size(sim()->stack_size());
break;
}
- case lir_log10: {
- // log and log10 need one temporary fpu stack slot, so
- // there is one temporary registers stored in temp of the
- // operation. the stack allocator must guarantee that the stack
- // slots are really free, otherwise there might be a stack
- // overflow.
- assert(right->is_illegal(), "must be");
- assert(left->is_fpu_register(), "must be");
- assert(res->is_fpu_register(), "must be");
- assert(op2->tmp1_opr()->is_fpu_register(), "must be");
-
- insert_free_if_dead(op2->tmp1_opr());
- insert_free_if_dead(res, left);
- insert_exchange(left);
- do_rename(left, res);
-
- new_left = to_fpu_stack_top(res);
- new_res = new_left;
-
- op2->set_fpu_stack_size(sim()->stack_size());
- assert(sim()->stack_size() <= 7, "at least one stack slot must be free");
- break;
- }
-
-
- case lir_tan: {
- // sin, cos and exp need two temporary fpu stack slots, so there are two temporary
- // registers (stored in right and temp of the operation).
- // the stack allocator must guarantee that the stack slots are really free,
- // otherwise there might be a stack overflow.
- assert(left->is_fpu_register(), "must be");
- assert(res->is_fpu_register(), "must be");
- // assert(left->is_last_use(), "old value gets destroyed");
- assert(right->is_fpu_register(), "right is used as the first temporary register");
- assert(op2->tmp1_opr()->is_fpu_register(), "temp is used as the second temporary register");
- assert(fpu_num(left) != fpu_num(right) && fpu_num(right) != fpu_num(op2->tmp1_opr()) && fpu_num(op2->tmp1_opr()) != fpu_num(res), "need distinct temp registers");
-
- insert_free_if_dead(right);
- insert_free_if_dead(op2->tmp1_opr());
-
- insert_free_if_dead(res, left);
- insert_exchange(left);
- do_rename(left, res);
-
- new_left = to_fpu_stack_top(res);
- new_res = new_left;
-
- op2->set_fpu_stack_size(sim()->stack_size());
- assert(sim()->stack_size() <= 6, "at least two stack slots must be free");
- break;
- }
-
default: {
assert(false, "missed a fpu-operation");
}
}
--- 784,793 ----
< prev index next >