This change prevents NullPointerException in the clhsdb dumpcodecache command.

`CodeCache.createCodeBlobWrapper()` causes NullPointerException.
`CodeHeap.findStart()` may return null and `CodeHeap.iterate()` passes it to 
`CodeCache.createCodeBlobWrapper()` as the `cbStart` argument.

https://github.com/openjdk/jdk/blob/bbd629b0ef4d0ac7fbc2b33bb76170fd15060cd3/src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/memory/CodeHeap.java#L111

So this change makes `createCodeBlobWrapper()` return null when `cbStart` is 
null.

### Testing
* jtreg:hotspot/jtreg/serviceability/sa/

$ make test TEST="jtreg:hotspot/jtreg/serviceability/sa/"
==============================
   TEST                                              TOTAL  PASS  FAIL ERROR  
SKIP
   jtreg:test/hotspot/jtreg/serviceability/sa           81    76     0     0    
 5
==============================

* Manual verification: dumpcodecache does not output NullPointerException.

$ jhsdb clhsdb --pid 654607
Attaching to process 654607, please wait...
hsdb> dumpcodecache
<snip>
hsdb>

Note: `hotspot/jtreg/serviceability/sa/TestDebugInfoDecode.java` passed, but 
printed NullPointerException before this change. There is no 
NullPointerException in the test output after the change.

---------
- [x] I confirm that I make this contribution in accordance with the [OpenJDK 
Interim AI Policy](https://openjdk.org/legal/ai).

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

Commit messages:
 - Avoid NullPointerException while scanning CodeHeap

Changes: https://git.openjdk.org/jdk/pull/33568/files
  Webrev: https://webrevs.openjdk.org/?repo=jdk&pr=33568&range=00
  Issue: https://bugs.openjdk.org/browse/JDK-8395708
  Stats: 4 lines in 1 file changed: 3 ins; 0 del; 1 mod
  Patch: https://git.openjdk.org/jdk/pull/33568.diff
  Fetch: git fetch https://git.openjdk.org/jdk.git pull/33568/head:pull/33568

PR: https://git.openjdk.org/jdk/pull/33568

Reply via email to