Skip to content

Commit 8cb7202

Browse files
committed
Use uint64 registers for unsigned arguments in dispatch
1 parent 609d071 commit 8cb7202

File tree

2 files changed

+14
-8
lines changed

2 files changed

+14
-8
lines changed

src/vm/moar/QAST/QASTCompilerMAST.nqp

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1086,8 +1086,10 @@ my class MASTCompilerInstance {
10861086
$ins := self.coerce($ins, $MVM_reg_num64);
10871087
}
10881088
elsif $ins_result_kind == $MVM_reg_int32 || $ins_result_kind == $MVM_reg_int16 ||
1089-
$ins_result_kind == $MVM_reg_int8 || $ins_result_kind == $MVM_reg_uint64 ||
1090-
$ins_result_kind == $MVM_reg_uint32 || $ins_result_kind == $MVM_reg_uint16 ||
1089+
$ins_result_kind == $MVM_reg_int8 {
1090+
$ins := self.coerce($ins, $MVM_reg_int64);
1091+
}
1092+
elsif $ins_result_kind == $MVM_reg_uint64 || $ins_result_kind == $MVM_reg_uint32 || $ins_result_kind == $MVM_reg_uint16 ||
10911093
$ins_result_kind == $MVM_reg_uint8 {
10921094
$ins := self.coerce($ins, $MVM_reg_int64);
10931095
}

src/vm/moar/QAST/QASTOperationsMAST.nqp

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1568,11 +1568,13 @@ my $dispatch_call_gen := -> $qastcomp, $op {
15681568
$arg_mast := $qastcomp.coerce($arg_mast, $MVM_reg_num64);
15691569
}
15701570
elsif $arg_mast_kind == $MVM_reg_int32 || $arg_mast_kind == $MVM_reg_int16 ||
1571-
$arg_mast_kind == $MVM_reg_int8 || $arg_mast_kind == $MVM_reg_uint64 ||
1572-
$arg_mast_kind == $MVM_reg_uint32 || $arg_mast_kind == $MVM_reg_uint16 ||
1573-
$arg_mast_kind == $MVM_reg_uint8 {
1571+
$arg_mast_kind == $MVM_reg_int8 {
15741572
$arg_mast := $qastcomp.coerce($arg_mast, $MVM_reg_int64);
15751573
}
1574+
elsif $arg_mast_kind == $MVM_reg_uint32 || $arg_mast_kind == $MVM_reg_uint16 ||
1575+
$arg_mast_kind == $MVM_reg_uint8 {
1576+
$arg_mast := $qastcomp.coerce($arg_mast, $MVM_reg_uint64);
1577+
}
15761578
nqp::push(@dispatch_mast, $arg_mast);
15771579
nqp::push(@dispatch_arg_idxs, $arg_mast.result_reg);
15781580
}
@@ -1803,11 +1805,13 @@ QAST::MASTOperations.add_core_op('callmethod', -> $qastcomp, $op {
18031805
$arg_mast := $qastcomp.coerce($arg_mast, $MVM_reg_num64);
18041806
}
18051807
elsif $arg_mast_kind == $MVM_reg_int32 || $arg_mast_kind == $MVM_reg_int16 ||
1806-
$arg_mast_kind == $MVM_reg_int8 || $arg_mast_kind == $MVM_reg_uint64 ||
1807-
$arg_mast_kind == $MVM_reg_uint32 || $arg_mast_kind == $MVM_reg_uint16 ||
1808-
$arg_mast_kind == $MVM_reg_uint8 {
1808+
$arg_mast_kind == $MVM_reg_int8 {
18091809
$arg_mast := $qastcomp.coerce($arg_mast, $MVM_reg_int64);
18101810
}
1811+
elsif $arg_mast_kind == $MVM_reg_uint32 || $arg_mast_kind == $MVM_reg_uint16 ||
1812+
$arg_mast_kind == $MVM_reg_uint8 {
1813+
$arg_mast := $qastcomp.coerce($arg_mast, $MVM_reg_uint64);
1814+
}
18111815
nqp::push(@dispatch_mast, $arg_mast);
18121816
nqp::push(@dispatch_arg_idxs, $arg_mast.result_reg);
18131817
}

0 commit comments

Comments
 (0)