YJIT: make type info more specific in gen_fixnum_cmp and gen_opt_mod (#7555)
This commit is contained in:
parent
7fc796f92a
commit
6ba07df490
Notes:
git
2023-03-17 20:17:20 +00:00
Merged-By: maximecb <maximecb@ruby-lang.org>
@ -2673,7 +2673,7 @@ fn gen_fixnum_cmp(
|
|||||||
let bool_opnd = cmov_op(asm, Qtrue.into(), Qfalse.into());
|
let bool_opnd = cmov_op(asm, Qtrue.into(), Qfalse.into());
|
||||||
|
|
||||||
// Push the output on the stack
|
// Push the output on the stack
|
||||||
let dst = ctx.stack_push(Type::Unknown);
|
let dst = ctx.stack_push(Type::UnknownImm);
|
||||||
asm.mov(dst, bool_opnd);
|
asm.mov(dst, bool_opnd);
|
||||||
|
|
||||||
KeepCompiling
|
KeepCompiling
|
||||||
@ -3297,7 +3297,8 @@ fn gen_opt_mod(
|
|||||||
let ret = asm.ccall(rb_fix_mod_fix as *const u8, vec![arg0, arg1]);
|
let ret = asm.ccall(rb_fix_mod_fix as *const u8, vec![arg0, arg1]);
|
||||||
|
|
||||||
// Push the return value onto the stack
|
// Push the return value onto the stack
|
||||||
let stack_ret = ctx.stack_push(Type::Unknown);
|
// When the two arguments are fixnums, the modulo output is always a fixnum
|
||||||
|
let stack_ret = ctx.stack_push(Type::Fixnum);
|
||||||
asm.mov(stack_ret, ret);
|
asm.mov(stack_ret, ret);
|
||||||
|
|
||||||
KeepCompiling
|
KeepCompiling
|
||||||
@ -5910,7 +5911,6 @@ fn gen_send_iseq(
|
|||||||
argc = lead_num;
|
argc = lead_num;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
if iseq_has_rest {
|
if iseq_has_rest {
|
||||||
|
|
||||||
// We are going to allocate so setting pc and sp.
|
// We are going to allocate so setting pc and sp.
|
||||||
|
Loading…
x
Reference in New Issue
Block a user