diff options
author | Mike Pall <mike> | 2010-12-17 17:20:04 +0100 |
---|---|---|
committer | Mike Pall <mike> | 2010-12-17 17:20:04 +0100 |
commit | 255c6e8c874f4ecc8ff26e67387e1381acb12da8 (patch) | |
tree | 11724fa89effae852d2c1838a793aa51d62cdcbd /src/lj_crecord.c | |
parent | c98132e182b25e8734fff0f4152ba747a2da461a (diff) | |
download | luajit-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.c | 8 |
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 | } |