Skip to content

Commit 1ff685d

Browse files
schuayV8 LUCI CQ
authored and
V8 LUCI CQ
committed
[deoptimizer] Remove soft deopts
.. since they are the same as eager deopts (% an unused counter). Fixed: v8:12765 Change-Id: I2be6210e476ead4ac6629a49259f28321e965867 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3565717 Reviewed-by: Tobias Tebbi <tebbi@chromium.org> Reviewed-by: Leszek Swirski <leszeks@chromium.org> Commit-Queue: Jakob Linke <jgruber@chromium.org> Cr-Commit-Position: refs/heads/main@{#79729}
1 parent d936623 commit 1ff685d

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

57 files changed

+153
-236
lines changed

include/v8-internal.h

+2-2
Original file line numberDiff line numberDiff line change
@@ -365,8 +365,8 @@ class Internals {
365365

366366
static const uint32_t kNumIsolateDataSlots = 4;
367367
static const int kStackGuardSize = 7 * kApiSystemPointerSize;
368-
static const int kBuiltinTier0EntryTableSize = 10 * kApiSystemPointerSize;
369-
static const int kBuiltinTier0TableSize = 10 * kApiSystemPointerSize;
368+
static const int kBuiltinTier0EntryTableSize = 9 * kApiSystemPointerSize;
369+
static const int kBuiltinTier0TableSize = 9 * kApiSystemPointerSize;
370370

371371
// IsolateData layout guarantees.
372372
static const int kIsolateCageBaseOffset = 0;

src/builtins/arm/builtins-arm.cc

-4
Original file line numberDiff line numberDiff line change
@@ -3537,10 +3537,6 @@ void Builtins::Generate_DeoptimizationEntry_Eager(MacroAssembler* masm) {
35373537
Generate_DeoptimizationEntry(masm, DeoptimizeKind::kEager);
35383538
}
35393539

3540-
void Builtins::Generate_DeoptimizationEntry_Soft(MacroAssembler* masm) {
3541-
Generate_DeoptimizationEntry(masm, DeoptimizeKind::kSoft);
3542-
}
3543-
35443540
void Builtins::Generate_DeoptimizationEntry_Lazy(MacroAssembler* masm) {
35453541
Generate_DeoptimizationEntry(masm, DeoptimizeKind::kLazy);
35463542
}

src/builtins/arm64/builtins-arm64.cc

-4
Original file line numberDiff line numberDiff line change
@@ -4055,10 +4055,6 @@ void Builtins::Generate_DeoptimizationEntry_Eager(MacroAssembler* masm) {
40554055
Generate_DeoptimizationEntry(masm, DeoptimizeKind::kEager);
40564056
}
40574057

4058-
void Builtins::Generate_DeoptimizationEntry_Soft(MacroAssembler* masm) {
4059-
Generate_DeoptimizationEntry(masm, DeoptimizeKind::kSoft);
4060-
}
4061-
40624058
void Builtins::Generate_DeoptimizationEntry_Lazy(MacroAssembler* masm) {
40634059
Generate_DeoptimizationEntry(masm, DeoptimizeKind::kLazy);
40644060
}

src/builtins/builtins-definitions.h

-1
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,6 @@ namespace internal {
4545
#define BUILTIN_LIST_BASE_TIER0(CPP, TFJ, TFC, TFS, TFH, ASM) \
4646
/* Deoptimization entries. */ \
4747
ASM(DeoptimizationEntry_Eager, DeoptimizationEntry) \
48-
ASM(DeoptimizationEntry_Soft, DeoptimizationEntry) \
4948
ASM(DeoptimizationEntry_Lazy, DeoptimizationEntry) \
5049
\
5150
/* GC write barrier. */ \

src/builtins/ia32/builtins-ia32.cc

-4
Original file line numberDiff line numberDiff line change
@@ -4150,10 +4150,6 @@ void Builtins::Generate_DeoptimizationEntry_Eager(MacroAssembler* masm) {
41504150
Generate_DeoptimizationEntry(masm, DeoptimizeKind::kEager);
41514151
}
41524152

4153-
void Builtins::Generate_DeoptimizationEntry_Soft(MacroAssembler* masm) {
4154-
Generate_DeoptimizationEntry(masm, DeoptimizeKind::kSoft);
4155-
}
4156-
41574153
void Builtins::Generate_DeoptimizationEntry_Lazy(MacroAssembler* masm) {
41584154
Generate_DeoptimizationEntry(masm, DeoptimizeKind::kLazy);
41594155
}

src/builtins/x64/builtins-x64.cc

-4
Original file line numberDiff line numberDiff line change
@@ -4973,10 +4973,6 @@ void Builtins::Generate_DeoptimizationEntry_Eager(MacroAssembler* masm) {
49734973
Generate_DeoptimizationEntry(masm, DeoptimizeKind::kEager);
49744974
}
49754975

4976-
void Builtins::Generate_DeoptimizationEntry_Soft(MacroAssembler* masm) {
4977-
Generate_DeoptimizationEntry(masm, DeoptimizeKind::kSoft);
4978-
}
4979-
49804976
void Builtins::Generate_DeoptimizationEntry_Lazy(MacroAssembler* masm) {
49814977
Generate_DeoptimizationEntry(masm, DeoptimizeKind::kLazy);
49824978
}

src/codegen/arm/macro-assembler-arm.cc

+2-3
Original file line numberDiff line numberDiff line change
@@ -2648,9 +2648,8 @@ void TurboAssembler::CallForDeoptimization(Builtin target, int, Label* exit,
26482648
MemOperand(kRootRegister, IsolateData::BuiltinEntrySlotOffset(target)));
26492649
Call(ip);
26502650
DCHECK_EQ(SizeOfCodeGeneratedSince(exit),
2651-
(kind == DeoptimizeKind::kLazy)
2652-
? Deoptimizer::kLazyDeoptExitSize
2653-
: Deoptimizer::kNonLazyDeoptExitSize);
2651+
(kind == DeoptimizeKind::kLazy) ? Deoptimizer::kLazyDeoptExitSize
2652+
: Deoptimizer::kEagerDeoptExitSize);
26542653

26552654
// The above code must not emit constants either.
26562655
DCHECK(!has_pending_constants());

src/codegen/arm64/macro-assembler-arm64.cc

+2-3
Original file line numberDiff line numberDiff line change
@@ -2219,9 +2219,8 @@ void TurboAssembler::CallForDeoptimization(
22192219
BlockPoolsScope scope(this);
22202220
bl(jump_deoptimization_entry_label);
22212221
DCHECK_EQ(SizeOfCodeGeneratedSince(exit),
2222-
(kind == DeoptimizeKind::kLazy)
2223-
? Deoptimizer::kLazyDeoptExitSize
2224-
: Deoptimizer::kNonLazyDeoptExitSize);
2222+
(kind == DeoptimizeKind::kLazy) ? Deoptimizer::kLazyDeoptExitSize
2223+
: Deoptimizer::kEagerDeoptExitSize);
22252224
}
22262225

22272226
void MacroAssembler::LoadStackLimit(Register destination, StackLimitKind kind) {

src/codegen/ia32/macro-assembler-ia32.cc

+2-3
Original file line numberDiff line numberDiff line change
@@ -2033,9 +2033,8 @@ void TurboAssembler::CallForDeoptimization(Builtin target, int, Label* exit,
20332033
ASM_CODE_COMMENT(this);
20342034
CallBuiltin(target);
20352035
DCHECK_EQ(SizeOfCodeGeneratedSince(exit),
2036-
(kind == DeoptimizeKind::kLazy)
2037-
? Deoptimizer::kLazyDeoptExitSize
2038-
: Deoptimizer::kNonLazyDeoptExitSize);
2036+
(kind == DeoptimizeKind::kLazy) ? Deoptimizer::kLazyDeoptExitSize
2037+
: Deoptimizer::kEagerDeoptExitSize);
20392038
}
20402039

20412040
void TurboAssembler::Trap() { int3(); }

src/codegen/loong64/macro-assembler-loong64.cc

+2-3
Original file line numberDiff line numberDiff line change
@@ -4087,9 +4087,8 @@ void TurboAssembler::CallForDeoptimization(Builtin target, int, Label* exit,
40874087
MemOperand(kRootRegister, IsolateData::BuiltinEntrySlotOffset(target)));
40884088
Call(t7);
40894089
DCHECK_EQ(SizeOfCodeGeneratedSince(exit),
4090-
(kind == DeoptimizeKind::kLazy)
4091-
? Deoptimizer::kLazyDeoptExitSize
4092-
: Deoptimizer::kNonLazyDeoptExitSize);
4090+
(kind == DeoptimizeKind::kLazy) ? Deoptimizer::kLazyDeoptExitSize
4091+
: Deoptimizer::kEagerDeoptExitSize);
40934092
}
40944093

