5#ifndef INCLUDE_V8_SCRIPT_H_
6#define INCLUDE_V8_SCRIPT_H_
32class BackgroundDeserializeTask;
33struct ScriptStreamingData;
83 int GetLineNumber(
int code_pos = 0);
89 int GetColumnNumber(
int code_pos = 0);
91 static const int kNoScriptId = 0;
118 : line_number_(line_number), column_number_(column_number) {}
141 int GetSourceOffset()
const;
160 return GetImportAttributes();
166 static void CheckCast(
Data* obj);
193 Status GetStatus()
const;
214 int GetIdentityHash()
const;
266 int ScriptId()
const;
274 bool IsGraphAsync()
const;
281 bool HasTopLevelAwait()
const;
286 bool IsSourceTextModule()
const;
291 bool IsSyntheticModule()
const;
333 GetStalledTopLevelAwaitMessages(
Isolate* isolate);
338 static void CheckCast(
Data* obj);
346 std::vector<int> GetCompileHints(
Isolate* isolate)
const;
387 std::vector<int> GetProducedCompileHints()
const;
420 buffer_policy(BufferNotOwned) {}
427 BufferPolicy buffer_policy = BufferNotOwned);
434 kMagicNumberMismatch = 1,
435 kVersionMismatch = 2,
438 kChecksumMismatch = 6,
441 kReadOnlySnapshotChecksumMismatch = 9,
444 kLast = kReadOnlySnapshotChecksumMismatch
448 CompatibilityCheckResult CompatibilityCheck(
Isolate* isolate);
482 InMemoryCacheResult::kNotAttempted;
484 static constexpr int64_t kTimeNotMeasured = -1;
485 int64_t foreground_time_in_microseconds = kTimeNotMeasured;
486 int64_t background_time_in_microseconds = kTimeNotMeasured;
523 int resource_line_offset = -1;
524 int resource_column_offset = -1;
537 void* compile_hint_callback_data =
nullptr;
584 enum Encoding { ONE_BYTE, TWO_BYTE, UTF8, WINDOWS_1252 };
586 StreamedSource(std::unique_ptr<ExternalSourceStream> source_stream,
599 std::unique_ptr<internal::ScriptStreamingData>
impl_;
655 bool ShouldMergeWithExistingScript()
const;
662 void MergeWithExistingScript();
668 std::unique_ptr<internal::BackgroundDeserializeTask> impl);
670 std::unique_ptr<internal::BackgroundDeserializeTask>
impl_;
674 kNoCompileOptions = 0,
675 kConsumeCodeCache = 1 << 0,
676 kEagerCompile = 1 << 1,
677 kProduceCompileHints = 1 << 2,
678 kConsumeCompileHints = 1 << 3,
679 kFollowCompileHintsMagicComment = 1 << 4,
680 kFollowCompileHintsPerFunctionMagicComment = 1 << 5,
685 if ((compile_options & kConsumeCodeCache) &&
686 compile_options != kConsumeCodeCache) {
690 if ((compile_options & kEagerCompile) && compile_options != kEagerCompile) {
695 constexpr int produce_and_consume = CompileOptions::kProduceCompileHints |
696 CompileOptions::kConsumeCompileHints;
697 if ((compile_options & produce_and_consume) == produce_and_consume) {
707 kNoCacheNoReason = 0,
740 Isolate* isolate, Source* source,
741 CompileOptions options = kNoCompileOptions,
742 NoCacheReason no_cache_reason = kNoCacheNoReason);
757 CompileOptions options = kNoCompileOptions,
758 NoCacheReason no_cache_reason = kNoCacheNoReason);
771 static ScriptStreamingTask* StartStreaming(
772 Isolate* isolate, StreamedSource* source,
774 CompileOptions options = kNoCompileOptions,
776 void* compile_hint_callback_data =
nullptr);
778 static ConsumeCodeCacheTask* StartConsumingCodeCache(
779 Isolate* isolate, std::unique_ptr<CachedData> source);
780 static ConsumeCodeCacheTask* StartConsumingCodeCacheOnBackground(
781 Isolate* isolate, std::unique_ptr<CachedData> source);
812 static uint32_t CachedDataVersionTag();
822 Isolate* isolate, Source* source,
823 CompileOptions options = kNoCompileOptions,
824 NoCacheReason no_cache_reason = kNoCacheNoReason);
848 Local<Context> context, Source* source,
size_t arguments_count = 0,
849 Local<String> arguments[] =
nullptr,
size_t context_extension_count = 0,
851 CompileOptions options = kNoCompileOptions,
852 NoCacheReason no_cache_reason = kNoCacheNoReason);
866 static CachedData* CreateCodeCache(
875 static CachedData* CreateCodeCacheForFunction(
Local<Function> function);
879 Isolate* isolate, Source* source, CompileOptions options,
880 NoCacheReason no_cache_reason);
893 : source_string(string),
894 resource_name(origin.ResourceName()),
895 resource_line_offset(origin.LineOffset()),
896 resource_column_offset(origin.ColumnOffset()),
897 resource_options(origin.Options()),
898 source_map_url(origin.SourceMapUrl()),
899 host_defined_options(origin.GetHostDefinedOptions()),
901 consume_cache_task(consume_cache_task) {}
905 : source_string(string),
907 consume_cache_task(consume_cache_task) {}
912 : source_string(string),
913 resource_name(origin.ResourceName()),
914 resource_line_offset(origin.LineOffset()),
915 resource_column_offset(origin.ColumnOffset()),
916 resource_options(origin.Options()),
917 source_map_url(origin.SourceMapUrl()),
918 host_defined_options(origin.GetHostDefinedOptions()),
920 compile_hint_callback_data(callback_data) {}
924 return cached_data.get();
928 return resource_options;
933 return compilation_details;
937#ifdef V8_ENABLE_CHECKS
944#ifdef V8_ENABLE_CHECKS
uint8_t data_[MAX_STACK_LENGTH]
union v8::internal::@341::BuiltinMetadata::KindSpecificData data
Location(int line_number, int column_number)
static V8_INLINE ModuleRequest * Cast(Data *data)
static V8_INLINE Module * Cast(Data *data)
std::unique_ptr< internal::BackgroundDeserializeTask > impl_
virtual size_t GetMoreData(const uint8_t **src)=0
virtual ~ExternalSourceStream()=default
internal::ScriptStreamingData * data_
ScriptStreamingTask(internal::ScriptStreamingData *data)
Local< String > source_string
V8_INLINE Source(Local< String > source_string, const ScriptOrigin &origin, CachedData *cached_data=nullptr, ConsumeCodeCacheTask *consume_cache_task=nullptr)
std::unique_ptr< CachedData > cached_data
V8_INLINE ~Source()=default
CompilationDetails compilation_details
ScriptOriginOptions resource_options
Local< Data > host_defined_options
V8_INLINE const CompilationDetails & GetCompilationDetails() const
V8_INLINE const CachedData * GetCachedData() const
std::unique_ptr< ConsumeCodeCacheTask > consume_cache_task
Local< Value > resource_name
V8_INLINE const ScriptOriginOptions & GetResourceOptions() const
Local< Value > source_map_url
internal::ScriptStreamingData * impl() const
CompilationDetails & compilation_details()
std::unique_ptr< internal::ScriptStreamingData > impl_
StreamedSource & operator=(const StreamedSource &)=delete
CompilationDetails compilation_details_
StreamedSource(const StreamedSource &)=delete
static bool CompileOptionsIsValid(CompileOptions compile_options)
static V8_WARN_UNUSED_RESULT MaybeLocal< Function > CompileFunctionInternal(Local< Context > context, Source *source, size_t arguments_count, Local< String > arguments[], size_t context_extension_count, Local< Object > context_extensions[], CompileOptions options, NoCacheReason no_cache_reason, Local< ScriptOrModule > *script_or_module_out)
@ kNoCacheBecausePacScript
@ kNoCacheBecauseV8Extension
@ kNoCacheBecauseStreamingSource
@ kNoCacheBecauseNoResource
@ kNoCacheBecauseStaticCodeCache
@ kNoCacheBecauseInspector
@ kNoCacheBecauseCacheTooCold
@ kNoCacheBecauseScriptTooSmall
@ kNoCacheBecauseCachingDisabled
@ kNoCacheBecauseDeferredProduceCodeCache
@ kNoCacheBecauseExtensionModule
@ kNoCacheBecauseInlineScript
@ kNoCacheBecauseInDocumentWrite
@ kNoCacheBecauseResourceWithNoCacheHandler
bool(*)(int, void *) CompileHintCallback
BufferPolicy buffer_policy
CachedData(const CachedData &)=delete
CachedData & operator=(const CachedData &)=delete
#define V8_DEPRECATE_SOON(message)
#define V8_DEPRECATED(message)
#define V8_WARN_UNUSED_RESULT