Home | History | Annotate | Download | only in opcodes
      1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
      2 
      3 <html>
      4 
      5 <head>
      6 <title>move-result-object</title>
      7 <link rel=stylesheet href="opcode.css">
      8 </head>
      9 
     10 <body>
     11 
     12 <h1>move-result-object</h1>
     13 
     14 <h2>Purpose</h2>
     15 
     16 <p>
     17 Move the object result of the most recent invoke-kind into the indicated
     18 register. This must be done as the instruction immediately after an invoke-kind
     19 or filled-new-array whose (object) result is not to be ignored; anywhere else
     20 is invalid.
     21 </p>
     22 
     23 <h2>Details</h2>
     24 
     25 <table class="instruc">
     26 <thead>
     27 <tr>
     28   <th>Op &amp; Format</th>
     29   <th>Mnemonic / Syntax</th>
     30   <th>Arguments</th>
     31 </tr>
     32 </thead>
     33 <tbody>
     34 <tr>
     35   <td>0c 11x</td>
     36   <td>move-result-object vAA</td>
     37   <td><code>A:</code> destination register (8 bits)</td>
     38 </tr>
     39 </tbody>
     40 </table>
     41 
     42 <h2>Constraints</h2>
     43 
     44 <ul>
     45   <li>
     46     A must be a valid register index in the current stack frame.
     47   </li>
     48   <li>
     49     The instruction must be immediately preceded (in the code array) by an
     50     invoke-kind, filled-new-array, or filled-new-array/range instruction.
     51   </li>
     52   <li>
     53     The instruction must be immediately reached (in the actual control flow)
     54     through returning from this invoke-kind instruction or by passing a
     55     filled-new-array or filled-new-array/range instruction (it must not be
     56     jumped to).
     57   </li>
     58   <li>
     59     The result delivered by the invoke-kind instruction must be a reference
     60     value (which excludes the case of a long and double values).
     61   </li>
     62 </ul>
     63 
     64 <h2>Behavior</h2>
     65 
     66 <ul>
     67   <li>
     68     The result delivered by the invoke-kind instruction is moved to register
     69     vA, that, is vA' = result.
     70   </li>
     71   <li>
     72     If register v(A-1) is the lower half of a register pair, register v(A-1)'
     73     becomes undefined.
     74   </li>
     75   <li>
     76     If register v(A+1) is the upper half of a register pair, register v(A+1)'
     77     becomes undefined.
     78   </li>
     79 </ul>
     80  
     81 <h2>Exceptions</h2>
     82 
     83 <p>
     84 None.
     85 </p>
     86 
     87 <h2>Notes</h2>
     88 
     89 <p>
     90 This instruction can also be thought of as reading the contents of a special
     91 "result" register that is made valid and defined by executing a non-void return
     92 instruction or a filled-new-array instruction. The execution of any other
     93 instruction (including this one) renders this special register invalid. 
     94 </p>
     95 
     96 </body>
     97 </html>
     98