Skip to content

Instantly share code, notes, and snippets.

@marcoonroad
Created December 12, 2014 01:25
Show Gist options
  • Save marcoonroad/6f45fb016b035a028e47 to your computer and use it in GitHub Desktop.
Save marcoonroad/6f45fb016b035a028e47 to your computer and use it in GitHub Desktop.
MoarVM dump of "say 'hello'";
# $ perl6 --target=mbc --output=./hello.mbc -e "say 'hello'"
# $ moar --dump hello.mbc > hello.dump
MoarVM dump of binary compilation unit:
SC_0 : 61C9069EAD2FEF4AF84D9D502EA124CAC63EB166
Callsite_0 :
num_pos: 0
arg_count: 0
Callsite_1 :
num_pos: 1
arg_count: 1
Arg 1 : positional obj
Callsite_2 :
num_pos: 2
arg_count: 2
Arg 1 : positional obj
Arg 2 : positional str
Callsite_3 :
num_pos: 2
arg_count: 2
Arg 1 : positional obj
Arg 2 : positional obj
Frame_0 :
cuuid : cuid_2_1418346906.3074
name :
Locals :
0: loc_0_obj
1: loc_1_obj
2: loc_2_obj
3: loc_3_obj
Instructions :
00000 getcode loc_3_obj, Frame_1
00001 capturelex loc_3_obj
00002 getcode loc_1_obj, Frame_1
00003 takeclosure loc_1_obj, loc_1_obj
00004 checkarity 0, -1
00005 param_sp loc_0_obj, 0
00006 paramnamesused
annotation: -e:1
00007 decont loc_2_obj, loc_1_obj
00008 prepargs Callsite_0
00009 invoke_o loc_2_obj, loc_2_obj
00010 return_o loc_2_obj
Frame_1 :
cuuid : cuid_1_1418346906.3074
name :
outer : Frame_0
Locals :
0: loc_0_obj
1: loc_1_str
2: loc_2_obj
3: loc_3_int
4: loc_4_int
5: loc_5_obj
6: loc_6_obj
Lexicals :
0: lex_Frame_1_$!_obj
1: lex_Frame_1_$/_obj
2: lex_Frame_1_$__obj
3: lex_Frame_1_GLOBALish_obj
4: lex_Frame_1_EXPORT_obj
5: lex_Frame_1_$?PACKAGE_obj
6: lex_Frame_1_::?PACKAGE_obj
7: lex_Frame_1_$=pod_obj
8: lex_Frame_1_!UNIT_MARKER_obj
Instructions :
00000 checkarity 0, 0
00001 paramnamesused
annotation: -e:1
00002 const_s loc_1_str, '$*CTXSAVE'
00003 getdynlex loc_2_obj, loc_1_str
00004 set loc_0_obj, loc_2_obj
00005 isnull loc_3_int, loc_0_obj
00006 if_i loc_3_int, label_2(00018)
00007 decont loc_2_obj, loc_0_obj
00008 const_s loc_1_str, 'ctxsave'
00009 can_s loc_4_int, loc_2_obj, loc_1_str
00010 unless_i loc_4_int, label_1(00017)
00011 decont loc_5_obj, loc_0_obj
00012 findmeth loc_2_obj, loc_5_obj, 'ctxsave'
00013 prepargs Callsite_1
00014 arg_o 0, loc_0_obj
00015 invoke_o loc_2_obj, loc_2_obj
00016 goto label_1(00017)
label_1:
00017 goto label_2(00018)
annotation: -e:1
label_2:
00018 const_s loc_1_str, '&say'
00019 getlexstatic_o loc_0_obj, loc_1_str
00020 wval loc_5_obj, 0, 10
00021 decont loc_6_obj, loc_0_obj
00022 prepargs Callsite_1
00023 arg_o 0, loc_5_obj
00024 invoke_o loc_5_obj, loc_6_obj
00025 return_o loc_5_obj
Frame_2 :
cuuid : cuid_3_1418346906.3074
name :
Locals :
0: loc_0_str
1: loc_1_str
2: loc_2_str
3: loc_3_obj
4: loc_4_obj
5: loc_5_obj
6: loc_6_obj
7: loc_7_obj
8: loc_8_obj
9: loc_9_obj
10: loc_10_str
11: loc_11_obj
12: loc_12_int
Instructions :
00000 getcode loc_11_obj, Frame_3
00001 takeclosure loc_11_obj, loc_11_obj
00002 checkarity 0, 0
00003 paramnamesused
00004 const_s loc_0_str, 'ModuleLoader.moarvm'
00005 loadbytecode loc_0_str, loc_0_str
00006 const_s loc_1_str, 'nqp'
00007 const_s loc_2_str, 'ModuleLoader'
00008 gethllsym loc_3_obj, loc_1_str, loc_2_str
00009 const_s loc_2_str, 'Perl6::ModuleLoader'
00010 decont loc_5_obj, loc_3_obj
00011 findmeth loc_4_obj, loc_5_obj, 'load_module'
00012 prepargs Callsite_2
00013 arg_o 0, loc_3_obj
00014 arg_s 1, loc_2_str
00015 invoke_o loc_3_obj, loc_4_obj
00016 getcode loc_4_obj, Frame_0
00017 const_s loc_2_str, 'ModuleLoader'
00018 getcurhllsym loc_5_obj, loc_2_str
00019 const_s loc_2_str, 'CORE'
00020 decont loc_7_obj, loc_5_obj
00021 findmeth loc_6_obj, loc_7_obj, 'load_setting'
00022 prepargs Callsite_2
00023 arg_o 0, loc_5_obj
00024 arg_s 1, loc_2_str
00025 invoke_o loc_5_obj, loc_6_obj
00026 forceouterctx loc_4_obj, loc_5_obj
00027 const_s loc_2_str, '61C9069EAD2FEF4AF84D9D502EA124CAC63EB166'
00028 createsc loc_5_obj, loc_2_str
00029 set loc_8_obj, loc_5_obj
00030 const_s loc_2_str, '-e'
00031 scsetdesc loc_8_obj, loc_2_str
00032 hlllist loc_5_obj
00033 create loc_5_obj, loc_5_obj
00034 set loc_9_obj, loc_5_obj
00035 null_s loc_1_str
00036 bootstrarray loc_5_obj
00037 create loc_5_obj, loc_5_obj
00038 null_s loc_10_str
00039 push_s loc_5_obj, loc_10_str
00040 const_s loc_10_str, 'Uninstantiable'
00041 push_s loc_5_obj, loc_10_str
00042 const_s loc_10_str, 'perl6'
00043 push_s loc_5_obj, loc_10_str
00044 const_s loc_10_str, 'FAA0B0328F495793F372F3451CA0F89F53D038A6-1411014046.10466'
00045 push_s loc_5_obj, loc_10_str
00046 const_s loc_10_str, 'src/gen/m-BOOTSTRAP.nqp'
00047 push_s loc_5_obj, loc_10_str
00048 const_s loc_10_str, '65D151939484919B9F638377879E3A5E02B92798-1411014038.5429'
00049 push_s loc_5_obj, loc_10_str
00050 const_s loc_10_str, 'src/gen/m-Metamodel.nqp'
00051 push_s loc_5_obj, loc_10_str
00052 const_s loc_10_str, '$_'
00053 push_s loc_5_obj, loc_10_str
00054 const_s loc_10_str, '$/'
00055 push_s loc_5_obj, loc_10_str
00056 const_s loc_10_str, '$!'
00057 push_s loc_5_obj, loc_10_str
00058 const_s loc_10_str, '3E199AC4796908450CED86398DBF556B71B0EF93-1411013870.63217'
00059 push_s loc_5_obj, loc_10_str
00060 const_s loc_10_str, 'gen/moar/stage2/NQPCORE.setting'
00061 push_s loc_5_obj, loc_10_str
00062 const_s loc_10_str, '504A22EF22422037FA72BFA87F44E05B22A22274-1411014013.52386'
00063 push_s loc_5_obj, loc_10_str
00064 const_s loc_10_str, 'src/Perl6/Grammar.nqp'
00065 push_s loc_5_obj, loc_10_str
00066 const_s loc_10_str, 'hello'
00067 push_s loc_5_obj, loc_10_str
00068 const_s loc_10_str, 'GLOBAL'
00069 push_s loc_5_obj, loc_10_str
00070 const_s loc_10_str, 'EXPORT'
00071 push_s loc_5_obj, loc_10_str
00072 const_s loc_10_str, '!UNIT_MARKER'
00073 push_s loc_5_obj, loc_10_str
00074 prepargs Callsite_0
00075 invoke_o loc_6_obj, loc_11_obj
00076 deserialize loc_1_str, loc_8_obj, loc_5_obj, loc_6_obj, loc_9_obj
00077 elems loc_12_int, loc_9_obj
00078 unless_i loc_12_int, label_1(00088)
00079 const_s loc_10_str, 'ModuleLoader'
00080 getcurhllsym loc_6_obj, loc_10_str
00081 decont loc_7_obj, loc_6_obj
00082 findmeth loc_5_obj, loc_7_obj, 'resolve_repossession_conflicts'
00083 prepargs Callsite_3
00084 arg_o 0, loc_6_obj
00085 arg_o 1, loc_9_obj
00086 invoke_o loc_6_obj, loc_5_obj
00087 goto label_1(00088)
label_1:
00088 const_s loc_10_str, 'GLOBAL'
00089 wval loc_5_obj, 0, 0
00090 bindcurhllsym loc_5_obj, loc_10_str, loc_5_obj
00091 return_o loc_5_obj
Frame_3 :
cuuid : cuid_4_1418346906.3074
name :
outer : Frame_2
Locals :
0: loc_0_obj
1: loc_1_obj
Instructions :
00000 checkarity 0, 0
00001 paramnamesused
00002 bootarray loc_0_obj
00003 create loc_0_obj, loc_0_obj
00004 getcode loc_1_obj, Frame_1
00005 push_o loc_0_obj, loc_1_obj
00006 return_o loc_0_obj
Frame_4 :
cuuid : cuid_5_1418346906.3074
name :
Locals :
0: loc_0_obj
1: loc_1_obj
Instructions :
00000 checkarity 0, 0
00001 paramnamesused
00002 getcode loc_0_obj, Frame_0
00003 decont loc_1_obj, loc_0_obj
00004 prepargs Callsite_0
00005 invoke_o loc_1_obj, loc_1_obj
00006 return_o loc_1_obj
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment