Skip to content

Commit 2af4d20

Browse files
author
Daniel Lundén
committed
8370031: Make RegMask copy constructor explicit and replace RegMask operator= with named function
Reviewed-by: mhaessig, rcastanedalo
1 parent 517d543 commit 2af4d20

File tree

14 files changed

+222
-223
lines changed

14 files changed

+222
-223
lines changed

src/hotspot/cpu/aarch64/aarch64.ad

Lines changed: 15 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1266,20 +1266,20 @@ source %{
12661266
// adlc register classes to make AArch64 rheapbase (r27) and rfp (r29)
12671267
// registers conditionally reserved.
12681268

1269-
_ANY_REG32_mask = _ALL_REG32_mask;
1269+
_ANY_REG32_mask.assignFrom(_ALL_REG32_mask);
12701270
_ANY_REG32_mask.remove(OptoReg::as_OptoReg(r31_sp->as_VMReg()));
12711271

1272-
_ANY_REG_mask = _ALL_REG_mask;
1272+
_ANY_REG_mask.assignFrom(_ALL_REG_mask);
12731273

1274-
_PTR_REG_mask = _ALL_REG_mask;
1274+
_PTR_REG_mask.assignFrom(_ALL_REG_mask);
12751275

1276-
_NO_SPECIAL_REG32_mask = _ALL_REG32_mask;
1276+
_NO_SPECIAL_REG32_mask.assignFrom(_ALL_REG32_mask);
12771277
_NO_SPECIAL_REG32_mask.subtract(_NON_ALLOCATABLE_REG32_mask);
12781278

1279-
_NO_SPECIAL_REG_mask = _ALL_REG_mask;
1279+
_NO_SPECIAL_REG_mask.assignFrom(_ALL_REG_mask);
12801280
_NO_SPECIAL_REG_mask.subtract(_NON_ALLOCATABLE_REG_mask);
12811281

1282-
_NO_SPECIAL_PTR_REG_mask = _ALL_REG_mask;
1282+
_NO_SPECIAL_PTR_REG_mask.assignFrom(_ALL_REG_mask);
12831283
_NO_SPECIAL_PTR_REG_mask.subtract(_NON_ALLOCATABLE_REG_mask);
12841284

12851285
// r27 is not allocatable when compressed oops is on and heapbase is not
@@ -1297,7 +1297,7 @@ source %{
12971297
_NO_SPECIAL_PTR_REG_mask.remove(OptoReg::as_OptoReg(r29->as_VMReg()));
12981298
}
12991299

1300-
_NO_SPECIAL_NO_RFP_PTR_REG_mask = _NO_SPECIAL_PTR_REG_mask;
1300+
_NO_SPECIAL_NO_RFP_PTR_REG_mask.assignFrom(_NO_SPECIAL_PTR_REG_mask);
13011301
_NO_SPECIAL_NO_RFP_PTR_REG_mask.remove(OptoReg::as_OptoReg(r29->as_VMReg()));
13021302
}
13031303

@@ -2545,27 +2545,27 @@ bool Matcher::use_asm_for_ldiv_by_con(jlong divisor) {
25452545
return false;
25462546
}
25472547

