diff options
| author | Roberto Ierusalimschy <roberto@inf.puc-rio.br> | 2001-08-30 17:56:43 -0300 |
|---|---|---|
| committer | Roberto Ierusalimschy <roberto@inf.puc-rio.br> | 2001-08-30 17:56:43 -0300 |
| commit | 8c8ad5f3fffae16a751f2419a5972ec7ffd6babf (patch) | |
| tree | db9e7977a263eb91b4c990420af203ce0d4f7d2a /ltm.c | |
| parent | 34a09b65f3b6ef5f7699263b09ad088ec087aca2 (diff) | |
| download | lua-8c8ad5f3fffae16a751f2419a5972ec7ffd6babf.tar.gz lua-8c8ad5f3fffae16a751f2419a5972ec7ffd6babf.tar.bz2 lua-8c8ad5f3fffae16a751f2419a5972ec7ffd6babf.zip | |
better locality of assignment of table values
Diffstat (limited to 'ltm.c')
| -rw-r--r-- | ltm.c | 10 |
1 files changed, 6 insertions, 4 deletions
| @@ -1,5 +1,5 @@ | |||
| 1 | /* | 1 | /* |
| 2 | ** $Id: ltm.c,v 1.75 2001/07/23 19:56:00 roberto Exp roberto $ | 2 | ** $Id: ltm.c,v 1.76 2001/07/24 22:39:34 roberto Exp roberto $ |
| 3 | ** Tag methods | 3 | ** Tag methods |
| 4 | ** See Copyright Notice in lua.h | 4 | ** See Copyright Notice in lua.h |
| 5 | */ | 5 | */ |
| @@ -84,11 +84,13 @@ int luaT_newtag (lua_State *L, const l_char *name, int basictype) { | |||
| 84 | MAX_INT, l_s("tag table overflow")); | 84 | MAX_INT, l_s("tag table overflow")); |
| 85 | tag = G(L)->ntag; | 85 | tag = G(L)->ntag; |
| 86 | if (name) { | 86 | if (name) { |
| 87 | TObject *v; | 87 | const TObject *v; |
| 88 | TObject otag; | ||
| 88 | ts = luaS_new(L, name); | 89 | ts = luaS_new(L, name); |
| 89 | v = luaH_setstr(L, G(L)->type2tag, ts); | 90 | v = luaH_getstr(G(L)->type2tag, ts); |
| 90 | if (ttype(v) == LUA_TNUMBER) return (int)nvalue(v); | 91 | if (ttype(v) == LUA_TNUMBER) return (int)nvalue(v); |
| 91 | setnvalue(v, tag); | 92 | setnvalue(&otag, tag); |
| 93 | luaH_setstr(L, G(L)->type2tag, ts, &otag); | ||
| 92 | } | 94 | } |
| 93 | for (i=0; i<TM_N; i++) | 95 | for (i=0; i<TM_N; i++) |
| 94 | luaT_gettm(G(L), tag, i) = NULL; | 96 | luaT_gettm(G(L), tag, i) = NULL; |
