<!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>