<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

<html>

<head>
<title>filled-new-array</title>
<link rel=stylesheet href="opcode.css">
</head>

<body>

<h1>filled-new-array</h1>

<h2>Purpose</h2>

<p>
Construct an array of the given type and size, filling it with the supplied
contents. The type must be an array type. The array's contents must be
single-word (that is, no arrays of long or double). The constructed instance is
stored as a "result" in the same way that the method invocation instructions
store their results, so the constructed instance must be moved to a register
with a subsequent move-result-object instruction (if it is to be used).
</p>

<h2>Details</h2>

<table class="instruc">
<thead>
<tr>
  <th>Op &amp; Format</th>
  <th>Mnemonic / Syntax</th>
  <th>Arguments</th>
</tr>
</thead>
<tbody>
<tr>
  <td>24 35c</td>
  <td>filled-new-array {vD, vE, vF, vG, vA}, type@CCCC</td>
  <td><code>B:</code> array size and argument word count (4 bits)<br/>
    <code>C:</code> type index (16 bits)<br/>
    <code>D..G, A:</code> argument registers (4 bits each)</td>
</tr>
</tbody>
</table>

<h2>Constraints</h2>

<ul>
  <li>
    The value B must not be greater than 5.
  </li>
  <li>
    If B > 0, then D must be a valid register index in the current stack frame.
  </li>
  <li>
    If B > 1, then E must be a valid register index in the current stack frame.
  </li>
  <li>
    If B > 2, then F must be a valid register index in the current stack frame.
  </li>
  <li>
    If B > 3, then G must be a valid register index in the current stack frame.
  </li>
  <li>
    If B > 4, then A must be a valid register index in the current stack frame.
  </li>
  <li>
    C must be a valid index into the type pool.
  </li>
  <li>
    The type denoted by C must be a valid array type descriptor.
  </li>
  <li>
    The element size of the type denoted by C must be no larger than 32 bits.
  </li>
  <li>
    If the element type is a primitive type, then all actual arguments
    (vD .. vA, depending on B) must be primitive, too.
  </li>
  <li>
    If the element type is a reference type, then all actual arguments
    (vD .. vA, depending on B) must be references, too.
  </li>
</ul>

<h2>Behavior</h2>

<ul>
  <li>
    An attempt is made to get a reference to the type T the name of which is
    contained in type pool entry C.
  </li>
  <li>
    If T is a reference type and it has not been loaded and resolved before, it
    is being loaded and resolved. All exceptions that are possible during class
    loading can occur at this point.
  </li>
  <li>
    An attempt is made to create a new array R of type T and length B. All
    exceptions that are possible during instantiation can occur at this point.
  </li>
  <li>
    The elements of R are filled according to the following rules:
    <ul>
      <li>
        If B > 0 then R[0] = vD
      </li>
      <li>
        If B > 1 then R[1] = vE
      </li>
      <li>
        If B > 2 then R[2] = vF
      </li>
      <li>
        If B > 3 then R[3] = vG
      </li>
      <li>
        If B > 4 then R[4] = vA
      </li>
    </ul>
  </li>
  <li>
    No reference to R is stored in any register. Instead, R can be accessed by a
    move-result-object instruction immediately following this filled-new-array
    instruction.
  </li>
</ul>

<h2>Exceptions</h2>

<ul>
  <li>
    NegativeArraySizeException if vB < 0
  </li>
  <li>
    All exceptions that are possible during class loading can occur.
  </li>
  <li>
    All exceptions that are possible during instantiation can occur.
  </li>
</ul>

</body>
</html>
