Github User Fetcher 1.0.0
C Application with Server and GUI
Loading...
Searching...
No Matches
lmem.h File Reference
#include <stddef.h>
#include "llimits.h"
#include "lua.h"

Go to the source code of this file.

Macros

#define luaM_error(L)   luaD_throw(L, LUA_ERRMEM)
 
#define luaM_testsize(n, e)    (sizeof(n) >= sizeof(size_t) && cast_sizet((n)) + 1 > MAX_SIZET/(e))
 
#define luaM_checksize(L, n, e)    (luaM_testsize(n,e) ? luaM_toobig(L) : cast_void(0))
 
#define luaM_limitN(n, t)
 
#define luaM_reallocvchar(L, b, on, n)    cast_charp(luaM_saferealloc_(L, (b), (on)*sizeof(char), (n)*sizeof(char)))
 
#define luaM_freemem(L, b, s)   luaM_free_(L, (b), (s))
 
#define luaM_free(L, b)   luaM_free_(L, (b), sizeof(*(b)))
 
#define luaM_freearray(L, b, n)   luaM_free_(L, (b), (n)*sizeof(*(b)))
 
#define luaM_new(L, t)   cast(t*, luaM_malloc_(L, sizeof(t), 0))
 
#define luaM_newvector(L, n, t)   cast(t*, luaM_malloc_(L, (n)*sizeof(t), 0))
 
#define luaM_newvectorchecked(L, n, t)    (luaM_checksize(L,n,sizeof(t)), luaM_newvector(L,n,t))
 
#define luaM_newobject(L, tag, s)   luaM_malloc_(L, (s), tag)
 
#define luaM_growvector(L, v, nelems, size, t, limit, e)
 
#define luaM_reallocvector(L, v, oldn, n, t)
 
#define luaM_shrinkvector(L, v, size, fs, t)    ((v)=cast(t *, luaM_shrinkvector_(L, v, &(size), fs, sizeof(t))))
 

Functions

LUAI_FUNC l_noret luaM_toobig (lua_State *L)
 
LUAI_FUNC void * luaM_realloc_ (lua_State *L, void *block, size_t oldsize, size_t size)
 
LUAI_FUNC void * luaM_saferealloc_ (lua_State *L, void *block, size_t oldsize, size_t size)
 
LUAI_FUNC void luaM_free_ (lua_State *L, void *block, size_t osize)
 
LUAI_FUNC void * luaM_growaux_ (lua_State *L, void *block, int nelems, int *size, int size_elem, int limit, const char *what)
 
LUAI_FUNC void * luaM_shrinkvector_ (lua_State *L, void *block, int *nelem, int final_n, int size_elem)
 
LUAI_FUNC void * luaM_malloc_ (lua_State *L, size_t size, int tag)
 

Macro Definition Documentation

◆ luaM_checksize

#define luaM_checksize ( L,
n,
e )    (luaM_testsize(n,e) ? luaM_toobig(L) : cast_void(0))

Definition at line 34 of file lua-5.4.3/src/lmem.h.

34#define luaM_checksize(L,n,e) \
35 (luaM_testsize(n,e) ? luaM_toobig(L) : cast_void(0))

◆ luaM_error

#define luaM_error ( L)    luaD_throw(L, LUA_ERRMEM)

◆ luaM_free

#define luaM_free ( L,
b )   luaM_free_(L, (b), sizeof(*(b)))

Definition at line 56 of file lua-5.4.3/src/lmem.h.

◆ luaM_freearray

#define luaM_freearray ( L,
b,
n )   luaM_free_(L, (b), (n)*sizeof(*(b)))

Definition at line 57 of file lua-5.4.3/src/lmem.h.

◆ luaM_freemem

#define luaM_freemem ( L,
b,
s )   luaM_free_(L, (b), (s))

Definition at line 55 of file lua-5.4.3/src/lmem.h.

◆ luaM_growvector

#define luaM_growvector ( L,
v,
nelems,
size,
t,
limit,
e )
Value:
((v)=cast(t *, luaM_growaux_(L,v,nelems,&(size),sizeof(t), \
luaM_limitN(limit,t),e)))
#define cast(t, exp)
#define luaM_limitN(n, t)
LUAI_FUNC void * luaM_growaux_(lua_State *L, void *block, int nelems, int *size, int size_elem, int limit, const char *what)

Definition at line 66 of file lua-5.4.3/src/lmem.h.

66#define luaM_growvector(L,v,nelems,size,t,limit,e) \
67 ((v)=cast(t *, luaM_growaux_(L,v,nelems,&(size),sizeof(t), \
68 luaM_limitN(limit,t),e)))

◆ luaM_limitN

#define luaM_limitN ( n,
t )
Value:
((cast_sizet(n) <= MAX_SIZET/sizeof(t)) ? (n) : \
cast_uint((MAX_SIZET/sizeof(t))))
#define MAX_SIZET
#define cast_sizet(i)
#define cast_uint(i)

Definition at line 44 of file lua-5.4.3/src/lmem.h.

44#define luaM_limitN(n,t) \
45 ((cast_sizet(n) <= MAX_SIZET/sizeof(t)) ? (n) : \
46 cast_uint((MAX_SIZET/sizeof(t))))

◆ luaM_new

#define luaM_new ( L,
t )   cast(t*, luaM_malloc_(L, sizeof(t), 0))

Definition at line 59 of file lua-5.4.3/src/lmem.h.

◆ luaM_newobject

#define luaM_newobject ( L,
tag,
s )   luaM_malloc_(L, (s), tag)

Definition at line 64 of file lua-5.4.3/src/lmem.h.

◆ luaM_newvector

#define luaM_newvector ( L,
n,
t )   cast(t*, luaM_malloc_(L, (n)*sizeof(t), 0))

Definition at line 60 of file lua-5.4.3/src/lmem.h.

◆ luaM_newvectorchecked

#define luaM_newvectorchecked ( L,
n,
t )    (luaM_checksize(L,n,sizeof(t)), luaM_newvector(L,n,t))

Definition at line 61 of file lua-5.4.3/src/lmem.h.

61#define luaM_newvectorchecked(L,n,t) \
62 (luaM_checksize(L,n,sizeof(t)), luaM_newvector(L,n,t))

Referenced by loadCode(), loadConstants(), loadDebug(), loadProtos(), and loadUpvalues().

◆ luaM_reallocvchar

#define luaM_reallocvchar ( L,
b,
on,
n )    cast_charp(luaM_saferealloc_(L, (b), (on)*sizeof(char), (n)*sizeof(char)))

Definition at line 52 of file lua-5.4.3/src/lmem.h.

52#define luaM_reallocvchar(L,b,on,n) \
53 cast_charp(luaM_saferealloc_(L, (b), (on)*sizeof(char), (n)*sizeof(char)))

◆ luaM_reallocvector

#define luaM_reallocvector ( L,
v,
oldn,
n,
t )
Value:
(cast(t *, luaM_realloc_(L, v, cast_sizet(oldn) * sizeof(t), \
cast_sizet(n) * sizeof(t))))
LUAI_FUNC void * luaM_realloc_(lua_State *L, void *block, size_t oldsize, size_t size)

Definition at line 70 of file lua-5.4.3/src/lmem.h.

70#define luaM_reallocvector(L, v,oldn,n,t) \
71 (cast(t *, luaM_realloc_(L, v, cast_sizet(oldn) * sizeof(t), \
72 cast_sizet(n) * sizeof(t))))

◆ luaM_shrinkvector

#define luaM_shrinkvector ( L,
v,
size,
fs,
t )    ((v)=cast(t *, luaM_shrinkvector_(L, v, &(size), fs, sizeof(t))))

Definition at line 74 of file lua-5.4.3/src/lmem.h.

74#define luaM_shrinkvector(L,v,size,fs,t) \
75 ((v)=cast(t *, luaM_shrinkvector_(L, v, &(size), fs, sizeof(t))))

Referenced by close_func().

◆ luaM_testsize

#define luaM_testsize ( n,
e )    (sizeof(n) >= sizeof(size_t) && cast_sizet((n)) + 1 > MAX_SIZET/(e))

Definition at line 31 of file lua-5.4.3/src/lmem.h.

31#define luaM_testsize(n,e) \
32 (sizeof(n) >= sizeof(size_t) && cast_sizet((n)) + 1 > MAX_SIZET/(e))

Function Documentation

◆ luaM_free_()

LUAI_FUNC void luaM_free_ ( lua_State * L,
void * block,
size_t osize )

Definition at line 132 of file lua-5.4.3/src/lmem.c.

132 {
133 global_State *g = G(L);
134 lua_assert((osize == 0) == (block == NULL));
135 (*g->frealloc)(g->ud, block, osize, 0);
136 g->GCdebt -= osize;
137}
#define NULL
Definition gmacros.h:924
#define lua_assert(c)
static void block(LexState *ls)
#define G(L)

References block(), global_State::frealloc, G, global_State::GCdebt, lua_assert, NULL, and global_State::ud.

◆ luaM_growaux_()

LUAI_FUNC void * luaM_growaux_ ( lua_State * L,
void * block,
int nelems,
int * size,
int size_elem,
int limit,
const char * what )

Definition at line 79 of file lua-5.4.3/src/lmem.c.

