aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMike Pall <mike>2013-05-23 18:43:16 +0200
committerMike Pall <mike>2013-05-23 18:43:16 +0200
commit38cfb6a1d991eb30a3aabe401be3d2f11a03c3e3 (patch)
treea9ec052d8efae23cc0902ec3e5a5e7efa720c4cd
parent6f451c6445e3ac9cc1e80dfe3cf6c4d3902f0437 (diff)
downloadluajit-38cfb6a1d991eb30a3aabe401be3d2f11a03c3e3.tar.gz
luajit-38cfb6a1d991eb30a3aabe401be3d2f11a03c3e3.tar.bz2
luajit-38cfb6a1d991eb30a3aabe401be3d2f11a03c3e3.zip
Refactor lj_cdata_newv().
-rw-r--r--src/lib_ffi.c2
-rw-r--r--src/lj_cdata.c6
-rw-r--r--src/lj_cdata.h2
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. */
29GCcdata *lj_cdata_newv(CTState *cts, CTypeID id, CTSize sz, CTSize align) 29GCcdata *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
60LJ_FUNC GCcdata *lj_cdata_newref(CTState *cts, const void *pp, CTypeID id); 60LJ_FUNC GCcdata *lj_cdata_newref(CTState *cts, const void *pp, CTypeID id);
61LJ_FUNC GCcdata *lj_cdata_newv(CTState *cts, CTypeID id, CTSize sz, 61LJ_FUNC GCcdata *lj_cdata_newv(lua_State *L, CTypeID id, CTSize sz,
62 CTSize align); 62 CTSize align);
63 63
64LJ_FUNC void LJ_FASTCALL lj_cdata_free(global_State *g, GCcdata *cd); 64LJ_FUNC void LJ_FASTCALL lj_cdata_free(global_State *g, GCcdata *cd);