27 eval_global_(isolate),
28 eval_contextual_(isolate),
30 enabled_script_and_eval_(true) {}
73 if (!table->ToKey(isolate(), entry, &
key))
continue;
77 if (!IsUndefined(value,
isolate())) {
80 if (!info->HasBytecodeArray()) {
81 table->SetPrimaryValueAt(entry,
96 if (!table->ToKey(isolate(), entry, &
key))
continue;
107 const int new_count =
Smi::ToInt(table->PrimaryValueAt(entry)) - 1;
108 if (new_count == 0) {
109 table->RemoveEntry(entry);
112 table->SetPrimaryValueAt(entry,
Smi::FromInt(new_count),
121 if (!info->HasBytecodeArray()) {
122 table->RemoveEntry(entry);
165 table, source, script_details,
isolate());
166 raw_result_for_escaping_handle_scope = probe.
GetRawObjects();
175 if (
result.script().ToHandle(&script)) {
177 if (
result.toplevel_sfi().ToHandle(&sfi)) {
179 LOG(
isolate(), CompilationCacheEvent(
"hit",
"script", *sfi));
209 if (
result.has_shared()) {
238 for (generation = 0; generation <
kGenerations; generation++) {
240 result = table->LookupRegExp(source, flags);
241 if (IsRegExpDataWrapper(*
result))
break;
243 if (IsRegExpDataWrapper(*
result)) {
246 if (generation != 0) {
247 Put(source, flags, data);
258 JSRegExp::Flags flags,
287 const char* cache_type;
293 cache_type =
"eval-global";
301 cache_type =
"eval-contextual";
304 if (
result.has_shared()) {
320 LOG(
isolate(), CompilationCacheEvent(
"put",
"script", *function_info));
333 const char* cache_type;
337 eval_global_.
Put(source, outer_info, function_info, maybe_native_context,
339 cache_type =
"eval-global";
346 cache_type =
"eval-contextual";
348 LOG(
isolate(), CompilationCacheEvent(
"put", cache_type, *function_info));
352 JSRegExp::Flags flags,
union v8::internal::@341::BuiltinMetadata::KindSpecificData data
Isolate * isolate() const
void Iterate(RootVisitor *v)
Handle< CompilationCacheTable > GetTable()
void Remove(DirectHandle< SharedFunctionInfo > function_info)
void Put(DirectHandle< String > source, DirectHandle< SharedFunctionInfo > outer_info, DirectHandle< SharedFunctionInfo > function_info, DirectHandle< NativeContext > native_context, DirectHandle< FeedbackCell > feedback_cell, int position)
InfoCellPair Lookup(DirectHandle< String > source, DirectHandle< SharedFunctionInfo > outer_info, DirectHandle< NativeContext > native_context, LanguageMode language_mode, int position)
void Iterate(RootVisitor *v)
void Put(DirectHandle< String > source, JSRegExp::Flags flags, DirectHandle< RegExpData > data)
static const int kGenerations
DirectHandle< CompilationCacheTable > GetTable(int generation)
Tagged< Object > tables_[kGenerations]
Isolate * isolate() const
MaybeDirectHandle< RegExpData > Lookup(DirectHandle< String > source, JSRegExp::Flags flags)
std::pair< Tagged< Script >, Tagged< SharedFunctionInfo > > RawObjects
static CompilationCacheScriptLookupResult FromRawObjects(RawObjects raw, Isolate *isolate)
RawObjects GetRawObjects() const
LookupResult Lookup(Handle< String > source, const ScriptDetails &script_details)
void Put(Handle< String > source, DirectHandle< SharedFunctionInfo > function_info)
static InfoCellPair LookupEval(DirectHandle< CompilationCacheTable > table, DirectHandle< String > src, DirectHandle< SharedFunctionInfo > shared, DirectHandle< NativeContext > native_context, LanguageMode language_mode, int position)
static NEVER_READ_ONLY_SPACE CompilationCacheScriptLookupResult LookupScript(DirectHandle< CompilationCacheTable > table, Handle< String > src, const ScriptDetails &script_details, Isolate *isolate)
static DirectHandle< CompilationCacheTable > PutRegExp(Isolate *isolate, DirectHandle< CompilationCacheTable > cache, DirectHandle< String > src, JSRegExp::Flags flags, DirectHandle< RegExpData > value)
static DirectHandle< CompilationCacheTable > PutEval(DirectHandle< CompilationCacheTable > cache, DirectHandle< String > src, DirectHandle< SharedFunctionInfo > outer_info, DirectHandle< SharedFunctionInfo > value, DirectHandle< NativeContext > native_context, DirectHandle< FeedbackCell > feedback_cell, int position)
static constexpr int kHashGenerations
static DirectHandle< CompilationCacheTable > PutScript(Handle< CompilationCacheTable > cache, Handle< String > src, MaybeHandle< FixedArray > maybe_wrapped_arguments, DirectHandle< SharedFunctionInfo > value, Isolate *isolate)
bool IsEnabledScript(LanguageMode language_mode)
CompilationCacheRegExp reg_exp_
bool IsEnabledScriptAndEval() const
void PutRegExp(DirectHandle< String > source, JSRegExp::Flags flags, DirectHandle< RegExpData > data)
CompilationCacheScript::LookupResult LookupScript(Handle< String > source, const ScriptDetails &script_details, LanguageMode language_mode)
CompilationCacheEval eval_contextual_
void MarkCompactPrologue()
void Iterate(RootVisitor *v)
CompilationCacheScript script_
void PutScript(Handle< String > source, LanguageMode language_mode, DirectHandle< SharedFunctionInfo > function_info)
MaybeDirectHandle< RegExpData > LookupRegExp(DirectHandle< String > source, JSRegExp::Flags flags)
bool enabled_script_and_eval_
void DisableScriptAndEval()
Isolate * isolate() const
void EnableScriptAndEval()
CompilationCache(const CompilationCache &)=delete
InfoCellPair LookupEval(DirectHandle< String > source, DirectHandle< SharedFunctionInfo > outer_info, DirectHandle< Context > context, LanguageMode language_mode, int position)
void Remove(DirectHandle< SharedFunctionInfo > function_info)
void PutEval(DirectHandle< String > source, DirectHandle< SharedFunctionInfo > outer_info, DirectHandle< Context > context, DirectHandle< SharedFunctionInfo > function_info, DirectHandle< FeedbackCell > feedback_cell, int position)
CompilationCacheEval eval_global_
HandleType< T > CloseAndEscape(HandleType< T > handle_value)
v8::internal::Factory * factory()
virtual void VisitRootPointers(Root root, const char *description, FullObjectSlot start, FullObjectSlot end)=0
virtual void VisitRootPointer(Root root, const char *description, FullObjectSlot p)
static constexpr int ToInt(const Tagged< Object > object)
static constexpr Tagged< Smi > FromInt(int value)
ZoneVector< RpoNumber > & result
#define LOG(isolate, Call)
V8_INLINE IndirectHandle< T > handle(Tagged< T > object, Isolate *isolate)
bool TryCast(Tagged< From > value, Tagged< To > *out)
constexpr NullMaybeHandleType kNullMaybeHandle
constexpr int kNoSourcePosition
bool IsNumber(Tagged< Object > obj)
static const int kInitialCacheSize
void MemsetPointer(FullObjectSlot start, Tagged< Object > value, size_t counter)
kInterpreterTrampolineOffset script
!IsContextMap !IsContextMap native_context
Tagged< To > Cast(Tagged< From > value, const v8::SourceLocation &loc=INIT_SOURCE_LOCATION_IN_DEBUG)
#define DCHECK_NE(v1, v2)
#define DCHECK(condition)
#define DCHECK_LT(v1, v2)
#define DCHECK_GT(v1, v2)