Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
ruanhaishen
Nodemcu Firmware
Commits
a92da3c3
Unverified
Commit
a92da3c3
authored
Aug 22, 2020
by
Terry Ellison
Committed by
GitHub
Aug 22, 2020
Browse files
Lua 5.1 / 5.3 alignment and document (#3193)
parent
1f386e93
Changes
76
Hide whitespace changes
Inline
Side-by-side
app/lua/lnodemcu.c
View file @
a92da3c3
...
@@ -19,8 +19,10 @@
...
@@ -19,8 +19,10 @@
#include "ltable.h"
#include "ltable.h"
#include "ltm.h"
#include "ltm.h"
#include "lnodemcu.h"
#include "lnodemcu.h"
#include "platform.h"
//== NodeMCU lauxlib.h API extensions ========================================//
#ifdef LUA_USE_ESP
#include "platform.h"
/*
/*
** Error Reporting Task. We can't pass a string parameter to the error reporter
** Error Reporting Task. We can't pass a string parameter to the error reporter
** directly through the task interface the call is wrapped in a C closure with
** directly through the task interface the call is wrapped in a C closure with
...
@@ -99,8 +101,7 @@ static void do_task (platform_task_param_t task_fn_ref, uint8_t prio) {
...
@@ -99,8 +101,7 @@ static void do_task (platform_task_param_t task_fn_ref, uint8_t prio) {
/*
/*
** Schedule a Lua function for task execution
** Schedule a Lua function for task execution
*/
*/
#include "lstate.h"
/*DEBUG*/
LUALIB_API
int
luaL_posttask
(
lua_State
*
L
,
int
prio
)
{
// [-1, +0, -]
LUALIB_API
int
luaL_posttask
(
lua_State
*
L
,
int
prio
)
{
// [-1, +0, -]
if
(
!
task_handle
)
if
(
!
task_handle
)
task_handle
=
platform_task_get_id
(
do_task
);
task_handle
=
platform_task_get_id
(
do_task
);
...
@@ -115,6 +116,98 @@ LUALIB_API int luaL_posttask( lua_State* L, int prio ) { // [-1, +0,
...
@@ -115,6 +116,98 @@ LUALIB_API int luaL_posttask( lua_State* L, int prio ) { // [-1, +0,
}
}
return
task_fn_ref
;
return
task_fn_ref
;
}
}
#else
LUALIB_API
int
luaL_posttask
(
lua_State
*
L
,
int
prio
)
{
return
0
;
}
/* Dummy stub on host */
#endif
#ifdef LUA_USE_ESP
/*
* Return an LFS function
*/
LUALIB_API
int
luaL_pushlfsmodule
(
lua_State
*
L
)
{
if
(
lua_pushlfsindex
(
L
)
==
LUA_TNIL
)
{
lua_remove
(
L
,
-
2
);
/* dump the name to balance the stack */
return
0
;
/* return nil if LFS not loaded */
}
lua_insert
(
L
,
-
2
);
lua_call
(
L
,
1
,
1
);
if
(
!
lua_isfunction
(
L
,
-
1
))
{
lua_pop
(
L
,
1
);
lua_pushnil
(
L
);
/* replace DTS by nil */
}
return
1
;
}
/*
* Return an array of functions in LFS
*/
LUALIB_API
int
luaL_pushlfsmodules
(
lua_State
*
L
)
{
if
(
lua_pushlfsindex
(
L
)
==
LUA_TNIL
)
return
0
;
/* return nil if LFS not loaded */
lua_call
(
L
,
0
,
2
);
lua_remove
(
L
,
-
2
);
/* remove DTS leaving array */
return
1
;
}
/*
* Return the Unix timestamp of the LFS image creation
*/
LUALIB_API
int
luaL_pushlfsdts
(
lua_State
*
L
)
{
if
(
lua_pushlfsindex
(
L
)
==
LUA_TNIL
)
return
0
;
/* return nil if LFS not loaded */
lua_call
(
L
,
0
,
1
);
return
1
;
}
#endif
//== NodeMCU lua.h API extensions ============================================//
LUA_API
int
lua_freeheap
(
void
)
{
#ifdef LUA_USE_HOST
return
MAX_INT
;
#else
return
(
int
)
platform_freeheap
();
#endif
}
#define api_incr_top(L) {api_check(L, L->top < L->ci->top); L->top++;}
LUA_API
int
lua_pushstringsarray
(
lua_State
*
L
,
int
opt
)
{
stringtable
*
tb
=
NULL
;
int
i
,
j
;
lua_lock
(
L
);
if
(
opt
==
0
)
tb
=
&
G
(
L
)
->
strt
;
#ifdef LUA_USE_ESP
else
if
(
opt
==
1
&&
G
(
L
)
->
ROstrt
.
hash
)
tb
=
&
G
(
L
)
->
ROstrt
;
#endif
if
(
tb
==
NULL
)
{
setnilvalue
(
L
->
top
);
api_incr_top
(
L
);
lua_unlock
(
L
);
return
0
;
}
Table
*
t
=
luaH_new
(
L
,
tb
->
nuse
,
0
);
sethvalue
(
L
,
L
->
top
,
t
);
api_incr_top
(
L
);
luaC_checkGC
(
L
);
lua_unlock
(
L
);
for
(
i
=
0
,
j
=
1
;
i
<
tb
->
size
;
i
++
)
{
GCObject
*
o
;
for
(
o
=
tb
->
hash
[
i
];
o
;
o
=
o
->
gch
.
next
)
{
TValue
v
;
setsvalue
(
L
,
&
v
,
o
);
setobj2s
(
L
,
luaH_setnum
(
L
,
hvalue
(
L
->
top
-
1
),
j
++
),
&
v
);
}
}
return
1
;
}
LUA_API
void
lua_createrotable
(
lua_State
*
L
,
ROTable
*
t
,
const
ROTable_entry
*
e
,
ROTable
*
mt
)
{
LUA_API
void
lua_createrotable
(
lua_State
*
L
,
ROTable
*
t
,
const
ROTable_entry
*
e
,
ROTable
*
mt
)
{
int
i
,
j
;
int
i
,
j
;
...
@@ -142,3 +235,22 @@ LUA_API void lua_createrotable (lua_State *L, ROTable *t, const ROTable_entry *e
...
@@ -142,3 +235,22 @@ LUA_API void lua_createrotable (lua_State *L, ROTable *t, const ROTable_entry *e
t
->
entry
=
cast
(
ROTable_entry
*
,
e
);
t
->
entry
=
cast
(
ROTable_entry
*
,
e
);
}
}
#ifdef LUA_USE_ESP
#include "lfunc.h"
/* Push the LClosure of the LFS index function */
LUA_API
int
lua_pushlfsindex
(
lua_State
*
L
)
{
lua_lock
(
L
);
Proto
*
p
=
G
(
L
)
->
ROpvmain
;
if
(
p
)
{
Closure
*
cl
=
luaF_newLclosure
(
L
,
0
,
hvalue
(
gt
(
L
)));
cl
->
l
.
p
=
p
;
setclvalue
(
L
,
L
->
top
,
cl
);
}
else
{
setnilvalue
(
L
->
top
);
}
api_incr_top
(
L
);
lua_unlock
(
L
);
return
p
?
LUA_TFUNCTION
:
LUA_TNIL
;
}
#endif
app/lua/loadlib.c
View file @
a92da3c3
...
@@ -23,7 +23,6 @@
...
@@ -23,7 +23,6 @@
#include "lauxlib.h"
#include "lauxlib.h"
#include "lualib.h"
#include "lualib.h"
#include "lnodemcu.h"
/* prefix for open functions in C libraries */
/* prefix for open functions in C libraries */
#define LUA_POF "luaopen_"
#define LUA_POF "luaopen_"
...
@@ -474,7 +473,7 @@ static int ll_require (lua_State *L) {
...
@@ -474,7 +473,7 @@ static int ll_require (lua_State *L) {
}
}
/* Is this a readonly table? */
/* Is this a readonly table? */
lua_getfield
(
L
,
LUA_GLOBALSINDEX
,
name
);
lua_getfield
(
L
,
LUA_GLOBALSINDEX
,
name
);
if
(
lua_is
ro
table
(
L
,
-
1
))
{
if
(
lua_istable
(
L
,
-
1
))
{
return
1
;
return
1
;
}
else
{
}
else
{
lua_pop
(
L
,
1
);
lua_pop
(
L
,
1
);
...
@@ -567,7 +566,7 @@ static int ll_module (lua_State *L) {
...
@@ -567,7 +566,7 @@ static int ll_module (lua_State *L) {
const
char
*
modname
=
luaL_checkstring
(
L
,
1
);
const
char
*
modname
=
luaL_checkstring
(
L
,
1
);
/* Is this a readonly table? */
/* Is this a readonly table? */
lua_getfield
(
L
,
LUA_GLOBALSINDEX
,
modname
);
lua_getfield
(
L
,
LUA_GLOBALSINDEX
,
modname
);
if
(
lua_is
ro
table
(
L
,
-
1
))
{
if
(
lua_istable
(
L
,
-
1
))
{
return
0
;
return
0
;
}
else
{
}
else
{
lua_pop
(
L
,
1
);
lua_pop
(
L
,
1
);
...
...
app/lua/lobject.h
View file @
a92da3c3
...
@@ -17,7 +17,7 @@
...
@@ -17,7 +17,7 @@
/* tags for values visible from Lua */
/* tags for values visible from Lua */
#define LAST_TAG LUA_TTHREAD
#define LAST_TAG LUA_TTHREAD
#define NUM
_
TAGS (LAST_TAG+1)
#define
LUA_
NUMTAGS (LAST_TAG+1)
#define READONLYMASK (1<<7)
/* denormalised bitmask for READONLYBIT and */
#define READONLYMASK (1<<7)
/* denormalised bitmask for READONLYBIT and */
#define LFSMASK (1<<6)
/* LFSBIT to avoid include proliferation */
#define LFSMASK (1<<6)
/* LFSBIT to avoid include proliferation */
...
@@ -111,7 +111,7 @@ typedef struct lua_TValue {
...
@@ -111,7 +111,7 @@ typedef struct lua_TValue {
#define ttisnil(o) (ttype(o) == LUA_TNIL)
#define ttisnil(o) (ttype(o) == LUA_TNIL)
#define ttisnumber(o) (ttype(o) == LUA_TNUMBER)
#define ttisnumber(o) (ttype(o) == LUA_TNUMBER)
#define ttisstring(o) (ttype(o) == LUA_TSTRING)
#define ttisstring(o) (ttype(o) == LUA_TSTRING)
#define ttistable(o) (
basettype
(o) == LUA_TTABLE)
#define ttistable(o) (
ttnov
(o) == LUA_TTABLE)
#define ttisrwtable(o) (type(o) == LUA_TTABLE)
#define ttisrwtable(o) (type(o) == LUA_TTABLE)
#define ttisrotable(o) (ttype(o) & LUA_TISROTABLE)
#define ttisrotable(o) (ttype(o) & LUA_TISROTABLE)
#define ttisboolean(o) (ttype(o) == LUA_TBOOLEAN)
#define ttisboolean(o) (ttype(o) == LUA_TBOOLEAN)
...
@@ -120,12 +120,12 @@ typedef struct lua_TValue {
...
@@ -120,12 +120,12 @@ typedef struct lua_TValue {
#define ttislightuserdata(o) (ttype(o) == LUA_TLIGHTUSERDATA)
#define ttislightuserdata(o) (ttype(o) == LUA_TLIGHTUSERDATA)
#define ttislightfunction(o) (ttype(o) == LUA_TLIGHTFUNCTION)
#define ttislightfunction(o) (ttype(o) == LUA_TLIGHTFUNCTION)
#define ttisclfunction(o) (ttype(o) == LUA_TFUNCTION)
#define ttisclfunction(o) (ttype(o) == LUA_TFUNCTION)
#define ttisfunction(o) (
basettype
(o) == LUA_TFUNCTION)
#define ttisfunction(o) (
ttnov
(o) == LUA_TFUNCTION)
/* Macros to access values */
/* Macros to access values */
#define ttype(o) ((void) (o)->value, (o)->tt)
#define ttype(o) ((void) (o)->value, (o)->tt)
#define
basettype
(o) ((void) (o)->value, ((o)->tt & LUA_TMASK))
#define
ttnov
(o) ((void) (o)->value, ((o)->tt & LUA_TMASK))
#define gcvalue(o) check_exp(iscollectable(o), (o)->value.gc)
#define gcvalue(o) check_exp(iscollectable(o), (o)->value.gc)
#define pvalue(o) check_exp(ttislightuserdata(o), (o)->value.p)
#define pvalue(o) check_exp(ttislightuserdata(o), (o)->value.p)
#define fvalue(o) check_exp(ttislightfunction(o), (o)->value.p)
#define fvalue(o) check_exp(ttislightfunction(o), (o)->value.p)
...
@@ -277,20 +277,13 @@ typedef struct Proto {
...
@@ -277,20 +277,13 @@ typedef struct Proto {
TValue
*
k
;
/* constants used by the function */
TValue
*
k
;
/* constants used by the function */
Instruction
*
code
;
Instruction
*
code
;
struct
Proto
**
p
;
/* functions defined inside the function */
struct
Proto
**
p
;
/* functions defined inside the function */
#ifdef LUA_OPTIMIZE_DEBUG
unsigned
char
*
packedlineinfo
;
unsigned
char
*
packedlineinfo
;
#else
int
*
lineinfo
;
/* map from opcodes to source lines */
#endif
struct
LocVar
*
locvars
;
/* information about local variables */
struct
LocVar
*
locvars
;
/* information about local variables */
TString
**
upvalues
;
/* upvalue names */
TString
**
upvalues
;
/* upvalue names */
TString
*
source
;
TString
*
source
;
int
sizeupvalues
;
int
sizeupvalues
;
int
sizek
;
/* size of `k' */
int
sizek
;
/* size of `k' */
int
sizecode
;
int
sizecode
;
#ifndef LUA_OPTIMIZE_DEBUG
int
sizelineinfo
;
#endif
int
sizep
;
/* size of `p' */
int
sizep
;
/* size of `p' */
int
sizelocvars
;
int
sizelocvars
;
int
linedefined
;
int
linedefined
;
...
...
app/lua/lparser.c
View file @
a92da3c3
...
@@ -343,12 +343,10 @@ static void open_func (LexState *ls, FuncState *fs) {
...
@@ -343,12 +343,10 @@ static void open_func (LexState *ls, FuncState *fs) {
fs
->
bl
=
NULL
;
fs
->
bl
=
NULL
;
f
->
source
=
ls
->
source
;
f
->
source
=
ls
->
source
;
f
->
maxstacksize
=
2
;
/* registers 0/1 are always valid */
f
->
maxstacksize
=
2
;
/* registers 0/1 are always valid */
#ifdef LUA_OPTIMIZE_DEBUG
fs
->
packedlineinfoSize
=
0
;
fs
->
packedlineinfoSize
=
0
;
fs
->
lastline
=
0
;
fs
->
lastline
=
0
;
fs
->
lastlineOffset
=
0
;
fs
->
lastlineOffset
=
0
;
fs
->
lineinfoLastPC
=
-
1
;
fs
->
lineinfoLastPC
=
-
1
;
#endif
fs
->
h
=
luaH_new
(
L
,
0
,
0
);
fs
->
h
=
luaH_new
(
L
,
0
,
0
);
/* anchor table of constants and prototype (to avoid being collected) */
/* anchor table of constants and prototype (to avoid being collected) */
sethvalue2s
(
L
,
L
->
top
,
fs
->
h
);
sethvalue2s
(
L
,
L
->
top
,
fs
->
h
);
...
@@ -366,15 +364,9 @@ static void close_func (LexState *ls) {
...
@@ -366,15 +364,9 @@ static void close_func (LexState *ls) {
luaK_ret
(
fs
,
0
,
0
);
/* final return */
luaK_ret
(
fs
,
0
,
0
);
/* final return */
luaM_reallocvector
(
L
,
f
->
code
,
f
->
sizecode
,
fs
->
pc
,
Instruction
);
luaM_reallocvector
(
L
,
f
->
code
,
f
->
sizecode
,
fs
->
pc
,
Instruction
);
f
->
sizecode
=
fs
->
pc
;
f
->
sizecode
=
fs
->
pc
;
#ifdef LUA_OPTIMIZE_DEBUG
f
->
packedlineinfo
[
fs
->
lastlineOffset
+
1
]
=
0
;
f
->
packedlineinfo
[
fs
->
lastlineOffset
+
1
]
=
0
;
luaM_reallocvector
(
L
,
f
->
packedlineinfo
,
fs
->
packedlineinfoSize
,
luaM_reallocvector
(
L
,
f
->
packedlineinfo
,
fs
->
packedlineinfoSize
,
fs
->
lastlineOffset
+
2
,
unsigned
char
);
fs
->
lastlineOffset
+
2
,
unsigned
char
);
#else
luaM_reallocvector
(
L
,
f
->
lineinfo
,
f
->
sizelineinfo
,
fs
->
pc
,
int
);
f
->
sizelineinfo
=
fs
->
pc
;
#endif
luaM_reallocvector
(
L
,
f
->
k
,
f
->
sizek
,
fs
->
nk
,
TValue
);
luaM_reallocvector
(
L
,
f
->
k
,
f
->
sizek
,
fs
->
nk
,
TValue
);
f
->
sizek
=
fs
->
nk
;
f
->
sizek
=
fs
->
nk
;
luaM_reallocvector
(
L
,
f
->
p
,
f
->
sizep
,
fs
->
np
,
Proto
*
);
luaM_reallocvector
(
L
,
f
->
p
,
f
->
sizep
,
fs
->
np
,
Proto
*
);
...
@@ -391,20 +383,11 @@ static void close_func (LexState *ls) {
...
@@ -391,20 +383,11 @@ static void close_func (LexState *ls) {
L
->
top
-=
2
;
/* remove table and prototype from the stack */
L
->
top
-=
2
;
/* remove table and prototype from the stack */
}
}
#ifdef LUA_OPTIMIZE_DEBUG
static
void
compile_stripdebug
(
lua_State
*
L
,
Proto
*
f
)
{
static
void
compile_stripdebug
(
lua_State
*
L
,
Proto
*
f
)
{
int
level
;
int
level
=
G
(
L
)
->
stripdefault
;
lua_pushlightuserdata
(
L
,
&
luaG_stripdebug
);
if
(
level
>
0
)
lua_gettable
(
L
,
LUA_REGISTRYINDEX
);
luaG_stripdebug
(
L
,
f
,
level
,
1
);
level
=
lua_isnil
(
L
,
-
1
)
?
LUA_OPTIMIZE_DEBUG
:
lua_tointeger
(
L
,
-
1
);
lua_pop
(
L
,
1
);
if
(
level
>
1
)
{
int
len
=
luaG_stripdebug
(
L
,
f
,
level
,
1
);
UNUSED
(
len
);
}
}
}
#endif
Proto
*
luaY_parser
(
lua_State
*
L
,
ZIO
*
z
,
Mbuffer
*
buff
,
const
char
*
name
)
{
Proto
*
luaY_parser
(
lua_State
*
L
,
ZIO
*
z
,
Mbuffer
*
buff
,
const
char
*
name
)
{
...
@@ -421,9 +404,7 @@ Proto *luaY_parser (lua_State *L, ZIO *z, Mbuffer *buff, const char *name) {
...
@@ -421,9 +404,7 @@ Proto *luaY_parser (lua_State *L, ZIO *z, Mbuffer *buff, const char *name) {
chunk
(
&
lexstate
);
chunk
(
&
lexstate
);
check
(
&
lexstate
,
TK_EOS
);
check
(
&
lexstate
,
TK_EOS
);
close_func
(
&
lexstate
);
close_func
(
&
lexstate
);
#ifdef LUA_OPTIMIZE_DEBUG
compile_stripdebug
(
L
,
funcstate
.
f
);
compile_stripdebug
(
L
,
funcstate
.
f
);
#endif
L
->
top
--
;
/* remove 'name' from stack */
L
->
top
--
;
/* remove 'name' from stack */
lua_assert
(
funcstate
.
prev
==
NULL
);
lua_assert
(
funcstate
.
prev
==
NULL
);
lua_assert
(
funcstate
.
f
->
nups
==
0
);
lua_assert
(
funcstate
.
f
->
nups
==
0
);
...
...
app/lua/lparser.h
View file @
a92da3c3
...
@@ -72,12 +72,10 @@ typedef struct FuncState {
...
@@ -72,12 +72,10 @@ typedef struct FuncState {
lu_byte
nactvar
;
/* number of active local variables */
lu_byte
nactvar
;
/* number of active local variables */
upvaldesc
upvalues
[
LUAI_MAXUPVALUES
];
/* upvalues */
upvaldesc
upvalues
[
LUAI_MAXUPVALUES
];
/* upvalues */
unsigned
short
actvar
[
LUAI_MAXVARS
];
/* declared-variable stack */
unsigned
short
actvar
[
LUAI_MAXVARS
];
/* declared-variable stack */
#ifdef LUA_OPTIMIZE_DEBUG
int
packedlineinfoSize
;
/* only used during compilation for line info */
int
packedlineinfoSize
;
/* only used during compilation for line info */
int
lastline
;
/* ditto */
int
lastline
;
/* ditto */
int
lastlineOffset
;
/* ditto */
int
lastlineOffset
;
/* ditto */
int
lineinfoLastPC
;
/* ditto */
int
lineinfoLastPC
;
/* ditto */
#endif
}
FuncState
;
}
FuncState
;
...
...
app/lua/lstate.c
View file @
a92da3c3
...
@@ -184,6 +184,7 @@ LUA_API lua_State *lua_newstate (lua_Alloc f, void *ud) {
...
@@ -184,6 +184,7 @@ LUA_API lua_State *lua_newstate (lua_Alloc f, void *ud) {
g
->
memlimit
=
0
;
g
->
memlimit
=
0
;
g
->
gcpause
=
LUAI_GCPAUSE
;
g
->
gcpause
=
LUAI_GCPAUSE
;
g
->
gcstepmul
=
LUAI_GCMUL
;
g
->
gcstepmul
=
LUAI_GCMUL
;
g
->
stripdefault
=
LUAI_OPTIMIZE_DEBUG
;
g
->
gcdept
=
0
;
g
->
gcdept
=
0
;
#ifdef EGC_INITIAL_MODE
#ifdef EGC_INITIAL_MODE
g
->
egcmode
=
EGC_INITIAL_MODE
;
g
->
egcmode
=
EGC_INITIAL_MODE
;
...
@@ -203,7 +204,7 @@ LUA_API lua_State *lua_newstate (lua_Alloc f, void *ud) {
...
@@ -203,7 +204,7 @@ LUA_API lua_State *lua_newstate (lua_Alloc f, void *ud) {
g
->
LFSsize
=
0
;
g
->
LFSsize
=
0
;
g
->
error_reporter
=
0
;
g
->
error_reporter
=
0
;
#endif
#endif
for
(
i
=
0
;
i
<
NUM
_
TAGS
;
i
++
)
g
->
mt
[
i
]
=
NULL
;
for
(
i
=
0
;
i
<
LUA_
NUMTAGS
;
i
++
)
g
->
mt
[
i
]
=
NULL
;
if
(
luaD_rawrunprotected
(
L
,
f_luaopen
,
NULL
)
!=
0
)
{
if
(
luaD_rawrunprotected
(
L
,
f_luaopen
,
NULL
)
!=
0
)
{
/* memory allocation error: free partial state */
/* memory allocation error: free partial state */
close_state
(
L
);
close_state
(
L
);
...
...
app/lua/lstate.h
View file @
a92da3c3
...
@@ -87,12 +87,13 @@ typedef struct global_State {
...
@@ -87,12 +87,13 @@ typedef struct global_State {
lu_mem
gcdept
;
/* how much GC is `behind schedule' */
lu_mem
gcdept
;
/* how much GC is `behind schedule' */
int
gcpause
;
/* size of pause between successive GCs */
int
gcpause
;
/* size of pause between successive GCs */
int
gcstepmul
;
/* GC `granularity' */
int
gcstepmul
;
/* GC `granularity' */
int
stripdefault
;
/* default stripping level for compilation */
int
egcmode
;
/* emergency garbage collection operation mode */
int
egcmode
;
/* emergency garbage collection operation mode */
lua_CFunction
panic
;
/* to be called in unprotected errors */
lua_CFunction
panic
;
/* to be called in unprotected errors */
TValue
l_registry
;
TValue
l_registry
;
struct
lua_State
*
mainthread
;
struct
lua_State
*
mainthread
;
UpVal
uvhead
;
/* head of double-linked list of all open upvalues */
UpVal
uvhead
;
/* head of double-linked list of all open upvalues */
struct
Table
*
mt
[
NUM
_
TAGS
];
/* metatables for basic types */
struct
Table
*
mt
[
LUA_
NUMTAGS
];
/* metatables for basic types */
TString
*
tmname
[
TM_N
];
/* array with tag-method names */
TString
*
tmname
[
TM_N
];
/* array with tag-method names */
#ifndef LUA_CROSS_COMPILER
#ifndef LUA_CROSS_COMPILER
stringtable
ROstrt
;
/* Flash-based hash table for RO strings */
stringtable
ROstrt
;
/* Flash-based hash table for RO strings */
...
...
app/lua/lstrlib.c
View file @
a92da3c3
...
@@ -14,7 +14,6 @@
...
@@ -14,7 +14,6 @@
#include "lauxlib.h"
#include "lauxlib.h"
#include "lualib.h"
#include "lualib.h"
#include "lnodemcu.h"
/* macro to `unsign' a character */
/* macro to `unsign' a character */
#define uchar(c) ((unsigned char)(c))
#define uchar(c) ((unsigned char)(c))
...
@@ -141,17 +140,25 @@ static int writer (lua_State *L, const void* b, size_t size, void* B) {
...
@@ -141,17 +140,25 @@ static int writer (lua_State *L, const void* b, size_t size, void* B) {
static
int
str_dump
(
lua_State
*
L
)
{
static
int
str_dump
(
lua_State
*
L
)
{
luaL_Buffer
b
;
luaL_Buffer
b
;
int
strip
,
tstrip
=
lua_type
(
L
,
2
);
if
(
tstrip
==
LUA_TBOOLEAN
)
{
strip
=
lua_toboolean
(
L
,
2
)
?
2
:
0
;
}
else
if
(
tstrip
==
LUA_TNONE
||
tstrip
==
LUA_TNIL
)
{
strip
=
-
1
;
/* This tells lua_dump to use the global strip default */
}
else
{
strip
=
lua_tointeger
(
L
,
2
);
luaL_argcheck
(
L
,
(
unsigned
)(
strip
)
<
3
,
2
,
"strip out of range"
);
}
luaL_checktype
(
L
,
1
,
LUA_TFUNCTION
);
luaL_checktype
(
L
,
1
,
LUA_TFUNCTION
);
lua_settop
(
L
,
1
);
lua_settop
(
L
,
1
);
luaL_buffinit
(
L
,
&
b
);
luaL_buffinit
(
L
,
&
b
);
if
(
lua_dump
(
L
,
writer
,
&
b
)
!=
0
)
if
(
lua_dump
(
L
,
writer
,
&
b
,
strip
)
!=
0
)
luaL_error
(
L
,
"unable to dump given function"
);
return
luaL_error
(
L
,
"unable to dump given function"
);
luaL_pushresult
(
&
b
);
luaL_pushresult
(
&
b
);
return
1
;
return
1
;
}
}
/*
/*
** {======================================================
** {======================================================
** PATTERN MATCHING
** PATTERN MATCHING
...
...
app/lua/ltable.h
View file @
a92da3c3
...
@@ -20,21 +20,16 @@
...
@@ -20,21 +20,16 @@
#define isrwtable(t) (gettt(t)==LUA_TTABLE)
#define isrwtable(t) (gettt(t)==LUA_TTABLE)
LUAI_FUNC
const
TValue
*
luaH_getnum
(
Table
*
t
,
int
key
);
LUAI_FUNC
const
TValue
*
luaH_getnum
(
Table
*
t
,
int
key
);
LUAI_FUNC
const
TValue
*
luaH_getnum_ro
(
void
*
t
,
int
key
);
LUAI_FUNC
TValue
*
luaH_setnum
(
lua_State
*
L
,
Table
*
t
,
int
key
);
LUAI_FUNC
TValue
*
luaH_setnum
(
lua_State
*
L
,
Table
*
t
,
int
key
);
LUAI_FUNC
const
TValue
*
luaH_getstr
(
Table
*
t
,
TString
*
key
);
LUAI_FUNC
const
TValue
*
luaH_getstr
(
Table
*
t
,
TString
*
key
);
LUAI_FUNC
const
TValue
*
luaH_getstr_ro
(
void
*
t
,
TString
*
key
);
LUAI_FUNC
TValue
*
luaH_setstr
(
lua_State
*
L
,
Table
*
t
,
TString
*
key
);
LUAI_FUNC
TValue
*
luaH_setstr
(
lua_State
*
L
,
Table
*
t
,
TString
*
key
);
LUAI_FUNC
const
TValue
*
luaH_get
(
Table
*
t
,
const
TValue
*
key
);
LUAI_FUNC
const
TValue
*
luaH_get
(
Table
*
t
,
const
TValue
*
key
);
LUAI_FUNC
const
TValue
*
luaH_get_ro
(
void
*
t
,
const
TValue
*
key
);
LUAI_FUNC
TValue
*
luaH_set
(
lua_State
*
L
,
Table
*
t
,
const
TValue
*
key
);
LUAI_FUNC
TValue
*
luaH_set
(
lua_State
*
L
,
Table
*
t
,
const
TValue
*
key
);
LUAI_FUNC
Table
*
luaH_new
(
lua_State
*
L
,
int
narray
,
int
lnhash
);
LUAI_FUNC
Table
*
luaH_new
(
lua_State
*
L
,
int
narray
,
int
lnhash
);
LUAI_FUNC
void
luaH_resizearray
(
lua_State
*
L
,
Table
*
t
,
int
nasize
);
LUAI_FUNC
void
luaH_resizearray
(
lua_State
*
L
,
Table
*
t
,
int
nasize
);
LUAI_FUNC
void
luaH_free
(
lua_State
*
L
,
Table
*
t
);
LUAI_FUNC
void
luaH_free
(
lua_State
*
L
,
Table
*
t
);
LUAI_FUNC
int
luaH_next
(
lua_State
*
L
,
Table
*
t
,
StkId
key
);
LUAI_FUNC
int
luaH_next
(
lua_State
*
L
,
Table
*
t
,
StkId
key
);
LUAI_FUNC
int
luaH_next_ro
(
lua_State
*
L
,
void
*
t
,
StkId
key
);
LUAI_FUNC
int
luaH_getn
(
Table
*
t
);
LUAI_FUNC
int
luaH_getn
(
Table
*
t
);
LUAI_FUNC
int
luaH_getn_ro
(
void
*
t
);
LUAI_FUNC
int
luaH_isdummy
(
Node
*
n
);
LUAI_FUNC
int
luaH_isdummy
(
Node
*
n
);
#define LUA_MAX_ROTABLE_NAME 32
#define LUA_MAX_ROTABLE_NAME 32
...
...
app/lua/ltablib.c
View file @
a92da3c3
...
@@ -12,7 +12,6 @@
...
@@ -12,7 +12,6 @@
#include "lauxlib.h"
#include "lauxlib.h"
#include "lualib.h"
#include "lualib.h"
#include "lnodemcu.h"
#define aux_getn(L,n) (luaL_checktype(L, n, LUA_TTABLE), luaL_getn(L, n))
#define aux_getn(L,n) (luaL_checktype(L, n, LUA_TTABLE), luaL_getn(L, n))
...
...
app/lua/ltm.c
View file @
a92da3c3
...
@@ -70,7 +70,7 @@ const TValue *luaT_gettmbyobj (lua_State *L, const TValue *o, TMS event) {
...
@@ -70,7 +70,7 @@ const TValue *luaT_gettmbyobj (lua_State *L, const TValue *o, TMS event) {
mt
=
uvalue
(
o
)
->
metatable
;
mt
=
uvalue
(
o
)
->
metatable
;
break
;
break
;
default:
default:
mt
=
G
(
L
)
->
mt
[
basettype
(
o
)];
mt
=
G
(
L
)
->
mt
[
ttnov
(
o
)];
}
}
return
(
mt
?
luaH_getstr
(
mt
,
G
(
L
)
->
tmname
[
event
])
:
luaO_nilobject
);
return
(
mt
?
luaH_getstr
(
mt
,
G
(
L
)
->
tmname
[
event
])
:
luaO_nilobject
);
}
}
app/lua/lua.h
View file @
a92da3c3
...
@@ -9,9 +9,9 @@
...
@@ -9,9 +9,9 @@
#ifndef lua_h
#ifndef lua_h
#define lua_h
#define lua_h
#include <stdint.h>
#include <stdint.h>
#include
"
stdarg.h
"
#include
<
stdarg.h
>
#include
"
stddef.h
"
#include
<
stddef.h
>
#include
"
ctype.h
"
#include
<
ctype.h
>
#include "luaconf.h"
#include "luaconf.h"
...
@@ -99,8 +99,8 @@ typedef void * (*lua_Alloc) (void *ud, void *ptr, size_t osize, size_t nsize);
...
@@ -99,8 +99,8 @@ typedef void * (*lua_Alloc) (void *ud, void *ptr, size_t osize, size_t nsize);
#include LUA_USER_H
#include LUA_USER_H
#endif
#endif
#if
def
ined(LUA_OPTIMIZE_DEBUG) &&
LUA_OPTIMIZE_DEBUG
== 0
#if
n
def LUA
I
_OPTIMIZE_DEBUG
#
un
def LUA_OPTIMIZE_DEBUG
#def
ine
LUA
I
_OPTIMIZE_DEBUG
2
#endif
#endif
/* type of numbers in Lua */
/* type of numbers in Lua */
...
@@ -125,6 +125,7 @@ LUA_API lua_CFunction (lua_atpanic) (lua_State *L, lua_CFunction panicf);
...
@@ -125,6 +125,7 @@ LUA_API lua_CFunction (lua_atpanic) (lua_State *L, lua_CFunction panicf);
/*
/*
** basic stack manipulation
** basic stack manipulation
*/
*/
LUA_API
int
(
lua_absindex
)
(
lua_State
*
L
,
int
idx
);
LUA_API
int
(
lua_gettop
)
(
lua_State
*
L
);
LUA_API
int
(
lua_gettop
)
(
lua_State
*
L
);
LUA_API
void
(
lua_settop
)
(
lua_State
*
L
,
int
idx
);
LUA_API
void
(
lua_settop
)
(
lua_State
*
L
,
int
idx
);
LUA_API
void
(
lua_pushvalue
)
(
lua_State
*
L
,
int
idx
);
LUA_API
void
(
lua_pushvalue
)
(
lua_State
*
L
,
int
idx
);
...
@@ -148,9 +149,11 @@ LUA_API int (lua_type) (lua_State *L, int idx);
...
@@ -148,9 +149,11 @@ LUA_API int (lua_type) (lua_State *L, int idx);
LUA_API
int
(
lua_fulltype
)
(
lua_State
*
L
,
int
idx
);
LUA_API
int
(
lua_fulltype
)
(
lua_State
*
L
,
int
idx
);
LUA_API
const
char
*
(
lua_typename
)
(
lua_State
*
L
,
int
tp
);
LUA_API
const
char
*
(
lua_typename
)
(
lua_State
*
L
,
int
tp
);
LUA_API
int
(
lua_equal
)
(
lua_State
*
L
,
int
idx1
,
int
idx2
);
LUA_API
int
(
lua_rawequal
)
(
lua_State
*
L
,
int
idx1
,
int
idx2
);
LUA_API
int
(
lua_rawequal
)
(
lua_State
*
L
,
int
idx1
,
int
idx2
);
#define LUA_OPEQ 0
LUA_API
int
(
lua_lessthan
)
(
lua_State
*
L
,
int
idx1
,
int
idx2
);
#define LUA_OPLT 1
#define LUA_OPLE 2
LUA_API
int
(
lua_compare
)
(
lua_State
*
L
,
int
idx1
,
int
idx2
,
int
op
);
LUA_API
lua_Number
(
lua_tonumber
)
(
lua_State
*
L
,
int
idx
);
LUA_API
lua_Number
(
lua_tonumber
)
(
lua_State
*
L
,
int
idx
);
LUA_API
lua_Integer
(
lua_tointeger
)
(
lua_State
*
L
,
int
idx
);
LUA_API
lua_Integer
(
lua_tointeger
)
(
lua_State
*
L
,
int
idx
);
...
@@ -183,10 +186,11 @@ LUA_API int (lua_pushthread) (lua_State *L);
...
@@ -183,10 +186,11 @@ LUA_API int (lua_pushthread) (lua_State *L);
/*
/*
** get functions (Lua -> stack)
** get functions (Lua -> stack)
*/
*/
LUA_API
void
(
lua_gettable
)
(
lua_State
*
L
,
int
idx
);
LUA_API
int
(
lua_gettable
)
(
lua_State
*
L
,
int
idx
);
LUA_API
void
(
lua_getfield
)
(
lua_State
*
L
,
int
idx
,
const
char
*
k
);
LUA_API
int
(
lua_getfield
)
(
lua_State
*
L
,
int
idx
,
const
char
*
k
);
LUA_API
void
(
lua_rawget
)
(
lua_State
*
L
,
int
idx
);
LUA_API
int
(
lua_rawget
)
(
lua_State
*
L
,
int
idx
);
LUA_API
void
(
lua_rawgeti
)
(
lua_State
*
L
,
int
idx
,
int
n
);
LUA_API
int
(
lua_rawgeti
)
(
lua_State
*
L
,
int
idx
,
int
n
);
LUA_API
int
(
lua_rawgetp
)
(
lua_State
*
L
,
int
idx
,
const
void
*
p
);
LUA_API
void
(
lua_createtable
)
(
lua_State
*
L
,
int
narr
,
int
nrec
);
LUA_API
void
(
lua_createtable
)
(
lua_State
*
L
,
int
narr
,
int
nrec
);
LUA_API
void
*
(
lua_newuserdata
)
(
lua_State
*
L
,
size_t
sz
);
LUA_API
void
*
(
lua_newuserdata
)
(
lua_State
*
L
,
size_t
sz
);
LUA_API
int
(
lua_getmetatable
)
(
lua_State
*
L
,
int
objindex
);
LUA_API
int
(
lua_getmetatable
)
(
lua_State
*
L
,
int
objindex
);
...
@@ -200,6 +204,7 @@ LUA_API void (lua_settable) (lua_State *L, int idx);
...
@@ -200,6 +204,7 @@ LUA_API void (lua_settable) (lua_State *L, int idx);
LUA_API
void
(
lua_setfield
)
(
lua_State
*
L
,
int
idx
,
const
char
*
k
);
LUA_API
void
(
lua_setfield
)
(
lua_State
*
L
,
int
idx
,
const
char
*
k
);
LUA_API
void
(
lua_rawset
)
(
lua_State
*
L
,
int
idx
);
LUA_API
void
(
lua_rawset
)
(
lua_State
*
L
,
int
idx
);
LUA_API
void
(
lua_rawseti
)
(
lua_State
*
L
,
int
idx
,
int
n
);
LUA_API
void
(
lua_rawseti
)
(
lua_State
*
L
,
int
idx
,
int
n
);
LUA_API
void
(
lua_rawsetp
)
(
lua_State
*
L
,
int
idx
,
const
void
*
p
);
LUA_API
int
(
lua_setmetatable
)
(
lua_State
*
L
,
int
objindex
);
LUA_API
int
(
lua_setmetatable
)
(
lua_State
*
L
,
int
objindex
);
LUA_API
int
(
lua_setfenv
)
(
lua_State
*
L
,
int
idx
);
LUA_API
int
(
lua_setfenv
)
(
lua_State
*
L
,
int
idx
);
...
@@ -212,8 +217,8 @@ LUA_API int (lua_pcall) (lua_State *L, int nargs, int nresults, int errfunc);
...
@@ -212,8 +217,8 @@ LUA_API int (lua_pcall) (lua_State *L, int nargs, int nresults, int errfunc);
LUA_API
int
(
lua_cpcall
)
(
lua_State
*
L
,
lua_CFunction
func
,
void
*
ud
);
LUA_API
int
(
lua_cpcall
)
(
lua_State
*
L
,
lua_CFunction
func
,
void
*
ud
);
LUA_API
int
(
lua_load
)
(
lua_State
*
L
,
lua_Reader
reader
,
void
*
dt
,
LUA_API
int
(
lua_load
)
(
lua_State
*
L
,
lua_Reader
reader
,
void
*
dt
,
const
char
*
chunkname
);
const
char
*
chunkname
);
LUA_API
int
(
lua_dump
)
(
lua_State
*
L
,
lua_Writer
writer
,
void
*
data
,
int
stripping
);
LUA_API
int
(
lua_
dumpEx
)
(
lua_State
*
L
,
lua_Writer
writer
,
void
*
data
,
int
stripping
);
LUA_API
int
(
lua_
stripdebug
)
(
lua_State
*
L
,
int
stripping
);
/*
/*
...
@@ -273,9 +278,7 @@ LUA_API void lua_setallocf (lua_State *L, lua_Alloc f, void *ud);
...
@@ -273,9 +278,7 @@ LUA_API void lua_setallocf (lua_State *L, lua_Alloc f, void *ud);
#define lua_strlen(L,i) lua_objlen(L, (i))
#define lua_strlen(L,i) lua_objlen(L, (i))
#define lua_isfunction(L,n) (lua_type(L, (n)) == LUA_TFUNCTION)
#define lua_isfunction(L,n) (lua_type(L, (n)) == LUA_TFUNCTION)
#define lua_islightfunction(L,n) (lua_fulltype(L, (n)) == LUA_TLIGHTFUNCTION)
#define lua_istable(L,n) (lua_type(L, (n)) == LUA_TTABLE)
#define lua_istable(L,n) (lua_type(L, (n)) == LUA_TTABLE)
#define lua_isrotable(L,n) (lua_fulltype(L, (n)) == LUA_TROTABLE)
#define lua_islightuserdata(L,n) (lua_type(L, (n)) == LUA_TLIGHTUSERDATA)
#define lua_islightuserdata(L,n) (lua_type(L, (n)) == LUA_TLIGHTUSERDATA)
#define lua_isnil(L,n) (lua_type(L, (n)) == LUA_TNIL)
#define lua_isnil(L,n) (lua_type(L, (n)) == LUA_TNIL)
#define lua_isboolean(L,n) (lua_type(L, (n)) == LUA_TBOOLEAN)
#define lua_isboolean(L,n) (lua_type(L, (n)) == LUA_TBOOLEAN)
...
@@ -291,9 +294,10 @@ LUA_API void lua_setallocf (lua_State *L, lua_Alloc f, void *ud);
...
@@ -291,9 +294,10 @@ LUA_API void lua_setallocf (lua_State *L, lua_Alloc f, void *ud);
#define lua_tostring(L,i) lua_tolstring(L, (i), NULL)
#define lua_tostring(L,i) lua_tolstring(L, (i), NULL)
#define lua_dump(L,w,d) lua_dumpEx(L,w,d,0)
#define lua_equal(L,idx1,idx2) lua_compare(L,(idx1),(idx2),LUA_OPEQ)
#define lua_lessthan(L,idx1,idx2) lua_compare(L,(idx1),(idx2),LUA_OPLT)
/* error codes from cross-compiler returned by lua_dump
Ex
*/
/* error codes from cross-compiler returned by lua_dump */
/* target integer is too small to hold a value */
/* target integer is too small to hold a value */
#define LUA_ERR_CC_INTOVERFLOW 101
#define LUA_ERR_CC_INTOVERFLOW 101
...
@@ -382,14 +386,18 @@ struct lua_Debug {
...
@@ -382,14 +386,18 @@ struct lua_Debug {
/* }====================================================================== */
/* }====================================================================== */
/* NodeMCU extensions to the standard API */
typedef
struct
ROTable
ROTable
;
typedef
struct
ROTable
ROTable
;
typedef
const
struct
ROTable_entry
ROTable_entry
;
typedef
const
struct
ROTable_entry
ROTable_entry
;
LUA_API
void
(
lua_pushrotable
)
(
lua_State
*
L
,
const
ROTable
*
p
);
LUA_API
void
(
lua_pushrotable
)
(
lua_State
*
L
,
const
ROTable
*
p
);
LUA_API
void
(
lua_createrotable
)
(
lua_State
*
L
,
ROTable
*
t
,
ROTable_entry
*
e
,
ROTable
*
mt
);
LUA_API
void
(
lua_createrotable
)
(
lua_State
*
L
,
ROTable
*
t
,
ROTable_entry
*
e
,
ROTable
*
mt
);
LUA_API
int
(
lua_pushstringsarray
)
(
lua_State
*
L
,
int
opt
);
LUA_API
int
(
lua_freeheap
)
(
void
);
LUA
I_FUNC
int
lua_lfsreload
(
lua_State
*
L
);
LUA
_API
void
(
lua_getlfsconfig
)
(
lua_State
*
L
,
int
*
);
LUA
I_FUNC
int
lua_lfsindex
(
lua_State
*
L
);
LUA
_API
int
(
lua_
push
lfsindex
)
(
lua_State
*
L
);
#define EGC_NOT_ACTIVE 0 // EGC disabled
#define EGC_NOT_ACTIVE 0 // EGC disabled
#define EGC_ON_ALLOC_FAILURE 1 // run EGC on allocation failure
#define EGC_ON_ALLOC_FAILURE 1 // run EGC on allocation failure
...
@@ -400,15 +408,13 @@ LUAI_FUNC int lua_lfsindex (lua_State *L);
...
@@ -400,15 +408,13 @@ LUAI_FUNC int lua_lfsindex (lua_State *L);
#define LUA_QUEUE_APP 0
#define LUA_QUEUE_APP 0
#define LUA_QUEUE_UART 1
#define LUA_QUEUE_UART 1
#define LUA_TASK_LOW 0
#define LUA_TASK_MEDIUM 1
#define LUA_TASK_HIGH 2
/**DEBUG**/
extern
void
dbg_printf
(
const
char
*
fmt
,
...)
/**DEBUG**/
extern
void
dbg_printf
(
const
char
*
fmt
,
...)
__attribute__
((
format
(
printf
,
1
,
2
)));
__attribute__
((
format
(
printf
,
1
,
2
)));
#define luaN_freearray(L,b,l) luaM_freearray(L,b,l,sizeof(*b))
;
#define luaN_freearray(L,b,l) luaM_freearray(L,b,l,sizeof(*b))
LUA_API
void
lua_setegcmode
(
lua_State
*
L
,
int
mode
,
int
limit
);
LUA_API
void
(
lua_setegcmode
)
(
lua_State
*
L
,
int
mode
,
int
limit
);
LUA_API
void
(
lua_getegcinfo
)
(
lua_State
*
L
,
int
*
totals
);
#else
#else
...
...
app/lua/luac_cross/Makefile
View file @
a92da3c3
...
@@ -43,7 +43,7 @@ LUASRC := lapi.c lauxlib.c lbaselib.c lcode.c ldblib.c ldebug.c
...
@@ -43,7 +43,7 @@ LUASRC := lapi.c lauxlib.c lbaselib.c lcode.c ldblib.c ldebug.c
ldo.c ldump.c lfunc.c lgc.c linit.c llex.c
\
ldo.c ldump.c lfunc.c lgc.c linit.c llex.c
\
lmathlib.c lmem.c loadlib.c lobject.c lopcodes.c lparser.c
\
lmathlib.c lmem.c loadlib.c lobject.c lopcodes.c lparser.c
\
lstate.c lstring.c lstrlib.c ltable.c ltablib.c
\
lstate.c lstring.c lstrlib.c ltable.c ltablib.c
\
ltm.c lundump.c lvm.c lzio.c
ltm.c lundump.c lvm.c lzio.c
lnodemcu.c
UZSRC
:=
uzlib_deflate.c crc32.c
UZSRC
:=
uzlib_deflate.c crc32.c
#
#
...
...
app/lua/luac_cross/lflashimg.c
View file @
a92da3c3
...
@@ -186,10 +186,8 @@ static void scanProtoStrings(lua_State *L, const Proto* f) {
...
@@ -186,10 +186,8 @@ static void scanProtoStrings(lua_State *L, const Proto* f) {
if
(
f
->
source
)
if
(
f
->
source
)
addTS
(
L
,
f
->
source
);
addTS
(
L
,
f
->
source
);
#ifdef LUA_OPTIMIZE_DEBUG
if
(
f
->
packedlineinfo
)
if
(
f
->
packedlineinfo
)
addTS
(
L
,
luaS_new
(
L
,
cast
(
const
char
*
,
f
->
packedlineinfo
)));
addTS
(
L
,
luaS_new
(
L
,
cast
(
const
char
*
,
f
->
packedlineinfo
)));
#endif
for
(
i
=
0
;
i
<
f
->
sizek
;
i
++
)
{
for
(
i
=
0
;
i
<
f
->
sizek
;
i
++
)
{
if
(
ttisstring
(
f
->
k
+
i
))
if
(
ttisstring
(
f
->
k
+
i
))
...
@@ -355,11 +353,7 @@ static void *flashCopy(lua_State* L, int n, const char *fmt, void *src) {
...
@@ -355,11 +353,7 @@ static void *flashCopy(lua_State* L, int n, const char *fmt, void *src) {
}
}
/* The debug optimised version has a different Proto layout */
/* The debug optimised version has a different Proto layout */
#ifdef LUA_OPTIMIZE_DEBUG
#define PROTO_COPY_MASK "AHAAAAAASIIIIIIIAI"
#define PROTO_COPY_MASK "AHAAAAAASIIIIIIIAI"
#else
#define PROTO_COPY_MASK "AHAAAAAASIIIIIIIIAI"
#endif
/*
/*
* Do the actual prototype copy.
* Do the actual prototype copy.
...
@@ -383,14 +377,10 @@ static void *functionToFlash(lua_State* L, const Proto* orig) {
...
@@ -383,14 +377,10 @@ static void *functionToFlash(lua_State* L, const Proto* orig) {
f
.
k
=
cast
(
TValue
*
,
flashCopy
(
L
,
f
.
sizek
,
"V"
,
f
.
k
));
f
.
k
=
cast
(
TValue
*
,
flashCopy
(
L
,
f
.
sizek
,
"V"
,
f
.
k
));
f
.
code
=
cast
(
Instruction
*
,
flashCopy
(
L
,
f
.
sizecode
,
"I"
,
f
.
code
));
f
.
code
=
cast
(
Instruction
*
,
flashCopy
(
L
,
f
.
sizecode
,
"I"
,
f
.
code
));
#ifdef LUA_OPTIMIZE_DEBUG
if
(
f
.
packedlineinfo
)
{
if
(
f
.
packedlineinfo
)
{
TString
*
ts
=
luaS_new
(
L
,
cast
(
const
char
*
,
f
.
packedlineinfo
));
TString
*
ts
=
luaS_new
(
L
,
cast
(
const
char
*
,
f
.
packedlineinfo
));
f
.
packedlineinfo
=
cast
(
unsigned
char
*
,
resolveTString
(
L
,
ts
))
+
sizeof
(
FlashTS
);
f
.
packedlineinfo
=
cast
(
unsigned
char
*
,
resolveTString
(
L
,
ts
))
+
sizeof
(
FlashTS
);
}
}
#else
f
.
lineinfo
=
cast
(
int
*
,
flashCopy
(
L
,
f
.
sizelineinfo
,
"I"
,
f
.
lineinfo
));
#endif
f
.
locvars
=
cast
(
struct
LocVar
*
,
flashCopy
(
L
,
f
.
sizelocvars
,
"SII"
,
f
.
locvars
));
f
.
locvars
=
cast
(
struct
LocVar
*
,
flashCopy
(
L
,
f
.
sizelocvars
,
"SII"
,
f
.
locvars
));
f
.
upvalues
=
cast
(
TString
**
,
flashCopy
(
L
,
f
.
sizeupvalues
,
"S"
,
f
.
upvalues
));
f
.
upvalues
=
cast
(
TString
**
,
flashCopy
(
L
,
f
.
sizeupvalues
,
"S"
,
f
.
upvalues
));
return
cast
(
void
*
,
flashCopy
(
L
,
1
,
PROTO_COPY_MASK
,
&
f
));
return
cast
(
void
*
,
flashCopy
(
L
,
1
,
PROTO_COPY_MASK
,
&
f
));
...
...
app/lua/luac_cross/mingw32-Makefile.mak
View file @
a92da3c3
...
@@ -36,8 +36,8 @@ LUACSRC := luac.c lflashimg.c liolib.c loslib.c print.c
...
@@ -36,8 +36,8 @@ LUACSRC := luac.c lflashimg.c liolib.c loslib.c print.c
LUASRC
:=
lapi.c lauxlib.c lbaselib.c lcode.c ldblib.c ldebug.c
\
LUASRC
:=
lapi.c lauxlib.c lbaselib.c lcode.c ldblib.c ldebug.c
\
ldo.c
ldump.c
lfunc.c
lgc.c
linit.c
llex.c
\
ldo.c
ldump.c
lfunc.c
lgc.c
linit.c
llex.c
\
lmathlib.c
lmem.c
loadlib.c
lobject.c
lopcodes.c
lparser.c
\
lmathlib.c
lmem.c
loadlib.c
lobject.c
lopcodes.c
lparser.c
\
lrotable.c
lstate.c
lstring.c
lstrlib.c
ltable.c
ltablib.c
\
lstate.c
lstring.c
lstrlib.c
ltable.c
ltablib.c
\
ltm.c
lundump.c
lvm.c
lzio.c
ltm.c
lundump.c
lvm.c
lzio.c
lnodemcu.c
UZSRC
:=
uzlib_deflate.c crc32.c
UZSRC
:=
uzlib_deflate.c crc32.c
#
#
# This relies on the files being unique on the vpath
# This relies on the files being unique on the vpath
...
...
app/lua/lundump.c
View file @
a92da3c3
...
@@ -223,18 +223,12 @@ static void LoadDebug(LoadState* S, Proto* f)
...
@@ -223,18 +223,12 @@ static void LoadDebug(LoadState* S, Proto* f)
n
=
LoadInt
(
S
);
n
=
LoadInt
(
S
);
Align4
(
S
);
Align4
(
S
);
#ifdef LUA_OPTIMIZE_DEBUG
if
(
n
)
{
if
(
n
)
{
f
->
packedlineinfo
=
luaM_newvector
(
S
->
L
,
n
,
unsigned
char
);
f
->
packedlineinfo
=
luaM_newvector
(
S
->
L
,
n
,
unsigned
char
);
LoadBlock
(
S
,
f
->
packedlineinfo
,
n
);
LoadBlock
(
S
,
f
->
packedlineinfo
,
n
);
}
else
{
}
else
{
f
->
packedlineinfo
=
NULL
;
f
->
packedlineinfo
=
NULL
;
}
}
#else
f
->
lineinfo
=
luaM_newvector
(
S
->
L
,
n
,
int
);
LoadVector
(
S
,
f
->
lineinfo
,
n
,
sizeof
(
int
));
f
->
sizelineinfo
=
n
;
#endif
n
=
LoadInt
(
S
);
n
=
LoadInt
(
S
);
f
->
locvars
=
luaM_newvector
(
S
->
L
,
n
,
LocVar
);
f
->
locvars
=
luaM_newvector
(
S
->
L
,
n
,
LocVar
);
f
->
sizelocvars
=
n
;
f
->
sizelocvars
=
n
;
...
...
app/lua/lvm.c
View file @
a92da3c3
...
@@ -271,7 +271,7 @@ int luaV_lessthan (lua_State *L, const TValue *l, const TValue *r) {
...
@@ -271,7 +271,7 @@ int luaV_lessthan (lua_State *L, const TValue *l, const TValue *r) {
}
}
static
int
lessequal
(
lua_State
*
L
,
const
TValue
*
l
,
const
TValue
*
r
)
{
int
luaV_
lessequal
(
lua_State
*
L
,
const
TValue
*
l
,
const
TValue
*
r
)
{
int
res
;
int
res
;
if
(
ttype
(
l
)
!=
ttype
(
r
))
if
(
ttype
(
l
)
!=
ttype
(
r
))
return
luaG_ordererror
(
L
,
l
,
r
);
return
luaG_ordererror
(
L
,
l
,
r
);
...
@@ -570,7 +570,7 @@ void luaV_execute (lua_State *L, int nexeccalls) {
...
@@ -570,7 +570,7 @@ void luaV_execute (lua_State *L, int nexeccalls) {
}
}
case
OP_LEN
:
{
case
OP_LEN
:
{
const
TValue
*
rb
=
RB
(
i
);
const
TValue
*
rb
=
RB
(
i
);
switch
(
basettype
(
rb
))
{
switch
(
ttnov
(
rb
))
{
case
LUA_TTABLE
:
{
case
LUA_TTABLE
:
{
setnvalue
(
ra
,
cast_num
(
luaH_getn
(
hvalue
(
rb
))));
setnvalue
(
ra
,
cast_num
(
luaH_getn
(
hvalue
(
rb
))));
break
;
break
;
...
@@ -620,7 +620,7 @@ void luaV_execute (lua_State *L, int nexeccalls) {
...
@@ -620,7 +620,7 @@ void luaV_execute (lua_State *L, int nexeccalls) {
}
}
case
OP_LE
:
{
case
OP_LE
:
{
Protect
(
Protect
(
if
(
lessequal
(
L
,
RKB
(
i
),
RKC
(
i
))
==
GETARG_A
(
i
))
if
(
luaV_
lessequal
(
L
,
RKB
(
i
),
RKC
(
i
))
==
GETARG_A
(
i
))
dojump
(
L
,
pc
,
GETARG_sBx
(
*
pc
));
dojump
(
L
,
pc
,
GETARG_sBx
(
*
pc
));
)
)
pc
++
;
pc
++
;
...
...
app/lua/lvm.h
View file @
a92da3c3
...
@@ -23,6 +23,7 @@
...
@@ -23,6 +23,7 @@
LUAI_FUNC
int
luaV_lessthan
(
lua_State
*
L
,
const
TValue
*
l
,
const
TValue
*
r
);
LUAI_FUNC
int
luaV_lessthan
(
lua_State
*
L
,
const
TValue
*
l
,
const
TValue
*
r
);
LUAI_FUNC
int
luaV_lessequal
(
lua_State
*
L
,
const
TValue
*
l
,
const
TValue
*
r
);
LUAI_FUNC
int
luaV_equalval
(
lua_State
*
L
,
const
TValue
*
t1
,
const
TValue
*
t2
);
LUAI_FUNC
int
luaV_equalval
(
lua_State
*
L
,
const
TValue
*
t1
,
const
TValue
*
t2
);
LUAI_FUNC
const
TValue
*
luaV_tonumber
(
const
TValue
*
obj
,
TValue
*
n
);
LUAI_FUNC
const
TValue
*
luaV_tonumber
(
const
TValue
*
obj
,
TValue
*
n
);
LUAI_FUNC
int
luaV_tostring
(
lua_State
*
L
,
StkId
obj
);
LUAI_FUNC
int
luaV_tostring
(
lua_State
*
L
,
StkId
obj
);
...
...
app/lua53/lapi.c
View file @
a92da3c3
...
@@ -1031,6 +1031,8 @@ LUA_API int lua_dump (lua_State *L, lua_Writer writer, void *data, int strip) {
...
@@ -1031,6 +1031,8 @@ LUA_API int lua_dump (lua_State *L, lua_Writer writer, void *data, int strip) {
lua_lock
(
L
);
lua_lock
(
L
);
api_checknelems
(
L
,
1
);
api_checknelems
(
L
,
1
);
o
=
L
->
top
-
1
;
o
=
L
->
top
-
1
;
if
(
strip
==
-
1
)
strip
=
G
(
L
)
->
stripdefault
;
if
(
isLfunction
(
o
))
if
(
isLfunction
(
o
))
status
=
luaU_dump
(
L
,
getproto
(
o
),
writer
,
data
,
strip
);
status
=
luaU_dump
(
L
,
getproto
(
o
),
writer
,
data
,
strip
);
else
else
...
@@ -1040,6 +1042,30 @@ LUA_API int lua_dump (lua_State *L, lua_Writer writer, void *data, int strip) {
...
@@ -1040,6 +1042,30 @@ LUA_API int lua_dump (lua_State *L, lua_Writer writer, void *data, int strip) {
}
}
LUA_API
int
lua_stripdebug
(
lua_State
*
L
,
int
stripping
){
TValue
*
o
=
L
->
top
-
1
;
Proto
*
p
=
NULL
;
int
res
=
-
1
;
lua_lock
(
L
);
api_checknelems
(
L
,
1
);
if
(
isLfunction
(
o
))
{
p
=
getproto
(
o
);
if
(
p
&&
!
isLFSobj
(
p
)
&&
(
unsigned
)
stripping
<
3
)
{
// found a valid proto to strip
res
=
luaU_stripdebug
(
L
,
p
,
stripping
,
1
);
}
}
else
if
(
ttisnil
(
L
->
top
-
1
))
{
// get or set the default strip level
if
((
unsigned
)
stripping
<
3
)
G
(
L
)
->
stripdefault
=
stripping
;
res
=
G
(
L
)
->
stripdefault
;
}
L
->
top
--
;
lua_unlock
(
L
);
return
res
;
}
LUA_API
int
lua_status
(
lua_State
*
L
)
{
LUA_API
int
lua_status
(
lua_State
*
L
)
{
return
L
->
status
;
return
L
->
status
;
}
}
...
...
app/lua53/lauxlib.c
View file @
a92da3c3
...
@@ -5,7 +5,6 @@
...
@@ -5,7 +5,6 @@
*/
*/
#define lauxlib_c
#define lauxlib_c
#define LUA_LIB
#include "lprefix.h"
#include "lprefix.h"
...
@@ -29,6 +28,8 @@
...
@@ -29,6 +28,8 @@
#include "lua.h"
#include "lua.h"
#include "lauxlib.h"
#include "lauxlib.h"
#define LUA_LIB
#ifdef LUA_USE_ESP
#ifdef LUA_USE_ESP
#include "platform.h"
#include "platform.h"
#include "user_interface.h"
#include "user_interface.h"
...
@@ -651,7 +652,6 @@ LUALIB_API void luaL_unref (lua_State *L, int t, int ref) {
...
@@ -651,7 +652,6 @@ LUALIB_API void luaL_unref (lua_State *L, int t, int ref) {
LUALIB_API
void
(
luaL_reref
)
(
lua_State
*
L
,
int
t
,
int
*
ref
)
{
LUALIB_API
void
(
luaL_reref
)
(
lua_State
*
L
,
int
t
,
int
*
ref
)
{
int
reft
;
/*
/*
* If the ref is positive and the entry in table t exists then
* If the ref is positive and the entry in table t exists then
* overwrite the value otherwise fall through to luaL_ref()
* overwrite the value otherwise fall through to luaL_ref()
...
@@ -659,8 +659,7 @@ LUALIB_API void (luaL_reref) (lua_State *L, int t, int *ref) {
...
@@ -659,8 +659,7 @@ LUALIB_API void (luaL_reref) (lua_State *L, int t, int *ref) {
if
(
ref
)
{
if
(
ref
)
{
if
(
*
ref
>=
0
)
{
if
(
*
ref
>=
0
)
{
t
=
lua_absindex
(
L
,
t
);
t
=
lua_absindex
(
L
,
t
);
lua_rawgeti
(
L
,
t
,
*
ref
);
int
reft
=
lua_rawgeti
(
L
,
t
,
*
ref
);
reft
=
lua_type
(
L
,
-
1
);
lua_pop
(
L
,
1
);
lua_pop
(
L
,
1
);
if
(
reft
!=
LUA_TNIL
)
{
if
(
reft
!=
LUA_TNIL
)
{
lua_rawseti
(
L
,
t
,
*
ref
);
lua_rawseti
(
L
,
t
,
*
ref
);
...
@@ -706,7 +705,6 @@ typedef struct LoadF {
...
@@ -706,7 +705,6 @@ typedef struct LoadF {
char
buff
[
BUFSIZ
];
/* area for reading file */
char
buff
[
BUFSIZ
];
/* area for reading file */
}
LoadF
;
}
LoadF
;
#include "llimits.h"
static
const
char
*
getF
(
lua_State
*
L
,
void
*
ud
,
size_t
*
size
)
{
static
const
char
*
getF
(
lua_State
*
L
,
void
*
ud
,
size_t
*
size
)
{
LoadF
*
lf
=
(
LoadF
*
)
ud
;
LoadF
*
lf
=
(
LoadF
*
)
ud
;
(
void
)
L
;
/* not used */
(
void
)
L
;
/* not used */
...
@@ -1187,54 +1185,4 @@ LUALIB_API int luaL_pcallx (lua_State *L, int narg, int nres) {
...
@@ -1187,54 +1185,4 @@ LUALIB_API int luaL_pcallx (lua_State *L, int narg, int nres) {
}
}
return
status
;
return
status
;
}
}
extern
void
lua_main
(
void
);
/*
** Task callback handler. Uses luaN_call to do a protected call with full traceback
*/
static
void
do_task
(
platform_task_param_t
task_fn_ref
,
uint8_t
prio
)
{
lua_State
*
L
=
lua_getstate
();
if
(
task_fn_ref
==
(
platform_task_param_t
)
~
0
&&
prio
==
LUA_TASK_HIGH
)
{
lua_main
();
/* Undocumented hook for lua_main() restart */
return
;
}
if
(
prio
<
LUA_TASK_LOW
||
prio
>
LUA_TASK_HIGH
)
luaL_error
(
L
,
"invalid posk task"
);
/* Pop the CB func from the Reg */
lua_rawgeti
(
L
,
LUA_REGISTRYINDEX
,
(
int
)
task_fn_ref
);
luaL_checktype
(
L
,
-
1
,
LUA_TFUNCTION
);
luaL_unref
(
L
,
LUA_REGISTRYINDEX
,
(
int
)
task_fn_ref
);
lua_pushinteger
(
L
,
prio
);
luaL_pcallx
(
L
,
1
,
0
);
}
/*
** Schedule a Lua function for task execution
*/
LUALIB_API
int
luaL_posttask
(
lua_State
*
L
,
int
prio
)
{
// [-1, +0, -]
static
platform_task_handle_t
task_handle
=
0
;
if
(
!
task_handle
)
task_handle
=
platform_task_get_id
(
do_task
);
if
(
L
==
NULL
&&
prio
==
LUA_TASK_HIGH
+
1
)
{
/* Undocumented hook for lua_main */
platform_post
(
LUA_TASK_HIGH
,
task_handle
,
(
platform_task_param_t
)
~
0
);
return
-
1
;
}
if
(
lua_isfunction
(
L
,
-
1
)
&&
prio
>=
LUA_TASK_LOW
&&
prio
<=
LUA_TASK_HIGH
)
{
int
task_fn_ref
=
luaL_ref
(
L
,
LUA_REGISTRYINDEX
);
if
(
!
platform_post
(
prio
,
task_handle
,
(
platform_task_param_t
)
task_fn_ref
))
{
luaL_unref
(
L
,
LUA_REGISTRYINDEX
,
task_fn_ref
);
luaL_error
(
L
,
"Task queue overflow. Task not posted"
);
}
return
task_fn_ref
;
}
else
{
return
luaL_error
(
L
,
"invalid posk task"
);
}
}
#else
/*
** Task execution isn't supported on HOST builds so returns a -1 status
*/
LUALIB_API
int
luaL_posttask
(
lua_State
*
L
,
int
prio
)
{
// [-1, +0, -]
return
-
1
;
}
#endif
#endif
Prev
1
2
3
4
Next
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment