aboutsummaryrefslogtreecommitdiff
path: root/lgc.c
diff options
context:
space:
mode:
authorRoberto Ierusalimschy <roberto@inf.puc-rio.br>2015-01-16 14:54:37 -0200
committerRoberto Ierusalimschy <roberto@inf.puc-rio.br>2015-01-16 14:54:37 -0200
commit7e2015a46df7976bddee313b994742e49e420714 (patch)
tree0b2db30f1214a478ccb3664d165c8a431f0d5850 /lgc.c
parent5b01cb39b5ec36c544152351c35c43149d9bbfec (diff)
downloadlua-7e2015a46df7976bddee313b994742e49e420714.tar.gz
lua-7e2015a46df7976bddee313b994742e49e420714.tar.bz2
lua-7e2015a46df7976bddee313b994742e49e420714.zip
size of short strings stored in a single byte, to reduce the size
of struct 'TString'
Diffstat (limited to 'lgc.c')
-rw-r--r--lgc.c15
1 files changed, 10 insertions, 5 deletions
diff --git a/lgc.c b/lgc.c
index 185c1d8c..1695ea74 100644
--- a/lgc.c
+++ b/lgc.c
@@ -1,5 +1,5 @@
1/* 1/*
2** $Id: lgc.c,v 2.200 2014/11/02 19:19:04 roberto Exp roberto $ 2** $Id: lgc.c,v 2.201 2014/12/20 13:58:15 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*/
@@ -226,10 +226,14 @@ static void reallymarkobject (global_State *g, GCObject *o) {
226 reentry: 226 reentry:
227 white2gray(o); 227 white2gray(o);
228 switch (o->tt) { 228 switch (o->tt) {
229 case LUA_TSHRSTR: 229 case LUA_TSHRSTR: {
230 gray2black(o);
231 g->GCmemtrav += sizelstring(gco2ts(o)->shrlen);
232 break;
233 }
230 case LUA_TLNGSTR: { 234 case LUA_TLNGSTR: {
231 gray2black(o); 235 gray2black(o);
232 g->GCmemtrav += sizestring(gco2ts(o)); 236 g->GCmemtrav += sizelstring(gco2ts(o)->u.lnglen);
233 break; 237 break;
234 } 238 }
235 case LUA_TUSERDATA: { 239 case LUA_TUSERDATA: {
@@ -689,9 +693,10 @@ static void freeobj (lua_State *L, GCObject *o) {
689 case LUA_TUSERDATA: luaM_freemem(L, o, sizeudata(gco2u(o))); break; 693 case LUA_TUSERDATA: luaM_freemem(L, o, sizeudata(gco2u(o))); break;
690 case LUA_TSHRSTR: 694 case LUA_TSHRSTR:
691 luaS_remove(L, gco2ts(o)); /* remove it from hash table */ 695 luaS_remove(L, gco2ts(o)); /* remove it from hash table */
692 /* go through */ 696 luaM_freemem(L, o, sizelstring(gco2ts(o)->shrlen));
697 break;
693 case LUA_TLNGSTR: { 698 case LUA_TLNGSTR: {
694 luaM_freemem(L, o, sizestring(gco2ts(o))); 699 luaM_freemem(L, o, sizelstring(gco2ts(o)->u.lnglen));
695 break; 700 break;
696 } 701 }
697 default: lua_assert(0); 702 default: lua_assert(0);