40954094
void TurboAssembler::LoadCodeObjectEntry(Register destination,

src/codegen/mips/macro-assembler-mips.cc

+2-3
Original file line numberDiff line numberDiff line change
@@ -5571,9 +5571,8 @@ void TurboAssembler::CallForDeoptimization(Builtin target, int, Label* exit,
55715571
MemOperand(kRootRegister, IsolateData::BuiltinEntrySlotOffset(target)));
55725572
Call(t9);
55735573
DCHECK_EQ(SizeOfCodeGeneratedSince(exit),
5574-
(kind == DeoptimizeKind::kLazy)
5575-
? Deoptimizer::kLazyDeoptExitSize
5576-
: Deoptimizer::kNonLazyDeoptExitSize);
5574+
(kind == DeoptimizeKind::kLazy) ? Deoptimizer::kLazyDeoptExitSize
5575+
: Deoptimizer::kEagerDeoptExitSize);
55775576
}
55785577

55795578
void TurboAssembler::LoadCodeObjectEntry(Register destination,

src/codegen/mips64/macro-assembler-mips64.cc

+2-3
Original file line numberDiff line numberDiff line change
@@ -6114,9 +6114,8 @@ void TurboAssembler::CallForDeoptimization(Builtin target, int, Label* exit,
61146114
MemOperand(kRootRegister, IsolateData::BuiltinEntrySlotOffset(target)));
61156115
Call(t9);
61166116
DCHECK_EQ(SizeOfCodeGeneratedSince(exit),
6117-
(kind == DeoptimizeKind::kLazy)
6118-
? Deoptimizer::kLazyDeoptExitSize
6119-
: Deoptimizer::kNonLazyDeoptExitSize);
6117+
(kind == DeoptimizeKind::kLazy) ? Deoptimizer::kLazyDeoptExitSize
6118+
: Deoptimizer::kEagerDeoptExitSize);
61206119
}
61216120

61226121
void TurboAssembler::LoadCodeObjectEntry(Register destination,

src/codegen/ppc/macro-assembler-ppc.cc

+2-3
Original file line numberDiff line numberDiff line change
@@ -3727,9 +3727,8 @@ void TurboAssembler::CallForDeoptimization(Builtin target, int, Label* exit,
37273727
IsolateData::BuiltinEntrySlotOffset(target)));
37283728
Call(ip);
37293729
DCHECK_EQ(SizeOfCodeGeneratedSince(exit),
3730-
(kind == DeoptimizeKind::kLazy)
3731-
? Deoptimizer::kLazyDeoptExitSize
3732-
: Deoptimizer::kNonLazyDeoptExitSize);
3730+
(kind == DeoptimizeKind::kLazy) ? Deoptimizer::kLazyDeoptExitSize
3731+
: Deoptimizer::kEagerDeoptExitSize);
37333732
}
37343733

37353734
void TurboAssembler::ZeroExtByte(Register dst, Register src) {

src/codegen/riscv64/macro-assembler-riscv64.cc

+2-3
Original file line numberDiff line numberDiff line change
@@ -4987,9 +4987,8 @@ void TurboAssembler::CallForDeoptimization(Builtin target, int, Label* exit,
49874987
MemOperand(kRootRegister, IsolateData::BuiltinEntrySlotOffset(target)));
49884988
Call(t6);
49894989
DCHECK_EQ(SizeOfCodeGeneratedSince(exit),
4990-
(kind == DeoptimizeKind::kLazy)
4991-
? Deoptimizer::kLazyDeoptExitSize
4992-
: Deoptimizer::kNonLazyDeoptExitSize);
4990+
(kind == DeoptimizeKind::kLazy) ? Deoptimizer::kLazyDeoptExitSize
4991+
: Deoptimizer::kEagerDeoptExitSize);
49934992
}
49944993

