Skip to content

Commit

Permalink
More fixes
Browse files Browse the repository at this point in the history
  • Loading branch information
TobiHartmann committed Nov 7, 2024
1 parent 383c701 commit b5c3992
Showing 1 changed file with 32 additions and 24 deletions.
56 changes: 32 additions & 24 deletions src/hotspot/cpu/x86/stubGenerator_x86_64.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -3684,12 +3684,14 @@ address StubGenerator::generate_cont_thaw(const char* label, Continuation::thaw_
if (return_barrier) {
// Preserve possible return value from a method returning to the return barrier.
__ push(rax);
__ push(rdi);
__ push(rsi);
__ push(rdx);
__ push(rcx);
__ push(r8);
__ push(r9);
if (InlineTypeReturnedAsFields) {
__ push(rdi);
__ push(rsi);
__ push(rdx);
__ push(rcx);
__ push(r8);
__ push(r9);
}
__ push_d(xmm0);
}

Expand All @@ -3702,12 +3704,14 @@ address StubGenerator::generate_cont_thaw(const char* label, Continuation::thaw_
// Restore return value from a method returning to the return barrier.
// No safepoint in the call to thaw, so even an oop return value should be OK.
__ pop_d(xmm0);
__ pop(r9);
__ pop(r8);
__ pop(rcx);
__ pop(rdx);
__ pop(rsi);
__ pop(rdi);
if (InlineTypeReturnedAsFields) {
__ pop(r9);
__ pop(r8);
__ pop(rcx);
__ pop(rdx);
__ pop(rsi);
__ pop(rdi);
}
__ pop(rax);
}

Expand Down Expand Up @@ -3735,12 +3739,14 @@ address StubGenerator::generate_cont_thaw(const char* label, Continuation::thaw_
if (return_barrier) {
// Preserve possible return value from a method returning to the return barrier. (Again.)
__ push(rax);
__ push(rdi);
__ push(rsi);
__ push(rdx);
__ push(rcx);
__ push(r8);
__ push(r9);
if (InlineTypeReturnedAsFields) {
__ push(rdi);
__ push(rsi);
__ push(rdx);
__ push(rcx);
__ push(r8);
__ push(r9);
}
__ push_d(xmm0);
}

Expand All @@ -3754,12 +3760,14 @@ address StubGenerator::generate_cont_thaw(const char* label, Continuation::thaw_
// Restore return value from a method returning to the return barrier. (Again.)
// No safepoint in the call to thaw, so even an oop return value should be OK.
__ pop_d(xmm0);
__ pop(r9);
__ pop(r8);
__ pop(rcx);
__ pop(rdx);
__ pop(rsi);
__ pop(rdi);
if (InlineTypeReturnedAsFields) {
__ pop(r9);
__ pop(r8);
__ pop(rcx);
__ pop(rdx);
__ pop(rsi);
__ pop(rdi);
}
__ pop(rax);
} else {
// Return 0 (success) from doYield.
Expand Down

0 comments on commit b5c3992

Please sign in to comment.