2548-
RegMask Matcher::divI_proj_mask() {
2548+
const RegMask& Matcher::divI_proj_mask() {
25492549
ShouldNotReachHere();
2550-
return RegMask();
2550+
return RegMask::EMPTY;
25512551
}
25522552

25532553
// Register for MODI projection of divmodI.
2554-
RegMask Matcher::modI_proj_mask() {
2554+
const RegMask& Matcher::modI_proj_mask() {
25552555
ShouldNotReachHere();
2556-
return RegMask();
2556+
return RegMask::EMPTY;
25572557
}
25582558

25592559
// Register for DIVL projection of divmodL.
2560-
RegMask Matcher::divL_proj_mask() {
2560+
const RegMask& Matcher::divL_proj_mask() {
25612561
ShouldNotReachHere();
2562-
return RegMask();
2562+
return RegMask::EMPTY;
25632563
}
25642564

25652565
// Register for MODL projection of divmodL.
2566-
RegMask Matcher::modL_proj_mask() {
2566+
const RegMask& Matcher::modL_proj_mask() {
25672567
ShouldNotReachHere();
2568-
return RegMask();
2568+
return RegMask::EMPTY;
25692569
}
25702570

25712571
bool size_fits_all_mem_uses(AddPNode* addp, int shift) {

src/hotspot/cpu/arm/arm.ad

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1131,27 +1131,27 @@ bool Matcher::use_asm_for_ldiv_by_con( jlong divisor ) {
11311131
}
11321132

11331133
// Register for DIVI projection of divmodI
1134-
RegMask Matcher::divI_proj_mask() {
1134+
const RegMask& Matcher::divI_proj_mask() {
11351135
ShouldNotReachHere();
1136-
return RegMask();
1136+
return RegMask::EMPTY;
11371137
}
11381138

11391139
// Register for MODI projection of divmodI
1140-
RegMask Matcher::modI_proj_mask() {
1140+
const RegMask& Matcher::modI_proj_mask() {
11411141
ShouldNotReachHere();
1142-
return RegMask();
1142+
return RegMask::EMPTY;
11431143
}
11441144

11451145
// Register for DIVL projection of divmodL
1146-
RegMask Matcher::divL_proj_mask() {
1146+
const RegMask& Matcher::divL_proj_mask() {
11471147
ShouldNotReachHere();
1148-
return RegMask();
1148+
return RegMask::EMPTY;
11491149
}
11501150

11511151
// Register for MODL projection of divmodL
1152-
RegMask Matcher::modL_proj_mask() {
1152+
const RegMask& Matcher::modL_proj_mask() {
11531153
ShouldNotReachHere();
1154-
return RegMask();
1154+
return RegMask::EMPTY;
11551155
}
11561156

11571157
bool maybe_far_call(const CallNode *n) {

src/hotspot/cpu/ppc/ppc.ad

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -2450,27 +2450,27 @@ bool Matcher::use_asm_for_ldiv_by_con(jlong divisor) {
24502450
}
24512451

24522452
// Register for DIVI projection of divmodI.
2453-
RegMask Matcher::divI_proj_mask() {
2453+
const RegMask& Matcher::divI_proj_mask() {
24542454
ShouldNotReachHere();
2455-
return RegMask();
2455+
return RegMask::EMPTY;
24562456
}
24572457

24582458
// Register for MODI projection of divmodI.
2459-
RegMask Matcher::modI_proj_mask() {
2459+
const RegMask& Matcher::modI_proj_mask() {
24602460
ShouldNotReachHere();
2461-
return RegMask();
2461+
return RegMask::EMPTY;
24622462
}
24632463

24642464
// Register for DIVL projection of divmodL.
2465-
RegMask Matcher::divL_proj_mask() {
2465+
const RegMask& Matcher::divL_proj_mask() {
24662466
ShouldNotReachHere();
2467-
return RegMask();
2467+
return RegMask::EMPTY;
24682468
}
24692469

24702470
// Register for MODL projection of divmodL.
2471-
RegMask Matcher::modL_proj_mask() {
2471+
const RegMask& Matcher::modL_proj_mask() {
24722472
ShouldNotReachHere();
2473-
return RegMask();
2473+
return RegMask::EMPTY;
24742474
}
24752475

24762476
%}

src/hotspot/cpu/riscv/riscv.ad

Lines changed: 15 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1092,22 +1092,22 @@ RegMask _NO_SPECIAL_NO_FP_PTR_REG_mask;
10921092

10931093
void reg_mask_init() {
10941094

1095-
_ANY_REG32_mask = _ALL_REG32_mask;
1095+
_ANY_REG32_mask.assignFrom(_ALL_REG32_mask);
10961096
_ANY_REG32_mask.remove(OptoReg::as_OptoReg(x0->as_VMReg()));
10971097

1098-
_ANY_REG_mask = _ALL_REG_mask;
1098+
_ANY_REG_mask.assignFrom(_ALL_REG_mask);
10991099
_ANY_REG_mask.subtract(_ZR_REG_mask);
11001100

1101-
_PTR_REG_mask = _ALL_REG_mask;
1101+
_PTR_REG_mask.assignFrom(_ALL_REG_mask);
11021102
_PTR_REG_mask.subtract(_ZR_REG_mask);
11031103

1104-
_NO_SPECIAL_REG32_mask = _ALL_REG32_mask;
1104+
_NO_SPECIAL_REG32_mask.assignFrom(_ALL_REG32_mask);
11051105
_NO_SPECIAL_REG32_mask.subtract(_NON_ALLOCATABLE_REG32_mask);
11061106

1107-
_NO_SPECIAL_REG_mask = _ALL_REG_mask;
1107+
_NO_SPECIAL_REG_mask.assignFrom(_ALL_REG_mask);
11081108
_NO_SPECIAL_REG_mask.subtract(_NON_ALLOCATABLE_REG_mask);
11091109

1110-
_NO_SPECIAL_PTR_REG_mask = _ALL_REG_mask;
1110+
_NO_SPECIAL_PTR_REG_mask.assignFrom(_ALL_REG_mask);
11111111
_NO_SPECIAL_PTR_REG_mask.subtract(_NON_ALLOCATABLE_REG_mask);
11121112

11131113
// x27 is not allocatable when compressed oops is on
@@ -1124,7 +1124,7 @@ void reg_mask_init() {
11241124
_NO_SPECIAL_PTR_REG_mask.remove(OptoReg::as_OptoReg(x8->as_VMReg()));
11251125
}
11261126

1127-
_NO_SPECIAL_NO_FP_PTR_REG_mask = _NO_SPECIAL_PTR_REG_mask;
1127+
_NO_SPECIAL_NO_FP_PTR_REG_mask.assignFrom(_NO_SPECIAL_PTR_REG_mask);
11281128
_NO_SPECIAL_NO_FP_PTR_REG_mask.remove(OptoReg::as_OptoReg(x8->as_VMReg()));
11291129
}
11301130

@@ -2129,27 +2129,27 @@ bool Matcher::use_asm_for_ldiv_by_con(jlong divisor) {
21292129
return false;
21302130
}
21312131

2132-
RegMask Matcher::divI_proj_mask() {
2132+
const RegMask& Matcher::divI_proj_mask() {
21332133
ShouldNotReachHere();
2134-
return RegMask();
2134+
return RegMask::EMPTY;
21352135
}
21362136

21372137
// Register for MODI projection of divmodI.
2138-
RegMask Matcher::modI_proj_mask() {
2138+
const RegMask& Matcher::modI_proj_mask() {
21392139
ShouldNotReachHere();
2140-
return RegMask();
2140+
return RegMask::EMPTY;
21412141
}
21422142

21432143
// Register for DIVL projection of divmodL.
2144-
RegMask Matcher::divL_proj_mask() {
2144+
const RegMask& Matcher::divL_proj_mask() {
21452145
ShouldNotReachHere();
2146-
return RegMask();
2146+
return RegMask::EMPTY;
21472147
}
21482148

21492149
// Register for MODL projection of divmodL.
2150-
RegMask Matcher::modL_proj_mask() {
2150+
const RegMask& Matcher::modL_proj_mask() {
21512151
ShouldNotReachHere();
2152-
return RegMask();
2152+
return RegMask::EMPTY;
21532153
}
21542154

21552155
bool size_fits_all_mem_uses(AddPNode* addp, int shift) {

src/hotspot/cpu/s390/s390.ad

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1961,22 +1961,22 @@ bool Matcher::use_asm_for_ldiv_by_con(jlong divisor) {
19611961
}
19621962

19631963
// Register for DIVI projection of divmodI
1964-
RegMask Matcher::divI_proj_mask() {
1964+
const RegMask& Matcher::divI_proj_mask() {
19651965
return _Z_RARG4_INT_REG_mask;
19661966
}
19671967

19681968
// Register for MODI projection of divmodI
1969-
RegMask Matcher::modI_proj_mask() {
1969+
const RegMask& Matcher::modI_proj_mask() {
19701970
return _Z_RARG3_INT_REG_mask;
19711971
}
19721972

19731973
// Register for DIVL projection of divmodL
1974-
RegMask Matcher::divL_proj_mask() {
1974+
const RegMask& Matcher::divL_proj_mask() {
19751975
return _Z_RARG4_LONG_REG_mask;
19761976
}
19771977

19781978
// Register for MODL projection of divmodL
1979-
RegMask Matcher::modL_proj_mask() {
1979+
const RegMask& Matcher::modL_proj_mask() {
19801980
return _Z_RARG3_LONG_REG_mask;
19811981
}
19821982

src/hotspot/cpu/x86/x86_64.ad

Lines changed: 21 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -497,7 +497,7 @@ void reg_mask_init() {
497497

498498
// _ALL_REG_mask is generated by adlc from the all_reg register class below.
499499
// We derive a number of subsets from it.
500-
_ANY_REG_mask = _ALL_REG_mask;
500+
_ANY_REG_mask.assignFrom(_ALL_REG_mask);
501501

502502
if (PreserveFramePointer) {
503503
_ANY_REG_mask.remove(OptoReg::as_OptoReg(rbp->as_VMReg()));
@@ -508,7 +508,7 @@ void reg_mask_init() {
508508
_ANY_REG_mask.remove(OptoReg::as_OptoReg(r12->as_VMReg()->next()));
509509
}
510510

511-
_PTR_REG_mask = _ANY_REG_mask;
511+
_PTR_REG_mask.assignFrom(_ANY_REG_mask);
512512
_PTR_REG_mask.remove(OptoReg::as_OptoReg(rsp->as_VMReg()));
513513
_PTR_REG_mask.remove(OptoReg::as_OptoReg(rsp->as_VMReg()->next()));
514514
_PTR_REG_mask.remove(OptoReg::as_OptoReg(r15->as_VMReg()));
@@ -520,43 +520,43 @@ void reg_mask_init() {
520520
}
521521
}
522522

523-
_STACK_OR_PTR_REG_mask = _PTR_REG_mask;
523+
_STACK_OR_PTR_REG_mask.assignFrom(_PTR_REG_mask);
524524
_STACK_OR_PTR_REG_mask.or_with(STACK_OR_STACK_SLOTS_mask());
525525

526-
_PTR_REG_NO_RBP_mask = _PTR_REG_mask;
526+
_PTR_REG_NO_RBP_mask.assignFrom(_PTR_REG_mask);
527527
_PTR_REG_NO_RBP_mask.remove(OptoReg::as_OptoReg(rbp->as_VMReg()));
528528
_PTR_REG_NO_RBP_mask.remove(OptoReg::as_OptoReg(rbp->as_VMReg()->next()));
529529

530-
_PTR_NO_RAX_REG_mask = _PTR_REG_mask;
530+
_PTR_NO_RAX_REG_mask.assignFrom(_PTR_REG_mask);
531531
_PTR_NO_RAX_REG_mask.remove(OptoReg::as_OptoReg(rax->as_VMReg()));
532532
_PTR_NO_RAX_REG_mask.remove(OptoReg::as_OptoReg(rax->as_VMReg()->next()));
533533

534-
_PTR_NO_RAX_RBX_REG_mask = _PTR_NO_RAX_REG_mask;
534+
_PTR_NO_RAX_RBX_REG_mask.assignFrom(_PTR_NO_RAX_REG_mask);
535535
_PTR_NO_RAX_RBX_REG_mask.remove(OptoReg::as_OptoReg(rbx->as_VMReg()));
536536
_PTR_NO_RAX_RBX_REG_mask.remove(OptoReg::as_OptoReg(rbx->as_VMReg()->next()));
537537

538538

539-
_LONG_REG_mask = _PTR_REG_mask;
540-
_STACK_OR_LONG_REG_mask = _LONG_REG_mask;
539+
_LONG_REG_mask.assignFrom(_PTR_REG_mask);
540+
_STACK_OR_LONG_REG_mask.assignFrom(_LONG_REG_mask);
541541
_STACK_OR_LONG_REG_mask.or_with(STACK_OR_STACK_SLOTS_mask());
542542

543-
_LONG_NO_RAX_RDX_REG_mask = _LONG_REG_mask;
543+
_LONG_NO_RAX_RDX_REG_mask.assignFrom(_LONG_REG_mask);
544544
_LONG_NO_RAX_RDX_REG_mask.remove(OptoReg::as_OptoReg(rax->as_VMReg()));
545545
_LONG_NO_RAX_RDX_REG_mask.remove(OptoReg::as_OptoReg(rax->as_VMReg()->next()));
546546
_LONG_NO_RAX_RDX_REG_mask.remove(OptoReg::as_OptoReg(rdx->as_VMReg()));
547547
_LONG_NO_RAX_RDX_REG_mask.remove(OptoReg::as_OptoReg(rdx->as_VMReg()->next()));
548548

549-
_LONG_NO_RCX_REG_mask = _LONG_REG_mask;
549+
_LONG_NO_RCX_REG_mask.assignFrom(_LONG_REG_mask);
550550
_LONG_NO_RCX_REG_mask.remove(OptoReg::as_OptoReg(rcx->as_VMReg()));
551551
_LONG_NO_RCX_REG_mask.remove(OptoReg::as_OptoReg(rcx->as_VMReg()->next()));
552552

553-
_LONG_NO_RBP_R13_REG_mask = _LONG_REG_mask;
553+
_LONG_NO_RBP_R13_REG_mask.assignFrom(_LONG_REG_mask);
554554
_LONG_NO_RBP_R13_REG_mask.remove(OptoReg::as_OptoReg(rbp->as_VMReg()));
555555
_LONG_NO_RBP_R13_REG_mask.remove(OptoReg::as_OptoReg(rbp->as_VMReg()->next()));
556556
_LONG_NO_RBP_R13_REG_mask.remove(OptoReg::as_OptoReg(r13->as_VMReg()));
557557
_LONG_NO_RBP_R13_REG_mask.remove(OptoReg::as_OptoReg(r13->as_VMReg()->next()));
558558

559-
_INT_REG_mask = _ALL_INT_REG_mask;
559+
_INT_REG_mask.assignFrom(_ALL_INT_REG_mask);
560560
if (!UseAPX) {
561561
for (uint i = 0; i < sizeof(egprs)/sizeof(Register); i++) {
562562
_INT_REG_mask.remove(OptoReg::as_OptoReg(egprs[i]->as_VMReg()));
@@ -570,23 +570,23 @@ void reg_mask_init() {
570570
_INT_REG_mask.remove(OptoReg::as_OptoReg(r12->as_VMReg()));
571571
}
572572

573-
_STACK_OR_INT_REG_mask = _INT_REG_mask;
573+
_STACK_OR_INT_REG_mask.assignFrom(_INT_REG_mask);
574574
_STACK_OR_INT_REG_mask.or_with(STACK_OR_STACK_SLOTS_mask());
575575

576-
_INT_NO_RAX_RDX_REG_mask = _INT_REG_mask;
576+
_INT_NO_RAX_RDX_REG_mask.assignFrom(_INT_REG_mask);
577577
_INT_NO_RAX_RDX_REG_mask.remove(OptoReg::as_OptoReg(rax->as_VMReg()));
578578
_INT_NO_RAX_RDX_REG_mask.remove(OptoReg::as_OptoReg(rdx->as_VMReg()));
579579

580-
_INT_NO_RCX_REG_mask = _INT_REG_mask;
580+
_INT_NO_RCX_REG_mask.assignFrom(_INT_REG_mask);
581581
_INT_NO_RCX_REG_mask.remove(OptoReg::as_OptoReg(rcx->as_VMReg()));
582582

583-
_INT_NO_RBP_R13_REG_mask = _INT_REG_mask;
583+
_INT_NO_RBP_R13_REG_mask.assignFrom(_INT_REG_mask);
584584
_INT_NO_RBP_R13_REG_mask.remove(OptoReg::as_OptoReg(rbp->as_VMReg()));
585585
_INT_NO_RBP_R13_REG_mask.remove(OptoReg::as_OptoReg(r13->as_VMReg()));
586586

587587
// _FLOAT_REG_LEGACY_mask/_FLOAT_REG_EVEX_mask is generated by adlc
588588
// from the float_reg_legacy/float_reg_evex register class.
589-
_FLOAT_REG_mask = VM_Version::supports_evex() ? _FLOAT_REG_EVEX_mask : _FLOAT_REG_LEGACY_mask;
589+
_FLOAT_REG_mask.assignFrom(VM_Version::supports_evex() ? _FLOAT_REG_EVEX_mask : _FLOAT_REG_LEGACY_mask);
590590
}
591591

592592
static bool generate_vzeroupper(Compile* C) {
@@ -1678,22 +1678,22 @@ bool Matcher::use_asm_for_ldiv_by_con( jlong divisor ) {
16781678
}
16791679

16801680
// Register for DIVI projection of divmodI
1681-
RegMask Matcher::divI_proj_mask() {
1681+
const RegMask& Matcher::divI_proj_mask() {
16821682
return INT_RAX_REG_mask();
16831683
}
16841684

16851685
// Register for MODI projection of divmodI
1686-
RegMask Matcher::modI_proj_mask() {
1686+
const RegMask& Matcher::modI_proj_mask() {
16871687
return INT_RDX_REG_mask();
16881688
}
16891689

16901690
// Register for DIVL projection of divmodL
1691-
RegMask Matcher::divL_proj_mask() {
1691+
const RegMask& Matcher::divL_proj_mask() {
16921692
return LONG_RAX_REG_mask();
16931693
}
16941694

16951695
// Register for MODL projection of divmodL
1696-
RegMask Matcher::modL_proj_mask() {
1696+
const RegMask& Matcher::modL_proj_mask() {
16971697
return LONG_RDX_REG_mask();
16981698
}
16991699

src/hotspot/share/opto/chaitin.hpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -128,7 +128,7 @@ class LRG : public ResourceObj {
128128
// count of bits in the current mask.
129129
int get_invalid_mask_size() const { return _mask_size; }
130130
const RegMask &mask() const { return _mask; }
131-
void set_mask( const RegMask &rm ) { _mask = rm; DEBUG_ONLY(_msize_valid=0;)}
131+
void set_mask(const RegMask& rm) { _mask.assignFrom(rm); DEBUG_ONLY(_msize_valid = 0;) }
132132
void init_mask(Arena* arena) { new (&_mask) RegMask(arena); }
133133
void and_with( const RegMask &rm ) { _mask.and_with(rm); DEBUG_ONLY(_msize_valid=0;)}
134134
void subtract( const RegMask &rm ) { _mask.subtract(rm); DEBUG_ONLY(_msize_valid=0;)}

0 commit comments

Comments
 (0)