mirror of
https://git.FreeBSD.org/src.git
synced 2025-02-01 17:00:36 +00:00
bd9b38d1f7
Builtins (including variable assignments without command word), function calls and redirected compound commands need to restore file descriptors to their original state after execution. This is handled by allocating a redirtab structure. These mallocs and frees show up heavily in pmcstat. Only allocate a redirtab if there are actually redirections and maintain a count of how many levels of REDIR_PUSH there are without redirtabs. A simple loop without external programs like sh -c 'i=0; w=$(printf %0100d 7); while [ "$i" -lt 1000000 ]; do i=$((i+1)); done' is over 25% faster on an amd64 bhyve VM. |
||
---|---|---|
.. | ||
bltin | ||
funcs | ||
tests | ||
alias.c | ||
alias.h | ||
arith_yacc.c | ||
arith_yacc.h | ||
arith_yylex.c | ||
arith.h | ||
builtins.def | ||
cd.c | ||
cd.h | ||
error.c | ||
error.h | ||
eval.c | ||
eval.h | ||
exec.c | ||
exec.h | ||
expand.c | ||
expand.h | ||
histedit.c | ||
input.c | ||
input.h | ||
jobs.c | ||
jobs.h | ||
mail.c | ||
mail.h | ||
main.c | ||
main.h | ||
Makefile | ||
Makefile.depend | ||
memalloc.c | ||
memalloc.h | ||
miscbltin.c | ||
mkbuiltins | ||
mknodes.c | ||
mksyntax.c | ||
mktokens | ||
myhistedit.h | ||
mystring.c | ||
mystring.h | ||
nodes.c.pat | ||
nodetypes | ||
options.c | ||
options.h | ||
output.c | ||
output.h | ||
parser.c | ||
parser.h | ||
redir.c | ||
redir.h | ||
sh.1 | ||
shell.h | ||
show.c | ||
show.h | ||
TOUR | ||
trap.c | ||
trap.h | ||
var.c | ||
var.h |