(command.CommandList children: [ (C {<Id.KW_Set set>} {<-o>} {<nounset>}) (C {<Id.KW_Set set>} {<-o>} {<pipefail>}) (C {<Id.KW_Set set>} {<-o>} {<errexit>}) (C {<source>} {<test/common.sh>}) (C {<source>} {<benchmarks/common.sh>}) (C {<readonly>} {<Id.Lit_VarLike 'BASE_DIR='> <_tmp/osh-runtime>}) (C {<readonly>} {<Id.Lit_VarLike 'TAR_DIR='> ($ Id.VSub_DollarName '$PWD') </_deps/osh-runtime>}) (C {<readonly>} {<-a>} {<Id.Lit_VarLike 'TAR_SUBDIRS='> (sh_array_literal left: <Id.Op_LParen _> words: [{<ocaml-4.06.0>} {<tcc-0.9.26>} {<yash-2.46>}] ) } ) (command.ShFunction name: tarballs body: (command.BraceGroup children: [ (command.Simple words: [{<cat>}] redirects: [ (redir.HereDoc op: <Id.Redir_DLess '<<'> fd: -1 here_begin: {<EOF>} here_end_span_id: 110 stdin_parts: [ <'tcc-0.9.26.tar.bz2\n'> <'yash-2.46.tar.xz\n'> <'ocaml-4.06.0.tar.xz\n'> ] ) ] ) ] ) ) (command.ShFunction name: download body: (command.BraceGroup children: [ (C {<mkdir>} {<-p>} {($ Id.VSub_DollarName '$TAR_DIR')}) (command.Pipeline children: [ (C {<tarballs>}) (C {<xargs>} {<-n>} {<1>} {<-I>} {<Id.Lit_LBrace '{'> <Id.Lit_RBrace '}'>} {<--verbose>} {<-->} {<wget>} {<--directory>} {($ Id.VSub_DollarName '$TAR_DIR')} {(SQ <'https://www.oilshell.org/blob/testdata/{}'>)} ) ] negated: F ) ] ) ) (command.ShFunction name: extract body: (command.BraceGroup children: [ (command.TimeBlock pipeline: (command.ForEach iter_name: f iter_words: [ (word.BracedTree parts: [ ($ Id.VSub_DollarName '$TAR_DIR') </> <Id.Lit_Star '*'> <.> (word_part.BracedTuple words:[{<bz2>} {<xz>}]) ] ) ] do_arg_iter: F body: (command.DoGroup children: [ (C {<tar>} {<-x>} {<--directory>} {($ Id.VSub_DollarName '$TAR_DIR')} {<--file>} {($ Id.VSub_DollarName '$f')} ) ] ) ) ) (C {<ls>} {<-l>} {($ Id.VSub_DollarName '$TAR_DIR')}) ] ) ) (C {<readonly>} {<Id.Lit_VarLike 'PY27_DIR='> ($ Id.VSub_DollarName '$PWD') </Python-2.7.13>}) (command.ShFunction name: cpython-configure body: (command.BraceGroup children: [ (C {<local>} {<Id.Lit_VarLike 'sh_path='> (braced_var_sub token: <Id.VSub_Number 1> suffix_op: (suffix_op.Unary op_id:Id.VTest_ColonHyphen arg_word:{<bash>}) ) } ) (C {<local>} {<Id.Lit_VarLike 'out_dir='> (braced_var_sub token: <Id.VSub_Number 2> suffix_op: (suffix_op.Unary op_id: Id.VTest_ColonHyphen arg_word: {($ Id.VSub_DollarName '$BASE_DIR') <Id.Lit_Slash /> (${ Id.VSub_Name sh_path) <-cpython-configure> } ) ) } ) (C {<mkdir>} {<-p>} {($ Id.VSub_DollarName '$out_dir')}) (C {<pushd>} {($ Id.VSub_DollarName '$out_dir')}) (command.AndOr ops: [Id.Op_DPipe] children: [ (command.TimeBlock pipeline: (C {($ Id.VSub_DollarName '$sh_path')} {($ Id.VSub_DollarName '$PY27_DIR') </configure>} ) ) (C {<true>}) ] ) (C {<popd>}) (C {<tree>} {($ Id.VSub_DollarName '$out_dir')}) ] ) ) (command.ShFunction name: osh-cpython-configure body: (command.BraceGroup children: [ (C {<cpython-configure>} {($ Id.VSub_DollarName '$OSH_OVM')} {($ Id.VSub_DollarName '$BASE_DIR') </osh-cpython-configure>} ) ] ) ) (command.ShFunction name: runtime-task body: (command.BraceGroup children: [ (C {<local>} {<Id.Lit_VarLike 'raw_dir='> ($ Id.VSub_Number '$1')}) (C {<local>} {<Id.Lit_VarLike 'job_id='> ($ Id.VSub_Number '$2')}) (C {<local>} {<Id.Lit_VarLike 'host='> ($ Id.VSub_Number '$3')}) (C {<local>} {<Id.Lit_VarLike 'host_hash='> ($ Id.VSub_Number '$4')}) (C {<local>} {<Id.Lit_VarLike 'sh_path='> ($ Id.VSub_Number '$5')}) (C {<local>} {<Id.Lit_VarLike 'shell_hash='> ($ Id.VSub_Number '$6')}) (C {<local>} {<Id.Lit_VarLike 'task_type='> ($ Id.VSub_Number '$7')}) (C {<local>} {<Id.Lit_VarLike 'task_arg='> ($ Id.VSub_Number '$8')}) (C {<local>} {<Id.Lit_VarLike 'shell_name='> (command_sub left_token: <Id.Left_DollarParen '$('> command_list: (command.CommandList children: [(C {<basename>} {($ Id.VSub_DollarName '$sh_path')})] ) ) } ) (C {<local>} {<Id.Lit_VarLike 'x='> (command_sub left_token: <Id.Left_DollarParen '$('> command_list: (command.CommandList children: [(C {<basename>} {($ Id.VSub_DollarName '$task_arg')})] ) ) } ) (C {<local>} {<Id.Lit_VarLike 'task_label='> (DQ (${ Id.VSub_Name shell_name) <-> (${ Id.VSub_Name shell_hash) <__> (${ Id.VSub_Name x) ) } ) (C {<local>} {<Id.Lit_VarLike 'times_out='> (DQ ($ Id.VSub_DollarName '$PWD') </> ($ Id.VSub_DollarName '$raw_dir') </> ($ Id.VSub_DollarName '$host') <.> ($ Id.VSub_DollarName '$job_id') <.times.csv> ) } ) (C {<local>} {<Id.Lit_VarLike 'vm_out_dir='> (DQ ($ Id.VSub_DollarName '$PWD') </> ($ Id.VSub_DollarName '$raw_dir') </> ($ Id.VSub_DollarName '$host') <.> ($ Id.VSub_DollarName '$job_id') <.virtual-memory> ) } ) (C {<local>} {<Id.Lit_VarLike 'files_out_dir='> (DQ ($ Id.VSub_DollarName '$PWD') </> ($ Id.VSub_DollarName '$raw_dir') </> ($ Id.VSub_DollarName '$host') <.> ($ Id.VSub_DollarName '$job_id') <.files/> ($ Id.VSub_DollarName '$task_label') ) } ) (C {<mkdir>} {<-p>} {($ Id.VSub_DollarName '$vm_out_dir')} {($ Id.VSub_DollarName '$files_out_dir')} ) (C {<local>} {<-a>} {<Id.Lit_VarLike 'TIME_PREFIX='> (sh_array_literal left: <Id.Op_LParen _> words: [ {($ Id.VSub_DollarName '$PWD') </benchmarks/time.py>} {<--output>} {($ Id.VSub_DollarName '$times_out')} {<--field>} {(DQ ($ Id.VSub_DollarName '$host'))} {<--field>} {(DQ ($ Id.VSub_DollarName '$host_hash'))} {<--field>} {(DQ ($ Id.VSub_DollarName '$shell_name'))} {<--field>} {(DQ ($ Id.VSub_DollarName '$shell_hash'))} {<--field>} {(DQ ($ Id.VSub_DollarName '$task_type'))} {<--field>} {(DQ ($ Id.VSub_DollarName '$task_arg'))} ] ) } ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:extra_args) op: assign_op.Equal rhs: {(SQ )} spids: [549] ) ] ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (C {<test>} {(DQ ($ Id.VSub_DollarName '$shell_name'))} {<Id.Lit_Equals '='>} {(SQ <osh>)} ) terminator: <Id.Op_Semi _> ) ] action: [ (C {<local>} {<Id.Lit_VarLike 'pdump='> (DQ (${ Id.VSub_Name vm_out_dir) </> (${ Id.VSub_Name task_label) <__parser.txt>) } ) (C {<local>} {<Id.Lit_VarLike 'rdump='> (DQ (${ Id.VSub_Name vm_out_dir) </> (${ Id.VSub_Name task_label) <__runtime.txt> ) } ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:extra_args) op: assign_op.Equal rhs: { (DQ <'--parser-mem-dump '> ($ Id.VSub_DollarName '$pdump') <' --runtime-mem-dump '> ($ Id.VSub_DollarName '$rdump') ) } spids: [602] ) ] ) ] spids: [554 569] ) ] ) (C {<echo>}) (C {<echo>} { (DQ <'--- '> ($ Id.VSub_DollarName '$sh_path') <' '> ($ Id.VSub_DollarName '$task_type') <' '> ($ Id.VSub_DollarName '$task_arg') <' ---'> ) } ) (C {<echo>}) (command.Case to_match: {($ Id.VSub_DollarName '$task_type')} arms: [ (case_arm pat_list: [{<abuild>}] action: [ (command.Simple words: [ { (DQ (braced_var_sub token: <Id.VSub_Name TIME_PREFIX> bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At) ) ) } {<-->} {(DQ ($ Id.VSub_DollarName '$sh_path'))} {($ Id.VSub_DollarName '$extra_args')} {<testdata/osh-runtime/abuild>} {<-h>} ] redirects: [ (redir.Redir op: <Id.Redir_Great '>'> fd: -1 arg_word: {($ Id.VSub_DollarName '$files_out_dir') </STDOUT.txt>} ) ] ) ] spids: [647 648 688 -1] ) (case_arm pat_list: [{<cpython>}] action: [ (command.Simple words: [{<pushd>} {($ Id.VSub_DollarName '$files_out_dir')}] redirects: [(redir.Redir op:<Id.Redir_Great '>'> fd:-1 arg_word:{</dev/null>})] ) (command.Simple words: [ { (DQ (braced_var_sub token: <Id.VSub_Name TIME_PREFIX> bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At) ) ) } {<-->} {(DQ ($ Id.VSub_DollarName '$sh_path'))} {($ Id.VSub_DollarName '$extra_args')} {($ Id.VSub_DollarName '$PY27_DIR') </configure>} ] redirects: [ (redir.Redir op: <Id.Redir_Great '>'> fd: -1 arg_word: {($ Id.VSub_DollarName '$files_out_dir') </STDOUT.txt>} ) ] ) (command.Simple words: [{<popd>}] redirects: [(redir.Redir op:<Id.Redir_Great '>'> fd:-1 arg_word:{</dev/null>})] ) ] spids: [692 693 760 -1] ) (case_arm pat_list: [{<configure>}] action: [ (C {<local>} {<Id.Lit_VarLike 'conf_dir='> ($ Id.VSub_DollarName '$task_arg')}) (command.Simple words: [{<pushd>} {($ Id.VSub_DollarName '$conf_dir')}] redirects: [(redir.Redir op:<Id.Redir_Great '>'> fd:-1 arg_word:{</dev/null>})] ) (C {<touch>} {<__TIMESTAMP>}) (command.Simple words: [ { (DQ (braced_var_sub token: <Id.VSub_Name TIME_PREFIX> bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At) ) ) } {<-->} {(DQ ($ Id.VSub_DollarName '$sh_path'))} {($ Id.VSub_DollarName '$extra_args')} {<./configure>} ] redirects: [ (redir.Redir op: <Id.Redir_Great '>'> fd: -1 arg_word: {($ Id.VSub_DollarName '$files_out_dir') </STDOUT.txt>} ) ] ) (command.Pipeline children: [ (C {<find>} {<.>} {<-type>} {<f>} {<-newer>} {<__TIMESTAMP>}) (C {<xargs>} {<-I>} {<Id.Lit_LBrace '{'> <Id.Lit_RBrace '}'>} {<-->} {<cp>} {<--verbose>} {<Id.Lit_LBrace '{'> <Id.Lit_RBrace '}'>} {($ Id.VSub_DollarName '$files_out_dir')} ) ] negated: F ) (command.Simple words: [{<popd>}] redirects: [(redir.Redir op:<Id.Redir_Great '>'> fd:-1 arg_word:{</dev/null>})] ) ] spids: [764 765 858 -1] ) (case_arm pat_list: [{<Id.Lit_Star '*'>}] action: [(C {<die>} {(DQ <'Invalid task type '> ($ Id.VSub_DollarName '$task_type'))})] spids: [862 863 874 -1] ) ] ) ] ) ) (command.ShFunction name: print-tasks body: (command.BraceGroup children: [ (C {<local>} {<Id.Lit_VarLike 'provenance='> ($ Id.VSub_Number '$1')}) (command.Pipeline children: [ (C {<cat>} {($ Id.VSub_DollarName '$provenance')}) (command.WhileUntil keyword: <Id.KW_While while> cond: [ (command.Sentence child: (C {<read>} {<job_id>} {<host_name>} {<host_hash>} {<sh_path>} {<shell_hash>}) terminator: <Id.Op_Semi _> ) ] body: (command.DoGroup children: [ (command.Case to_match: {($ Id.VSub_DollarName '$sh_path')} arms: [ (case_arm pat_list: [{<mksh>} {<zsh>} {<bin/osh>}] action: [ (C {<log>} {(DQ <'--- Skipping '> ($ Id.VSub_DollarName '$sh_path'))}) (command.ControlFlow token: <Id.ControlFlow_Continue continue> ) ] spids: [1004 1009 1023 -1] ) ] ) (command.Case to_match: {($ Id.VSub_DollarName '$sh_path')} arms: [ (case_arm pat_list: [{<Id.Lit_Star '*'> </osh>}] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:sh_path) op: assign_op.Equal rhs: {($ Id.VSub_DollarName '$PWD') </> ($ Id.VSub_DollarName '$sh_path') } spids: [1046] ) ] ) ] spids: [1041 1043 1052 -1] ) ] ) (C {<local>} {<Id.Lit_VarLike 'prefix='> (DQ ($ Id.VSub_DollarName '$job_id') <' '> ($ Id.VSub_DollarName '$host_name') <' '> ($ Id.VSub_DollarName '$host_hash') <' '> ($ Id.VSub_DollarName '$sh_path') <' '> ($ Id.VSub_DollarName '$shell_hash') ) } ) (C {<echo>} {(DQ ($ Id.VSub_DollarName '$prefix'))} {<abuild>} {<abuild-help>}) (C {<echo>} {(DQ ($ Id.VSub_DollarName '$prefix'))} {<cpython>} {<cpython-configure>} ) (command.ForEach iter_name: dir iter_words: [ { (DQ (braced_var_sub token: <Id.VSub_Name TAR_SUBDIRS> bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At) ) ) } ] do_arg_iter: F body: (command.DoGroup children: [ (C {<echo>} {(DQ ($ Id.VSub_DollarName '$prefix'))} {<configure>} {($ Id.VSub_DollarName '$TAR_DIR') </> ($ Id.VSub_DollarName '$dir')} ) ] ) ) ] ) ) ] negated: F ) ] ) ) (C {<readonly>} {<Id.Lit_VarLike 'HEADER='> (SQ <'status,elapsed_secs,host_name,host_hash,shell_name,shell_hash,task_type,task_arg'>) } ) (C {<readonly>} {<Id.Lit_VarLike 'NUM_COLUMNS='> <7>}) (command.ShFunction name: measure body: (command.BraceGroup children: [ (C {<local>} {<Id.Lit_VarLike 'provenance='> ($ Id.VSub_Number '$1')}) (C {<local>} {<Id.Lit_VarLike 'raw_dir='> (braced_var_sub token: <Id.VSub_Number 2> suffix_op: (suffix_op.Unary op_id: Id.VTest_ColonHyphen arg_word: {($ Id.VSub_DollarName '$BASE_DIR') <Id.Lit_Slash /> <raw>} ) ) } ) (C {<local>} {<Id.Lit_VarLike 'pattern='> (braced_var_sub token: <Id.VSub_Number 3> suffix_op: (suffix_op.Unary op_id:Id.VTest_ColonHyphen arg_word:{}) ) } ) (C {<local>} {<Id.Lit_VarLike 'name='> (command_sub left_token: <Id.Left_DollarParen '$('> command_list: (command.CommandList children: [(C {<basename>} {($ Id.VSub_DollarName '$provenance')})] ) ) } ) (C {<local>} {<Id.Lit_VarLike 'prefix='> (braced_var_sub token: <Id.VSub_Name name> suffix_op: (suffix_op.Unary op_id:Id.VOp1_Percent arg_word:{<.provenance.txt>}) ) } ) (C {<local>} {<Id.Lit_VarLike 'times_out='> (DQ ($ Id.VSub_DollarName '$raw_dir') </> ($ Id.VSub_DollarName '$prefix') <.times.csv>) } ) (C {<mkdir>} {<-p>} (word.BracedTree parts: [ ($ Id.VSub_DollarName '$BASE_DIR') </> (word_part.BracedTuple words:[{<raw>} {<stage1>}]) ] ) {($ Id.VSub_DollarName '$raw_dir')} ) (command.Simple words: [{<echo>} {($ Id.VSub_DollarName '$HEADER')}] redirects: [ (redir.Redir op: <Id.Redir_Great '>'> fd: -1 arg_word: {($ Id.VSub_DollarName '$times_out')} ) ] ) (C {<local>} {<Id.Lit_VarLike 'tasks='> ($ Id.VSub_DollarName '$BASE_DIR') </tasks.txt>}) (command.Simple words: [{<print-tasks>} {($ Id.VSub_DollarName '$provenance')}] redirects: [ (redir.Redir op: <Id.Redir_Great '>'> fd: -1 arg_word: {($ Id.VSub_DollarName '$tasks')} ) ] ) (command.AndOr ops: [Id.Op_DPipe] children: [ (command.TimeBlock pipeline: (command.Pipeline children: [ (C {<egrep>} {(DQ ($ Id.VSub_DollarName '$pattern'))} {($ Id.VSub_DollarName '$tasks')} ) (C {<xargs>} {<-n>} {($ Id.VSub_DollarName '$NUM_COLUMNS')} {<-->} {($ Id.VSub_Number '$0')} {<runtime-task>} {($ Id.VSub_DollarName '$raw_dir')} ) ] negated: F ) ) (C {<die>} {(DQ <'*** Some tasks failed. ***'>)}) ] ) (C {<cp>} {<-v>} {($ Id.VSub_DollarName '$provenance')} {($ Id.VSub_DollarName '$raw_dir')}) ] ) ) (command.ShFunction name: stage1 body: (command.BraceGroup children: [ (C {<local>} {<Id.Lit_VarLike 'raw_dir='> (braced_var_sub token: <Id.VSub_Number 1> suffix_op: (suffix_op.Unary op_id: Id.VTest_ColonHyphen arg_word: {($ Id.VSub_DollarName '$BASE_DIR') <Id.Lit_Slash /> <raw>} ) ) } ) (C {<local>} {<Id.Lit_VarLike 'out_dir='> ($ Id.VSub_DollarName '$BASE_DIR') </stage1>}) (C {<mkdir>} {<-p>} {($ Id.VSub_DollarName '$out_dir')}) (C {<local>} {<Id.Lit_VarLike 'times_csv='> ($ Id.VSub_DollarName '$out_dir') </times.csv>}) (C {<local>} {<-a>} {<Id.Lit_VarLike 'a='> (sh_array_literal left: <Id.Op_LParen _> words: [ {($ Id.VSub_DollarName '$raw_dir') </flanders.> <Id.Lit_Star '*'> <.times.csv>} ] ) } ) (C {<local>} {<-a>} {<Id.Lit_VarLike 'b='> (sh_array_literal left: <Id.Op_LParen _> words: [{($ Id.VSub_DollarName '$raw_dir') </lisa.> <Id.Lit_Star '*'> <.times.csv>}] ) } ) (command.Simple words: [ {<csv-concat>} { (braced_var_sub token: <Id.VSub_Name a> bracket_op: (bracket_op.ArrayIndex expr: (arith_expr.Unary op_id: Id.Node_UnaryMinus child: (arith_expr.ArithWord w:{<Id.Lit_Digits 1>}) ) ) ) } { (braced_var_sub token: <Id.VSub_Name b> bracket_op: (bracket_op.ArrayIndex expr: (arith_expr.Unary op_id: Id.Node_UnaryMinus child: (arith_expr.ArithWord w:{<Id.Lit_Digits 1>}) ) ) ) } ] redirects: [ (redir.Redir op: <Id.Redir_Great '>'> fd: -1 arg_word: {($ Id.VSub_DollarName '$times_csv')} ) ] ) (C {<local>} {<Id.Lit_VarLike 'vm_csv='> ($ Id.VSub_DollarName '$out_dir') </virtual-memory.csv>} ) (C {<local>} {<-a>} {<Id.Lit_VarLike 'c='> (sh_array_literal left: <Id.Op_LParen _> words: [ {($ Id.VSub_DollarName '$raw_dir') </flanders.> <Id.Lit_Star '*'> <.virtual-memory>} ] ) } ) (C {<local>} {<-a>} {<Id.Lit_VarLike 'd='> (sh_array_literal left: <Id.Op_LParen _> words: [ {($ Id.VSub_DollarName '$raw_dir') </lisa.> <Id.Lit_Star '*'> <.virtual-memory>} ] ) } ) (command.Simple words: [ {<benchmarks/virtual_memory.py>} {<osh-runtime>} { (braced_var_sub token: <Id.VSub_Name c> bracket_op: (bracket_op.ArrayIndex expr: (arith_expr.Unary op_id: Id.Node_UnaryMinus child: (arith_expr.ArithWord w:{<Id.Lit_Digits 1>}) ) ) ) } { (braced_var_sub token: <Id.VSub_Name d> bracket_op: (bracket_op.ArrayIndex expr: (arith_expr.Unary op_id: Id.Node_UnaryMinus child: (arith_expr.ArithWord w:{<Id.Lit_Digits 1>}) ) ) ) } ] redirects: [ (redir.Redir op: <Id.Redir_Great '>'> fd: -1 arg_word: {($ Id.VSub_DollarName '$vm_csv')} ) ] ) ] ) ) (command.ShFunction name: print-report body: (command.BraceGroup children: [ (C {<local>} {<Id.Lit_VarLike 'in_dir='> ($ Id.VSub_Number '$1')}) (C {<local>} {<Id.Lit_VarLike 'base_url='> (SQ <../../web>)}) (command.Simple words: [{<cat>}] redirects: [ (redir.HereDoc op: <Id.Redir_DLess '<<'> fd: -1 here_begin: {<EOF>} here_end_span_id: 1589 stdin_parts: [ <'<!DOCTYPE html>\n'> <'<html>\n'> <' <head>\n'> <' <title>OSH Runtime Performance</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>OSH Runtime Performance</h2>\n'> <'\n'> <' <h3>Elapsed Time by Shell (milliseconds)</h3>\n'> <'\n'> < ' <p>Some benchmarks call many external tools, while some exercise the shell\n' > <' interpreter itself. Parse time is included.</p>\n'> ] ) ] ) (C {<csv2html>} {($ Id.VSub_DollarName '$in_dir') </times.csv>}) (command.Simple words: [{<cat>}] redirects: [ (redir.HereDoc op: <Id.Redir_DLess '<<'> fd: -1 here_begin: {<EOF>} here_end_span_id: 1609 stdin_parts: [ <' <h3>Memory Used to Run</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'> ] ) ] ) (C {<csv2html>} {($ Id.VSub_DollarName '$in_dir') </virtual-memory.csv>}) (command.Simple words: [{<cat>}] redirects: [ (redir.HereDoc op: <Id.Redir_DLess '<<'> fd: -1 here_begin: {<EOF>} here_end_span_id: 1626 stdin_parts: [<'\n'> <' <h3>Shell and Host Details</h3>\n'>] ) ] ) (C {<csv2html>} {($ Id.VSub_DollarName '$in_dir') </shells.csv>}) (C {<csv2html>} {($ Id.VSub_DollarName '$in_dir') </hosts.csv>}) (command.Simple words: [{<cat>}] redirects: [ (redir.HereDoc op: <Id.Redir_DLess '<<'> fd: -1 here_begin: {<EOF>} here_end_span_id: 1649 stdin_parts: [<' </body>\n'> <'</html>\n'>] ) ] ) ] ) ) (command.ShFunction name: abuild-h body: (command.BraceGroup children: [ (C {<local>} {<Id.Lit_VarLike 'out_dir='> <_tmp/osh-runtime>}) (C {<mkdir>} {<-p>} {($ Id.VSub_DollarName '$out_dir')}) (C {<local>} {<Id.Lit_VarLike 'out='> ($ Id.VSub_DollarName '$out_dir') </abuild-h-times.csv>} ) (command.Simple words: [{<echo>} {(SQ <'status,elapsed_secs,sh_path'>)}] redirects: [ (redir.Redir op: <Id.Redir_Great '>'> fd: -1 arg_word: {($ Id.VSub_DollarName '$out')} ) ] ) (command.ForEach iter_name: sh_path iter_words: [{<bash>} {<dash>} {<mksh>} {<zsh>} {($ Id.VSub_DollarName '$OSH_OVM')}] do_arg_iter: F body: (command.DoGroup children: [ (C {<benchmarks/time.py>} {<--output>} {($ Id.VSub_DollarName '$out')} {<--field>} {(DQ ($ Id.VSub_DollarName '$sh_path'))} {<-->} {($ Id.VSub_DollarName '$sh_path')} {<benchmarks/testdata/abuild>} {<-h>} ) ] ) ) ] ) ) (command.ShFunction name: qemu-old body: (command.BraceGroup children: [ (C {<local>} {<Id.Lit_VarLike 'out_dir='> ($ Id.VSub_DollarName '$PWD') </_tmp/qemu-old>}) (C {<mkdir>} {<-p>} {($ Id.VSub_DollarName '$out_dir')}) (C {<configure-and-copy>} {(word_part.TildeSub token:<Id.Lit_TildeLike '~'>) </src/qemu-1.6.0>} {($ Id.VSub_DollarName '$OSH_OVM')} {($ Id.VSub_DollarName '$out_dir')} ) ] ) ) (command.ShFunction name: self-exe body: (command.BraceGroup children: [ (C {<Id.KW_Set set>} {<Id.Lit_Other '+'> <o>} {<errexit>}) (command.Simple words: [{<dash>}] redirects: [ (redir.HereDoc op: <Id.Redir_DLess '<<'> fd: -1 here_begin: {<EOF>} here_end_span_id: 1829 stdin_parts: [<'/proc/self/exe -V\n'>] ) ] ) (C {<echo>}) (command.Simple words: [{<_bin/osh>}] redirects: [ (redir.HereDoc op: <Id.Redir_DLess '<<'> fd: -1 here_begin: {<EOF>} here_end_span_id: 1842 stdin_parts: [<'/proc/self/exe -V\n'>] ) ] ) (command.Simple words: [{<_tmp/shells/ash>}] redirects: [ (redir.HereDoc op: <Id.Redir_DLess '<<'> fd: -1 here_begin: {<EOF>} here_end_span_id: 1852 stdin_parts: [<'/proc/self/exe -V\n'>] ) ] ) ] ) ) (C {(DQ ($ Id.VSub_At '$@'))}) ] )