<!DOCTYPE html><html><head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  </head>
  <body>
    <font size="4" face="monospace">Thanks for the bug reports.  <br>
      <br>
      Can you explain a little more about what you would do differently
      if the opcodes reflected the distinction between unary/binary
      operators, and similarly unary/binary branch?  <br>
    </font><br>
    <div class="moz-cite-prefix">On 3/16/2024 4:49 AM,
      <a class="moz-txt-link-abbreviated" href="mailto:david32768@btinternet.com">david32768@btinternet.com</a> <a class="moz-txt-link-abbreviated" href="mailto:david32768@btinternet.com">david32768@btinternet.com</a> wrote:<br>
    </div>
    <blockquote type="cite" cite="mid:2cbf549f.1d56.18e46739c9f.Webtop.95@btinternet.com">
      
      <div class="auto-created-dir-div" dir="auto" style="unicode-bidi: embed;">
        <style>p{margin:0}</style>
        <p>I have written a stack checker transform from scratch. The
          following are my observations for this task,</p>
        <p><br>
        </p>
        <p># BranchInstruction</p>
        <p><br>
        </p>
        <p>It would help if BranchInstruction could be divided into
          BinaryBranchInstruction and UnaryBranchInstruction.</p>
        <p><br>
        </p>
        <p>Opcodes GOTO and GOTO_W could go in Unary as TypeKind.Void
          has to dealt with for method return.</p>
        <p><br>
        </p>
        <p>There is a bug in java.lang.classfile.Opcode: the TypeKind
          for IFNONNULL should be ReferenceType.</p>
        <p><br>
        </p>
        <p>#OperatorInstruction</p>
        <p><br>
        </p>
        <p>It would help if OperationInstruction could be divided into
          Binary(IADD etc,), Unary(INEG etc.), Shift(LSHR etc,),
          Compare(LCMP etc) and ARRAYLENGTH.</p>
        <p><br>
        </p>
        <p>There is a bug in
          jdk.internal.classfile.impl.CodeStackTrackerImpl: Compare(LCMP
          etc.) return IntType not LongType etc. as returned by
          typeKind()</p>
        <p><br>
        </p>
        <p>Regards</p>
        <p>David</p>
        <p><br>
        </p>
        <p><br>
        </p>
        <p><br>
        </p>
      </div>
    </blockquote>
    <br>
  </body>
</html>