#1438: pbc_dump: Indicate sub/method boundaries in -d mode
-----------------------------+----------------------------------------------
Reporter: Austin_Hastings | Owner:
Type: todo | Status: new
Priority: normal | Milestone:
Component: none | Version: 2.0.0
Severity: medium | Keywords:
Lang: | Patch:
Platform: |
-----------------------------+----------------------------------------------
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.
--
Ticket URL: <https://trac.parrot.org/parrot/ticket/1438>
Parrot <https://trac.parrot.org/parrot/>
Parrot Development
_______________________________________________
parrot-tickets mailing list
[email protected]
http://lists.parrot.org/mailman/listinfo/parrot-tickets