RFR: 8292878: x86: Make scratch register usage explicit in assembler code [v2]

Vladimir Ivanov vlivanov at openjdk.org
Thu Aug 25 17:44:17 UTC 2022


> Improve MacroAssembler API and make scratch register usages explicit at use sites.
> 
> Different parts of JVM have different assumptions about scratch registers and
> implicit assumptions in MacroAssembler makes it harder to reason about the
> correctness of generated code.
> 
> Most of scratch register usages relate to `AddressLiteral` on x86_64.  In such case the argument is turned into a default one (with `noreg` as a default) and implementation asserts that scratch register should be provided when the address is not guaranteed to be always reachable.
> 
> Otherwise, scratch register argument is required to be explicitly provided.
> 
> The only case left (mostly) intact is `call(AddressLiteral)`, but I switched it from `rscratch` (`r10`) to `rax`.
> 
> Testing:
> - [x] hs-tier1 - hs-tier4 (w/ -XX:+-ForceUnreachable)
> - [x] x86_32 build

Vladimir Ivanov has updated the pull request incrementally with two additional commits since the last revision:

 - ptrs_base_addr
 - cmpptr

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

Changes:
  - all: https://git.openjdk.org/jdk/pull/10003/files
  - new: https://git.openjdk.org/jdk/pull/10003/files/f2911037..2b0565ef

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

  Stats: 20 lines in 7 files changed: 9 ins; 1 del; 10 mod
  Patch: https://git.openjdk.org/jdk/pull/10003.diff
  Fetch: git fetch https://git.openjdk.org/jdk pull/10003/head:pull/10003

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


More information about the hotspot-dev mailing list