summaryrefslogtreecommitdiff
path: root/opcode.c
diff options
context:
space:
mode:
authorRoberto Ierusalimschy <roberto@inf.puc-rio.br>1994-11-18 17:46:21 -0200
committerRoberto Ierusalimschy <roberto@inf.puc-rio.br>1994-11-18 17:46:21 -0200
commit93ccdd52ef83e283f7357c7e9de3a8773b26a16d (patch)
treedabd6f8a9c903b4ea9397ec82d7829d268f7dec3 /opcode.c
parent333a4f13d084b99c3729414c9c2d66222a8a1fc7 (diff)
downloadlua-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.c34
1 files changed, 27 insertions, 7 deletions
diff --git a/opcode.c b/opcode.c
index 92b88c83..d1869654 100644
--- a/opcode.c
+++ b/opcode.c
@@ -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.
*/