RFR: 8218675: Reduce verification overhead in ClassFileParser

Harold Seigel harold.seigel at oracle.com
Mon Feb 11 16:53:40 UTC 2019


Hi Claes,

Your changes look good.

Thanks, Harold

On 2/8/2019 11:07 AM, Claes Redestad wrote:
> Hi,
>
> the code to verify method and field signatures in ClassFileParser has a
> number of inefficiencies:
>
> - Symbol names are routinely copied into stack- or heap-allocated
> buffers.
>
> - In verify_unqualified_name we unnecessarily test to detect non-ASCII
> characters: each byte in multi-byte characters will be over > 127, so
> it's faster to keep the loop simple. Rewriting as a switch improves it
> further (this code is exercised by some internal calls independent of
> -Xverify mode)
>
> - skip_over_field_name has a slowpath for non-ASCII doing upcalls to
> both Character::isJavaIdentifierStart and 
> Character::isJavaIdentifierPart for each unicode character - which seems
> like a bug...
>
> Webrev: http://cr.openjdk.java.net/~redestad/8218675/open.00/
> Bug:    https://bugs.openjdk.java.net/browse/JDK-8218675
>
> The now superfluous copying is probably a remnant from a time when
> ClassFileParser called out to the separate verifier and had to be
> more conservative.
>
> Fixing these issues reduces bytecode verification overhead by ~15%
> on a Hello World with -Xshare:off -Xverify:all.
>
> Testing: tier1-3
>
> Thanks!
>
> /Claes


More information about the hotspot-runtime-dev mailing list