diff options
| author | Roberto Ierusalimschy <roberto@inf.puc-rio.br> | 1997-12-11 12:48:46 -0200 |
|---|---|---|
| committer | Roberto Ierusalimschy <roberto@inf.puc-rio.br> | 1997-12-11 12:48:46 -0200 |
| commit | 034f16892eb49361ee66f8d89aec26b071c98f57 (patch) | |
| tree | 04c714baf2d60ea84a0cca270aa845faff185380 /lgc.c | |
| parent | c759520bc86c9504ebec58b0de655c93c5010e5f (diff) | |
| download | lua-034f16892eb49361ee66f8d89aec26b071c98f57.tar.gz lua-034f16892eb49361ee66f8d89aec26b071c98f57.tar.bz2 lua-034f16892eb49361ee66f8d89aec26b071c98f57.zip | |
better treatment of MARKs and DEBUG cases.
Diffstat (limited to 'lgc.c')
| -rw-r--r-- | lgc.c | 10 |
1 files changed, 7 insertions, 3 deletions
| @@ -1,5 +1,5 @@ | |||
| 1 | /* | 1 | /* |
| 2 | ** $Id: lgc.c,v 1.10 1997/12/01 20:31:25 roberto Exp roberto $ | 2 | ** $Id: lgc.c,v 1.11 1997/12/09 13:35:19 roberto Exp roberto $ |
| 3 | ** Garbage Collector | 3 | ** Garbage Collector |
| 4 | ** See Copyright Notice in lua.h | 4 | ** See Copyright Notice in lua.h |
| 5 | */ | 5 | */ |
| @@ -83,15 +83,19 @@ static void travlock (void) | |||
| 83 | 83 | ||
| 84 | static int ismarked (TObject *o) | 84 | static int ismarked (TObject *o) |
| 85 | { | 85 | { |
| 86 | /* valid only for locked objects */ | ||
| 86 | switch (o->ttype) { | 87 | switch (o->ttype) { |
| 87 | case LUA_T_STRING: case LUA_T_USERDATA: | 88 | case LUA_T_STRING: case LUA_T_USERDATA: |
| 88 | return o->value.ts->head.marked; | 89 | return o->value.ts->head.marked; |
| 89 | case LUA_T_FUNCTION: | 90 | case LUA_T_FUNCTION: |
| 90 | return o->value.cl->head.marked; | 91 | return o->value.cl->head.marked; |
| 91 | case LUA_T_PROTO: | ||
| 92 | return o->value.tf->head.marked; | ||
| 93 | case LUA_T_ARRAY: | 92 | case LUA_T_ARRAY: |
| 94 | return o->value.a->head.marked; | 93 | return o->value.a->head.marked; |
| 94 | #ifdef DEBUG | ||
| 95 | case LUA_T_LINE: case LUA_T_MARK: | ||
| 96 | case LUA_T_PROTO: case LUA_T_CPROTO: | ||
| 97 | lua_error("internal error"); | ||
| 98 | #endif | ||
| 95 | default: /* nil, number or cproto */ | 99 | default: /* nil, number or cproto */ |
| 96 | return 1; | 100 | return 1; |
| 97 | } | 101 | } |
