diff options
| author | Roberto Ierusalimschy <roberto@inf.puc-rio.br> | 1994-11-18 17:46:21 -0200 |
|---|---|---|
| committer | Roberto Ierusalimschy <roberto@inf.puc-rio.br> | 1994-11-18 17:46:21 -0200 |
| commit | 93ccdd52ef83e283f7357c7e9de3a8773b26a16d (patch) | |
| tree | dabd6f8a9c903b4ea9397ec82d7829d268f7dec3 /opcode.c | |
| parent | 333a4f13d084b99c3729414c9c2d66222a8a1fc7 (diff) | |
| download | lua-github-93ccdd52ef83e283f7357c7e9de3a8773b26a16d.tar.gz | |
lua_lock receives its parameter via stack.
beginblock and endblock do not have parameters
Diffstat (limited to 'opcode.c')
| -rw-r--r-- | opcode.c | 34 |
1 files changed, 27 insertions, 7 deletions
@@ -3,7 +3,7 @@ ** TecCGraf - PUC-Rio */ -char *rcs_opcode="$Id: opcode.c,v 3.16 1994/11/17 19:43:34 roberto Exp roberto $"; +char *rcs_opcode="$Id: opcode.c,v 3.17 1994/11/17 21:23:43 roberto Exp roberto $"; #include <setjmp.h> #include <stdio.h> @@ -436,21 +436,33 @@ lua_Object lua_getsubscript (void) return 0; } + +#define MAX_C_BLOCKS 10 + +static int numCblocks = 0; +static int Cblocks[MAX_C_BLOCKS]; + /* ** API: starts a new block */ -int lua_beginblock (void) +void lua_beginblock (void) { - return CBase; + if (numCblocks < MAX_C_BLOCKS) + Cblocks[numCblocks] = CBase; + numCblocks++; } /* ** API: ends a block */ -void lua_endblock (int block) +void lua_endblock (void) { - CBase = block; - adjustC(0); + --numCblocks; + if (numCblocks < MAX_C_BLOCKS) + { + CBase = Cblocks[numCblocks]; + adjustC(0); + } } /* @@ -468,7 +480,7 @@ int lua_storesubscript (void) /* ** API: creates a new table */ -lua_Object lua_createTable (int initSize) +lua_Object lua_createtable (int initSize) { adjustC(0); avalue(top) = lua_createarray(initSize); @@ -550,6 +562,14 @@ lua_Object lua_getlocked (int ref) return Ref(top-1); } + +int lua_lock (void) +{ + adjustC(1); + return luaI_lock(--top); +} + + /* ** Get a global object. Return the object handle or NULL on error. */ |
