RFR: 8262913: KlassFactory::create_from_stream should never return NULL

Coleen Phillimore coleenp at openjdk.java.net
Tue Mar 9 13:53:22 UTC 2021


ClassFileParser.create_instance_klass cannot return NULL without a pending exception, it's called by 
       klassFactory::create_from_stream who also cannot return NULL without a pending exception, it's called by
       SystemDictionary::parse_stream and SystemDictionary::resolve_from_stream who also cannot return NULL without a pending exception.

I removed the NULL checks on returns from these 4 functions and either replaced them with an assert, or in cases that already had an unconditional indirection from the return value, just removed the null checks.

I wrote a test case to cover the case of testing st->buffer() == NULL which returned NULL from SystemDictionary::resolve_from_stream to show that this code path is not used. ClassFileStream constructor will set buffer() to the u1* input argument if it doesn't point to anything and will get a ClassFormatError.

Tested with tier1-3.

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

Commit messages:
 - 8262913: KlassFactory::create_from_stream should never return NULL

Changes: https://git.openjdk.java.net/jdk/pull/2892/files
 Webrev: https://webrevs.openjdk.java.net/?repo=jdk&pr=2892&range=00
  Issue: https://bugs.openjdk.java.net/browse/JDK-8262913
  Stats: 244 lines in 9 files changed: 199 ins; 16 del; 29 mod
  Patch: https://git.openjdk.java.net/jdk/pull/2892.diff
  Fetch: git fetch https://git.openjdk.java.net/jdk pull/2892/head:pull/2892

PR: https://git.openjdk.java.net/jdk/pull/2892


More information about the hotspot-dev mailing list