aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorMike Pall <mike>2012-11-26 11:01:59 +0100
committerMike Pall <mike>2012-11-26 11:01:59 +0100
commit405020c40504dcaff3371283c285eaa6bad50991 (patch)
tree3eadb1969a7e97c122e000c36f46ecc84f47d1fd /src
parent2ad9834df6fe47c7150d16a5d30782fb5696bec9 (diff)
downloadluajit-405020c40504dcaff3371283c285eaa6bad50991.tar.gz
luajit-405020c40504dcaff3371283c285eaa6bad50991.tar.bz2
luajit-405020c40504dcaff3371283c285eaa6bad50991.zip
FFI: Add debug define to check for unanchored CTypes.
Diffstat (limited to 'src')
-rw-r--r--src/lj_ctype.c13
1 files changed, 13 insertions, 0 deletions
diff --git a/src/lj_ctype.c b/src/lj_ctype.c
index 80594ab5..666a5daf 100644
--- a/src/lj_ctype.c
+++ b/src/lj_ctype.c
@@ -132,7 +132,11 @@ CTKWDEF(CTKWNAMEDEF)
132; 132;
133 133
134#define CTTYPEINFO_NUM (sizeof(lj_ctype_typeinfo)/sizeof(CTInfo)-1) 134#define CTTYPEINFO_NUM (sizeof(lj_ctype_typeinfo)/sizeof(CTInfo)-1)
135#ifdef LUAJIT_CTYPE_CHECK_ANCHOR
136#define CTTYPETAB_MIN CTTYPEINFO_NUM
137#else
135#define CTTYPETAB_MIN 128 138#define CTTYPETAB_MIN 128
139#endif
136 140
137/* -- C type interning ---------------------------------------------------- */ 141/* -- C type interning ---------------------------------------------------- */
138 142
@@ -148,7 +152,16 @@ CTypeID lj_ctype_new(CTState *cts, CType **ctp)
148 lua_assert(cts->L); 152 lua_assert(cts->L);
149 if (LJ_UNLIKELY(id >= cts->sizetab)) { 153 if (LJ_UNLIKELY(id >= cts->sizetab)) {
150 if (id >= CTID_MAX) lj_err_msg(cts->L, LJ_ERR_TABOV); 154 if (id >= CTID_MAX) lj_err_msg(cts->L, LJ_ERR_TABOV);
155#ifdef LUAJIT_CTYPE_CHECK_ANCHOR
156 ct = lj_mem_newvec(cts->L, id+1, CType);
157 memcpy(ct, cts->tab, id*sizeof(CType));
158 memset(cts->tab, 0, id*sizeof(CType));
159 lj_mem_freevec(cts->g, cts->tab, cts->sizetab, CType);
160 cts->tab = ct;
161 cts->sizetab = id+1;
162#else
151 lj_mem_growvec(cts->L, cts->tab, cts->sizetab, CTID_MAX, CType); 163 lj_mem_growvec(cts->L, cts->tab, cts->sizetab, CTID_MAX, CType);
164#endif
152 } 165 }
153 cts->top = id+1; 166 cts->top = id+1;
154 *ctp = ct = &cts->tab[id]; 167 *ctp = ct = &cts->tab[id];