aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/lj_asm.c6
1 files changed, 3 insertions, 3 deletions
diff --git a/src/lj_asm.c b/src/lj_asm.c
index 753fe6bd..5f83779e 100644
--- a/src/lj_asm.c
+++ b/src/lj_asm.c
@@ -1119,7 +1119,7 @@ static void asm_bufput(ASMState *as, IRIns *ir)
1119 const CCallInfo *ci = &lj_ir_callinfo[IRCALL_lj_buf_putstr]; 1119 const CCallInfo *ci = &lj_ir_callinfo[IRCALL_lj_buf_putstr];
1120 IRRef args[3]; 1120 IRRef args[3];
1121 IRIns *irs; 1121 IRIns *irs;
1122 int kchar = -1; 1122 int kchar = -129;
1123 args[0] = ir->op1; /* SBuf * */ 1123 args[0] = ir->op1; /* SBuf * */
1124 args[1] = ir->op2; /* GCstr * */ 1124 args[1] = ir->op2; /* GCstr * */
1125 irs = IR(ir->op2); 1125 irs = IR(ir->op2);
@@ -1127,7 +1127,7 @@ static void asm_bufput(ASMState *as, IRIns *ir)
1127 if (irs->o == IR_KGC) { 1127 if (irs->o == IR_KGC) {
1128 GCstr *s = ir_kstr(irs); 1128 GCstr *s = ir_kstr(irs);
1129 if (s->len == 1) { /* Optimize put of single-char string constant. */ 1129 if (s->len == 1) { /* Optimize put of single-char string constant. */
1130 kchar = strdata(s)[0]; 1130 kchar = (int8_t)strdata(s)[0]; /* Signed! */
1131 args[1] = ASMREF_TMP1; /* int, truncated to char */ 1131 args[1] = ASMREF_TMP1; /* int, truncated to char */
1132 ci = &lj_ir_callinfo[IRCALL_lj_buf_putchar]; 1132 ci = &lj_ir_callinfo[IRCALL_lj_buf_putchar];
1133 } 1133 }
@@ -1154,7 +1154,7 @@ static void asm_bufput(ASMState *as, IRIns *ir)
1154 asm_gencall(as, ci, args); 1154 asm_gencall(as, ci, args);
1155 if (args[1] == ASMREF_TMP1) { 1155 if (args[1] == ASMREF_TMP1) {
1156 Reg tmp = ra_releasetmp(as, ASMREF_TMP1); 1156 Reg tmp = ra_releasetmp(as, ASMREF_TMP1);
1157 if (kchar == -1) 1157 if (kchar == -129)
1158 asm_tvptr(as, tmp, irs->op1); 1158 asm_tvptr(as, tmp, irs->op1);
1159 else 1159 else
1160 ra_allockreg(as, kchar, tmp); 1160 ra_allockreg(as, kchar, tmp);