RFR: 8265484: Fix up TRAPS usage in GenerateOopMap::compute_map and callers [v3]

David Holmes dholmes at openjdk.java.net
Thu Apr 22 07:31:38 UTC 2021


> If compute_map encounters malformed bytecode, or an OOM condition then it can raise a LinkageError to be thrown in regular JavaThreads, and this is reflected in the use of TRAPS in a couple of methods. But for non-JavaThreads, and compiler threads, the occurrence of such an error is treated as a fatal error and we abort the VM.
> 
> In addition, most of the callers of compute_map actually use the CATCH macro, which just clears the exception and will abort a non-product VM.
> 
> This use of TRAPS is a problem for the change to convert TRAPS to JavaThread, because these methods are called by non-JavaThreads. To address this we change compute_map to create, but not throw, the exception and return a bool indicating whether an error occurred, and the caller can then choose to throw the exception itself. 
> 
> Testing: tiers 1-3
> 
> Thanks,
> David

David Holmes has updated the pull request incrementally with one additional commit since the last revision:

  Replace assert(false) with fatal()
  
  After a number of people examined this code it was decided that the best approach was to re-instate
  the call to fatal() in product builds, that would have been present in the CATCH macro, until recent
  changes converted that to an assert(). The code here is not prepared to continue if compute_map fails
  so we have to abort. Such failures are extremely unlikely (metaspace or resource-area OOM, or malformed
  bytecode where verification has been disabled).

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

Changes:
  - all: https://git.openjdk.java.net/jdk/pull/3580/files
  - new: https://git.openjdk.java.net/jdk/pull/3580/files/264fbea5..926e951c

Webrevs:
 - full: https://webrevs.openjdk.java.net/?repo=jdk&pr=3580&range=02
 - incr: https://webrevs.openjdk.java.net/?repo=jdk&pr=3580&range=01-02

  Stats: 9 lines in 2 files changed: 0 ins; 6 del; 3 mod
  Patch: https://git.openjdk.java.net/jdk/pull/3580.diff
  Fetch: git fetch https://git.openjdk.java.net/jdk pull/3580/head:pull/3580

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


More information about the hotspot-compiler-dev mailing list