Commit 57a78181 authored by Jaideep Bajwa's avatar Jaideep Bajwa Committed by Commit Bot

PPC/s390: Replacing pc with trampoline on stack (gc-stress fix)

Port 895c3219

Original Commit Message:

    Replacing pc with trampoline on stack
    This CL is the follow up of https://chromium-review.googlesource.com/c/586707/
    which used to crash when running the gc-stress bots.
    It seems to be working now. We now keep the trampoline PC in the Safepoint
    table and use that information to find SafepointEntries.

    There's some refactoring that can be done, such as changing the code for
    exceptions in a similar way and removing the trampoline from the
    DeoptimizationInputData. Will take care of this in the next CL.

R=jupvfranco@google.com, joransiu@ca.ibm.com, jyan@ca.ibm.com, michael_dawson@ca.ibm.com
BUG=
LOG=N

Change-Id: I9871d110dcf7e390cf5fb2819ae1fa159c58ae84
Reviewed-on: https://chromium-review.googlesource.com/598768
Commit-Queue: Jaideep Bajwa <bjaideep@ca.ibm.com>
Reviewed-by: 's avatarJoran Siu <joransiu@ca.ibm.com>
Reviewed-by: 's avatarJunliang Yan <jyan@ca.ibm.com>
Cr-Commit-Position: refs/heads/master@{#47092}
parent cd9e86a5
...@@ -2173,12 +2173,10 @@ void CodeGenerator::AssembleArchTableSwitch(Instruction* instr) { ...@@ -2173,12 +2173,10 @@ void CodeGenerator::AssembleArchTableSwitch(Instruction* instr) {
CodeGenerator::CodeGenResult CodeGenerator::AssembleDeoptimizerCall( CodeGenerator::CodeGenResult CodeGenerator::AssembleDeoptimizerCall(
int deoptimization_id, SourcePosition pos) { int deoptimization_id, SourcePosition pos) {
DeoptimizeKind deoptimization_kind = GetDeoptimizationKind(deoptimization_id);
DeoptimizeReason deoptimization_reason = DeoptimizeReason deoptimization_reason =
GetDeoptimizationReason(deoptimization_id); GetDeoptimizationReason(deoptimization_id);
Deoptimizer::BailoutType bailout_type = Deoptimizer::BailoutType bailout_type =
deoptimization_kind == DeoptimizeKind::kSoft ? Deoptimizer::SOFT DeoptimizerCallBailout(deoptimization_id, pos);
: Deoptimizer::EAGER;
Address deopt_entry = Deoptimizer::GetDeoptimizationEntry( Address deopt_entry = Deoptimizer::GetDeoptimizationEntry(
__ isolate(), deoptimization_id, bailout_type); __ isolate(), deoptimization_id, bailout_type);
// TODO(turbofan): We should be able to generate better code by sharing the // TODO(turbofan): We should be able to generate better code by sharing the
......
...@@ -2563,12 +2563,10 @@ void CodeGenerator::AssembleArchTableSwitch(Instruction* instr) { ...@@ -2563,12 +2563,10 @@ void CodeGenerator::AssembleArchTableSwitch(Instruction* instr) {
CodeGenerator::CodeGenResult CodeGenerator::AssembleDeoptimizerCall( CodeGenerator::CodeGenResult CodeGenerator::AssembleDeoptimizerCall(
int deoptimization_id, SourcePosition pos) { int deoptimization_id, SourcePosition pos) {
DeoptimizeKind deoptimization_kind = GetDeoptimizationKind(deoptimization_id);
DeoptimizeReason deoptimization_reason = DeoptimizeReason deoptimization_reason =
GetDeoptimizationReason(deoptimization_id); GetDeoptimizationReason(deoptimization_id);
Deoptimizer::BailoutType bailout_type = Deoptimizer::BailoutType bailout_type =
deoptimization_kind == DeoptimizeKind::kSoft ? Deoptimizer::SOFT DeoptimizerCallBailout(deoptimization_id, pos);
: Deoptimizer::EAGER;
Address deopt_entry = Deoptimizer::GetDeoptimizationEntry( Address deopt_entry = Deoptimizer::GetDeoptimizationEntry(
__ isolate(), deoptimization_id, bailout_type); __ isolate(), deoptimization_id, bailout_type);
// TODO(turbofan): We should be able to generate better code by sharing the // TODO(turbofan): We should be able to generate better code by sharing the
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment