8222397: x86_32 tests with UseSHA1Intrinsics SEGV due to garbled registers
Reviewed-by: kvn, dsamersoff
diff --git a/src/hotspot/cpu/x86/stubGenerator_x86_32.cpp b/src/hotspot/cpu/x86/stubGenerator_x86_32.cpp
index 1a3781c..1ef2683 100644
--- a/src/hotspot/cpu/x86/stubGenerator_x86_32.cpp
+++ b/src/hotspot/cpu/x86/stubGenerator_x86_32.cpp
@@ -2968,9 +2968,8 @@
__ enter();
__ subptr(rsp, 8 * wordSize);
- if (multi_block) {
- __ push(limit);
- }
+ handleSOERegisters(true /*saving*/);
+
__ movptr(buf, buf_param);
__ movptr(state, state_param);
if (multi_block) {
@@ -2981,9 +2980,7 @@
__ fast_sha1(abcd, e0, e1, msg0, msg1, msg2, msg3, shuf_mask,
buf, state, ofs, limit, rsp, multi_block);
- if (multi_block) {
- __ pop(limit);
- }
+ handleSOERegisters(false /*restoring*/);
__ addptr(rsp, 8 * wordSize);
__ leave();
__ ret(0);