49954994
void TurboAssembler::LoadCodeObjectEntry(Register destination,

src/codegen/s390/macro-assembler-s390.cc

+2-3
Original file line numberDiff line numberDiff line change
@@ -4826,9 +4826,8 @@ void TurboAssembler::CallForDeoptimization(Builtin target, int, Label* exit,
48264826
IsolateData::BuiltinEntrySlotOffset(target)));
48274827
Call(ip);
48284828
DCHECK_EQ(SizeOfCodeGeneratedSince(exit),
4829-
(kind == DeoptimizeKind::kLazy)
4830-
? Deoptimizer::kLazyDeoptExitSize
4831-
: Deoptimizer::kNonLazyDeoptExitSize);
4829+
(kind == DeoptimizeKind::kLazy) ? Deoptimizer::kLazyDeoptExitSize
4830+
: Deoptimizer::kEagerDeoptExitSize);
48324831
}
48334832

48344833
void TurboAssembler::Trap() { stop(); }

src/codegen/x64/macro-assembler-x64.cc

+2-3
Original file line numberDiff line numberDiff line change
@@ -3125,9 +3125,8 @@ void TurboAssembler::CallForDeoptimization(Builtin target, int, Label* exit,
31253125
// performance tuning which emits a different instruction sequence.
31263126
call(EntryFromBuiltinAsOperand(target));
31273127
DCHECK_EQ(SizeOfCodeGeneratedSince(exit),
3128-
(kind == DeoptimizeKind::kLazy)
3129-
? Deoptimizer::kLazyDeoptExitSize
3130-
: Deoptimizer::kNonLazyDeoptExitSize);
3128+
(kind == DeoptimizeKind::kLazy) ? Deoptimizer::kLazyDeoptExitSize
3129+
: Deoptimizer::kEagerDeoptExitSize);
31313130
}
31323131

31333132
void TurboAssembler::Trap() { int3(); }

src/common/globals.h

