view paper/codes/add.moarvmasm @ 86:3bab40636107

update
author anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
date Mon, 18 Feb 2019 23:47:20 +0900
parents
children 9aff6e24950e
line wrap: on
line source


MoarVM dump of binary compilation unit:

  SC_0 : 853A0174C908BE23450CBE426C36E2A42F69DD24-0
  Callsite_0 :
    num_pos: 1
    arg_count: 1
    Arg 1 : positional obj
  Callsite_1 :
    num_pos: 1
    arg_count: 1
    Arg 1 : positional int
  Callsite_2 :
    num_pos: 2
    arg_count: 2
    Arg 1 : positional obj
    Arg 2 : positional str
  Callsite_3 :
    num_pos: 0
    arg_count: 0
  Callsite_4 :
    num_pos: 1
    arg_count: 1
    Arg 1 : flat obj flat
  Frame_0 :
    cuuid : 1
    name : <mainline>
    Locals :
       0: loc_0_obj
       1: loc_1_obj
       2: loc_2_obj
       3: loc_3_str
       4: loc_4_obj
       5: loc_5_int
       6: loc_6_int
       7: loc_7_obj
       8: loc_8_obj
    Lexicals :
       0: lex_Frame_0__obj
       1: lex_Frame_0__obj
       2: lex_Frame_0__obj
       3: lex_Frame_0__obj
    Instructions :
00000      getcode            loc_1_obj, Frame_1
00001      takeclosure        loc_1_obj, loc_1_obj
00002      checkarity         0, -1
00003      param_sp           loc_0_obj, 0
00004      paramnamesused     
00005      bindlex            lex_Frame_0__obj, loc_1_obj
00006      const_s            loc_3_str, '$*CTXSAVE'
00007      getdynlex          loc_4_obj, loc_3_str
00008      set                loc_2_obj, loc_4_obj
00009      isnull             loc_5_int, loc_2_obj
00010      if_i               loc_5_int, label_1(00020)
00011      decont             loc_4_obj, loc_2_obj
00012      const_s            loc_3_str, 'ctxsave'
00013      can_s              loc_6_int, loc_4_obj, loc_3_str
00014      unless_i           loc_6_int, label_1(00020)
00015      decont             loc_7_obj, loc_2_obj
00016      findmeth           loc_4_obj, loc_7_obj, 'ctxsave'
00017      prepargs           Callsite_0
00018      arg_o              0, loc_2_obj
00019      invoke_o           loc_4_obj, loc_4_obj
     annotation: add.nqp:10
     label_1:
00020      getlex_no          loc_7_obj, '&say'
00021      decont             loc_7_obj, loc_7_obj
00022      const_s            loc_3_str, '&add_test'
00023      getlexstatic_o     loc_8_obj, loc_3_str
00024      decont             loc_8_obj, loc_8_obj
00025      const_i64_16       loc_5_int, 10
00026      prepargs           Callsite_1
00027      arg_i              0, loc_5_int
00028      invoke_o           loc_8_obj, loc_8_obj
00029      prepargs           Callsite_0
00030      arg_o              0, loc_8_obj
00031      invoke_v           loc_7_obj
00032      null               loc_8_obj
00033      return_o           loc_8_obj
  Frame_1 :
    cuuid : 2
    name : add_test
    outer : Frame_0
    Locals :
       0: loc_0_int
       1: loc_1_int
       2: loc_2_int
       3: loc_3_int
       4: loc_4_obj
       5: loc_5_obj
    Instructions :
00000      checkarity         1, 1
00001      param_rp_i         loc_0_int, 0
00002      paramnamesused     
     annotation: add.nqp:2
00003      const_i64_16       loc_2_int, 0
00004      set                loc_1_int, loc_2_int
     annotation: add.nqp:3
     label_1:
00005      const_i64_16       loc_2_int, 1
00006      gt_i               loc_2_int, loc_0_int, loc_2_int
00007      unless_i           loc_2_int, label_2(00015)
00008      osrpoint           
     annotation: add.nqp:4
00009      add_i              loc_3_int, loc_1_int, loc_0_int
00010      set                loc_1_int, loc_3_int
     annotation: add.nqp:5
00011      const_i64_16       loc_3_int, 1
00012      sub_i              loc_3_int, loc_0_int, loc_3_int
00013      set                loc_0_int, loc_3_int
00014      goto               label_1(00005)
     label_2:
00015      hllboxtype_i       loc_4_obj
00016      box_i              loc_4_obj, loc_1_int, loc_4_obj
00017      throwpayloadlex    loc_4_obj, 32, loc_4_obj
00018      goto               label_3(00021)
00019      lastexpayload      loc_5_obj
00020      set                loc_4_obj, loc_5_obj
     label_3:
