RFR: 8341415: Optimize RawBytecodeHelper::next

Shaojin Wen swen at openjdk.org
Wed Oct 2 13:49:11 UTC 2024


On Wed, 2 Oct 2024 11:09:52 GMT, ExE Boss <duke at openjdk.org> wrote:

>> A small optimization to the RawBytecodeHelper::next method
>> * Remove `len <= 0` once
>> * merge store opcode and isWide
>
> src/java.base/share/classes/jdk/internal/classfile/impl/RawBytecodeHelper.java line 350:
> 
>> 348:      */
>> 349:     public boolean isWide() {
>> 350:         return (opcode & (WIDE << 8)) != 0;
> 
> Suggestion:
> 
>         return (opcode >>> 8) == WIDE;

WIDE is a constant, WIDE << 8 will do constant folding, your suggestion will be longer in bytecode.

> src/java.base/share/classes/jdk/internal/classfile/impl/RawBytecodeHelper.java line 449:
> 
>> 447:         }
>> 448: 
>> 449:         if ((nextBci += len) > end) {
> 
> This change makes it that `nextBci` will no longer monotonically increase in case of a malformed special instruction.
> 
> Suggestion:
> 
>         if (len <= 0 || (nextBci += len) > end) {

The checkSpecialInstruction has already added the 'len <= 0' process, so there is no need to check 'len <= '0' again.

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

PR Review Comment: https://git.openjdk.org/jdk/pull/21300#discussion_r1784531869
PR Review Comment: https://git.openjdk.org/jdk/pull/21300#discussion_r1784533279


More information about the core-libs-dev mailing list