aboutsummaryrefslogtreecommitdiff
path: root/lapi.c
diff options
context:
space:
mode:
authorRoberto Ierusalimschy <roberto@inf.puc-rio.br>2002-11-07 13:37:10 -0200
committerRoberto Ierusalimschy <roberto@inf.puc-rio.br>2002-11-07 13:37:10 -0200
commitdff9be4224a1cd0f338b544b9e01d42f0f4e537f (patch)
tree1dc8846da882dd37d9f420c10ea545ce92fb3b8a /lapi.c
parent118347d8c3b83ea0291918e81c5367937316fabb (diff)
downloadlua-dff9be4224a1cd0f338b544b9e01d42f0f4e537f.tar.gz
lua-dff9be4224a1cd0f338b544b9e01d42f0f4e537f.tar.bz2
lua-dff9be4224a1cd0f338b544b9e01d42f0f4e537f.zip
new macros to distinguish different types of object moves (for future GC
evolution).
Diffstat (limited to 'lapi.c')
-rw-r--r--lapi.c36
1 files changed, 17 insertions, 19 deletions
diff --git a/lapi.c b/lapi.c
index e86d2ac6..2d7ec50a 100644
--- a/lapi.c
+++ b/lapi.c
@@ -1,5 +1,5 @@
1/* 1/*
2** $Id: lapi.c,v 1.215 2002/10/25 21:31:28 roberto Exp roberto $ 2** $Id: lapi.c,v 1.216 2002/11/06 19:08:00 roberto Exp roberto $
3** Lua API 3** Lua API
4** See Copyright Notice in lua.h 4** See Copyright Notice in lua.h
5*/ 5*/
@@ -84,7 +84,7 @@ static TObject *luaA_indexAcceptable (lua_State *L, int index) {
84 84
85 85
86void luaA_pushobject (lua_State *L, const TObject *o) { 86void luaA_pushobject (lua_State *L, const TObject *o) {
87 setobj(L->top, o); 87 setobj2s(L->top, o);
88 incr_top(L); 88 incr_top(L);
89} 89}
90 90
@@ -111,7 +111,7 @@ LUA_API void lua_movethread (lua_State *from, lua_State *to, int n) {
111 api_checknelems(from, n); 111 api_checknelems(from, n);
112 from->top -= n; 112 from->top -= n;
113 for (i = 0; i < n; i++) { 113 for (i = 0; i < n; i++) {
114 setobj(to->top, from->top + i); 114 setobj2s(to->top, from->top + i);
115 api_incr_top(to); 115 api_incr_top(to);
116 } 116 }
117 lua_unlock(to); 117 lua_unlock(to);
@@ -171,7 +171,7 @@ LUA_API void lua_remove (lua_State *L, int index) {
171 StkId p; 171 StkId p;
172 lua_lock(L); 172 lua_lock(L);
173 p = luaA_index(L, index); 173 p = luaA_index(L, index);
174 while (++p < L->top) setobj(p-1, p); 174 while (++p < L->top) setobjs2s(p-1, p);
175 L->top--; 175 L->top--;
176 lua_unlock(L); 176 lua_unlock(L);
177} 177}
@@ -182,8 +182,8 @@ LUA_API void lua_insert (lua_State *L, int index) {
182 StkId q; 182 StkId q;
183 lua_lock(L); 183 lua_lock(L);
184 p = luaA_index(L, index); 184 p = luaA_index(L, index);
185 for (q = L->top; q>p; q--) setobj(q, q-1); 185 for (q = L->top; q>p; q--) setobjs2s(q, q-1);
186 setobj(p, L->top); 186 setobjs2s(p, L->top);
187 lua_unlock(L); 187 lua_unlock(L);
188} 188}
189 189
@@ -191,7 +191,7 @@ LUA_API void lua_insert (lua_State *L, int index) {
191LUA_API void lua_replace (lua_State *L, int index) { 191LUA_API void lua_replace (lua_State *L, int index) {
192 lua_lock(L); 192 lua_lock(L);
193 api_checknelems(L, 1); 193 api_checknelems(L, 1);
194 setobj(luaA_index(L, index), L->top - 1); 194 setobj(luaA_index(L, index), L->top - 1); /* unknown destination */
195 L->top--; 195 L->top--;
196 lua_unlock(L); 196 lua_unlock(L);
197} 197}
@@ -199,7 +199,7 @@ LUA_API void lua_replace (lua_State *L, int index) {
199 199
200LUA_API void lua_pushvalue (lua_State *L, int index) { 200LUA_API void lua_pushvalue (lua_State *L, int index) {
201 lua_lock(L); 201 lua_lock(L);
202 setobj(L->top, luaA_index(L, index)); 202 setobj2s(L->top, luaA_index(L, index));
203 api_incr_top(L); 203 api_incr_top(L);
204 lua_unlock(L); 204 lua_unlock(L);
205} 205}
@@ -394,7 +394,7 @@ LUA_API void lua_pushnumber (lua_State *L, lua_Number n) {
394 394
395LUA_API void lua_pushlstring (lua_State *L, const char *s, size_t len) { 395LUA_API void lua_pushlstring (lua_State *L, const char *s, size_t len) {
396 lua_lock(L); 396 lua_lock(L);
397 setsvalue(L->top, luaS_newlstr(L, s, len)); 397 setsvalue2s(L->top, luaS_newlstr(L, s, len));
398 api_incr_top(L); 398 api_incr_top(L);
399 lua_unlock(L); 399 lua_unlock(L);
400} 400}
@@ -469,11 +469,9 @@ LUA_API void lua_pushlightuserdata (lua_State *L, void *p) {
469 469
470LUA_API void lua_gettable (lua_State *L, int index) { 470LUA_API void lua_gettable (lua_State *L, int index) {
471 StkId t; 471 StkId t;
472 const TObject *v;
473 lua_lock(L); 472 lua_lock(L);
474 t = luaA_index(L, index); 473 t = luaA_index(L, index);
475 v = luaV_gettable(L, t, L->top-1, 0); 474 setobj2s(L->top - 1, luaV_gettable(L, t, L->top - 1, 0));
476 setobj(L->top - 1, v);
477 lua_unlock(L); 475 lua_unlock(L);
478} 476}
479 477
@@ -483,7 +481,7 @@ LUA_API void lua_rawget (lua_State *L, int index) {
483 lua_lock(L); 481 lua_lock(L);
484 t = luaA_index(L, index); 482 t = luaA_index(L, index);
485 api_check(L, ttistable(t)); 483 api_check(L, ttistable(t));
486 setobj(L->top - 1, luaH_get(hvalue(t), L->top - 1)); 484 setobj2s(L->top - 1, luaH_get(hvalue(t), L->top - 1));
487 lua_unlock(L); 485 lua_unlock(L);
488} 486}
489 487
@@ -493,7 +491,7 @@ LUA_API void lua_rawgeti (lua_State *L, int index, int n) {
493 lua_lock(L); 491 lua_lock(L);
494 o = luaA_index(L, index); 492 o = luaA_index(L, index);
495 api_check(L, ttistable(o)); 493 api_check(L, ttistable(o));
496 setobj(L->top, luaH_getnum(hvalue(o), n)); 494 setobj2s(L->top, luaH_getnum(hvalue(o), n));
497 api_incr_top(L); 495 api_incr_top(L);
498 lua_unlock(L); 496 lua_unlock(L);
499} 497}
@@ -553,7 +551,7 @@ LUA_API void lua_getglobals (lua_State *L, int index) {
553 StkId o; 551 StkId o;
554 lua_lock(L); 552 lua_lock(L);
555 o = luaA_index(L, index); 553 o = luaA_index(L, index);
556 setobj(L->top, isLfunction(o) ? &clvalue(o)->l.g : gt(L)); 554 setobj2s(L->top, isLfunction(o) ? &clvalue(o)->l.g : gt(L));
557 api_incr_top(L); 555 api_incr_top(L);
558 lua_unlock(L); 556 lua_unlock(L);
559} 557}
@@ -581,7 +579,7 @@ LUA_API void lua_rawset (lua_State *L, int index) {
581 api_checknelems(L, 2); 579 api_checknelems(L, 2);
582 t = luaA_index(L, index); 580 t = luaA_index(L, index);
583 api_check(L, ttistable(t)); 581 api_check(L, ttistable(t));
584 setobj(luaH_set(L, hvalue(t), L->top-2), L->top-1); 582 setobj2t(luaH_set(L, hvalue(t), L->top-2), L->top-1);
585 L->top -= 2; 583 L->top -= 2;
586 lua_unlock(L); 584 lua_unlock(L);
587} 585}
@@ -593,7 +591,7 @@ LUA_API void lua_rawseti (lua_State *L, int index, int n) {
593 api_checknelems(L, 1); 591 api_checknelems(L, 1);
594 o = luaA_index(L, index); 592 o = luaA_index(L, index);
595 api_check(L, ttistable(o)); 593 api_check(L, ttistable(o));
596 setobj(luaH_setnum(L, hvalue(o), n), L->top-1); 594 setobj2t(luaH_setnum(L, hvalue(o), n), L->top-1);
597 L->top--; 595 L->top--;
598 lua_unlock(L); 596 lua_unlock(L);
599} 597}
@@ -787,7 +785,7 @@ LUA_API void lua_concat (lua_State *L, int n) {
787 luaC_checkGC(L); 785 luaC_checkGC(L);
788 } 786 }
789 else if (n == 0) { /* push empty string */ 787 else if (n == 0) { /* push empty string */
790 setsvalue(L->top, luaS_newlstr(L, NULL, 0)); 788 setsvalue2s(L->top, luaS_newlstr(L, NULL, 0));
791 api_incr_top(L); 789 api_incr_top(L);
792 } 790 }
793 /* else n == 1; nothing to do */ 791 /* else n == 1; nothing to do */
@@ -815,7 +813,7 @@ LUA_API int lua_pushupvalues (lua_State *L) {
815 n = func->c.nupvalues; 813 n = func->c.nupvalues;
816 luaD_checkstack(L, n + LUA_MINSTACK); 814 luaD_checkstack(L, n + LUA_MINSTACK);
817 for (i=0; i<n; i++) { 815 for (i=0; i<n; i++) {
818 setobj(L->top, &func->c.upvalue[i]); 816 setobj2s(L->top, &func->c.upvalue[i]);
819 L->top++; 817 L->top++;
820 } 818 }
821 lua_unlock(L); 819 lua_unlock(L);