(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/oheap'>}] redirects: [] do_fork: T ) (command.ShFunction name_tok: <encode-one> name: encode-one body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Simple blame_tok: <local> more_env: [] words: [{<local>} {<Id.Lit_VarLike 'script='> ($ Id.VSub_Number 1)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <local> more_env: [] words: [{<local>} {<Id.Lit_VarLike 'oheap_out='> ($ Id.VSub_Number 2)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <Id.VSub_DollarName '$OSH_OVM'> more_env: [] words: [ {($ Id.VSub_DollarName OSH_OVM)} {<-n>} {<--ast-format>} {<oheap>} {(DQ ($ Id.VSub_DollarName script))} ] redirects: [ (Redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {($ Id.VSub_DollarName oheap_out)} ) ] do_fork: T ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name_tok: <task-spec> name: task-spec body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.WhileUntil keyword: <Id.KW_While while> cond: (condition.Shell commands: [ (command.Sentence child: (command.Simple blame_tok: <read> more_env: [] words: [{<read>} {<path>}] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) ] ) body: (command.DoGroup left: <Id.KW_Do do> children: [ (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} { (DQ ($ Id.VSub_DollarName path) <' _tmp/oheap/'> (CommandSub left_token: <Id.Left_DollarParen '$('> child: (command.Simple blame_tok: <basename> more_env: [] words: [{<basename>} {($ Id.VSub_DollarName path)}] redirects: [] do_fork: T ) right: <Id.Eof_RParen _> ) <__oheap> ) } ] redirects: [] do_fork: T ) ] right: <Id.KW_Done done> ) redirects: [ (Redir op: <Id.Redir_Less '<'> loc: (redir_loc.Fd fd:0) arg: {<'benchmarks/osh-parser-files.txt'>} ) ] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name_tok: <encode-all> name: encode-all body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Simple blame_tok: <mkdir> more_env: [] words: [{<mkdir>} {<-p>} {<'_tmp/oheap'>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <local> more_env: [] words: [{<local>} {<Id.Lit_VarLike 'times_csv='> <'_tmp/oheap/times.csv'>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(SQ <'status,elapsed_secs'>)}] redirects: [ (Redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {($ Id.VSub_DollarName times_csv)} ) ] do_fork: T ) (command.Pipeline children: [ (command.Simple blame_tok: <task-spec> more_env: [] words: [{<task-spec>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <xargs> more_env: [] words: [ {<xargs>} {<-n>} {<2>} {<--verbose>} {<-->} {<'benchmarks/time.py'>} {<--output>} {($ Id.VSub_DollarName times_csv)} {<-->} {($ Id.VSub_Number 0)} {<encode-one>} ] redirects: [] do_fork: T ) ] ops: [<Id.Op_Pipe _>] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name_tok: <compress-oheap> name: compress-oheap body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Simple blame_tok: <local> more_env: [] words: [ {<local>} {<Id.Lit_VarLike 'c_dir='> ($ Id.VSub_DollarName BASE_DIR) <'/oheap-compressed'>} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <mkdir> more_env: [] words: [{<mkdir>} {<-p>} {($ Id.VSub_DollarName c_dir)}] redirects: [] do_fork: T ) (command.ForEach keyword: <Id.KW_For for> iter_names: [bin] iterable: (for_iter.Words words:[{<'_tmp/oheap/'> <Id.Lit_Star '*'> <__oheap>}]) semi_tok: <Id.Op_Semi _> body: (command.DoGroup left: <Id.KW_Do do> children: [ (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 bin)}] redirects: [] do_fork: T ) right: <Id.Eof_RParen _> ) } ] redirects: [] do_fork: T ) (command.Simple blame_tok: <log> more_env: [] words: [{<log>} {(DQ <'Compressing '> ($ Id.VSub_DollarName name))}] redirects: [] do_fork: T ) (command.Simple blame_tok: <gzip> more_env: [] words: [{<gzip>} {<--stdout>} {($ Id.VSub_DollarName bin)}] redirects: [ (Redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {($ Id.VSub_DollarName c_dir) <'/'> ($ Id.VSub_DollarName name) <.gz>} ) ] do_fork: T ) (command.Simple blame_tok: <xz> more_env: [] words: [{<xz>} {<--stdout>} {($ Id.VSub_DollarName bin)}] redirects: [ (Redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {($ Id.VSub_DollarName c_dir) <'/'> ($ Id.VSub_DollarName name) <.xz>} ) ] do_fork: T ) ] right: <Id.KW_Done done> ) redirects: [] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name_tok: <compress-text> name: compress-text body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Simple blame_tok: <local> more_env: [] words: [ {<local>} {<Id.Lit_VarLike 'c_dir='> ($ Id.VSub_DollarName BASE_DIR) <'/src-compressed'>} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <mkdir> more_env: [] words: [{<mkdir>} {<-p>} {($ Id.VSub_DollarName c_dir)}] 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>} {<src>}] 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 'name='> (CommandSub left_token: <Id.Left_DollarParen '$('> child: (command.Simple blame_tok: <basename> more_env: [] words: [{<basename>} {($ Id.VSub_DollarName src)}] redirects: [] do_fork: T ) right: <Id.Eof_RParen _> ) } ] redirects: [] do_fork: T ) (command.Simple blame_tok: <log> more_env: [] words: [{<log>} {(DQ <'Compressing '> ($ Id.VSub_DollarName name))}] redirects: [] do_fork: T ) (command.Simple blame_tok: <gzip> more_env: [] words: [{<gzip>} {<--stdout>} {($ Id.VSub_DollarName src)}] redirects: [ (Redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {($ Id.VSub_DollarName c_dir) <'/'> (${ Id.VSub_Name name) <__text.gz>} ) ] do_fork: T ) (command.Simple blame_tok: <xz> more_env: [] words: [{<xz>} {<--stdout>} {($ Id.VSub_DollarName src)}] redirects: [ (Redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {($ Id.VSub_DollarName c_dir) <'/'> (${ Id.VSub_Name name) <__text.xz>} ) ] do_fork: T ) ] right: <Id.KW_Done done> ) redirects: [ (Redir op: <Id.Redir_Less '<'> loc: (redir_loc.Fd fd:0) arg: {<'benchmarks/osh-parser-files.txt'>} ) ] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name_tok: <print-size> name: print-size body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Simple blame_tok: <local> more_env: [] words: [{<local>} {<Id.Lit_VarLike 'c1='> ($ Id.VSub_Number 1)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <local> more_env: [] words: [{<local>} {<Id.Lit_VarLike 'c2='> ($ Id.VSub_Number 2)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <shift> more_env: [] words: [{<shift>} {<2>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <find> more_env: [] words: [ {<find>} {(DQ ($ Id.VSub_At '@'))} {<-maxdepth>} {<0>} {<-printf>} { (DQ <'%s,'> ($ Id.VSub_DollarName c1) <','> ($ Id.VSub_DollarName c2) <',%p'> <Id.Lit_BadBackslash '\\'> <n> ) } ] redirects: [] do_fork: T ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name_tok: <print-csv> name: print-csv body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(SQ <'num_bytes,format,compression,path'>)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <print-size> more_env: [] words: [{<print-size>} {<text>} {<none>} {<'benchmarks/testdata/'> <Id.Lit_Star '*'>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <print-size> more_env: [] words: [ {<print-size>} {<text>} {<gz>} {($ Id.VSub_DollarName BASE_DIR) <'/src-compressed/'> <Id.Lit_Star '*'> <.gz>} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <print-size> more_env: [] words: [ {<print-size>} {<text>} {<xz>} {($ Id.VSub_DollarName BASE_DIR) <'/src-compressed/'> <Id.Lit_Star '*'> <.xz>} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <print-size> more_env: [] words: [ {<print-size>} {<oheap>} {<none>} {($ Id.VSub_DollarName BASE_DIR) <'/'> <Id.Lit_Star '*'> <__oheap>} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <print-size> more_env: [] words: [ {<print-size>} {<oheap>} {<gz>} {($ Id.VSub_DollarName BASE_DIR) <'/oheap-compressed/'> <Id.Lit_Star '*'> <.gz>} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <print-size> more_env: [] words: [ {<print-size>} {<oheap>} {<xz>} {($ Id.VSub_DollarName BASE_DIR) <'/oheap-compressed/'> <Id.Lit_Star '*'> <.xz>} ] redirects: [] do_fork: T ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name_tok: <measure> name: measure body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Simple blame_tok: <encode-all> more_env: [] words: [{<encode-all>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <compress-oheap> more_env: [] words: [{<compress-oheap>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <compress-text> more_env: [] words: [{<compress-text>}] 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 'out_dir='> ($ Id.VSub_DollarName BASE_DIR) <'/stage1'>} ] 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: <print-csv> more_env: [] words: [{<print-csv>}] redirects: [ (Redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {($ Id.VSub_DollarName out_dir) <'/sizes.csv'>} ) ] do_fork: T ) ] 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>OHeap Encoding</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>OHeap Encoding</h2>\n'> <'\n'> <' <h3>Encoding Size (KB)</h3>\n'> <'\n'> <' <p>Sizes are in KB (powers of 10), not KiB (powers of 2).</p>\n'> ] ) ) ] do_fork: T ) (command.Simple blame_tok: <csv2html> more_env: [] words: [{<csv2html>} {($ Id.VSub_DollarName in_dir) <'/encoding_size.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>Encoding Ratios</h3>\n'>] ) ) ] do_fork: T ) (command.Simple blame_tok: <csv2html> more_env: [] words: [{<csv2html>} {($ Id.VSub_DollarName in_dir) <'/encoding_ratios.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: [<' </body>\n'> <'</html>\n'>] ) ) ] do_fork: T ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name_tok: <decode> name: decode body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.ForEach keyword: <Id.KW_For for> iter_names: [bin] iterable: (for_iter.Words words:[{<'_tmp/oheap/'> <Id.Lit_Star '*'> <.oheap>}]) semi_tok: <Id.Op_Semi _> body: (command.DoGroup left: <Id.KW_Do do> children: [ (command.TimeBlock keyword: <Id.KW_Time time> pipeline: (command.Pipeline children: [ (command.Simple blame_tok: <'_tmp/osh_demo'> more_env: [] words: [{<'_tmp/osh_demo'>} {($ Id.VSub_DollarName bin)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <wc> more_env: [] words: [{<wc>} {<-l>}] redirects: [] do_fork: T ) ] ops: [<Id.Op_Pipe _>] ) ) ] right: <Id.KW_Done done> ) redirects: [] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.Simple blame_tok: <Id.Left_DoubleQuote '"'> more_env: [] words: [{(DQ ($ Id.VSub_At '@'))}] redirects: [] do_fork: T ) ] )