From 38cfb6a1d991eb30a3aabe401be3d2f11a03c3e3 Mon Sep 17 00:00:00 2001 From: Mike Pall Date: Thu, 23 May 2013 18:43:16 +0200 Subject: [PATCH] Refactor lj_cdata_newv(). --- src/lib_ffi.c | 2 +- src/lj_cdata.c | 6 +++--- 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(.) if (!(info & CTF_VLA) && ctype_align(info) <= CT_MEMALIGN) cd = lj_cdata_new(cts, id, sz); else - cd = lj_cdata_newv(cts, id, sz, ctype_align(info)); + cd = lj_cdata_newv(L, id, sz, ctype_align(info)); setcdataV(L, o-1, cd); /* Anchor the uninitialized cdata. */ lj_cconv_ct_init(cts, ct, sz, cdataptr(cd), 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) } /* Allocate variable-sized or specially aligned C data object. */ -GCcdata *lj_cdata_newv(CTState *cts, CTypeID id, CTSize sz, CTSize align) +GCcdata *lj_cdata_newv(lua_State *L, CTypeID id, CTSize sz, CTSize align) { global_State *g; MSize extra = sizeof(GCcdataVar) + sizeof(GCcdata) + (align > CT_MEMALIGN ? (1u<L, extra + sz, char); + char *p = lj_mem_newt(L, extra + sz, char); uintptr_t adata = (uintptr_t)p + sizeof(GCcdataVar) + sizeof(GCcdata); uintptr_t almask = (1u << align) - 1u; GCcdata *cd = (GCcdata *)(((adata + almask) & ~almask) - sizeof(GCcdata)); @@ -39,7 +39,7 @@ GCcdata *lj_cdata_newv(CTState *cts, CTypeID id, CTSize sz, CTSize align) cdatav(cd)->offset = (uint16_t)((char *)cd - p); cdatav(cd)->extra = extra; cdatav(cd)->len = sz; - g = cts->g; + g = G(L); setgcrefr(cd->nextgc, g->gc.root); setgcref(g->gc.root, obj2gco(cd)); 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) } LJ_FUNC GCcdata *lj_cdata_newref(CTState *cts, const void *pp, CTypeID id); -LJ_FUNC GCcdata *lj_cdata_newv(CTState *cts, CTypeID id, CTSize sz, +LJ_FUNC GCcdata *lj_cdata_newv(lua_State *L, CTypeID id, CTSize sz, CTSize align); LJ_FUNC void LJ_FASTCALL lj_cdata_free(global_State *g, GCcdata *cd);