Ticket #1438 (new todo)
pbc_dump: Indicate sub/method boundaries in -d mode
Reported by: | Austin_Hastings | Owned by: | |
---|---|---|---|
Priority: | normal | Milestone: | |
Component: | tools | Version: | 2.0.0 |
Severity: | medium | Keywords: | |
Cc: | Language: | ||
Patch status: | Platform: |
Description
The disassembled output of pbc_dump run with -d is a long string of hex numbers and opcodes. To determine where a sub starts or ends requires a trip to the constants table, where the Sub constants have their starting and ending offsets recorded. Please modify pbc_dump so that when dumping it emits indicators for the beginning/end of subs:
0000: 000004c8 00000001 00000009 00000001 get_hll_global_p_pc_sc 0004: 00000021 00000001 capture_lex_p 0006: 000004c8 00000001 00000009 00000001 get_hll_global_p_pc_sc 000a: 00000021 00000001 capture_lex_p 000c: 00000023 00000006 set_args_pc 000e: 00000024 00000003 get_results_pc 0011: 0000001c 00000001 invokecc_p 0013: 00000026 00000003 set_returns_pc 0016: 00000020 returncc 0017: 00000384 00000003 0000000b set_p_pc 001a: 00000385 00000002 00000003 set_p_p 001d: 00000009 00000011 load_bytecode_sc 001f: 000001d1 0000001b say_sc 0021: 000004c4 00000000 00000014 get_hll_global_p_sc 0024: 00000023 00000018 set_args_pc 0028: 00000024 00000006 get_results_pc 002a: 000002c4 00000000 0000001a callmethodcc_p_sc 002d: 000004ce 00000001 0000001d 00000014 get_root_global_p_pc_sc 0031: 00000023 00000015 set_args_pc 0037: 00000024 00000006 get_results_pc 0039: 000002c4 00000001 0000000f callmethodcc_p_sc 003c: 00000026 00000006 set_returns_pc 003e: 00000020 returncc 003f: 000004c8 00000002 00000025 00000023 get_hll_global_p_pc_sc 0043: 00000021 00000002 capture_lex_p 0045: 00000384 00000000 00000039 set_p_pc 0048: 00000021 00000000 capture_lex_p 004a: 000004c8 00000002 00000025 00000023 get_hll_global_p_pc_sc 004e: 00000021 00000002 capture_lex_p 0050: 00000023 00000006 set_args_pc 0052: 00000024 00000003 get_results_pc 0055: 0000001c 00000002 invokecc_p 0057: 00000026 00000003 set_returns_pc 005a: 00000020 returncc
could become:
----: Begin sub '_block11' :subid('') 0000: 000004c8 00000001 00000009 00000001 get_hll_global_p_pc_sc 0004: 00000021 00000001 capture_lex_p 0006: 000004c8 00000001 00000009 00000001 get_hll_global_p_pc_sc 000a: 00000021 00000001 capture_lex_p 000c: 00000023 00000006 set_args_pc 000e: 00000024 00000003 get_results_pc 0011: 0000001c 00000001 invokecc_p 0013: 00000026 00000003 set_returns_pc 0016: 00000020 returncc ----: End sub '_block11' :subid('') ----: Begin sub '' :subid('post15') 0017: 00000384 00000003 0000000b set_p_pc 001a: 00000385 00000002 00000003 set_p_p 001d: 00000009 00000011 load_bytecode_sc 001f: 000001d1 0000001b say_sc 0021: 000004c4 00000000 00000014 get_hll_global_p_sc 0024: 00000023 00000018 set_args_pc 0028: 00000024 00000006 get_results_pc 002a: 000002c4 00000000 0000001a callmethodcc_p_sc 002d: 000004ce 00000001 0000001d 00000014 get_root_global_p_pc_sc 0031: 00000023 00000015 set_args_pc 0037: 00000024 00000006 get_results_pc 0039: 000002c4 00000001 0000000f callmethodcc_p_sc 003c: 00000026 00000006 set_returns_pc 003e: 00000020 returncc ----: End sub '' :subid('post15') ----: Begin sub '_block13' :subid('') 003f: 000004c8 00000002 00000025 00000023 get_hll_global_p_pc_sc 0043: 00000021 00000002 capture_lex_p 0045: 00000384 00000000 00000039 set_p_pc 0048: 00000021 00000000 capture_lex_p 004a: 000004c8 00000002 00000025 00000023 get_hll_global_p_pc_sc 004e: 00000021 00000002 capture_lex_p 0050: 00000023 00000006 set_args_pc 0052: 00000024 00000003 get_results_pc 0055: 0000001c 00000002 invokecc_p 0057: 00000026 00000003 set_returns_pc 005a: 00000020 returncc ----: End sub '_block13' :subid('')
Note that a hypothetical future optimizer might arrange the bytecode so that subs are not discrete. Marking beginnings and endings separately should handle this.
Change History
Note: See
TracTickets for help on using
tickets.