#include <string.h>
#include "lua.h"
#include "ldebug.h"
#include "ldo.h"
#include "lfunc.h"
#include "lgc.h"
#include "lmem.h"
#include "lobject.h"
#include "lstate.h"
#include "lstring.h"
#include "ltable.h"
#include "ltm.h"
gehe zum Quellcode dieser Datei
|
#define | lgc_c |
|
#define | LUA_CORE |
|
#define | GCSTEPSIZE 1024u |
|
#define | GCSWEEPMAX 40 |
|
#define | GCSWEEPCOST 10 |
|
#define | GCFINALIZECOST 100 |
|
#define | maskmarks cast_byte(~(bitmask(BLACKBIT)|WHITEBITS)) |
|
#define | makewhite(g, x) ((x)->gch.marked = cast_byte(((x)->gch.marked & maskmarks) | luaC_white(g))) |
|
#define | white2gray(x) reset2bits((x)->gch.marked, WHITE0BIT, WHITE1BIT) |
|
#define | black2gray(x) resetbit((x)->gch.marked, BLACKBIT) |
|
#define | stringmark(s) reset2bits((s)->tsv.marked, WHITE0BIT, WHITE1BIT) |
|
#define | isfinalized(u) testbit((u)->marked, FINALIZEDBIT) |
|
#define | markfinalized(u) l_setbit((u)->marked, FINALIZEDBIT) |
|
#define | KEYWEAK bitmask(KEYWEAKBIT) |
|
#define | VALUEWEAK bitmask(VALUEWEAKBIT) |
|
#define | markvalue(g, o) |
|
#define | markobject(g, t) |
|
#define | setthreshold(g) (g->GCthreshold = (g->estimate/100) * g->gcpause) |
|
#define | sweepwholelist(L, p) sweeplist(L,p,MAX_LUMEM) |
|
|
static void | removeentry (Node *n) |
|
static void | reallymarkobject (global_State *g, GCObject *o) |
|
static void | marktmu (global_State *g) |
|
LUAI_FUNC size_t | luaC_separateudata (lua_State *L, int all) |
|
static int | traversetable (global_State *g, Table *h) |
|
static void | traverseproto (global_State *g, Proto *f) |
|
static void | traverseclosure (global_State *g, Closure *cl) |
|
static void | checkstacksizes (lua_State *L, StkId max) |
|
static void | traversestack (global_State *g, lua_State *l) |
|
static l_mem | propagatemark (global_State *g) |
|
static size_t | propagateall (global_State *g) |
|
static int | iscleared (const TValue *o, int iskey) |
|
static void | cleartable (GCObject *l) |
|
static void | freeobj (lua_State *L, GCObject *o) |
|
static GCObject ** | sweeplist (lua_State *L, GCObject **p, lu_mem count) |
|
static void | checkSizes (lua_State *L) |
|
static void | GCTM (lua_State *L) |
|
LUAI_FUNC void | luaC_callGCTM (lua_State *L) |
|
LUAI_FUNC void | luaC_freeall (lua_State *L) |
|
static void | markmt (global_State *g) |
|
static void | markroot (lua_State *L) |
|
static void | remarkupvals (global_State *g) |
|
static void | atomic (lua_State *L) |
|
static l_mem | singlestep (lua_State *L) |
|
LUAI_FUNC void | luaC_step (lua_State *L) |
|
LUAI_FUNC void | luaC_fullgc (lua_State *L) |
|
LUAI_FUNC void | luaC_barrierf (lua_State *L, GCObject *o, GCObject *v) |
|
LUAI_FUNC void | luaC_barrierback (lua_State *L, Table *t) |
|
LUAI_FUNC void | luaC_link (lua_State *L, GCObject *o, lu_byte tt) |
|
LUAI_FUNC void | luaC_linkupval (lua_State *L, UpVal *uv) |
|
Definiert in Zeile 38 der Datei lgc.c.
#define GCFINALIZECOST 100 |
Definiert in Zeile 29 der Datei lgc.c.
Definiert in Zeile 26 der Datei lgc.c.
Definiert in Zeile 28 der Datei lgc.c.
Definiert in Zeile 27 der Datei lgc.c.
Definiert in Zeile 43 der Datei lgc.c.
Definiert in Zeile 47 der Datei lgc.c.
Definiert in Zeile 9 der Datei lgc.c.
Definiert in Zeile 10 der Datei lgc.c.
Definiert in Zeile 34 der Datei lgc.c.
Definiert in Zeile 44 der Datei lgc.c.
#define markobject |
( |
|
g, |
|
|
|
t |
|
) |
| |
Wert:
Definiert in Zeile 55 der Datei lgc.c.
#define markvalue |
( |
|
g, |
|
|
|
o |
|
) |
| |
Wert:
Definiert in Zeile 52 der Datei lgc.c.
Definiert in Zeile 32 der Datei lgc.c.
#define setthreshold |
( |
|
g) | |
(g->GCthreshold = (g->estimate/100) * g->gcpause) |
Definiert in Zeile 59 der Datei lgc.c.
Definiert in Zeile 40 der Datei lgc.c.
Definiert in Zeile 48 der Datei lgc.c.
Definiert in Zeile 37 der Datei lgc.c.
Definiert in Zeile 241 der Datei lgc.c.
246 if (4*ci_used < L->size_ci && 2*BASIC_CI_SIZE < L->size_ci)
249 if (4*s_used < L->stacksize &&
Definiert in Zeile 477 der Datei lgc.c.
478 while (
G(L)->tmudata)
Definiert in Zeile 128 der Datei lgc.c.
133 while ((curr = *p) !=
NULL) {
Definiert in Zeile 277 der Datei lgc.c.
292 g->
gray = cl->
c.gclist;
Definiert in Zeile 69 der Datei lgc.c.
Definiert in Zeile 515 der Datei lgc.c.
518 lua_assert(uv->
u.
l.next->u.l.prev == uv && uv->
u.
l.prev->u.l.next == uv);
static void removeentry |
( |
Node * |
n) | |
|
|
static |
Definiert in Zeile 62 der Datei lgc.c.
Definiert in Zeile 407 der Datei lgc.c.
411 while ((curr = *p) !=
NULL &&
count-- > 0) {
Definiert in Zeile 224 der Datei lgc.c.
228 for (i=0; i<cl->
c.nupvalues; i++)
235 for (i=0; i<cl->
l.nupvalues; i++)
Definiert in Zeile 203 der Datei lgc.c.
206 for (i=0; i<f->
sizek; i++)
212 for (i=0; i<f->
sizep; i++) {
Definiert in Zeile 256 der Datei lgc.c.
261 for (ci = l->
base_ci; ci <= l->ci; ci++) {
263 if (lim < ci->
top) lim = ci->
top;
267 for (; o <= lim; o++)
Definiert in Zeile 158 der Datei lgc.c.
169 if (weakkey || weakvalue) {
177 if (weakkey && weakvalue)
return 1;
195 return weakkey || weakvalue;