+6-8
Original file line numberDiff line numberDiff line change
@@ -518,11 +518,8 @@ constexpr int kNoDeoptimizationId = -1;
518518
// - Lazy: the code has been marked as dependent on some assumption which
519519
// is checked elsewhere and can trigger deoptimization the next time the
520520
// code is executed.
521-
// - Soft: similar to lazy deoptimization, but does not contribute to the
522-
// total deopt count which can lead to disabling optimization for a function.
523521
enum class DeoptimizeKind : uint8_t {
524522
kEager,
525-
kSoft,
526523
kLazy,
527524
};
528525
constexpr DeoptimizeKind kFirstDeoptimizeKind = DeoptimizeKind::kEager;
@@ -532,16 +529,17 @@ constexpr int kDeoptimizeKindCount = static_cast<int>(kLastDeoptimizeKind) + 1;
532529
inline size_t hash_value(DeoptimizeKind kind) {
533530
return static_cast<size_t>(kind);
534531
}
535-
inline std::ostream& operator<<(std::ostream& os, DeoptimizeKind kind) {
532+
constexpr const char* ToString(DeoptimizeKind kind) {
536533
switch (kind) {
537534
case DeoptimizeKind::kEager:
538-
return os << "Eager";
539-
case DeoptimizeKind::kSoft:
540-
return os << "Soft";
535+
return "Eager";
541536
case DeoptimizeKind::kLazy:
542-
return os << "Lazy";
537+
return "Lazy";
543538
}
544539
}
540+
inline std::ostream& operator<<(std::ostream& os, DeoptimizeKind kind) {
541+
return os << ToString(kind);
542+
}
545543

546544
// Indicates whether the lookup is related to sloppy-mode block-scoped
547545
// function hoisting, and is a synthetic assignment for that.

src/compiler/backend/arm64/code-generator-arm64.cc

+1-2
Original file line numberDiff line numberDiff line change
@@ -3308,8 +3308,7 @@ void CodeGenerator::PrepareForDeoptimizationExits(
33083308
__ ForceConstantPoolEmissionWithoutJump();
33093309
// We are conservative here, reserving sufficient space for the largest deopt
33103310
// kind.
3311-
DCHECK_GE(Deoptimizer::kLazyDeoptExitSize,
3312-
Deoptimizer::kNonLazyDeoptExitSize);
3311+
DCHECK_GE(Deoptimizer::kLazyDeoptExitSize, Deoptimizer::kEagerDeoptExitSize);
33133312
__ CheckVeneerPool(
33143313
false, false,
33153314
static_cast<int>(exits->size()) * Deoptimizer::kLazyDeoptExitSize);

src/compiler/backend/code-generator.cc

+2-2
Original file line numberDiff line numberDiff line change
@@ -171,7 +171,7 @@ CodeGenerator::CodeGenResult CodeGenerator::AssembleDeoptimizerCall(
171171
++lazy_deopt_count_;
172172
tasm()->BindExceptionHandler(exit->label());
173173
} else {
174-
++non_lazy_deopt_count_;
174+
++eager_deopt_count_;
175175
tasm()->bind(exit->label());
176176
}
177177
Builtin target = Deoptimizer::GetDeoptimizationEntry(deopt_kind);
@@ -898,7 +898,7 @@ Handle<DeoptimizationData> CodeGenerator::GenerateDeoptimizationData() {
898898
data->SetOptimizationId(Smi::FromInt(info->optimization_id()));
899899

900900
data->SetDeoptExitStart(Smi::FromInt(deopt_exit_start_offset_));
901-
data->SetNonLazyDeoptCount(Smi::FromInt(non_lazy_deopt_count_));
901+
data->SetEagerDeoptCount(Smi::FromInt(eager_deopt_count_));
902902
data->SetLazyDeoptCount(Smi::FromInt(lazy_deopt_count_));
903903

904904
if (info->has_shared_info()) {

src/compiler/backend/code-generator.h

+1-1
Original file line numberDiff line numberDiff line change
@@ -421,7 +421,7 @@ class V8_EXPORT_PRIVATE CodeGenerator final : public GapResolver::Assembler {
421421
ZoneVector<HandlerInfo> handlers_;
422422
int next_deoptimization_id_ = 0;
423423
int deopt_exit_start_offset_ = 0;
424-
int non_lazy_deopt_count_ = 0;
424+
int eager_deopt_count_ = 0;
425425
int lazy_deopt_count_ = 0;
426426
ZoneDeque<DeoptimizationExit*> deoptimization_exits_;
427427
ZoneDeque<DeoptimizationLiteral> deoptimization_literals_;

src/compiler/backend/ppc/code-generator-ppc.cc

+1-1
Original file line numberDiff line numberDiff line change
@@ -4250,7 +4250,7 @@ void CodeGenerator::PrepareForDeoptimizationExits(
42504250
for (DeoptimizationExit* exit : deoptimization_exits_) {
42514251
total_size += (exit->kind() == DeoptimizeKind::kLazy)
42524252
? Deoptimizer::kLazyDeoptExitSize
4253-
: Deoptimizer::kNonLazyDeoptExitSize;
4253+
: Deoptimizer::kEagerDeoptExitSize;
42544254
}
42554255

42564256
__ CheckTrampolinePoolQuick(total_size);

src/compiler/backend/riscv64/code-generator-riscv64.cc

+1-1
Original file line numberDiff line numberDiff line change
@@ -4075,7 +4075,7 @@ void CodeGenerator::PrepareForDeoptimizationExits(
40754075
for (DeoptimizationExit* exit : deoptimization_exits_) {
40764076
total_size += (exit->kind() == DeoptimizeKind::kLazy)
40774077
? Deoptimizer::kLazyDeoptExitSize
4078-
: Deoptimizer::kNonLazyDeoptExitSize;
4078+
: Deoptimizer::kEagerDeoptExitSize;
40794079
}
40804080

40814081
__ CheckTrampolinePoolQuick(total_size);

0 commit comments

Comments
 (0)