Skip to content

Commit 89fe586

Browse files
author
Vladimir Kozlov
committed
8363837: Make StubRoutines::crc_table_adr() into platform-specific method
Reviewed-by: adinn, yzheng
1 parent 9e209fe commit 89fe586

24 files changed

+67
-25
lines changed

src/hotspot/cpu/aarch64/stubGenerator_aarch64.cpp

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11680,8 +11680,6 @@ class StubGenerator: public StubCodeGenerator {
1168011680
}
1168111681

1168211682
if (UseCRC32Intrinsics) {
11683-
// set table address before stub generation which use it
11684-
StubRoutines::_crc_table_adr = (address)StubRoutines::aarch64::_crc_table;
1168511683
StubRoutines::_updateBytesCRC32 = generate_updateBytesCRC32();
1168611684
}
1168711685

src/hotspot/cpu/aarch64/stubRoutines_aarch64.cpp

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -71,6 +71,10 @@ ATTRIBUTE_ALIGNED(64) uint32_t StubRoutines::aarch64::_dilithiumConsts[] =
7171
/**
7272
* crc_table[] from jdk/src/share/native/java/util/zip/zlib-1.2.5/crc32.h
7373
*/
74+
75+
address StubRoutines::crc_table_addr() { return (address)StubRoutines::aarch64::_crc_table; }
76+
address StubRoutines::crc32c_table_addr() { ShouldNotCallThis(); return nullptr; }
77+
7478
ATTRIBUTE_ALIGNED(4096) juint StubRoutines::aarch64::_crc_table[] =
7579
{
7680
// Table 0

src/hotspot/cpu/aarch64/stubRoutines_aarch64.hpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,7 @@ enum platform_dependent_constants {
4747

4848
class aarch64 {
4949
friend class StubGenerator;
50+
friend class StubRoutines;
5051
#if INCLUDE_JVMCI
5152
friend class JVMCIVMStructs;
5253
#endif

src/hotspot/cpu/arm/stubRoutines_arm.cpp

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,3 +36,6 @@ STUBGEN_ARCH_ENTRIES_DO(DEFINE_ARCH_ENTRY, DEFINE_ARCH_ENTRY_INIT)
3636

3737
#undef DEFINE_ARCH_ENTRY_INIT
3838
#undef DEFINE_ARCH_ENTRY
39+
40+
address StubRoutines::crc_table_addr() { ShouldNotCallThis(); return nullptr; }
41+
address StubRoutines::crc32c_table_addr() { ShouldNotCallThis(); return nullptr; }

src/hotspot/cpu/ppc/stubGenerator_ppc.cpp

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4982,13 +4982,11 @@ void generate_lookup_secondary_supers_table_stub() {
49824982

49834983
// CRC32 Intrinsics.
49844984
if (UseCRC32Intrinsics) {
4985-
StubRoutines::_crc_table_adr = StubRoutines::ppc::generate_crc_constants(REVERSE_CRC32_POLY);
49864985
StubRoutines::_updateBytesCRC32 = generate_CRC32_updateBytes(StubId::stubgen_updateBytesCRC32_id);
49874986
}
49884987

49894988
// CRC32C Intrinsics.
49904989
if (UseCRC32CIntrinsics) {
4991-
StubRoutines::_crc32c_table_addr = StubRoutines::ppc::generate_crc_constants(REVERSE_CRC32C_POLY);
49924990
StubRoutines::_updateBytesCRC32C = generate_CRC32_updateBytes(StubId::stubgen_updateBytesCRC32C_id);
49934991
}
49944992

src/hotspot/cpu/ppc/stubRoutines_ppc.hpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,7 @@ enum platform_dependent_constants {
5454

5555
class ppc {
5656
friend class StubGenerator;
57+
friend class StubRoutines;
5758

5859
private:
5960
public:

src/hotspot/cpu/ppc/stubRoutines_ppc_64.cpp

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -74,6 +74,22 @@ static julong compute_inverse_poly(julong long_poly) {
7474
return div;
7575
}
7676

77+
static address _crc_table_addr = nullptr;
78+
static address _crc32c_table_addr = nullptr;
79+
80+
address StubRoutines::crc_table_addr() {
81+
if (_crc_table_addr == nullptr) {
82+
_crc_table_addr = StubRoutines::ppc::generate_crc_constants(REVERSE_CRC32_POLY);
83+
}
84+
return _crc_table_addr;
85+
}
86+
address StubRoutines::crc32c_table_addr() {
87+
if (_crc32c_table_addr == nullptr) {
88+
_crc32c_table_addr = StubRoutines::ppc::generate_crc_constants(REVERSE_CRC32C_POLY);
89+
}
90+
return _crc32c_table_addr;
91+
}
92+
7793
// Constants to fold n words as needed by macroAssembler.
7894
address StubRoutines::ppc::generate_crc_constants(juint reverse_poly) {
7995
// Layout of constant table:

src/hotspot/cpu/riscv/stubGenerator_riscv.cpp

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6686,8 +6686,6 @@ static const int64_t right_3_bits = right_n_bits(3);
66866686
StubRoutines::_catch_exception_entry = generate_catch_exception();
66876687

66886688
if (UseCRC32Intrinsics) {
6689-
// set table address before stub generation which use it
6690-
StubRoutines::_crc_table_adr = (address)StubRoutines::riscv::_crc_table;
66916689
StubRoutines::_updateBytesCRC32 = generate_updateBytesCRC32();
66926690
}
66936691

src/hotspot/cpu/riscv/stubRoutines_riscv.cpp

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,10 @@ bool StubRoutines::riscv::_completed = false;
5252
/**
5353
* crc_table[] from jdk/src/java.base/share/native/libzip/zlib/crc32.h
5454
*/
55+
56+
address StubRoutines::crc_table_addr() { return (address)StubRoutines::riscv::_crc_table; }
57+
address StubRoutines::crc32c_table_addr() { ShouldNotCallThis(); return nullptr; }
58+
5559
ATTRIBUTE_ALIGNED(4096) juint StubRoutines::riscv::_crc_table[] =
5660
{
5761
// Table 0

src/hotspot/cpu/riscv/stubRoutines_riscv.hpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,7 @@ enum platform_dependent_constants {
4848

4949
class riscv {
5050
friend class StubGenerator;
51+
friend class StubRoutines;
5152
#if INCLUDE_JVMCI
5253
friend class JVMCIVMStructs;
5354
#endif

0 commit comments

Comments
 (0)