(command.CommandList children: [ (command.Simple blame_tok: <set> more_env: [] words: [{<set>} {<-o>} {<nounset>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <set> more_env: [] words: [{<set>} {<-o>} {<pipefail>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <set> more_env: [] words: [{<set>} {<-o>} {<errexit>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <source> more_env: [] words: [{<source>} {<'test/common.sh'>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <source> more_env: [] words: [{<source>} {<'benchmarks/common.sh'>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <readonly> more_env: [] words: [{<readonly>} {<Id.Lit_VarLike 'BASE_DIR='> <'_tmp/vm-baseline'>}] redirects: [] do_fork: T ) (command.ShFunction name_tok: <measure> name: measure body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Simple blame_tok: <local> more_env: [] words: [{<local>} {<Id.Lit_VarLike 'provenance='> ($ Id.VSub_Number 1)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <local> more_env: [] words: [ {<local>} {<Id.Lit_VarLike 'base_dir='> (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Number 2> var_name: 2 suffix_op: (suffix_op.Unary op: <Id.VTest_ColonHyphen _> arg_word: {<_tmp> <Id.Lit_Slash '/'> <vm-baseline>} ) right: <Id.Right_DollarBrace '}'> ) } ] redirects: [] do_fork: T ) (command.Simple blame_tok: <local> more_env: [] words: [ {<local>} {<Id.Lit_VarLike 'name='> (CommandSub left_token: <Id.Left_DollarParen '$('> child: (command.Simple blame_tok: <basename> more_env: [] words: [{<basename>} {($ Id.VSub_DollarName provenance)}] redirects: [] do_fork: T ) right: <Id.Eof_RParen _> ) } ] redirects: [] do_fork: T ) (command.Simple blame_tok: <local> more_env: [] words: [ {<local>} {<Id.Lit_VarLike 'prefix='> (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name name> var_name: name suffix_op: (suffix_op.Unary op:<Id.VOp1_Percent '%'> arg_word:{<.provenance.txt>}) right: <Id.Right_DollarBrace '}'> ) } ] redirects: [] do_fork: T ) (command.Simple blame_tok: <local> more_env: [] words: [ {<local>} {<Id.Lit_VarLike 'host='> (CommandSub left_token: <Id.Left_DollarParen '$('> child: (command.Simple blame_tok: <hostname> more_env: [] words: [{<hostname>}] redirects: [] do_fork: T ) right: <Id.Eof_RParen _> ) } ] redirects: [] do_fork: T ) (command.Simple blame_tok: <local> more_env: [] words: [ {<local>} {<Id.Lit_VarLike 'out_dir='> (DQ ($ Id.VSub_DollarName base_dir) <'/'> ($ Id.VSub_DollarName prefix)) } ] redirects: [] do_fork: T ) (command.Simple blame_tok: <mkdir> more_env: [] words: [{<mkdir>} {<-p>} {($ Id.VSub_DollarName out_dir)}] redirects: [] do_fork: T ) (command.Pipeline children: [ (command.Simple blame_tok: <cat> more_env: [] words: [{<cat>} {($ Id.VSub_DollarName provenance)}] redirects: [] do_fork: T ) (command.WhileUntil keyword: <Id.KW_While while> cond: (condition.Shell commands: [ (command.Sentence child: (command.Simple blame_tok: <read> more_env: [] words: [ {<read>} {<Id.Lit_Underscore _>} {<Id.Lit_Underscore _>} {<Id.Lit_Underscore _>} {<sh_path>} {<shell_hash>} ] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) ] ) body: (command.DoGroup left: <Id.KW_Do do> children: [ (command.Simple blame_tok: <local> more_env: [] words: [ {<local>} {<Id.Lit_VarLike 'sh_name='> (CommandSub left_token: <Id.Left_DollarParen '$('> child: (command.Simple blame_tok: <basename> more_env: [] words: [{<basename>} {($ Id.VSub_DollarName sh_path)}] redirects: [] do_fork: T ) right: <Id.Eof_RParen _> ) } ] redirects: [] do_fork: T ) (command.Simple blame_tok: <local> more_env: [] words: [ {<local>} {<Id.Lit_VarLike 'out='> (DQ ($ Id.VSub_DollarName out_dir) <'/'> (${ Id.VSub_Name sh_name) <-> (${ Id.VSub_Name shell_hash) <.txt> ) } ] redirects: [] do_fork: T ) (command.Simple blame_tok: <Id.VSub_DollarName '$sh_path'> more_env: [] words: [ {($ Id.VSub_DollarName sh_path)} {<-c>} {(SQ <'sleep 0.001; cat /proc/$$/status'>)} ] redirects: [ (Redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {($ Id.VSub_DollarName out)} ) ] do_fork: T ) ] right: <Id.KW_Done done> ) redirects: [] ) ] ops: [<Id.Op_Pipe _>] ) (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(DQ ($ Id.VSub_DollarName out_dir) <':'>)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <ls> more_env: [] words: [{<ls>} {<-l>} {($ Id.VSub_DollarName out_dir)}] redirects: [] do_fork: T ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name_tok: <demo> name: demo body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Simple blame_tok: <local> more_env: [] words: [ {<local>} {<-a>} {<Id.Lit_VarLike 'job_dirs='> (ShArrayLiteral left: <Id.Op_LParen _> words: [{($ Id.VSub_DollarName BASE_DIR) <'/lisa.2017-'> <Id.Lit_Star '*'>}] right: <Id.Right_ShArrayLiteral _> ) } ] redirects: [] do_fork: T ) (command.Simple blame_tok: <local> more_env: [] words: [{<local>} {<Id.Lit_VarLike 'dir1='> ($ Id.VSub_DollarName BASE_DIR) <'/stage1'>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <local> more_env: [] words: [{<local>} {<Id.Lit_VarLike 'dir2='> ($ Id.VSub_DollarName BASE_DIR) <'/stage2'>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <mkdir> more_env: [] words: [{<mkdir>} {<-p>} {($ Id.VSub_DollarName dir1)} {($ Id.VSub_DollarName dir2)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <'benchmarks/virtual_memory.py'> more_env: [] words: [ {<'benchmarks/virtual_memory.py'>} {<baseline>} { (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name job_dirs> var_name: job_dirs bracket_op: (bracket_op.ArrayIndex expr: (arith_expr.Unary op_id:Id.Node_UnaryMinus child:{<Id.Lit_Digits 1>}) ) right: <Id.Right_DollarBrace '}'> ) } ] redirects: [ (Redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {($ Id.VSub_DollarName dir1) <'/vm-baseline.csv'>} ) ] do_fork: T ) (command.Simple blame_tok: <'benchmarks/report.R'> more_env: [] words: [ {<'benchmarks/report.R'>} {<vm-baseline>} {($ Id.VSub_DollarName dir1)} {($ Id.VSub_DollarName dir2)} ] redirects: [] do_fork: T ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name_tok: <stage1> name: stage1 body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Simple blame_tok: <local> more_env: [] words: [ {<local>} {<Id.Lit_VarLike 'raw_dir='> (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Number 1> var_name: 1 suffix_op: (suffix_op.Unary op: <Id.VTest_ColonHyphen _> arg_word: {($ Id.VSub_DollarName BASE_DIR) <Id.Lit_Slash '/'> <raw>} ) right: <Id.Right_DollarBrace '}'> ) } ] redirects: [] do_fork: T ) (command.Simple blame_tok: <local> more_env: [] words: [{<local>} {<Id.Lit_VarLike 'out='> ($ Id.VSub_DollarName BASE_DIR) <'/stage1'>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <mkdir> more_env: [] words: [{<mkdir>} {<-p>} {($ Id.VSub_DollarName out)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <local> more_env: [] words: [ {<local>} {<-a>} {<Id.Lit_VarLike 'm1='> (ShArrayLiteral left: <Id.Op_LParen _> words: [{<'../benchmark-data/vm-baseline/flanders.'> <Id.Lit_Star '*'>}] right: <Id.Right_ShArrayLiteral _> ) } ] redirects: [] do_fork: T ) (command.Simple blame_tok: <local> more_env: [] words: [ {<local>} {<-a>} {<Id.Lit_VarLike 'm2='> (ShArrayLiteral left: <Id.Op_LParen _> words: [{<'../benchmark-data/vm-baseline/lisa.'> <Id.Lit_Star '*'>}] right: <Id.Right_ShArrayLiteral _> ) } ] redirects: [] do_fork: T ) (command.Simple blame_tok: <local> more_env: [] words: [ {<local>} {<-a>} {<Id.Lit_VarLike 'latest='> (ShArrayLiteral left: <Id.Op_LParen _> words: [ { (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name m1> var_name: m1 bracket_op: (bracket_op.ArrayIndex expr: (arith_expr.Unary op_id: Id.Node_UnaryMinus child: {<Id.Lit_Digits 1>} ) ) right: <Id.Right_DollarBrace '}'> ) } { (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name m2> var_name: m2 bracket_op: (bracket_op.ArrayIndex expr: (arith_expr.Unary op_id: Id.Node_UnaryMinus child: {<Id.Lit_Digits 1>} ) ) right: <Id.Right_DollarBrace '}'> ) } ] right: <Id.Right_ShArrayLiteral _> ) } ] redirects: [] do_fork: T ) (command.Pipeline children: [ (command.Simple blame_tok: <'benchmarks/virtual_memory.py'> more_env: [] words: [ {<'benchmarks/virtual_memory.py'>} {<baseline>} { (DQ (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name latest> var_name: latest bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At) right: <Id.Right_DollarBrace '}'> ) ) } ] redirects: [] do_fork: T ) (command.Simple blame_tok: <tee> more_env: [] words: [{<tee>} {($ Id.VSub_DollarName out) <'/vm-baseline.csv'>}] redirects: [] do_fork: T ) ] ops: [<Id.Op_Pipe _>] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name_tok: <print-report> name: print-report body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Simple blame_tok: <local> more_env: [] words: [{<local>} {<Id.Lit_VarLike 'in_dir='> ($ Id.VSub_Number 1)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <local> more_env: [] words: [{<local>} {<Id.Lit_VarLike 'base_url='> (SQ <'../../web'>)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <cat> more_env: [] words: [{<cat>}] redirects: [ (Redir op: <Id.Redir_DLess '<<'> loc: (redir_loc.Fd fd:0) arg: (redir_param.HereDoc here_begin: {<EOF>} here_end_tok: <Id.Undefined_Tok ''> stdin_parts: [ <'<!DOCTYPE html>\n'> <'<html>\n'> <' <head>\n'> <' <title>Virtual Memory Baseline</title>\n'> <' <script type='> <Id.Right_DoubleQuote '"'> <'text/javascript'> <Id.Right_DoubleQuote '"'> <' src='> <Id.Right_DoubleQuote '"'> ($ Id.VSub_DollarName base_url) <'/table/table-sort.js'> <Id.Right_DoubleQuote '"'> <'></script>\n'> <' <link rel='> <Id.Right_DoubleQuote '"'> <stylesheet> <Id.Right_DoubleQuote '"'> <' type='> <Id.Right_DoubleQuote '"'> <'text/css'> <Id.Right_DoubleQuote '"'> <' href='> <Id.Right_DoubleQuote '"'> ($ Id.VSub_DollarName base_url) <'/table/table-sort.css'> <Id.Right_DoubleQuote '"'> <' />\n'> <' <link rel='> <Id.Right_DoubleQuote '"'> <stylesheet> <Id.Right_DoubleQuote '"'> <' type='> <Id.Right_DoubleQuote '"'> <'text/css'> <Id.Right_DoubleQuote '"'> <' href='> <Id.Right_DoubleQuote '"'> ($ Id.VSub_DollarName base_url) <'/benchmarks.css'> <Id.Right_DoubleQuote '"'> <' />\n'> <'\n'> <' </head>\n'> <' <body>\n'> <' <p id='> <Id.Right_DoubleQuote '"'> <home-link> <Id.Right_DoubleQuote '"'> <'>\n'> <' <a href='> <Id.Right_DoubleQuote '"'> <'/'> <Id.Right_DoubleQuote '"'> <'>oilshell.org</a>\n'> <' </p>\n'> <' <h2>Virtual Memory Baseline</h2>\n'> <'\n'> <' <h3>Memory Used at Startup (MB)</h3>\n'> <'\n'> < ' <p>Running under <code>osh-ovm</code>. Memory usage is measured in MB\n' > <' (powers of 10), not MiB (powers of 2).</p>\n'> <'\n'> ] ) ) ] do_fork: T ) (command.Simple blame_tok: <csv2html> more_env: [] words: [{<csv2html>} {($ Id.VSub_DollarName in_dir) <'/vm-baseline.csv'>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <cat> more_env: [] words: [{<cat>}] redirects: [ (Redir op: <Id.Redir_DLess '<<'> loc: (redir_loc.Fd fd:0) arg: (redir_param.HereDoc here_begin: {<EOF>} here_end_tok: <Id.Undefined_Tok ''> stdin_parts: [<' <!-- <h3>Shell and Host Details</h3> -->\n'>] ) ) ] do_fork: T ) (command.Simple blame_tok: <cat> more_env: [] words: [{<cat>}] redirects: [ (Redir op: <Id.Redir_DLess '<<'> loc: (redir_loc.Fd fd:0) arg: (redir_param.HereDoc here_begin: {<EOF>} here_end_tok: <Id.Undefined_Tok ''> stdin_parts: [<' </body>\n'> <'</html>\n'>] ) ) ] do_fork: T ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name_tok: <parser-dump-demo> name: parser-dump-demo body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Simple blame_tok: <local> more_env: [] words: [{<local>} {<Id.Lit_VarLike 'out_dir='> <'_tmp/virtual-memory'>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <mkdir> more_env: [] words: [{<mkdir>} {<-p>} {($ Id.VSub_DollarName out_dir)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <local> more_env: [] words: [{<local>} {<Id.Lit_VarLike 'input='> <'benchmarks/testdata/abuild'>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <'bin/osh'> more_env: [] words: [ {<'bin/osh'>} {<--parser-mem-dump>} {($ Id.VSub_DollarName out_dir) <'/parser.txt'>} {<-n>} {<--ast-format>} {<none>} {($ Id.VSub_DollarName input)} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <grep> more_env: [] words: [{<grep>} {(SQ <'^Vm'>)} {($ Id.VSub_DollarName out_dir) <'/parser.txt'>}] redirects: [] do_fork: T ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name_tok: <runtime-dump-demo> name: runtime-dump-demo body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Simple blame_tok: <local> more_env: [] words: [{<local>} {<Id.Lit_VarLike 'out_dir='> <'_tmp/virtual-memory'>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <mkdir> more_env: [] words: [{<mkdir>} {<-p>} {($ Id.VSub_DollarName out_dir)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <'bin/osh'> more_env: [] words: [ {<'bin/osh'>} {<--parser-mem-dump>} {($ Id.VSub_DollarName out_dir) <'/parser.txt'>} {<--runtime-mem-dump>} {($ Id.VSub_DollarName out_dir) <'/runtime.txt'>} {<-c>} {(SQ <'echo $(echo hi)'>)} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <grep> more_env: [] words: [ {<grep>} {(SQ <'^Vm'>)} {($ Id.VSub_DollarName out_dir) <'/parser.txt'>} {($ Id.VSub_DollarName out_dir) <'/runtime.txt'>} ] redirects: [] do_fork: T ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.Simple blame_tok: <Id.Left_DoubleQuote '"'> more_env: [] words: [{(DQ ($ Id.VSub_At '@'))}] redirects: [] do_fork: T ) ] )