summaryrefslogtreecommitdiff
path: root/src/lj_crecord.c
diff options
context:
space:
mode:
authorMike Pall <mike>2010-12-17 17:20:04 +0100
committerMike Pall <mike>2010-12-17 17:20:04 +0100
commit255c6e8c874f4ecc8ff26e67387e1381acb12da8 (patch)
tree11724fa89effae852d2c1838a793aa51d62cdcbd /src/lj_crecord.c
parentc98132e182b25e8734fff0f4152ba747a2da461a (diff)
downloadluajit-255c6e8c874f4ecc8ff26e67387e1381acb12da8.tar.gz
luajit-255c6e8c874f4ecc8ff26e67387e1381acb12da8.tar.bz2
luajit-255c6e8c874f4ecc8ff26e67387e1381acb12da8.zip
FFI: Drop IR_CNEWI. Add IR_CNEWP only for pointers/refs.
Diffstat (limited to 'src/lj_crecord.c')
-rw-r--r--src/lj_crecord.c8
1 files changed, 4 insertions, 4 deletions
diff --git a/src/lj_crecord.c b/src/lj_crecord.c
index 2f7e0f34..1df6c70c 100644
--- a/src/lj_crecord.c
+++ b/src/lj_crecord.c
@@ -260,7 +260,7 @@ static TRef crec_tv_ct(jit_State *J, CType *s, CTypeID sid, TRef sp)
260 ptrdiff_t esz = (ptrdiff_t)(s->size >> 1); 260 ptrdiff_t esz = (ptrdiff_t)(s->size >> 1);
261 TRef ptr, tr1, tr2, dp; 261 TRef ptr, tr1, tr2, dp;
262 if (t == IRT_CDATA) goto err_nyi; /* NYI: float IRType. */ 262 if (t == IRT_CDATA) goto err_nyi; /* NYI: float IRType. */
263 dp = emitir(IRTG(IR_CNEW, IRT_CDATA), TREF_NIL, lj_ir_kint(J, sid)); 263 dp = emitir(IRTG(IR_CNEW, IRT_CDATA), lj_ir_kint(J, sid), TREF_NIL);
264 tr1 = emitir(IRT(IR_XLOAD, t), sp, 0); 264 tr1 = emitir(IRT(IR_XLOAD, t), sp, 0);
265 ptr = emitir(IRT(IR_ADD, IRT_PTR), sp, lj_ir_kintp(J, esz)); 265 ptr = emitir(IRT(IR_ADD, IRT_PTR), sp, lj_ir_kintp(J, esz));
266 tr2 = emitir(IRT(IR_XLOAD, t), ptr, 0); 266 tr2 = emitir(IRT(IR_XLOAD, t), ptr, 0);
@@ -274,7 +274,7 @@ static TRef crec_tv_ct(jit_State *J, CType *s, CTypeID sid, TRef sp)
274 err_nyi: 274 err_nyi:
275 lj_trace_err(J, LJ_TRERR_NYICONV); 275 lj_trace_err(J, LJ_TRERR_NYICONV);
276 } 276 }
277 return emitir(IRTG(IR_CNEWI, IRT_CDATA), sp, lj_ir_kint(J, sid)); 277 return emitir(IRTG(IR_CNEWP, IRT_CDATA), lj_ir_kint(J, sid), sp);
278} 278}
279 279
280/* -- Convert TValue to C type (store) ------------------------------------ */ 280/* -- Convert TValue to C type (store) ------------------------------------ */
@@ -300,7 +300,7 @@ static void crec_ct_tv(jit_State *J, CType *d, TRef dp, TRef sp, TValue *sval)
300 s = ctype_raw(cts, sid); 300 s = ctype_raw(cts, sid);
301 if (ctype_isptr(s->info)) { 301 if (ctype_isptr(s->info)) {
302 IRType t = (LJ_64 && s->size == 8) ? IRT_P64 : IRT_P32; 302 IRType t = (LJ_64 && s->size == 8) ? IRT_P64 : IRT_P32;
303 sp = emitir(IRT(IR_FLOAD, t), sp, IRFL_CDATA_INIT1); 303 sp = emitir(IRT(IR_FLOAD, t), sp, IRFL_CDATA_PTR);
304 if (ctype_isref(s->info)) 304 if (ctype_isref(s->info))
305 s = ctype_rawchild(cts, s); 305 s = ctype_rawchild(cts, s);
306 else 306 else
@@ -356,7 +356,7 @@ void LJ_FASTCALL recff_cdata_index(jit_State *J, RecordFFData *rd)
356 if (ctype_isptr(ct->info)) { 356 if (ctype_isptr(ct->info)) {
357 IRType t = (LJ_64 && ct->size == 8) ? IRT_P64 : IRT_P32; 357 IRType t = (LJ_64 && ct->size == 8) ? IRT_P64 : IRT_P32;
358 if (ctype_isref(ct->info)) ct = ctype_rawchild(cts, ct); 358 if (ctype_isref(ct->info)) ct = ctype_rawchild(cts, ct);
359 ptr = emitir(IRT(IR_FLOAD, t), ptr, IRFL_CDATA_INIT1); 359 ptr = emitir(IRT(IR_FLOAD, t), ptr, IRFL_CDATA_PTR);
360 ofs = 0; 360 ofs = 0;
361 ptr = crec_reassoc_ofs(J, ptr, &ofs, 1); 361 ptr = crec_reassoc_ofs(J, ptr, &ofs, 1);
362 } 362 }