diff options
author | Roberto Ierusalimschy <roberto@inf.puc-rio.br> | 2002-10-22 14:58:14 -0300 |
---|---|---|
committer | Roberto Ierusalimschy <roberto@inf.puc-rio.br> | 2002-10-22 14:58:14 -0300 |
commit | 81bc5711a8b71ced34eef8750deb0ce4475d5cd5 (patch) | |
tree | 452e7c82585045989f041cb78c0fcdb7cdd5f724 /lstate.c | |
parent | 6a77a6b73f0f06c4396e9b60d44b064b999cb06a (diff) | |
download | lua-81bc5711a8b71ced34eef8750deb0ce4475d5cd5.tar.gz lua-81bc5711a8b71ced34eef8750deb0ce4475d5cd5.tar.bz2 lua-81bc5711a8b71ced34eef8750deb0ce4475d5cd5.zip |
only one instance of registry and default metatable per global state
Diffstat (limited to 'lstate.c')
-rw-r--r-- | lstate.c | 10 |
1 files changed, 4 insertions, 6 deletions
@@ -1,5 +1,5 @@ | |||
1 | /* | 1 | /* |
2 | ** $Id: lstate.c,v 1.105 2002/08/30 19:09:21 roberto Exp roberto $ | 2 | ** $Id: lstate.c,v 1.106 2002/10/08 18:46:08 roberto Exp roberto $ |
3 | ** Global State | 3 | ** Global State |
4 | ** See Copyright Notice in lua.h | 4 | ** See Copyright Notice in lua.h |
5 | */ | 5 | */ |
@@ -25,7 +25,7 @@ static void close_state (lua_State *L); | |||
25 | 25 | ||
26 | 26 | ||
27 | /* | 27 | /* |
28 | ** you can change this function through the official API | 28 | ** you can change this function through the official API: |
29 | ** call `lua_setpanicf' | 29 | ** call `lua_setpanicf' |
30 | */ | 30 | */ |
31 | static int default_panic (lua_State *L) { | 31 | static int default_panic (lua_State *L) { |
@@ -61,6 +61,8 @@ static void f_luaopen (lua_State *L, void *ud) { | |||
61 | G(L)->strt.size = 0; | 61 | G(L)->strt.size = 0; |
62 | G(L)->strt.nuse = 0; | 62 | G(L)->strt.nuse = 0; |
63 | G(L)->strt.hash = NULL; | 63 | G(L)->strt.hash = NULL; |
64 | setnilvalue(defaultmeta(L)); | ||
65 | setnilvalue(registry(L)); | ||
64 | luaZ_initbuffer(L, &G(L)->buff); | 66 | luaZ_initbuffer(L, &G(L)->buff); |
65 | G(L)->panic = &default_panic; | 67 | G(L)->panic = &default_panic; |
66 | G(L)->rootgc = NULL; | 68 | G(L)->rootgc = NULL; |
@@ -97,9 +99,7 @@ static void preinit_state (lua_State *L) { | |||
97 | L->size_ci = 0; | 99 | L->size_ci = 0; |
98 | L->base_ci = L->ci = NULL; | 100 | L->base_ci = L->ci = NULL; |
99 | L->errfunc = 0; | 101 | L->errfunc = 0; |
100 | setnilvalue(defaultmeta(L)); | ||
101 | setnilvalue(gt(L)); | 102 | setnilvalue(gt(L)); |
102 | setnilvalue(registry(L)); | ||
103 | } | 103 | } |
104 | 104 | ||
105 | 105 | ||
@@ -114,9 +114,7 @@ LUA_API lua_State *lua_newthread (lua_State *OL) { | |||
114 | OL->next = L; | 114 | OL->next = L; |
115 | L->previous = OL; | 115 | L->previous = OL; |
116 | stack_init(L, OL); /* init stack */ | 116 | stack_init(L, OL); /* init stack */ |
117 | setobj(defaultmeta(L), defaultmeta(OL)); /* share default meta table */ | ||
118 | setobj(gt(L), gt(OL)); /* share table of globals */ | 117 | setobj(gt(L), gt(OL)); /* share table of globals */ |
119 | setobj(registry(L), registry(OL)); /* share registry */ | ||
120 | lua_unlock(OL); | 118 | lua_unlock(OL); |
121 | lua_userstateopen(L); | 119 | lua_userstateopen(L); |
122 | return L; | 120 | return L; |