In x86's C2MacroAssembler::fast_lock(), we are never really using the cx1Reg register, except in the DiagnoseSyncOnValueBasedClasses path, where we can just as well use the scrReg register.
What's worse, in x86_32.ad, we don't allocate the cx1 register and pass noreg, so the DiagnoseSyncOnValueBasedClasses would be broken on x86_32.
We can simply avoid allocating that extra register (which may help performance under register pressure), and use scr in DiagnoseSyncOnValueBasedClasses.
What's worse, in x86_32.ad, we don't allocate the cx1 register and pass noreg, so the DiagnoseSyncOnValueBasedClasses would be broken on x86_32.
We can simply avoid allocating that extra register (which may help performance under register pressure), and use scr in DiagnoseSyncOnValueBasedClasses.