aboutsummaryrefslogtreecommitdiff
path: root/lauxlib.c
diff options
context:
space:
mode:
authorRoberto Ierusalimschy <roberto@inf.puc-rio.br>2025-04-03 15:31:22 -0300
committerRoberto Ierusalimschy <roberto@inf.puc-rio.br>2025-04-03 15:31:22 -0300
commit3dd8ea54daa77345a8f193e871f6792722d8e131 (patch)
treecc60485872b1d79774f1866446fa7a355ca0c87d /lauxlib.c
parent620f49a7aae8a5c982b21f0accbf2ff9019a55f6 (diff)
downloadlua-3dd8ea54daa77345a8f193e871f6792722d8e131.tar.gz
lua-3dd8ea54daa77345a8f193e871f6792722d8e131.tar.bz2
lua-3dd8ea54daa77345a8f193e871f6792722d8e131.zip
Order change in 'pushfuncname'HEADmaster
'pushglobalfuncname' can be quite slow (as it traverses all globals and all loaded modules), so try first to get a name from the code.
Diffstat (limited to 'lauxlib.c')
-rw-r--r--lauxlib.c10
1 files changed, 5 insertions, 5 deletions
diff --git a/lauxlib.c b/lauxlib.c
index 7c9ad53b..7f33f0ad 100644
--- a/lauxlib.c
+++ b/lauxlib.c
@@ -94,14 +94,14 @@ static int pushglobalfuncname (lua_State *L, lua_Debug *ar) {
94 94
95 95
96static void pushfuncname (lua_State *L, lua_Debug *ar) { 96static void pushfuncname (lua_State *L, lua_Debug *ar) {
97 if (pushglobalfuncname(L, ar)) { /* try first a global name */ 97 if (*ar->namewhat != '\0') /* is there a name from code? */
98 lua_pushfstring(L, "function '%s'", lua_tostring(L, -1));
99 lua_remove(L, -2); /* remove name */
100 }
101 else if (*ar->namewhat != '\0') /* is there a name from code? */
102 lua_pushfstring(L, "%s '%s'", ar->namewhat, ar->name); /* use it */ 98 lua_pushfstring(L, "%s '%s'", ar->namewhat, ar->name); /* use it */
103 else if (*ar->what == 'm') /* main? */ 99 else if (*ar->what == 'm') /* main? */
104 lua_pushliteral(L, "main chunk"); 100 lua_pushliteral(L, "main chunk");
101 else if (pushglobalfuncname(L, ar)) { /* try a global name */
102 lua_pushfstring(L, "function '%s'", lua_tostring(L, -1));
103 lua_remove(L, -2); /* remove name */
104 }
105 else if (*ar->what != 'C') /* for Lua functions, use <file:line> */ 105 else if (*ar->what != 'C') /* for Lua functions, use <file:line> */
106 lua_pushfstring(L, "function <%s:%d>", ar->short_src, ar->linedefined); 106 lua_pushfstring(L, "function <%s:%d>", ar->short_src, ar->linedefined);
107 else /* nothing left... */ 107 else /* nothing left... */