00021      return_o           loc_4_obj
  Frame_2 :
    cuuid : 3
    name : <dependencies+deserialize>
    Locals :
       0: loc_0_obj
       1: loc_1_str
       2: loc_2_obj
       3: loc_3_obj
       4: loc_4_obj
       5: loc_5_obj
       6: loc_6_obj
       7: loc_7_obj
       8: loc_8_str
       9: loc_9_obj
      10: loc_10_int
      11: loc_11_str
      12: loc_12_obj
    Instructions :
00000      getcode            loc_9_obj, Frame_3
00001      takeclosure        loc_9_obj, loc_9_obj
00002      checkarity         0, 0
00003      paramnamesused     
00004      const_s            loc_1_str, 'ModuleLoader'
00005      getcurhllsym       loc_2_obj, loc_1_str
00006      set                loc_0_obj, loc_2_obj
00007      ifnonnull          loc_2_obj, label_1(00013)
00008      const_s            loc_1_str, 'ModuleLoader.moarvm'
00009      loadbytecode       loc_1_str, loc_1_str
00010      hllboxtype_s       loc_3_obj
00011      box_s              loc_3_obj, loc_1_str, loc_3_obj
00012      set                loc_0_obj, loc_3_obj
     label_1:
00013      getcode            loc_3_obj, Frame_0
00014      const_s            loc_1_str, 'ModuleLoader'
00015      getcurhllsym       loc_2_obj, loc_1_str
00016      const_s            loc_1_str, 'NQPCORE'
00017      decont             loc_5_obj, loc_2_obj
00018      findmeth           loc_4_obj, loc_5_obj, 'load_setting'
00019      prepargs           Callsite_2
00020      arg_o              0, loc_2_obj
00021      arg_s              1, loc_1_str
00022      invoke_o           loc_2_obj, loc_4_obj
00023      forceouterctx      loc_3_obj, loc_2_obj
00024      const_s            loc_1_str, 'ModuleLoader'
00025      getcurhllsym       loc_2_obj, loc_1_str
00026      const_s            loc_1_str, 'NQPP6QRegex'
00027      decont             loc_5_obj, loc_2_obj
00028      findmeth           loc_4_obj, loc_5_obj, 'load_module'
00029      prepargs           Callsite_2
00030      arg_o              0, loc_2_obj
00031      arg_s              1, loc_1_str
00032      invoke_o           loc_2_obj, loc_4_obj
00033      const_s            loc_1_str, '853A0174C908BE23450CBE426C36E2A42F69DD24-0'
00034      createsc           loc_4_obj, loc_1_str
00035      set                loc_6_obj, loc_4_obj
00036      const_s            loc_1_str, 'add.nqp'
00037      scsetdesc          loc_6_obj, loc_1_str
00038      hlllist            loc_4_obj
00039      create             loc_4_obj, loc_4_obj
00040      set                loc_7_obj, loc_4_obj
00041      null_s             loc_8_str
00042      null               loc_4_obj
00043      prepargs           Callsite_3
00044      invoke_o           loc_5_obj, loc_9_obj
00045      deserialize        loc_8_str, loc_6_obj, loc_4_obj, loc_5_obj, loc_7_obj
00046      elems              loc_10_int, loc_7_obj
00047      unless_i           loc_10_int, label_2(00050)
00048      const_s            loc_11_str, 'Repossession conflicts occurred during deserialization'
00049      die                loc_5_obj, loc_11_str
     label_2:
00050      null               loc_4_obj
00051      return_o           loc_4_obj
  Frame_3 :
    cuuid : 4
    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      return_o           loc_0_obj
  Frame_4 :
    cuuid : 5
    name : <load>
    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_0_obj, loc_0_obj
00004      prepargs           Callsite_3
00005      invoke_o           loc_0_obj, loc_0_obj
00006      return_o           loc_0_obj
  Frame_5 :
    cuuid : 6
    name : <entry>
    Locals :
       0: loc_0_obj
       1: loc_1_obj
       2: loc_2_obj
    Instructions :
00000      getcode            loc_0_obj, Frame_6
00001      takeclosure        loc_0_obj, loc_0_obj
00002      checkarity         0, 0
00003      paramnamesused     
00004      decont             loc_1_obj, loc_0_obj
00005      clargs             loc_2_obj
00006      prepargs           Callsite_0
00007      arg_o              0, loc_2_obj
00008      invoke_o           loc_2_obj, loc_1_obj
00009      return_o           loc_2_obj
  Frame_6 :
    cuuid : 7
    name : <main>
    outer : Frame_5
    Locals :
       0: loc_0_obj
       1: loc_1_obj
       2: loc_2_obj
    Instructions :
00000      checkarity         0, -1
00001      param_sp           loc_1_obj, 0
00002      paramnamesused     
00003      getcode            loc_0_obj, Frame_0
00004      decont             loc_0_obj, loc_0_obj
00005      prepargs           Callsite_4
00006      arg_o              0, loc_1_obj
00007      invoke_o           loc_0_obj, loc_0_obj
00008      return_o           loc_0_obj