80 {
81 void *newblock;
82 int size = *psize;
83 if (nelems + 1 <= size) /* does one extra element still fit? */
84 return block; /* nothing to be done */
85 if (size >= limit / 2) { /* cannot double it? */
86 if (l_unlikely(size >= limit)) /* cannot grow even a little? */
87 luaG_runerror(L, "too many %s (limit is %d)", what, limit);
88 size = limit; /* still have at least one free place */
89 }
90 else {
91 size *= 2;
92 if (size < MINSIZEARRAY)
93 size = MINSIZEARRAY; /* minimum size */
94 }
95 lua_assert(nelems + 1 <= size && size <= limit);
96 /* 'limit' ensures that multiplication will not overflow */
97 newblock = luaM_saferealloc_(L, block, cast_sizet(*psize) * size_elems,
98 cast_sizet(size) * size_elems);
99 *psize = size; /* update only when everything else is OK */
100 return newblock;
101}
void luaG_runerror(lua_State *L, const char *fmt,...)
void * luaM_saferealloc_(lua_State *L, void *block, size_t osize, size_t nsize)
#define MINSIZEARRAY

References block(), cast_sizet, lua_assert, luaG_runerror(), luaM_saferealloc_(), and MINSIZEARRAY.

◆ luaM_malloc_()

LUAI_FUNC void * luaM_malloc_ ( lua_State * L,
size_t size,
int tag )

Definition at line 187 of file lua-5.4.3/src/lmem.c.

187 {
188 if (size == 0)
189 return NULL; /* that's all */
190 else {
191 global_State *g = G(L);
192 void *newblock = firsttry(g, NULL, tag, size);
193 if (l_unlikely(newblock == NULL)) {
194 newblock = tryagain(L, NULL, tag, size);
195 if (newblock == NULL)
196 luaM_error(L);
197 }
198 g->GCdebt += size;
199 return newblock;
200 }
201}
#define firsttry(g, block, os, ns)
static void * tryagain(lua_State *L, void *block, size_t osize, size_t nsize)
#define luaM_error(L)

References firsttry, G, global_State::GCdebt, luaM_error, NULL, and tryagain().

◆ luaM_realloc_()

LUAI_FUNC void * luaM_realloc_ ( lua_State * L,
void * block,
size_t oldsize,
size_t size )

Definition at line 76 of file lua-5.1.5/src/lmem.c.

76 {
77 global_State *g = G(L);
78 lua_assert((osize == 0) == (block == NULL));
79 block = (*g->frealloc)(g->ud, block, osize, nsize);
80 if (block == NULL && nsize > 0)
82 lua_assert((nsize == 0) == (block == NULL));
83 g->totalbytes = (g->totalbytes - osize) + nsize;
84 return block;
85}
void luaD_throw(lua_State *L, int errcode)
#define LUA_ERRMEM

References api_check, block(), firsttry, global_State::frealloc, G, global_State::GCdebt, global_State::gcrunning, lua_assert, LUA_ERRMEM, luaC_fullgc(), luaD_throw(), NULL, global_State::totalbytes, tryagain(), global_State::ud, and global_State::version.

Referenced by luaM_saferealloc_().

◆ luaM_saferealloc_()

LUAI_FUNC void * luaM_saferealloc_ ( lua_State * L,
void * block,
size_t oldsize,
size_t size )

Definition at line 178 of file lua-5.4.3/src/lmem.c.

179 {
180 void *newblock = luaM_realloc_(L, block, osize, nsize);
181 if (l_unlikely(newblock == NULL && nsize > 0)) /* allocation failed? */
182 luaM_error(L);
183 return newblock;
184}
void * luaM_realloc_(lua_State *L, void *block, size_t osize, size_t nsize)

References block(), luaM_error, luaM_realloc_(), and NULL.

Referenced by luaM_growaux_(), and luaM_shrinkvector_().

◆ luaM_shrinkvector_()

LUAI_FUNC void * luaM_shrinkvector_ ( lua_State * L,
void * block,
int * nelem,
int final_n,
int size_elem )

Definition at line 110 of file lua-5.4.3/src/lmem.c.

111 {
112 void *newblock;
113 size_t oldsize = cast_sizet((*size) * size_elem);
114 size_t newsize = cast_sizet(final_n * size_elem);
115 lua_assert(newsize <= oldsize);
116 newblock = luaM_saferealloc_(L, block, oldsize, newsize);
117 *size = final_n;
118 return newblock;
119}

References block(), cast_sizet, lua_assert, and luaM_saferealloc_().

◆ luaM_toobig()

LUAI_FUNC l_noret luaM_toobig ( lua_State * L)

Definition at line 66 of file lua-5.1.5/src/lmem.c.

66 {
67 luaG_runerror(L, "memory allocation error: block too big");
68 return NULL; /* to avoid warnings */
69}

References luaG_runerror(), and NULL.

Referenced by luaS_newlstr(), luaS_newudata(), luaS_newudata(), luaS_newudata(), and newlstr().