# lua/lfunc.c File Reference

`#include <stddef.h>`
`#include "lua.h"`
`#include "lfunc.h"`
`#include "lgc.h"`
`#include "lmem.h"`
`#include "lobject.h"`
`#include "lstate.h"`

Include dependency graph for lfunc.c:

Go to the source code of this file.

## Defines

#define | lfunc_c
#define | LUA_CORE

## Functions

Closure * | luaF_newCclosure (lua_State *L, int nelems, Table *e)
Closure * | luaF_newLclosure (lua_State *L, int nelems, Table *e)
UpVal * | luaF_newupval (lua_State *L)
UpVal * | luaF_findupval (lua_State *L, StkId level)
static void | unlinkupval (UpVal *uv)
void | luaF_freeupval (lua_State *L, UpVal *uv)
void | luaF_close (lua_State *L, StkId level)
Proto * | luaF_newproto (lua_State *L)
void | luaF_freeproto (lua_State *L, Proto *f)
void | luaF_freeclosure (lua_State *L, Closure *c)
const char * | luaF_getlocalname (const Proto *f, int local_number, int pc)

## Define Documentation

#define lfunc_c

Definition at line 10 of file lfunc.c.

#define LUA_CORE

Definition at line 11 of file lfunc.c.

## Function Documentation

void luaF_close | ( | lua_State * | L,
|  | StkId | level |
| ) |  |  |

Definition at line 96 of file lfunc.c.

References G, isblack, isdead, lua_assert, luaC_linkupval(), luaF_freeupval(), UpVal::next, ngcotouv, obj2gco, lua_State::openupval, setobj, UpVal::u, unlinkupval(), UpVal::v, and UpVal::value.

Referenced by close_state(), lua_close(), luaD_pcall(), luaE_freethread(), luaV_execute(), and resetstack().

UpVal* luaF_findupval | ( | lua_State * | L,
|  | StkId | level |
| ) |  |  |

Definition at line 53 of file lfunc.c.

References changewhite, G, isdead, UpVal::l, lua_assert, LUA_TUPVAL, luaC_white, luaM_new, UpVal::marked, UpVal::next, ngcotouv, obj2gco, lua_State::openupval, UpVal::tt, UpVal::u, global_State::uvhead, UpVal::v, and UpVal::value.

Referenced by luaV_execute().

void luaF_freeclosure | ( | lua_State * | L,
|  | Closure * | c |
| ) |  |  |

Definition at line 152 of file lfunc.c.

References Closure::c, CClosure::isC, Closure::l, luaM_freemem, LClosure::nupvalues, CClosure::nupvalues, sizeCclosure, and sizeLclosure.

Referenced by freeobj().

void luaF_freeproto | ( | lua_State * | L,
|  | Proto * | f |
| ) |  |  |

Definition at line 141 of file lfunc.c.

References Proto::code, Proto::k, Proto::lineinfo, Proto::locvars, luaM_free, luaM_freearray, Proto::p, Proto::sizecode, Proto::sizek, Proto::sizelineinfo, Proto::sizelocvars, Proto::sizep, Proto::sizeupvalues, and Proto::upvalues.

Referenced by freeobj().

void luaF_freeupval | ( | lua_State * | L,
|  | UpVal * | uv |
| ) |  |  |

Definition at line 89 of file lfunc.c.

References luaM_free, UpVal::u, unlinkupval(), UpVal::v, and UpVal::value.

Referenced by freeobj(), and luaF_close().

const char* luaF_getlocalname | ( | const Proto * | f,
|  | int | local_number,
|  | int | pc |
| ) |  |  |

Definition at line 163 of file lfunc.c.

References getstr, Proto::locvars, Proto::sizelocvars, LocVar::startpc, and LocVar::varname.

Referenced by findlocal(), and getobjname().

Closure* luaF_newCclosure | ( | lua_State * | L,
|  | int | nelems,
|  | Table * | e |
| ) |  |  |

Definition at line 23 of file lfunc.c.

References Closure::c, cast, cast_byte, CClosure::env, CClosure::isC, luaC_link(), luaM_malloc, CClosure::nupvalues, obj2gco, and sizeCclosure.

Referenced by f_Ccall(), and lua_pushcclosure().

Closure* luaF_newLclosure | ( | lua_State * | L,
|  | int | nelems,
|  | Table * | e |
| ) |  |  |

Definition at line 33 of file lfunc.c.

References cast, cast_byte, LClosure::env, LClosure::isC, Closure::l, luaC_link(), luaM_malloc, LClosure::nupvalues, obj2gco, sizeLclosure, and LClosure::upvals.

Referenced by f_parser(), and luaV_execute().

Proto* luaF_newproto | ( | lua_State * | L | ) |

Definition at line 115 of file lfunc.c.

References Proto::code, Proto::is_vararg, Proto::k, Proto::lastlinedefined, Proto::linedefined, Proto::lineinfo, Proto::locvars, LUA_TPROTO, luaC_link(), luaM_new, Proto::maxstacksize, Proto::numparams, Proto::nups, obj2gco, Proto::p, Proto::sizecode, Proto::sizek, Proto::sizelineinfo, Proto::sizelocvars, Proto::sizep, Proto::sizeupvalues, Proto::source, and Proto::upvalues.

Referenced by LoadFunction(), and open_func().

UpVal* luaF_newupval | ( | lua_State * | L | ) |

Definition at line 44 of file lfunc.c.

References LUA_TUPVAL, luaC_link(), luaM_new, obj2gco, setnilvalue, UpVal::u, UpVal::v, and UpVal::value.

Referenced by f_parser().

static void unlinkupval | ( | UpVal * | uv | ) | `[static]`

Definition at line 82 of file lfunc.c.

References UpVal::l, lua_assert, and UpVal::u.

Referenced by luaF_close(), and luaF_freeupval().