(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: (Token id:Id.Op_LParen val:'(' span_id:80) 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: (Token id:Id.Redir_DLess val:'<<' span_id:103) 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 (Token id: Id.Lit_Chars val: 'https://www.oilshell.org/blob/testdata/{}' span_id: 156 ) ) } ) ] 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: (Token id:Id.VSub_Number val:1 span_id:245) suffix_op: (suffix_op.Unary op_id:Id.VTest_ColonHyphen arg_word:{(bash)}) ) } ) (C {(local)} {(Id.Lit_VarLike 'out_dir=') (braced_var_sub token: (Token id:Id.VSub_Number val:2 span_id:255) 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: (Token id:Id.Left_DollarParen val:'$(' span_id:384) command_list: (command.CommandList children: [(C {(basename)} {($ Id.VSub_DollarName '$sh_path')})] ) ) } ) (C {(local)} {(Id.Lit_VarLike 'x=') (command_sub left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:399) 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: (Token id:Id.Op_LParen val:'(' span_id:486) 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 (Token id:Id.Lit_Chars val:osh span_id:565))} ) terminator: (Token id:Id.Op_Semi val:';' span_id:567) ) ] 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: (Token id:Id.VSub_Name val:TIME_PREFIX span_id:659) 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: (Token id:Id.Redir_Great val:'>' span_id:682) 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: (Token id:Id.Redir_Great val:'>' span_id:718) fd: -1 arg_word: {(/dev/null)} ) ] ) (command.Simple words: [ { (DQ (braced_var_sub token: (Token id:Id.VSub_Name val:TIME_PREFIX span_id:725) 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: (Token id:Id.Redir_Great val:'>' span_id:747) fd: -1 arg_word: {($ Id.VSub_DollarName '$files_out_dir') (/STDOUT.txt)} ) ] ) (command.Simple words: [{(popd)}] redirects: [ (redir.Redir op: (Token id:Id.Redir_Great val:'>' span_id:756) 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: (Token id:Id.Redir_Great val:'>' span_id:779) fd: -1 arg_word: {(/dev/null)} ) ] ) (C {(touch)} {(__TIMESTAMP)}) (command.Simple words: [ { (DQ (braced_var_sub token: (Token id:Id.VSub_Name val:TIME_PREFIX span_id:791) 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: (Token id:Id.Redir_Great val:'>' span_id:810) 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: (Token id:Id.Redir_Great val:'>' span_id:854) 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: (Token id:Id.KW_While val:while span_id:976) cond: [ (command.Sentence child: (C {(read)} {(job_id)} {(host_name)} {(host_hash)} {(sh_path)} {(shell_hash)}) terminator: (Token id:Id.Op_Semi val:';' span_id:991) ) ] 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: (Token id:Id.ControlFlow_Continue val:continue span_id:1020) ) ] 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: (Token id:Id.VSub_Name val:TAR_SUBDIRS span_id:1110) 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 (Token id: Id.Lit_Chars val: 'status,elapsed_secs,host_name,host_hash,shell_name,shell_hash,task_type,task_arg' span_id: 1146 ) ) } ) (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: (Token id:Id.VSub_Number val:2 span_id:1175) 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: (Token id:Id.VSub_Number val:3 span_id:1187) suffix_op: (suffix_op.Unary op_id:Id.VTest_ColonHyphen arg_word:{}) ) } ) (C {(local)} {(Id.Lit_VarLike 'name=') (command_sub left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:1205) command_list: (command.CommandList children: [(C {(basename)} {($ Id.VSub_DollarName '$provenance')})] ) ) } ) (C {(local)} {(Id.Lit_VarLike 'prefix=') (braced_var_sub token: (Token id:Id.VSub_Name val:name span_id:1216) 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: (Token id:Id.Redir_Great val:'>' span_id:1261) 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: (Token id:Id.Redir_Great val:'>' span_id:1278) 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: (Token id:Id.VSub_Number val:1 span_id:1348) 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: (Token id:Id.Op_LParen val:'(' span_id:1388) words: [ {($ Id.VSub_DollarName '$raw_dir') (/flanders.) (Id.Lit_Star '*') (.times.csv)} ] ) } ) (C {(local)} {(-a)} {(Id.Lit_VarLike 'b=') (sh_array_literal left: (Token id:Id.Op_LParen val:'(' span_id:1401) words: [{($ Id.VSub_DollarName '$raw_dir') (/lisa.) (Id.Lit_Star '*') (.times.csv)}] ) } ) (command.Simple words: [ {(csv-concat)} { (braced_var_sub token: (Token id:Id.VSub_Name val:a span_id:1412) 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: (Token id:Id.VSub_Name val:b span_id:1420) 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: (Token id:Id.Redir_Great val:'>' span_id:1427) 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: (Token id:Id.Op_LParen val:'(' span_id:1446) words: [ {($ Id.VSub_DollarName '$raw_dir') (/flanders.) (Id.Lit_Star '*') (.virtual-memory)} ] ) } ) (C {(local)} {(-a)} {(Id.Lit_VarLike 'd=') (sh_array_literal left: (Token id:Id.Op_LParen val:'(' span_id:1459) 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: (Token id:Id.VSub_Name val:c span_id:1472) 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: (Token id:Id.VSub_Name val:d span_id:1480) 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: (Token id:Id.Redir_Great val:'>' span_id:1487) 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 (Token id:Id.Lit_Chars val:../../web span_id:1516))} ) (command.Simple words: [{(cat)}] redirects: [ (redir.HereDoc op: (Token id:Id.Redir_DLess val:'<<' span_id:1523) 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: (Token id:Id.Redir_DLess val:'<<' span_id:1600) 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: (Token id:Id.Redir_DLess val:'<<' span_id:1620) 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: (Token id:Id.Redir_DLess val:'<<' span_id:1643) 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 (Token id:Id.Lit_Chars val:'status,elapsed_secs,sh_path' span_id:1699))} ] redirects: [ (redir.Redir op: (Token id:Id.Redir_Great val:'>' span_id:1702) 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:(Token id:Id.Lit_TildeLike val:'~' span_id:1791)) (/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: (Token id:Id.Redir_DLess val:'<<' span_id:1824) 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: (Token id:Id.Redir_DLess val:'<<' span_id:1837) 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: (Token id:Id.Redir_DLess val:'<<' span_id:1847) fd: -1 here_begin: {(EOF)} here_end_span_id: 1852 stdin_parts: [('/proc/self/exe -V\n')] ) ] ) ] ) ) (C {(DQ ($ Id.VSub_At '$@'))}) ] )