JDK-8228725 : AArch64: Purge method call format support
  • Type: Enhancement
  • Component: hotspot
  • Sub-Component: runtime
  • Affected Version: 8-aarch64,11,14
  • Priority: P4
  • Status: Resolved
  • Resolution: Fixed
  • CPU: aarch64
  • Submitted: 2019-07-29
  • Updated: 2021-02-01
  • Resolved: 2019-07-30
The Version table provides details related to the release that this issue/RFE will be addressed.

Unresolved : Release in which this issue/RFE will be addressed.
Resolved: Release in which this issue/RFE has been resolved.
Fixed : Release in which this issue/RFE has been fixed. The release containing this fix may be available for download as an Early Access Release or a General Availability Release.

To download the current JDK release, click here.
JDK 11 JDK 13 JDK 14 Other
11.0.5Fixed 13.0.4Fixed 14 b08Fixed openjdk8u292Fixed
Related Reports
Blocks :  
Relates :  
Description
Current code in interpreterRT_aarch64 has some leftovers around call_format. The usages were apparently commented out before initial push of AArch64 port. Cursory inspection in aarch64-port/jdk8u-shenandoah points to usage for AArch64 simulation, apparently broken in the initial aarch64 push, and removed completely with JDK-8228400. 

We should remove call_format leftovers too.
Comments
Fix request for 13u. The patch need to align codebase with 8u and 11u. Applies cleanly.
26-05-2020

Fix Request (11u) Followup to JDK-8228400, which removes even more dead code. This would match the code shape in 8u-aarch64 and 14+. Patch applies cleanly to 11u, passes tier1 tests on aarch64.
12-08-2019

URL: https://hg.openjdk.java.net/jdk/jdk/rev/ec78fddafd88 User: shade Date: 2019-07-30 20:17:09 +0000
30-07-2019

RFR: https://mail.openjdk.java.net/pipermail/aarch64-port-dev/2019-July/007739.html
29-07-2019

Note the 8u-aarch64 backport can also remove: src/share/vm/oops/method.cpp: 286 int Method::size(bool is_native) { 287 // If native, then include pointers for native_function and signature_handler 288 #ifdef TARGET_ARCH_aarch64 289 // aarch64 requires extra word for call format 290 int extra_bytes = (is_native) ? 3*sizeof(address*) : 0; 291 #else 292 int extra_bytes = (is_native) ? 2*sizeof(address*) : 0; 293 #endif // TARGET_ARCH_aarch64 294 int extra_words = align_size_up(extra_bytes, BytesPerWord) / BytesPerWord; 295 return align_object_size(header_size() + extra_words); 296 } 746 #ifdef TARGET_ARCH_aarch64 747 void Method::set_call_format(unsigned int call_format) { 748 unsigned int* call_format_p = (unsigned int *)call_format_addr(); 749 *call_format_p = call_format; 750 } 751 752 unsigned int Method::call_format() { 753 return *(unsigned int *)call_format_addr(); 754 } 755 #endif src/share/vm/oops/method.hpp: 503 #ifdef TARGET_ARCH_aarch64 504 address *call_format_addr() const { return native_function_addr() + 2; } 505 static ByteSize call_format_offset() { return in_ByteSize(sizeof(Method) + 2 * wordSize); } 506 void set_call_format(unsigned int call_format); 507 int unsigned call_format(); 508 #endif
29-07-2019