aboutsummaryrefslogtreecommitdiff
path: root/src/lj_asm_arm64.h
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--src/lj_asm_arm64.h7
1 files changed, 3 insertions, 4 deletions
diff --git a/src/lj_asm_arm64.h b/src/lj_asm_arm64.h
index 95138fe9..d3e4bb63 100644
--- a/src/lj_asm_arm64.h
+++ b/src/lj_asm_arm64.h
@@ -1915,7 +1915,7 @@ static void asm_head_root_base(ASMState *as)
1915} 1915}
1916 1916
1917/* Coalesce BASE register for a side trace. */ 1917/* Coalesce BASE register for a side trace. */
1918static RegSet asm_head_side_base(ASMState *as, IRIns *irp, RegSet allow) 1918static Reg asm_head_side_base(ASMState *as, IRIns *irp)
1919{ 1919{
1920 IRIns *ir; 1920 IRIns *ir;
1921 asm_head_lreg(as); 1921 asm_head_lreg(as);
@@ -1923,16 +1923,15 @@ static RegSet asm_head_side_base(ASMState *as, IRIns *irp, RegSet allow)
1923 if (ra_hasreg(ir->r) && (rset_test(as->modset, ir->r) || irt_ismarked(ir->t))) 1923 if (ra_hasreg(ir->r) && (rset_test(as->modset, ir->r) || irt_ismarked(ir->t)))
1924 ra_spill(as, ir); 1924 ra_spill(as, ir);
1925 if (ra_hasspill(irp->s)) { 1925 if (ra_hasspill(irp->s)) {
1926 rset_clear(allow, ra_dest(as, ir, allow)); 1926 return ra_dest(as, ir, RSET_GPR);
1927 } else { 1927 } else {
1928 Reg r = irp->r; 1928 Reg r = irp->r;
1929 lj_assertA(ra_hasreg(r), "base reg lost"); 1929 lj_assertA(ra_hasreg(r), "base reg lost");
1930 rset_clear(allow, r);
1931 if (r != ir->r && !rset_test(as->freeset, r)) 1930 if (r != ir->r && !rset_test(as->freeset, r))
1932 ra_restore(as, regcost_ref(as->cost[r])); 1931 ra_restore(as, regcost_ref(as->cost[r]));
1933 ra_destreg(as, ir, r); 1932 ra_destreg(as, ir, r);
1933 return r;
1934 } 1934 }
1935 return allow;
1936} 1935}
1937 1936
1938/* -- Tail of trace ------------------------------------------------------- */ 1937/* -- Tail of trace ------------------------------------------------------- */