Skip to content

Commit 06af754

Browse files
schuayV8 LUCI CQ
authored andcommitted
[isolate-data] Split builtin tables into tiers
.. for more efficient access to builtins from generated code. Root-relative accesses tend to be faster and produce more compact code when the root-relative offset is small. IsolateData contains a few large tables (roots, external references, builtins), resulting in very large offsets in general. This CL starts by splitting the builtin table into tiers: tier 0 is a minimal set of perf-critical builtins that should be cheap to access. The offset to tier 0 builtins is guaranteed to be small. The full builtin table also remains in IsolateData for occasions in which we need to lookup builtins by index. In future work, we can also split external references and roots into tiers. On x64, this reduces deopt exit sizes from 7 to 4 bytes and from 12 to 9 bytes (dynamic map checks / EagerWithResume deopts). Bug: v8:12203,v8:8661 Change-Id: I5a9ed22b0e00682aca1abcf15892ae1458dbdd70 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3162142 Commit-Queue: Jakob Gruber <jgruber@chromium.org> Reviewed-by: Dominik Inführ <dinfuehr@chromium.org> Reviewed-by: Leszek Swirski <leszeks@chromium.org> Cr-Commit-Position: refs/heads/main@{#76947}
1 parent 165e725 commit 06af754

18 files changed

Lines changed: 220 additions & 87 deletions

include/v8-internal.h

Lines changed: 15 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -224,23 +224,30 @@ class Internals {
224224
static const int kExternalOneByteRepresentationTag = 0x0a;
225225

226226
static const uint32_t kNumIsolateDataSlots = 4;
227+
static const int kStackGuardSize = 7 * kApiSystemPointerSize;
228+
static const int kBuiltinTier0EntryTableSize = 13 * kApiSystemPointerSize;
229+
static const int kBuiltinTier0TableSize = 13 * kApiSystemPointerSize;
227230

228231
// IsolateData layout guarantees.
229-
static const int kIsolateEmbedderDataOffset = 0;
232+
static const int kIsolateCageBaseOffset = 0;
233+
static const int kIsolateStackGuardOffset =
234+
kIsolateCageBaseOffset + kApiSystemPointerSize;
235+
static const int kBuiltinTier0EntryTableOffset =
236+
kIsolateStackGuardOffset + kStackGuardSize;
237+
static const int kBuiltinTier0TableOffset =
238+
kBuiltinTier0EntryTableOffset + kBuiltinTier0EntryTableSize;
239+
static const int kIsolateEmbedderDataOffset =
240+
kBuiltinTier0TableOffset + kBuiltinTier0TableSize;
230241
static const int kIsolateFastCCallCallerFpOffset =
231-
kNumIsolateDataSlots * kApiSystemPointerSize;
242+
kIsolateEmbedderDataOffset + kNumIsolateDataSlots * kApiSystemPointerSize;
232243
static const int kIsolateFastCCallCallerPcOffset =
233244
kIsolateFastCCallCallerFpOffset + kApiSystemPointerSize;
234245
static const int kIsolateFastApiCallTargetOffset =
235246
kIsolateFastCCallCallerPcOffset + kApiSystemPointerSize;
236-
static const int kIsolateCageBaseOffset =
237-
kIsolateFastApiCallTargetOffset + kApiSystemPointerSize;
238247
static const int kIsolateLongTaskStatsCounterOffset =
239-
kIsolateCageBaseOffset + kApiSystemPointerSize;
240-
static const int kIsolateStackGuardOffset =
241-
kIsolateLongTaskStatsCounterOffset + kApiSizetSize;
248+
kIsolateFastApiCallTargetOffset + kApiSystemPointerSize;
242249
static const int kIsolateRootsOffset =
243-
kIsolateStackGuardOffset + 7 * kApiSystemPointerSize;
250+
kIsolateLongTaskStatsCounterOffset + kApiSizetSize;
244251

245252
static const int kExternalPointerTableBufferOffset = 0;
246253
static const int kExternalPointerTableLengthOffset =

src/builtins/builtins-definitions.h

Lines changed: 50 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -31,16 +31,40 @@ namespace internal {
3131
// TODO(jgruber): Remove DummyDescriptor once all ASM builtins have been
3232
// properly associated with their descriptor.
3333

34-
#define BUILTIN_LIST_BASE(CPP, TFJ, TFC, TFS, TFH, ASM) \
35-
/* GC write barrirer */ \
36-
TFC(RecordWriteEmitRememberedSetSaveFP, WriteBarrier) \
37-
TFC(RecordWriteOmitRememberedSetSaveFP, WriteBarrier) \
38-
TFC(RecordWriteEmitRememberedSetIgnoreFP, WriteBarrier) \
39-
TFC(RecordWriteOmitRememberedSetIgnoreFP, WriteBarrier) \
40-
TFC(EphemeronKeyBarrierSaveFP, WriteBarrier) \
41-
TFC(EphemeronKeyBarrierIgnoreFP, WriteBarrier) \
42-
\
43-
/* TSAN support for stores in generated code.*/ \
34+
// Builtins are additionally split into tiers, where the tier determines the
35+
// distance of the builtins table from the root register within IsolateData.
36+
//
37+
// - Tier 0 (T0) are guaranteed to be close to the root register and can thus
38+
// be accessed efficiently root-relative calls (so not, e.g., calls from
39+
// generated code when short-builtin-calls is on).
40+
// - T1 builtins have no distance guarantees.
41+
//
42+
// Note, this mechanism works only if the set of T0 builtins is kept as small
43+
// as possible. Please, resist the temptation to add your builtin here unless
44+
// there's a very good reason.
45+
#define BUILTIN_LIST_BASE_TIER0(CPP, TFJ, TFC, TFS, TFH, ASM) \
46+
/* Deoptimization entries. */ \
47+
ASM(DeoptimizationEntry_Eager, DeoptimizationEntry) \
48+
ASM(DeoptimizationEntry_Soft, DeoptimizationEntry) \
49+
ASM(DeoptimizationEntry_Bailout, DeoptimizationEntry) \
50+
ASM(DeoptimizationEntry_Lazy, DeoptimizationEntry) \
51+
ASM(DynamicCheckMapsTrampoline, DynamicCheckMaps) \
52+
ASM(DynamicCheckMapsWithFeedbackVectorTrampoline, \
53+
DynamicCheckMapsWithFeedbackVector) \
54+
\
55+
/* GC write barrier. */ \
56+
TFC(RecordWriteEmitRememberedSetSaveFP, WriteBarrier) \
57+
TFC(RecordWriteOmitRememberedSetSaveFP, WriteBarrier) \
58+
TFC(RecordWriteEmitRememberedSetIgnoreFP, WriteBarrier) \
59+
TFC(RecordWriteOmitRememberedSetIgnoreFP, WriteBarrier) \
60+
TFC(EphemeronKeyBarrierSaveFP, WriteBarrier) \
61+
TFC(EphemeronKeyBarrierIgnoreFP, WriteBarrier) \
62+
\
63+
/* Adaptor for CPP builtins. */ \
64+
TFC(AdaptorWithBuiltinExitFrame, CppBuiltinAdaptor)
65+
66+
#define BUILTIN_LIST_BASE_TIER1(CPP, TFJ, TFC, TFS, TFH, ASM) \
67+
/* TSAN support for stores in generated code. */ \
4468
IF_TSAN(TFC, TSANRelaxedStore8IgnoreFP, TSANStore) \
4569
IF_TSAN(TFC, TSANRelaxedStore8SaveFP, TSANStore) \
4670
IF_TSAN(TFC, TSANRelaxedStore16IgnoreFP, TSANStore) \
@@ -58,15 +82,12 @@ namespace internal {
5882
IF_TSAN(TFC, TSANSeqCstStore64IgnoreFP, TSANStore) \
5983
IF_TSAN(TFC, TSANSeqCstStore64SaveFP, TSANStore) \
6084
\
61-
/* TSAN support for loads in generated code.*/ \
85+
/* TSAN support for loads in generated code. */ \
6286
IF_TSAN(TFC, TSANRelaxedLoad32IgnoreFP, TSANLoad) \
6387
IF_TSAN(TFC, TSANRelaxedLoad32SaveFP, TSANLoad) \
6488
IF_TSAN(TFC, TSANRelaxedLoad64IgnoreFP, TSANLoad) \
6589
IF_TSAN(TFC, TSANRelaxedLoad64SaveFP, TSANLoad) \
6690
\
67-
/* Adaptor for CPP builtin */ \
68-
TFC(AdaptorWithBuiltinExitFrame, CppBuiltinAdaptor) \
69-
\
7091
/* Calls */ \
7192
/* ES6 section 9.2.1 [[Call]] ( thisArgument, argumentsList) */ \
7293
ASM(CallFunction_ReceiverIsNullOrUndefined, CallTrampoline) \
@@ -187,10 +208,6 @@ namespace internal {
187208
TFC(CompileLazyDeoptimizedCode, JSTrampoline) \
188209
TFC(InstantiateAsmJs, JSTrampoline) \
189210
ASM(NotifyDeoptimized, Dummy) \
190-
ASM(DeoptimizationEntry_Eager, DeoptimizationEntry) \
191-
ASM(DeoptimizationEntry_Soft, DeoptimizationEntry) \
192-
ASM(DeoptimizationEntry_Bailout, DeoptimizationEntry) \
193-
ASM(DeoptimizationEntry_Lazy, DeoptimizationEntry) \
194211
\
195212
/* Trampolines called when returning from a deoptimization that expects */ \
196213
/* to continue in a JavaScript builtin to finish the functionality of a */ \
@@ -282,10 +299,7 @@ namespace internal {
282299
TFH(HasIndexedInterceptorIC, LoadWithVector) \
283300
\
284301
/* Dynamic check maps */ \
285-
ASM(DynamicCheckMapsTrampoline, DynamicCheckMaps) \
286302
TFC(DynamicCheckMaps, DynamicCheckMaps) \
287-
ASM(DynamicCheckMapsWithFeedbackVectorTrampoline, \
288-
DynamicCheckMapsWithFeedbackVector) \
289303
TFC(DynamicCheckMapsWithFeedbackVector, DynamicCheckMapsWithFeedbackVector) \
290304
\
291305
/* Microtask helpers */ \
@@ -1032,6 +1046,10 @@ namespace internal {
10321046
CPP(CallAsyncModuleFulfilled) \
10331047
CPP(CallAsyncModuleRejected)
10341048

1049+
#define BUILTIN_LIST_BASE(CPP, TFJ, TFC, TFS, TFH, ASM) \
1050+
BUILTIN_LIST_BASE_TIER0(CPP, TFJ, TFC, TFS, TFH, ASM) \
1051+
BUILTIN_LIST_BASE_TIER1(CPP, TFJ, TFC, TFS, TFH, ASM)
1052+
10351053
#ifdef V8_INTL_SUPPORT
10361054
#define BUILTIN_LIST_INTL(CPP, TFJ, TFS) \
10371055
/* ecma402 #sec-intl.collator */ \
@@ -1218,6 +1236,17 @@ namespace internal {
12181236
BUILTIN_LIST_INTL(CPP, TFJ, TFS) \
12191237
BUILTIN_LIST_BYTECODE_HANDLERS(BCH)
12201238

1239+
// See the comment on top of BUILTIN_LIST_BASE_TIER0 for an explanation of
1240+
// tiers.
1241+
#define BUILTIN_LIST_TIER0(CPP, TFJ, TFC, TFS, TFH, BCH, ASM) \
1242+
BUILTIN_LIST_BASE_TIER0(CPP, TFJ, TFC, TFS, TFH, ASM)
1243+
1244+
#define BUILTIN_LIST_TIER1(CPP, TFJ, TFC, TFS, TFH, BCH, ASM) \
1245+
BUILTIN_LIST_BASE_TIER1(CPP, TFJ, TFC, TFS, TFH, ASM) \
1246+
BUILTIN_LIST_FROM_TORQUE(CPP, TFJ, TFC, TFS, TFH, ASM) \
1247+
BUILTIN_LIST_INTL(CPP, TFJ, TFS) \
1248+
BUILTIN_LIST_BYTECODE_HANDLERS(BCH)
1249+
12211250
// The exception thrown in the following builtins are caught
12221251
// internally and result in a promise rejection.
12231252
#define BUILTIN_PROMISE_REJECTION_PREDICTION_LIST(V) \

src/builtins/builtins.cc

Lines changed: 24 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -92,7 +92,7 @@ BytecodeOffset Builtins::GetContinuationBytecodeOffset(Builtin builtin) {
9292
DCHECK(Builtins::KindOf(builtin) == TFJ || Builtins::KindOf(builtin) == TFC ||
9393
Builtins::KindOf(builtin) == TFS);
9494
return BytecodeOffset(BytecodeOffset::kFirstBuiltinContinuationId +
95-
static_cast<int>(builtin));
95+
ToInt(builtin));
9696
}
9797

9898
Builtin Builtins::GetBuiltinFromBytecodeOffset(BytecodeOffset id) {
@@ -182,7 +182,7 @@ Handle<Code> Builtins::code_handle(Builtin builtin) {
182182
// static
183183
int Builtins::GetStackParameterCount(Builtin builtin) {
184184
DCHECK(Builtins::KindOf(builtin) == TFJ);
185-
return builtin_metadata[static_cast<int>(builtin)].data.parameter_count;
185+
return builtin_metadata[ToInt(builtin)].data.parameter_count;
186186
}
187187

188188
// static
@@ -224,7 +224,7 @@ bool Builtins::HasJSLinkage(Builtin builtin) {
224224

225225
// static
226226
const char* Builtins::name(Builtin builtin) {
227-
int index = static_cast<int>(builtin);
227+
int index = ToInt(builtin);
228228
DCHECK(IsBuiltinId(index));
229229
return builtin_metadata[index].name;
230230
}
@@ -262,7 +262,7 @@ void Builtins::PrintBuiltinSize() {
262262
// static
263263
Address Builtins::CppEntryOf(Builtin builtin) {
264264
DCHECK(Builtins::IsCpp(builtin));
265-
return builtin_metadata[static_cast<int>(builtin)].data.cpp_entry;
265+
return builtin_metadata[ToInt(builtin)].data.cpp_entry;
266266
}
267267

268268
// static
@@ -292,18 +292,24 @@ bool Builtins::IsIsolateIndependentBuiltin(const Code code) {
292292
}
293293

294294
// static
295-
void Builtins::InitializeBuiltinEntryTable(Isolate* isolate) {
296-
EmbeddedData d = EmbeddedData::FromBlob(isolate);
297-
Address* builtin_entry_table = isolate->builtin_entry_table();
298-
for (Builtin builtin = Builtins::kFirst; builtin <= Builtins::kLast;
299-
++builtin) {
300-
// TODO(jgruber,chromium:1020986): Remove the CHECK once the linked issue is
301-
// resolved.
302-
CHECK(
303-
Builtins::IsBuiltinId(isolate->heap()->builtin(builtin).builtin_id()));
304-
DCHECK(isolate->heap()->builtin(builtin).is_off_heap_trampoline());
305-
builtin_entry_table[static_cast<int>(builtin)] =
306-
d.InstructionStartOfBuiltin(builtin);
295+
void Builtins::InitializeIsolateDataTables(Isolate* isolate) {
296+
EmbeddedData embedded_data = EmbeddedData::FromBlob(isolate);
297+
IsolateData* isolate_data = isolate->isolate_data();
298+
299+
// The entry table.
300+
for (Builtin i = Builtins::kFirst; i <= Builtins::kLast; ++i) {
301+
DCHECK(Builtins::IsBuiltinId(isolate->heap()->builtin(i).builtin_id()));
302+
DCHECK(isolate->heap()->builtin(i).is_off_heap_trampoline());
303+
isolate_data->builtin_entry_table()[ToInt(i)] =
304+
embedded_data.InstructionStartOfBuiltin(i);
305+
}
306+
307+
// T0 tables.
308+
for (Builtin i = Builtins::kFirst; i <= Builtins::kLastTier0; ++i) {
309+
const int ii = ToInt(i);
310+
isolate_data->builtin_tier0_entry_table()[ii] =
311+
isolate_data->builtin_entry_table()[ii];
312+
isolate_data->builtin_tier0_table()[ii] = isolate_data->builtin_table()[ii];
307313
}
308314
}
309315

@@ -317,7 +323,7 @@ void Builtins::EmitCodeCreateEvents(Isolate* isolate) {
317323
Address* builtins = isolate->builtin_table();
318324
int i = 0;
319325
HandleScope scope(isolate);
320-
for (; i < static_cast<int>(Builtin::kFirstBytecodeHandler); i++) {
326+
for (; i < ToInt(Builtin::kFirstBytecodeHandler); i++) {
321327
Handle<AbstractCode> code(AbstractCode::cast(Object(builtins[i])), isolate);
322328
PROFILE(isolate, CodeCreateEvent(CodeEventListener::BUILTIN_TAG, code,
323329
Builtins::name(FromInt(i))));
@@ -420,7 +426,7 @@ Handle<ByteArray> Builtins::GenerateOffHeapTrampolineRelocInfo(
420426

421427
Builtins::Kind Builtins::KindOf(Builtin builtin) {
422428
DCHECK(IsBuiltinId(builtin));
423-
return builtin_metadata[static_cast<int>(builtin)].kind;
429+
return builtin_metadata[ToInt(builtin)].kind;
424430
}
425431

426432
// static

src/builtins/builtins.h

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -74,10 +74,14 @@ class Builtins {
7474
#define ADD_ONE(Name, ...) +1
7575
static constexpr int kBuiltinCount = 0 BUILTIN_LIST(
7676
ADD_ONE, ADD_ONE, ADD_ONE, ADD_ONE, ADD_ONE, ADD_ONE, ADD_ONE);
77+
static constexpr int kBuiltinTier0Count = 0 BUILTIN_LIST_TIER0(
78+
ADD_ONE, ADD_ONE, ADD_ONE, ADD_ONE, ADD_ONE, ADD_ONE, ADD_ONE);
7779
#undef ADD_ONE
7880

7981
static constexpr Builtin kFirst = static_cast<Builtin>(0);
8082
static constexpr Builtin kLast = static_cast<Builtin>(kBuiltinCount - 1);
83+
static constexpr Builtin kLastTier0 =
84+
static_cast<Builtin>(kBuiltinTier0Count - 1);
8185

8286
static constexpr int kFirstWideBytecodeHandler =
8387
static_cast<int>(Builtin::kFirstBytecodeHandler) +
@@ -96,6 +100,9 @@ class Builtins {
96100
return static_cast<uint32_t>(maybe_id) <
97101
static_cast<uint32_t>(kBuiltinCount);
98102
}
103+
static constexpr bool IsTier0(Builtin builtin) {
104+
return builtin <= kLastTier0 && IsBuiltinId(builtin);
105+
}
99106

100107
static constexpr Builtin FromInt(int id) {
101108
DCHECK(IsBuiltinId(id));
@@ -199,9 +206,7 @@ class Builtins {
199206
return kAllBuiltinsAreIsolateIndependent;
200207
}
201208

202-
// Initializes the table of builtin entry points based on the current contents
203-
// of the builtins table.
204-
static void InitializeBuiltinEntryTable(Isolate* isolate);
209+
static void InitializeIsolateDataTables(Isolate* isolate);
205210

206211
// Emits a CodeCreateEvent for every builtin.
207212
static void EmitCodeCreateEvents(Isolate* isolate);

src/codegen/arm/assembler-arm.h

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1067,7 +1067,7 @@ class V8_EXPORT_PRIVATE Assembler : public AssemblerBase {
10671067
~BlockConstPoolScope() { assem_->EndBlockConstPool(); }
10681068

10691069
private:
1070-
Assembler* assem_;
1070+
Assembler* const assem_;
10711071

10721072
DISALLOW_IMPLICIT_CONSTRUCTORS(BlockConstPoolScope);
10731073
};
@@ -1250,6 +1250,12 @@ class V8_EXPORT_PRIVATE Assembler : public AssemblerBase {
12501250
(pc_offset() < no_const_pool_before_);
12511251
}
12521252

1253+
bool has_pending_constants() const {
1254+
bool result = !pending_32_bit_constants_.empty();
1255+
DCHECK_EQ(result, first_const_pool_32_use_ != -1);
1256+
return result;
1257+
}
1258+
12531259
bool VfpRegisterIsAvailable(DwVfpRegister reg) {
12541260
DCHECK(reg.is_valid());
12551261
return IsEnabled(VFP32DREGS) ||

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

Lines changed: 14 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -182,7 +182,7 @@ void TurboAssembler::Jump(Handle<Code> code, RelocInfo::Mode rmode,
182182
// size s.t. pc-relative calls may be used.
183183
UseScratchRegisterScope temps(this);
184184
Register scratch = temps.Acquire();
185-
int offset = IsolateData::builtin_entry_slot_offset(code->builtin_id());
185+
int offset = IsolateData::BuiltinEntrySlotOffset(code->builtin_id());
186186
ldr(scratch, MemOperand(kRootRegister, offset));
187187
Jump(scratch, cond);
188188
return;
@@ -269,7 +269,7 @@ void TurboAssembler::Call(Handle<Code> code, RelocInfo::Mode rmode,
269269
// This branch is taken only for specific cctests, where we force isolate
270270
// creation at runtime. At this point, Code space isn't restricted to a
271271
// size s.t. pc-relative calls may be used.
272-
int offset = IsolateData::builtin_entry_slot_offset(code->builtin_id());
272+
int offset = IsolateData::BuiltinEntrySlotOffset(code->builtin_id());
273273
ldr(ip, MemOperand(kRootRegister, offset));
274274
Call(ip, cond);
275275
return;
@@ -315,7 +315,7 @@ MemOperand TurboAssembler::EntryFromBuiltinAsOperand(Builtin builtin) {
315315
ASM_CODE_COMMENT(this);
316316
DCHECK(root_array_available());
317317
return MemOperand(kRootRegister,
318-
IsolateData::builtin_entry_slot_offset(builtin));
318+
IsolateData::BuiltinEntrySlotOffset(builtin));
319319
}
320320

321321
void TurboAssembler::CallBuiltin(Builtin builtin, Condition cond) {
@@ -2671,9 +2671,15 @@ void TurboAssembler::CallForDeoptimization(Builtin target, int, Label* exit,
26712671
DeoptimizeKind kind, Label* ret,
26722672
Label*) {
26732673
ASM_CODE_COMMENT(this);
2674+
2675+
// All constants should have been emitted prior to deoptimization exit
2676+
// emission. See PrepareForDeoptimizationExits.
2677+
DCHECK(!has_pending_constants());
26742678
BlockConstPoolScope block_const_pool(this);
2675-
ldr(ip, MemOperand(kRootRegister,
2676-
IsolateData::builtin_entry_slot_offset(target)));
2679+
2680+
CHECK_LE(target, Builtins::kLastTier0);
2681+
ldr(ip,
2682+
MemOperand(kRootRegister, IsolateData::BuiltinEntrySlotOffset(target)));
26772683
Call(ip);
26782684
DCHECK_EQ(SizeOfCodeGeneratedSince(exit),
26792685
(kind == DeoptimizeKind::kLazy)
@@ -2685,6 +2691,9 @@ void TurboAssembler::CallForDeoptimization(Builtin target, int, Label* exit,
26852691
DCHECK_EQ(SizeOfCodeGeneratedSince(exit),
26862692
Deoptimizer::kEagerWithResumeBeforeArgsSize);
26872693
}
2694+
2695+
// The above code must not emit constants either.
2696+
DCHECK(!has_pending_constants());
26882697
}
26892698

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

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1968,7 +1968,7 @@ MemOperand TurboAssembler::EntryFromBuiltinAsOperand(Builtin builtin) {
19681968
ASM_CODE_COMMENT(this);
19691969
DCHECK(root_array_available());
19701970
return MemOperand(kRootRegister,
1971-
IsolateData::builtin_entry_slot_offset(builtin));
1971+
IsolateData::BuiltinEntrySlotOffset(builtin));
19721972
}
19731973

19741974
void TurboAssembler::CallBuiltinByIndex(Register builtin_index) {

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

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1895,8 +1895,7 @@ void TurboAssembler::CallBuiltin(Builtin builtin) {
18951895

18961896
Operand TurboAssembler::EntryFromBuiltinAsOperand(Builtin builtin) {
18971897
ASM_CODE_COMMENT(this);
1898-
return Operand(kRootRegister,
1899-
IsolateData::builtin_entry_slot_offset(builtin));
1898+
return Operand(kRootRegister, IsolateData::BuiltinEntrySlotOffset(builtin));
19001899
}
19011900

19021901
void TurboAssembler::LoadCodeObjectEntry(Register destination,

src/codegen/turbo-assembler.cc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -97,7 +97,7 @@ int32_t TurboAssemblerBase::RootRegisterOffsetForRootIndex(
9797

9898
// static
9999
int32_t TurboAssemblerBase::RootRegisterOffsetForBuiltin(Builtin builtin) {
100-
return IsolateData::builtin_slot_offset(builtin);
100+
return IsolateData::BuiltinSlotOffset(builtin);
101101
}
102102

103103
// static

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

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1901,8 +1901,7 @@ void TurboAssembler::Call(Handle<Code> code_object, RelocInfo::Mode rmode) {
19011901

19021902
Operand TurboAssembler::EntryFromBuiltinAsOperand(Builtin builtin) {
19031903
DCHECK(root_array_available());
1904-
return Operand(kRootRegister,
1905-
IsolateData::builtin_entry_slot_offset(builtin));
1904+
return Operand(kRootRegister, IsolateData::BuiltinEntrySlotOffset(builtin));
19061905
}
19071906

19081907
Operand TurboAssembler::EntryFromBuiltinIndexAsOperand(Register builtin_index) {

0 commit comments

Comments
 (0)