> This patch fleshes out the `os::register_code_area()` function on
> Windows/ARM64, largely mimicking the code for the Windows/x64 port with
> some key ARM64-specific changes.  Specifically (and similar to the
> Windows/x64 port), this patch registers a single handler for the entire
> dynamically generated code region, generating `.pdata` records (that
> correspond to the `RUNTIME_FUNCTION` struct) and `.xdata` records (that
> correspond to the `UNWIND_INFO` struct).  Together, these records enable
> Windows to correctly dispatch exceptions.
> 
> However, there are several differences in the Windows/ARM64
> implementation compared to that for Windows/x64.  First, `.pdata`
> records on Windows/ARM64 store metadata information for functions that
> are at most 1MB in size.  Since the HotSpot code cache area could be
> larger than 1MB, we create as many `.pdata` records as necessary to span
> the entire code cache area.
> 
> Each `.pdata` record points a `.xdata` record, which (also) stores the
> size of the function (although not the address), so we make multiple
> `.pdata` records point to a shared `.xdata` record.  The slight caveat
> here is that the code cache area may not be a perfect multiple of 1MB,
> so we create _two_ `.xdata` records: (a) one record for all N-1 records
> that store the metadata for the 1MB regions of the code cache and (b) a
> second record for the trailing size left over after dividing the code
> cache area size into 1MB chunks.
> 
> Due to the variable number of `.pdata` and `.xdata` records, we allocate
> them just after the unwind record so that all these records have the
> same lifetime and so that they don't need to be managed separately.
> 
> Finally, since the Windows/ARM64 port uses Vectored Exception Handling,
> any recoverable exceptions should have already been handled, so the
> exception handling function introduced in this patch reports the
> exception to the console.
> 
> ---------
> - [x] I confirm that I make this contribution in accordance with the [OpenJDK 
> Interim AI Policy](https://openjdk.org/legal/ai).

Ashay Rane has updated the pull request incrementally with one additional 
commit since the last revision:

  Shorten exception message in test and add JBS issue ID

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

Changes:
  - all: https://git.openjdk.org/jdk/pull/31614/files
  - new: https://git.openjdk.org/jdk/pull/31614/files/a92e2cd4..6beedd42

Webrevs:
 - full: https://webrevs.openjdk.org/?repo=jdk&pr=31614&range=02
 - incr: https://webrevs.openjdk.org/?repo=jdk&pr=31614&range=01-02

  Stats: 4 lines in 1 file changed: 0 ins; 2 del; 2 mod
  Patch: https://git.openjdk.org/jdk/pull/31614.diff
  Fetch: git fetch https://git.openjdk.org/jdk.git pull/31614/head:pull/31614

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

Reply via email to