diff options
| -rw-r--r-- | src/lib_ffi.c | 2 | ||||
| -rw-r--r-- | src/lj_cdata.c | 6 | ||||
| -rw-r--r-- | src/lj_cdata.h | 2 |
3 files changed, 5 insertions, 5 deletions
diff --git a/src/lib_ffi.c b/src/lib_ffi.c index 5eac5688..562255aa 100644 --- a/src/lib_ffi.c +++ b/src/lib_ffi.c | |||
| @@ -507,7 +507,7 @@ LJLIB_CF(ffi_new) LJLIB_REC(.) | |||
| 507 | if (!(info & CTF_VLA) && ctype_align(info) <= CT_MEMALIGN) | 507 | if (!(info & CTF_VLA) && ctype_align(info) <= CT_MEMALIGN) |
| 508 | cd = lj_cdata_new(cts, id, sz); | 508 | cd = lj_cdata_new(cts, id, sz); |
| 509 | else | 509 | else |
| 510 | cd = lj_cdata_newv(cts, id, sz, ctype_align(info)); | 510 | cd = lj_cdata_newv(L, id, sz, ctype_align(info)); |
| 511 | setcdataV(L, o-1, cd); /* Anchor the uninitialized cdata. */ | 511 | setcdataV(L, o-1, cd); /* Anchor the uninitialized cdata. */ |
| 512 | lj_cconv_ct_init(cts, ct, sz, cdataptr(cd), | 512 | lj_cconv_ct_init(cts, ct, sz, cdataptr(cd), |
| 513 | o, (MSize)(L->top - o)); /* Initialize cdata. */ | 513 | o, (MSize)(L->top - o)); /* Initialize cdata. */ |
diff --git a/src/lj_cdata.c b/src/lj_cdata.c index caa9a8f5..80dcf4e5 100644 --- a/src/lj_cdata.c +++ b/src/lj_cdata.c | |||
| @@ -26,12 +26,12 @@ GCcdata *lj_cdata_newref(CTState *cts, const void *p, CTypeID id) | |||
| 26 | } | 26 | } |
| 27 | 27 | ||
| 28 | /* Allocate variable-sized or specially aligned C data object. */ | 28 | /* Allocate variable-sized or specially aligned C data object. */ |
| 29 | GCcdata *lj_cdata_newv(CTState *cts, CTypeID id, CTSize sz, CTSize align) | 29 | GCcdata *lj_cdata_newv(lua_State *L, CTypeID id, CTSize sz, CTSize align) |
| 30 | { | 30 | { |
| 31 | global_State *g; | 31 | global_State *g; |
| 32 | MSize extra = sizeof(GCcdataVar) + sizeof(GCcdata) + | 32 | MSize extra = sizeof(GCcdataVar) + sizeof(GCcdata) + |
| 33 | (align > CT_MEMALIGN ? (1u<<align) - (1u<<CT_MEMALIGN) : 0); | 33 | (align > CT_MEMALIGN ? (1u<<align) - (1u<<CT_MEMALIGN) : 0); |
| 34 | char *p = lj_mem_newt(cts->L, extra + sz, char); | 34 | char *p = lj_mem_newt(L, extra + sz, char); |
| 35 | uintptr_t adata = (uintptr_t)p + sizeof(GCcdataVar) + sizeof(GCcdata); | 35 | uintptr_t adata = (uintptr_t)p + sizeof(GCcdataVar) + sizeof(GCcdata); |
| 36 | uintptr_t almask = (1u << align) - 1u; | 36 | uintptr_t almask = (1u << align) - 1u; |
| 37 | GCcdata *cd = (GCcdata *)(((adata + almask) & ~almask) - sizeof(GCcdata)); | 37 | GCcdata *cd = (GCcdata *)(((adata + almask) & ~almask) - sizeof(GCcdata)); |
| @@ -39,7 +39,7 @@ GCcdata *lj_cdata_newv(CTState *cts, CTypeID id, CTSize sz, CTSize align) | |||
| 39 | cdatav(cd)->offset = (uint16_t)((char *)cd - p); | 39 | cdatav(cd)->offset = (uint16_t)((char *)cd - p); |
| 40 | cdatav(cd)->extra = extra; | 40 | cdatav(cd)->extra = extra; |
| 41 | cdatav(cd)->len = sz; | 41 | cdatav(cd)->len = sz; |
| 42 | g = cts->g; | 42 | g = G(L); |
| 43 | setgcrefr(cd->nextgc, g->gc.root); | 43 | setgcrefr(cd->nextgc, g->gc.root); |
| 44 | setgcref(g->gc.root, obj2gco(cd)); | 44 | setgcref(g->gc.root, obj2gco(cd)); |
| 45 | newwhite(g, obj2gco(cd)); | 45 | newwhite(g, obj2gco(cd)); |
diff --git a/src/lj_cdata.h b/src/lj_cdata.h index 0c81b02b..f0c23ac4 100644 --- a/src/lj_cdata.h +++ b/src/lj_cdata.h | |||
| @@ -58,7 +58,7 @@ static LJ_AINLINE GCcdata *lj_cdata_new_(lua_State *L, CTypeID id, CTSize sz) | |||
| 58 | } | 58 | } |
| 59 | 59 | ||
| 60 | LJ_FUNC GCcdata *lj_cdata_newref(CTState *cts, const void *pp, CTypeID id); | 60 | LJ_FUNC GCcdata *lj_cdata_newref(CTState *cts, const void *pp, CTypeID id); |
| 61 | LJ_FUNC GCcdata *lj_cdata_newv(CTState *cts, CTypeID id, CTSize sz, | 61 | LJ_FUNC GCcdata *lj_cdata_newv(lua_State *L, CTypeID id, CTSize sz, |
| 62 | CTSize align); | 62 | CTSize align); |
| 63 | 63 | ||
| 64 | LJ_FUNC void LJ_FASTCALL lj_cdata_free(global_State *g, GCcdata *cd); | 64 | LJ_FUNC void LJ_FASTCALL lj_cdata_free(global_State *g, GCcdata *cd); |
