Skip to content

Commit 95b0a34

Browse files
authored
Rename UnsafeCopyMemory{,Mark} to UnsafeMemory{Access,Mark} (#19)
* Even more review comments * Re-write of atomic copy loops * Change name of UnsafeCopyMemory{,Mark} to UnsafeMemory{Access,Mark}
1 parent 405e4e0 commit 95b0a34

File tree

18 files changed

+175
-359
lines changed

18 files changed

+175
-359
lines changed

src/hotspot/cpu/aarch64/stubGenerator_aarch64.cpp

Lines changed: 6 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1519,9 +1519,9 @@ class StubGenerator: public StubCodeGenerator {
15191519
__ push(RegSet::of(d, count), sp);
15201520
}
15211521
{
1522-
// UnsafeCopyMemory page error: continue after ucm
1522+
// UnsafeMemoryAccess page error: continue after ucm
15231523
bool add_entry = !is_oop && (!aligned || sizeof(jlong) == size);
1524-
UnsafeCopyMemoryMark ucmm(this, add_entry, true);
1524+
UnsafeMemoryMark ucmm(this, add_entry, true);
15251525
copy_memory(decorators, is_oop ? T_OBJECT : T_BYTE, aligned, s, d, count, size);
15261526
}
15271527

@@ -1590,9 +1590,9 @@ class StubGenerator: public StubCodeGenerator {
15901590
__ push(RegSet::of(d, count), sp);
15911591
}
15921592
{
1593-
// UnsafeCopyMemory page error: continue after ucm
1593+
// UnsafeMemoryAccess page error: continue after ucm
15941594
bool add_entry = !is_oop && (!aligned || sizeof(jlong) == size);
1595-
UnsafeCopyMemoryMark ucmm(this, add_entry, true);
1595+
UnsafeMemoryMark ucmm(this, add_entry, true);
15961596
copy_memory(decorators, is_oop ? T_OBJECT : T_BYTE, aligned, s, d, count, -size);
15971597
}
15981598
if (is_oop) {
@@ -8332,13 +8332,8 @@ class StubGenerator: public StubCodeGenerator {
83328332
SharedRuntime::throw_delayed_StackOverflowError));
83338333

83348334
// Initialize table for copy memory (arraycopy) check.
8335-
if (UnsafeCopyMemory::_table == nullptr) {
8336-
UnsafeCopyMemory::create_table(8);
8337-
}
8338-
8339-
// Initialize table for fill memory check.
8340-
if (UnsafeSetMemory::_table == nullptr) {
8341-
UnsafeSetMemory::create_table(8);
8335+
if (UnsafeMemoryAccess::_table == nullptr) {
8336+
UnsafeMemoryAccess::create_table(18);
83428337
}
83438338

83448339
if (UseCRC32Intrinsics) {

src/hotspot/cpu/arm/stubGenerator_arm.cpp

Lines changed: 17 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -956,8 +956,8 @@ class StubGenerator: public StubCodeGenerator {
956956
Label L_skip_pld;
957957

958958
{
959-
// UnsafeCopyMemory page error: continue after ucm
960-
UnsafeCopyMemoryMark ucmm(this, unsafe_copy, true);
959+
// UnsafeMemoryAccess page error: continue after ucm
960+
UnsafeMemoryMark ucmm(this, unsafe_copy, true);
961961
// predecrease to exit when there is less than count_per_loop
962962
__ sub_32(count, count, count_per_loop);
963963

@@ -1105,8 +1105,8 @@ class StubGenerator: public StubCodeGenerator {
11051105
__ push(RegisterSet(R4,R10));
11061106

11071107
{
1108-
// UnsafeCopyMemory page error: continue after ucm
1109-
UnsafeCopyMemoryMark ucmm(this, unsafe_copy, true);
1108+
// UnsafeMemoryAccess page error: continue after ucm
1109+
UnsafeMemoryMark ucmm(this, unsafe_copy, true);
11101110
__ sub_32(count, count, count_per_loop);
11111111

11121112
const bool prefetch_before = pld_offset < 0;
@@ -1761,8 +1761,8 @@ class StubGenerator: public StubCodeGenerator {
17611761
assert_different_registers(from, to, count, tmp);
17621762

17631763
{
1764-
// UnsafeCopyMemory page error: continue after ucm
1765-
UnsafeCopyMemoryMark ucmm(this, unsafe_copy, true);
1764+
// UnsafeMemoryAccess page error: continue after ucm
1765+
UnsafeMemoryMark ucmm(this, unsafe_copy, true);
17661766
__ align(OptoLoopAlignment);
17671767
Label L_small_loop;
17681768
__ BIND(L_small_loop);
@@ -1900,8 +1900,8 @@ class StubGenerator: public StubCodeGenerator {
19001900
__ push(RegisterSet(R4,R10));
19011901

19021902
{
1903-
// UnsafeCopyMemory page error: continue after ucm
1904-
UnsafeCopyMemoryMark ucmm(this, unsafe_copy, true);
1903+
// UnsafeMemoryAccess page error: continue after ucm
1904+
UnsafeMemoryMark ucmm(this, unsafe_copy, true);
19051905
load_one(Rval, from, wordSize, forward);
19061906

19071907
switch (bytes_per_count) {
@@ -2058,8 +2058,8 @@ class StubGenerator: public StubCodeGenerator {
20582058

20592059
int count_required_to_align = 0;
20602060
{
2061-
// UnsafeCopyMemoryMark page error: continue at UnsafeCopyMemory common_error_exit
2062-
UnsafeCopyMemoryMark ucmm(this, !aligned, false);
2061+
// UnsafeMemoryMark page error: continue at UnsafeMemoryAccess common_error_exit
2062+
UnsafeMemoryMark ucmm(this, !aligned, false);
20632063
count_required_to_align = from_is_aligned ? 0 : align_src(from, to, count, tmp1, bytes_per_count, forward);
20642064
assert (small_copy_limit >= count_required_to_align, "alignment could exhaust count");
20652065
}
@@ -2092,9 +2092,9 @@ class StubGenerator: public StubCodeGenerator {
20922092

20932093
int min_copy;
20942094
if (forward) {
2095-
min_copy = generate_forward_aligned_copy_loop(from, to, count, bytes_per_count, !aligned /*add UnsafeCopyMemory entry*/);
2095+
min_copy = generate_forward_aligned_copy_loop(from, to, count, bytes_per_count, !aligned /*add UnsafeMemoryAccess entry*/);
20962096
} else {
2097-
min_copy = generate_backward_aligned_copy_loop(from, to, count, bytes_per_count, !aligned /*add UnsafeCopyMemory entry*/);
2097+
min_copy = generate_backward_aligned_copy_loop(from, to, count, bytes_per_count, !aligned /*add UnsafeMemoryAccess entry*/);
20982098
}
20992099
assert(small_copy_limit >= count_required_to_align + min_copy, "first loop might exhaust count");
21002100

@@ -2105,7 +2105,7 @@ class StubGenerator: public StubCodeGenerator {
21052105
__ ret();
21062106

21072107
{
2108-
copy_small_array(from, to, count, tmp1, tmp2, bytes_per_count, forward, L_small_array /* entry */, !aligned /*add UnsafeCopyMemory entry*/);
2108+
copy_small_array(from, to, count, tmp1, tmp2, bytes_per_count, forward, L_small_array /* entry */, !aligned /*add UnsafeMemoryAccess entry*/);
21092109

21102110
if (status) {
21112111
__ mov(R0, 0); // OK
@@ -2116,7 +2116,7 @@ class StubGenerator: public StubCodeGenerator {
21162116

21172117
if (! to_is_aligned) {
21182118
__ BIND(L_unaligned_dst);
2119-
int min_copy_shifted = align_dst_and_generate_shifted_copy_loop(from, to, count, bytes_per_count, forward, !aligned /*add UnsafeCopyMemory entry*/);
2119+
int min_copy_shifted = align_dst_and_generate_shifted_copy_loop(from, to, count, bytes_per_count, forward, !aligned /*add UnsafeMemoryAccess entry*/);
21202120
assert (small_copy_limit >= count_required_to_align + min_copy_shifted, "first loop might exhaust count");
21212121

21222122
if (status) {
@@ -2862,7 +2862,7 @@ class StubGenerator: public StubCodeGenerator {
28622862
#endif
28632863

28642864
address ucm_common_error_exit = generate_unsafecopy_common_error_exit();
2865-
UnsafeCopyMemory::set_common_exit_stub_pc(ucm_common_error_exit);
2865+
UnsafeMemoryAccess::set_common_exit_stub_pc(ucm_common_error_exit);
28662866

28672867
// these need always status in case they are called from generic_arraycopy
28682868
StubRoutines::_jbyte_disjoint_arraycopy = generate_primitive_copy(false, "jbyte_disjoint_arraycopy", true, 1, true);
@@ -3134,12 +3134,8 @@ class StubGenerator: public StubCodeGenerator {
31343134
// stub for throwing stack overflow error used both by interpreter and compiler
31353135
StubRoutines::_throw_StackOverflowError_entry = generate_throw_exception("StackOverflowError throw_exception", CAST_FROM_FN_PTR(address, SharedRuntime::throw_StackOverflowError));
31363136

3137-
if (UnsafeCopyMemory::_table == nullptr) {
3138-
UnsafeCopyMemory::create_table(32);
3139-
}
3140-
3141-
if (UnsafeSetMemory::_table == nullptr) {
3142-
UnsafeSetMemory::create_table(32);
3137+
if (UnsafeMemoryAccess::_table == nullptr) {
3138+
UnsafeMemoryAccess::create_table(42);
31433139
}
31443140

31453141
// integer division used both by interpreter and compiler

src/hotspot/cpu/ppc/stubGenerator_ppc.cpp

Lines changed: 20 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -961,7 +961,7 @@ class StubGenerator: public StubCodeGenerator {
961961
// need to copy backwards
962962
}
963963

964-
// This is common errorexit stub for UnsafeCopyMemory.
964+
// This is common errorexit stub for UnsafeMemoryAccess.
965965
address generate_unsafecopy_common_error_exit() {
966966
address start_pc = __ pc();
967967
Register tmp1 = R6_ARG4;
@@ -1013,8 +1013,8 @@ class StubGenerator: public StubCodeGenerator {
10131013

10141014
Label l_1, l_2, l_3, l_4, l_5, l_6, l_7, l_8, l_9, l_10;
10151015
{
1016-
// UnsafeCopyMemory page error: continue at UnsafeCopyMemory common_error_exit
1017-
UnsafeCopyMemoryMark ucmm(this, !aligned, false);
1016+
// UnsafeMemoryAccess page error: continue at UnsafeMemoryAccess common_error_exit
1017+
UnsafeMemoryMark ucmm(this, !aligned, false);
10181018

10191019
// Don't try anything fancy if arrays don't have many elements.
10201020
__ li(tmp3, 0);
@@ -1195,8 +1195,8 @@ class StubGenerator: public StubCodeGenerator {
11951195
// that we don't have to optimize it.
11961196
Label l_1, l_2;
11971197
{
1198-
// UnsafeCopyMemory page error: continue at UnsafeCopyMemory common_error_exit
1199-
UnsafeCopyMemoryMark ucmm(this, !aligned, false);
1198+
// UnsafeMemoryAccess page error: continue at UnsafeMemoryAccess common_error_exit
1199+
UnsafeMemoryMark ucmm(this, !aligned, false);
12001200
__ b(l_2);
12011201
__ bind(l_1);
12021202
__ stbx(tmp1, R4_ARG2, R5_ARG3);
@@ -1282,8 +1282,8 @@ class StubGenerator: public StubCodeGenerator {
12821282

12831283
Label l_1, l_2, l_3, l_4, l_5, l_6, l_7, l_8, l_9;
12841284
{
1285-
// UnsafeCopyMemory page error: continue at UnsafeCopyMemory common_error_exit
1286-
UnsafeCopyMemoryMark ucmm(this, !aligned, false);
1285+
// UnsafeMemoryAccess page error: continue at UnsafeMemoryAccess common_error_exit
1286+
UnsafeMemoryMark ucmm(this, !aligned, false);
12871287
// don't try anything fancy if arrays don't have many elements
12881288
__ li(tmp3, 0);
12891289
__ cmpwi(CCR0, R5_ARG3, 9);
@@ -1466,8 +1466,8 @@ class StubGenerator: public StubCodeGenerator {
14661466

14671467
Label l_1, l_2;
14681468
{
1469-
// UnsafeCopyMemory page error: continue at UnsafeCopyMemory common_error_exit
1470-
UnsafeCopyMemoryMark ucmm(this, !aligned, false);
1469+
// UnsafeMemoryAccess page error: continue at UnsafeMemoryAccess common_error_exit
1470+
UnsafeMemoryMark ucmm(this, !aligned, false);
14711471
__ sldi(tmp1, R5_ARG3, 1);
14721472
__ b(l_2);
14731473
__ bind(l_1);
@@ -1625,8 +1625,8 @@ class StubGenerator: public StubCodeGenerator {
16251625
address start = __ function_entry();
16261626
assert_positive_int(R5_ARG3);
16271627
{
1628-
// UnsafeCopyMemory page error: continue at UnsafeCopyMemory common_error_exit
1629-
UnsafeCopyMemoryMark ucmm(this, !aligned, false);
1628+
// UnsafeMemoryAccess page error: continue at UnsafeMemoryAccess common_error_exit
1629+
UnsafeMemoryMark ucmm(this, !aligned, false);
16301630
generate_disjoint_int_copy_core(aligned);
16311631
}
16321632
__ li(R3_RET, 0); // return 0
@@ -1777,8 +1777,8 @@ class StubGenerator: public StubCodeGenerator {
17771777

17781778
array_overlap_test(nooverlap_target, 2);
17791779
{
1780-
// UnsafeCopyMemory page error: continue at UnsafeCopyMemory common_error_exit
1781-
UnsafeCopyMemoryMark ucmm(this, !aligned, false);
1780+
// UnsafeMemoryAccess page error: continue at UnsafeMemoryAccess common_error_exit
1781+
UnsafeMemoryMark ucmm(this, !aligned, false);
17821782
generate_conjoint_int_copy_core(aligned);
17831783
}
17841784

@@ -1903,8 +1903,8 @@ class StubGenerator: public StubCodeGenerator {
19031903
address start = __ function_entry();
19041904
assert_positive_int(R5_ARG3);
19051905
{
1906-
// UnsafeCopyMemory page error: continue at UnsafeCopyMemory common_error_exit
1907-
UnsafeCopyMemoryMark ucmm(this, !aligned, false);
1906+
// UnsafeMemoryAccess page error: continue at UnsafeMemoryAccess common_error_exit
1907+
UnsafeMemoryMark ucmm(this, !aligned, false);
19081908
generate_disjoint_long_copy_core(aligned);
19091909
}
19101910
__ li(R3_RET, 0); // return 0
@@ -2034,8 +2034,8 @@ class StubGenerator: public StubCodeGenerator {
20342034

20352035
array_overlap_test(nooverlap_target, 3);
20362036
{
2037-
// UnsafeCopyMemory page error: continue at UnsafeCopyMemory common_error_exit
2038-
UnsafeCopyMemoryMark ucmm(this, !aligned, false);
2037+
// UnsafeMemoryAccess page error: continue at UnsafeMemoryAccess common_error_exit
2038+
UnsafeMemoryMark ucmm(this, !aligned, false);
20392039
generate_conjoint_long_copy_core(aligned);
20402040
}
20412041
__ li(R3_RET, 0); // return 0
@@ -3129,7 +3129,7 @@ class StubGenerator: public StubCodeGenerator {
31293129
// the conjoint stubs use them.
31303130

31313131
address ucm_common_error_exit = generate_unsafecopy_common_error_exit();
3132-
UnsafeCopyMemory::set_common_exit_stub_pc(ucm_common_error_exit);
3132+
UnsafeMemoryAccess::set_common_exit_stub_pc(ucm_common_error_exit);
31333133

31343134
// non-aligned disjoint versions
31353135
StubRoutines::_jbyte_disjoint_arraycopy = generate_disjoint_byte_copy(false, "jbyte_disjoint_arraycopy");
@@ -4745,12 +4745,8 @@ class StubGenerator: public StubCodeGenerator {
47454745
StubRoutines::_call_stub_entry = generate_call_stub(StubRoutines::_call_stub_return_address);
47464746
StubRoutines::_catch_exception_entry = generate_catch_exception();
47474747

4748-
if (UnsafeCopyMemory::_table == nullptr) {
4749-
UnsafeCopyMemory::create_table(8);
4750-
}
4751-
4752-
if (UnsafeSetMemory::_table == nullptr) {
4753-
UnsafeSetMemory::create_table(8);
4748+
if (UnsafeMemoryAccess::_table == nullptr) {
4749+
UnsafeMemoryAccess::create_table(18);
47544750
}
47554751

47564752
// Build this early so it's available for the interpreter.

src/hotspot/cpu/riscv/stubGenerator_riscv.cpp

Lines changed: 6 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1115,9 +1115,9 @@ class StubGenerator: public StubCodeGenerator {
11151115
}
11161116

11171117
{
1118-
// UnsafeCopyMemory page error: continue after ucm
1118+
// UnsafeMemoryAccess page error: continue after ucm
11191119
bool add_entry = !is_oop && (!aligned || sizeof(jlong) == size);
1120-
UnsafeCopyMemoryMark ucmm(this, add_entry, true);
1120+
UnsafeMemoryMark ucmm(this, add_entry, true);
11211121
copy_memory(decorators, is_oop ? T_OBJECT : T_BYTE, aligned, s, d, count, size);
11221122
}
11231123

@@ -1191,9 +1191,9 @@ class StubGenerator: public StubCodeGenerator {
11911191
}
11921192

11931193
{
1194-
// UnsafeCopyMemory page error: continue after ucm
1194+
// UnsafeMemoryAccess page error: continue after ucm
11951195
bool add_entry = !is_oop && (!aligned || sizeof(jlong) == size);
1196-
UnsafeCopyMemoryMark ucmm(this, add_entry, true);
1196+
UnsafeMemoryMark ucmm(this, add_entry, true);
11971197
copy_memory(decorators, is_oop ? T_OBJECT : T_BYTE, aligned, s, d, count, -size);
11981198
}
11991199

@@ -5479,12 +5479,8 @@ static const int64_t right_3_bits = right_n_bits(3);
54795479

54805480
StubRoutines::_forward_exception_entry = generate_forward_exception();
54815481

5482-
if (UnsafeCopyMemory::_table == nullptr) {
5483-
UnsafeCopyMemory::create_table(8);
5484-
}
5485-
5486-
if (UnsafeSetMemory::_table == nullptr) {
5487-
UnsafeSetMemory::create_table(8);
5482+
if (UnsafeMemoryAccess::_table == nullptr) {
5483+
UnsafeMemoryAccess::create_table(18);
54885484
}
54895485

54905486
StubRoutines::_call_stub_entry =

src/hotspot/cpu/x86/stubGenerator_x86_32.cpp

Lines changed: 10 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1131,8 +1131,8 @@ class StubGenerator: public StubCodeGenerator {
11311131
bs->arraycopy_prologue(_masm, decorators, t, from, to, count);
11321132
{
11331133
bool add_entry = (t != T_OBJECT && (!aligned || t == T_INT));
1134-
// UnsafeCopyMemory page error: continue after ucm
1135-
UnsafeCopyMemoryMark ucmm(this, add_entry, true);
1134+
// UnsafeMemoryAccess page error: continue after ucm
1135+
UnsafeMemoryMark ucmm(this, add_entry, true);
11361136
__ subptr(to, from); // to --> to_from
11371137
__ cmpl(count, 2<<shift); // Short arrays (< 8 bytes) copy by element
11381138
__ jcc(Assembler::below, L_copy_4_bytes); // use unsigned cmp
@@ -1321,8 +1321,8 @@ class StubGenerator: public StubCodeGenerator {
13211321

13221322
{
13231323
bool add_entry = (t != T_OBJECT && (!aligned || t == T_INT));
1324-
// UnsafeCopyMemory page error: continue after ucm
1325-
UnsafeCopyMemoryMark ucmm(this, add_entry, true);
1324+
// UnsafeMemoryAccess page error: continue after ucm
1325+
UnsafeMemoryMark ucmm(this, add_entry, true);
13261326
// copy from high to low
13271327
__ cmpl(count, 2<<shift); // Short arrays (< 8 bytes) copy by element
13281328
__ jcc(Assembler::below, L_copy_4_bytes); // use unsigned cmp
@@ -1450,8 +1450,8 @@ class StubGenerator: public StubCodeGenerator {
14501450
BLOCK_COMMENT("Entry:");
14511451

14521452
{
1453-
// UnsafeCopyMemory page error: continue after ucm
1454-
UnsafeCopyMemoryMark ucmm(this, true, true);
1453+
// UnsafeMemoryAccess page error: continue after ucm
1454+
UnsafeMemoryMark ucmm(this, true, true);
14551455
__ subptr(to, from); // to --> to_from
14561456
if (UseXMMForArrayCopy) {
14571457
xmm_copy_forward(from, to_from, count);
@@ -1505,8 +1505,8 @@ class StubGenerator: public StubCodeGenerator {
15051505
__ jump_cc(Assembler::aboveEqual, nooverlap);
15061506

15071507
{
1508-
// UnsafeCopyMemory page error: continue after ucm
1509-
UnsafeCopyMemoryMark ucmm(this, true, true);
1508+
// UnsafeMemoryAccess page error: continue after ucm
1509+
UnsafeMemoryMark ucmm(this, true, true);
15101510

15111511
__ jmpb(L_copy_8_bytes);
15121512

@@ -4121,13 +4121,8 @@ class StubGenerator: public StubCodeGenerator {
41214121
create_control_words();
41224122

41234123
// Initialize table for copy memory (arraycopy) check.
4124-
if (UnsafeCopyMemory::_table == nullptr) {
4125-
UnsafeCopyMemory::create_table(16);
4126-
}
4127-
4128-
// Initialize table for fill memory check.
4129-
if (UnsafeSetMemory::_table == nullptr) {
4130-
UnsafeSetMemory::create_table(22);
4124+
if (UnsafeMemoryAccess::_table == nullptr) {
4125+
UnsafeMemoryAccess::create_table(26);
41314126
}
41324127

41334128
StubRoutines::x86::_verify_mxcsr_entry = generate_verify_mxcsr();

src/hotspot/cpu/x86/stubGenerator_x86_64.cpp

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -4009,13 +4009,8 @@ void StubGenerator::generate_initial_stubs() {
40094009
create_control_words();
40104010

40114011
// Initialize table for unsafe copy memeory check.
4012-
if (UnsafeCopyMemory::_table == nullptr) {
4013-
UnsafeCopyMemory::create_table(16);
4014-
}
4015-
4016-
// Initialize table for unsafe set memeory check.
4017-
if (UnsafeSetMemory::_table == nullptr) {
4018-
UnsafeSetMemory::create_table(22);
4012+
if (UnsafeMemoryAccess::_table == nullptr) {
4013+
UnsafeMemoryAccess::create_table(26);
40194014
}
40204015

40214016
// entry points that exist in all platforms Note: This is code

0 commit comments

Comments
 (0)