view paper/codes/add.moarvmasm @ 122:a3ff00c33fd7 default tip

update slide
author anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
date Wed, 20 Feb 2019 12:05:38 +0900
parents 9aff6e24950e
children
line wrap: on
line source


MoarVM dump of binary compilation unit:

  SC_0 : D180E910D13D0F8063BBC8EA3DDF32D9509BE85A-0
  Callsite_0 :
    num_pos: 1
    arg_count: 1
    Arg 1 : positional obj
  Callsite_1 :
    num_pos: 2
    arg_count: 2
    Arg 1 : positional obj
    Arg 2 : positional obj
  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_obj
       4: loc_4_obj
       5: loc_5_str
       6: loc_6_obj
       7: loc_7_int
       8: loc_8_int
       9: loc_9_obj
      10: loc_10_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_5_str, '$*CTXSAVE'
00007      getdynlex          loc_6_obj, loc_5_str
00008      set                loc_4_obj, loc_6_obj
00009      isnull             loc_7_int, loc_4_obj
00010      if_i               loc_7_int, label_1(00020)
00011      decont             loc_6_obj, loc_4_obj
00012      const_s            loc_5_str, 'ctxsave'
00013      can_s              loc_8_int, loc_6_obj, loc_5_str
00014      unless_i           loc_8_int, label_1(00020)
00015      decont             loc_9_obj, loc_4_obj
00016      findmeth           loc_6_obj, loc_9_obj, 'ctxsave'
00017      prepargs           Callsite_0
00018      arg_o              0, loc_4_obj
00019      invoke_o           loc_6_obj, loc_6_obj
     annotation: add.nqp:7
     label_1:
00020      const_i64_16       loc_7_int, 1
00021      hllboxtype_i       loc_9_obj
00022      box_i              loc_9_obj, loc_7_int, loc_9_obj
00023      set                loc_2_obj, loc_9_obj
     annotation: add.nqp:8
00024      const_i64_16       loc_7_int, 8
00025      hllboxtype_i       loc_9_obj
00026      box_i              loc_9_obj, loc_7_int, loc_9_obj
00027      set                loc_3_obj, loc_9_obj
     annotation: add.nqp:10
00028      getlex_no          loc_9_obj, '&say'
00029      decont             loc_9_obj, loc_9_obj
00030      const_s            loc_5_str, '&test_func'
00031      getlexstatic_o     loc_10_obj, loc_5_str
00032      decont             loc_10_obj, loc_10_obj
00033      prepargs           Callsite_1
00034      arg_o              0, loc_2_obj
00035      arg_o              1, loc_3_obj
00036      invoke_o           loc_10_obj, loc_10_obj
00037      prepargs           Callsite_0
00038      arg_o              0, loc_10_obj
00039      invoke_v           loc_9_obj
00040      null               loc_10_obj
00041      return_o           loc_10_obj
  Frame_1 :
    cuuid : 2
    name : test_func
    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         2, 2
00001      param_rp_i         loc_0_int, 0
00002      param_rp_i         loc_1_int, 1
00003      paramnamesused     
     annotation: add.nqp:2
00004      add_i              loc_3_int, loc_0_int, loc_1_int
00005      set                loc_2_int, loc_3_int
     annotation: add.nqp:3
00006      const_i64_16       loc_3_int, 1
00007      add_i              loc_3_int, loc_2_int, loc_3_int
00008      set                loc_2_int, loc_3_int
00009      hllboxtype_i       loc_4_obj
00010      box_i              loc_4_obj, loc_2_int, loc_4_obj
00011      throwpayloadlex    loc_4_obj, 32, loc_4_obj
00012      goto               label_1(00015)
00013      lastexpayload      loc_5_obj
00014      set                loc_4_obj, loc_5_obj
     label_1:
00015      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, 'D180E910D13D0F8063BBC8EA3DDF32D9509BE85A-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