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); |