===== BASIC METRICS -- Number of files: 81 -- Total bytecode bytes: 298155 -- Total instructions: 107525 Duplicate path/name # A tibble: 6 x 3 path code_name n 1 /home/andy/git/oilshell/oil/_devbuild/gen/syntax_asdl.pyc AbbreviatedTree 153 2 /home/andy/git/oilshell/oil/_devbuild/gen/syntax_asdl.pyc _AbbreviatedTree 153 3 /home/andy/git/oilshell/oil/_devbuild/gen/syntax_asdl.pyc __init__ 153 4 /home/andy/git/oilshell/oil/_devbuild/gen/syntax_asdl.pyc PrettyTree 153 5 /home/andy/git/oilshell/oil/_devbuild/gen/runtime_asdl.pyc AbbreviatedTree 20 6 /home/andy/git/oilshell/oil/_devbuild/gen/runtime_asdl.pyc _AbbreviatedTree 20 ===== BIG STRINGS path code_name type len_or_val 1 /home/andy/git/oilshell/oil/frontend/lex.pyc str 3101 2 /home/andy/git/oilshell/oil/pgen2/grammar.pyc Grammar str 2600 3 /home/andy/git/oilshell/oil/osh/cmd_parse.pyc ParseSimpleCommand str 2301 4 /home/andy/git/oilshell/oil/osh/word_parse.pyc _ReadBracedBracedVarSub str 2248 5 /home/andy/git/oilshell/oil/frontend/args.pyc str 1669 6 /home/andy/git/oilshell/oil/Python-2.7.13/Lib/__future__.pyc str 1638 7 /home/andy/git/oilshell/oil/osh/word_parse.pyc str 1297 8 /home/andy/git/oilshell/oil/pgen2/parse.pyc __init__ str 1241 9 /home/andy/git/oilshell/oil/tools/osh2oil.pyc _GetRhsStyle str 1209 10 /home/andy/git/oilshell/oil/osh/cmd_parse.pyc _MaybeExpandAliases str 1168 11 /home/andy/git/oilshell/oil/frontend/args.pyc OilFlags str 1141 12 /home/andy/git/oilshell/oil/tools/osh2oil.pyc DoWordInCommand str 1139 13 /home/andy/git/oilshell/oil/pgen2/parse.pyc Parser str 1076 14 /home/andy/git/oilshell/oil/core/completion.pyc str 886 15 /home/andy/git/oilshell/oil/osh/braces.pyc _BraceDetect str 824 16 /home/andy/git/oilshell/oil/core/dev.pyc CrashDumper str 812 17 /home/andy/git/oilshell/oil/pgen2/grammar.pyc dump str 749 18 /home/andy/git/oilshell/oil/oil_lang/expr_to_ast.pyc Transformer str 736 19 /home/andy/git/oilshell/oil/osh/builtin_process.pyc Wait str 655 20 /home/andy/git/oilshell/oil/core/main_loop.pyc Batch str 635 -- total string bytes: 148137 ===== FRAMES Frames with many consts # A tibble: 20 x 3 path code_name n 1 /home/andy/git/oilshell/oil/_devbuild/gen/syntax_asdl.pyc PrettyTree 734 2 /home/andy/git/oilshell/oil/_devbuild/gen/id_kind_asdl.pyc Id 624 3 /home/andy/git/oilshell/oil/_devbuild/gen/syntax_asdl.pyc _AbbreviatedTree 598 4 /home/andy/git/oilshell/oil/_devbuild/gen/syntax_asdl.pyc 449 5 /home/andy/git/oilshell/oil/core/id_kind.pyc AddKinds 337 6 /home/andy/git/oilshell/oil/_devbuild/gen/osh_help.pyc 242 7 /home/andy/git/oilshell/oil/frontend/lex.pyc 196 8 /home/andy/git/oilshell/oil/_devbuild/gen/syntax_asdl.pyc AbbreviatedTree 153 9 /home/andy/git/oilshell/oil/_devbuild/gen/syntax_asdl.pyc __init__ 153 10 /home/andy/git/oilshell/oil/_devbuild/gen/runtime_asdl.pyc 123 11 /home/andy/git/oilshell/oil/_devbuild/gen/grammar_nt.pyc 105 12 /home/andy/git/oilshell/oil/_devbuild/gen/runtime_asdl.pyc PrettyTree 100 13 /home/andy/git/oilshell/oil/_devbuild/gen/runtime_asdl.pyc builtin_e 96 14 /home/andy/git/oilshell/oil/osh/builtin.pyc 95 15 /home/andy/git/oilshell/oil/bin/oil.pyc 94 16 /home/andy/git/oilshell/oil/_devbuild/gen/runtime_asdl.pyc _AbbreviatedTree 83 17 /home/andy/git/oilshell/oil/osh/state.pyc 82 18 /home/andy/git/oilshell/oil/core/completion.pyc Matches 69 19 /home/andy/git/oilshell/oil/_devbuild/gen/id_kind_asdl.pyc Kind 66 20 /home/andy/git/oilshell/oil/core/completion.pyc 63 Frames with many ops # A tibble: 20 x 3 path code_name n 1 /home/andy/git/oilshell/oil/_devbuild/gen/syntax_asdl.pyc PrettyTree 11938 2 /home/andy/git/oilshell/oil/_devbuild/gen/syntax_asdl.pyc _AbbreviatedTree 7450 3 /home/andy/git/oilshell/oil/frontend/lex.pyc 2077 4 /home/andy/git/oilshell/oil/_devbuild/gen/syntax_asdl.pyc __init__ 2042 5 /home/andy/git/oilshell/oil/_devbuild/gen/syntax_asdl.pyc 1851 6 /home/andy/git/oilshell/oil/core/completion.pyc Matches 1699 7 /home/andy/git/oilshell/oil/osh/expr_eval.pyc Eval 1597 8 /home/andy/git/oilshell/oil/_devbuild/gen/id_kind_asdl.pyc Id 1564 9 /home/andy/git/oilshell/oil/osh/cmd_exec.pyc _Dispatch 1560 10 /home/andy/git/oilshell/oil/_devbuild/gen/runtime_asdl.pyc PrettyTree 1496 11 /home/andy/git/oilshell/oil/bin/oil.pyc ShellMain 1437 12 /home/andy/git/oilshell/oil/tools/osh2oil.pyc DoCommand 1241 13 /home/andy/git/oilshell/oil/osh/builtin.pyc __call__ 984 14 /home/andy/git/oilshell/oil/_devbuild/gen/runtime_asdl.pyc _AbbreviatedTree 935 15 /home/andy/git/oilshell/oil/osh/builtin_pure.pyc __call__ 890 16 /home/andy/git/oilshell/oil/osh/word_eval.pyc _EvalBracedVarSub 799 17 /home/andy/git/oilshell/oil/_devbuild/gen/id_kind_asdl.pyc 744 18 /home/andy/git/oilshell/oil/_devbuild/gen/syntax_asdl.pyc AbbreviatedTree 676 19 /home/andy/git/oilshell/oil/osh/builtin_assign.pyc __call__ 591 20 /home/andy/git/oilshell/oil/tools/osh2oil.pyc DoWordPart 573 Frames with large stacksize path code_name argcount nlocals stacksize bytecode_bytes 1 /home/andy/git/oilshell/oil/_devbuild/gen/id_kind_asdl.pyc 0 0 313 2218 2 /home/andy/git/oilshell/oil/frontend/lex.pyc 0 0 50 6033 3 /home/andy/git/oilshell/oil/core/id_kind.pyc AddKinds 1 1 46 1313 4 /home/andy/git/oilshell/oil/osh/state.pyc 0 0 18 729 5 /home/andy/git/oilshell/oil/bin/oil.pyc ShellMain 4 72 14 4025 6 /home/andy/git/oilshell/oil/osh/arith_parse.pyc MakeShellSpec 0 1 14 810 7 /home/andy/git/oilshell/oil/osh/cmd_parse.pyc ParseCommand 1 2 13 459 8 /home/andy/git/oilshell/oil/core/completion.pyc Matches 2 36 11 2720 9 /home/andy/git/oilshell/oil/osh/cmd_exec.pyc _Execute 3 9 10 394 10 /home/andy/git/oilshell/oil/osh/word_parse.pyc _ReadWord 2 3 10 558 Frames with many locals path code_name argcount nlocals stacksize bytecode_bytes 1 /home/andy/git/oilshell/oil/bin/oil.pyc ShellMain 4 72 14 4025 2 /home/andy/git/oilshell/oil/osh/cmd_exec.pyc _Dispatch 3 56 8 4394 3 /home/andy/git/oilshell/oil/core/completion.pyc Matches 2 36 11 2720 4 /home/andy/git/oilshell/oil/tools/osh2oil.pyc DoCommand 4 36 6 3357 5 /home/andy/git/oilshell/oil/osh/history.pyc Eval 2 31 6 1199 6 /home/andy/git/oilshell/oil/osh/word_eval.pyc _EvalBracedVarSub 4 31 6 2333 7 /home/andy/git/oilshell/oil/osh/builtin_printf.pyc __call__ 2 29 7 1247 8 /home/andy/git/oilshell/oil/oil_lang/expr_parse.pyc _PushOilTokens 4 27 5 1119 9 /home/andy/git/oilshell/oil/osh/cmd_parse.pyc _MakeAssignPair 3 27 4 856 10 /home/andy/git/oilshell/oil/osh/cmd_parse.pyc _MaybeExpandAliases 2 27 5 732 ===== NAMES Common types # A tibble: 4 x 2 kind n 1 name 21331 2 var 7625 3 cell 5 4 free 5 Common names # A tibble: 20 x 2 name n 1 self 1488 2 None 564 3 spids 538 4 __name__ 511 5 __module__ 478 6 append 472 7 PrettyNode 360 8 __init__ 357 9 AssertionError 352 10 fields 350 11 _AbbreviatedTree 347 12 L 346 13 out_node 346 14 x0 322 15 AbbreviatedTree 298 16 PrettyTree 294 17 children 270 18 x1 265 19 PrettyLeaf 242 20 tag 235 -- Total length of all 28966 names: 218829 -- Total length of 3498 unique names: 34446 ===== CONSTS Types of constants # A tibble: 6 x 2 type n 1 str 5839 2 code 2243 3 NoneType 1847 4 int 1648 5 tuple 797 6 float 3 ===== FLAGS Common flags # A tibble: 7 x 2 flag n 1 CO_NEWLOCALS 2243 2 CO_OPTIMIZED 1765 3 CO_FUTURE_PRINT_FUNCTION 846 4 CO_NESTED 37 5 CO_GENERATOR 36 6 CO_VARARGS 19 7 CO_VARKEYWORDS 5 ===== OPS Ops Used by Frequency # A tibble: 81 x 2 op_name n 1 LOAD_FAST 18168 2 LOAD_ATTR 14533 3 LOAD_CONST 13263 4 CALL_FUNCTION 9525 5 LOAD_GLOBAL 7116 6 STORE_FAST 5351 7 STORE_NAME 5338 8 POP_TOP 4193 9 LOAD_NAME 3425 10 RETURN_VALUE 3029 11 POP_JUMP_IF_FALSE 2718 12 MAKE_FUNCTION 2238 13 COMPARE_OP 2119 14 JUMP_FORWARD 1759 15 BUILD_TUPLE 1727 16 STORE_ATTR 1307 17 JUMP_ABSOLUTE 1169 18 POP_BLOCK 880 19 IMPORT_FROM 862 20 RAISE_VARARGS 704 21 SETUP_LOOP 668 22 FOR_ITER 646 23 GET_ITER 646 24 BUILD_LIST 614 25 POP_JUMP_IF_TRUE 574 26 IMPORT_NAME 571 27 BUILD_CLASS 478 28 LOAD_LOCALS 478 29 BINARY_SUBSCR 448 30 STORE_MAP 330 31 BINARY_ADD 295 32 JUMP_IF_TRUE_OR_POP 292 33 UNPACK_SEQUENCE 246 34 BINARY_MODULO 221 35 DUP_TOP 215 36 END_FINALLY 212 37 SETUP_EXCEPT 170 38 STORE_SUBSCR 132 39 SLICE+1 100 40 INPLACE_ADD 94 41 BREAK_LOOP 92 42 BUILD_MAP 88 43 BINARY_SUBTRACT 63 44 UNARY_NOT 50 45 YIELD_VALUE 48 46 SETUP_FINALLY 36 47 LIST_APPEND 29 48 ROT_TWO 27 49 SLICE+3 27 50 SLICE+2 26 51 BINARY_MULTIPLY 21 52 LOAD_DEREF 18 53 INPLACE_SUBTRACT 13 54 BINARY_OR 11 55 DELETE_SLICE+0 11 56 DELETE_SUBSCR 10 57 BINARY_AND 8 58 BINARY_RSHIFT 8 59 PRINT_ITEM 8 60 PRINT_NEWLINE 8 61 SETUP_WITH 6 62 WITH_CLEANUP 6 63 CALL_FUNCTION_VAR 5 64 DUP_TOPX 5 65 JUMP_IF_FALSE_OR_POP 5 66 LOAD_CLOSURE 5 67 MAKE_CLOSURE 5 68 ROT_THREE 5 69 BINARY_LSHIFT 4 70 STORE_GLOBAL 4 71 CALL_FUNCTION_VAR_KW 3 72 BINARY_DIVIDE 2 73 BINARY_XOR 2 74 BUILD_SLICE 2 75 INPLACE_MULTIPLY 2 76 UNARY_INVERT 2 77 UNARY_NEGATIVE 2 78 BINARY_FLOOR_DIVIDE 1 79 INPLACE_AND 1 80 INPLACE_RSHIFT 1 81 STORE_DEREF 1 -- Total unique opcodes: 81 Unused opcodes: op_name 1 BINARY_POWER 2 BINARY_TRUE_DIVIDE 3 BUILD_SET 4 CALL_FUNCTION_KW 5 CONTINUE_LOOP 6 DELETE_ATTR 7 DELETE_FAST 8 DELETE_GLOBAL 9 DELETE_NAME 10 DELETE_SLICE+1 11 DELETE_SLICE+2 12 DELETE_SLICE+3 13 EXEC_STMT 14 EXTENDED_ARG 15 IMPORT_STAR 16 INPLACE_DIVIDE 17 INPLACE_FLOOR_DIVIDE 18 INPLACE_LSHIFT 19 INPLACE_MODULO 20 INPLACE_OR 21 INPLACE_POWER 22 INPLACE_TRUE_DIVIDE 23 INPLACE_XOR 24 MAP_ADD 25 NOP 26 PRINT_EXPR 27 PRINT_ITEM_TO 28 PRINT_NEWLINE_TO 29 ROT_FOUR 30 SET_ADD 31 SLICE+0 32 STOP_CODE 33 STORE_SLICE+0 34 STORE_SLICE+1 35 STORE_SLICE+2 36 STORE_SLICE+3 37 UNARY_CONVERT 38 UNARY_POSITIVE Memory Operations: # A tibble: 15 x 3 kind op_name n 1 ATTR LOAD_ATTR 14533 2 ATTR STORE_ATTR 1307 3 CLOSURE LOAD_CLOSURE 5 4 CONST LOAD_CONST 13263 5 DEREF LOAD_DEREF 18 6 DEREF STORE_DEREF 1 7 FAST LOAD_FAST 18168 8 FAST STORE_FAST 5351 9 GLOBAL LOAD_GLOBAL 7116 10 GLOBAL STORE_GLOBAL 4 11 LOCALS LOAD_LOCALS 478 12 MAP STORE_MAP 330 13 NAME STORE_NAME 5338 14 NAME LOAD_NAME 3425 15 SUBSCR STORE_SUBSCR 132 Imports: # A tibble: 2 x 2 op_name n 1 IMPORT_FROM 862 2 IMPORT_NAME 571 Large op_arg (jump targets): path code_name op_name op_arg 1 /home/andy/git/oilshell/oil/osh/cmd_exec.pyc _Dispatch JUMP_ABSOLUTE 4384 2 /home/andy/git/oilshell/oil/osh/cmd_exec.pyc _Dispatch JUMP_ABSOLUTE 4384 3 /home/andy/git/oilshell/oil/osh/cmd_exec.pyc _Dispatch JUMP_ABSOLUTE 4384 4 /home/andy/git/oilshell/oil/osh/cmd_exec.pyc _Dispatch JUMP_ABSOLUTE 4384 5 /home/andy/git/oilshell/oil/osh/cmd_exec.pyc _Dispatch JUMP_ABSOLUTE 4384 6 /home/andy/git/oilshell/oil/osh/cmd_exec.pyc _Dispatch JUMP_ABSOLUTE 4384 7 /home/andy/git/oilshell/oil/osh/cmd_exec.pyc _Dispatch JUMP_ABSOLUTE 4384 8 /home/andy/git/oilshell/oil/osh/cmd_exec.pyc _Dispatch POP_JUMP_IF_FALSE 4384 9 /home/andy/git/oilshell/oil/osh/cmd_exec.pyc _Dispatch POP_JUMP_IF_FALSE 4384 10 /home/andy/git/oilshell/oil/osh/cmd_exec.pyc _Dispatch JUMP_ABSOLUTE 4384 ===== UNIQUE OPS Files with few ops: # A tibble: 20 x 2 # Groups: path [20] path n 1 /home/andy/git/oilshell/oil/asdl/__init__.pyc 2 2 /home/andy/git/oilshell/oil/bin/__init__.pyc 2 3 /home/andy/git/oilshell/oil/core/__init__.pyc 2 4 /home/andy/git/oilshell/oil/_devbuild/gen/__init__.pyc 2 5 /home/andy/git/oilshell/oil/_devbuild/__init__.pyc 2 6 /home/andy/git/oilshell/oil/frontend/__init__.pyc 2 7 /home/andy/git/oilshell/oil/oil_lang/__init__.pyc 2 8 /home/andy/git/oilshell/oil/osh/__init__.pyc 2 9 /home/andy/git/oilshell/oil/pylib/__init__.pyc 2 10 /home/andy/git/oilshell/oil/tools/__init__.pyc 2 11 /home/andy/git/oilshell/oil/_devbuild/gen/grammar_nt.pyc 3 12 /home/andy/git/oilshell/oil/pgen2/__init__.pyc 3 13 /home/andy/git/oilshell/oil/_devbuild/gen/osh_help.pyc 5 14 /home/andy/git/oilshell/oil/vendor/typing.pyc 6 15 /home/andy/git/oilshell/oil/asdl/const.pyc 7 16 /home/andy/git/oilshell/oil/Python-2.7.13/Lib/stat.pyc 10 17 /home/andy/git/oilshell/oil/oil_lang/cmd_exec.pyc 11 18 /home/andy/git/oilshell/oil/pylib/cgi.pyc 11 19 /home/andy/git/oilshell/oil/oil_lang/objects.pyc 12 20 /home/andy/git/oilshell/oil/_devbuild/gen/types_asdl.pyc 13 Files with many ops: # A tibble: 10 x 2 # Groups: path [10] path n 1 /home/andy/git/oilshell/oil/osh/cmd_exec.pyc 46 2 /home/andy/git/oilshell/oil/bin/oil.pyc 48 3 /home/andy/git/oilshell/oil/osh/expr_eval.pyc 48 4 /home/andy/git/oilshell/oil/osh/state.pyc 48 5 /home/andy/git/oilshell/oil/osh/string_ops.pyc 49 6 /home/andy/git/oilshell/oil/core/process.pyc 50 7 /home/andy/git/oilshell/oil/osh/word_eval.pyc 50 8 /home/andy/git/oilshell/oil/core/comp_ui.pyc 51 9 /home/andy/git/oilshell/oil/core/completion.pyc 56 10 /home/andy/git/oilshell/oil/osh/builtin.pyc 56 Unique ops for files that just parse: # A tibble: 10 x 2 # Groups: path [10] path n 1 /home/andy/git/oilshell/oil/osh/arith_parse.pyc 19 2 /home/andy/git/oilshell/oil/frontend/lex.pyc 23 3 /home/andy/git/oilshell/oil/osh/bool_parse.pyc 30 4 /home/andy/git/oilshell/oil/frontend/reader.pyc 33 5 /home/andy/git/oilshell/oil/frontend/lexer.pyc 34 6 /home/andy/git/oilshell/oil/pgen2/parse.pyc 34 7 /home/andy/git/oilshell/oil/frontend/parse_lib.pyc 37 8 /home/andy/git/oilshell/oil/osh/word_parse.pyc 38 9 /home/andy/git/oilshell/oil/oil_lang/expr_parse.pyc 42 10 /home/andy/git/oilshell/oil/osh/cmd_parse.pyc 45 -- Unique opcodes for parsing: 54