bytecodes are indexed by integers, not Words, to allow bigger code on 32 bit machines

This commit is contained in:
Waldemar Celes 1994-12-27 18:41:11 -02:00
parent 8bc4b0d741
commit a8220feed2
1 changed files with 8 additions and 10 deletions

18
lua.stx
View File

@ -1,6 +1,6 @@
%{
char *rcs_luastx = "$Id: lua.stx,v 3.14 1994/12/20 21:20:36 roberto Exp celes $";
char *rcs_luastx = "$Id: lua.stx,v 3.15 1994/12/27 20:04:29 celes Exp celes $";
#include <stdio.h>
#include <stdlib.h>
@ -14,14 +14,12 @@ char *rcs_luastx = "$Id: lua.stx,v 3.14 1994/12/20 21:20:36 roberto Exp celes $"
#include "table.h"
#include "lua.h"
/* to avoid warnings generated by yacc */
int yyparse (void);
#define malloc luaI_malloc
#define realloc luaI_realloc
#define free luaI_free
#ifndef LISTING
#define LISTING 0
#endif
@ -29,14 +27,14 @@ int yyparse (void);
#ifndef CODE_BLOCK
#define CODE_BLOCK 256
#endif
static Word maxcode;
static Word maxmain;
static int maxcode;
static int maxmain;
static Long maxcurr; /* to allow maxcurr *= 2 without overflow */
static Byte *funcCode = NULL;
static Byte **initcode;
static Byte *basepc;
static Word maincode;
static Word pc;
static int maincode;
static int pc;
#define MAXVAR 32
static Long varbuffer[MAXVAR]; /* variables in an assignment list;
@ -57,11 +55,11 @@ static void code_byte (Byte c)
{
if (pc>maxcurr-2) /* 1 byte free to code HALT of main code */
{
if (maxcurr >= MAX_WORD)
if (maxcurr >= MAX_INT)
lua_error("code size overflow");
maxcurr *= 2;
if (maxcurr >= MAX_WORD)
maxcurr = MAX_WORD;
if (maxcurr >= MAX_INT)
maxcurr = MAX_INT;
basepc = growvector(basepc, maxcurr, Byte);
}
basepc[pc++] = c;