From 0e1058cfdd07a3751fce1c79b75241cf770266cf Mon Sep 17 00:00:00 2001 From: Roberto Ierusalimschy <roberto@inf.puc-rio.br> Date: Fri, 9 Jan 1998 12:44:55 -0200 Subject: small optimizations in switch order --- lapi.c | 10 +++++----- lgc.c | 6 +++--- llex.c | 11 ++++++----- lobject.c | 4 ++-- lstrlib.c | 30 +++++++++++++++--------------- ltable.c | 10 +++++----- 6 files changed, 36 insertions(+), 35 deletions(-) diff --git a/lapi.c b/lapi.c index 63e6dbfd..edce0266 100644 --- a/lapi.c +++ b/lapi.c @@ -1,5 +1,5 @@ /* -** $Id: lapi.c,v 1.17 1998/01/02 17:46:32 roberto Exp roberto $ +** $Id: lapi.c,v 1.18 1998/01/07 16:26:48 roberto Exp roberto $ ** Lua API ** See Copyright Notice in lua.h */ @@ -39,12 +39,12 @@ static int normalized_type (TObject *o) { int t = ttype(o); switch (t) { - case LUA_T_CLMARK: - return LUA_T_CLOSURE; case LUA_T_PMARK: return LUA_T_PROTO; case LUA_T_CMARK: return LUA_T_CPROTO; + case LUA_T_CLMARK: + return LUA_T_CLOSURE; default: return t; } @@ -382,12 +382,12 @@ int lua_tag (lua_Object lo) return o->value.ts->u.d.tag; case LUA_T_ARRAY: return o->value.a->htag; - case LUA_T_CLOSURE: case LUA_T_CLMARK: - return o->value.cl->consts[0].ttype; case LUA_T_PMARK: return LUA_T_PROTO; case LUA_T_CMARK: return LUA_T_CPROTO; + case LUA_T_CLOSURE: case LUA_T_CLMARK: + return o->value.cl->consts[0].ttype; #ifdef DEBUG case LUA_T_LINE: lua_error("internal error"); diff --git a/lgc.c b/lgc.c index c5a99e62..38cc50d3 100644 --- a/lgc.c +++ b/lgc.c @@ -1,5 +1,5 @@ /* -** $Id: lgc.c,v 1.13 1997/12/15 16:17:20 roberto Exp roberto $ +** $Id: lgc.c,v 1.14 1997/12/17 20:48:58 roberto Exp roberto $ ** Garbage Collector ** See Copyright Notice in lua.h */ @@ -87,12 +87,12 @@ static int ismarked (TObject *o) switch (o->ttype) { case LUA_T_STRING: case LUA_T_USERDATA: return o->value.ts->head.marked; + case LUA_T_ARRAY: + return o->value.a->head.marked; case LUA_T_CLOSURE: return o->value.cl->head.marked; case LUA_T_PROTO: return o->value.tf->head.marked; - case LUA_T_ARRAY: - return o->value.a->head.marked; #ifdef DEBUG case LUA_T_LINE: case LUA_T_CLMARK: case LUA_T_CMARK: case LUA_T_PMARK: diff --git a/llex.c b/llex.c index a246aff9..3e647b10 100644 --- a/llex.c +++ b/llex.c @@ -1,5 +1,5 @@ /* -** $Id: llex.c,v 1.11 1997/12/17 20:48:58 roberto Exp roberto $ +** $Id: llex.c,v 1.12 1997/12/22 17:52:20 roberto Exp roberto $ ** Lexical Analizer ** See Copyright Notice in lua.h */ @@ -268,15 +268,16 @@ int luaY_lex (YYSTYPE *l) LS->linelasttoken = LS->linenumber; while (1) { switch (LS->current) { - case '\n': - inclinenumber(LS); - LS->linelasttoken = LS->linenumber; - continue; case ' ': case '\t': case '\r': /* CR: to avoid problems with DOS */ next(LS); continue; + case '\n': + inclinenumber(LS); + LS->linelasttoken = LS->linenumber; + continue; + case '-': save_and_next(LS); if (LS->current != '-') return '-'; diff --git a/lobject.c b/lobject.c index a8c74c7f..981e236e 100644 --- a/lobject.c +++ b/lobject.c @@ -1,5 +1,5 @@ /* -** $Id: lobject.c,v 1.8 1997/12/15 16:17:20 roberto Exp roberto $ +** $Id: lobject.c,v 1.9 1997/12/26 18:38:16 roberto Exp roberto $ ** Some generic functions over Lua objects ** See Copyright Notice in lua.h */ @@ -48,9 +48,9 @@ int luaO_equalObj (TObject *t1, TObject *t2) case LUA_T_NUMBER: return nvalue(t1) == nvalue(t2); case LUA_T_STRING: case LUA_T_USERDATA: return svalue(t1) == svalue(t2); case LUA_T_ARRAY: return avalue(t1) == avalue(t2); - case LUA_T_CLOSURE: return t1->value.cl == t2->value.cl; case LUA_T_PROTO: return tfvalue(t1) == tfvalue(t2); case LUA_T_CPROTO: return fvalue(t1) == fvalue(t2); + case LUA_T_CLOSURE: return t1->value.cl == t2->value.cl; default: lua_error("internal error in `lua_equalObj'"); return 0; /* UNREACHEABLE */ diff --git a/lstrlib.c b/lstrlib.c index cca70bc5..34b9da42 100644 --- a/lstrlib.c +++ b/lstrlib.c @@ -1,5 +1,5 @@ /* -** $Id: lstrlib.c,v 1.4 1997/12/15 17:58:49 roberto Exp roberto $ +** $Id: lstrlib.c,v 1.5 1997/12/17 20:48:58 roberto Exp roberto $ ** Standard library for strings and pattern-matching ** See Copyright Notice in lua.h */ @@ -165,14 +165,14 @@ static int matchclass (int c, int cl) int res; if (c == 0) return 0; switch (tolower((unsigned char)cl)) { - case 'a' : res = isalpha((unsigned char)c); break; - case 'c' : res = iscntrl((unsigned char)c); break; + case 'w' : res = isalnum((unsigned char)c); break; case 'd' : res = isdigit((unsigned char)c); break; - case 'l' : res = islower((unsigned char)c); break; - case 'p' : res = ispunct((unsigned char)c); break; case 's' : res = isspace((unsigned char)c); break; + case 'a' : res = isalpha((unsigned char)c); break; + case 'p' : res = ispunct((unsigned char)c); break; + case 'l' : res = islower((unsigned char)c); break; case 'u' : res = isupper((unsigned char)c); break; - case 'w' : res = isalnum((unsigned char)c); break; + case 'c' : res = iscntrl((unsigned char)c); break; default: return (cl == c); } return (islower((unsigned char)cl) ? res : !res); @@ -182,12 +182,12 @@ static int matchclass (int c, int cl) int luaI_singlematch (int c, char *p, char **ep) { switch (*p) { - case '\0': - *ep = p; - return 0; case '.': *ep = p+1; return (c != 0); + case '\0': + *ep = p; + return 0; case ESC: if (*(++p) == '\0') luaL_verror("incorrect pattern (ends with `%c')", ESC); @@ -294,6 +294,12 @@ static char *match (char *s, char *p, struct Capture *cap) return res; p=ep+1; goto init; /* else return match(s, ep+1, cap); */ } + case '?': { /* optional */ + char *res; + if (s1 && (res = match(s1, ep+1, cap))) + return res; + p=ep+1; goto init; /* else return match(s, ep+1, cap); */ + } case '-': { /* repetition */ char *res; if ((res = match(s, ep+1, cap)) != 0) @@ -305,12 +311,6 @@ static char *match (char *s, char *p, struct Capture *cap) else return NULL; } - case '?': { /* optional */ - char *res; - if (s1 && (res = match(s1, ep+1, cap))) - return res; - p=ep+1; goto init; /* else return match(s, ep+1, cap); */ - } default: if (s1) { s=s1; p=ep; goto init; } /* return match(s1, ep, cap); */ else return NULL; diff --git a/ltable.c b/ltable.c index f182e4ba..0c91833a 100644 --- a/ltable.c +++ b/ltable.c @@ -1,5 +1,5 @@ /* -** $Id: ltable.c,v 1.8 1997/12/09 13:35:19 roberto Exp roberto $ +** $Id: ltable.c,v 1.9 1997/12/15 16:17:20 roberto Exp roberto $ ** Lua tables (hash) ** See Copyright Notice in lua.h */ @@ -36,8 +36,8 @@ static long int hashindex (TObject *ref) case LUA_T_STRING: case LUA_T_USERDATA: h = (IntPoint)tsvalue(ref); break; - case LUA_T_CLOSURE: - h = (IntPoint)clvalue(ref); + case LUA_T_ARRAY: + h = (IntPoint)avalue(ref); break; case LUA_T_PROTO: h = (IntPoint)tfvalue(ref); @@ -45,8 +45,8 @@ static long int hashindex (TObject *ref) case LUA_T_CPROTO: h = (IntPoint)fvalue(ref); break; - case LUA_T_ARRAY: - h = (IntPoint)avalue(ref); + case LUA_T_CLOSURE: + h = (IntPoint)clvalue(ref); break; default: lua_error("unexpected type to index table"); -- cgit v1.2.3-55-g6feb