summaryrefslogtreecommitdiff
path: root/ldump.c
diff options
context:
space:
mode:
authorRoberto Ierusalimschy <roberto@inf.puc-rio.br>2009-09-28 13:32:50 -0300
committerRoberto Ierusalimschy <roberto@inf.puc-rio.br>2009-09-28 13:32:50 -0300
commit5938212748636d21d6f4b372481ab3b6dd6c7538 (patch)
treefa5d0a28dac1ff6c087585bc684534eb1ae82298 /ldump.c
parent1829911d7c1c16cf01dfdbfc8e7a26cfa10ec797 (diff)
downloadlua-5938212748636d21d6f4b372481ab3b6dd6c7538.tar.gz
lua-5938212748636d21d6f4b372481ab3b6dd6c7538.tar.bz2
lua-5938212748636d21d6f4b372481ab3b6dd6c7538.zip
information about upvalues (where they come from) kept in Proto structure,
instead of sequence of pseudo-opcodes after OP_CLOSURE
Diffstat (limited to 'ldump.c')
-rw-r--r--ldump.c17
1 files changed, 14 insertions, 3 deletions
diff --git a/ldump.c b/ldump.c
index e17c9363..e8337f03 100644
--- a/ldump.c
+++ b/ldump.c
@@ -1,5 +1,5 @@
1/* 1/*
2** $Id: ldump.c,v 2.9 2006/09/11 14:07:24 roberto Exp roberto $ 2** $Id: ldump.c,v 2.10 2008/07/03 14:25:05 roberto Exp roberto $
3** save precompiled Lua chunks 3** save precompiled Lua chunks
4** See Copyright Notice in lua.h 4** See Copyright Notice in lua.h
5*/ 5*/
@@ -108,6 +108,17 @@ static void DumpConstants(const Proto* f, DumpState* D)
108 for (i=0; i<n; i++) DumpFunction(f->p[i],f->source,D); 108 for (i=0; i<n; i++) DumpFunction(f->p[i],f->source,D);
109} 109}
110 110
111static void DumpUpvalues(const Proto* f, DumpState* D)
112{
113 int i,n=f->sizeupvalues;
114 DumpInt(n,D);
115 for (i=0; i<n; i++)
116 {
117 DumpChar(f->upvalues[i].instack, D);
118 DumpChar(f->upvalues[i].idx, D);
119 }
120}
121
111static void DumpDebug(const Proto* f, DumpState* D) 122static void DumpDebug(const Proto* f, DumpState* D)
112{ 123{
113 int i,n; 124 int i,n;
@@ -123,7 +134,7 @@ static void DumpDebug(const Proto* f, DumpState* D)
123 } 134 }
124 n= (D->strip) ? 0 : f->sizeupvalues; 135 n= (D->strip) ? 0 : f->sizeupvalues;
125 DumpInt(n,D); 136 DumpInt(n,D);
126 for (i=0; i<n; i++) DumpString(f->upvalues[i],D); 137 for (i=0; i<n; i++) DumpString(f->upvalues[i].name,D);
127} 138}
128 139
129static void DumpFunction(const Proto* f, const TString* p, DumpState* D) 140static void DumpFunction(const Proto* f, const TString* p, DumpState* D)
@@ -131,12 +142,12 @@ static void DumpFunction(const Proto* f, const TString* p, DumpState* D)
131 DumpString((f->source==p || D->strip) ? NULL : f->source,D); 142 DumpString((f->source==p || D->strip) ? NULL : f->source,D);
132 DumpInt(f->linedefined,D); 143 DumpInt(f->linedefined,D);
133 DumpInt(f->lastlinedefined,D); 144 DumpInt(f->lastlinedefined,D);
134 DumpChar(f->nups,D);
135 DumpChar(f->numparams,D); 145 DumpChar(f->numparams,D);
136 DumpChar(f->is_vararg,D); 146 DumpChar(f->is_vararg,D);
137 DumpChar(f->maxstacksize,D); 147 DumpChar(f->maxstacksize,D);
138 DumpCode(f,D); 148 DumpCode(f,D);
139 DumpConstants(f,D); 149 DumpConstants(f,D);
150 DumpUpvalues(f,D);
140 DumpDebug(f,D); 151 DumpDebug(f,D);
141} 152}
142 153