diff options
| author | Roberto Ierusalimschy <roberto@inf.puc-rio.br> | 2017-04-11 15:41:09 -0300 |
|---|---|---|
| committer | Roberto Ierusalimschy <roberto@inf.puc-rio.br> | 2017-04-11 15:41:09 -0300 |
| commit | a3d36fe283c09d4e56474da98f22d13162cc9fec (patch) | |
| tree | 1f6e2ed56d50dc14aa669fa5f31a63755abd4553 /lobject.h | |
| parent | 9569ad6b0ddcde43eb893d2cfe5bcdb715c0ff20 (diff) | |
| download | lua-a3d36fe283c09d4e56474da98f22d13162cc9fec.tar.gz lua-a3d36fe283c09d4e56474da98f22d13162cc9fec.tar.bz2 lua-a3d36fe283c09d4e56474da98f22d13162cc9fec.zip | |
Upvalues collected like everything else (with mark-sweep) instead
of reference count (simpler and better for generational mode)
Diffstat (limited to 'lobject.h')
| -rw-r--r-- | lobject.h | 22 |
1 files changed, 17 insertions, 5 deletions
| @@ -1,5 +1,5 @@ | |||
| 1 | /* | 1 | /* |
| 2 | ** $Id: lobject.h,v 2.116 2015/11/03 18:33:10 roberto Exp roberto $ | 2 | ** $Id: lobject.h,v 2.117 2016/08/01 19:51:24 roberto Exp roberto $ |
| 3 | ** Type definitions for Lua objects | 3 | ** Type definitions for Lua objects |
| 4 | ** See Copyright Notice in lua.h | 4 | ** See Copyright Notice in lua.h |
| 5 | */ | 5 | */ |
| @@ -19,8 +19,9 @@ | |||
| 19 | /* | 19 | /* |
| 20 | ** Extra tags for non-values | 20 | ** Extra tags for non-values |
| 21 | */ | 21 | */ |
| 22 | #define LUA_TPROTO LUA_NUMTAGS /* function prototypes */ | 22 | #define LUA_TUPVAL LUA_NUMTAGS /* upvalues */ |
| 23 | #define LUA_TDEADKEY (LUA_NUMTAGS+1) /* removed keys in tables */ | 23 | #define LUA_TPROTO (LUA_NUMTAGS+1) /* function prototypes */ |
| 24 | #define LUA_TDEADKEY (LUA_NUMTAGS+2) /* removed keys in tables */ | ||
| 24 | 25 | ||
| 25 | /* | 26 | /* |
| 26 | ** number of all possible tags (including LUA_TNONE but excluding DEADKEY) | 27 | ** number of all possible tags (including LUA_TNONE but excluding DEADKEY) |
| @@ -431,9 +432,20 @@ typedef struct Proto { | |||
| 431 | 432 | ||
| 432 | 433 | ||
| 433 | /* | 434 | /* |
| 434 | ** Lua Upvalues | 435 | ** Upvalues for Lua closures |
| 435 | */ | 436 | */ |
| 436 | typedef struct UpVal UpVal; | 437 | typedef struct UpVal { |
| 438 | CommonHeader; | ||
| 439 | TValue *v; /* points to stack or to its own value */ | ||
| 440 | union { | ||
| 441 | struct { /* (when open) */ | ||
| 442 | struct UpVal *next; /* linked list */ | ||
| 443 | struct UpVal **previous; | ||
| 444 | } open; | ||
| 445 | TValue value; /* the value (when closed) */ | ||
| 446 | } u; | ||
| 447 | } UpVal; | ||
| 448 | |||
| 437 | 449 | ||
| 438 | 450 | ||
| 439 | /* | 451 | /* |
