RFR: 8361102: java.lang.classfile.CodeBuilder.branch(Opcode op, Label target) doesn't throw IllegalArgumentException - if op is not of Opcode.Kind.BRANCH

Chen Liang liach at openjdk.org
Fri Jul 11 14:27:39 UTC 2025


On Fri, 11 Jul 2025 14:03:44 GMT, Adam Sotona <asotona at openjdk.org> wrote:

>> Currently, DirectCodeBuilder is erroneously missing argument checks for a few of its override methods that take arguments such as Opcode and the array size for multianewarray and the switches, which would write something before throwing an exception. We correct these problems and verify with some tests.
>> 
>> Note: Other Label-writing methods resolve their label eagerly so they are not (yet) problematic.
>
> src/java.base/share/classes/jdk/internal/classfile/impl/DirectCodeBuilder.java line 628:
> 
>> 626:             @Override
>> 627:             public int compare(SwitchCase c1, SwitchCase c2) {
>> 628:                 return Integer.compare(c1.caseValue(), c2.caseValue());
> 
> isn this an implicit null check?

Yes, but this doesn't run when the list has just one element of `null` - see case https://github.com/openjdk/jdk/pull/26229/files#diff-cb987200ae23ff7522bd692d4707a012b115bf778a1265ba11db0b3bf5c9aa7cR98

-------------

PR Review Comment: https://git.openjdk.org/jdk/pull/26229#discussion_r2200872686


More information about the core-libs-dev mailing list