5#ifndef INCLUDE_V8_SCRIPT_H_
6#define INCLUDE_V8_SCRIPT_H_
32class BackgroundDeserializeTask;
33struct ScriptStreamingData;
89 int GetLineNumber(
int code_pos = 0);
95 int GetColumnNumber(
int code_pos = 0);
97 static const
int kNoScriptId = 0;
119 static const int kNoScriptId = 0;
122static_assert(UnboundModuleScript::kNoScriptId == UnboundScript::kNoScriptId);
133 : line_number_(line_number), column_number_(column_number) {}
175 return GetImportAttributes();
181 static void CheckCast(
Data* obj);
381 "Use the CreateSyntheticModule overload whose evaluation_steps return a "
382 "MaybeLocal<Promise>")
385 const std::span<const
Local<
String>>& export_names,
393 Local<
Data> GetSyntheticModuleHostDefinedOptions() const;
413 GetStalledTopLevelAwaitMessages(
Isolate* isolate);
418 static
void CheckCast(
Data* obj);
472 std::vector<
int> GetProducedCompileHints() const;
505 buffer_policy(BufferNotOwned) {}
519 kMagicNumberMismatch = 1,
520 kVersionMismatch = 2,
523 kChecksumMismatch = 6,
526 kReadOnlySnapshotChecksumMismatch = 9,
529 kLast = kReadOnlySnapshotChecksumMismatch
567 InMemoryCacheResult::kNotAttempted;
569 static constexpr int64_t kTimeNotMeasured = -1;
570 int64_t foreground_time_in_microseconds = kTimeNotMeasured;
571 int64_t background_time_in_microseconds = kTimeNotMeasured;
608 int resource_line_offset = -1;
609 int resource_column_offset = -1;
617 std::unique_ptr<CachedData> cached_data;
618 std::unique_ptr<ConsumeCodeCacheTask> consume_cache_task;
622 void* compile_hint_callback_data =
nullptr;
683 Chunk(
const uint8_t* data,
size_t position,
size_t length_in_characters,
687 length_in_characters(length_in_characters),
688 encoding(encoding) {}
691 size_t end_position()
const {
return position + length_in_characters; }
717 enum Encoding { ONE_BYTE, TWO_BYTE, UTF8, WINDOWS_1252, FLEXIBLE_UTF16 };
722 std::unique_ptr<FlexibleExternalSourceStream> source_stream);
725 internal::ScriptStreamingData*
impl()
const {
return impl_.get(); }
734 std::unique_ptr<internal::ScriptStreamingData> impl_;
755 internal::ScriptStreamingData* data_;
803 std::unique_ptr<internal::BackgroundDeserializeTask> impl);
805 std::unique_ptr<internal::BackgroundDeserializeTask> impl_;
809 kNoCompileOptions = 0,
810 kConsumeCodeCache = 1 << 0,
811 kEagerCompile = 1 << 1,
812 kProduceCompileHints = 1 << 2,
813 kConsumeCompileHints = 1 << 3,
814 kFollowCompileHintsMagicComment = 1 << 4,
815 kFollowCompileHintsPerFunctionMagicComment = 1 << 5,
820 if ((compile_options & kConsumeCodeCache) &&
821 compile_options != kConsumeCodeCache) {
825 if ((compile_options & kEagerCompile) && compile_options != kEagerCompile) {
830 constexpr int produce_and_consume = CompileOptions::kProduceCompileHints |
831 CompileOptions::kConsumeCompileHints;
832 if ((compile_options & produce_and_consume) == produce_and_consume) {
842 kNoCacheNoReason = 0,
912 void* compile_hint_callback_data =
nullptr);
915 Isolate* isolate, std::unique_ptr<CachedData> source);
917 Isolate* isolate, std::unique_ptr<CachedData> source);
985 Local<String> arguments[] =
nullptr,
size_t context_extension_count = 0,
1029 : source_string(string),
1030 resource_name(origin.ResourceName()),
1031 resource_line_offset(origin.LineOffset()),
1032 resource_column_offset(origin.ColumnOffset()),
1033 resource_options(origin.Options()),
1034 source_map_url(origin.SourceMapUrl()),
1035 host_defined_options(origin.GetHostDefinedOptions()),
1037 consume_cache_task(consume_cache_task) {}
1041 : source_string(string),
1043 consume_cache_task(consume_cache_task) {}
1047 void* callback_data)
1048 : source_string(string),
1049 resource_name(origin.ResourceName()),
1050 resource_line_offset(origin.LineOffset()),
1051 resource_column_offset(origin.ColumnOffset()),
1052 resource_options(origin.Options()),
1053 source_map_url(origin.SourceMapUrl()),
1054 host_defined_options(origin.GetHostDefinedOptions()),
1055 compile_hint_callback(callback),
1056 compile_hint_callback_data(callback_data) {}
1060 return cached_data.get();
1064 return resource_options;
1069 return compilation_details;
1073#ifdef V8_ENABLE_CHECKS
1080#ifdef V8_ENABLE_CHECKS
1083 return reinterpret_cast<Module*
>(data);
Definition: v8-script.h:421
std::vector< int > GetCompileHints(Isolate *isolate) const
Definition: v8-isolate.h:292
Definition: v8-local-handle.h:594
Definition: v8-local-handle.h:366
Definition: v8-script.h:127
int GetLineNumber()
Definition: v8-script.h:129
Location(int line_number, int column_number)
Definition: v8-script.h:132
int GetColumnNumber()
Definition: v8-script.h:130
Definition: v8-local-handle.h:734
Definition: v8-maybe.h:39
Definition: v8-message.h:107
Definition: v8-script.h:140
static ModuleRequest * Cast(Data *data)
Definition: v8-script.h:1072
Local< FixedArray > GetImportAttributes() const
Local< String > GetSpecifier() const
ModuleImportPhase GetPhase() const
int GetSourceOffset() const
Definition: v8-script.h:187
Local< Value > GetResourceName() const
MaybeLocal< Promise > Evaluate(Local< Context > context)
Location SourceOffsetToLocation(int offset) const
Maybe< bool > InstantiateModule(Local< Context > context, ResolveModuleByIndexCallback module_callback, ResolveSourceByIndexCallback source_callback=nullptr)
Local< FixedArray > GetModuleRequests() const
bool IsGraphAsync() const
bool HasTopLevelAwait() const
bool IsSyntheticModule() const
Local< Value > GetException() const
static Local< Module > CreateSyntheticModule(Isolate *isolate, Local< String > module_name, const std::span< const Local< String > > &export_names, SyntheticModuleEvaluationSteps evaluation_steps, Local< Data > host_defined_options=Local< Data >())
Status
Definition: v8-script.h:196
@ kInstantiating
Definition: v8-script.h:198
@ kInstantiated
Definition: v8-script.h:199
@ kUninstantiated
Definition: v8-script.h:197
@ kEvaluating
Definition: v8-script.h:200
@ kEvaluated
Definition: v8-script.h:201
int GetIdentityHash() const
Local< UnboundModuleScript > GetUnboundModuleScript()
Local< Value > GetModuleNamespace(v8::ModuleImportPhase phase=v8::ModuleImportPhase::kEvaluation)
MaybeLocal< Promise > EvaluateForImportDefer(Local< Context > context)
static Module * Cast(Data *data)
Definition: v8-script.h:1079
Maybe< bool > InstantiateModule(Local< Context > context, ResolveModuleCallback module_callback, ResolveSourceCallback source_callback=nullptr)
bool IsSourceTextModule() const
Definition: v8-script.h:763
void MergeWithExistingScript()
bool ShouldMergeWithExistingScript() const
void SourceTextAvailable(Isolate *isolate, Local< String > source_text, const ScriptOrigin &origin)
Definition: v8-script.h:629
virtual ~ExternalSourceStreamBase()=default
Definition: v8-script.h:638
virtual size_t GetMoreData(const uint8_t **src)=0
~ExternalSourceStream() override=default
Definition: v8-script.h:676
~FlexibleExternalSourceStream() override=default
virtual Chunk GetNextChunk()=0
ChunkEncoding
Definition: v8-script.h:678
Definition: v8-script.h:745
Definition: v8-script.h:577
Source(Local< String > source_string, const ScriptOrigin &origin, CachedData *cached_data=nullptr, ConsumeCodeCacheTask *consume_cache_task=nullptr)
Definition: v8-script.h:1026
const CompilationDetails & GetCompilationDetails() const
Definition: v8-script.h:1068
const CachedData * GetCachedData() const
Definition: v8-script.h:1058
const ScriptOriginOptions & GetResourceOptions() const
Definition: v8-script.h:1063
Definition: v8-script.h:715
internal::ScriptStreamingData * impl() const
Definition: v8-script.h:725
Encoding
Definition: v8-script.h:717
CompilationDetails & compilation_details()
Definition: v8-script.h:731
StreamedSource & operator=(const StreamedSource &)=delete
StreamedSource(const StreamedSource &)=delete
StreamedSource(std::unique_ptr< FlexibleExternalSourceStream > source_stream)
StreamedSource(std::unique_ptr< ExternalSourceStream > source_stream, Encoding encoding)
Definition: v8-script.h:487
static CachedData * CreateCodeCacheForFunction(Local< Function > function)
static MaybeLocal< Function > CompileFunction(Local< Context > context, Source *source, size_t arguments_count=0, Local< String > arguments[]=nullptr, size_t context_extension_count=0, Local< Object > context_extensions[]=nullptr, CompileOptions options=kNoCompileOptions, NoCacheReason no_cache_reason=kNoCacheNoReason)
InMemoryCacheResult
Definition: v8-script.h:547
static bool CompileOptionsIsValid(CompileOptions compile_options)
Definition: v8-script.h:818
static CachedData * CreateCodeCache(Local< UnboundModuleScript > unbound_module_script)
NoCacheReason
Definition: v8-script.h:841
@ kNoCacheBecausePacScript
Definition: v8-script.h:853
@ kNoCacheBecauseV8Extension
Definition: v8-script.h:851
@ kNoCacheBecauseStreamingSource
Definition: v8-script.h:847
@ kNoCacheBecauseNoResource
Definition: v8-script.h:844
@ kNoCacheBecauseInlineScriptCacheTooCold
Definition: v8-script.h:858
@ kNoCacheBecauseStaticCodeCache
Definition: v8-script.h:857
@ kNoCacheBecauseInspector
Definition: v8-script.h:848
@ kNoCacheBecauseCacheTooCold
Definition: v8-script.h:850
@ kNoCacheBecauseScriptTooSmall
Definition: v8-script.h:849
@ kNoCacheBecauseCachingDisabled
Definition: v8-script.h:843
@ kNoCacheBecauseDeferredProduceCodeCache
Definition: v8-script.h:856
@ kNoCacheBecauseExtensionModule
Definition: v8-script.h:852
@ kNoCacheBecauseInlineScript
Definition: v8-script.h:845
@ kNoCacheBecauseInDocumentWrite
Definition: v8-script.h:854
@ kNoCacheBecauseModule
Definition: v8-script.h:846
@ kNoCacheBecauseResourceWithNoCacheHandler
Definition: v8-script.h:855
static ConsumeCodeCacheTask * StartConsumingCodeCacheOnBackground(Isolate *isolate, std::unique_ptr< CachedData > source)
static CachedData * CreateCodeCache(Local< UnboundScript > unbound_script)
static MaybeLocal< Module > CompileModule(Local< Context > context, StreamedSource *v8_source, Local< String > full_source_string, const ScriptOrigin &origin)
CompileOptions
Definition: v8-script.h:808
static MaybeLocal< Script > Compile(Local< Context > context, StreamedSource *source, Local< String > full_source_string, const ScriptOrigin &origin)
static MaybeLocal< Script > Compile(Local< Context > context, Source *source, CompileOptions options=kNoCompileOptions, NoCacheReason no_cache_reason=kNoCacheNoReason)
static ScriptStreamingTask * StartStreaming(Isolate *isolate, StreamedSource *source, ScriptType type=ScriptType::kClassic, CompileOptions options=kNoCompileOptions, CompileHintCallback compile_hint_callback=nullptr, void *compile_hint_callback_data=nullptr)
static uint32_t CachedDataVersionTag()
static MaybeLocal< UnboundScript > CompileUnboundScript(Isolate *isolate, Source *source, CompileOptions options=kNoCompileOptions, NoCacheReason no_cache_reason=kNoCacheNoReason)
static ConsumeCodeCacheTask * StartConsumingCodeCache(Isolate *isolate, std::unique_ptr< CachedData > source)
static MaybeLocal< Module > CompileModule(Isolate *isolate, Source *source, CompileOptions options=kNoCompileOptions, NoCacheReason no_cache_reason=kNoCacheNoReason)
Definition: v8-script.h:42
Local< Value > GetResourceName()
Local< Data > HostDefinedOptions()
Definition: v8-message.h:29
Definition: v8-message.h:63
Definition: v8-script.h:433
static MaybeLocal< Script > Compile(Local< Context > context, Local< String > source, ScriptOrigin *origin=nullptr)
MaybeLocal< Value > Run(Local< Context > context)
Local< UnboundScript > GetUnboundScript()
MaybeLocal< Value > Run(Local< Context > context, Local< Data > host_defined_options)
Local< Value > GetResourceName()
Definition: v8-primitive.h:126
Definition: v8-script.h:103
Local< Value > GetSourceURL()
Local< Value > GetSourceMappingURL()
Definition: v8-script.h:60
Local< Script > BindToCurrentContext()
Definition: v8-value.h:32
Definition: libplatform.h:15
bool(*)(int, void *) CompileHintCallback
Definition: v8-callbacks.h:435
ModuleImportPhase
Definition: v8-callbacks.h:352
ScriptType
Definition: v8-script.h:482
Definition: v8-script.h:498
BufferPolicy buffer_policy
Definition: v8-script.h:540
const uint8_t * data
Definition: v8-script.h:537
CachedData(const CachedData &)=delete
CompatibilityCheckResult
Definition: v8-script.h:515
bool rejected
Definition: v8-script.h:539
CachedData(const uint8_t *data, int length, BufferPolicy buffer_policy=BufferNotOwned)
BufferPolicy
Definition: v8-script.h:499
@ BufferNotOwned
Definition: v8-script.h:499
CachedData()
Definition: v8-script.h:501
int length
Definition: v8-script.h:538
CompatibilityCheckResult CompatibilityCheck(Isolate *isolate)
CachedData & operator=(const CachedData &)=delete
Definition: v8-script.h:565
Definition: v8-script.h:682
const uint8_t * data
Definition: v8-script.h:693
size_t length_in_characters
Definition: v8-script.h:695
ChunkEncoding encoding
Definition: v8-script.h:696
Chunk()
Definition: v8-script.h:689
Chunk(const uint8_t *data, size_t position, size_t length_in_characters, ChunkEncoding encoding)
Definition: v8-script.h:683
size_t position
Definition: v8-script.h:694
size_t end_position() const
Definition: v8-script.h:691
#define V8_EXPORT
Definition: v8config.h:867
#define V8_INLINE
Definition: v8config.h:511
#define V8_DEPRECATE_SOON(message)
Definition: v8config.h:624
#define V8_DEPRECATED(message)
Definition: v8config.h:616
#define V8_WARN_UNUSED_RESULT
Definition: v8config.h:681